├── .eslintrc ├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── android ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ └── com │ └── wix │ └── rnnewrelic │ ├── RNNewRelic.java │ ├── RNNewRelicPackage.java │ └── RNUtils.java ├── index.js ├── ios ├── RNNewRelic.xcodeproj │ └── project.pbxproj └── RNNewRelic │ ├── RNNewRelic.h │ └── RNNewRelic.m ├── lib └── NewRelic.js ├── package.json ├── scripts └── JasmineUnitRunner.js ├── src └── NewRelic.js ├── test └── NewRelic.spec.js ├── wallaby.js └── yarn.lock /.eslintrc: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "parser": "babel-eslint", 4 | "env": { 5 | "es6": true, 6 | "node": true 7 | }, 8 | "parserOptions": { 9 | "ecmaVersion": 7, 10 | "sourceType": "module", 11 | "ecmaFeatures": { 12 | "impliedStrict": true, 13 | "jsx": true, 14 | "experimentalObjectRestSpread": true 15 | } 16 | }, 17 | "plugins": [ 18 | "react", 19 | "react-native", 20 | "babel" 21 | ], 22 | "rules": { 23 | /* 24 | * possible errors 25 | */ 26 | "comma-dangle": "error", 27 | "no-cond-assign": [ 28 | "error", 29 | "except-parens" 30 | ], 31 | "no-console": 0, 32 | "no-constant-condition": "error", 33 | "no-control-regex": "error", 34 | "no-debugger": "warn", 35 | "no-dupe-args": "error", 36 | "no-dupe-keys": "error", 37 | "no-duplicate-case": "error", 38 | "no-empty": "error", 39 | "no-empty-character-class": "error", 40 | "no-ex-assign": "error", 41 | "no-extra-boolean-cast": "error", 42 | "no-extra-parens": 0, 43 | "no-extra-semi": "error", 44 | "no-func-assign": "error", 45 | "no-inner-declarations": "error", 46 | "no-invalid-regexp": "error", 47 | "no-irregular-whitespace": "error", 48 | "no-negated-in-lhs": "error", 49 | "no-obj-calls": "error", 50 | "no-regex-spaces": "error", 51 | "no-sparse-arrays": "error", 52 | "no-unexpected-multiline": "error", 53 | "no-unreachable": "error", 54 | "use-isnan": "error", 55 | "valid-jsdoc": 0, 56 | "valid-typeof": "error", 57 | /* 58 | * best practices 59 | */ 60 | "accessor-pairs": "warn", 61 | "array-callback-return": 0, 62 | "block-scoped-var": "error", 63 | "complexity": 0, 64 | "consistent-return": "error", 65 | "curly": [ 66 | "error", 67 | "all" 68 | ], 69 | "default-case": "error", 70 | "dot-location": [ 71 | "error", 72 | "property" 73 | ], 74 | "dot-notation": "error", 75 | "eqeqeq": "error", 76 | "guard-for-in": "error", 77 | "no-alert": "error", 78 | "no-caller": "error", 79 | "no-case-declarations": "error", 80 | "no-div-regex": 0, 81 | "no-else-return": 0, 82 | "no-empty-function": "error", 83 | "no-empty-pattern": "error", 84 | "no-eq-null": "error", 85 | "no-eval": "error", 86 | "no-extend-native": "error", 87 | "no-extra-bind": "error", 88 | "no-extra-label": "error", 89 | "no-fallthrough": "error", 90 | "no-floating-decimal": "error", 91 | "no-implicit-coercion": "error", 92 | "no-implicit-globals": 0, 93 | "no-implied-eval": "error", 94 | "no-invalid-this": 0, 95 | "no-iterator": "error", 96 | "no-labels": "error", 97 | "no-lone-blocks": "error", 98 | "no-loop-func": "error", 99 | "no-magic-numbers": 0, 100 | "no-multi-spaces": "error", 101 | "no-multi-str": 0, 102 | "no-native-reassign": "error", 103 | "no-new": "error", 104 | "no-new-func": "error", 105 | "no-new-wrappers": "error", 106 | "no-octal": "error", 107 | "no-octal-escape": "error", 108 | "no-param-reassign": 0, 109 | "no-proto": "error", 110 | "no-redeclare": 0, 111 | "no-return-assign": "error", 112 | "no-script-url": "error", 113 | "no-self-assign": "error", 114 | "no-self-compare": "error", 115 | "no-sequences": "error", 116 | "no-throw-literal": "error", 117 | "no-unmodified-loop-condition": 0, 118 | "no-unused-expressions": "error", 119 | "no-unused-labels": 0, 120 | "no-useless-call": "error", 121 | "no-useless-concat": "error", 122 | "no-void": "error", 123 | "no-warning-comments": 0, 124 | "no-with": "error", 125 | "radix": 0, 126 | "vars-on-top": 0, 127 | "wrap-iife": "error", 128 | "yoda": 0, 129 | "strict": [ 130 | "error", 131 | "never" 132 | ], 133 | /* 134 | * variables 135 | */ 136 | "init-declarations": 0, 137 | "no-catch-shadow": "error", 138 | "no-delete-var": "error", 139 | "no-label-var": "error", 140 | "no-restricted-globals": "error", 141 | "no-shadow": "error", 142 | "no-shadow-restricted-names": "error", 143 | "no-undef": 0, 144 | "no-undef-init": "error", 145 | "no-undefined": 0, 146 | "no-unused-vars": 0, 147 | "no-use-before-define": 0, 148 | /* 149 | * Node.js 150 | */ 151 | "callback-return": 0, 152 | "global-require": 0, 153 | "handle-callback-err": 0, 154 | "no-mixed-requires": "error", 155 | "no-new-require": "error", 156 | "no-path-concat": "error", 157 | "no-process-env": 0, 158 | "no-process-exit": "error", 159 | "no-restricted-modules": 0, 160 | "no-sync": 0, 161 | /* 162 | * style 163 | */ 164 | "array-bracket-spacing": [ 165 | "error", 166 | "never" 167 | ], 168 | "block-spacing": "error", 169 | "brace-style": [ 170 | "error", 171 | "1tbs" 172 | ], 173 | "camelcase": [ 174 | "error", 175 | { 176 | "properties": "never" 177 | } 178 | ], 179 | "comma-spacing": [ 180 | "error", 181 | { 182 | "before": false, 183 | "after": true 184 | } 185 | ], 186 | "comma-style": [ 187 | "error", 188 | "last" 189 | ], 190 | "computed-property-spacing": [ 191 | "error", 192 | "never" 193 | ], 194 | "consistent-this": [ 195 | "error", 196 | "self" 197 | ], 198 | "eol-last": [ 199 | "error", 200 | "unix" 201 | ], 202 | "func-names": 0, 203 | "func-style": 0, 204 | "id-blacklist": 0, 205 | "id-length": 0, 206 | "id-match": 0, 207 | "indent": [ 208 | "error", 209 | 2, 210 | { 211 | "SwitchCase": 1 212 | } 213 | ], 214 | "jsx-quotes": "error", 215 | "key-spacing": [ 216 | "error", 217 | { 218 | "singleLine": { 219 | "beforeColon": false, 220 | "afterColon": true, 221 | "mode": "strict" 222 | }, 223 | "multiLine": { 224 | "beforeColon": false, 225 | "afterColon": true, 226 | "mode": "strict" 227 | } 228 | } 229 | ], 230 | "keyword-spacing": [ 231 | "error", 232 | { 233 | "before": true, 234 | "after": true 235 | } 236 | ], 237 | "linebreak-style": [ 238 | "error", 239 | "unix" 240 | ], 241 | "lines-around-comment": 0, 242 | "max-depth": [ 243 | "error", 244 | 4 245 | ], 246 | "max-len": [ 247 | "warn", 248 | 150 249 | ], 250 | "max-nested-callbacks": [ 251 | "error", 252 | 4 253 | ], 254 | "max-params": [ 255 | "error", 256 | 6 257 | ], 258 | "max-statements": [ 259 | "error", 260 | 15, 261 | { 262 | "ignoreTopLevelFunctions": true 263 | } 264 | ], 265 | "new-cap": [ 266 | "error", 267 | { 268 | "capIsNewExceptions": [ 269 | "Immutable" 270 | ] 271 | } 272 | ], 273 | "new-parens": "error", 274 | "newline-after-var": 0, 275 | "newline-before-return": 0, 276 | "newline-per-chained-call": 0, 277 | "no-array-constructor": "error", 278 | "no-bitwise": 0, 279 | "no-continue": 0, 280 | "no-inline-comments": 0, 281 | "no-lonely-if": "error", 282 | "no-mixed-spaces-and-tabs": 0, 283 | "no-multiple-empty-lines": [ 284 | "error", 285 | { 286 | "max": 1 287 | } 288 | ], 289 | "no-negated-condition": 0, 290 | "no-nested-ternary": "error", 291 | "no-new-object": "error", 292 | "no-plusplus": 0, 293 | "no-restricted-syntax": 0, 294 | "no-spaced-func": "error", 295 | "no-ternary": 0, 296 | "no-trailing-spaces": [ 297 | "error", 298 | { 299 | "skipBlankLines": true 300 | } 301 | ], 302 | "no-underscore-dangle": 0, 303 | "no-unneeded-ternary": "error", 304 | "no-whitespace-before-property": "error", 305 | "object-curly-spacing": [ 306 | "error", 307 | "never" 308 | ], 309 | "one-var": 0, 310 | "one-var-declaration-per-line": 0, 311 | "operator-assignment": 0, 312 | "operator-linebreak": [ 313 | "error", 314 | "before" 315 | ], 316 | "padded-blocks": [ 317 | "error", 318 | "never" 319 | ], 320 | "quote-props": [ 321 | "error", 322 | "consistent-as-needed" 323 | ], 324 | "quotes": 0, 325 | "require-jsdoc": 0, 326 | "semi": [ 327 | "error", 328 | "always" 329 | ], 330 | "semi-spacing": [ 331 | "error", 332 | { 333 | "before": false, 334 | "after": true 335 | } 336 | ], 337 | "sort-imports": 0, 338 | "sort-vars": 0, 339 | "space-before-blocks": [ 340 | "error", 341 | "always" 342 | ], 343 | "space-before-function-paren": [ 344 | "error", 345 | "never" 346 | ], 347 | "space-in-parens": [ 348 | "error", 349 | "never" 350 | ], 351 | "space-infix-ops": "error", 352 | "space-unary-ops": "error", 353 | "spaced-comment": 0, 354 | "wrap-regex": "error", 355 | /* 356 | * ECMAScript 6 357 | */ 358 | "arrow-body-style": 0, 359 | "arrow-parens": 0, 360 | "arrow-spacing": [ 361 | "error", 362 | { 363 | "before": true, 364 | "after": true 365 | } 366 | ], 367 | "constructor-super": "error", 368 | "generator-star-spacing": 0, 369 | "no-class-assign": "error", 370 | "no-confusing-arrow": "error", 371 | "no-const-assign": "error", 372 | "no-dupe-class-members": "error", 373 | "no-new-symbol": "error", 374 | "no-restricted-imports": 0, 375 | "no-this-before-super": "error", 376 | "no-useless-constructor": 0, 377 | "no-var": "error", 378 | "object-shorthand": 0, 379 | "prefer-arrow-callback": 0, 380 | "prefer-const": "error", 381 | "prefer-reflect": 0, 382 | "prefer-rest-params": 0, 383 | "prefer-spread": "error", 384 | "prefer-template": 0, 385 | "require-yield": 0, 386 | "template-curly-spacing": [ 387 | "error", 388 | "never" 389 | ], 390 | "yield-star-spacing": [ 391 | "error", 392 | "after" 393 | ], 394 | /* 395 | * react plugin 396 | */ 397 | "react/display-name": 0, 398 | "react/forbid-prop-types": [ 399 | "error", 400 | { 401 | "forbid": [ 402 | "any" 403 | ] 404 | } 405 | ], 406 | "react/no-danger": "error", 407 | "react/no-deprecated": "error", 408 | "react/no-direct-mutation-state": "error", 409 | "react/no-is-mounted": "error", 410 | "react/no-multi-comp": "error", 411 | "react/no-set-state": 0, 412 | "react/no-string-refs": 0, 413 | "react/no-unknown-property": 0, 414 | "react/prefer-es6-class": [ 415 | "error", 416 | "always" 417 | ], 418 | "react/prefer-stateless-function": 0, 419 | "react/prop-types": "error", 420 | "react/react-in-jsx-scope": "error", 421 | "react/require-extension": 0, 422 | "react/self-closing-comp": "error", 423 | "react/sort-comp": [ 424 | "error", 425 | { 426 | "order": [ 427 | "static-methods", 428 | "lifecycle", 429 | "/^on.+$/", 430 | "/^(get|set)(?!(InitialState$|DefaultProps$|ChildContext$)).+$/", 431 | "everything-else", 432 | "/^render.+$/", 433 | "render" 434 | ] 435 | } 436 | ], 437 | "react/sort-prop-types": 0, 438 | "react/jsx-boolean-value": [ 439 | "error", 440 | "always" 441 | ], 442 | "react/jsx-closing-bracket-location": "error", 443 | "react/jsx-curly-spacing": [ 444 | "error", 445 | "never" 446 | ], 447 | "react/jsx-equals-spacing": [ 448 | "error", 449 | "never" 450 | ], 451 | "react/jsx-handler-names": [ 452 | "error", 453 | { 454 | "eventHandlerPropPrefix": "handle" 455 | } 456 | ], 457 | "react/jsx-indent-props": [ 458 | 0, 459 | 2 460 | ], 461 | "react/jsx-indent": [ 462 | "error", 463 | 2 464 | ], 465 | "react/jsx-key": "error", 466 | "react/jsx-max-props-per-line": [ 467 | "error", 468 | { 469 | "maximum": 2 470 | } 471 | ], 472 | "react/jsx-no-bind": 0, 473 | "react/jsx-no-duplicate-props": [ 474 | "error", 475 | { 476 | "ignoreCase": true 477 | } 478 | ], 479 | "react/jsx-no-literals": "error", 480 | "react/jsx-no-undef": "error", 481 | "react/jsx-pascal-case": "error", 482 | "react/jsx-sort-props": 0, 483 | "react/jsx-space-before-closing": 0, 484 | "react/jsx-uses-react": "error", 485 | "react/jsx-uses-vars": "error", 486 | /* 487 | * react-native plugin 488 | */ 489 | "react-native/no-unused-styles": "error", 490 | "react-native/split-platform-components": "error", 491 | /* 492 | * babel plugin 493 | */ 494 | "babel/new-cap": [ 495 | "error", 496 | { 497 | "capIsNewExceptions": [ 498 | "Immutable" 499 | ] 500 | } 501 | ], 502 | "babel/object-curly-spacing": [ 503 | "error", 504 | "never" 505 | ], 506 | "babel/object-shorthand": 0, 507 | "babel/no-await-in-loop": 0 508 | } 509 | } 510 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | 3 | 4 | .npmignore 5 | 6 | 7 | ################# 8 | # from .gitignore: 9 | ################ 10 | 11 | 12 | ############ 13 | # Node 14 | ############ 15 | # Logs 16 | logs 17 | *.log 18 | npm-debug.log* 19 | 20 | # Runtime data 21 | pids 22 | *.pid 23 | *.seed 24 | 25 | # Directory for instrumented libs generated by jscoverage/JSCover 26 | lib-cov 27 | 28 | # Coverage directory used by tools like istanbul 29 | coverage 30 | 31 | # nyc test coverage 32 | .nyc_output 33 | 34 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 35 | .grunt 36 | 37 | # node-waf configuration 38 | .lock-wscript 39 | 40 | # Compiled binary addons (http://nodejs.org/api/addons.html) 41 | build/Release 42 | 43 | # Dependency directories 44 | node_modules 45 | jspm_packages 46 | 47 | # Optional npm cache directory 48 | .npm 49 | 50 | # Optional REPL history 51 | .node_repl_history 52 | 53 | ################ 54 | # JetBrains 55 | ################ 56 | .idea 57 | 58 | ## File-based project format: 59 | *.iws 60 | 61 | ## Plugin-specific files: 62 | 63 | # IntelliJ 64 | /out/ 65 | 66 | # mpeltonen/sbt-idea plugin 67 | .idea_modules/ 68 | 69 | # JIRA plugin 70 | atlassian-ide-plugin.xml 71 | 72 | # Crashlytics plugin (for Android Studio and IntelliJ) 73 | com_crashlytics_export_strings.xml 74 | crashlytics.properties 75 | crashlytics-build.properties 76 | fabric.properties 77 | 78 | 79 | ############ 80 | # iOS 81 | ############ 82 | # Xcode 83 | # 84 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 85 | 86 | ## Build generated 87 | ios/build/ 88 | ios/DerivedData/ 89 | 90 | ## Various settings 91 | *.pbxuser 92 | !default.pbxuser 93 | *.mode1v3 94 | !default.mode1v3 95 | *.mode2v3 96 | !default.mode2v3 97 | *.perspectivev3 98 | !default.perspectivev3 99 | ios/xcuserdata/ 100 | 101 | ## Other 102 | *.moved-aside 103 | *.xcuserstate 104 | 105 | ## Obj-C/Swift specific 106 | *.hmap 107 | *.ipa 108 | *.dSYM.zip 109 | *.dSYM 110 | 111 | # CocoaPods 112 | # 113 | # We recommend against adding the Pods directory to your .gitignore. However 114 | # you should judge for yourself, the pros and cons are mentioned at: 115 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 116 | # 117 | ios/Pods/ 118 | 119 | # Carthage 120 | # 121 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 122 | # Carthage/Checkouts 123 | 124 | Carthage/Build 125 | 126 | # fastlane 127 | # 128 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 129 | # screenshots whenever they are needed. 130 | # For more information about the recommended setup visit: 131 | # https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md 132 | 133 | fastlane/report.xml 134 | fastlane/screenshots 135 | 136 | 137 | ############ 138 | # Android 139 | ############ 140 | # Built application files 141 | *.apk 142 | *.ap_ 143 | 144 | # Files for the Dalvik VM 145 | *.dex 146 | 147 | # Java class files 148 | *.class 149 | 150 | # Generated files 151 | android/bin/ 152 | android/gen/ 153 | android/out/ 154 | 155 | # Gradle files 156 | android/.gradle/ 157 | android/build/ 158 | android/*/build/ 159 | 160 | # Local configuration file (sdk path, etc) 161 | local.properties 162 | 163 | # Proguard folder generated by Eclipse 164 | android/proguard/ 165 | 166 | # Log Files 167 | *.log 168 | 169 | # Android Studio Navigation editor temp files 170 | android/.navigation/ 171 | 172 | # Android Studio captures folder 173 | android/captures/ 174 | 175 | # Intellij 176 | *.iml 177 | 178 | # Keystore files 179 | *.jks 180 | 181 | ################## 182 | # React-Native 183 | ################## 184 | # OSX 185 | # 186 | .DS_Store 187 | 188 | # Xcode 189 | # 190 | build/ 191 | *.pbxuser 192 | !default.pbxuser 193 | *.mode1v3 194 | !default.mode1v3 195 | *.mode2v3 196 | !default.mode2v3 197 | *.perspectivev3 198 | !default.perspectivev3 199 | xcuserdata 200 | *.xccheckout 201 | *.moved-aside 202 | DerivedData 203 | *.hmap 204 | *.ipa 205 | *.xcuserstate 206 | project.xcworkspace 207 | 208 | # Android/IJ 209 | # 210 | .idea 211 | android/.idea 212 | android/.gradle 213 | android/local.properties 214 | 215 | # node.js 216 | # 217 | node_modules/ 218 | npm-debug.log 219 | 220 | # BUCK 221 | buck-out/ 222 | \.buckd/ 223 | android/app/libs 224 | android/keystores/debug.keystore 225 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | src/ 2 | tests/ 3 | scripts/ 4 | wallaby.js 5 | .eslintrc 6 | 7 | test/ 8 | res/generated/ 9 | 10 | .npmignore 11 | 12 | 13 | ################# 14 | # from .gitignore: 15 | ################ 16 | 17 | 18 | ############ 19 | # Node 20 | ############ 21 | # Logs 22 | logs 23 | *.log 24 | npm-debug.log* 25 | 26 | # Runtime data 27 | pids 28 | *.pid 29 | *.seed 30 | 31 | # Directory for instrumented libs generated by jscoverage/JSCover 32 | lib-cov 33 | 34 | # Coverage directory used by tools like istanbul 35 | coverage 36 | 37 | # nyc test coverage 38 | .nyc_output 39 | 40 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 41 | .grunt 42 | 43 | # node-waf configuration 44 | .lock-wscript 45 | 46 | # Compiled binary addons (http://nodejs.org/api/addons.html) 47 | build/Release 48 | 49 | # Dependency directories 50 | node_modules 51 | jspm_packages 52 | 53 | # Optional npm cache directory 54 | .npm 55 | 56 | # Optional REPL history 57 | .node_repl_history 58 | 59 | ################ 60 | # JetBrains 61 | ################ 62 | .idea 63 | 64 | ## File-based project format: 65 | *.iws 66 | 67 | ## Plugin-specific files: 68 | 69 | # IntelliJ 70 | /out/ 71 | 72 | # mpeltonen/sbt-idea plugin 73 | .idea_modules/ 74 | 75 | # JIRA plugin 76 | atlassian-ide-plugin.xml 77 | 78 | # Crashlytics plugin (for Android Studio and IntelliJ) 79 | com_crashlytics_export_strings.xml 80 | crashlytics.properties 81 | crashlytics-build.properties 82 | fabric.properties 83 | 84 | 85 | ############ 86 | # iOS 87 | ############ 88 | # Xcode 89 | # 90 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 91 | 92 | ## Build generated 93 | ios/build/ 94 | ios/DerivedData/ 95 | 96 | ## Various settings 97 | *.pbxuser 98 | !default.pbxuser 99 | *.mode1v3 100 | !default.mode1v3 101 | *.mode2v3 102 | !default.mode2v3 103 | *.perspectivev3 104 | !default.perspectivev3 105 | ios/xcuserdata/ 106 | 107 | ## Other 108 | *.moved-aside 109 | *.xcuserstate 110 | 111 | ## Obj-C/Swift specific 112 | *.hmap 113 | *.ipa 114 | *.dSYM.zip 115 | *.dSYM 116 | 117 | # CocoaPods 118 | # 119 | # We recommend against adding the Pods directory to your .gitignore. However 120 | # you should judge for yourself, the pros and cons are mentioned at: 121 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 122 | # 123 | ios/Pods/ 124 | 125 | # Carthage 126 | # 127 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 128 | # Carthage/Checkouts 129 | 130 | Carthage/Build 131 | 132 | # fastlane 133 | # 134 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 135 | # screenshots whenever they are needed. 136 | # For more information about the recommended setup visit: 137 | # https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md 138 | 139 | fastlane/report.xml 140 | fastlane/screenshots 141 | 142 | 143 | ############ 144 | # Android 145 | ############ 146 | # Built application files 147 | *.apk 148 | *.ap_ 149 | 150 | # Files for the Dalvik VM 151 | *.dex 152 | 153 | # Java class files 154 | *.class 155 | 156 | # Generated files 157 | android/bin/ 158 | android/gen/ 159 | android/out/ 160 | 161 | # Gradle files 162 | android/.gradle/ 163 | android/build/ 164 | android/*/build/ 165 | 166 | # Local configuration file (sdk path, etc) 167 | local.properties 168 | 169 | # Proguard folder generated by Eclipse 170 | android/proguard/ 171 | 172 | # Log Files 173 | *.log 174 | 175 | # Android Studio Navigation editor temp files 176 | android/.navigation/ 177 | 178 | # Android Studio captures folder 179 | android/captures/ 180 | 181 | # Intellij 182 | *.iml 183 | 184 | # Keystore files 185 | *.jks 186 | 187 | ################## 188 | # React-Native 189 | ################## 190 | # OSX 191 | # 192 | .DS_Store 193 | 194 | # Xcode 195 | # 196 | build/ 197 | *.pbxuser 198 | !default.pbxuser 199 | *.mode1v3 200 | !default.mode1v3 201 | *.mode2v3 202 | !default.mode2v3 203 | *.perspectivev3 204 | !default.perspectivev3 205 | xcuserdata 206 | *.xccheckout 207 | *.moved-aside 208 | DerivedData 209 | *.hmap 210 | *.ipa 211 | *.xcuserstate 212 | project.xcworkspace 213 | 214 | # Android/IJ 215 | # 216 | .idea 217 | android/.idea 218 | android/.gradle 219 | android/local.properties 220 | 221 | # node.js 222 | # 223 | node_modules/ 224 | npm-debug.log 225 | 226 | # BUCK 227 | buck-out/ 228 | \.buckd/ 229 | android/app/libs 230 | android/keystores/debug.keystore 231 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Wix.com 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # react-native-newrelic 2 | 3 | New Relic event reporting for react native. 4 | 5 | > also check out https://github.com/wix/sentry-monitor 6 | 7 | ## Features 8 | * `overrideConsole` will send all console.log, warn and errors to New Relic. 9 | * `reportUncaughtExceptions` will send uncaught Javascript exceptions to New Relic. 10 | 11 | More to come! 12 | 13 | ## Installation 14 | 15 | ### Install react-native-newrelic 16 | 17 | ```bash 18 | npm install react-native-newrelic --save 19 | ``` 20 | ## iOS 21 | #### 1. Install New RelicAgent in your project as a pod 22 | In the Podfile for your project, add the following line: 23 | `pod 'NewRelicAgent'` 24 | Make sure Xcode is closed and run: `pod install` 25 | 26 | #### 2. Add the project to Xcode 27 | In the project navigator: 28 | - Right click Libraries 29 | - Add Files to [your project's name] 30 | - Go to node_modules/react-native-newrelic 31 | - Add the .xcodeproj file 32 | In the project navigator, select your project. 33 | - Add the libRNNewRelic.a to your project's Build Phases ➜ Link Binary With Libraries 34 | - Click .xcodeproj file you added before in the project navigator and go the Build Settings tab. Make sure 'All' is toggled on (instead of 'Basic'). 35 | 36 | #### 3. In your AppDelegate.m 37 | Add the following: 38 | 39 | ``` objective-c 40 | -(void)setupNewRelic{ 41 | NSString* token; 42 | if(isDebug) { 43 | token = @""; 44 | } else { 45 | token = @" 66 | 67 | #endif 68 | ``` 69 | 70 | ## Android (gradle only) 71 | 72 | #### 1. Add NewRelic agent to your Android project 73 | 74 | **[This link](https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-android/install-configure/installing-android-apps-gradle-android-studio) describes how to add the original NewRelic agent to your project. This guide only requires a part of the original steps (some of the steps are already integrated in `react-native-newrelic`:** 75 | 76 | In `MainApplication.java` import Newrelic and override the following method: 77 | 78 | ``` java 79 | import com.newrelic.agent.android.NewRelic; 80 | 81 | public class MainApplication extends Application implements ReactApplication { 82 | 83 | ... 84 | 85 | public void onCreate() { 86 | super.onCreate(); 87 | NewRelic.withApplicationToken("yourApplicationToken").start(this); 88 | } 89 | 90 | ... 91 | 92 | } 93 | ``` 94 | 95 | Create `newrelic.properties` in your root android dir: 96 | 97 | ``` 98 | com.newrelic.application_token= yourApplicationToken 99 | ``` 100 | 101 | > Get your application token from newrelic.com 102 | 103 | 104 | 105 | #### 2. Add the `react-native-newrelic` module to your Android project 106 | 107 | In `settings.gradle`: 108 | 109 | ``` gradle 110 | include ':react-native-newrelic' 111 | project(':react-native-newrelic').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-newrelic/android') 112 | 113 | ``` 114 | In your project level `build.gradle`: 115 | 116 | ``` 117 | dependencies { 118 | ... 119 | classpath "com.newrelic.agent.android:agent-gradle-plugin:5.11.+" 120 | ... 121 | } 122 | 123 | ``` 124 | 125 | 126 | In your app level `build.gradle`: 127 | 128 | ``` gradle 129 | apply plugin: 'newrelic' 130 | 131 | 132 | dependencies { 133 | ... 134 | compile project(":react-native-newrelic") 135 | compile fileTree(dir: "node_modules/react-native-newrelic/android/libs", include: ["*.jar"]) 136 | ... 137 | } 138 | ``` 139 | 140 | Add `new RNNewRelicPackage()` to your list of packages in `getPackages()` in `MainApplication.java` : 141 | 142 | ``` java 143 | @Override 144 | public List getPackages() { 145 | return Arrays.asList(... new RNNewRelicPackage()); 146 | } 147 | ``` 148 | 149 | 150 | ## Configuration 151 | 152 | Add the following to your app root (e.g. `app.ios.js` ): 153 | 154 | ```javascript 155 | import {default as newRelic} from 'react-native-newrelic'; 156 | newRelic.init({ 157 | overrideConsole: true, 158 | reportUncaughtExceptions: true, 159 | globalAttributes: { 160 | 'this-string': 'will be sent with every event that is being reported' 161 | } 162 | }); 163 | ``` 164 | 165 | Credits to [@DanielZlotin](https://github.com/danielzlotin) for the initial version 166 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | buildscript { 4 | repositories { 5 | mavenCentral() 6 | jcenter() 7 | maven { 8 | // All of React Native (JS, Android binaries) is installed from npm 9 | url "$rootDir/node_modules/react-native/android" 10 | } 11 | } 12 | } 13 | 14 | android { 15 | compileSdkVersion 23 16 | buildToolsVersion "23.0.3" 17 | 18 | defaultConfig { 19 | minSdkVersion 16 20 | targetSdkVersion 22 21 | versionCode 1 22 | versionName "1.0" 23 | ndk { 24 | abiFilters "armeabi-v7a", "x86" 25 | } 26 | } 27 | } 28 | 29 | dependencies { 30 | compile fileTree(include: ['*.jar'], dir: 'libs') 31 | compile 'com.android.support:appcompat-v7:23.0.1' 32 | compile 'com.newrelic.agent.android:android-agent:5.11.+' 33 | compile 'com.facebook.react:react-native:+' //from node_modules 34 | } 35 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | ## Project-wide Gradle settings. 2 | # 3 | # For more details on how to configure your build environment visit 4 | # http://www.gradle.org/docs/current/userguide/build_environment.html 5 | # 6 | # Specifies the JVM arguments used for the daemon process. 7 | # The setting is particularly useful for tweaking memory settings. 8 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 9 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 10 | # 11 | # When configured, Gradle will run in incubating parallel mode. 12 | # This option should only be used with decoupled projects. More details, visit 13 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 14 | # org.gradle.parallel=true 15 | #Wed Jun 29 09:00:55 IDT 2016 16 | android.useDeprecatedNdk=true 17 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wix-incubator/react-native-newrelic/8d1441d4220ce9ba9d33ebc795e36c21dfb795c2/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Dec 28 10:00:20 PST 2015 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip 7 | -------------------------------------------------------------------------------- /android/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # Attempt to set APP_HOME 46 | # Resolve links: $0 may be a link 47 | PRG="$0" 48 | # Need this for relative symlinks. 49 | while [ -h "$PRG" ] ; do 50 | ls=`ls -ld "$PRG"` 51 | link=`expr "$ls" : '.*-> \(.*\)$'` 52 | if expr "$link" : '/.*' > /dev/null; then 53 | PRG="$link" 54 | else 55 | PRG=`dirname "$PRG"`"/$link" 56 | fi 57 | done 58 | SAVED="`pwd`" 59 | cd "`dirname \"$PRG\"`/" >/dev/null 60 | APP_HOME="`pwd -P`" 61 | cd "$SAVED" >/dev/null 62 | 63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 64 | 65 | # Determine the Java command to use to start the JVM. 66 | if [ -n "$JAVA_HOME" ] ; then 67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 68 | # IBM's JDK on AIX uses strange locations for the executables 69 | JAVACMD="$JAVA_HOME/jre/sh/java" 70 | else 71 | JAVACMD="$JAVA_HOME/bin/java" 72 | fi 73 | if [ ! -x "$JAVACMD" ] ; then 74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 75 | 76 | Please set the JAVA_HOME variable in your environment to match the 77 | location of your Java installation." 78 | fi 79 | else 80 | JAVACMD="java" 81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 82 | 83 | Please set the JAVA_HOME variable in your environment to match the 84 | location of your Java installation." 85 | fi 86 | 87 | # Increase the maximum file descriptors if we can. 88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 89 | MAX_FD_LIMIT=`ulimit -H -n` 90 | if [ $? -eq 0 ] ; then 91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 92 | MAX_FD="$MAX_FD_LIMIT" 93 | fi 94 | ulimit -n $MAX_FD 95 | if [ $? -ne 0 ] ; then 96 | warn "Could not set maximum file descriptor limit: $MAX_FD" 97 | fi 98 | else 99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 100 | fi 101 | fi 102 | 103 | # For Darwin, add options to specify how the application appears in the dock 104 | if $darwin; then 105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 106 | fi 107 | 108 | # For Cygwin, switch paths to Windows format before running java 109 | if $cygwin ; then 110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 112 | JAVACMD=`cygpath --unix "$JAVACMD"` 113 | 114 | # We build the pattern for arguments to be converted via cygpath 115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 116 | SEP="" 117 | for dir in $ROOTDIRSRAW ; do 118 | ROOTDIRS="$ROOTDIRS$SEP$dir" 119 | SEP="|" 120 | done 121 | OURCYGPATTERN="(^($ROOTDIRS))" 122 | # Add a user-defined pattern to the cygpath arguments 123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 125 | fi 126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 127 | i=0 128 | for arg in "$@" ; do 129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 131 | 132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 134 | else 135 | eval `echo args$i`="\"$arg\"" 136 | fi 137 | i=$((i+1)) 138 | done 139 | case $i in 140 | (0) set -- ;; 141 | (1) set -- "$args0" ;; 142 | (2) set -- "$args0" "$args1" ;; 143 | (3) set -- "$args0" "$args1" "$args2" ;; 144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 150 | esac 151 | fi 152 | 153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 154 | function splitJvmOpts() { 155 | JVM_OPTS=("$@") 156 | } 157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 159 | 160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 161 | -------------------------------------------------------------------------------- /android/gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /android/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /android/src/main/java/com/wix/rnnewrelic/RNNewRelic.java: -------------------------------------------------------------------------------- 1 | package com.wix.rnnewrelic; 2 | 3 | import android.util.Log; 4 | 5 | import com.facebook.react.bridge.ReactApplicationContext; 6 | import com.facebook.react.bridge.ReactContextBaseJavaModule; 7 | import com.facebook.react.bridge.ReactMethod; 8 | import com.facebook.react.bridge.ReadableMap; 9 | import com.facebook.react.bridge.ReadableNativeMap; 10 | import com.newrelic.agent.android.NewRelic; 11 | 12 | /** 13 | * Created by rotemm on 29/06/2016. 14 | */ 15 | public class RNNewRelic extends ReactContextBaseJavaModule { 16 | 17 | public RNNewRelic(ReactApplicationContext reactContext) { 18 | super(reactContext); 19 | } 20 | 21 | @ReactMethod 22 | public void send(String name, ReadableMap eventAttributes) { 23 | NewRelic.recordEvent(name ,RNUtils.toHashMap((ReadableNativeMap) eventAttributes)); 24 | } 25 | 26 | @ReactMethod 27 | public void setAttribute(String name, String value) { 28 | NewRelic.setAttribute(name , value); 29 | } 30 | 31 | @ReactMethod 32 | public void nativeLog(String message) { 33 | Log.d(getName(), message); 34 | } 35 | 36 | @Override 37 | public String getName() { 38 | return "RNNewRelic"; 39 | } 40 | } -------------------------------------------------------------------------------- /android/src/main/java/com/wix/rnnewrelic/RNNewRelicPackage.java: -------------------------------------------------------------------------------- 1 | package com.wix.rnnewrelic; 2 | 3 | import com.facebook.react.ReactPackage; 4 | import com.facebook.react.bridge.JavaScriptModule; 5 | import com.facebook.react.bridge.NativeModule; 6 | import com.facebook.react.bridge.ReactApplicationContext; 7 | import com.facebook.react.uimanager.ViewManager; 8 | 9 | import java.util.Arrays; 10 | import java.util.Collections; 11 | import java.util.List; 12 | 13 | public class RNNewRelicPackage implements ReactPackage { 14 | 15 | @Override 16 | public List createNativeModules(ReactApplicationContext reactContext) { 17 | return Arrays.asList(new RNNewRelic(reactContext)); 18 | } 19 | 20 | // Deprecated in RN 0.47 21 | public List> createJSModules() { 22 | return Collections.emptyList(); 23 | } 24 | 25 | @Override 26 | public List createViewManagers(ReactApplicationContext reactContext) { 27 | return Collections.emptyList(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /android/src/main/java/com/wix/rnnewrelic/RNUtils.java: -------------------------------------------------------------------------------- 1 | package com.wix.rnnewrelic; 2 | 3 | import com.facebook.react.bridge.ReadableMapKeySetIterator; 4 | import com.facebook.react.bridge.ReadableNativeArray; 5 | import com.facebook.react.bridge.ReadableNativeMap; 6 | 7 | import java.util.ArrayList; 8 | import java.util.HashMap; 9 | 10 | /** 11 | * Created by rotemm on 29/06/2016. 12 | */ 13 | public class RNUtils { 14 | 15 | /** 16 | * ReadableNativeMap to HashMap, this has been implemented already in RN 0.26's ReadableNativeMap, kill it when possible 17 | * @param readableNativeMap 18 | * @return 19 | */ 20 | public static HashMap toHashMap(ReadableNativeMap readableNativeMap) { 21 | ReadableMapKeySetIterator iterator = readableNativeMap.keySetIterator(); 22 | HashMap hashMap = new HashMap<>(); 23 | 24 | while (iterator.hasNextKey()) { 25 | String key = iterator.nextKey(); 26 | switch (readableNativeMap.getType(key)) { 27 | case Null: 28 | hashMap.put(key, null); 29 | break; 30 | case Boolean: 31 | hashMap.put(key, readableNativeMap.getBoolean(key)); 32 | break; 33 | case Number: 34 | hashMap.put(key, readableNativeMap.getDouble(key)); 35 | break; 36 | case String: 37 | hashMap.put(key, readableNativeMap.getString(key)); 38 | break; 39 | case Map: 40 | hashMap.put(key, toHashMap(readableNativeMap.getMap(key))); 41 | break; 42 | case Array: 43 | hashMap.put(key, toArrayList(readableNativeMap.getArray(key))); 44 | break; 45 | default: 46 | throw new IllegalArgumentException("Could not convert object with key: " + key + "."); 47 | } 48 | } 49 | return hashMap; 50 | } 51 | 52 | /** 53 | * ReadableNativeArray to ArrayList, this has been implemented already in RN 0.26's ReadableNativeMap, kill it when possible 54 | * @param readableNativeArray 55 | * @return 56 | */ 57 | public static ArrayList toArrayList(ReadableNativeArray readableNativeArray) { 58 | ArrayList arrayList = new ArrayList<>(); 59 | 60 | for (int i = 0; i < readableNativeArray.size(); i++) { 61 | switch (readableNativeArray.getType(i)) { 62 | case Null: 63 | arrayList.add(null); 64 | break; 65 | case Boolean: 66 | arrayList.add(readableNativeArray.getBoolean(i)); 67 | break; 68 | case Number: 69 | arrayList.add(readableNativeArray.getDouble(i)); 70 | break; 71 | case String: 72 | arrayList.add(readableNativeArray.getString(i)); 73 | break; 74 | case Map: 75 | arrayList.add(toHashMap(readableNativeArray.getMap(i))); 76 | break; 77 | case Array: 78 | arrayList.add(toArrayList(readableNativeArray.getArray(i))); 79 | break; 80 | default: 81 | throw new IllegalArgumentException("Could not convert object at index: " + i + "."); 82 | } 83 | } 84 | return arrayList; 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/NewRelic'); 2 | -------------------------------------------------------------------------------- /ios/RNNewRelic.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 7B34243B1CCF990C00FEBAEC /* RNNewRelic.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7B34243A1CCF990C00FEBAEC /* RNNewRelic.h */; }; 11 | 7B34243D1CCF990C00FEBAEC /* RNNewRelic.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B34243C1CCF990C00FEBAEC /* RNNewRelic.m */; }; 12 | /* End PBXBuildFile section */ 13 | 14 | /* Begin PBXCopyFilesBuildPhase section */ 15 | 7B3424351CCF990C00FEBAEC /* CopyFiles */ = { 16 | isa = PBXCopyFilesBuildPhase; 17 | buildActionMask = 2147483647; 18 | dstPath = "include/$(PRODUCT_NAME)"; 19 | dstSubfolderSpec = 16; 20 | files = ( 21 | 7B34243B1CCF990C00FEBAEC /* RNNewRelic.h in CopyFiles */, 22 | ); 23 | runOnlyForDeploymentPostprocessing = 0; 24 | }; 25 | /* End PBXCopyFilesBuildPhase section */ 26 | 27 | /* Begin PBXFileReference section */ 28 | 7B3424371CCF990C00FEBAEC /* libRNNewRelic.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNNewRelic.a; sourceTree = BUILT_PRODUCTS_DIR; }; 29 | 7B34243A1CCF990C00FEBAEC /* RNNewRelic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RNNewRelic.h; sourceTree = ""; }; 30 | 7B34243C1CCF990C00FEBAEC /* RNNewRelic.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNNewRelic.m; sourceTree = ""; }; 31 | /* End PBXFileReference section */ 32 | 33 | /* Begin PBXFrameworksBuildPhase section */ 34 | 7B3424341CCF990C00FEBAEC /* Frameworks */ = { 35 | isa = PBXFrameworksBuildPhase; 36 | buildActionMask = 2147483647; 37 | files = ( 38 | ); 39 | runOnlyForDeploymentPostprocessing = 0; 40 | }; 41 | /* End PBXFrameworksBuildPhase section */ 42 | 43 | /* Begin PBXGroup section */ 44 | 7B34242E1CCF990C00FEBAEC = { 45 | isa = PBXGroup; 46 | children = ( 47 | 7B3424391CCF990C00FEBAEC /* RNNewRelic */, 48 | 7B3424381CCF990C00FEBAEC /* Products */, 49 | ); 50 | sourceTree = ""; 51 | }; 52 | 7B3424381CCF990C00FEBAEC /* Products */ = { 53 | isa = PBXGroup; 54 | children = ( 55 | 7B3424371CCF990C00FEBAEC /* libRNNewRelic.a */, 56 | ); 57 | name = Products; 58 | sourceTree = ""; 59 | }; 60 | 7B3424391CCF990C00FEBAEC /* RNNewRelic */ = { 61 | isa = PBXGroup; 62 | children = ( 63 | 7B34243A1CCF990C00FEBAEC /* RNNewRelic.h */, 64 | 7B34243C1CCF990C00FEBAEC /* RNNewRelic.m */, 65 | ); 66 | path = RNNewRelic; 67 | sourceTree = ""; 68 | }; 69 | /* End PBXGroup section */ 70 | 71 | /* Begin PBXNativeTarget section */ 72 | 7B3424361CCF990C00FEBAEC /* RNNewRelic */ = { 73 | isa = PBXNativeTarget; 74 | buildConfigurationList = 7B3424401CCF990C00FEBAEC /* Build configuration list for PBXNativeTarget "RNNewRelic" */; 75 | buildPhases = ( 76 | 7B3424331CCF990C00FEBAEC /* Sources */, 77 | 7B3424341CCF990C00FEBAEC /* Frameworks */, 78 | 7B3424351CCF990C00FEBAEC /* CopyFiles */, 79 | ); 80 | buildRules = ( 81 | ); 82 | dependencies = ( 83 | ); 84 | name = RNNewRelic; 85 | productName = RNNewRelic; 86 | productReference = 7B3424371CCF990C00FEBAEC /* libRNNewRelic.a */; 87 | productType = "com.apple.product-type.library.static"; 88 | }; 89 | /* End PBXNativeTarget section */ 90 | 91 | /* Begin PBXProject section */ 92 | 7B34242F1CCF990C00FEBAEC /* Project object */ = { 93 | isa = PBXProject; 94 | attributes = { 95 | LastUpgradeCheck = 0730; 96 | ORGANIZATIONNAME = Wix.com; 97 | TargetAttributes = { 98 | 7B3424361CCF990C00FEBAEC = { 99 | CreatedOnToolsVersion = 7.3; 100 | }; 101 | }; 102 | }; 103 | buildConfigurationList = 7B3424321CCF990C00FEBAEC /* Build configuration list for PBXProject "RNNewRelic" */; 104 | compatibilityVersion = "Xcode 3.2"; 105 | developmentRegion = English; 106 | hasScannedForEncodings = 0; 107 | knownRegions = ( 108 | en, 109 | ); 110 | mainGroup = 7B34242E1CCF990C00FEBAEC; 111 | productRefGroup = 7B3424381CCF990C00FEBAEC /* Products */; 112 | projectDirPath = ""; 113 | projectRoot = ""; 114 | targets = ( 115 | 7B3424361CCF990C00FEBAEC /* RNNewRelic */, 116 | ); 117 | }; 118 | /* End PBXProject section */ 119 | 120 | /* Begin PBXSourcesBuildPhase section */ 121 | 7B3424331CCF990C00FEBAEC /* Sources */ = { 122 | isa = PBXSourcesBuildPhase; 123 | buildActionMask = 2147483647; 124 | files = ( 125 | 7B34243D1CCF990C00FEBAEC /* RNNewRelic.m in Sources */, 126 | ); 127 | runOnlyForDeploymentPostprocessing = 0; 128 | }; 129 | /* End PBXSourcesBuildPhase section */ 130 | 131 | /* Begin XCBuildConfiguration section */ 132 | 7B34243E1CCF990C00FEBAEC /* Debug */ = { 133 | isa = XCBuildConfiguration; 134 | buildSettings = { 135 | ALWAYS_SEARCH_USER_PATHS = NO; 136 | CLANG_ANALYZER_NONNULL = YES; 137 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 138 | CLANG_CXX_LIBRARY = "libc++"; 139 | CLANG_ENABLE_MODULES = YES; 140 | CLANG_ENABLE_OBJC_ARC = YES; 141 | CLANG_WARN_BOOL_CONVERSION = YES; 142 | CLANG_WARN_CONSTANT_CONVERSION = YES; 143 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 144 | CLANG_WARN_EMPTY_BODY = YES; 145 | CLANG_WARN_ENUM_CONVERSION = YES; 146 | CLANG_WARN_INT_CONVERSION = YES; 147 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 148 | CLANG_WARN_UNREACHABLE_CODE = YES; 149 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 150 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 151 | COPY_PHASE_STRIP = NO; 152 | DEBUG_INFORMATION_FORMAT = dwarf; 153 | ENABLE_STRICT_OBJC_MSGSEND = YES; 154 | ENABLE_TESTABILITY = YES; 155 | GCC_C_LANGUAGE_STANDARD = gnu99; 156 | GCC_DYNAMIC_NO_PIC = NO; 157 | GCC_NO_COMMON_BLOCKS = YES; 158 | GCC_OPTIMIZATION_LEVEL = 0; 159 | GCC_PREPROCESSOR_DEFINITIONS = ( 160 | "DEBUG=1", 161 | "$(inherited)", 162 | ); 163 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 164 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 165 | GCC_WARN_UNDECLARED_SELECTOR = YES; 166 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 167 | GCC_WARN_UNUSED_FUNCTION = YES; 168 | GCC_WARN_UNUSED_VARIABLE = YES; 169 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 170 | MTL_ENABLE_DEBUG_INFO = YES; 171 | ONLY_ACTIVE_ARCH = YES; 172 | SDKROOT = iphoneos; 173 | }; 174 | name = Debug; 175 | }; 176 | 7B34243F1CCF990C00FEBAEC /* Release */ = { 177 | isa = XCBuildConfiguration; 178 | buildSettings = { 179 | ALWAYS_SEARCH_USER_PATHS = NO; 180 | CLANG_ANALYZER_NONNULL = YES; 181 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 182 | CLANG_CXX_LIBRARY = "libc++"; 183 | CLANG_ENABLE_MODULES = YES; 184 | CLANG_ENABLE_OBJC_ARC = YES; 185 | CLANG_WARN_BOOL_CONVERSION = YES; 186 | CLANG_WARN_CONSTANT_CONVERSION = YES; 187 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 188 | CLANG_WARN_EMPTY_BODY = YES; 189 | CLANG_WARN_ENUM_CONVERSION = YES; 190 | CLANG_WARN_INT_CONVERSION = YES; 191 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 192 | CLANG_WARN_UNREACHABLE_CODE = YES; 193 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 194 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 195 | COPY_PHASE_STRIP = NO; 196 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 197 | ENABLE_NS_ASSERTIONS = NO; 198 | ENABLE_STRICT_OBJC_MSGSEND = YES; 199 | GCC_C_LANGUAGE_STANDARD = gnu99; 200 | GCC_NO_COMMON_BLOCKS = YES; 201 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 202 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 203 | GCC_WARN_UNDECLARED_SELECTOR = YES; 204 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 205 | GCC_WARN_UNUSED_FUNCTION = YES; 206 | GCC_WARN_UNUSED_VARIABLE = YES; 207 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 208 | MTL_ENABLE_DEBUG_INFO = NO; 209 | SDKROOT = iphoneos; 210 | VALIDATE_PRODUCT = YES; 211 | }; 212 | name = Release; 213 | }; 214 | 7B3424411CCF990C00FEBAEC /* Debug */ = { 215 | isa = XCBuildConfiguration; 216 | buildSettings = { 217 | FRAMEWORK_SEARCH_PATHS = ""; 218 | HEADER_SEARCH_PATHS = ( 219 | "$(inherited)", 220 | "$(SRCROOT)/../../react-native/React/**", 221 | "$(SRCROOT)/../../../ios/Pods/**", 222 | ); 223 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 224 | LIBRARY_SEARCH_PATHS = ""; 225 | OTHER_LDFLAGS = "-ObjC"; 226 | PRODUCT_NAME = "$(TARGET_NAME)"; 227 | SKIP_INSTALL = YES; 228 | }; 229 | name = Debug; 230 | }; 231 | 7B3424421CCF990C00FEBAEC /* Release */ = { 232 | isa = XCBuildConfiguration; 233 | buildSettings = { 234 | FRAMEWORK_SEARCH_PATHS = ""; 235 | HEADER_SEARCH_PATHS = ( 236 | "$(inherited)", 237 | "$(SRCROOT)/../../react-native/React/**", 238 | "$(SRCROOT)/../../../ios/Pods/**", 239 | ); 240 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 241 | LIBRARY_SEARCH_PATHS = ""; 242 | OTHER_LDFLAGS = "-ObjC"; 243 | PRODUCT_NAME = "$(TARGET_NAME)"; 244 | SKIP_INSTALL = YES; 245 | }; 246 | name = Release; 247 | }; 248 | /* End XCBuildConfiguration section */ 249 | 250 | /* Begin XCConfigurationList section */ 251 | 7B3424321CCF990C00FEBAEC /* Build configuration list for PBXProject "RNNewRelic" */ = { 252 | isa = XCConfigurationList; 253 | buildConfigurations = ( 254 | 7B34243E1CCF990C00FEBAEC /* Debug */, 255 | 7B34243F1CCF990C00FEBAEC /* Release */, 256 | ); 257 | defaultConfigurationIsVisible = 0; 258 | defaultConfigurationName = Release; 259 | }; 260 | 7B3424401CCF990C00FEBAEC /* Build configuration list for PBXNativeTarget "RNNewRelic" */ = { 261 | isa = XCConfigurationList; 262 | buildConfigurations = ( 263 | 7B3424411CCF990C00FEBAEC /* Debug */, 264 | 7B3424421CCF990C00FEBAEC /* Release */, 265 | ); 266 | defaultConfigurationIsVisible = 0; 267 | defaultConfigurationName = Release; 268 | }; 269 | /* End XCConfigurationList section */ 270 | }; 271 | rootObject = 7B34242F1CCF990C00FEBAEC /* Project object */; 272 | } 273 | -------------------------------------------------------------------------------- /ios/RNNewRelic/RNNewRelic.h: -------------------------------------------------------------------------------- 1 | // 2 | // RNNewRelic.h 3 | // RNNewRelic 4 | // 5 | // Created by Daniel Zlotin on 26/04/2016. 6 | // Copyright © 2016 Wix.com. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | 13 | @interface RNNewRelic : NSObject 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ios/RNNewRelic/RNNewRelic.m: -------------------------------------------------------------------------------- 1 | // 2 | // RNNewRelic.m 3 | // RNNewRelic 4 | // 5 | // Created by Daniel Zlotin on 26/04/2016. 6 | // Copyright © 2016 Wix.com. All rights reserved. 7 | // 8 | 9 | #import "RNNewRelic.h" 10 | 11 | @implementation RNNewRelic 12 | 13 | RCT_EXPORT_MODULE(); 14 | 15 | RCT_EXPORT_METHOD(send: (NSString*)name :(NSDictionary*)args){ 16 | [NewRelicAgent recordEvent:name attributes:args]; 17 | } 18 | 19 | 20 | RCT_EXPORT_METHOD(setAttribute: (NSString*)name: (NSString*)value){ 21 | [NewRelicAgent setAttribute:name value:value]; 22 | } 23 | 24 | // Logs a message to the native console 25 | RCT_EXPORT_METHOD(nativeLog:(NSString *)msg){ 26 | NSLog(@"%@", msg); 27 | } 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /lib/NewRelic.js: -------------------------------------------------------------------------------- 1 | 'use strict';Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i0&&arguments[0]!==undefined?arguments[0]:global.ErrorUtils; 45 | var defaultHandler=errorUtils._globalHandler; 46 | errorUtils._globalHandler=function(error){ 47 | _this.send('JS:UncaughtException',{error:error,stack:error&&error.stack}); 48 | defaultHandler(error); 49 | }; 50 | }},{key:'_reportRejectedPromises',value:function _reportRejectedPromises() 51 | 52 | {var _this2=this; 53 | var rejectionTracking=require('promise/setimmediate/rejection-tracking'); 54 | if(!__DEV__){ 55 | rejectionTracking.enable({ 56 | allRejections:true, 57 | onUnhandled:function onUnhandled(id,error){ 58 | _this2.send('JS:UnhandledRejectedPromise',{error:error}); 59 | _this2.nativeLog('[UnhandledRejectedPromise] '+error); 60 | }, 61 | onHandled:function onHandled(){ 62 | 63 | }}); 64 | 65 | } 66 | }},{key:'setGlobalAttributes',value:function setGlobalAttributes( 67 | 68 | 69 | 70 | 71 | 72 | args){ 73 | _.forEach(args,function(value,key){ 74 | RNNewRelic.setAttribute(String(key),String(value)); 75 | }); 76 | }},{key:'sendConsole',value:function sendConsole( 77 | 78 | type,args){ 79 | var argsStr=_.map(args,String).join(', '); 80 | this.send('JSConsole',{consoleType:type,args:argsStr}); 81 | if(type==='error'){ 82 | this.nativeLog('[JSConsole:Error] '+argsStr); 83 | } 84 | }},{key:'report',value:function report( 85 | 86 | eventName,args){ 87 | this.send(eventName,args); 88 | }},{key:'nativeLog',value:function nativeLog( 89 | 90 | 91 | 92 | 93 | log){ 94 | RNNewRelic.nativeLog(log); 95 | }},{key:'send',value:function send( 96 | 97 | name,args){ 98 | var nameStr=String(name); 99 | var argsStr={}; 100 | _.forEach(args,function(value,key){ 101 | argsStr[String(key)]=String(value); 102 | }); 103 | RNNewRelic.send(nameStr,argsStr); 104 | }}]);return NewRelic;}();exports.default= 105 | 106 | 107 | 108 | new NewRelic(); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-native-newrelic", 3 | "version": "1.1.1", 4 | "description": "New Relic wrapper for React Native", 5 | "main": "index.js", 6 | "scripts": { 7 | "build": "BABEL_ENV='test' babel src -d lib", 8 | "lint": "eslint src test", 9 | "pretest": "npm run lint", 10 | "test": "BABEL_ENV='test' node 'scripts/JasmineUnitRunner.js'", 11 | "xcode": "open ./ios/RNNewRelic.xcodeproj" 12 | }, 13 | "peerDependencies": { 14 | "react-native": "*" 15 | }, 16 | "dependencies": { 17 | "lodash": "^4.11.1" 18 | }, 19 | "devDependencies": { 20 | "app-root-path": "latest", 21 | "babel-cli": "latest", 22 | "babel-core": "latest", 23 | "babel-eslint": "latest", 24 | "babel-polyfill": "latest", 25 | "babel-preset-es2015": "latest", 26 | "babel-preset-react": "latest", 27 | "babel-preset-stage-0": "latest", 28 | "babel-register": "latest", 29 | "eslint": "latest", 30 | "eslint-plugin-babel": "latest", 31 | "eslint-plugin-react": "latest", 32 | "eslint-plugin-react-native": "latest", 33 | "jasmine": "latest", 34 | "jasmine-reporters": "latest", 35 | "jasmine-spec-reporter": "latest", 36 | "jasmine-expect": "latest", 37 | "proxyquire": "latest" 38 | }, 39 | "repository": { 40 | "type": "git", 41 | "url": "git+https://github.com/wix/react-native-newrelic.git" 42 | }, 43 | "author": "", 44 | "license": "MIT", 45 | "bugs": { 46 | "url": "https://github.com/wix/react-native-newrelic/issues" 47 | }, 48 | "homepage": "https://github.com/wix/react-native-newrelic#readme", 49 | "keywords": [ 50 | "React", 51 | "Native", 52 | "New", 53 | "Relic", 54 | "Logger" 55 | ], 56 | "publishConfig": { 57 | "registry": "https://registry.npmjs.org/" 58 | }, 59 | "nativePackage": true, 60 | "babel": { 61 | "env": { 62 | "test": { 63 | "presets": [ 64 | "es2015", 65 | "react", 66 | "stage-0" 67 | ], 68 | "retainLines": true, 69 | "compact": true, 70 | "comments": false, 71 | "sourceMaps": false 72 | } 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /scripts/JasmineUnitRunner.js: -------------------------------------------------------------------------------- 1 | require('babel-register'); 2 | require('babel-polyfill'); 3 | 4 | const Jasmine = require('jasmine'); 5 | const jrunner = new Jasmine(); 6 | 7 | jrunner.loadConfig( 8 | { 9 | spec_dir: "test", 10 | spec_files: [ 11 | "**/*.[sS]pec.js" 12 | ], 13 | helpers: [ 14 | "../node_modules/jasmine-expect/index.js" 15 | ] 16 | } 17 | ); 18 | 19 | jrunner.execute(); 20 | -------------------------------------------------------------------------------- /src/NewRelic.js: -------------------------------------------------------------------------------- 1 | /* globals ErrorUtils, __DEV__ */ 2 | import {NativeModules} from 'react-native'; 3 | import * as _ from 'lodash'; 4 | 5 | const RNNewRelic = NativeModules.RNNewRelic; 6 | 7 | class NewRelic { 8 | init(config) { 9 | if (config.overrideConsole) { 10 | this._overrideConsole(); 11 | } 12 | if (config.reportUncaughtExceptions) { 13 | this._reportUncaughtExceptions(); 14 | } 15 | if (config.reportRejectedPromises) { 16 | this._reportRejectedPromises(); 17 | } 18 | if (config.globalAttributes) { 19 | this.setGlobalAttributes(config.globalAttributes); 20 | } 21 | } 22 | 23 | _overrideConsole() { 24 | const defaultLog = console.log; 25 | const defaultWarn = console.warn; 26 | const defaultError = console.error; 27 | const self = this; 28 | 29 | console.log = function() { 30 | self.sendConsole('log', arguments); 31 | defaultLog.apply(console, arguments); 32 | }; 33 | console.warn = function() { 34 | self.sendConsole('warn', arguments); 35 | defaultWarn.apply(console, arguments); 36 | }; 37 | console.error = function() { 38 | self.sendConsole('error', arguments); 39 | defaultError.apply(console, arguments); 40 | }; 41 | } 42 | 43 | _reportUncaughtExceptions(errorUtils = global.ErrorUtils) { 44 | const defaultHandler = errorUtils._globalHandler; 45 | errorUtils._globalHandler = (error) => { 46 | this.send('JS:UncaughtException', {error, stack: error && error.stack}); 47 | defaultHandler(error); 48 | }; 49 | } 50 | 51 | _reportRejectedPromises() { 52 | const rejectionTracking = require('promise/setimmediate/rejection-tracking'); 53 | if (!__DEV__) { 54 | rejectionTracking.enable({ 55 | allRejections: true, 56 | onUnhandled: (id, error) => { 57 | this.send('JS:UnhandledRejectedPromise', {error}); 58 | this.nativeLog('[UnhandledRejectedPromise] ' + error); 59 | }, 60 | onHandled: () => { 61 | // 62 | } 63 | }); 64 | } 65 | } 66 | 67 | /** 68 | * registers global attributes that will be sent with every event 69 | * @param args 70 | */ 71 | setGlobalAttributes(args) { 72 | _.forEach(args, (value, key) => { 73 | RNNewRelic.setAttribute(String(key), String(value)); 74 | }); 75 | } 76 | 77 | sendConsole(type, args) { 78 | const argsStr = _.map(args, String).join(', '); 79 | this.send('JSConsole', {consoleType: type, args: argsStr}); 80 | if (type === 'error') { 81 | this.nativeLog('[JSConsole:Error] ' + argsStr); 82 | } 83 | } 84 | 85 | report(eventName, args) { 86 | this.send(eventName, args); 87 | } 88 | 89 | /* 90 | logs a message to the native console (useful when running in release mode) 91 | */ 92 | nativeLog(log) { 93 | RNNewRelic.nativeLog(log); 94 | } 95 | 96 | send(name, args) { 97 | const nameStr = String(name); 98 | const argsStr = {}; 99 | _.forEach(args, (value, key) => { 100 | argsStr[String(key)] = String(value); 101 | }); 102 | RNNewRelic.send(nameStr, argsStr); 103 | } 104 | } 105 | 106 | export default new NewRelic(); 107 | -------------------------------------------------------------------------------- /test/NewRelic.spec.js: -------------------------------------------------------------------------------- 1 | require('jasmine-expect'); 2 | const proxyquire = require('proxyquire'); 3 | 4 | const emptyFunction = () => { 5 | // 6 | }; 7 | describe('NewRelic', () => { 8 | let uut; 9 | const mockNewRelic = {}; 10 | const enablePromiseSpy = jasmine.createSpy('enablePromise'); 11 | 12 | beforeEach(() => { 13 | mockNewRelic.send = emptyFunction; 14 | mockNewRelic.setAttribute = emptyFunction; 15 | mockNewRelic.nativeLog = emptyFunction; 16 | 17 | uut = proxyquire.noCallThru().noPreserveCache()('./../src/NewRelic', { 18 | 'react-native': { 19 | NativeModules: { 20 | RNNewRelic: mockNewRelic 21 | } 22 | }, 23 | 'Promise': { 24 | }, 25 | 'promise/setimmediate/rejection-tracking': { 26 | enable: enablePromiseSpy 27 | } 28 | }).default; 29 | }); 30 | 31 | describe('init', () => { 32 | it('inits everything that is enabled', () => { 33 | uut._overrideConsole = jasmine.createSpy('overrideConsole'); 34 | uut._reportUncaughtExceptions = jasmine.createSpy('reportUncaughtExceptions'); 35 | uut._reportRejectedPromises = jasmine.createSpy('reportRejectedPromises'); 36 | 37 | uut.init({ 38 | overrideConsole: true, 39 | reportUncaughtExceptions: true, 40 | reportRejectedPromises: true 41 | }); 42 | 43 | expect(uut._overrideConsole).toHaveBeenCalled(); 44 | expect(uut._reportUncaughtExceptions).toHaveBeenCalled(); 45 | expect(uut._reportRejectedPromises).toHaveBeenCalled(); 46 | }); 47 | 48 | it('does not init anything that is disabled', () => { 49 | uut._overrideConsole = jasmine.createSpy('overrideConsole'); 50 | 51 | uut.init({ 52 | overrideConsole: false 53 | }); 54 | 55 | expect(uut._overrideConsole).not.toHaveBeenCalled(); 56 | }); 57 | }); 58 | 59 | describe('report', () => { 60 | it('sends name and args', () => { 61 | spyOn(mockNewRelic, 'send'); 62 | expect(mockNewRelic.send).not.toHaveBeenCalled(); 63 | uut.report('name', {inner: 'val'}); 64 | expect(mockNewRelic.send).toHaveBeenCalledTimes(1); 65 | expect(mockNewRelic.send).toHaveBeenCalledWith('name', {inner: 'val'}); 66 | }); 67 | 68 | it('sends name as string', () => { 69 | spyOn(mockNewRelic, 'send'); 70 | expect(mockNewRelic.send).not.toHaveBeenCalled(); 71 | uut.report(123, {inner: 'val'}); 72 | expect(mockNewRelic.send).toHaveBeenCalledTimes(1); 73 | expect(mockNewRelic.send).toHaveBeenCalledWith('123', {inner: 'val'}); 74 | }); 75 | 76 | it('sends args as string', () => { 77 | spyOn(mockNewRelic, 'send'); 78 | expect(mockNewRelic.send).not.toHaveBeenCalled(); 79 | uut.report('name', {inner: 123}); 80 | expect(mockNewRelic.send).toHaveBeenCalledTimes(1); 81 | expect(mockNewRelic.send).toHaveBeenCalledWith('name', {inner: '123'}); 82 | }); 83 | }); 84 | 85 | describe('attributes', () => { 86 | it('set a global attribute', () => { 87 | spyOn(mockNewRelic, 'setAttribute'); 88 | expect(mockNewRelic.setAttribute).not.toHaveBeenCalled(); 89 | uut.init({ 90 | globalAttributes: { 91 | always: 'send-this-attribute' 92 | } 93 | }); 94 | 95 | uut.report('name', {inner: 123}); 96 | expect(mockNewRelic.setAttribute).toHaveBeenCalledTimes(1); 97 | expect(mockNewRelic.setAttribute).toHaveBeenCalledWith('always', 'send-this-attribute'); 98 | }); 99 | }); 100 | 101 | describe('uncaught exception', () => { 102 | it('reports uncaught exceptions', () => { 103 | spyOn(mockNewRelic, 'send'); 104 | const originalErrorHandler = jasmine.createSpy('errorHandlerSpy'); 105 | const errorUtils = { 106 | _globalHandler: originalErrorHandler 107 | }; 108 | const error = new Error('some-exception'); 109 | 110 | uut._reportUncaughtExceptions(errorUtils); 111 | errorUtils._globalHandler(error); 112 | 113 | expect(originalErrorHandler).toHaveBeenCalledWith(error); 114 | expect(originalErrorHandler).toHaveBeenCalledTimes(1); 115 | expect(mockNewRelic.send).toHaveBeenCalledWith('JS:UncaughtException', { 116 | error: String(error), 117 | stack: error.stack 118 | }); 119 | }); 120 | }); 121 | 122 | describe('rejected promises', () => { 123 | it('reports rejected promises', () => { 124 | global.__DEV__ = false; 125 | uut._reportRejectedPromises(); 126 | 127 | expect(enablePromiseSpy).toHaveBeenCalledWith({ 128 | allRejections: true, onUnhandled: jasmine.anything(), onHandled: jasmine.anything() 129 | }); 130 | }); 131 | }); 132 | 133 | describe('overrideConsole', () => { 134 | const defaultLog = console.log; 135 | const defaultWarn = console.warn; 136 | const defaultError = console.error; 137 | beforeEach(() => { 138 | console.log = emptyFunction; 139 | console.warn = emptyFunction; 140 | console.error = emptyFunction; 141 | }); 142 | 143 | afterEach(() => { 144 | console.log = defaultLog; 145 | console.warn = defaultWarn; 146 | console.error = defaultError; 147 | }); 148 | 149 | it('overrides default console.log', () => { 150 | expect(console.error).toBe(emptyFunction); 151 | uut._overrideConsole(); 152 | expect(console.log).not.toBe(emptyFunction); 153 | }); 154 | 155 | it('overrides default console.warn', () => { 156 | expect(console.error).toBe(emptyFunction); 157 | uut._overrideConsole(); 158 | expect(console.warn).not.toBe(emptyFunction); 159 | }); 160 | 161 | it('overrides default console.error', () => { 162 | expect(console.error).toBe(emptyFunction); 163 | uut._overrideConsole(); 164 | expect(console.error).not.toBe(emptyFunction); 165 | }); 166 | 167 | it('sends console.log to logger', () => { 168 | spyOn(mockNewRelic, 'send'); 169 | uut._overrideConsole(); 170 | expect(mockNewRelic.send).not.toHaveBeenCalled(); 171 | console.log('hello'); 172 | expect(mockNewRelic.send).toHaveBeenCalledTimes(1); 173 | }); 174 | 175 | it('sends console.warn to logger', () => { 176 | spyOn(mockNewRelic, 'send'); 177 | uut._overrideConsole(); 178 | expect(mockNewRelic.send).not.toHaveBeenCalled(); 179 | console.warn('hello'); 180 | expect(mockNewRelic.send).toHaveBeenCalledTimes(1); 181 | }); 182 | 183 | it('sends console.error to logger', () => { 184 | spyOn(mockNewRelic, 'send'); 185 | uut._overrideConsole(); 186 | expect(mockNewRelic.send).not.toHaveBeenCalled(); 187 | console.error('hello'); 188 | expect(mockNewRelic.send).toHaveBeenCalledTimes(1); 189 | }); 190 | 191 | it('sends consoles to logger with name JSConsole', () => { 192 | let called = null; 193 | mockNewRelic.send = (name) => { 194 | called = name; 195 | }; 196 | uut._overrideConsole(); 197 | expect(called).toBeNull(); 198 | console.log('hello'); 199 | expect(called).toEqual('JSConsole'); 200 | console.warn('hello'); 201 | expect(called).toEqual('JSConsole'); 202 | console.error('hello'); 203 | expect(called).toEqual('JSConsole'); 204 | }); 205 | 206 | it('send consoles to logger with argument and consoleType', () => { 207 | spyOn(mockNewRelic, 'send'); 208 | uut._overrideConsole(); 209 | expect(mockNewRelic.send).not.toHaveBeenCalled(); 210 | console.log('hello1'); 211 | expect(mockNewRelic.send).toHaveBeenCalledWith('JSConsole', {consoleType: 'log', args: 'hello1'}); 212 | console.warn('hello2'); 213 | expect(mockNewRelic.send).toHaveBeenCalledWith('JSConsole', {consoleType: 'warn', args: 'hello2'}); 214 | console.error('hello3'); 215 | expect(mockNewRelic.send).toHaveBeenCalledWith('JSConsole', {consoleType: 'error', args: 'hello3'}); 216 | expect(mockNewRelic.send).toHaveBeenCalledTimes(3); 217 | }); 218 | 219 | it('send consoles error console to native log', () => { 220 | spyOn(mockNewRelic, 'send'); 221 | spyOn(mockNewRelic, 'nativeLog'); 222 | 223 | expect(mockNewRelic.send).not.toHaveBeenCalled(); 224 | 225 | uut._overrideConsole(); 226 | console.error('hello3'); 227 | 228 | expect(mockNewRelic.send).toHaveBeenCalledWith('JSConsole', {consoleType: 'error', args: 'hello3'}); 229 | expect(mockNewRelic.nativeLog).toHaveBeenCalledWith('[JSConsole:Error] hello3'); 230 | expect(mockNewRelic.send).toHaveBeenCalledTimes(1); 231 | }); 232 | 233 | it('send consoles to logger with argument seperated by comma and cast to string', () => { 234 | spyOn(mockNewRelic, 'send'); 235 | uut._overrideConsole(); 236 | expect(mockNewRelic.send).not.toHaveBeenCalled(); 237 | console.log('hello', 'world', 123, null, {inner: 1}); 238 | expect(mockNewRelic.send).toHaveBeenCalledWith('JSConsole', {consoleType: 'log', args: 'hello, world, 123, null, [object Object]'}); 239 | }); 240 | }); 241 | }); 242 | -------------------------------------------------------------------------------- /wallaby.js: -------------------------------------------------------------------------------- 1 | /*eslint-disable*/ 2 | 'use strict'; 3 | 4 | process.env.BABEL_ENV = 'test'; 5 | module.exports = function(wallaby) { 6 | return { 7 | env: { 8 | type: 'node' 9 | }, 10 | 11 | testFramework: 'jasmine', 12 | 13 | files: [ 14 | {pattern: 'node_modules/jasmine-expect/**/*.*', instrument: false, load: true}, 15 | 'src/**/*.js' 16 | ], 17 | 18 | tests: [ 19 | 'test/**/*.[Ss]pec.js' 20 | ], 21 | 22 | compilers: { 23 | '**/*.js': wallaby.compilers.babel() 24 | }, 25 | 26 | setup: (w) => { 27 | require('babel-polyfill'); 28 | require('app-root-path').setPath(w.projectCacheDir); 29 | } 30 | }; 31 | }; 32 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | abbrev@1: 6 | version "1.1.0" 7 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" 8 | 9 | acorn-jsx@^3.0.0: 10 | version "3.0.1" 11 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" 12 | dependencies: 13 | acorn "^3.0.4" 14 | 15 | acorn@^3.0.4: 16 | version "3.3.0" 17 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" 18 | 19 | acorn@^5.0.1: 20 | version "5.0.3" 21 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" 22 | 23 | add-matchers@0.5.0: 24 | version "0.5.0" 25 | resolved "https://registry.yarnpkg.com/add-matchers/-/add-matchers-0.5.0.tgz#502190e4750cd5721618393268b61a157366e765" 26 | 27 | ajv-keywords@^1.0.0: 28 | version "1.5.1" 29 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" 30 | 31 | ajv@^4.7.0, ajv@^4.9.1: 32 | version "4.11.5" 33 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.5.tgz#b6ee74657b993a01dce44b7944d56f485828d5bd" 34 | dependencies: 35 | co "^4.6.0" 36 | json-stable-stringify "^1.0.1" 37 | 38 | ansi-escapes@^1.1.0: 39 | version "1.4.0" 40 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" 41 | 42 | ansi-regex@^2.0.0: 43 | version "2.1.1" 44 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 45 | 46 | ansi-styles@^2.2.1: 47 | version "2.2.1" 48 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 49 | 50 | anymatch@^1.3.0: 51 | version "1.3.0" 52 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" 53 | dependencies: 54 | arrify "^1.0.0" 55 | micromatch "^2.1.5" 56 | 57 | app-root-path@latest: 58 | version "2.0.1" 59 | resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46" 60 | 61 | aproba@^1.0.3: 62 | version "1.1.1" 63 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" 64 | 65 | are-we-there-yet@~1.1.2: 66 | version "1.1.2" 67 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" 68 | dependencies: 69 | delegates "^1.0.0" 70 | readable-stream "^2.0.0 || ^1.1.13" 71 | 72 | argparse@^1.0.7: 73 | version "1.0.9" 74 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" 75 | dependencies: 76 | sprintf-js "~1.0.2" 77 | 78 | arr-diff@^2.0.0: 79 | version "2.0.0" 80 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 81 | dependencies: 82 | arr-flatten "^1.0.1" 83 | 84 | arr-flatten@^1.0.1: 85 | version "1.0.1" 86 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" 87 | 88 | array-union@^1.0.1: 89 | version "1.0.2" 90 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 91 | dependencies: 92 | array-uniq "^1.0.1" 93 | 94 | array-uniq@^1.0.1: 95 | version "1.0.3" 96 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 97 | 98 | array-unique@^0.2.1: 99 | version "0.2.1" 100 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 101 | 102 | array.prototype.find@^2.0.1: 103 | version "2.0.4" 104 | resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90" 105 | dependencies: 106 | define-properties "^1.1.2" 107 | es-abstract "^1.7.0" 108 | 109 | arrify@^1.0.0: 110 | version "1.0.1" 111 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 112 | 113 | asn1@~0.2.3: 114 | version "0.2.3" 115 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 116 | 117 | assert-plus@1.0.0, assert-plus@^1.0.0: 118 | version "1.0.0" 119 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 120 | 121 | assert-plus@^0.2.0: 122 | version "0.2.0" 123 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" 124 | 125 | async-each@^1.0.0: 126 | version "1.0.1" 127 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" 128 | 129 | asynckit@^0.4.0: 130 | version "0.4.0" 131 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 132 | 133 | aws-sign2@~0.6.0: 134 | version "0.6.0" 135 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" 136 | 137 | aws4@^1.2.1: 138 | version "1.6.0" 139 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" 140 | 141 | babel-cli@latest: 142 | version "6.24.0" 143 | resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.24.0.tgz#a05ffd210dca0c288a26d5319c5ac8669a265ad0" 144 | dependencies: 145 | babel-core "^6.24.0" 146 | babel-polyfill "^6.23.0" 147 | babel-register "^6.24.0" 148 | babel-runtime "^6.22.0" 149 | commander "^2.8.1" 150 | convert-source-map "^1.1.0" 151 | fs-readdir-recursive "^1.0.0" 152 | glob "^7.0.0" 153 | lodash "^4.2.0" 154 | output-file-sync "^1.1.0" 155 | path-is-absolute "^1.0.0" 156 | slash "^1.0.0" 157 | source-map "^0.5.0" 158 | v8flags "^2.0.10" 159 | optionalDependencies: 160 | chokidar "^1.6.1" 161 | 162 | babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: 163 | version "6.22.0" 164 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" 165 | dependencies: 166 | chalk "^1.1.0" 167 | esutils "^2.0.2" 168 | js-tokens "^3.0.0" 169 | 170 | babel-core@^6.24.0, babel-core@latest: 171 | version "6.24.0" 172 | resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.0.tgz#8f36a0a77f5c155aed6f920b844d23ba56742a02" 173 | dependencies: 174 | babel-code-frame "^6.22.0" 175 | babel-generator "^6.24.0" 176 | babel-helpers "^6.23.0" 177 | babel-messages "^6.23.0" 178 | babel-register "^6.24.0" 179 | babel-runtime "^6.22.0" 180 | babel-template "^6.23.0" 181 | babel-traverse "^6.23.1" 182 | babel-types "^6.23.0" 183 | babylon "^6.11.0" 184 | convert-source-map "^1.1.0" 185 | debug "^2.1.1" 186 | json5 "^0.5.0" 187 | lodash "^4.2.0" 188 | minimatch "^3.0.2" 189 | path-is-absolute "^1.0.0" 190 | private "^0.1.6" 191 | slash "^1.0.0" 192 | source-map "^0.5.0" 193 | 194 | babel-eslint@latest: 195 | version "7.2.1" 196 | resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.1.tgz#079422eb73ba811e3ca0865ce87af29327f8c52f" 197 | dependencies: 198 | babel-code-frame "^6.22.0" 199 | babel-traverse "^6.23.1" 200 | babel-types "^6.23.0" 201 | babylon "^6.16.1" 202 | 203 | babel-generator@^6.24.0: 204 | version "6.24.0" 205 | resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.0.tgz#eba270a8cc4ce6e09a61be43465d7c62c1f87c56" 206 | dependencies: 207 | babel-messages "^6.23.0" 208 | babel-runtime "^6.22.0" 209 | babel-types "^6.23.0" 210 | detect-indent "^4.0.0" 211 | jsesc "^1.3.0" 212 | lodash "^4.2.0" 213 | source-map "^0.5.0" 214 | trim-right "^1.0.1" 215 | 216 | babel-helper-bindify-decorators@^6.22.0: 217 | version "6.22.0" 218 | resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.22.0.tgz#d7f5bc261275941ac62acfc4e20dacfb8a3fe952" 219 | dependencies: 220 | babel-runtime "^6.22.0" 221 | babel-traverse "^6.22.0" 222 | babel-types "^6.22.0" 223 | 224 | babel-helper-builder-binary-assignment-operator-visitor@^6.22.0: 225 | version "6.22.0" 226 | resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.22.0.tgz#29df56be144d81bdeac08262bfa41d2c5e91cdcd" 227 | dependencies: 228 | babel-helper-explode-assignable-expression "^6.22.0" 229 | babel-runtime "^6.22.0" 230 | babel-types "^6.22.0" 231 | 232 | babel-helper-builder-react-jsx@^6.23.0: 233 | version "6.23.0" 234 | resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.23.0.tgz#d53fc8c996e0bc56d0de0fc4cc55a7138395ea4b" 235 | dependencies: 236 | babel-runtime "^6.22.0" 237 | babel-types "^6.23.0" 238 | esutils "^2.0.0" 239 | lodash "^4.2.0" 240 | 241 | babel-helper-call-delegate@^6.22.0: 242 | version "6.22.0" 243 | resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.22.0.tgz#119921b56120f17e9dae3f74b4f5cc7bcc1b37ef" 244 | dependencies: 245 | babel-helper-hoist-variables "^6.22.0" 246 | babel-runtime "^6.22.0" 247 | babel-traverse "^6.22.0" 248 | babel-types "^6.22.0" 249 | 250 | babel-helper-define-map@^6.23.0: 251 | version "6.23.0" 252 | resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.23.0.tgz#1444f960c9691d69a2ced6a205315f8fd00804e7" 253 | dependencies: 254 | babel-helper-function-name "^6.23.0" 255 | babel-runtime "^6.22.0" 256 | babel-types "^6.23.0" 257 | lodash "^4.2.0" 258 | 259 | babel-helper-explode-assignable-expression@^6.22.0: 260 | version "6.22.0" 261 | resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.22.0.tgz#c97bf76eed3e0bae4048121f2b9dae1a4e7d0478" 262 | dependencies: 263 | babel-runtime "^6.22.0" 264 | babel-traverse "^6.22.0" 265 | babel-types "^6.22.0" 266 | 267 | babel-helper-explode-class@^6.22.0: 268 | version "6.22.0" 269 | resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.22.0.tgz#646304924aa6388a516843ba7f1855ef8dfeb69b" 270 | dependencies: 271 | babel-helper-bindify-decorators "^6.22.0" 272 | babel-runtime "^6.22.0" 273 | babel-traverse "^6.22.0" 274 | babel-types "^6.22.0" 275 | 276 | babel-helper-function-name@^6.22.0, babel-helper-function-name@^6.23.0: 277 | version "6.23.0" 278 | resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.23.0.tgz#25742d67175c8903dbe4b6cb9d9e1fcb8dcf23a6" 279 | dependencies: 280 | babel-helper-get-function-arity "^6.22.0" 281 | babel-runtime "^6.22.0" 282 | babel-template "^6.23.0" 283 | babel-traverse "^6.23.0" 284 | babel-types "^6.23.0" 285 | 286 | babel-helper-get-function-arity@^6.22.0: 287 | version "6.22.0" 288 | resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.22.0.tgz#0beb464ad69dc7347410ac6ade9f03a50634f5ce" 289 | dependencies: 290 | babel-runtime "^6.22.0" 291 | babel-types "^6.22.0" 292 | 293 | babel-helper-hoist-variables@^6.22.0: 294 | version "6.22.0" 295 | resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.22.0.tgz#3eacbf731d80705845dd2e9718f600cfb9b4ba72" 296 | dependencies: 297 | babel-runtime "^6.22.0" 298 | babel-types "^6.22.0" 299 | 300 | babel-helper-optimise-call-expression@^6.23.0: 301 | version "6.23.0" 302 | resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.23.0.tgz#f3ee7eed355b4282138b33d02b78369e470622f5" 303 | dependencies: 304 | babel-runtime "^6.22.0" 305 | babel-types "^6.23.0" 306 | 307 | babel-helper-regex@^6.22.0: 308 | version "6.22.0" 309 | resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.22.0.tgz#79f532be1647b1f0ee3474b5f5c3da58001d247d" 310 | dependencies: 311 | babel-runtime "^6.22.0" 312 | babel-types "^6.22.0" 313 | lodash "^4.2.0" 314 | 315 | babel-helper-remap-async-to-generator@^6.22.0: 316 | version "6.22.0" 317 | resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.22.0.tgz#2186ae73278ed03b8b15ced089609da981053383" 318 | dependencies: 319 | babel-helper-function-name "^6.22.0" 320 | babel-runtime "^6.22.0" 321 | babel-template "^6.22.0" 322 | babel-traverse "^6.22.0" 323 | babel-types "^6.22.0" 324 | 325 | babel-helper-replace-supers@^6.22.0, babel-helper-replace-supers@^6.23.0: 326 | version "6.23.0" 327 | resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.23.0.tgz#eeaf8ad9b58ec4337ca94223bacdca1f8d9b4bfd" 328 | dependencies: 329 | babel-helper-optimise-call-expression "^6.23.0" 330 | babel-messages "^6.23.0" 331 | babel-runtime "^6.22.0" 332 | babel-template "^6.23.0" 333 | babel-traverse "^6.23.0" 334 | babel-types "^6.23.0" 335 | 336 | babel-helpers@^6.23.0: 337 | version "6.23.0" 338 | resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.23.0.tgz#4f8f2e092d0b6a8808a4bde79c27f1e2ecf0d992" 339 | dependencies: 340 | babel-runtime "^6.22.0" 341 | babel-template "^6.23.0" 342 | 343 | babel-messages@^6.23.0: 344 | version "6.23.0" 345 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" 346 | dependencies: 347 | babel-runtime "^6.22.0" 348 | 349 | babel-plugin-check-es2015-constants@^6.22.0: 350 | version "6.22.0" 351 | resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" 352 | dependencies: 353 | babel-runtime "^6.22.0" 354 | 355 | babel-plugin-syntax-async-functions@^6.8.0: 356 | version "6.13.0" 357 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" 358 | 359 | babel-plugin-syntax-async-generators@^6.5.0: 360 | version "6.13.0" 361 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" 362 | 363 | babel-plugin-syntax-class-constructor-call@^6.18.0: 364 | version "6.18.0" 365 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" 366 | 367 | babel-plugin-syntax-class-properties@^6.8.0: 368 | version "6.13.0" 369 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" 370 | 371 | babel-plugin-syntax-decorators@^6.13.0: 372 | version "6.13.0" 373 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" 374 | 375 | babel-plugin-syntax-do-expressions@^6.8.0: 376 | version "6.13.0" 377 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz#5747756139aa26d390d09410b03744ba07e4796d" 378 | 379 | babel-plugin-syntax-dynamic-import@^6.18.0: 380 | version "6.18.0" 381 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" 382 | 383 | babel-plugin-syntax-exponentiation-operator@^6.8.0: 384 | version "6.13.0" 385 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" 386 | 387 | babel-plugin-syntax-export-extensions@^6.8.0: 388 | version "6.13.0" 389 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" 390 | 391 | babel-plugin-syntax-flow@^6.18.0: 392 | version "6.18.0" 393 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" 394 | 395 | babel-plugin-syntax-function-bind@^6.8.0: 396 | version "6.13.0" 397 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46" 398 | 399 | babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: 400 | version "6.18.0" 401 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" 402 | 403 | babel-plugin-syntax-object-rest-spread@^6.8.0: 404 | version "6.13.0" 405 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" 406 | 407 | babel-plugin-syntax-trailing-function-commas@^6.22.0: 408 | version "6.22.0" 409 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" 410 | 411 | babel-plugin-transform-async-generator-functions@^6.22.0: 412 | version "6.22.0" 413 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.22.0.tgz#a720a98153a7596f204099cd5409f4b3c05bab46" 414 | dependencies: 415 | babel-helper-remap-async-to-generator "^6.22.0" 416 | babel-plugin-syntax-async-generators "^6.5.0" 417 | babel-runtime "^6.22.0" 418 | 419 | babel-plugin-transform-async-to-generator@^6.22.0: 420 | version "6.22.0" 421 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.22.0.tgz#194b6938ec195ad36efc4c33a971acf00d8cd35e" 422 | dependencies: 423 | babel-helper-remap-async-to-generator "^6.22.0" 424 | babel-plugin-syntax-async-functions "^6.8.0" 425 | babel-runtime "^6.22.0" 426 | 427 | babel-plugin-transform-class-constructor-call@^6.22.0: 428 | version "6.22.0" 429 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.22.0.tgz#11a4d2216abb5b0eef298b493748f4f2f4869120" 430 | dependencies: 431 | babel-plugin-syntax-class-constructor-call "^6.18.0" 432 | babel-runtime "^6.22.0" 433 | babel-template "^6.22.0" 434 | 435 | babel-plugin-transform-class-properties@^6.22.0: 436 | version "6.23.0" 437 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.23.0.tgz#187b747ee404399013563c993db038f34754ac3b" 438 | dependencies: 439 | babel-helper-function-name "^6.23.0" 440 | babel-plugin-syntax-class-properties "^6.8.0" 441 | babel-runtime "^6.22.0" 442 | babel-template "^6.23.0" 443 | 444 | babel-plugin-transform-decorators@^6.22.0: 445 | version "6.22.0" 446 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.22.0.tgz#c03635b27a23b23b7224f49232c237a73988d27c" 447 | dependencies: 448 | babel-helper-explode-class "^6.22.0" 449 | babel-plugin-syntax-decorators "^6.13.0" 450 | babel-runtime "^6.22.0" 451 | babel-template "^6.22.0" 452 | babel-types "^6.22.0" 453 | 454 | babel-plugin-transform-do-expressions@^6.22.0: 455 | version "6.22.0" 456 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz#28ccaf92812d949c2cd1281f690c8fdc468ae9bb" 457 | dependencies: 458 | babel-plugin-syntax-do-expressions "^6.8.0" 459 | babel-runtime "^6.22.0" 460 | 461 | babel-plugin-transform-es2015-arrow-functions@^6.22.0: 462 | version "6.22.0" 463 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" 464 | dependencies: 465 | babel-runtime "^6.22.0" 466 | 467 | babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: 468 | version "6.22.0" 469 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" 470 | dependencies: 471 | babel-runtime "^6.22.0" 472 | 473 | babel-plugin-transform-es2015-block-scoping@^6.22.0: 474 | version "6.23.0" 475 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.23.0.tgz#e48895cf0b375be148cd7c8879b422707a053b51" 476 | dependencies: 477 | babel-runtime "^6.22.0" 478 | babel-template "^6.23.0" 479 | babel-traverse "^6.23.0" 480 | babel-types "^6.23.0" 481 | lodash "^4.2.0" 482 | 483 | babel-plugin-transform-es2015-classes@^6.22.0: 484 | version "6.23.0" 485 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.23.0.tgz#49b53f326202a2fd1b3bbaa5e2edd8a4f78643c1" 486 | dependencies: 487 | babel-helper-define-map "^6.23.0" 488 | babel-helper-function-name "^6.23.0" 489 | babel-helper-optimise-call-expression "^6.23.0" 490 | babel-helper-replace-supers "^6.23.0" 491 | babel-messages "^6.23.0" 492 | babel-runtime "^6.22.0" 493 | babel-template "^6.23.0" 494 | babel-traverse "^6.23.0" 495 | babel-types "^6.23.0" 496 | 497 | babel-plugin-transform-es2015-computed-properties@^6.22.0: 498 | version "6.22.0" 499 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.22.0.tgz#7c383e9629bba4820c11b0425bdd6290f7f057e7" 500 | dependencies: 501 | babel-runtime "^6.22.0" 502 | babel-template "^6.22.0" 503 | 504 | babel-plugin-transform-es2015-destructuring@^6.22.0: 505 | version "6.23.0" 506 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" 507 | dependencies: 508 | babel-runtime "^6.22.0" 509 | 510 | babel-plugin-transform-es2015-duplicate-keys@^6.22.0: 511 | version "6.22.0" 512 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.22.0.tgz#672397031c21610d72dd2bbb0ba9fb6277e1c36b" 513 | dependencies: 514 | babel-runtime "^6.22.0" 515 | babel-types "^6.22.0" 516 | 517 | babel-plugin-transform-es2015-for-of@^6.22.0: 518 | version "6.23.0" 519 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" 520 | dependencies: 521 | babel-runtime "^6.22.0" 522 | 523 | babel-plugin-transform-es2015-function-name@^6.22.0: 524 | version "6.22.0" 525 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.22.0.tgz#f5fcc8b09093f9a23c76ac3d9e392c3ec4b77104" 526 | dependencies: 527 | babel-helper-function-name "^6.22.0" 528 | babel-runtime "^6.22.0" 529 | babel-types "^6.22.0" 530 | 531 | babel-plugin-transform-es2015-literals@^6.22.0: 532 | version "6.22.0" 533 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" 534 | dependencies: 535 | babel-runtime "^6.22.0" 536 | 537 | babel-plugin-transform-es2015-modules-amd@^6.24.0: 538 | version "6.24.0" 539 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.0.tgz#a1911fb9b7ec7e05a43a63c5995007557bcf6a2e" 540 | dependencies: 541 | babel-plugin-transform-es2015-modules-commonjs "^6.24.0" 542 | babel-runtime "^6.22.0" 543 | babel-template "^6.22.0" 544 | 545 | babel-plugin-transform-es2015-modules-commonjs@^6.24.0: 546 | version "6.24.0" 547 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.0.tgz#e921aefb72c2cc26cb03d107626156413222134f" 548 | dependencies: 549 | babel-plugin-transform-strict-mode "^6.22.0" 550 | babel-runtime "^6.22.0" 551 | babel-template "^6.23.0" 552 | babel-types "^6.23.0" 553 | 554 | babel-plugin-transform-es2015-modules-systemjs@^6.22.0: 555 | version "6.23.0" 556 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.23.0.tgz#ae3469227ffac39b0310d90fec73bfdc4f6317b0" 557 | dependencies: 558 | babel-helper-hoist-variables "^6.22.0" 559 | babel-runtime "^6.22.0" 560 | babel-template "^6.23.0" 561 | 562 | babel-plugin-transform-es2015-modules-umd@^6.24.0: 563 | version "6.24.0" 564 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.0.tgz#fd5fa63521cae8d273927c3958afd7c067733450" 565 | dependencies: 566 | babel-plugin-transform-es2015-modules-amd "^6.24.0" 567 | babel-runtime "^6.22.0" 568 | babel-template "^6.23.0" 569 | 570 | babel-plugin-transform-es2015-object-super@^6.22.0: 571 | version "6.22.0" 572 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.22.0.tgz#daa60e114a042ea769dd53fe528fc82311eb98fc" 573 | dependencies: 574 | babel-helper-replace-supers "^6.22.0" 575 | babel-runtime "^6.22.0" 576 | 577 | babel-plugin-transform-es2015-parameters@^6.22.0: 578 | version "6.23.0" 579 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.23.0.tgz#3a2aabb70c8af945d5ce386f1a4250625a83ae3b" 580 | dependencies: 581 | babel-helper-call-delegate "^6.22.0" 582 | babel-helper-get-function-arity "^6.22.0" 583 | babel-runtime "^6.22.0" 584 | babel-template "^6.23.0" 585 | babel-traverse "^6.23.0" 586 | babel-types "^6.23.0" 587 | 588 | babel-plugin-transform-es2015-shorthand-properties@^6.22.0: 589 | version "6.22.0" 590 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.22.0.tgz#8ba776e0affaa60bff21e921403b8a652a2ff723" 591 | dependencies: 592 | babel-runtime "^6.22.0" 593 | babel-types "^6.22.0" 594 | 595 | babel-plugin-transform-es2015-spread@^6.22.0: 596 | version "6.22.0" 597 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" 598 | dependencies: 599 | babel-runtime "^6.22.0" 600 | 601 | babel-plugin-transform-es2015-sticky-regex@^6.22.0: 602 | version "6.22.0" 603 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.22.0.tgz#ab316829e866ee3f4b9eb96939757d19a5bc4593" 604 | dependencies: 605 | babel-helper-regex "^6.22.0" 606 | babel-runtime "^6.22.0" 607 | babel-types "^6.22.0" 608 | 609 | babel-plugin-transform-es2015-template-literals@^6.22.0: 610 | version "6.22.0" 611 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" 612 | dependencies: 613 | babel-runtime "^6.22.0" 614 | 615 | babel-plugin-transform-es2015-typeof-symbol@^6.22.0: 616 | version "6.23.0" 617 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" 618 | dependencies: 619 | babel-runtime "^6.22.0" 620 | 621 | babel-plugin-transform-es2015-unicode-regex@^6.22.0: 622 | version "6.22.0" 623 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.22.0.tgz#8d9cc27e7ee1decfe65454fb986452a04a613d20" 624 | dependencies: 625 | babel-helper-regex "^6.22.0" 626 | babel-runtime "^6.22.0" 627 | regexpu-core "^2.0.0" 628 | 629 | babel-plugin-transform-exponentiation-operator@^6.22.0: 630 | version "6.22.0" 631 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.22.0.tgz#d57c8335281918e54ef053118ce6eb108468084d" 632 | dependencies: 633 | babel-helper-builder-binary-assignment-operator-visitor "^6.22.0" 634 | babel-plugin-syntax-exponentiation-operator "^6.8.0" 635 | babel-runtime "^6.22.0" 636 | 637 | babel-plugin-transform-export-extensions@^6.22.0: 638 | version "6.22.0" 639 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" 640 | dependencies: 641 | babel-plugin-syntax-export-extensions "^6.8.0" 642 | babel-runtime "^6.22.0" 643 | 644 | babel-plugin-transform-flow-strip-types@^6.22.0: 645 | version "6.22.0" 646 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" 647 | dependencies: 648 | babel-plugin-syntax-flow "^6.18.0" 649 | babel-runtime "^6.22.0" 650 | 651 | babel-plugin-transform-function-bind@^6.22.0: 652 | version "6.22.0" 653 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz#c6fb8e96ac296a310b8cf8ea401462407ddf6a97" 654 | dependencies: 655 | babel-plugin-syntax-function-bind "^6.8.0" 656 | babel-runtime "^6.22.0" 657 | 658 | babel-plugin-transform-object-rest-spread@^6.22.0: 659 | version "6.23.0" 660 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921" 661 | dependencies: 662 | babel-plugin-syntax-object-rest-spread "^6.8.0" 663 | babel-runtime "^6.22.0" 664 | 665 | babel-plugin-transform-react-display-name@^6.23.0: 666 | version "6.23.0" 667 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.23.0.tgz#4398910c358441dc4cef18787264d0412ed36b37" 668 | dependencies: 669 | babel-runtime "^6.22.0" 670 | 671 | babel-plugin-transform-react-jsx-self@^6.22.0: 672 | version "6.22.0" 673 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e" 674 | dependencies: 675 | babel-plugin-syntax-jsx "^6.8.0" 676 | babel-runtime "^6.22.0" 677 | 678 | babel-plugin-transform-react-jsx-source@^6.22.0: 679 | version "6.22.0" 680 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6" 681 | dependencies: 682 | babel-plugin-syntax-jsx "^6.8.0" 683 | babel-runtime "^6.22.0" 684 | 685 | babel-plugin-transform-react-jsx@^6.23.0: 686 | version "6.23.0" 687 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.23.0.tgz#23e892f7f2e759678eb5e4446a8f8e94e81b3470" 688 | dependencies: 689 | babel-helper-builder-react-jsx "^6.23.0" 690 | babel-plugin-syntax-jsx "^6.8.0" 691 | babel-runtime "^6.22.0" 692 | 693 | babel-plugin-transform-regenerator@^6.22.0: 694 | version "6.22.0" 695 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.22.0.tgz#65740593a319c44522157538d690b84094617ea6" 696 | dependencies: 697 | regenerator-transform "0.9.8" 698 | 699 | babel-plugin-transform-strict-mode@^6.22.0: 700 | version "6.22.0" 701 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.22.0.tgz#e008df01340fdc87e959da65991b7e05970c8c7c" 702 | dependencies: 703 | babel-runtime "^6.22.0" 704 | babel-types "^6.22.0" 705 | 706 | babel-polyfill@^6.23.0, babel-polyfill@latest: 707 | version "6.23.0" 708 | resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d" 709 | dependencies: 710 | babel-runtime "^6.22.0" 711 | core-js "^2.4.0" 712 | regenerator-runtime "^0.10.0" 713 | 714 | babel-preset-es2015@latest: 715 | version "6.24.0" 716 | resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.0.tgz#c162d68b1932696e036cd3110dc1ccd303d2673a" 717 | dependencies: 718 | babel-plugin-check-es2015-constants "^6.22.0" 719 | babel-plugin-transform-es2015-arrow-functions "^6.22.0" 720 | babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" 721 | babel-plugin-transform-es2015-block-scoping "^6.22.0" 722 | babel-plugin-transform-es2015-classes "^6.22.0" 723 | babel-plugin-transform-es2015-computed-properties "^6.22.0" 724 | babel-plugin-transform-es2015-destructuring "^6.22.0" 725 | babel-plugin-transform-es2015-duplicate-keys "^6.22.0" 726 | babel-plugin-transform-es2015-for-of "^6.22.0" 727 | babel-plugin-transform-es2015-function-name "^6.22.0" 728 | babel-plugin-transform-es2015-literals "^6.22.0" 729 | babel-plugin-transform-es2015-modules-amd "^6.24.0" 730 | babel-plugin-transform-es2015-modules-commonjs "^6.24.0" 731 | babel-plugin-transform-es2015-modules-systemjs "^6.22.0" 732 | babel-plugin-transform-es2015-modules-umd "^6.24.0" 733 | babel-plugin-transform-es2015-object-super "^6.22.0" 734 | babel-plugin-transform-es2015-parameters "^6.22.0" 735 | babel-plugin-transform-es2015-shorthand-properties "^6.22.0" 736 | babel-plugin-transform-es2015-spread "^6.22.0" 737 | babel-plugin-transform-es2015-sticky-regex "^6.22.0" 738 | babel-plugin-transform-es2015-template-literals "^6.22.0" 739 | babel-plugin-transform-es2015-typeof-symbol "^6.22.0" 740 | babel-plugin-transform-es2015-unicode-regex "^6.22.0" 741 | babel-plugin-transform-regenerator "^6.22.0" 742 | 743 | babel-preset-flow@^6.23.0: 744 | version "6.23.0" 745 | resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d" 746 | dependencies: 747 | babel-plugin-transform-flow-strip-types "^6.22.0" 748 | 749 | babel-preset-react@latest: 750 | version "6.23.0" 751 | resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.23.0.tgz#eb7cee4de98a3f94502c28565332da9819455195" 752 | dependencies: 753 | babel-plugin-syntax-jsx "^6.3.13" 754 | babel-plugin-transform-react-display-name "^6.23.0" 755 | babel-plugin-transform-react-jsx "^6.23.0" 756 | babel-plugin-transform-react-jsx-self "^6.22.0" 757 | babel-plugin-transform-react-jsx-source "^6.22.0" 758 | babel-preset-flow "^6.23.0" 759 | 760 | babel-preset-stage-0@latest: 761 | version "6.22.0" 762 | resolved "https://registry.yarnpkg.com/babel-preset-stage-0/-/babel-preset-stage-0-6.22.0.tgz#707eeb5b415da769eff9c42f4547f644f9296ef9" 763 | dependencies: 764 | babel-plugin-transform-do-expressions "^6.22.0" 765 | babel-plugin-transform-function-bind "^6.22.0" 766 | babel-preset-stage-1 "^6.22.0" 767 | 768 | babel-preset-stage-1@^6.22.0: 769 | version "6.22.0" 770 | resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.22.0.tgz#7da05bffea6ad5a10aef93e320cfc6dd465dbc1a" 771 | dependencies: 772 | babel-plugin-transform-class-constructor-call "^6.22.0" 773 | babel-plugin-transform-export-extensions "^6.22.0" 774 | babel-preset-stage-2 "^6.22.0" 775 | 776 | babel-preset-stage-2@^6.22.0: 777 | version "6.22.0" 778 | resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.22.0.tgz#ccd565f19c245cade394b21216df704a73b27c07" 779 | dependencies: 780 | babel-plugin-syntax-dynamic-import "^6.18.0" 781 | babel-plugin-transform-class-properties "^6.22.0" 782 | babel-plugin-transform-decorators "^6.22.0" 783 | babel-preset-stage-3 "^6.22.0" 784 | 785 | babel-preset-stage-3@^6.22.0: 786 | version "6.22.0" 787 | resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.22.0.tgz#a4e92bbace7456fafdf651d7a7657ee0bbca9c2e" 788 | dependencies: 789 | babel-plugin-syntax-trailing-function-commas "^6.22.0" 790 | babel-plugin-transform-async-generator-functions "^6.22.0" 791 | babel-plugin-transform-async-to-generator "^6.22.0" 792 | babel-plugin-transform-exponentiation-operator "^6.22.0" 793 | babel-plugin-transform-object-rest-spread "^6.22.0" 794 | 795 | babel-register@^6.24.0, babel-register@latest: 796 | version "6.24.0" 797 | resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.0.tgz#5e89f8463ba9970356d02eb07dabe3308b080cfd" 798 | dependencies: 799 | babel-core "^6.24.0" 800 | babel-runtime "^6.22.0" 801 | core-js "^2.4.0" 802 | home-or-tmp "^2.0.0" 803 | lodash "^4.2.0" 804 | mkdirp "^0.5.1" 805 | source-map-support "^0.4.2" 806 | 807 | babel-runtime@^6.18.0, babel-runtime@^6.22.0: 808 | version "6.23.0" 809 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" 810 | dependencies: 811 | core-js "^2.4.0" 812 | regenerator-runtime "^0.10.0" 813 | 814 | babel-template@^6.22.0, babel-template@^6.23.0: 815 | version "6.23.0" 816 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638" 817 | dependencies: 818 | babel-runtime "^6.22.0" 819 | babel-traverse "^6.23.0" 820 | babel-types "^6.23.0" 821 | babylon "^6.11.0" 822 | lodash "^4.2.0" 823 | 824 | babel-traverse@^6.22.0, babel-traverse@^6.23.0, babel-traverse@^6.23.1: 825 | version "6.23.1" 826 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48" 827 | dependencies: 828 | babel-code-frame "^6.22.0" 829 | babel-messages "^6.23.0" 830 | babel-runtime "^6.22.0" 831 | babel-types "^6.23.0" 832 | babylon "^6.15.0" 833 | debug "^2.2.0" 834 | globals "^9.0.0" 835 | invariant "^2.2.0" 836 | lodash "^4.2.0" 837 | 838 | babel-types@^6.19.0, babel-types@^6.22.0, babel-types@^6.23.0: 839 | version "6.23.0" 840 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf" 841 | dependencies: 842 | babel-runtime "^6.22.0" 843 | esutils "^2.0.2" 844 | lodash "^4.2.0" 845 | to-fast-properties "^1.0.1" 846 | 847 | babylon@^6.11.0, babylon@^6.15.0, babylon@^6.16.1: 848 | version "6.16.1" 849 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3" 850 | 851 | balanced-match@^0.4.1: 852 | version "0.4.2" 853 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" 854 | 855 | bcrypt-pbkdf@^1.0.0: 856 | version "1.0.1" 857 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" 858 | dependencies: 859 | tweetnacl "^0.14.3" 860 | 861 | binary-extensions@^1.0.0: 862 | version "1.8.0" 863 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" 864 | 865 | block-stream@*: 866 | version "0.0.9" 867 | resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" 868 | dependencies: 869 | inherits "~2.0.0" 870 | 871 | boom@2.x.x: 872 | version "2.10.1" 873 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" 874 | dependencies: 875 | hoek "2.x.x" 876 | 877 | brace-expansion@^1.0.0: 878 | version "1.1.6" 879 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" 880 | dependencies: 881 | balanced-match "^0.4.1" 882 | concat-map "0.0.1" 883 | 884 | braces@^1.8.2: 885 | version "1.8.5" 886 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 887 | dependencies: 888 | expand-range "^1.8.1" 889 | preserve "^0.2.0" 890 | repeat-element "^1.1.2" 891 | 892 | buffer-shims@^1.0.0: 893 | version "1.0.0" 894 | resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" 895 | 896 | caller-path@^0.1.0: 897 | version "0.1.0" 898 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" 899 | dependencies: 900 | callsites "^0.2.0" 901 | 902 | callsites@^0.2.0: 903 | version "0.2.0" 904 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" 905 | 906 | caseless@~0.12.0: 907 | version "0.12.0" 908 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 909 | 910 | chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: 911 | version "1.1.3" 912 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 913 | dependencies: 914 | ansi-styles "^2.2.1" 915 | escape-string-regexp "^1.0.2" 916 | has-ansi "^2.0.0" 917 | strip-ansi "^3.0.0" 918 | supports-color "^2.0.0" 919 | 920 | chokidar@^1.6.1: 921 | version "1.6.1" 922 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" 923 | dependencies: 924 | anymatch "^1.3.0" 925 | async-each "^1.0.0" 926 | glob-parent "^2.0.0" 927 | inherits "^2.0.1" 928 | is-binary-path "^1.0.0" 929 | is-glob "^2.0.0" 930 | path-is-absolute "^1.0.0" 931 | readdirp "^2.0.0" 932 | optionalDependencies: 933 | fsevents "^1.0.0" 934 | 935 | circular-json@^0.3.1: 936 | version "0.3.1" 937 | resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" 938 | 939 | cli-cursor@^1.0.1: 940 | version "1.0.2" 941 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" 942 | dependencies: 943 | restore-cursor "^1.0.1" 944 | 945 | cli-width@^2.0.0: 946 | version "2.1.0" 947 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" 948 | 949 | co@^4.6.0: 950 | version "4.6.0" 951 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 952 | 953 | code-point-at@^1.0.0: 954 | version "1.1.0" 955 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 956 | 957 | colors@1.1.2: 958 | version "1.1.2" 959 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" 960 | 961 | combined-stream@^1.0.5, combined-stream@~1.0.5: 962 | version "1.0.5" 963 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" 964 | dependencies: 965 | delayed-stream "~1.0.0" 966 | 967 | commander@^2.8.1: 968 | version "2.9.0" 969 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" 970 | dependencies: 971 | graceful-readlink ">= 1.0.0" 972 | 973 | concat-map@0.0.1: 974 | version "0.0.1" 975 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 976 | 977 | concat-stream@^1.5.2: 978 | version "1.6.0" 979 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" 980 | dependencies: 981 | inherits "^2.0.3" 982 | readable-stream "^2.2.2" 983 | typedarray "^0.0.6" 984 | 985 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 986 | version "1.1.0" 987 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 988 | 989 | convert-source-map@^1.1.0: 990 | version "1.5.0" 991 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" 992 | 993 | core-js@^2.4.0: 994 | version "2.4.1" 995 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" 996 | 997 | core-util-is@~1.0.0: 998 | version "1.0.2" 999 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 1000 | 1001 | cryptiles@2.x.x: 1002 | version "2.0.5" 1003 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" 1004 | dependencies: 1005 | boom "2.x.x" 1006 | 1007 | d@1: 1008 | version "1.0.0" 1009 | resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" 1010 | dependencies: 1011 | es5-ext "^0.10.9" 1012 | 1013 | dashdash@^1.12.0: 1014 | version "1.14.1" 1015 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 1016 | dependencies: 1017 | assert-plus "^1.0.0" 1018 | 1019 | debug@^2.1.1, debug@^2.2.0: 1020 | version "2.6.3" 1021 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d" 1022 | dependencies: 1023 | ms "0.7.2" 1024 | 1025 | deep-extend@~0.4.0: 1026 | version "0.4.1" 1027 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" 1028 | 1029 | deep-is@~0.1.3: 1030 | version "0.1.3" 1031 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 1032 | 1033 | define-properties@^1.1.2: 1034 | version "1.1.2" 1035 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" 1036 | dependencies: 1037 | foreach "^2.0.5" 1038 | object-keys "^1.0.8" 1039 | 1040 | del@^2.0.2: 1041 | version "2.2.2" 1042 | resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" 1043 | dependencies: 1044 | globby "^5.0.0" 1045 | is-path-cwd "^1.0.0" 1046 | is-path-in-cwd "^1.0.0" 1047 | object-assign "^4.0.1" 1048 | pify "^2.0.0" 1049 | pinkie-promise "^2.0.0" 1050 | rimraf "^2.2.8" 1051 | 1052 | delayed-stream@~1.0.0: 1053 | version "1.0.0" 1054 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 1055 | 1056 | delegates@^1.0.0: 1057 | version "1.0.0" 1058 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 1059 | 1060 | detect-indent@^4.0.0: 1061 | version "4.0.0" 1062 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" 1063 | dependencies: 1064 | repeating "^2.0.0" 1065 | 1066 | doctrine@^1.2.2: 1067 | version "1.5.0" 1068 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 1069 | dependencies: 1070 | esutils "^2.0.2" 1071 | isarray "^1.0.0" 1072 | 1073 | doctrine@^2.0.0: 1074 | version "2.0.0" 1075 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" 1076 | dependencies: 1077 | esutils "^2.0.2" 1078 | isarray "^1.0.0" 1079 | 1080 | ecc-jsbn@~0.1.1: 1081 | version "0.1.1" 1082 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 1083 | dependencies: 1084 | jsbn "~0.1.0" 1085 | 1086 | es-abstract@^1.7.0: 1087 | version "1.7.0" 1088 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" 1089 | dependencies: 1090 | es-to-primitive "^1.1.1" 1091 | function-bind "^1.1.0" 1092 | is-callable "^1.1.3" 1093 | is-regex "^1.0.3" 1094 | 1095 | es-to-primitive@^1.1.1: 1096 | version "1.1.1" 1097 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" 1098 | dependencies: 1099 | is-callable "^1.1.1" 1100 | is-date-object "^1.0.1" 1101 | is-symbol "^1.0.1" 1102 | 1103 | es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: 1104 | version "0.10.15" 1105 | resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.15.tgz#c330a5934c1ee21284a7c081a86e5fd937c91ea6" 1106 | dependencies: 1107 | es6-iterator "2" 1108 | es6-symbol "~3.1" 1109 | 1110 | es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: 1111 | version "2.0.1" 1112 | resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" 1113 | dependencies: 1114 | d "1" 1115 | es5-ext "^0.10.14" 1116 | es6-symbol "^3.1" 1117 | 1118 | es6-map@^0.1.3: 1119 | version "0.1.5" 1120 | resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" 1121 | dependencies: 1122 | d "1" 1123 | es5-ext "~0.10.14" 1124 | es6-iterator "~2.0.1" 1125 | es6-set "~0.1.5" 1126 | es6-symbol "~3.1.1" 1127 | event-emitter "~0.3.5" 1128 | 1129 | es6-set@~0.1.5: 1130 | version "0.1.5" 1131 | resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" 1132 | dependencies: 1133 | d "1" 1134 | es5-ext "~0.10.14" 1135 | es6-iterator "~2.0.1" 1136 | es6-symbol "3.1.1" 1137 | event-emitter "~0.3.5" 1138 | 1139 | es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: 1140 | version "3.1.1" 1141 | resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" 1142 | dependencies: 1143 | d "1" 1144 | es5-ext "~0.10.14" 1145 | 1146 | es6-weak-map@^2.0.1: 1147 | version "2.0.2" 1148 | resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" 1149 | dependencies: 1150 | d "1" 1151 | es5-ext "^0.10.14" 1152 | es6-iterator "^2.0.1" 1153 | es6-symbol "^3.1.1" 1154 | 1155 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 1156 | version "1.0.5" 1157 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1158 | 1159 | escope@^3.6.0: 1160 | version "3.6.0" 1161 | resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" 1162 | dependencies: 1163 | es6-map "^0.1.3" 1164 | es6-weak-map "^2.0.1" 1165 | esrecurse "^4.1.0" 1166 | estraverse "^4.1.1" 1167 | 1168 | eslint-plugin-babel@latest: 1169 | version "4.1.1" 1170 | resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-4.1.1.tgz#ef285c87039b67beb3bbd227f5b0eed4fb376b87" 1171 | 1172 | eslint-plugin-react-native@latest: 1173 | version "2.3.1" 1174 | resolved "https://registry.yarnpkg.com/eslint-plugin-react-native/-/eslint-plugin-react-native-2.3.1.tgz#9ecd1df4f29c23a9a20c415c8e88466ff3724f0e" 1175 | 1176 | eslint-plugin-react@latest: 1177 | version "6.10.3" 1178 | resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz#c5435beb06774e12c7db2f6abaddcbf900cd3f78" 1179 | dependencies: 1180 | array.prototype.find "^2.0.1" 1181 | doctrine "^1.2.2" 1182 | has "^1.0.1" 1183 | jsx-ast-utils "^1.3.4" 1184 | object.assign "^4.0.4" 1185 | 1186 | eslint@latest: 1187 | version "3.19.0" 1188 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" 1189 | dependencies: 1190 | babel-code-frame "^6.16.0" 1191 | chalk "^1.1.3" 1192 | concat-stream "^1.5.2" 1193 | debug "^2.1.1" 1194 | doctrine "^2.0.0" 1195 | escope "^3.6.0" 1196 | espree "^3.4.0" 1197 | esquery "^1.0.0" 1198 | estraverse "^4.2.0" 1199 | esutils "^2.0.2" 1200 | file-entry-cache "^2.0.0" 1201 | glob "^7.0.3" 1202 | globals "^9.14.0" 1203 | ignore "^3.2.0" 1204 | imurmurhash "^0.1.4" 1205 | inquirer "^0.12.0" 1206 | is-my-json-valid "^2.10.0" 1207 | is-resolvable "^1.0.0" 1208 | js-yaml "^3.5.1" 1209 | json-stable-stringify "^1.0.0" 1210 | levn "^0.3.0" 1211 | lodash "^4.0.0" 1212 | mkdirp "^0.5.0" 1213 | natural-compare "^1.4.0" 1214 | optionator "^0.8.2" 1215 | path-is-inside "^1.0.1" 1216 | pluralize "^1.2.1" 1217 | progress "^1.1.8" 1218 | require-uncached "^1.0.2" 1219 | shelljs "^0.7.5" 1220 | strip-bom "^3.0.0" 1221 | strip-json-comments "~2.0.1" 1222 | table "^3.7.8" 1223 | text-table "~0.2.0" 1224 | user-home "^2.0.0" 1225 | 1226 | espree@^3.4.0: 1227 | version "3.4.1" 1228 | resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.1.tgz#28a83ab4aaed71ed8fe0f5efe61b76a05c13c4d2" 1229 | dependencies: 1230 | acorn "^5.0.1" 1231 | acorn-jsx "^3.0.0" 1232 | 1233 | esprima@^3.1.1: 1234 | version "3.1.3" 1235 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" 1236 | 1237 | esquery@^1.0.0: 1238 | version "1.0.0" 1239 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" 1240 | dependencies: 1241 | estraverse "^4.0.0" 1242 | 1243 | esrecurse@^4.1.0: 1244 | version "4.1.0" 1245 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" 1246 | dependencies: 1247 | estraverse "~4.1.0" 1248 | object-assign "^4.0.1" 1249 | 1250 | estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0: 1251 | version "4.2.0" 1252 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 1253 | 1254 | estraverse@~4.1.0: 1255 | version "4.1.1" 1256 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" 1257 | 1258 | esutils@^2.0.0, esutils@^2.0.2: 1259 | version "2.0.2" 1260 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 1261 | 1262 | event-emitter@~0.3.5: 1263 | version "0.3.5" 1264 | resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" 1265 | dependencies: 1266 | d "1" 1267 | es5-ext "~0.10.14" 1268 | 1269 | exit-hook@^1.0.0: 1270 | version "1.1.1" 1271 | resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" 1272 | 1273 | exit@^0.1.2: 1274 | version "0.1.2" 1275 | resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" 1276 | 1277 | expand-brackets@^0.1.4: 1278 | version "0.1.5" 1279 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 1280 | dependencies: 1281 | is-posix-bracket "^0.1.0" 1282 | 1283 | expand-range@^1.8.1: 1284 | version "1.8.2" 1285 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 1286 | dependencies: 1287 | fill-range "^2.1.0" 1288 | 1289 | extend@~3.0.0: 1290 | version "3.0.0" 1291 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" 1292 | 1293 | extglob@^0.3.1: 1294 | version "0.3.2" 1295 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 1296 | dependencies: 1297 | is-extglob "^1.0.0" 1298 | 1299 | extsprintf@1.0.2: 1300 | version "1.0.2" 1301 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" 1302 | 1303 | fast-levenshtein@~2.0.4: 1304 | version "2.0.6" 1305 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1306 | 1307 | figures@^1.3.5: 1308 | version "1.7.0" 1309 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" 1310 | dependencies: 1311 | escape-string-regexp "^1.0.5" 1312 | object-assign "^4.1.0" 1313 | 1314 | file-entry-cache@^2.0.0: 1315 | version "2.0.0" 1316 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" 1317 | dependencies: 1318 | flat-cache "^1.2.1" 1319 | object-assign "^4.0.1" 1320 | 1321 | filename-regex@^2.0.0: 1322 | version "2.0.0" 1323 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" 1324 | 1325 | fill-keys@^1.0.2: 1326 | version "1.0.2" 1327 | resolved "https://registry.yarnpkg.com/fill-keys/-/fill-keys-1.0.2.tgz#9a8fa36f4e8ad634e3bf6b4f3c8882551452eb20" 1328 | dependencies: 1329 | is-object "~1.0.1" 1330 | merge-descriptors "~1.0.0" 1331 | 1332 | fill-range@^2.1.0: 1333 | version "2.2.3" 1334 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" 1335 | dependencies: 1336 | is-number "^2.1.0" 1337 | isobject "^2.0.0" 1338 | randomatic "^1.1.3" 1339 | repeat-element "^1.1.2" 1340 | repeat-string "^1.5.2" 1341 | 1342 | flat-cache@^1.2.1: 1343 | version "1.2.2" 1344 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" 1345 | dependencies: 1346 | circular-json "^0.3.1" 1347 | del "^2.0.2" 1348 | graceful-fs "^4.1.2" 1349 | write "^0.2.1" 1350 | 1351 | for-in@^1.0.1: 1352 | version "1.0.2" 1353 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 1354 | 1355 | for-own@^0.1.4: 1356 | version "0.1.5" 1357 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" 1358 | dependencies: 1359 | for-in "^1.0.1" 1360 | 1361 | foreach@^2.0.5: 1362 | version "2.0.5" 1363 | resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" 1364 | 1365 | forever-agent@~0.6.1: 1366 | version "0.6.1" 1367 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 1368 | 1369 | form-data@~2.1.1: 1370 | version "2.1.2" 1371 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" 1372 | dependencies: 1373 | asynckit "^0.4.0" 1374 | combined-stream "^1.0.5" 1375 | mime-types "^2.1.12" 1376 | 1377 | fs-readdir-recursive@^1.0.0: 1378 | version "1.0.0" 1379 | resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" 1380 | 1381 | fs.realpath@^1.0.0: 1382 | version "1.0.0" 1383 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1384 | 1385 | fsevents@^1.0.0: 1386 | version "1.1.1" 1387 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" 1388 | dependencies: 1389 | nan "^2.3.0" 1390 | node-pre-gyp "^0.6.29" 1391 | 1392 | fstream-ignore@^1.0.5: 1393 | version "1.0.5" 1394 | resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" 1395 | dependencies: 1396 | fstream "^1.0.0" 1397 | inherits "2" 1398 | minimatch "^3.0.0" 1399 | 1400 | fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: 1401 | version "1.0.11" 1402 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" 1403 | dependencies: 1404 | graceful-fs "^4.1.2" 1405 | inherits "~2.0.0" 1406 | mkdirp ">=0.5 0" 1407 | rimraf "2" 1408 | 1409 | function-bind@^1.0.2, function-bind@^1.1.0: 1410 | version "1.1.0" 1411 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" 1412 | 1413 | gauge@~2.7.1: 1414 | version "2.7.3" 1415 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09" 1416 | dependencies: 1417 | aproba "^1.0.3" 1418 | console-control-strings "^1.0.0" 1419 | has-unicode "^2.0.0" 1420 | object-assign "^4.1.0" 1421 | signal-exit "^3.0.0" 1422 | string-width "^1.0.1" 1423 | strip-ansi "^3.0.1" 1424 | wide-align "^1.1.0" 1425 | 1426 | generate-function@^2.0.0: 1427 | version "2.0.0" 1428 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" 1429 | 1430 | generate-object-property@^1.1.0: 1431 | version "1.2.0" 1432 | resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" 1433 | dependencies: 1434 | is-property "^1.0.0" 1435 | 1436 | getpass@^0.1.1: 1437 | version "0.1.6" 1438 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" 1439 | dependencies: 1440 | assert-plus "^1.0.0" 1441 | 1442 | glob-base@^0.3.0: 1443 | version "0.3.0" 1444 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 1445 | dependencies: 1446 | glob-parent "^2.0.0" 1447 | is-glob "^2.0.0" 1448 | 1449 | glob-parent@^2.0.0: 1450 | version "2.0.0" 1451 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 1452 | dependencies: 1453 | is-glob "^2.0.0" 1454 | 1455 | glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6: 1456 | version "7.1.1" 1457 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 1458 | dependencies: 1459 | fs.realpath "^1.0.0" 1460 | inflight "^1.0.4" 1461 | inherits "2" 1462 | minimatch "^3.0.2" 1463 | once "^1.3.0" 1464 | path-is-absolute "^1.0.0" 1465 | 1466 | globals@^9.0.0, globals@^9.14.0: 1467 | version "9.17.0" 1468 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" 1469 | 1470 | globby@^5.0.0: 1471 | version "5.0.0" 1472 | resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" 1473 | dependencies: 1474 | array-union "^1.0.1" 1475 | arrify "^1.0.0" 1476 | glob "^7.0.3" 1477 | object-assign "^4.0.1" 1478 | pify "^2.0.0" 1479 | pinkie-promise "^2.0.0" 1480 | 1481 | graceful-fs@^4.1.2, graceful-fs@^4.1.4: 1482 | version "4.1.11" 1483 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 1484 | 1485 | "graceful-readlink@>= 1.0.0": 1486 | version "1.0.1" 1487 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" 1488 | 1489 | har-schema@^1.0.5: 1490 | version "1.0.5" 1491 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" 1492 | 1493 | har-validator@~4.2.1: 1494 | version "4.2.1" 1495 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" 1496 | dependencies: 1497 | ajv "^4.9.1" 1498 | har-schema "^1.0.5" 1499 | 1500 | has-ansi@^2.0.0: 1501 | version "2.0.0" 1502 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 1503 | dependencies: 1504 | ansi-regex "^2.0.0" 1505 | 1506 | has-unicode@^2.0.0: 1507 | version "2.0.1" 1508 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 1509 | 1510 | has@^1.0.1: 1511 | version "1.0.1" 1512 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" 1513 | dependencies: 1514 | function-bind "^1.0.2" 1515 | 1516 | hawk@~3.1.3: 1517 | version "3.1.3" 1518 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" 1519 | dependencies: 1520 | boom "2.x.x" 1521 | cryptiles "2.x.x" 1522 | hoek "2.x.x" 1523 | sntp "1.x.x" 1524 | 1525 | hoek@2.x.x: 1526 | version "2.16.3" 1527 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" 1528 | 1529 | home-or-tmp@^2.0.0: 1530 | version "2.0.0" 1531 | resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" 1532 | dependencies: 1533 | os-homedir "^1.0.0" 1534 | os-tmpdir "^1.0.1" 1535 | 1536 | http-signature@~1.1.0: 1537 | version "1.1.1" 1538 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" 1539 | dependencies: 1540 | assert-plus "^0.2.0" 1541 | jsprim "^1.2.2" 1542 | sshpk "^1.7.0" 1543 | 1544 | ignore@^3.2.0: 1545 | version "3.2.6" 1546 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.6.tgz#26e8da0644be0bb4cb39516f6c79f0e0f4ffe48c" 1547 | 1548 | imurmurhash@^0.1.4: 1549 | version "0.1.4" 1550 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1551 | 1552 | inflight@^1.0.4: 1553 | version "1.0.6" 1554 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1555 | dependencies: 1556 | once "^1.3.0" 1557 | wrappy "1" 1558 | 1559 | inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1: 1560 | version "2.0.3" 1561 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1562 | 1563 | ini@~1.3.0: 1564 | version "1.3.4" 1565 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" 1566 | 1567 | inquirer@^0.12.0: 1568 | version "0.12.0" 1569 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" 1570 | dependencies: 1571 | ansi-escapes "^1.1.0" 1572 | ansi-regex "^2.0.0" 1573 | chalk "^1.0.0" 1574 | cli-cursor "^1.0.1" 1575 | cli-width "^2.0.0" 1576 | figures "^1.3.5" 1577 | lodash "^4.3.0" 1578 | readline2 "^1.0.1" 1579 | run-async "^0.1.0" 1580 | rx-lite "^3.1.2" 1581 | string-width "^1.0.1" 1582 | strip-ansi "^3.0.0" 1583 | through "^2.3.6" 1584 | 1585 | interpret@^1.0.0: 1586 | version "1.0.2" 1587 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.2.tgz#f4f623f0bb7122f15f5717c8e254b8161b5c5b2d" 1588 | 1589 | invariant@^2.2.0: 1590 | version "2.2.2" 1591 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" 1592 | dependencies: 1593 | loose-envify "^1.0.0" 1594 | 1595 | is-binary-path@^1.0.0: 1596 | version "1.0.1" 1597 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 1598 | dependencies: 1599 | binary-extensions "^1.0.0" 1600 | 1601 | is-buffer@^1.0.2: 1602 | version "1.1.5" 1603 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" 1604 | 1605 | is-callable@^1.1.1, is-callable@^1.1.3: 1606 | version "1.1.3" 1607 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" 1608 | 1609 | is-date-object@^1.0.1: 1610 | version "1.0.1" 1611 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" 1612 | 1613 | is-dotfile@^1.0.0: 1614 | version "1.0.2" 1615 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" 1616 | 1617 | is-equal-shallow@^0.1.3: 1618 | version "0.1.3" 1619 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 1620 | dependencies: 1621 | is-primitive "^2.0.0" 1622 | 1623 | is-extendable@^0.1.1: 1624 | version "0.1.1" 1625 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1626 | 1627 | is-extglob@^1.0.0: 1628 | version "1.0.0" 1629 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 1630 | 1631 | is-finite@^1.0.0: 1632 | version "1.0.2" 1633 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" 1634 | dependencies: 1635 | number-is-nan "^1.0.0" 1636 | 1637 | is-fullwidth-code-point@^1.0.0: 1638 | version "1.0.0" 1639 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1640 | dependencies: 1641 | number-is-nan "^1.0.0" 1642 | 1643 | is-fullwidth-code-point@^2.0.0: 1644 | version "2.0.0" 1645 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1646 | 1647 | is-glob@^2.0.0, is-glob@^2.0.1: 1648 | version "2.0.1" 1649 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 1650 | dependencies: 1651 | is-extglob "^1.0.0" 1652 | 1653 | is-my-json-valid@^2.10.0: 1654 | version "2.16.0" 1655 | resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" 1656 | dependencies: 1657 | generate-function "^2.0.0" 1658 | generate-object-property "^1.1.0" 1659 | jsonpointer "^4.0.0" 1660 | xtend "^4.0.0" 1661 | 1662 | is-number@^2.0.2, is-number@^2.1.0: 1663 | version "2.1.0" 1664 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 1665 | dependencies: 1666 | kind-of "^3.0.2" 1667 | 1668 | is-object@~1.0.1: 1669 | version "1.0.1" 1670 | resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" 1671 | 1672 | is-path-cwd@^1.0.0: 1673 | version "1.0.0" 1674 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" 1675 | 1676 | is-path-in-cwd@^1.0.0: 1677 | version "1.0.0" 1678 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" 1679 | dependencies: 1680 | is-path-inside "^1.0.0" 1681 | 1682 | is-path-inside@^1.0.0: 1683 | version "1.0.0" 1684 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" 1685 | dependencies: 1686 | path-is-inside "^1.0.1" 1687 | 1688 | is-posix-bracket@^0.1.0: 1689 | version "0.1.1" 1690 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 1691 | 1692 | is-primitive@^2.0.0: 1693 | version "2.0.0" 1694 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 1695 | 1696 | is-property@^1.0.0: 1697 | version "1.0.2" 1698 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 1699 | 1700 | is-regex@^1.0.3: 1701 | version "1.0.4" 1702 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" 1703 | dependencies: 1704 | has "^1.0.1" 1705 | 1706 | is-resolvable@^1.0.0: 1707 | version "1.0.0" 1708 | resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" 1709 | dependencies: 1710 | tryit "^1.0.1" 1711 | 1712 | is-symbol@^1.0.1: 1713 | version "1.0.1" 1714 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" 1715 | 1716 | is-typedarray@~1.0.0: 1717 | version "1.0.0" 1718 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1719 | 1720 | isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: 1721 | version "1.0.0" 1722 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1723 | 1724 | isobject@^2.0.0: 1725 | version "2.1.0" 1726 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1727 | dependencies: 1728 | isarray "1.0.0" 1729 | 1730 | isstream@~0.1.2: 1731 | version "0.1.2" 1732 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1733 | 1734 | jasmine-core@~2.5.2: 1735 | version "2.5.2" 1736 | resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297" 1737 | 1738 | jasmine-expect@latest: 1739 | version "3.7.0" 1740 | resolved "https://registry.yarnpkg.com/jasmine-expect/-/jasmine-expect-3.7.0.tgz#841e1382f4bff0258c8dc96eca27c4fbc6ae4887" 1741 | dependencies: 1742 | add-matchers "0.5.0" 1743 | 1744 | jasmine-reporters@latest: 1745 | version "2.2.1" 1746 | resolved "https://registry.yarnpkg.com/jasmine-reporters/-/jasmine-reporters-2.2.1.tgz#de9a9201367846269e7ca8adff5b44221671fcbd" 1747 | dependencies: 1748 | mkdirp "^0.5.1" 1749 | xmldom "^0.1.22" 1750 | 1751 | jasmine-spec-reporter@latest: 1752 | version "3.2.0" 1753 | resolved "https://registry.yarnpkg.com/jasmine-spec-reporter/-/jasmine-spec-reporter-3.2.0.tgz#fdbe85a80ccdd3b276746bc77fde83c1ce773eff" 1754 | dependencies: 1755 | colors "1.1.2" 1756 | 1757 | jasmine@latest: 1758 | version "2.5.3" 1759 | resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.5.3.tgz#5441f254e1fc2269deb1dfd93e0e57d565ff4d22" 1760 | dependencies: 1761 | exit "^0.1.2" 1762 | glob "^7.0.6" 1763 | jasmine-core "~2.5.2" 1764 | 1765 | jodid25519@^1.0.0: 1766 | version "1.0.2" 1767 | resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" 1768 | dependencies: 1769 | jsbn "~0.1.0" 1770 | 1771 | js-tokens@^3.0.0: 1772 | version "3.0.1" 1773 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" 1774 | 1775 | js-yaml@^3.5.1: 1776 | version "3.8.3" 1777 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.3.tgz#33a05ec481c850c8875929166fe1beb61c728766" 1778 | dependencies: 1779 | argparse "^1.0.7" 1780 | esprima "^3.1.1" 1781 | 1782 | jsbn@~0.1.0: 1783 | version "0.1.1" 1784 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 1785 | 1786 | jsesc@^1.3.0: 1787 | version "1.3.0" 1788 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" 1789 | 1790 | jsesc@~0.5.0: 1791 | version "0.5.0" 1792 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" 1793 | 1794 | json-schema@0.2.3: 1795 | version "0.2.3" 1796 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 1797 | 1798 | json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: 1799 | version "1.0.1" 1800 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 1801 | dependencies: 1802 | jsonify "~0.0.0" 1803 | 1804 | json-stringify-safe@~5.0.1: 1805 | version "5.0.1" 1806 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1807 | 1808 | json5@^0.5.0: 1809 | version "0.5.1" 1810 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" 1811 | 1812 | jsonify@~0.0.0: 1813 | version "0.0.0" 1814 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 1815 | 1816 | jsonpointer@^4.0.0: 1817 | version "4.0.1" 1818 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" 1819 | 1820 | jsprim@^1.2.2: 1821 | version "1.4.0" 1822 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" 1823 | dependencies: 1824 | assert-plus "1.0.0" 1825 | extsprintf "1.0.2" 1826 | json-schema "0.2.3" 1827 | verror "1.3.6" 1828 | 1829 | jsx-ast-utils@^1.3.4: 1830 | version "1.4.0" 1831 | resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.0.tgz#5afe38868f56bc8cc7aeaef0100ba8c75bd12591" 1832 | dependencies: 1833 | object-assign "^4.1.0" 1834 | 1835 | kind-of@^3.0.2: 1836 | version "3.1.0" 1837 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" 1838 | dependencies: 1839 | is-buffer "^1.0.2" 1840 | 1841 | levn@^0.3.0, levn@~0.3.0: 1842 | version "0.3.0" 1843 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 1844 | dependencies: 1845 | prelude-ls "~1.1.2" 1846 | type-check "~0.3.2" 1847 | 1848 | lodash@^4.0.0, lodash@^4.11.1, lodash@^4.2.0, lodash@^4.3.0: 1849 | version "4.17.4" 1850 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 1851 | 1852 | loose-envify@^1.0.0: 1853 | version "1.3.1" 1854 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" 1855 | dependencies: 1856 | js-tokens "^3.0.0" 1857 | 1858 | merge-descriptors@~1.0.0: 1859 | version "1.0.1" 1860 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 1861 | 1862 | micromatch@^2.1.5: 1863 | version "2.3.11" 1864 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 1865 | dependencies: 1866 | arr-diff "^2.0.0" 1867 | array-unique "^0.2.1" 1868 | braces "^1.8.2" 1869 | expand-brackets "^0.1.4" 1870 | extglob "^0.3.1" 1871 | filename-regex "^2.0.0" 1872 | is-extglob "^1.0.0" 1873 | is-glob "^2.0.1" 1874 | kind-of "^3.0.2" 1875 | normalize-path "^2.0.1" 1876 | object.omit "^2.0.0" 1877 | parse-glob "^3.0.4" 1878 | regex-cache "^0.4.2" 1879 | 1880 | mime-db@~1.27.0: 1881 | version "1.27.0" 1882 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" 1883 | 1884 | mime-types@^2.1.12, mime-types@~2.1.7: 1885 | version "2.1.15" 1886 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" 1887 | dependencies: 1888 | mime-db "~1.27.0" 1889 | 1890 | minimatch@^3.0.0, minimatch@^3.0.2: 1891 | version "3.0.3" 1892 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" 1893 | dependencies: 1894 | brace-expansion "^1.0.0" 1895 | 1896 | minimist@0.0.8: 1897 | version "0.0.8" 1898 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1899 | 1900 | minimist@^1.2.0: 1901 | version "1.2.0" 1902 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1903 | 1904 | "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: 1905 | version "0.5.1" 1906 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1907 | dependencies: 1908 | minimist "0.0.8" 1909 | 1910 | module-not-found-error@^1.0.0: 1911 | version "1.0.1" 1912 | resolved "https://registry.yarnpkg.com/module-not-found-error/-/module-not-found-error-1.0.1.tgz#cf8b4ff4f29640674d6cdd02b0e3bc523c2bbdc0" 1913 | 1914 | ms@0.7.2: 1915 | version "0.7.2" 1916 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" 1917 | 1918 | mute-stream@0.0.5: 1919 | version "0.0.5" 1920 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" 1921 | 1922 | nan@^2.3.0: 1923 | version "2.6.1" 1924 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.1.tgz#8c84f7b14c96b89f57fbc838012180ec8ca39a01" 1925 | 1926 | natural-compare@^1.4.0: 1927 | version "1.4.0" 1928 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1929 | 1930 | node-pre-gyp@^0.6.29: 1931 | version "0.6.34" 1932 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" 1933 | dependencies: 1934 | mkdirp "^0.5.1" 1935 | nopt "^4.0.1" 1936 | npmlog "^4.0.2" 1937 | rc "^1.1.7" 1938 | request "^2.81.0" 1939 | rimraf "^2.6.1" 1940 | semver "^5.3.0" 1941 | tar "^2.2.1" 1942 | tar-pack "^3.4.0" 1943 | 1944 | nopt@^4.0.1: 1945 | version "4.0.1" 1946 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 1947 | dependencies: 1948 | abbrev "1" 1949 | osenv "^0.1.4" 1950 | 1951 | normalize-path@^2.0.1: 1952 | version "2.1.1" 1953 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 1954 | dependencies: 1955 | remove-trailing-separator "^1.0.1" 1956 | 1957 | npmlog@^4.0.2: 1958 | version "4.0.2" 1959 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" 1960 | dependencies: 1961 | are-we-there-yet "~1.1.2" 1962 | console-control-strings "~1.1.0" 1963 | gauge "~2.7.1" 1964 | set-blocking "~2.0.0" 1965 | 1966 | number-is-nan@^1.0.0: 1967 | version "1.0.1" 1968 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1969 | 1970 | oauth-sign@~0.8.1: 1971 | version "0.8.2" 1972 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 1973 | 1974 | object-assign@^4.0.1, object-assign@^4.1.0: 1975 | version "4.1.1" 1976 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1977 | 1978 | object-keys@^1.0.10, object-keys@^1.0.8: 1979 | version "1.0.11" 1980 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" 1981 | 1982 | object.assign@^4.0.4: 1983 | version "4.0.4" 1984 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc" 1985 | dependencies: 1986 | define-properties "^1.1.2" 1987 | function-bind "^1.1.0" 1988 | object-keys "^1.0.10" 1989 | 1990 | object.omit@^2.0.0: 1991 | version "2.0.1" 1992 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 1993 | dependencies: 1994 | for-own "^0.1.4" 1995 | is-extendable "^0.1.1" 1996 | 1997 | once@^1.3.0, once@^1.3.3: 1998 | version "1.4.0" 1999 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2000 | dependencies: 2001 | wrappy "1" 2002 | 2003 | onetime@^1.0.0: 2004 | version "1.1.0" 2005 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" 2006 | 2007 | optionator@^0.8.2: 2008 | version "0.8.2" 2009 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 2010 | dependencies: 2011 | deep-is "~0.1.3" 2012 | fast-levenshtein "~2.0.4" 2013 | levn "~0.3.0" 2014 | prelude-ls "~1.1.2" 2015 | type-check "~0.3.2" 2016 | wordwrap "~1.0.0" 2017 | 2018 | os-homedir@^1.0.0: 2019 | version "1.0.2" 2020 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 2021 | 2022 | os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: 2023 | version "1.0.2" 2024 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 2025 | 2026 | osenv@^0.1.4: 2027 | version "0.1.4" 2028 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" 2029 | dependencies: 2030 | os-homedir "^1.0.0" 2031 | os-tmpdir "^1.0.0" 2032 | 2033 | output-file-sync@^1.1.0: 2034 | version "1.1.2" 2035 | resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" 2036 | dependencies: 2037 | graceful-fs "^4.1.4" 2038 | mkdirp "^0.5.1" 2039 | object-assign "^4.1.0" 2040 | 2041 | parse-glob@^3.0.4: 2042 | version "3.0.4" 2043 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 2044 | dependencies: 2045 | glob-base "^0.3.0" 2046 | is-dotfile "^1.0.0" 2047 | is-extglob "^1.0.0" 2048 | is-glob "^2.0.0" 2049 | 2050 | path-is-absolute@^1.0.0: 2051 | version "1.0.1" 2052 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2053 | 2054 | path-is-inside@^1.0.1: 2055 | version "1.0.2" 2056 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 2057 | 2058 | performance-now@^0.2.0: 2059 | version "0.2.0" 2060 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" 2061 | 2062 | pify@^2.0.0: 2063 | version "2.3.0" 2064 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 2065 | 2066 | pinkie-promise@^2.0.0: 2067 | version "2.0.1" 2068 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 2069 | dependencies: 2070 | pinkie "^2.0.0" 2071 | 2072 | pinkie@^2.0.0: 2073 | version "2.0.4" 2074 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 2075 | 2076 | pluralize@^1.2.1: 2077 | version "1.2.1" 2078 | resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" 2079 | 2080 | prelude-ls@~1.1.2: 2081 | version "1.1.2" 2082 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 2083 | 2084 | preserve@^0.2.0: 2085 | version "0.2.0" 2086 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 2087 | 2088 | private@^0.1.6: 2089 | version "0.1.7" 2090 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" 2091 | 2092 | process-nextick-args@~1.0.6: 2093 | version "1.0.7" 2094 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 2095 | 2096 | progress@^1.1.8: 2097 | version "1.1.8" 2098 | resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" 2099 | 2100 | proxyquire@latest: 2101 | version "1.7.11" 2102 | resolved "https://registry.yarnpkg.com/proxyquire/-/proxyquire-1.7.11.tgz#13b494eb1e71fb21cc3ebe3699e637d3bec1af9e" 2103 | dependencies: 2104 | fill-keys "^1.0.2" 2105 | module-not-found-error "^1.0.0" 2106 | resolve "~1.1.7" 2107 | 2108 | punycode@^1.4.1: 2109 | version "1.4.1" 2110 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 2111 | 2112 | qs@~6.4.0: 2113 | version "6.4.0" 2114 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" 2115 | 2116 | randomatic@^1.1.3: 2117 | version "1.1.6" 2118 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" 2119 | dependencies: 2120 | is-number "^2.0.2" 2121 | kind-of "^3.0.2" 2122 | 2123 | rc@^1.1.7: 2124 | version "1.2.1" 2125 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" 2126 | dependencies: 2127 | deep-extend "~0.4.0" 2128 | ini "~1.3.0" 2129 | minimist "^1.2.0" 2130 | strip-json-comments "~2.0.1" 2131 | 2132 | "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.1.4, readable-stream@^2.2.2: 2133 | version "2.2.6" 2134 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.6.tgz#8b43aed76e71483938d12a8d46c6cf1a00b1f816" 2135 | dependencies: 2136 | buffer-shims "^1.0.0" 2137 | core-util-is "~1.0.0" 2138 | inherits "~2.0.1" 2139 | isarray "~1.0.0" 2140 | process-nextick-args "~1.0.6" 2141 | string_decoder "~0.10.x" 2142 | util-deprecate "~1.0.1" 2143 | 2144 | readdirp@^2.0.0: 2145 | version "2.1.0" 2146 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" 2147 | dependencies: 2148 | graceful-fs "^4.1.2" 2149 | minimatch "^3.0.2" 2150 | readable-stream "^2.0.2" 2151 | set-immediate-shim "^1.0.1" 2152 | 2153 | readline2@^1.0.1: 2154 | version "1.0.1" 2155 | resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" 2156 | dependencies: 2157 | code-point-at "^1.0.0" 2158 | is-fullwidth-code-point "^1.0.0" 2159 | mute-stream "0.0.5" 2160 | 2161 | rechoir@^0.6.2: 2162 | version "0.6.2" 2163 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" 2164 | dependencies: 2165 | resolve "^1.1.6" 2166 | 2167 | regenerate@^1.2.1: 2168 | version "1.3.2" 2169 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" 2170 | 2171 | regenerator-runtime@^0.10.0: 2172 | version "0.10.3" 2173 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e" 2174 | 2175 | regenerator-transform@0.9.8: 2176 | version "0.9.8" 2177 | resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.8.tgz#0f88bb2bc03932ddb7b6b7312e68078f01026d6c" 2178 | dependencies: 2179 | babel-runtime "^6.18.0" 2180 | babel-types "^6.19.0" 2181 | private "^0.1.6" 2182 | 2183 | regex-cache@^0.4.2: 2184 | version "0.4.3" 2185 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" 2186 | dependencies: 2187 | is-equal-shallow "^0.1.3" 2188 | is-primitive "^2.0.0" 2189 | 2190 | regexpu-core@^2.0.0: 2191 | version "2.0.0" 2192 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" 2193 | dependencies: 2194 | regenerate "^1.2.1" 2195 | regjsgen "^0.2.0" 2196 | regjsparser "^0.1.4" 2197 | 2198 | regjsgen@^0.2.0: 2199 | version "0.2.0" 2200 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" 2201 | 2202 | regjsparser@^0.1.4: 2203 | version "0.1.5" 2204 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" 2205 | dependencies: 2206 | jsesc "~0.5.0" 2207 | 2208 | remove-trailing-separator@^1.0.1: 2209 | version "1.0.1" 2210 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" 2211 | 2212 | repeat-element@^1.1.2: 2213 | version "1.1.2" 2214 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 2215 | 2216 | repeat-string@^1.5.2: 2217 | version "1.6.1" 2218 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 2219 | 2220 | repeating@^2.0.0: 2221 | version "2.0.1" 2222 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" 2223 | dependencies: 2224 | is-finite "^1.0.0" 2225 | 2226 | request@^2.81.0: 2227 | version "2.81.0" 2228 | resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" 2229 | dependencies: 2230 | aws-sign2 "~0.6.0" 2231 | aws4 "^1.2.1" 2232 | caseless "~0.12.0" 2233 | combined-stream "~1.0.5" 2234 | extend "~3.0.0" 2235 | forever-agent "~0.6.1" 2236 | form-data "~2.1.1" 2237 | har-validator "~4.2.1" 2238 | hawk "~3.1.3" 2239 | http-signature "~1.1.0" 2240 | is-typedarray "~1.0.0" 2241 | isstream "~0.1.2" 2242 | json-stringify-safe "~5.0.1" 2243 | mime-types "~2.1.7" 2244 | oauth-sign "~0.8.1" 2245 | performance-now "^0.2.0" 2246 | qs "~6.4.0" 2247 | safe-buffer "^5.0.1" 2248 | stringstream "~0.0.4" 2249 | tough-cookie "~2.3.0" 2250 | tunnel-agent "^0.6.0" 2251 | uuid "^3.0.0" 2252 | 2253 | require-uncached@^1.0.2: 2254 | version "1.0.3" 2255 | resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" 2256 | dependencies: 2257 | caller-path "^0.1.0" 2258 | resolve-from "^1.0.0" 2259 | 2260 | resolve-from@^1.0.0: 2261 | version "1.0.1" 2262 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" 2263 | 2264 | resolve@^1.1.6, resolve@~1.1.7: 2265 | version "1.1.7" 2266 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" 2267 | 2268 | restore-cursor@^1.0.1: 2269 | version "1.0.1" 2270 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" 2271 | dependencies: 2272 | exit-hook "^1.0.0" 2273 | onetime "^1.0.0" 2274 | 2275 | rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1: 2276 | version "2.6.1" 2277 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" 2278 | dependencies: 2279 | glob "^7.0.5" 2280 | 2281 | run-async@^0.1.0: 2282 | version "0.1.0" 2283 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" 2284 | dependencies: 2285 | once "^1.3.0" 2286 | 2287 | rx-lite@^3.1.2: 2288 | version "3.1.2" 2289 | resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" 2290 | 2291 | safe-buffer@^5.0.1: 2292 | version "5.0.1" 2293 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" 2294 | 2295 | semver@^5.3.0: 2296 | version "5.3.0" 2297 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" 2298 | 2299 | set-blocking@~2.0.0: 2300 | version "2.0.0" 2301 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 2302 | 2303 | set-immediate-shim@^1.0.1: 2304 | version "1.0.1" 2305 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" 2306 | 2307 | shelljs@^0.7.5: 2308 | version "0.7.7" 2309 | resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1" 2310 | dependencies: 2311 | glob "^7.0.0" 2312 | interpret "^1.0.0" 2313 | rechoir "^0.6.2" 2314 | 2315 | signal-exit@^3.0.0: 2316 | version "3.0.2" 2317 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 2318 | 2319 | slash@^1.0.0: 2320 | version "1.0.0" 2321 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" 2322 | 2323 | slice-ansi@0.0.4: 2324 | version "0.0.4" 2325 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" 2326 | 2327 | sntp@1.x.x: 2328 | version "1.0.9" 2329 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" 2330 | dependencies: 2331 | hoek "2.x.x" 2332 | 2333 | source-map-support@^0.4.2: 2334 | version "0.4.14" 2335 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.14.tgz#9d4463772598b86271b4f523f6c1f4e02a7d6aef" 2336 | dependencies: 2337 | source-map "^0.5.6" 2338 | 2339 | source-map@^0.5.0, source-map@^0.5.6: 2340 | version "0.5.6" 2341 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" 2342 | 2343 | sprintf-js@~1.0.2: 2344 | version "1.0.3" 2345 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2346 | 2347 | sshpk@^1.7.0: 2348 | version "1.11.0" 2349 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77" 2350 | dependencies: 2351 | asn1 "~0.2.3" 2352 | assert-plus "^1.0.0" 2353 | dashdash "^1.12.0" 2354 | getpass "^0.1.1" 2355 | optionalDependencies: 2356 | bcrypt-pbkdf "^1.0.0" 2357 | ecc-jsbn "~0.1.1" 2358 | jodid25519 "^1.0.0" 2359 | jsbn "~0.1.0" 2360 | tweetnacl "~0.14.0" 2361 | 2362 | string-width@^1.0.1: 2363 | version "1.0.2" 2364 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 2365 | dependencies: 2366 | code-point-at "^1.0.0" 2367 | is-fullwidth-code-point "^1.0.0" 2368 | strip-ansi "^3.0.0" 2369 | 2370 | string-width@^2.0.0: 2371 | version "2.0.0" 2372 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" 2373 | dependencies: 2374 | is-fullwidth-code-point "^2.0.0" 2375 | strip-ansi "^3.0.0" 2376 | 2377 | string_decoder@~0.10.x: 2378 | version "0.10.31" 2379 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 2380 | 2381 | stringstream@~0.0.4: 2382 | version "0.0.5" 2383 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 2384 | 2385 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 2386 | version "3.0.1" 2387 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 2388 | dependencies: 2389 | ansi-regex "^2.0.0" 2390 | 2391 | strip-bom@^3.0.0: 2392 | version "3.0.0" 2393 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 2394 | 2395 | strip-json-comments@~2.0.1: 2396 | version "2.0.1" 2397 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2398 | 2399 | supports-color@^2.0.0: 2400 | version "2.0.0" 2401 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 2402 | 2403 | table@^3.7.8: 2404 | version "3.8.3" 2405 | resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" 2406 | dependencies: 2407 | ajv "^4.7.0" 2408 | ajv-keywords "^1.0.0" 2409 | chalk "^1.1.1" 2410 | lodash "^4.0.0" 2411 | slice-ansi "0.0.4" 2412 | string-width "^2.0.0" 2413 | 2414 | tar-pack@^3.4.0: 2415 | version "3.4.0" 2416 | resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" 2417 | dependencies: 2418 | debug "^2.2.0" 2419 | fstream "^1.0.10" 2420 | fstream-ignore "^1.0.5" 2421 | once "^1.3.3" 2422 | readable-stream "^2.1.4" 2423 | rimraf "^2.5.1" 2424 | tar "^2.2.1" 2425 | uid-number "^0.0.6" 2426 | 2427 | tar@^2.2.1: 2428 | version "2.2.1" 2429 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" 2430 | dependencies: 2431 | block-stream "*" 2432 | fstream "^1.0.2" 2433 | inherits "2" 2434 | 2435 | text-table@~0.2.0: 2436 | version "0.2.0" 2437 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2438 | 2439 | through@^2.3.6: 2440 | version "2.3.8" 2441 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 2442 | 2443 | to-fast-properties@^1.0.1: 2444 | version "1.0.2" 2445 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320" 2446 | 2447 | tough-cookie@~2.3.0: 2448 | version "2.3.2" 2449 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" 2450 | dependencies: 2451 | punycode "^1.4.1" 2452 | 2453 | trim-right@^1.0.1: 2454 | version "1.0.1" 2455 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 2456 | 2457 | tryit@^1.0.1: 2458 | version "1.0.3" 2459 | resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" 2460 | 2461 | tunnel-agent@^0.6.0: 2462 | version "0.6.0" 2463 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 2464 | dependencies: 2465 | safe-buffer "^5.0.1" 2466 | 2467 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 2468 | version "0.14.5" 2469 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 2470 | 2471 | type-check@~0.3.2: 2472 | version "0.3.2" 2473 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 2474 | dependencies: 2475 | prelude-ls "~1.1.2" 2476 | 2477 | typedarray@^0.0.6: 2478 | version "0.0.6" 2479 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 2480 | 2481 | uid-number@^0.0.6: 2482 | version "0.0.6" 2483 | resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" 2484 | 2485 | user-home@^1.1.1: 2486 | version "1.1.1" 2487 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" 2488 | 2489 | user-home@^2.0.0: 2490 | version "2.0.0" 2491 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" 2492 | dependencies: 2493 | os-homedir "^1.0.0" 2494 | 2495 | util-deprecate@~1.0.1: 2496 | version "1.0.2" 2497 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2498 | 2499 | uuid@^3.0.0: 2500 | version "3.0.1" 2501 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" 2502 | 2503 | v8flags@^2.0.10: 2504 | version "2.0.12" 2505 | resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.12.tgz#73235d9f7176f8e8833fb286795445f7938d84e5" 2506 | dependencies: 2507 | user-home "^1.1.1" 2508 | 2509 | verror@1.3.6: 2510 | version "1.3.6" 2511 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" 2512 | dependencies: 2513 | extsprintf "1.0.2" 2514 | 2515 | wide-align@^1.1.0: 2516 | version "1.1.0" 2517 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" 2518 | dependencies: 2519 | string-width "^1.0.1" 2520 | 2521 | wordwrap@~1.0.0: 2522 | version "1.0.0" 2523 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 2524 | 2525 | wrappy@1: 2526 | version "1.0.2" 2527 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2528 | 2529 | write@^0.2.1: 2530 | version "0.2.1" 2531 | resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" 2532 | dependencies: 2533 | mkdirp "^0.5.1" 2534 | 2535 | xmldom@^0.1.22: 2536 | version "0.1.27" 2537 | resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" 2538 | 2539 | xtend@^4.0.0: 2540 | version "4.0.1" 2541 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 2542 | --------------------------------------------------------------------------------