├── .gitattributes ├── .github └── pull_request_template.md ├── .gitignore ├── README.md ├── RollbarReactNative.podspec ├── android ├── build.gradle └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ └── com │ └── rollbar │ ├── RollbarReactNative.java │ └── RollbarReactNativePackage.java ├── index.d.ts ├── index.js ├── ios ├── RollbarReactNative.h ├── RollbarReactNative.m └── RollbarReactNative.xcodeproj │ └── project.pbxproj ├── iosFrameworks.png ├── lib ├── Client.js ├── Client.js.map ├── Rollbar.js ├── Rollbar.js.map ├── Rollbar.native.js ├── Rollbar.native.js.map ├── merge.js └── merge.js.map ├── package.json ├── react-native.config.js ├── src ├── Client.js ├── Rollbar.js ├── Rollbar.native.js └── merge.js └── yarn.lock /.gitattributes: -------------------------------------------------------------------------------- 1 | *.pbxproj -text -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## Description of the change 2 | 3 | > Please include a summary of the change and which issues are fixed. 4 | > Please also include relevant motivation and context. 5 | 6 | ## Type of change 7 | 8 | - [ ] Bug fix (non-breaking change that fixes an issue) 9 | - [ ] New feature (non-breaking change that adds functionality) 10 | - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) 11 | - [ ] Maintenance 12 | - [ ] New release 13 | 14 | ## Related issues 15 | 16 | > Shortcut stories and GitHub issues (delete irrelevant) 17 | 18 | - Fix [SC-] 19 | - Fix #1 20 | 21 | ## Checklists 22 | 23 | ### Development 24 | 25 | - [ ] Lint rules pass locally 26 | - [ ] The code changed/added as part of this pull request has been covered with tests 27 | - [ ] All tests related to the changed code pass in development 28 | 29 | ### Code review 30 | 31 | - [ ] This pull request has a descriptive title and information useful to a reviewer. There may be a screenshot or screencast attached 32 | - [ ] "Ready for review" label attached to the PR and reviewers assigned 33 | - [ ] Issue from task tracker has a link to this pull request 34 | - [ ] Changes have been reviewed by at least one other engineer 35 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # OSX 3 | # 4 | .DS_Store 5 | 6 | # node.js 7 | # 8 | node_modules/ 9 | npm-debug.log 10 | yarn-error.log 11 | 12 | 13 | # Xcode 14 | # 15 | build/ 16 | *.pbxuser 17 | !default.pbxuser 18 | *.mode1v3 19 | !default.mode1v3 20 | *.mode2v3 21 | !default.mode2v3 22 | *.perspectivev3 23 | !default.perspectivev3 24 | xcuserdata 25 | *.xccheckout 26 | *.moved-aside 27 | DerivedData 28 | *.hmap 29 | *.ipa 30 | *.xcuserstate 31 | project.xcworkspace 32 | 33 | 34 | # Android/IntelliJ 35 | # 36 | build/ 37 | .idea 38 | .gradle 39 | local.properties 40 | *.iml 41 | 42 | # BUCK 43 | buck-out/ 44 | \.buckd/ 45 | *.keystore 46 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | rollbar-logo 3 |

4 | 5 |

Rollbar React Native

6 | 7 |

8 | Proactively discover, predict, and resolve errors in real-time with Rollbar’s error monitoring platform. Start tracking errors today! 9 |

