Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[v0.57.0-rc.3] New project unit testing doesn't work #20876

Closed
3 tasks done
jeremywiebe opened this issue Aug 27, 2018 · 27 comments
Closed
3 tasks done

[v0.57.0-rc.3] New project unit testing doesn't work #20876

jeremywiebe opened this issue Aug 27, 2018 · 27 comments
Labels
Resolution: Locked This issue was locked by the bot. 🔩Test Infrastructure Test infrastructure and continuous integration.

Comments

@jeremywiebe
Copy link

jeremywiebe commented Aug 27, 2018

UPDATE: This might be a duplicate of #19859 but it definitely exists in 0.57-rc.3 still.

Environment

Run react-native info in your terminal and paste its contents here.

React Native Environment Info:
System:
OS: macOS High Sierra 10.13.6
CPU: x64 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
Memory: 270.51 MB / 16.00 GB
Shell: 2.7.1 - /usr/local/bin/fish
Binaries:
Node: 8.11.4 - /usr/local/bin/node
Yarn: 1.9.4 - /usr/local/bin/yarn
npm: 5.6.0 - /usr/local/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
SDKs:
iOS SDK:
Platforms: iOS 11.4, macOS 10.13, tvOS 11.4, watchOS 4.3
IDEs:
Android Studio: 3.1 AI-173.4907809
Xcode: 9.4.1/9F2000 - /usr/bin/xcodebuild
npmPackages:
react: 16.4.1 => 16.4.1
react-native: 0.57.0-rc.3 => 0.57.0-rc.3

Description

Unit tests in new projects generated using the react-native CLI are broken. Here's the steps to reproduce:

$ react-native init rntest
....
$ cd rntest
$ mkdir __tests__
$ cat "class Button {
    _binder 

    constructor() {
        this._binder = this._binder.bind(this);
    }

    _binder() {
        console.log('_binder bound to:', this);
    }
}

describe('Button', () => {
    it('does stuff', () => {
        const x = new Button();
    })
});
" > __tests__/Button.test.js
$ yarn test
yarn run v1.9.4
$ jest
 FAIL  __tests__/Button.test.js
  ● Test suite failed to run

    Couldn't find preset "module:metro-react-native-babel-preset" relative to directory "/Users/jeremy/dev/rntest"

      at node_modules/babel-core/lib/transformation/file/options/option-manager.js:293:19
          at Array.map (<anonymous>)
      at OptionManager.resolvePresets (node_modules/babel-core/lib/transformation/file/options/option-manager.js:275:20)
      at OptionManager.mergePresets (node_modules/babel-core/lib/transformation/file/options/option-manager.js:264:10)
      at OptionManager.mergeOptions (node_modules/babel-core/lib/transformation/file/options/option-manager.js:249:14)
      at OptionManager.init (node_modules/babel-core/lib/transformation/file/options/option-manager.js:368:12)
      at File.initOptions (node_modules/babel-core/lib/transformation/file/index.js:212:65)
      at new File (node_modules/babel-core/lib/transformation/file/index.js:135:24)
      at Pipeline.transform (node_modules/babel-core/lib/transformation/pipeline.js:46:16)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        0.309s
