1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
9 const fs = require("fs");
10 const path = require("path");
12 function readFile(path) {
14 .readFileSync(path, { encoding: "utf-8" })
16 .filter(p => p && !p.startsWith("#"));
21 path.join(__dirname, "tools", "rewriting", "ThirdPartyPaths.txt")
23 ...readFile(path.join(__dirname, "tools", "rewriting", "Generated.txt")),
27 extends: ["stylelint-config-recommended"],
30 /* Disabled because of `-moz-element(#foo)` which gets misparsed. */
31 "color-no-invalid-hex": null,
32 "font-family-no-missing-generic-family-keyword": [
45 "function-no-unknown": [
49 "light-dark" /* Used for color-scheme dependent colors */,
50 "-moz-image-rect" /* Used for cropping images */,
51 "-moz-themed" /* Used for native widget rendering */,
52 "add" /* Used in mathml.css */,
57 "no-descending-specificity": null,
58 "no-duplicate-selectors": null,
60 "property-no-unknown": [
63 ignoreProperties: ["overflow-clip-box"],
68 * XXXgijs: we would like to enable this, but we can't right now.
69 * This is because Gecko uses a number of custom pseudoclasses,
70 * and stylelint assumes that for `:unknown-pseudoclass(foo)`,
71 * `foo` should be a known type.
72 * This is tedious but workable for things like `-moz-locale-dir` where
73 * the set of acceptable values (ltr/rtl) is small.
74 * However, for tree cells, the set of values is unlimited (ie
75 * user-defined, based on atoms sent by the JS tree view APIs).
76 * There does not appear to be a way to exempt the contents of these
77 * unknown pseudoclasses, and as a result, this rule is not
78 * usable for us. The 'type' only includes the contents of the
79 * pseudoclass, not the pseudo itself, so we can't filter based on the
81 * Ideally, we would either create an option to the builtin rule
82 * in stylelint itself, or mimic the rule but exempt these, or
83 * add parser support for our custom pseudoclasses.
85 * For now, we just disable this rule.
87 "selector-type-no-unknown": null,
89 * See above - if we enabled this rule, we'd have to allow for a number
90 * of custom elements we use, which are listed here:
91 "selector-type-no-unknown": [
94 ignore: ["custom-elements"],
96 // Modern custom element / storybooked components:
98 // moz-locale-dir trips this rule for some reason:
101 // Migrated XBL elements not part of core XUL that we use at the moment:
106 "popupnotificationcontent",
107 // Legacy XUL elements:
108 // (the commented out ones used to be a thing and aren't used in-tree anymore)
208 "toolbarpaletteitem",
235 "selector-pseudo-class-no-unknown": [
238 ignorePseudoClasses: ["popover-open"],
245 // TODO: Bug 1851544: Re-enable the rule or change the rule set-up.
247 "browser/components/newtab/content-src/aboutwelcome/aboutwelcome.scss",
248 "browser/components/newtab/content-src/asrouter/components/ModalOverlay/_ModalOverlay.scss",
249 "browser/components/newtab/content-src/asrouter/templates/SimpleBelowSearchSnippet/_SimpleBelowSearchSnippet.scss",
250 "browser/components/newtab/content-src/components/CustomizeMenu/_CustomizeMenu.scss",
251 "browser/components/newtab/content-src/components/DiscoveryStreamComponents/CardGrid/_CardGrid.scss",
252 "browser/components/newtab/content-src/components/Search/_Search.scss",
255 "media-feature-range-notation": null,
260 customSyntax: "postcss-scss",
261 extends: "stylelint-config-recommended-scss",
264 files: "browser/components/newtab/**",
265 customSyntax: "postcss-scss",
266 extends: "stylelint-config-standard-scss",
268 "at-rule-disallowed-list": [
269 ["debug", "warn", "error"],
271 message: "Clean up %s directives before committing",
274 "at-rule-no-vendor-prefix": null,
275 "color-function-notation": null,
276 "color-hex-case": "upper",
277 "comment-empty-line-before": [
280 except: ["first-nested"],
281 ignore: ["after-comment", "stylelint-commands"],
284 "custom-property-empty-line-before": null,
285 "custom-property-pattern": null,
286 "declaration-block-no-duplicate-properties": true,
287 "declaration-block-no-redundant-longhand-properties": null,
288 "declaration-no-important": true,
289 "function-no-unknown": [
292 ignoreFunctions: ["div"],
295 "function-url-no-scheme-relative": true,
297 "keyframes-name-pattern": null,
298 "max-nesting-depth": [
301 ignore: ["blockless-at-rules", "pseudo-classes"],
304 "media-feature-name-no-vendor-prefix": null,
305 "no-descending-specificity": null,
306 "no-eol-whitespace": true,
307 "no-missing-end-of-source-newline": true,
308 "number-leading-zero": "always",
309 "number-no-trailing-zeros": true,
310 "property-disallowed-list": [
311 ["margin-left", "margin-right"],
313 message: "Use margin-inline instead of %s",
316 "property-no-unknown": true,
317 "property-no-vendor-prefix": null,
318 "scss/dollar-variable-empty-line-before": null,
319 "scss/double-slash-comment-empty-line-before": [
322 except: ["first-nested"],
323 ignore: ["between-comments", "stylelint-commands", "inside-block"],
326 "selector-class-pattern": null,
327 "selector-no-vendor-prefix": null,
334 "value-keyword-case": null,
335 "value-no-vendor-prefix": null,