10 | 11 | --- 12 | 13 | [Rollbar](https://rollbar.com) is a real-time exception reporting service for React-Native and other languages. The Rollbar service will 14 | alert you of problems with your code and help you understand them in a ways never possible before. We love it and we hope you will too. 15 | 16 | Rollbar-react-native is the SDK for React Native apps and includes support for Android, iOS, and Javascript. 17 | 18 | ## Key benefits of using Rollbar React Native are: 19 | - **Source maps:** Uploading source maps from Javascript, Android and IOS bundles is made easy through Rollbar. Learn more about react native sourcemaps. 20 | - **Automatic error grouping:** Rollbar aggregates Occurrences caused by the same error into Items that represent application issues. Learn more about reducing log noise. 21 | - **Advanced search:** Filter items by many different properties. Learn more about search. 22 | - **Customizable notifications:** Rollbar supports several messaging and incident management tools where your team can get notified about errors and important events by real-time alerts. Learn more about Rollbar notifications. 23 | 24 | 25 | # Setup Instructions 26 | 27 | 1. [Sign up for a Rollbar account](https://rollbar.com/signup) 28 | 2. Follow the [Getting Started](https://rollbar.readme.io/docs/react-native#section-getting-started) instructions in our [React Native docs](https://rollbar.readme.io/docs/react-native) to install rollbar-react-native and configure it for your platform. 29 | 30 | # Usage and Reference 31 | 32 | For complete Usage instructions and configuration reference, see our [React Native docs](https://rollbar.readme.io/docs/react-native#section-configuration). 33 | 34 | # Release History & Changelog 35 | 36 | See our [Releases](https://github.com/rollbar/rollbar-react-native/releases) page for a list of all releases, including changes. 37 | 38 | # Help / Support 39 | 40 | If you run into any issues, please email us at [support@rollbar.com](mailto:support@rollbar.com) 41 | 42 | For bug reports, please [open an issue on Github](https://github.com/rollbar/rollbar-react-native/issues/new). 43 | 44 | # Contributing 45 | 46 | 1. Fork it 47 | 2. Create your feature branch (```git checkout -b my-new-feature```). 48 | 3. Commit your changes (```git commit -am 'Added some feature'```) 49 | 4. Push to the branch (```git push origin my-new-feature```) 50 | 5. Create new Pull Request 51 | -------------------------------------------------------------------------------- /RollbarReactNative.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = 'RollbarReactNative' 3 | s.version = '1.0.0-beta.5' 4 | s.summary = 'RollbarReactNative' 5 | s.description = <<-DESC 6 | RollbarReactNative is a library for interacting with the Rollbar 7 | error monitoring system in React Native apps. 8 | DESC 9 | s.homepage = 'https://rollbar.com' 10 | s.license = 'MIT' 11 | s.author = { 'Rollbar' => 'support@rollbar.com' } 12 | s.platform = :ios, '13.0' 13 | s.source = { :git => 'https://github.com/rollbar/rollbar-react-native.git', :tag => '1.0.0-beta.5' } 14 | s.requires_arc = true 15 | 16 | s.dependency 'React-Core' 17 | s.dependency 'RollbarNotifier', '3.3.3' 18 | s.source_files = 'ios/RollbarReactNative.{h,m}' 19 | s.public_header_files = 'ios/RollbarReactNative.h' 20 | 21 | s.compiler_flags = '-fmodules', '-fcxx-modules' 22 | end 23 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion project.hasProperty('compileSdkVersion') ? project.compileSdkVersion : 27 5 | buildToolsVersion project.hasProperty('buildToolsVersion') ? project.buildToolsVersion : "27.0.3" 6 | 7 | defaultConfig { 8 | minSdkVersion 16 9 | targetSdkVersion 27 10 | versionCode 1 11 | versionName "1.0" 12 | } 13 | } 14 | 15 | dependencies { 16 | implementation('com.rollbar:rollbar-android:1.7.1') 17 | implementation 'com.facebook.react:react-native:+' 18 | implementation 'com.google.code.gson:gson:+' 19 | } 20 | -------------------------------------------------------------------------------- /android/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android/src/main/java/com/rollbar/RollbarReactNative.java: -------------------------------------------------------------------------------- 1 | package com.rollbar; 2 | 3 | import java.util.Map; 4 | import java.util.MissingResourceException; 5 | 6 | import com.google.gson.JsonObject; 7 | 8 | import com.facebook.react.ReactPackage; 9 | import com.facebook.react.bridge.ReactContext; 10 | import com.facebook.react.bridge.ReactApplicationContext; 11 | import com.facebook.react.bridge.ReadableMap; 12 | import com.facebook.react.bridge.ReactContextBaseJavaModule; 13 | import com.facebook.react.bridge.ReactMethod; 14 | 15 | import android.content.Context; 16 | import android.content.pm.PackageManager; 17 | import android.content.pm.PackageManager.NameNotFoundException; 18 | import android.content.pm.PackageInfo; 19 | import android.content.pm.ApplicationInfo; 20 | import android.os.Build; 21 | import android.os.Bundle; 22 | 23 | import com.rollbar.android.Rollbar; 24 | import com.rollbar.android.provider.NotifierProvider; 25 | import com.rollbar.api.payload.data.Level; 26 | import com.rollbar.notifier.config.Config; 27 | import com.rollbar.notifier.config.ConfigBuilder; 28 | import com.rollbar.notifier.config.ConfigProvider; 29 | 30 | public class RollbarReactNative extends ReactContextBaseJavaModule { 31 | private static final String REACT_NATIVE = "react-native"; 32 | private static final String NOTIFIER_NAME = "rollbar-react-native"; 33 | private static final String NOTIFIER_VERSION = "1.0.0-beta.5"; 34 | private static final String MANIFEST_CODE_VERSION = "com.rollbar.android.CODE_VERSION"; 35 | 36 | private ReactContext reactContext; 37 | 38 | public static ReactPackage getPackage() { 39 | return new RollbarReactNativePackage(); 40 | } 41 | 42 | public RollbarReactNative(ReactApplicationContext reactContext) { 43 | super(reactContext); 44 | this.reactContext = reactContext; 45 | } 46 | 47 | public static void init(Context context, String accessToken, String environment) { 48 | init(context, accessToken, environment, true); 49 | } 50 | 51 | public static void init(Context context, String accessToken, String environment, boolean registerExceptionHandler) { 52 | final String codeVersion = loadCodeVersionFromManifest(context); 53 | 54 | Rollbar.init(context, accessToken, environment, registerExceptionHandler, false, new ConfigProvider() { 55 | @Override 56 | public Config provide(ConfigBuilder builder) { 57 | return builder 58 | .framework(REACT_NATIVE) 59 | .platform("android") 60 | .codeVersion(codeVersion) // OK to send null here if there's no code version. 61 | .notifier(new NotifierProvider(NOTIFIER_VERSION, NOTIFIER_NAME)) 62 | .build(); 63 | } 64 | }); 65 | } 66 | 67 | private static String loadCodeVersionFromManifest(Context context) { 68 | ApplicationInfo ai; 69 | 70 | try { 71 | ai = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA); 72 | } catch (NameNotFoundException e) { 73 | return null; 74 | } 75 | 76 | Bundle data = ai.metaData; 77 | 78 | // The bundle will be null if there are no metadata values. 79 | if (data == null) { 80 | return null; 81 | } 82 | 83 | try { 84 | return data.getString(MANIFEST_CODE_VERSION); 85 | } catch (MissingResourceException e) { 86 | return null; 87 | } 88 | } 89 | 90 | /** 91 | * Record a critical error. 92 | * 93 | * @param error the error. 94 | */ 95 | public static void critical(Throwable error) { 96 | critical(error, null, null); 97 | } 98 | 99 | /** 100 | * Record a critical error with human readable description. 101 | * 102 | * @param error the error. 103 | * @param description human readable description of error. 104 | */ 105 | public static void critical(Throwable error, String description) { 106 | critical(error, null, description); 107 | } 108 | 109 | /** 110 | * Record a critical error with extra information attached. 111 | * 112 | * @param error the error. 113 | * @param custom the extra information. 114 | */ 115 | public static void critical(Throwable error, Map custom) { 116 | critical(error, custom, null); 117 | } 118 | 119 | /** 120 | * Record a critical message. 121 | * 122 | * @param message the message. 123 | */ 124 | public static void critical(String message) { 125 | critical(null, null, message); 126 | } 127 | 128 | /** 129 | * Record a critical message with extra information attached. 130 | * 131 | * @param message the message. 132 | * @param custom the extra information. 133 | */ 134 | public static void critical(String message, Map custom) { 135 | critical(null, custom, message); 136 | } 137 | 138 | /** 139 | * Record a critical error with custom parameters and human readable description. 140 | * 141 | * @param error the error. 142 | * @param custom the custom data. 143 | * @param description the human readable description of error. 144 | */ 145 | public static void critical(Throwable error, Map custom, String description) { 146 | log(error, custom, description, Level.CRITICAL); 147 | } 148 | 149 | /** 150 | * Record an error. 151 | * 152 | * @param error the error. 153 | */ 154 | public static void error(Throwable error) { 155 | error(error, null, null); 156 | } 157 | 158 | /** 159 | * Record an error with human readable description. 160 | * 161 | * @param error the error. 162 | * @param description human readable description of error. 163 | */ 164 | public static void error(Throwable error, String description) { 165 | error(error, null, description); 166 | } 167 | 168 | /** 169 | * Record an error with extra information attached. 170 | * 171 | * @param error the error. 172 | * @param custom the extra information. 173 | */ 174 | public static void error(Throwable error, Map custom) { 175 | error(error, custom, null); 176 | } 177 | 178 | /** 179 | * Record an error message. 180 | * 181 | * @param message the message. 182 | */ 183 | public static void error(String message) { 184 | error(null, null, message); 185 | } 186 | 187 | /** 188 | * Record a error message with extra information attached. 189 | * 190 | * @param message the message. 191 | * @param custom the extra information. 192 | */ 193 | public static void error(String message, Map custom) { 194 | error(null, custom, message); 195 | } 196 | 197 | /** 198 | * Record an error with custom parameters and human readable description. 199 | * 200 | * @param error the error. 201 | * @param custom the custom data. 202 | * @param description the human readable description of error. 203 | */ 204 | public static void error(Throwable error, Map custom, String description) { 205 | log(error, custom, description, Level.ERROR); 206 | } 207 | 208 | /** 209 | * Record an error as a warning. 210 | * 211 | * @param error the error. 212 | */ 213 | public static void warning(Throwable error) { 214 | warning(error, null, null); 215 | } 216 | 217 | /** 218 | * Record a warning with human readable description. 219 | * 220 | * @param error the error. 221 | * @param description human readable description of error. 222 | */ 223 | public static void warning(Throwable error, String description) { 224 | warning(error, null, description); 225 | } 226 | 227 | /** 228 | * Record a warning error with extra information attached. 229 | * 230 | * @param error the error. 231 | * @param custom the extra information. 232 | */ 233 | public static void warning(Throwable error, Map custom) { 234 | warning(error, custom, null); 235 | } 236 | 237 | /** 238 | * Record a warning message. 239 | * 240 | * @param message the message. 241 | */ 242 | public static void warning(String message) { 243 | warning(null, null, message); 244 | } 245 | 246 | /** 247 | * Record a warning message with extra information attached. 248 | * 249 | * @param message the message. 250 | * @param custom the extra information. 251 | */ 252 | public static void warning(String message, Map custom) { 253 | warning(null, custom, message); 254 | } 255 | 256 | /** 257 | * Record a warning error with custom parameters and human readable description. 258 | * 259 | * @param error the error. 260 | * @param custom the custom data. 261 | * @param description the human readable description of error. 262 | */ 263 | public static void warning(Throwable error, Map custom, String description) { 264 | log(error, custom, description, Level.WARNING); 265 | } 266 | 267 | /** 268 | * Record an error as an info. 269 | * 270 | * @param error the error. 271 | */ 272 | public static void info(Throwable error) { 273 | info(error, null, null); 274 | } 275 | 276 | /** 277 | * Record an info error with human readable description. 278 | * 279 | * @param error the error. 280 | * @param description human readable description of error. 281 | */ 282 | public static void info(Throwable error, String description) { 283 | info(error, null, description); 284 | } 285 | 286 | /** 287 | * Record an info error with extra information attached. 288 | * 289 | * @param error the error. 290 | * @param custom the extra information. 291 | */ 292 | public static void info(Throwable error, Map custom) { 293 | info(error, custom, null); 294 | } 295 | 296 | /** 297 | * Record an informational message. 298 | * 299 | * @param message the message. 300 | */ 301 | public static void info(String message) { 302 | info(null, null, message); 303 | } 304 | 305 | /** 306 | * Record an informational message with extra information attached. 307 | * 308 | * @param message the message. 309 | * @param custom the extra information. 310 | */ 311 | public static void info(String message, Map custom) { 312 | info(null, custom, message); 313 | } 314 | 315 | /** 316 | * Record an info error with custom parameters and human readable description. 317 | * 318 | * @param error the error. 319 | * @param custom the custom data. 320 | * @param description the human readable description of error. 321 | */ 322 | public static void info(Throwable error, Map custom, String description) { 323 | log(error, custom, description, Level.INFO); 324 | } 325 | 326 | /** 327 | * Record an error as debugging information. 328 | * 329 | * @param error the error. 330 | */ 331 | public static void debug(Throwable error) { 332 | debug(error, null, null); 333 | } 334 | 335 | /** 336 | * Record a debug error with human readable description. 337 | * 338 | * @param error the error. 339 | * @param description human readable description of error. 340 | */ 341 | public static void debug(Throwable error, String description) { 342 | debug(error, null, description); 343 | } 344 | 345 | /** 346 | * Record a debug error with extra information attached. 347 | * 348 | * @param error the error. 349 | * @param custom the extra information. 350 | */ 351 | public static void debug(Throwable error, Map custom) { 352 | debug(error, custom, null); 353 | } 354 | 355 | /** 356 | * Record a debugging message. 357 | * 358 | * @param message the message. 359 | */ 360 | public static void debug(String message) { 361 | debug(null, null, message); 362 | } 363 | 364 | /** 365 | * Record a debugging message with extra information attached. 366 | * 367 | * @param message the message. 368 | * @param custom the extra information. 369 | */ 370 | public static void debug(String message, Map custom) { 371 | debug(null, custom, message); 372 | } 373 | 374 | /** 375 | * Record a debug error with custom parameters and human readable description. 376 | * 377 | * @param error the error. 378 | * @param custom the custom data. 379 | * @param description the human readable description of error. 380 | */ 381 | public static void debug(Throwable error, Map custom, String description) { 382 | log(error, custom, description, Level.DEBUG); 383 | } 384 | 385 | /** 386 | * Log an error at the level returned by {@link com.rollbar.notifier.Rollbar#level}. 387 | * 388 | * @param error the error. 389 | */ 390 | public static void log(Throwable error) { 391 | log(error, null, null, null); 392 | } 393 | 394 | /** 395 | * Record an error with human readable description at the default level returned by {@link 396 | * com.rollbar.notifier.Rollbar#level}. 397 | * 398 | * @param error the error. 399 | * @param description human readable description of error. 400 | */ 401 | public static void log(Throwable error, String description) { 402 | log(error, null, description, null); 403 | } 404 | 405 | /** 406 | * Record an error with extra information attached at the default level returned by {@link 407 | * com.rollbar.notifier.Rollbar#level}. 408 | * 409 | * @param error the error. 410 | * @param custom the extra information. 411 | */ 412 | public static void log(Throwable error, Map custom) { 413 | log(error, custom, null, null); 414 | } 415 | 416 | /** 417 | * Record an error with extra information attached at the level specified. 418 | * 419 | * @param error the error. 420 | * @param custom the extra information. 421 | * @param level the level. 422 | */ 423 | public static void log(Throwable error, Map custom, Level level) { 424 | log(error, custom, null, level); 425 | } 426 | 427 | /** 428 | * Log an error at level specified. 429 | * 430 | * @param error the error. 431 | * @param level the level of the error. 432 | */ 433 | public static void log(Throwable error, Level level) { 434 | log(error, null, null, level); 435 | } 436 | 437 | /** 438 | * Record a debug error with human readable description at the specified level. 439 | * 440 | * @param error the error. 441 | * @param description human readable description of error. 442 | * @param level the level. 443 | */ 444 | public static void log(Throwable error, String description, Level level) { 445 | log(error, null, description, level); 446 | } 447 | 448 | /** 449 | * Record an error with custom parameters and human readable description at the default level 450 | * returned by {@link com.rollbar.notifier.Rollbar#level}. 451 | * 452 | * @param error the error. 453 | * @param custom the custom data. 454 | * @param description the human readable description of error. 455 | */ 456 | public static void log(Throwable error, Map custom, String description) { 457 | log(error, custom, description, null); 458 | } 459 | 460 | /** 461 | * Record a debugging message at the level returned by {@link com.rollbar.notifier.Rollbar#level} (WARNING unless level 462 | * is overridden). 463 | * 464 | * @param message the message. 465 | */ 466 | public static void log(String message) { 467 | log(null, null, message, null); 468 | } 469 | 470 | /** 471 | * Record a message with extra information attached at the default level returned by {@link 472 | * com.rollbar.notifier.Rollbar#level}, (WARNING unless level overridden). 473 | * 474 | * @param message the message. 475 | * @param custom the extra information. 476 | */ 477 | public static void log(String message, Map custom) { 478 | log(null, custom, message, null); 479 | } 480 | 481 | /** 482 | * Record a message at the level specified. 483 | * 484 | * @param message the message. 485 | * @param level the level. 486 | */ 487 | public static void log(String message, Level level) { 488 | log(null, null, message, level); 489 | } 490 | 491 | /** 492 | * Record a message with extra information attached at the specified level. 493 | * 494 | * @param message the message. 495 | * @param custom the extra information. 496 | * @param level the level. 497 | */ 498 | public static void log(String message, Map custom, Level level) { 499 | log(null, custom, message, level); 500 | } 501 | 502 | /** 503 | * Record an error or message with extra data at the level specified. At least ene of `error` or 504 | * `description` must be non-null. If error is null, `description` will be sent as a message. If 505 | * error is non-null, description will be sent as the description of the error. Custom data will 506 | * be attached to message if the error is null. 507 | * 508 | * @param error the error (if any). 509 | * @param custom the custom data (if any). 510 | * @param description the description of the error, or the message to send. 511 | * @param level the level to send it at. 512 | */ 513 | public static void log(final Throwable error, final Map custom, final String description, final Level level) { 514 | Rollbar.instance().log(error, custom, description, level); 515 | } 516 | 517 | public static Rollbar instance() { 518 | return Rollbar.instance(); 519 | } 520 | 521 | @Override 522 | public String getName() { 523 | return "RollbarReactNative"; 524 | } 525 | 526 | @ReactMethod 527 | public void init(ReadableMap options) { 528 | final String environment = options.hasKey("environment") ? options.getString("environment") : "production"; 529 | final String platform = options.hasKey("platform") ? options.getString("platform") : "android"; 530 | final String notifier_version = options.hasKey("notifier") ? options.getMap("notifier").getString("version") : NOTIFIER_VERSION; 531 | final String notifier_name = options.hasKey("notifier") ? options.getMap("notifier").getString("name") : NOTIFIER_NAME; 532 | final boolean enabled = options.hasKey("enabled") ? options.getBoolean("enabled") : true; 533 | Rollbar.instance().configure(new ConfigProvider() { 534 | @Override 535 | public Config provide(ConfigBuilder builder) { 536 | return builder 537 | .platform(platform) 538 | .framework(REACT_NATIVE) 539 | .environment(environment) 540 | .notifier(new NotifierProvider(notifier_version, notifier_name)) 541 | .handleUncaughtErrors(enabled) 542 | .build(); 543 | } 544 | }); 545 | } 546 | 547 | @ReactMethod 548 | public void setPerson(ReadableMap personInfo) { 549 | String userId = personInfo.hasKey("id") ? personInfo.getString("id") : null; 550 | String email = personInfo.hasKey("email") ? personInfo.getString("email") : null; 551 | String name = personInfo.hasKey("name") ? personInfo.getString("name") : null; 552 | Rollbar.instance().setPersonData(userId, name, email); 553 | } 554 | 555 | @ReactMethod 556 | public void clearPerson() { 557 | Rollbar.instance().clearPersonData(); 558 | } 559 | 560 | // Defined as synchronous because the data must be returned in the 561 | // javascript configuration constructor before Rollbar.js is initialized. 562 | @ReactMethod(isBlockingSynchronousMethod = true) 563 | public String deviceAttributes() { 564 | JsonObject attributes = new JsonObject(); 565 | 566 | attributes.addProperty("os", "android"); 567 | attributes.addProperty("phone_model", android.os.Build.MODEL); 568 | attributes.addProperty("android_version", android.os.Build.VERSION.RELEASE); 569 | attributes.addProperty("board", android.os.Build.BOARD); 570 | attributes.addProperty("brand", android.os.Build.BRAND); 571 | attributes.addProperty("device", android.os.Build.DEVICE); 572 | attributes.addProperty("manufacturer", android.os.Build.MANUFACTURER); 573 | attributes.addProperty("product", android.os.Build.PRODUCT); 574 | 575 | return attributes.toString(); 576 | } 577 | } 578 | -------------------------------------------------------------------------------- /android/src/main/java/com/rollbar/RollbarReactNativePackage.java: -------------------------------------------------------------------------------- 1 | package com.rollbar; 2 | 3 | import java.util.Arrays; 4 | import java.util.Collections; 5 | import java.util.List; 6 | 7 | import com.facebook.react.ReactPackage; 8 | import com.facebook.react.bridge.NativeModule; 9 | import com.facebook.react.bridge.ReactApplicationContext; 10 | import com.facebook.react.bridge.JavaScriptModule; 11 | import com.facebook.react.uimanager.ViewManager; 12 | 13 | public class RollbarReactNativePackage implements ReactPackage { 14 | @Override 15 | public List createNativeModules(ReactApplicationContext reactContext) { 16 | return Arrays.asList(new RollbarReactNative(reactContext)); 17 | } 18 | 19 | // Deprecated from RN 0.47 20 | public List> createJSModules() { 21 | return Collections.emptyList(); 22 | } 23 | 24 | @Override 25 | public List createViewManagers(ReactApplicationContext reactContext) { 26 | return Collections.emptyList(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | export class Client { 2 | constructor(config: ConfigurationOptions); 3 | 4 | public rollbar: Rollbar; 5 | 6 | public captureUncaughtExceptions(): void; 7 | public captureUnhandledRejections(): void; 8 | 9 | public log(obj: LogArgument, extra?: Extra, callback?: Callback): LogResult; 10 | public debug(obj: LogArgument, extra?: Extra, callback?: Callback): LogResult; 11 | public info(obj: LogArgument, extra?: Extra, callback?: Callback): LogResult; 12 | public warning(obj: LogArgument, extra?: Extra, callback?: Callback): LogResult; 13 | public error(obj: LogArgument, extra?: Extra, callback?: Callback): LogResult; 14 | public critical(obj: LogArgument, extra?: Extra, callback?: Callback): LogResult; 15 | 16 | public setPerson(id: string | null, name?: string | null, email?: string | null): void; 17 | public clearPerson(): void; 18 | } 19 | 20 | export class Configuration { 21 | constructor(options?: ConfigurationOptions); 22 | public setPlatform(platform: string): void; 23 | public toJSON(): object; 24 | } 25 | 26 | export type LogArgument = string | Error | object | Callback | Date | any[]; 27 | export type Extra = object | undefined | null; 28 | export interface LogResult { 29 | uuid: string; 30 | } 31 | export type MaybeError = Error | undefined | null; 32 | export type Callback = (err: MaybeError, response: object) => void; 33 | 34 | export type Rollbar = import("rollbar").Rollbar; 35 | export type ConfigurationOptions = import("rollbar").Configuration; 36 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | module.exports = require('./lib/Client'); 3 | -------------------------------------------------------------------------------- /ios/RollbarReactNative.h: -------------------------------------------------------------------------------- 1 | #if __has_include() 2 | #import 3 | #else 4 | #import "RCTBridgeModule.h" 5 | #endif 6 | 7 | @interface RollbarReactNative : NSObject 8 | 9 | + (void)initWithConfiguration:(nonnull NSDictionary *)configuration; 10 | 11 | + (void)log:(nonnull NSString*)level message:(nonnull NSString*)message; 12 | + (void)log:(nonnull NSString*)level exception:(nonnull NSException*)exception; 13 | + (void)log:(nonnull NSString*)level error:(nonnull NSError*)error; 14 | 15 | + (void)log:(nonnull NSString*)level 16 | message:(nonnull NSString*)message 17 | data:(nullable NSDictionary *)data; 18 | 19 | + (void)log:(nonnull NSString*)level 20 | exception:(nonnull NSException*)exception 21 | data:(nullable NSDictionary *)data; 22 | 23 | + (void)log:(nonnull NSString*)level 24 | error:(nonnull NSError*)error 25 | data:(nullable NSDictionary *)data; 26 | 27 | + (void)log:(nonnull NSString*)level 28 | message:(nonnull NSString*)message 29 | data:(nullable NSDictionary *)data 30 | context:(nullable NSString *)context; 31 | 32 | + (void)log:(nonnull NSString*)level 33 | exception:(nonnull NSException*)exception 34 | data:(nullable NSDictionary *)data 35 | context:(nullable NSString *)context; 36 | 37 | + (void)log:(nonnull NSString*)level 38 | error:(nonnull NSError*)error 39 | data:(nullable NSDictionary *)data 40 | context:(nullable NSString *)context; 41 | 42 | + (void)debugMessage:(nonnull NSString*)message; 43 | + (void)debugException:(nonnull NSException*)exception; 44 | + (void)debugError:(nonnull NSError*)error; 45 | 46 | + (void)debugMessage:(nonnull NSString*)message 47 | data:(nullable NSDictionary *)data; 48 | 49 | + (void)debugException:(nonnull NSException*)exception 50 | data:(nullable NSDictionary *)data; 51 | 52 | + (void)debugError:(nonnull NSError*)error 53 | data:(nullable NSDictionary *)data; 54 | 55 | + (void)debugMessage:(nonnull NSString*)message 56 | data:(nullable NSDictionary *)data 57 | context:(nullable NSString *)context; 58 | 59 | + (void)debugException:(nonnull NSException*)exception 60 | data:(nullable NSDictionary *)data 61 | context:(nullable NSString *)context; 62 | 63 | + (void)debugError:(nonnull NSError*)error 64 | data:(nullable NSDictionary *)data 65 | context:(nullable NSString *)context; 66 | 67 | + (void)infoMessage:(nonnull NSString*)message; 68 | + (void)infoException:(nonnull NSException*)exception; 69 | + (void)infoError:(nonnull NSError*)error; 70 | 71 | + (void)infoMessage:(nonnull NSString*)message 72 | data:(nullable NSDictionary *)data; 73 | 74 | + (void)infoException:(nonnull NSException*)exception 75 | data:(nullable NSDictionary *)data; 76 | 77 | + (void)infoError:(nonnull NSError*)error 78 | data:(nullable NSDictionary *)data; 79 | 80 | + (void)infoMessage:(nonnull NSString*)message 81 | data:(nullable NSDictionary *)data 82 | context:(nullable NSString *)context; 83 | 84 | + (void)infoException:(nonnull NSException*)exception 85 | data:(nullable NSDictionary *)data 86 | context:(nullable NSString *)context; 87 | 88 | + (void)infoError:(nonnull NSError*)error 89 | data:(nullable NSDictionary *)data 90 | context:(nullable NSString *)context; 91 | 92 | + (void)warningMessage:(nonnull NSString*)message; 93 | + (void)warningException:(nonnull NSException*)exception; 94 | + (void)warningError:(nonnull NSError*)error; 95 | 96 | + (void)warningMessage:(nonnull NSString*)message 97 | data:(nullable NSDictionary *)data; 98 | 99 | + (void)warningException:(nonnull NSException*)exception 100 | data:(nullable NSDictionary *)data; 101 | 102 | + (void)warningError:(nonnull NSError*)error 103 | data:(nullable NSDictionary *)data; 104 | 105 | + (void)warningMessage:(nonnull NSString*)message 106 | data:(nullable NSDictionary *)data 107 | context:(nullable NSString *)context; 108 | 109 | + (void)warningException:(nonnull NSException*)exception 110 | data:(nullable NSDictionary *)data 111 | context:(nullable NSString *)context; 112 | 113 | + (void)warningError:(nonnull NSError*)error 114 | data:(nullable NSDictionary *)data 115 | context:(nullable NSString *)context; 116 | 117 | + (void)errorMessage:(nonnull NSString*)message; 118 | + (void)errorException:(nonnull NSException*)exception; 119 | + (void)errorError:(nonnull NSError*)error; 120 | 121 | + (void)errorMessage:(nonnull NSString*)message 122 | data:(nullable NSDictionary *)data; 123 | 124 | + (void)errorException:(nonnull NSException*)exception 125 | data:(nullable NSDictionary *)data; 126 | 127 | + (void)errorError:(nonnull NSError*)error 128 | data:(nullable NSDictionary *)data; 129 | 130 | + (void)errorMessage:(nonnull NSString*)message 131 | data:(nullable NSDictionary *)data 132 | context:(nullable NSString *)context; 133 | 134 | + (void)errorException:(nonnull NSException*)exception 135 | data:(nullable NSDictionary *)data 136 | context:(nullable NSString *)context; 137 | 138 | + (void)errorError:(nonnull NSError*)error 139 | data:(nullable NSDictionary *)data 140 | context:(nullable NSString *)context; 141 | 142 | + (void)criticalMessage:(nonnull NSString*)message; 143 | + (void)criticalException:(nonnull NSException*)exception; 144 | + (void)criticalError:(nonnull NSError*)error; 145 | 146 | + (void)criticalMessage:(nonnull NSString*)message 147 | data:(nullable NSDictionary *)data; 148 | 149 | + (void)criticalException:(nonnull NSException*)exception 150 | data:(nullable NSDictionary *)data; 151 | 152 | + (void)criticalError:(nonnull NSError*)error 153 | data:(nullable NSDictionary *)data; 154 | 155 | + (void)criticalMessage:(nonnull NSString*)message 156 | data:(nullable NSDictionary *)data 157 | context:(nullable NSString *)context; 158 | 159 | + (void)criticalException:(nonnull NSException*)exception 160 | data:(nullable NSDictionary *)data 161 | context:(nullable NSString *)context; 162 | 163 | + (void)criticalError:(nonnull NSError*)error 164 | data:(nullable NSDictionary *)data 165 | context:(nullable NSString *)context; 166 | 167 | - (void)init:(nonnull NSDictionary *)options; 168 | - (void)setPerson:(nonnull NSDictionary *)personInfo; 169 | - (void)clearPerson; 170 | 171 | @end 172 | -------------------------------------------------------------------------------- /ios/RollbarReactNative.m: -------------------------------------------------------------------------------- 1 | #import "RollbarReactNative.h" 2 | #if __has_include() 3 | #import 4 | #else 5 | #import "RCTConvert.h" 6 | #endif 7 | #include 8 | 9 | #if __has_include() 10 | #import 11 | #else 12 | #import "Rollbar.h" 13 | #endif 14 | 15 | @implementation RollbarReactNative 16 | 17 | static NSString *const NOTIFIER_NAME = @"rollbar-react-native"; 18 | static NSString *const NOTIFIER_VERSION = @"1.0.0-beta.5"; 19 | static NSString *const REACT_NATIVE = @"react-native"; 20 | 21 | + (void)initWithConfiguration:(NSDictionary*)options { 22 | RollbarMutableConfig *config = [[Rollbar configuration] mutableCopy]; 23 | if (config) { 24 | updateConfiguration(config, options); 25 | [Rollbar updateWithConfiguration:config]; 26 | return; 27 | } 28 | config = [RollbarConfig mutableConfigWithAccessToken:[RCTConvert NSString:options[@"accessToken"]]]; 29 | updateConfiguration(config, options); 30 | 31 | [Rollbar initWithConfiguration:config]; 32 | } 33 | 34 | + (void)log:(nonnull NSString*)level message:(NSString*)message { 35 | RollbarLevel rLevel = rollbarLevelFromString(level); 36 | [Rollbar log:rLevel message:message]; 37 | } 38 | 39 | + (void)log:(nonnull NSString*)level exception:(NSException*)exception { 40 | RollbarLevel rLevel = rollbarLevelFromString(level); 41 | [Rollbar log:rLevel exception:exception]; 42 | } 43 | 44 | + (void)log:(nonnull NSString*)level error:(NSError*)error { 45 | RollbarLevel rLevel = rollbarLevelFromString(level); 46 | [Rollbar log:rLevel error:error]; 47 | } 48 | 49 | + (void)log:(nonnull NSString*)level 50 | message:(NSString*)message 51 | data:(nullable NSDictionary *)data { 52 | RollbarLevel rLevel = rollbarLevelFromString(level); 53 | [Rollbar log:rLevel message:message data:data]; 54 | } 55 | 56 | + (void)log:(nonnull NSString*)level 57 | exception:(NSException*)exception 58 | data:(nullable NSDictionary *)data { 59 | RollbarLevel rLevel = rollbarLevelFromString(level); 60 | [Rollbar log:rLevel exception:exception data:data]; 61 | } 62 | 63 | + (void)log:(nonnull NSString*)level 64 | error:(NSError*)error 65 | data:(nullable NSDictionary *)data { 66 | RollbarLevel rLevel = rollbarLevelFromString(level); 67 | [Rollbar log:rLevel error:error data:data]; 68 | } 69 | 70 | + (void)log:(nonnull NSString*)level 71 | message:(NSString*)message 72 | data:(nullable NSDictionary *)data 73 | context:(nullable NSString *)context { 74 | RollbarLevel rLevel = rollbarLevelFromString(level); 75 | [Rollbar log:rLevel message:message data:data context:context]; 76 | } 77 | 78 | + (void)log:(nonnull NSString*)level 79 | exception:(NSException*)exception 80 | data:(nullable NSDictionary *)data 81 | context:(nullable NSString *)context { 82 | RollbarLevel rLevel = rollbarLevelFromString(level); 83 | [Rollbar log:rLevel exception:exception data:data context:context]; 84 | } 85 | 86 | + (void)log:(nonnull NSString*)level 87 | error:(NSError*)error 88 | data:(nullable NSDictionary *)data 89 | context:(nullable NSString *)context { 90 | RollbarLevel rLevel = rollbarLevelFromString(level); 91 | [Rollbar log:rLevel error:error data:data context:context]; 92 | } 93 | 94 | + (void)debugMessage:(NSString*)message { 95 | [Rollbar debugMessage:message]; 96 | } 97 | 98 | + (void)debugException:(NSException*)exception { 99 | [Rollbar debugException:exception]; 100 | } 101 | 102 | + (void)debugError:(NSError*)error { 103 | [Rollbar debugError:error]; 104 | } 105 | 106 | + (void)debugMessage:(NSString*)message 107 | data:(nullable NSDictionary *)data { 108 | [Rollbar debugMessage:message data:data]; 109 | } 110 | 111 | + (void)debugException:(NSException*)exception 112 | data:(nullable NSDictionary *)data { 113 | [Rollbar debugException:exception data:data]; 114 | } 115 | 116 | + (void)debugError:(NSError*)error 117 | data:(nullable NSDictionary *)data { 118 | [Rollbar debugError:error data:data]; 119 | } 120 | 121 | + (void)debugMessage:(NSString*)message 122 | data:(nullable NSDictionary *)data 123 | context:(nullable NSString *)context { 124 | [Rollbar debugMessage:message data:data context:context]; 125 | } 126 | 127 | + (void)debugException:(NSException*)exception 128 | data:(nullable NSDictionary *)data 129 | context:(nullable NSString *)context { 130 | [Rollbar debugException:exception data:data context:context]; 131 | } 132 | 133 | + (void)debugError:(NSError*)error 134 | data:(nullable NSDictionary *)data 135 | context:(nullable NSString *)context { 136 | [Rollbar debugError:error data:data context:context]; 137 | } 138 | 139 | + (void)infoMessage:(NSString*)message { 140 | [Rollbar infoMessage:message]; 141 | } 142 | 143 | + (void)infoException:(NSException*)exception { 144 | [Rollbar infoException:exception]; 145 | } 146 | 147 | + (void)infoError:(NSError*)error { 148 | [Rollbar infoError:error]; 149 | } 150 | 151 | + (void)infoMessage:(NSString*)message 152 | data:(nullable NSDictionary *)data { 153 | [Rollbar infoMessage:message data:data]; 154 | } 155 | 156 | + (void)infoException:(NSException*)exception 157 | data:(nullable NSDictionary *)data { 158 | [Rollbar infoException:exception data:data]; 159 | } 160 | 161 | + (void)infoError:(NSError*)error 162 | data:(nullable NSDictionary *)data { 163 | [Rollbar infoError:error data:data]; 164 | } 165 | 166 | + (void)infoMessage:(NSString*)message 167 | data:(nullable NSDictionary *)data 168 | context:(nullable NSString *)context { 169 | [Rollbar infoMessage:message data:data context:context]; 170 | } 171 | 172 | + (void)infoException:(NSException*)exception 173 | data:(nullable NSDictionary *)data 174 | context:(nullable NSString *)context { 175 | [Rollbar infoException:exception data:data context:context]; 176 | } 177 | 178 | + (void)infoError:(NSError*)error 179 | data:(nullable NSDictionary *)data 180 | context:(nullable NSString *)context { 181 | [Rollbar infoError:error data:data context:context]; 182 | } 183 | 184 | + (void)warningMessage:(NSString*)message { 185 | [Rollbar warningMessage:message]; 186 | } 187 | 188 | + (void)warningException:(NSException*)exception { 189 | [Rollbar warningException:exception]; 190 | } 191 | 192 | + (void)warningError:(NSError*)error { 193 | [Rollbar warningError:error]; 194 | } 195 | 196 | + (void)warningMessage:(NSString*)message 197 | data:(nullable NSDictionary *)data { 198 | [Rollbar warningMessage:message data:data]; 199 | } 200 | 201 | + (void)warningException:(NSException*)exception 202 | data:(nullable NSDictionary *)data { 203 | [Rollbar warningException:exception data:data]; 204 | } 205 | 206 | + (void)warningError:(NSError*)error 207 | data:(nullable NSDictionary *)data { 208 | [Rollbar warningError:error data:data]; 209 | } 210 | 211 | + (void)warningMessage:(NSString*)message 212 | data:(nullable NSDictionary *)data 213 | context:(nullable NSString *)context { 214 | [Rollbar warningMessage:message data:data context:context]; 215 | } 216 | 217 | + (void)warningException:(NSException*)exception 218 | data:(nullable NSDictionary *)data 219 | context:(nullable NSString *)context { 220 | [Rollbar warningException:exception data:data context:context]; 221 | } 222 | 223 | + (void)warningError:(NSError*)error 224 | data:(nullable NSDictionary *)data 225 | context:(nullable NSString *)context { 226 | [Rollbar warningError:error data:data context:context]; 227 | } 228 | 229 | + (void)errorMessage:(NSString*)message { 230 | [Rollbar errorMessage:message]; 231 | } 232 | 233 | + (void)errorException:(NSException*)exception { 234 | [Rollbar errorException:exception]; 235 | } 236 | 237 | + (void)errorError:(NSError*)error { 238 | [Rollbar errorError:error]; 239 | } 240 | 241 | + (void)errorMessage:(NSString*)message 242 | data:(nullable NSDictionary *)data { 243 | [Rollbar errorMessage:message data:data]; 244 | } 245 | 246 | + (void)errorException:(NSException*)exception 247 | data:(nullable NSDictionary *)data { 248 | [Rollbar errorException:exception data:data]; 249 | } 250 | 251 | + (void)errorError:(NSError*)error 252 | data:(nullable NSDictionary *)data { 253 | [Rollbar errorError:error data:data]; 254 | } 255 | 256 | + (void)errorMessage:(NSString*)message 257 | data:(nullable NSDictionary *)data 258 | context:(nullable NSString *)context { 259 | [Rollbar errorMessage:message data:data context:context]; 260 | } 261 | 262 | + (void)errorException:(NSException*)exception 263 | data:(nullable NSDictionary *)data 264 | context:(nullable NSString *)context { 265 | [Rollbar errorException:exception data:data context:context]; 266 | } 267 | 268 | + (void)errorError:(NSError*)error 269 | data:(nullable NSDictionary *)data 270 | context:(nullable NSString *)context { 271 | [Rollbar errorError:error data:data context:context]; 272 | } 273 | 274 | + (void)criticalMessage:(NSString*)message { 275 | [Rollbar criticalMessage:message]; 276 | } 277 | 278 | + (void)criticalException:(NSException*)exception { 279 | [Rollbar criticalException:exception]; 280 | } 281 | 282 | + (void)criticalError:(NSError*)error { 283 | [Rollbar criticalError:error]; 284 | } 285 | 286 | + (void)criticalMessage:(NSString*)message 287 | data:(nullable NSDictionary *)data { 288 | [Rollbar criticalMessage:message data:data]; 289 | } 290 | 291 | + (void)criticalException:(NSException*)exception 292 | data:(nullable NSDictionary *)data { 293 | [Rollbar criticalException:exception data:data]; 294 | } 295 | 296 | + (void)criticalError:(NSError*)error 297 | data:(nullable NSDictionary *)data { 298 | [Rollbar criticalError:error data:data]; 299 | } 300 | 301 | + (void)criticalMessage:(NSString*)message 302 | data:(nullable NSDictionary *)data 303 | context:(nullable NSString *)context { 304 | [Rollbar criticalMessage:message data:data context:context]; 305 | } 306 | 307 | + (void)criticalException:(NSException*)exception 308 | data:(nullable NSDictionary *)data 309 | context:(nullable NSString *)context { 310 | [Rollbar criticalException:exception data:data context:context]; 311 | } 312 | 313 | + (void)criticalError:(NSError*)error 314 | data:(nullable NSDictionary *)data 315 | context:(nullable NSString *)context { 316 | [Rollbar criticalError:error data:data context:context]; 317 | } 318 | 319 | RollbarLevel rollbarLevelFromString(NSString *value) { 320 | if (value == nil) { 321 | return RollbarLevel_Info; 322 | } else if ([value caseInsensitiveCompare:@"debug"] == NSOrderedSame) { 323 | return RollbarLevel_Debug; 324 | } else if ([value caseInsensitiveCompare:@"info"] == NSOrderedSame) { 325 | return RollbarLevel_Info; 326 | } else if ([value caseInsensitiveCompare:@"warning"] == NSOrderedSame) { 327 | return RollbarLevel_Warning; 328 | } else if ([value caseInsensitiveCompare:@"error"] == NSOrderedSame) { 329 | return RollbarLevel_Error; 330 | } else if ([value caseInsensitiveCompare:@"critical"] == NSOrderedSame) { 331 | return RollbarLevel_Critical; 332 | } else { 333 | return RollbarLevel_Info; 334 | } 335 | } 336 | 337 | void updateConfiguration(RollbarMutableConfig *config, NSDictionary *options) { 338 | if (options[@"accessToken"]) { 339 | config.destination.accessToken = [RCTConvert NSString:options[@"accessToken"]]; 340 | } 341 | if (options[@"environment"]) { 342 | config.destination.environment = [RCTConvert NSString:options[@"environment"]]; 343 | } 344 | if (options[@"endpoint"]) { 345 | config.destination.endpoint = [RCTConvert NSString:options[@"endpoint"]]; 346 | } 347 | if (options[@"enabled"]) { 348 | id enabledJSON = [options objectForKey:@"enabled"]; 349 | BOOL enabled = YES; 350 | if (enabledJSON != nil) { 351 | enabled = [RCTConvert BOOL:enabledJSON]; 352 | } 353 | config.developerOptions.enabled = enabled; 354 | } 355 | if (options[@"crashLevel"]) { 356 | config.loggingOptions.crashLevel = rollbarLevelFromString([RCTConvert NSString:options[@"crashLevel"]]); 357 | } 358 | if (options[@"logLevel"]) { 359 | config.loggingOptions.logLevel = rollbarLevelFromString([RCTConvert NSString:options[@"logLevel"]]); 360 | } 361 | if (options[@"notifier"]) { 362 | NSDictionary *notifierConfig = [RCTConvert NSDictionary:options[@"notifier"]]; 363 | NSString *name = notifierConfig[@"name"] ?: NOTIFIER_NAME; 364 | NSString *version = notifierConfig[@"version"] ?: NOTIFIER_VERSION; 365 | [config setNotifierName:name version:version]; 366 | } 367 | NSString *framework = REACT_NATIVE; 368 | if (options[@"framework"]) { 369 | framework = [RCTConvert NSString:options[@"framework"]]; 370 | } 371 | config.loggingOptions.framework = framework; 372 | } 373 | 374 | RCT_EXPORT_MODULE() 375 | 376 | RCT_EXPORT_METHOD(init:(NSDictionary *)options) { 377 | RollbarMutableConfig *config = [[Rollbar configuration] mutableCopy]; 378 | if (config) { 379 | updateConfiguration(config, options); 380 | [Rollbar updateWithConfiguration:config]; 381 | return; 382 | } 383 | config = [RollbarConfig mutableConfigWithAccessToken:[RCTConvert NSString:options[@"accessToken"]]]; 384 | updateConfiguration(config, options); 385 | 386 | [Rollbar initWithConfiguration:config]; 387 | } 388 | 389 | RCT_EXPORT_METHOD(setPerson:(NSDictionary *)personInfo) { 390 | NSString *identifier = personInfo[@"id"] && ![personInfo[@"id"] isEqual:[NSNull null]] 391 | ? [RCTConvert NSString:personInfo[@"id"]] : @""; 392 | NSString *name = personInfo[@"name"] && ![personInfo[@"name"] isEqual:[NSNull null]] 393 | ? [RCTConvert NSString:personInfo[@"name"]] : nil; 394 | NSString *email = personInfo[@"email"] && ![personInfo[@"email"] isEqual:[NSNull null]] 395 | ? [RCTConvert NSString:personInfo[@"email"]] : nil; 396 | RollbarMutableConfig *config = [[Rollbar configuration] mutableCopy]; 397 | [config setPersonId:identifier username:name email:email]; 398 | [Rollbar updateWithConfiguration:config]; 399 | } 400 | 401 | RCT_EXPORT_METHOD(clearPerson) { 402 | RollbarMutableConfig *config = [[Rollbar configuration] mutableCopy]; 403 | [config setPersonId:@"" username:nil email:nil]; 404 | [Rollbar updateWithConfiguration:config]; 405 | } 406 | 407 | // Defined as synchronous because the data must be returned in the 408 | // javascript configuration constructor before Rollbar.js is initialized. 409 | RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(deviceAttributes) 410 | { 411 | struct utsname systemInfo; 412 | uname(&systemInfo); 413 | NSString *deviceCode = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; 414 | 415 | NSBundle *mainBundle = [NSBundle mainBundle]; 416 | NSString *version = [mainBundle objectForInfoDictionaryKey:(NSString*)kCFBundleVersionKey]; 417 | NSString *shortVersion = [mainBundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; 418 | NSString *bundleName = [mainBundle objectForInfoDictionaryKey:(NSString *)kCFBundleNameKey]; 419 | NSString *bundleIdentifier = [mainBundle objectForInfoDictionaryKey:(NSString *)kCFBundleIdentifierKey]; 420 | 421 | NSDictionary *attributes = @{ 422 | @"os": @"ios", 423 | @"os_version": [[UIDevice currentDevice] systemVersion], 424 | @"system_name": [[UIDevice currentDevice] systemName], 425 | @"device_name": [[UIDevice currentDevice] name], 426 | @"device_code" : deviceCode, 427 | @"code_version": version ? version : @"", 428 | @"short_version": shortVersion ? shortVersion : @"", 429 | @"bundle_identifier": bundleIdentifier ? bundleIdentifier : @"", 430 | @"app_name": bundleName ? bundleName : @"" 431 | }; 432 | 433 | NSError *error; 434 | NSData *jsonData = [NSJSONSerialization dataWithJSONObject:attributes 435 | options:0 436 | error:&error]; 437 | 438 | NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 439 | 440 | return jsonString; 441 | } 442 | 443 | @end 444 | -------------------------------------------------------------------------------- /ios/RollbarReactNative.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 9E17A2C11F699D5800262D87 /* RollbarReactNative.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = B3E7B5881CC2AC0600A0062D /* RollbarReactNative.h */; }; 11 | 9E7303A120C9E58900D6900B /* libRollbar.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E0FADE220C9DE9A002298F4 /* libRollbar.a */; }; 12 | B3E7B58A1CC2AC0600A0062D /* RollbarReactNative.m in Sources */ = {isa = PBXBuildFile; fileRef = B3E7B5891CC2AC0600A0062D /* RollbarReactNative.m */; settings = {COMPILER_FLAGS = "-fmodules -fcxx-modules"; }; }; 13 | /* End PBXBuildFile section */ 14 | 15 | /* Begin PBXContainerItemProxy section */ 16 | 9E0FADE120C9DE9A002298F4 /* PBXContainerItemProxy */ = { 17 | isa = PBXContainerItemProxy; 18 | containerPortal = 9E0FADDA20C9DE9A002298F4 /* Rollbar.xcodeproj */; 19 | proxyType = 2; 20 | remoteGlobalIDString = 96D2220A18D8E40600933444; 21 | remoteInfo = Rollbar; 22 | }; 23 | 9E0FADE320C9DE9A002298F4 /* PBXContainerItemProxy */ = { 24 | isa = PBXContainerItemProxy; 25 | containerPortal = 9E0FADDA20C9DE9A002298F4 /* Rollbar.xcodeproj */; 26 | proxyType = 2; 27 | remoteGlobalIDString = 96D2221A18D8E40600933444; 28 | remoteInfo = RollbarTests; 29 | }; 30 | 9E0FADE520C9DE9A002298F4 /* PBXContainerItemProxy */ = { 31 | isa = PBXContainerItemProxy; 32 | containerPortal = 9E0FADDA20C9DE9A002298F4 /* Rollbar.xcodeproj */; 33 | proxyType = 2; 34 | remoteGlobalIDString = 343AB4521CC9AAE600962943; 35 | remoteInfo = RollbarFramework; 36 | }; 37 | /* End PBXContainerItemProxy section */ 38 | 39 | /* Begin PBXCopyFilesBuildPhase section */ 40 | 58B511D91A9E6C8500147676 /* Copy Headers */ = { 41 | isa = PBXCopyFilesBuildPhase; 42 | buildActionMask = 2147483647; 43 | dstPath = "include/$(PRODUCT_NAME)"; 44 | dstSubfolderSpec = 16; 45 | files = ( 46 | 9E17A2C11F699D5800262D87 /* RollbarReactNative.h in Copy Headers */, 47 | ); 48 | name = "Copy Headers"; 49 | runOnlyForDeploymentPostprocessing = 0; 50 | }; 51 | /* End PBXCopyFilesBuildPhase section */ 52 | 53 | /* Begin PBXFileReference section */ 54 | 134814201AA4EA6300B7C361 /* libRollbarReactNative.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRollbarReactNative.a; sourceTree = BUILT_PRODUCTS_DIR; }; 55 | 9E0FADDA20C9DE9A002298F4 /* Rollbar.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Rollbar.xcodeproj; path = "rollbar-ios/Rollbar.xcodeproj"; sourceTree = ""; }; 56 | B3E7B5881CC2AC0600A0062D /* RollbarReactNative.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RollbarReactNative.h; sourceTree = ""; }; 57 | B3E7B5891CC2AC0600A0062D /* RollbarReactNative.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RollbarReactNative.m; sourceTree = ""; }; 58 | /* End PBXFileReference section */ 59 | 60 | /* Begin PBXFrameworksBuildPhase section */ 61 | 58B511D81A9E6C8500147676 /* Frameworks */ = { 62 | isa = PBXFrameworksBuildPhase; 63 | buildActionMask = 2147483647; 64 | files = ( 65 | 9E7303A120C9E58900D6900B /* libRollbar.a in Frameworks */, 66 | ); 67 | runOnlyForDeploymentPostprocessing = 0; 68 | }; 69 | /* End PBXFrameworksBuildPhase section */ 70 | 71 | /* Begin PBXGroup section */ 72 | 134814211AA4EA7D00B7C361 /* Products */ = { 73 | isa = PBXGroup; 74 | children = ( 75 | 134814201AA4EA6300B7C361 /* libRollbarReactNative.a */, 76 | ); 77 | name = Products; 78 | sourceTree = ""; 79 | }; 80 | 58B511D21A9E6C8500147676 = { 81 | isa = PBXGroup; 82 | children = ( 83 | B3E7B5881CC2AC0600A0062D /* RollbarReactNative.h */, 84 | B3E7B5891CC2AC0600A0062D /* RollbarReactNative.m */, 85 | 9E0FADDA20C9DE9A002298F4 /* Rollbar.xcodeproj */, 86 | 134814211AA4EA7D00B7C361 /* Products */, 87 | 9E0FADE720C9DEB5002298F4 /* Frameworks */, 88 | ); 89 | sourceTree = ""; 90 | }; 91 | 9E0FADDB20C9DE9A002298F4 /* Products */ = { 92 | isa = PBXGroup; 93 | children = ( 94 | 9E0FADE220C9DE9A002298F4 /* libRollbar.a */, 95 | 9E0FADE420C9DE9A002298F4 /* RollbarTests.xctest */, 96 | 9E0FADE620C9DE9A002298F4 /* Rollbar.framework */, 97 | ); 98 | name = Products; 99 | sourceTree = ""; 100 | }; 101 | 9E0FADE720C9DEB5002298F4 /* Frameworks */ = { 102 | isa = PBXGroup; 103 | children = ( 104 | ); 105 | name = Frameworks; 106 | sourceTree = ""; 107 | }; 108 | /* End PBXGroup section */ 109 | 110 | /* Begin PBXNativeTarget section */ 111 | 58B511DA1A9E6C8500147676 /* RollbarReactNative */ = { 112 | isa = PBXNativeTarget; 113 | buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RollbarReactNative" */; 114 | buildPhases = ( 115 | 58B511D91A9E6C8500147676 /* Copy Headers */, 116 | 58B511D81A9E6C8500147676 /* Frameworks */, 117 | 58B511D71A9E6C8500147676 /* Sources */, 118 | ); 119 | buildRules = ( 120 | ); 121 | dependencies = ( 122 | ); 123 | name = RollbarReactNative; 124 | productName = RCTDataManager; 125 | productReference = 134814201AA4EA6300B7C361 /* libRollbarReactNative.a */; 126 | productType = "com.apple.product-type.library.static"; 127 | }; 128 | /* End PBXNativeTarget section */ 129 | 130 | /* Begin PBXProject section */ 131 | 58B511D31A9E6C8500147676 /* Project object */ = { 132 | isa = PBXProject; 133 | attributes = { 134 | LastUpgradeCheck = 0830; 135 | ORGANIZATIONNAME = Facebook; 136 | TargetAttributes = { 137 | 58B511DA1A9E6C8500147676 = { 138 | CreatedOnToolsVersion = 6.1.1; 139 | }; 140 | }; 141 | }; 142 | buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RollbarReactNative" */; 143 | compatibilityVersion = "Xcode 3.2"; 144 | developmentRegion = English; 145 | hasScannedForEncodings = 0; 146 | knownRegions = ( 147 | English, 148 | en, 149 | ); 150 | mainGroup = 58B511D21A9E6C8500147676; 151 | productRefGroup = 58B511D21A9E6C8500147676; 152 | projectDirPath = ""; 153 | projectReferences = ( 154 | { 155 | ProductGroup = 9E0FADDB20C9DE9A002298F4 /* Products */; 156 | ProjectRef = 9E0FADDA20C9DE9A002298F4 /* Rollbar.xcodeproj */; 157 | }, 158 | ); 159 | projectRoot = ""; 160 | targets = ( 161 | 58B511DA1A9E6C8500147676 /* RollbarReactNative */, 162 | ); 163 | }; 164 | /* End PBXProject section */ 165 | 166 | /* Begin PBXReferenceProxy section */ 167 | 9E0FADE220C9DE9A002298F4 /* libRollbar.a */ = { 168 | isa = PBXReferenceProxy; 169 | fileType = archive.ar; 170 | path = libRollbar.a; 171 | remoteRef = 9E0FADE120C9DE9A002298F4 /* PBXContainerItemProxy */; 172 | sourceTree = BUILT_PRODUCTS_DIR; 173 | }; 174 | 9E0FADE420C9DE9A002298F4 /* RollbarTests.xctest */ = { 175 | isa = PBXReferenceProxy; 176 | fileType = wrapper.cfbundle; 177 | path = RollbarTests.xctest; 178 | remoteRef = 9E0FADE320C9DE9A002298F4 /* PBXContainerItemProxy */; 179 | sourceTree = BUILT_PRODUCTS_DIR; 180 | }; 181 | 9E0FADE620C9DE9A002298F4 /* Rollbar.framework */ = { 182 | isa = PBXReferenceProxy; 183 | fileType = wrapper.framework; 184 | path = Rollbar.framework; 185 | remoteRef = 9E0FADE520C9DE9A002298F4 /* PBXContainerItemProxy */; 186 | sourceTree = BUILT_PRODUCTS_DIR; 187 | }; 188 | /* End PBXReferenceProxy section */ 189 | 190 | /* Begin PBXSourcesBuildPhase section */ 191 | 58B511D71A9E6C8500147676 /* Sources */ = { 192 | isa = PBXSourcesBuildPhase; 193 | buildActionMask = 2147483647; 194 | files = ( 195 | B3E7B58A1CC2AC0600A0062D /* RollbarReactNative.m in Sources */, 196 | ); 197 | runOnlyForDeploymentPostprocessing = 0; 198 | }; 199 | /* End PBXSourcesBuildPhase section */ 200 | 201 | /* Begin XCBuildConfiguration section */ 202 | 58B511ED1A9E6C8500147676 /* Debug */ = { 203 | isa = XCBuildConfiguration; 204 | buildSettings = { 205 | ALWAYS_SEARCH_USER_PATHS = NO; 206 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 207 | CLANG_CXX_LIBRARY = "libc++"; 208 | CLANG_ENABLE_MODULES = YES; 209 | CLANG_ENABLE_OBJC_ARC = YES; 210 | CLANG_WARN_BOOL_CONVERSION = YES; 211 | CLANG_WARN_CONSTANT_CONVERSION = YES; 212 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 213 | CLANG_WARN_EMPTY_BODY = YES; 214 | CLANG_WARN_ENUM_CONVERSION = YES; 215 | CLANG_WARN_INFINITE_RECURSION = YES; 216 | CLANG_WARN_INT_CONVERSION = YES; 217 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 218 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 219 | CLANG_WARN_UNREACHABLE_CODE = YES; 220 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 221 | COPY_PHASE_STRIP = NO; 222 | ENABLE_STRICT_OBJC_MSGSEND = YES; 223 | ENABLE_TESTABILITY = YES; 224 | FRAMEWORK_SEARCH_PATHS = "$(SRCROOT)/../node_modules/rollbar-react-native/ios/**"; 225 | GCC_C_LANGUAGE_STANDARD = gnu99; 226 | GCC_DYNAMIC_NO_PIC = NO; 227 | GCC_NO_COMMON_BLOCKS = YES; 228 | GCC_OPTIMIZATION_LEVEL = 0; 229 | GCC_PREPROCESSOR_DEFINITIONS = ( 230 | "DEBUG=1", 231 | "$(inherited)", 232 | ); 233 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 234 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 235 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 236 | GCC_WARN_UNDECLARED_SELECTOR = YES; 237 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 238 | GCC_WARN_UNUSED_FUNCTION = YES; 239 | GCC_WARN_UNUSED_VARIABLE = YES; 240 | HEADER_SEARCH_PATHS = "$(SRCROOT)/../node_modules/rollbar-react-native/ios"; 241 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 242 | LIBRARY_SEARCH_PATHS = "$(SRCROOT)/../node_modules/rollbar-react-native/ios"; 243 | MTL_ENABLE_DEBUG_INFO = YES; 244 | ONLY_ACTIVE_ARCH = YES; 245 | SDKROOT = iphoneos; 246 | }; 247 | name = Debug; 248 | }; 249 | 58B511EE1A9E6C8500147676 /* Release */ = { 250 | isa = XCBuildConfiguration; 251 | buildSettings = { 252 | ALWAYS_SEARCH_USER_PATHS = NO; 253 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 254 | CLANG_CXX_LIBRARY = "libc++"; 255 | CLANG_ENABLE_MODULES = YES; 256 | CLANG_ENABLE_OBJC_ARC = YES; 257 | CLANG_WARN_BOOL_CONVERSION = YES; 258 | CLANG_WARN_CONSTANT_CONVERSION = YES; 259 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 260 | CLANG_WARN_EMPTY_BODY = YES; 261 | CLANG_WARN_ENUM_CONVERSION = YES; 262 | CLANG_WARN_INFINITE_RECURSION = YES; 263 | CLANG_WARN_INT_CONVERSION = YES; 264 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 265 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 266 | CLANG_WARN_UNREACHABLE_CODE = YES; 267 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 268 | COPY_PHASE_STRIP = YES; 269 | ENABLE_NS_ASSERTIONS = NO; 270 | ENABLE_STRICT_OBJC_MSGSEND = YES; 271 | FRAMEWORK_SEARCH_PATHS = "$(SRCROOT)/../node_modules/rollbar-react-native/ios/**"; 272 | GCC_C_LANGUAGE_STANDARD = gnu99; 273 | GCC_NO_COMMON_BLOCKS = YES; 274 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 275 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 276 | GCC_WARN_UNDECLARED_SELECTOR = YES; 277 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 278 | GCC_WARN_UNUSED_FUNCTION = YES; 279 | GCC_WARN_UNUSED_VARIABLE = YES; 280 | HEADER_SEARCH_PATHS = "$(SRCROOT)/../node_modules/rollbar-react-native/ios"; 281 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 282 | LIBRARY_SEARCH_PATHS = "$(SRCROOT)/../node_modules/rollbar-react-native/ios"; 283 | MTL_ENABLE_DEBUG_INFO = NO; 284 | SDKROOT = iphoneos; 285 | VALIDATE_PRODUCT = YES; 286 | }; 287 | name = Release; 288 | }; 289 | 58B511F01A9E6C8500147676 /* Debug */ = { 290 | isa = XCBuildConfiguration; 291 | buildSettings = { 292 | CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES; 293 | CLANG_MODULES_AUTOLINK = YES; 294 | FRAMEWORK_SEARCH_PATHS = ( 295 | "$(inherited)", 296 | "$(PROJECT_DIR)", 297 | "$(SRCROOT)/**", 298 | ); 299 | HEADER_SEARCH_PATHS = ( 300 | "$(inherited)", 301 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 302 | "$(SRCROOT)/../../../React/**", 303 | "$(SRCROOT)/../../react-native/React/**", 304 | "$(SRCROOT)/**", 305 | ); 306 | LIBRARY_SEARCH_PATHS = ( 307 | "$(inherited)", 308 | "$(SRCROOT)", 309 | ); 310 | "OTHER_CFLAGS[arch=*]" = ( 311 | "-fmodules", 312 | "-fcxx-modules", 313 | ); 314 | "OTHER_CPLUSPLUSFLAGS[arch=*]" = "$(OTHER_CFLAGS)"; 315 | OTHER_LDFLAGS = "-ObjC"; 316 | PRODUCT_NAME = RollbarReactNative; 317 | SKIP_INSTALL = YES; 318 | }; 319 | name = Debug; 320 | }; 321 | 58B511F11A9E6C8500147676 /* Release */ = { 322 | isa = XCBuildConfiguration; 323 | buildSettings = { 324 | CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES; 325 | CLANG_MODULES_AUTOLINK = YES; 326 | FRAMEWORK_SEARCH_PATHS = ( 327 | "$(inherited)", 328 | "$(PROJECT_DIR)", 329 | "$(SRCROOT)/**", 330 | ); 331 | HEADER_SEARCH_PATHS = ( 332 | "$(inherited)", 333 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 334 | "$(SRCROOT)/../../../React/**", 335 | "$(SRCROOT)/../../react-native/React/**", 336 | "$(SRCROOT)/**", 337 | ); 338 | LIBRARY_SEARCH_PATHS = ( 339 | "$(inherited)", 340 | "$(SRCROOT)", 341 | ); 342 | "OTHER_CFLAGS[arch=*]" = ( 343 | "-fmodules", 344 | "-fcxx-modules", 345 | ); 346 | "OTHER_CPLUSPLUSFLAGS[arch=*]" = "$(OTHER_CFLAGS)"; 347 | OTHER_LDFLAGS = "-ObjC"; 348 | PRODUCT_NAME = RollbarReactNative; 349 | SKIP_INSTALL = YES; 350 | }; 351 | name = Release; 352 | }; 353 | /* End XCBuildConfiguration section */ 354 | 355 | /* Begin XCConfigurationList section */ 356 | 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RollbarReactNative" */ = { 357 | isa = XCConfigurationList; 358 | buildConfigurations = ( 359 | 58B511ED1A9E6C8500147676 /* Debug */, 360 | 58B511EE1A9E6C8500147676 /* Release */, 361 | ); 362 | defaultConfigurationIsVisible = 0; 363 | defaultConfigurationName = Release; 364 | }; 365 | 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RollbarReactNative" */ = { 366 | isa = XCConfigurationList; 367 | buildConfigurations = ( 368 | 58B511F01A9E6C8500147676 /* Debug */, 369 | 58B511F11A9E6C8500147676 /* Release */, 370 | ); 371 | defaultConfigurationIsVisible = 0; 372 | defaultConfigurationName = Release; 373 | }; 374 | /* End XCConfigurationList section */ 375 | }; 376 | rootObject = 58B511D31A9E6C8500147676 /* Project object */; 377 | } 378 | -------------------------------------------------------------------------------- /iosFrameworks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rollbar/rollbar-react-native/1fb76598b1e09b1ab9da6a879e5dfcaa69b045e3/iosFrameworks.png -------------------------------------------------------------------------------- /lib/Client.js: -------------------------------------------------------------------------------- 1 | Object.defineProperty(exports,"__esModule",{value:true});exports.Client=void 0;var _reactNative=require("react-native");var _Rollbar=_interopRequireDefault(require("./Rollbar"));var _merge=require("./merge");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function");}var NativeClient=_reactNative.NativeModules.RollbarReactNative;var Client=function Client(config){var _this=this;_classCallCheck(this,Client);this.captureUncaughtExceptions=function(){if(_this.isNative&&typeof ErrorUtils!==undefined){var previousHandler=ErrorUtils.getGlobalHandler();ErrorUtils.setGlobalHandler(function(error,isFatal){if(_this.config.options.captureUncaught&&_this.config.shouldSend()){_this.error(error,undefined,function(queued){if(previousHandler){previousHandler(error,isFatal);}});}else if(previousHandler){previousHandler(error,isFatal);}});}};this.captureUnhandledRejections=function(){var tracking=require('promise/setimmediate/rejection-tracking');var client=_this;tracking.enable({allRejections:true,onUnhandled:function onUnhandled(id,error){client.error(error);},onHandled:function onHandled(){}});};this.log=function(obj,extra,callback){if(_this.isNative&&!_this.config.shouldSend()){if(callback){callback(false);}return;}_this.rollbar.log(obj,extra,callback);};this.debug=function(obj,extra,callback){return _this.rollbar.debug(obj,extra,callback);};this.info=function(obj,extra,callback){return _this.rollbar.info(obj,extra,callback);};this.warning=function(obj,extra,callback){return _this.rollbar.warning(obj,extra,callback);};this.error=function(obj,extra,callback){return _this.rollbar.error(obj,extra,callback);};this.critical=function(obj,extra,callback){return _this.rollbar.critical(obj,extra,callback);};this.setPerson=function(id,name,email){_this.rollbar.configure({},{person:{id:id,name:name,email:email}});if(NativeClient){NativeClient.setPerson({id:id,name:name,email:email});}};this.clearPerson=function(){_this.rollbar.configure({},{person:{}});if(NativeClient){NativeClient.clearPerson();}};this.isNative=_reactNative.Platform.OS!=='web';if(this.isNative){this.config=new Configuration(config);this.config.setPlatform(_reactNative.Platform.OS);if(NativeClient){NativeClient.init(this.config.toJSON());}this.rollbar=new _Rollbar.default(this.config.toJSON());this.captureUncaughtExceptions();if(this.config.captureUnhandledRejections){this.captureUnhandledRejections();}}else{this.rollbar=new _Rollbar.default(config);}};exports.Client=Client;var Configuration=function Configuration(options){var _this2=this;_classCallCheck(this,Configuration);this.shouldSend=function(){return!_this2.releaseStage||!_this2.enabledReleaseStages||_this2.enabledReleaseStages.includes(_this2.releaseStage);};this.setPlatform=function(platform){if(_this2.platform===undefined){_this2.platform=platform;}};this.payloadOptions=function(){if(!_this2.captureDeviceInfo){return{};}return{client:{os:_this2.deviceAttributes()}};};this.deviceAttributes=function(){if(NativeClient){return JSON.parse(NativeClient.deviceAttributes());}else{return{};}};this.toJSON=function(){return(0,_merge.merge)(_this2.options,{platform:_this2.platform});};var pkgData=require('../package.json');this.captureDeviceInfo=options.captureDeviceInfo===undefined?false:options.captureDeviceInfo;this.options=(0,_merge.merge)(options||{},{payload:(0,_merge.merge)(options.payload,this.payloadOptions()),notifier:{name:'rollbar-react-native',version:pkgData['version']}});}; 2 | //# sourceMappingURL=Client.js.map -------------------------------------------------------------------------------- /lib/Client.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"Client.js","names":["_reactNative","require","_Rollbar","_interopRequireDefault","_merge","e","__esModule","default","_classCallCheck","a","n","TypeError","NativeClient","NativeModules","RollbarReactNative","Client","config","_this","captureUncaughtExceptions","isNative","ErrorUtils","undefined","previousHandler","getGlobalHandler","setGlobalHandler","error","isFatal","options","captureUncaught","shouldSend","queued","captureUnhandledRejections","tracking","client","enable","allRejections","onUnhandled","id","onHandled","log","obj","extra","callback","rollbar","debug","info","warning","critical","setPerson","name","email","configure","person","clearPerson","Platform","OS","Configuration","setPlatform","init","toJSON","Rollbar","exports","_this2","releaseStage","enabledReleaseStages","includes","platform","payloadOptions","captureDeviceInfo","os","deviceAttributes","JSON","parse","merge","pkgData","payload","notifier","version"],"sources":["../src/Client.js"],"sourcesContent":["import { Platform, NativeModules } from 'react-native';\nimport Rollbar from './Rollbar';\nimport { merge } from './merge';\n\nconst NativeClient = NativeModules.RollbarReactNative;\n\nexport class Client {\n constructor(config) {\n this.isNative = Platform.OS !== 'web';\n\n if (this.isNative) {\n this.config = new Configuration(config);\n this.config.setPlatform(Platform.OS);\n\n if (NativeClient) {\n NativeClient.init(this.config.toJSON());\n }\n\n this.rollbar = new Rollbar(this.config.toJSON());\n\n this.captureUncaughtExceptions();\n if (this.config.captureUnhandledRejections) {\n this.captureUnhandledRejections();\n }\n } else {\n this.rollbar = new Rollbar(config);\n }\n }\n\n captureUncaughtExceptions = () => {\n if (this.isNative && typeof ErrorUtils !== undefined) {\n const previousHandler = ErrorUtils.getGlobalHandler();\n\n ErrorUtils.setGlobalHandler((error, isFatal) => {\n if (this.config.options.captureUncaught && this.config.shouldSend()) {\n this.error(error, undefined, (queued) => {\n if (previousHandler) {\n previousHandler(error, isFatal);\n }\n });\n } else if (previousHandler) {\n previousHandler(error, isFatal);\n }\n });\n }\n }\n\n captureUnhandledRejections = () => {\n const tracking = require('promise/setimmediate/rejection-tracking');\n const client = this;\n tracking.enable({\n allRejections: true,\n onUnhandled: function(id, error) { client.error(error); },\n onHandled: function() {}\n });\n }\n\n log = (obj, extra, callback) => {\n if (this.isNative && !this.config.shouldSend()) {\n if (callback) {\n callback(false);\n }\n return;\n }\n\n this.rollbar.log(obj, extra, callback);\n }\n\n debug = (obj, extra, callback) => {\n return this.rollbar.debug(obj, extra, callback);\n }\n\n info = (obj, extra, callback) => {\n return this.rollbar.info(obj, extra, callback);\n }\n\n warning = (obj, extra, callback) => {\n return this.rollbar.warning(obj, extra, callback);\n }\n\n error = (obj, extra, callback) => {\n return this.rollbar.error(obj, extra, callback);\n }\n\n critical = (obj, extra, callback) => {\n return this.rollbar.critical(obj, extra, callback);\n }\n\n setPerson = (id, name, email) => {\n this.rollbar.configure({}, {person: {id, name, email}});\n if (NativeClient) {\n NativeClient.setPerson({id, name, email});\n }\n }\n\n clearPerson = () => {\n this.rollbar.configure({}, {person: {}});\n if (NativeClient) {\n NativeClient.clearPerson();\n }\n }\n}\n\nclass Configuration {\n constructor(options) {\n const pkgData = require('../package.json');\n\n // Ensure captureDeviceInfo is set before calling payloadOptions() below.\n this.captureDeviceInfo = options.captureDeviceInfo === undefined ? false : options.captureDeviceInfo;\n\n this.options = merge(options || {}, {\n payload: merge(options.payload, this.payloadOptions()),\n notifier: {\n name: 'rollbar-react-native',\n version: pkgData['version']\n }\n });\n }\n\n shouldSend = () => {\n return !this.releaseStage ||\n !this.enabledReleaseStages ||\n this.enabledReleaseStages.includes(this.releaseStage);\n }\n\n setPlatform = (platform) => {\n if (this.platform === undefined) {\n this.platform = platform;\n }\n }\n\n payloadOptions = () => {\n if (!this.captureDeviceInfo) {\n return {};\n }\n\n return {\n client: {\n os: this.deviceAttributes()\n }\n }\n }\n\n deviceAttributes = () => {\n if (NativeClient) {\n return JSON.parse(NativeClient.deviceAttributes());\n } else {\n return {};\n }\n }\n\n toJSON = () => {\n return merge(this.options, {\n platform: this.platform\n });\n }\n}\n"],"mappings":"+EAAA,IAAAA,YAAA,CAAAC,OAAA,iBACA,IAAAC,QAAA,CAAAC,sBAAA,CAAAF,OAAA,eACA,IAAAG,MAAA,CAAAH,OAAA,YAAgC,SAAAE,uBAAAE,CAAA,SAAAA,CAAA,EAAAA,CAAA,CAAAC,UAAA,CAAAD,CAAA,EAAAE,OAAA,CAAAF,CAAA,YAAAG,gBAAAC,CAAA,CAAAC,CAAA,OAAAD,CAAA,YAAAC,CAAA,YAAAC,SAAA,uCAEhC,GAAM,CAAAC,YAAY,CAAGC,0BAAa,CAACC,kBAAkB,CAAC,GAEzC,CAAAC,MAAM,CACjB,SAAAA,OAAYC,MAAM,CAAE,KAAAC,KAAA,MAAAT,eAAA,MAAAO,MAAA,OAsBpBG,yBAAyB,CAAG,UAAM,CAChC,GAAID,KAAI,CAACE,QAAQ,EAAI,MAAO,CAAAC,UAAU,GAAKC,SAAS,CAAE,CACpD,GAAM,CAAAC,eAAe,CAAGF,UAAU,CAACG,gBAAgB,CAAC,CAAC,CAErDH,UAAU,CAACI,gBAAgB,CAAC,SAACC,KAAK,CAAEC,OAAO,CAAK,CAC9C,GAAIT,KAAI,CAACD,MAAM,CAACW,OAAO,CAACC,eAAe,EAAIX,KAAI,CAACD,MAAM,CAACa,UAAU,CAAC,CAAC,CAAE,CACnEZ,KAAI,CAACQ,KAAK,CAACA,KAAK,CAAEJ,SAAS,CAAE,SAACS,MAAM,CAAK,CACvC,GAAIR,eAAe,CAAE,CACnBA,eAAe,CAACG,KAAK,CAAEC,OAAO,CAAC,CACjC,CACF,CAAC,CAAC,CACJ,CAAC,IAAM,IAAIJ,eAAe,CAAE,CAC1BA,eAAe,CAACG,KAAK,CAAEC,OAAO,CAAC,CACjC,CACF,CAAC,CAAC,CACJ,CACF,CAAC,MAEDK,0BAA0B,CAAG,UAAM,CACjC,GAAM,CAAAC,QAAQ,CAAG/B,OAAO,CAAC,yCAAyC,CAAC,CACnE,GAAM,CAAAgC,MAAM,CAAGhB,KAAI,CACnBe,QAAQ,CAACE,MAAM,CAAC,CACdC,aAAa,CAAE,IAAI,CACnBC,WAAW,CAAE,SAAAA,YAASC,EAAE,CAAEZ,KAAK,CAAE,CAAEQ,MAAM,CAACR,KAAK,CAACA,KAAK,CAAC,CAAE,CAAC,CACzDa,SAAS,CAAE,SAAAA,UAAA,CAAW,CAAC,CACzB,CAAC,CAAC,CACJ,CAAC,MAEDC,GAAG,CAAG,SAACC,GAAG,CAAEC,KAAK,CAAEC,QAAQ,CAAK,CAC9B,GAAIzB,KAAI,CAACE,QAAQ,EAAI,CAACF,KAAI,CAACD,MAAM,CAACa,UAAU,CAAC,CAAC,CAAE,CAC9C,GAAIa,QAAQ,CAAE,CACZA,QAAQ,CAAC,KAAK,CAAC,CACjB,CACA,OACF,CAEAzB,KAAI,CAAC0B,OAAO,CAACJ,GAAG,CAACC,GAAG,CAAEC,KAAK,CAAEC,QAAQ,CAAC,CACxC,CAAC,MAEDE,KAAK,CAAG,SAACJ,GAAG,CAAEC,KAAK,CAAEC,QAAQ,CAAK,CAChC,MAAO,CAAAzB,KAAI,CAAC0B,OAAO,CAACC,KAAK,CAACJ,GAAG,CAAEC,KAAK,CAAEC,QAAQ,CAAC,CACjD,CAAC,MAEDG,IAAI,CAAG,SAACL,GAAG,CAAEC,KAAK,CAAEC,QAAQ,CAAK,CAC/B,MAAO,CAAAzB,KAAI,CAAC0B,OAAO,CAACE,IAAI,CAACL,GAAG,CAAEC,KAAK,CAAEC,QAAQ,CAAC,CAChD,CAAC,MAEDI,OAAO,CAAG,SAACN,GAAG,CAAEC,KAAK,CAAEC,QAAQ,CAAK,CAClC,MAAO,CAAAzB,KAAI,CAAC0B,OAAO,CAACG,OAAO,CAACN,GAAG,CAAEC,KAAK,CAAEC,QAAQ,CAAC,CACnD,CAAC,MAEDjB,KAAK,CAAG,SAACe,GAAG,CAAEC,KAAK,CAAEC,QAAQ,CAAK,CAChC,MAAO,CAAAzB,KAAI,CAAC0B,OAAO,CAAClB,KAAK,CAACe,GAAG,CAAEC,KAAK,CAAEC,QAAQ,CAAC,CACjD,CAAC,MAEDK,QAAQ,CAAG,SAACP,GAAG,CAAEC,KAAK,CAAEC,QAAQ,CAAK,CACnC,MAAO,CAAAzB,KAAI,CAAC0B,OAAO,CAACI,QAAQ,CAACP,GAAG,CAAEC,KAAK,CAAEC,QAAQ,CAAC,CACpD,CAAC,MAEDM,SAAS,CAAG,SAACX,EAAE,CAAEY,IAAI,CAAEC,KAAK,CAAK,CAC/BjC,KAAI,CAAC0B,OAAO,CAACQ,SAAS,CAAC,CAAC,CAAC,CAAE,CAACC,MAAM,CAAE,CAACf,EAAE,CAAFA,EAAE,CAAEY,IAAI,CAAJA,IAAI,CAAEC,KAAK,CAALA,KAAK,CAAC,CAAC,CAAC,CACvD,GAAItC,YAAY,CAAE,CAChBA,YAAY,CAACoC,SAAS,CAAC,CAACX,EAAE,CAAFA,EAAE,CAAEY,IAAI,CAAJA,IAAI,CAAEC,KAAK,CAALA,KAAK,CAAC,CAAC,CAC3C,CACF,CAAC,MAEDG,WAAW,CAAG,UAAM,CAClBpC,KAAI,CAAC0B,OAAO,CAACQ,SAAS,CAAC,CAAC,CAAC,CAAE,CAACC,MAAM,CAAE,CAAC,CAAC,CAAC,CAAC,CACxC,GAAIxC,YAAY,CAAE,CAChBA,YAAY,CAACyC,WAAW,CAAC,CAAC,CAC5B,CACF,CAAC,CA5FC,IAAI,CAAClC,QAAQ,CAAGmC,qBAAQ,CAACC,EAAE,GAAK,KAAK,CAErC,GAAI,IAAI,CAACpC,QAAQ,CAAE,CACjB,IAAI,CAACH,MAAM,CAAG,GAAI,CAAAwC,aAAa,CAACxC,MAAM,CAAC,CACvC,IAAI,CAACA,MAAM,CAACyC,WAAW,CAACH,qBAAQ,CAACC,EAAE,CAAC,CAEpC,GAAI3C,YAAY,CAAE,CAChBA,YAAY,CAAC8C,IAAI,CAAC,IAAI,CAAC1C,MAAM,CAAC2C,MAAM,CAAC,CAAC,CAAC,CACzC,CAEA,IAAI,CAAChB,OAAO,CAAG,GAAI,CAAAiB,gBAAO,CAAC,IAAI,CAAC5C,MAAM,CAAC2C,MAAM,CAAC,CAAC,CAAC,CAEhD,IAAI,CAACzC,yBAAyB,CAAC,CAAC,CAChC,GAAI,IAAI,CAACF,MAAM,CAACe,0BAA0B,CAAE,CAC1C,IAAI,CAACA,0BAA0B,CAAC,CAAC,CACnC,CACF,CAAC,IAAM,CACL,IAAI,CAACY,OAAO,CAAG,GAAI,CAAAiB,gBAAO,CAAC5C,MAAM,CAAC,CACpC,CACF,CAAC,CAAA6C,OAAA,CAAA9C,MAAA,CAAAA,MAAA,IA4EG,CAAAyC,aAAa,CACjB,SAAAA,cAAY7B,OAAO,CAAE,KAAAmC,MAAA,MAAAtD,eAAA,MAAAgD,aAAA,OAerB3B,UAAU,CAAG,UAAM,CACjB,MAAO,CAACiC,MAAI,CAACC,YAAY,EACvB,CAACD,MAAI,CAACE,oBAAoB,EAC1BF,MAAI,CAACE,oBAAoB,CAACC,QAAQ,CAACH,MAAI,CAACC,YAAY,CAAC,CACzD,CAAC,MAEDN,WAAW,CAAG,SAACS,QAAQ,CAAK,CAC1B,GAAIJ,MAAI,CAACI,QAAQ,GAAK7C,SAAS,CAAE,CAC/ByC,MAAI,CAACI,QAAQ,CAAGA,QAAQ,CAC1B,CACF,CAAC,MAEDC,cAAc,CAAG,UAAM,CACrB,GAAI,CAACL,MAAI,CAACM,iBAAiB,CAAE,CAC3B,MAAO,CAAC,CAAC,CACX,CAEA,MAAO,CACLnC,MAAM,CAAE,CACNoC,EAAE,CAAEP,MAAI,CAACQ,gBAAgB,CAAC,CAC5B,CACF,CAAC,CACH,CAAC,MAEDA,gBAAgB,CAAG,UAAM,CACvB,GAAI1D,YAAY,CAAE,CAChB,MAAO,CAAA2D,IAAI,CAACC,KAAK,CAAC5D,YAAY,CAAC0D,gBAAgB,CAAC,CAAC,CAAC,CACpD,CAAC,IAAM,CACL,MAAO,CAAC,CAAC,CACX,CACF,CAAC,MAEDX,MAAM,CAAG,UAAM,CACb,MAAO,GAAAc,YAAK,EAACX,MAAI,CAACnC,OAAO,CAAE,CACzBuC,QAAQ,CAAEJ,MAAI,CAACI,QACjB,CAAC,CAAC,CACJ,CAAC,CAlDC,GAAM,CAAAQ,OAAO,CAAGzE,OAAO,CAAC,iBAAiB,CAAC,CAG1C,IAAI,CAACmE,iBAAiB,CAAGzC,OAAO,CAACyC,iBAAiB,GAAK/C,SAAS,CAAG,KAAK,CAAGM,OAAO,CAACyC,iBAAiB,CAEpG,IAAI,CAACzC,OAAO,CAAG,GAAA8C,YAAK,EAAC9C,OAAO,EAAI,CAAC,CAAC,CAAE,CAClCgD,OAAO,CAAE,GAAAF,YAAK,EAAC9C,OAAO,CAACgD,OAAO,CAAE,IAAI,CAACR,cAAc,CAAC,CAAC,CAAC,CACtDS,QAAQ,CAAE,CACR3B,IAAI,CAAE,sBAAsB,CAC5B4B,OAAO,CAAEH,OAAO,CAAC,SAAS,CAC5B,CACF,CAAC,CAAC,CACJ,CAAC","ignoreList":[]} -------------------------------------------------------------------------------- /lib/Rollbar.js: -------------------------------------------------------------------------------- 1 | Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _rollbar=_interopRequireDefault(require("rollbar"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}var _default=_rollbar.default;exports.default=_default; 2 | //# sourceMappingURL=Rollbar.js.map -------------------------------------------------------------------------------- /lib/Rollbar.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"Rollbar.js","names":["_rollbar","_interopRequireDefault","require","e","__esModule","default","_default","Rollbar","exports"],"sources":["../src/Rollbar.js"],"sourcesContent":["import Rollbar from 'rollbar';\n\nexport default Rollbar;\n"],"mappings":"gFAAA,IAAAA,QAAA,CAAAC,sBAAA,CAAAC,OAAA,aAA8B,SAAAD,uBAAAE,CAAA,SAAAA,CAAA,EAAAA,CAAA,CAAAC,UAAA,CAAAD,CAAA,EAAAE,OAAA,CAAAF,CAAA,OAAAG,QAAA,CAEfC,gBAAO,CAAAC,OAAA,CAAAH,OAAA,CAAAC,QAAA","ignoreList":[]} -------------------------------------------------------------------------------- /lib/Rollbar.native.js: -------------------------------------------------------------------------------- 1 | Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _rollbar=_interopRequireDefault(require("rollbar/src/react-native/rollbar"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}var _default=_rollbar.default;exports.default=_default; 2 | //# sourceMappingURL=Rollbar.native.js.map -------------------------------------------------------------------------------- /lib/Rollbar.native.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"Rollbar.native.js","names":["_rollbar","_interopRequireDefault","require","e","__esModule","default","_default","Rollbar","exports"],"sources":["../src/Rollbar.native.js"],"sourcesContent":["import Rollbar from 'rollbar/src/react-native/rollbar';\n\nexport default Rollbar;\n"],"mappings":"gFAAA,IAAAA,QAAA,CAAAC,sBAAA,CAAAC,OAAA,sCAAuD,SAAAD,uBAAAE,CAAA,SAAAA,CAAA,EAAAA,CAAA,CAAAC,UAAA,CAAAD,CAAA,EAAAE,OAAA,CAAAF,CAAA,OAAAG,QAAA,CAExCC,gBAAO,CAAAC,OAAA,CAAAH,OAAA,CAAAC,QAAA","ignoreList":[]} -------------------------------------------------------------------------------- /lib/merge.js: -------------------------------------------------------------------------------- 1 | 'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.merge=merge;var hasOwn=Object.prototype.hasOwnProperty;var toStr=Object.prototype.toString;var isPlainObject=function isPlainObject(obj){if(!obj||toStr.call(obj)!=='[object Object]'){return false;}var hasOwnConstructor=hasOwn.call(obj,'constructor');var hasIsPrototypeOf=obj.constructor&&obj.constructor.prototype&&hasOwn.call(obj.constructor.prototype,'isPrototypeOf');if(obj.constructor&&!hasOwnConstructor&&!hasIsPrototypeOf){return false;}var key;for(key in obj){}return typeof key==='undefined'||hasOwn.call(obj,key);};function merge(){var i,src,copy,clone,name,result={},current=null,length=arguments.length;for(i=0;i=0.50", 16 | "promise": ">=7.1.1", 17 | "rollbar": "^2.26.1" 18 | }, 19 | "dependencies": { 20 | "buffer": "^4.9.1 || ^5.0.7", 21 | "url": "^0.11.0" 22 | }, 23 | "devDependencies": { 24 | "@babel/cli": "^7.10.5", 25 | "@babel/core": "^7.11.1", 26 | "babel-preset-react-native": "^5.0.2" 27 | }, 28 | "rnpm": { 29 | "android": { 30 | "packageInstance": "RollbarReactNative.getPackage()", 31 | "packageImportPath": "import com.rollbar.RollbarReactNative;" 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /react-native.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | dependency: { 3 | platforms: { 4 | android: { 5 | "packageInstance": "RollbarReactNative.getPackage()", 6 | "packageImportPath": "import com.rollbar.RollbarReactNative;" 7 | }, 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Client.js: -------------------------------------------------------------------------------- 1 | import { Platform, NativeModules } from 'react-native'; 2 | import Rollbar from './Rollbar'; 3 | import { merge } from './merge'; 4 | 5 | const NativeClient = NativeModules.RollbarReactNative; 6 | 7 | export class Client { 8 | constructor(config) { 9 | this.isNative = Platform.OS !== 'web'; 10 | 11 | if (this.isNative) { 12 | this.config = new Configuration(config); 13 | this.config.setPlatform(Platform.OS); 14 | 15 | if (NativeClient) { 16 | NativeClient.init(this.config.toJSON()); 17 | } 18 | 19 | this.rollbar = new Rollbar(this.config.toJSON()); 20 | 21 | this.captureUncaughtExceptions(); 22 | if (this.config.captureUnhandledRejections) { 23 | this.captureUnhandledRejections(); 24 | } 25 | } else { 26 | this.rollbar = new Rollbar(config); 27 | } 28 | } 29 | 30 | captureUncaughtExceptions = () => { 31 | if (this.isNative && typeof ErrorUtils !== undefined) { 32 | const previousHandler = ErrorUtils.getGlobalHandler(); 33 | 34 | ErrorUtils.setGlobalHandler((error, isFatal) => { 35 | if (this.config.options.captureUncaught && this.config.shouldSend()) { 36 | this.error(error, undefined, (queued) => { 37 | if (previousHandler) { 38 | previousHandler(error, isFatal); 39 | } 40 | }); 41 | } else if (previousHandler) { 42 | previousHandler(error, isFatal); 43 | } 44 | }); 45 | } 46 | } 47 | 48 | captureUnhandledRejections = () => { 49 | const tracking = require('promise/setimmediate/rejection-tracking'); 50 | const client = this; 51 | tracking.enable({ 52 | allRejections: true, 53 | onUnhandled: function(id, error) { client.error(error); }, 54 | onHandled: function() {} 55 | }); 56 | } 57 | 58 | log = (obj, extra, callback) => { 59 | if (this.isNative && !this.config.shouldSend()) { 60 | if (callback) { 61 | callback(false); 62 | } 63 | return; 64 | } 65 | 66 | this.rollbar.log(obj, extra, callback); 67 | } 68 | 69 | debug = (obj, extra, callback) => { 70 | return this.rollbar.debug(obj, extra, callback); 71 | } 72 | 73 | info = (obj, extra, callback) => { 74 | return this.rollbar.info(obj, extra, callback); 75 | } 76 | 77 | warning = (obj, extra, callback) => { 78 | return this.rollbar.warning(obj, extra, callback); 79 | } 80 | 81 | error = (obj, extra, callback) => { 82 | return this.rollbar.error(obj, extra, callback); 83 | } 84 | 85 | critical = (obj, extra, callback) => { 86 | return this.rollbar.critical(obj, extra, callback); 87 | } 88 | 89 | setPerson = (id, name, email) => { 90 | this.rollbar.configure({}, {person: {id, name, email}}); 91 | if (NativeClient) { 92 | NativeClient.setPerson({id, name, email}); 93 | } 94 | } 95 | 96 | clearPerson = () => { 97 | this.rollbar.configure({}, {person: {}}); 98 | if (NativeClient) { 99 | NativeClient.clearPerson(); 100 | } 101 | } 102 | } 103 | 104 | class Configuration { 105 | constructor(options) { 106 | const pkgData = require('../package.json'); 107 | 108 | // Ensure captureDeviceInfo is set before calling payloadOptions() below. 109 | this.captureDeviceInfo = options.captureDeviceInfo === undefined ? false : options.captureDeviceInfo; 110 | 111 | this.options = merge(options || {}, { 112 | payload: merge(options.payload, this.payloadOptions()), 113 | notifier: { 114 | name: 'rollbar-react-native', 115 | version: pkgData['version'] 116 | } 117 | }); 118 | } 119 | 120 | shouldSend = () => { 121 | return !this.releaseStage || 122 | !this.enabledReleaseStages || 123 | this.enabledReleaseStages.includes(this.releaseStage); 124 | } 125 | 126 | setPlatform = (platform) => { 127 | if (this.platform === undefined) { 128 | this.platform = platform; 129 | } 130 | } 131 | 132 | payloadOptions = () => { 133 | if (!this.captureDeviceInfo) { 134 | return {}; 135 | } 136 | 137 | return { 138 | client: { 139 | os: this.deviceAttributes() 140 | } 141 | } 142 | } 143 | 144 | deviceAttributes = () => { 145 | if (NativeClient) { 146 | return JSON.parse(NativeClient.deviceAttributes()); 147 | } else { 148 | return {}; 149 | } 150 | } 151 | 152 | toJSON = () => { 153 | return merge(this.options, { 154 | platform: this.platform 155 | }); 156 | } 157 | } 158 | -------------------------------------------------------------------------------- /src/Rollbar.js: -------------------------------------------------------------------------------- 1 | import Rollbar from 'rollbar'; 2 | 3 | export default Rollbar; 4 | -------------------------------------------------------------------------------- /src/Rollbar.native.js: -------------------------------------------------------------------------------- 1 | import Rollbar from 'rollbar/src/react-native/rollbar'; 2 | 3 | export default Rollbar; 4 | -------------------------------------------------------------------------------- /src/merge.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var hasOwn = Object.prototype.hasOwnProperty; 4 | var toStr = Object.prototype.toString; 5 | 6 | var isPlainObject = function isPlainObject(obj) { 7 | if (!obj || toStr.call(obj) !== '[object Object]') { 8 | return false; 9 | } 10 | 11 | var hasOwnConstructor = hasOwn.call(obj, 'constructor'); 12 | var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); 13 | // Not own constructor property must be Object 14 | if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { 15 | return false; 16 | } 17 | 18 | // Own properties are enumerated firstly, so to speed up, 19 | // if last one is own, then all properties are own. 20 | var key; 21 | for (key in obj) {/**/} 22 | 23 | return typeof key === 'undefined' || hasOwn.call(obj, key); 24 | }; 25 | 26 | export function merge() { 27 | var i, src, copy, clone, name, 28 | result = {}, 29 | current = null, 30 | length = arguments.length; 31 | 32 | for (i=0; i < length; i++) { 33 | current = arguments[i]; 34 | if (current == null) { 35 | continue; 36 | } 37 | 38 | for (name in current) { 39 | src = result[name]; 40 | copy = current[name]; 41 | if (result !== copy) { 42 | if (copy && isPlainObject(copy)) { 43 | clone = src && isPlainObject(src) ? src : {}; 44 | result[name] = merge(clone, copy); 45 | } else if (typeof copy !== 'undefined') { 46 | result[name] = copy; 47 | } 48 | } 49 | } 50 | } 51 | return result; 52 | } 53 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/cli@^7.10.5": 6 | version "7.10.5" 7 | resolved "https://registry.npmjs.org/@babel/cli/-/cli-7.10.5.tgz" 8 | dependencies: 9 | commander "^4.0.1" 10 | convert-source-map "^1.1.0" 11 | fs-readdir-recursive "^1.1.0" 12 | glob "^7.0.0" 13 | lodash "^4.17.19" 14 | make-dir "^2.1.0" 15 | slash "^2.0.0" 16 | source-map "^0.5.0" 17 | optionalDependencies: 18 | chokidar "^2.1.8" 19 | 20 | "@babel/code-frame@7.0.0-beta.47": 21 | version "7.0.0-beta.47" 22 | resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.47.tgz" 23 | dependencies: 24 | "@babel/highlight" "7.0.0-beta.47" 25 | 26 | "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.24.7": 27 | version "7.24.7" 28 | resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz" 29 | integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== 30 | dependencies: 31 | "@babel/highlight" "^7.24.7" 32 | picocolors "^1.0.0" 33 | 34 | "@babel/core@^7.11.1": 35 | version "7.11.4" 36 | resolved "https://registry.npmjs.org/@babel/core/-/core-7.11.4.tgz" 37 | dependencies: 38 | "@babel/code-frame" "^7.10.4" 39 | "@babel/generator" "^7.11.4" 40 | "@babel/helper-module-transforms" "^7.11.0" 41 | "@babel/helpers" "^7.10.4" 42 | "@babel/parser" "^7.11.4" 43 | "@babel/template" "^7.10.4" 44 | "@babel/traverse" "^7.11.0" 45 | "@babel/types" "^7.11.0" 46 | convert-source-map "^1.7.0" 47 | debug "^4.1.0" 48 | gensync "^1.0.0-beta.1" 49 | json5 "^2.1.2" 50 | lodash "^4.17.19" 51 | resolve "^1.3.2" 52 | semver "^5.4.1" 53 | source-map "^0.5.0" 54 | 55 | "@babel/generator@7.0.0-beta.47": 56 | version "7.0.0-beta.47" 57 | resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.47.tgz" 58 | dependencies: 59 | "@babel/types" "7.0.0-beta.47" 60 | jsesc "^2.5.1" 61 | lodash "^4.17.5" 62 | source-map "^0.5.0" 63 | trim-right "^1.0.1" 64 | 65 | "@babel/generator@^7.11.0", "@babel/generator@^7.11.4", "@babel/generator@^7.24.8": 66 | version "7.24.8" 67 | resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.24.8.tgz" 68 | integrity sha512-47DG+6F5SzOi0uEvK4wMShmn5yY0mVjVJoWTphdY2B4Rx9wHgjK7Yhtr0ru6nE+sn0v38mzrWOlah0p/YlHHOQ== 69 | dependencies: 70 | "@babel/types" "^7.24.8" 71 | "@jridgewell/gen-mapping" "^0.3.5" 72 | "@jridgewell/trace-mapping" "^0.3.25" 73 | jsesc "^2.5.1" 74 | 75 | "@babel/helper-annotate-as-pure@7.0.0-beta.47": 76 | version "7.0.0-beta.47" 77 | resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.47.tgz" 78 | dependencies: 79 | "@babel/types" "7.0.0-beta.47" 80 | 81 | "@babel/helper-builder-binary-assignment-operator-visitor@7.0.0-beta.47": 82 | version "7.0.0-beta.47" 83 | resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.47.tgz" 84 | dependencies: 85 | "@babel/helper-explode-assignable-expression" "7.0.0-beta.47" 86 | "@babel/types" "7.0.0-beta.47" 87 | 88 | "@babel/helper-builder-react-jsx@7.0.0-beta.47": 89 | version "7.0.0-beta.47" 90 | resolved "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0-beta.47.tgz" 91 | dependencies: 92 | "@babel/types" "7.0.0-beta.47" 93 | esutils "^2.0.0" 94 | 95 | "@babel/helper-call-delegate@7.0.0-beta.47": 96 | version "7.0.0-beta.47" 97 | resolved "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.47.tgz" 98 | dependencies: 99 | "@babel/helper-hoist-variables" "7.0.0-beta.47" 100 | "@babel/traverse" "7.0.0-beta.47" 101 | "@babel/types" "7.0.0-beta.47" 102 | 103 | "@babel/helper-define-map@7.0.0-beta.47": 104 | version "7.0.0-beta.47" 105 | resolved "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.47.tgz" 106 | dependencies: 107 | "@babel/helper-function-name" "7.0.0-beta.47" 108 | "@babel/types" "7.0.0-beta.47" 109 | lodash "^4.17.5" 110 | 111 | "@babel/helper-environment-visitor@^7.24.7": 112 | version "7.24.7" 113 | resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz" 114 | integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== 115 | dependencies: 116 | "@babel/types" "^7.24.7" 117 | 118 | "@babel/helper-explode-assignable-expression@7.0.0-beta.47": 119 | version "7.0.0-beta.47" 120 | resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.47.tgz" 121 | dependencies: 122 | "@babel/traverse" "7.0.0-beta.47" 123 | "@babel/types" "7.0.0-beta.47" 124 | 125 | "@babel/helper-function-name@7.0.0-beta.47": 126 | version "7.0.0-beta.47" 127 | resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.47.tgz" 128 | dependencies: 129 | "@babel/helper-get-function-arity" "7.0.0-beta.47" 130 | "@babel/template" "7.0.0-beta.47" 131 | "@babel/types" "7.0.0-beta.47" 132 | 133 | "@babel/helper-function-name@^7.10.4": 134 | version "7.10.4" 135 | resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz" 136 | dependencies: 137 | "@babel/helper-get-function-arity" "^7.10.4" 138 | "@babel/template" "^7.10.4" 139 | "@babel/types" "^7.10.4" 140 | 141 | "@babel/helper-function-name@^7.24.7": 142 | version "7.24.7" 143 | resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz" 144 | integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== 145 | dependencies: 146 | "@babel/template" "^7.24.7" 147 | "@babel/types" "^7.24.7" 148 | 149 | "@babel/helper-get-function-arity@7.0.0-beta.47": 150 | version "7.0.0-beta.47" 151 | resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.47.tgz" 152 | dependencies: 153 | "@babel/types" "7.0.0-beta.47" 154 | 155 | "@babel/helper-get-function-arity@^7.10.4": 156 | version "7.10.4" 157 | resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz" 158 | dependencies: 159 | "@babel/types" "^7.10.4" 160 | 161 | "@babel/helper-hoist-variables@7.0.0-beta.47": 162 | version "7.0.0-beta.47" 163 | resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.47.tgz" 164 | dependencies: 165 | "@babel/types" "7.0.0-beta.47" 166 | 167 | "@babel/helper-hoist-variables@^7.24.7": 168 | version "7.24.7" 169 | resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz" 170 | integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== 171 | dependencies: 172 | "@babel/types" "^7.24.7" 173 | 174 | "@babel/helper-member-expression-to-functions@7.0.0-beta.47": 175 | version "7.0.0-beta.47" 176 | resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0-beta.47.tgz" 177 | dependencies: 178 | "@babel/types" "7.0.0-beta.47" 179 | 180 | "@babel/helper-module-imports@7.0.0-beta.47": 181 | version "7.0.0-beta.47" 182 | resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.47.tgz" 183 | dependencies: 184 | "@babel/types" "7.0.0-beta.47" 185 | lodash "^4.17.5" 186 | 187 | "@babel/helper-module-imports@^7.24.7": 188 | version "7.24.7" 189 | resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz" 190 | integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== 191 | dependencies: 192 | "@babel/traverse" "^7.24.7" 193 | "@babel/types" "^7.24.7" 194 | 195 | "@babel/helper-module-transforms@7.0.0-beta.47": 196 | version "7.0.0-beta.47" 197 | resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.47.tgz" 198 | dependencies: 199 | "@babel/helper-module-imports" "7.0.0-beta.47" 200 | "@babel/helper-simple-access" "7.0.0-beta.47" 201 | "@babel/helper-split-export-declaration" "7.0.0-beta.47" 202 | "@babel/template" "7.0.0-beta.47" 203 | "@babel/types" "7.0.0-beta.47" 204 | lodash "^4.17.5" 205 | 206 | "@babel/helper-module-transforms@^7.11.0": 207 | version "7.24.8" 208 | resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.8.tgz" 209 | integrity sha512-m4vWKVqvkVAWLXfHCCfff2luJj86U+J0/x+0N3ArG/tP0Fq7zky2dYwMbtPmkc/oulkkbjdL3uWzuoBwQ8R00Q== 210 | dependencies: 211 | "@babel/helper-environment-visitor" "^7.24.7" 212 | "@babel/helper-module-imports" "^7.24.7" 213 | "@babel/helper-simple-access" "^7.24.7" 214 | "@babel/helper-split-export-declaration" "^7.24.7" 215 | "@babel/helper-validator-identifier" "^7.24.7" 216 | 217 | "@babel/helper-optimise-call-expression@7.0.0-beta.47": 218 | version "7.0.0-beta.47" 219 | resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.47.tgz" 220 | dependencies: 221 | "@babel/types" "7.0.0-beta.47" 222 | 223 | "@babel/helper-plugin-utils@7.0.0-beta.47": 224 | version "7.0.0-beta.47" 225 | resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.47.tgz" 226 | 227 | "@babel/helper-regex@7.0.0-beta.47": 228 | version "7.0.0-beta.47" 229 | resolved "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0-beta.47.tgz" 230 | dependencies: 231 | lodash "^4.17.5" 232 | 233 | "@babel/helper-replace-supers@7.0.0-beta.47": 234 | version "7.0.0-beta.47" 235 | resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.47.tgz" 236 | dependencies: 237 | "@babel/helper-member-expression-to-functions" "7.0.0-beta.47" 238 | "@babel/helper-optimise-call-expression" "7.0.0-beta.47" 239 | "@babel/traverse" "7.0.0-beta.47" 240 | "@babel/types" "7.0.0-beta.47" 241 | 242 | "@babel/helper-simple-access@7.0.0-beta.47": 243 | version "7.0.0-beta.47" 244 | resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.47.tgz" 245 | dependencies: 246 | "@babel/template" "7.0.0-beta.47" 247 | "@babel/types" "7.0.0-beta.47" 248 | lodash "^4.17.5" 249 | 250 | "@babel/helper-simple-access@^7.24.7": 251 | version "7.24.7" 252 | resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz" 253 | integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== 254 | dependencies: 255 | "@babel/traverse" "^7.24.7" 256 | "@babel/types" "^7.24.7" 257 | 258 | "@babel/helper-split-export-declaration@7.0.0-beta.47": 259 | version "7.0.0-beta.47" 260 | resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.47.tgz" 261 | dependencies: 262 | "@babel/types" "7.0.0-beta.47" 263 | 264 | "@babel/helper-split-export-declaration@^7.11.0": 265 | version "7.11.0" 266 | resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz" 267 | dependencies: 268 | "@babel/types" "^7.11.0" 269 | 270 | "@babel/helper-split-export-declaration@^7.24.7": 271 | version "7.24.7" 272 | resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz" 273 | integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== 274 | dependencies: 275 | "@babel/types" "^7.24.7" 276 | 277 | "@babel/helper-string-parser@^7.24.8": 278 | version "7.24.8" 279 | resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz" 280 | integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== 281 | 282 | "@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.24.7": 283 | version "7.24.7" 284 | resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz" 285 | integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== 286 | 287 | "@babel/helpers@^7.10.4": 288 | version "7.24.8" 289 | resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.8.tgz" 290 | integrity sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ== 291 | dependencies: 292 | "@babel/template" "^7.24.7" 293 | "@babel/types" "^7.24.8" 294 | 295 | "@babel/highlight@7.0.0-beta.47": 296 | version "7.0.0-beta.47" 297 | resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.47.tgz" 298 | dependencies: 299 | chalk "^2.0.0" 300 | esutils "^2.0.2" 301 | js-tokens "^3.0.0" 302 | 303 | "@babel/highlight@^7.24.7": 304 | version "7.24.7" 305 | resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz" 306 | integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== 307 | dependencies: 308 | "@babel/helper-validator-identifier" "^7.24.7" 309 | chalk "^2.4.2" 310 | js-tokens "^4.0.0" 311 | picocolors "^1.0.0" 312 | 313 | "@babel/parser@^7.11.0", "@babel/parser@^7.11.4", "@babel/parser@^7.24.7", "@babel/parser@^7.24.8": 314 | version "7.24.8" 315 | resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz" 316 | integrity sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w== 317 | 318 | "@babel/plugin-proposal-class-properties@7.0.0-beta.47": 319 | version "7.0.0-beta.47" 320 | resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0-beta.47.tgz" 321 | dependencies: 322 | "@babel/helper-function-name" "7.0.0-beta.47" 323 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 324 | "@babel/helper-replace-supers" "7.0.0-beta.47" 325 | "@babel/plugin-syntax-class-properties" "7.0.0-beta.47" 326 | 327 | "@babel/plugin-proposal-object-rest-spread@7.0.0-beta.47": 328 | version "7.0.0-beta.47" 329 | resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.47.tgz" 330 | dependencies: 331 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 332 | "@babel/plugin-syntax-object-rest-spread" "7.0.0-beta.47" 333 | 334 | "@babel/plugin-proposal-optional-chaining@7.0.0-beta.47": 335 | version "7.0.0-beta.47" 336 | resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.0.0-beta.47.tgz" 337 | dependencies: 338 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 339 | "@babel/plugin-syntax-optional-chaining" "7.0.0-beta.47" 340 | 341 | "@babel/plugin-syntax-class-properties@7.0.0-beta.47": 342 | version "7.0.0-beta.47" 343 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0-beta.47.tgz" 344 | dependencies: 345 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 346 | 347 | "@babel/plugin-syntax-flow@7.0.0-beta.47": 348 | version "7.0.0-beta.47" 349 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.0.0-beta.47.tgz" 350 | dependencies: 351 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 352 | 353 | "@babel/plugin-syntax-jsx@7.0.0-beta.47": 354 | version "7.0.0-beta.47" 355 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0-beta.47.tgz" 356 | dependencies: 357 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 358 | 359 | "@babel/plugin-syntax-object-rest-spread@7.0.0-beta.47": 360 | version "7.0.0-beta.47" 361 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.47.tgz" 362 | dependencies: 363 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 364 | 365 | "@babel/plugin-syntax-optional-chaining@7.0.0-beta.47": 366 | version "7.0.0-beta.47" 367 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.0.0-beta.47.tgz" 368 | dependencies: 369 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 370 | 371 | "@babel/plugin-transform-arrow-functions@7.0.0-beta.47": 372 | version "7.0.0-beta.47" 373 | resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.47.tgz" 374 | dependencies: 375 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 376 | 377 | "@babel/plugin-transform-block-scoping@7.0.0-beta.47": 378 | version "7.0.0-beta.47" 379 | resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.47.tgz" 380 | dependencies: 381 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 382 | lodash "^4.17.5" 383 | 384 | "@babel/plugin-transform-classes@7.0.0-beta.47": 385 | version "7.0.0-beta.47" 386 | resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.47.tgz" 387 | dependencies: 388 | "@babel/helper-annotate-as-pure" "7.0.0-beta.47" 389 | "@babel/helper-define-map" "7.0.0-beta.47" 390 | "@babel/helper-function-name" "7.0.0-beta.47" 391 | "@babel/helper-optimise-call-expression" "7.0.0-beta.47" 392 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 393 | "@babel/helper-replace-supers" "7.0.0-beta.47" 394 | "@babel/helper-split-export-declaration" "7.0.0-beta.47" 395 | globals "^11.1.0" 396 | 397 | "@babel/plugin-transform-computed-properties@7.0.0-beta.47": 398 | version "7.0.0-beta.47" 399 | resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.47.tgz" 400 | dependencies: 401 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 402 | 403 | "@babel/plugin-transform-destructuring@7.0.0-beta.47": 404 | version "7.0.0-beta.47" 405 | resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.47.tgz" 406 | dependencies: 407 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 408 | 409 | "@babel/plugin-transform-exponentiation-operator@7.0.0-beta.47": 410 | version "7.0.0-beta.47" 411 | resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.47.tgz" 412 | dependencies: 413 | "@babel/helper-builder-binary-assignment-operator-visitor" "7.0.0-beta.47" 414 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 415 | 416 | "@babel/plugin-transform-flow-strip-types@7.0.0-beta.47": 417 | version "7.0.0-beta.47" 418 | resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.0.0-beta.47.tgz" 419 | dependencies: 420 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 421 | "@babel/plugin-syntax-flow" "7.0.0-beta.47" 422 | 423 | "@babel/plugin-transform-for-of@7.0.0-beta.47": 424 | version "7.0.0-beta.47" 425 | resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.47.tgz" 426 | dependencies: 427 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 428 | 429 | "@babel/plugin-transform-function-name@7.0.0-beta.47": 430 | version "7.0.0-beta.47" 431 | resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.47.tgz" 432 | dependencies: 433 | "@babel/helper-function-name" "7.0.0-beta.47" 434 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 435 | 436 | "@babel/plugin-transform-literals@7.0.0-beta.47": 437 | version "7.0.0-beta.47" 438 | resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.47.tgz" 439 | dependencies: 440 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 441 | 442 | "@babel/plugin-transform-modules-commonjs@7.0.0-beta.47": 443 | version "7.0.0-beta.47" 444 | resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.47.tgz" 445 | dependencies: 446 | "@babel/helper-module-transforms" "7.0.0-beta.47" 447 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 448 | "@babel/helper-simple-access" "7.0.0-beta.47" 449 | 450 | "@babel/plugin-transform-object-assign@7.0.0-beta.47": 451 | version "7.0.0-beta.47" 452 | resolved "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.0.0-beta.47.tgz" 453 | dependencies: 454 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 455 | 456 | "@babel/plugin-transform-parameters@7.0.0-beta.47": 457 | version "7.0.0-beta.47" 458 | resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.47.tgz" 459 | dependencies: 460 | "@babel/helper-call-delegate" "7.0.0-beta.47" 461 | "@babel/helper-get-function-arity" "7.0.0-beta.47" 462 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 463 | 464 | "@babel/plugin-transform-react-display-name@7.0.0-beta.47": 465 | version "7.0.0-beta.47" 466 | resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0-beta.47.tgz" 467 | dependencies: 468 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 469 | 470 | "@babel/plugin-transform-react-jsx-source@7.0.0-beta.47": 471 | version "7.0.0-beta.47" 472 | resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0-beta.47.tgz" 473 | dependencies: 474 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 475 | "@babel/plugin-syntax-jsx" "7.0.0-beta.47" 476 | 477 | "@babel/plugin-transform-react-jsx@7.0.0-beta.47": 478 | version "7.0.0-beta.47" 479 | resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0-beta.47.tgz" 480 | dependencies: 481 | "@babel/helper-builder-react-jsx" "7.0.0-beta.47" 482 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 483 | "@babel/plugin-syntax-jsx" "7.0.0-beta.47" 484 | 485 | "@babel/plugin-transform-regenerator@7.0.0-beta.47": 486 | version "7.0.0-beta.47" 487 | resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.47.tgz" 488 | dependencies: 489 | regenerator-transform "^0.12.3" 490 | 491 | "@babel/plugin-transform-shorthand-properties@7.0.0-beta.47": 492 | version "7.0.0-beta.47" 493 | resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.47.tgz" 494 | dependencies: 495 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 496 | 497 | "@babel/plugin-transform-spread@7.0.0-beta.47": 498 | version "7.0.0-beta.47" 499 | resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.47.tgz" 500 | dependencies: 501 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 502 | 503 | "@babel/plugin-transform-sticky-regex@7.0.0-beta.47": 504 | version "7.0.0-beta.47" 505 | resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.47.tgz" 506 | dependencies: 507 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 508 | "@babel/helper-regex" "7.0.0-beta.47" 509 | 510 | "@babel/plugin-transform-template-literals@7.0.0-beta.47": 511 | version "7.0.0-beta.47" 512 | resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.47.tgz" 513 | dependencies: 514 | "@babel/helper-annotate-as-pure" "7.0.0-beta.47" 515 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 516 | 517 | "@babel/plugin-transform-unicode-regex@7.0.0-beta.47": 518 | version "7.0.0-beta.47" 519 | resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.47.tgz" 520 | dependencies: 521 | "@babel/helper-plugin-utils" "7.0.0-beta.47" 522 | "@babel/helper-regex" "7.0.0-beta.47" 523 | regexpu-core "^4.1.3" 524 | 525 | "@babel/template@7.0.0-beta.47": 526 | version "7.0.0-beta.47" 527 | resolved "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.47.tgz" 528 | dependencies: 529 | "@babel/code-frame" "7.0.0-beta.47" 530 | "@babel/types" "7.0.0-beta.47" 531 | babylon "7.0.0-beta.47" 532 | lodash "^4.17.5" 533 | 534 | "@babel/template@^7.10.4", "@babel/template@^7.24.7": 535 | version "7.24.7" 536 | resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz" 537 | integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== 538 | dependencies: 539 | "@babel/code-frame" "^7.24.7" 540 | "@babel/parser" "^7.24.7" 541 | "@babel/types" "^7.24.7" 542 | 543 | "@babel/traverse@7.0.0-beta.47": 544 | version "7.0.0-beta.47" 545 | resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.47.tgz" 546 | dependencies: 547 | "@babel/code-frame" "7.0.0-beta.47" 548 | "@babel/generator" "7.0.0-beta.47" 549 | "@babel/helper-function-name" "7.0.0-beta.47" 550 | "@babel/helper-split-export-declaration" "7.0.0-beta.47" 551 | "@babel/types" "7.0.0-beta.47" 552 | babylon "7.0.0-beta.47" 553 | debug "^3.1.0" 554 | globals "^11.1.0" 555 | invariant "^2.2.0" 556 | lodash "^4.17.5" 557 | 558 | "@babel/traverse@^7.11.0": 559 | version "7.11.0" 560 | resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz" 561 | dependencies: 562 | "@babel/code-frame" "^7.10.4" 563 | "@babel/generator" "^7.11.0" 564 | "@babel/helper-function-name" "^7.10.4" 565 | "@babel/helper-split-export-declaration" "^7.11.0" 566 | "@babel/parser" "^7.11.0" 567 | "@babel/types" "^7.11.0" 568 | debug "^4.1.0" 569 | globals "^11.1.0" 570 | lodash "^4.17.19" 571 | 572 | "@babel/traverse@^7.24.7": 573 | version "7.24.8" 574 | resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz" 575 | integrity sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ== 576 | dependencies: 577 | "@babel/code-frame" "^7.24.7" 578 | "@babel/generator" "^7.24.8" 579 | "@babel/helper-environment-visitor" "^7.24.7" 580 | "@babel/helper-function-name" "^7.24.7" 581 | "@babel/helper-hoist-variables" "^7.24.7" 582 | "@babel/helper-split-export-declaration" "^7.24.7" 583 | "@babel/parser" "^7.24.8" 584 | "@babel/types" "^7.24.8" 585 | debug "^4.3.1" 586 | globals "^11.1.0" 587 | 588 | "@babel/types@7.0.0-beta.47": 589 | version "7.0.0-beta.47" 590 | resolved "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.47.tgz" 591 | dependencies: 592 | esutils "^2.0.2" 593 | lodash "^4.17.5" 594 | to-fast-properties "^2.0.0" 595 | 596 | "@babel/types@^7.10.4", "@babel/types@^7.11.0": 597 | version "7.11.0" 598 | resolved "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz" 599 | dependencies: 600 | "@babel/helper-validator-identifier" "^7.10.4" 601 | lodash "^4.17.19" 602 | to-fast-properties "^2.0.0" 603 | 604 | "@babel/types@^7.24.7", "@babel/types@^7.24.8": 605 | version "7.24.8" 606 | resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.8.tgz" 607 | integrity sha512-SkSBEHwwJRU52QEVZBmMBnE5Ux2/6WU1grdYyOhpbCNxbmJrDuDCphBzKZSO3taf0zztp+qkWlymE5tVL5l0TA== 608 | dependencies: 609 | "@babel/helper-string-parser" "^7.24.8" 610 | "@babel/helper-validator-identifier" "^7.24.7" 611 | to-fast-properties "^2.0.0" 612 | 613 | "@jridgewell/gen-mapping@^0.3.5": 614 | version "0.3.5" 615 | resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz" 616 | integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== 617 | dependencies: 618 | "@jridgewell/set-array" "^1.2.1" 619 | "@jridgewell/sourcemap-codec" "^1.4.10" 620 | "@jridgewell/trace-mapping" "^0.3.24" 621 | 622 | "@jridgewell/resolve-uri@^3.1.0": 623 | version "3.1.2" 624 | resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" 625 | integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== 626 | 627 | "@jridgewell/set-array@^1.2.1": 628 | version "1.2.1" 629 | resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" 630 | integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== 631 | 632 | "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": 633 | version "1.5.0" 634 | resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz" 635 | integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== 636 | 637 | "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": 638 | version "0.3.25" 639 | resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" 640 | integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== 641 | dependencies: 642 | "@jridgewell/resolve-uri" "^3.1.0" 643 | "@jridgewell/sourcemap-codec" "^1.4.14" 644 | 645 | ansi-styles@^3.2.1: 646 | version "3.2.1" 647 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" 648 | dependencies: 649 | color-convert "^1.9.0" 650 | 651 | anymatch@^2.0.0: 652 | version "2.0.0" 653 | resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz" 654 | dependencies: 655 | micromatch "^3.1.4" 656 | normalize-path "^2.1.1" 657 | 658 | arr-diff@^4.0.0: 659 | version "4.0.0" 660 | resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" 661 | 662 | arr-flatten@^1.1.0: 663 | version "1.1.0" 664 | resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" 665 | 666 | arr-union@^3.1.0: 667 | version "3.1.0" 668 | resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" 669 | 670 | array-unique@^0.3.2: 671 | version "0.3.2" 672 | resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" 673 | 674 | assign-symbols@^1.0.0: 675 | version "1.0.0" 676 | resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" 677 | 678 | async-each@^1.0.1: 679 | version "1.0.3" 680 | resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz" 681 | 682 | atob@^2.1.2: 683 | version "2.1.2" 684 | resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" 685 | 686 | babel-preset-react-native@^5.0.2: 687 | version "5.0.2" 688 | resolved "https://registry.npmjs.org/babel-preset-react-native/-/babel-preset-react-native-5.0.2.tgz" 689 | dependencies: 690 | "@babel/plugin-proposal-class-properties" "7.0.0-beta.47" 691 | "@babel/plugin-proposal-object-rest-spread" "7.0.0-beta.47" 692 | "@babel/plugin-proposal-optional-chaining" "7.0.0-beta.47" 693 | "@babel/plugin-transform-arrow-functions" "7.0.0-beta.47" 694 | "@babel/plugin-transform-block-scoping" "7.0.0-beta.47" 695 | "@babel/plugin-transform-classes" "7.0.0-beta.47" 696 | "@babel/plugin-transform-computed-properties" "7.0.0-beta.47" 697 | "@babel/plugin-transform-destructuring" "7.0.0-beta.47" 698 | "@babel/plugin-transform-exponentiation-operator" "7.0.0-beta.47" 699 | "@babel/plugin-transform-flow-strip-types" "7.0.0-beta.47" 700 | "@babel/plugin-transform-for-of" "7.0.0-beta.47" 701 | "@babel/plugin-transform-function-name" "7.0.0-beta.47" 702 | "@babel/plugin-transform-literals" "7.0.0-beta.47" 703 | "@babel/plugin-transform-modules-commonjs" "7.0.0-beta.47" 704 | "@babel/plugin-transform-object-assign" "7.0.0-beta.47" 705 | "@babel/plugin-transform-parameters" "7.0.0-beta.47" 706 | "@babel/plugin-transform-react-display-name" "7.0.0-beta.47" 707 | "@babel/plugin-transform-react-jsx" "7.0.0-beta.47" 708 | "@babel/plugin-transform-react-jsx-source" "7.0.0-beta.47" 709 | "@babel/plugin-transform-regenerator" "7.0.0-beta.47" 710 | "@babel/plugin-transform-shorthand-properties" "7.0.0-beta.47" 711 | "@babel/plugin-transform-spread" "7.0.0-beta.47" 712 | "@babel/plugin-transform-sticky-regex" "7.0.0-beta.47" 713 | "@babel/plugin-transform-template-literals" "7.0.0-beta.47" 714 | "@babel/plugin-transform-unicode-regex" "7.0.0-beta.47" 715 | "@babel/template" "7.0.0-beta.47" 716 | metro-babel7-plugin-react-transform "^0.39.1" 717 | 718 | babylon@7.0.0-beta.47: 719 | version "7.0.0-beta.47" 720 | resolved "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.47.tgz" 721 | 722 | balanced-match@^1.0.0: 723 | version "1.0.2" 724 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 725 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 726 | 727 | base64-js@^1.3.1: 728 | version "1.5.1" 729 | resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" 730 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 731 | 732 | base@^0.11.1: 733 | version "0.11.2" 734 | resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz" 735 | dependencies: 736 | cache-base "^1.0.1" 737 | class-utils "^0.3.5" 738 | component-emitter "^1.2.1" 739 | define-property "^1.0.0" 740 | isobject "^3.0.1" 741 | mixin-deep "^1.2.0" 742 | pascalcase "^0.1.1" 743 | 744 | binary-extensions@^1.0.0: 745 | version "1.10.0" 746 | resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz" 747 | 748 | bindings@^1.5.0: 749 | version "1.5.0" 750 | resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" 751 | dependencies: 752 | file-uri-to-path "1.0.0" 753 | 754 | brace-expansion@^1.1.7: 755 | version "1.1.11" 756 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" 757 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 758 | dependencies: 759 | balanced-match "^1.0.0" 760 | concat-map "0.0.1" 761 | 762 | braces@^2.3.1, braces@^2.3.2: 763 | version "2.3.2" 764 | resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" 765 | dependencies: 766 | arr-flatten "^1.1.0" 767 | array-unique "^0.3.2" 768 | extend-shallow "^2.0.1" 769 | fill-range "^4.0.0" 770 | isobject "^3.0.1" 771 | repeat-element "^1.1.2" 772 | snapdragon "^0.8.1" 773 | snapdragon-node "^2.0.1" 774 | split-string "^3.0.2" 775 | to-regex "^3.0.1" 776 | 777 | "buffer@^4.9.1 || ^5.0.7": 778 | version "5.7.1" 779 | resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" 780 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 781 | dependencies: 782 | base64-js "^1.3.1" 783 | ieee754 "^1.1.13" 784 | 785 | cache-base@^1.0.1: 786 | version "1.0.1" 787 | resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" 788 | dependencies: 789 | collection-visit "^1.0.0" 790 | component-emitter "^1.2.1" 791 | get-value "^2.0.6" 792 | has-value "^1.0.0" 793 | isobject "^3.0.1" 794 | set-value "^2.0.0" 795 | to-object-path "^0.3.0" 796 | union-value "^1.0.0" 797 | unset-value "^1.0.0" 798 | 799 | chalk@^2.0.0, chalk@^2.4.2: 800 | version "2.4.2" 801 | resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" 802 | dependencies: 803 | ansi-styles "^3.2.1" 804 | escape-string-regexp "^1.0.5" 805 | supports-color "^5.3.0" 806 | 807 | chokidar@^2.1.8: 808 | version "2.1.8" 809 | resolved "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz" 810 | dependencies: 811 | anymatch "^2.0.0" 812 | async-each "^1.0.1" 813 | braces "^2.3.2" 814 | glob-parent "^3.1.0" 815 | inherits "^2.0.3" 816 | is-binary-path "^1.0.0" 817 | is-glob "^4.0.0" 818 | normalize-path "^3.0.0" 819 | path-is-absolute "^1.0.0" 820 | readdirp "^2.2.1" 821 | upath "^1.1.1" 822 | optionalDependencies: 823 | fsevents "^1.2.7" 824 | 825 | class-utils@^0.3.5: 826 | version "0.3.6" 827 | resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" 828 | dependencies: 829 | arr-union "^3.1.0" 830 | define-property "^0.2.5" 831 | isobject "^3.0.0" 832 | static-extend "^0.1.1" 833 | 834 | collection-visit@^1.0.0: 835 | version "1.0.0" 836 | resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" 837 | dependencies: 838 | map-visit "^1.0.0" 839 | object-visit "^1.0.0" 840 | 841 | color-convert@^1.9.0: 842 | version "1.9.3" 843 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" 844 | dependencies: 845 | color-name "1.1.3" 846 | 847 | color-name@1.1.3: 848 | version "1.1.3" 849 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" 850 | 851 | commander@^4.0.1: 852 | version "4.1.1" 853 | resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" 854 | 855 | component-emitter@^1.2.1: 856 | version "1.3.0" 857 | resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" 858 | 859 | concat-map@0.0.1: 860 | version "0.0.1" 861 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 862 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 863 | 864 | convert-source-map@^1.1.0, convert-source-map@^1.7.0: 865 | version "1.7.0" 866 | resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz" 867 | dependencies: 868 | safe-buffer "~5.1.1" 869 | 870 | copy-descriptor@^0.1.0: 871 | version "0.1.1" 872 | resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" 873 | 874 | core-util-is@~1.0.0: 875 | version "1.0.2" 876 | resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" 877 | 878 | debug@^2.2.0, debug@^2.3.3: 879 | version "2.6.9" 880 | resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" 881 | dependencies: 882 | ms "2.0.0" 883 | 884 | debug@^3.1.0: 885 | version "3.2.6" 886 | resolved "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz" 887 | dependencies: 888 | ms "^2.1.1" 889 | 890 | debug@^4.1.0: 891 | version "4.1.1" 892 | resolved "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz" 893 | dependencies: 894 | ms "^2.1.1" 895 | 896 | debug@^4.3.1: 897 | version "4.3.5" 898 | resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz" 899 | integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== 900 | dependencies: 901 | ms "2.1.2" 902 | 903 | decode-uri-component@^0.2.0: 904 | version "0.2.2" 905 | resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz" 906 | integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== 907 | 908 | define-property@^0.2.5: 909 | version "0.2.5" 910 | resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" 911 | dependencies: 912 | is-descriptor "^0.1.0" 913 | 914 | define-property@^1.0.0: 915 | version "1.0.0" 916 | resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" 917 | dependencies: 918 | is-descriptor "^1.0.0" 919 | 920 | define-property@^2.0.2: 921 | version "2.0.2" 922 | resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" 923 | dependencies: 924 | is-descriptor "^1.0.2" 925 | isobject "^3.0.1" 926 | 927 | escape-string-regexp@^1.0.5: 928 | version "1.0.5" 929 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" 930 | 931 | esutils@^2.0.0: 932 | version "2.0.3" 933 | resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" 934 | 935 | esutils@^2.0.2: 936 | version "2.0.2" 937 | resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" 938 | 939 | expand-brackets@^2.1.4: 940 | version "2.1.4" 941 | resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" 942 | dependencies: 943 | debug "^2.3.3" 944 | define-property "^0.2.5" 945 | extend-shallow "^2.0.1" 946 | posix-character-classes "^0.1.0" 947 | regex-not "^1.0.0" 948 | snapdragon "^0.8.1" 949 | to-regex "^3.0.1" 950 | 951 | extend-shallow@^2.0.1: 952 | version "2.0.1" 953 | resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" 954 | dependencies: 955 | is-extendable "^0.1.0" 956 | 957 | extend-shallow@^3.0.0, extend-shallow@^3.0.2: 958 | version "3.0.2" 959 | resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" 960 | dependencies: 961 | assign-symbols "^1.0.0" 962 | is-extendable "^1.0.1" 963 | 964 | extglob@^2.0.4: 965 | version "2.0.4" 966 | resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" 967 | dependencies: 968 | array-unique "^0.3.2" 969 | define-property "^1.0.0" 970 | expand-brackets "^2.1.4" 971 | extend-shallow "^2.0.1" 972 | fragment-cache "^0.2.1" 973 | regex-not "^1.0.0" 974 | snapdragon "^0.8.1" 975 | to-regex "^3.0.1" 976 | 977 | file-uri-to-path@1.0.0: 978 | version "1.0.0" 979 | resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" 980 | 981 | fill-range@^4.0.0: 982 | version "4.0.0" 983 | resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" 984 | dependencies: 985 | extend-shallow "^2.0.1" 986 | is-number "^3.0.0" 987 | repeat-string "^1.6.1" 988 | to-regex-range "^2.1.0" 989 | 990 | for-in@^1.0.2: 991 | version "1.0.2" 992 | resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" 993 | 994 | fragment-cache@^0.2.1: 995 | version "0.2.1" 996 | resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" 997 | dependencies: 998 | map-cache "^0.2.2" 999 | 1000 | fs-readdir-recursive@^1.1.0: 1001 | version "1.1.0" 1002 | resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" 1003 | 1004 | fs.realpath@^1.0.0: 1005 | version "1.0.0" 1006 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" 1007 | 1008 | fsevents@^1.2.7: 1009 | version "1.2.13" 1010 | resolved "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz" 1011 | dependencies: 1012 | bindings "^1.5.0" 1013 | nan "^2.12.1" 1014 | 1015 | gensync@^1.0.0-beta.1: 1016 | version "1.0.0-beta.2" 1017 | resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" 1018 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 1019 | 1020 | get-value@^2.0.3, get-value@^2.0.6: 1021 | version "2.0.6" 1022 | resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" 1023 | 1024 | glob-parent@^3.1.0: 1025 | version "3.1.0" 1026 | resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz" 1027 | dependencies: 1028 | is-glob "^3.1.0" 1029 | path-dirname "^1.0.0" 1030 | 1031 | glob@^7.0.0: 1032 | version "7.1.6" 1033 | resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" 1034 | dependencies: 1035 | fs.realpath "^1.0.0" 1036 | inflight "^1.0.4" 1037 | inherits "2" 1038 | minimatch "^3.0.4" 1039 | once "^1.3.0" 1040 | path-is-absolute "^1.0.0" 1041 | 1042 | globals@^11.1.0: 1043 | version "11.12.0" 1044 | resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" 1045 | 1046 | graceful-fs@^4.1.11: 1047 | version "4.2.11" 1048 | resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" 1049 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== 1050 | 1051 | has-flag@^3.0.0: 1052 | version "3.0.0" 1053 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" 1054 | 1055 | has-value@^0.3.1: 1056 | version "0.3.1" 1057 | resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" 1058 | dependencies: 1059 | get-value "^2.0.3" 1060 | has-values "^0.1.4" 1061 | isobject "^2.0.0" 1062 | 1063 | has-value@^1.0.0: 1064 | version "1.0.0" 1065 | resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" 1066 | dependencies: 1067 | get-value "^2.0.6" 1068 | has-values "^1.0.0" 1069 | isobject "^3.0.0" 1070 | 1071 | has-values@^0.1.4: 1072 | version "0.1.4" 1073 | resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" 1074 | 1075 | has-values@^1.0.0: 1076 | version "1.0.0" 1077 | resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" 1078 | dependencies: 1079 | is-number "^3.0.0" 1080 | kind-of "^4.0.0" 1081 | 1082 | ieee754@^1.1.13: 1083 | version "1.2.1" 1084 | resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" 1085 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 1086 | 1087 | inflight@^1.0.4: 1088 | version "1.0.6" 1089 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" 1090 | dependencies: 1091 | once "^1.3.0" 1092 | wrappy "1" 1093 | 1094 | inherits@2, inherits@^2.0.3, inherits@~2.0.3: 1095 | version "2.0.4" 1096 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 1097 | 1098 | invariant@^2.2.0: 1099 | version "2.2.4" 1100 | resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" 1101 | dependencies: 1102 | loose-envify "^1.0.0" 1103 | 1104 | is-accessor-descriptor@^0.1.6: 1105 | version "0.1.6" 1106 | resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" 1107 | dependencies: 1108 | kind-of "^3.0.2" 1109 | 1110 | is-accessor-descriptor@^1.0.0: 1111 | version "1.0.0" 1112 | resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" 1113 | dependencies: 1114 | kind-of "^6.0.0" 1115 | 1116 | is-binary-path@^1.0.0: 1117 | version "1.0.1" 1118 | resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" 1119 | dependencies: 1120 | binary-extensions "^1.0.0" 1121 | 1122 | is-buffer@^1.1.5: 1123 | version "1.1.6" 1124 | resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" 1125 | 1126 | is-data-descriptor@^0.1.4: 1127 | version "0.1.4" 1128 | resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" 1129 | dependencies: 1130 | kind-of "^3.0.2" 1131 | 1132 | is-data-descriptor@^1.0.0: 1133 | version "1.0.0" 1134 | resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" 1135 | dependencies: 1136 | kind-of "^6.0.0" 1137 | 1138 | is-descriptor@^0.1.0: 1139 | version "0.1.6" 1140 | resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" 1141 | dependencies: 1142 | is-accessor-descriptor "^0.1.6" 1143 | is-data-descriptor "^0.1.4" 1144 | kind-of "^5.0.0" 1145 | 1146 | is-descriptor@^1.0.0, is-descriptor@^1.0.2: 1147 | version "1.0.2" 1148 | resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" 1149 | dependencies: 1150 | is-accessor-descriptor "^1.0.0" 1151 | is-data-descriptor "^1.0.0" 1152 | kind-of "^6.0.2" 1153 | 1154 | is-extendable@^0.1.0, is-extendable@^0.1.1: 1155 | version "0.1.1" 1156 | resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" 1157 | 1158 | is-extendable@^1.0.1: 1159 | version "1.0.1" 1160 | resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" 1161 | dependencies: 1162 | is-plain-object "^2.0.4" 1163 | 1164 | is-extglob@^2.1.0, is-extglob@^2.1.1: 1165 | version "2.1.1" 1166 | resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" 1167 | 1168 | is-glob@^3.1.0: 1169 | version "3.1.0" 1170 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" 1171 | dependencies: 1172 | is-extglob "^2.1.0" 1173 | 1174 | is-glob@^4.0.0: 1175 | version "4.0.1" 1176 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz" 1177 | dependencies: 1178 | is-extglob "^2.1.1" 1179 | 1180 | is-number@^3.0.0: 1181 | version "3.0.0" 1182 | resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" 1183 | dependencies: 1184 | kind-of "^3.0.2" 1185 | 1186 | is-plain-object@^2.0.3, is-plain-object@^2.0.4: 1187 | version "2.0.4" 1188 | resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" 1189 | dependencies: 1190 | isobject "^3.0.1" 1191 | 1192 | is-windows@^1.0.2: 1193 | version "1.0.2" 1194 | resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" 1195 | 1196 | isarray@1.0.0, isarray@~1.0.0: 1197 | version "1.0.0" 1198 | resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" 1199 | 1200 | isobject@^2.0.0: 1201 | version "2.1.0" 1202 | resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" 1203 | dependencies: 1204 | isarray "1.0.0" 1205 | 1206 | isobject@^3.0.0, isobject@^3.0.1: 1207 | version "3.0.1" 1208 | resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" 1209 | 1210 | js-tokens@^3.0.0: 1211 | version "3.0.2" 1212 | resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" 1213 | 1214 | js-tokens@^4.0.0: 1215 | version "4.0.0" 1216 | resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" 1217 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1218 | 1219 | jsesc@^2.5.1: 1220 | version "2.5.2" 1221 | resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" 1222 | 1223 | jsesc@~0.5.0: 1224 | version "0.5.0" 1225 | resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" 1226 | integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== 1227 | 1228 | json5@^2.1.2: 1229 | version "2.2.3" 1230 | resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" 1231 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== 1232 | 1233 | kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: 1234 | version "3.2.2" 1235 | resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 1236 | dependencies: 1237 | is-buffer "^1.1.5" 1238 | 1239 | kind-of@^4.0.0: 1240 | version "4.0.0" 1241 | resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" 1242 | dependencies: 1243 | is-buffer "^1.1.5" 1244 | 1245 | kind-of@^5.0.0: 1246 | version "5.1.0" 1247 | resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" 1248 | 1249 | kind-of@^6.0.0, kind-of@^6.0.2: 1250 | version "6.0.3" 1251 | resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" 1252 | integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== 1253 | 1254 | lodash@^4.17.19, lodash@^4.17.5: 1255 | version "4.17.21" 1256 | resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" 1257 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1258 | 1259 | loose-envify@^1.0.0: 1260 | version "1.3.1" 1261 | resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz" 1262 | dependencies: 1263 | js-tokens "^3.0.0" 1264 | 1265 | make-dir@^2.1.0: 1266 | version "2.1.0" 1267 | resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" 1268 | dependencies: 1269 | pify "^4.0.1" 1270 | semver "^5.6.0" 1271 | 1272 | map-cache@^0.2.2: 1273 | version "0.2.2" 1274 | resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" 1275 | 1276 | map-visit@^1.0.0: 1277 | version "1.0.0" 1278 | resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" 1279 | dependencies: 1280 | object-visit "^1.0.0" 1281 | 1282 | metro-babel7-plugin-react-transform@^0.39.1: 1283 | version "0.39.1" 1284 | resolved "https://registry.npmjs.org/metro-babel7-plugin-react-transform/-/metro-babel7-plugin-react-transform-0.39.1.tgz" 1285 | dependencies: 1286 | "@babel/helper-module-imports" "7.0.0-beta.47" 1287 | lodash "^4.17.5" 1288 | 1289 | micromatch@^3.1.10, micromatch@^3.1.4: 1290 | version "3.1.10" 1291 | resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" 1292 | dependencies: 1293 | arr-diff "^4.0.0" 1294 | array-unique "^0.3.2" 1295 | braces "^2.3.1" 1296 | define-property "^2.0.2" 1297 | extend-shallow "^3.0.2" 1298 | extglob "^2.0.4" 1299 | fragment-cache "^0.2.1" 1300 | kind-of "^6.0.2" 1301 | nanomatch "^1.2.9" 1302 | object.pick "^1.3.0" 1303 | regex-not "^1.0.0" 1304 | snapdragon "^0.8.1" 1305 | to-regex "^3.0.2" 1306 | 1307 | minimatch@^3.0.4: 1308 | version "3.1.2" 1309 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" 1310 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1311 | dependencies: 1312 | brace-expansion "^1.1.7" 1313 | 1314 | mixin-deep@^1.2.0: 1315 | version "1.3.2" 1316 | resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" 1317 | dependencies: 1318 | for-in "^1.0.2" 1319 | is-extendable "^1.0.1" 1320 | 1321 | ms@2.0.0: 1322 | version "2.0.0" 1323 | resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" 1324 | 1325 | ms@2.1.2, ms@^2.1.1: 1326 | version "2.1.2" 1327 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" 1328 | 1329 | nan@^2.12.1: 1330 | version "2.14.1" 1331 | resolved "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz" 1332 | 1333 | nanomatch@^1.2.9: 1334 | version "1.2.13" 1335 | resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" 1336 | dependencies: 1337 | arr-diff "^4.0.0" 1338 | array-unique "^0.3.2" 1339 | define-property "^2.0.2" 1340 | extend-shallow "^3.0.2" 1341 | fragment-cache "^0.2.1" 1342 | is-windows "^1.0.2" 1343 | kind-of "^6.0.2" 1344 | object.pick "^1.3.0" 1345 | regex-not "^1.0.0" 1346 | snapdragon "^0.8.1" 1347 | to-regex "^3.0.1" 1348 | 1349 | normalize-path@^2.1.1: 1350 | version "2.1.1" 1351 | resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" 1352 | dependencies: 1353 | remove-trailing-separator "^1.0.1" 1354 | 1355 | normalize-path@^3.0.0: 1356 | version "3.0.0" 1357 | resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" 1358 | 1359 | object-copy@^0.1.0: 1360 | version "0.1.0" 1361 | resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" 1362 | dependencies: 1363 | copy-descriptor "^0.1.0" 1364 | define-property "^0.2.5" 1365 | kind-of "^3.0.3" 1366 | 1367 | object-visit@^1.0.0: 1368 | version "1.0.1" 1369 | resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" 1370 | dependencies: 1371 | isobject "^3.0.0" 1372 | 1373 | object.pick@^1.3.0: 1374 | version "1.3.0" 1375 | resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" 1376 | dependencies: 1377 | isobject "^3.0.1" 1378 | 1379 | once@^1.3.0: 1380 | version "1.4.0" 1381 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" 1382 | dependencies: 1383 | wrappy "1" 1384 | 1385 | pascalcase@^0.1.1: 1386 | version "0.1.1" 1387 | resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" 1388 | 1389 | path-dirname@^1.0.0: 1390 | version "1.0.2" 1391 | resolved "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz" 1392 | 1393 | path-is-absolute@^1.0.0: 1394 | version "1.0.1" 1395 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 1396 | 1397 | path-parse@^1.0.6: 1398 | version "1.0.7" 1399 | resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" 1400 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1401 | 1402 | picocolors@^1.0.0: 1403 | version "1.0.1" 1404 | resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz" 1405 | integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== 1406 | 1407 | pify@^4.0.1: 1408 | version "4.0.1" 1409 | resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" 1410 | 1411 | posix-character-classes@^0.1.0: 1412 | version "0.1.1" 1413 | resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" 1414 | 1415 | private@^0.1.6: 1416 | version "0.1.8" 1417 | resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz" 1418 | 1419 | process-nextick-args@~2.0.0: 1420 | version "2.0.1" 1421 | resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" 1422 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1423 | 1424 | punycode@1.3.2: 1425 | version "1.3.2" 1426 | resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" 1427 | 1428 | querystring@0.2.0: 1429 | version "0.2.0" 1430 | resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" 1431 | 1432 | readable-stream@^2.0.2: 1433 | version "2.3.8" 1434 | resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" 1435 | integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== 1436 | dependencies: 1437 | core-util-is "~1.0.0" 1438 | inherits "~2.0.3" 1439 | isarray "~1.0.0" 1440 | process-nextick-args "~2.0.0" 1441 | safe-buffer "~5.1.1" 1442 | string_decoder "~1.1.1" 1443 | util-deprecate "~1.0.1" 1444 | 1445 | readdirp@^2.2.1: 1446 | version "2.2.1" 1447 | resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" 1448 | dependencies: 1449 | graceful-fs "^4.1.11" 1450 | micromatch "^3.1.10" 1451 | readable-stream "^2.0.2" 1452 | 1453 | regenerate-unicode-properties@^8.2.0: 1454 | version "8.2.0" 1455 | resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz" 1456 | dependencies: 1457 | regenerate "^1.4.0" 1458 | 1459 | regenerate@^1.4.0: 1460 | version "1.4.2" 1461 | resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" 1462 | integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== 1463 | 1464 | regenerator-transform@^0.12.3: 1465 | version "0.12.4" 1466 | resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.12.4.tgz" 1467 | dependencies: 1468 | private "^0.1.6" 1469 | 1470 | regex-not@^1.0.0, regex-not@^1.0.2: 1471 | version "1.0.2" 1472 | resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" 1473 | dependencies: 1474 | extend-shallow "^3.0.2" 1475 | safe-regex "^1.1.0" 1476 | 1477 | regexpu-core@^4.1.3: 1478 | version "4.7.0" 1479 | resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz" 1480 | dependencies: 1481 | regenerate "^1.4.0" 1482 | regenerate-unicode-properties "^8.2.0" 1483 | regjsgen "^0.5.1" 1484 | regjsparser "^0.6.4" 1485 | unicode-match-property-ecmascript "^1.0.4" 1486 | unicode-match-property-value-ecmascript "^1.2.0" 1487 | 1488 | regjsgen@^0.5.1: 1489 | version "0.5.2" 1490 | resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz" 1491 | 1492 | regjsparser@^0.6.4: 1493 | version "0.6.4" 1494 | resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz" 1495 | dependencies: 1496 | jsesc "~0.5.0" 1497 | 1498 | remove-trailing-separator@^1.0.1: 1499 | version "1.1.0" 1500 | resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" 1501 | 1502 | repeat-element@^1.1.2: 1503 | version "1.1.3" 1504 | resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz" 1505 | 1506 | repeat-string@^1.6.1: 1507 | version "1.6.1" 1508 | resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" 1509 | 1510 | resolve-url@^0.2.1: 1511 | version "0.2.1" 1512 | resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" 1513 | 1514 | resolve@^1.3.2: 1515 | version "1.17.0" 1516 | resolved "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz" 1517 | dependencies: 1518 | path-parse "^1.0.6" 1519 | 1520 | ret@~0.1.10: 1521 | version "0.1.15" 1522 | resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" 1523 | 1524 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1525 | version "5.1.2" 1526 | resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" 1527 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1528 | 1529 | safe-regex@^1.1.0: 1530 | version "1.1.0" 1531 | resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" 1532 | dependencies: 1533 | ret "~0.1.10" 1534 | 1535 | semver@^5.4.1, semver@^5.6.0: 1536 | version "5.7.2" 1537 | resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" 1538 | integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== 1539 | 1540 | set-value@^2.0.0, set-value@^2.0.1: 1541 | version "2.0.1" 1542 | resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" 1543 | dependencies: 1544 | extend-shallow "^2.0.1" 1545 | is-extendable "^0.1.1" 1546 | is-plain-object "^2.0.3" 1547 | split-string "^3.0.1" 1548 | 1549 | slash@^2.0.0: 1550 | version "2.0.0" 1551 | resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz" 1552 | 1553 | snapdragon-node@^2.0.1: 1554 | version "2.1.1" 1555 | resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" 1556 | dependencies: 1557 | define-property "^1.0.0" 1558 | isobject "^3.0.0" 1559 | snapdragon-util "^3.0.1" 1560 | 1561 | snapdragon-util@^3.0.1: 1562 | version "3.0.1" 1563 | resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" 1564 | dependencies: 1565 | kind-of "^3.2.0" 1566 | 1567 | snapdragon@^0.8.1: 1568 | version "0.8.2" 1569 | resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" 1570 | dependencies: 1571 | base "^0.11.1" 1572 | debug "^2.2.0" 1573 | define-property "^0.2.5" 1574 | extend-shallow "^2.0.1" 1575 | map-cache "^0.2.2" 1576 | source-map "^0.5.6" 1577 | source-map-resolve "^0.5.0" 1578 | use "^3.1.0" 1579 | 1580 | source-map-resolve@^0.5.0: 1581 | version "0.5.3" 1582 | resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" 1583 | dependencies: 1584 | atob "^2.1.2" 1585 | decode-uri-component "^0.2.0" 1586 | resolve-url "^0.2.1" 1587 | source-map-url "^0.4.0" 1588 | urix "^0.1.0" 1589 | 1590 | source-map-url@^0.4.0: 1591 | version "0.4.0" 1592 | resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz" 1593 | 1594 | source-map@^0.5.0, source-map@^0.5.6: 1595 | version "0.5.7" 1596 | resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" 1597 | 1598 | split-string@^3.0.1, split-string@^3.0.2: 1599 | version "3.1.0" 1600 | resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" 1601 | dependencies: 1602 | extend-shallow "^3.0.0" 1603 | 1604 | static-extend@^0.1.1: 1605 | version "0.1.2" 1606 | resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" 1607 | dependencies: 1608 | define-property "^0.2.5" 1609 | object-copy "^0.1.0" 1610 | 1611 | string_decoder@~1.1.1: 1612 | version "1.1.1" 1613 | resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" 1614 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1615 | dependencies: 1616 | safe-buffer "~5.1.0" 1617 | 1618 | supports-color@^5.3.0: 1619 | version "5.5.0" 1620 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" 1621 | dependencies: 1622 | has-flag "^3.0.0" 1623 | 1624 | to-fast-properties@^2.0.0: 1625 | version "2.0.0" 1626 | resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" 1627 | 1628 | to-object-path@^0.3.0: 1629 | version "0.3.0" 1630 | resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" 1631 | dependencies: 1632 | kind-of "^3.0.2" 1633 | 1634 | to-regex-range@^2.1.0: 1635 | version "2.1.1" 1636 | resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" 1637 | dependencies: 1638 | is-number "^3.0.0" 1639 | repeat-string "^1.6.1" 1640 | 1641 | to-regex@^3.0.1, to-regex@^3.0.2: 1642 | version "3.0.2" 1643 | resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" 1644 | dependencies: 1645 | define-property "^2.0.2" 1646 | extend-shallow "^3.0.2" 1647 | regex-not "^1.0.2" 1648 | safe-regex "^1.1.0" 1649 | 1650 | trim-right@^1.0.1: 1651 | version "1.0.1" 1652 | resolved "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" 1653 | 1654 | unicode-canonical-property-names-ecmascript@^1.0.4: 1655 | version "1.0.4" 1656 | resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz" 1657 | 1658 | unicode-match-property-ecmascript@^1.0.4: 1659 | version "1.0.4" 1660 | resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz" 1661 | dependencies: 1662 | unicode-canonical-property-names-ecmascript "^1.0.4" 1663 | unicode-property-aliases-ecmascript "^1.0.4" 1664 | 1665 | unicode-match-property-value-ecmascript@^1.2.0: 1666 | version "1.2.0" 1667 | resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz" 1668 | 1669 | unicode-property-aliases-ecmascript@^1.0.4: 1670 | version "1.1.0" 1671 | resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz" 1672 | 1673 | union-value@^1.0.0: 1674 | version "1.0.1" 1675 | resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" 1676 | dependencies: 1677 | arr-union "^3.1.0" 1678 | get-value "^2.0.6" 1679 | is-extendable "^0.1.1" 1680 | set-value "^2.0.1" 1681 | 1682 | unset-value@^1.0.0: 1683 | version "1.0.0" 1684 | resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" 1685 | dependencies: 1686 | has-value "^0.3.1" 1687 | isobject "^3.0.0" 1688 | 1689 | upath@^1.1.1: 1690 | version "1.2.0" 1691 | resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" 1692 | 1693 | urix@^0.1.0: 1694 | version "0.1.0" 1695 | resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" 1696 | 1697 | url@^0.11.0: 1698 | version "0.11.0" 1699 | resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz" 1700 | dependencies: 1701 | punycode "1.3.2" 1702 | querystring "0.2.0" 1703 | 1704 | use@^3.1.0: 1705 | version "3.1.1" 1706 | resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz" 1707 | 1708 | util-deprecate@~1.0.1: 1709 | version "1.0.2" 1710 | resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 1711 | 1712 | wrappy@1: 1713 | version "1.0.2" 1714 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 1715 | --------------------------------------------------------------------------------