Ran all test suites.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
$ _
`yarn info`
$ yarn list
yarn list v1.9.4
├─ @babel/code-frame@7.0.0-beta.56
│  └─ @babel/highlight@7.0.0-beta.56
├─ @babel/core@7.0.0-beta.56
│  ├─ @babel/code-frame@7.0.0-beta.56
│  ├─ @babel/generator@7.0.0-beta.56
│  ├─ @babel/helpers@7.0.0-beta.56
│  ├─ @babel/parser@7.0.0-beta.56
│  ├─ @babel/template@7.0.0-beta.56
│  ├─ @babel/traverse@7.0.0-beta.56
│  ├─ @babel/types@7.0.0-beta.56
│  ├─ convert-source-map@^1.1.0
│  ├─ debug@^3.1.0
│  ├─ debug@3.1.0
│  │  └─ ms@2.0.0
│  ├─ json5@^0.5.0
│  ├─ lodash@^4.17.10
│  ├─ resolve@^1.3.2
│  ├─ semver@^5.4.1
│  └─ source-map@^0.5.0
├─ @babel/generator@7.0.0-beta.56
│  ├─ @babel/types@7.0.0-beta.56
│  ├─ jsesc@^2.5.1
│  ├─ jsesc@2.5.1
│  ├─ lodash@^4.17.10
│  ├─ source-map@^0.5.0
│  └─ trim-right@^1.0.1
├─ @babel/helper-annotate-as-pure@7.0.0-beta.56
│  └─ @babel/types@7.0.0-beta.56
├─ @babel/helper-builder-binary-assignment-operator-visitor@7.0.0-beta.56
│  ├─ @babel/helper-explode-assignable-expression@7.0.0-beta.56
│  └─ @babel/types@7.0.0-beta.56
├─ @babel/helper-builder-react-jsx@7.0.0-beta.56
│  ├─ @babel/types@7.0.0-beta.56
│  └─ esutils@^2.0.0
├─ @babel/helper-call-delegate@7.0.0-beta.56
│  ├─ @babel/helper-hoist-variables@7.0.0-beta.56
│  ├─ @babel/traverse@7.0.0-beta.56
│  └─ @babel/types@7.0.0-beta.56
├─ @babel/helper-define-map@7.0.0-beta.56
│  ├─ @babel/helper-function-name@7.0.0-beta.56
│  ├─ @babel/types@7.0.0-beta.56
│  └─ lodash@^4.17.10
├─ @babel/helper-explode-assignable-expression@7.0.0-beta.56
│  ├─ @babel/traverse@7.0.0-beta.56
│  └─ @babel/types@7.0.0-beta.56
├─ @babel/helper-function-name@7.0.0-beta.56
│  ├─ @babel/helper-get-function-arity@7.0.0-beta.56
│  ├─ @babel/template@7.0.0-beta.56
│  └─ @babel/types@7.0.0-beta.56
├─ @babel/helper-get-function-arity@7.0.0-beta.56
│  └─ @babel/types@7.0.0-beta.56
├─ @babel/helper-hoist-variables@7.0.0-beta.56
│  └─ @babel/types@7.0.0-beta.56
├─ @babel/helper-member-expression-to-functions@7.0.0-beta.56
│  └─ @babel/types@7.0.0-beta.56
├─ @babel/helper-module-imports@7.0.0-beta.56
│  ├─ @babel/types@7.0.0-beta.56
│  └─ lodash@^4.17.10
├─ @babel/helper-module-transforms@7.0.0-beta.56
│  ├─ @babel/helper-module-imports@7.0.0-beta.56
│  ├─ @babel/helper-simple-access@7.0.0-beta.56
│  ├─ @babel/helper-split-export-declaration@7.0.0-beta.56
│  ├─ @babel/template@7.0.0-beta.56
│  ├─ @babel/types@7.0.0-beta.56
│  └─ lodash@^4.17.10
├─ @babel/helper-optimise-call-expression@7.0.0-beta.56
│  └─ @babel/types@7.0.0-beta.56
├─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/helper-regex@7.0.0-beta.56
│  └─ lodash@^4.17.10
├─ @babel/helper-remap-async-to-generator@7.0.0-beta.56
│  ├─ @babel/helper-annotate-as-pure@7.0.0-beta.56
│  ├─ @babel/helper-wrap-function@7.0.0-beta.56
│  ├─ @babel/template@7.0.0-beta.56
│  ├─ @babel/traverse@7.0.0-beta.56
│  └─ @babel/types@7.0.0-beta.56
├─ @babel/helper-replace-supers@7.0.0-beta.56
│  ├─ @babel/helper-member-expression-to-functions@7.0.0-beta.56
│  ├─ @babel/helper-optimise-call-expression@7.0.0-beta.56
│  ├─ @babel/traverse@7.0.0-beta.56
│  └─ @babel/types@7.0.0-beta.56
├─ @babel/helper-simple-access@7.0.0-beta.56
│  ├─ @babel/template@7.0.0-beta.56
│  ├─ @babel/types@7.0.0-beta.56
│  └─ lodash@^4.17.10
├─ @babel/helper-split-export-declaration@7.0.0-beta.56
│  └─ @babel/types@7.0.0-beta.56
├─ @babel/helper-wrap-function@7.0.0-beta.56
│  ├─ @babel/helper-function-name@7.0.0-beta.56
│  ├─ @babel/template@7.0.0-beta.56
│  ├─ @babel/traverse@7.0.0-beta.56
│  └─ @babel/types@7.0.0-beta.56
├─ @babel/helpers@7.0.0-beta.56
│  ├─ @babel/template@7.0.0-beta.56
│  ├─ @babel/traverse@7.0.0-beta.56
│  └─ @babel/types@7.0.0-beta.56
├─ @babel/highlight@7.0.0-beta.56
│  ├─ chalk@^2.0.0
│  ├─ esutils@^2.0.2
│  └─ js-tokens@^3.0.0
├─ @babel/parser@7.0.0-beta.56
├─ @babel/plugin-external-helpers@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-proposal-class-properties@7.0.0-beta.56
│  ├─ @babel/helper-function-name@7.0.0-beta.56
│  ├─ @babel/helper-member-expression-to-functions@7.0.0-beta.56
│  ├─ @babel/helper-optimise-call-expression@7.0.0-beta.56
│  ├─ @babel/helper-plugin-utils@7.0.0-beta.56
│  ├─ @babel/helper-replace-supers@7.0.0-beta.56
│  └─ @babel/plugin-syntax-class-properties@7.0.0-beta.56
├─ @babel/plugin-proposal-nullish-coalescing-operator@7.0.0-beta.56
│  ├─ @babel/helper-plugin-utils@7.0.0-beta.56
│  └─ @babel/plugin-syntax-nullish-coalescing-operator@7.0.0-beta.56
├─ @babel/plugin-proposal-object-rest-spread@7.0.0-beta.56
│  ├─ @babel/helper-plugin-utils@7.0.0-beta.56
│  └─ @babel/plugin-syntax-object-rest-spread@7.0.0-beta.56
├─ @babel/plugin-proposal-optional-catch-binding@7.0.0-beta.56
│  ├─ @babel/helper-plugin-utils@7.0.0-beta.56
│  └─ @babel/plugin-syntax-optional-catch-binding@7.0.0-beta.56
├─ @babel/plugin-proposal-optional-chaining@7.0.0-beta.56
│  ├─ @babel/helper-plugin-utils@7.0.0-beta.56
│  └─ @babel/plugin-syntax-optional-chaining@7.0.0-beta.56
├─ @babel/plugin-syntax-class-properties@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-syntax-dynamic-import@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-syntax-flow@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-syntax-jsx@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-syntax-nullish-coalescing-operator@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-syntax-object-rest-spread@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-syntax-optional-catch-binding@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-syntax-optional-chaining@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-syntax-typescript@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-transform-arrow-functions@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-transform-async-to-generator@7.0.0-beta.56
│  ├─ @babel/helper-module-imports@7.0.0-beta.56
│  ├─ @babel/helper-plugin-utils@7.0.0-beta.56
│  └─ @babel/helper-remap-async-to-generator@7.0.0-beta.56
├─ @babel/plugin-transform-block-scoping@7.0.0-beta.56
│  ├─ @babel/helper-plugin-utils@7.0.0-beta.56
│  └─ lodash@^4.17.10
├─ @babel/plugin-transform-classes@7.0.0-beta.56
│  ├─ @babel/helper-annotate-as-pure@7.0.0-beta.56
│  ├─ @babel/helper-define-map@7.0.0-beta.56
│  ├─ @babel/helper-function-name@7.0.0-beta.56
│  ├─ @babel/helper-optimise-call-expression@7.0.0-beta.56
│  ├─ @babel/helper-plugin-utils@7.0.0-beta.56
│  ├─ @babel/helper-replace-supers@7.0.0-beta.56
│  ├─ @babel/helper-split-export-declaration@7.0.0-beta.56
│  └─ globals@^11.1.0
├─ @babel/plugin-transform-computed-properties@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-transform-destructuring@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-transform-exponentiation-operator@7.0.0-beta.56
│  ├─ @babel/helper-builder-binary-assignment-operator-visitor@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-transform-flow-strip-types@7.0.0-beta.56
│  ├─ @babel/helper-plugin-utils@7.0.0-beta.56
│  └─ @babel/plugin-syntax-flow@7.0.0-beta.56
├─ @babel/plugin-transform-for-of@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-transform-function-name@7.0.0-beta.56
│  ├─ @babel/helper-function-name@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-transform-literals@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-transform-modules-commonjs@7.0.0-beta.56
│  ├─ @babel/helper-module-transforms@7.0.0-beta.56
│  ├─ @babel/helper-plugin-utils@7.0.0-beta.56
│  └─ @babel/helper-simple-access@7.0.0-beta.56
├─ @babel/plugin-transform-object-assign@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-transform-parameters@7.0.0-beta.56
│  ├─ @babel/helper-call-delegate@7.0.0-beta.56
│  ├─ @babel/helper-get-function-arity@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-transform-react-display-name@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-transform-react-jsx-source@7.0.0-beta.56
│  ├─ @babel/helper-plugin-utils@7.0.0-beta.56
│  └─ @babel/plugin-syntax-jsx@7.0.0-beta.56
├─ @babel/plugin-transform-react-jsx@7.0.0-beta.56
│  ├─ @babel/helper-builder-react-jsx@7.0.0-beta.56
│  ├─ @babel/helper-plugin-utils@7.0.0-beta.56
│  └─ @babel/plugin-syntax-jsx@7.0.0-beta.56
├─ @babel/plugin-transform-regenerator@7.0.0-beta.56
│  └─ regenerator-transform@^0.13.3
├─ @babel/plugin-transform-shorthand-properties@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-transform-spread@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-transform-sticky-regex@7.0.0-beta.56
│  ├─ @babel/helper-plugin-utils@7.0.0-beta.56
│  └─ @babel/helper-regex@7.0.0-beta.56
├─ @babel/plugin-transform-template-literals@7.0.0-beta.56
│  ├─ @babel/helper-annotate-as-pure@7.0.0-beta.56
│  └─ @babel/helper-plugin-utils@7.0.0-beta.56
├─ @babel/plugin-transform-typescript@7.0.0-beta.56
│  ├─ @babel/helper-plugin-utils@7.0.0-beta.56
│  └─ @babel/plugin-syntax-typescript@7.0.0-beta.56
├─ @babel/plugin-transform-unicode-regex@7.0.0-beta.56
│  ├─ @babel/helper-plugin-utils@7.0.0-beta.56
│  ├─ @babel/helper-regex@7.0.0-beta.56
│  └─ regexpu-core@^4.1.3
├─ @babel/register@7.0.0-beta.56
│  ├─ core-js@^2.5.7
│  ├─ find-cache-dir@^1.0.0
│  ├─ home-or-tmp@^3.0.0
│  ├─ home-or-tmp@3.0.0
│  ├─ lodash@^4.17.10
│  ├─ mkdirp@^0.5.1
│  ├─ pirates@^4.0.0
│  └─ source-map-support@^0.4.2
├─ @babel/template@7.0.0-beta.56
│  ├─ @babel/code-frame@7.0.0-beta.56
│  ├─ @babel/parser@7.0.0-beta.56
│  ├─ @babel/types@7.0.0-beta.56
│  └─ lodash@^4.17.10
├─ @babel/traverse@7.0.0-beta.56
│  ├─ @babel/code-frame@7.0.0-beta.56
│  ├─ @babel/generator@7.0.0-beta.56
│  ├─ @babel/helper-function-name@7.0.0-beta.56
│  ├─ @babel/helper-split-export-declaration@7.0.0-beta.56
│  ├─ @babel/parser@7.0.0-beta.56
│  ├─ @babel/types@7.0.0-beta.56
│  ├─ debug@^3.1.0
│  ├─ debug@3.1.0
│  │  └─ ms@2.0.0
│  ├─ globals@^11.1.0
│  └─ lodash@^4.17.10
├─ @babel/types@7.0.0-beta.56
│  ├─ esutils@^2.0.2
│  ├─ lodash@^4.17.10
│  └─ to-fast-properties@^2.0.0
├─ abab@2.0.0
├─ abbrev@1.1.1
├─ absolute-path@0.0.0
├─ accepts@1.3.5
│  ├─ mime-types@~2.1.18
│  └─ negotiator@0.6.1
├─ acorn-globals@4.1.0
│  └─ acorn@^5.0.0
├─ acorn@5.7.2
├─ ajv@5.5.2
│  ├─ 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.4
│  ├─ kind-of@^3.0.2
│  ├─ longest@^1.0.1
│  └─ repeat-string@^1.5.2
├─ amdefine@1.0.1
├─ ansi-colors@1.1.0
│  └─ ansi-wrap@^0.1.0
├─ ansi-cyan@0.1.1
│  └─ ansi-wrap@0.1.0
├─ ansi-escapes@3.1.0
├─ ansi-gray@0.1.1
│  └─ ansi-wrap@0.1.0
├─ ansi-red@0.1.1
│  └─ ansi-wrap@0.1.0
├─ ansi-regex@2.1.1
├─ ansi-styles@3.2.1
│  └─ color-convert@^1.9.0
├─ ansi-wrap@0.1.0
├─ ansi@0.3.1
├─ anymatch@2.0.0
│  ├─ braces@2.3.2
│  │  ├─ arr-flatten@^1.1.0
│  │  ├─ array-unique@^0.3.2
│  │  ├─ extend-shallow@^2.0.1
│  │  ├─ extend-shallow@2.0.1
│  │  │  └─ is-extendable@^0.1.0
│  │  ├─ fill-range@^4.0.0
│  │  ├─ is-extendable@0.1.1
│  │  ├─ isobject@^3.0.1
│  │  ├─ repeat-element@^1.1.2
│  │  ├─ snapdragon-node@^2.0.1
│  │  ├─ snapdragon@^0.8.1
│  │  ├─ split-string@^3.0.2
│  │  └─ to-regex@^3.0.1
│  ├─ define-property@2.0.2
│  │  ├─ is-descriptor@^1.0.2
│  │  └─ isobject@^3.0.1
│  ├─ expand-brackets@2.1.4
│  │  ├─ debug@^2.3.3
│  │  ├─ define-property@^0.2.5
│  │  ├─ define-property@0.2.5
│  │  │  └─ is-descriptor@^0.1.0
│  │  ├─ extend-shallow@^2.0.1
│  │  ├─ extend-shallow@2.0.1
│  │  │  └─ is-extendable@^0.1.0
│  │  ├─ is-descriptor@0.1.6
│  │  │  ├─ is-accessor-descriptor@^0.1.6
│  │  │  ├─ is-data-descriptor@^0.1.4
│  │  │  └─ kind-of@^5.0.0
│  │  ├─ is-extendable@0.1.1
│  │  ├─ kind-of@5.1.0
│  │  ├─ posix-character-classes@^0.1.0
│  │  ├─ regex-not@^1.0.0
│  │  ├─ snapdragon@^0.8.1
│  │  └─ to-regex@^3.0.1
│  ├─ extend-shallow@3.0.2
│  │  ├─ assign-symbols@^1.0.0
│  │  └─ is-extendable@^1.0.1
│  ├─ extglob@2.0.4
│  │  ├─ array-unique@^0.3.2
│  │  ├─ define-property@^1.0.0
│  │  ├─ define-property@1.0.0
│  │  │  └─ is-descriptor@^1.0.0
│  │  ├─ expand-brackets@^2.1.4
│  │  ├─ extend-shallow@^2.0.1
│  │  ├─ extend-shallow@2.0.1
│  │  │  └─ is-extendable@^0.1.0
│  │  ├─ fragment-cache@^0.2.1
│  │  ├─ is-extendable@0.1.1
│  │  ├─ regex-not@^1.0.0
│  │  ├─ snapdragon@^0.8.1
│  │  └─ to-regex@^3.0.1
│  ├─ fill-range@4.0.0
│  │  ├─ extend-shallow@^2.0.1
│  │  ├─ extend-shallow@2.0.1
│  │  │  └─ is-extendable@^0.1.0
│  │  ├─ is-extendable@0.1.1
│  │  ├─ is-number@^3.0.0
│  │  ├─ repeat-string@^1.6.1
│  │  └─ to-regex-range@^2.1.0
│  ├─ is-accessor-descriptor@0.1.6
│  │  ├─ kind-of@^3.0.2
│  │  └─ kind-of@3.2.2
│  │     └─ is-buffer@^1.1.5
│  ├─ is-data-descriptor@0.1.4
│  │  ├─ kind-of@^3.0.2
│  │  └─ kind-of@3.2.2
│  │     └─ is-buffer@^1.1.5
│  ├─ is-extendable@1.0.1
│  │  └─ is-plain-object@^2.0.4
│  ├─ kind-of@6.0.2
│  ├─ micromatch@^3.1.4
│  ├─ micromatch@3.1.10
│  │  ├─ arr-diff@^4.0.0
│  │  ├─ array-unique@^0.3.2
│  │  ├─ braces@^2.3.1
│  │  ├─ define-property@^2.0.2
│  │  ├─ extend-shallow@^3.0.2
│  │  ├─ extglob@^2.0.4
│  │  ├─ fragment-cache@^0.2.1
│  │  ├─ kind-of@^6.0.2
│  │  ├─ nanomatch@^1.2.9
│  │  ├─ object.pick@^1.3.0
│  │  ├─ regex-not@^1.0.0
│  │  ├─ snapdragon@^0.8.1
│  │  └─ to-regex@^3.0.2
│  └─ normalize-path@^2.1.1
├─ append-transform@1.0.0
│  └─ default-require-extensions@^2.0.0
├─ aproba@1.2.0
├─ are-we-there-yet@1.1.5
│  ├─ delegates@^1.0.0
│  └─ readable-stream@^2.0.6
├─ argparse@1.0.10
│  └─ sprintf-js@~1.0.2
├─ arr-diff@4.0.0
├─ arr-flatten@1.1.0
├─ arr-union@3.1.0
├─ array-equal@1.0.0
├─ array-filter@0.0.1
├─ array-map@0.0.0
├─ array-reduce@0.0.0
├─ array-slice@0.2.3
├─ array-unique@0.3.2
├─ arrify@1.0.1
├─ art@0.10.3
├─ asap@2.0.6
├─ asn1@0.2.4
│  └─ safer-buffer@~2.1.0
├─ assert-plus@1.0.0
├─ assign-symbols@1.0.0
├─ astral-regex@1.0.0
├─ async-limiter@1.0.0
├─ async@2.6.1
│  └─ lodash@^4.17.10
├─ asynckit@0.4.0
├─ atob@2.1.2
├─ aws-sign2@0.7.0
├─ aws4@1.8.0
├─ babel-code-frame@6.26.0
│  ├─ ansi-styles@2.2.1
│  ├─ chalk@^1.1.3
│  ├─ chalk@1.1.3
│  │  ├─ ansi-styles@^2.2.1
│  │  ├─ escape-string-regexp@^1.0.2
│  │  ├─ has-ansi@^2.0.0
│  │  ├─ strip-ansi@^3.0.0
│  │  └─ supports-color@^2.0.0
│  ├─ esutils@^2.0.2
│  ├─ js-tokens@^3.0.2
│  └─ supports-color@2.0.0
├─ babel-core@6.26.3
│  ├─ babel-code-frame@^6.26.0
│  ├─ babel-generator@^6.26.0
│  ├─ babel-helpers@^6.24.1
│  ├─ babel-messages@^6.23.0
│  ├─ babel-register@^6.26.0
│  ├─ babel-runtime@^6.26.0
│  ├─ babel-template@^6.26.0
│  ├─ babel-traverse@^6.26.0
│  ├─ babel-types@^6.26.0
│  ├─ babylon@^6.18.0
│  ├─ convert-source-map@^1.5.1
│  ├─ debug@^2.6.9
│  ├─ json5@^0.5.1
│  ├─ lodash@^4.17.4
│  ├─ minimatch@^3.0.4
│  ├─ path-is-absolute@^1.0.1
│  ├─ private@^0.1.8
│  ├─ slash@^1.0.0
│  └─ source-map@^0.5.7
├─ babel-generator@6.26.1
│  ├─ babel-messages@^6.23.0
│  ├─ babel-runtime@^6.26.0
│  ├─ babel-types@^6.26.0
│  ├─ detect-indent@^4.0.0
│  ├─ jsesc@^1.3.0
│  ├─ jsesc@1.3.0
│  ├─ lodash@^4.17.4
│  ├─ source-map@^0.5.7
│  └─ trim-right@^1.0.1
├─ babel-helper-builder-react-jsx@6.26.0
│  ├─ babel-runtime@^6.26.0
│  ├─ babel-types@^6.26.0
│  └─ esutils@^2.0.2
├─ babel-helper-call-delegate@6.24.1
│  ├─ babel-helper-hoist-variables@^6.24.1
│  ├─ babel-runtime@^6.22.0
│  ├─ babel-traverse@^6.24.1
│  └─ babel-types@^6.24.1
├─ babel-helper-define-map@6.26.0
│  ├─ babel-helper-function-name@^6.24.1
│  ├─ babel-runtime@^6.26.0
│  ├─ babel-types@^6.26.0
│  └─ lodash@^4.17.4
├─ babel-helper-function-name@6.24.1
│  ├─ babel-helper-get-function-arity@^6.24.1
│  ├─ babel-runtime@^6.22.0
│  ├─ babel-template@^6.24.1
│  ├─ babel-traverse@^6.24.1
│  └─ babel-types@^6.24.1
├─ babel-helper-get-function-arity@6.24.1
│  ├─ babel-runtime@^6.22.0
│  └─ babel-types@^6.24.1
├─ babel-helper-hoist-variables@6.24.1
│  ├─ babel-runtime@^6.22.0
│  └─ babel-types@^6.24.1
├─ babel-helper-optimise-call-expression@6.24.1
│  ├─ babel-runtime@^6.22.0
│  └─ babel-types@^6.24.1
├─ babel-helper-regex@6.26.0
│  ├─ babel-runtime@^6.26.0
│  ├─ babel-types@^6.26.0
│  └─ lodash@^4.17.4
├─ babel-helper-replace-supers@6.24.1
│  ├─ babel-helper-optimise-call-expression@^6.24.1
│  ├─ babel-messages@^6.23.0
│  ├─ babel-runtime@^6.22.0
│  ├─ babel-template@^6.24.1
│  ├─ babel-traverse@^6.24.1
│  └─ babel-types@^6.24.1
├─ babel-helpers@6.24.1
│  ├─ babel-runtime@^6.22.0
│  └─ babel-template@^6.24.1
├─ babel-jest@23.4.2
│  ├─ babel-plugin-istanbul@^4.1.6
│  └─ babel-preset-jest@^23.2.0
├─ babel-messages@6.23.0
│  └─ babel-runtime@^6.22.0
├─ babel-plugin-check-es2015-constants@6.22.0
│  └─ babel-runtime@^6.22.0
├─ babel-plugin-istanbul@4.1.6
│  ├─ babel-plugin-syntax-object-rest-spread@^6.13.0
│  ├─ find-up@^2.1.0
│  ├─ istanbul-lib-instrument@^1.10.1
│  └─ test-exclude@^4.2.1
├─ babel-plugin-jest-hoist@23.2.0
├─ babel-plugin-syntax-class-properties@6.13.0
├─ babel-plugin-syntax-flow@6.18.0
├─ babel-plugin-syntax-jsx@6.18.0
├─ babel-plugin-syntax-object-rest-spread@6.13.0
├─ babel-plugin-syntax-trailing-function-commas@6.22.0
├─ babel-plugin-transform-class-properties@6.24.1
│  ├─ babel-helper-function-name@^6.24.1
│  ├─ babel-plugin-syntax-class-properties@^6.8.0
│  ├─ babel-runtime@^6.22.0
│  └─ babel-template@^6.24.1
├─ babel-plugin-transform-es2015-arrow-functions@6.22.0
│  └─ babel-runtime@^6.22.0
├─ babel-plugin-transform-es2015-block-scoped-functions@6.22.0
│  └─ babel-runtime@^6.22.0
├─ babel-plugin-transform-es2015-block-scoping@6.26.0
│  ├─ babel-runtime@^6.26.0
│  ├─ babel-template@^6.26.0
│  ├─ babel-traverse@^6.26.0
│  ├─ babel-types@^6.26.0
│  └─ lodash@^4.17.4
├─ babel-plugin-transform-es2015-classes@6.24.1
│  ├─ babel-helper-define-map@^6.24.1
│  ├─ babel-helper-function-name@^6.24.1
│  ├─ babel-helper-optimise-call-expression@^6.24.1
│  ├─ babel-helper-replace-supers@^6.24.1
│  ├─ babel-messages@^6.23.0
│  ├─ babel-runtime@^6.22.0
│  ├─ babel-template@^6.24.1
│  ├─ babel-traverse@^6.24.1
│  └─ babel-types@^6.24.1
├─ babel-plugin-transform-es2015-computed-properties@6.24.1
│  ├─ babel-runtime@^6.22.0
│  └─ babel-template@^6.24.1
├─ babel-plugin-transform-es2015-destructuring@6.23.0
│  └─ babel-runtime@^6.22.0
├─ babel-plugin-transform-es2015-for-of@6.23.0
│  └─ babel-runtime@^6.22.0
├─ babel-plugin-transform-es2015-function-name@6.24.1
│  ├─ babel-helper-function-name@^6.24.1
│  ├─ babel-runtime@^6.22.0
│  └─ babel-types@^6.24.1
├─ babel-plugin-transform-es2015-literals@6.22.0
│  └─ babel-runtime@^6.22.0
├─ babel-plugin-transform-es2015-modules-commonjs@6.26.2
│  ├─ babel-plugin-transform-strict-mode@^6.24.1
│  ├─ babel-runtime@^6.26.0
│  ├─ babel-template@^6.26.0
│  └─ babel-types@^6.26.0
├─ babel-plugin-transform-es2015-object-super@6.24.1
│  ├─ babel-helper-replace-supers@^6.24.1
│  └─ babel-runtime@^6.22.0
├─ babel-plugin-transform-es2015-parameters@6.24.1
│  ├─ babel-helper-call-delegate@^6.24.1
│  ├─ babel-helper-get-function-arity@^6.24.1
│  ├─ babel-runtime@^6.22.0
│  ├─ babel-template@^6.24.1
│  ├─ babel-traverse@^6.24.1
│  └─ babel-types@^6.24.1
├─ babel-plugin-transform-es2015-shorthand-properties@6.24.1
│  ├─ babel-runtime@^6.22.0
│  └─ babel-types@^6.24.1
├─ babel-plugin-transform-es2015-spread@6.22.0
│  └─ babel-runtime@^6.22.0
├─ babel-plugin-transform-es2015-sticky-regex@6.24.1
│  ├─ babel-helper-regex@^6.24.1
│  ├─ babel-runtime@^6.22.0
│  └─ babel-types@^6.24.1
├─ babel-plugin-transform-es2015-template-literals@6.22.0
│  └─ babel-runtime@^6.22.0
├─ babel-plugin-transform-es2015-unicode-regex@6.24.1
│  ├─ babel-helper-regex@^6.24.1
│  ├─ babel-runtime@^6.22.0
│  ├─ regexpu-core@^2.0.0
│  ├─ regexpu-core@2.0.0
│  │  ├─ regenerate@^1.2.1
│  │  ├─ regjsgen@^0.2.0
│  │  └─ regjsparser@^0.1.4
│  ├─ regjsgen@0.2.0
│  └─ regjsparser@0.1.5
│     └─ jsesc@~0.5.0
├─ babel-plugin-transform-es3-member-expression-literals@6.22.0
│  └─ babel-runtime@^6.22.0
├─ babel-plugin-transform-es3-property-literals@6.22.0
│  └─ babel-runtime@^6.22.0
├─ babel-plugin-transform-flow-strip-types@6.22.0
│  ├─ babel-plugin-syntax-flow@^6.18.0
│  └─ babel-runtime@^6.22.0
├─ babel-plugin-transform-object-rest-spread@6.26.0
│  ├─ babel-plugin-syntax-object-rest-spread@^6.8.0
│  └─ babel-runtime@^6.26.0
├─ babel-plugin-transform-react-display-name@6.25.0
│  └─ babel-runtime@^6.22.0
├─ babel-plugin-transform-react-jsx@6.24.1
│  ├─ babel-helper-builder-react-jsx@^6.24.1
│  ├─ babel-plugin-syntax-jsx@^6.8.0
│  └─ babel-runtime@^6.22.0
├─ babel-plugin-transform-strict-mode@6.24.1
│  ├─ babel-runtime@^6.22.0
│  └─ babel-types@^6.24.1
├─ babel-preset-es2015-node@6.1.1
│  ├─ babel-plugin-transform-es2015-destructuring@6.x
│  ├─ babel-plugin-transform-es2015-function-name@6.x
│  ├─ babel-plugin-transform-es2015-modules-commonjs@6.x
│  ├─ babel-plugin-transform-es2015-parameters@6.x
│  ├─ babel-plugin-transform-es2015-shorthand-properties@6.x
│  ├─ babel-plugin-transform-es2015-spread@6.x
│  ├─ babel-plugin-transform-es2015-sticky-regex@6.x
│  ├─ babel-plugin-transform-es2015-unicode-regex@6.x
│  └─ semver@5.x
├─ babel-preset-fbjs@2.2.0
│  ├─ babel-plugin-check-es2015-constants@^6.8.0
│  ├─ babel-plugin-syntax-class-properties@^6.8.0
│  ├─ babel-plugin-syntax-flow@^6.8.0
│  ├─ babel-plugin-syntax-jsx@^6.8.0
│  ├─ babel-plugin-syntax-object-rest-spread@^6.8.0
│  ├─ babel-plugin-syntax-trailing-function-commas@^6.8.0
│  ├─ babel-plugin-transform-class-properties@^6.8.0
│  ├─ babel-plugin-transform-es2015-arrow-functions@^6.8.0
│  ├─ babel-plugin-transform-es2015-block-scoped-functions@^6.8.0
│  ├─ babel-plugin-transform-es2015-block-scoping@^6.8.0
│  ├─ babel-plugin-transform-es2015-classes@^6.8.0
│  ├─ babel-plugin-transform-es2015-computed-properties@^6.8.0
│  ├─ babel-plugin-transform-es2015-destructuring@^6.8.0
│  ├─ babel-plugin-transform-es2015-for-of@^6.8.0
│  ├─ babel-plugin-transform-es2015-function-name@^6.8.0
│  ├─ babel-plugin-transform-es2015-literals@^6.8.0
│  ├─ babel-plugin-transform-es2015-modules-commonjs@^6.8.0
│  ├─ babel-plugin-transform-es2015-object-super@^6.8.0
│  ├─ babel-plugin-transform-es2015-parameters@^6.8.0
│  ├─ babel-plugin-transform-es2015-shorthand-properties@^6.8.0
│  ├─ babel-plugin-transform-es2015-spread@^6.8.0
│  ├─ babel-plugin-transform-es2015-template-literals@^6.8.0
│  ├─ babel-plugin-transform-es3-member-expression-literals@^6.8.0
│  ├─ babel-plugin-transform-es3-property-literals@^6.8.0
│  ├─ babel-plugin-transform-flow-strip-types@^6.8.0
│  ├─ babel-plugin-transform-object-rest-spread@^6.8.0
│  ├─ babel-plugin-transform-react-display-name@^6.8.0
│  └─ babel-plugin-transform-react-jsx@^6.8.0
├─ babel-preset-jest@23.2.0
│  ├─ babel-plugin-jest-hoist@^23.2.0
│  └─ babel-plugin-syntax-object-rest-spread@^6.13.0
├─ babel-register@6.26.0
│  ├─ babel-core@^6.26.0
│  ├─ babel-runtime@^6.26.0
│  ├─ core-js@^2.5.0
│  ├─ home-or-tmp@^2.0.0
│  ├─ lodash@^4.17.4
│  ├─ mkdirp@^0.5.1
│  └─ source-map-support@^0.4.15
├─ babel-runtime@6.26.0
│  ├─ core-js@^2.4.0
│  └─ regenerator-runtime@^0.11.0
├─ babel-template@6.26.0
│  ├─ babel-runtime@^6.26.0
│  ├─ babel-traverse@^6.26.0
│  ├─ babel-types@^6.26.0
│  ├─ babylon@^6.18.0
│  └─ lodash@^4.17.4
├─ babel-traverse@6.26.0
│  ├─ babel-code-frame@^6.26.0
│  ├─ babel-messages@^6.23.0
│  ├─ babel-runtime@^6.26.0
│  ├─ babel-types@^6.26.0
│  ├─ babylon@^6.18.0
│  ├─ debug@^2.6.8
│  ├─ globals@^9.18.0
│  ├─ globals@9.18.0
│  ├─ invariant@^2.2.2
│  └─ lodash@^4.17.4
├─ babel-types@6.26.0
│  ├─ babel-runtime@^6.26.0
│  ├─ esutils@^2.0.2
│  ├─ lodash@^4.17.4
│  ├─ to-fast-properties@^1.0.3
│  └─ to-fast-properties@1.0.3
├─ babylon@6.18.0
├─ balanced-match@1.0.0
├─ base@0.11.2
│  ├─ cache-base@^1.0.1
│  ├─ class-utils@^0.3.5
│  ├─ component-emitter@^1.2.1
│  ├─ define-property@^1.0.0
│  ├─ define-property@1.0.0
│  │  └─ is-descriptor@^1.0.0
│  ├─ isobject@^3.0.1
│  ├─ mixin-deep@^1.2.0
│  └─ pascalcase@^0.1.1
├─ base64-js@1.3.0
├─ basic-auth@2.0.0
│  ├─ safe-buffer@5.1.1
│  └─ safe-buffer@5.1.1
├─ bcrypt-pbkdf@1.0.2
│  └─ tweetnacl@^0.14.3
├─ big-integer@1.6.34
├─ bplist-creator@0.0.7
│  └─ stream-buffers@~2.2.0
├─ bplist-parser@0.1.1
│  └─ big-integer@^1.6.7
├─ brace-expansion@1.1.11
│  ├─ balanced-match@^1.0.0
│  └─ concat-map@0.0.1
├─ braces@1.8.5
│  ├─ expand-range@^1.8.1
│  ├─ preserve@^0.2.0
│  └─ repeat-element@^1.1.2
├─ browser-process-hrtime@0.1.2
├─ browser-resolve@1.11.3
│  ├─ resolve@1.1.7
│  └─ resolve@1.1.7
├─ bser@2.0.0
│  └─ node-int64@^0.4.0
├─ buffer-from@1.1.1
├─ builtin-modules@1.1.1
├─ bytes@3.0.0
├─ cache-base@1.0.1
│  ├─ collection-visit@^1.0.0
│  ├─ component-emitter@^1.2.1
│  ├─ get-value@^2.0.6
│  ├─ has-value@^1.0.0
│  ├─ isobject@^3.0.1
│  ├─ set-value@^2.0.0
│  ├─ to-object-path@^0.3.0
│  ├─ union-value@^1.0.0
│  └─ unset-value@^1.0.0
├─ callsites@2.0.0
├─ camelcase@4.1.0
├─ capture-exit@1.2.0
│  └─ rsvp@^3.3.3
├─ caseless@0.12.0
├─ center-align@0.1.3
│  ├─ align-text@^0.1.3
│  └─ lazy-cache@^1.0.3
├─ chalk@2.4.1
│  ├─ ansi-styles@^3.2.1
│  ├─ escape-string-regexp@^1.0.5
│  └─ supports-color@^5.3.0
├─ chardet@0.4.2
├─ chownr@1.0.1
├─ ci-info@1.4.0
├─ class-utils@0.3.6
│  ├─ arr-union@^3.1.0
│  ├─ define-property@^0.2.5
│  ├─ isobject@^3.0.0
│  └─ static-extend@^0.1.1
├─ cli-cursor@2.1.0
│  └─ restore-cursor@^2.0.0
├─ cli-width@2.2.0
├─ cliui@4.1.0
│  ├─ ansi-regex@3.0.0
│  ├─ string-width@^2.1.1
│  ├─ strip-ansi@^4.0.0
│  ├─ strip-ansi@4.0.0
│  │  └─ ansi-regex@^3.0.0
│  └─ wrap-ansi@^2.0.0
├─ co@4.6.0
├─ code-point-at@1.1.0
├─ collection-visit@1.0.0
│  ├─ map-visit@^1.0.0
│  └─ object-visit@^1.0.0
├─ color-convert@1.9.2
│  └─ color-name@1.1.1
├─ color-name@1.1.1
├─ color-support@1.1.3
├─ combined-stream@1.0.6
│  └─ delayed-stream@~1.0.0
├─ commander@2.17.1
├─ commondir@1.0.1
├─ compare-versions@3.3.1
├─ component-emitter@1.2.1
├─ compressible@2.0.14
│  └─ mime-db@>= 1.34.0 < 2
├─ compression@1.7.3
│  ├─ accepts@~1.3.5
│  ├─ bytes@3.0.0
│  ├─ compressible@~2.0.14
│  ├─ debug@2.6.9
│  ├─ on-headers@~1.0.1
│  ├─ safe-buffer@5.1.2
│  └─ vary@~1.1.2
├─ concat-map@0.0.1
├─ concat-stream@1.6.2
│  ├─ buffer-from@^1.0.0
│  ├─ inherits@^2.0.3
│  ├─ readable-stream@^2.2.2
│  └─ typedarray@^0.0.6
├─ connect@3.6.6
│  ├─ debug@2.6.9
│  ├─ finalhandler@1.1.0
│  ├─ parseurl@~1.3.2
│  └─ utils-merge@1.0.1
├─ console-control-strings@1.1.0
├─ convert-source-map@1.5.1
├─ copy-descriptor@0.1.1
├─ core-js@2.5.7
├─ core-util-is@1.0.2
├─ cosmiconfig@5.0.6
│  ├─ is-directory@^0.3.1
│  ├─ js-yaml@^3.9.0
│  ├─ parse-json@^4.0.0
│  └─ parse-json@4.0.0
│     ├─ error-ex@^1.3.1
│     └─ json-parse-better-errors@^1.0.1
├─ create-react-class@15.6.3
│  ├─ fbjs@^0.8.9
│  ├─ loose-envify@^1.3.1
│  └─ object-assign@^4.1.1
├─ cross-spawn@5.1.0
│  ├─ lru-cache@^4.0.1
│  ├─ shebang-command@^1.2.0
│  └─ which@^1.2.9
├─ cssom@0.3.4
├─ cssstyle@1.1.1
│  └─ cssom@0.3.x
├─ dashdash@1.14.1
│  └─ assert-plus@^1.0.0
├─ data-urls@1.0.1
│  ├─ abab@^2.0.0
│  ├─ whatwg-mimetype@^2.1.0
│  ├─ whatwg-url@^7.0.0
│  └─ whatwg-url@7.0.0
│     ├─ lodash.sortby@^4.7.0
│     ├─ tr46@^1.0.1
│     └─ webidl-conversions@^4.0.2
├─ debug@2.6.9
│  └─ ms@2.0.0
├─ decamelize@1.2.0
├─ decode-uri-component@0.2.0
├─ deep-extend@0.6.0
├─ deep-is@0.1.3
├─ default-require-extensions@2.0.0
│  └─ strip-bom@^3.0.0
├─ define-properties@1.1.3
│  └─ object-keys@^1.0.12
├─ define-property@0.2.5
│  ├─ is-accessor-descriptor@0.1.6
│  │  ├─ kind-of@^3.0.2
│  │  └─ kind-of@3.2.2
│  │     └─ is-buffer@^1.1.5
│  ├─ is-data-descriptor@0.1.4
│  │  ├─ kind-of@^3.0.2
│  │  └─ kind-of@3.2.2
│  │     └─ is-buffer@^1.1.5
│  ├─ is-descriptor@^0.1.0
│  ├─ is-descriptor@0.1.6
│  │  ├─ is-accessor-descriptor@^0.1.6
│  │  ├─ is-data-descriptor@^0.1.4
│  │  └─ kind-of@^5.0.0
│  └─ kind-of@5.1.0
├─ delayed-stream@1.0.0
├─ delegates@1.0.0
├─ denodeify@1.2.1
├─ depd@1.1.2
├─ destroy@1.0.4
├─ detect-indent@4.0.0
│  └─ repeating@^2.0.0
├─ detect-libc@1.0.3
├─ detect-newline@2.1.0
├─ diff@3.5.0
├─ dom-walk@0.1.1
├─ domexception@1.0.1
│  └─ webidl-conversions@^4.0.2
├─ ecc-jsbn@0.1.2
│  ├─ jsbn@~0.1.0
│  └─ safer-buffer@^2.1.0
├─ ee-first@1.1.1
├─ encodeurl@1.0.2
├─ encoding@0.1.12
│  └─ iconv-lite@~0.4.13
├─ envinfo@5.10.0
├─ error-ex@1.3.2
│  └─ is-arrayish@^0.2.1
├─ errorhandler@1.5.0
│  ├─ accepts@~1.3.3
│  └─ escape-html@~1.0.3
├─ es-abstract@1.12.0
│  ├─ es-to-primitive@^1.1.1
│  ├─ function-bind@^1.1.1
│  ├─ has@^1.0.1
│  ├─ is-callable@^1.1.3
│  └─ is-regex@^1.0.4
├─ es-to-primitive@1.1.1
│  ├─ is-callable@^1.1.1
│  ├─ is-date-object@^1.0.1
│  └─ is-symbol@^1.0.1
├─ escape-html@1.0.3
├─ escape-string-regexp@1.0.5
├─ escodegen@1.11.0
│  ├─ esprima@^3.1.3
│  ├─ esprima@3.1.3
│  ├─ estraverse@^4.2.0
│  ├─ esutils@^2.0.2
│  ├─ optionator@^0.8.1
│  ├─ source-map@~0.6.1
│  └─ source-map@0.6.1
├─ esprima@4.0.1
├─ estraverse@4.2.0
├─ esutils@2.0.2
├─ etag@1.8.1
├─ event-target-shim@1.1.1
├─ eventemitter3@3.1.0
├─ exec-sh@0.2.2
│  └─ merge@^1.2.0
├─ execa@0.7.0
│  ├─ 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
├─ exit@0.1.2
├─ expand-brackets@0.1.5
│  └─ is-posix-bracket@^0.1.0
├─ expand-range@1.8.2
│  └─ fill-range@^2.1.0
├─ expect@23.5.0
│  ├─ ansi-styles@^3.2.0
│  ├─ jest-diff@^23.5.0
│  ├─ jest-get-type@^22.1.0
│  ├─ jest-matcher-utils@^23.5.0
│  ├─ jest-message-util@^23.4.0
│  └─ jest-regex-util@^23.3.0
├─ extend-shallow@2.0.1
│  └─ is-extendable@^0.1.0
├─ extend@3.0.2
├─ external-editor@2.2.0
│  ├─ chardet@^0.4.0
│  ├─ iconv-lite@^0.4.17
│  └─ tmp@^0.0.33
├─ extglob@0.3.2
│  └─ is-extglob@^1.0.0
├─ extsprintf@1.3.0
├─ fancy-log@1.3.2
│  ├─ ansi-gray@^0.1.1
│  ├─ color-support@^1.1.3
│  └─ time-stamp@^1.0.0
├─ fast-deep-equal@1.1.0
├─ fast-json-stable-stringify@2.0.0
├─ fast-levenshtein@2.0.6
├─ fb-watchman@2.0.0
│  └─ bser@^2.0.0
├─ fbjs-scripts@0.8.3
│  ├─ ansi-colors@^1.0.1
│  ├─ babel-core@^6.7.2
│  ├─ babel-preset-fbjs@^2.1.2
│  ├─ babel-preset-fbjs@2.3.0
│  │  ├─ babel-plugin-check-es2015-constants@^6.8.0
│  │  ├─ babel-plugin-syntax-class-properties@^6.8.0
│  │  ├─ babel-plugin-syntax-flow@^6.8.0
│  │  ├─ babel-plugin-syntax-jsx@^6.8.0
│  │  ├─ babel-plugin-syntax-object-rest-spread@^6.8.0
│  │  ├─ babel-plugin-syntax-trailing-function-commas@^6.8.0
│  │  ├─ babel-plugin-transform-class-properties@^6.8.0
│  │  ├─ babel-plugin-transform-es2015-arrow-functions@^6.8.0
│  │  ├─ babel-plugin-transform-es2015-block-scoped-functions@^6.8.0
│  │  ├─ babel-plugin-transform-es2015-block-scoping@^6.8.0
│  │  ├─ babel-plugin-transform-es2015-classes@^6.8.0
│  │  ├─ babel-plugin-transform-es2015-computed-properties@^6.8.0
│  │  ├─ babel-plugin-transform-es2015-destructuring@^6.8.0
│  │  ├─ babel-plugin-transform-es2015-for-of@^6.8.0
│  │  ├─ babel-plugin-transform-es2015-function-name@^6.8.0
│  │  ├─ babel-plugin-transform-es2015-literals@^6.8.0
│  │  ├─ babel-plugin-transform-es2015-modules-commonjs@^6.8.0
│  │  ├─ babel-plugin-transform-es2015-object-super@^6.8.0
│  │  ├─ babel-plugin-transform-es2015-parameters@^6.8.0
│  │  ├─ babel-plugin-transform-es2015-shorthand-properties@^6.8.0
│  │  ├─ babel-plugin-transform-es2015-spread@^6.8.0
│  │  ├─ babel-plugin-transform-es2015-template-literals@^6.8.0
│  │  ├─ babel-plugin-transform-es3-member-expression-literals@^6.8.0
│  │  ├─ babel-plugin-transform-es3-property-literals@^6.8.0
│  │  ├─ babel-plugin-transform-flow-strip-types@^6.8.0
│  │  ├─ babel-plugin-transform-object-rest-spread@^6.8.0
│  │  ├─ babel-plugin-transform-react-display-name@^6.8.0
│  │  └─ babel-plugin-transform-react-jsx@^6.8.0
│  ├─ core-js@^2.4.1
│  ├─ cross-spawn@^5.1.0
│  ├─ fancy-log@^1.3.2
│  ├─ object-assign@^4.0.1
│  ├─ plugin-error@^0.1.2
│  ├─ semver@^5.1.0
│  └─ through2@^2.0.0
├─ fbjs@0.8.17
│  ├─ core-js@^1.0.0
│  ├─ core-js@1.2.7
│  ├─ isomorphic-fetch@^2.1.1
│  ├─ loose-envify@^1.0.0
│  ├─ object-assign@^4.1.0
│  ├─ promise@^7.1.1
│  ├─ setimmediate@^1.0.5
│  └─ ua-parser-js@^0.7.18
├─ figures@2.0.0
│  └─ escape-string-regexp@^1.0.5
├─ filename-regex@2.0.1
├─ fileset@2.0.3
│  ├─ glob@^7.0.3
│  └─ minimatch@^3.0.3
├─ fill-range@2.2.4
│  ├─ is-number@^2.1.0
│  ├─ is-number@2.1.0
│  │  └─ kind-of@^3.0.2
│  ├─ isobject@^2.0.0
│  ├─ isobject@2.1.0
│  │  └─ isarray@1.0.0
│  ├─ randomatic@^3.0.0
│  ├─ repeat-element@^1.1.2
│  └─ repeat-string@^1.5.2
├─ finalhandler@1.1.0
│  ├─ debug@2.6.9
│  ├─ encodeurl@~1.0.1
│  ├─ escape-html@~1.0.3
│  ├─ on-finished@~2.3.0
│  ├─ parseurl@~1.3.2
│  ├─ statuses@~1.3.1
│  └─ unpipe@~1.0.0
├─ find-cache-dir@1.0.0
│  ├─ commondir@^1.0.1
│  ├─ make-dir@^1.0.0
│  └─ pkg-dir@^2.0.0
├─ find-up@2.1.0
│  └─ locate-path@^2.0.0
├─ for-in@1.0.2
├─ for-own@0.1.5
│  └─ for-in@^1.0.1
├─ forever-agent@0.6.1
├─ form-data@2.3.2
│  ├─ asynckit@^0.4.0
│  ├─ combined-stream@1.0.6
│  └─ mime-types@^2.1.12
├─ fragment-cache@0.2.1
│  └─ map-cache@^0.2.2
├─ fresh@0.5.2
├─ fs-extra@1.0.0
│  ├─ graceful-fs@^4.1.2
│  ├─ jsonfile@^2.1.0
│  └─ klaw@^1.0.0
├─ fs-minipass@1.2.5
│  └─ minipass@^2.2.1
├─ fs.realpath@1.0.0
├─ fsevents@1.2.4
│  ├─ nan@^2.9.2
│  └─ node-pre-gyp@^0.10.0
├─ function-bind@1.1.1
├─ gauge@1.2.7
│  ├─ ansi@^0.3.0
│  ├─ has-unicode@^2.0.0
│  ├─ lodash.pad@^4.1.0
│  ├─ lodash.padend@^4.1.0
│  └─ lodash.padstart@^4.1.0
├─ get-caller-file@1.0.3
├─ get-stream@3.0.0
├─ get-value@2.0.6
├─ getpass@0.1.7
│  └─ assert-plus@^1.0.0
├─ glob-base@0.3.0
│  ├─ glob-parent@^2.0.0
│  └─ is-glob@^2.0.0
├─ glob-parent@2.0.0
│  └─ is-glob@^2.0.0
├─ glob@7.1.3
│  ├─ fs.realpath@^1.0.0
│  ├─ inflight@^1.0.4
│  ├─ inherits@2
│  ├─ minimatch@^3.0.4
│  ├─ once@^1.3.0
│  └─ path-is-absolute@^1.0.0
├─ global@4.3.2
│  ├─ min-document@^2.19.0
│  └─ process@~0.5.1
├─ globals@11.7.0
├─ graceful-fs@4.1.11
├─ growly@1.3.0
├─ handlebars@4.0.11
│  ├─ async@^1.4.0
│  ├─ async@1.5.2
│  ├─ optimist@^0.6.1
│  ├─ source-map@^0.4.4
│  ├─ source-map@0.4.4
│  │  └─ amdefine@>=0.0.4
│  └─ uglify-js@^2.6
├─ har-schema@2.0.0
├─ har-validator@5.1.0
│  ├─ ajv@^5.3.0
│  └─ har-schema@^2.0.0
├─ has-ansi@2.0.0
│  └─ ansi-regex@^2.0.0
├─ has-flag@3.0.0
├─ has-unicode@2.0.1
├─ has-value@1.0.0
│  ├─ get-value@^2.0.6
│  ├─ has-values@^1.0.0
│  └─ isobject@^3.0.0
├─ has-values@1.0.0
│  ├─ is-number@^3.0.0
│  ├─ kind-of@^4.0.0
│  └─ kind-of@4.0.0
│     └─ is-buffer@^1.1.5
├─ has@1.0.3
│  └─ function-bind@^1.1.1
├─ home-or-tmp@2.0.0
│  ├─ os-homedir@^1.0.0
│  └─ os-tmpdir@^1.0.1
├─ hosted-git-info@2.7.1
├─ html-encoding-sniffer@1.0.2
│  └─ whatwg-encoding@^1.0.1
├─ http-errors@1.6.3
│  ├─ depd@~1.1.2
│  ├─ inherits@2.0.3
│  ├─ setprototypeof@1.1.0
│  ├─ statuses@>= 1.4.0 < 2
│  └─ statuses@1.5.0
├─ http-signature@1.2.0
│  ├─ assert-plus@^1.0.0
│  ├─ jsprim@^1.2.2
│  └─ sshpk@^1.7.0
├─ iconv-lite@0.4.24
│  └─ safer-buffer@>= 2.1.2 < 3
├─ ignore-walk@3.0.1
│  └─ minimatch@^3.0.4
├─ image-size@0.6.3
├─ import-local@1.0.0
│  ├─ pkg-dir@^2.0.0
│  └─ resolve-cwd@^2.0.0
├─ imurmurhash@0.1.4
├─ inflight@1.0.6
│  ├─ once@^1.3.0
│  └─ wrappy@1
├─ inherits@2.0.3
├─ ini@1.3.5
├─ inquirer@3.3.0
│  ├─ ansi-escapes@^3.0.0
│  ├─ ansi-regex@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-aggregates@^4.0.8
│  ├─ rx-lite@^4.0.8
│  ├─ string-width@^2.1.0
│  ├─ strip-ansi@^4.0.0
│  ├─ strip-ansi@4.0.0
│  │  └─ ansi-regex@^3.0.0
│  └─ through@^2.3.6
├─ invariant@2.2.4
│  └─ loose-envify@^1.0.0
├─ invert-kv@1.0.0
├─ is-accessor-descriptor@1.0.0
│  ├─ kind-of@^6.0.0
│  └─ kind-of@6.0.2
├─ is-arrayish@0.2.1
├─ is-buffer@1.1.6
├─ is-builtin-module@1.0.0
│  └─ builtin-modules@^1.0.0
├─ is-callable@1.1.4
├─ is-ci@1.2.0
│  └─ ci-info@^1.3.0
├─ is-data-descriptor@1.0.0
│  ├─ kind-of@^6.0.0
│  └─ kind-of@6.0.2
├─ is-date-object@1.0.1
├─ is-descriptor@1.0.2
│  ├─ is-accessor-descriptor@^1.0.0
│  ├─ is-data-descriptor@^1.0.0
│  ├─ kind-of@^6.0.2
│  └─ kind-of@6.0.2
├─ is-directory@0.3.1
├─ is-dotfile@1.0.3
├─ is-equal-shallow@0.1.3
│  └─ is-primitive@^2.0.0
├─ is-extendable@0.1.1
├─ is-extglob@1.0.0
├─ is-finite@1.0.2
│  └─ number-is-nan@^1.0.0
├─ is-fullwidth-code-point@2.0.0
├─ is-generator-fn@1.0.0
├─ is-glob@2.0.1
│  └─ is-extglob@^1.0.0
├─ is-number@3.0.0
│  └─ kind-of@^3.0.2
├─ is-plain-object@2.0.4
│  └─ isobject@^3.0.1
├─ is-posix-bracket@0.1.1
├─ is-primitive@2.0.0
├─ is-promise@2.1.0
├─ is-regex@1.0.4
│  └─ has@^1.0.1
├─ is-stream@1.1.0
├─ is-symbol@1.0.1
├─ is-typedarray@1.0.0
├─ is-utf8@0.2.1
├─ is-windows@1.0.2
├─ isarray@1.0.0
├─ isexe@2.0.0
├─ isobject@3.0.1
├─ isomorphic-fetch@2.2.1
│  ├─ node-fetch@^1.0.1
│  ├─ node-fetch@1.7.3
│  │  ├─ encoding@^0.1.11
│  │  └─ is-stream@^1.0.1
│  └─ whatwg-fetch@>=0.10.0
├─ isstream@0.1.2
├─ istanbul-api@1.3.1
│  ├─ async@^2.1.4
│  ├─ compare-versions@^3.1.0
│  ├─ fileset@^2.0.2
│  ├─ istanbul-lib-coverage@^1.2.0
│  ├─ istanbul-lib-hook@^1.2.0
│  ├─ istanbul-lib-instrument@^1.10.1
│  ├─ istanbul-lib-report@^1.1.4
│  ├─ istanbul-lib-source-maps@^1.2.4
│  ├─ istanbul-reports@^1.3.0
│  ├─ js-yaml@^3.7.0
│  ├─ mkdirp@^0.5.1
│  └─ once@^1.4.0
├─ istanbul-lib-coverage@1.2.0
├─ istanbul-lib-hook@1.2.1
│  └─ append-transform@^1.0.0
├─ istanbul-lib-instrument@1.10.1
│  ├─ babel-generator@^6.18.0
│  ├─ babel-template@^6.16.0
│  ├─ babel-traverse@^6.18.0
│  ├─ babel-types@^6.18.0
│  ├─ babylon@^6.18.0
│  ├─ istanbul-lib-coverage@^1.2.0
│  └─ semver@^5.3.0
├─ istanbul-lib-report@1.1.4
│  ├─ has-flag@1.0.0
│  ├─ istanbul-lib-coverage@^1.2.0
│  ├─ mkdirp@^0.5.1
│  ├─ path-parse@^1.0.5
│  ├─ supports-color@^3.1.2
│  └─ supports-color@3.2.3
│     └─ has-flag@^1.0.0
├─ istanbul-lib-source-maps@1.2.5
│  ├─ debug@^3.1.0
│  ├─ debug@3.1.0
│  │  └─ ms@2.0.0
│  ├─ istanbul-lib-coverage@^1.2.0
│  ├─ mkdirp@^0.5.1
│  ├─ rimraf@^2.6.1
│  └─ source-map@^0.5.3
├─ istanbul-reports@1.3.0
│  └─ handlebars@^4.0.3
├─ jest-changed-files@23.4.2
│  └─ throat@^4.0.0
├─ jest-cli@23.5.0
│  ├─ ansi-escapes@^3.0.0
│  ├─ ansi-regex@3.0.0
│  ├─ chalk@^2.0.1
│  ├─ exit@^0.1.2
│  ├─ glob@^7.1.2
│  ├─ graceful-fs@^4.1.11
│  ├─ import-local@^1.0.0
│  ├─ is-ci@^1.0.10
│  ├─ istanbul-api@^1.3.1
│  ├─ istanbul-lib-coverage@^1.2.0
│  ├─ istanbul-lib-instrument@^1.10.1
│  ├─ istanbul-lib-source-maps@^1.2.4
│  ├─ jest-changed-files@^23.4.2
│  ├─ jest-config@^23.5.0
│  ├─ jest-environment-jsdom@^23.4.0
│  ├─ jest-get-type@^22.1.0
│  ├─ jest-haste-map@^23.5.0
│  ├─ jest-message-util@^23.4.0
│  ├─ jest-regex-util@^23.3.0
│  ├─ jest-resolve-dependencies@^23.5.0
│  ├─ jest-runner@^23.5.0
│  ├─ jest-runtime@^23.5.0
│  ├─ jest-snapshot@^23.5.0
│  ├─ jest-util@^23.4.0
│  ├─ jest-validate@^23.5.0
│  ├─ jest-watcher@^23.4.0
│  ├─ jest-worker@^23.2.0
│  ├─ micromatch@^2.3.11
│  ├─ node-notifier@^5.2.1
│  ├─ prompts@^0.1.9
│  ├─ realpath-native@^1.0.0
│  ├─ rimraf@^2.5.4
│  ├─ slash@^1.0.0
│  ├─ string-length@^2.0.0
│  ├─ strip-ansi@^4.0.0
│  ├─ strip-ansi@4.0.0
│  │  └─ ansi-regex@^3.0.0
│  ├─ which@^1.2.12
│  └─ yargs@^11.0.0
├─ jest-config@23.5.0
│  ├─ babel-core@^6.0.0
│  ├─ babel-jest@^23.4.2
│  ├─ chalk@^2.0.1
│  ├─ glob@^7.1.1
│  ├─ jest-environment-jsdom@^23.4.0
│  ├─ jest-environment-node@^23.4.0
│  ├─ jest-get-type@^22.1.0
│  ├─ jest-jasmine2@^23.5.0
│  ├─ jest-regex-util@^23.3.0
│  ├─ jest-resolve@^23.5.0
│  ├─ jest-util@^23.4.0
│  ├─ jest-validate@^23.5.0
│  ├─ micromatch@^2.3.11
│  └─ pretty-format@^23.5.0
├─ jest-diff@23.5.0
│  ├─ chalk@^2.0.1
│  ├─ diff@^3.2.0
│  ├─ jest-get-type@^22.1.0
│  └─ pretty-format@^23.5.0
├─ jest-docblock@23.2.0
│  └─ detect-newline@^2.1.0
├─ jest-each@23.5.0
│  ├─ chalk@^2.0.1
│  └─ pretty-format@^23.5.0
├─ jest-environment-jsdom@23.4.0
│  ├─ jest-mock@^23.2.0
│  ├─ jest-util@^23.4.0
│  └─ jsdom@^11.5.1
├─ jest-environment-node@23.4.0
│  ├─ jest-mock@^23.2.0
│  └─ jest-util@^23.4.0
├─ jest-get-type@22.4.3
├─ jest-haste-map@23.5.0
│  ├─ fb-watchman@^2.0.0
│  ├─ graceful-fs@^4.1.11
│  ├─ invariant@^2.2.4
│  ├─ jest-docblock@^23.2.0
│  ├─ jest-serializer@^23.0.1
│  ├─ jest-worker@^23.2.0
│  ├─ micromatch@^2.3.11
│  └─ sane@^2.0.0
├─ jest-jasmine2@23.5.0
│  ├─ babel-traverse@^6.0.0
│  ├─ chalk@^2.0.1
│  ├─ co@^4.6.0
│  ├─ expect@^23.5.0
│  ├─ is-generator-fn@^1.0.0
│  ├─ jest-diff@^23.5.0
│  ├─ jest-each@^23.5.0
│  ├─ jest-matcher-utils@^23.5.0
│  ├─ jest-message-util@^23.4.0
│  ├─ jest-snapshot@^23.5.0
│  ├─ jest-util@^23.4.0
│  └─ pretty-format@^23.5.0
├─ jest-leak-detector@23.5.0
│  └─ pretty-format@^23.5.0
├─ jest-matcher-utils@23.5.0
│  ├─ chalk@^2.0.1
│  ├─ jest-get-type@^22.1.0
│  └─ pretty-format@^23.5.0
├─ jest-message-util@23.4.0
│  ├─ @babel/code-frame@^7.0.0-beta.35
│  ├─ @babel/code-frame@7.0.0-rc.3
│  │  └─ @babel/highlight@7.0.0-rc.3
│  ├─ @babel/highlight@7.0.0-rc.3
│  │  ├─ chalk@^2.0.0
│  │  ├─ esutils@^2.0.2
│  │  └─ js-tokens@^4.0.0
│  ├─ chalk@^2.0.1
│  ├─ js-tokens@4.0.0
│  ├─ micromatch@^2.3.11
│  ├─ slash@^1.0.0
│  └─ stack-utils@^1.0.1
├─ jest-mock@23.2.0
├─ jest-regex-util@23.3.0
├─ jest-resolve-dependencies@23.5.0
│  ├─ jest-regex-util@^23.3.0
│  └─ jest-snapshot@^23.5.0
├─ jest-resolve@23.5.0
│  ├─ browser-resolve@^1.11.3
│  ├─ chalk@^2.0.1
│  └─ realpath-native@^1.0.0
├─ jest-runner@23.5.0
│  ├─ exit@^0.1.2
│  ├─ graceful-fs@^4.1.11
│  ├─ jest-config@^23.5.0
│  ├─ jest-docblock@^23.2.0
│  ├─ jest-haste-map@^23.5.0
│  ├─ jest-jasmine2@^23.5.0
│  ├─ jest-leak-detector@^23.5.0
│  ├─ jest-message-util@^23.4.0
│  ├─ jest-runtime@^23.5.0
│  ├─ jest-util@^23.4.0
│  ├─ jest-worker@^23.2.0
│  ├─ source-map-support@^0.5.6
│  ├─ source-map-support@0.5.9
│  │  ├─ buffer-from@^1.0.0
│  │  └─ source-map@^0.6.0
│  ├─ source-map@0.6.1
│  └─ throat@^4.0.0
├─ jest-runtime@23.5.0
│  ├─ babel-core@^6.0.0
│  ├─ babel-plugin-istanbul@^4.1.6
│  ├─ chalk@^2.0.1
│  ├─ convert-source-map@^1.4.0
│  ├─ exit@^0.1.2
│  ├─ fast-json-stable-stringify@^2.0.0
│  ├─ graceful-fs@^4.1.11
│  ├─ jest-config@^23.5.0
│  ├─ jest-haste-map@^23.5.0
│  ├─ jest-message-util@^23.4.0
│  ├─ jest-regex-util@^23.3.0
│  ├─ jest-resolve@^23.5.0
│  ├─ jest-snapshot@^23.5.0
│  ├─ jest-util@^23.4.0
│  ├─ jest-validate@^23.5.0
│  ├─ micromatch@^2.3.11
│  ├─ realpath-native@^1.0.0
│  ├─ slash@^1.0.0
│  ├─ strip-bom@3.0.0
│  ├─ write-file-atomic@^2.1.0
│  ├─ write-file-atomic@2.3.0
│  │  ├─ graceful-fs@^4.1.11
│  │  ├─ imurmurhash@^0.1.4
│  │  └─ signal-exit@^3.0.2
│  └─ yargs@^11.0.0
├─ jest-serializer@23.0.1
├─ jest-snapshot@23.5.0
│  ├─ babel-types@^6.0.0
│  ├─ chalk@^2.0.1
│  ├─ jest-diff@^23.5.0
│  ├─ jest-matcher-utils@^23.5.0
│  ├─ jest-message-util@^23.4.0
│  ├─ jest-resolve@^23.5.0
│  ├─ mkdirp@^0.5.1
│  ├─ natural-compare@^1.4.0
│  ├─ pretty-format@^23.5.0
│  └─ semver@^5.5.0
├─ jest-util@23.4.0
│  ├─ callsites@^2.0.0
│  ├─ chalk@^2.0.1
│  ├─ graceful-fs@^4.1.11
│  ├─ is-ci@^1.0.10
│  ├─ jest-message-util@^23.4.0
│  ├─ mkdirp@^0.5.1
│  ├─ slash@^1.0.0
│  ├─ source-map@^0.6.0
│  └─ source-map@0.6.1
├─ jest-validate@23.5.0
│  ├─ chalk@^2.0.1
│  ├─ jest-get-type@^22.1.0
│  ├─ leven@^2.1.0
│  └─ pretty-format@^23.5.0
├─ jest-watcher@23.4.0
│  ├─ ansi-escapes@^3.0.0
│  ├─ chalk@^2.0.1
│  └─ string-length@^2.0.0
├─ jest-worker@23.2.0
│  └─ merge-stream@^1.0.1
├─ jest@23.5.0
│  ├─ import-local@^1.0.0
│  └─ jest-cli@^23.5.0
├─ js-tokens@3.0.2
├─ js-yaml@3.12.0
│  ├─ argparse@^1.0.7
│  └─ esprima@^4.0.0
├─ jsbn@0.1.1
├─ jsdom@11.12.0
│  ├─ abab@^2.0.0
│  ├─ acorn-globals@^4.1.0
│  ├─ acorn@^5.5.3
│  ├─ array-equal@^1.0.0
│  ├─ cssom@>= 0.3.2 < 0.4.0
│  ├─ cssstyle@^1.0.0
│  ├─ data-urls@^1.0.0
│  ├─ domexception@^1.0.1
│  ├─ escodegen@^1.9.1
│  ├─ html-encoding-sniffer@^1.0.2
│  ├─ left-pad@^1.3.0
│  ├─ nwsapi@^2.0.7
│  ├─ parse5@4.0.0
│  ├─ pn@^1.1.0
│  ├─ request-promise-native@^1.0.5
│  ├─ request@^2.87.0
│  ├─ sax@^1.2.4
│  ├─ symbol-tree@^3.2.2
│  ├─ tough-cookie@^2.3.4
│  ├─ w3c-hr-time@^1.0.1
│  ├─ webidl-conversions@^4.0.2
│  ├─ whatwg-encoding@^1.0.3
│  ├─ whatwg-mimetype@^2.1.0
│  ├─ whatwg-url@^6.4.1
│  ├─ ws@^5.2.0
│  ├─ ws@5.2.2
│  │  └─ async-limiter@~1.0.0
│  └─ xml-name-validator@^3.0.0
├─ jsesc@0.5.0
├─ json-parse-better-errors@1.0.2
├─ json-schema-traverse@0.3.1
├─ json-schema@0.2.3
├─ json-stable-stringify@1.0.1
│  └─ jsonify@~0.0.0
├─ json-stringify-safe@5.0.1
├─ json5@0.5.1
├─ jsonfile@2.4.0
│  └─ graceful-fs@^4.1.6
├─ jsonify@0.0.0
├─ jsprim@1.4.1
│  ├─ assert-plus@1.0.0
│  ├─ extsprintf@1.3.0
│  ├─ json-schema@0.2.3
│  └─ verror@1.10.0
├─ kind-of@3.2.2
│  └─ is-buffer@^1.1.5
├─ klaw@1.3.1
│  └─ graceful-fs@^4.1.9
├─ kleur@2.0.1
├─ lazy-cache@1.0.4
├─ lcid@1.0.0
│  └─ invert-kv@^1.0.0
├─ left-pad@1.3.0
├─ leven@2.1.0
├─ levn@0.3.0
│  ├─ prelude-ls@~1.1.2
│  └─ type-check@~0.3.2
├─ load-json-file@2.0.0
│  ├─ graceful-fs@^4.1.2
│  ├─ parse-json@^2.2.0
│  ├─ pify@^2.0.0
│  └─ strip-bom@^3.0.0
├─ locate-path@2.0.0
│  ├─ p-locate@^2.0.0
│  └─ path-exists@^3.0.0
├─ lodash.pad@4.5.1
├─ lodash.padend@4.6.1
├─ lodash.padstart@4.6.1
├─ lodash.sortby@4.7.0
├─ lodash.throttle@4.1.1
├─ lodash@4.17.10
├─ longest@1.0.1
├─ loose-envify@1.4.0
│  ├─ js-tokens@^3.0.0 || ^4.0.0
│  └─ js-tokens@4.0.0
├─ lru-cache@4.1.3
│  ├─ pseudomap@^1.0.2
│  ├─ yallist@^2.1.2
│  └─ yallist@2.1.2
├─ make-dir@1.3.0
│  ├─ pify@^3.0.0
│  └─ pify@3.0.0
├─ makeerror@1.0.11
│  └─ tmpl@1.0.x
├─ map-cache@0.2.2
├─ map-visit@1.0.0
│  └─ object-visit@^1.0.0
├─ math-random@1.0.1
├─ mem@1.1.0
│  └─ mimic-fn@^1.0.0
├─ merge-stream@1.0.1
│  └─ readable-stream@^2.0.1
├─ merge@1.2.0
├─ metro-babel-register@0.43.6
│  ├─ @babel/core@7.0.0-beta.56
│  ├─ @babel/plugin-proposal-class-properties@7.0.0-beta.56
│  ├─ @babel/plugin-proposal-nullish-coalescing-operator@7.0.0-beta.56
│  ├─ @babel/plugin-proposal-object-rest-spread@7.0.0-beta.56
│  ├─ @babel/plugin-proposal-optional-catch-binding@7.0.0-beta.56
│  ├─ @babel/plugin-proposal-optional-chaining@7.0.0-beta.56
│  ├─ @babel/plugin-transform-async-to-generator@7.0.0-beta.56
│  ├─ @babel/plugin-transform-flow-strip-types@7.0.0-beta.56
│  ├─ @babel/plugin-transform-modules-commonjs@7.0.0-beta.56
│  ├─ @babel/register@7.0.0-beta.56
│  ├─ core-js@^2.2.2
│  └─ escape-string-regexp@^1.0.5
├─ metro-babel7-plugin-react-transform@0.43.6
│  └─ @babel/helper-module-imports@7.0.0-beta.56
├─ metro-cache@0.43.6
│  ├─ jest-serializer@23.0.1
│  ├─ metro-core@0.43.6
│  ├─ mkdirp@^0.5.1
│  └─ rimraf@^2.5.4
├─ metro-config@0.43.6
│  ├─ cosmiconfig@^5.0.5
│  ├─ metro-cache@0.43.6
│  ├─ metro-core@0.43.6
│  └─ metro@0.43.6
├─ metro-core@0.43.6
│  ├─ jest-haste-map@23.5.0
│  ├─ lodash.throttle@^4.1.1
│  ├─ metro-resolver@0.43.6
│  └─ wordwrap@^1.0.0
├─ metro-memory-fs@0.43.6
├─ metro-minify-uglify@0.43.6
│  └─ uglify-es@^3.1.9
├─ metro-react-native-babel-preset@0.43.6
│  ├─ @babel/plugin-proposal-class-properties@7.0.0-beta.56
│  ├─ @babel/plugin-proposal-nullish-coalescing-operator@7.0.0-beta.56
│  ├─ @babel/plugin-proposal-object-rest-spread@7.0.0-beta.56
│  ├─ @babel/plugin-proposal-optional-catch-binding@7.0.0-beta.56
│  ├─ @babel/plugin-proposal-optional-chaining@7.0.0-beta.56
│  ├─ @babel/plugin-transform-arrow-functions@7.0.0-beta.56
│  ├─ @babel/plugin-transform-block-scoping@7.0.0-beta.56
│  ├─ @babel/plugin-transform-classes@7.0.0-beta.56
│  ├─ @babel/plugin-transform-computed-properties@7.0.0-beta.56
│  ├─ @babel/plugin-transform-destructuring@7.0.0-beta.56
│  ├─ @babel/plugin-transform-exponentiation-operator@7.0.0-beta.56
│  ├─ @babel/plugin-transform-flow-strip-types@7.0.0-beta.56
│  ├─ @babel/plugin-transform-for-of@7.0.0-beta.56
│  ├─ @babel/plugin-transform-function-name@7.0.0-beta.56
│  ├─ @babel/plugin-transform-literals@7.0.0-beta.56
│  ├─ @babel/plugin-transform-modules-commonjs@7.0.0-beta.56
│  ├─ @babel/plugin-transform-object-assign@7.0.0-beta.56
│  ├─ @babel/plugin-transform-parameters@7.0.0-beta.56
│  ├─ @babel/plugin-transform-react-display-name@7.0.0-beta.56
│  ├─ @babel/plugin-transform-react-jsx-source@7.0.0-beta.56
│  ├─ @babel/plugin-transform-react-jsx@7.0.0-beta.56
│  ├─ @babel/plugin-transform-regenerator@7.0.0-beta.56
│  ├─ @babel/plugin-transform-shorthand-properties@7.0.0-beta.56
│  ├─ @babel/plugin-transform-spread@7.0.0-beta.56
│  ├─ @babel/plugin-transform-sticky-regex@7.0.0-beta.56
│  ├─ @babel/plugin-transform-template-literals@7.0.0-beta.56
│  ├─ @babel/plugin-transform-typescript@7.0.0-beta.56
│  ├─ @babel/plugin-transform-unicode-regex@7.0.0-beta.56
│  ├─ @babel/template@7.0.0-beta.56
│  └─ metro-babel7-plugin-react-transform@0.43.6
├─ metro-resolver@0.43.6
│  └─ absolute-path@^0.0.0
├─ metro-source-map@0.43.6
│  └─ source-map@^0.5.6
├─ metro@0.43.6
│  ├─ @babel/core@7.0.0-beta.56
│  ├─ @babel/generator@7.0.0-beta.56
│  ├─ @babel/helper-remap-async-to-generator@7.0.0-beta.56
│  ├─ @babel/parser@7.0.0-beta.56
│  ├─ @babel/plugin-external-helpers@7.0.0-beta.56
│  ├─ @babel/plugin-proposal-class-properties@7.0.0-beta.56
│  ├─ @babel/plugin-proposal-object-rest-spread@7.0.0-beta.56
│  ├─ @babel/plugin-syntax-dynamic-import@7.0.0-beta.56
│  ├─ @babel/plugin-syntax-nullish-coalescing-operator@7.0.0-beta.56
│  ├─ @babel/plugin-transform-arrow-functions@7.0.0-beta.56
│  ├─ @babel/plugin-transform-async-to-generator@7.0.0-beta.56
│  ├─ @babel/plugin-transform-block-scoping@7.0.0-beta.56
│  ├─ @babel/plugin-transform-classes@7.0.0-beta.56
│  ├─ @babel/plugin-transform-computed-properties@7.0.0-beta.56
│  ├─ @babel/plugin-transform-destructuring@7.0.0-beta.56
│  ├─ @babel/plugin-transform-exponentiation-operator@7.0.0-beta.56
│  ├─ @babel/plugin-transform-flow-strip-types@7.0.0-beta.56
│  ├─ @babel/plugin-transform-for-of@7.0.0-beta.56
│  ├─ @babel/plugin-transform-function-name@7.0.0-beta.56
│  ├─ @babel/plugin-transform-literals@7.0.0-beta.56
│  ├─ @babel/plugin-transform-modules-commonjs@7.0.0-beta.56
│  ├─ @babel/plugin-transform-object-assign@7.0.0-beta.56
│  ├─ @babel/plugin-transform-parameters@7.0.0-beta.56
│  ├─ @babel/plugin-transform-react-display-name@7.0.0-beta.56
│  ├─ @babel/plugin-transform-react-jsx-source@7.0.0-beta.56
│  ├─ @babel/plugin-transform-react-jsx@7.0.0-beta.56
│  ├─ @babel/plugin-transform-regenerator@7.0.0-beta.56
│  ├─ @babel/plugin-transform-shorthand-properties@7.0.0-beta.56
│  ├─ @babel/plugin-transform-spread@7.0.0-beta.56
│  ├─ @babel/plugin-transform-template-literals@7.0.0-beta.56
│  ├─ @babel/plugin-transform-unicode-regex@7.0.0-beta.56
│  ├─ @babel/register@7.0.0-beta.56
│  ├─ @babel/template@7.0.0-beta.56
│  ├─ @babel/traverse@7.0.0-beta.56
│  ├─ @babel/types@7.0.0-beta.56
│  ├─ absolute-path@^0.0.0
│  ├─ ansi-styles@2.2.1
│  ├─ async@^2.4.0
│  ├─ babel-core@^6.24.1
│  ├─ babel-preset-es2015-node@^6.1.1
│  ├─ babel-preset-fbjs@2.2.0
│  ├─ babel-register@^6.24.1
│  ├─ chalk@^1.1.1
│  ├─ chalk@1.1.3
│  │  ├─ ansi-styles@^2.2.1
│  │  ├─ escape-string-regexp@^1.0.2
│  │  ├─ has-ansi@^2.0.0
│  │  ├─ strip-ansi@^3.0.0
│  │  └─ supports-color@^2.0.0
│  ├─ cliui@3.2.0
│  │  ├─ string-width@^1.0.1
│  │  ├─ string-width@1.0.2
│  │  │  ├─ code-point-at@^1.0.0
│  │  │  ├─ is-fullwidth-code-point@^1.0.0
│  │  │  └─ strip-ansi@^3.0.0
│  │  ├─ strip-ansi@^3.0.1
│  │  └─ wrap-ansi@^2.0.0
│  ├─ concat-stream@^1.6.0
│  ├─ connect@^3.6.5
│  ├─ debug@^2.2.0
│  ├─ denodeify@^1.2.1
│  ├─ eventemitter3@^3.0.0
│  ├─ fbjs@0.8.17
│  ├─ fs-extra@^1.0.0
│  ├─ graceful-fs@^4.1.3
│  ├─ image-size@^0.6.0
│  ├─ is-fullwidth-code-point@1.0.0
│  │  └─ number-is-nan@^1.0.0
│  ├─ jest-docblock@23.2.0
│  ├─ jest-haste-map@23.5.0
│  ├─ jest-worker@23.2.0
│  ├─ json-stable-stringify@^1.0.1
│  ├─ json5@^0.4.0
│  ├─ json5@0.4.0
│  ├─ left-pad@^1.1.3
│  ├─ lodash.throttle@^4.1.1
│  ├─ merge-stream@^1.0.1
│  ├─ metro-babel-register@0.43.6
│  ├─ metro-babel7-plugin-react-transform@0.43.6
│  ├─ metro-cache@0.43.6
│  ├─ metro-config@0.43.6
│  ├─ metro-core@0.43.6
│  ├─ metro-minify-uglify@0.43.6
│  ├─ metro-react-native-babel-preset@0.43.6
│  ├─ metro-resolver@0.43.6
│  ├─ metro-source-map@0.43.6
│  ├─ mime-db@1.23.0
│  ├─ mime-types@2.1.11
│  │  └─ mime-db@~1.23.0
│  ├─ mime-types@2.1.11
│  ├─ mkdirp@^0.5.1
│  ├─ node-fetch@^2.2.0
│  ├─ react-transform-hmr@^1.0.4
│  ├─ resolve@^1.5.0
│  ├─ rimraf@^2.5.4
│  ├─ serialize-error@^2.1.0
│  ├─ source-map@^0.5.6
│  ├─ supports-color@2.0.0
│  ├─ temp@0.8.3
│  ├─ throat@^4.1.0
│  ├─ wordwrap@^1.0.0
│  ├─ write-file-atomic@^1.2.0
│  ├─ ws@^1.1.0
│  ├─ xpipe@^1.0.5
│  ├─ yargs-parser@7.0.0
│  │  └─ camelcase@^4.1.0
│  ├─ yargs@^9.0.0
│  └─ yargs@9.0.1
│     ├─ camelcase@^4.1.0
│     ├─ cliui@^3.2.0
│     ├─ decamelize@^1.1.1
│     ├─ get-caller-file@^1.0.1
│     ├─ os-locale@^2.0.0
│     ├─ read-pkg-up@^2.0.0
│     ├─ require-directory@^2.1.1
│     ├─ require-main-filename@^1.0.1
│     ├─ set-blocking@^2.0.0
│     ├─ string-width@^2.0.0
│     ├─ which-module@^2.0.0
│     ├─ y18n@^3.2.1
│     └─ yargs-parser@^7.0.0
├─ micromatch@2.3.11
│  ├─ arr-diff@^2.0.0
│  ├─ arr-diff@2.0.0
│  │  └─ arr-flatten@^1.0.1
│  ├─ array-unique@^0.2.1
│  ├─ array-unique@0.2.1
│  ├─ braces@^1.8.2
│  ├─ expand-brackets@^0.1.4
│  ├─ extglob@^0.3.1
│  ├─ filename-regex@^2.0.0
│  ├─ is-extglob@^1.0.0
│  ├─ is-glob@^2.0.1
│  ├─ kind-of@^3.0.2
│  ├─ normalize-path@^2.0.1
│  ├─ object.omit@^2.0.0
│  ├─ parse-glob@^3.0.4
│  └─ regex-cache@^0.4.2
├─ mime-db@1.36.0
├─ mime-types@2.1.20
│  └─ mime-db@~1.36.0
├─ mime@1.6.0
├─ mimic-fn@1.2.0
├─ min-document@2.19.0
│  └─ dom-walk@^0.1.0
├─ minimatch@3.0.4
│  └─ brace-expansion@^1.1.7
├─ minimist@1.2.0
├─ minipass@2.3.4
│  ├─ safe-buffer@^5.1.2
│  └─ yallist@^3.0.0
├─ minizlib@1.1.0
│  └─ minipass@^2.2.1
├─ mixin-deep@1.3.1
│  ├─ for-in@^1.0.2
│  ├─ is-extendable@^1.0.1
│  └─ is-extendable@1.0.1
│     └─ is-plain-object@^2.0.4
├─ mkdirp@0.5.1
│  ├─ minimist@0.0.8
│  └─ minimist@0.0.8
├─ morgan@1.9.0
│  ├─ basic-auth@~2.0.0
│  ├─ debug@2.6.9
│  ├─ depd@~1.1.1
│  ├─ on-finished@~2.3.0
│  └─ on-headers@~1.0.1
├─ ms@2.0.0
├─ mute-stream@0.0.7
├─ nan@2.11.0
├─ nanomatch@1.2.13
│  ├─ arr-diff@^4.0.0
│  ├─ array-unique@^0.3.2
│  ├─ define-property@^2.0.2
│  ├─ define-property@2.0.2
│  │  ├─ is-descriptor@^1.0.2
│  │  └─ isobject@^3.0.1
│  ├─ extend-shallow@^3.0.2
│  ├─ extend-shallow@3.0.2
│  │  ├─ assign-symbols@^1.0.0
│  │  └─ is-extendable@^1.0.1
│  ├─ fragment-cache@^0.2.1
│  ├─ is-extendable@1.0.1
│  │  └─ is-plain-object@^2.0.4
│  ├─ is-windows@^1.0.2
│  ├─ kind-of@^6.0.2
│  ├─ kind-of@6.0.2
│  ├─ object.pick@^1.3.0
│  ├─ regex-not@^1.0.0
│  ├─ snapdragon@^0.8.1
│  └─ to-regex@^3.0.1
├─ natural-compare@1.4.0
├─ needle@2.2.2
│  ├─ debug@^2.1.2
│  ├─ iconv-lite@^0.4.4
│  └─ sax@^1.2.4
├─ negotiator@0.6.1
├─ node-fetch@2.2.0
├─ node-int64@0.4.0
├─ node-modules-regexp@1.0.0
├─ node-notifier@5.2.1
│  ├─ growly@^1.3.0
│  ├─ semver@^5.4.1
│  ├─ shellwords@^0.1.1
│  └─ which@^1.3.0
├─ node-pre-gyp@0.10.3
│  ├─ detect-libc@^1.0.2
│  ├─ gauge@2.7.4
│  │  ├─ aproba@^1.0.3
│  │  ├─ console-control-strings@^1.0.0
│  │  ├─ has-unicode@^2.0.0
│  │  ├─ object-assign@^4.1.0
│  │  ├─ signal-exit@^3.0.0
│  │  ├─ string-width@^1.0.1
│  │  ├─ strip-ansi@^3.0.1
│  │  └─ wide-align@^1.1.0
│  ├─ is-fullwidth-code-point@1.0.0
│  │  └─ number-is-nan@^1.0.0
│  ├─ mkdirp@^0.5.1
│  ├─ needle@^2.2.1
│  ├─ nopt@^4.0.1
│  ├─ npm-packlist@^1.1.6
│  ├─ npmlog@^4.0.2
│  ├─ npmlog@4.1.2
│  │  ├─ are-we-there-yet@~1.1.2
│  │  ├─ console-control-strings@~1.1.0
│  │  ├─ gauge@~2.7.3
│  │  └─ set-blocking@~2.0.0
│  ├─ rc@^1.2.7
│  ├─ rimraf@^2.6.1
│  ├─ semver@^5.3.0
│  ├─ string-width@1.0.2
│  │  ├─ code-point-at@^1.0.0
│  │  ├─ is-fullwidth-code-point@^1.0.0
│  │  └─ strip-ansi@^3.0.0
│  └─ tar@^4
├─ nopt@4.0.1
│  ├─ abbrev@1
│  └─ osenv@^0.1.4
├─ normalize-package-data@2.4.0
│  ├─ hosted-git-info@^2.1.4
│  ├─ is-builtin-module@^1.0.0
│  ├─ semver@2 || 3 || 4 || 5
│  └─ validate-npm-package-license@^3.0.1
├─ normalize-path@2.1.1
│  └─ remove-trailing-separator@^1.0.1
├─ npm-bundled@1.0.5
├─ npm-packlist@1.1.11
│  ├─ ignore-walk@^3.0.1
│  └─ npm-bundled@^1.0.1
├─ npm-run-path@2.0.2
│  └─ path-key@^2.0.0
├─ npmlog@2.0.4
│  ├─ ansi@~0.3.1
│  ├─ are-we-there-yet@~1.1.2
│  └─ gauge@~1.2.5
├─ number-is-nan@1.0.1
├─ nwsapi@2.0.8
├─ oauth-sign@0.9.0
├─ object-assign@4.1.1
├─ object-copy@0.1.0
│  ├─ copy-descriptor@^0.1.0
│  ├─ define-property@^0.2.5
│  └─ kind-of@^3.0.3
├─ object-keys@1.0.12
├─ object-visit@1.0.1
│  └─ isobject@^3.0.0
├─ object.getownpropertydescriptors@2.0.3
│  ├─ define-properties@^1.1.2
│  └─ es-abstract@^1.5.1
├─ object.omit@2.0.1
│  ├─ for-own@^0.1.4
│  └─ is-extendable@^0.1.1
├─ object.pick@1.3.0
│  └─ isobject@^3.0.1
├─ on-finished@2.3.0
│  └─ ee-first@1.1.1
├─ on-headers@1.0.1
├─ once@1.4.0
│  └─ wrappy@1
├─ onetime@2.0.1
│  └─ mimic-fn@^1.0.0
├─ opn@3.0.3
│  └─ object-assign@^4.0.1
├─ optimist@0.6.1
│  ├─ minimist@~0.0.1
│  ├─ minimist@0.0.10
│  ├─ wordwrap@~0.0.2
│  └─ wordwrap@0.0.3
├─ optionator@0.8.2
│  ├─ deep-is@~0.1.3
│  ├─ fast-levenshtein@~2.0.4
│  ├─ levn@~0.3.0
│  ├─ prelude-ls@~1.1.2
│  ├─ type-check@~0.3.2
│  └─ wordwrap@~1.0.0
├─ options@0.0.6
├─ os-homedir@1.0.2
├─ os-locale@2.1.0
│  ├─ execa@^0.7.0
│  ├─ lcid@^1.0.0
│  └─ mem@^1.1.0
├─ os-tmpdir@1.0.2
├─ osenv@0.1.5
│  ├─ os-homedir@^1.0.0
│  └─ os-tmpdir@^1.0.0
├─ p-finally@1.0.0
├─ p-limit@1.3.0
│  └─ p-try@^1.0.0
├─ p-locate@2.0.0
│  └─ p-limit@^1.1.0
├─ p-try@1.0.0
├─ parse-glob@3.0.4
│  ├─ glob-base@^0.3.0
│  ├─ is-dotfile@^1.0.0
│  ├─ is-extglob@^1.0.0
│  └─ is-glob@^2.0.0
├─ parse-json@2.2.0
│  └─ error-ex@^1.2.0
├─ parse5@4.0.0
├─ parseurl@1.3.2
├─ pascalcase@0.1.1
├─ path-exists@3.0.0
├─ path-is-absolute@1.0.1
├─ path-key@2.0.1
├─ path-parse@1.0.6
├─ path-type@2.0.0
│  └─ pify@^2.0.0
├─ pegjs@0.10.0
├─ performance-now@2.1.0
├─ pify@2.3.0
├─ pinkie-promise@2.0.1
│  └─ pinkie@^2.0.0
├─ pinkie@2.0.4
├─ pirates@4.0.0
│  └─ node-modules-regexp@^1.0.0
├─ pkg-dir@2.0.0
│  └─ find-up@^2.1.0
├─ plist@3.0.1
│  ├─ base64-js@^1.2.3
│  ├─ xmlbuilder@^9.0.7
│  └─ xmldom@0.1.x
├─ plugin-error@0.1.2
│  ├─ ansi-cyan@^0.1.1
│  ├─ ansi-red@^0.1.1
│  ├─ arr-diff@^1.0.1
│  ├─ arr-diff@1.1.0
│  │  ├─ arr-flatten@^1.0.1
│  │  └─ array-slice@^0.2.3
│  ├─ arr-union@^2.0.1
│  ├─ arr-union@2.1.0
│  ├─ extend-shallow@^1.1.2
│  ├─ extend-shallow@1.1.4
│  │  └─ kind-of@^1.1.0
│  └─ kind-of@1.1.0
├─ pn@1.1.0
├─ posix-character-classes@0.1.1
├─ prelude-ls@1.1.2
├─ preserve@0.2.0
├─ pretty-format@23.5.0
│  ├─ ansi-regex@^3.0.0
│  ├─ ansi-regex@3.0.0
│  └─ ansi-styles@^3.2.0
├─ private@0.1.8
├─ process-nextick-args@2.0.0
├─ process@0.5.2
├─ promise@7.3.1
│  └─ asap@~2.0.3
├─ prompts@0.1.14
│  ├─ kleur@^2.0.1
│  └─ sisteransi@^0.1.1
├─ prop-types@15.6.2
│  ├─ loose-envify@^1.3.1
│  └─ object-assign@^4.1.1
├─ pseudomap@1.0.2
├─ psl@1.1.29
├─ punycode@1.4.1
├─ qs@6.5.2
├─ randomatic@3.1.0
│  ├─ is-number@^4.0.0
│  ├─ is-number@4.0.0
│  ├─ kind-of@^6.0.0
│  ├─ kind-of@6.0.2
│  └─ math-random@^1.0.1
├─ range-parser@1.2.0
├─ rc@1.2.8
│  ├─ deep-extend@^0.6.0
│  ├─ ini@~1.3.0
│  ├─ minimist@^1.2.0
│  └─ strip-json-comments@~2.0.1
├─ react-clone-referenced-element@1.0.1
├─ react-deep-force-update@1.1.2
├─ react-devtools-core@3.2.3
│  ├─ shell-quote@^1.6.1
│  ├─ ultron@1.1.1
│  ├─ ws@^3.3.1
│  └─ ws@3.3.3
│     ├─ async-limiter@~1.0.0
│     ├─ safe-buffer@~5.1.0
│     └─ ultron@~1.1.0
├─ react-is@16.4.2
├─ react-native@0.57.0-rc.3
│  ├─ absolute-path@^0.0.0
│  ├─ ansi-styles@2.2.1
│  ├─ art@^0.10.0
│  ├─ base64-js@^1.1.2
│  ├─ chalk@^1.1.1
│  ├─ chalk@1.1.3
│  │  ├─ ansi-styles@^2.2.1
│  │  ├─ escape-string-regexp@^1.0.2
│  │  ├─ has-ansi@^2.0.0
│  │  ├─ strip-ansi@^3.0.0
│  │  └─ supports-color@^2.0.0
│  ├─ cliui@3.2.0
│  │  ├─ string-width@^1.0.1
│  │  ├─ string-width@1.0.2
│  │  │  ├─ code-point-at@^1.0.0
│  │  │  ├─ is-fullwidth-code-point@^1.0.0
│  │  │  └─ strip-ansi@^3.0.0
│  │  ├─ strip-ansi@^3.0.1
│  │  └─ wrap-ansi@^2.0.0
│  ├─ commander@^2.9.0
│  ├─ compression@^1.7.1
│  ├─ connect@^3.6.5
│  ├─ create-react-class@^15.6.3
│  ├─ debug@^2.2.0
│  ├─ denodeify@^1.2.1
│  ├─ envinfo@^5.7.0
│  ├─ errorhandler@^1.5.0
│  ├─ escape-string-regexp@^1.0.5
│  ├─ event-target-shim@^1.0.5
│  ├─ fbjs-scripts@^0.8.1
│  ├─ fbjs@0.8.17
│  ├─ fs-extra@^1.0.0
│  ├─ glob@^7.1.1
│  ├─ graceful-fs@^4.1.3
│  ├─ inquirer@^3.0.6
│  ├─ is-fullwidth-code-point@1.0.0
│  │  └─ number-is-nan@^1.0.0
│  ├─ lodash@^4.17.5
│  ├─ metro-babel-register@^0.43.6
│  ├─ metro-core@^0.43.6
│  ├─ metro-memory-fs@^0.43.6
│  ├─ metro@^0.43.6
│  ├─ mime@^1.3.4
│  ├─ minimist@^1.2.0
│  ├─ mkdirp@^0.5.1
│  ├─ morgan@^1.9.0
│  ├─ node-fetch@^2.2.0
│  ├─ node-notifier@^5.2.1
│  ├─ npmlog@^2.0.4
│  ├─ opn@^3.0.2
│  ├─ optimist@^0.6.1
│  ├─ plist@^3.0.0
│  ├─ pretty-format@^4.2.1
│  ├─ pretty-format@4.3.1
│  ├─ promise@^7.1.1
│  ├─ prop-types@^15.5.8
│  ├─ react-clone-referenced-element@^1.0.1
│  ├─ react-devtools-core@^3.2.2
│  ├─ react-timer-mixin@^0.13.2
│  ├─ regenerator-runtime@^0.11.0
│  ├─ rimraf@^2.5.4
│  ├─ semver@^5.0.3
│  ├─ serve-static@^1.13.1
│  ├─ shell-quote@1.6.1
│  ├─ stacktrace-parser@^0.1.3
│  ├─ supports-color@2.0.0
│  ├─ ws@^1.1.0
│  ├─ xcode@^0.9.1
│  ├─ xmldoc@^0.4.0
│  ├─ yargs-parser@7.0.0
│  │  └─ camelcase@^4.1.0
│  ├─ yargs@^9.0.0
│  └─ yargs@9.0.1
│     ├─ camelcase@^4.1.0
│     ├─ cliui@^3.2.0
│     ├─ decamelize@^1.1.1
│     ├─ get-caller-file@^1.0.1
│     ├─ os-locale@^2.0.0
│     ├─ read-pkg-up@^2.0.0
│     ├─ require-directory@^2.1.1
│     ├─ require-main-filename@^1.0.1
│     ├─ set-blocking@^2.0.0
│     ├─ string-width@^2.0.0
│     ├─ which-module@^2.0.0
│     ├─ y18n@^3.2.1
│     └─ yargs-parser@^7.0.0
├─ react-proxy@1.1.8
│  ├─ lodash@^4.6.1
│  └─ react-deep-force-update@^1.0.0
├─ react-test-renderer@16.4.1
│  ├─ fbjs@^0.8.16
│  ├─ object-assign@^4.1.1
│  ├─ prop-types@^15.6.0
│  └─ react-is@^16.4.1
├─ react-timer-mixin@0.13.4
├─ react-transform-hmr@1.0.4
│  ├─ global@^4.3.0
│  └─ react-proxy@^1.1.7
├─ react@16.4.1
│  ├─ fbjs@^0.8.16
│  ├─ loose-envify@^1.1.0
│  ├─ object-assign@^4.1.1
│  └─ prop-types@^15.6.0
├─ read-pkg-up@2.0.0
│  ├─ find-up@^2.0.0
│  └─ read-pkg@^2.0.0
├─ read-pkg@2.0.0
│  ├─ load-json-file@^2.0.0
│  ├─ normalize-package-data@^2.3.2
│  └─ path-type@^2.0.0
├─ readable-stream@2.3.6
│  ├─ core-util-is@~1.0.0
│  ├─ inherits@~2.0.3
│  ├─ isarray@~1.0.0
│  ├─ process-nextick-args@~2.0.0
│  ├─ safe-buffer@~5.1.1
│  ├─ string_decoder@~1.1.1
│  └─ util-deprecate@~1.0.1
├─ realpath-native@1.0.1
│  └─ util.promisify@^1.0.0
├─ regenerate-unicode-properties@7.0.0
│  └─ regenerate@^1.4.0
├─ regenerate@1.4.0
├─ regenerator-runtime@0.11.1
├─ regenerator-transform@0.13.3
│  └─ private@^0.1.6
├─ regex-cache@0.4.4
│  └─ is-equal-shallow@^0.1.3
├─ regex-not@1.0.2
│  ├─ extend-shallow@^3.0.2
│  ├─ extend-shallow@3.0.2
│  │  ├─ assign-symbols@^1.0.0
│  │  └─ is-extendable@^1.0.1
│  ├─ is-extendable@1.0.1
│  │  └─ is-plain-object@^2.0.4
│  └─ safe-regex@^1.1.0
├─ regexpu-core@4.2.0
│  ├─ regenerate-unicode-properties@^7.0.0
│  ├─ regenerate@^1.4.0
│  ├─ regjsgen@^0.4.0
│  ├─ regjsparser@^0.3.0
│  ├─ unicode-match-property-ecmascript@^1.0.4
│  └─ unicode-match-property-value-ecmascript@^1.0.2
├─ regjsgen@0.4.0
├─ regjsparser@0.3.0
│  └─ jsesc@~0.5.0
├─ remove-trailing-separator@1.1.0
├─ repeat-element@1.1.3
├─ repeat-string@1.6.1
├─ repeating@2.0.1
│  └─ is-finite@^1.0.0
├─ request-promise-core@1.1.1
│  └─ lodash@^4.13.1
├─ request-promise-native@1.0.5
│  ├─ request-promise-core@1.1.1
│  ├─ stealthy-require@^1.1.0
│  └─ tough-cookie@>=2.3.3
├─ request@2.88.0
│  ├─ aws-sign2@~0.7.0
│  ├─ aws4@^1.8.0
│  ├─ caseless@~0.12.0
│  ├─ combined-stream@~1.0.6
│  ├─ extend@~3.0.2
│  ├─ forever-agent@~0.6.1
│  ├─ form-data@~2.3.2
│  ├─ har-validator@~5.1.0
│  ├─ http-signature@~1.2.0
│  ├─ is-typedarray@~1.0.0
│  ├─ isstream@~0.1.2
│  ├─ json-stringify-safe@~5.0.1
│  ├─ mime-types@~2.1.19
│  ├─ oauth-sign@~0.9.0
│  ├─ performance-now@^2.1.0
│  ├─ qs@~6.5.2
│  ├─ safe-buffer@^5.1.2
│  ├─ tough-cookie@~2.4.3
│  ├─ tunnel-agent@^0.6.0
│  ├─ uuid@^3.3.2
│  └─ uuid@3.3.2
├─ require-directory@2.1.1
├─ require-main-filename@1.0.1
├─ resolve-cwd@2.0.0
│  └─ resolve-from@^3.0.0
├─ resolve-from@3.0.0
├─ resolve-url@0.2.1
├─ resolve@1.8.1
│  └─ path-parse@^1.0.5
├─ restore-cursor@2.0.0
│  ├─ onetime@^2.0.0
│  └─ signal-exit@^3.0.2
├─ ret@0.1.15
├─ right-align@0.1.3
│  └─ align-text@^0.1.1
├─ rimraf@2.6.2
│  └─ glob@^7.0.5
├─ rsvp@3.6.2
├─ run-async@2.3.0
│  └─ is-promise@^2.1.0
├─ rx-lite-aggregates@4.0.8
│  └─ rx-lite@*
├─ rx-lite@4.0.8
├─ safe-buffer@5.1.2
├─ safe-regex@1.1.0
│  └─ ret@~0.1.10
├─ safer-buffer@2.1.2
├─ sane@2.5.2
│  ├─ anymatch@^2.0.0
│  ├─ braces@2.3.2
│  │  ├─ arr-flatten@^1.1.0
│  │  ├─ array-unique@^0.3.2
│  │  ├─ extend-shallow@^2.0.1
│  │  ├─ extend-shallow@2.0.1
│  │  │  └─ is-extendable@^0.1.0
│  │  ├─ fill-range@^4.0.0
│  │  ├─ is-extendable@0.1.1
│  │  ├─ isobject@^3.0.1
│  │  ├─ repeat-element@^1.1.2
│  │  ├─ snapdragon-node@^2.0.1
│  │  ├─ snapdragon@^0.8.1
│  │  ├─ split-string@^3.0.2
│  │  └─ to-regex@^3.0.1
│  ├─ capture-exit@^1.2.0
│  ├─ define-property@2.0.2
│  │  ├─ is-descriptor@^1.0.2
│  │  └─ isobject@^3.0.1
│  ├─ exec-sh@^0.2.0
│  ├─ expand-brackets@2.1.4
│  │  ├─ debug@^2.3.3
│  │  ├─ define-property@^0.2.5
│  │  ├─ define-property@0.2.5
│  │  │  └─ is-descriptor@^0.1.0
│  │  ├─ extend-shallow@^2.0.1
│  │  ├─ extend-shallow@2.0.1
│  │  │  └─ is-extendable@^0.1.0
│  │  ├─ is-descriptor@0.1.6
│  │  │  ├─ is-accessor-descriptor@^0.1.6
│  │  │  ├─ is-data-descriptor@^0.1.4
│  │  │  └─ kind-of@^5.0.0
│  │  ├─ is-extendable@0.1.1
│  │  ├─ kind-of@5.1.0
│  │  ├─ posix-character-classes@^0.1.0
│  │  ├─ regex-not@^1.0.0
│  │  ├─ snapdragon@^0.8.1
│  │  └─ to-regex@^3.0.1
│  ├─ extend-shallow@3.0.2
│  │  ├─ assign-symbols@^1.0.0
│  │  └─ is-extendable@^1.0.1
│  ├─ extglob@2.0.4
│  │  ├─ array-unique@^0.3.2
│  │  ├─ define-property@^1.0.0
│  │  ├─ define-property@1.0.0
│  │  │  └─ is-descriptor@^1.0.0
│  │  ├─ expand-brackets@^2.1.4
│  │  ├─ extend-shallow@^2.0.1
│  │  ├─ extend-shallow@2.0.1
│  │  │  └─ is-extendable@^0.1.0
│  │  ├─ fragment-cache@^0.2.1
│  │  ├─ is-extendable@0.1.1
│  │  ├─ regex-not@^1.0.0
│  │  ├─ snapdragon@^0.8.1
│  │  └─ to-regex@^3.0.1
│  ├─ fb-watchman@^2.0.0
│  ├─ fill-range@4.0.0
│  │  ├─ extend-shallow@^2.0.1
│  │  ├─ extend-shallow@2.0.1
│  │  │  └─ is-extendable@^0.1.0
│  │  ├─ is-extendable@0.1.1
│  │  ├─ is-number@^3.0.0
│  │  ├─ repeat-string@^1.6.1
│  │  └─ to-regex-range@^2.1.0
│  ├─ fsevents@^1.2.3
│  ├─ is-accessor-descriptor@0.1.6
│  │  ├─ kind-of@^3.0.2
│  │  └─ kind-of@3.2.2
│  │     └─ is-buffer@^1.1.5
│  ├─ is-data-descriptor@0.1.4
│  │  ├─ kind-of@^3.0.2
│  │  └─ kind-of@3.2.2
│  │     └─ is-buffer@^1.1.5
│  ├─ is-extendable@1.0.1
│  │  └─ is-plain-object@^2.0.4
│  ├─ kind-of@6.0.2
│  ├─ micromatch@^3.1.4
│  ├─ micromatch@3.1.10
│  │  ├─ arr-diff@^4.0.0
│  │  ├─ array-unique@^0.3.2
│  │  ├─ braces@^2.3.1
│  │  ├─ define-property@^2.0.2
│  │  ├─ extend-shallow@^3.0.2
│  │  ├─ extglob@^2.0.4
│  │  ├─ fragment-cache@^0.2.1
│  │  ├─ kind-of@^6.0.2
│  │  ├─ nanomatch@^1.2.9
│  │  ├─ object.pick@^1.3.0
│  │  ├─ regex-not@^1.0.0
│  │  ├─ snapdragon@^0.8.1
│  │  └─ to-regex@^3.0.2
│  ├─ minimist@^1.1.1
│  ├─ walker@~1.0.5
│  └─ watch@~0.18.0
├─ sax@1.2.4
├─ semver@5.5.1
├─ send@0.16.2
│  ├─ debug@2.6.9
│  ├─ depd@~1.1.2
│  ├─ destroy@~1.0.4
│  ├─ encodeurl@~1.0.2
│  ├─ escape-html@~1.0.3
│  ├─ etag@~1.8.1
│  ├─ fresh@0.5.2
│  ├─ http-errors@~1.6.2
│  ├─ mime@1.4.1
│  ├─ mime@1.4.1
│  ├─ ms@2.0.0
│  ├─ on-finished@~2.3.0
│  ├─ range-parser@~1.2.0
│  ├─ statuses@~1.4.0
│  └─ statuses@1.4.0
├─ serialize-error@2.1.0
├─ serve-static@1.13.2
│  ├─ encodeurl@~1.0.2
│  ├─ escape-html@~1.0.3
│  ├─ parseurl@~1.3.2
│  └─ send@0.16.2
├─ set-blocking@2.0.0
├─ set-value@2.0.0
│  ├─ extend-shallow@^2.0.1
│  ├─ is-extendable@^0.1.1
│  ├─ is-plain-object@^2.0.3
│  └─ split-string@^3.0.1
├─ setimmediate@1.0.5
├─ setprototypeof@1.1.0
├─ shebang-command@1.2.0
│  └─ shebang-regex@^1.0.0
├─ shebang-regex@1.0.0
├─ shell-quote@1.6.1
│  ├─ array-filter@~0.0.0
│  ├─ array-map@~0.0.0
│  ├─ array-reduce@~0.0.0
│  └─ jsonify@~0.0.0
├─ shellwords@0.1.1
├─ signal-exit@3.0.2
├─ simple-plist@0.2.1
│  ├─ base64-js@1.1.2
│  ├─ bplist-creator@0.0.7
│  ├─ bplist-parser@0.1.1
│  ├─ plist@2.0.1
│  ├─ plist@2.0.1
│  │  ├─ base64-js@1.1.2
│  │  ├─ xmlbuilder@8.2.2
│  │  └─ xmldom@0.1.x
│  └─ xmlbuilder@8.2.2
├─ sisteransi@0.1.1
├─ slash@1.0.0
├─ slide@1.1.6
├─ snapdragon-node@2.1.1
│  ├─ define-property@^1.0.0
│  ├─ define-property@1.0.0
│  │  └─ is-descriptor@^1.0.0
│  ├─ isobject@^3.0.0
│  └─ snapdragon-util@^3.0.1
├─ snapdragon-util@3.0.1
│  └─ kind-of@^3.2.0
├─ snapdragon@0.8.2
│  ├─ base@^0.11.1
│  ├─ debug@^2.2.0
│  ├─ define-property@^0.2.5
│  ├─ extend-shallow@^2.0.1
│  ├─ map-cache@^0.2.2
│  ├─ source-map-resolve@^0.5.0
│  ├─ source-map@^0.5.6
│  └─ use@^3.1.0
├─ source-map-resolve@0.5.2
│  ├─ atob@^2.1.1
│  ├─ decode-uri-component@^0.2.0
│  ├─ resolve-url@^0.2.1
│  ├─ source-map-url@^0.4.0
│  └─ urix@^0.1.0
├─ source-map-support@0.4.18
│  └─ source-map@^0.5.6
├─ source-map-url@0.4.0
├─ source-map@0.5.7
├─ spdx-correct@3.0.0
│  ├─ spdx-expression-parse@^3.0.0
│  └─ spdx-license-ids@^3.0.0
├─ spdx-exceptions@2.1.0
├─ spdx-expression-parse@3.0.0
│  ├─ spdx-exceptions@^2.1.0
│  └─ spdx-license-ids@^3.0.0
├─ spdx-license-ids@3.0.0
├─ split-string@3.1.0
│  ├─ extend-shallow@^3.0.0
│  ├─ extend-shallow@3.0.2
│  │  ├─ assign-symbols@^1.0.0
│  │  └─ is-extendable@^1.0.1
│  └─ is-extendable@1.0.1
│     └─ is-plain-object@^2.0.4
├─ sprintf-js@1.0.3
├─ sshpk@1.14.2
│  ├─ asn1@~0.2.3
│  ├─ assert-plus@^1.0.0
│  ├─ bcrypt-pbkdf@^1.0.0
│  ├─ dashdash@^1.12.0
│  ├─ ecc-jsbn@~0.1.1
│  ├─ getpass@^0.1.1
│  ├─ jsbn@~0.1.0
│  ├─ safer-buffer@^2.0.2
│  └─ tweetnacl@~0.14.0
├─ stack-utils@1.0.1
├─ stacktrace-parser@0.1.4
├─ static-extend@0.1.2
│  ├─ define-property@^0.2.5
│  └─ object-copy@^0.1.0
├─ statuses@1.3.1
├─ stealthy-require@1.1.1
├─ stream-buffers@2.2.0
├─ string_decoder@1.1.1
│  └─ safe-buffer@~5.1.0
├─ string-length@2.0.0
│  ├─ ansi-regex@3.0.0
│  ├─ astral-regex@^1.0.0
│  ├─ strip-ansi@^4.0.0
│  └─ strip-ansi@4.0.0
│     └─ ansi-regex@^3.0.0
├─ string-width@2.1.1
│  ├─ ansi-regex@3.0.0
│  ├─ is-fullwidth-code-point@^2.0.0
│  ├─ strip-ansi@^4.0.0
│  └─ strip-ansi@4.0.0
│     └─ ansi-regex@^3.0.0
├─ strip-ansi@3.0.1
│  └─ ansi-regex@^2.0.0
├─ strip-bom@3.0.0
├─ strip-eof@1.0.0
├─ strip-json-comments@2.0.1
├─ supports-color@5.5.0
│  └─ has-flag@^3.0.0
├─ symbol-tree@3.2.2
├─ tar@4.4.6
│  ├─ chownr@^1.0.1
│  ├─ fs-minipass@^1.2.5
│  ├─ minipass@^2.3.3
│  ├─ minizlib@^1.1.0
│  ├─ mkdirp@^0.5.0
│  ├─ safe-buffer@^5.1.2
│  └─ yallist@^3.0.2
├─ temp@0.8.3
│  ├─ os-tmpdir@^1.0.0
│  ├─ rimraf@~2.2.6
│  └─ rimraf@2.2.8
├─ test-exclude@4.2.1
│  ├─ arrify@^1.0.1
│  ├─ braces@2.3.2
│  │  ├─ arr-flatten@^1.1.0
│  │  ├─ array-unique@^0.3.2
│  │  ├─ extend-shallow@^2.0.1
│  │  ├─ extend-shallow@2.0.1
│  │  │  └─ is-extendable@^0.1.0
│  │  ├─ fill-range@^4.0.0
│  │  ├─ is-extendable@0.1.1
│  │  ├─ isobject@^3.0.1
│  │  ├─ repeat-element@^1.1.2
│  │  ├─ snapdragon-node@^2.0.1
│  │  ├─ snapdragon@^0.8.1
│  │  ├─ split-string@^3.0.2
│  │  └─ to-regex@^3.0.1
│  ├─ define-property@2.0.2
│  │  ├─ is-descriptor@^1.0.2
│  │  └─ isobject@^3.0.1
│  ├─ expand-brackets@2.1.4
│  │  ├─ debug@^2.3.3
│  │  ├─ define-property@^0.2.5
│  │  ├─ define-property@0.2.5
│  │  │  └─ is-descriptor@^0.1.0
│  │  ├─ extend-shallow@^2.0.1
│  │  ├─ extend-shallow@2.0.1
│  │  │  └─ is-extendable@^0.1.0
│  │  ├─ is-descriptor@0.1.6
│  │  │  ├─ is-accessor-descriptor@^0.1.6
│  │  │  ├─ is-data-descriptor@^0.1.4
│  │  │  └─ kind-of@^5.0.0
│  │  ├─ is-extendable@0.1.1
│  │  ├─ kind-of@5.1.0
│  │  ├─ posix-character-classes@^0.1.0
│  │  ├─ regex-not@^1.0.0
│  │  ├─ snapdragon@^0.8.1
│  │  └─ to-regex@^3.0.1
│  ├─ extend-shallow@3.0.2
│  │  ├─ assign-symbols@^1.0.0
│  │  └─ is-extendable@^1.0.1
│  ├─ extglob@2.0.4
│  │  ├─ array-unique@^0.3.2
│  │  ├─ define-property@^1.0.0
│  │  ├─ define-property@1.0.0
│  │  │  └─ is-descriptor@^1.0.0
│  │  ├─ expand-brackets@^2.1.4
│  │  ├─ extend-shallow@^2.0.1
│  │  ├─ extend-shallow@2.0.1
│  │  │  └─ is-extendable@^0.1.0
│  │  ├─ fragment-cache@^0.2.1
│  │  ├─ is-extendable@0.1.1
│  │  ├─ regex-not@^1.0.0
│  │  ├─ snapdragon@^0.8.1
│  │  └─ to-regex@^3.0.1
│  ├─ fill-range@4.0.0
│  │  ├─ extend-shallow@^2.0.1
│  │  ├─ extend-shallow@2.0.1
│  │  │  └─ is-extendable@^0.1.0
│  │  ├─ is-extendable@0.1.1
│  │  ├─ is-number@^3.0.0
│  │  ├─ repeat-string@^1.6.1
│  │  └─ to-regex-range@^2.1.0
│  ├─ find-up@1.1.2
│  │  ├─ path-exists@^2.0.0
│  │  └─ pinkie-promise@^2.0.0
│  ├─ is-accessor-descriptor@0.1.6
│  │  ├─ kind-of@^3.0.2
│  │  └─ kind-of@3.2.2
│  │     └─ is-buffer@^1.1.5
│  ├─ is-data-descriptor@0.1.4
│  │  ├─ kind-of@^3.0.2
│  │  └─ kind-of@3.2.2
│  │     └─ is-buffer@^1.1.5
│  ├─ is-extendable@1.0.1
│  │  └─ is-plain-object@^2.0.4
│  ├─ kind-of@6.0.2
│  ├─ load-json-file@1.1.0
│  │  ├─ graceful-fs@^4.1.2
│  │  ├─ parse-json@^2.2.0
│  │  ├─ pify@^2.0.0
│  │  ├─ pinkie-promise@^2.0.0
│  │  └─ strip-bom@^2.0.0
│  ├─ micromatch@^3.1.8
│  ├─ micromatch@3.1.10
│  │  ├─ arr-diff@^4.0.0
│  │  ├─ array-unique@^0.3.2
│  │  ├─ braces@^2.3.1
│  │  ├─ define-property@^2.0.2
│  │  ├─ extend-shallow@^3.0.2
│  │  ├─ extglob@^2.0.4
│  │  ├─ fragment-cache@^0.2.1
│  │  ├─ kind-of@^6.0.2
│  │  ├─ nanomatch@^1.2.9
│  │  ├─ object.pick@^1.3.0
│  │  ├─ regex-not@^1.0.0
│  │  ├─ snapdragon@^0.8.1
│  │  └─ to-regex@^3.0.2
│  ├─ object-assign@^4.1.0
│  ├─ path-exists@2.1.0
│  │  └─ pinkie-promise@^2.0.0
│  ├─ path-type@1.1.0
│  │  ├─ graceful-fs@^4.1.2
│  │  ├─ pify@^2.0.0
│  │  └─ pinkie-promise@^2.0.0
│  ├─ read-pkg-up@^1.0.1
│  ├─ read-pkg-up@1.0.1
│  │  ├─ find-up@^1.0.0
│  │  └─ read-pkg@^1.0.0
│  ├─ read-pkg@1.1.0
│  │  ├─ load-json-file@^1.0.0
│  │  ├─ normalize-package-data@^2.3.2
│  │  └─ path-type@^1.0.0
│  ├─ require-main-filename@^1.0.1
│  └─ strip-bom@2.0.0
│     └─ is-utf8@^0.2.0
├─ throat@4.1.0
├─ through@2.3.8
├─ through2@2.0.3
│  ├─ readable-stream@^2.1.5
│  └─ xtend@~4.0.1
├─ time-stamp@1.1.0
├─ tmp@0.0.33
│  └─ os-tmpdir@~1.0.2
├─ tmpl@1.0.4
├─ to-fast-properties@2.0.0
├─ to-object-path@0.3.0
│  └─ kind-of@^3.0.2
├─ to-regex-range@2.1.1
│  ├─ is-number@^3.0.0
│  └─ repeat-string@^1.6.1
├─ to-regex@3.0.2
│  ├─ define-property@^2.0.2
│  ├─ define-property@2.0.2
│  │  ├─ is-descriptor@^1.0.2
│  │  └─ isobject@^3.0.1
│  ├─ extend-shallow@^3.0.2
│  ├─ extend-shallow@3.0.2
│  │  ├─ assign-symbols@^1.0.0
│  │  └─ is-extendable@^1.0.1
│  ├─ is-extendable@1.0.1
│  │  └─ is-plain-object@^2.0.4
│  ├─ regex-not@^1.0.2
│  └─ safe-regex@^1.1.0
├─ tough-cookie@2.4.3
│  ├─ psl@^1.1.24
│  └─ punycode@^1.4.1
├─ tr46@1.0.1
│  ├─ punycode@^2.1.0
│  └─ punycode@2.1.1
├─ trim-right@1.0.1
├─ tunnel-agent@0.6.0
│  └─ safe-buffer@^5.0.1
├─ tweetnacl@0.14.5
├─ type-check@0.3.2
│  └─ prelude-ls@~1.1.2
├─ typedarray@0.0.6
├─ ua-parser-js@0.7.18
├─ uglify-es@3.3.9
│  ├─ commander@~2.13.0
│  ├─ commander@2.13.0
│  ├─ source-map@~0.6.1
│  └─ source-map@0.6.1
├─ uglify-js@2.8.29
│  ├─ camelcase@1.2.1
│  ├─ cliui@2.1.0
│  │  ├─ center-align@^0.1.1
│  │  ├─ right-align@^0.1.1
│  │  └─ wordwrap@0.0.2
│  ├─ source-map@~0.5.1
│  ├─ uglify-to-browserify@~1.0.0
│  ├─ wordwrap@0.0.2
│  ├─ yargs@~3.10.0
│  └─ yargs@3.10.0
│     ├─ camelcase@^1.0.2
│     ├─ cliui@^2.1.0
│     ├─ decamelize@^1.0.0
│     └─ window-size@0.1.0
├─ uglify-to-browserify@1.0.2
├─ ultron@1.0.2
├─ unicode-canonical-property-names-ecmascript@1.0.4
├─ unicode-match-property-ecmascript@1.0.4
│  ├─ unicode-canonical-property-names-ecmascript@^1.0.4
│  └─ unicode-property-aliases-ecmascript@^1.0.4
├─ unicode-match-property-value-ecmascript@1.0.2
├─ unicode-property-aliases-ecmascript@1.0.4
├─ union-value@1.0.0
│  ├─ arr-union@^3.1.0
│  ├─ get-value@^2.0.6
│  ├─ is-extendable@^0.1.1
│  ├─ set-value@^0.4.3
│  └─ set-value@0.4.3
│     ├─ extend-shallow@^2.0.1
│     ├─ is-extendable@^0.1.1
│     ├─ is-plain-object@^2.0.1
│     └─ to-object-path@^0.3.0
├─ unpipe@1.0.0
├─ unset-value@1.0.0
│  ├─ has-value@^0.3.1
│  ├─ has-value@0.3.1
│  │  ├─ get-value@^2.0.3
│  │  ├─ has-values@^0.1.4
│  │  ├─ isobject@^2.0.0
│  │  └─ isobject@2.1.0
│  │     └─ isarray@1.0.0
│  ├─ has-values@0.1.4
│  └─ isobject@^3.0.0
├─ urix@0.1.0
├─ use@3.1.1
├─ util-deprecate@1.0.2
├─ util.promisify@1.0.0
│  ├─ define-properties@^1.1.2
│  └─ object.getownpropertydescriptors@^2.0.3
├─ utils-merge@1.0.1
├─ uuid@3.0.1
├─ validate-npm-package-license@3.0.4
│  ├─ spdx-correct@^3.0.0
│  └─ spdx-expression-parse@^3.0.0
├─ vary@1.1.2
├─ verror@1.10.0
│  ├─ assert-plus@^1.0.0
│  ├─ core-util-is@1.0.2
│  ├─ extsprintf@^1.2.0
│  └─ extsprintf@1.4.0
├─ w3c-hr-time@1.0.1
│  └─ browser-process-hrtime@^0.1.2
├─ walker@1.0.7
│  └─ makeerror@1.0.x
├─ watch@0.18.0
│  ├─ exec-sh@^0.2.0
│  └─ minimist@^1.2.0
├─ webidl-conversions@4.0.2
├─ whatwg-encoding@1.0.4
│  ├─ iconv-lite@0.4.23
│  └─ iconv-lite@0.4.23
│     └─ safer-buffer@>= 2.1.2 < 3
├─ whatwg-fetch@2.0.4
├─ whatwg-mimetype@2.1.0
├─ whatwg-url@6.5.0
│  ├─ lodash.sortby@^4.7.0
│  ├─ tr46@^1.0.1
│  └─ webidl-conversions@^4.0.2
├─ which-module@2.0.0
├─ which@1.3.1
│  └─ isexe@^2.0.0
├─ wide-align@1.1.3
│  └─ string-width@^1.0.2 || 2
├─ window-size@0.1.0
├─ wordwrap@1.0.0
├─ wrap-ansi@2.1.0
│  ├─ is-fullwidth-code-point@1.0.0
│  │  └─ number-is-nan@^1.0.0
│  ├─ string-width@^1.0.1
│  ├─ string-width@1.0.2
│  │  ├─ code-point-at@^1.0.0
│  │  ├─ is-fullwidth-code-point@^1.0.0
│  │  └─ strip-ansi@^3.0.0
│  └─ strip-ansi@^3.0.1
├─ wrappy@1.0.2
├─ write-file-atomic@1.3.4
│  ├─ graceful-fs@^4.1.11
│  ├─ imurmurhash@^0.1.4
│  └─ slide@^1.1.5
├─ ws@1.1.5
│  ├─ options@>=0.0.5
│  └─ ultron@1.0.x
├─ xcode@0.9.3
│  ├─ pegjs@^0.10.0
│  ├─ simple-plist@^0.2.1
│  └─ uuid@3.0.1
├─ xml-name-validator@3.0.0
├─ xmlbuilder@9.0.7
├─ xmldoc@0.4.0
│  ├─ sax@~1.1.1
│  └─ sax@1.1.6
├─ xmldom@0.1.27
├─ xpipe@1.0.5
├─ xtend@4.0.1
├─ y18n@3.2.1
├─ yallist@3.0.2
├─ yargs-parser@9.0.2
│  └─ camelcase@^4.1.0
└─ yargs@11.1.0
   ├─ cliui@^4.0.0
   ├─ decamelize@^1.1.1
   ├─ find-up@^2.1.0
   ├─ get-caller-file@^1.0.1
   ├─ os-locale@^2.0.0
   ├─ require-directory@^2.1.1
   ├─ require-main-filename@^1.0.1
   ├─ set-blocking@^2.0.0
   ├─ string-width@^2.0.0
   ├─ which-module@^2.0.0
   ├─ y18n@^3.2.1
   └─ yargs-parser@^9.0.2
