diff --git a/examples/basics/siteConfig.js b/examples/basics/siteConfig.js index eb415cb60c9f..7d95e66b6e62 100644 --- a/examples/basics/siteConfig.js +++ b/examples/basics/siteConfig.js @@ -32,22 +32,6 @@ const siteConfig = { headerIcon: 'img/docusaurus.svg', footerIcon: 'img/docusaurus.svg', favicon: 'img/favicon.png', - /* colors for website */ - colors: { - primaryColor: '#2E8555', - secondaryColor: '#205C3B', - }, - /* custom fonts for website */ - /*fonts: { - myFont: [ - "Times New Roman", - "Serif" - ], - myOtherFont: [ - "-apple-system", - "system-ui" - ] - },*/ // This copyright info is used in /core/Footer.js and blog rss/atom feeds. copyright: 'Copyright © ' + diff --git a/examples/basics/stylesConfig.pcss b/examples/basics/stylesConfig.pcss new file mode 100644 index 000000000000..875f8223d65d --- /dev/null +++ b/examples/basics/stylesConfig.pcss @@ -0,0 +1,6 @@ +// Check what you can do with precss! +// https://github.com/jonathantneal/precss + +$primaryColor: #2E8555; +$secondaryColor: #205C3B; +$codeColor: color-mod($primaryColor alpha(70%)); diff --git a/lib/server/server.js b/lib/server/server.js index 4b1a7275cac0..88e25571836c 100644 --- a/lib/server/server.js +++ b/lib/server/server.js @@ -8,7 +8,7 @@ function execute(port) { const extractTranslations = require('../write-translations.js'); - + const asyncHandler = require('express-async-handler'); const env = require('./env.js'); const translation = require('./translation.js'); const express = require('express'); @@ -432,16 +432,21 @@ function execute(port) { }); // generate the main.css file by concatenating user provided css to the end - app.get(/main\.css$/, (req, res) => { - const mainCssPath = - __dirname + - '/../static/' + - req.path.toString().replace(siteConfig.baseUrl, '/'); + app.get( + /main\.css$/, + asyncHandler(async (req, res, next) => { + const mainCssPath = + __dirname + + '/../static/' + + req.path.toString().replace(siteConfig.baseUrl, '/'); - const styles = new Styles(siteConfig, mainCssPath); + const styles = new Styles(siteConfig, mainCssPath); - styles.getCssContent().then(cssContent => res.send(cssContent)); - }); + const cssContent = await styles.getCssContent(); + + res.send(cssContent.css); + }) + ); // serve static assets from these locations app.use( diff --git a/lib/server/styles.js b/lib/server/styles.js index e53e0a6c616a..52bab5126352 100644 --- a/lib/server/styles.js +++ b/lib/server/styles.js @@ -1,7 +1,10 @@ const fs = require('fs'); const glob = require('glob'); const color = require('color'); +const postcss = require('postcss'); +const precss = require('precss'); const chalk = require('chalk'); +const autoprefixer = require('autoprefixer'); const CWD = process.cwd(); @@ -23,8 +26,25 @@ class Styles { return false; } + getStylesConfigContent() { + return __dirname + '/../static/css/styleConfig.pcss'; + } + + getFileContent(file) { + return fs.readFileSync(file, {encoding: 'utf8'}); + } + getCssContent() { - let cssContent = fs.readFileSync(this.mainCssPath, {encoding: 'utf8'}); + const config = CWD + '/stylesConfig.pcss'; + const stylesConfigFile = fs.existsSync(config) + ? config + : this.getStylesConfigContent(); + + const stylesConfigContent = this.getFileContent(stylesConfigFile); + + const mainCssContent = this.getFileContent(this.mainCssPath); + + let cssContent = stylesConfigContent + mainCssContent; let files = glob.sync(CWD + '/static/**/*.css'); @@ -32,45 +52,25 @@ class Styles { if (this.isSeparateCss(file)) { return; } - cssContent = - cssContent + '\n' + fs.readFileSync(file, {encoding: 'utf8'}); + cssContent = cssContent + this.getFileContent(file); }); if ( - !this.siteConfig.colors || - !this.siteConfig.colors.primaryColor || - !this.siteConfig.colors.secondaryColor + this.siteConfig.colors || + this.siteConfig.colors.primaryColor || + this.siteConfig.colors.secondaryColor ) { console.error( `${chalk.yellow( - 'Missing color configuration.' - )} Make sure siteConfig.colors includes primaryColor and secondaryColor fields.` + 'Deprecated color configuration.' + )} Make sure to use stylesConfig.pcss in your website folder` ); } - Object.keys(this.siteConfig.colors).forEach(key => { - const color = this.siteConfig.colors[key]; - cssContent = cssContent.replace(new RegExp('\\$' + key, 'g'), color); + return postcss([precss, autoprefixer]).process(cssContent, { + from: undefined, }); - const codeColor = color(this.siteConfig.colors.primaryColor) - .alpha(0.07) - .string(); - cssContent = cssContent.replace(new RegExp('\\$codeColor', 'g'), codeColor); - - if (this.siteConfig.fonts) { - Object.keys(this.siteConfig.fonts).forEach(key => { - const fontString = this.siteConfig.fonts[key] - .map(font => '"' + font + '"') - .join(', '); - cssContent = cssContent.replace( - new RegExp('\\$' + key, 'g'), - fontString - ); - }); - } - - return Promise.resolve(cssContent); } } -module.exports = Styles; \ No newline at end of file +module.exports = Styles; diff --git a/lib/static/css/stylesConfig.pcss b/lib/static/css/stylesConfig.pcss new file mode 100644 index 000000000000..875f8223d65d --- /dev/null +++ b/lib/static/css/stylesConfig.pcss @@ -0,0 +1,6 @@ +// Check what you can do with precss! +// https://github.com/jonathantneal/precss + +$primaryColor: #2E8555; +$secondaryColor: #205C3B; +$codeColor: color-mod($primaryColor alpha(70%)); diff --git a/package.json b/package.json index 4799c40e3b18..d3564f269122 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "test": "jest" }, "dependencies": { + "autoprefixer": "^7.2.5", "babel-plugin-transform-class-properties": "^6.24.1", "babel-plugin-transform-object-rest-spread": "^6.26.0", "babel-preset-env": "^1.6.0", @@ -38,10 +39,13 @@ "crowdin-cli": "^0.3.0", "escape-string-regexp": "^1.0.5", "express": "^4.15.3", + "express-async-handler": "^1.0.3", "feed": "^1.1.0", "fs-extra": "^5.0.0", "glob": "^7.1.2", "highlight.js": "^9.12.0", + "postcss": "^6.0.16", + "precss": "^3.1.0", "react": "^15.5.4", "react-dom": "^15.5.4", "react-dom-factories": "^1.0.1", diff --git a/yarn.lock b/yarn.lock index 8ebd186a420c..8de94f00ae70 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,14 @@ # yarn lockfile v1 +"@csstools/convert-colors@^1.3": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.3.0.tgz#471eeea45a24c4778f53cd2c906fbc52d4c71065" + +"@csstools/sass-import-resolve@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/sass-import-resolve/-/sass-import-resolve-1.0.0.tgz#32c3cdb2f7af3cd8f0dca357b592e7271f3831b5" + abab@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" @@ -178,6 +186,17 @@ autolinker@~0.15.0: version "0.15.3" resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-0.15.3.tgz#342417d8f2f3461b14cf09088d5edf8791dc9832" +autoprefixer@^7.2.5: + version "7.2.5" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.5.tgz#04ccbd0c6a61131b6d13f53d371926092952d192" + dependencies: + browserslist "^2.11.1" + caniuse-lite "^1.0.30000791" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^6.0.16" + postcss-value-parser "^3.2.3" + aws-sign2@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" @@ -651,6 +670,14 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" +babel-polyfill@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + dependencies: + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" + babel-preset-env@^1.6.0: version "1.6.1" resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48" @@ -722,7 +749,7 @@ babel-register@^6.24.1, babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: @@ -766,6 +793,10 @@ babylon@^6.17.4, babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" +balanced-match@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -847,6 +878,13 @@ browserslist@^2.1.2: caniuse-lite "^1.0.30000744" electron-to-chromium "^1.3.24" +browserslist@^2.11, browserslist@^2.11.1, browserslist@^2.4.0: + version "2.11.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.3.tgz#fe36167aed1bbcde4827ebfe71347a2cc70b99b2" + dependencies: + caniuse-lite "^1.0.30000792" + electron-to-chromium "^1.3.30" + bser@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" @@ -873,6 +911,10 @@ camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" +caniuse-lite@^1.0, caniuse-lite@^1.0.30000791, caniuse-lite@^1.0.30000792: + version "1.0.30000792" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000792.tgz#d0cea981f8118f3961471afbb43c9a1e5bbf0332" + caniuse-lite@^1.0.30000744: version "1.0.30000749" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000749.tgz#2ff382865aead8cca35dacfbab04f58effa4c01c" @@ -898,7 +940,7 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.1, chalk@^2.1.0: +chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" dependencies: @@ -938,15 +980,15 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" -color-convert@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" +color-convert@^1.8.2, color-convert@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" dependencies: color-name "^1.1.1" -color-convert@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" +color-convert@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" dependencies: color-name "^1.1.1" @@ -954,13 +996,20 @@ color-name@^1.0.0, color-name@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" -color-string@^1.5.2: +color-string@^1.4.0, color-string@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.2.tgz#26e45814bc3c9a7cbd6751648a41434514a773a9" dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" +color@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/color/-/color-1.0.3.tgz#e48e832d85f14ef694fb468811c2d5cfe729b55d" + dependencies: + color-convert "^1.8.2" + color-string "^1.4.0" + color@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color/-/color-2.0.1.tgz#e4ed78a3c4603d0891eba5430b04b86314f4c839" @@ -1062,6 +1111,10 @@ cryptiles@3.x.x: dependencies: boom "5.x.x" +cssdb@^1.5: + version "1.5.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-1.5.0.tgz#e6179657bf96eb063eb316b2f5a5f4c4a2633df7" + cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": version "0.3.2" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" @@ -1146,6 +1199,12 @@ diff@^3.2.0: version "3.4.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" +dot-prop@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + dependencies: + is-obj "^1.0.0" + ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" @@ -1160,6 +1219,10 @@ electron-to-chromium@^1.3.24: version "1.3.27" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz#78ecb8a399066187bb374eede35d9c70565a803d" +electron-to-chromium@^1.3.30: + version "1.3.31" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.31.tgz#00d832cba9fe2358652b0c48a8816c8e3a037e9f" + encodeurl@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" @@ -1262,6 +1325,10 @@ expect@^21.2.1: jest-message-util "^21.2.1" jest-regex-util "^21.2.0" +express-async-handler@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/express-async-handler/-/express-async-handler-1.0.3.tgz#2175dedb340ce202f244c6e49ecc12ef459a17d2" + express@^4.15.3: version "4.16.2" resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c" @@ -1399,6 +1466,10 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +flatten@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + for-in@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -1676,6 +1747,10 @@ imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -1785,6 +1860,10 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + is-posix-bracket@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" @@ -2124,6 +2203,10 @@ jest@^21.2.1: dependencies: jest-cli "^21.2.1" +js-base64@^2.1.9: + version "2.4.3" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582" + js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" @@ -2271,6 +2354,23 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +lodash._reinterpolate@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + +lodash.template@^4.2.4: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" + dependencies: + lodash._reinterpolate "~3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316" + dependencies: + lodash._reinterpolate "~3.0.0" + lodash@^4.14.0, lodash@^4.17.4: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -2454,6 +2554,10 @@ normalize-path@^2.0.0, normalize-path@^2.0.1: dependencies: remove-trailing-separator "^1.0.1" +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -2469,6 +2573,10 @@ npmlog@^4.0.2: gauge "~2.7.3" set-blocking "~2.0.0" +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -2481,7 +2589,7 @@ oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" -object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -2652,6 +2760,290 @@ pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" +postcss-advanced-variables@^2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/postcss-advanced-variables/-/postcss-advanced-variables-2.3.0.tgz#357621c7a2bb3a5313f64384ac166addbc7e124a" + dependencies: + "@csstools/sass-import-resolve" "^1.0.0" + babel-polyfill "^6.26.0" + postcss "^6.0" + +postcss-apply@^0.8: + version "0.8.0" + resolved "https://registry.yarnpkg.com/postcss-apply/-/postcss-apply-0.8.0.tgz#14e544bbb5cb6f1c1e048857965d79ae066b1343" + dependencies: + babel-runtime "^6.23.0" + balanced-match "^0.4.2" + postcss "^6.0.0" + +postcss-atroot@^0.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/postcss-atroot/-/postcss-atroot-0.1.3.tgz#6752c0230c745140549345b2b0e30ebeda01a405" + dependencies: + postcss "^5.0.5" + +postcss-attribute-case-insensitive@^2.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-2.0.0.tgz#94dc422c8f90997f16bd33a3654bbbec084963b4" + dependencies: + postcss "^6.0.0" + postcss-selector-parser "^2.2.3" + +postcss-color-hex-alpha@^3.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-3.0.0.tgz#1e53e6c8acb237955e8fd08b7ecdb1b8b8309f95" + dependencies: + color "^1.0.3" + postcss "^6.0.1" + postcss-message-helpers "^2.0.0" + +postcss-color-mod-function@^2.2: + version "2.3.0" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-2.3.0.tgz#56ba67d7fadccf190795efbc529b015c8fa68fdc" + dependencies: + "@csstools/convert-colors" "^1.3" + postcss "^6.0" + postcss-values-parser "^1.3" + +postcss-color-rebeccapurple@^3.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-3.0.0.tgz#eebaf03d363b4300b96792bd3081c19ed66513d3" + dependencies: + postcss "^6.0.1" + postcss-value-parser "^3.3.0" + +postcss-color-rgb@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-rgb/-/postcss-color-rgb-2.0.0.tgz#14539c8a7131494b482e0dd1cc265ff6514b5263" + dependencies: + postcss "^6.0.1" + postcss-value-parser "^3.3.0" + +postcss-custom-media@^6.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-6.0.0.tgz#be532784110ecb295044fb5395a18006eb21a737" + dependencies: + postcss "^6.0.1" + +postcss-custom-properties@^6.2: + version "6.2.0" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-6.2.0.tgz#5d929a7f06e9b84e0f11334194c0ba9a30acfbe9" + dependencies: + balanced-match "^1.0.0" + postcss "^6.0.13" + +postcss-custom-selectors@^4.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-4.0.1.tgz#781382f94c52e727ef5ca4776ea2adf49a611382" + dependencies: + postcss "^6.0.1" + postcss-selector-matches "^3.0.0" + +postcss-dir-pseudo-class@^2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-2.1.0.tgz#d441b000688d0ecdd88cc040da922e72b62cf830" + dependencies: + browserslist "^2.4.0" + postcss "^6.0.11" + postcss-selector-parser "^2.2.3" + +postcss-extend-rule@^1.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-extend-rule/-/postcss-extend-rule-1.1.0.tgz#11e4d590ffe4253b853ef1fc03be7167da607d38" + dependencies: + postcss "^6.0.11" + postcss-nesting "^4.2.1" + +postcss-font-family-system-ui@^3.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-family-system-ui/-/postcss-font-family-system-ui-3.0.0.tgz#675fe7a9e029669f05f8dba2e44c2225ede80623" + dependencies: + postcss "^6.0" + +postcss-font-variant@^3.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-3.0.0.tgz#08ccc88f6050ba82ed8ef2cc76c0c6a6b41f183e" + dependencies: + postcss "^6.0.1" + +postcss-image-set-polyfill@^0.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/postcss-image-set-polyfill/-/postcss-image-set-polyfill-0.4.4.tgz#5acdebd25aeb237dde0791c524b68947400995f8" + dependencies: + postcss "6.0.1" + postcss-media-query-parser "0.2.3" + postcss-value-parser "3.3.0" + +postcss-initial@^2.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-2.0.0.tgz#72715f7336e0bb79351d99ee65c4a253a8441ba4" + dependencies: + lodash.template "^4.2.4" + postcss "^6.0.1" + +postcss-logical@^1.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-1.0.2.tgz#b70199cc55676e48e2eca5421c58250b0c298c4a" + dependencies: + postcss "^6.0.9" + +postcss-media-minmax@^3.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-3.0.0.tgz#675256037a43ef40bc4f0760bfd06d4dc69d48d2" + dependencies: + postcss "^6.0.1" + +postcss-media-query-parser@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" + +postcss-message-helpers@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" + +postcss-nested@^3.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-3.0.0.tgz#cde40bd07a078565f3df72e2dc2665871c724852" + dependencies: + postcss "^6.0.14" + postcss-selector-parser "^3.1.1" + +postcss-nesting@^4.2, postcss-nesting@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-4.2.1.tgz#0483bce338b3f0828ced90ff530b29b98b00300d" + dependencies: + postcss "^6.0.11" + +postcss-preset-env@^2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-2.1.0.tgz#1c3de84e11c5e14c1424a0fb66ad506089adfe7c" + dependencies: + browserslist "^2.11" + caniuse-lite "^1.0" + cssdb "^1.5" + postcss "^6.0" + postcss-apply "^0.8" + postcss-attribute-case-insensitive "^2.0" + postcss-color-hex-alpha "^3.0" + postcss-color-mod-function "^2.2" + postcss-color-rebeccapurple "^3.0" + postcss-color-rgb "^2.0.0" + postcss-custom-media "^6.0" + postcss-custom-properties "^6.2" + postcss-custom-selectors "^4.0" + postcss-dir-pseudo-class "^2.1" + postcss-font-family-system-ui "^3.0" + postcss-font-variant "^3.0" + postcss-image-set-polyfill "^0.4" + postcss-initial "^2.0" + postcss-logical "^1.0" + postcss-media-minmax "^3.0" + postcss-nesting "^4.2" + postcss-pseudo-class-any-link "^4.0" + postcss-replace-overflow-wrap "^2.0" + postcss-selector-matches "^3.0" + postcss-selector-not "^3.0" + +postcss-property-lookup@^2.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-property-lookup/-/postcss-property-lookup-2.0.0.tgz#c995d1df42a75420f2aea834c2cbe296b2c15922" + dependencies: + object-assign "^4.0.1" + postcss "^6.0.6" + tcomb "^3.2.21" + +postcss-pseudo-class-any-link@^4.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-4.0.0.tgz#9152a0613d3450720513e8892854bae42d0ee68e" + dependencies: + postcss "^6.0.1" + postcss-selector-parser "^2.2.3" + +postcss-replace-overflow-wrap@^2.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-2.0.0.tgz#794db6faa54f8db100854392a93af45768b4e25b" + dependencies: + postcss "^6.0.1" + +postcss-selector-matches@^3.0, postcss-selector-matches@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-3.0.1.tgz#e5634011e13950881861bbdd58c2d0111ffc96ab" + dependencies: + balanced-match "^0.4.2" + postcss "^6.0.1" + +postcss-selector-not@^3.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-3.0.1.tgz#2e4db2f0965336c01e7cec7db6c60dff767335d9" + dependencies: + balanced-match "^0.4.2" + postcss "^6.0.1" + +postcss-selector-parser@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" + dependencies: + dot-prop "^4.1.1" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-value-parser@3.3.0, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" + +postcss-values-parser@^1.3: + version "1.3.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-1.3.1.tgz#2a6ceb39cecbbacd1d060f3b16f4c52dd6720c96" + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.1.tgz#000dbd1f8eef217aa368b9a212c5fc40b2a8f3f2" + dependencies: + chalk "^1.1.3" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^5.0.5: + version "5.2.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^6.0, postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.13, postcss@^6.0.14, postcss@^6.0.16, postcss@^6.0.6, postcss@^6.0.9: + version "6.0.16" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.16.tgz#112e2fe2a6d2109be0957687243170ea5589e146" + dependencies: + chalk "^2.3.0" + source-map "^0.6.1" + supports-color "^5.1.0" + +precss@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/precss/-/precss-3.1.0.tgz#d9698550d2f763c52b800bfa1c6ba54fb023313c" + dependencies: + postcss "^6.0" + postcss-advanced-variables "^2.3" + postcss-atroot "^0.1" + postcss-extend-rule "^1.1" + postcss-nested "^3.0" + postcss-preset-env "^2.1" + postcss-property-lookup "^2.0" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -2828,6 +3220,10 @@ regenerate@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + regenerator-runtime@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" @@ -3113,6 +3509,10 @@ source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + spdx-correct@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" @@ -3219,7 +3619,7 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^3.1.2: +supports-color@^3.1.2, supports-color@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" dependencies: @@ -3231,6 +3631,12 @@ supports-color@^4.0.0: dependencies: has-flag "^2.0.0" +supports-color@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.1.0.tgz#058a021d1b619f7ddf3980d712ea3590ce7de3d5" + dependencies: + has-flag "^2.0.0" + symbol-tree@^3.2.1: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" @@ -3256,6 +3662,10 @@ tar@^2.2.1: fstream "^1.0.2" inherits "2" +tcomb@^3.2.21: + version "3.2.24" + resolved "https://registry.yarnpkg.com/tcomb/-/tcomb-3.2.24.tgz#7f427053cc393b5997c4c3d859ca20411180887b" + tcp-port-used@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/tcp-port-used/-/tcp-port-used-0.1.2.tgz#9450e8768c83b416fd4d1a6a9449eeccbf496c29" @@ -3356,6 +3766,10 @@ underscore@~1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + universalify@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7"