From 574a99361ee3a5ec81f5d613011a06ebef8ad00a Mon Sep 17 00:00:00 2001 From: Adaline Valentina Simonian Date: Thu, 7 Oct 2021 18:16:51 -0700 Subject: [PATCH 1/6] =?UTF-8?q?feat!:=20Upgrade=20to=20Stylelint=2014=20?= =?UTF-8?q?=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #233 - Stylelint dependency changed to point to v14 branch on GitHub (Will need to be changed to the packaged version once Stylelint 14 is published to npm.) - Default values for `validate` and `snippet` options set to `['css', 'postcss']` - Removed `syntax` option - Removed `configOverrides` option - Documented changes and provided migration path in readme - Made appropriate changes in tests - Removed tests for removed features --- README.md | 179 ++-- package-lock.json | 799 +++++------------- package.json | 56 +- scripts/stylelint-types.js | 22 +- src/server.js | 14 - src/stylelint-vscode.js | 54 +- .../__snapshots__/test.js.snap | 2 +- .../lib/stylelint-vscode/no-unknown.config.js | 11 + test/lib/stylelint-vscode/test.js | 43 +- test/workspace/lint/.vscode/settings.json | 3 + test/workspace/lint/stylelint.config.js | 18 +- test/workspace/rule-doc/test-plugin.js | 48 +- test/workspace/syntax/.vscode/settings.json | 3 - .../syntax/__snapshots__/index.js.snap | 25 - test/workspace/syntax/index.js | 25 - test/workspace/syntax/stylelint.config.js | 7 - test/workspace/syntax/test.css | 3 - types/stylelint/index.d.ts | 88 +- types/stylelint/version | 2 +- 19 files changed, 475 insertions(+), 927 deletions(-) create mode 100644 test/lib/stylelint-vscode/no-unknown.config.js create mode 100644 test/workspace/lint/.vscode/settings.json delete mode 100644 test/workspace/syntax/.vscode/settings.json delete mode 100644 test/workspace/syntax/__snapshots__/index.js.snap delete mode 100644 test/workspace/syntax/index.js delete mode 100644 test/workspace/syntax/stylelint.config.js delete mode 100644 test/workspace/syntax/test.css diff --git a/README.md b/README.md index b8ccb7a5..17362c1f 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ The official [Visual Studio Code](https://code.visualstudio.com/) extension to l ![screenshot](media/screenshot.png) +> **Notice:** 1.x of this extension has breaking changes from 0.x versions, including, but not limited to, changes to which documents are linted by default. See the [migration section](#Migrating-from-vscode-stylelint-0.x/Stylelint-13.x) for more information. + The extension first looks for a copy of stylelint installed in the open workspace folder, then for a globally installed version if it can't find one. ## Installation @@ -16,11 +18,9 @@ The extension first looks for a copy of stylelint installed in the open workspac Read the [extension installation guide](https://code.visualstudio.com/docs/editor/extension-gallery) for more details. -### Recommended setup (optional) - -duplicate messages from both the built-in linter and vscode-stylelint +### Recommended Setup (optional) -To prevent both [VS Code's built-in linters](https://code.visualstudio.com/docs/languages/css#_syntax-verification-linting) `[css]` `[less]` `[scss]` and this extension `[stylelint]` from reporting the same errors as seen in the screenshot, disable the built-in linters in either the [user or workspace settings](https://code.visualstudio.com/docs/getstarted/settings): +To prevent both [VS Code's built-in linters](https://code.visualstudio.com/docs/languages/css#_syntax-verification-linting) `[css]` `[less]` `[scss]` and this extension `[stylelint]` from reporting the same errors, disable the built-in linters in either the [user or workspace settings](https://code.visualstudio.com/docs/getstarted/settings): ```json "css.validate": false, @@ -28,83 +28,100 @@ To prevent both [VS Code's built-in linters](https://code.visualstudio.com/docs/ "scss.validate": false ``` +Screenshot of duplicate error messages + +_An example of duplicate error messages from both the built-in linter and vscode-stylelint._ + ## Usage -Once a user follows [the stylelint startup guide](https://stylelint.io/user-guide/get-started) by creating a [configuration](https://stylelint.io/user-guide/configuration) file or by editing [`stylelint.*` VSCode settings](#extension-settings), stylelint automatically validates documents with these [language identifiers](https://code.visualstudio.com/docs/languages/overview#_language-id): - -UI to select a language identifier - -- CSS (`css`) -- HTML (`html`) -- Less (`less`) -- JavaScript (`javascript`) -- JavaScript React (`javascriptreact`) -- Markdown (`markdown`) -- [Markdown+MathML (`source.markdown.math`)](https://marketplace.visualstudio.com/items?itemName=goessner.mdmath) -- [PostCSS (`postcss`)](https://marketplace.visualstudio.com/items?itemName=mhmadhamster.postcss-language) -- [Sass (`sass`)](https://marketplace.visualstudio.com/items?itemName=Syler.sass-indented) -- SCSS (`scss`) -- styled-components - - [Official (`source.css.styled`)](https://marketplace.visualstudio.com/items?itemName=jpoissonnier.vscode-styled-components) - - [Userland (`styled-css`)](https://marketplace.visualstudio.com/items?itemName=mgmcdermott.vscode-language-babel) -- [Sugarss (`sugarss`)](https://marketplace.visualstudio.com/items?itemName=mhmadhamster.postcss-language) -- [Svelte (`svelte`)](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode) -- TypeScript (`typescript`) -- TypeScript React (`typescriptreact`) -- [Vue (`vue`, `vue-html`, `vue-postcss`)](https://marketplace.visualstudio.com/items?itemName=octref.vetur) -- XML (`xml`) -- XSL (`xsl`) - -### Extension settings +Once a user follows [the stylelint startup guide](https://stylelint.io/user-guide/get-started) by creating a [configuration](https://stylelint.io/user-guide/configuration) file or by editing [`stylelint.*` VSCode settings](#extension-settings), stylelint automatically validates CSS and [PostCSS](https://marketplace.visualstudio.com/items?itemName=mhmadhamster.postcss-language) with [language identifiers](https://code.visualstudio.com/docs/languages/overview#_language-id) `css` and `postcss`, respectively. -Though relying on a [stylelint configuration file](https://stylelint.io/user-guide/configure) in your project is highly recommended, you can instead use the following extension [settings](https://code.visualstudio.com/docs/getstarted/settings): +Screenshot of UI to select a language identifier -#### stylelint.enable +_The UI to select a language identifier._ -Type: `boolean` -Default: `true` +## Migrating from vscode-stylelint 0.x/Stylelint 13.x -Controls whether this extension is enabled or not. +### Stylelint 13.x and Prior is No Longer Supported -#### stylelint.configOverrides +vscode-stylelint 1.x expects to use Stylelint 14 at minimum. Usage with prior versions of Stylelint is not supported nor recommended. If you want to continue using this extension, upgrade your copy of Stylelint to version 14 or later. -Type: `Object` -Default: `null` +The `syntax` and `configOverrides` options have been removed from Stylelint 14 and this extension. See the next section for information on how to use different syntaxes. -Sets the stylelint [`configOverrides`](https://stylelint.io/user-guide/usage/node-api#configoverrides) option. +### Stylelint is No Longer Bundled -#### stylelint.config +Unlike in 0.x, 1.x no longer provides a copy of Stylelint bundled with the extension. Bundling Stylelint brought up many unwanted side effects and significantly increased the extension's size. -Type: `Object` -Default: `null` +Starting with 1.x, vscode-stylelint will depend on having a copy of Stylelint installed in the open workspace (recommended) or globally (not recommended). If the extension doesn't seem to be linting any documents, make sure you have Stylelint installed. -Sets the stylelint [`config`](https://stylelint.io/user-guide/usage/node-api#config) option. Note that when this option is enabled, stylelint doesn't load configuration files. +### Only CSS and PostCSS are Validated by Default -#### stylelint.configFile +The 0.x versions of this extension, which used Stylelint 13.x and prior, supported validating many different languages out of the box without any additional configuration. However, this added a lot of complexity and resulted in many cases of unwanted or unexpected behaviour. -Type: `string` -Default: `""` +In current versions of the extension, the extension only supports validating CSS and PostCSS out of the box and requires additional configuration to validate other languages. You will need to: -Sets the stylelint [`configFile`](https://stylelint.io/user-guide/usage/options#configfile) option. Path to a JSON, YAML, or JS file that contains your configuration object. Use this option if you don't want stylelint to search for a configuration file. +- Install the PostCSS syntax for the language you want to validate into your workspace (e.g. [postcss-html](https://www.npmjs.com/package/postcss-html) or [postcss-scss](https://www.npmjs.com/package/postcss-scss)). +- Configure Stylelint to use the syntax by providing it with the module name in the [`customSyntax` option](https://stylelint.io/user-guide/usage/options/#customsyntax) using overrides (or use the corresponding option [in this extension's settings](#stylelint.customSyntax)). -#### stylelint.configBasedir + Example Stylelint config: -Type: `string` -Default: `""` + ```js + module.exports = { + overrides: [ + { + files: ["**/*.scss"], + customSyntax: "postcss-scss" + } + ] + }; + ``` -Sets the stylelint [`configBasedir`](https://stylelint.io/user-guide/usage/options#configbasedir) option. The path to the directory to which relative paths defining "extends" and "plugins" are relative. Only necessary if these values are relative paths. +- [Add the language identifiers](#stylelint.validate) for the documents you want to validate to the extension's workspace or user settings. + + Example VS Code config: + + ```json + { + "stylelint.validate": ["css", "scss"] + } + ``` + +## Extension Settings + +Though relying on a [stylelint configuration file](https://stylelint.io/user-guide/configure) in your project is highly recommended, you can instead use the following extension [settings](https://code.visualstudio.com/docs/getstarted/settings): + +### `stylelint.enable` + +> Type: `boolean` +> Default: `true` + +Controls whether this extension is enabled or not. + +### `stylelint.config` + +> Type: `Object` +> Default: `null` -#### stylelint.syntax +Sets the stylelint [`config`](https://stylelint.io/user-guide/usage/node-api#config) option. Note that when this option is enabled, stylelint doesn't load configuration files. + +### `stylelint.configFile` -Type: `"css" | "css-in-js" | "html" | "less" | "markdown" | "sass" | "scss" | "sugarss"` -Default: `""` +> Type: `string` +> Default: `""` + +Sets the stylelint [`configFile`](https://stylelint.io/user-guide/usage/options#configfile) option. Path to a JSON, YAML, or JS file that contains your configuration object. Use this option if you don't want stylelint to search for a configuration file. -Sets the stylelint [`syntax`](https://stylelint.io/user-guide/usage/options#syntax) option. Only use this option if you want to force a specific syntax. +### `stylelint.configBasedir` + +> Type: `string` +> Default: `""` + +Sets the stylelint [`configBasedir`](https://stylelint.io/user-guide/usage/options#configbasedir) option. The path to the directory to which relative paths defining "extends" and "plugins" are relative. Only necessary if these values are relative paths. -#### stylelint.customSyntax +### `stylelint.customSyntax` -Type: `string` -Default: `""` +> Type: `string` +> Default: `""` Sets the stylelint [`customSyntax`](https://stylelint.io/user-guide/usage/options#customsyntax) option. An absolute path to a custom [PostCSS-compatible](https://github.com/postcss/postcss#syntaxes) syntax module. @@ -122,56 +139,56 @@ e.g. "stylelint.customSyntax": "${workspaceFolder}/custom-syntax.js" ``` -#### stylelint.ignoreDisables +### `stylelint.ignoreDisables` -Type: `boolean` -Default: `false` +> Type: `boolean` +> Default: `false` Sets the stylelint [`ignoreDisables`](https://stylelint.io/user-guide/usage/options#ignoredisables) option. If `true`, stylelint ignores `styleline-disable` (e.g. `/* stylelint-disable block-no-empty */`) comments. -#### stylelint.reportNeedlessDisables +### `stylelint.reportNeedlessDisables` -Type: `boolean` -Default: `false` +> Type: `boolean` +> Default: `false` Sets the stylelint [`reportNeedlessDisables`](https://stylelint.io/user-guide/usage/options#reportneedlessdisables) option. If `true`, stylelint reports errors for `stylelint-disable` comments that are not blocking a lint warning. -#### stylelint.reportInvalidScopeDisables +### `stylelint.reportInvalidScopeDisables` -Type: `boolean` -Default: `false` +> Type: `boolean` +> Default: `false` Sets the stylelint [`reportInvalidScopeDisables`](https://stylelint.io/user-guide/usage/options#reportInvalidScopeDisables) option. If `true`, stylelint reports errors for `stylelint-disable` comments referring to rules that don't exist within the configuration object. -#### stylelint.validate +### `stylelint.validate` -Type: `string[]` -Default: `["css","html","javascript","javascriptreact","less","markdown","postcss","sass","scss","source.css.styled","source.markdown.math","styled-css","sugarss","svelte","typescript","typescriptreact","vue","vue-html","vue-postcss","xml","xsl"]` +> Type: `string[]` +> Default: `["css","postcss"]` An array of language identifiers specifying which files to validate. -#### stylelint.stylelintPath +### `stylelint.stylelintPath` -Type: `string` -Default: `""` +> Type: `string` +> Default: `""` Used to supply a custom path to the stylelint module. -#### stylelint.packageManager +### `stylelint.packageManager` -Type: `"npm" | "yarn" | "pnpm"` -Default: `"npm"` +> Type: `"npm" | "yarn" | "pnpm"` +> Default: `"npm"` Controls the package manager to be used to resolve the stylelint library. This setting only has an effect if the stylelint library is resolved globally. Valid values are `"npm"` or `"yarn"` or `"pnpm"`. -#### stylelint.snippet +### `stylelint.snippet` -Type: `string[]` -Default: `["css","less","postcss","scss"]` +> Type: `string[]` +> Default: `["css","postcss"]` An array of language identifiers specifying which files to enable snippets for. -#### editor.codeActionsOnSave +### `editor.codeActionsOnSave` This extension provides an action that you can use with VS Code's `editor.codeActionsOnSave` setting. If provided a `source.fixAll.stylelint` property set to `true`, all auto-fixable stylelint errors will be fixed on save. @@ -208,7 +225,7 @@ You can also selectively enable and disable specific languages using VS Code's l } ``` -### Commands +## Commands This extension contributes the following commands to the command palette: diff --git a/package-lock.json b/package-lock.json index bc3b67ab..9de006e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,8 @@ "vscode-uri": "^3.0.2" }, "devDependencies": { + "@stylelint/postcss-css-in-js": "^0.37.2", + "@stylelint/postcss-markdown": "^0.36.2", "@stylelint/prettier-config": "^2.0.0", "@types/fs-extra": "^9.0.13", "@types/jest": "^27.0.1", @@ -36,9 +38,12 @@ "jest-runner-vscode": "^2.0.0", "npm-run-all": "^4.1.5", "p-wait-for": "^3.1.0", + "postcss": "^8.3.9", + "postcss-html": "^0.36.0", "postcss-sass": "^0.5.0", + "postcss-scss": "^4.0.1", "prettier": "^2.3.0", - "stylelint": "^13.13.1", + "stylelint": "git+https://git@github.com/stylelint/stylelint#v14", "stylelint-processor-glamorous": "^0.3.0", "stylelint-processor-styled-components": "^1.10.0", "typescript": "^4.4.3", @@ -1064,11 +1069,11 @@ }, "node_modules/@stylelint/postcss-css-in-js": { "version": "0.37.2", - "resolved": "git+https://git@github.com/adalinesimonian/postcss-css-in-js.git#9e6f8956852f95312a2c3cc5addb0a596395d7b7", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", + "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/core": ">=7.15.5" + "@babel/core": ">=7.9.0" }, "peerDependencies": { "postcss": ">=7.0.0", @@ -1626,34 +1631,6 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "node_modules/autoprefixer": { - "version": "9.8.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.7.tgz", - "integrity": "sha512-7Hg99B1eTH5+LgmUBUSmov1Z3bsggQJS7v3IMGo6wcScnbRuvtMc871J9J+4bSbIqa9LSX/zypFXJ8sXHpMJeQ==", - "dev": true, - "dependencies": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "nanocolors": "^0.2.8", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - }, - "node_modules/autoprefixer/node_modules/nanocolors": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.12.tgz", - "integrity": "sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug==", - "dev": true - }, "node_modules/babel-jest": { "version": "27.2.1", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.2.1.tgz", @@ -1912,15 +1889,6 @@ "node": ">=6" } }, - "node_modules/camelcase-css": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-1.0.1.tgz", - "integrity": "sha1-FXxCOCZfXPlKHf/ehkRlUsvz9wU=", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/camelcase-keys": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", @@ -4318,6 +4286,15 @@ "node": ">=8" } }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", @@ -4397,18 +4374,6 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -5314,9 +5279,9 @@ } }, "node_modules/known-css-properties": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz", - "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.23.0.tgz", + "integrity": "sha512-h9ivI88e1lFNmTT4HovBN33Ysn0OIJG7IPG2mkpx2uniQXFWqo35QdiX7w0TovlUFXfW8aPFblP5/q0jlOr2sA==", "dev": true }, "node_modules/leven": { @@ -5425,22 +5390,6 @@ "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/longest-streak": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", @@ -5856,15 +5805,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/normalize-selector": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", @@ -6046,12 +5986,6 @@ "node": ">=8" } }, - "node_modules/num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, "node_modules/nwsapi": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", @@ -6319,6 +6253,12 @@ "node": ">=8" } }, + "node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "node_modules/picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -6433,16 +6373,17 @@ } }, "node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", + "version": "8.3.9", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz", + "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==", "dev": true, "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" + "nanoid": "^3.1.28", + "picocolors": "^0.2.1", + "source-map-js": "^0.6.2" }, "engines": { - "node": ">=6.0.0" + "node": "^10 || ^12 || >=14" }, "funding": { "type": "opencollective", @@ -6451,9 +6392,9 @@ }, "node_modules/postcss-html": { "version": "0.36.0", - "resolved": "git+https://git@github.com/adalinesimonian/postcss-html.git#0ed560d33b7876f6d8d7f947d9145f618b32d31f", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", "dev": true, - "license": "MIT", "dependencies": { "htmlparser2": "^3.10.0" }, @@ -6462,113 +6403,6 @@ "postcss-syntax": ">=0.36.0" } }, - "node_modules/postcss-js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-1.0.1.tgz", - "integrity": "sha512-smhUUMF5o5W1ZCQSyh5A3lNOXFLdNrxqyhWbLsGolZH2AgVmlyhxhYbIixfsdKE6r1vG5i7O40DPcvEvE1mvjw==", - "dev": true, - "dependencies": { - "camelcase-css": "^1.0.1", - "postcss": "^6.0.11" - } - }, - "node_modules/postcss-js/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-js/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-js/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/postcss-js/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/postcss-js/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/postcss-js/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-js/node_modules/postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "dependencies": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/postcss-js/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-less": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", - "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.14" - }, - "engines": { - "node": ">=6.14.4" - } - }, "node_modules/postcss-media-query-parser": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", @@ -6581,18 +6415,6 @@ "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", "dev": true }, - "node_modules/postcss-safe-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", - "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", - "dev": true, - "dependencies": { - "postcss": "^7.0.26" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/postcss-sass": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.5.0.tgz", @@ -6606,46 +6428,20 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/postcss-sass/node_modules/nanoid": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", - "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/postcss-sass/node_modules/postcss": { - "version": "8.3.7", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.7.tgz", - "integrity": "sha512-9SaY7nnyQ63/WittqZYAvkkYPyKxchMKH71UDzeTmWuLSvxTRpeEeABZAzlCi55cuGcoFyoV/amX2BdsafQidQ==", + "node_modules/postcss-scss": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.1.tgz", + "integrity": "sha512-7QghUu2l07OyVFT5LyvU/QJ1f2s8IL0mfToN69Yu533PgMZm2B1S6hYd4bao8tFq70r3P5MmAbKhVrZ4wOADxg==", "dev": true, - "dependencies": { - "nanocolors": "^0.1.5", - "nanoid": "^3.1.25", - "source-map-js": "^0.6.2" - }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-scss": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", - "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.6" }, - "engines": { - "node": ">=6.0.0" + "peerDependencies": { + "postcss": "^8.3.3" } }, "node_modules/postcss-selector-parser": { @@ -6663,49 +6459,12 @@ }, "node_modules/postcss-syntax": { "version": "0.36.2", - "resolved": "git+https://git@github.com/adalinesimonian/postcss-syntax.git#08c537d33b4d342ddd5b1d0a3d081725d62456b5", + "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", + "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", "dev": true, - "license": "MIT", + "peer": true, "peerDependencies": { - "@stylelint/postcss-css-in-js": "*", - "@stylelint/postcss-markdown": "*", - "postcss": ">=5.0.0", - "postcss-html": "*", - "postcss-js": "*", - "postcss-less": "*", - "postcss-safe-parser": "*", - "postcss-sass": "*", - "postcss-scss": "*", - "sugarss": "*" - }, - "peerDependenciesMeta": { - "@stylelint/postcss-css-in-js": { - "optional": true - }, - "@stylelint/postcss-markdown": { - "optional": true - }, - "postcss-html": { - "optional": true - }, - "postcss-js": { - "optional": true - }, - "postcss-less": { - "optional": true - }, - "postcss-safe-parser": { - "optional": true - }, - "postcss-sass": { - "optional": true - }, - "postcss-scss": { - "optional": true - }, - "sugarss": { - "optional": true - } + "postcss": ">=5.0.0" } }, "node_modules/postcss-value-parser": { @@ -6714,11 +6473,17 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, - "node_modules/postcss/node_modules/nanocolors": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.12.tgz", - "integrity": "sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug==", - "dev": true + "node_modules/postcss/node_modules/nanoid": { + "version": "3.1.29", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.29.tgz", + "integrity": "sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } }, "node_modules/prelude-ls": { "version": "1.2.1", @@ -7612,19 +7377,15 @@ }, "node_modules/stylelint": { "version": "13.13.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz", - "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==", + "resolved": "git+https://git@github.com/stylelint/stylelint.git#585d28a64358a6b7c72d1bed4aaf849caa3bf181", "dev": true, + "license": "MIT", "dependencies": { - "@stylelint/postcss-css-in-js": "^0.37.2", - "@stylelint/postcss-markdown": "^0.36.2", - "autoprefixer": "^9.8.6", "balanced-match": "^2.0.0", - "chalk": "^4.1.1", - "cosmiconfig": "^7.0.0", - "debug": "^4.3.1", + "cosmiconfig": "^7.0.1", + "debug": "^4.3.2", "execall": "^2.0.0", - "fast-glob": "^3.2.5", + "fast-glob": "^3.2.7", "fastest-levenshtein": "^1.0.12", "file-entry-cache": "^6.0.1", "get-stdin": "^8.0.0", @@ -7635,33 +7396,27 @@ "ignore": "^5.1.8", "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", - "known-css-properties": "^0.21.0", - "lodash": "^4.17.21", - "log-symbols": "^4.1.0", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.23.0", "mathml-tag-names": "^2.1.3", "meow": "^9.0.0", "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", "normalize-selector": "^0.2.0", - "postcss": "^7.0.35", - "postcss-html": "^0.36.0", - "postcss-less": "^3.1.4", + "picocolors": "^0.2.1", + "postcss": "^8.3.6", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^4.0.2", - "postcss-sass": "^0.4.4", - "postcss-scss": "^2.1.1", - "postcss-selector-parser": "^6.0.5", - "postcss-syntax": "^0.36.2", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.6", "postcss-value-parser": "^4.1.0", "resolve-from": "^5.0.0", - "slash": "^3.0.0", "specificity": "^0.4.1", "string-width": "^4.2.2", "strip-ansi": "^6.0.0", "style-search": "^0.1.0", - "sugarss": "^2.0.0", "svg-tags": "^1.0.0", - "table": "^6.6.0", + "table": "^6.7.2", "v8-compile-cache": "^2.3.0", "write-file-atomic": "^3.0.3" }, @@ -7669,7 +7424,7 @@ "stylelint": "bin/stylelint.js" }, "engines": { - "node": ">=10.13.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -7704,6 +7459,15 @@ "node": ">=4" } }, + "node_modules/stylelint-processor-glamorous/node_modules/camelcase-css": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-1.0.1.tgz", + "integrity": "sha1-FXxCOCZfXPlKHf/ehkRlUsvz9wU=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/stylelint-processor-glamorous/node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -7774,6 +7538,16 @@ "node": ">=4.0.0" } }, + "node_modules/stylelint-processor-glamorous/node_modules/postcss-js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-1.0.1.tgz", + "integrity": "sha512-smhUUMF5o5W1ZCQSyh5A3lNOXFLdNrxqyhWbLsGolZH2AgVmlyhxhYbIixfsdKE6r1vG5i7O40DPcvEvE1mvjw==", + "dev": true, + "dependencies": { + "camelcase-css": "^1.0.1", + "postcss": "^6.0.11" + } + }, "node_modules/stylelint-processor-glamorous/node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -7798,6 +7572,23 @@ "postcss": "^7.0.26" } }, + "node_modules/stylelint-processor-styled-components/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, "node_modules/stylelint/node_modules/balanced-match": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", @@ -7813,14 +7604,20 @@ "node": ">= 4" } }, - "node_modules/stylelint/node_modules/postcss-sass": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", - "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", + "node_modules/stylelint/node_modules/postcss-safe-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", "dev": true, - "dependencies": { - "gonzales-pe": "^4.3.0", - "postcss": "^7.0.21" + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" } }, "node_modules/stylelint/node_modules/resolve-from": { @@ -7832,15 +7629,6 @@ "node": ">=8" } }, - "node_modules/sugarss": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", - "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - } - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7879,17 +7667,17 @@ "dev": true }, "node_modules/table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", + "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", "dev": true, "dependencies": { "ajv": "^8.0.1", "lodash.clonedeep": "^4.5.0", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=10.0.0" @@ -9432,11 +9220,12 @@ } }, "@stylelint/postcss-css-in-js": { - "version": "git+https://git@github.com/adalinesimonian/postcss-css-in-js.git#9e6f8956852f95312a2c3cc5addb0a596395d7b7", + "version": "0.37.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", + "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", "dev": true, - "from": "@stylelint/postcss-css-in-js@*", "requires": { - "@babel/core": ">=7.15.5" + "@babel/core": ">=7.9.0" } }, "@stylelint/postcss-markdown": { @@ -9878,29 +9667,6 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "autoprefixer": { - "version": "9.8.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.7.tgz", - "integrity": "sha512-7Hg99B1eTH5+LgmUBUSmov1Z3bsggQJS7v3IMGo6wcScnbRuvtMc871J9J+4bSbIqa9LSX/zypFXJ8sXHpMJeQ==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "nanocolors": "^0.2.8", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - }, - "dependencies": { - "nanocolors": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.12.tgz", - "integrity": "sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug==", - "dev": true - } - } - }, "babel-jest": { "version": "27.2.1", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.2.1.tgz", @@ -10097,12 +9863,6 @@ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, - "camelcase-css": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-1.0.1.tgz", - "integrity": "sha1-FXxCOCZfXPlKHf/ehkRlUsvz9wU=", - "dev": true - }, "camelcase-keys": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", @@ -11846,6 +11606,12 @@ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, "is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", @@ -11898,12 +11664,6 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -12610,9 +12370,9 @@ "dev": true }, "known-css-properties": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz", - "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.23.0.tgz", + "integrity": "sha512-h9ivI88e1lFNmTT4HovBN33Ysn0OIJG7IPG2mkpx2uniQXFWqo35QdiX7w0TovlUFXfW8aPFblP5/q0jlOr2sA==", "dev": true }, "leven": { @@ -12705,16 +12465,6 @@ "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, "longest-streak": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", @@ -13030,12 +12780,6 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, "normalize-selector": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", @@ -13175,12 +12919,6 @@ "path-key": "^3.0.0" } }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, "nwsapi": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", @@ -13372,6 +13110,12 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -13443,119 +13187,33 @@ } }, "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", + "version": "8.3.9", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz", + "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==", "dev": true, "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" + "nanoid": "^3.1.28", + "picocolors": "^0.2.1", + "source-map-js": "^0.6.2" }, "dependencies": { - "nanocolors": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.12.tgz", - "integrity": "sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug==", + "nanoid": { + "version": "3.1.29", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.29.tgz", + "integrity": "sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg==", "dev": true } } }, "postcss-html": { - "version": "git+https://git@github.com/adalinesimonian/postcss-html.git#0ed560d33b7876f6d8d7f947d9145f618b32d31f", + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", "dev": true, - "from": "postcss-html@*", "requires": { "htmlparser2": "^3.10.0" } }, - "postcss-js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-1.0.1.tgz", - "integrity": "sha512-smhUUMF5o5W1ZCQSyh5A3lNOXFLdNrxqyhWbLsGolZH2AgVmlyhxhYbIixfsdKE6r1vG5i7O40DPcvEvE1mvjw==", - "dev": true, - "requires": { - "camelcase-css": "^1.0.1", - "postcss": "^6.0.11" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-less": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", - "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", - "dev": true, - "requires": { - "postcss": "^7.0.14" - } - }, "postcss-media-query-parser": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", @@ -13568,15 +13226,6 @@ "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", "dev": true }, - "postcss-safe-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", - "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", - "dev": true, - "requires": { - "postcss": "^7.0.26" - } - }, "postcss-sass": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.5.0.tgz", @@ -13585,35 +13234,14 @@ "requires": { "gonzales-pe": "^4.3.0", "postcss": "^8.2.14" - }, - "dependencies": { - "nanoid": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", - "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", - "dev": true - }, - "postcss": { - "version": "8.3.7", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.7.tgz", - "integrity": "sha512-9SaY7nnyQ63/WittqZYAvkkYPyKxchMKH71UDzeTmWuLSvxTRpeEeABZAzlCi55cuGcoFyoV/amX2BdsafQidQ==", - "dev": true, - "requires": { - "nanocolors": "^0.1.5", - "nanoid": "^3.1.25", - "source-map-js": "^0.6.2" - } - } } }, "postcss-scss": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", - "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.1.tgz", + "integrity": "sha512-7QghUu2l07OyVFT5LyvU/QJ1f2s8IL0mfToN69Yu533PgMZm2B1S6hYd4bao8tFq70r3P5MmAbKhVrZ4wOADxg==", "dev": true, - "requires": { - "postcss": "^7.0.6" - } + "requires": {} }, "postcss-selector-parser": { "version": "6.0.6", @@ -13626,9 +13254,11 @@ } }, "postcss-syntax": { - "version": "git+https://git@github.com/adalinesimonian/postcss-syntax.git#08c537d33b4d342ddd5b1d0a3d081725d62456b5", + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", + "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", "dev": true, - "from": "postcss-syntax@>=0.36.2", + "peer": true, "requires": {} }, "postcss-value-parser": { @@ -14308,20 +13938,15 @@ "dev": true }, "stylelint": { - "version": "13.13.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz", - "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==", + "version": "git+https://git@github.com/stylelint/stylelint.git#585d28a64358a6b7c72d1bed4aaf849caa3bf181", "dev": true, + "from": "stylelint@git+https://git@github.com/stylelint/stylelint#v14", "requires": { - "@stylelint/postcss-css-in-js": "^0.37.2", - "@stylelint/postcss-markdown": "^0.36.2", - "autoprefixer": "^9.8.6", "balanced-match": "^2.0.0", - "chalk": "^4.1.1", - "cosmiconfig": "^7.0.0", - "debug": "^4.3.1", + "cosmiconfig": "^7.0.1", + "debug": "^4.3.2", "execall": "^2.0.0", - "fast-glob": "^3.2.5", + "fast-glob": "^3.2.7", "fastest-levenshtein": "^1.0.12", "file-entry-cache": "^6.0.1", "get-stdin": "^8.0.0", @@ -14332,33 +13957,27 @@ "ignore": "^5.1.8", "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", - "known-css-properties": "^0.21.0", - "lodash": "^4.17.21", - "log-symbols": "^4.1.0", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.23.0", "mathml-tag-names": "^2.1.3", "meow": "^9.0.0", "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", "normalize-selector": "^0.2.0", - "postcss": "^7.0.35", - "postcss-html": "^0.36.0", - "postcss-less": "^3.1.4", + "picocolors": "^0.2.1", + "postcss": "^8.3.6", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^4.0.2", - "postcss-sass": "^0.4.4", - "postcss-scss": "^2.1.1", - "postcss-selector-parser": "^6.0.5", - "postcss-syntax": "^0.36.2", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.6", "postcss-value-parser": "^4.1.0", "resolve-from": "^5.0.0", - "slash": "^3.0.0", "specificity": "^0.4.1", "string-width": "^4.2.2", "strip-ansi": "^6.0.0", "style-search": "^0.1.0", - "sugarss": "^2.0.0", "svg-tags": "^1.0.0", - "table": "^6.6.0", + "table": "^6.7.2", "v8-compile-cache": "^2.3.0", "write-file-atomic": "^3.0.3" }, @@ -14375,15 +13994,12 @@ "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", "dev": true }, - "postcss-sass": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", - "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", + "postcss-safe-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", "dev": true, - "requires": { - "gonzales-pe": "^4.3.0", - "postcss": "^7.0.21" - } + "requires": {} }, "resolve-from": { "version": "5.0.0", @@ -14418,6 +14034,12 @@ "color-convert": "^1.9.0" } }, + "camelcase-css": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-1.0.1.tgz", + "integrity": "sha1-FXxCOCZfXPlKHf/ehkRlUsvz9wU=", + "dev": true + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -14473,6 +14095,16 @@ "supports-color": "^5.4.0" } }, + "postcss-js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-1.0.1.tgz", + "integrity": "sha512-smhUUMF5o5W1ZCQSyh5A3lNOXFLdNrxqyhWbLsGolZH2AgVmlyhxhYbIixfsdKE6r1vG5i7O40DPcvEvE1mvjw==", + "dev": true, + "requires": { + "camelcase-css": "^1.0.1", + "postcss": "^6.0.11" + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -14494,15 +14126,18 @@ "@babel/traverse": "^7.8.3", "micromatch": "^4.0.2", "postcss": "^7.0.26" - } - }, - "sugarss": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", - "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", - "dev": true, - "requires": { - "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } } }, "supports-color": { @@ -14537,17 +14172,17 @@ "dev": true }, "table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", + "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", "dev": true, "requires": { "ajv": "^8.0.1", "lodash.clonedeep": "^4.5.0", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" }, "dependencies": { "ajv": { diff --git a/package.json b/package.json index aafe32e9..0d8a278f 100644 --- a/package.json +++ b/package.json @@ -62,35 +62,11 @@ "default": "", "description": "Path to a JSON, YAML, or JS file that contains your configuration object. Use this option if you don't want stylelint to search for a configuration file." }, - "stylelint.configOverrides": { - "type": [ - "object", - "null" - ], - "default": null, - "description": "A partial stylelint config whose properties override the existing ones." - }, "stylelint.configBasedir": { "type": "string", "default": "", "description": "A path to the directory that relative paths defining \"extends\" and \"plugins\" are relative to." }, - "stylelint.syntax": { - "type": "string", - "default": "", - "enum": [ - "css", - "css-in-js", - "html", - "less", - "markdown", - "sass", - "scss", - "sugarss", - "" - ], - "description": "Specify a syntax. Only use this option if you want to force a specific syntax." - }, "stylelint.customSyntax": { "type": "string", "default": "", @@ -135,26 +111,7 @@ }, "default": [ "css", - "html", - "javascript", - "javascriptreact", - "less", - "markdown", - "postcss", - "sass", - "scss", - "source.css.styled", - "source.markdown.math", - "styled-css", - "sugarss", - "svelte", - "typescript", - "typescriptreact", - "vue", - "vue-html", - "vue-postcss", - "xml", - "xsl" + "postcss" ], "description": "An array of language ids which should be validated by stylelint." }, @@ -166,9 +123,7 @@ }, "default": [ "css", - "less", - "postcss", - "scss" + "postcss" ], "description": "An array of language ids which snippets are provided by stylelint." } @@ -208,6 +163,8 @@ "vscode-uri": "^3.0.2" }, "devDependencies": { + "@stylelint/postcss-css-in-js": "^0.37.2", + "@stylelint/postcss-markdown": "^0.36.2", "@stylelint/prettier-config": "^2.0.0", "@types/fs-extra": "^9.0.13", "@types/jest": "^27.0.1", @@ -224,9 +181,12 @@ "jest-runner-vscode": "^2.0.0", "npm-run-all": "^4.1.5", "p-wait-for": "^3.1.0", + "postcss": "^8.3.9", + "postcss-html": "^0.36.0", "postcss-sass": "^0.5.0", + "postcss-scss": "^4.0.1", "prettier": "^2.3.0", - "stylelint": "^13.13.1", + "stylelint": "git+https://git@github.com/stylelint/stylelint#v14", "stylelint-processor-glamorous": "^0.3.0", "stylelint-processor-styled-components": "^1.10.0", "typescript": "^4.4.3", diff --git a/scripts/stylelint-types.js b/scripts/stylelint-types.js index a8d2302a..387dc2e3 100644 --- a/scripts/stylelint-types.js +++ b/scripts/stylelint-types.js @@ -47,12 +47,32 @@ const checkTypesVersion = async () => { } }; +/** + * Gets the GitHub tag/commit for the given version of Stylelint. + * @param {string} lockfileVersion The version of stylelint from the package-lock.json file. + * @returns {string} + */ +const getTypesTagOrCommitHash = (lockfileVersion) => { + if (lockfileVersion.startsWith('git+')) { + const match = lockfileVersion.match(/#(.+)$/); + + if (!match || !match[1]) { + throw new Error(`Could not find commit hash for ${lockfileVersion}`); + } + + return match[1]; + } + + return lockfileVersion; +}; + /** * Downloads the stylelint types file for the currently installed version of Stylelint. * @returns {Promise} */ const downloadTypes = async () => { - const typesURL = `https://raw.githubusercontent.com/stylelint/stylelint/${version}/types/stylelint/index.d.ts`; + const repoVersion = getTypesTagOrCommitHash(version); + const typesURL = `https://raw.githubusercontent.com/stylelint/stylelint/${repoVersion}/types/stylelint/index.d.ts`; await fs.ensureDir(typesDir); diff --git a/src/server.js b/src/server.js index 12ebf036..a34e6b55 100644 --- a/src/server.js +++ b/src/server.js @@ -51,14 +51,10 @@ const StylelintSourceFixAll = `${CodeActionKind.SourceFixAll}.stylelint`; let config; /** @type {string} */ let configFile; -/** @type {StylelintConfiguration} */ -let configOverrides; /** @type {string} */ let configBasedir; /** @type {PackageManager} */ let packageManager; -/** @type { "css-in-js" | "html" | "less" | "markdown" | "sass" | "scss" | "sugarss" | undefined } */ -let syntax; /** @type {string} */ let customSyntax; /** @type {boolean} */ @@ -110,10 +106,6 @@ async function buildStylelintOptions(document, baseOptions = {}) { : configFile; } - if (configOverrides) { - options.configOverrides = configOverrides; - } - if (ignoreDisables) { options.ignoreDisables = ignoreDisables; } @@ -126,10 +118,6 @@ async function buildStylelintOptions(document, baseOptions = {}) { options.reportInvalidScopeDisables = reportInvalidScopeDisables; } - if (syntax) { - options.syntax = syntax; - } - if (customSyntax) { options.customSyntax = workspaceFolder ? customSyntax.replace(/\$\{workspaceFolder\}/gu, workspaceFolder) @@ -375,10 +363,8 @@ connection.onDidChangeConfiguration(({ settings }) => { const oldValidateLanguages = validateLanguages || []; config = settings.stylelint.config; - configOverrides = settings.stylelint.configOverrides; configFile = settings.stylelint.configFile; configBasedir = settings.stylelint.configBasedir; - syntax = settings.stylelint.syntax || undefined; customSyntax = settings.stylelint.customSyntax; ignoreDisables = settings.stylelint.ignoreDisables; reportNeedlessDisables = settings.stylelint.reportNeedlessDisables; diff --git a/src/stylelint-vscode.js b/src/stylelint-vscode.js index d61ef5f4..e4230abb 100644 --- a/src/stylelint-vscode.js +++ b/src/stylelint-vscode.js @@ -23,7 +23,6 @@ const stylelintWarningToVscodeDiagnostic = require('./warnings-to-diagnostics'); * @property {({ diagnostic: Diagnostic, range: DisableReportRange })[]} [invalidScopeDisables] * @typedef { import('stylelint').StylelintStandaloneOptions } BaseStylelintLinterOptions * @typedef { Partial } StylelintLinterOptions - * @typedef { "css-in-js" | "html" | "less" | "markdown" | "sass" | "scss" | "sugarss" } SyntaxType * @typedef { {unusedRule:string,start:number,end:?number} } DisableReportRange * @typedef { { source?: string, ranges: DisableReportRange[] } } StylelintDisableReportEntry * @typedef { import('./warnings-to-diagnostics').RuleDocUrlProvider } RuleDocUrlProvider @@ -40,41 +39,6 @@ class InvalidOptionError extends Error { } } -// https://github.com/stylelint/stylelint/blob/12.0.1/lib/getPostcssResult.js#L82-L88 -/** @type {Set } */ -const SUPPORTED_SYNTAXES = new Set([ - 'css-in-js', - 'html', - 'less', - 'markdown', - 'sass', - 'scss', - 'sugarss', -]); - -/** @type {Map } */ -const LANGUAGE_EXTENSION_EXCEPTION_PAIRS = new Map([ - ['javascript', 'css-in-js'], - ['javascriptreact', 'css-in-js'], - ['source.css.styled', 'css-in-js'], - ['source.markdown.math', 'markdown'], - ['styled-css', 'css-in-js'], - ['svelte', 'html'], - ['typescript', 'css-in-js'], - ['typescriptreact', 'css-in-js'], - ['vue-html', 'html'], - ['xml', 'html'], - ['xsl', 'html'], -]); - -/** - * @param {string} lang - * @returns {lang is SyntaxType} - */ -function isSupportedSyntax(lang) { - return SUPPORTED_SYNTAXES.has(/** @type {SyntaxType} */ (lang)); -} - /** * @param {import('stylelint').StylelintStandaloneReturnValue} resultContainer * @param {TextDocument} textDocument @@ -186,22 +150,8 @@ module.exports = async function stylelintVSCode(textDocument, options = {}, serv if (codeFilename) { priorOptions.codeFilename = codeFilename; - } else { - if (!has(options, 'syntax')) { - if (isSupportedSyntax(textDocument.languageId)) { - priorOptions.syntax = textDocument.languageId; - } else { - const syntax = LANGUAGE_EXTENSION_EXCEPTION_PAIRS.get(textDocument.languageId); - - if (syntax) { - priorOptions.syntax = syntax; - } - } - } - - if (!at(options, 'config.rules')[0]) { - priorOptions.config = { rules: {} }; - } + } else if (!at(options, 'config.rules')[0]) { + priorOptions.config = { rules: {} }; } const stylelint = await resolveStylelint({ ...serverOptions, textDocument }); diff --git a/test/lib/stylelint-vscode/__snapshots__/test.js.snap b/test/lib/stylelint-vscode/__snapshots__/test.js.snap index d585ef7b..169e7059 100644 --- a/test/lib/stylelint-vscode/__snapshots__/test.js.snap +++ b/test/lib/stylelint-vscode/__snapshots__/test.js.snap @@ -169,7 +169,7 @@ Array [ ] `; -exports[`stylelintVSCode() should support CSS-in-JS 1`] = ` +exports[`stylelintVSCode() should support CSS-in-JS with customSyntax 1`] = ` Array [ Object { "code": "font-weight-notation", diff --git a/test/lib/stylelint-vscode/no-unknown.config.js b/test/lib/stylelint-vscode/no-unknown.config.js new file mode 100644 index 00000000..524de624 --- /dev/null +++ b/test/lib/stylelint-vscode/no-unknown.config.js @@ -0,0 +1,11 @@ +'use strict'; + +const baseConfig = require('./stylelint.config'); + +module.exports = { + ...baseConfig, + rules: { + ...baseConfig.rules, + 'property-no-unknown': [true, { ignoreProperties: 'what' }], + }, +}; diff --git a/test/lib/stylelint-vscode/test.js b/test/lib/stylelint-vscode/test.js index 59febad1..7f028b6c 100644 --- a/test/lib/stylelint-vscode/test.js +++ b/test/lib/stylelint-vscode/test.js @@ -63,6 +63,7 @@ describe('stylelintVSCode()', () => { ), { config: { + customSyntax: '@stylelint/postcss-markdown', rules: { indentation: ['tab'], }, @@ -76,7 +77,7 @@ describe('stylelintVSCode()', () => { test('should be resolved even if no configs are defined', async () => { expect.assertions(1); const result = await stylelintVSCode(createDocument(null, 'plaintext', ''), { - syntax: 'html', + customSyntax: 'postcss-html', }); expect(result.diagnostics).toEqual([]); @@ -94,22 +95,7 @@ describe('stylelintVSCode()', () => { expect(result.diagnostics).toEqual([]); }); - test('should support non-standard CSS syntax with `syntax` option', async () => { - expect.assertions(1); - const result = await stylelintVSCode( - createDocument('single-line-comment.scss', 'scss', '//Hi'), - { - syntax: 'scss', - config: { - rules: {}, - }, - }, - ); - - expect(result.diagnostics).toEqual([]); - }); - - test('should support CSS-in-JS', async () => { + test('should support CSS-in-JS with customSyntax', async () => { expect.assertions(1); const result = await stylelintVSCode( createDocument( @@ -123,7 +109,10 @@ font: normal \`;`, ), { - config: { rules: { 'font-weight-notation': ['numeric'] } }, + config: { + customSyntax: '@stylelint/postcss-css-in-js', + rules: { 'font-weight-notation': ['numeric'] }, + }, }, ); @@ -179,7 +168,9 @@ a { color: #000 } test('should check CSS syntax even if no rule is provided', async () => { expect.assertions(1); - const result = await stylelintVSCode(createDocument('at.xsl', 'xsl', '')); + const result = await stylelintVSCode(createDocument('at.xsl', 'xsl', ''), { + customSyntax: 'postcss-html', + }); expect(result.diagnostics).toMatchSnapshot(); }); @@ -245,18 +236,7 @@ const what: string = "is this"; }} />; `, ), - { - configOverrides: { - rules: { - 'property-no-unknown': [ - true, - { - ignoreProperties: 'what', - }, - ], - }, - }, - }, + { configFile: join(__dirname, 'no-unknown.config.js') }, ); expect(result.diagnostics).toMatchSnapshot(); @@ -291,6 +271,7 @@ describe('stylelintVSCode() with autofix', () => { test('JS file autofix should not change the content if no rules are defined', async () => { expect.assertions(1); const result = await stylelintVSCode(createDocument('no-rules.js', 'javascript', '"a"'), { + customSyntax: '@stylelint/postcss-css-in-js', config: {}, fix: true, }); diff --git a/test/workspace/lint/.vscode/settings.json b/test/workspace/lint/.vscode/settings.json new file mode 100644 index 00000000..b2511945 --- /dev/null +++ b/test/workspace/lint/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "stylelint.validate": ["css", "markdown", "scss"] +} diff --git a/test/workspace/lint/stylelint.config.js b/test/workspace/lint/stylelint.config.js index 4939bf57..e765b42e 100644 --- a/test/workspace/lint/stylelint.config.js +++ b/test/workspace/lint/stylelint.config.js @@ -1,7 +1,23 @@ 'use strict'; -module.exports = { +/** @typedef {import('stylelint').StylelintConfig} StylelintConfig */ + +// TODO: Workaround for bad typings upstream +/** @type {StylelintConfig & { overrides: StylelintConfig }} */ +const config = { rules: { indentation: [4], }, + overrides: [ + { + files: ['**/*.md'], + customSyntax: '@stylelint/postcss-markdown', + }, + { + files: ['**/*.scss'], + customSyntax: 'postcss-scss', + }, + ], }; + +module.exports = config; diff --git a/test/workspace/rule-doc/test-plugin.js b/test/workspace/rule-doc/test-plugin.js index be8eee6b..829fefd1 100644 --- a/test/workspace/rule-doc/test-plugin.js +++ b/test/workspace/rule-doc/test-plugin.js @@ -13,27 +13,35 @@ const messages = stylelint.utils.ruleMessages(ruleName, { * @typedef {import('stylelint').PostcssResult} PostCSSResult */ -module.exports = stylelint.createPlugin(ruleName, (/** @type {any} */ primaryOption) => { - return function ( - /** @type {PostCSSRoot} */ postcssRoot, - /** @type {PostCSSResult} */ postcssResult, - ) { - const validOptions = stylelint.utils.validateOptions(postcssResult, ruleName, { - actual: primaryOption, - }); +module.exports = stylelint.createPlugin( + ruleName, + // TODO: Workaround for bad typings upstream + /** @type {import('stylelint').StylelintRule} */ ( + /** @type {unknown} */ ( + (/** @type {any} */ primaryOption) => { + return ( + /** @type {PostCSSRoot} */ postcssRoot, + /** @type {PostCSSResult} */ postcssResult, + ) => { + const validOptions = stylelint.utils.validateOptions(postcssResult, ruleName, { + actual: primaryOption, + }); - if (!validOptions) { - return; - } + if (!validOptions) { + return; + } - stylelint.utils.report({ - ruleName, - result: postcssResult, - message: messages.expected, - node: postcssRoot, - index: 5, - }); - }; -}); + stylelint.utils.report({ + ruleName, + result: postcssResult, + message: messages.expected, + node: postcssRoot, + index: 5, + }); + }; + } + ) + ), +); module.exports.messages = messages; diff --git a/test/workspace/syntax/.vscode/settings.json b/test/workspace/syntax/.vscode/settings.json deleted file mode 100644 index 2beef544..00000000 --- a/test/workspace/syntax/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "stylelint.syntax": "sass" -} diff --git a/test/workspace/syntax/__snapshots__/index.js.snap b/test/workspace/syntax/__snapshots__/index.js.snap deleted file mode 100644 index 82f5bd5e..00000000 --- a/test/workspace/syntax/__snapshots__/index.js.snap +++ /dev/null @@ -1,25 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`vscode-stylelint with "stylelint.syntax" should work even if "stylelint.syntax" is defined 1`] = ` -Array [ - Object { - "code": "indentation", - "codeDescription": Object { - "href": "https://stylelint.io/user-guide/rules/indentation", - }, - "message": "Expected indentation of 4 spaces (indentation)", - "range": Object { - "end": Object { - "character": 2, - "line": 2, - }, - "start": Object { - "character": 2, - "line": 2, - }, - }, - "severity": 1, - "source": "stylelint", - }, -] -`; diff --git a/test/workspace/syntax/index.js b/test/workspace/syntax/index.js deleted file mode 100644 index b8f7c94a..00000000 --- a/test/workspace/syntax/index.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -const path = require('path'); - -const pWaitFor = require('p-wait-for'); -const { workspace, window } = require('vscode'); - -const { normalizeDiagnostic, getStylelintDiagnostics } = require('../utils'); - -describe('vscode-stylelint with "stylelint.syntax"', () => { - it('should work even if "stylelint.syntax" is defined', async () => { - // Open the './test.css' file. - const cssDocument = await workspace.openTextDocument(path.resolve(__dirname, 'test.css')); - - await window.showTextDocument(cssDocument); - - // Wait for diagnostics result. - await pWaitFor(() => getStylelintDiagnostics(cssDocument.uri).length > 0, { timeout: 5000 }); - - // Check the result. - const diagnostics = getStylelintDiagnostics(cssDocument.uri); - - expect(diagnostics.map(normalizeDiagnostic)).toMatchSnapshot(); - }); -}); diff --git a/test/workspace/syntax/stylelint.config.js b/test/workspace/syntax/stylelint.config.js deleted file mode 100644 index 4939bf57..00000000 --- a/test/workspace/syntax/stylelint.config.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -module.exports = { - rules: { - indentation: [4], - }, -}; diff --git a/test/workspace/syntax/test.css b/test/workspace/syntax/test.css deleted file mode 100644 index 197636d6..00000000 --- a/test/workspace/syntax/test.css +++ /dev/null @@ -1,3 +0,0 @@ -/* prettier-ignore */ -a - color: #fff; diff --git a/types/stylelint/index.d.ts b/types/stylelint/index.d.ts index 41660f75..6522858f 100644 --- a/types/stylelint/index.d.ts +++ b/types/stylelint/index.d.ts @@ -1,5 +1,7 @@ declare module 'stylelint' { - import { Comment, Result, ResultMessage, Root, Syntax, WarningOptions, Warning } from 'postcss'; + import { Comment, Result, Message, Root, Syntax, WarningOptions, Warning } from 'postcss'; + import { GlobbyOptions } from 'globby'; + import { cosmiconfig } from 'cosmiconfig'; export type Severity = 'warning' | 'error'; @@ -17,6 +19,17 @@ declare module 'stylelint' { export type StylelintConfigRules = { [ruleName: string]: StylelintConfigRuleSettings; }; + export type StylelintConfigOverride = Pick< + StylelintConfig, + | 'plugins' + | 'pluginFunctions' + | 'processors' + | 'processorFunctions' + | 'rules' + | 'defaultSeverity' + > & { + files: string | string[]; + }; export type DisableOptions = { except?: Array; @@ -43,6 +56,8 @@ declare module 'stylelint' { reportNeedlessDisables?: DisableSettings; reportInvalidScopeDisables?: DisableSettings; reportDescriptionlessDisables?: DisableSettings; + overrides?: StylelintConfigOverride[]; + customSyntax?: CustomSyntax; }; // A meta-type that returns a union over all properties of `T` whose values @@ -52,7 +67,12 @@ declare module 'stylelint' { }[keyof T]; export type DisablePropertyName = PropertyNamesOfType; - export type CosmiconfigResult = { config: StylelintConfig; filepath: string }; + // This type has the same properties as `CosmiconfigResult` from `cosmiconfig`. + export type StylelintCosmiconfigResult = { + config: StylelintConfig; + filepath: string; + isEmpty?: boolean; + } | null; export type DisabledRange = { comment: Comment; @@ -80,6 +100,7 @@ declare module 'stylelint' { stylelintError?: boolean; disableWritingFix?: boolean; config?: StylelintConfig; + ruleDisableFix?: boolean; }; type EmptyResult = { @@ -92,7 +113,7 @@ declare module 'stylelint' { }; }; }; - messages: ResultMessage[]; + messages: Message[]; opts: undefined; }; @@ -127,7 +148,6 @@ declare module 'stylelint' { config?: StylelintConfig; configFile?: string; configBasedir?: string; - configOverrides?: StylelintConfig; ignoreDisables?: boolean; ignorePath?: string; reportInvalidScopeDisables?: boolean; @@ -138,13 +158,22 @@ declare module 'stylelint' { fix?: boolean; }; - export type StylelintPluginContext = { fix?: boolean; newline?: string }; + export type StylelintPluginContext = { + fix?: boolean | undefined; + newline?: string | undefined; + }; + + export type StylelintRuleMessages = Record string)>; - export type StylelintRule = ( - primaryOption: any, - secondaryOptions: object, + export type StylelintRule

