linter-bundle 5.1.0 → 6.1.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 (195) hide show
  1. package/.linter-bundle.js +2 -0
  2. package/CHANGELOG.md +83 -9
  3. package/README.md +5 -3
  4. package/TODO.md +5 -0
  5. package/eslint/index.cjs +10 -4
  6. package/eslint/overrides-javascript.cjs +7 -1
  7. package/eslint/overrides-jest.cjs +1 -0
  8. package/eslint/overrides-jsdoc.cjs +1 -0
  9. package/eslint/rules/no-global-undefined-check.js +5 -3
  10. package/eslint/rules/no-unnecessary-typeof.js +26 -24
  11. package/eslint/rules/restricted-filenames.js +3 -1
  12. package/helper/ensure-type.cjs +2 -2
  13. package/helper/get-git-files.js +1 -1
  14. package/helper/get-outdated-dependencies.js +1 -1
  15. package/helper/get-outdated-overrides.js +1 -1
  16. package/helper/get-stylelint-path.js +1 -1
  17. package/helper/is-npm-or-yarn.js +1 -1
  18. package/helper/linter-bundle-config.js +22 -7
  19. package/helper/run-process.js +3 -3
  20. package/lint.js +31 -35
  21. package/package.json +27 -26
  22. package/stylelint/index.cjs +90 -5
  23. package/stylelint/plugins/stylelint-15.11.0-stylistic/LICENSE +20 -0
  24. package/stylelint/plugins/stylelint-15.11.0-stylistic/html-tags/LICENSE +9 -0
  25. package/stylelint/plugins/stylelint-15.11.0-stylistic/html-tags/index.cjs +122 -0
  26. package/stylelint/plugins/stylelint-15.11.0-stylistic/reference/selectors.cjs +327 -0
  27. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-name-case/README.md +110 -0
  28. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-name-case/index.cjs +66 -0
  29. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-name-space-after/README.md +117 -0
  30. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-name-space-after/index.cjs +55 -0
  31. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-semicolon-newline-after/README.md +63 -0
  32. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-semicolon-newline-after/index.cjs +87 -0
  33. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-semicolon-space-before/README.md +50 -0
  34. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-semicolon-space-before/index.cjs +70 -0
  35. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/atRuleNameSpaceChecker.cjs +56 -0
  36. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-empty-line-before/README.md +238 -0
  37. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-empty-line-before/index.cjs +130 -0
  38. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-newline-after/README.md +196 -0
  39. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-newline-after/index.cjs +154 -0
  40. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-newline-before/README.md +93 -0
  41. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-newline-before/index.cjs +133 -0
  42. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-space-before/README.md +174 -0
  43. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-space-before/index.cjs +111 -0
  44. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-opening-brace-newline-after/README.md +138 -0
  45. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-opening-brace-newline-after/index.cjs +184 -0
  46. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-opening-brace-space-after/README.md +191 -0
  47. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-opening-brace-space-after/index.cjs +118 -0
  48. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-opening-brace-space-before/README.md +218 -0
  49. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-opening-brace-space-before/index.cjs +141 -0
  50. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/color-hex-case/README.md +58 -0
  51. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/color-hex-case/index.cjs +95 -0
  52. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-bang-space-after/README.md +72 -0
  53. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-bang-space-after/index.cjs +95 -0
  54. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-bang-space-before/README.md +67 -0
  55. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-bang-space-before/index.cjs +96 -0
  56. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-newline-after/README.md +141 -0
  57. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-newline-after/index.cjs +109 -0
  58. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-newline-before/README.md +120 -0
  59. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-newline-before/index.cjs +75 -0
  60. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-space-after/README.md +147 -0
  61. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-space-after/index.cjs +97 -0
  62. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-space-before/README.md +130 -0
  63. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-space-before/index.cjs +106 -0
  64. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-trailing-semicolon/README.md +108 -0
  65. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-trailing-semicolon/index.cjs +147 -0
  66. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-colon-newline-after/README.md +78 -0
  67. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-colon-newline-after/index.cjs +99 -0
  68. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-colon-space-after/README.md +111 -0
  69. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-colon-space-after/index.cjs +75 -0
  70. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-colon-space-before/README.md +72 -0
  71. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-colon-space-before/index.cjs +74 -0
  72. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declarationBangSpaceChecker.cjs +63 -0
  73. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declarationColonSpaceChecker.cjs +58 -0
  74. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/findMediaOperator.cjs +32 -0
  75. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-newline-after/README.md +113 -0
  76. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-newline-after/index.cjs +61 -0
  77. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-newline-before/README.md +129 -0
  78. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-newline-before/index.cjs +61 -0
  79. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-space-after/README.md +144 -0
  80. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-space-after/index.cjs +62 -0
  81. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-space-before/README.md +144 -0
  82. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-space-before/index.cjs +62 -0
  83. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-max-empty-lines/README.md +78 -0
  84. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-max-empty-lines/index.cjs +115 -0
  85. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-parentheses-newline-inside/README.md +144 -0
  86. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-parentheses-newline-inside/index.cjs +282 -0
  87. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-parentheses-space-inside/README.md +140 -0
  88. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-parentheses-space-inside/index.cjs +182 -0
  89. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-whitespace-after/README.md +80 -0
  90. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-whitespace-after/index.cjs +198 -0
  91. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/functionCommaSpaceChecker.cjs +125 -0
  92. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/functionCommaSpaceFix.cjs +51 -0
  93. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/indentation/README.md +339 -0
  94. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/indentation/index.cjs +743 -0
  95. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/linebreaks/README.md +21 -0
  96. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/linebreaks/index.cjs +132 -0
  97. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/max-empty-lines/README.md +116 -0
  98. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/max-empty-lines/index.cjs +225 -0
  99. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/max-line-length/README.md +151 -0
  100. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/max-line-length/index.cjs +200 -0
  101. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-colon-space-after/README.md +72 -0
  102. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-colon-space-after/index.cjs +91 -0
  103. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-colon-space-before/README.md +72 -0
  104. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-colon-space-before/index.cjs +91 -0
  105. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-name-case/README.md +108 -0
  106. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-name-case/index.cjs +93 -0
  107. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-parentheses-space-inside/README.md +62 -0
  108. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-parentheses-space-inside/index.cjs +112 -0
  109. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-range-operator-space-after/README.md +72 -0
  110. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-range-operator-space-after/index.cjs +109 -0
  111. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-range-operator-space-before/README.md +72 -0
  112. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-range-operator-space-before/index.cjs +109 -0
  113. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-newline-after/README.md +113 -0
  114. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-newline-after/index.cjs +97 -0
  115. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-newline-before/README.md +111 -0
  116. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-newline-before/index.cjs +49 -0
  117. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-space-after/README.md +136 -0
  118. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-space-after/index.cjs +93 -0
  119. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-space-before/README.md +136 -0
  120. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-space-before/index.cjs +93 -0
  121. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/mediaFeatureColonSpaceChecker.cjs +54 -0
  122. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/mediaQueryListCommaWhitespaceChecker.cjs +73 -0
  123. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-empty-first-line/README.md +34 -0
  124. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-empty-first-line/index.cjs +63 -0
  125. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-eol-whitespace/README.md +79 -0
  126. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-eol-whitespace/index.cjs +302 -0
  127. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-extra-semicolons/README.md +78 -0
  128. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-extra-semicolons/index.cjs +246 -0
  129. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-missing-end-of-source-newline/README.md +34 -0
  130. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-missing-end-of-source-newline/index.cjs +62 -0
  131. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/number-leading-zero/README.md +74 -0
  132. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/number-leading-zero/index.cjs +197 -0
  133. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/number-no-trailing-zeros/README.md +40 -0
  134. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/number-no-trailing-zeros/index.cjs +139 -0
  135. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/property-case/README.md +192 -0
  136. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/property-case/index.cjs +95 -0
  137. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-attribute-brackets-space-inside/README.md +112 -0
  138. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-attribute-brackets-space-inside/index.cjs +214 -0
  139. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-attribute-operator-space-after/README.md +162 -0
  140. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-attribute-operator-space-after/index.cjs +109 -0
  141. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-attribute-operator-space-before/README.md +162 -0
  142. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-attribute-operator-space-before/index.cjs +88 -0
  143. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-combinator-space-after/README.md +78 -0
  144. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-combinator-space-after/index.cjs +67 -0
  145. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-combinator-space-before/README.md +78 -0
  146. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-combinator-space-before/index.cjs +67 -0
  147. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-descendant-combinator-no-non-space/README.md +40 -0
  148. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-descendant-combinator-no-non-space/index.cjs +95 -0
  149. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-newline-after/README.md +120 -0
  150. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-newline-after/index.cjs +126 -0
  151. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-newline-before/README.md +112 -0
  152. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-newline-before/index.cjs +101 -0
  153. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-space-after/README.md +110 -0
  154. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-space-after/index.cjs +92 -0
  155. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-space-before/README.md +110 -0
  156. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-space-before/index.cjs +92 -0
  157. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-max-empty-lines/README.md +103 -0
  158. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-max-empty-lines/index.cjs +74 -0
  159. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-pseudo-class-case/README.md +108 -0
  160. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-pseudo-class-case/index.cjs +104 -0
  161. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-pseudo-class-parentheses-space-inside/README.md +62 -0
  162. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-pseudo-class-parentheses-space-inside/index.cjs +162 -0
  163. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-pseudo-element-case/README.md +128 -0
  164. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-pseudo-element-case/index.cjs +90 -0
  165. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selectorAttributeOperatorSpaceChecker.cjs +95 -0
  166. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selectorCombinatorSpaceChecker.cjs +113 -0
  167. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selectorListCommaWhitespaceChecker.cjs +64 -0
  168. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/string-quotes/README.md +130 -0
  169. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/string-quotes/index.cjs +256 -0
  170. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/unicode-bom/README.md +41 -0
  171. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/unicode-bom/index.cjs +67 -0
  172. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/unit-case/README.md +126 -0
  173. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/unit-case/index.cjs +133 -0
  174. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-newline-after/README.md +102 -0
  175. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-newline-after/index.cjs +107 -0
  176. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-newline-before/README.md +100 -0
  177. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-newline-before/index.cjs +49 -0
  178. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-space-after/README.md +136 -0
  179. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-space-after/index.cjs +94 -0
  180. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-space-before/README.md +136 -0
  181. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-space-before/index.cjs +94 -0
  182. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-max-empty-lines/README.md +121 -0
  183. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-max-empty-lines/index.cjs +68 -0
  184. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/valueListCommaWhitespaceChecker.cjs +74 -0
  185. package/stylelint/plugins/stylelint-15.11.0-stylistic/style-search/LICENSE +13 -0
  186. package/stylelint/plugins/stylelint-15.11.0-stylistic/style-search/index.cjs +216 -0
  187. package/stylelint/plugins/stylelint-15.11.0-stylistic/utils/addEmptyLineAfter.cjs +30 -0
  188. package/stylelint/plugins/stylelint-15.11.0-stylistic/utils/hasEmptyBlock.cjs +14 -0
  189. package/stylelint/plugins/stylelint-15.11.0-stylistic/utils/nextNonCommentNode.cjs +21 -0
  190. package/stylelint/plugins/stylelint-15.11.0-stylistic/utils/removeEmptyLinesAfter.cjs +16 -0
  191. package/stylelint/plugins/stylelint-15.11.0-stylistic/utils/whitespaceChecker.cjs +361 -0
  192. package/stylelint/plugins/stylelint-selector-no-empty.js +8 -8
  193. package/stylelint/plugins/stylelint-selector-tag-no-without-class.js +4 -4
  194. package/stylelint/plugins/stylelint-high-performance-animation.js +0 -276
  195. package/stylelint/plugins/stylelint-stylistic.js +0 -188
