diff --git a/example.js b/example.js index 8da3073..41481bf 100644 --- a/example.js +++ b/example.js @@ -2,13 +2,20 @@ const { validateValue } = require("@validatem/core"); const postcssNested = require("postcss-nested"); +const postcssNestedProps = require("postcss-nested-props"); const isPostCSSPlugin = require("./"); -/* Plugin (factory) */ -console.log(validateValue(postcssNested, [ isPostCSSPlugin ])); // { process: [Function] } +/* Plugin (factory), PostCSS <= 7 */ +console.log(validateValue(postcssNestedProps, [ isPostCSSPlugin ])); // { process: [Function (anonymous)] } -/* Plugin function (instance) */ -console.log(validateValue(postcssNested(), [ isPostCSSPlugin ])); // { postcssPlugin: 'postcss-nested', postcssVersion: '7.0.32' } +/* Plugin function (instance), PostCSS <= 7 */ +console.log(validateValue(postcssNestedProps(), [ isPostCSSPlugin ])); // { postcssPlugin: 'postcss-nested-props', postcssVersion: '6.0.23' } + +/* Plugin (factory), PostCSS 8 */ +console.log(validateValue(postcssNested, [ isPostCSSPlugin ])); // [Function (anonymous)] { postcss: true } + +/* Plugin function (instance), PostCSS 8 */ +console.log(validateValue(postcssNested(), [ isPostCSSPlugin ])); // { postcssPlugin: 'postcss-nested', Rule: [Function: Rule] } console.log(validateValue("hello world", [ isPostCSSPlugin ])); /* AggregrateValidationError: One or more validation errors occurred: diff --git a/index.js b/index.js index f140989..50071d5 100644 --- a/index.js +++ b/index.js @@ -3,6 +3,8 @@ const wrapError = require("@validatem/wrap-error"); const hasShape = require("@validatem/has-shape"); const isFunction = require("@validatem/is-function"); +const isPlainObject = require("@validatem/is-plain-object"); +const isValue = require("@validatem/is-value"); const allowExtraProperties = require("@validatem/allow-extra-properties"); const either = require("@validatem/either"); const required = require("@validatem/required"); @@ -11,13 +13,13 @@ const ValidationError = require("@validatem/error"); // NOTE: We use `hasShape` explicitly here, since the implicit `hasShape` wrapper you get when specifying an object literal will also enforce that the value *itself* is a plain object. But that is not the case for PostCSS plugins, which are functions that happen to have additional properties specified on them. function hasPostCSSProperty(object) { - // This is custom logic that only checks whether the property *exists*, and is guaranteed not to attempt to get its *value*, as the property is a getter that lazily constructs an instance. We don't want to trigger that logic just by checking the shape of the object, which might happen if we specify the property in the `hasShape` rule instead. + // This is custom logic that only checks whether the property *exists*, and is guaranteed not to attempt to get its *value* as on PostCSS 7, the property is a getter that lazily constructs an instance. We don't want to trigger that logic just by checking the shape of the object, which might happen if we specify the property in the `hasShape` rule instead. if (!("postcss" in object)) { throw new ValidationError(`Must have a 'postcss' property`); } } -let plugin = [ +let plugin7 = [ isFunction, hasPostCSSProperty, allowExtraProperties(hasShape({ @@ -25,7 +27,7 @@ let plugin = [ })), ]; -let pluginFunction = [ +let pluginFunction7 = [ isFunction, allowExtraProperties(hasShape({ postcssPlugin: [ required ], @@ -33,4 +35,31 @@ let pluginFunction = [ })) ]; -module.exports = wrapError("Must be a PostCSS plugin", either([ plugin, pluginFunction ])); +let plugin8 = [ + isFunction, + hasPostCSSProperty, + allowExtraProperties(hasShape({ + postcss: [ required, isValue(true) ] + })), +]; + +let pluginFunction8 = [ + isPlainObject, + allowExtraProperties(hasShape({ + postcssPlugin: [ required ], + })) +]; + +module.exports = wrapError("Must be a PostCSS plugin", either([ + // NOTE: The order of these rules matters, we need to test the v7 options first, to prevent accidental evaluation of the `postcss` property in v7 plugins by the `plugin8` rule + plugin7, pluginFunction7, + plugin8, pluginFunction8 +])); + +module.exports.v7 = wrapError("Must be a PostCSS <= v7 plugin", either([ + plugin7, pluginFunction7 +])); + +module.exports.v8 = wrapError("Must be a PostCSS v8 plugin", either([ + plugin8, pluginFunction8 +])); diff --git a/package.json b/package.json index bae0b55..045d312 100644 --- a/package.json +++ b/package.json @@ -16,11 +16,14 @@ "@validatem/error": "^1.0.0", "@validatem/has-shape": "^0.1.5", "@validatem/is-function": "^0.1.0", + "@validatem/is-plain-object": "^0.1.1", + "@validatem/is-value": "^0.1.0", "@validatem/required": "^0.1.1", "@validatem/wrap-error": "^0.1.2" }, "devDependencies": { "@validatem/core": "^0.3.3", - "postcss-nested": "^4.2.1" + "postcss-nested": "^5.0.0", + "postcss-nested-props": "^2.0.0" } } diff --git a/yarn.lock b/yarn.lock index 4675e88..b55c3cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4,21 +4,21 @@ "@validatem/allow-extra-properties@^0.1.0": version "0.1.0" - resolved "https://registry.yarnpkg.com/@validatem/allow-extra-properties/-/allow-extra-properties-0.1.0.tgz#e8c434818d6fd74b8cb237cfaa4d548295de13c1" + resolved "https://registry.npmjs.org/@validatem/allow-extra-properties/-/allow-extra-properties-0.1.0.tgz" integrity sha512-9jihpYxw1vp4FdjnbN0bTVZMLYv//9OjFNTsVLG5OV4xHESwtgkgQEF5/N5rY1iBwoH/pcKuRl44MBZ8eMdrKw== dependencies: "@validatem/with-context" "^0.1.0" "@validatem/annotate-errors@^0.1.2": version "0.1.2" - resolved "https://registry.yarnpkg.com/@validatem/annotate-errors/-/annotate-errors-0.1.2.tgz#fa9152bb30f4f42b69496b527e38f0c31ff605a9" + resolved "https://registry.npmjs.org/@validatem/annotate-errors/-/annotate-errors-0.1.2.tgz" integrity sha512-EuX7pzdYI/YpTmZcgdPG481Oi3elAg8JWh/LYXuE1h6MaZk3A8eP5DD33/l7EoKzrysn6y8nCsqNa1ngei562w== dependencies: "@validatem/match-validation-error" "^0.1.0" "@validatem/any-property@^0.1.0": version "0.1.3" - resolved "https://registry.yarnpkg.com/@validatem/any-property/-/any-property-0.1.3.tgz#fc7768c1922a8bacff9369ae48913672e5350f52" + resolved "https://registry.npmjs.org/@validatem/any-property/-/any-property-0.1.3.tgz" integrity sha512-jYWxif5ff9pccu7566LIQ/4+snlApXEJUimBywzAriBgS3r4eDBbz3oZFHuiPmhxNK/NNof5YUS+L6Sk3zaMfg== dependencies: "@validatem/annotate-errors" "^0.1.2" @@ -30,12 +30,12 @@ "@validatem/combinator@^0.1.0", "@validatem/combinator@^0.1.1": version "0.1.2" - resolved "https://registry.yarnpkg.com/@validatem/combinator/-/combinator-0.1.2.tgz#eab893d55f1643b9c6857eaf6ff7ed2a728e89ff" + resolved "https://registry.npmjs.org/@validatem/combinator/-/combinator-0.1.2.tgz" integrity sha512-vE8t1tNXknmN62FlN6LxQmA2c6TwVKZ+fl/Wit3H2unFdOhu7SZj2kRPGjAXdK/ARh/3svYfUBeD75pea0j1Sw== "@validatem/core@^0.3.3": version "0.3.3" - resolved "https://registry.yarnpkg.com/@validatem/core/-/core-0.3.3.tgz#f9d812ba75c073e3879b3afae8f5c8c356992717" + resolved "https://registry.npmjs.org/@validatem/core/-/core-0.3.3.tgz" integrity sha512-2rJdTwc/KlyjQtdn9uWgWYdqLOB3F47tV/Ew5XQ67bHabZhrF6xZF97B6I+C340HH0A7YW1tgNTnKsNh0PvhCg== dependencies: "@validatem/annotate-errors" "^0.1.2" @@ -56,7 +56,7 @@ "@validatem/either@^0.1.2": version "0.1.2" - resolved "https://registry.yarnpkg.com/@validatem/either/-/either-0.1.2.tgz#61ff451b5596ef4dacb1be39a1bd3e40203505c8" + resolved "https://registry.npmjs.org/@validatem/either/-/either-0.1.2.tgz" integrity sha512-oZwINgEKZ52lrKM5gNEWIdGVlEurdjTonslBWRVbVTxCEEKyXi4dQ7k84yxuG6JOXg3apw1xOBPgzOiQyH89SQ== dependencies: "@validatem/combinator" "^0.1.1" @@ -64,14 +64,14 @@ "@validatem/error@^1.0.0": version "1.0.0" - resolved "https://registry.yarnpkg.com/@validatem/error/-/error-1.0.0.tgz#a975904aa4c3e7618d89088a393567a5e1778340" + resolved "https://registry.npmjs.org/@validatem/error/-/error-1.0.0.tgz" integrity sha512-7M3tV4DhCuimuCRdC2L/topBByDjhzspzeQGNU0S4/mdn2aDNtESYE43K/2Kh/utCAhqXh2gyw89WYxy//t3fQ== dependencies: create-error "^0.3.1" "@validatem/has-shape@^0.1.0", "@validatem/has-shape@^0.1.5": version "0.1.5" - resolved "https://registry.yarnpkg.com/@validatem/has-shape/-/has-shape-0.1.5.tgz#7fc727e8254fa17c30e1eb4a7661767bb7701535" + resolved "https://registry.npmjs.org/@validatem/has-shape/-/has-shape-0.1.5.tgz" integrity sha512-Ht+GOOZOle5A7QpcI8cXSfDoGIe//JrA70ibpFOVy7946WQAFmB2icoyUXwsZY+ybnZwY4g/y1NqyqVQ/Z8hzw== dependencies: "@validatem/annotate-errors" "^0.1.2" @@ -91,7 +91,7 @@ "@validatem/error" "^1.0.0" is-callable "^1.1.5" -"@validatem/is-plain-object@^0.1.0": +"@validatem/is-plain-object@^0.1.0", "@validatem/is-plain-object@^0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@validatem/is-plain-object/-/is-plain-object-0.1.1.tgz#b7a3ef8ef960882c7c41e84ed709fa0bfb932e93" integrity sha512-aNGbNIbKRpYI0lRBczlTBbiA+nqN52ADAASdySKg2/QeSCVtYS4uOIeCNIJRAgXe/5sUnLTuL4pgq628uAl7Kw== @@ -99,31 +99,38 @@ "@validatem/error" "^1.0.0" is-plain-obj "^2.1.0" +"@validatem/is-value@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@validatem/is-value/-/is-value-0.1.0.tgz#b4c7481818a88d7c24400b9b587f83b388b37d56" + integrity sha512-FrwC6AP4W8dN6GCJEX02qNphoRUaN2JtdbIU2ztwPpLFUSgaJ+zvUrIPYDr8f+8YfrI/QIHm+uiY2TNEjQq/iQ== + dependencies: + "@validatem/error" "^1.0.0" + "@validatem/match-special@^0.1.0": version "0.1.0" - resolved "https://registry.yarnpkg.com/@validatem/match-special/-/match-special-0.1.0.tgz#4e0c28f1aee5bf53c1ef30bbf8c755d4946ae0ff" + resolved "https://registry.npmjs.org/@validatem/match-special/-/match-special-0.1.0.tgz" integrity sha512-TFiq9Wk/1Hoja4PK85WwNYnwBXk3+Lgoj59ZIMxm2an1qmNYp8j+BnSvkKBflba451yIn6V1laU9NJf+/NYZgw== "@validatem/match-validation-error@^0.1.0": version "0.1.0" - resolved "https://registry.yarnpkg.com/@validatem/match-validation-error/-/match-validation-error-0.1.0.tgz#fa87f5f1836e7c1d9bf6b75b2addf0a5b21e4c1e" + resolved "https://registry.npmjs.org/@validatem/match-validation-error/-/match-validation-error-0.1.0.tgz" integrity sha512-6akGTk7DdulOreyqDiGdikwRSixQz/AlvARSX18dcWaTFc79KxCLouL2hyoFcor9IIUhu5RTY4/i756y4T1yxA== dependencies: "@validatem/match-versioned-special" "^0.1.0" "@validatem/match-versioned-special@^0.1.0": version "0.1.0" - resolved "https://registry.yarnpkg.com/@validatem/match-versioned-special/-/match-versioned-special-0.1.0.tgz#2eacc48debecdbbe7e3d02f0c0a665afaea9bedf" + resolved "https://registry.npmjs.org/@validatem/match-versioned-special/-/match-versioned-special-0.1.0.tgz" integrity sha512-xoOTY0bdA2ELj+ntcDVJ8YyMEFIJpjZ4HNPL9lGcbnRFwJBhQcHUAhUpZwkMxu02zH9wkNM1FvYGHxPz40745Q== "@validatem/match-virtual-property@^0.1.0": version "0.1.0" - resolved "https://registry.yarnpkg.com/@validatem/match-virtual-property/-/match-virtual-property-0.1.0.tgz#4de2de1075987b5f3b356d3f2bcf6c0be5b5fb83" + resolved "https://registry.npmjs.org/@validatem/match-virtual-property/-/match-virtual-property-0.1.0.tgz" integrity sha512-ssd3coFgwbLuqvZftLZTy3eHN0TFST8oTS2XTViQdXJPXVoJmwEKBpFhXgwnb5Ly1CE037R/KWpjhd1TP/56kQ== "@validatem/normalize-rules@^0.1.0": version "0.1.2" - resolved "https://registry.yarnpkg.com/@validatem/normalize-rules/-/normalize-rules-0.1.2.tgz#6529f17a6f36c6e2ae3ef285c59347c2ea208aa1" + resolved "https://registry.npmjs.org/@validatem/normalize-rules/-/normalize-rules-0.1.2.tgz" integrity sha512-IHc81Sy/W0OiCbmvE3kTB+5OPVJnXWHP2tTXvKO6hVH0qykclMvIPRGgZf1s4dLaeOLKdkkfKyO/pLTVyNCIbA== dependencies: "@validatem/has-shape" "^0.1.0" @@ -136,31 +143,31 @@ "@validatem/required@^0.1.0", "@validatem/required@^0.1.1": version "0.1.1" - resolved "https://registry.yarnpkg.com/@validatem/required/-/required-0.1.1.tgz#64f4a87333fc5955511634036b7f8948ed269170" + resolved "https://registry.npmjs.org/@validatem/required/-/required-0.1.1.tgz" integrity sha512-vI4NzLfay4RFAzp7xyU34PHb8sAo6w/3frrNh1EY9Xjnw2zxjY5oaxwmbFP1jVevBE6QQEnKogtzUHz/Zuvh6g== "@validatem/validation-result@^0.1.1", "@validatem/validation-result@^0.1.2": version "0.1.2" - resolved "https://registry.yarnpkg.com/@validatem/validation-result/-/validation-result-0.1.2.tgz#4e75cfd87305fc78f8d05ac84921a2c99a0348e0" + resolved "https://registry.npmjs.org/@validatem/validation-result/-/validation-result-0.1.2.tgz" integrity sha512-okmP8JarIwIgfpaVcvZGuQ1yOsLKT3Egt49Ynz6h1MAeGsP/bGHXkkXtbiWOVsk5Tzku5vDVFSrFnF+5IEHKxw== dependencies: default-value "^1.0.0" "@validatem/virtual-property@^0.1.0": version "0.1.0" - resolved "https://registry.yarnpkg.com/@validatem/virtual-property/-/virtual-property-0.1.0.tgz#880540dfd149f98ecf1095d93912e34443381fe4" + resolved "https://registry.npmjs.org/@validatem/virtual-property/-/virtual-property-0.1.0.tgz" integrity sha512-JUUvWtdqoSkOwlsl20oB3qFHYIL05a/TAfdY4AJcs55QeVTiX5iI1b8IoQW644sIWWooBuLv+XwoxjRsQFczlQ== "@validatem/with-context@^0.1.0": version "0.1.2" - resolved "https://registry.yarnpkg.com/@validatem/with-context/-/with-context-0.1.2.tgz#3645c04897664f70995104961277e07b61b4f615" + resolved "https://registry.npmjs.org/@validatem/with-context/-/with-context-0.1.2.tgz" integrity sha512-noAWf4CsmU+BCz+KOg3GPq9+R9BQLWOQnOgWVfkYHFdLnnbLhl8w/ONdzvFzUYGHIZGKZwsWVCp+Kwz/tAfMnA== dependencies: "@validatem/combinator" "^0.1.1" "@validatem/wrap-error@^0.1.2": version "0.1.2" - resolved "https://registry.yarnpkg.com/@validatem/wrap-error/-/wrap-error-0.1.2.tgz#146394ef8c9f78df0bb249a03e14b760f6c749fc" + resolved "https://registry.npmjs.org/@validatem/wrap-error/-/wrap-error-0.1.2.tgz" integrity sha512-UgXDcBUEyo0cHRbUWi8Wl0Bf88L/QLNVKIlxGhiyQwsatk9aDVsNC3H7NgLev1mjjST0idxic8+zGAP4UcYRuA== dependencies: "@validatem/combinator" "^0.1.1" @@ -180,15 +187,15 @@ ansi-styles@^3.2.1: as-expression@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/as-expression/-/as-expression-1.0.0.tgz#7bc620ca4cb2fe0ee90d86729bd6add33b8fd831" + resolved "https://registry.npmjs.org/as-expression/-/as-expression-1.0.0.tgz" integrity sha512-Iqh4GxNUfxbJdGn6b7/XMzc8m1Dz2ZHouBQ9DDTzyMRO3VPPIAXeoY/sucRxxxXKbUtzwzWZSN6jPR3zfpYHHA== assure-array@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/assure-array/-/assure-array-1.0.0.tgz#4f4ad16a87659d6200a4fb7103462033d216ec1f" + resolved "https://registry.npmjs.org/assure-array/-/assure-array-1.0.0.tgz" integrity sha1-T0rRaodlnWIApPtxA0YgM9IW7B8= -chalk@^2.4.2: +chalk@^2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -211,7 +218,7 @@ color-name@1.1.3: create-error@^0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/create-error/-/create-error-0.3.1.tgz#69810245a629e654432bf04377360003a5351a23" + resolved "https://registry.npmjs.org/create-error/-/create-error-0.3.1.tgz" integrity sha1-aYECRaYp5lRDK/BDdzYAA6U1GiM= cssesc@^3.0.0: @@ -221,14 +228,14 @@ cssesc@^3.0.0: default-value@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/default-value/-/default-value-1.0.0.tgz#8c6f52a5a1193fe78fdc9f86eb71d16c9757c83a" + resolved "https://registry.npmjs.org/default-value/-/default-value-1.0.0.tgz" integrity sha1-jG9SpaEZP+eP3J+G63HRbJdXyDo= dependencies: es6-promise-try "0.0.1" es6-promise-try@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/es6-promise-try/-/es6-promise-try-0.0.1.tgz#10f140dad27459cef949973e5d21a087f7274b20" + resolved "https://registry.npmjs.org/es6-promise-try/-/es6-promise-try-0.0.1.tgz" integrity sha1-EPFA2tJ0Wc75SZc+XSGgh/cnSyA= escape-string-regexp@^1.0.5: @@ -238,7 +245,7 @@ escape-string-regexp@^1.0.5: flatten@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + resolved "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz" integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== has-flag@^3.0.0: @@ -246,51 +253,63 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - is-arguments@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz" integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== is-callable@^1.1.5: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" - integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== is-plain-obj@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -postcss-nested@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-4.2.1.tgz#4bc2e5b35e3b1e481ff81e23b700da7f82a8b248" - integrity sha512-AMayXX8tS0HCp4O4lolp4ygj9wBn32DJWXvG6gCv+ZvJrEa00GUxJcJEEzMh87BIe6FrWdYkpR2cuyqHKrxmXw== +postcss-nested-props@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-nested-props/-/postcss-nested-props-2.0.0.tgz#91ad31b05cbfbf0ff8a38b6c22ef46efbdb0b03a" + integrity sha512-fwq48WtIGZCjPMAjUAT6ZFkGZxPmlT+MVA+KE5QtnqORIa1n4rKEr2KQ2yS+cZOH1oEOb5zc/BoPcPe4+FR8+Q== + dependencies: + postcss "^6.0.14" + pseudo-classes "^1.0.0" + pseudo-elements "^1.1.0" + +postcss-nested@^5.0.0: + version "5.0.6" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.6.tgz#466343f7fc8d3d46af3e7dba3fcd47d052a945bc" + integrity sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA== dependencies: - postcss "^7.0.21" - postcss-selector-parser "^6.0.2" + postcss-selector-parser "^6.0.6" -postcss-selector-parser@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" - integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== +postcss-selector-parser@^6.0.6: + version "6.0.9" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" + integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== dependencies: cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" + util-deprecate "^1.0.2" -postcss@^7.0.21: - version "7.0.32" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" - integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== +postcss@^6.0.14: + version "6.0.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== dependencies: - chalk "^2.4.2" + chalk "^2.4.1" source-map "^0.6.1" - supports-color "^6.1.0" + supports-color "^5.4.0" + +pseudo-classes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pseudo-classes/-/pseudo-classes-1.0.0.tgz#60a69b67395c36ff119c4d1c86e1981785206b96" + integrity sha1-YKabZzlcNv8RnE0chuGYF4Uga5Y= + +pseudo-elements@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pseudo-elements/-/pseudo-elements-1.1.0.tgz#9ba6dd8ac3ce1f3d7d36d4355aa3e28d08391f28" + integrity sha1-m6bdisPOHz19NtQ1WqPijQg5Hyg= source-map@^0.6.1: version "0.6.1" @@ -299,24 +318,17 @@ source-map@^0.6.1: split-filter-n@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/split-filter-n/-/split-filter-n-1.1.2.tgz#268be1ec9c4d93dfb27b030c06165ac1b6f70f66" + resolved "https://registry.npmjs.org/split-filter-n/-/split-filter-n-1.1.2.tgz" integrity sha512-+hXSQYpKe1uyXPXI4zQtAJAlaF2EzEc+BaF2goMeNL5oUD5YLqrVcpjxELJxpomXfwMCUaYLAszEbdY9gKVdHQ== -supports-color@^5.3.0: +supports-color@^5.3.0, supports-color@^5.4.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= +util-deprecate@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=