@primer/stylelint-config 12.6.1 → 12.7.0-rc.f3bb1ab

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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,276 @@
1
+ # Changelog
2
+
3
+ ## 12.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#294](https://github.com/primer/stylelint-config/pull/294) [`8bdb1d0`](https://github.com/primer/stylelint-config/commit/8bdb1d0a679c32a1782e33feb74bd8993aba5d80) Thanks [@keithamus](https://github.com/keithamus)! - allow for vars defined in scope, or within :root/:host selectors in file
8
+
9
+ ## 12.6.1
10
+
11
+ ### Patch Changes
12
+
13
+ - [#274](https://github.com/primer/stylelint-config/pull/274) [`4ba7018`](https://github.com/primer/stylelint-config/commit/4ba701887351664d8b937483d3d761fa5022f16c) Thanks [@jonrohan](https://github.com/jonrohan)! - Fixing issue in utilities plugin that missed certain classes
14
+
15
+ ## 12.6.0
16
+
17
+ ### Minor Changes
18
+
19
+ - [#272](https://github.com/primer/stylelint-config/pull/272) [`9104062`](https://github.com/primer/stylelint-config/commit/91040626d2195cbb63f1e302ae53acdd4ba5b361) Thanks [@langermank](https://github.com/langermank)! - Add no-experimental-vars plugin
20
+
21
+ ## 12.5.0
22
+
23
+ ### Minor Changes
24
+
25
+ - [#262](https://github.com/primer/stylelint-config/pull/262) [`28a4086`](https://github.com/primer/stylelint-config/commit/28a4086e8c781f76494c7e77b9437046a6f686a6) Thanks [@jonrohan](https://github.com/jonrohan)! - Writing a primer/utilities plugin to look for code that duplicates utilities
26
+
27
+ ## 12.4.2
28
+
29
+ ### Patch Changes
30
+
31
+ - [#258](https://github.com/primer/stylelint-config/pull/258) [`fa48eed`](https://github.com/primer/stylelint-config/commit/fa48eed1af84474fa49bdb7ec861d2c6a3210239) Thanks [@jonrohan](https://github.com/jonrohan)! - Fixing dependencies
32
+
33
+ * [#260](https://github.com/primer/stylelint-config/pull/260) [`4f42328`](https://github.com/primer/stylelint-config/commit/4f4232826cd3055e0e9dc49ff16925c47db21863) Thanks [@jonrohan](https://github.com/jonrohan)! - Turning off 'function-no-unknown': null,
34
+
35
+ ## 12.4.1
36
+
37
+ ### Patch Changes
38
+
39
+ - [#256](https://github.com/primer/stylelint-config/pull/256) [`37eb1cb`](https://github.com/primer/stylelint-config/commit/37eb1cbd342590f4c43e37779f657a4b19594eca) Thanks [@jonrohan](https://github.com/jonrohan)! - Remove stylelint peer
40
+
41
+ ## 12.4.0
42
+
43
+ ### Minor Changes
44
+
45
+ - [#232](https://github.com/primer/stylelint-config/pull/232) [`27ddfc9`](https://github.com/primer/stylelint-config/commit/27ddfc98f93ed898552bb62aa0926d35497dda72) Thanks [@jonrohan](https://github.com/jonrohan)! - Creating a responsive-widths plugin to keep fixed widths smaller than the minimum viewport size
46
+
47
+ * [#253](https://github.com/primer/stylelint-config/pull/253) [`0edeee0`](https://github.com/primer/stylelint-config/commit/0edeee07b1e7ef51bcd0942c65d98131ac384887) Thanks [@jonrohan](https://github.com/jonrohan)! - Changing this peerDependency to be any
48
+
49
+ ## 12.3.3
50
+
51
+ ### Patch Changes
52
+
53
+ - [#218](https://github.com/primer/stylelint-config/pull/218) [`c03be7d`](https://github.com/primer/stylelint-config/commit/c03be7da1126123c079d86e00a2158a913e015f8) Thanks [@jonrohan](https://github.com/jonrohan)! - [Bug fix] Catching values with dots in them
54
+
55
+ * [#217](https://github.com/primer/stylelint-config/pull/217) [`5bb2834`](https://github.com/primer/stylelint-config/commit/5bb28342a6194dfdd4fbf5197682367ea54792b7) Thanks [@jsoref](https://github.com/jsoref)! - Spelling fixes
56
+
57
+ ## 12.3.2
58
+
59
+ ### Patch Changes
60
+
61
+ - [#215](https://github.com/primer/stylelint-config/pull/215) [`66b16ae`](https://github.com/primer/stylelint-config/commit/66b16ae2edd81f8c8949f83c96d7011e5d395cc0) Thanks [@jonrohan](https://github.com/jonrohan)! - Making linter pick up separate function groups
62
+
63
+ ## 12.3.1
64
+
65
+ ### Patch Changes
66
+
67
+ - [#213](https://github.com/primer/stylelint-config/pull/213) [`2a27f86`](https://github.com/primer/stylelint-config/commit/2a27f86868b1f4717100a1f0897cdaefb1dd6be7) Thanks [@jonrohan](https://github.com/jonrohan)! - Fixing an issue where the new spacing plugin isn't traversing child sectors.
68
+
69
+ ## 12.3.0
70
+
71
+ ### Minor Changes
72
+
73
+ - [#191](https://github.com/primer/stylelint-config/pull/191) [`71c7985`](https://github.com/primer/stylelint-config/commit/71c79853b679b674c1d27686f8d2168660b24a45) Thanks [@jonrohan](https://github.com/jonrohan)! - Refactoring the primer/spacing plugin to better match results
74
+
75
+ ## 12.2.0
76
+
77
+ ### Minor Changes
78
+
79
+ - [#170](https://github.com/primer/stylelint-config/pull/170) [`b56fcd1`](https://github.com/primer/stylelint-config/commit/b56fcd1bce90d2e3e1621ef7af7545c52c935579) Thanks [@jonrohan](https://github.com/jonrohan)! - Moving config from primer/css's [stylelint.config.cjs](https://github.com/primer/css/blob/c65be7f0c8b0fb6e1ba406b5d35c6073df161a33/stylelint.config.cjs) file to this package.
80
+
81
+ * [#168](https://github.com/primer/stylelint-config/pull/168) [`d6ff2b9`](https://github.com/primer/stylelint-config/commit/d6ff2b94ff0d309c1b79e783e6ee1b2f87a375ff) Thanks [@jonrohan](https://github.com/jonrohan)! - Extending stylelint-config-standard and removing defaults
82
+
83
+ - [#170](https://github.com/primer/stylelint-config/pull/170) [`b56fcd1`](https://github.com/primer/stylelint-config/commit/b56fcd1bce90d2e3e1621ef7af7545c52c935579) Thanks [@jonrohan](https://github.com/jonrohan)! - Adding config from the [stylelint-scss recommended config](https://github.com/stylelint-scss/stylelint-config-recommended-scss/blob/82d51c399ddaa2f9d282e419399dd2028f47830c/index.js).
84
+
85
+ ### Patch Changes
86
+
87
+ - [#181](https://github.com/primer/stylelint-config/pull/181) [`23e438a`](https://github.com/primer/stylelint-config/commit/23e438a7a9062550baa696cafbb186dc78b723f5) Thanks [@jonrohan](https://github.com/jonrohan)! - Turning off scss/dollar-variable-default
88
+
89
+ ## 12.1.1
90
+
91
+ ### Patch Changes
92
+
93
+ - [#161](https://github.com/primer/stylelint-config/pull/161) [`48c4afc`](https://github.com/primer/stylelint-config/commit/48c4afc1913863136d62967653697323f8da57b7) Thanks [@dependabot](https://github.com/apps/dependabot)! - Bump @primer/primitives from 6.1.0 to 7.0.1
94
+
95
+ ## 12.1.0
96
+
97
+ ### Minor Changes
98
+
99
+ - [#150](https://github.com/primer/stylelint-config/pull/150) [`4af1647`](https://github.com/primer/stylelint-config/commit/4af16474148d96fba5567068280a9ffe6e7a80ba) Thanks [@jonrohan](https://github.com/jonrohan)! - Making all be first in property order
100
+
101
+ * [#151](https://github.com/primer/stylelint-config/pull/151) [`d7c8b2b`](https://github.com/primer/stylelint-config/commit/d7c8b2b908b113fa14c7637dfced34610a3bcfac) Thanks [@jonrohan](https://github.com/jonrohan)! - Adding [string-quotes](https://stylelint.io/user-guide/rules/list/string-quotes) rule to config
102
+
103
+ ### Patch Changes
104
+
105
+ - [#146](https://github.com/primer/stylelint-config/pull/146) [`214362c`](https://github.com/primer/stylelint-config/commit/214362c0e3c9449a5ff7d3bd047018493043d3c0) Thanks [@dependabot](https://github.com/apps/dependabot)! - Bump @primer/css from 13.2.0 to 16.3.0
106
+
107
+ ## 12.0.1
108
+
109
+ ### Patch Changes
110
+
111
+ - [#132](https://github.com/primer/stylelint-config/pull/132) [`b672367`](https://github.com/primer/stylelint-config/commit/b6723679606bb8d39e75025ae17ace9f1c3e2631) Thanks [@jonrohan](https://github.com/jonrohan)! - Updating no-deprecated-colors plugin for edge cases
112
+
113
+ ## 12.0.0
114
+
115
+ ### Major Changes
116
+
117
+ - [#129](https://github.com/primer/stylelint-config/pull/129) [`653d596`](https://github.com/primer/stylelint-config/commit/653d596072b897b265b093aac4cd5c143e61410e) Thanks [@jonrohan](https://github.com/jonrohan)! - Renaming the package to use org scope. This is a breaking change, you'll need to uninstall `stylelint-config-primer` and reinstall `@primer/stylelint-config`.
118
+
119
+ ### Patch Changes
120
+
121
+ - [#130](https://github.com/primer/stylelint-config/pull/130) [`f495a56`](https://github.com/primer/stylelint-config/commit/f495a563a9e809252630466088eb94177e6c0be4) Thanks [@jonrohan](https://github.com/jonrohan)! - Updating @primer/primitives to 5.0 release candidate
122
+
123
+ ## 11.1.1
124
+
125
+ ### Patch Changes
126
+
127
+ - [`3a4654b`](https://github.com/primer/stylelint-config/commit/3a4654b1b7920d71e1284ff78a3bedff932e66a3) [#111](https://github.com/primer/stylelint-config/pull/111) Thanks [@jonrohan](https://github.com/jonrohan)! - Fixing the primer/colors and primer/borders rules
128
+
129
+ ## 11.1.0
130
+
131
+ ### Minor Changes
132
+
133
+ - [`e83f61c`](https://github.com/primer/stylelint-config/commit/e83f61cef3bf1df1d9420662594040efdcb86c89) [#99](https://github.com/primer/stylelint-config/pull/99) Thanks [@jonrohan](https://github.com/jonrohan)! - Create a `no-deprecated-colors` rule that looks for deprecated css color variables from primer/primitives.
134
+
135
+ ### Patch Changes
136
+
137
+ - [`581f40a`](https://github.com/primer/stylelint-config/commit/581f40a4aacb45db5426b82d4a2434e81eb032e2) [#105](https://github.com/primer/stylelint-config/pull/105) Thanks [@jonrohan](https://github.com/jonrohan)! - Adding reporting to the linter to know how many variables are replaced
138
+
139
+ ## 10.0.1
140
+
141
+ ### Patch Changes
142
+
143
+ - [`aa76171`](https://github.com/primer/stylelint-config/commit/aa76171fc5c9c308fcd9d7f7285c8fbdb2c18a7b) [#90](https://github.com/primer/stylelint-config/pull/90) Thanks [@jonrohan](https://github.com/jonrohan)! - Updating the no-undefined-variables lint for the new color-variables mixin.
144
+
145
+ ## 10.0.0
146
+
147
+ ### Major Changes
148
+
149
+ - [`23a1f15`](https://github.com/primer/stylelint-config/commit/23a1f1599673f2a4f9f28c39da61f42871c05697) [#85](https://github.com/primer/stylelint-config/pull/85) Thanks [@koddsson](https://github.com/koddsson)! - Replace deprecated "blacklist" rules for "disallow list" rules.
150
+
151
+ See https://stylelint.io/user-guide/rules/at-rule-blacklist and http://stylelint.io/user-guide/rules/declaration-property-value-disallowed-list/
152
+
153
+ ### Patch Changes
154
+
155
+ - [`40d9bb8`](https://github.com/primer/stylelint-config/commit/40d9bb867194ae4335846953b5d8706dc7dc7d79) [#86](https://github.com/primer/stylelint-config/pull/86) Thanks [@koddsson](https://github.com/koddsson)! - Allow rules to optionally display a URL with their message.
156
+
157
+ ## 9.3.3
158
+
159
+ ### Patch Changes
160
+
161
+ - [`a339c69`](https://github.com/primer/stylelint-config/commit/a339c698b9ba7ccd01b8cb773dad7a3a14dd13a1) [#81](https://github.com/primer/stylelint-config/pull/81) Thanks [@BinaryMuse](https://github.com/BinaryMuse)! - Update globby to v11
162
+
163
+ ## 9.3.2
164
+
165
+ ### Patch Changes
166
+
167
+ - [`d18cfbf`](https://github.com/primer/stylelint-config/commit/d18cfbfefc25be6ae38f73132552d2f3c62c4d02) [#79](https://github.com/primer/stylelint-config/pull/79) Thanks [@BinaryMuse](https://github.com/BinaryMuse)! - Add additional verbose logging to `no-undefined-vars`
168
+
169
+ * [`d18cfbf`](https://github.com/primer/stylelint-config/commit/d18cfbfefc25be6ae38f73132552d2f3c62c4d02) [#79](https://github.com/primer/stylelint-config/pull/79) Thanks [@BinaryMuse](https://github.com/BinaryMuse)! - Fix handling of edge-cases in `no-undefined-vars`
170
+
171
+ - [`bb07673`](https://github.com/primer/stylelint-config/commit/bb076732aa216fcb56e411b8dd7477efc89f7f8a) [#76](https://github.com/primer/stylelint-config/pull/76) Thanks [@BinaryMuse](https://github.com/BinaryMuse)! - Set the default verbose option for `no-scale-colors` to false
172
+
173
+ ## 9.3.1
174
+
175
+ ### Patch Changes
176
+
177
+ - [`df11e2d`](https://github.com/primer/stylelint-config/commit/df11e2d912913346e0499f7eac901cdfcb83f38c) [#74](https://github.com/primer/stylelint-config/pull/74) Thanks [@BinaryMuse](https://github.com/BinaryMuse)! - Add primer/no-scale-colors to the list of exported plugins
178
+
179
+ ## 9.2.1
180
+
181
+ ### :bug: Bug fixes
182
+
183
+ - Fix slow runtime by caching variable definitions in `primer/no-undefined-vars` rule
184
+ - Fix duplicate errors in `primer/no-undefined-vars` rule
185
+
186
+ ## 9.2.0
187
+
188
+ ### :rocket: Enhancements
189
+
190
+ - New `primer/no-undefined-vars` to prohibit usages of undefined CSS variables
191
+
192
+ ## 9.1.0
193
+
194
+ ### :rocket: Enhancements
195
+
196
+ - The `primer/colors`, `primer/borders`, and `primer/box-shadow` rules now allow CSS color variables with the correct functional names (e.g. `var(--color-text-primary)`). #62
197
+
198
+ ## 9.0.0
199
+
200
+ ### :boom: Breaking Change
201
+
202
+ - `primer/variables` is no longer supported; please use the `primer/colors`, `primer/borders`, `primer/box-shadow`, `primer/spacing`, and `primer/typography` rules instead. #50
203
+
204
+ ### :rocket: Enhancements
205
+
206
+ - The new `primer/colors` rule enforces color variable usage in `color`, `background-color`, and `fill` properties
207
+ - The new `primer/borders` rule enforces border variable usage in border CSS props
208
+ - The new `primer/box-shadow` rule enforces `$box-shadow*` variables
209
+ - The new `primer/spacing` rule enforces `$spacer-*` variables in margin and padding props
210
+ - The new `primer/typography` rule enforces typography variable use in `font-family`, `line-height`, and `font-weight` props
211
+ - Variable replacements for autofixing are automatically detected in variable data from Primer CSS (see: https://github.com/primer/css/pull/949) #52
212
+ - It is now possible to define variable rules using functions that take the variables, as in:
213
+ ```js
214
+ module.exports = createVariableRule('primer/whatever', ({variables}) => {
215
+ /* do something with variables here */
216
+ })
217
+ ```
218
+ - It's also now possible to provide rule _overrides_ in local stylelint configs as functions:
219
+ ```js
220
+ module.exports = {
221
+ extends: '@primer/stylelint-config',
222
+ rules: {
223
+ 'primer/colors': [true, {
224
+ rules: ({variables, rules}) => {
225
+ /* do something with variables and/or rules here */
226
+ return rules
227
+ }]
228
+ }
229
+ })
230
+ ```
231
+ - This release adds support for an optional `singular: true` flag to rule configs, which skips the parsing of individual values in the matched properties. We use this in `primer/box-shadow` to prevent multiple warnings for a single value like `box-shadow: inset 0 1px $blue` (before there would be 4 separate ones!).
232
+
233
+ ### :bug: Bug fixes
234
+
235
+ - Use `requirePrimerFile()` when loading `dist/variables.json` so that we can access the right file when running _within_ the `@primer/css` repo.
236
+ - Walk only declarations (`prop: value`) in rules (blocks with selectors, _not_ `@rules`), and skip linting for declarations nested in `@each`, `@for`, `@function`, and `@mixin` blocks, since those can define their own variables and we can't reliably assert their values.
237
+ - Allow `$*-shadow` variable patterns in `primer/box-shadow` to match `$btn-active-shadow` and `$form-control-shadow`
238
+ - Allow `color: inherit` in `primer/colors`
239
+ - Allow `$em-spacer-*` in `padding` and `margin` properties
240
+ - Allow (and auto-fix!) negative spacer variables in `margin` properties
241
+ - Make `primer/colors` smarter re: `background` property shorthand values (allowing positions and image `url(*)` values)
242
+ - Remove `100%` from allowed values for `border-radius`, and suggest `50%` instead
243
+ - Prohibit negative spacer values in `padding` properties
244
+ - Allow `$h000-size` for marketing 😬
245
+
246
+ ## 2.0.0
247
+
248
+ :boom: **The following updates are breaking changes**, since code that disables the deprecated rule will now produce linting errors. Please update your `stylelint-disable` statements accordingly.
249
+
250
+ - Replaced `selector-no-id: true` with `selector-max-id: 0`
251
+ - Replaced `selector-no-type: true` with `selector-max-type: 0`
252
+
253
+ The rest of the changes should not introduce new linting errors:
254
+
255
+ - Updated: moved [browserslist](https://github.com/ai/browserslist) spec to `package.json`
256
+ - Updated: using the [`no-unsupported-browser-features` plugin](https://github.com/ismay/stylelint-no-unsupported-browser-features) instead of the deprecated `no-unsupported-browser-features` rule
257
+ - Removed: `media-feature-no-missing-punctuation`
258
+ - Updated: replaced `rule-nested-empty-line-before` and `rule-non-nested-empty-line-before` with `rule-empty-line-before`
259
+
260
+ ## 1.4.0
261
+
262
+ - Updated: Development dependencies are any version `*`
263
+ - Removed: `selector-class-pattern` from config. https://github.com/primer/stylelint-config/pull/11
264
+
265
+ ## 1.3.0
266
+
267
+ - Added: `length-zero-no-unit` to disallow zero values with units eg `0px`
268
+
269
+ ## 1.2.0
270
+
271
+ - Removed: We don't need `scss/at-extend-no-missing-placeholder` anymore taken care of by `at-rule-blacklist`
272
+ - Added: Adding `selector-no-type` to the rules
273
+
274
+ ## 1.0.0
275
+
276
+ - Creating a sharable config object
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer/stylelint-config",
3
- "version": "12.6.1",
3
+ "version": "12.7.0-rc.f3bb1ab",
4
4
  "description": "Sharable stylelint config used by GitHub's CSS",
5
5
  "homepage": "http://primer.style/css/tools/linting",
6
6
  "author": "GitHub, Inc.",
@@ -45,11 +45,11 @@
45
45
  "@primer/css": "^20.0.0",
46
46
  "@primer/primitives": "^7.8.3",
47
47
  "dedent": "0.7.0",
48
- "eslint": "8.14.0",
48
+ "eslint": "8.18.0",
49
49
  "eslint-plugin-github": "4.3.5",
50
- "eslint-plugin-jest": "26.1.5",
51
- "eslint-plugin-prettier": "4.0.0",
52
- "jest": "27.5.1",
50
+ "eslint-plugin-jest": "26.5.3",
51
+ "eslint-plugin-prettier": "4.2.1",
52
+ "jest": "28.1.2",
53
53
  "jest-preset-stylelint": "5.0.3",
54
54
  "prettier": "2.6.2"
55
55
  },
@@ -27,14 +27,15 @@ module.exports = stylelint.createPlugin(ruleName, (enabled, options = {}) => {
27
27
  const {files = ['**/*.scss', '!node_modules'], verbose = false} = options
28
28
  // eslint-disable-next-line no-console
29
29
  const log = verbose ? (...args) => console.warn(...args) : noop
30
- const definedVariables = getDefinedVariables(files, log)
31
-
30
+ const globalDefinedVariables = getDefinedVariables(files, log)
32
31
  // Keep track of declarations we've already seen
33
32
  const seen = new WeakMap()
34
33
 
35
34
  return (root, result) => {
36
- function checkVariable(variableName, node) {
37
- if (!definedVariables.has(variableName)) {
35
+ const fileDefinedVariables = new Set()
36
+
37
+ function checkVariable(variableName, node, allowed) {
38
+ if (!allowed.has(variableName)) {
38
39
  stylelint.utils.report({
39
40
  message: messages.rejected(variableName),
40
41
  node,
@@ -52,13 +53,23 @@ module.exports = stylelint.createPlugin(ruleName, (enabled, options = {}) => {
52
53
  }
53
54
 
54
55
  for (const [, variableName] of innerMatch) {
55
- checkVariable(variableName, rule)
56
+ checkVariable(variableName, rule, new Set([...globalDefinedVariables, ...fileDefinedVariables]))
56
57
  }
57
58
  }
58
59
  })
59
60
 
60
61
  root.walkRules(rule => {
62
+ const scopeDefinedVaribles = new Set()
63
+
61
64
  rule.walkDecls(decl => {
65
+ // Add CSS variable declarations within the source text to the list of allowed variables
66
+ if (decl.prop.startsWith('--')) {
67
+ scopeDefinedVaribles.add(decl.prop)
68
+ if (decl.parent.selector === ':root' || decl.parent.selector === ':host') {
69
+ fileDefinedVariables.add(decl.prop)
70
+ }
71
+ }
72
+
62
73
  if (seen.has(decl)) {
63
74
  return
64
75
  } else {
@@ -66,7 +77,11 @@ module.exports = stylelint.createPlugin(ruleName, (enabled, options = {}) => {
66
77
  }
67
78
 
68
79
  for (const [, variableName] of matchAll(decl.value, variableReferenceRegex)) {
69
- checkVariable(variableName, decl)
80
+ checkVariable(
81
+ variableName,
82
+ decl,
83
+ new Set([...globalDefinedVariables, ...fileDefinedVariables, ...scopeDefinedVaribles])
84
+ )
70
85
  }
71
86
  })
72
87
  })