@primer/stylelint-config 12.5.0 → 12.6.1-rc.c8b4249

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,270 @@
1
+ # Changelog
2
+
3
+ ## 12.6.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#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
8
+
9
+ ## 12.6.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [#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
14
+
15
+ ## 12.5.0
16
+
17
+ ### Minor Changes
18
+
19
+ - [#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
20
+
21
+ ## 12.4.2
22
+
23
+ ### Patch Changes
24
+
25
+ - [#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
26
+
27
+ * [#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,
28
+
29
+ ## 12.4.1
30
+
31
+ ### Patch Changes
32
+
33
+ - [#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
34
+
35
+ ## 12.4.0
36
+
37
+ ### Minor Changes
38
+
39
+ - [#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
40
+
41
+ * [#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
42
+
43
+ ## 12.3.3
44
+
45
+ ### Patch Changes
46
+
47
+ - [#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
48
+
49
+ * [#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
50
+
51
+ ## 12.3.2
52
+
53
+ ### Patch Changes
54
+
55
+ - [#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
56
+
57
+ ## 12.3.1
58
+
59
+ ### Patch Changes
60
+
61
+ - [#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.
62
+
63
+ ## 12.3.0
64
+
65
+ ### Minor Changes
66
+
67
+ - [#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
68
+
69
+ ## 12.2.0
70
+
71
+ ### Minor Changes
72
+
73
+ - [#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.
74
+
75
+ * [#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
76
+
77
+ - [#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).
78
+
79
+ ### Patch Changes
80
+
81
+ - [#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
82
+
83
+ ## 12.1.1
84
+
85
+ ### Patch Changes
86
+
87
+ - [#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
88
+
89
+ ## 12.1.0
90
+
91
+ ### Minor Changes
92
+
93
+ - [#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
94
+
95
+ * [#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
96
+
97
+ ### Patch Changes
98
+
99
+ - [#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
100
+
101
+ ## 12.0.1
102
+
103
+ ### Patch Changes
104
+
105
+ - [#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
106
+
107
+ ## 12.0.0
108
+
109
+ ### Major Changes
110
+
111
+ - [#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`.
112
+
113
+ ### Patch Changes
114
+
115
+ - [#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
116
+
117
+ ## 11.1.1
118
+
119
+ ### Patch Changes
120
+
121
+ - [`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
122
+
123
+ ## 11.1.0
124
+
125
+ ### Minor Changes
126
+
127
+ - [`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.
128
+
129
+ ### Patch Changes
130
+
131
+ - [`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
132
+
133
+ ## 10.0.1
134
+
135
+ ### Patch Changes
136
+
137
+ - [`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.
138
+
139
+ ## 10.0.0
140
+
141
+ ### Major Changes
142
+
143
+ - [`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.
144
+
145
+ See https://stylelint.io/user-guide/rules/at-rule-blacklist and http://stylelint.io/user-guide/rules/declaration-property-value-disallowed-list/
146
+
147
+ ### Patch Changes
148
+
149
+ - [`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.
150
+
151
+ ## 9.3.3
152
+
153
+ ### Patch Changes
154
+
155
+ - [`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
156
+
157
+ ## 9.3.2
158
+
159
+ ### Patch Changes
160
+
161
+ - [`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`
162
+
163
+ * [`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`
164
+
165
+ - [`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
166
+
167
+ ## 9.3.1
168
+
169
+ ### Patch Changes
170
+
171
+ - [`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
172
+
173
+ ## 9.2.1
174
+
175
+ ### :bug: Bug fixes
176
+
177
+ - Fix slow runtime by caching variable definitions in `primer/no-undefined-vars` rule
178
+ - Fix duplicate errors in `primer/no-undefined-vars` rule
179
+
180
+ ## 9.2.0
181
+
182
+ ### :rocket: Enhancements
183
+
184
+ - New `primer/no-undefined-vars` to prohibit usages of undefined CSS variables
185
+
186
+ ## 9.1.0
187
+
188
+ ### :rocket: Enhancements
189
+
190
+ - 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
191
+
192
+ ## 9.0.0
193
+
194
+ ### :boom: Breaking Change
195
+
196
+ - `primer/variables` is no longer supported; please use the `primer/colors`, `primer/borders`, `primer/box-shadow`, `primer/spacing`, and `primer/typography` rules instead. #50
197
+
198
+ ### :rocket: Enhancements
199
+
200
+ - The new `primer/colors` rule enforces color variable usage in `color`, `background-color`, and `fill` properties
201
+ - The new `primer/borders` rule enforces border variable usage in border CSS props
202
+ - The new `primer/box-shadow` rule enforces `$box-shadow*` variables
203
+ - The new `primer/spacing` rule enforces `$spacer-*` variables in margin and padding props
204
+ - The new `primer/typography` rule enforces typography variable use in `font-family`, `line-height`, and `font-weight` props
205
+ - Variable replacements for autofixing are automatically detected in variable data from Primer CSS (see: https://github.com/primer/css/pull/949) #52
206
+ - It is now possible to define variable rules using functions that take the variables, as in:
207
+ ```js
208
+ module.exports = createVariableRule('primer/whatever', ({variables}) => {
209
+ /* do something with variables here */
210
+ })
211
+ ```
212
+ - It's also now possible to provide rule _overrides_ in local stylelint configs as functions:
213
+ ```js
214
+ module.exports = {
215
+ extends: '@primer/stylelint-config',
216
+ rules: {
217
+ 'primer/colors': [true, {
218
+ rules: ({variables, rules}) => {
219
+ /* do something with variables and/or rules here */
220
+ return rules
221
+ }]
222
+ }
223
+ })
224
+ ```
225
+ - 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!).
226
+
227
+ ### :bug: Bug fixes
228
+
229
+ - Use `requirePrimerFile()` when loading `dist/variables.json` so that we can access the right file when running _within_ the `@primer/css` repo.
230
+ - 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.
231
+ - Allow `$*-shadow` variable patterns in `primer/box-shadow` to match `$btn-active-shadow` and `$form-control-shadow`
232
+ - Allow `color: inherit` in `primer/colors`
233
+ - Allow `$em-spacer-*` in `padding` and `margin` properties
234
+ - Allow (and auto-fix!) negative spacer variables in `margin` properties
235
+ - Make `primer/colors` smarter re: `background` property shorthand values (allowing positions and image `url(*)` values)
236
+ - Remove `100%` from allowed values for `border-radius`, and suggest `50%` instead
237
+ - Prohibit negative spacer values in `padding` properties
238
+ - Allow `$h000-size` for marketing 😬
239
+
240
+ ## 2.0.0
241
+
242
+ :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.
243
+
244
+ - Replaced `selector-no-id: true` with `selector-max-id: 0`
245
+ - Replaced `selector-no-type: true` with `selector-max-type: 0`
246
+
247
+ The rest of the changes should not introduce new linting errors:
248
+
249
+ - Updated: moved [browserslist](https://github.com/ai/browserslist) spec to `package.json`
250
+ - 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
251
+ - Removed: `media-feature-no-missing-punctuation`
252
+ - Updated: replaced `rule-nested-empty-line-before` and `rule-non-nested-empty-line-before` with `rule-empty-line-before`
253
+
254
+ ## 1.4.0
255
+
256
+ - Updated: Development dependencies are any version `*`
257
+ - Removed: `selector-class-pattern` from config. https://github.com/primer/stylelint-config/pull/11
258
+
259
+ ## 1.3.0
260
+
261
+ - Added: `length-zero-no-unit` to disallow zero values with units eg `0px`
262
+
263
+ ## 1.2.0
264
+
265
+ - Removed: We don't need `scss/at-extend-no-missing-placeholder` anymore taken care of by `at-rule-blacklist`
266
+ - Added: Adding `selector-no-type` to the rules
267
+
268
+ ## 1.0.0
269
+
270
+ - Creating a sharable config object
package/index.js CHANGED
@@ -13,6 +13,7 @@ module.exports = {
13
13
  './plugins/box-shadow',
14
14
  './plugins/colors',
15
15
  './plugins/no-deprecated-colors',
16
+ './plugins/no-experimental-vars',
16
17
  './plugins/no-override',
17
18
  './plugins/no-scale-colors',
18
19
  './plugins/no-undefined-vars',
@@ -61,6 +62,12 @@ module.exports = {
61
62
  'primer/box-shadow': true,
62
63
  'primer/colors': true,
63
64
  'primer/no-deprecated-colors': true,
65
+ 'primer/no-experimental-vars': [
66
+ true,
67
+ {
68
+ designTokens: '@primer/primitives/tokens-v2-private/docs/docValues.json'
69
+ }
70
+ ],
64
71
  'primer/no-override': true,
65
72
  'primer/no-undefined-vars': [
66
73
  true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer/stylelint-config",
3
- "version": "12.5.0",
3
+ "version": "12.6.1-rc.c8b4249",
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.",
@@ -43,7 +43,7 @@
43
43
  "@changesets/cli": "2.22.0",
44
44
  "@github/prettier-config": "0.0.4",
45
45
  "@primer/css": "^20.0.0",
46
- "@primer/primitives": "^7.0.1",
46
+ "@primer/primitives": "^7.8.3",
47
47
  "dedent": "0.7.0",
48
48
  "eslint": "8.14.0",
49
49
  "eslint-plugin-github": "4.3.5",
@@ -0,0 +1,47 @@
1
+ const stylelint = require('stylelint')
2
+ const declarationValueIndex = require('stylelint/lib/utils/declarationValueIndex')
3
+
4
+ const ruleName = 'primer/no-experimental-vars'
5
+ const messages = stylelint.utils.ruleMessages(ruleName, {
6
+ rejected: value => {
7
+ return `Do not use experimental variable \`var(--${value})\`. Experimental variables are undergoing testing, see https://github.com/github/primer/issues/889 for more details.`
8
+ }
9
+ })
10
+
11
+ // eslint-disable-next-line no-unused-vars
12
+ module.exports = stylelint.createPlugin(ruleName, (enabled, options = {}, context) => {
13
+ if (!enabled) {
14
+ return noop
15
+ }
16
+
17
+ // eslint-disable-next-line import/no-dynamic-require
18
+ const designTokens = require(options.designTokens)
19
+
20
+ let experimentalVars = null
21
+ for (const tokenType of Object.keys(designTokens)) {
22
+ experimentalVars = new Set(designTokens[tokenType].map(t => t['name']))
23
+ }
24
+
25
+ const lintResult = (root, result) => {
26
+ root.walkDecls(decl => {
27
+ for (const expVar of experimentalVars) {
28
+ if (decl.value.includes(`var(--${expVar})`)) {
29
+ stylelint.utils.report({
30
+ index: declarationValueIndex(decl),
31
+ message: messages.rejected(expVar),
32
+ node: decl,
33
+ result,
34
+ ruleName
35
+ })
36
+ }
37
+ }
38
+ })
39
+ }
40
+
41
+ return lintResult
42
+ })
43
+
44
+ function noop() {}
45
+
46
+ module.exports.ruleName = ruleName
47
+ module.exports.messages = messages
@@ -27,7 +27,7 @@ module.exports = stylelint.createPlugin(ruleName, (enabled, options = {}, contex
27
27
  const lintResult = (root, result) => {
28
28
  root.walkRules(rule => {
29
29
  if (!/^\.[\w\-_]+$/.exec(rule.selector)) {
30
- return false
30
+ return
31
31
  }
32
32
  const decls = rule.nodes.filter(decl => decl.type === 'decl')
33
33