diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 000000000..42cfd773e --- /dev/null +++ b/.eslintignore @@ -0,0 +1,3 @@ +/lib +/docs +defaultConfig.js diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 000000000..ff4ccca48 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,26 @@ +{ + "env": { + "jest": true + }, + "parserOptions": { + "ecmaVersion": 6, + "sourceType": "module" + }, + "extends": ["eslint-config-postcss", "prettier"], + "plugins": ["prettier"], + "rules": { + "prettier/prettier": [ + "error", + { + "semi": false, + "singleQuote": true, + "printWidth": 100, + "tabWidth": 2, + "useTabs": false, + "trailingComma": "es5", + "bracketSpacing": true, + "parser": "flow" + } + ] + } +} diff --git a/__tests__/applyAtRule.test.js b/__tests__/applyAtRule.test.js index 1829a3f9d..90bc8e0cf 100644 --- a/__tests__/applyAtRule.test.js +++ b/__tests__/applyAtRule.test.js @@ -2,20 +2,20 @@ import postcss from 'postcss' import plugin from '../src/lib/substituteClassApplyAtRules' function run(input, opts = () => {}) { - return postcss([plugin(opts)]).process(input) + return postcss([plugin(opts)]).process(input) } test("it copies a class's declarations into itself", () => { - const output = '.a { color: red; } .b { color: red; }' + const output = '.a { color: red; } .b { color: red; }' - return run('.a { color: red; } .b { @apply .a; }').then(result => { - expect(result.css).toEqual(output) - expect(result.warnings().length).toBe(0) - }) + return run('.a { color: red; } .b { @apply .a; }').then(result => { + expect(result.css).toEqual(output) + expect(result.warnings().length).toBe(0) + }) }) test("it doesn't copy a media query definition into itself", () => { - const output = `.a { + const output = `.a { color: red; } @@ -27,8 +27,8 @@ test("it doesn't copy a media query definition into itself", () => { color: red; }` - return run( - `.a { + return run( + `.a { color: red; } @@ -38,15 +38,15 @@ test("it doesn't copy a media query definition into itself", () => { .b { @apply .a; - }`) - .then(result => { - expect(result.css).toEqual(output) - expect(result.warnings().length).toBe(0) - }) + }` + ).then(result => { + expect(result.css).toEqual(output) + expect(result.warnings().length).toBe(0) + }) }) test('it fails if the class does not exist', () => { - run('.b { @apply .a; }').catch(error => { - expect(error.reason).toEqual('No .a class found.') - }) + run('.b { @apply .a; }').catch(error => { + expect(error.reason).toEqual('No .a class found.') + }) }) diff --git a/__tests__/configFunction.test.js b/__tests__/configFunction.test.js index 11f93876a..32d2a5a3d 100644 --- a/__tests__/configFunction.test.js +++ b/__tests__/configFunction.test.js @@ -5,7 +5,7 @@ function run(input, opts = {}) { return postcss([plugin(() => opts)]).process(input) } -test("it looks up values in the config using dot notation", () => { +test('it looks up values in the config using dot notation', () => { const input = ` .banana { color: config('colors.yellow'); } ` @@ -17,14 +17,14 @@ test("it looks up values in the config using dot notation", () => { return run(input, { colors: { yellow: '#f7cc50', - } + }, }).then(result => { expect(result.css).toEqual(output) expect(result.warnings().length).toBe(0) }) }) -test("quotes are optional around the lookup path", () => { +test('quotes are optional around the lookup path', () => { const input = ` .banana { color: config(colors.yellow); } ` @@ -36,14 +36,14 @@ test("quotes are optional around the lookup path", () => { return run(input, { colors: { yellow: '#f7cc50', - } + }, }).then(result => { expect(result.css).toEqual(output) expect(result.warnings().length).toBe(0) }) }) -test("a default value can be provided", () => { +test('a default value can be provided', () => { const input = ` .cookieMonster { color: config('colors.blue', #0000ff); } ` @@ -55,14 +55,14 @@ test("a default value can be provided", () => { return run(input, { colors: { yellow: '#f7cc50', - } + }, }).then(result => { expect(result.css).toEqual(output) expect(result.warnings().length).toBe(0) }) }) -test("quotes are preserved around default values", () => { +test('quotes are preserved around default values', () => { const input = ` .heading { font-family: config('fonts.sans', "Helvetica Neue"); } ` @@ -73,8 +73,8 @@ test("quotes are preserved around default values", () => { return run(input, { fonts: { - serif: "Constantia", - } + serif: 'Constantia', + }, }).then(result => { expect(result.css).toEqual(output) expect(result.warnings().length).toBe(0) diff --git a/__tests__/defineClass.test.js b/__tests__/defineClass.test.js index 9d14286d5..cb8fe09b5 100644 --- a/__tests__/defineClass.test.js +++ b/__tests__/defineClass.test.js @@ -1,6 +1,3 @@ -import postcss from 'postcss' -import fs from 'fs' -import _ from 'lodash' import c from '../src/util/collapseWhitespace' import defineClass from '../src/util/defineClass' @@ -8,21 +5,23 @@ import defineClass from '../src/util/defineClass' * Tests */ it('creates a proper single-word class with rules', () => { - let output = defineClass('flex', {display: 'flex'}) + let output = defineClass('flex', { display: 'flex' }) expect(c(output.toString())).toEqual(`.flex { display: flex }`) }) it('does not modify the case of selector names', () => { - let output = defineClass('inlineBlock', {display: 'inline-block'}) + let output = defineClass('inlineBlock', { display: 'inline-block' }) expect(c(output.toString())).toEqual(`.inlineBlock { display: inline-block }`) }) it('does not modify the case of property names', () => { - let output = defineClass('smooth', {'-webkit-font-smoothing': 'antialiased'}) + let output = defineClass('smooth', { + '-webkit-font-smoothing': 'antialiased', + }) expect(c(output.toString())).toEqual(`.smooth { -webkit-font-smoothing: antialiased }`) }) it('escapes non-standard characters in selectors', () => { - let output = defineClass('w-1/4', {'width': '25%'}) + let output = defineClass('w-1/4', { width: '25%' }) expect(c(output.toString())).toEqual(`.w-1\\/4 { width: 25% }`) }) diff --git a/__tests__/defineClasses.test.js b/__tests__/defineClasses.test.js index c33bdc9af..4c6087440 100644 --- a/__tests__/defineClasses.test.js +++ b/__tests__/defineClasses.test.js @@ -1,6 +1,3 @@ -import postcss from 'postcss' -import fs from 'fs' -import _ from 'lodash' import c from '../src/util/collapseWhitespace' import defineClasses from '../src/util/defineClasses' @@ -9,7 +6,7 @@ import defineClasses from '../src/util/defineClasses' */ it('it generates a set of helper classes from a config', () => { let output = defineClasses({ - 'flex': { + flex: { display: 'flex', }, 'inline-flex': { diff --git a/__tests__/focusableAtRule.test.js b/__tests__/focusableAtRule.test.js index 04fb8ba64..2241105cf 100644 --- a/__tests__/focusableAtRule.test.js +++ b/__tests__/focusableAtRule.test.js @@ -5,7 +5,7 @@ function run(input, opts = () => {}) { return postcss([plugin(opts)]).process(input) } -test("it adds a focusable variant to each nested class definition", () => { +test('it adds a focusable variant to each nested class definition', () => { const input = ` @focusable { .banana { color: yellow; } diff --git a/__tests__/hoverableAtRule.test.js b/__tests__/hoverableAtRule.test.js index afcd5096f..b52d02ed4 100644 --- a/__tests__/hoverableAtRule.test.js +++ b/__tests__/hoverableAtRule.test.js @@ -5,7 +5,7 @@ function run(input, opts = () => {}) { return postcss([plugin(opts)]).process(input) } -test("it adds a hoverable variant to each nested class definition", () => { +test('it adds a hoverable variant to each nested class definition', () => { const input = ` @hoverable { .banana { color: yellow; } diff --git a/__tests__/sanity.test.js b/__tests__/sanity.test.js index d452f6257..ece253709 100644 --- a/__tests__/sanity.test.js +++ b/__tests__/sanity.test.js @@ -12,7 +12,10 @@ it('generates the right CSS', () => { return postcss([tailwind()]) .process(input) .then(result => { - const expected = fs.readFileSync(path.resolve(`${__dirname}/fixtures/tailwind-output.css`), 'utf8') + const expected = fs.readFileSync( + path.resolve(`${__dirname}/fixtures/tailwind-output.css`), + 'utf8' + ) expect(result.css).toBe(expected) }) diff --git a/package.json b/package.json index 272c02ed4..8ad351686 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "babelify": "babel src --out-dir lib", "prepare": "npm run babelify && babel-node src/build.js", "watch": "nodemon -e js,css --watch src --exec 'babel-node src/build.js'", - "test": "jest" + "style": "eslint .", + "test": "jest && eslint ." }, "devDependencies": { "autoprefixer": "^7.1.6", @@ -32,7 +33,12 @@ "babel-preset-stage-2": "^6.24.1", "babel-preset-stage-3": "^6.24.1", "clean-css": "^4.1.9", + "eslint": "^4.10.0", + "eslint-config-postcss": "^2.0.2", + "eslint-config-prettier": "^2.7.0", + "eslint-plugin-prettier": "^2.3.1", "jest": "^20.0.4", + "prettier": "^1.7.4", "rimraf": "^2.6.1" }, "dependencies": { @@ -44,9 +50,7 @@ "postcss-functions": "^3.0.0", "stylefmt": "^6.0.0" }, - "browserslist": [ - "> 1%" - ], + "browserslist": ["> 1%"], "babel": { "presets": [ [ diff --git a/src/build.js b/src/build.js index c52e67416..47ac46069 100644 --- a/src/build.js +++ b/src/build.js @@ -8,10 +8,9 @@ function buildDistFile(filename) { console.log(`Processing ./css/${filename}.css...`) fs.readFile(`./css/${filename}.css`, (err, css) => { - return postcss([ - tailwind(), - require('autoprefixer'), - ]) + if (err) throw err + + return postcss([tailwind(), require('autoprefixer')]) .process(css, { from: `./css/${filename}.css`, to: `./dist/${filename}.css`, @@ -46,4 +45,3 @@ Promise.all([ ]).then(() => { console.log('Finished Building Tailwind!') }) - diff --git a/src/cli.js b/src/cli.js index ba65aeaa6..60a488f9d 100755 --- a/src/cli.js +++ b/src/cli.js @@ -1,19 +1,19 @@ #!/usr/bin/env node +/* eslint-disable no-process-exit */ -import fs from 'fs-extra' -import _ from 'lodash' import path from 'path' -import postcss from 'postcss' -import defaultConfig from '../defaultConfig' -import program from 'commander' +import fs from 'fs-extra' import tailwind from '..' +import postcss from 'postcss' +import process from 'process' +import program from 'commander' function loadConfig(configPath) { if (configPath === undefined) { return undefined } - if (! fs.existsSync(path.resolve(configPath))) { + if (!fs.existsSync(path.resolve(configPath))) { console.error(`Config file [${configPath}] does not exist.`) process.exit(1) } @@ -23,11 +23,11 @@ function loadConfig(configPath) { function writeStrategy(options) { if (options.output === undefined) { - return (output) => { + return output => { process.stdout.write(output) } } - return (output) => { + return output => { fs.outputFileSync(options.output, output) } } @@ -46,16 +46,17 @@ function buildTailwind(inputFile, config, write) { .catch(error => console.log(error)) } -const packageJson = require(path.resolve(__dirname + '/../package.json')) +const packageJson = require(path.resolve(__dirname, '/../package.json')) program.version(packageJson.version).usage(' []') -program.command('init [filename]') +program + .command('init [filename]') .usage('[options] [filename]') - .action(function (filename = 'tailwind.js') { + .action((filename = 'tailwind.js') => { let destination = path.resolve(filename) - - if (! path.extname(filename).includes('.js')) { + + if (!path.extname(filename).includes('.js')) { destination += '.js' } @@ -64,40 +65,40 @@ program.command('init [filename]') process.exit(1) } - const output = fs.readFileSync(path.resolve(__dirname + '/../defaultConfig.js'), 'utf8') + const output = fs.readFileSync(path.resolve(__dirname, '/../defaultConfig.js'), 'utf8') fs.outputFileSync(destination, output.replace('// var defaultConfig', 'var defaultConfig')) process.exit() }) -program.command('build') +program + .command('build') .usage('[options] ') .option('-c, --config [path]', 'Path to config file') .option('-o, --output [path]', 'Output file') - .action(function (file, options) { + .action((file, options) => { let inputFile = program.args[0] - if (! inputFile) { + if (!inputFile) { console.error('No input file given!') process.exit(1) } - buildTailwind(inputFile, loadConfig(options.config), writeStrategy(options)) - .then(function () { - process.exit() - }) + buildTailwind(inputFile, loadConfig(options.config), writeStrategy(options)).then(() => { + process.exit() + }) }) -program.command('*', null, { - noHelp: true +program + .command('*', null, { + noHelp: true, }) - .action(function () { + .action(() => { program.help() }) - program.parse(process.argv) -if (program.args.length === 0 ) { +if (program.args.length === 0) { program.help() process.exit() } diff --git a/src/generators/backgroundColors.js b/src/generators/backgroundColors.js index 1e33cc1e9..9e8cef23c 100644 --- a/src/generators/backgroundColors.js +++ b/src/generators/backgroundColors.js @@ -2,10 +2,12 @@ import _ from 'lodash' import defineClass from '../util/defineClass' import hoverable from '../util/hoverable' -export default function ({ backgroundColors }) { - return hoverable(_.map(backgroundColors, (color, className) => { - return defineClass(`bg-${className}`, { - 'background-color': color, +export default function({ backgroundColors }) { + return hoverable( + _.map(backgroundColors, (color, className) => { + return defineClass(`bg-${className}`, { + 'background-color': color, + }) }) - })) + ) } diff --git a/src/generators/borderColors.js b/src/generators/borderColors.js index c7e327ef9..5f1d72b98 100644 --- a/src/generators/borderColors.js +++ b/src/generators/borderColors.js @@ -2,10 +2,12 @@ import _ from 'lodash' import defineClass from '../util/defineClass' import hoverable from '../util/hoverable' -export default function ({ borderColors }) { - return hoverable(_.map(_.omit(borderColors, 'default'), (color, className) => { - return defineClass(`border-${className}`, { - 'border-color': color, +export default function({ borderColors }) { + return hoverable( + _.map(_.omit(borderColors, 'default'), (color, className) => { + return defineClass(`border-${className}`, { + 'border-color': color, + }) }) - })) + ) } diff --git a/src/generators/borderWidths.js b/src/generators/borderWidths.js index f5ef2eab2..57de0440f 100644 --- a/src/generators/borderWidths.js +++ b/src/generators/borderWidths.js @@ -1,11 +1,10 @@ import _ from 'lodash' -import defineClass from '../util/defineClass' import defineClasses from '../util/defineClasses' function defaultBorder(width, color) { return defineClasses({ - 'border': { - 'border': `${width} solid ${color}`, + border: { + border: `${width} solid ${color}`, }, 'border-t': { 'border-top': `${width} solid ${color}`, @@ -23,11 +22,11 @@ function defaultBorder(width, color) { } function sizedBorder(size, width, color) { - const style = width == 0 ? '0' : `${width} solid ${color}` + const style = width == 0 ? '0' : `${width} solid ${color}` // eslint-disable-line eqeqeq return defineClasses({ [`border-${size}`]: { - 'border': `${style}`, + border: `${style}`, }, [`border-t-${size}`]: { 'border-top': `${style}`, diff --git a/src/generators/container.js b/src/generators/container.js index 3774dd912..3742e2e61 100644 --- a/src/generators/container.js +++ b/src/generators/container.js @@ -1,9 +1,10 @@ +/* eslint-disable no-shadow */ import _ from 'lodash' import postcss from 'postcss' import defineClass from '../util/defineClass' function extractMinWidths(breakpoints) { - return _.flatMap(breakpoints, (breakpoints) => { + return _.flatMap(breakpoints, breakpoints => { if (_.isString(breakpoints)) { breakpoints = { min: breakpoints } } @@ -12,32 +13,37 @@ function extractMinWidths(breakpoints) { breakpoints = [breakpoints] } - return _(breakpoints).filter((breakpoint) => { - return _.has(breakpoint, 'min') || _.has(breakpoint, 'min-width') - }).map((breakpoint) => { - return _.get(breakpoint, 'min-width', breakpoint.min) - }).value() + return _(breakpoints) + .filter(breakpoint => { + return _.has(breakpoint, 'min') || _.has(breakpoint, 'min-width') + }) + .map(breakpoint => { + return _.get(breakpoint, 'min-width', breakpoint.min) + }) + .value() }) } -export default function ({ screens }) { +export default function({ screens }) { const minWidths = extractMinWidths(screens) - const atRules = _.map(minWidths, (minWidth) => { + const atRules = _.map(minWidths, minWidth => { const atRule = postcss.atRule({ name: 'media', params: `(min-width: ${minWidth})`, }) - atRule.append(defineClass('container', { - 'max-width': minWidth - })) + atRule.append( + defineClass('container', { + 'max-width': minWidth, + }) + ) return atRule }) return [ defineClass('container', { - width: '100%' + width: '100%', }), - ...atRules + ...atRules, ] } diff --git a/src/generators/cursor.js b/src/generators/cursor.js index 9d2f71a5f..c33bf7310 100644 --- a/src/generators/cursor.js +++ b/src/generators/cursor.js @@ -2,8 +2,8 @@ import defineClasses from '../util/defineClasses' export default function() { return defineClasses({ - 'cursor-auto': { 'cursor': 'auto' }, - 'cursor-pointer': { 'cursor': 'pointer' }, - 'cursor-not-allowed': { 'cursor': 'not-allowed' }, + 'cursor-auto': { cursor: 'auto' }, + 'cursor-pointer': { cursor: 'pointer' }, + 'cursor-not-allowed': { cursor: 'not-allowed' }, }) } diff --git a/src/generators/display.js b/src/generators/display.js index a47e80462..93f04f169 100644 --- a/src/generators/display.js +++ b/src/generators/display.js @@ -2,26 +2,26 @@ import defineClasses from '../util/defineClasses' export default function() { return defineClasses({ - 'block': { - 'display': 'block', + block: { + display: 'block', }, 'inline-block': { - 'display': 'inline-block', + display: 'inline-block', }, - 'inline': { - 'display': 'inline', + inline: { + display: 'inline', }, - 'table': { - 'display': 'table', + table: { + display: 'table', }, 'table-row': { - 'display': 'table-row', + display: 'table-row', }, 'table-cell': { - 'display': 'table-cell', + display: 'table-cell', }, - 'hidden': { - 'display': 'none', + hidden: { + display: 'none', }, }) } diff --git a/src/generators/flex.js b/src/generators/flex.js index f60e05b8a..10e26c30d 100644 --- a/src/generators/flex.js +++ b/src/generators/flex.js @@ -2,11 +2,11 @@ import defineClasses from '../util/defineClasses' export default function() { return defineClasses({ - 'flex': { - 'display': 'flex', + flex: { + display: 'flex', }, 'inline-flex': { - 'display': 'inline-flex', + display: 'inline-flex', }, 'flex-row': { 'flex-direction': 'row', @@ -90,16 +90,16 @@ export default function() { 'align-content': 'space-around', }, 'flex-1': { - 'flex': '1', + flex: '1', }, 'flex-auto': { - 'flex': 'auto', + flex: 'auto', }, 'flex-initial': { - 'flex': 'initial', + flex: 'initial', }, 'flex-none': { - 'flex': 'none', + flex: 'none', }, 'flex-grow': { 'flex-grow': '1', diff --git a/src/generators/floats.js b/src/generators/floats.js index 475ed94fb..e7707e783 100644 --- a/src/generators/floats.js +++ b/src/generators/floats.js @@ -3,16 +3,18 @@ import postcss from 'postcss' import defineClasses from '../util/defineClasses' export default function() { - return _.concat(defineClasses({ - 'float-right': { 'float': 'right' }, - 'float-left': { 'float': 'left' }, - 'float-none': { 'float': 'none' }, - }), postcss.parse(` + return _.concat( + defineClasses({ + 'float-right': { float: 'right' }, + 'float-left': { float: 'left' }, + 'float-none': { float: 'none' }, + }), + postcss.parse(` .clearfix:after { content: ""; display: table; clear: both; } `).nodes - ); + ) } diff --git a/src/generators/forms.js b/src/generators/forms.js index 2ed4a3be4..b97b7f1e2 100644 --- a/src/generators/forms.js +++ b/src/generators/forms.js @@ -2,6 +2,6 @@ import defineClasses from '../util/defineClasses' export default function() { return defineClasses({ - 'appearance-none': { 'appearance': 'none' }, + 'appearance-none': { appearance: 'none' }, }) } diff --git a/src/generators/lists.js b/src/generators/lists.js index e7ce05a18..2f68e8f62 100644 --- a/src/generators/lists.js +++ b/src/generators/lists.js @@ -4,8 +4,8 @@ export default function() { return defineClasses({ 'list-reset': { 'list-style': 'none', - 'margin': '0', - 'padding': '0', + margin: '0', + padding: '0', }, }) } diff --git a/src/generators/opacity.js b/src/generators/opacity.js index 382d2baec..31379145a 100644 --- a/src/generators/opacity.js +++ b/src/generators/opacity.js @@ -1,10 +1,10 @@ import _ from 'lodash' import defineClass from '../util/defineClass' -export default function ({ opacity }) { +export default function({ opacity }) { return _.map(opacity, (value, modifier) => { return defineClass(`opacity-${modifier}`, { - 'opacity': value, + opacity: value, }) }) } diff --git a/src/generators/overflow.js b/src/generators/overflow.js index 6ca9feebe..0346171d0 100644 --- a/src/generators/overflow.js +++ b/src/generators/overflow.js @@ -6,8 +6,14 @@ export default function() { 'overflow-hidden': { overflow: 'hidden' }, 'overflow-visible': { overflow: 'visible' }, 'overflow-scroll': { overflow: 'scroll' }, - 'overflow-x-scroll': { 'overflow-x': 'auto', '-ms-overflow-style': '-ms-autohiding-scrollbar' }, - 'overflow-y-scroll': { 'overflow-y': 'auto', '-ms-overflow-style': '-ms-autohiding-scrollbar' }, + 'overflow-x-scroll': { + 'overflow-x': 'auto', + '-ms-overflow-style': '-ms-autohiding-scrollbar', + }, + 'overflow-y-scroll': { + 'overflow-y': 'auto', + '-ms-overflow-style': '-ms-autohiding-scrollbar', + }, 'scrolling-touch': { '-webkit-overflow-scrolling': 'touch' }, 'scrolling-auto': { '-webkit-overflow-scrolling': 'auto' }, }) diff --git a/src/generators/position.js b/src/generators/position.js index ad3809f92..2bc9bf186 100644 --- a/src/generators/position.js +++ b/src/generators/position.js @@ -2,16 +2,23 @@ import defineClasses from '../util/defineClasses' export default function() { return defineClasses({ - 'static': { position: 'static' }, - 'fixed': { position: 'fixed' }, - 'absolute': { position: 'absolute' }, - 'relative': { position: 'relative' }, + static: { position: 'static' }, + fixed: { position: 'fixed' }, + absolute: { position: 'absolute' }, + relative: { position: 'relative' }, 'pin-t': { top: 0 }, 'pin-r': { right: 0 }, 'pin-b': { bottom: 0 }, 'pin-l': { left: 0 }, 'pin-y': { top: 0, bottom: 0 }, 'pin-x': { right: 0, left: 0 }, - 'pin': { top: 0, right: 0, bottom: 0, left: 0, width: '100%', height: '100%' }, + pin: { + top: 0, + right: 0, + bottom: 0, + left: 0, + width: '100%', + height: '100%', + }, }) } diff --git a/src/generators/resize.js b/src/generators/resize.js index cc97bb529..711e3f684 100644 --- a/src/generators/resize.js +++ b/src/generators/resize.js @@ -2,8 +2,8 @@ import defineClasses from '../util/defineClasses' export default function() { return defineClasses({ - 'resize-none': { 'resize': 'none' }, - 'resize-y': { 'resize': 'vertical' }, - 'resize-x': { 'resize': 'horizontal' }, + 'resize-none': { resize: 'none' }, + 'resize-y': { resize: 'vertical' }, + 'resize-x': { resize: 'horizontal' }, }) } diff --git a/src/generators/rounded.js b/src/generators/rounded.js index 48135d12d..b251725a2 100644 --- a/src/generators/rounded.js +++ b/src/generators/rounded.js @@ -24,9 +24,12 @@ function sideVariants() { } module.exports = function({ borderRadius }) { - return _(borderRadius).map((radius, modifier) => { - return defineClass(modifier === 'default' ? 'rounded' : `rounded-${modifier}`, { - 'border-radius': radius, + return _(borderRadius) + .map((radius, modifier) => { + return defineClass(modifier === 'default' ? 'rounded' : `rounded-${modifier}`, { + 'border-radius': radius, + }) }) - }).concat(sideVariants()).value() + .concat(sideVariants()) + .value() } diff --git a/src/generators/shadows.js b/src/generators/shadows.js index c9a5bdc94..b16de5bbb 100644 --- a/src/generators/shadows.js +++ b/src/generators/shadows.js @@ -1,7 +1,7 @@ import _ from 'lodash' import defineClass from '../util/defineClass' -export default function({shadows}) { +export default function({ shadows }) { return _.map(shadows, (shadow, modifier) => { return defineClass(modifier === 'default' ? 'shadow' : `shadow-${modifier}`, { 'box-shadow': shadow, diff --git a/src/generators/sizing.js b/src/generators/sizing.js index f4d8180f1..16c83d86d 100644 --- a/src/generators/sizing.js +++ b/src/generators/sizing.js @@ -4,7 +4,7 @@ import defineClass from '../util/defineClass' function defineWidths(widths) { return _.map(widths, (size, modifer) => { return defineClass(`w-${modifer}`, { - 'width': `${size}`, + width: `${size}`, }) }) } @@ -28,7 +28,7 @@ function defineMaxWidths(widths) { function defineHeights(heights) { return _.map(heights, (size, modifer) => { return defineClass(`h-${modifer}`, { - 'height': `${size}`, + height: `${size}`, }) }) } @@ -49,7 +49,7 @@ function defineMaxHeights(heights) { }) } -export default function (config) { +export default function(config) { return _.flatten([ defineWidths(config.width), defineMinWidths(config.minWidth), diff --git a/src/generators/spacing.js b/src/generators/spacing.js index bd0ebdde2..eb68ddab3 100644 --- a/src/generators/spacing.js +++ b/src/generators/spacing.js @@ -25,7 +25,7 @@ function definePadding(padding) { 'padding-bottom': `${size}`, }, [`p-${modifier}`]: { - 'padding': `${size}`, + padding: `${size}`, }, }) }) @@ -55,7 +55,7 @@ function defineMargin(margin) { 'margin-bottom': `${size}`, }, [`m-${modifier}`]: { - 'margin': `${size}`, + margin: `${size}`, }, }) }) @@ -87,13 +87,13 @@ function defineNegativeMargin(negativeMargin) { 'margin-bottom': `${size}`, }, [`-m-${modifier}`]: { - 'margin': `${size}`, + margin: `${size}`, }, }) }) } -export default function ({ padding, margin, negativeMargin }) { +export default function({ padding, margin, negativeMargin }) { return _.flatten([ definePadding(padding), defineMargin(margin), @@ -119,7 +119,7 @@ export default function ({ padding, margin, negativeMargin }) { 'margin-bottom': 'auto', }, 'm-auto': { - 'margin': 'auto', + margin: 'auto', }, }), defineNegativeMargin(negativeMargin), diff --git a/src/generators/textColors.js b/src/generators/textColors.js index 7ead0593f..05443d7ef 100644 --- a/src/generators/textColors.js +++ b/src/generators/textColors.js @@ -2,10 +2,12 @@ import _ from 'lodash' import defineClass from '../util/defineClass' import hoverable from '../util/hoverable' -export default function ({ textColors }) { - return hoverable(_.map(textColors, (color, modifier) => { - return defineClass(`text-${modifier}`, { - 'color': color, +export default function({ textColors }) { + return hoverable( + _.map(textColors, (color, modifier) => { + return defineClass(`text-${modifier}`, { + color, + }) }) - })) + ) } diff --git a/src/generators/textFonts.js b/src/generators/textFonts.js index 85accaabf..d2a3bf308 100644 --- a/src/generators/textFonts.js +++ b/src/generators/textFonts.js @@ -1,7 +1,7 @@ import _ from 'lodash' import defineClass from '../util/defineClass' -export default function ({ fonts }) { +export default function({ fonts }) { return _.map(fonts, (families, font) => { if (_.isArray(families)) { families = families.join(', ') diff --git a/src/generators/textLeading.js b/src/generators/textLeading.js index 3fd79fe82..ce661b93a 100644 --- a/src/generators/textLeading.js +++ b/src/generators/textLeading.js @@ -1,7 +1,7 @@ import _ from 'lodash' import defineClass from '../util/defineClass' -export default function ({ leading }) { +export default function({ leading }) { return _.map(leading, (value, modifier) => { return defineClass(`leading-${modifier}`, { 'line-height': `${value}`, diff --git a/src/generators/textSizes.js b/src/generators/textSizes.js index 1e6afd506..447e0db7c 100644 --- a/src/generators/textSizes.js +++ b/src/generators/textSizes.js @@ -1,7 +1,7 @@ import _ from 'lodash' import defineClass from '../util/defineClass' -export default function ({ textSizes }) { +export default function({ textSizes }) { return _.map(textSizes, (size, modifier) => { return defineClass(`text-${modifier}`, { 'font-size': `${size}`, diff --git a/src/generators/textStyle.js b/src/generators/textStyle.js index 2b8a16ca1..39658d3a2 100644 --- a/src/generators/textStyle.js +++ b/src/generators/textStyle.js @@ -1,30 +1,29 @@ -import _ from 'lodash' import defineClasses from '../util/defineClasses' import hoverable from '../util/hoverable' export default function() { return hoverable( defineClasses({ - 'italic': { 'font-style': 'italic' }, - 'roman': { 'font-style': 'normal' }, + italic: { 'font-style': 'italic' }, + roman: { 'font-style': 'normal' }, - 'uppercase': { 'text-transform': 'uppercase' }, - 'lowercase': { 'text-transform': 'lowercase' }, - 'capitalize': { 'text-transform': 'capitalize' }, + uppercase: { 'text-transform': 'uppercase' }, + lowercase: { 'text-transform': 'lowercase' }, + capitalize: { 'text-transform': 'capitalize' }, 'normal-case': { 'text-transform': 'none' }, - 'underline': { 'text-decoration': 'underline' }, + underline: { 'text-decoration': 'underline' }, 'line-through': { 'text-decoration': 'line-through' }, 'no-underline': { 'text-decoration': 'none' }, - 'antialiased': { + antialiased: { '-webkit-font-smoothing': 'antialiased', - '-moz-osx-font-smoothing': 'grayscale' + '-moz-osx-font-smoothing': 'grayscale', }, 'subpixel-antialiased': { '-webkit-font-smoothing': 'auto', - '-moz-osx-font-smoothing': 'auto' - } + '-moz-osx-font-smoothing': 'auto', + }, }) ) } diff --git a/src/generators/textTracking.js b/src/generators/textTracking.js index e36eef651..696ee34c3 100644 --- a/src/generators/textTracking.js +++ b/src/generators/textTracking.js @@ -1,7 +1,7 @@ import _ from 'lodash' import defineClass from '../util/defineClass' -export default function ({ tracking }) { +export default function({ tracking }) { return _.map(tracking, (value, modifier) => { return defineClass(`tracking-${modifier}`, { 'letter-spacing': `${value}`, diff --git a/src/generators/textWeights.js b/src/generators/textWeights.js index 476878e44..b00489777 100644 --- a/src/generators/textWeights.js +++ b/src/generators/textWeights.js @@ -2,10 +2,12 @@ import _ from 'lodash' import defineClass from '../util/defineClass' import hoverable from '../util/hoverable' -export default function ({ fontWeights }) { - return hoverable(_.map(fontWeights, (weight, modifier) => { - return defineClass(`font-${modifier}`, { - 'font-weight': `${weight}`, +export default function({ fontWeights }) { + return hoverable( + _.map(fontWeights, (weight, modifier) => { + return defineClass(`font-${modifier}`, { + 'font-weight': `${weight}`, + }) }) - })) + ) } diff --git a/src/generators/textWrap.js b/src/generators/textWrap.js index 9a23805ee..f869c8788 100644 --- a/src/generators/textWrap.js +++ b/src/generators/textWrap.js @@ -11,8 +11,8 @@ export default function() { 'break-words': { 'word-wrap': 'break-word' }, 'break-normal': { 'word-wrap': 'normal' }, - 'truncate': { - 'overflow': 'hidden', + truncate: { + overflow: 'hidden', 'text-overflow': 'ellipsis', 'white-space': 'nowrap', }, diff --git a/src/generators/visibility.js b/src/generators/visibility.js index 82fe72765..7084040bb 100644 --- a/src/generators/visibility.js +++ b/src/generators/visibility.js @@ -2,7 +2,7 @@ import defineClasses from '../util/defineClasses' export default function() { return defineClasses({ - 'visible': { 'visibility': 'visible' }, - 'invisible': { 'visibility': 'hidden' }, + visible: { visibility: 'visible' }, + invisible: { visibility: 'hidden' }, }) } diff --git a/src/generators/zIndex.js b/src/generators/zIndex.js index 97b405272..cea79b2f7 100644 --- a/src/generators/zIndex.js +++ b/src/generators/zIndex.js @@ -1,7 +1,7 @@ import _ from 'lodash' import defineClass from '../util/defineClass' -export default function ({ zIndex }) { +export default function({ zIndex }) { return _.map(zIndex, (value, modifier) => { return defineClass(`z-${modifier}`, { 'z-index': value, diff --git a/src/index.js b/src/index.js index f0899fe77..bf8fb76aa 100644 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,3 @@ -import fs from 'fs' import path from 'path' import _ from 'lodash' @@ -15,10 +14,10 @@ import substituteResponsiveAtRules from './lib/substituteResponsiveAtRules' import substituteScreenAtRules from './lib/substituteScreenAtRules' import substituteClassApplyAtRules from './lib/substituteClassApplyAtRules' -const plugin = postcss.plugin('tailwind', (config) => { +const plugin = postcss.plugin('tailwind', config => { const plugins = [] - if (! _.isUndefined(config)) { + if (!_.isUndefined(config)) { plugins.push(registerConfigAsDependency(path.resolve(config))) } @@ -31,20 +30,23 @@ const plugin = postcss.plugin('tailwind', (config) => { return require(path.resolve(config)) } - return postcss(...plugins, ...[ - substitutePreflightAtRule(lazyConfig), - evaluateTailwindFunctions(lazyConfig), - generateUtilities(lazyConfig), - substituteHoverableAtRules(lazyConfig), - substituteFocusableAtRules(lazyConfig), - substituteResponsiveAtRules(lazyConfig), - substituteScreenAtRules(lazyConfig), - substituteClassApplyAtRules(lazyConfig), - stylefmt, - ]) + return postcss( + ...plugins, + ...[ + substitutePreflightAtRule(lazyConfig), + evaluateTailwindFunctions(lazyConfig), + generateUtilities(lazyConfig), + substituteHoverableAtRules(lazyConfig), + substituteFocusableAtRules(lazyConfig), + substituteResponsiveAtRules(lazyConfig), + substituteScreenAtRules(lazyConfig), + substituteClassApplyAtRules(lazyConfig), + stylefmt, + ] + ) }) -plugin.defaultConfig = function () { +plugin.defaultConfig = function() { return _.cloneDeep(require('../defaultConfig')) } diff --git a/src/lib/evaluateTailwindFunctions.js b/src/lib/evaluateTailwindFunctions.js index 2e00ed9c1..307baf3c3 100644 --- a/src/lib/evaluateTailwindFunctions.js +++ b/src/lib/evaluateTailwindFunctions.js @@ -6,9 +6,9 @@ export default function(config) { return functions({ functions: { - config: function (path, defaultValue) { + config: (path, defaultValue) => { return _.get(options, _.trim(path, `'"`), defaultValue) - } - } + }, + }, }) } diff --git a/src/lib/registerConfigAsDependency.js b/src/lib/registerConfigAsDependency.js index 589db20ed..95dcc657c 100644 --- a/src/lib/registerConfigAsDependency.js +++ b/src/lib/registerConfigAsDependency.js @@ -1,15 +1,17 @@ import fs from 'fs' export default function(configFile) { - if (! fs.existsSync(configFile)) { + if (!fs.existsSync(configFile)) { throw new Error(`Specified Tailwind config file "${configFile}" doesn't exist.`) } - return function (css, opts) { - opts.messages = [{ - type: 'dependency', - file: configFile, - parent: css.source.input.file, - }] + return function(css, opts) { + opts.messages = [ + { + type: 'dependency', + file: configFile, + parent: css.source.input.file, + }, + ] } } diff --git a/src/lib/substituteClassApplyAtRules.js b/src/lib/substituteClassApplyAtRules.js index ff3568c4d..11aaf3f98 100644 --- a/src/lib/substituteClassApplyAtRules.js +++ b/src/lib/substituteClassApplyAtRules.js @@ -1,18 +1,17 @@ -import postcss from 'postcss' import _ from 'lodash' +import postcss from 'postcss' import findMixin from '../util/findMixin' import escapeClassName from '../util/escapeClassName' function normalizeClassNames(classNames) { - return classNames.map((className) => { + return classNames.map(className => { return `.${escapeClassName(_.trimStart(className, '.'))}` }) } -export default function(config) { - return function (css) { - const options = config() - css.walkRules(function(rule) { +export default function() { + return function(css) { + css.walkRules(rule => { rule.walkAtRules('apply', atRule => { const mixins = normalizeClassNames(postcss.list.space(atRule.params)) diff --git a/src/lib/substituteFocusableAtRules.js b/src/lib/substituteFocusableAtRules.js index 10cf04e2f..5fe48c825 100644 --- a/src/lib/substituteFocusableAtRules.js +++ b/src/lib/substituteFocusableAtRules.js @@ -1,20 +1,12 @@ -import _ from 'lodash' -import postcss from 'postcss' import cloneNodes from '../util/cloneNodes' -export default function(config) { - return function (css) { - const options = config() - +export default function() { + return function(css) { css.walkAtRules('focusable', atRule => { - atRule.walkRules(rule => { // Might be wise to error if the rule has multiple selectors, // or weird compound selectors like .bg-blue>p>h1 - rule.selectors = [ - rule.selector, - `.focus\\:${rule.selector.slice(1)}:focus` - ] + rule.selectors = [rule.selector, `.focus\\:${rule.selector.slice(1)}:focus`] }) atRule.before(cloneNodes(atRule.nodes)) diff --git a/src/lib/substituteHoverableAtRules.js b/src/lib/substituteHoverableAtRules.js index abe432d70..0fe0d10e6 100644 --- a/src/lib/substituteHoverableAtRules.js +++ b/src/lib/substituteHoverableAtRules.js @@ -1,20 +1,12 @@ -import _ from 'lodash' -import postcss from 'postcss' import cloneNodes from '../util/cloneNodes' -export default function(config) { - return function (css) { - const options = config() - +export default function() { + return function(css) { css.walkAtRules('hoverable', atRule => { - atRule.walkRules(rule => { // Might be wise to error if the rule has multiple selectors, // or weird compound selectors like .bg-blue>p>h1 - rule.selectors = [ - rule.selector, - `.hover\\:${rule.selector.slice(1)}:hover` - ] + rule.selectors = [rule.selector, `.hover\\:${rule.selector.slice(1)}:hover`] }) atRule.before(cloneNodes(atRule.nodes)) diff --git a/src/lib/substitutePreflightAtRule.js b/src/lib/substitutePreflightAtRule.js index 62e01a49a..24060c3b8 100644 --- a/src/lib/substitutePreflightAtRule.js +++ b/src/lib/substitutePreflightAtRule.js @@ -1,14 +1,14 @@ import fs from 'fs' import postcss from 'postcss' -export default function(config) { - return function (css) { - const options = config() - +export default function() { + return function(css) { css.walkAtRules('tailwind', atRule => { if (atRule.params === 'preflight') { - atRule.before(postcss.parse(fs.readFileSync(`${__dirname}/../../css/preflight.css`, 'utf8'))) - atRule.remove() + atRule.before( + postcss.parse(fs.readFileSync(`${__dirname}/../../css/preflight.css`, 'utf8')) + ) + atRule.remove() } }) } diff --git a/src/lib/substituteResponsiveAtRules.js b/src/lib/substituteResponsiveAtRules.js index 9f2ec7b76..a7baf1729 100644 --- a/src/lib/substituteResponsiveAtRules.js +++ b/src/lib/substituteResponsiveAtRules.js @@ -3,9 +3,8 @@ import postcss from 'postcss' import cloneNodes from '../util/cloneNodes' import buildMediaQuery from '../util/buildMediaQuery' - export default function(config) { - return function (css) { + return function(css) { const screens = config().screens const rules = [] diff --git a/src/lib/substituteScreenAtRules.js b/src/lib/substituteScreenAtRules.js index 951492e8f..bc8cc7da4 100644 --- a/src/lib/substituteScreenAtRules.js +++ b/src/lib/substituteScreenAtRules.js @@ -1,17 +1,14 @@ import _ from 'lodash' -import postcss from 'postcss' -import cloneNodes from '../util/cloneNodes' import buildMediaQuery from '../util/buildMediaQuery' export default function(config) { return function(css) { const options = config() - const rules = [] css.walkAtRules('screen', atRule => { const screen = atRule.params - if (! _.has(options.screens, screen)) { + if (!_.has(options.screens, screen)) { throw atRule.error(`No \`${screen}\` screen found.`) } diff --git a/src/util/buildMediaQuery.js b/src/util/buildMediaQuery.js index ad6cff6ea..cbac0a024 100644 --- a/src/util/buildMediaQuery.js +++ b/src/util/buildMediaQuery.js @@ -9,21 +9,25 @@ export default function buildMediaQuery(screens) { screens = [screens] } - return _(screens).map((screen) => { - if (_.has(screen, 'raw')) { - return screen.raw - } + return _(screens) + .map(screen => { + if (_.has(screen, 'raw')) { + return screen.raw + } - return _(screen).map((value, feature) => { - feature = _.get( - { - min: 'min-width', - max: 'max-width', - }, - feature, - feature - ) - return `(${feature}: ${value})` - }).join(' and ') - }).join(', ') + return _(screen) + .map((value, feature) => { + feature = _.get( + { + min: 'min-width', + max: 'max-width', + }, + feature, + feature + ) + return `(${feature}: ${value})` + }) + .join(' and ') + }) + .join(', ') } diff --git a/src/util/defineClass.js b/src/util/defineClass.js index 5a21d4687..8ccb3aa69 100644 --- a/src/util/defineClass.js +++ b/src/util/defineClass.js @@ -10,7 +10,9 @@ export default function(className, properties) { }) }) - return postcss.rule({ - selector: `.${escapeClassName(className)}`, - }).append(decls) + return postcss + .rule({ + selector: `.${escapeClassName(className)}`, + }) + .append(decls) } diff --git a/src/util/defineClasses.js b/src/util/defineClasses.js index 6a60751d7..4f80aef30 100644 --- a/src/util/defineClasses.js +++ b/src/util/defineClasses.js @@ -1,4 +1,3 @@ -import postcss from 'postcss' import _ from 'lodash' import defineClass from './defineClass' diff --git a/src/util/escapeClassName.js b/src/util/escapeClassName.js index 052a4de8b..3c2f93738 100644 --- a/src/util/escapeClassName.js +++ b/src/util/escapeClassName.js @@ -1,3 +1,3 @@ export default function escapeClassName(className) { - return className.replace(/([^A-Za-z0-9\-])/g, "\\$1") + return className.replace(/([^A-Za-z0-9\-])/g, '\\$1') } diff --git a/src/util/findMixin.js b/src/util/findMixin.js index b07372a4e..1460ea812 100644 --- a/src/util/findMixin.js +++ b/src/util/findMixin.js @@ -4,7 +4,7 @@ export default function findMixin(css, mixin, onError) { const matches = [] css.walkRules(rule => { - if (rule.selectors.includes(mixin) && rule.parent.type == 'root') { + if (rule.selectors.includes(mixin) && rule.parent.type === 'root') { matches.push(rule) } }) diff --git a/src/util/focusable.js b/src/util/focusable.js index 34996202b..5f05af1a0 100644 --- a/src/util/focusable.js +++ b/src/util/focusable.js @@ -2,7 +2,9 @@ import postcss from 'postcss' import cloneNodes from './cloneNodes' export default function focusable(rules) { - return postcss.atRule({ - name: 'focusable', - }).append(cloneNodes(rules)) + return postcss + .atRule({ + name: 'focusable', + }) + .append(cloneNodes(rules)) } diff --git a/src/util/hoverable.js b/src/util/hoverable.js index afe4ea1c8..ad76b8a35 100644 --- a/src/util/hoverable.js +++ b/src/util/hoverable.js @@ -2,7 +2,9 @@ import postcss from 'postcss' import cloneNodes from './cloneNodes' export default function hoverable(rules) { - return postcss.atRule({ - name: 'hoverable', - }).append(cloneNodes(rules)) + return postcss + .atRule({ + name: 'hoverable', + }) + .append(cloneNodes(rules)) } diff --git a/src/util/responsive.js b/src/util/responsive.js index eb9fa1e4f..67c905645 100644 --- a/src/util/responsive.js +++ b/src/util/responsive.js @@ -2,7 +2,9 @@ import postcss from 'postcss' import cloneNodes from './cloneNodes' export default function responsive(rules) { - return postcss.atRule({ - name: 'responsive', - }).append(cloneNodes(rules)) + return postcss + .atRule({ + name: 'responsive', + }) + .append(cloneNodes(rules)) } diff --git a/yarn.lock b/yarn.lock index 4dcfb387d..216fbc36f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,10 +23,24 @@ acorn-globals@^3.1.0: dependencies: acorn "^4.0.4" +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + acorn@^4.0.4: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" +acorn@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7" + ajv-keywords@^1.0.0: version "1.5.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" @@ -38,6 +52,15 @@ ajv@^4.7.0, ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" +ajv@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.3.0.tgz#4414ff74a50879c208ee5fdc826e32c303549eda" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" @@ -60,6 +83,10 @@ ansi-escapes@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" +ansi-escapes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" + ansi-regex@^2.0.0, ansi-regex@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -229,7 +256,7 @@ babel-cli@^6.6.5: optionalDependencies: chokidar "^1.6.1" -babel-code-frame@^6.26.0: +babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" dependencies: @@ -983,6 +1010,16 @@ builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + callsites@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" @@ -1047,17 +1084,17 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.1, chalk@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" +chalk@^2.0.0, chalk@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" dependencies: ansi-styles "^3.1.0" escape-string-regexp "^1.0.5" supports-color "^4.0.0" -chalk@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" +chalk@^2.0.1, chalk@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" dependencies: ansi-styles "^3.1.0" escape-string-regexp "^1.0.5" @@ -1096,6 +1133,16 @@ cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + cliui@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" @@ -1170,6 +1217,14 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" +concat-stream@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + configstore@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90" @@ -1219,7 +1274,7 @@ create-error-class@^3.0.0: dependencies: capture-stack-trace "^1.0.0" -cross-spawn@^5.0.1: +cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" dependencies: @@ -1295,6 +1350,12 @@ debug@^2.2.0, debug@^2.6.0, debug@^2.6.3, debug@^2.6.8: dependencies: ms "2.0.0" +debug@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1358,6 +1419,13 @@ diff@^3.2.0: version "3.3.1" resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" +doctrine@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + doiuse@^2.4.1: version "2.6.0" resolved "https://registry.yarnpkg.com/doiuse/-/doiuse-2.6.0.tgz#1892d10b61a9a356addbf2b614933e81f8bb3834" @@ -1468,6 +1536,79 @@ escodegen@^1.6.1: optionalDependencies: source-map "~0.5.6" +eslint-config-postcss@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/eslint-config-postcss/-/eslint-config-postcss-2.0.2.tgz#cae1c6093ced7850894a5b85fbe1d1e232b72afb" + +eslint-config-prettier@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-2.7.0.tgz#7bbfef66ad783277836f4ea556e68b9bcc9da4d0" + dependencies: + get-stdin "^5.0.1" + +eslint-plugin-prettier@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.3.1.tgz#e7a746c67e716f335274b88295a9ead9f544e44d" + dependencies: + fast-diff "^1.1.1" + jest-docblock "^21.0.0" + +eslint-scope@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint@^4.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.10.0.tgz#f25d0d7955c81968c2309aa5c9a229e045176bb7" + dependencies: + ajv "^5.2.0" + babel-code-frame "^6.22.0" + chalk "^2.1.0" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^3.0.1" + doctrine "^2.0.0" + eslint-scope "^3.7.1" + espree "^3.5.1" + esquery "^1.0.0" + estraverse "^4.2.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^9.17.0" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^3.0.6" + is-resolvable "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + require-uncached "^1.0.3" + semver "^5.3.0" + strip-ansi "^4.0.0" + strip-json-comments "~2.0.1" + table "^4.0.1" + text-table "~0.2.0" + +espree@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.1.tgz#0c988b8ab46db53100a1954ae4ba995ddd27d87e" + dependencies: + acorn "^5.1.1" + acorn-jsx "^3.0.0" + esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -1476,7 +1617,20 @@ esprima@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" -estraverse@^4.2.0: +esquery@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" + dependencies: + estraverse "^4.1.0" + object-assign "^4.0.1" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" @@ -1536,6 +1690,14 @@ extend@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" +external-editor@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.5.tgz#52c249a3981b9ba187c7cacf5beb50bf1d91a6bc" + dependencies: + iconv-lite "^0.4.17" + jschardet "^1.4.2" + tmp "^0.0.33" + extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" @@ -1546,6 +1708,18 @@ extsprintf@1.3.0, extsprintf@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" +fast-deep-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" + +fast-diff@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" @@ -1562,6 +1736,12 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + file-entry-cache@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" @@ -1696,6 +1876,10 @@ function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + gather-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/gather-stream/-/gather-stream-1.0.0.tgz#b33994af457a8115700d410f317733cbe7a0904b" @@ -1721,7 +1905,7 @@ get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" -get-stdin@^5.0.0: +get-stdin@^5.0.0, get-stdin@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" @@ -1759,7 +1943,7 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^9.18.0: +globals@^9.17.0, globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -1903,6 +2087,10 @@ iconv-lite@0.4.13: version "0.4.13" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2" +iconv-lite@^0.4.17: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + ignore-by-default@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" @@ -1911,6 +2099,10 @@ ignore@^3.2.0: version "3.3.5" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6" +ignore@^3.3.3: + version "3.3.7" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" + import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" @@ -1936,7 +2128,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -1944,6 +2136,25 @@ ini@~1.3.0: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" +inquirer@^3.0.6: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + invariant@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" @@ -2084,6 +2295,10 @@ is-primitive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" @@ -2098,6 +2313,12 @@ is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" +is-resolvable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" + dependencies: + tryit "^1.0.1" + is-retry-allowed@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" @@ -2126,7 +2347,7 @@ isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" -isarray@1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -2274,6 +2495,10 @@ jest-docblock@^20.0.3: version "20.0.3" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-20.0.3.tgz#17bea984342cc33d83c50fbe1545ea0efaa44712" +jest-docblock@^21.0.0: + version "21.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" + jest-environment-jsdom@^20.0.3: version "20.0.3" resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-20.0.3.tgz#048a8ac12ee225f7190417713834bb999787de99" @@ -2433,10 +2658,21 @@ js-yaml@^3.4.3, js-yaml@^3.7.0: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^3.9.1: + version "3.10.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" +jschardet@^1.4.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.6.0.tgz#c7d1a71edcff2839db2f9ec30fc5d5ebd3c1a678" + jsdom@^9.12.0: version "9.12.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4" @@ -2469,6 +2705,10 @@ jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -2562,7 +2802,7 @@ leven@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" -levn@~0.3.0: +levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" dependencies: @@ -2652,7 +2892,7 @@ lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" -lodash@^4.0.0, lodash@^4.1.0, lodash@^4.14.0, lodash@^4.17.4: +lodash@^4.0.0, lodash@^4.1.0, lodash@^4.14.0, lodash@^4.17.4, lodash@^4.3.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -2767,6 +3007,10 @@ mime-types@^2.1.12, mime-types@~2.1.7: dependencies: mime-db "~1.30.0" +mimic-fn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -2804,6 +3048,10 @@ multimatch@^2.0.0: arrify "^1.0.0" minimatch "^3.0.0" +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + nan@^2.3.0: version "2.7.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" @@ -2951,6 +3199,12 @@ onecolor@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/onecolor/-/onecolor-3.0.4.tgz#75a46f80da6c7aaa5b4daae17a47198bd9652494" +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" + optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -2958,7 +3212,7 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optionator@^0.8.1: +optionator@^0.8.1, optionator@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" dependencies: @@ -2979,7 +3233,7 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -3058,7 +3312,7 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" -path-is-inside@^1.0.1: +path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" @@ -3115,6 +3369,10 @@ plur@^2.0.0, plur@^2.1.2: dependencies: irregular-plurals "^1.0.0" +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + postcss-functions@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-functions/-/postcss-functions-3.0.0.tgz#0e94d01444700a481de20de4d55fb2640564250e" @@ -3224,6 +3482,10 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" +prettier@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.7.4.tgz#5e8624ae9363c80f95ec644584ecdf55d74f93fa" + pretty-format@^20.0.3: version "20.0.3" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-20.0.3.tgz#020e350a560a1fe1a98dc3beb6ccffb386de8b14" @@ -3239,6 +3501,10 @@ process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + prr@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" @@ -3316,7 +3582,7 @@ readable-stream@^1.0.33, readable-stream@~1.1.9: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4: +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: @@ -3458,6 +3724,17 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -3472,6 +3749,13 @@ resolve@^1.3.2, resolve@~1.4.0: dependencies: path-parse "^1.0.5" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + resumer@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" @@ -3490,6 +3774,22 @@ rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1: dependencies: glob "^7.0.5" +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + dependencies: + is-promise "^2.1.0" + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -3663,7 +3963,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0: +string-width@^2.0.0, string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" dependencies: @@ -3920,7 +4220,7 @@ test-exclude@^4.1.1: read-pkg-up "^1.0.1" require-main-filename "^1.0.1" -text-table@^0.2.0: +text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -3935,7 +4235,7 @@ through2@^0.6.1, through2@^0.6.3, through2@~0.6.1: readable-stream ">=1.0.33-1 <1.1.0-0" xtend ">=4.0.0 <4.1.0-0" -through@2, "through@>=2.2.7 <3", through@~2.3, through@~2.3.1, through@~2.3.4, through@~2.3.8: +through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3, through@~2.3.1, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -3943,6 +4243,12 @@ timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" @@ -3975,6 +4281,10 @@ trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" +tryit@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -3991,6 +4301,10 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + uglify-js@^2.6: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"