diff --git a/core/package.json b/core/package.json index c8818d3e43..13930ed0c3 100644 --- a/core/package.json +++ b/core/package.json @@ -8,6 +8,10 @@ "node": ">= 8.11" }, "scripts": { + "build": "yarn build:css & yarn build:js", + "watch": "yarn watch:css & yarn watch:js", + "build:css": "cross-env BABEL_ENV=legacy node ./scripts/css/postcss-build.js", + "watch:css": "cross-env BABEL_ENV=legacy node ./scripts/css/postcss-watch.js", "build:js": "cross-env BABEL_ENV=legacy node ./scripts/js/babel-es6-build.js", "build:js-dev": "cross-env NODE_ENV=development BABEL_ENV=legacy node ./scripts/js/babel-es6-build.js", "watch:js": "cross-env BABEL_ENV=legacy node ./scripts/js/babel-es6-watch.js", @@ -21,6 +25,7 @@ "prettier": "prettier --write \"./**/*.es6.js\" \"./tests/Drupal/Nightwatch/**/*.js\"" }, "devDependencies": { + "autoprefixer": "^9.6.1", "babel-core": "^6.26.0", "babel-plugin-add-header-comment": "^1.0.3", "babel-preset-env": "^1.4.0", @@ -40,6 +45,11 @@ "minimist": "^1.2.0", "mkdirp": "^0.5.1", "nightwatch": "^1.2.1", + "postcss": "^7.0.18", + "postcss-calc": "^7.0.1", + "postcss-custom-properties": "^9.0.2", + "postcss-header": "^1.0.0", + "postcss-import": "^12.0.1", "prettier": "^1.14.0", "stylelint": "^9.10.1", "stylelint-checkstyle-formatter": "^0.1.1", @@ -68,21 +78,19 @@ [ "env", { - "modules": false, - "targets": { - "browsers": [ - "ie >= 9", - "edge >= 13", - "firefox >= 5", - "opera >= 12", - "safari >= 5", - "chrome >= 56" - ] - } + "modules": false } ] ] } } - } + }, + "browserslist": [ + "ie >= 9", + "edge >= 13", + "firefox >= 5", + "opera >= 12", + "safari >= 5", + "chrome >= 56" + ] } diff --git a/core/postcss.config.js b/core/postcss.config.js new file mode 100644 index 0000000000..e58d28ee4f --- /dev/null +++ b/core/postcss.config.js @@ -0,0 +1,20 @@ +module.exports = ctx => ({ + map: !ctx.env || ctx.env !== 'production' ? { inline: false } : false, + plugins: [ + require('postcss-custom-properties')({ + preserve: false, + // Breaks style lint and unnecessary if preserve set to false. + // exportTo: 'dist-css/variables.css', + importFrom: [ + './themes/claro/css/src/base/variables.css' + ] + }), + require("postcss-calc"), + require('autoprefixer')({ + cascade: false + }), + require('postcss-header')({ + header: `DO NOT EDIT THIS FILE.\nSee the following change record for more information,\nhttps://www.drupal.org/node/2815083\n@preserve`, + }), + ] +}); diff --git a/core/scripts/css/changeOrAdded.js b/core/scripts/css/changeOrAdded.js new file mode 100644 index 0000000000..53c586e2e6 --- /dev/null +++ b/core/scripts/css/changeOrAdded.js @@ -0,0 +1,15 @@ +const fs = require('fs'); +const log = require('./log'); +const compile = require('./compile'); + +module.exports = (filePath) => { + log(`'${filePath}' is being processed.`); + // Transform the file. + compile(filePath, function write(code) { + const fileName = filePath.slice(0, -9); + // Write the result to the filesystem. + fs.writeFile(`${fileName}.css`, code, () => { + log(`'${filePath}' is finished.`); + }); + }); +}; diff --git a/core/scripts/css/check.js b/core/scripts/css/check.js new file mode 100644 index 0000000000..8eefa7e4f8 --- /dev/null +++ b/core/scripts/css/check.js @@ -0,0 +1,23 @@ +const chalk = require('chalk'); +const fs = require('fs'); +const log = require('./log'); +const compile = require('./compile'); + +module.exports = (filePath) => { + log(`'${filePath}' is being checked.`); + // Transform the file. + compile(filePath, function check(code) { + const fileName = filePath.slice(0, -9); + fs.readFile(`${fileName}.css`, function read(err, data) { + if (err) { + log(chalk.red(err)); + process.exitCode = 1; + return; + } + if (code !== data.toString()) { + log(chalk.red(`'${filePath}' is not updated.`)); + process.exitCode = 1; + } + }); + }); +}; diff --git a/core/scripts/css/compile.js b/core/scripts/css/compile.js new file mode 100644 index 0000000000..0fe45e8bb7 --- /dev/null +++ b/core/scripts/css/compile.js @@ -0,0 +1,40 @@ +const chalk = require('chalk'); +const log = require('./log'); +const fs = require('fs'); +const postcss = require('postcss'); +const postcssCustomProperties = require('postcss-custom-properties'); +const postcssCalc = require("postcss-calc"); +const postcssImport = require('postcss-import'); +const autoprefixer = require('autoprefixer'); +const postcssHeader = require('postcss-header'); + +module.exports = (filePath, callback) => { + // Transform the file. + fs.readFile(filePath, (err, css) => { + postcss([ + postcssImport(), + postcssCustomProperties({ + // Remove converted properties from the generated code. This needs to be + // set to ensure that CSS minifiers don't remove the generated values. + preserve: false, + }), + postcssCalc, + autoprefixer({ + // Output without visual cascade for more consistency with existing + // Drupal CSS. + cascade: false + }), + postcssHeader({ + header: `/*\n * DO NOT EDIT THIS FILE.\n * See the following change record for more information,\n * https://www.drupal.org/node/2815083\n * @preserve\n */\n`, + }), + ]) + .process(css, { from: filePath }) + .then(result => { + callback(result.css); + }) + .catch(error => { + log(chalk.red(error)); + process.exitCode = 1; + }); + }); +}; diff --git a/core/scripts/css/log.js b/core/scripts/css/log.js new file mode 100644 index 0000000000..d9637317ff --- /dev/null +++ b/core/scripts/css/log.js @@ -0,0 +1,4 @@ +module.exports = (message) => { + // Logging human-readable timestamp. + console.log(`[${new Date().toTimeString().slice(0, 8)}] ${message}`); +}; diff --git a/core/scripts/css/postcss-build.js b/core/scripts/css/postcss-build.js new file mode 100644 index 0000000000..e7420187b4 --- /dev/null +++ b/core/scripts/css/postcss-build.js @@ -0,0 +1,49 @@ +/** + * @file + * + * Provides the build:css command to compile *.pcss.css files to CSS. + * + * Run build:css with --file to only parse a specific file. Using the --check + * flag build:css can be run to check if files are compiled correctly. + * @example Only process misc/drupal.es6.js and misc/drupal.init.es6.jsCheck if all files have been compiled correctly { + if (error) { + process.exitCode = 1; + } + // Process all the found files. + let callback = changeOrAdded; + if (argv.check) { + callback = check; + } + filePaths.forEach(callback); +}; + +if (argv.file) { + processFiles(null, [].concat(argv.file)); +} +else { + glob(fileMatch, globOptions, processFiles); +} +process.exitCode = 0; diff --git a/core/scripts/css/postcss-watch.js b/core/scripts/css/postcss-watch.js new file mode 100644 index 0000000000..d241c5b798 --- /dev/null +++ b/core/scripts/css/postcss-watch.js @@ -0,0 +1,43 @@ +/** + * @file + * + * Watch changes to *.pcss.css files and compile them to CSS during development. + * + * @internal This file is part of the core CSS build process and is only + * designed to be used in that context. + */ + +'use strict'; + +const fs = require('fs'); +const path = require('path'); +const chokidar = require('chokidar'); + +const changeOrAdded = require('./changeOrAdded'); +const log = require('./log'); + +// Match only on .pcss.css files. +const fileMatch = './**/*.pcss.css'; +// Ignore everything in node_modules +const watcher = chokidar.watch(fileMatch, { + ignoreInitial: true, + ignored: './node_modules/**' +}); + +const unlinkHandler = (err) => { + if (err) { + log(err); + } +}; + +// Watch for filesystem changes. +watcher + .on('add', changeOrAdded) + .on('change', changeOrAdded) + .on('unlink', (filePath) => { + const fileName = filePath.slice(0, -9); + fs.stat(`${fileName}.css`, () => { + fs.unlink(`${fileName}.css`, unlinkHandler); + }); + }) + .on('ready', () => log(`Watching '${fileMatch}' for changes.`)); diff --git a/core/themes/seven/css/base/elements.css b/core/themes/seven/css/base/elements.css index 7fa40e5558..f2aec247dc 100644 --- a/core/themes/seven/css/base/elements.css +++ b/core/themes/seven/css/base/elements.css @@ -1,3 +1,9 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/2815083 + * @preserve + */ /** * Generic elements. */ @@ -33,7 +39,6 @@ summary, .simpletest-results-form summary { text-transform: none; } - /** * Reusable heading classes are included to help modules change the styling of * headings on a page without affecting accessibility. diff --git a/core/themes/seven/css/base/elements.css b/core/themes/seven/css/base/elements.pcss.css similarity index 100% copy from core/themes/seven/css/base/elements.css copy to core/themes/seven/css/base/elements.pcss.css diff --git a/core/yarn.lock b/core/yarn.lock index 7396a43fc4..1c922e4363 100644 --- a/core/yarn.lock +++ b/core/yarn.lock @@ -426,7 +426,7 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^9.0.0: +autoprefixer@^9.0.0, autoprefixer@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.6.1.tgz#51967a02d2d2300bb01866c1611ec8348d355a47" integrity sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw== @@ -1314,6 +1314,11 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +color-name@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -1426,6 +1431,16 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +css-unit-converter@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" + integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY= + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -2652,6 +2667,11 @@ ip-regex@^2.1.0: resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= +ip-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.1.0.tgz#5ad62f685a14edb421abebc2fff8db94df67b455" + integrity sha512-pKnZpbgCTfH/1NLIlOduP/V+WRXzC2MOz3Qo8xmxk8C5GudJLgK5QyLVXOSWy3ParAH7Eemurl3xjv/WXYFvMA== + ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -2830,6 +2850,11 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -2905,6 +2930,13 @@ is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-url-superb@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-url-superb/-/is-url-superb-3.0.0.tgz#b9a1da878a1ac73659047d1e6f4ef22c209d3e25" + integrity sha512-3faQP+wHCGDQT1qReM5zCPx2mxoal6DzbzquFlCYJLWyy4WPTved33ea2xFbX37z4NoriEwZGIYhFtx8RUB5wQ== + dependencies: + url-regex "^5.0.0" + is-url@^1.2.2: version "1.2.4" resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" @@ -3912,7 +3944,7 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -pify@^2.0.0: +pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -3963,6 +3995,32 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +postcss-calc@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436" + integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ== + dependencies: + css-unit-converter "^1.1.1" + postcss "^7.0.5" + postcss-selector-parser "^5.0.0-rc.4" + postcss-value-parser "^3.3.1" + +postcss-custom-properties@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-9.0.2.tgz#091aefaa309826302d53ec6d780fbe1df8f40fd4" + integrity sha512-WHaQrEp3gJ6mgxBA4mGJKW6DSVfy2IFnKPFAb2IEulgxGUW8nWp1NkOD/rWR6e2uIuAdnTa0LXSupST7daniAw== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^3.0.5" + +postcss-header@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-header/-/postcss-header-1.0.0.tgz#36bc650f6f841db86558bd5c66461545d9f413ef" + integrity sha512-YUcU2oHQNsNVUDPdQg6/TXBWvI7dBGf2bsLQdVlLiLM5kiGLGCcszYDlVTaicmXpKANdS1T7bxpJtCacrMButw== + dependencies: + babel-register "^6.26.0" + postcss "^6.0.13" + postcss-html@^0.36.0: version "0.36.0" resolved "https://registry.yarnpkg.com/postcss-html/-/postcss-html-0.36.0.tgz#b40913f94eaacc2453fd30a1327ad6ee1f88b204" @@ -3970,6 +4028,16 @@ postcss-html@^0.36.0: dependencies: htmlparser2 "^3.10.0" +postcss-import@^12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-12.0.1.tgz#cf8c7ab0b5ccab5649024536e565f841928b7153" + integrity sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw== + dependencies: + postcss "^7.0.1" + postcss-value-parser "^3.2.3" + read-cache "^1.0.0" + resolve "^1.1.7" + postcss-jsx@^0.36.0: version "0.36.3" resolved "https://registry.yarnpkg.com/postcss-jsx/-/postcss-jsx-0.36.3.tgz#c91113eae2935a1c94f00353b788ece9acae3f46" @@ -4062,6 +4130,15 @@ postcss-selector-parser@^3.1.0: indexes-of "^1.0.1" uniq "^1.0.1" +postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + postcss-sorting@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/postcss-sorting/-/postcss-sorting-4.1.0.tgz#a107f0bf3852977fa64e4442bc340c88d5aacdb3" @@ -4075,7 +4152,7 @@ postcss-syntax@^0.36.2: resolved "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c" integrity sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w== -postcss-value-parser@^3.3.0: +postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== @@ -4085,6 +4162,17 @@ postcss-value-parser@^4.0.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== +postcss-values-parser@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-3.0.5.tgz#9f83849fb89eaac74c2d5bf75e8e9715508a8c8d" + integrity sha512-0N6EUBx2Vzl0c9LQipuus90EkVh7saBQFRhgAYpHHcDCIvxRt+K/q0zwcIYtDQVNs5Y9NGqei4AuCEvAOsePfQ== + dependencies: + color-name "^1.1.4" + is-number "^7.0.0" + is-url-superb "^3.0.0" + postcss "^7.0.5" + url-regex "^5.0.0" + postcss@^5.0.0, postcss@^5.0.18: version "5.2.18" resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" @@ -4095,6 +4183,15 @@ postcss@^5.0.0, postcss@^5.0.18: source-map "^0.5.6" supports-color "^3.2.3" +postcss@^6.0.13: + 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.1" + source-map "^0.6.1" + supports-color "^5.4.0" + postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.13, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.7: version "7.0.17" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.17.tgz#4da1bdff5322d4a0acaab4d87f3e782436bad31f" @@ -4104,6 +4201,15 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.13, postcss@^7.0.14, postcss@^7.0.1 source-map "^0.6.1" supports-color "^6.1.0" +postcss@^7.0.18, postcss@^7.0.5: + version "7.0.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.18.tgz#4b9cda95ae6c069c67a4d933029eddd4838ac233" + integrity sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -4212,6 +4318,13 @@ react-is@^16.8.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.9.0.tgz#21ca9561399aad0ff1a7701c01683e8ca981edcb" integrity sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw== +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q= + dependencies: + pify "^2.3.0" + read-file-stdin@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/read-file-stdin/-/read-file-stdin-0.2.1.tgz#25eccff3a153b6809afacb23ee15387db9e0ee61" @@ -4491,7 +4604,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.3.2, resolve@^1.5.0: +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.3.2, resolve@^1.5.0: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== @@ -5027,7 +5140,7 @@ supports-color@^3.2.3: dependencies: has-flag "^1.0.0" -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== @@ -5104,6 +5217,11 @@ thunkify@^2.1.2: resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" integrity sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0= +tlds@^1.203.0: + version "1.203.1" + resolved "https://registry.yarnpkg.com/tlds/-/tlds-1.203.1.tgz#4dc9b02f53de3315bc98b80665e13de3edfc1dfc" + integrity sha512-7MUlYyGJ6rSitEZ3r1Q1QNV8uSIzapS8SmmhSusBuIc7uIxPPwsKllEP0GRp1NS6Ik6F+fRZvnjDWm3ecv2hDw== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -5318,6 +5436,14 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= +url-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/url-regex/-/url-regex-5.0.0.tgz#8f5456ab83d898d18b2f91753a702649b873273a" + integrity sha512-O08GjTiAFNsSlrUWfqF1jH0H1W3m35ZyadHrGv5krdnmPPoxP27oDTqux/579PtaroiSGm5yma6KT1mHFH6Y/g== + dependencies: + ip-regex "^4.1.0" + tlds "^1.203.0" + use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"