= (( + primaryOption: P, + secondaryOptions: Record, context: StylelintPluginContext, - ) => (root: Root, result: PostcssResult) => Promise | void; + ) => (root: Root, result: PostcssResult) => Promise | void) & { + ruleName: string; + messages: StylelintRuleMessages; + primaryOptionArray?: boolean; + }; export type GetPostcssOptions = { code?: string; @@ -159,31 +188,27 @@ declare module 'stylelint' { export type StylelintInternalApi = { _options: StylelintStandaloneOptions; - _extendExplorer: { - search: (s: string) => Promise; - load: (s: string) => Promise; - }; - _fullExplorer: { - search: (s: string) => Promise; - load: (s: string) => Promise; - }; - _configCache: Map; - _specifiedConfigCache: Map; + _extendExplorer: ReturnType; + _specifiedConfigCache: Map>; _postcssResultCache: Map; _getPostcssResult: (options?: GetPostcssOptions) => Promise; _lintSource: (options: GetLintSourceOptions) => Promise; - _createStylelintResult: Function; - _createEmptyPostcssResult?: Function; - - getConfigForFile: (s?: string) => Promise<{ config: StylelintConfig; filepath: string } | null>; + _createStylelintResult: ( + postcssResult: PostcssResult, + filePath?: string, + ) => Promise; + + getConfigForFile: ( + searchPath?: string, + filePath?: string, + ) => Promise; isPathIgnored: (s?: string) => Promise; - lintSource: Function; }; export type StylelintStandaloneOptions = { files?: string | Array; - globbyOptions?: Object; + globbyOptions?: GlobbyOptions; cache?: boolean; cacheLocation?: string; code?: string; @@ -191,8 +216,6 @@ declare module 'stylelint' { config?: StylelintConfig; configFile?: string; configBasedir?: string; - configOverrides?: StylelintConfig; - printConfig?: string; ignoreDisables?: boolean; ignorePath?: string; ignorePattern?: string[]; @@ -200,12 +223,14 @@ declare module 'stylelint' { reportNeedlessDisables?: boolean; reportInvalidScopeDisables?: boolean; maxWarnings?: number; + /** @deprecated Use `customSyntax` instead. */ syntax?: string; customSyntax?: CustomSyntax; formatter?: FormatterIdentifier; disableDefaultIgnores?: boolean; fix?: boolean; allowEmptyInput?: boolean; + quiet?: boolean; }; export type StylelintCssSyntaxError = { @@ -253,11 +278,6 @@ declare module 'stylelint' { rule: string; start: number; end?: number; - - // This is for backwards-compatibility with formatters that were written - // when this name was used instead of `rule`. It should be avoided for new - // formatters. - unusedRule: string; }; export type RangeType = DisabledRange & { used?: boolean }; @@ -299,4 +319,8 @@ declare module 'stylelint' { }; export type StylelintDisableOptionsReport = Array; + + export type PostcssPluginOptions = + | Omit + | StylelintConfig; } diff --git a/types/stylelint/version b/types/stylelint/version index 4a606018..0ea783da 100644 --- a/types/stylelint/version +++ b/types/stylelint/version @@ -1 +1 @@ -13.13.1 +git+https://git@github.com/stylelint/stylelint.git#585d28a64358a6b7c72d1bed4aaf849caa3bf181 From 8162c184b8900fcf92aa723f68cc55cce3560b31 Mon Sep 17 00:00:00 2001 From: Adaline Valentina Simonian Date: Thu, 7 Oct 2021 18:20:13 -0700 Subject: [PATCH 2/6] fix: fix links to sections in readme --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 17362c1f..48450ae3 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ The official [Visual Studio Code](https://code.visualstudio.com/) extension to l ![screenshot](media/screenshot.png) -> **Notice:** 1.x of this extension has breaking changes from 0.x versions, including, but not limited to, changes to which documents are linted by default. See the [migration section](#Migrating-from-vscode-stylelint-0.x/Stylelint-13.x) for more information. +> **Notice:** 1.x of this extension has breaking changes from 0.x versions, including, but not limited to, changes to which documents are linted by default. See the [migration section](#migrating-from-vscode-stylelint-0xstylelint-13x) for more information. The extension first looks for a copy of stylelint installed in the open workspace folder, then for a globally installed version if it can't find one. @@ -61,7 +61,7 @@ The 0.x versions of this extension, which used Stylelint 13.x and prior, support In current versions of the extension, the extension only supports validating CSS and PostCSS out of the box and requires additional configuration to validate other languages. You will need to: - Install the PostCSS syntax for the language you want to validate into your workspace (e.g. [postcss-html](https://www.npmjs.com/package/postcss-html) or [postcss-scss](https://www.npmjs.com/package/postcss-scss)). -- Configure Stylelint to use the syntax by providing it with the module name in the [`customSyntax` option](https://stylelint.io/user-guide/usage/options/#customsyntax) using overrides (or use the corresponding option [in this extension's settings](#stylelint.customSyntax)). +- Configure Stylelint to use the syntax by providing it with the module name in the [`customSyntax` option](https://stylelint.io/user-guide/usage/options/#customsyntax) using overrides (or use the corresponding option [in this extension's settings](#stylelintcustomsyntax)). Example Stylelint config: @@ -76,7 +76,7 @@ In current versions of the extension, the extension only supports validating CSS }; ``` -- [Add the language identifiers](#stylelint.validate) for the documents you want to validate to the extension's workspace or user settings. +- [Add the language identifiers](#stylelintvalidate) for the documents you want to validate to the extension's workspace or user settings. Example VS Code config: From f593a9df44078f4ba8e740b663f80c235b5c09e8 Mon Sep 17 00:00:00 2001 From: Adaline Valentina Simonian Date: Thu, 7 Oct 2021 21:50:11 -0700 Subject: [PATCH 3/6] docs: various improvements to readme --- README.md | 155 +++++++++++++++++++++++++++++++++++------------------- 1 file changed, 100 insertions(+), 55 deletions(-) diff --git a/README.md b/README.md index 48450ae3..c5d13d0b 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,32 @@ # vscode-stylelint -![Testing](https://github.com/stylelint/vscode-stylelint/workflows/Testing/badge.svg) -![Linting](https://github.com/stylelint/vscode-stylelint/workflows/Linting/badge.svg) +[![Testing](https://github.com/stylelint/vscode-stylelint/workflows/Testing/badge.svg)](https://github.com/stylelint/vscode-stylelint/actions/workflows/testing.yml) +[![Linting](https://github.com/stylelint/vscode-stylelint/workflows/Linting/badge.svg)](https://github.com/stylelint/vscode-stylelint/actions/workflows/linting.yml) -The official [Visual Studio Code](https://code.visualstudio.com/) extension to lint [CSS](https://www.w3.org/Style/CSS/)/[SCSS](https://sass-lang.com/documentation/syntax)/[Less](http://lesscss.org/) with [stylelint](https://stylelint.io/) +The official [Visual Studio Code] extension to lint [CSS]/[SCSS]/[Less] with [Stylelint] -![screenshot](media/screenshot.png) +![Screenshot of Stylelint errors displayed in VS Code](media/screenshot.png) > **Notice:** 1.x of this extension has breaking changes from 0.x versions, including, but not limited to, changes to which documents are linted by default. See the [migration section](#migrating-from-vscode-stylelint-0xstylelint-13x) for more information. -The extension first looks for a copy of stylelint installed in the open workspace folder, then for a globally installed version if it can't find one. - ## Installation -1. Execute the `Extensions: Install Extensions` command from the [Command Palette](https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette). +1. Execute the `Extensions: Install Extensions` command from the [Command Palette]. 2. Type `@id:stylelint.vscode-stylelint` into the search form and install the topmost one. -Read the [extension installation guide](https://code.visualstudio.com/docs/editor/extension-gallery) for more details. +The extension first looks for a copy of Stylelint installed in the open workspace folder, then for a globally installed version if it can't find one. If neither can be found, it will not lint any documents. + +Read the [extension installation guide] for more details. + +### Disable VS Code's Built-In Linters (optional) + +To prevent both [VS Code's built-in linters] and Stylelint from reporting the same errors, you can disable the built-in linters in either the [user or workspace settings][vscode settings] for the languages you intend to use in your workspace. + +Screenshot of duplicate error messages -### Recommended Setup (optional) +_An example of duplicate error messages emitted by both the built-in linter and vscode-stylelint._ -To prevent both [VS Code's built-in linters](https://code.visualstudio.com/docs/languages/css#_syntax-verification-linting) `[css]` `[less]` `[scss]` and this extension `[stylelint]` from reporting the same errors, disable the built-in linters in either the [user or workspace settings](https://code.visualstudio.com/docs/getstarted/settings): +For example, the following entries in `.vscode/settings.json` would disable the built-in CSS, Less, and SCSS linters: ```json "css.validate": false, @@ -28,67 +34,65 @@ To prevent both [VS Code's built-in linters](https://code.visualstudio.com/docs/ "scss.validate": false ``` -Screenshot of duplicate error messages - -_An example of duplicate error messages from both the built-in linter and vscode-stylelint._ - ## Usage -Once a user follows [the stylelint startup guide](https://stylelint.io/user-guide/get-started) by creating a [configuration](https://stylelint.io/user-guide/configuration) file or by editing [`stylelint.*` VSCode settings](#extension-settings), stylelint automatically validates CSS and [PostCSS](https://marketplace.visualstudio.com/items?itemName=mhmadhamster.postcss-language) with [language identifiers](https://code.visualstudio.com/docs/languages/overview#_language-id) `css` and `postcss`, respectively. +> See the [Stylelint getting started guide] for more information. + +Once you create a [Stylelint configuration file] or configure [the Stylelint extension's settings](#extension-settings), Stylelint will automatically validate CSS and [PostCSS][postcss extension] documents (those with [language identifiers] `css` and `postcss`, respectively). Screenshot of UI to select a language identifier -_The UI to select a language identifier._ +_You can see or change the current document's language in the bottom-right corner of the editor window._ ## Migrating from vscode-stylelint 0.x/Stylelint 13.x -### Stylelint 13.x and Prior is No Longer Supported +### ⚠️ Stylelint 13.x and Prior is No Longer Supported vscode-stylelint 1.x expects to use Stylelint 14 at minimum. Usage with prior versions of Stylelint is not supported nor recommended. If you want to continue using this extension, upgrade your copy of Stylelint to version 14 or later. -The `syntax` and `configOverrides` options have been removed from Stylelint 14 and this extension. See the next section for information on how to use different syntaxes. +The `syntax` and `configOverrides` options have been removed from Stylelint 14 and this extension. See the [following section](#only-css-and-postcss-are-validated-by-default) for information on how to use different syntaxes. -### Stylelint is No Longer Bundled +### ⚠️ Stylelint is No Longer Bundled -Unlike in 0.x, 1.x no longer provides a copy of Stylelint bundled with the extension. Bundling Stylelint brought up many unwanted side effects and significantly increased the extension's size. +Unlike 0.x, 1.x no longer provides a copy of Stylelint bundled with the extension. Bundling Stylelint brought up many unwanted side effects and significantly increased the extension's size. Starting with 1.x, vscode-stylelint will depend on having a copy of Stylelint installed in the open workspace (recommended) or globally (not recommended). If the extension doesn't seem to be linting any documents, make sure you have Stylelint installed. -### Only CSS and PostCSS are Validated by Default +### ⚠️ Only CSS and PostCSS are Validated by Default The 0.x versions of this extension, which used Stylelint 13.x and prior, supported validating many different languages out of the box without any additional configuration. However, this added a lot of complexity and resulted in many cases of unwanted or unexpected behaviour. In current versions of the extension, the extension only supports validating CSS and PostCSS out of the box and requires additional configuration to validate other languages. You will need to: -- Install the PostCSS syntax for the language you want to validate into your workspace (e.g. [postcss-html](https://www.npmjs.com/package/postcss-html) or [postcss-scss](https://www.npmjs.com/package/postcss-scss)). -- Configure Stylelint to use the syntax by providing it with the module name in the [`customSyntax` option](https://stylelint.io/user-guide/usage/options/#customsyntax) using overrides (or use the corresponding option [in this extension's settings](#stylelintcustomsyntax)). +1. Install the PostCSS syntax for the language you want to validate into your workspace (e.g. [postcss-html] or [postcss-scss]). +1. Configure Stylelint to use the syntax by providing the module name in the [`customSyntax`] option using overrides (or use the [corresponding option](#stylelintcustomsyntax) in this extension's settings). - Example Stylelint config: + Example Stylelint config: - ```js - module.exports = { - overrides: [ - { - files: ["**/*.scss"], - customSyntax: "postcss-scss" - } - ] - }; - ``` + ```js + module.exports = { + overrides: [ + { + files: ["**/*.scss"], + customSyntax: "postcss-scss" + } + ] + }; + ``` -- [Add the language identifiers](#stylelintvalidate) for the documents you want to validate to the extension's workspace or user settings. +1. Add the [language identifiers] for the documents you want to validate to the extension's workspace or user settings using the [`stylelint.validate`](#stylelintvalidate) option. - Example VS Code config: + Example VS Code config: - ```json - { - "stylelint.validate": ["css", "scss"] - } - ``` + ```json + { + "stylelint.validate": ["css", "scss"] + } + ``` ## Extension Settings -Though relying on a [stylelint configuration file](https://stylelint.io/user-guide/configure) in your project is highly recommended, you can instead use the following extension [settings](https://code.visualstudio.com/docs/getstarted/settings): +Though relying on a [Stylelint configuration file] in your project is highly recommended, you can instead use the following [extension settings][vscode settings]: ### `stylelint.enable` @@ -102,28 +106,28 @@ Controls whether this extension is enabled or not. > Type: `Object` > Default: `null` -Sets the stylelint [`config`](https://stylelint.io/user-guide/usage/node-api#config) option. Note that when this option is enabled, stylelint doesn't load configuration files. +Sets the Stylelint [`config`] option. Note that when this option is enabled, Stylelint doesn't load configuration files. ### `stylelint.configFile` > Type: `string` > Default: `""` -Sets the stylelint [`configFile`](https://stylelint.io/user-guide/usage/options#configfile) option. Path to a JSON, YAML, or JS file that contains your configuration object. Use this option if you don't want stylelint to search for a configuration file. +Sets the Stylelint [`configFile`] option. Path to a JSON, YAML, or JS file that contains your configuration object. Use this option if you don't want Stylelint to search for a configuration file. ### `stylelint.configBasedir` > Type: `string` > Default: `""` -Sets the stylelint [`configBasedir`](https://stylelint.io/user-guide/usage/options#configbasedir) option. The path to the directory to which relative paths defining "extends" and "plugins" are relative. Only necessary if these values are relative paths. +Sets the Stylelint [`configBasedir`] option. The path to the directory to which relative paths defining "extends" and "plugins" are relative. Only necessary if these values are relative paths. ### `stylelint.customSyntax` > Type: `string` > Default: `""` -Sets the stylelint [`customSyntax`](https://stylelint.io/user-guide/usage/options#customsyntax) option. An absolute path to a custom [PostCSS-compatible](https://github.com/postcss/postcss#syntaxes) syntax module. +Sets the Stylelint [`customSyntax`] option, which points to a [PostCSS syntax] module. Must be either the package name or an absolute path to the module. e.g. @@ -144,21 +148,21 @@ e.g. > Type: `boolean` > Default: `false` -Sets the stylelint [`ignoreDisables`](https://stylelint.io/user-guide/usage/options#ignoredisables) option. If `true`, stylelint ignores `styleline-disable` (e.g. `/* stylelint-disable block-no-empty */`) comments. +Sets the Stylelint [`ignoreDisables`] option. If `true`, Stylelint ignores `styleline-disable` (e.g. `/* stylelint-disable block-no-empty */`) comments. ### `stylelint.reportNeedlessDisables` > Type: `boolean` > Default: `false` -Sets the stylelint [`reportNeedlessDisables`](https://stylelint.io/user-guide/usage/options#reportneedlessdisables) option. If `true`, stylelint reports errors for `stylelint-disable` comments that are not blocking a lint warning. +Sets the Stylelint [`reportNeedlessDisables`] option. If `true`, Stylelint reports errors for `stylelint-disable` comments that are not blocking a lint warning. ### `stylelint.reportInvalidScopeDisables` > Type: `boolean` > Default: `false` -Sets the stylelint [`reportInvalidScopeDisables`](https://stylelint.io/user-guide/usage/options#reportInvalidScopeDisables) option. If `true`, stylelint reports errors for `stylelint-disable` comments referring to rules that don't exist within the configuration object. +Sets the Stylelint [`reportInvalidScopeDisables`] option. If `true`, Stylelint reports errors for `stylelint-disable` comments referring to rules that don't exist within the configuration object. ### `stylelint.validate` @@ -172,14 +176,14 @@ An array of language identifiers specifying which files to validate. > Type: `string` > Default: `""` -Used to supply a custom path to the stylelint module. +Used to supply a custom path to the Stylelint module. ### `stylelint.packageManager` > Type: `"npm" | "yarn" | "pnpm"` > Default: `"npm"` -Controls the package manager to be used to resolve the stylelint library. This setting only has an effect if the stylelint library is resolved globally. Valid values are `"npm"` or `"yarn"` or `"pnpm"`. +Controls the package manager to be used to resolve the Stylelint library. This setting only has an effect if the Stylelint library is resolved globally. Valid values are `"npm"` or `"yarn"` or `"pnpm"`. ### `stylelint.snippet` @@ -190,7 +194,7 @@ An array of language identifiers specifying which files to enable snippets for. ### `editor.codeActionsOnSave` -This extension provides an action that you can use with VS Code's `editor.codeActionsOnSave` setting. If provided a `source.fixAll.stylelint` property set to `true`, all auto-fixable stylelint errors will be fixed on save. +This extension provides an action that you can use with VS Code's [`editor.codeActionsOnSave`][vscode settings] setting. If provided a `source.fixAll.stylelint` property set to `true`, all auto-fixable Stylelint errors will be fixed on save. ```json "editor.codeActionsOnSave": { @@ -198,7 +202,7 @@ This extension provides an action that you can use with VS Code's `editor.codeAc } ``` -The following turns on auto fix for all providers, not just stylelint: +The following turns on auto fix for all providers, not just Stylelint: ```json "editor.codeActionsOnSave": { @@ -206,7 +210,7 @@ The following turns on auto fix for all providers, not just stylelint: } ``` -You can also selectively disable stylelint: +You can also selectively disable Stylelint: ```json "editor.codeActionsOnSave": { @@ -229,4 +233,45 @@ You can also selectively enable and disable specific languages using VS Code's l This extension contributes the following commands to the command palette: -- `Fix all auto-fixable problems`: applies stylelint resolutions to all automatically fixable problems. +- `Fix all auto-fixable problems`: applies Stylelint resolutions to all automatically fixable problems. + +## Licence + +[MIT](LICENSE) + + + + + +[css]: https://www.w3.org/Style/CSS/ +[scss]: https://sass-lang.com/documentation/syntax +[less]: http://lesscss.org/ + + + +[postcss extension]: https://marketplace.visualstudio.com/items?itemName=mhmadhamster.postcss-language +[postcss syntax]: https://github.com/postcss/postcss#syntaxes +[postcss-html]: https://www.npmjs.com/package/postcss-html +[postcss-scss]: https://www.npmjs.com/package/postcss-scss + + + +[stylelint]: https://stylelint.io/ +[stylelint getting started guide]: https://stylelint.io/user-guide/get-started +[stylelint configuration file]: https://stylelint.io/user-guide/configuration +[`customsyntax`]: https://stylelint.io/user-guide/usage/options/#customsyntax +[`config`]: https://stylelint.io/user-guide/usage/node-api#config +[`configfile`]: https://stylelint.io/user-guide/usage/options#configfile +[`configbasedir`]: https://stylelint.io/user-guide/usage/options#configbasedir +[`ignoredisables`]: https://stylelint.io/user-guide/usage/options#ignoredisables +[`reportneedlessdisables`]: https://stylelint.io/user-guide/usage/options#reportneedlessdisables +[`reportinvalidscopedisables`]: https://stylelint.io/user-guide/usage/options#reportInvalidScopeDisables + + + +[visual studio code]: https://code.visualstudio.com/ +[command palette]: https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette +[extension installation guide]: https://code.visualstudio.com/docs/editor/extension-gallery +[language identifiers]: https://code.visualstudio.com/docs/languages/overview#_language-identifier +[vs code's built-in linters]: https://code.visualstudio.com/docs/languages/css#_syntax-verification-linting +[vscode settings]: https://code.visualstudio.com/docs/getstarted/settings From ebb8376e7d22c53a691ef3c1b6c4ffd2b146b854 Mon Sep 17 00:00:00 2001 From: Adaline Valentina Simonian Date: Thu, 7 Oct 2021 21:52:42 -0700 Subject: [PATCH 4/6] fix: fix section link in readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c5d13d0b..5de86f78 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ _You can see or change the current document's language in the bottom-right corne vscode-stylelint 1.x expects to use Stylelint 14 at minimum. Usage with prior versions of Stylelint is not supported nor recommended. If you want to continue using this extension, upgrade your copy of Stylelint to version 14 or later. -The `syntax` and `configOverrides` options have been removed from Stylelint 14 and this extension. See the [following section](#only-css-and-postcss-are-validated-by-default) for information on how to use different syntaxes. +The `syntax` and `configOverrides` options have been removed from Stylelint 14 and this extension. See the [following section](#%EF%B8%8F-only-css-and-postcss-are-validated-by-default) for information on how to use different syntaxes. ### ⚠️ Stylelint is No Longer Bundled From de88e877168c6e39bf2d19a27078c264660854d8 Mon Sep 17 00:00:00 2001 From: Adaline Valentina Simonian Date: Fri, 8 Oct 2021 11:23:31 -0700 Subject: [PATCH 5/6] docs: updates suggested by @jeddy3 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5de86f78..1e7118f8 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![Testing](https://github.com/stylelint/vscode-stylelint/workflows/Testing/badge.svg)](https://github.com/stylelint/vscode-stylelint/actions/workflows/testing.yml) [![Linting](https://github.com/stylelint/vscode-stylelint/workflows/Linting/badge.svg)](https://github.com/stylelint/vscode-stylelint/actions/workflows/linting.yml) -The official [Visual Studio Code] extension to lint [CSS]/[SCSS]/[Less] with [Stylelint] +The official [Visual Studio Code] extension for [Stylelint] ![Screenshot of Stylelint errors displayed in VS Code](media/screenshot.png) @@ -64,7 +64,7 @@ The 0.x versions of this extension, which used Stylelint 13.x and prior, support In current versions of the extension, the extension only supports validating CSS and PostCSS out of the box and requires additional configuration to validate other languages. You will need to: -1. Install the PostCSS syntax for the language you want to validate into your workspace (e.g. [postcss-html] or [postcss-scss]). +1. Install the PostCSS syntax for the language you want to validate into your workspace, e.g. [postcss-scss]. 1. Configure Stylelint to use the syntax by providing the module name in the [`customSyntax`] option using overrides (or use the [corresponding option](#stylelintcustomsyntax) in this extension's settings). Example Stylelint config: From b94dca958bd81151bdb4ee962b50cc9eb64cd80e Mon Sep 17 00:00:00 2001 From: Adaline Valentina Simonian Date: Fri, 8 Oct 2021 11:54:13 -0700 Subject: [PATCH 6/6] test: remove html and markdown tests TODO: Restore once postcss-html and postcss-markdown are PostCSS 8 compatible. re: https://github.com/stylelint/vscode-stylelint/pull/254#discussion_r724912688 --- README.md | 1 - package-lock.json | 888 ------------------ package.json | 2 - .../__snapshots__/test.js.snap | 8 +- test/lib/stylelint-vscode/test.js | 77 +- .../lint/__snapshots__/index.js.snap | 24 - test/workspace/lint/index.js | 18 +- test/workspace/lint/stylelint.config.js | 9 +- 8 files changed, 60 insertions(+), 967 deletions(-) diff --git a/README.md b/README.md index 1e7118f8..a4eb03a0 100644 --- a/README.md +++ b/README.md @@ -251,7 +251,6 @@ This extension contributes the following commands to the command palette: [postcss extension]: https://marketplace.visualstudio.com/items?itemName=mhmadhamster.postcss-language [postcss syntax]: https://github.com/postcss/postcss#syntaxes -[postcss-html]: https://www.npmjs.com/package/postcss-html [postcss-scss]: https://www.npmjs.com/package/postcss-scss diff --git a/package-lock.json b/package-lock.json index 9de006e7..8a8a74cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,6 @@ }, "devDependencies": { "@stylelint/postcss-css-in-js": "^0.37.2", - "@stylelint/postcss-markdown": "^0.36.2", "@stylelint/prettier-config": "^2.0.0", "@types/fs-extra": "^9.0.13", "@types/jest": "^27.0.1", @@ -39,7 +38,6 @@ "npm-run-all": "^4.1.5", "p-wait-for": "^3.1.0", "postcss": "^8.3.9", - "postcss-html": "^0.36.0", "postcss-sass": "^0.5.0", "postcss-scss": "^4.0.1", "prettier": "^2.3.0", @@ -1080,20 +1078,6 @@ "postcss-syntax": ">=0.36.2" } }, - "node_modules/@stylelint/postcss-markdown": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", - "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", - "dev": true, - "dependencies": { - "remark": "^13.0.0", - "unist-util-find-all-after": "^3.0.2" - }, - "peerDependencies": { - "postcss": ">=7.0.0", - "postcss-syntax": ">=0.36.2" - } - }, "node_modules/@stylelint/prettier-config": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@stylelint/prettier-config/-/prettier-config-2.0.0.tgz", @@ -1227,15 +1211,6 @@ "integrity": "sha512-vv0CAYoaEjCw/mLy96GBTnRoZrSxkGE0BKzKimdR8P3OzrNYNvBgtW7p055A+E8C31vXNUhWKoFCbhq7gbyhFg==", "dev": true }, - "node_modules/@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", - "dev": true, - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", @@ -1284,12 +1259,6 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, - "node_modules/@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", - "dev": true - }, "node_modules/@types/vscode": { "version": "1.56.0", "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.56.0.tgz", @@ -1732,16 +1701,6 @@ "babylon": "bin/babylon.js" } }, - "node_modules/bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1956,36 +1915,6 @@ "node": ">=10" } }, - "node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/ci-info": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", @@ -2323,43 +2252,6 @@ "node": ">=6.0.0" } }, - "node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, "node_modules/domexception": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", @@ -2381,25 +2273,6 @@ "node": ">=8" } }, - "node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, "node_modules/duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", @@ -2469,12 +2342,6 @@ "node": ">=8.6" } }, - "node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -3324,12 +3191,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3872,20 +3733,6 @@ "node": ">=8" } }, - "node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, "node_modules/http-proxy-agent": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", @@ -4050,30 +3897,6 @@ "node": ">= 0.4" } }, - "node_modules/is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dev": true, - "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -4108,29 +3931,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, "node_modules/is-callable": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", @@ -4182,16 +3982,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -4231,16 +4021,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -5390,16 +5170,6 @@ "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, - "node_modules/longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -5466,51 +5236,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/mdast-util-from-markdown": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", - "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -5600,26 +5325,6 @@ "node": ">= 8" } }, - "node_modules/micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" - } - }, "node_modules/micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", @@ -6165,24 +5870,6 @@ "node": ">=6" } }, - "node_modules/parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "dev": true, - "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -6390,19 +6077,6 @@ "url": "https://opencollective.com/postcss/" } }, - "node_modules/postcss-html": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", - "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", - "dev": true, - "dependencies": { - "htmlparser2": "^3.10.0" - }, - "peerDependencies": { - "postcss": ">=5.0.0", - "postcss-syntax": ">=0.36.0" - } - }, "node_modules/postcss-media-query-parser": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", @@ -6699,20 +6373,6 @@ "node": ">=4" } }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -6757,56 +6417,6 @@ "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/remark": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", - "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", - "dev": true, - "dependencies": { - "remark-parse": "^9.0.0", - "remark-stringify": "^9.0.0", - "unified": "^9.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", - "dev": true, - "dependencies": { - "mdast-util-from-markdown": "^0.8.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-stringify": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", - "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", - "dev": true, - "dependencies": { - "mdast-util-to-markdown": "^0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -7216,35 +6826,6 @@ "node": ">=8" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -7827,16 +7408,6 @@ "node": ">=8" } }, - "node_modules/trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -7928,60 +7499,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", - "dev": true, - "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-find-all-after": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", - "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==", - "dev": true, - "dependencies": { - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -8087,36 +7604,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "node_modules/vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/vscode-jsonrpc": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", @@ -8415,16 +7902,6 @@ "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==", "dev": true - }, - "node_modules/zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } } }, "dependencies": { @@ -9228,16 +8705,6 @@ "@babel/core": ">=7.9.0" } }, - "@stylelint/postcss-markdown": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", - "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", - "dev": true, - "requires": { - "remark": "^13.0.0", - "unist-util-find-all-after": "^3.0.2" - } - }, "@stylelint/prettier-config": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@stylelint/prettier-config/-/prettier-config-2.0.0.tgz", @@ -9368,15 +8835,6 @@ "integrity": "sha512-vv0CAYoaEjCw/mLy96GBTnRoZrSxkGE0BKzKimdR8P3OzrNYNvBgtW7p055A+E8C31vXNUhWKoFCbhq7gbyhFg==", "dev": true }, - "@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", - "dev": true, - "requires": { - "@types/unist": "*" - } - }, "@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", @@ -9425,12 +8883,6 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, - "@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", - "dev": true - }, "@types/vscode": { "version": "1.56.0", "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.56.0.tgz", @@ -9744,12 +9196,6 @@ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, - "bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", - "dev": true - }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -9908,24 +9354,6 @@ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, - "character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "dev": true - }, - "character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "dev": true - }, - "character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "dev": true - }, "ci-info": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", @@ -10192,36 +9620,6 @@ "esutils": "^2.0.2" } }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - } - } - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, "domexception": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", @@ -10239,25 +9637,6 @@ } } }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, "duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", @@ -10320,12 +9699,6 @@ "ansi-colors": "^4.1.1" } }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -10904,12 +10277,6 @@ } } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -11322,20 +10689,6 @@ "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", "dev": true }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, "http-proxy-agent": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", @@ -11460,22 +10813,6 @@ "side-channel": "^1.0.4" } }, - "is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "dev": true - }, - "is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dev": true, - "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - } - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -11501,12 +10838,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true - }, "is-callable": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", @@ -11540,12 +10871,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "dev": true - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -11573,12 +10898,6 @@ "is-extglob": "^2.1.1" } }, - "is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "dev": true - }, "is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -12465,12 +11784,6 @@ "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, - "longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", - "dev": true - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -12517,39 +11830,6 @@ "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", "dev": true }, - "mdast-util-from-markdown": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", - "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", - "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - } - }, - "mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" - } - }, - "mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "dev": true - }, "memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -12617,16 +11897,6 @@ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, - "micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", - "dev": true, - "requires": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" - } - }, "micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", @@ -13044,20 +12314,6 @@ "callsites": "^3.0.0" } }, - "parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "dev": true, - "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, "parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -13205,15 +12461,6 @@ } } }, - "postcss-html": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", - "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", - "dev": true, - "requires": { - "htmlparser2": "^3.10.0" - } - }, "postcss-media-query-parser": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", @@ -13421,17 +12668,6 @@ } } }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, "redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -13467,41 +12703,6 @@ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, - "remark": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", - "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", - "dev": true, - "requires": { - "remark-parse": "^9.0.0", - "remark-stringify": "^9.0.0", - "unified": "^9.1.0" - } - }, - "remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", - "dev": true, - "requires": { - "mdast-util-from-markdown": "^0.8.0" - } - }, - "remark-stringify": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", - "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", - "dev": true, - "requires": { - "mdast-util-to-markdown": "^0.6.0" - } - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -13826,23 +13027,6 @@ } } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, "string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -14299,12 +13483,6 @@ "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, - "trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "dev": true - }, "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -14368,44 +13546,6 @@ "which-boxed-primitive": "^1.0.2" } }, - "unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", - "dev": true, - "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - } - }, - "unist-util-find-all-after": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", - "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==", - "dev": true, - "requires": { - "unist-util-is": "^4.0.0" - } - }, - "unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", - "dev": true - }, - "unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "dev": true, - "requires": { - "@types/unist": "^2.0.2" - } - }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -14506,28 +13646,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - } - }, - "vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - } - }, "vscode-jsonrpc": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", @@ -14758,12 +13876,6 @@ "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==", "dev": true - }, - "zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", - "dev": true } } } diff --git a/package.json b/package.json index 0d8a278f..e92951cf 100644 --- a/package.json +++ b/package.json @@ -164,7 +164,6 @@ }, "devDependencies": { "@stylelint/postcss-css-in-js": "^0.37.2", - "@stylelint/postcss-markdown": "^0.36.2", "@stylelint/prettier-config": "^2.0.0", "@types/fs-extra": "^9.0.13", "@types/jest": "^27.0.1", @@ -182,7 +181,6 @@ "npm-run-all": "^4.1.5", "p-wait-for": "^3.1.0", "postcss": "^8.3.9", - "postcss-html": "^0.36.0", "postcss-sass": "^0.5.0", "postcss-scss": "^4.0.1", "prettier": "^2.3.0", diff --git a/test/lib/stylelint-vscode/__snapshots__/test.js.snap b/test/lib/stylelint-vscode/__snapshots__/test.js.snap index 169e7059..01982f55 100644 --- a/test/lib/stylelint-vscode/__snapshots__/test.js.snap +++ b/test/lib/stylelint-vscode/__snapshots__/test.js.snap @@ -88,11 +88,11 @@ Array [ "range": Object { "end": Object { "character": 10, - "line": 5, + "line": 0, }, "start": Object { "character": 10, - "line": 5, + "line": 0, }, }, "severity": 1, @@ -129,11 +129,11 @@ Array [ "message": "At-rule without name (CssSyntaxError)", "range": Object { "end": Object { - "character": 7, + "character": 0, "line": 0, }, "start": Object { - "character": 7, + "character": 0, "line": 0, }, }, diff --git a/test/lib/stylelint-vscode/test.js b/test/lib/stylelint-vscode/test.js index 7f028b6c..f0e67b0d 100644 --- a/test/lib/stylelint-vscode/test.js +++ b/test/lib/stylelint-vscode/test.js @@ -19,10 +19,6 @@ const createDocument = ( ); describe('stylelintVSCode()', () => { - beforeAll(() => { - process.chdir(resolve(__dirname, '../../..')); - }); - test('should be resolved with diagnostics when it lints CSS successfully', async () => { expect.assertions(1); const result = await stylelintVSCode(createDocument(null, 'css', ' a[id="id"]{}'), { @@ -48,36 +44,49 @@ describe('stylelintVSCode()', () => { test('should be resolved with one diagnostic when the CSS is broken', async () => { expect.assertions(1); - const result = await stylelintVSCode( - createDocument( - 'markdown.md', - 'markdown', - `# Title - -# Code block - -\`\`\`css - a{ -\`\`\` -`, - ), - { - config: { - customSyntax: '@stylelint/postcss-markdown', - rules: { - indentation: ['tab'], - }, + // TODO: Restore once postcss-markdown is PostCSS 8 compatible + // const result = await stylelintVSCode( + // createDocument( + // 'markdown.md', + // 'markdown', + // `# Title + + // # Code block + + // \`\`\`css + // a{ + // \`\`\` + // `, + // ), + // { + // config: { + // customSyntax: 'postcss-markdown', + // rules: { + // indentation: ['tab'], + // }, + // }, + // }, + // ); + const result = await stylelintVSCode(createDocument('scss.scss', 'scss', ' a{\n'), { + config: { + customSyntax: 'postcss-scss', + rules: { + indentation: ['tab'], }, }, - ); + }); expect(result.diagnostics).toMatchSnapshot(); }); test('should be resolved even if no configs are defined', async () => { expect.assertions(1); - const result = await stylelintVSCode(createDocument(null, 'plaintext', ''), { - customSyntax: 'postcss-html', + // TODO: Restore once postcss-html is PostCSS 8 compatible + // const result = await stylelintVSCode(createDocument(null, 'plaintext', ''), { + // customSyntax: 'postcss-html', + // }); + const result = await stylelintVSCode(createDocument(null, 'plaintext', 'a{}'), { + customSyntax: 'postcss-scss', }); expect(result.diagnostics).toEqual([]); @@ -168,8 +177,12 @@ a { color: #000 } test('should check CSS syntax even if no rule is provided', async () => { expect.assertions(1); - const result = await stylelintVSCode(createDocument('at.xsl', 'xsl', ''), { - customSyntax: 'postcss-html', + // TODO: Restore once postcss-html is PostCSS 8 compatible + // const result = await stylelintVSCode(createDocument('at.xsl', 'xsl', ''), { + // customSyntax: 'postcss-html', + // }); + const result = await stylelintVSCode(createDocument('at.scss', 'scss', '@'), { + customSyntax: 'postcss-scss', }); expect(result.diagnostics).toMatchSnapshot(); @@ -218,10 +231,6 @@ a { color: #000 } }); describe('stylelintVSCode() with a configuration file', () => { - beforeAll(() => { - process.chdir(__dirname); - }); - test('should adhere to configuration file settings', async () => { expect.assertions(1); const result = await stylelintVSCode( @@ -244,10 +253,6 @@ const what: string = "is this"; }); describe('stylelintVSCode() with autofix', () => { - beforeAll(() => { - process.chdir(resolve(__dirname, '../../..')); - }); - test('autofix should work properly if configs are defined', async () => { expect.assertions(1); const result = await stylelintVSCode(createDocument(null, 'css', 'a\n{\ncolor:red;\n}'), { diff --git a/test/workspace/lint/__snapshots__/index.js.snap b/test/workspace/lint/__snapshots__/index.js.snap index 1a58c186..c8bc673a 100644 --- a/test/workspace/lint/__snapshots__/index.js.snap +++ b/test/workspace/lint/__snapshots__/index.js.snap @@ -24,30 +24,6 @@ Array [ ] `; -exports[`vscode-stylelint lint test should work on markdown 1`] = ` -Array [ - Object { - "code": "indentation", - "codeDescription": Object { - "href": "https://stylelint.io/user-guide/rules/indentation", - }, - "message": "Expected indentation of 4 spaces (indentation)", - "range": Object { - "end": Object { - "character": 2, - "line": 4, - }, - "start": Object { - "character": 2, - "line": 4, - }, - }, - "severity": 1, - "source": "stylelint", - }, -] -`; - exports[`vscode-stylelint lint test should work on scss 1`] = ` Array [ Object { diff --git a/test/workspace/lint/index.js b/test/workspace/lint/index.js index 064af748..aeb9e277 100644 --- a/test/workspace/lint/index.js +++ b/test/workspace/lint/index.js @@ -31,15 +31,17 @@ describe('vscode-stylelint lint test', () => { expect(getStylelintDiagnostics(scssDocument.uri).map(normalizeDiagnostic)).toMatchSnapshot(); }); - it('should work on markdown', async () => { - // Open the './test.md' file. - const mdDocument = await workspace.openTextDocument(path.resolve(__dirname, 'test.md')); + // TODO: Restore once postcss-markdown is PostCSS 8 compatible + // eslint-disable-next-line jest/no-commented-out-tests + // it('should work on markdown', async () => { + // // Open the './test.md' file. + // const mdDocument = await workspace.openTextDocument(path.resolve(__dirname, 'test.md')); - await window.showTextDocument(mdDocument); + // await window.showTextDocument(mdDocument); - // Wait for diagnostics result. - await pWaitFor(() => getStylelintDiagnostics(mdDocument.uri).length > 0, { timeout: 5000 }); + // // Wait for diagnostics result. + // await pWaitFor(() => getStylelintDiagnostics(mdDocument.uri).length > 0, { timeout: 5000 }); - expect(getStylelintDiagnostics(mdDocument.uri).map(normalizeDiagnostic)).toMatchSnapshot(); - }); + // expect(getStylelintDiagnostics(mdDocument.uri).map(normalizeDiagnostic)).toMatchSnapshot(); + // }); }); diff --git a/test/workspace/lint/stylelint.config.js b/test/workspace/lint/stylelint.config.js index e765b42e..be41f8bb 100644 --- a/test/workspace/lint/stylelint.config.js +++ b/test/workspace/lint/stylelint.config.js @@ -9,10 +9,11 @@ const config = { indentation: [4], }, overrides: [ - { - files: ['**/*.md'], - customSyntax: '@stylelint/postcss-markdown', - }, + // TODO: Restore once postcss-markdown is PostCSS 8 compatible + // { + // files: ['**/*.md'], + // customSyntax: '/postcss-markdown', + // }, { files: ['**/*.scss'], customSyntax: 'postcss-scss',