@@ -0,0 +1,196 @@
1
+ # block-closing-brace-newline-after
2
+
3
+ Require a newline or disallow whitespace after the closing brace of blocks.
4
+
5
+ <!-- prettier-ignore -->
6
+ ```css
7
+ a { color: pink; }
8
+ a { color: red; }↑
9
+ /** ↑
10
+ * The newline after this brace */
11
+ ```
12
+
13
+ This rule allows an end-of-line comment separated from the closing brace by spaces, as long as the comment contains no newlines. For example,
14
+
15
+ <!-- prettier-ignore -->
16
+ ```css
17
+ a {
18
+ color: pink;
19
+ } /* end-of-line comment */
20
+ ```
21
+
22
+ This rule allows a trailing semicolon after the closing brace of a block. For example,
23
+
24
+ <!-- prettier-ignore -->
25
+ ```css
26
+ :root {
27
+ --toolbar-theme: {
28
+ background-color: hsl(120, 70%, 95%);
29
+ };
30
+ /* ↑
31
+ * This semicolon */
32
+ }
33
+ ```
34
+
35
+ The [`fix` option](https://stylelint.io/user-guide/options/#fix) can automatically fix all of the problems reported by this rule.
36
+
37
+ ## Options
38
+
39
+ `string`: `"always"|"always-single-line"|"never-single-line"|"always-multi-line"|"never-multi-line"`
40
+
41
+ ### `"always"`
42
+
43
+ There _must always_ be a newline after the closing brace.
44
+
45
+ The following patterns are considered problems:
46
+
47
+ <!-- prettier-ignore -->
48
+ ```css
49
+ a { color: pink; }b { color: red; }
50
+ ```
51
+
52
+ <!-- prettier-ignore -->
53
+ ```css
54
+ a { color: pink;
55
+ } b { color: red; }
56
+ ```
57
+
58
+ The following patterns are _not_ considered problems:
59
+
60
+ <!-- prettier-ignore -->
61
+ ```css
62
+ a { color: pink; }
63
+ b { color: red; }
64
+ ```
65
+
66
+ ### `"always-single-line"`
67
+
68
+ There _must always_ be a newline after the closing brace in single-line blocks.
69
+
70
+ The following patterns are considered problems:
71
+
72
+ <!-- prettier-ignore -->
73
+ ```css
74
+ a { color: pink; } b { color: red; }
75
+ ```
76
+
77
+ The following patterns are _not_ considered problems:
78
+
79
+ <!-- prettier-ignore -->
80
+ ```css
81
+ a { color: pink;
82
+ } b { color: red; }
83
+ ```
84
+
85
+ <!-- prettier-ignore -->
86
+ ```css
87
+ a { color: pink; }
88
+ b { color: red; }
89
+ ```
90
+
91
+ ### `"never-single-line"`
92
+
93
+ There _must never_ be whitespace after the closing brace in single-line blocks.
94
+
95
+ The following patterns are considered problems:
96
+
97
+ <!-- prettier-ignore -->
98
+ ```css
99
+ a { color: pink; } b { color: red; }
100
+ ```
101
+
102
+ The following patterns are _not_ considered problems:
103
+
104
+ <!-- prettier-ignore -->
105
+ ```css
106
+ a { color: pink; }b { color: red; }
107
+ ```
108
+
109
+ <!-- prettier-ignore -->
110
+ ```css
111
+ a { color: pink;
112
+ } b { color: red; }
113
+ ```
114
+
115
+ ### `"always-multi-line"`
116
+
117
+ There _must always_ be a newline after the closing brace in multi-line blocks.
118
+
119
+ The following patterns are considered problems:
120
+
121
+ <!-- prettier-ignore -->
122
+ ```css
123
+ a { color: pink;
124
+ }b { color: red; }
125
+ ```
126
+
127
+ The following patterns are _not_ considered problems:
128
+
129
+ <!-- prettier-ignore -->
130
+ ```css
131
+ a { color: pink; }b { color: red; }
132
+ ```
133
+
134
+ <!-- prettier-ignore -->
135
+ ```css
136
+ a { color: pink;
137
+ }
138
+ b { color: red; }
139
+ ```
140
+
141
+ ### `"never-multi-line"`
142
+
143
+ There _must never_ be whitespace after the closing brace in multi-line blocks.
144
+
145
+ The following patterns are considered problems:
146
+
147
+ <!-- prettier-ignore -->
148
+ ```css
149
+ a { color: pink;
150
+ } b { color: red; }
151
+ ```
152
+
153
+ The following patterns are _not_ considered problems:
154
+
155
+ <!-- prettier-ignore -->
156
+ ```css
157
+ a { color: pink; } b { color: red; }
158
+ ```
159
+
160
+ <!-- prettier-ignore -->
161
+ ```css
162
+ a { color: pink;
163
+ }b { color: red; }
164
+ ```
165
+
166
+ ## Optional secondary options
167
+
168
+ ### `ignoreAtRules: ["/regex/", "non-regex"]`
169
+
170
+ Ignore specified at-rules.
171
+
172
+ For example, with `"always"` or `"always-multi-line"`.
173
+
174
+ Given:
175
+
176
+ ```json
177
+ ["if", "else"]
178
+ ```
179
+
180
+ The following patterns are _not_ considered problems:
181
+
182
+ <!-- prettier-ignore -->
183
+ ```css
184
+ @if ($var) {
185
+ color: pink;
186
+ } @else if ($var2) {
187
+ color: red;
188
+ } @else {
189
+ color: blue;
190
+ }
191
+ ```
192
+
193
+ <!-- prettier-ignore -->
194
+ ```css
195
+ @if ($var) { color: pink; } @else { color: blue; }
196
+ ```
@@ -0,0 +1,154 @@
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 optionsMatches = require('stylelint/lib/utils/optionsMatches.cjs');
8
+ const rawNodeString = require('stylelint/lib/utils/rawNodeString.cjs');
9
+ const report = require('stylelint/lib/utils/report.cjs');
10
+ const ruleMessages = require('stylelint/lib/utils/ruleMessages.cjs');
11
+ const validateOptions = require('stylelint/lib/utils/validateOptions.cjs');
12
+ const { isString } = require('stylelint/lib/utils/validateTypes.cjs');
13
+
14
+ const whitespaceChecker = require('../../utils/whitespaceChecker.cjs');
15
+
16
+ const ruleName = 'plugin/block-closing-brace-newline-after';
17
+
18
+ const messages = ruleMessages(ruleName, {
19
+ expectedAfter: () => 'Expected newline after "}"',
20
+ expectedAfterSingleLine: () => 'Expected newline after "}" of a single-line block',
21
+ rejectedAfterSingleLine: () => 'Unexpected whitespace after "}" of a single-line block',
22
+ expectedAfterMultiLine: () => 'Expected newline after "}" of a multi-line block',
23
+ rejectedAfterMultiLine: () => 'Unexpected whitespace after "}" of a multi-line block'
24
+ });
25
+
26
+ const meta = {
27
+ url: 'https://github.com/jens-duttke/linter-bundle/blob/main/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-newline-after/README.md',
28
+ fixable: true
29
+ };
30
+
31
+ /** @type {import('stylelint').Rule} */
32
+ const rule = (primary, secondaryOptions, context) => {
33
+ const checker = whitespaceChecker('newline', primary, messages);
34
+
35
+ return (root, result) => {
36
+ const validOptions = validateOptions(
37
+ result,
38
+ ruleName,
39
+ {
40
+ actual: primary,
41
+ possible: [
42
+ 'always',
43
+ 'always-single-line',
44
+ 'never-single-line',
45
+ 'always-multi-line',
46
+ 'never-multi-line'
47
+ ]
48
+ },
49
+ {
50
+ actual: secondaryOptions,
51
+ possible: {
52
+ ignoreAtRules: [isString]
53
+ },
54
+ optional: true
55
+ }
56
+ );
57
+
58
+ if (!validOptions) {
59
+ return;
60
+ }
61
+
62
+ // Check both kinds of statements: rules and at-rules
63
+ root.walkRules(check);
64
+ root.walkAtRules(check);
65
+
66
+ /**
67
+ * @param {import('postcss').Rule | import('postcss').AtRule} statement
68
+ */
69
+ function check (statement) {
70
+ if (!hasBlock(statement)) {
71
+ return;
72
+ }
73
+
74
+ if (
75
+ statement.type === 'atrule' &&
76
+ optionsMatches(secondaryOptions, 'ignoreAtRules', statement.name)
77
+ ) {
78
+ return;
79
+ }
80
+
81
+ const nextNode = statement.next();
82
+
83
+ if (!nextNode) {
84
+ return;
85
+ }
86
+
87
+ // Allow an end-of-line comment x spaces after the brace
88
+ const nextNodeIsSingleLineComment =
89
+ nextNode.type === 'comment' &&
90
+ !(/[^ ]/).test(nextNode.raws.before || '') &&
91
+ !nextNode.toString().includes('\n');
92
+
93
+ const nodeToCheck = nextNodeIsSingleLineComment ? nextNode.next() : nextNode;
94
+
95
+ if (!nodeToCheck) {
96
+ return;
97
+ }
98
+
99
+ let reportIndex = statement.toString().length;
100
+ let source = rawNodeString(nodeToCheck);
101
+
102
+ // Skip a semicolon at the beginning, if any
103
+ if (source?.startsWith(';')) {
104
+ source = source.slice(1);
105
+ reportIndex++;
106
+ }
107
+
108
+ // Only check one after, because there might be other
109
+ // spaces handled by the indentation rule
110
+ checker.afterOneOnly({
111
+ source,
112
+ index: -1,
113
+ lineCheckStr: blockString(statement),
114
+ err: (message) => {
115
+ if (context.fix) {
116
+ const nodeToCheckRaws = nodeToCheck.raws;
117
+
118
+ if (typeof nodeToCheckRaws.before !== 'string') { return; }
119
+
120
+ if (primary.startsWith('always')) {
121
+ const index = nodeToCheckRaws.before.search(/\r?\n/);
122
+
123
+ nodeToCheckRaws.before =
124
+ index >= 0 ?
125
+ nodeToCheckRaws.before.slice(index)
126
+ : context.newline + nodeToCheckRaws.before;
127
+
128
+ return;
129
+ }
130
+
131
+ if (primary.startsWith('never')) {
132
+ nodeToCheckRaws.before = '';
133
+
134
+ return;
135
+ }
136
+ }
137
+
138
+ report({
139
+ message,
140
+ node: statement,
141
+ index: reportIndex,
142
+ result,
143
+ ruleName
144
+ });
145
+ }
146
+ });
147
+ }
148
+ };
149
+ };
150
+
151
+ rule.ruleName = ruleName;
152
+ rule.messages = messages;
153
+ rule.meta = meta;
154
+ module.exports = stylelint.createPlugin(ruleName, rule);
@@ -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);