diff --git a/package-lock.json b/package-lock.json index f68c64dd0..5c188057a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -114,20 +114,20 @@ } }, "node_modules/@babel/core": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.7.tgz", - "integrity": "sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==", + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", + "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.7", + "@babel/generator": "^7.16.8", "@babel/helper-compilation-targets": "^7.16.7", "@babel/helper-module-transforms": "^7.16.7", "@babel/helpers": "^7.16.7", - "@babel/parser": "^7.16.7", + "@babel/parser": "^7.16.12", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7", + "@babel/traverse": "^7.16.10", + "@babel/types": "^7.16.8", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -201,9 +201,9 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz", - "integrity": "sha512-kIFozAvVfK05DM4EVQYKK+zteWvY85BFdGBRQBytRyY3y+6PX0DkDOn/CZ3lEuczCfrCxEzwt0YtP/87YPTWSw==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", + "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", @@ -496,9 +496,9 @@ } }, "node_modules/@babel/highlight": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.7.tgz", - "integrity": "sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", @@ -510,9 +510,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.8.tgz", - "integrity": "sha512-i7jDUfrVBWc+7OKcBzEe5n7fbv3i2fWtxKzzCvOjnzSxMfWMigAhtfJ7qzZNGFNMsCCd67+uz553dYKWXPvCKw==", + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", + "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -769,12 +769,12 @@ } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz", - "integrity": "sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw==", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.10", "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { @@ -1549,9 +1549,9 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.8.tgz", - "integrity": "sha512-9rNKgVCdwHb3z1IlbMyft6yIXIeP3xz6vWvGaLHrJThuEIqWfHb0DNBH9VuTgnDfdbUDhkmkvMZS/YMCtP7Elg==", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", "dev": true, "dependencies": { "@babel/compat-data": "^7.16.8", @@ -1572,7 +1572,7 @@ "@babel/plugin-proposal-object-rest-spread": "^7.16.7", "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", "@babel/plugin-proposal-private-property-in-object": "^7.16.7", "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", "@babel/plugin-syntax-async-generators": "^7.8.4", @@ -1696,9 +1696,9 @@ } }, "node_modules/@babel/traverse": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.8.tgz", - "integrity": "sha512-xe+H7JlvKsDQwXRsBhSnq1/+9c+LlQcCK3Tn/l5sbx02HYns/cn7ibp9+RV1sIUqu7hKg91NWsgHurO9dowITQ==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", + "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.16.7", @@ -1707,7 +1707,7 @@ "@babel/helper-function-name": "^7.16.7", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.16.8", + "@babel/parser": "^7.16.10", "@babel/types": "^7.16.8", "debug": "^4.1.0", "globals": "^11.1.0" @@ -2217,9 +2217,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "17.0.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.8.tgz", - "integrity": "sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==", + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.10.tgz", + "integrity": "sha512-S/3xB4KzyFxYGCppyDt68yzBU9ysL88lSdIah4D6cptdcltc4NCPCAMc0+PCpg/lLIyC7IPvj2Z52OJWeIUkog==", "dev": true }, "node_modules/@types/resolve": { @@ -2242,14 +2242,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.1.tgz", - "integrity": "sha512-Xv9tkFlyD4MQGpJgTo6wqDqGvHIRmRgah/2Sjz1PUnJTawjHWIwBivUE9x0QtU2WVii9baYgavo/bHjrZJkqTw==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.10.0.tgz", + "integrity": "sha512-XXVKnMsq2fuu9K2KsIxPUGqb6xAImz8MEChClbXmE3VbveFtBUU5bzM6IPVWqzyADIgdkS2Ws/6Xo7W2TeZWjQ==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "5.9.1", - "@typescript-eslint/scope-manager": "5.9.1", - "@typescript-eslint/type-utils": "5.9.1", + "@typescript-eslint/scope-manager": "5.10.0", + "@typescript-eslint/type-utils": "5.10.0", + "@typescript-eslint/utils": "5.10.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -2289,40 +2289,16 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.1.tgz", - "integrity": "sha512-cb1Njyss0mLL9kLXgS/eEY53SZQ9sT519wpX3i+U457l2UXRDuo87hgKfgRazmu9/tQb0x2sr3Y0yrU+Zz0y+w==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.9.1", - "@typescript-eslint/types": "5.9.1", - "@typescript-eslint/typescript-estree": "5.9.1", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, "node_modules/@typescript-eslint/parser": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.1.tgz", - "integrity": "sha512-PLYO0AmwD6s6n0ZQB5kqPgfvh73p0+VqopQQLuNfi7Lm0EpfKyDalchpVwkE+81k5HeiRrTV/9w1aNHzjD7C4g==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.10.0.tgz", + "integrity": "sha512-pJB2CCeHWtwOAeIxv8CHVGJhI5FNyJAIpx5Pt72YkK3QfEzt6qAlXZuyaBmyfOdM62qU0rbxJzNToPTVeJGrQw==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.9.1", - "@typescript-eslint/types": "5.9.1", - "@typescript-eslint/typescript-estree": "5.9.1", + "@typescript-eslint/scope-manager": "5.10.0", + "@typescript-eslint/types": "5.10.0", + "@typescript-eslint/typescript-estree": "5.10.0", "debug": "^4.3.2" }, "engines": { @@ -2342,13 +2318,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.1.tgz", - "integrity": "sha512-8BwvWkho3B/UOtzRyW07ffJXPaLSUKFBjpq8aqsRvu6HdEuzCY57+ffT7QoV4QXJXWSU1+7g3wE4AlgImmQ9pQ==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.10.0.tgz", + "integrity": "sha512-tgNgUgb4MhqK6DoKn3RBhyZ9aJga7EQrw+2/OiDk5hKf3pTVZWyqBi7ukP+Z0iEEDMF5FDa64LqODzlfE4O/Dg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.9.1", - "@typescript-eslint/visitor-keys": "5.9.1" + "@typescript-eslint/types": "5.10.0", + "@typescript-eslint/visitor-keys": "5.10.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2359,12 +2335,12 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.9.1.tgz", - "integrity": "sha512-tRSpdBnPRssjlUh35rE9ug5HrUvaB9ntREy7gPXXKwmIx61TNN7+l5YKgi1hMKxo5NvqZCfYhA5FvyuJG6X6vg==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.10.0.tgz", + "integrity": "sha512-TzlyTmufJO5V886N+hTJBGIfnjQDQ32rJYxPaeiyWKdjsv2Ld5l8cbS7pxim4DeNs62fKzRSt8Q14Evs4JnZyQ==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "5.9.1", + "@typescript-eslint/utils": "5.10.0", "debug": "^4.3.2", "tsutils": "^3.21.0" }, @@ -2385,9 +2361,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.1.tgz", - "integrity": "sha512-SsWegWudWpkZCwwYcKoDwuAjoZXnM1y2EbEerTHho19Hmm+bQ56QG4L4jrtCu0bI5STaRTvRTZmjprWlTw/5NQ==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.10.0.tgz", + "integrity": "sha512-wUljCgkqHsMZbw60IbOqT/puLfyqqD5PquGiBo1u1IS3PLxdi3RDGlyf032IJyh+eQoGhz9kzhtZa+VC4eWTlQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2398,13 +2374,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.1.tgz", - "integrity": "sha512-gL1sP6A/KG0HwrahVXI9fZyeVTxEYV//6PmcOn1tD0rw8VhUWYeZeuWHwwhnewnvEMcHjhnJLOBhA9rK4vmb8A==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.0.tgz", + "integrity": "sha512-x+7e5IqfwLwsxTdliHRtlIYkgdtYXzE0CkFeV6ytAqq431ZyxCFzNMNR5sr3WOlIG/ihVZr9K/y71VHTF/DUQA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.9.1", - "@typescript-eslint/visitor-keys": "5.9.1", + "@typescript-eslint/types": "5.10.0", + "@typescript-eslint/visitor-keys": "5.10.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -2439,13 +2415,37 @@ "node": ">=10" } }, + "node_modules/@typescript-eslint/utils": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.10.0.tgz", + "integrity": "sha512-IGYwlt1CVcFoE2ueW4/ioEwybR60RAdGeiJX/iDAw0t5w0wK3S7QncDwpmsM70nKgGTuVchEWB8lwZwHqPAWRg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.10.0", + "@typescript-eslint/types": "5.10.0", + "@typescript-eslint/typescript-estree": "5.10.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.1.tgz", - "integrity": "sha512-Xh37pNz9e9ryW4TVdwiFzmr4hloty8cFj8GTWMXh3Z8swGwyQWeCcNgF0hm6t09iZd6eiZmIf4zHedQVP6TVtg==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.0.tgz", + "integrity": "sha512-GMxj0K1uyrFLPKASLmZzCuSddmjZVbVj3Ouy5QVuIGKZopxvOr24JsS7gruz6C3GExE01mublZ3mIBOaon9zuQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/types": "5.10.0", "eslint-visitor-keys": "^3.0.0" }, "engines": { @@ -2802,9 +2802,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001300", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001300.tgz", - "integrity": "sha512-cVjiJHWGcNlJi8TZVKNMnvMid3Z3TTdDHmLDzlOdIiZq138Exvo0G+G0wTdVYolxKb4AYwC+38pxodiInVtJSA==", + "version": "1.0.30001301", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001301.tgz", + "integrity": "sha512-csfD/GpHMqgEL3V3uIgosvh+SVIQvCh43SNu9HRbP1lnxkKm1kjDG4f32PP571JplkLjfS+mg2p1gxR7MYrrIA==", "funding": { "type": "opencollective", "url": "https://opencollective.com/browserslist" @@ -3056,9 +3056,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.937139", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.937139.tgz", - "integrity": "sha512-daj+rzR3QSxsPRy5vjjthn58axO8c11j58uY0lG5vvlJk/EiOdCWOptGdkXDjtuRHr78emKq0udHCXM4trhoDQ==", + "version": "0.0.948846", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.948846.tgz", + "integrity": "sha512-5fGyt9xmMqUl2VI7+rnUkKCiAQIpLns8sfQtTENy5L70ktbNw0Z3TFJ1JoFNYdx/jffz4YXU45VF75wKZD7sZQ==", "dev": true }, "node_modules/dir-glob": { @@ -3086,9 +3086,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.46", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.46.tgz", - "integrity": "sha512-UtV0xUA/dibCKKP2JMxOpDtXR74zABevuUEH4K0tvduFSIoxRVcYmQsbB51kXsFTX8MmOyWMt8tuZAlmDOqkrQ==" + "version": "1.4.51", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.51.tgz", + "integrity": "sha512-JNEmcYl3mk1tGQmy0EvL5eik/CKSBuzAyGP0QFdG6LIgxQe3II0BL1m2zKc2MZMf3uGqHWE1TFddJML0RpjSHQ==" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -4473,9 +4473,9 @@ } }, "node_modules/mdn-data": { - "version": "2.0.25", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.25.tgz", - "integrity": "sha512-AQ5BW06x903h845oyqFUzzppJSn4KhCecjsC29RiIeB40Crbw8jTTtce6oAmM1rwIXMyWkElbz1Fo+l7GBY8HQ==", + "version": "2.0.26", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.26.tgz", + "integrity": "sha512-agAtU1PRFd+fbo4Rog2A5DLnxmWvJ5+ZgbTekPj0Fil7mJFalWkg7VRyJW2FpGNc5u7VfiPoQ85u3gzp2p9iFQ==", "dev": true }, "node_modules/merge-stream": { @@ -5209,9 +5209,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz", - "integrity": "sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ==", + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -5300,14 +5300,14 @@ } }, "node_modules/puppeteer": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.0.1.tgz", - "integrity": "sha512-wqGIx59LzYqWhYcJQphMT+ux0sgatEUbjKG0lbjJxNVqVIT3ZC5m4Bvmq2gHE3qhb63EwS+rNkql08bm4BvO0A==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.1.1.tgz", + "integrity": "sha512-GwdFy1JQ43Hhxj6MraXme+XfCX2CKe18MuwToXTMEAk0txg6vUEgwqBnzErTTqDVZ7sWYrDtDaRCfD2y7ZwgGw==", "dev": true, "hasInstallScript": true, "dependencies": { "debug": "4.3.2", - "devtools-protocol": "0.0.937139", + "devtools-protocol": "0.0.948846", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.0", "node-fetch": "2.6.5", @@ -5506,12 +5506,12 @@ } }, "node_modules/resolve": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz", - "integrity": "sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "dependencies": { - "is-core-module": "^2.8.0", + "is-core-module": "^2.8.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -5576,9 +5576,9 @@ } }, "node_modules/rollup": { - "version": "2.64.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.64.0.tgz", - "integrity": "sha512-+c+lbw1lexBKSMb1yxGDVfJ+vchJH3qLbmavR+awDinTDA2C5Ug9u7lkOzj62SCu0PKUExsW36tpgW7Fmpn3yQ==", + "version": "2.66.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.66.0.tgz", + "integrity": "sha512-L6mKOkdyP8HK5kKJXaiWG7KZDumPJjuo1P+cfyHOJPNNTK3Moe7zCH5+fy7v8pVmHXtlxorzaBjvkBMB23s98g==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -5736,9 +5736,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", - "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "engines": { "node": ">=0.10.0" } @@ -6100,9 +6100,9 @@ } }, "node_modules/typescript": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", - "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", + "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -6405,34 +6405,6 @@ "postcss": "^8.4" } }, - "plugin-packs/postcss-preset-env/node_modules/@csstools/postcss-is-pseudo-class": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-1.0.1.tgz", - "integrity": "sha512-Gli5WXeq1+Zb65Kl5xes+R4LiKWIO6FKYRxsbxkZEuTVN7/OnSkm5arpb4xHWYFUbx3Lejr8dFb3ljLP2C9e1w==", - "dependencies": { - "postcss-selector-parser": "^6.0.8" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, - "plugin-packs/postcss-preset-env/node_modules/postcss-custom-properties": { - "version": "12.1.3", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.3.tgz", - "integrity": "sha512-rtu3otIeY532PnEuuBrIIe+N+pcdbX/7JMZfrcL09wc78YayrHw5E8UkDfvnlOhEUrI4ptCuzXQfj+Or6spbGA==", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, "plugins/css-blank-pseudo": { "version": "3.0.2", "license": "CC0-1.0", @@ -6700,10 +6672,6 @@ "dependencies": { "postcss-selector-parser": "^6.0.8" }, - "devDependencies": { - "postcss": "^8.3.6", - "postcss-tape": "^6.0.1" - }, "engines": { "node": "^12 || ^14 || >=16" }, @@ -6817,20 +6785,20 @@ "dev": true }, "@babel/core": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.7.tgz", - "integrity": "sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==", + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", + "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", "dev": true, "requires": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.7", + "@babel/generator": "^7.16.8", "@babel/helper-compilation-targets": "^7.16.7", "@babel/helper-module-transforms": "^7.16.7", "@babel/helpers": "^7.16.7", - "@babel/parser": "^7.16.7", + "@babel/parser": "^7.16.12", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7", + "@babel/traverse": "^7.16.10", + "@babel/types": "^7.16.8", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -6882,9 +6850,9 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz", - "integrity": "sha512-kIFozAvVfK05DM4EVQYKK+zteWvY85BFdGBRQBytRyY3y+6PX0DkDOn/CZ3lEuczCfrCxEzwt0YtP/87YPTWSw==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", + "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", @@ -7105,9 +7073,9 @@ } }, "@babel/highlight": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.7.tgz", - "integrity": "sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.16.7", @@ -7116,9 +7084,9 @@ } }, "@babel/parser": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.8.tgz", - "integrity": "sha512-i7jDUfrVBWc+7OKcBzEe5n7fbv3i2fWtxKzzCvOjnzSxMfWMigAhtfJ7qzZNGFNMsCCd67+uz553dYKWXPvCKw==", + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", + "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -7279,12 +7247,12 @@ } }, "@babel/plugin-proposal-private-methods": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz", - "integrity": "sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw==", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.10", "@babel/helper-plugin-utils": "^7.16.7" } }, @@ -7780,9 +7748,9 @@ } }, "@babel/preset-env": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.8.tgz", - "integrity": "sha512-9rNKgVCdwHb3z1IlbMyft6yIXIeP3xz6vWvGaLHrJThuEIqWfHb0DNBH9VuTgnDfdbUDhkmkvMZS/YMCtP7Elg==", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", "dev": true, "requires": { "@babel/compat-data": "^7.16.8", @@ -7803,7 +7771,7 @@ "@babel/plugin-proposal-object-rest-spread": "^7.16.7", "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", "@babel/plugin-proposal-private-property-in-object": "^7.16.7", "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", "@babel/plugin-syntax-async-generators": "^7.8.4", @@ -7906,9 +7874,9 @@ } }, "@babel/traverse": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.8.tgz", - "integrity": "sha512-xe+H7JlvKsDQwXRsBhSnq1/+9c+LlQcCK3Tn/l5sbx02HYns/cn7ibp9+RV1sIUqu7hKg91NWsgHurO9dowITQ==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", + "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", "dev": true, "requires": { "@babel/code-frame": "^7.16.7", @@ -7917,7 +7885,7 @@ "@babel/helper-function-name": "^7.16.7", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.16.8", + "@babel/parser": "^7.16.10", "@babel/types": "^7.16.8", "debug": "^4.1.0", "globals": "^11.1.0" @@ -7997,9 +7965,7 @@ "@csstools/postcss-is-pseudo-class": { "version": "file:plugins/postcss-is-pseudo-class", "requires": { - "postcss": "^8.3.6", - "postcss-selector-parser": "^6.0.8", - "postcss-tape": "^6.0.1" + "postcss-selector-parser": "^6.0.8" } }, "@csstools/postcss-tape": { @@ -8369,9 +8335,9 @@ "dev": true }, "@types/node": { - "version": "17.0.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.8.tgz", - "integrity": "sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==", + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.10.tgz", + "integrity": "sha512-S/3xB4KzyFxYGCppyDt68yzBU9ysL88lSdIah4D6cptdcltc4NCPCAMc0+PCpg/lLIyC7IPvj2Z52OJWeIUkog==", "dev": true }, "@types/resolve": { @@ -8394,14 +8360,14 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.1.tgz", - "integrity": "sha512-Xv9tkFlyD4MQGpJgTo6wqDqGvHIRmRgah/2Sjz1PUnJTawjHWIwBivUE9x0QtU2WVii9baYgavo/bHjrZJkqTw==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.10.0.tgz", + "integrity": "sha512-XXVKnMsq2fuu9K2KsIxPUGqb6xAImz8MEChClbXmE3VbveFtBUU5bzM6IPVWqzyADIgdkS2Ws/6Xo7W2TeZWjQ==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "5.9.1", - "@typescript-eslint/scope-manager": "5.9.1", - "@typescript-eslint/type-utils": "5.9.1", + "@typescript-eslint/scope-manager": "5.10.0", + "@typescript-eslint/type-utils": "5.10.0", + "@typescript-eslint/utils": "5.10.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -8421,68 +8387,54 @@ } } }, - "@typescript-eslint/experimental-utils": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.1.tgz", - "integrity": "sha512-cb1Njyss0mLL9kLXgS/eEY53SZQ9sT519wpX3i+U457l2UXRDuo87hgKfgRazmu9/tQb0x2sr3Y0yrU+Zz0y+w==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.9.1", - "@typescript-eslint/types": "5.9.1", - "@typescript-eslint/typescript-estree": "5.9.1", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - } - }, "@typescript-eslint/parser": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.1.tgz", - "integrity": "sha512-PLYO0AmwD6s6n0ZQB5kqPgfvh73p0+VqopQQLuNfi7Lm0EpfKyDalchpVwkE+81k5HeiRrTV/9w1aNHzjD7C4g==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.10.0.tgz", + "integrity": "sha512-pJB2CCeHWtwOAeIxv8CHVGJhI5FNyJAIpx5Pt72YkK3QfEzt6qAlXZuyaBmyfOdM62qU0rbxJzNToPTVeJGrQw==", "dev": true, "peer": true, "requires": { - "@typescript-eslint/scope-manager": "5.9.1", - "@typescript-eslint/types": "5.9.1", - "@typescript-eslint/typescript-estree": "5.9.1", + "@typescript-eslint/scope-manager": "5.10.0", + "@typescript-eslint/types": "5.10.0", + "@typescript-eslint/typescript-estree": "5.10.0", "debug": "^4.3.2" } }, "@typescript-eslint/scope-manager": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.1.tgz", - "integrity": "sha512-8BwvWkho3B/UOtzRyW07ffJXPaLSUKFBjpq8aqsRvu6HdEuzCY57+ffT7QoV4QXJXWSU1+7g3wE4AlgImmQ9pQ==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.10.0.tgz", + "integrity": "sha512-tgNgUgb4MhqK6DoKn3RBhyZ9aJga7EQrw+2/OiDk5hKf3pTVZWyqBi7ukP+Z0iEEDMF5FDa64LqODzlfE4O/Dg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.9.1", - "@typescript-eslint/visitor-keys": "5.9.1" + "@typescript-eslint/types": "5.10.0", + "@typescript-eslint/visitor-keys": "5.10.0" } }, "@typescript-eslint/type-utils": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.9.1.tgz", - "integrity": "sha512-tRSpdBnPRssjlUh35rE9ug5HrUvaB9ntREy7gPXXKwmIx61TNN7+l5YKgi1hMKxo5NvqZCfYhA5FvyuJG6X6vg==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.10.0.tgz", + "integrity": "sha512-TzlyTmufJO5V886N+hTJBGIfnjQDQ32rJYxPaeiyWKdjsv2Ld5l8cbS7pxim4DeNs62fKzRSt8Q14Evs4JnZyQ==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "5.9.1", + "@typescript-eslint/utils": "5.10.0", "debug": "^4.3.2", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.1.tgz", - "integrity": "sha512-SsWegWudWpkZCwwYcKoDwuAjoZXnM1y2EbEerTHho19Hmm+bQ56QG4L4jrtCu0bI5STaRTvRTZmjprWlTw/5NQ==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.10.0.tgz", + "integrity": "sha512-wUljCgkqHsMZbw60IbOqT/puLfyqqD5PquGiBo1u1IS3PLxdi3RDGlyf032IJyh+eQoGhz9kzhtZa+VC4eWTlQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.1.tgz", - "integrity": "sha512-gL1sP6A/KG0HwrahVXI9fZyeVTxEYV//6PmcOn1tD0rw8VhUWYeZeuWHwwhnewnvEMcHjhnJLOBhA9rK4vmb8A==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.0.tgz", + "integrity": "sha512-x+7e5IqfwLwsxTdliHRtlIYkgdtYXzE0CkFeV6ytAqq431ZyxCFzNMNR5sr3WOlIG/ihVZr9K/y71VHTF/DUQA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.9.1", - "@typescript-eslint/visitor-keys": "5.9.1", + "@typescript-eslint/types": "5.10.0", + "@typescript-eslint/visitor-keys": "5.10.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -8501,13 +8453,27 @@ } } }, + "@typescript-eslint/utils": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.10.0.tgz", + "integrity": "sha512-IGYwlt1CVcFoE2ueW4/ioEwybR60RAdGeiJX/iDAw0t5w0wK3S7QncDwpmsM70nKgGTuVchEWB8lwZwHqPAWRg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.10.0", + "@typescript-eslint/types": "5.10.0", + "@typescript-eslint/typescript-estree": "5.10.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, "@typescript-eslint/visitor-keys": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.1.tgz", - "integrity": "sha512-Xh37pNz9e9ryW4TVdwiFzmr4hloty8cFj8GTWMXh3Z8swGwyQWeCcNgF0hm6t09iZd6eiZmIf4zHedQVP6TVtg==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.0.tgz", + "integrity": "sha512-GMxj0K1uyrFLPKASLmZzCuSddmjZVbVj3Ouy5QVuIGKZopxvOr24JsS7gruz6C3GExE01mublZ3mIBOaon9zuQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/types": "5.10.0", "eslint-visitor-keys": "^3.0.0" } }, @@ -8748,9 +8714,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001300", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001300.tgz", - "integrity": "sha512-cVjiJHWGcNlJi8TZVKNMnvMid3Z3TTdDHmLDzlOdIiZq138Exvo0G+G0wTdVYolxKb4AYwC+38pxodiInVtJSA==" + "version": "1.0.30001301", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001301.tgz", + "integrity": "sha512-csfD/GpHMqgEL3V3uIgosvh+SVIQvCh43SNu9HRbP1lnxkKm1kjDG4f32PP571JplkLjfS+mg2p1gxR7MYrrIA==" }, "chalk": { "version": "2.4.2", @@ -8955,9 +8921,9 @@ } }, "devtools-protocol": { - "version": "0.0.937139", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.937139.tgz", - "integrity": "sha512-daj+rzR3QSxsPRy5vjjthn58axO8c11j58uY0lG5vvlJk/EiOdCWOptGdkXDjtuRHr78emKq0udHCXM4trhoDQ==", + "version": "0.0.948846", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.948846.tgz", + "integrity": "sha512-5fGyt9xmMqUl2VI7+rnUkKCiAQIpLns8sfQtTENy5L70ktbNw0Z3TFJ1JoFNYdx/jffz4YXU45VF75wKZD7sZQ==", "dev": true }, "dir-glob": { @@ -8979,9 +8945,9 @@ } }, "electron-to-chromium": { - "version": "1.4.46", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.46.tgz", - "integrity": "sha512-UtV0xUA/dibCKKP2JMxOpDtXR74zABevuUEH4K0tvduFSIoxRVcYmQsbB51kXsFTX8MmOyWMt8tuZAlmDOqkrQ==" + "version": "1.4.51", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.51.tgz", + "integrity": "sha512-JNEmcYl3mk1tGQmy0EvL5eik/CKSBuzAyGP0QFdG6LIgxQe3II0BL1m2zKc2MZMf3uGqHWE1TFddJML0RpjSHQ==" }, "emoji-regex": { "version": "8.0.0", @@ -10016,9 +9982,9 @@ } }, "mdn-data": { - "version": "2.0.25", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.25.tgz", - "integrity": "sha512-AQ5BW06x903h845oyqFUzzppJSn4KhCecjsC29RiIeB40Crbw8jTTtce6oAmM1rwIXMyWkElbz1Fo+l7GBY8HQ==", + "version": "2.0.26", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.26.tgz", + "integrity": "sha512-agAtU1PRFd+fbo4Rog2A5DLnxmWvJ5+ZgbTekPj0Fil7mJFalWkg7VRyJW2FpGNc5u7VfiPoQ85u3gzp2p9iFQ==", "dev": true }, "merge-stream": { @@ -10631,24 +10597,6 @@ "postcss-replace-overflow-wrap": "^4.0.0", "postcss-selector-not": "^5.0.0", "postcss-simple-vars": "^6.0.3" - }, - "dependencies": { - "@csstools/postcss-is-pseudo-class": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-1.0.1.tgz", - "integrity": "sha512-Gli5WXeq1+Zb65Kl5xes+R4LiKWIO6FKYRxsbxkZEuTVN7/OnSkm5arpb4xHWYFUbx3Lejr8dFb3ljLP2C9e1w==", - "requires": { - "postcss-selector-parser": "^6.0.8" - } - }, - "postcss-custom-properties": { - "version": "12.1.3", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.3.tgz", - "integrity": "sha512-rtu3otIeY532PnEuuBrIIe+N+pcdbX/7JMZfrcL09wc78YayrHw5E8UkDfvnlOhEUrI4ptCuzXQfj+Or6spbGA==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - } } }, "postcss-pseudo-class-any-link": { @@ -10672,9 +10620,9 @@ } }, "postcss-selector-parser": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz", - "integrity": "sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ==", + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", "requires": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -10734,13 +10682,13 @@ "dev": true }, "puppeteer": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.0.1.tgz", - "integrity": "sha512-wqGIx59LzYqWhYcJQphMT+ux0sgatEUbjKG0lbjJxNVqVIT3ZC5m4Bvmq2gHE3qhb63EwS+rNkql08bm4BvO0A==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.1.1.tgz", + "integrity": "sha512-GwdFy1JQ43Hhxj6MraXme+XfCX2CKe18MuwToXTMEAk0txg6vUEgwqBnzErTTqDVZ7sWYrDtDaRCfD2y7ZwgGw==", "dev": true, "requires": { "debug": "4.3.2", - "devtools-protocol": "0.0.937139", + "devtools-protocol": "0.0.948846", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.0", "node-fetch": "2.6.5", @@ -10888,12 +10836,12 @@ "dev": true }, "resolve": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz", - "integrity": "sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "requires": { - "is-core-module": "^2.8.0", + "is-core-module": "^2.8.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -10936,9 +10884,9 @@ } }, "rollup": { - "version": "2.64.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.64.0.tgz", - "integrity": "sha512-+c+lbw1lexBKSMb1yxGDVfJ+vchJH3qLbmavR+awDinTDA2C5Ug9u7lkOzj62SCu0PKUExsW36tpgW7Fmpn3yQ==", + "version": "2.66.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.66.0.tgz", + "integrity": "sha512-L6mKOkdyP8HK5kKJXaiWG7KZDumPJjuo1P+cfyHOJPNNTK3Moe7zCH5+fy7v8pVmHXtlxorzaBjvkBMB23s98g==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -11052,9 +11000,9 @@ "dev": true }, "source-map-js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", - "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" }, "source-map-support": { "version": "0.5.21", @@ -11323,9 +11271,9 @@ } }, "typescript": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", - "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", + "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", "dev": true }, "unbzip2-stream": { diff --git a/packages/postcss-tape/src/index.ts b/packages/postcss-tape/src/index.ts index 1dc0e334f..73e3744cd 100644 --- a/packages/postcss-tape/src/index.ts +++ b/packages/postcss-tape/src/index.ts @@ -76,7 +76,7 @@ export default function runner(currentPlugin: PluginCreator) { // https://github.com/postcss/postcss/blob/main/docs/guidelines/plugin.md#54-include-postcss-plugin-keyword-in-packagejson // Include postcss-plugin keyword in package.json const packageInfo = JSON.parse(fs.readFileSync('./package.json').toString()); - if (!packageInfo.keywords.includes('postcss-plugin')) { + if (!packageInfo.keywords || !packageInfo.keywords.includes('postcss-plugin')) { hasErrors = true; if (emitGitHubAnnotations) { diff --git a/plugin-packs/postcss-preset-env/src/lib/get-options-for-browsers-by-feature.js b/plugin-packs/postcss-preset-env/src/lib/get-options-for-browsers-by-feature.js index 3acdeaf9a..bc7a59a82 100644 --- a/plugin-packs/postcss-preset-env/src/lib/get-options-for-browsers-by-feature.js +++ b/plugin-packs/postcss-preset-env/src/lib/get-options-for-browsers-by-feature.js @@ -7,6 +7,12 @@ export default function getOptionsForBrowsersByFeature(browsers, feature, cssdb) const supportedBrowsers = browserslist(browsers, { ignoreUnknownVersions: true }); switch (feature.id) { + case 'is-pseudo-class': + // Emit a warning to avoid making unresolved removal of `:is()` a feature. + // see : https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-is-pseudo-class#%EF%B8%8F-known-shortcomings + return { + onComplexSelector: 'warning', + }; case 'nesting-rules': { // Nesting rules can transform selectors to use :is pseudo. diff --git a/plugin-packs/postcss-preset-env/test/basic.autoprefixer.expect.css b/plugin-packs/postcss-preset-env/test/basic.autoprefixer.expect.css index 015979d36..5bc3f35d9 100644 --- a/plugin-packs/postcss-preset-env/test/basic.autoprefixer.expect.css +++ b/plugin-packs/postcss-preset-env/test/basic.autoprefixer.expect.css @@ -274,6 +274,10 @@ order: 27; } +.a.c > .b + .d { + order: 28; +} + .test-hwb-function { background-color: rgba(0, 195, 255, .5); } diff --git a/plugin-packs/postcss-preset-env/test/basic.autoprefixer.false.expect.css b/plugin-packs/postcss-preset-env/test/basic.autoprefixer.false.expect.css index 015979d36..5bc3f35d9 100644 --- a/plugin-packs/postcss-preset-env/test/basic.autoprefixer.false.expect.css +++ b/plugin-packs/postcss-preset-env/test/basic.autoprefixer.false.expect.css @@ -274,6 +274,10 @@ order: 27; } +.a.c > .b + .d { + order: 28; +} + .test-hwb-function { background-color: rgba(0, 195, 255, .5); } diff --git a/plugin-packs/postcss-preset-env/test/basic.ch38.expect.css b/plugin-packs/postcss-preset-env/test/basic.ch38.expect.css index 4f430eccd..e0311d118 100644 --- a/plugin-packs/postcss-preset-env/test/basic.ch38.expect.css +++ b/plugin-packs/postcss-preset-env/test/basic.ch38.expect.css @@ -194,6 +194,10 @@ order: 27; } +.a.c > .b + .d { + order: 28; +} + .test-hwb-function { background-color: rgba(0, 195, 255, .5); } diff --git a/plugin-packs/postcss-preset-env/test/basic.ch88-ff78-saf10.expect.css b/plugin-packs/postcss-preset-env/test/basic.ch88-ff78-saf10.expect.css index 9b7a40e46..a79ba8413 100644 --- a/plugin-packs/postcss-preset-env/test/basic.ch88-ff78-saf10.expect.css +++ b/plugin-packs/postcss-preset-env/test/basic.ch88-ff78-saf10.expect.css @@ -207,6 +207,10 @@ h1.test-custom-selectors,h2.test-custom-selectors,h3.test-custom-selectors,h4.te order: 27; } +.a.c > .b + .d { + order: 28; +} + .test-hwb-function { background-color: rgba(0, 195, 255, .5); } diff --git a/plugin-packs/postcss-preset-env/test/basic.ch88-ff78.expect.css b/plugin-packs/postcss-preset-env/test/basic.ch88-ff78.expect.css index 1fc85a45c..60ad86fa6 100644 --- a/plugin-packs/postcss-preset-env/test/basic.ch88-ff78.expect.css +++ b/plugin-packs/postcss-preset-env/test/basic.ch88-ff78.expect.css @@ -181,6 +181,10 @@ h1.test-custom-selectors,h2.test-custom-selectors,h3.test-custom-selectors,h4.te order: 27; } +:is(.a > .b) + :is(.c > .d) { + order: 28; +} + .test-hwb-function { background-color: rgba(0, 195, 255, .5); } diff --git a/plugin-packs/postcss-preset-env/test/basic.ch88-ff78.no-is-pseudo.expect.css b/plugin-packs/postcss-preset-env/test/basic.ch88-ff78.no-is-pseudo.expect.css index d461d88f7..c26a3d99d 100644 --- a/plugin-packs/postcss-preset-env/test/basic.ch88-ff78.no-is-pseudo.expect.css +++ b/plugin-packs/postcss-preset-env/test/basic.ch88-ff78.no-is-pseudo.expect.css @@ -181,6 +181,10 @@ h1.test-custom-selectors,h2.test-custom-selectors,h3.test-custom-selectors,h4.te order: 27; } +:is(.a > .b) + :is(.c > .d) { + order: 28; +} + .test-hwb-function { background-color: rgba(0, 195, 255, .5); } diff --git a/plugin-packs/postcss-preset-env/test/basic.css b/plugin-packs/postcss-preset-env/test/basic.css index 247832e23..23666b511 100644 --- a/plugin-packs/postcss-preset-env/test/basic.css +++ b/plugin-packs/postcss-preset-env/test/basic.css @@ -149,6 +149,10 @@ order: 27; } +:is(.a > .b) + :is(.c > .d) { + order: 28; +} + .test-hwb-function { background-color: hwb(194 0% 0% / .5); } diff --git a/plugin-packs/postcss-preset-env/test/basic.expect.css b/plugin-packs/postcss-preset-env/test/basic.expect.css index 811a34f0d..9b43239c7 100644 --- a/plugin-packs/postcss-preset-env/test/basic.expect.css +++ b/plugin-packs/postcss-preset-env/test/basic.expect.css @@ -298,6 +298,10 @@ order: 27; } +.a.c > .b + .d { + order: 28; +} + .test-hwb-function { background-color: rgba(0, 195, 255, .5); } diff --git a/plugin-packs/postcss-preset-env/test/basic.ff49.expect.css b/plugin-packs/postcss-preset-env/test/basic.ff49.expect.css index 5719cb949..c4ddb0188 100644 --- a/plugin-packs/postcss-preset-env/test/basic.ff49.expect.css +++ b/plugin-packs/postcss-preset-env/test/basic.ff49.expect.css @@ -190,6 +190,10 @@ order: 27; } +.a.c > .b + .d { + order: 28; +} + .test-hwb-function { background-color: rgba(0, 195, 255, .5); } diff --git a/plugin-packs/postcss-preset-env/test/basic.ff66.expect.css b/plugin-packs/postcss-preset-env/test/basic.ff66.expect.css index 1a0ca02bb..73f63026b 100644 --- a/plugin-packs/postcss-preset-env/test/basic.ff66.expect.css +++ b/plugin-packs/postcss-preset-env/test/basic.ff66.expect.css @@ -178,6 +178,10 @@ order: 27; } +.a.c > .b + .d { + order: 28; +} + .test-hwb-function { background-color: rgba(0, 195, 255, .5); } diff --git a/plugin-packs/postcss-preset-env/test/basic.ie10.expect.css b/plugin-packs/postcss-preset-env/test/basic.ie10.expect.css index 7f55771b3..5f08bbd6f 100644 --- a/plugin-packs/postcss-preset-env/test/basic.ie10.expect.css +++ b/plugin-packs/postcss-preset-env/test/basic.ie10.expect.css @@ -310,6 +310,11 @@ order: 27; } +.a.c > .b + .d { + -ms-flex-order: 28; + order: 28; +} + .test-hwb-function { background-color: rgba(0, 195, 255, .5); } diff --git a/plugin-packs/postcss-preset-env/test/basic.nesting.false.expect.css b/plugin-packs/postcss-preset-env/test/basic.nesting.false.expect.css index fb1b61c64..42d0e662c 100644 --- a/plugin-packs/postcss-preset-env/test/basic.nesting.false.expect.css +++ b/plugin-packs/postcss-preset-env/test/basic.nesting.false.expect.css @@ -310,6 +310,10 @@ h1.test-custom-selectors,h2.test-custom-selectors,h3.test-custom-selectors,h4.te order: 27; } +.a.c > .b + .d { + order: 28; +} + .test-hwb-function { background-color: rgba(0, 195, 255, .5); } diff --git a/plugin-packs/postcss-preset-env/test/basic.nesting.true.expect.css b/plugin-packs/postcss-preset-env/test/basic.nesting.true.expect.css index 1bdbd3309..81623503f 100644 --- a/plugin-packs/postcss-preset-env/test/basic.nesting.true.expect.css +++ b/plugin-packs/postcss-preset-env/test/basic.nesting.true.expect.css @@ -165,6 +165,10 @@ order: 27; } +:is(.a > .b) + :is(.c > .d) { + order: 28; +} + .test-hwb-function { background-color: hwb(194 0% 0% / .5); } diff --git a/plugin-packs/postcss-preset-env/test/basic.preserve.true.expect.css b/plugin-packs/postcss-preset-env/test/basic.preserve.true.expect.css index 5cf2557cd..a008490b5 100644 --- a/plugin-packs/postcss-preset-env/test/basic.preserve.true.expect.css +++ b/plugin-packs/postcss-preset-env/test/basic.preserve.true.expect.css @@ -561,6 +561,22 @@ h1.test-custom-selectors,h2.test-custom-selectors,h3.test-custom-selectors,h4.te order: 27; } +.a.c > .b + .d { + -webkit-box-ordinal-group: 29; + -webkit-order: 28; + -moz-box-ordinal-group: 29; + -ms-flex-order: 28; + order: 28; +} + +:is(.a > .b) + :is(.c > .d) { + -webkit-box-ordinal-group: 29; + -webkit-order: 28; + -moz-box-ordinal-group: 29; + -ms-flex-order: 28; + order: 28; +} + .test-hwb-function { background-color: rgba(0, 195, 255, .5); background-color: hwb(194 0% 0% / .5); diff --git a/plugin-packs/postcss-preset-env/test/basic.safari15.expect.css b/plugin-packs/postcss-preset-env/test/basic.safari15.expect.css index 35239eca8..d74f6c898 100644 --- a/plugin-packs/postcss-preset-env/test/basic.safari15.expect.css +++ b/plugin-packs/postcss-preset-env/test/basic.safari15.expect.css @@ -165,6 +165,10 @@ order: 27; } +:is(.a > .b) + :is(.c > .d) { + order: 28; +} + .test-hwb-function { background-color: hwb(194 0% 0% / .5); } diff --git a/plugin-packs/postcss-preset-env/test/basic.stage0-ff49.expect.css b/plugin-packs/postcss-preset-env/test/basic.stage0-ff49.expect.css index 3210862f7..388f6ba7f 100644 --- a/plugin-packs/postcss-preset-env/test/basic.stage0-ff49.expect.css +++ b/plugin-packs/postcss-preset-env/test/basic.stage0-ff49.expect.css @@ -209,6 +209,10 @@ h1.test-custom-selectors,h2.test-custom-selectors,h3.test-custom-selectors,h4.te order: 27; } +.a.c > .b + .d { + order: 28; +} + .test-hwb-function { background-color: rgba(0, 195, 255, .5); } diff --git a/plugin-packs/postcss-preset-env/test/basic.stage0-ff66.expect.css b/plugin-packs/postcss-preset-env/test/basic.stage0-ff66.expect.css index 5f8bd68f1..4085ba340 100644 --- a/plugin-packs/postcss-preset-env/test/basic.stage0-ff66.expect.css +++ b/plugin-packs/postcss-preset-env/test/basic.stage0-ff66.expect.css @@ -197,6 +197,10 @@ h1.test-custom-selectors,h2.test-custom-selectors,h3.test-custom-selectors,h4.te order: 27; } +.a.c > .b + .d { + order: 28; +} + .test-hwb-function { background-color: rgba(0, 195, 255, .5); } diff --git a/plugin-packs/postcss-preset-env/test/basic.stage0.expect.css b/plugin-packs/postcss-preset-env/test/basic.stage0.expect.css index ea5fc8755..d780e6721 100644 --- a/plugin-packs/postcss-preset-env/test/basic.stage0.expect.css +++ b/plugin-packs/postcss-preset-env/test/basic.stage0.expect.css @@ -317,6 +317,10 @@ h1.test-custom-selectors,h2.test-custom-selectors,h3.test-custom-selectors,h4.te order: 27; } +.a.c > .b + .d { + order: 28; +} + .test-hwb-function { background-color: rgba(0, 195, 255, .5); } diff --git a/plugins/postcss-is-pseudo-class/.tape.js b/plugins/postcss-is-pseudo-class/.tape.mjs similarity index 76% rename from plugins/postcss-is-pseudo-class/.tape.js rename to plugins/postcss-is-pseudo-class/.tape.mjs index 5e97a3e0a..3ea2dd400 100644 --- a/plugins/postcss-is-pseudo-class/.tape.js +++ b/plugins/postcss-is-pseudo-class/.tape.mjs @@ -1,9 +1,9 @@ -module.exports = { +import postcssTape from '../../packages/postcss-tape/dist/index.mjs'; +import plugin from '@csstools/postcss-is-pseudo-class'; + +postcssTape(plugin)({ basic: { message: "supports basic usage", - options: { - oncomplex: 'ignore' - } }, 'basic:preserve': { message: "supports basic usage with { preserve: true }", @@ -19,17 +19,11 @@ module.exports = { }, 'basic:oncomplex:warning': { message: "supports basic usage with { onComplexSelector: 'warning' }", - warnings: 3, + warnings: 8, options: { onComplexSelector: 'warning' } }, - 'basic:oncomplex:skip': { - message: "supports basic usage with { onComplexSelector: 'skip' }", - options: { - onComplexSelector: 'skip' - } - }, 'generated-selector-class-function-cases': { message: "supports generated selector class function cases", warnings: 1, @@ -40,4 +34,4 @@ module.exports = { example: { message: "minimal example", }, -}; +}); diff --git a/plugins/postcss-is-pseudo-class/CHANGELOG.md b/plugins/postcss-is-pseudo-class/CHANGELOG.md index 328c9b675..de4073aa2 100644 --- a/plugins/postcss-is-pseudo-class/CHANGELOG.md +++ b/plugins/postcss-is-pseudo-class/CHANGELOG.md @@ -1,5 +1,13 @@ # Changes to PostCSS Is Pseudo Class +### Unreleased (major) + +- Remove `skip` flag in `onComplexSelectors` option. + +If a complex selector is encountered that has no known equivalent, it will always be skipped and preserved now. + +The previous behavior was to remove `:is()` even if that broke the selector. + ### 1.0.1 (January 17, 2022) - Fix selector order diff --git a/plugins/postcss-is-pseudo-class/README.md b/plugins/postcss-is-pseudo-class/README.md index 7a0b31f4c..5f4fc4cad 100644 --- a/plugins/postcss-is-pseudo-class/README.md +++ b/plugins/postcss-is-pseudo-class/README.md @@ -128,14 +128,6 @@ button:not(.something-random):hover { ### onComplexSelector -Do not transform complex selectors in `:is` pseudo classes. - -```js -postcss([ - postcssIsPseudoClass({ onComplexSelector: 'skip' }) -]).process(YOUR_CSS /*, processOptions */); -``` - Warn on complex selectors in `:is` pseudo classes. ```js diff --git a/plugins/postcss-is-pseudo-class/package.json b/plugins/postcss-is-pseudo-class/package.json index e338047d7..ec4c117ad 100644 --- a/plugins/postcss-is-pseudo-class/package.json +++ b/plugins/postcss-is-pseudo-class/package.json @@ -31,19 +31,26 @@ "lint": "eslint ./src --ext .js --ext .ts --ext .mjs --no-error-on-unmatched-pattern", "prepublishOnly": "npm run clean && npm run build && npm run test", "stryker": "stryker run --logLevel error", - "test": "postcss-tape --ci && npm run test:exports", + "test": "node .tape.mjs && npm run test:exports", + "test:rewrite-expects": "REWRITE_EXPECTS=true node .tape.mjs", "test:exports": "node ./test/_import.mjs && node ./test/_require.cjs" }, "dependencies": { "postcss-selector-parser": "^6.0.8" }, - "devDependencies": { - "postcss": "^8.3.6", - "postcss-tape": "^6.0.1" - }, "peerDependencies": { "postcss": "^8.3" }, + "keywords": [ + "postcss", + "css", + "postcss-plugin", + "matches", + "is", + "selector", + "polyfill", + "pseudo" + ], "repository": { "type": "git", "url": "https://github.com/csstools/postcss-plugins.git", diff --git a/plugins/postcss-is-pseudo-class/src/index.ts b/plugins/postcss-is-pseudo-class/src/index.ts index 0f0f40763..4c74c917e 100644 --- a/plugins/postcss-is-pseudo-class/src/index.ts +++ b/plugins/postcss-is-pseudo-class/src/index.ts @@ -1,7 +1,7 @@ import type { PluginCreator } from 'postcss'; import splitSelectors from './split-selectors/split-selectors'; -const creator: PluginCreator<{ preserve?: boolean, onComplexSelector?: 'warning' | 'skip', specificityMatchingName?: string }> = (opts?: { preserve?: boolean, onComplexSelector?: 'warning' | 'skip', specificityMatchingName?: string }) => { +const creator: PluginCreator<{ preserve?: boolean, onComplexSelector?: 'warning', specificityMatchingName?: string }> = (opts?: { preserve?: boolean, onComplexSelector?: 'warning', specificityMatchingName?: string }) => { const options = { specificityMatchingName: 'does-not-exist', ...(opts || {}), @@ -29,7 +29,7 @@ const creator: PluginCreator<{ preserve?: boolean, onComplexSelector?: 'warning' } didWarn = true; - rule.warn(result, `Complex selectors in '${rule.selector}' will have different matching after transforming.`); + rule.warn(result, `Complex selectors in '${rule.selector}' can not be transformed to an equivalent selector without ':is()'.`); }; try { @@ -61,6 +61,11 @@ const creator: PluginCreator<{ preserve?: boolean, onComplexSelector?: 'warning' rule.remove(); } } catch (e) { + // Do not ignore infinite recursion errors. + if (e.message.indexOf('call stack size exceeded') > -1) { + throw e; + } + rule.warn(result, `Failed to parse selector "${rule.selector}"`); } }, diff --git a/plugins/postcss-is-pseudo-class/src/split-selectors/complex/README.md b/plugins/postcss-is-pseudo-class/src/split-selectors/complex/README.md new file mode 100644 index 000000000..b3fff4a16 --- /dev/null +++ b/plugins/postcss-is-pseudo-class/src/split-selectors/complex/README.md @@ -0,0 +1,4 @@ +Some patterns can be detected and converted. +This is very difficult to abstract, so best to handle this case by case on request. + +Make each case a separate file and write a very specific matcher. diff --git a/plugins/postcss-is-pseudo-class/src/split-selectors/complex.ts b/plugins/postcss-is-pseudo-class/src/split-selectors/complex/child-adjacent-child.ts similarity index 80% rename from plugins/postcss-is-pseudo-class/src/split-selectors/complex.ts rename to plugins/postcss-is-pseudo-class/src/split-selectors/complex/child-adjacent-child.ts index 2640aae67..d45cfe3ab 100644 --- a/plugins/postcss-is-pseudo-class/src/split-selectors/complex.ts +++ b/plugins/postcss-is-pseudo-class/src/split-selectors/complex/child-adjacent-child.ts @@ -1,76 +1,78 @@ -// Some patterns can be detected and converted. -// This is very difficult to abstract, so best to handle this case by case on request. - // :is(.a > .b) + :is(.c > .d) // equivalent to // .a.c > .b + .d // because a adjacent elements have the same parent element. -export function childAdjacentChild(selector) { +export function childAdjacentChild(selector): boolean { if (!selector || !selector.nodes) { - return; + return false; } if (selector.type !== 'selector') { - return; + return false; } if (selector.nodes.length !== 3) { - return; + return false; } if (!selector.nodes[0] || selector.nodes[0].type !== 'pseudo' || selector.nodes[0].value !== ':is') { - return; + return false; } // adjacent combinator if (!selector.nodes[1] || selector.nodes[1].type !== 'combinator' || selector.nodes[1].value !== '+') { - return; + return false; } if (!selector.nodes[2] || selector.nodes[2].type !== 'pseudo' || selector.nodes[2].value !== ':is') { - return; + return false; } // first `:is` { if (!selector.nodes[0].nodes || selector.nodes[0].nodes.length !== 1) { - return; + return false; } if (selector.nodes[0].nodes[0].type !== 'selector') { - return; + return false; } if (!selector.nodes[0].nodes[0].nodes || selector.nodes[0].nodes[0].nodes.length !== 3) { - return; + return false; } // child combinator if (!selector.nodes[0].nodes[0].nodes || selector.nodes[0].nodes[0].nodes[1].type !== 'combinator' || selector.nodes[0].nodes[0].nodes[1].value !== '>') { - return; + return false; } } // second `:is` { if (!selector.nodes[2].nodes || selector.nodes[2].nodes.length !== 1) { - return; + return false; } if (selector.nodes[2].nodes[0].type !== 'selector') { - return; + return false; } if (!selector.nodes[2].nodes[0].nodes || selector.nodes[2].nodes[0].nodes.length !== 3) { - return; + return false; } // child combinator if (!selector.nodes[2].nodes[0].nodes || selector.nodes[2].nodes[0].nodes[1].type !== 'combinator' || selector.nodes[2].nodes[0].nodes[1].value !== '>') { - return; + return false; } } selector.nodes[0].nodes[0].insertAfter(selector.nodes[0].nodes[0].nodes[0], selector.nodes[2].nodes[0].nodes[0].clone()); selector.nodes[2].nodes[0].nodes[1].remove(); selector.nodes[2].nodes[0].nodes[0].remove(); + + selector.nodes[0].replaceWith(selector.nodes[0].nodes[0]); + selector.nodes[2].replaceWith(selector.nodes[2].nodes[0]); + + return true; } diff --git a/plugins/postcss-is-pseudo-class/src/split-selectors/complex/is-in-compound.ts b/plugins/postcss-is-pseudo-class/src/split-selectors/complex/is-in-compound.ts new file mode 100644 index 000000000..e60ba5af7 --- /dev/null +++ b/plugins/postcss-is-pseudo-class/src/split-selectors/complex/is-in-compound.ts @@ -0,0 +1,51 @@ +// .a:is(.b > .c) +// equivalent to +// .b > .c.a +// +// :is(.b > .c).a +// equivalent to +// .b > .c.a +// +// because `:is()` matches the final element of the selector, +export function isInCompoundWithOneOtherElement(selector): boolean { + if (!selector || !selector.nodes) { + return false; + } + if (selector.type !== 'selector') { + return false; + } + + if (selector.nodes.length !== 2) { + return false; + } + + let isPseudoIndex; + let simpleSelectorIndex; + if (selector.nodes[0] && selector.nodes[0].type === 'pseudo' && selector.nodes[0].value === ':is') { + isPseudoIndex = 0; + simpleSelectorIndex = 1; + } else if (selector.nodes[1] && selector.nodes[1].type === 'pseudo' && selector.nodes[1].value === ':is') { + isPseudoIndex = 1; + simpleSelectorIndex = 0; + } + + if (!isPseudoIndex) { + return false; + } + + if (!selector.nodes[simpleSelectorIndex]) { + return false; + } + + if (selector.nodes[simpleSelectorIndex].type === 'selector') { + if (selector.nodes[simpleSelectorIndex].some((x) => x.type === 'combinator')) { + return false; + } + } + + selector.nodes[isPseudoIndex].append(selector.nodes[simpleSelectorIndex].clone()); + selector.nodes[isPseudoIndex].replaceWith(...selector.nodes[isPseudoIndex].nodes); + selector.nodes[simpleSelectorIndex].remove(); + + return true; +} diff --git a/plugins/postcss-is-pseudo-class/src/split-selectors/split-selectors.ts b/plugins/postcss-is-pseudo-class/src/split-selectors/split-selectors.ts index ee705f5ca..fc11afc4c 100644 --- a/plugins/postcss-is-pseudo-class/src/split-selectors/split-selectors.ts +++ b/plugins/postcss-is-pseudo-class/src/split-selectors/split-selectors.ts @@ -1,9 +1,10 @@ import parser from 'postcss-selector-parser'; import { selectorSpecificity } from './specificity'; import { sortCompoundSelectorsInsideComplexSelector } from './compound-selector-order'; -import { childAdjacentChild } from './complex'; +import { childAdjacentChild } from './complex/child-adjacent-child'; +import { isInCompoundWithOneOtherElement } from './complex/is-in-compound'; -export default function splitSelectors(selectors: string[], pluginOptions: { preserve?: boolean, onComplexSelector?: 'warning' | 'skip', specificityMatchingName: string }, warnFn: () => void) { +export default function splitSelectors(selectors: string[], pluginOptions: { preserve?: boolean, onComplexSelector?: 'warning', specificityMatchingName: string }, warnFn: () => void, recursionDepth = 0) { const specificityMatchingNameId = ':not(#' + pluginOptions.specificityMatchingName + ')'; const specificityMatchingNameClass = ':not(.' + pluginOptions.specificityMatchingName + ')'; const specificityMatchingNameTag = ':not(' + pluginOptions.specificityMatchingName + ')'; @@ -17,26 +18,6 @@ export default function splitSelectors(selectors: string[], pluginOptions: { pre const replacements = []; const selectorAST = parser().astSync(selector); - - if (pluginOptions.onComplexSelector === 'skip') { - let hasComplexSelectors = false; - selectorAST.walkPseudos((pseudo) => { - if (pseudo.value !== ':is' || !pseudo.nodes || !pseudo.nodes.length) { - return; - } - pseudo.nodes.forEach((child) => { - child.nodes.forEach((grandChild) => { - if (grandChild.type === 'combinator') { - hasComplexSelectors = true; - } - }); - }); - }); - if (hasComplexSelectors) { - return [selector]; - } - } - selectorAST.walkPseudos((pseudo) => { if (pseudo.value !== ':is' || !pseudo.nodes || !pseudo.nodes.length) { return; @@ -111,12 +92,14 @@ export default function splitSelectors(selectors: string[], pluginOptions: { pre results.push(result); }); + let hasComplexSelectors = false; let formattedResults = results.map((x) => { const modifiedSelectorAST = parser().astSync(x); // Handle complex selector cases modifiedSelectorAST.walk((node) => { - childAdjacentChild(node); + childAdjacentChild(node) || + isInCompoundWithOneOtherElement(node); }); // Remove `:is` with single elements @@ -127,11 +110,18 @@ export default function splitSelectors(selectors: string[], pluginOptions: { pre // Warn when `:is` contains a complex selector. pseudo.nodes.forEach((child) => { - if (child.some((node) => node.type === 'combinator')) { + if (child.type === 'selector' && child.some((grandChild) => grandChild.type === 'combinator')) { warnFn(); + hasComplexSelectors = true; } }); + if (pseudo.nodes[0].type === 'selector' && pseudo.nodes[0].nodes) { + if (pseudo.nodes[0].nodes.length !== 1 && pseudo.nodes[0].some((y) => y.type === 'combinator')) { + return; + } + } + pseudo.replaceWith(pseudo.nodes[0]); }); @@ -147,9 +137,13 @@ export default function splitSelectors(selectors: string[], pluginOptions: { pre return modifiedSelectorAST.toString(); }); - if (foundNestedIs) { + if (hasComplexSelectors) { + return [selector]; + } + + if (foundNestedIs && recursionDepth < 10) { // recursion to transform `:is(a :is(b,c))` - formattedResults = splitSelectors(formattedResults, pluginOptions, warnFn); + formattedResults = splitSelectors(formattedResults, pluginOptions, warnFn, recursionDepth + 1); } return formattedResults; diff --git a/plugins/postcss-is-pseudo-class/test/basic.css b/plugins/postcss-is-pseudo-class/test/basic.css index 751e172c6..94566a2d5 100644 --- a/plugins/postcss-is-pseudo-class/test/basic.css +++ b/plugins/postcss-is-pseudo-class/test/basic.css @@ -38,14 +38,46 @@ foo[baz=":is(.some, .other)"], .ok { order: 10; } -:is(.alpha > .beta, .one > .two) + :is(:focus > .beta, :focus > .two) { +.pre:is(.alpha > .beta) + :is(:focus > .beta) { order: 11; } -:is(.alpha > .beta) ~ :is(:focus > .beta) { +.pre :is(.alpha > .beta)+ :is(:focus > .beta) { order: 12; } -.alpha .beta > :is(h1, h2, h3, h4, h5, h6):not([attr*="foo-"]) { +:is(.alpha > .beta).post + :is(:focus > .beta) { order: 13; } + +:is(.alpha > .beta) .post + :is(:focus > .beta) { + order: 14; +} + +:is(:is(.alpha ~ .delta) > .beta) + :is(:focus > .beta) { + order: 15; +} + +:is(.alpha > .beta, .one > .two) + :is(:focus > .beta, :focus > .two) { + order: 16; +} + +:is(.alpha > .beta) ~ :is(:focus > .beta) { + order: 17; +} + +.alpha .beta > :is(h1, h2, h3, h4, h5, h6):not([attr*="foo-"]) { + order: 18; +} + +.alpha:is(.one > .two) { + order: 19; +} + +.pre.alpha:is(.one > .two) { + order: 20; +} + +.pre .alpha:is(.one > .two) { + order: 21; +} diff --git a/plugins/postcss-is-pseudo-class/test/basic.does-not-exist.expect.css b/plugins/postcss-is-pseudo-class/test/basic.does-not-exist.expect.css index 529d9425d..b5068f446 100644 --- a/plugins/postcss-is-pseudo-class/test/basic.does-not-exist.expect.css +++ b/plugins/postcss-is-pseudo-class/test/basic.does-not-exist.expect.css @@ -198,46 +198,78 @@ foo[baz=":is(.some, .other)"], .ok { order: 10; } -.alpha:focus > .beta + .beta { +.pre:is(.alpha > .beta) + :is(:focus > .beta) { order: 11; } +.pre :is(.alpha > .beta)+ :is(:focus > .beta) { + order: 12; +} + +:is(.alpha > .beta).post + :is(:focus > .beta) { + order: 13; +} + +:is(.alpha > .beta) .post + :is(:focus > .beta) { + order: 14; +} + +:is(:is(.alpha ~ .delta) > .beta) + :is(:focus > .beta) { + order: 15; +} + +.alpha:focus > .beta + .beta { + order: 16; +} + .alpha:focus > .beta + .two { - order: 11; + order: 16; } .one:focus > .two + .beta { - order: 11; + order: 16; } .one:focus > .two + .two { - order: 11; + order: 16; } -.alpha > .beta ~ :focus > .beta { - order: 12; +:is(.alpha > .beta) ~ :is(:focus > .beta) { + order: 17; } .alpha .beta > h1:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h2:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h3:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h4:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h5:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h6:not([attr*="foo-"]) { - order: 13; + order: 18; +} + +.one > .two.alpha { + order: 19; +} + +.pre.alpha:is(.one > .two) { + order: 20; +} + +.pre .alpha:is(.one > .two) { + order: 21; } diff --git a/plugins/postcss-is-pseudo-class/test/basic.expect.css b/plugins/postcss-is-pseudo-class/test/basic.expect.css index 2bcde8e11..5bf065bbd 100644 --- a/plugins/postcss-is-pseudo-class/test/basic.expect.css +++ b/plugins/postcss-is-pseudo-class/test/basic.expect.css @@ -198,46 +198,78 @@ foo[baz=":is(.some, .other)"], .ok { order: 10; } -.alpha:focus > .beta + .beta { +.pre:is(.alpha > .beta) + :is(:focus > .beta) { order: 11; } +.pre :is(.alpha > .beta)+ :is(:focus > .beta) { + order: 12; +} + +:is(.alpha > .beta).post + :is(:focus > .beta) { + order: 13; +} + +:is(.alpha > .beta) .post + :is(:focus > .beta) { + order: 14; +} + +:is(:is(.alpha ~ .delta) > .beta) + :is(:focus > .beta) { + order: 15; +} + +.alpha:focus > .beta + .beta { + order: 16; +} + .alpha:focus > .beta + .two { - order: 11; + order: 16; } .one:focus > .two + .beta { - order: 11; + order: 16; } .one:focus > .two + .two { - order: 11; + order: 16; } -.alpha > .beta ~ :focus > .beta { - order: 12; +:is(.alpha > .beta) ~ :is(:focus > .beta) { + order: 17; } .alpha .beta > h1:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h2:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h3:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h4:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h5:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h6:not([attr*="foo-"]) { - order: 13; + order: 18; +} + +.one > .two.alpha { + order: 19; +} + +.pre.alpha:is(.one > .two) { + order: 20; +} + +.pre .alpha:is(.one > .two) { + order: 21; } diff --git a/plugins/postcss-is-pseudo-class/test/basic.oncomplex.skip.expect.css b/plugins/postcss-is-pseudo-class/test/basic.oncomplex.skip.expect.css index 5c6cbb68b..52c69da9a 100644 --- a/plugins/postcss-is-pseudo-class/test/basic.oncomplex.skip.expect.css +++ b/plugins/postcss-is-pseudo-class/test/basic.oncomplex.skip.expect.css @@ -194,38 +194,74 @@ foo[baz=":is(.some, .other)"], .ok { order: 9; } -:is(.alpha > .beta) + :is(:focus > .beta) { +.alpha:focus > .beta + .beta { order: 10; } -:is(.alpha > .beta, .one > .two) + :is(:focus > .beta, :focus > .two) { +.pre:is(.alpha > .beta) + :is(:focus > .beta) { order: 11; } -:is(.alpha > .beta) ~ :is(:focus > .beta) { +.pre :is(.alpha > .beta)+ :is(:focus > .beta) { order: 12; } -.alpha .beta > h1:not([attr*="foo-"]) { +:is(.alpha > .beta).post + :is(:focus > .beta) { order: 13; } +:is(.alpha > .beta) .post + :is(:focus > .beta) { + order: 14; +} + +:is(:is(.alpha ~ .delta) > .beta) + :is(:focus > .beta) { + order: 15; +} + +.alpha:focus > .beta + .beta { + order: 16; +} + +.alpha:focus > .beta + .two { + order: 16; +} + +.one:focus > .two + .beta { + order: 16; +} + +.one:focus > .two + .two { + order: 16; +} + +:is(.alpha > .beta) ~ :is(:focus > .beta) { + order: 17; +} + +.alpha .beta > h1:not([attr*="foo-"]) { + order: 18; +} + .alpha .beta > h2:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h3:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h4:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h5:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h6:not([attr*="foo-"]) { - order: 13; + order: 18; +} + +.one > .two.alpha { + order: 19; } diff --git a/plugins/postcss-is-pseudo-class/test/basic.oncomplex.warning.expect.css b/plugins/postcss-is-pseudo-class/test/basic.oncomplex.warning.expect.css index 2bcde8e11..5bf065bbd 100644 --- a/plugins/postcss-is-pseudo-class/test/basic.oncomplex.warning.expect.css +++ b/plugins/postcss-is-pseudo-class/test/basic.oncomplex.warning.expect.css @@ -198,46 +198,78 @@ foo[baz=":is(.some, .other)"], .ok { order: 10; } -.alpha:focus > .beta + .beta { +.pre:is(.alpha > .beta) + :is(:focus > .beta) { order: 11; } +.pre :is(.alpha > .beta)+ :is(:focus > .beta) { + order: 12; +} + +:is(.alpha > .beta).post + :is(:focus > .beta) { + order: 13; +} + +:is(.alpha > .beta) .post + :is(:focus > .beta) { + order: 14; +} + +:is(:is(.alpha ~ .delta) > .beta) + :is(:focus > .beta) { + order: 15; +} + +.alpha:focus > .beta + .beta { + order: 16; +} + .alpha:focus > .beta + .two { - order: 11; + order: 16; } .one:focus > .two + .beta { - order: 11; + order: 16; } .one:focus > .two + .two { - order: 11; + order: 16; } -.alpha > .beta ~ :focus > .beta { - order: 12; +:is(.alpha > .beta) ~ :is(:focus > .beta) { + order: 17; } .alpha .beta > h1:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h2:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h3:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h4:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h5:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h6:not([attr*="foo-"]) { - order: 13; + order: 18; +} + +.one > .two.alpha { + order: 19; +} + +.pre.alpha:is(.one > .two) { + order: 20; +} + +.pre .alpha:is(.one > .two) { + order: 21; } diff --git a/plugins/postcss-is-pseudo-class/test/basic.preserve.expect.css b/plugins/postcss-is-pseudo-class/test/basic.preserve.expect.css index af54a9bf2..ee2dd0eae 100644 --- a/plugins/postcss-is-pseudo-class/test/basic.preserve.expect.css +++ b/plugins/postcss-is-pseudo-class/test/basic.preserve.expect.css @@ -234,58 +234,90 @@ foo[baz=":is(.some, .other)"], .ok { order: 10; } -.alpha:focus > .beta + .beta { +.pre:is(.alpha > .beta) + :is(:focus > .beta) { order: 11; } +.pre :is(.alpha > .beta)+ :is(:focus > .beta) { + order: 12; +} + +:is(.alpha > .beta).post + :is(:focus > .beta) { + order: 13; +} + +:is(.alpha > .beta) .post + :is(:focus > .beta) { + order: 14; +} + +:is(:is(.alpha ~ .delta) > .beta) + :is(:focus > .beta) { + order: 15; +} + +.alpha:focus > .beta + .beta { + order: 16; +} + .alpha:focus > .beta + .two { - order: 11; + order: 16; } .one:focus > .two + .beta { - order: 11; + order: 16; } .one:focus > .two + .two { - order: 11; + order: 16; } :is(.alpha > .beta, .one > .two) + :is(:focus > .beta, :focus > .two) { - order: 11; -} - -.alpha > .beta ~ :focus > .beta { - order: 12; + order: 16; } :is(.alpha > .beta) ~ :is(:focus > .beta) { - order: 12; + order: 17; } .alpha .beta > h1:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h2:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h3:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h4:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h5:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > h6:not([attr*="foo-"]) { - order: 13; + order: 18; } .alpha .beta > :is(h1, h2, h3, h4, h5, h6):not([attr*="foo-"]) { - order: 13; + order: 18; +} + +.one > .two.alpha { + order: 19; +} + +.alpha:is(.one > .two) { + order: 19; +} + +.pre.alpha:is(.one > .two) { + order: 20; +} + +.pre .alpha:is(.one > .two) { + order: 21; } diff --git a/plugins/postcss-is-pseudo-class/test/generated-selector-class-function-cases.expect.css b/plugins/postcss-is-pseudo-class/test/generated-selector-class-function-cases.expect.css index c431f1743..a00687cce 100644 --- a/plugins/postcss-is-pseudo-class/test/generated-selector-class-function-cases.expect.css +++ b/plugins/postcss-is-pseudo-class/test/generated-selector-class-function-cases.expect.css @@ -98,22 +98,6 @@ order: 4; } -.some .some { - order: 5; -} - -.some .other { - order: 5; -} - -.other .some { - order: 5; -} - -.other .other { - order: 5; -} - :is(:is(.some, .other) :is(.some, .other)) { order: 5; } @@ -158,22 +142,6 @@ order: 7; } -.some .some { - order: 8; -} - -.some .other { - order: 8; -} - -.other .some { - order: 8; -} - -.other .other { - order: 8; -} - :is(:is(.some, .other) :is(.some, .other)) { order: 8; } @@ -218,22 +186,6 @@ order: 10; } -.some+.some { - order: 11; -} - -.some+.other { - order: 11; -} - -.other+.some { - order: 11; -} - -.other+.other { - order: 11; -} - :is(:is(.some, .other)+:is(.some, .other)) { order: 11; } @@ -278,22 +230,6 @@ order: 13; } -.some + .some { - order: 14; -} - -.some + .other { - order: 14; -} - -.other + .some { - order: 14; -} - -.other + .other { - order: 14; -} - :is(:is(.some, .other) + :is(.some, .other)) { order: 14; } @@ -338,22 +274,6 @@ order: 16; } -.some~.some { - order: 17; -} - -.some~.other { - order: 17; -} - -.other~.some { - order: 17; -} - -.other~.other { - order: 17; -} - :is(:is(.some, .other)~:is(.some, .other)) { order: 17; } @@ -398,22 +318,6 @@ order: 19; } -.some ~ .some { - order: 20; -} - -.some ~ .other { - order: 20; -} - -.other ~ .some { - order: 20; -} - -.other ~ .other { - order: 20; -} - :is(:is(.some, .other) ~ :is(.some, .other)) { order: 20; } @@ -458,22 +362,6 @@ order: 22; } -.some>.some { - order: 23; -} - -.some>.other { - order: 23; -} - -.other>.some { - order: 23; -} - -.other>.other { - order: 23; -} - :is(:is(.some, .other)>:is(.some, .other)) { order: 23; } @@ -518,22 +406,6 @@ order: 25; } -.some > .some { - order: 26; -} - -.some > .other { - order: 26; -} - -.other > .some { - order: 26; -} - -.other > .other { - order: 26; -} - :is(:is(.some, .other) > :is(.some, .other)) { order: 26; } @@ -646,10 +518,6 @@ button :is(.some, .other) { order: 34; } -button button { - order: 35; -} - :is(button button) { order: 35; } @@ -678,10 +546,6 @@ button :is(.some, .other) { order: 37; } -button button { - order: 38; -} - :is(button button) { order: 38; } @@ -710,10 +574,6 @@ button+:is(.some, .other) { order: 40; } -button+button { - order: 41; -} - :is(button+button) { order: 41; } @@ -742,10 +602,6 @@ button + :is(.some, .other) { order: 43; } -button + button { - order: 44; -} - :is(button + button) { order: 44; } @@ -774,10 +630,6 @@ button~:is(.some, .other) { order: 46; } -button~button { - order: 47; -} - :is(button~button) { order: 47; } @@ -806,10 +658,6 @@ button ~ :is(.some, .other) { order: 49; } -button ~ button { - order: 50; -} - :is(button ~ button) { order: 50; } @@ -838,10 +686,6 @@ button>:is(.some, .other) { order: 52; } -button>button { - order: 53; -} - :is(button>button) { order: 53; } @@ -870,10 +714,6 @@ button > :is(.some, .other) { order: 55; } -button > button { - order: 56; -} - :is(button > button) { order: 56; } @@ -918,11 +758,11 @@ button { order: 59; } -.🧑🏾‍🎤.some { +.some.🧑🏾‍🎤 { order: 60; } -.🧑🏾‍🎤.other { +.other.🧑🏾‍🎤 { order: 60; } @@ -974,10 +814,6 @@ button { order: 64; } -.🧑🏾‍🎤 .🧑🏾‍🎤 { - order: 65; -} - :is(.🧑🏾‍🎤 .🧑🏾‍🎤) { order: 65; } @@ -1006,10 +842,6 @@ button { order: 67; } -.🧑🏾‍🎤 .🧑🏾‍🎤 { - order: 68; -} - :is(.🧑🏾‍🎤 .🧑🏾‍🎤) { order: 68; } @@ -1038,10 +870,6 @@ button { order: 70; } -.🧑🏾‍🎤+.🧑🏾‍🎤 { - order: 71; -} - :is(.🧑🏾‍🎤+.🧑🏾‍🎤) { order: 71; } @@ -1070,10 +898,6 @@ button { order: 73; } -.🧑🏾‍🎤 + .🧑🏾‍🎤 { - order: 74; -} - :is(.🧑🏾‍🎤 + .🧑🏾‍🎤) { order: 74; } @@ -1102,10 +926,6 @@ button { order: 76; } -.🧑🏾‍🎤~.🧑🏾‍🎤 { - order: 77; -} - :is(.🧑🏾‍🎤~.🧑🏾‍🎤) { order: 77; } @@ -1134,10 +954,6 @@ button { order: 79; } -.🧑🏾‍🎤 ~ .🧑🏾‍🎤 { - order: 80; -} - :is(.🧑🏾‍🎤 ~ .🧑🏾‍🎤) { order: 80; } @@ -1166,10 +982,6 @@ button { order: 82; } -.🧑🏾‍🎤>.🧑🏾‍🎤 { - order: 83; -} - :is(.🧑🏾‍🎤>.🧑🏾‍🎤) { order: 83; } @@ -1198,10 +1010,6 @@ button { order: 85; } -.🧑🏾‍🎤 > .🧑🏾‍🎤 { - order: 86; -} - :is(.🧑🏾‍🎤 > .🧑🏾‍🎤) { order: 86; } @@ -1246,11 +1054,11 @@ button { order: 89; } -.foo.some { +.some.foo { order: 90; } -.foo.other { +.other.foo { order: 90; } @@ -1302,10 +1110,6 @@ button { order: 94; } -.foo .foo { - order: 95; -} - :is(.foo .foo) { order: 95; } @@ -1334,10 +1138,6 @@ button { order: 97; } -.foo .foo { - order: 98; -} - :is(.foo .foo) { order: 98; } @@ -1366,10 +1166,6 @@ button { order: 100; } -.foo+.foo { - order: 101; -} - :is(.foo+.foo) { order: 101; } @@ -1398,10 +1194,6 @@ button { order: 103; } -.foo + .foo { - order: 104; -} - :is(.foo + .foo) { order: 104; } @@ -1430,10 +1222,6 @@ button { order: 106; } -.foo~.foo { - order: 107; -} - :is(.foo~.foo) { order: 107; } @@ -1462,10 +1250,6 @@ button { order: 109; } -.foo ~ .foo { - order: 110; -} - :is(.foo ~ .foo) { order: 110; } @@ -1494,10 +1278,6 @@ button { order: 112; } -.foo>.foo { - order: 113; -} - :is(.foo>.foo) { order: 113; } @@ -1526,10 +1306,6 @@ button { order: 115; } -.foo > .foo { - order: 116; -} - :is(.foo > .foo) { order: 116; } @@ -1630,10 +1406,6 @@ button { order: 124; } -#foo #foo { - order: 125; -} - :is(#foo #foo) { order: 125; } @@ -1662,10 +1434,6 @@ button { order: 127; } -#foo #foo { - order: 128; -} - :is(#foo #foo) { order: 128; } @@ -1694,10 +1462,6 @@ button { order: 130; } -#foo+#foo { - order: 131; -} - :is(#foo+#foo) { order: 131; } @@ -1726,10 +1490,6 @@ button { order: 133; } -#foo + #foo { - order: 134; -} - :is(#foo + #foo) { order: 134; } @@ -1758,10 +1518,6 @@ button { order: 136; } -#foo~#foo { - order: 137; -} - :is(#foo~#foo) { order: 137; } @@ -1790,10 +1546,6 @@ button { order: 139; } -#foo ~ #foo { - order: 140; -} - :is(#foo ~ #foo) { order: 140; } @@ -1822,10 +1574,6 @@ button { order: 142; } -#foo>#foo { - order: 143; -} - :is(#foo>#foo) { order: 143; } @@ -1854,10 +1602,6 @@ button { order: 145; } -#foo > #foo { - order: 146; -} - :is(#foo > #foo) { order: 146; } @@ -1958,10 +1702,6 @@ __foo :is(.some, .other) { order: 154; } -__foo __foo { - order: 155; -} - :is(__foo __foo) { order: 155; } @@ -1990,10 +1730,6 @@ __foo :is(.some, .other) { order: 157; } -__foo __foo { - order: 158; -} - :is(__foo __foo) { order: 158; } @@ -2022,10 +1758,6 @@ __foo+:is(.some, .other) { order: 160; } -__foo+__foo { - order: 161; -} - :is(__foo+__foo) { order: 161; } @@ -2054,10 +1786,6 @@ __foo + :is(.some, .other) { order: 163; } -__foo + __foo { - order: 164; -} - :is(__foo + __foo) { order: 164; } @@ -2086,10 +1814,6 @@ __foo~:is(.some, .other) { order: 166; } -__foo~__foo { - order: 167; -} - :is(__foo~__foo) { order: 167; } @@ -2118,10 +1842,6 @@ __foo ~ :is(.some, .other) { order: 169; } -__foo ~ __foo { - order: 170; -} - :is(__foo ~ __foo) { order: 170; } @@ -2150,10 +1870,6 @@ __foo>:is(.some, .other) { order: 172; } -__foo>__foo { - order: 173; -} - :is(__foo>__foo) { order: 173; } @@ -2182,10 +1898,6 @@ __foo > :is(.some, .other) { order: 175; } -__foo > __foo { - order: 176; -} - :is(__foo > __foo) { order: 176; } @@ -2286,10 +1998,6 @@ __foo { order: 184; } -:--foo :--foo { - order: 185; -} - :is(:--foo :--foo) { order: 185; } @@ -2318,10 +2026,6 @@ __foo { order: 187; } -:--foo :--foo { - order: 188; -} - :is(:--foo :--foo) { order: 188; } @@ -2350,10 +2054,6 @@ __foo { order: 190; } -:--foo+:--foo { - order: 191; -} - :is(:--foo+:--foo) { order: 191; } @@ -2382,10 +2082,6 @@ __foo { order: 193; } -:--foo + :--foo { - order: 194; -} - :is(:--foo + :--foo) { order: 194; } @@ -2414,10 +2110,6 @@ __foo { order: 196; } -:--foo~:--foo { - order: 197; -} - :is(:--foo~:--foo) { order: 197; } @@ -2446,10 +2138,6 @@ __foo { order: 199; } -:--foo ~ :--foo { - order: 200; -} - :is(:--foo ~ :--foo) { order: 200; } @@ -2478,10 +2166,6 @@ __foo { order: 202; } -:--foo>:--foo { - order: 203; -} - :is(:--foo>:--foo) { order: 203; } @@ -2510,10 +2194,6 @@ __foo { order: 205; } -:--foo > :--foo { - order: 206; -} - :is(:--foo > :--foo) { order: 206; } @@ -2614,10 +2294,6 @@ __foo { order: 214; } -[foo="baz"] [foo="baz"] { - order: 215; -} - :is([foo="baz"] [foo="baz"]) { order: 215; } @@ -2646,10 +2322,6 @@ __foo { order: 217; } -[foo="baz"] [foo="baz"] { - order: 218; -} - :is([foo="baz"] [foo="baz"]) { order: 218; } @@ -2678,10 +2350,6 @@ __foo { order: 220; } -[foo="baz"]+[foo="baz"] { - order: 221; -} - :is([foo="baz"]+[foo="baz"]) { order: 221; } @@ -2710,10 +2378,6 @@ __foo { order: 223; } -[foo="baz"] + [foo="baz"] { - order: 224; -} - :is([foo="baz"] + [foo="baz"]) { order: 224; } @@ -2742,10 +2406,6 @@ __foo { order: 226; } -[foo="baz"]~[foo="baz"] { - order: 227; -} - :is([foo="baz"]~[foo="baz"]) { order: 227; } @@ -2774,10 +2434,6 @@ __foo { order: 229; } -[foo="baz"] ~ [foo="baz"] { - order: 230; -} - :is([foo="baz"] ~ [foo="baz"]) { order: 230; } @@ -2806,10 +2462,6 @@ __foo { order: 232; } -[foo="baz"]>[foo="baz"] { - order: 233; -} - :is([foo="baz"]>[foo="baz"]) { order: 233; } @@ -2838,10 +2490,6 @@ __foo { order: 235; } -[foo="baz"] > [foo="baz"] { - order: 236; -} - :is([foo="baz"] > [foo="baz"]) { order: 236; } @@ -2942,10 +2590,6 @@ __foo { order: 244; } -* * { - order: 245; -} - :is(* *) { order: 245; } @@ -2974,10 +2618,6 @@ __foo { order: 247; } -* * { - order: 248; -} - :is(* *) { order: 248; } @@ -3006,10 +2646,6 @@ __foo { order: 250; } -*+* { - order: 251; -} - :is(*+*) { order: 251; } @@ -3038,10 +2674,6 @@ __foo { order: 253; } -* + * { - order: 254; -} - :is(* + *) { order: 254; } @@ -3070,10 +2702,6 @@ __foo { order: 256; } -*~* { - order: 257; -} - :is(*~*) { order: 257; } @@ -3102,10 +2730,6 @@ __foo { order: 259; } -* ~ * { - order: 260; -} - :is(* ~ *) { order: 260; } @@ -3134,10 +2758,6 @@ __foo { order: 262; } -*>* { - order: 263; -} - :is(*>*) { order: 263; } @@ -3166,10 +2786,6 @@ __foo { order: 265; } -* > * { - order: 266; -} - :is(* > *) { order: 266; } @@ -3270,10 +2886,6 @@ __foo { order: 274; } -:hover :hover { - order: 275; -} - :is(:hover :hover) { order: 275; } @@ -3302,10 +2914,6 @@ __foo { order: 277; } -:hover :hover { - order: 278; -} - :is(:hover :hover) { order: 278; } @@ -3334,10 +2942,6 @@ __foo { order: 280; } -:hover+:hover { - order: 281; -} - :is(:hover+:hover) { order: 281; } @@ -3366,10 +2970,6 @@ __foo { order: 283; } -:hover + :hover { - order: 284; -} - :is(:hover + :hover) { order: 284; } @@ -3398,10 +2998,6 @@ __foo { order: 286; } -:hover~:hover { - order: 287; -} - :is(:hover~:hover) { order: 287; } @@ -3430,10 +3026,6 @@ __foo { order: 289; } -:hover ~ :hover { - order: 290; -} - :is(:hover ~ :hover) { order: 290; } @@ -3462,10 +3054,6 @@ __foo { order: 292; } -:hover>:hover { - order: 293; -} - :is(:hover>:hover) { order: 293; } @@ -3494,10 +3082,6 @@ __foo { order: 295; } -:hover > :hover { - order: 296; -} - :is(:hover > :hover) { order: 296; } @@ -3598,10 +3182,6 @@ __foo { order: 304; } -::before ::before { - order: 305; -} - :is(::before ::before) { order: 305; } @@ -3630,10 +3210,6 @@ __foo { order: 307; } -::before ::before { - order: 308; -} - :is(::before ::before) { order: 308; } @@ -3662,10 +3238,6 @@ __foo { order: 310; } -::before+::before { - order: 311; -} - :is(::before+::before) { order: 311; } @@ -3694,10 +3266,6 @@ __foo { order: 313; } -::before + ::before { - order: 314; -} - :is(::before + ::before) { order: 314; } @@ -3726,10 +3294,6 @@ __foo { order: 316; } -::before~::before { - order: 317; -} - :is(::before~::before) { order: 317; } @@ -3758,10 +3322,6 @@ __foo { order: 319; } -::before ~ ::before { - order: 320; -} - :is(::before ~ ::before) { order: 320; } @@ -3790,10 +3350,6 @@ __foo { order: 322; } -::before>::before { - order: 323; -} - :is(::before>::before) { order: 323; } @@ -3822,10 +3378,6 @@ __foo { order: 325; } -::before > ::before { - order: 326; -} - :is(::before > ::before) { order: 326; }