Done in 0.88s.

Based on the yarn list output, I think I'm getting babel-core@6 instead of 7. So I followed the directions on the Jest website to install babel-core and related for Babel 7.

Terminal
$ yarn add --dev babel-jest 'babel-core@^7.0.0-0' @babel/core regenerator-runtime
$ yarn test
yarn run v1.9.4
$ jest
 FAIL  __tests__/Button.test.js
  ● Test suite failed to run

    SyntaxError: /Users/jeremy/dev/rntest/node_modules/react-native/jest/mockComponent.js: Support for the experimental syntax 'classProperties' isn't currently enabled (20:24):

      18 | 
      19 |   const Component = class extends SuperClass {
    > 20 |     static displayName = 'Component';
         |                        ^
      21 | 
      22 |     render() {
      23 |       const name =

    Add @babel/plugin-proposal-class-properties (https://git.io/vb4SL) to the 'plugins' section of your Babel config to enable transformation.

      at Parser.raise (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:3913:15)
      at Parser.expectPlugin (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:5247:18)
      at Parser.parseClassProperty (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:8097:12)
      at Parser.pushClassProperty (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:8061:30)
      at Parser.parseClassMemberWithIsStatic (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:7994:14)
      at Parser.parseClassMember (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:7931:10)
      at Parser.parseClassBody (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:7886:12)
      at Parser.parseClass (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:7836:10)
      at Parser.parseExprAtom (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:6299:21)
      at Parser.parseExprSubscripts (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:5918:21)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        0.28s
Ran all test suites.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Further, but now I'm running into an issue which seems to point to missing babel transforms. So I add that npm module, update .babelrc and try again. Still no luck.

Terminal
$ yarn add @babel/plugin-proposal-class-properties
yarn add v1.9.4
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
success Saved lockfile.
success Saved 2 new dependencies.
info Direct dependencies
└─ @babel/plugin-proposal-class-properties@7.0.0-rc.3
info All dependencies
├─ @babel/plugin-proposal-class-properties@7.0.0-rc.3
└─ @babel/plugin-syntax-class-properties@7.0.0-rc.3
✨  Done in 4.17s.
$ vim .babelrc
$ cat .babelrc
{
  "plugins": ["@babel/plugin-proposal-class-properties"],
  "presets": ["module:metro-react-native-babel-preset"]
}
$ yarn test
yarn run v1.9.4
$ jest
 FAIL  __tests__/Button.test.js
  ● Test suite failed to run

    SyntaxError: /Users/jeremy/dev/rntest/node_modules/react-native/jest/mockComponent.js: Support for the experimental syntax 'classProperties' isn't currently enabled (20:24):

      18 | 
      19 |   const Component = class extends SuperClass {
    > 20 |     static displayName = 'Component';
         |                        ^
      21 | 
      22 |     render() {
      23 |       const name =

    Add @babel/plugin-proposal-class-properties (https://git.io/vb4SL) to the 'plugins' section of your Babel config to enable transformation.

      at Parser.raise (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:3913:15)
      at Parser.expectPlugin (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:5247:18)
      at Parser.parseClassProperty (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:8097:12)
      at Parser.pushClassProperty (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:8061:30)
      at Parser.parseClassMemberWithIsStatic (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:7994:14)
      at Parser.parseClassMember (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:7931:10)
      at Parser.parseClassBody (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:7886:12)
      at Parser.parseClass (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:7836:10)
      at Parser.parseExprAtom (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:6299:21)
      at Parser.parseExprSubscripts (node_modules/@babel/core/node_modules/@babel/parser/lib/index.js:5918:21)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        0.472s
Ran all test suites.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Maybe it's related to us using .babelrc instead of the new babel.config.js? Let's try that.

Terminal
$ mv .babelrc babel.config.js
$ vim babel.config.js
$ cat babel.config.js
module.exports = function(api) {
  api.cache(true);

  return {
    "plugins": ["@babel/plugin-proposal-class-properties"],
    "presets": ["module:metro-react-native-babel-preset"]
  }
}
$ yarn test 
yarn run v1.9.4
$ jest
 FAIL  __tests__/Button.test.js
  Button
    ✕ does stuff (6ms)

  ● Button › does stuff

    TypeError: Cannot read property 'bind' of undefined

       5 | 
       6 |     constructor() {
    >  7 |         this._binder = this._binder.bind(this);
         |                                     ^
       8 |     }
       9 | 
      10 |     _binder() {

      at new bind (__tests__/Button.test.js:7:37)
      at Object.<anonymous> (__tests__/Button.test.js:17:19)

Test Suites: 1 failed, 1 total
Tests:       1 failed, 1 total
Snapshots:   0 total
Time:        1.354s, estimated 2s
Ran all test suites.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
$ _ 

Ok, looks like I'm missing @babel/plugin-transform-classes. Let's add that:

Terminal
yarn add @babel/plugin-transform-classes                                                                  0 < 09:55:41
yarn add v1.9.4
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
success Saved lockfile.
success Saved 2 new dependencies.
info Direct dependencies
└─ @babel/plugin-transform-classes@7.0.0-rc.4
info All dependencies
├─ @babel/helper-define-map@7.0.0-rc.4
└─ @babel/plugin-transform-classes@7.0.0-rc.4
✨  Done in 5.22s.
$ vim babel.config.js
$ cat babel.config.js
module.exports = function(api) {
  api.cache(true);

  return {
    "plugins": ["@babel/plugin-transform-classes", "@babel/plugin-proposal-class-properties"],
    "presets": ["module:metro-react-native-babel-preset"]
  }
}
$ yarn test
yarn run v1.9.4
$ jest
 FAIL  __tests__/Button.test.js
  Button
    ✕ does stuff (6ms)

  ● Button › does stuff

    TypeError: Cannot read property 'bind' of undefined

       5 | 
       6 |     constructor() {
    >  7 |         this._binder = this._binder.bind(this);
         |                                     ^
       8 |     }
       9 | 
      10 |     _binder() {

      at new bind (__tests__/Button.test.js:7:37)
      at Object.<anonymous> (__tests__/Button.test.js:17:19)

Test Suites: 1 failed, 1 total
Tests:       1 failed, 1 total
Snapshots:   0 total
Time:        0.532s, estimated 2s
Ran all test suites.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

It looks like babel isn't picking up that new plugin when I run jest. 😕

Ok, found this comment and that's the solution (item number 3!).

Let's add the transform!

Terminal ```sh $ vim package.json $ cat package.json { "name": "rntest", "version": "0.0.1", "private": true, "scripts": { "start": "node node_modules/react-native/local-cli/cli.js start", "test": "jest" }, "dependencies": { "react": "16.4.1", "react-native": "0.57.0-rc.3" }, "devDependencies": { "@babel/core": "^7.0.0-rc.3", "babel-core": "^7.0.0-0", "babel-jest": "^23.4.2", "jest": "23.5.0", "metro-react-native-babel-preset": "^0.43.5", "react-test-renderer": "16.4.1", "regenerator-runtime": "^0.12.1" }, "jest": { "preset": "react-native", "transform": { "^.+\\.js$": "/node_modules/react-native/jest/preprocessor.js" } } } $ yarn test yarn run v1.9.4 $ jest PASS __tests__/Button.test.js Button ✓ does stuff (1ms)

Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 3.462s
Ran all test suites.
✨ Done in 5.62s.

</details>

I thought unit testing features were (should be?) supported out of the box.  Would this be something that could make the 0.57 release if I submitted a PR to patch the Hello World template?

## Reproducible Demo

Video: https://asciinema.org/a/qcNt2tKSZfWkxGKchZ53gLkNd
Repo: /~https://github.com/jeremywiebe/rn-0.57-rc.3-tests

This seems related to /~https://github.com/facebook/react-native/issues/20327. 
@jeremywiebe
Copy link
Author

Ok, so it seems like #3 in this comment fixes this.

I wonder if this should be the way the new project template is set so that folks have a functional jest setup out of the box.

I've updated my demo repo.

@kelset
Copy link
Contributor

kelset commented Aug 28, 2018

Closing this since, as you mentioned, it's a duplicate. That said, we discussed a little bit about "how/if" to have a functional jest support here.

Moreover, there is actually one PR that may fix the issue.

@kelset kelset closed this as completed Aug 28, 2018
@deejayxd07
Copy link

I can still experience this on react-native@0.57

@cbrwizard
Copy link

As @jeremywiebe said, just add

"transform": {
   "^.+\\.js$": "<RELATIVE_PATH>/preprocessor.js"
}

to your package.json's "jest" key

@janhesters
Copy link

I'm facing the same error with typescript:

Here are my devDependencies in package.json:

"devDependencies": {
    "@types/jest": "23.3.2",
    "@types/react": "16.4.14",
    "@types/react-native": "0.56.18",
    "@types/react-native-orientation": "^5.0.1",
    "@types/react-test-renderer": "16.0.2",
    "babel-eslint": "^9.0.0",
    "babel-jest": "23.6.0",
    "enzyme": "^3.6.0",
    "enzyme-adapter-react-16": "^1.5.0",
    "eslint": "^5.6.0",
    "eslint-plugin-react": "^7.11.1",
    "jest": "23.6.0",
    "jest-fetch-mock": "^1.6.6",
    "metro-react-native-babel-preset": "0.45.3",
    "prop-types": "^15.6.2",
    "react-dom": "^16.5.0",
    "react-test-renderer": "16.5.0",
    "ts-jest": "^23.1.4",
    "typescript": "3.0.3"
  },
  "jest": {
    "preset": "react-native",
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js"
    ],
    "transform": {
      "^.+\\.(js)$": "<rootDir>/node_modules/babel-jest",
      "\\.(ts|tsx)$": "<rootDir>/node_modules/ts-jest/preprocessor.js"
    },
    "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
    "testPathIgnorePatterns": [
      "\\.snap$",
      "<rootDir>/node_modules/"
    ],
    "cacheDirectory": ".jest/cache",
    "setupFiles": [
      "./tests/setup.js"
    ]
  }

@janhesters
Copy link

Update:
If you integrate test with Jest and Enzyme in the new React Version 0.57 and typescript out of the box, they won't work.

Here are the steps to reproduce.

Create a new react native project:
react-native init MyApp -package "com.my.app" --template typescript && node MyApp/setup.js

Install all Jest and Enzyne related packages:
npm install --save-dev react-dom enzyme enzyme-react-adapter-16 jest-fetch-mock ts-jest

Add the jest configuration to package.json:

"jest": {
  "preset": "react-native",
  "moduleFileExtensions": [
    "ts",
    "tsx",
    "js"
  ],
  "transform": {
    "^.+\\.(js)$": "<rootDir>/node_modules/babel-jest",
    "\\.(ts|tsx)$": "<rootDir>/node_modules/ts-jest/preprocessor.js"
  },
  "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
  "testPathIgnorePatterns": [
    "\\.snap$",
    "<rootDir>/node_modules/"
  ],
  "cacheDirectory": ".jest/cache",
  "setupFiles": [
    "./tests/setup.js"
  ]
}

Add a file tests/setup.js and include the following configuration:

import Enzyme from "enzyme";
import Adapter from "enzyme-adapter-react-16";
import { NativeModules } from "react-native";

global.fetch = require("jest-fetch-mock"); // eslint-disable-line no-undef
jest.mock("react-native-config");
Enzyme.configure({ adapter: new Adapter() });

Last but not least add a basic test (App.test.tsx) to check if Jest and Enzyme work:

import React from "react";
import { shallow } from "enzyme";
import { View } from "react-native";
import App from "./App";

const createTestProps = props => ({
  ...props
});

describe("App", () => {
  describe("rendering", () => {
    let wrapper;
    let props;
    beforeEach(() => {
      props = createTestProps({});
      wrapper = shallow(<App {...props} />);
    });

    it("should render a <View />", () => {
      expect(wrapper.find(View)).toHaveLength(1);
    });
  });
});

If you now try to run the test, the error message you get is:

FAIL  app/App.test.tsx
  ● Test suite failed to run

    Couldn't find preset "module:metro-react-native-babel-preset" relative to directory "<Directory>"

@drberg
Copy link

drberg commented Sep 16, 2018

I'm experiencing the exact same problem.

@hashamhabib
Copy link

Facing the same issue.

@facebook facebook locked as spam and limited conversation to collaborators Sep 17, 2018
@facebook facebook unlocked this conversation Sep 18, 2018
@kelset kelset added the 🔩Test Infrastructure Test infrastructure and continuous integration. label Sep 18, 2018
@jpdriver
Copy link
Contributor

Below are minimal package.jsons to make yarn test work for both TS and JS after running react-native init.

These are based on manually copying the __tests__ directory from the HelloWorld template; which for some reason isn't being copied over correctly for new projects.

JS

// package.json

{
  "name": "JavaScriptApp",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "react": "16.5.0",
    "react-native": "0.57.0"
  },
  "devDependencies": {
    "babel-jest": "23.6.0",
    "jest": "23.6.0",
    "metro-react-native-babel-preset": "0.45.3",
    "react-test-renderer": "16.5.0"
  },
  "jest": {
    "preset": "react-native",
    "transform": {
      "^.+\\.(js)$": "<rootDir>/node_modules/react-native/jest/preprocessor.js"
    }
  }
}

image


TS

// package.json

{
  "name": "TypeScriptApp",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "react": "16.5.0",
    "react-native": "0.57.0"
  },
  "devDependencies": {
    "babel-jest": "23.6.0",
    "jest": "23.6.0",
    "metro-react-native-babel-preset": "0.45.3",
    "react-test-renderer": "16.5.0",
    "ts-jest": "^23.1.4",
    "typescript": "^3.0.3"
  },
  "jest": {
    "preset": "react-native",
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js",
      "jsx",
      "json"
    ],
    "transform": {
      "^.+\\.(js)$": "<rootDir>/node_modules/react-native/jest/preprocessor.js",
      "\\.(ts|ts)x?$": "ts-jest"
    },
    "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(js|ts)x?$",
    "globals": {
      "ts-jest": {
        "useBabelrc": true
      }
    }
  }
}

image

⚠️ you need to change import React from 'react' to import * as React from 'react' for the .tsx version

@maximevaillancourt
Copy link

maximevaillancourt commented Sep 18, 2018

As mentioned in facebook/metro#242 (comment), the solution presented above (i.e. using Jest's preprocessor in the transform property) works to an extent, but doesn't seem to play well with Jest manual mocks. It's as though the jest.mock() calls are completely ignored.

In other words, tests involving manual mocks that previously succeeded do not anymore. Here's an example:

FAIL  ./App.test.js
  ● Test suite failed to run

    TypeError: Cannot read property 'language' of undefined

    > 1 | import RNLanguages from 'react-native-languages';
        |                                                                                          ^
      2 | import i18n from 'i18n-js';
      3 | 
      4 | import frCA from './locales/fr-CA.json';

      at Object.<anonymous> (node_modules/react-native-languages/index.js:27:28)
      at Object.<anonymous> (src/i18n.js:1:191)
      at Object.<anonymous> (src/screens/Home.js:4:48)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        0.966s
Ran all test suites.

The above happens even though the manual mock defines the language property:

jest.mock('react-native-languages', () => {
  return {
     language: 'en-US',
     addEventListener: jest.fn(),
  };
});

Anyone else seeing this behavior when Jest manual mocks are involved?

@manosim
Copy link
Contributor

manosim commented Sep 18, 2018

Yes @maximevaillancourt - we are having the same issue. If we use the jest preprocessor from RN, the tests "run" but jest.mock() does not work at all so all snapshots etc are failing.

Related issue on the "metro" repository: facebook/metro#242 (comment)

@btav
Copy link

btav commented Sep 18, 2018

We were running into the following Jest/Babel issue after upgrading to 0.57.0.

 ● Test suite failed to run

    Cannot find module '@babel/plugin-transform-block-scoping'

      at Object.process (node_modules/react-native/jest/preprocessor.js:65:10)

But we fixed it by using the package versions specified in @jpdriver's post. 👍

  "devDependencies": {
    "@babel/core": "7.1.0",
    "babel-core": "7.0.0-bridge.0",
    "babel-jest": "^23.6.0",
    "metro-react-native-babel-preset": "^0.45.3",
    "react-test-renderer": "16.5.1",
    "jest": "23.6.0"
}

@joh-klein
Copy link

@manosim or @maximevaillancourt Did you find a solution/workaround for the jest.mock() problem?

@manosim
Copy link
Contributor

manosim commented Sep 20, 2018

No nothing yet unfortunately - I feel like that might be an issue with metro bundler. Hopefully one of the maintainers/contributors will point us to the right direction 😃 Will let you know if I figure it out!

@hanford
Copy link

hanford commented Sep 20, 2018

@joh-klein if you find a solution can you please update this thread? I've spent a few hours searching and no luck :/

@hanford
Copy link

hanford commented Sep 28, 2018

I finally resolved this issue by bringing in https://www.npmjs.com/package/babel-plugin-jest-hoist to my project.

My dependencies:

    "react": "16.5.1",
    "react-native": "^0.57.1",
.. 
    "@babel/core": "^7.1.0",
    "@babel/runtime": "^7.0.0",
    "babel-core": "^6.26.3",
    "babel-eslint": "^8.1.1",
    "babel-jest": "^23.6.0",
    "babel-plugin-jest-hoist": "^23.2.0",
    "babel-plugin-relay": "^1.5.0",
    "jest": "^23.6.0",
    "metro-react-native-babel-preset": "^0.47.0",

and my babel.config.js:

module.exports = {
  "presets": ["module:metro-react-native-babel-preset", "module:react-native-dotenv"],
  "plugins": [
    "relay",
    "jest-hoist"
  ]
}

@joh-klein
Copy link

joh-klein commented Sep 28, 2018

This is strange … I thought it worked, but then I tried removing some of the dependencies you posted, just to make sure, and it somehow never stoped NOT working – even after I removed babel-plugin-jest-hoist. After that, I found out, that there is such a thing as a cache for jest AND that one should delete it, to make sure these things actually work: npx jest --clearCache.
After that, I am very sad to report that it still doesn't work for me. Does it still work for you, even after you cleared the jest cache? What does your jest config look like?

CORRECTION: it does work, sorry!

What I do now, to make sure, it works:

npx jest --clearCache && watchman watch-del-all && rm -rf node_modules && rm -rf $TMPDIR/metro-* && rm -rf $TMPDIR/haste-* && rm -rf $TMPDIR/react-* && yarn

@rcidt
Copy link

rcidt commented Sep 28, 2018

My tests are also failing because the jest.mock declarations are being ignored.

I tried what @hanford suggested, but still no luck.

I have also made sure to clear any stale data like @joh-klein

@manosim have you found a solution yet?

I'm running RN 0.57.0

package.json

...
"devDependencies": {
    "@babel/core": "7.1.0",
    "@babel/runtime": "7.1.1",
    "babel-jest": "23.6.0",
    "babel-plugin-jest-hoist": "23.2.0",
    "metro-react-native-babel-preset": "0.47.0",
    "jest": "23.6.0",
    "jest-cli": "23.6.0"
}
...

.babelrc

{
    "presets": ["module:metro-react-native-babel-preset"],
    "plugins": ["jest-hoist"]
}

@rcidt
Copy link

rcidt commented Sep 28, 2018

Ok, I got it working now by following the steps found here: https://jestjs.io/docs/en/getting-started#using-babel

I also had to update to RN 0.57.1 but now I am getting a bunch of errors with enzyme

@hanford
Copy link

hanford commented Sep 28, 2018

@rcidt are you using any type of CI? My tests are now all passing locally fail when running on CI 🙇‍♂️

@rcidt
Copy link

rcidt commented Sep 28, 2018

@hanford Yes we use a CI but I haven't pushed up my code yet. Check the node versions

@janhesters
Copy link

janhesters commented Sep 28, 2018

I solved this days ago. Unfortunately this thread was locked days ago and just got unlocked, which is why I'm only now posting the answer.

I wrote a Medium tutorial on the settings that you need to solve this. Just skip to the step two.

jest.mock() works with these settings, too. I hope this helps.

EDIT: Wow apparently jest.mock() also does not work. I tried doing what @hanford suggested and added "babel-plugin-jest-hoist": "^23.2.0",, but it didn't help.

@i6mi6
Copy link

i6mi6 commented Sep 30, 2018

For me the problem was what was added to .babelrc after the upgrade to 0.57. The file looks like this now:

{
  "env": {
    "development": {
      "presets": [
        "module:metro-react-native-babel-preset",
        "module:react-native-dotenv"
      ],
      "plugins": ["jest-hoist"]
    },
    "production": {
      "presets": [
        "module:metro-react-native-babel-preset",
        "module:react-native-dotenv"
      ],
      "plugins": ["jest-hoist"]
    },
    "test": {
      "presets": [
        "react-native",
        "babel-preset-react-native-stage-0/decorator-support",
        "react-native-dotenv"
      ]
    }
  }
}

and the package.json test command looks like this "test": "NODE_ENV=testing BABEL_ENV=test jest". Also, I got rid of "transform" property under "jest"

@tiaaaa123
Copy link

tiaaaa123 commented Oct 3, 2018

I sees lot of solutions that says to add the transform to the jest config. The huge problem with that is the jest.mock stop working afterward.

Without the transform (Before Babel 7 and RN 0.56), mocking a module like that would work fine.

import dumbClient from '../../dumbClient'

jest.mock('../../dumbClient');

  it('is a test', () => {
    dumbClient.testFunction.mockImplementation(() => true)

    const response = dumbClient.testFunction();

    expect(response).toBeTruthy()
});

However, with the transform it fails because testFunction.mockImplementation is not defined. The mock as it should work stopped working.

What would be the other possibility?

@wonderjar
Copy link

@jpdriver Saved me. Thx~

@ferdicus
Copy link
Contributor

@jpdriver tests are kinda weak-sauce.
No mocks no complex setup.
That will work for basic snapshot tests but not for more complex unit tests with jest.fn() mocks and spies.

@samcampisi
Copy link

After doing the following:

  • Using the exact same versions as @hanford
  • doing rm -rf node_modules && npm i
  • renaming my .babelrc to babel.config.js (and putting module.exports = at the beginning)
  • and NOT removing the transform bit under jest in my package.json

My mocks came back to life

@facebook facebook locked as resolved and limited conversation to collaborators Aug 28, 2019
@react-native-bot react-native-bot added the Resolution: Locked This issue was locked by the bot. label Aug 28, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Resolution: Locked This issue was locked by the bot. 🔩Test Infrastructure Test infrastructure and continuous integration.
Projects
None yet
Development

No branches or pull requests