facebook / react-native

A framework for building native applications using React
https://reactnative.dev
MIT License
119.26k stars 24.35k forks source link

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

Closed jeremywiebe closed 6 years ago

jeremywiebe commented 6 years ago

UPDATE: This might be a duplicate of https://github.com/facebook/react-native/issues/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` ```sh $ 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 ```sh $ 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 ```sh $ 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 ```sh $ 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. (__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 ```sh 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. (__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. ```

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 commented 6 years ago

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 commented 6 years ago

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.

deejayxd07 commented 6 years ago

I can still experience this on react-native@0.57

cbrwizard commented 6 years ago

As @jeremywiebe said, just add

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

to your package.json's "jest" key

janhesters commented 6 years ago

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 commented 6 years ago

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 commented 6 years ago

I'm experiencing the exact same problem.

hashamhabib commented 6 years ago

Facing the same issue.

jpdriver commented 6 years ago

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 commented 6 years ago

As mentioned in https://github.com/facebook/metro/issues/242#issuecomment-422050382, 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 commented 6 years ago

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: https://github.com/facebook/metro/issues/242#issuecomment-422050382

btav commented 6 years ago

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 commented 6 years ago

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

manosim commented 6 years ago

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 commented 6 years ago

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

hanford commented 6 years ago

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 commented 6 years ago

~~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 commented 6 years ago

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 commented 6 years ago

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 commented 6 years ago

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

rcidt commented 6 years ago

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

janhesters commented 6 years ago

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 commented 6 years ago

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 commented 6 years ago

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 commented 6 years ago

@jpdriver Saved me. Thx~

ferdicus commented 6 years ago

@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 commented 5 years ago

After doing the following:

My mocks came back to life