diff --git a/babel.config.js b/babel.config.js index d35cc679..1a52f429 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,4 +1,4 @@ -module.exports = (api) => { +module.exports = api => { // api.cache.forever(); const presets = [ @@ -27,13 +27,9 @@ module.exports = (api) => { [ 'module-resolver', { - root: [ - './src', - ], + root: ['./src'], alias: { - public: [ - './public', - ], + public: ['./public'], }, }, ], @@ -45,19 +41,17 @@ module.exports = (api) => { } if (api.env('translations')) { - plugins.push( - [ - 'react-intl', - { - messagesDir: './translations/extractedMessages/', - extractSourceLocation: true, - }, - ], - ); + plugins.push([ + 'react-intl', + { + messagesDir: './translations/extractedMessages/', + extractSourceLocation: true, + }, + ]); } return { presets, plugins, }; -}; \ No newline at end of file +}; diff --git a/jest.config.js b/jest.config.js index d0ee5668..eae435d7 100644 --- a/jest.config.js +++ b/jest.config.js @@ -11,10 +11,7 @@ module.exports = { 'utils/promiseUtils.js', 'utils/networkUtils.js', ], - collectCoverageFrom: [ - 'utils/**.js', - 'reducers/utils/**.js', - ], + collectCoverageFrom: ['utils/**.js', 'reducers/utils/**.js'], coverageThreshold: { global: { branches: 100, @@ -23,9 +20,7 @@ module.exports = { statements: 100, }, }, - setupFiles: [ - './support/setupJest.js', - ], + setupFiles: ['./support/setupJest.js'], transform: { '^.+\\.jsx?$': 'babel-jest', }, diff --git a/package.json b/package.json index 0d06e763..5f00fddc 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "lint": "run-s lint:*", "lint:js": "npx eslint ./src ./webpack", "lint:css": "npx stylelint './src/**/*.js'", - "lint:prettier": "prettier --write ./src/**/*.js", + "lint:prettier": "pretty-quick", "prettier:check": "eslint --print-config ./src | eslint-config-prettier-check", "test": "run-s test:*", "test:unit": "npx jest", @@ -126,6 +126,7 @@ "jest": "^24.1.0", "prettier": "^1.16.4", "prettier-eslint": "^8.8.2", + "pretty-quick": "^1.10.0", "prettylint": "^1.0.0", "stylelint": "^9.10.1", "stylelint-config-standard": "^18.2.0", diff --git a/src/actions/DiscoveryActions.js b/src/actions/DiscoveryActions.js index 9418bd86..22ca82a0 100644 --- a/src/actions/DiscoveryActions.js +++ b/src/actions/DiscoveryActions.js @@ -25,7 +25,8 @@ export type DiscoveryStartAction = | RippleDiscoveryActions.DiscoveryStartAction; export type DiscoveryWaitingAction = { - type: | typeof DISCOVERY.WAITING_FOR_DEVICE + type: + | typeof DISCOVERY.WAITING_FOR_DEVICE | typeof DISCOVERY.WAITING_FOR_BLOCKCHAIN | typeof DISCOVERY.FIRMWARE_NOT_SUPPORTED | typeof DISCOVERY.FIRMWARE_OUTDATED, diff --git a/src/reducers/utils/__mocks__/pendingTxs.js b/src/reducers/utils/__mocks__/pendingTxs.js index 715e7826..320e0c5e 100644 --- a/src/reducers/utils/__mocks__/pendingTxs.js +++ b/src/reducers/utils/__mocks__/pendingTxs.js @@ -78,4 +78,4 @@ export default [ blockHeight: 0, blockHash: undefined, }, -]; \ No newline at end of file +]; diff --git a/src/reducers/utils/__tests__/index.test.js b/src/reducers/utils/__tests__/index.test.js index d1b06099..a94cdf00 100644 --- a/src/reducers/utils/__tests__/index.test.js +++ b/src/reducers/utils/__tests__/index.test.js @@ -2,134 +2,99 @@ import * as utils from '../index'; describe('reducers utils', () => { it('observer changes should BE THE SAME - return false', () => { - expect(utils.observeChanges( - {}, - {}, - )).toBe(false); - - expect(utils.observeChanges( - [], - [], - )).toBe(false); - - expect(utils.observeChanges( - [1, 1, 1], - [1, 1, 1], - )).toBe(false); - - expect(utils.observeChanges( - 'a', - 'a', - )).toBe(false); - - expect(utils.observeChanges( - { one: 1 }, - { one: 1 }, - )).toBe(false); - - expect(utils.observeChanges( - { one: { two: 1 } }, - { one: { two: 1 } }, - )).toBe(false); - - expect(utils.observeChanges( - { one: { two: [1, 2, 3] } }, - { one: { two: [1, 2, 3] } }, - )).toBe(false); - - expect(utils.observeChanges( - { one: { two: [1, { three: 1 }, 3] } }, - { one: { two: [1, { three: 1 }, 3] } }, - )).toBe(false); - - expect(utils.observeChanges( - { one: { two: [1, { three: 1 }, { four: 3, five: { six: 3 } }] } }, - { one: { two: [1, { three: 1 }, { four: 3, five: { six: 3 } }] } }, - )).toBe(false); + expect(utils.observeChanges({}, {})).toBe(false); + + expect(utils.observeChanges([], [])).toBe(false); + + expect(utils.observeChanges([1, 1, 1], [1, 1, 1])).toBe(false); + + expect(utils.observeChanges('a', 'a')).toBe(false); + + expect(utils.observeChanges({ one: 1 }, { one: 1 })).toBe(false); + + expect(utils.observeChanges({ one: { two: 1 } }, { one: { two: 1 } })).toBe(false); + + expect(utils.observeChanges({ one: { two: [1, 2, 3] } }, { one: { two: [1, 2, 3] } })).toBe( + false + ); + + expect( + utils.observeChanges( + { one: { two: [1, { three: 1 }, 3] } }, + { one: { two: [1, { three: 1 }, 3] } } + ) + ).toBe(false); + + expect( + utils.observeChanges( + { one: { two: [1, { three: 1 }, { four: 3, five: { six: 3 } }] } }, + { one: { two: [1, { three: 1 }, { four: 3, five: { six: 3 } }] } } + ) + ).toBe(false); }); it('observer should NOT be the same - return true', () => { - expect(utils.observeChanges( - null, - {}, - )).toBe(true); - - expect(utils.observeChanges( - { one: 1 }, - {}, - )).toBe(true); - - expect(utils.observeChanges( - { one: 1, three: 3 }, { one: 1, two: 2 }, - )).toBe(true); - - expect(utils.observeChanges( - [{}, {}], - [], - )).toBe(true); - - expect(utils.observeChanges( - [1, 1, 1], - [1, 1], - )).toBe(true); - - expect(utils.observeChanges( - 'a', - 'b', - )).toBe(true); - - expect(utils.observeChanges( - ['a'], - ['b'], - )).toBe(true); - - expect(utils.observeChanges( - 1, - '1', - )).toBe(true); - - expect(utils.observeChanges( - { one: 1 }, - { one: 2 }, - )).toBe(true); - - expect(utils.observeChanges( - { one: { two: 1 } }, - { one: { two: 2 } }, - )).toBe(true); - - expect(utils.observeChanges( - { one: { two: [1, 2, 3] } }, - { one: { two: [1, 1, 3] } }, - )).toBe(true); - - expect(utils.observeChanges( - { one: { two: [1, { three: 1 }, 3] } }, - { one: { two: [1, { three: 2 }, 3] } }, - )).toBe(true); - - expect(utils.observeChanges( - { one: { two: [1, { three: 1 }, { four: 3, five: { six: 3 } }] } }, - { one: { two: [1, { three: 1 }, { four: 3, five: { six: 1 } }] } }, - )).toBe(true); - - expect(utils.observeChanges( - { one: { two: [1, { three: 1 }, { four: 3, five: { sixxx: 3 } }] } }, - { one: { two: [1, { three: 1 }, { four: 3, five: { six: 1 } }] } }, - )).toBe(true); + expect(utils.observeChanges(null, {})).toBe(true); + + expect(utils.observeChanges({ one: 1 }, {})).toBe(true); + + expect(utils.observeChanges({ one: 1, three: 3 }, { one: 1, two: 2 })).toBe(true); + + expect(utils.observeChanges([{}, {}], [])).toBe(true); + + expect(utils.observeChanges([1, 1, 1], [1, 1])).toBe(true); + + expect(utils.observeChanges('a', 'b')).toBe(true); + + expect(utils.observeChanges(['a'], ['b'])).toBe(true); + + expect(utils.observeChanges(1, '1')).toBe(true); + + expect(utils.observeChanges({ one: 1 }, { one: 2 })).toBe(true); + + expect(utils.observeChanges({ one: { two: 1 } }, { one: { two: 2 } })).toBe(true); + + expect(utils.observeChanges({ one: { two: [1, 2, 3] } }, { one: { two: [1, 1, 3] } })).toBe( + true + ); + + expect( + utils.observeChanges( + { one: { two: [1, { three: 1 }, 3] } }, + { one: { two: [1, { three: 2 }, 3] } } + ) + ).toBe(true); + + expect( + utils.observeChanges( + { one: { two: [1, { three: 1 }, { four: 3, five: { six: 3 } }] } }, + { one: { two: [1, { three: 1 }, { four: 3, five: { six: 1 } }] } } + ) + ).toBe(true); + + expect( + utils.observeChanges( + { one: { two: [1, { three: 1 }, { four: 3, five: { sixxx: 3 } }] } }, + { one: { two: [1, { three: 1 }, { four: 3, five: { six: 1 } }] } } + ) + ).toBe(true); }); it('observeChanges test filter', () => { - expect(utils.observeChanges( - { one: { two: 2, three: 3 } }, - { one: { two: 2, three: 4 } }, - { one: ['two'] }, - )).toBe(false); - - expect(utils.observeChanges( - { one: { two: 2, three: 3 } }, - { one: { two: 1, three: 3 } }, - { one: ['two'] }, - )).toBe(true); + expect( + utils.observeChanges( + { one: { two: 2, three: 3 } }, + { one: { two: 2, three: 4 } }, + { one: ['two'] } + ) + ).toBe(false); + + expect( + utils.observeChanges( + { one: { two: 2, three: 3 } }, + { one: { two: 1, three: 3 } }, + { one: ['two'] } + ) + ).toBe(true); }); }); diff --git a/src/utils/__tests__/cryptoUriParser.js b/src/utils/__tests__/cryptoUriParser.js index 4ba4aa80..1dde9ad6 100644 --- a/src/utils/__tests__/cryptoUriParser.js +++ b/src/utils/__tests__/cryptoUriParser.js @@ -5,7 +5,14 @@ describe('crypto uri parser', () => { expect(utils.parseUri('http://www.trezor.io')).toEqual({ address: '//www.trezor.io' }); // TODO: Error in function expect(utils.parseUri('www.trezor.io')).toEqual({ address: 'www.trezor.io' }); expect(utils.parseUri('www.trezor.io/TT')).toEqual({ address: 'www.trezor.io/TT' }); - expect(utils.parseUri('www.trezor.io/TT?param1=aha')).toEqual({ address: 'www.trezor.io/TT', param1: 'aha' }); - expect(utils.parseUri('www.trezor.io/TT?param1=aha¶m2=hah')).toEqual({ address: 'www.trezor.io/TT', param1: 'aha', param2: 'hah' }); + expect(utils.parseUri('www.trezor.io/TT?param1=aha')).toEqual({ + address: 'www.trezor.io/TT', + param1: 'aha', + }); + expect(utils.parseUri('www.trezor.io/TT?param1=aha¶m2=hah')).toEqual({ + address: 'www.trezor.io/TT', + param1: 'aha', + param2: 'hah', + }); }); }); diff --git a/src/utils/__tests__/device.test.js b/src/utils/__tests__/device.test.js index be96bea5..7818fd97 100644 --- a/src/utils/__tests__/device.test.js +++ b/src/utils/__tests__/device.test.js @@ -3,36 +3,42 @@ import colors from 'config/colors'; describe('device utils', () => { it('get status', () => { - expect(utils.getStatus({ connected: false })) - .toBe('disconnected'); + expect(utils.getStatus({ connected: false })).toBe('disconnected'); - expect(utils.getStatus({ connected: true, available: false })) - .toBe('unavailable'); + expect(utils.getStatus({ connected: true, available: false })).toBe('unavailable'); - expect(utils.getStatus({ - connected: true, - available: false, - type: null, - })).toBe('unavailable'); + expect( + utils.getStatus({ + connected: true, + available: false, + type: null, + }) + ).toBe('unavailable'); - expect(utils.getStatus({ - connected: true, - available: true, - type: 'acquired', - })).toBe('connected'); + expect( + utils.getStatus({ + connected: true, + available: true, + type: 'acquired', + }) + ).toBe('connected'); - expect(utils.getStatus({ - connected: true, - available: true, - type: 'unacquired', - })).toBe('unacquired'); + expect( + utils.getStatus({ + connected: true, + available: true, + type: 'unacquired', + }) + ).toBe('unacquired'); - expect(utils.getStatus({ - connected: true, - available: true, - type: 'acquired', - status: 'occupied', - })).toBe('used-in-other-window'); + expect( + utils.getStatus({ + connected: true, + available: true, + type: 'acquired', + status: 'occupied', + }) + ).toBe('used-in-other-window'); }); it('isWebUSB', () => { @@ -42,17 +48,13 @@ describe('device utils', () => { }); it('isDisabled', () => { - expect(utils.isDisabled( - { selectedDevice: { features: null } }, - [1, 2, 3], - { + expect( + utils.isDisabled({ selectedDevice: { features: null } }, [1, 2, 3], { version: 'webusb', - }, - )).toBe(false); + }) + ).toBe(false); - expect(utils.isDisabled( - { features: null }, [], { version: 'test' }, - )).toBe(true); + expect(utils.isDisabled({ features: null }, [], { version: 'test' })).toBe(true); }); it('get version', () => { @@ -85,4 +87,4 @@ describe('device utils', () => { expect(utils.getStatusName('disconnected')).toBe('Disconnected'); expect(utils.getStatusName('unavailable')).toBe('Unavailable'); }); -}); \ No newline at end of file +}); diff --git a/src/utils/__tests__/ethUtils.test.js b/src/utils/__tests__/ethUtils.test.js index efa8871d..44d0e08e 100644 --- a/src/utils/__tests__/ethUtils.test.js +++ b/src/utils/__tests__/ethUtils.test.js @@ -48,6 +48,8 @@ describe('eth utils', () => { // TODO: add more tests expect(utils.validateAddress('')).toBe('Address is not set'); expect(utils.validateAddress('aaa')).toBe('Address is not valid'); - expect(utils.validateAddress('BB9bc244D798123fDe783fCc1C72d3Bb8C189413')).toBe('Address is not valid'); + expect(utils.validateAddress('BB9bc244D798123fDe783fCc1C72d3Bb8C189413')).toBe( + 'Address is not valid' + ); }); }); diff --git a/test/integration/dashboard.spec.js b/test/integration/dashboard.spec.js index a256497b..dd2c2213 100644 --- a/test/integration/dashboard.spec.js +++ b/test/integration/dashboard.spec.js @@ -23,4 +23,4 @@ describe('Dashboard page', () => { .should('be.visible') .matchImageSnapshot(); }); -}); \ No newline at end of file +}); diff --git a/test/plugins/index.js b/test/plugins/index.js index 192877d9..031b6ac2 100644 --- a/test/plugins/index.js +++ b/test/plugins/index.js @@ -1,7 +1,5 @@ -const { - addMatchImageSnapshotPlugin, -} = require('cypress-image-snapshot/plugin'); +const { addMatchImageSnapshotPlugin } = require('cypress-image-snapshot/plugin'); -module.exports = (on) => { +module.exports = on => { addMatchImageSnapshotPlugin(on); -}; \ No newline at end of file +}; diff --git a/test/scripts/init-device.js b/test/scripts/init-device.js index acf1ce26..d23c8444 100644 --- a/test/scripts/init-device.js +++ b/test/scripts/init-device.js @@ -3,4 +3,4 @@ import { initSeedAllDevice } from 'trezor-bridge-communicator'; (async () => { await initSeedAllDevice(); -})(); \ No newline at end of file +})(); diff --git a/test/support/index.js b/test/support/index.js index 46466718..2016693b 100644 --- a/test/support/index.js +++ b/test/support/index.js @@ -3,4 +3,4 @@ import './commands'; beforeEach(() => { window.localStorage.setItem('/betaModalPrivacy', true); -}); \ No newline at end of file +}); diff --git a/webpack/constants.js b/webpack/constants.js index 87e19e0d..6380c63e 100644 --- a/webpack/constants.js +++ b/webpack/constants.js @@ -16,9 +16,18 @@ const constants: Object = Object.freeze({ export const { TREZOR_CONNECT_ROOT }: { TREZOR_CONNECT_ROOT: string } = constants; export const TREZOR_CONNECT: string = path.join(constants.TREZOR_CONNECT_ROOT, 'src/js/index'); -export const TREZOR_IFRAME: string = path.join(constants.TREZOR_CONNECT_ROOT, 'src/js/iframe/iframe.js'); -export const TREZOR_POPUP: string = path.join(constants.TREZOR_CONNECT_ROOT, 'src/js/popup/popup.js'); -export const TREZOR_WEBUSB: string = path.join(constants.TREZOR_CONNECT_ROOT, 'src/js/webusb/index.js'); +export const TREZOR_IFRAME: string = path.join( + constants.TREZOR_CONNECT_ROOT, + 'src/js/iframe/iframe.js' +); +export const TREZOR_POPUP: string = path.join( + constants.TREZOR_CONNECT_ROOT, + 'src/js/popup/popup.js' +); +export const TREZOR_WEBUSB: string = path.join( + constants.TREZOR_CONNECT_ROOT, + 'src/js/webusb/index.js' +); export const TREZOR_CONNECT_HTML: string = path.join(constants.TREZOR_CONNECT_ROOT, 'src/html/'); export const TREZOR_CONNECT_FILES: string = path.join(constants.TREZOR_CONNECT_ROOT, 'src/data/'); @@ -29,10 +38,17 @@ export const { PORT, INDEX, PUBLIC, -}: { BUILD: string, SRC: string, TRANSLATIONS: string, PORT: string, INDEX: string, PUBLIC: string } = constants; +}: { + BUILD: string, + SRC: string, + TRANSLATIONS: string, + PORT: string, + INDEX: string, + PUBLIC: string, +} = constants; // export const SRC: string = constants.SRC; // export const PORT: string = constants.PORT; // export const INDEX: string = constants.INDEX; // export const PUBLIC: string = constants.PUBLIC; -export default constants; \ No newline at end of file +export default constants; diff --git a/webpack/dev.babel.js b/webpack/dev.babel.js index caae64f3..64851e28 100644 --- a/webpack/dev.babel.js +++ b/webpack/dev.babel.js @@ -4,9 +4,7 @@ import HtmlWebpackPlugin from 'html-webpack-plugin'; import WebpackBuildNotifierPlugin from 'webpack-build-notifier'; import packageJson from '../package.json'; -import { - SRC, BUILD, PORT, PUBLIC, TRANSLATIONS, -} from './constants'; +import { SRC, BUILD, PORT, PUBLIC, TRANSLATIONS } from './constants'; // turn on for bundle analyzing // import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; @@ -26,10 +24,7 @@ module.exports = { }, devServer: { // host: '0.0.0.0', - contentBase: [ - SRC, - PUBLIC, - ], + contentBase: [SRC, PUBLIC], stats: 'minimal', hot: true, https: false, diff --git a/webpack/local.babel.js b/webpack/local.babel.js index 5f5d7951..fd8a4ecf 100644 --- a/webpack/local.babel.js +++ b/webpack/local.babel.js @@ -9,7 +9,10 @@ import { TREZOR_CONNECT_ROOT, TREZOR_CONNECT_HTML, TREZOR_CONNECT_FILES, - TREZOR_CONNECT, TREZOR_IFRAME, TREZOR_POPUP, TREZOR_WEBUSB, + TREZOR_CONNECT, + TREZOR_IFRAME, + TREZOR_POPUP, + TREZOR_WEBUSB, SRC, BUILD, PUBLIC, @@ -37,10 +40,7 @@ module.exports = { globalObject: 'this', // fix for HMR inside WebWorker from 'hd-wallet' }, devServer: { - contentBase: [ - SRC, - PUBLIC, - ], + contentBase: [SRC, PUBLIC], hot: true, https: false, port: PORT, @@ -102,10 +102,7 @@ module.exports = { ], }, resolve: { - modules: [ - SRC, - 'node_modules', - `${TREZOR_CONNECT_ROOT}/node_modules`], + modules: [SRC, 'node_modules', `${TREZOR_CONNECT_ROOT}/node_modules`], alias: { public: PUBLIC, 'trezor-connect': `${TREZOR_CONNECT}`, @@ -152,9 +149,7 @@ module.exports = { // inject: true // }), - new CopyWebpackPlugin([ - { from: TREZOR_CONNECT_FILES, to: 'data' }, - ]), + new CopyWebpackPlugin([{ from: TREZOR_CONNECT_FILES, to: 'data' }]), new BundleAnalyzerPlugin({ openAnalyzer: false, analyzerMode: false, // turn on to generate bundle pass 'static' @@ -178,4 +173,4 @@ module.exports = { fs: 'empty', path: 'empty', }, -}; \ No newline at end of file +}; diff --git a/webpack/production.babel.js b/webpack/production.babel.js index c58aecdb..6e8d190a 100644 --- a/webpack/production.babel.js +++ b/webpack/production.babel.js @@ -3,9 +3,7 @@ import GitRevisionPlugin from 'git-revision-webpack-plugin'; import HtmlWebpackPlugin from 'html-webpack-plugin'; import CopyWebpackPlugin from 'copy-webpack-plugin'; import packageJson from '../package.json'; -import { - SRC, BUILD, PUBLIC, TRANSLATIONS, -} from './constants'; +import { SRC, BUILD, PUBLIC, TRANSLATIONS } from './constants'; const gitRevisionPlugin = new GitRevisionPlugin(); @@ -77,9 +75,7 @@ module.exports = { inject: true, favicon: `${SRC}images/favicon.ico`, }), - new CopyWebpackPlugin([ - { from: `${PUBLIC}`, to: './' }, - ]), + new CopyWebpackPlugin([{ from: `${PUBLIC}`, to: './' }]), new webpack.optimize.OccurrenceOrderPlugin(), new webpack.NoEmitOnErrorsPlugin(), new webpack.NamedModulesPlugin(), diff --git a/yarn.lock b/yarn.lock index c2b51971..ed372266 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1421,6 +1421,11 @@ arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" +array-differ@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-2.0.3.tgz#0195bb00ccccf271106efee4a4786488b7180712" + integrity sha1-AZW7AMzM8nEQbv7kpHhkiLcYBxI= + array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" @@ -2672,7 +2677,7 @@ 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.0, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3230,7 +3235,7 @@ cross-spawn@^4.0.0: lru-cache "^4.0.1" which "^1.2.9" -cross-spawn@^5.1.0: +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" integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= @@ -4486,6 +4491,19 @@ execa@0.10.0, execa@^0.10.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" + integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -5758,7 +5776,7 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^3.3.3: +ignore@^3.3.3, ignore@^3.3.7: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== @@ -7672,6 +7690,11 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" +mri@^1.1.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" + integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -7692,6 +7715,16 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" +multimatch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-3.0.0.tgz#0e2534cc6bc238d9ab67e1b9cd5fcd85a6dbf70b" + integrity sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA== + dependencies: + array-differ "^2.0.3" + array-union "^1.0.2" + arrify "^1.0.1" + minimatch "^3.0.4" + mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -8702,6 +8735,18 @@ pretty-format@^24.0.0: ansi-regex "^4.0.0" ansi-styles "^3.2.0" +pretty-quick@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-1.10.0.tgz#d86cc46fe92ed8cfcfba6a082ec5949c53858198" + integrity sha512-uNvm2N3UWmnZRZrClyQI45hIbV20f5BpSyZY51Spbvn4APp9+XLyX4bCjWRGT3fGyVyQ/2/iw7dbQq1UUaq7SQ== + dependencies: + chalk "^2.3.0" + execa "^0.8.0" + find-up "^2.1.0" + ignore "^3.3.7" + mri "^1.1.0" + multimatch "^3.0.0" + prettylint@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettylint/-/prettylint-1.0.0.tgz#b71720ad9733e098fdd8ebea90c61cda33371aa1"