diff --git a/.circleci/config.yml b/.circleci/config.yml
index 6791837c6..33a830c75 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -2,9 +2,9 @@ version: 2
executorType: docker
jobs:
build-app:
- resource_class: large
+ resource_class: medium
environment:
- - GRADLE_OPTS: '-Dorg.gradle.daemon=false -Dorg.gradle.jvmargs="-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError"'
+ - GRADLE_OPTS: '-Dorg.gradle.daemon=false -Dorg.gradle.jvmargs="-Xmx3072m -XX:+HeapDumpOnOutOfMemoryError"'
- REACT_NATIVE_MAX_WORKERS: 2
- ANDROID_BUILD_TOOLS_VERSION: '28.0.3'
working_directory: ~/app
@@ -19,33 +19,55 @@ jobs:
- run:
name: Install Dependencies
command: yarn install --ignore-engines
+ - save_cache:
+ key: v1-npm
+ paths:
+ - node_modules/
+ - save_cache:
+ key: v1-npm-{{ .Branch }}-{{ checksum "yarn.lock" }}
+ paths:
+ - node_modules/
- run:
name: Lint
command: yarn lint
+ - restore_cache:
+ keys:
+ - v1-gradle-{{ checksum "android/gradle/wrapper/gradle-wrapper.properties" }}-{{ checksum "examples/basic/android/gradle/wrapper/gradle-wrapper.properties" }}
+ - v1-gradle-wrapper
+ - restore_cache:
+ keys:
+ - v1-gradle-cache-{{ checksum "android/build.gradle" }}-{{ checksum "examples/basic/android/build.gradle" }}
+ - v1-gradle-cache
- run:
name: Run Checks
command: |
cd android
chmod +x ./gradlew && ./gradlew check
+ - store_artifacts:
+ path: android/build/reports
+ - run:
+ name: Run Yarn to Generate react.gradle
+ command: cd examples/basic/android && yarn
- run:
name: Build Sample App
command: |
- cd examples/basic/android
- yarn
- chmod +x ./gradlew && ./gradlew build
+ cd examples/basic/android && chmod +x ./gradlew && ./gradlew build
+ - store_artifacts:
+ path: examples/basic/android/app/build/reports
+ destination: app
+ - save_cache:
+ key: v1-gradle-wrapper-{{ checksum "examples/basic/android/gradle/wrapper/gradle-wrapper.properties" }}
+ paths:
+ - ~/.gradle/wrapper
+ - save_cache:
+ key: v1-gradle-cache-{{ checksum "examples/basic/android/build.gradle" }}
+ paths:
+ - ~/.gradle/caches
- deploy:
command: |
if [ "${CIRCLE_BRANCH}" == "master" ]; then
yarn ci:publish
fi
- - save_cache:
- key: v1-npm
- paths:
- - node_modules/
- - save_cache:
- key: v1-npm-{{ .Branch }}-{{ checksum "yarn.lock" }}
- paths:
- - node_modules/
deploy-docs:
working_directory: ~/app
docker:
diff --git a/.npmignore b/.npmignore
index 01ae6bb01..57dc7a194 100644
--- a/.npmignore
+++ b/.npmignore
@@ -3,3 +3,5 @@
circle.yml
commitlint.config.js
/android/build
+/website
+/docs
diff --git a/README.md b/README.md
index a8246aa90..6d0faf3d1 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,8 @@
# React Native Camera [![Backers on Open Collective](https://opencollective.com/react-native-camera/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/react-native-camera/sponsors/badge.svg)](#sponsors) [![npm version](https://badge.fury.io/js/react-native-camera.svg)](http://badge.fury.io/js/react-native-camera) [![npm downloads](https://img.shields.io/npm/dm/react-native-camera.svg)](https://www.npmjs.com/package/react-native-camera)
+## Docs
+Follow our docs here [https://react-native-community.github.io/react-native-camera/](https://react-native-community.github.io/react-native-camera/)
+
## Sponsors
If you use this library on your commercial/personal projects, you can help us by funding the work on specific issues that you choose by using IssueHunt.io!
@@ -8,6 +11,12 @@ This gives you the power to prioritize our work and support the project contribu
[![issuehunt-image](https://issuehunt.io/static/embed/issuehunt-button-v1.svg)](https://issuehunt.io/repos/33218414)
+## react-native-camera for enterprise
+
+Available as part of the Tidelift Subscription
+
+The maintainers of react-native-camera and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-react-native-camera?utm_source=npm-react-native-camera&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
+
## Open Collective
You can also fund this project using open collective
@@ -72,12 +81,6 @@ Supports:
- barcode scanning
- text recognition (optional installation for iOS using CocoaPods)
-## Tidelift
-
-[Get supported react-native-camera with the Tidelift Subscription](https://tidelift.com/subscription/pkg/npm-react-native-camera?utm_source=npm-react-native-camera&utm_medium=referral&utm_campaign=readme)
-
-![tidelift](https://tidelift.com/badges/github/react-native-community/react-native-camera)
-
### Example import
```jsx
@@ -122,7 +125,7 @@ To enable `video recording` feature you have to add the following code to the `A
2) On iOS, you must update Info.plist with a usage description for camera
-```
+```xml
...
NSCameraUsageDescription
Your own description of the purpose
@@ -132,3 +135,11 @@ To enable `video recording` feature you have to add the following code to the `A
For more information on installation, please refer to [installation requirements](./docs/installation.md#requirements).
For general introduction, please take a look into this [RNCamera](./docs/RNCamera.md).
+
+## Security contact information
+
+To report a security vulnerability, please use the
+
+[Tidelift security contact](https://tidelift.com/security).
+
+Tidelift will coordinate the fix and disclosure.
diff --git a/android/build.gradle b/android/build.gradle
index 9c956df29..ae4e20211 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -3,16 +3,19 @@ def safeExtGet(prop, fallback) {
}
buildscript {
- repositories {
- google()
- maven {
- url 'https://maven.google.com'
+ // The Android Gradle plugin is only required when opening the android folder stand-alone.
+ // This avoids unnecessary downloads and potential conflicts when the library is included as a
+ // module dependency in an application project.
+ if (project == rootProject) {
+ repositories {
+ google()
+ jcenter()
}
- jcenter()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:3.3.1'
+ dependencies {
+ //noinspection GradleDependency
+ classpath("com.android.tools.build:gradle:3.5.2")
+ }
}
}
@@ -64,9 +67,7 @@ android {
repositories {
google()
jcenter()
- maven {
- url 'https://maven.google.com'
- }
+ mavenCentral()
maven { url "https://jitpack.io" }
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
@@ -81,9 +82,9 @@ dependencies {
implementation "com.google.zxing:core:3.3.3"
implementation "com.drewnoakes:metadata-extractor:2.11.0"
generalImplementation "com.google.android.gms:play-services-vision:$googlePlayServicesVisionVersion"
- implementation "com.android.support:exifinterface:${safeExtGet('supportLibVersion', '28.0.0')}"
- implementation "com.android.support:support-annotations:${safeExtGet('supportLibVersion', '28.0.0')}"
- implementation "com.android.support:support-v4:${safeExtGet('supportLibVersion', '28.0.0')}"
+ implementation "androidx.exifinterface:exifinterface:1.0.0"
+ implementation "androidx.annotation:annotation:1.0.0"
+ implementation "androidx.legacy:legacy-support-v4:1.0.0"
mlkitImplementation "com.google.firebase:firebase-ml-vision:${safeExtGet('firebase-ml-vision', '19.0.3')}"
mlkitImplementation "com.google.firebase:firebase-ml-vision-face-model:${safeExtGet('firebase-ml-vision-face-model', '17.0.2')}"
}
diff --git a/android/gradle.properties b/android/gradle.properties
new file mode 100644
index 000000000..5465fec0e
--- /dev/null
+++ b/android/gradle.properties
@@ -0,0 +1,2 @@
+android.enableJetifier=true
+android.useAndroidX=true
\ No newline at end of file
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index bbbc9b118..73e5ff4ce 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Sun Dec 31 13:43:56 BRST 2017
+#Wed Jan 23 23:35:17 CST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
diff --git a/android/src/general/java/org/reactnative/facedetector/tasks/FileFaceDetectionAsyncTask.java b/android/src/general/java/org/reactnative/facedetector/tasks/FileFaceDetectionAsyncTask.java
index 42ef11c2c..1d55af998 100644
--- a/android/src/general/java/org/reactnative/facedetector/tasks/FileFaceDetectionAsyncTask.java
+++ b/android/src/general/java/org/reactnative/facedetector/tasks/FileFaceDetectionAsyncTask.java
@@ -3,7 +3,7 @@
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
-import android.support.media.ExifInterface;
+import androidx.exifinterface.media.ExifInterface;
import android.net.Uri;
import android.os.AsyncTask;
import android.util.Log;
diff --git a/android/src/main/java/com/google/android/cameraview/AspectRatio.java b/android/src/main/java/com/google/android/cameraview/AspectRatio.java
index d7f841d00..e15398d7d 100644
--- a/android/src/main/java/com/google/android/cameraview/AspectRatio.java
+++ b/android/src/main/java/com/google/android/cameraview/AspectRatio.java
@@ -18,8 +18,8 @@
import android.os.Parcel;
import android.os.Parcelable;
-import android.support.annotation.NonNull;
-import android.support.v4.util.SparseArrayCompat;
+import androidx.annotation.NonNull;
+import androidx.collection.SparseArrayCompat;
/**
* Immutable class for describing proportional relationship between width and height.
diff --git a/android/src/main/java/com/google/android/cameraview/Camera1.java b/android/src/main/java/com/google/android/cameraview/Camera1.java
index 717fecda2..3a2fff31f 100644
--- a/android/src/main/java/com/google/android/cameraview/Camera1.java
+++ b/android/src/main/java/com/google/android/cameraview/Camera1.java
@@ -24,7 +24,7 @@
import android.media.MediaRecorder;
import android.os.Build;
import android.os.Handler;
-import android.support.v4.util.SparseArrayCompat;
+import androidx.collection.SparseArrayCompat;
import android.util.Log;
import android.view.SurfaceHolder;
@@ -34,10 +34,13 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import java.util.Properties;
import java.util.Set;
import java.util.SortedSet;
import java.util.concurrent.atomic.AtomicBoolean;
+import org.reactnative.camera.utils.ObjectUtils;
+
@SuppressWarnings("deprecation")
class Camera1 extends CameraViewImpl implements MediaRecorder.OnInfoListener,
@@ -73,6 +76,7 @@ class Camera1 extends CameraViewImpl implements MediaRecorder.OnInfoListener,
private Handler mHandler = new Handler();
private int mCameraId;
+ private String _mCameraId;
private final AtomicBoolean isPictureCaptureInProgress = new AtomicBoolean(false);
@@ -86,27 +90,26 @@ class Camera1 extends CameraViewImpl implements MediaRecorder.OnInfoListener,
private String mVideoPath;
- private boolean mIsRecording;
+ private final AtomicBoolean mIsRecording = new AtomicBoolean(false);
private final SizeMap mPreviewSizes = new SizeMap();
-
+
private boolean mIsPreviewActive = false;
+ private boolean mShowingPreview = true; // preview enabled by default
private final SizeMap mPictureSizes = new SizeMap();
-
+
private Size mPictureSize;
private AspectRatio mAspectRatio;
- private boolean mShowingPreview;
-
private boolean mAutoFocus;
private int mFacing;
private int mFlash;
- private int mExposure;
+ private float mExposure;
private int mDisplayOrientation;
@@ -120,105 +123,192 @@ class Camera1 extends CameraViewImpl implements MediaRecorder.OnInfoListener,
private boolean mIsScanning;
+ private boolean mustUpdateSurface;
+
private SurfaceTexture mPreviewTexture;
- Camera1(Callback callback, PreviewImpl preview) {
- super(callback, preview);
+ Camera1(Callback callback, PreviewImpl preview, Handler bgHandler) {
+ super(callback, preview, bgHandler);
+
preview.setCallback(new PreviewImpl.Callback() {
@Override
public void onSurfaceChanged() {
- if (mCamera != null) {
- setUpPreview();
- mIsPreviewActive = false;
- adjustCameraParameters();
- }
+ updateSurface();
}
@Override
public void onSurfaceDestroyed() {
- stop();
+ stop();
}
});
}
+ private void updateSurface(){
+ if (mCamera != null) {
+
+ // do not update surface if we are currently capturing
+ // since it will break capture events/video due to the
+ // pause preview calls
+ // capture callbacks will handle it if needed afterwards.
+ if(!isPictureCaptureInProgress.get() && !mIsRecording.get()){
+ mBgHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ synchronized(Camera1.this){
+ // check for camera null again since it might have changed
+ if(mCamera != null){
+ mustUpdateSurface = false;
+ setUpPreview();
+ adjustCameraParameters();
+
+ // only start preview if we are showing it
+ if(mShowingPreview){
+ startCameraPreview();
+ }
+ }
+ }
+ }
+ });
+ }
+ else{
+ mustUpdateSurface = true;
+ }
+ }
+ }
+
@Override
boolean start() {
- chooseCamera();
- if (!openCamera()) {
- mCallback.onMountError();
- // returning false will result in invoking this method again
+
+ synchronized(this){
+ chooseCamera();
+ if (!openCamera()) {
+ mCallback.onMountError();
+ // returning false will result in invoking this method again
+ return true;
+ }
+
+ // if our preview layer is not ready
+ // do not set it up. Surface handler will do it for us
+ // once ready.
+ // This prevents some redundant camera work
+ if (mPreview.isReady()) {
+ setUpPreview();
+ if(mShowingPreview){
+ startCameraPreview();
+ }
+ }
return true;
}
- if (mPreview.isReady()) {
- setUpPreview();
- }
- mShowingPreview = true;
- startCameraPreview();
- return true;
+
}
@Override
void stop() {
- if (mCamera != null) {
- mCamera.stopPreview();
- mCamera.setPreviewCallback(null);
- }
- mShowingPreview = false;
- if (mMediaRecorder != null) {
- mMediaRecorder.stop();
- mMediaRecorder.release();
- mMediaRecorder = null;
- if (mIsRecording) {
- int deviceOrientation = displayOrientationToOrientationEnum(mDeviceOrientation);
- mCallback.onVideoRecorded(mVideoPath, mOrientation != Constants.ORIENTATION_AUTO ? mOrientation : deviceOrientation, deviceOrientation);
- mIsRecording = false;
+ // make sure no other threads are trying to do this at the same time
+ // such as another call to stop from surface destroyed
+ // or host destroyed. Should avoid crashes with concurrent calls
+ synchronized(this){
+ if (mMediaRecorder != null) {
+ try{
+ mMediaRecorder.stop();
+ }
+ catch(RuntimeException e){
+ Log.e("CAMERA_1::", "mMediaRecorder.stop() failed", e);
+ }
+
+ try{
+ mMediaRecorder.reset();
+ mMediaRecorder.release();
+ }
+ catch(RuntimeException e){
+ Log.e("CAMERA_1::", "mMediaRecorder.release() failed", e);
+ }
+
+ mMediaRecorder = null;
+
+ if (mIsRecording.get()) {
+ int deviceOrientation = displayOrientationToOrientationEnum(mDeviceOrientation);
+ mCallback.onVideoRecorded(mVideoPath, mOrientation != Constants.ORIENTATION_AUTO ? mOrientation : deviceOrientation, deviceOrientation);
+ }
+ }
+
+ if (mCamera != null) {
+ mIsPreviewActive = false;
+ mCamera.stopPreview();
+ mCamera.setPreviewCallback(null);
}
+
+ releaseCamera();
}
- releaseCamera();
}
// Suppresses Camera#setPreviewTexture
@SuppressLint("NewApi")
void setUpPreview() {
try {
- if (mPreviewTexture != null) {
- mCamera.setPreviewTexture(mPreviewTexture);
- } else if (mPreview.getOutputClass() == SurfaceHolder.class) {
- final boolean needsToStopPreview = mShowingPreview && Build.VERSION.SDK_INT < 14;
- if (needsToStopPreview) {
- mCamera.stopPreview();
- mIsPreviewActive = false;
- }
- mCamera.setPreviewDisplay(mPreview.getSurfaceHolder());
- if (needsToStopPreview) {
- startCameraPreview();
+ if(mCamera != null){
+ if (mPreviewTexture != null) {
+ mCamera.setPreviewTexture(mPreviewTexture);
+ } else if (mPreview.getOutputClass() == SurfaceHolder.class) {
+ final boolean needsToStopPreview = mIsPreviewActive && Build.VERSION.SDK_INT < 14;
+ if (needsToStopPreview) {
+ mCamera.stopPreview();
+ mIsPreviewActive = false;
+ }
+ mCamera.setPreviewDisplay(mPreview.getSurfaceHolder());
+ if (needsToStopPreview) {
+ startCameraPreview();
+ }
+ } else {
+ mCamera.setPreviewTexture((SurfaceTexture) mPreview.getSurfaceTexture());
}
- } else {
- mCamera.setPreviewTexture((SurfaceTexture) mPreview.getSurfaceTexture());
}
- } catch (IOException e) {
- throw new RuntimeException(e);
+ } catch (Exception e) {
+ Log.e("CAMERA_1::", "setUpPreview failed", e);
}
}
private void startCameraPreview() {
- mCamera.startPreview();
- mIsPreviewActive = true;
- if (mIsScanning) {
- mCamera.setPreviewCallback(this);
+ // only start the preview if we didn't yet.
+ if(!mIsPreviewActive && mCamera != null){
+ try{
+ mIsPreviewActive = true;
+ mCamera.startPreview();
+ if (mIsScanning) {
+ mCamera.setPreviewCallback(this);
+ }
+ }
+ catch(Exception e){
+ mIsPreviewActive = false;
+ Log.e("CAMERA_1::", "startCameraPreview failed", e);
+ }
}
}
-
+
@Override
public void resumePreview() {
- startCameraPreview();
+ mBgHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ synchronized(this){
+ mShowingPreview = true;
+ startCameraPreview();
+ }
+ }
+ });
}
@Override
public void pausePreview() {
- mCamera.stopPreview();
- mIsPreviewActive = false;
+ synchronized(this){
+ mIsPreviewActive = false;
+ mShowingPreview = false;
+
+ if(mCamera != null){
+ mCamera.stopPreview();
+ }
+ }
}
@Override
@@ -232,10 +322,17 @@ void setFacing(int facing) {
return;
}
mFacing = facing;
- if (isCameraOpened()) {
- stop();
- start();
- }
+
+ mBgHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ if (isCameraOpened()) {
+ stop();
+ start();
+ }
+ }
+ });
+
}
@Override
@@ -243,6 +340,36 @@ int getFacing() {
return mFacing;
}
+ @Override
+ void setCameraId(String id) {
+
+ if(!ObjectUtils.equals(_mCameraId, id)){
+ _mCameraId = id;
+
+ // only update if our camera ID actually changes
+ // from what we currently have.
+ // Passing null will always yield true
+ if(!ObjectUtils.equals(_mCameraId, String.valueOf(mCameraId))){
+ // this will call chooseCamera
+ mBgHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ if (isCameraOpened()) {
+ stop();
+ start();
+ }
+ }
+ });
+ }
+ }
+
+ }
+
+ @Override
+ String getCameraId() {
+ return _mCameraId;
+ }
+
@Override
Set getSupportedAspectRatios() {
SizeMap idealAspectRatios = mPreviewSizes;
@@ -253,12 +380,29 @@ Set getSupportedAspectRatios() {
}
return idealAspectRatios.ratios();
}
-
+
+
+ @Override
+ List getCameraIds() {
+ List ids = new ArrayList<>();
+
+ Camera.CameraInfo info = new Camera.CameraInfo();
+
+ for (int i = 0, count = Camera.getNumberOfCameras(); i < count; i++) {
+ Properties p = new Properties();
+ Camera.getCameraInfo(i, info);
+ p.put("id", String.valueOf(i));
+ p.put("type", String.valueOf(info.facing));
+ ids.add(p);
+ }
+ return ids;
+ }
+
@Override
SortedSet getAvailablePictureSizes(AspectRatio ratio) {
return mPictureSizes.sizes(ratio);
}
-
+
@Override
void setPictureSize(Size size) {
if (size == null) {
@@ -273,24 +417,27 @@ void setPictureSize(Size size) {
} else {
mPictureSize = size;
}
- if (mCameraParameters != null && mCamera != null) {
- mCameraParameters.setPictureSize(mPictureSize.getWidth(), mPictureSize.getHeight());
- try{
- mCamera.setParameters(mCameraParameters);
- }
- catch(RuntimeException e ) {
- Log.e("CAMERA_1::", "setParameters failed", e);
+ synchronized(this){
+ if (mCameraParameters != null && mCamera != null) {
+ mCameraParameters.setPictureSize(mPictureSize.getWidth(), mPictureSize.getHeight());
+ try{
+ mCamera.setParameters(mCameraParameters);
+ }
+ catch(RuntimeException e ) {
+ Log.e("CAMERA_1::", "setParameters failed", e);
+ }
+
}
}
}
-
+
@Override
Size getPictureSize() {
return mPictureSize;
}
@Override
- boolean setAspectRatio(AspectRatio ratio) {
+ boolean setAspectRatio(final AspectRatio ratio) {
if (mAspectRatio == null || !isCameraOpened()) {
// Handle this later when camera is opened
mAspectRatio = ratio;
@@ -298,10 +445,19 @@ boolean setAspectRatio(AspectRatio ratio) {
} else if (!mAspectRatio.equals(ratio)) {
final Set sizes = mPreviewSizes.sizes(ratio);
if (sizes == null) {
- throw new UnsupportedOperationException(ratio + " is not supported");
+ // do nothing, ratio remains unchanged. Consistent with Camera2 and initial mount behaviour
} else {
mAspectRatio = ratio;
- adjustCameraParameters();
+ mBgHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ synchronized(Camera1.this){
+ if(mCamera != null){
+ adjustCameraParameters();
+ }
+ }
+ }
+ });
return true;
}
}
@@ -318,13 +474,17 @@ void setAutoFocus(boolean autoFocus) {
if (mAutoFocus == autoFocus) {
return;
}
- if (setAutoFocusInternal(autoFocus)) {
- try{
- mCamera.setParameters(mCameraParameters);
- }
- catch(RuntimeException e ) {
- Log.e("CAMERA_1::", "setParameters failed", e);
- }
+ synchronized(this){
+ if (setAutoFocusInternal(autoFocus)) {
+ try{
+ if(mCamera != null){
+ mCamera.setParameters(mCameraParameters);
+ }
+ }
+ catch(RuntimeException e ) {
+ Log.e("CAMERA_1::", "setParameters failed", e);
+ }
+ }
}
}
@@ -343,12 +503,14 @@ void setFlash(int flash) {
return;
}
if (setFlashInternal(flash)) {
- try{
- mCamera.setParameters(mCameraParameters);
- }
- catch(RuntimeException e ) {
- Log.e("CAMERA_1::", "setParameters failed", e);
- }
+ try{
+ if(mCamera != null){
+ mCamera.setParameters(mCameraParameters);
+ }
+ }
+ catch(RuntimeException e ) {
+ Log.e("CAMERA_1::", "setParameters failed", e);
+ }
}
}
@@ -358,24 +520,27 @@ int getFlash() {
}
@Override
- int getExposureCompensation() {
+ float getExposureCompensation() {
return mExposure;
}
@Override
- void setExposureCompensation(int exposure) {
+ void setExposureCompensation(float exposure) {
if (exposure == mExposure) {
return;
}
if (setExposureInternal(exposure)) {
- try{
- mCamera.setParameters(mCameraParameters);
- }
- catch(RuntimeException e ) {
- Log.e("CAMERA_1::", "setParameters failed", e);
- }
+ try{
+ if(mCamera != null){
+ mCamera.setParameters(mCameraParameters);
+ }
+ }
+ catch(RuntimeException e ) {
+ Log.e("CAMERA_1::", "setParameters failed", e);
+ }
}
+
}
@Override
@@ -394,12 +559,14 @@ void setZoom(float zoom) {
return;
}
if (setZoomInternal(zoom)) {
- try{
- mCamera.setParameters(mCameraParameters);
- }
- catch(RuntimeException e ) {
- Log.e("CAMERA_1::", "setParameters failed", e);
- }
+ try{
+ if(mCamera != null){
+ mCamera.setParameters(mCameraParameters);
+ }
+ }
+ catch(RuntimeException e ) {
+ Log.e("CAMERA_1::", "setParameters failed", e);
+ }
}
}
@@ -408,18 +575,21 @@ float getZoom() {
return mZoom;
}
+
@Override
public void setWhiteBalance(int whiteBalance) {
if (whiteBalance == mWhiteBalance) {
return;
}
if (setWhiteBalanceInternal(whiteBalance)) {
- try{
- mCamera.setParameters(mCameraParameters);
- }
- catch(RuntimeException e ) {
- Log.e("CAMERA_1::", "setParameters failed", e);
- }
+ try{
+ if(mCamera != null){
+ mCamera.setParameters(mCameraParameters);
+ }
+ }
+ catch(RuntimeException e ) {
+ Log.e("CAMERA_1::", "setParameters failed", e);
+ }
}
}
@@ -450,17 +620,13 @@ void takePicture(final ReadableMap options) {
if (!mIsPreviewActive) {
throw new IllegalStateException("Preview is paused - resume it before taking a picture.");
}
- if (getAutoFocus()) {
- mCamera.cancelAutoFocus();
- mCamera.autoFocus(new Camera.AutoFocusCallback() {
- @Override
- public void onAutoFocus(boolean success, Camera camera) {
- takePictureInternal(options);
- }
- });
- } else {
- takePictureInternal(options);
- }
+
+ // UPDATE: Take picture right away instead of requesting/waiting for focus.
+ // This will match closer what the native camera does,
+ // and will capture whatever is on the preview without changing the camera focus.
+ // This change will also help with autoFocusPointOfInterest not being usable to capture (Issue #2420)
+ // and with takePicture never returning/resolving if the focus was reset (Issue #2421)
+ takePictureInternal(options);
}
int orientationEnumToRotation(int orientation) {
@@ -494,58 +660,103 @@ int displayOrientationToOrientationEnum(int rotation) {
}
void takePictureInternal(final ReadableMap options) {
- if (!isPictureCaptureInProgress.getAndSet(true)) {
+ // if not capturing already, atomically set it to true
+ if (!mIsRecording.get() && isPictureCaptureInProgress.compareAndSet(false, true)) {
- if (options.hasKey("orientation") && options.getInt("orientation") != Constants.ORIENTATION_AUTO) {
- mOrientation = options.getInt("orientation");
- int rotation = orientationEnumToRotation(mOrientation);
- mCameraParameters.setRotation(calcCameraRotation(rotation));
- try{
- mCamera.setParameters(mCameraParameters);
+ try{
+ if (options.hasKey("orientation") && options.getInt("orientation") != Constants.ORIENTATION_AUTO) {
+ mOrientation = options.getInt("orientation");
+ int rotation = orientationEnumToRotation(mOrientation);
+ mCameraParameters.setRotation(calcCameraRotation(rotation));
+ try{
+ mCamera.setParameters(mCameraParameters);
+ }
+ catch(RuntimeException e ) {
+ Log.e("CAMERA_1::", "setParameters rotation failed", e);
+ }
}
- catch(RuntimeException e ) {
- Log.e("CAMERA_1::", "setParameters failed", e);
+
+ // set quality on capture since we might not process the image bitmap if not needed now.
+ // This also achieves a much faster JPEG compression speed since it's done on the hardware
+ if(options.hasKey("quality")){
+ mCameraParameters.setJpegQuality((int) (options.getDouble("quality") * 100));
+ try{
+ mCamera.setParameters(mCameraParameters);
+ }
+ catch(RuntimeException e ) {
+ Log.e("CAMERA_1::", "setParameters quality failed", e);
+ }
}
- }
- mCamera.takePicture(null, null, null, new Camera.PictureCallback() {
- @Override
- public void onPictureTaken(byte[] data, Camera camera) {
- isPictureCaptureInProgress.set(false);
- camera.cancelAutoFocus();
- if (options.hasKey("pauseAfterCapture") && !options.getBoolean("pauseAfterCapture")) {
- camera.startPreview();
- mIsPreviewActive = true;
- if (mIsScanning) {
- camera.setPreviewCallback(Camera1.this);
+ mCamera.takePicture(null, null, null, new Camera.PictureCallback() {
+ @Override
+ public void onPictureTaken(byte[] data, Camera camera) {
+
+ // this shouldn't be needed and messes up autoFocusPointOfInterest
+ // camera.cancelAutoFocus();
+
+ if (options.hasKey("pauseAfterCapture") && !options.getBoolean("pauseAfterCapture")) {
+ camera.startPreview();
+ mIsPreviewActive = true;
+ if (mIsScanning) {
+ camera.setPreviewCallback(Camera1.this);
+ }
+ } else {
+ camera.stopPreview();
+ mIsPreviewActive = false;
+ camera.setPreviewCallback(null);
}
- } else {
- camera.stopPreview();
- mIsPreviewActive = false;
- camera.setPreviewCallback(null);
- }
- mOrientation = Constants.ORIENTATION_AUTO;
- mCallback.onPictureTaken(data, displayOrientationToOrientationEnum(mDeviceOrientation));
- }
- });
+ isPictureCaptureInProgress.set(false);
+
+ mOrientation = Constants.ORIENTATION_AUTO;
+ mCallback.onPictureTaken(data, displayOrientationToOrientationEnum(mDeviceOrientation));
+
+ if(mustUpdateSurface){
+ updateSurface();
+ }
+ }
+ });
+ }
+ catch(Exception e){
+ isPictureCaptureInProgress.set(false);
+ throw e;
+ }
+ }
+ else{
+ throw new IllegalStateException("Camera capture failed. Camera is already capturing.");
}
}
@Override
boolean record(String path, int maxDuration, int maxFileSize, boolean recordAudio, CamcorderProfile profile, int orientation) {
- if (!mIsRecording) {
+
+ // make sure compareAndSet is last because we are setting it
+ if (!isPictureCaptureInProgress.get() && mIsRecording.compareAndSet(false, true)) {
if (orientation != Constants.ORIENTATION_AUTO) {
mOrientation = orientation;
}
- setUpMediaRecorder(path, maxDuration, maxFileSize, recordAudio, profile);
try {
+ setUpMediaRecorder(path, maxDuration, maxFileSize, recordAudio, profile);
mMediaRecorder.prepare();
mMediaRecorder.start();
- mIsRecording = true;
+
+ // after our media recorder is set and started, we must update
+ // some camera parameters again because the recorder's exclusive access (after unlock is called)
+ // might interfere with the camera parameters (e.g., flash and zoom)
+ // This should also be safe to call since both recording and
+ // camera parameters are getting set by the same thread and process.
+ // https://stackoverflow.com/a/14855668/1777914
+ try{
+ mCamera.setParameters(mCameraParameters);
+ } catch (Exception e) {
+ Log.e("CAMERA_1::", "Record setParameters failed", e);
+ }
+
return true;
- } catch (IOException e) {
- e.printStackTrace();
+ } catch (Exception e) {
+ mIsRecording.set(false);
+ Log.e("CAMERA_1::", "Record start failed", e);
return false;
}
}
@@ -554,11 +765,14 @@ boolean record(String path, int maxDuration, int maxFileSize, boolean recordAudi
@Override
void stopRecording() {
- if (mIsRecording) {
+ if (mIsRecording.compareAndSet(true, false)) {
stopMediaRecorder();
if (mCamera != null) {
mCamera.lock();
}
+ if(mustUpdateSurface){
+ updateSurface();
+ }
}
}
@@ -568,63 +782,79 @@ int getCameraOrientation() {
}
@Override
- void setDisplayOrientation(int displayOrientation) {
- if (mDisplayOrientation == displayOrientation) {
- return;
- }
- mDisplayOrientation = displayOrientation;
- if (isCameraOpened()) {
- final boolean needsToStopPreview = mShowingPreview && Build.VERSION.SDK_INT < 14;
- if (needsToStopPreview) {
- mCamera.stopPreview();
- mIsPreviewActive = false;
+ void setDisplayOrientation(final int displayOrientation) {
+ synchronized(this){
+ if (mDisplayOrientation == displayOrientation) {
+ return;
}
- mCamera.setDisplayOrientation(calcDisplayOrientation(displayOrientation));
- if (needsToStopPreview) {
- startCameraPreview();
+ mDisplayOrientation = displayOrientation;
+ if (isCameraOpened()) {
+ boolean needsToStopPreview = mIsPreviewActive && Build.VERSION.SDK_INT < 14;
+ if (needsToStopPreview) {
+ mCamera.stopPreview();
+ mIsPreviewActive = false;
+ }
+
+ try{
+ mCamera.setDisplayOrientation(calcDisplayOrientation(displayOrientation));
+ }
+ catch(RuntimeException e ) {
+ Log.e("CAMERA_1::", "setDisplayOrientation failed", e);
+ }
+ if (needsToStopPreview) {
+ startCameraPreview();
+ }
}
}
}
@Override
- void setDeviceOrientation(int deviceOrientation) {
- if (mDeviceOrientation == deviceOrientation) {
- return;
- }
- mDeviceOrientation = deviceOrientation;
- if (isCameraOpened() && mOrientation == Constants.ORIENTATION_AUTO && !mIsRecording) {
- mCameraParameters.setRotation(calcCameraRotation(deviceOrientation));
- try{
- mCamera.setParameters(mCameraParameters);
+ void setDeviceOrientation(final int deviceOrientation) {
+ synchronized(this){
+ if (mDeviceOrientation == deviceOrientation) {
+ return;
}
- catch(RuntimeException e ) {
- Log.e("CAMERA_1::", "setParameters failed", e);
+ mDeviceOrientation = deviceOrientation;
+ if (isCameraOpened() && mOrientation == Constants.ORIENTATION_AUTO && !mIsRecording.get() && !isPictureCaptureInProgress.get()) {
+ mCameraParameters.setRotation(calcCameraRotation(deviceOrientation));
+ try{
+ mCamera.setParameters(mCameraParameters);
+ }
+ catch(RuntimeException e ) {
+ Log.e("CAMERA_1::", "setParameters failed", e);
+ }
}
- }
+ }
}
@Override
- public void setPreviewTexture(SurfaceTexture surfaceTexture) {
- try {
- if (mCamera == null) {
- mPreviewTexture = surfaceTexture;
- return;
- }
+ public void setPreviewTexture(final SurfaceTexture surfaceTexture) {
- mCamera.stopPreview();
- mIsPreviewActive = false;
+ mBgHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ try{
+ if (mCamera == null) {
+ mPreviewTexture = surfaceTexture;
+ return;
+ }
- if (surfaceTexture == null) {
- mCamera.setPreviewTexture((SurfaceTexture) mPreview.getSurfaceTexture());
- } else {
- mCamera.setPreviewTexture(surfaceTexture);
- }
+ mCamera.stopPreview();
+ mIsPreviewActive = false;
- mPreviewTexture = surfaceTexture;
- startCameraPreview();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
+ if (surfaceTexture == null) {
+ mCamera.setPreviewTexture((SurfaceTexture) mPreview.getSurfaceTexture());
+ } else {
+ mCamera.setPreviewTexture(surfaceTexture);
+ }
+
+ mPreviewTexture = surfaceTexture;
+ startCameraPreview();
+ } catch (IOException e) {
+ Log.e("CAMERA_1::", "setPreviewTexture failed", e);
+ }
+ }
+ });
}
@Override
@@ -637,14 +867,32 @@ public Size getPreviewSize() {
* This rewrites {@link #mCameraId} and {@link #mCameraInfo}.
*/
private void chooseCamera() {
- for (int i = 0, count = Camera.getNumberOfCameras(); i < count; i++) {
- Camera.getCameraInfo(i, mCameraInfo);
- if (mCameraInfo.facing == mFacing) {
- mCameraId = i;
- return;
+ if(_mCameraId == null){
+ int count = Camera.getNumberOfCameras();
+ if(count == 0){
+ throw new RuntimeException("No camera available.");
+ }
+
+ for (int i = 0; i < count; i++) {
+ Camera.getCameraInfo(i, mCameraInfo);
+ if (mCameraInfo.facing == mFacing) {
+ mCameraId = i;
+ return;
+ }
+ }
+ // no camera found, set the one we have
+ mCameraId = 0;
+ Camera.getCameraInfo(mCameraId, mCameraInfo);
+ }
+ else{
+ try{
+ mCameraId = Integer.parseInt(_mCameraId);
+ Camera.getCameraInfo(mCameraId, mCameraInfo);
+ }
+ catch(Exception e){
+ mCameraId = INVALID_CAMERA_ID;
}
}
- mCameraId = INVALID_CAMERA_ID;
}
private boolean openCamera() {
@@ -698,7 +946,8 @@ void adjustCameraParameters() {
// Always re-apply camera parameters
mPictureSize = mPictureSizes.sizes(mAspectRatio).last();
- if (mShowingPreview) {
+ boolean needsToStopPreview = mIsPreviewActive;
+ if (needsToStopPreview) {
mCamera.stopPreview();
mIsPreviewActive = false;
}
@@ -718,12 +967,12 @@ void adjustCameraParameters() {
setWhiteBalanceInternal(mWhiteBalance);
setScanningInternal(mIsScanning);
try{
- mCamera.setParameters(mCameraParameters);
+ mCamera.setParameters(mCameraParameters);
}
catch(RuntimeException e ) {
- Log.e("CAMERA_1::", "setParameters failed", e);
+ Log.e("CAMERA_1::", "setParameters failed", e);
}
- if (mShowingPreview) {
+ if (needsToStopPreview) {
startCameraPreview();
}
}
@@ -761,75 +1010,115 @@ private void releaseCamera() {
mCamera = null;
mPictureSize = null;
mCallback.onCameraClosed();
+
+ // reset these flags
+ isPictureCaptureInProgress.set(false);
+ mIsRecording.set(false);
}
}
// Most credit: https://github.com/CameraKit/camerakit-android/blob/master/camerakit-core/src/main/api16/com/wonderkiln/camerakit/Camera1.java
- void setFocusArea(float x, float y) {
- if (mCamera != null) {
- Camera.Parameters parameters = mCamera.getParameters();
- if (parameters == null) return;
-
- String focusMode = parameters.getFocusMode();
- Rect rect = calculateFocusArea(x, y);
-
- List meteringAreas = new ArrayList<>();
- meteringAreas.add(new Camera.Area(rect, FOCUS_METERING_AREA_WEIGHT_DEFAULT));
- if (parameters.getMaxNumFocusAreas() != 0 && focusMode != null &&
- (focusMode.equals(Camera.Parameters.FOCUS_MODE_AUTO) ||
- focusMode.equals(Camera.Parameters.FOCUS_MODE_MACRO) ||
- focusMode.equals(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE) ||
- focusMode.equals(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO))
- ) {
- parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
- parameters.setFocusAreas(meteringAreas);
- if (parameters.getMaxNumMeteringAreas() > 0) {
- parameters.setMeteringAreas(meteringAreas);
- }
- if (!parameters.getSupportedFocusModes().contains(Camera.Parameters.FOCUS_MODE_AUTO)) {
- return; //cannot autoFocus
- }
- try{
- mCamera.setParameters(parameters);
- }
- catch(RuntimeException e ) {
- Log.e("CAMERA_1::", "setParameters failed", e);
- }
- mCamera.autoFocus(new Camera.AutoFocusCallback() {
- @Override
- public void onAutoFocus(boolean success, Camera camera) {
- resetFocus(success, camera);
- }
- });
- } else if (parameters.getMaxNumMeteringAreas() > 0) {
- if (!parameters.getSupportedFocusModes().contains(Camera.Parameters.FOCUS_MODE_AUTO)) {
- return; //cannot autoFocus
- }
- parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
- parameters.setFocusAreas(meteringAreas);
- parameters.setMeteringAreas(meteringAreas);
+ void setFocusArea(final float x, final float y) {
+ mBgHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ synchronized(Camera1.this){
+ if (mCamera != null) {
+ Camera.Parameters parameters = null;
- try{
- mCamera.setParameters(parameters);
- }
- catch(RuntimeException e ) {
- Log.e("CAMERA_1::", "setParameters failed", e);
- }
- mCamera.autoFocus(new Camera.AutoFocusCallback() {
- @Override
- public void onAutoFocus(boolean success, Camera camera) {
- resetFocus(success, camera);
- }
- });
- } else {
- mCamera.autoFocus(new Camera.AutoFocusCallback() {
- @Override
- public void onAutoFocus(boolean success, Camera camera) {
- mCamera.cancelAutoFocus();
+ // This might crash on some devices if the camera is not
+ // available/locked, with a RuntimeException("getParameters failed (empty parameters)")
+ try{
+ parameters = mCamera.getParameters();
+ }
+ catch(Exception e){
+ Log.e("CAMERA_1::", "setFocusArea.getParameters failed", e);
+ parameters = null;
+ }
+
+ if (parameters == null) return;
+
+ String focusMode = parameters.getFocusMode();
+ Rect rect = calculateFocusArea(x, y);
+
+ List meteringAreas = new ArrayList<>();
+ meteringAreas.add(new Camera.Area(rect, FOCUS_METERING_AREA_WEIGHT_DEFAULT));
+
+ if (parameters.getMaxNumFocusAreas() != 0 && focusMode != null &&
+ (focusMode.equals(Camera.Parameters.FOCUS_MODE_AUTO) ||
+ focusMode.equals(Camera.Parameters.FOCUS_MODE_MACRO) ||
+ focusMode.equals(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE) ||
+ focusMode.equals(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO))
+ ) {
+ parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
+ parameters.setFocusAreas(meteringAreas);
+ if (parameters.getMaxNumMeteringAreas() > 0) {
+ parameters.setMeteringAreas(meteringAreas);
+ }
+ if (!parameters.getSupportedFocusModes().contains(Camera.Parameters.FOCUS_MODE_AUTO)) {
+ return; //cannot autoFocus
+ }
+ try{
+ mCamera.setParameters(parameters);
+ }
+ catch(RuntimeException e ) {
+ Log.e("CAMERA_1::", "setParameters failed", e);
+ }
+
+ try{
+ mCamera.autoFocus(new Camera.AutoFocusCallback() {
+ @Override
+ public void onAutoFocus(boolean success, Camera camera) {
+ //resetFocus(success, camera);
+ }
+ });
+ }
+ catch(RuntimeException e ) {
+ Log.e("CAMERA_1::", "autoFocus failed", e);
+ }
+ } else if (parameters.getMaxNumMeteringAreas() > 0) {
+ if (!parameters.getSupportedFocusModes().contains(Camera.Parameters.FOCUS_MODE_AUTO)) {
+ return; //cannot autoFocus
+ }
+ parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
+ parameters.setFocusAreas(meteringAreas);
+ parameters.setMeteringAreas(meteringAreas);
+
+ try{
+ mCamera.setParameters(parameters);
+ }
+ catch(RuntimeException e ) {
+ Log.e("CAMERA_1::", "setParameters failed", e);
+ }
+
+ try{
+ mCamera.autoFocus(new Camera.AutoFocusCallback() {
+ @Override
+ public void onAutoFocus(boolean success, Camera camera) {
+ //resetFocus(success, camera);
+ }
+ });
+ }
+ catch(RuntimeException e ) {
+ Log.e("CAMERA_1::", "autoFocus failed", e);
+ }
+ } else {
+ try{
+ mCamera.autoFocus(new Camera.AutoFocusCallback() {
+ @Override
+ public void onAutoFocus(boolean success, Camera camera) {
+ //mCamera.cancelAutoFocus();
+ }
+ });
+ }
+ catch(RuntimeException e ) {
+ Log.e("CAMERA_1::", "autoFocus failed", e);
+ }
+ }
}
- });
+ }
}
- }
+ });
}
private void resetFocus(final boolean success, final Camera camera) {
@@ -839,7 +1128,15 @@ private void resetFocus(final boolean success, final Camera camera) {
public void run() {
if (mCamera != null) {
mCamera.cancelAutoFocus();
- Camera.Parameters parameters = mCamera.getParameters();
+
+ Camera.Parameters parameters = null;
+ try{
+ parameters = mCamera.getParameters();
+ }
+ catch(Exception e){
+ Log.e("CAMERA_1::", "resetFocus.getParameters failed", e);
+ parameters = null;
+ }
if (parameters == null) return;
if (parameters.getFocusMode() != Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE) {
@@ -977,17 +1274,19 @@ private boolean setFlashInternal(int flash) {
}
}
- private boolean setExposureInternal(int exposure) {
- Log.e("CAMERA_1::", ""+isCameraOpened()+"; Exposure: "+exposure);
+ private boolean setExposureInternal(float exposure) {
+ mExposure = exposure;
if (isCameraOpened()){
- mExposure = exposure;
int minExposure = mCameraParameters.getMinExposureCompensation();
int maxExposure = mCameraParameters.getMaxExposureCompensation();
- Log.e("CAMERA_1::", ""+minExposure);
- Log.e("CAMERA_1::", ""+maxExposure);
if (minExposure != maxExposure) {
- mCameraParameters.setExposureCompensation(mExposure);
+ int scaledValue = 0;
+ if (mExposure >= 0 && mExposure <= 1) {
+ scaledValue = (int) (mExposure * (maxExposure - minExposure)) + minExposure;
+ }
+
+ mCameraParameters.setExposureCompensation(scaledValue);
return true;
}
}
@@ -1052,6 +1351,7 @@ public void onPreviewFrame(byte[] data, Camera camera) {
}
private void setUpMediaRecorder(String path, int maxDuration, int maxFileSize, boolean recordAudio, CamcorderProfile profile) {
+
mMediaRecorder = new MediaRecorder();
mCamera.unlock();
@@ -1085,15 +1385,16 @@ private void setUpMediaRecorder(String path, int maxDuration, int maxFileSize, b
mMediaRecorder.setOnInfoListener(this);
mMediaRecorder.setOnErrorListener(this);
+
}
private void stopMediaRecorder() {
- mIsRecording = false;
+
if (mMediaRecorder != null) {
try {
mMediaRecorder.stop();
} catch (RuntimeException ex) {
- ex.printStackTrace();
+ Log.e("CAMERA_1::", "stopMediaRecorder failed", ex);
}
mMediaRecorder.reset();
mMediaRecorder.release();
@@ -1108,6 +1409,7 @@ private void stopMediaRecorder() {
mCallback.onVideoRecorded(mVideoPath, mOrientation != Constants.ORIENTATION_AUTO ? mOrientation : deviceOrientation, deviceOrientation);
mVideoPath = null;
+
}
private void setCamcorderProfile(CamcorderProfile profile, boolean recordAudio) {
diff --git a/android/src/main/java/com/google/android/cameraview/Camera2.java b/android/src/main/java/com/google/android/cameraview/Camera2.java
index 04d13a3de..d724edb29 100644
--- a/android/src/main/java/com/google/android/cameraview/Camera2.java
+++ b/android/src/main/java/com/google/android/cameraview/Camera2.java
@@ -37,7 +37,7 @@
import android.media.Image;
import android.media.ImageReader;
import android.media.MediaRecorder;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import android.util.Log;
import android.util.SparseIntArray;
import android.view.Surface;
@@ -50,10 +50,17 @@
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Arrays;
+import java.util.ArrayList;
import java.util.HashSet;
+import java.util.List;
+import java.util.Properties;
import java.util.Set;
import java.util.SortedSet;
+import org.reactnative.camera.utils.ObjectUtils;
+
+
+
@SuppressWarnings("MissingPermission")
@TargetApi(21)
class Camera2 extends CameraViewImpl implements MediaRecorder.OnInfoListener, MediaRecorder.OnErrorListener {
@@ -199,6 +206,7 @@ public void onImageAvailable(ImageReader reader) {
private String mCameraId;
+ private String _mCameraId;
private CameraCharacteristics mCameraCharacteristics;
@@ -238,7 +246,7 @@ public void onImageAvailable(ImageReader reader) {
private int mFlash;
- private int mExposure;
+ private float mExposure;
private int mCameraOrientation;
@@ -258,8 +266,8 @@ public void onImageAvailable(ImageReader reader) {
private Rect mInitialCropRegion;
- Camera2(Callback callback, PreviewImpl preview, Context context) {
- super(callback, preview);
+ Camera2(Callback callback, PreviewImpl preview, Context context, Handler bgHandler) {
+ super(callback, preview, bgHandler);
mCameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
mCameraManager.registerAvailabilityCallback(new CameraManager.AvailabilityCallback() {
@Override
@@ -359,11 +367,58 @@ int getFacing() {
return mFacing;
}
+ @Override
+ void setCameraId(String id) {
+ if(!ObjectUtils.equals(_mCameraId, id)){
+ _mCameraId = id;
+
+ // only update if our camera ID actually changes
+ // from what we currently have.
+ // Passing null will always yield true
+ if(!ObjectUtils.equals(_mCameraId, mCameraId)){
+ // this will call chooseCameraIdByFacing
+ if (isCameraOpened()) {
+ stop();
+ start();
+ }
+ }
+ }
+ }
+
+ @Override
+ String getCameraId() {
+ return _mCameraId;
+ }
+
@Override
Set getSupportedAspectRatios() {
return mPreviewSizes.ratios();
}
+ @Override
+ List getCameraIds() {
+ try{
+
+ List ids = new ArrayList<>();
+
+ String[] cameraIds = mCameraManager.getCameraIdList();
+ for (String id : cameraIds) {
+ Properties p = new Properties();
+
+ CameraCharacteristics characteristics = mCameraManager.getCameraCharacteristics(id);
+ Integer internal = characteristics.get(CameraCharacteristics.LENS_FACING);
+
+ p.put("id", id);
+ p.put("type", String.valueOf(internal == CameraCharacteristics.LENS_FACING_FRONT ? Constants.FACING_FRONT : Constants.FACING_BACK));
+ ids.add(p);
+ }
+ return ids;
+ }
+ catch (CameraAccessException e) {
+ throw new RuntimeException("Failed to get a list of camera ids", e);
+ }
+ }
+
@Override
SortedSet getAvailablePictureSizes(AspectRatio ratio) {
return mPictureSizes.sizes(ratio);
@@ -384,7 +439,7 @@ void setPictureSize(Size size) {
mStillImageReader.close();
}
if (size == null) {
- if (mAspectRatio == null) {
+ if (mAspectRatio == null || mPictureSize == null) {
return;
}
mPictureSizes.sizes(mAspectRatio).last();
@@ -477,12 +532,12 @@ int getFlash() {
}
@Override
- int getExposureCompensation() {
+ float getExposureCompensation() {
return mExposure;
}
@Override
- void setExposureCompensation(int exposure) {
+ void setExposureCompensation(float exposure) {
Log.e("CAMERA_2:: ", "Adjusting exposure is not currently supported for Camera2");
}
@@ -651,7 +706,7 @@ void setDisplayOrientation(int displayOrientation) {
@Override
void setDeviceOrientation(int deviceOrientation) {
mDeviceOrientation = deviceOrientation;
- mPreview.setDisplayOrientation(mDeviceOrientation);
+ //mPreview.setDisplayOrientation(deviceOrientation); // this is not needed and messes up the display orientation
}
/**
@@ -660,55 +715,90 @@ void setDeviceOrientation(int deviceOrientation) {
* {@link #mFacing}.
*/
private boolean chooseCameraIdByFacing() {
- try {
- int internalFacing = INTERNAL_FACINGS.get(mFacing);
- final String[] ids = mCameraManager.getCameraIdList();
- if (ids.length == 0) { // No camera
- throw new RuntimeException("No camera available.");
- }
- for (String id : ids) {
- CameraCharacteristics characteristics = mCameraManager.getCameraCharacteristics(id);
- Integer level = characteristics.get(
+ if(_mCameraId == null){
+ try {
+ int internalFacing = INTERNAL_FACINGS.get(mFacing);
+ final String[] ids = mCameraManager.getCameraIdList();
+ if (ids.length == 0) { // No camera
+ throw new RuntimeException("No camera available.");
+ }
+ for (String id : ids) {
+ CameraCharacteristics characteristics = mCameraManager.getCameraCharacteristics(id);
+ Integer level = characteristics.get(
+ CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
+ if (level == null ||
+ level == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY) {
+ continue;
+ }
+ Integer internal = characteristics.get(CameraCharacteristics.LENS_FACING);
+ if (internal == null) {
+ throw new NullPointerException("Unexpected state: LENS_FACING null");
+ }
+ if (internal == internalFacing) {
+ mCameraId = id;
+ mCameraCharacteristics = characteristics;
+ return true;
+ }
+ }
+ // Not found
+ mCameraId = ids[0];
+ mCameraCharacteristics = mCameraManager.getCameraCharacteristics(mCameraId);
+ Integer level = mCameraCharacteristics.get(
CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
if (level == null ||
level == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY) {
- continue;
+ return false;
}
- Integer internal = characteristics.get(CameraCharacteristics.LENS_FACING);
+ Integer internal = mCameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
if (internal == null) {
throw new NullPointerException("Unexpected state: LENS_FACING null");
}
- if (internal == internalFacing) {
- mCameraId = id;
- mCameraCharacteristics = characteristics;
- return true;
+ for (int i = 0, count = INTERNAL_FACINGS.size(); i < count; i++) {
+ if (INTERNAL_FACINGS.valueAt(i) == internal) {
+ mFacing = INTERNAL_FACINGS.keyAt(i);
+ return true;
+ }
}
+ // The operation can reach here when the only camera device is an external one.
+ // We treat it as facing back.
+ mFacing = Constants.FACING_BACK;
+ return true;
+ } catch (CameraAccessException e) {
+ throw new RuntimeException("Failed to get a list of camera devices", e);
}
- // Not found
- mCameraId = ids[0];
- mCameraCharacteristics = mCameraManager.getCameraCharacteristics(mCameraId);
- Integer level = mCameraCharacteristics.get(
- CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
- if (level == null ||
- level == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY) {
- return false;
- }
- Integer internal = mCameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
- if (internal == null) {
- throw new NullPointerException("Unexpected state: LENS_FACING null");
- }
- for (int i = 0, count = INTERNAL_FACINGS.size(); i < count; i++) {
- if (INTERNAL_FACINGS.valueAt(i) == internal) {
- mFacing = INTERNAL_FACINGS.keyAt(i);
- return true;
+ }
+ else{
+
+ try{
+ // need to set the mCameraCharacteristics variable as above and also do the same checks
+ // for legacy hardware
+ mCameraCharacteristics = mCameraManager.getCameraCharacteristics(_mCameraId);
+
+ Integer level = mCameraCharacteristics.get(
+ CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
+ if (level == null ||
+ level == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY) {
+ return false;
+ }
+
+ // set our facing variable so orientation also works as expected
+ Integer internal = mCameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
+ if (internal == null) {
+ throw new NullPointerException("Unexpected state: LENS_FACING null");
}
+ for (int i = 0, count = INTERNAL_FACINGS.size(); i < count; i++) {
+ if (INTERNAL_FACINGS.valueAt(i) == internal) {
+ mFacing = INTERNAL_FACINGS.keyAt(i);
+ break;
+ }
+ }
+
+ mCameraId = _mCameraId;
+ return true;
+ }
+ catch(Exception e){
+ throw new RuntimeException("Failed to get camera characteristics", e);
}
- // The operation can reach here when the only camera device is an external one.
- // We treat it as facing back.
- mFacing = Constants.FACING_BACK;
- return true;
- } catch (CameraAccessException e) {
- throw new RuntimeException("Failed to get a list of camera devices", e);
}
}
@@ -1050,6 +1140,9 @@ private void lockFocus() {
// Much credit - https://gist.github.com/royshil/8c760c2485257c85a11cafd958548482
void setFocusArea(float x, float y) {
+ if (mCaptureSession == null) {
+ return;
+ }
CameraCaptureSession.CaptureCallback captureCallbackHandler = new CameraCaptureSession.CaptureCallback() {
@Override
public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) {
@@ -1074,7 +1167,6 @@ public void onCaptureFailed(CameraCaptureSession session, CaptureRequest request
try {
mCaptureSession.stopRepeating();
-
} catch (CameraAccessException e) {
Log.e(TAG, "Failed to manual focus.", e);
}
@@ -1165,6 +1257,13 @@ void captureStillPicture() {
break;
}
captureRequestBuilder.set(CaptureRequest.JPEG_ORIENTATION, getOutputRotation());
+
+
+ if(mCaptureCallback.getOptions().hasKey("quality")){
+ int quality = (int) (mCaptureCallback.getOptions().getDouble("quality") * 100);
+ captureRequestBuilder.set(CaptureRequest.JPEG_QUALITY, (byte)quality);
+ }
+
captureRequestBuilder.set(CaptureRequest.SCALER_CROP_REGION, mPreviewRequestBuilder.get(CaptureRequest.SCALER_CROP_REGION));
// Stop preview and capture a still picture.
mCaptureSession.stopRepeating();
@@ -1188,9 +1287,25 @@ public void onCaptureCompleted(@NonNull CameraCaptureSession session,
private int getOutputRotation() {
@SuppressWarnings("ConstantConditions")
int sensorOrientation = mCameraCharacteristics.get(CameraCharacteristics.SENSOR_ORIENTATION);
- return (sensorOrientation +
- mDisplayOrientation * (mFacing == Constants.FACING_FRONT ? 1 : -1) +
- 360) % 360;
+
+ // updated and copied from Camera1
+ if (mFacing == Constants.FACING_BACK) {
+ return (sensorOrientation + mDeviceOrientation) % 360;
+ } else {
+ final int landscapeFlip = isLandscape(mDeviceOrientation) ? 180 : 0;
+ return (sensorOrientation + mDeviceOrientation + landscapeFlip) % 360;
+ }
+ }
+
+ /**
+ * Test if the supplied orientation is in landscape.
+ *
+ * @param orientationDegrees Orientation in degrees (0,90,180,270)
+ * @return True if in landscape, false if portrait
+ */
+ private boolean isLandscape(int orientationDegrees) {
+ return (orientationDegrees == Constants.LANDSCAPE_90 ||
+ orientationDegrees == Constants.LANDSCAPE_270);
}
private void setUpMediaRecorder(String path, int maxDuration, int maxFileSize, boolean recordAudio, CamcorderProfile profile) {
diff --git a/android/src/main/java/com/google/android/cameraview/Camera2Api23.java b/android/src/main/java/com/google/android/cameraview/Camera2Api23.java
index 176c1e25b..396ea8b7c 100644
--- a/android/src/main/java/com/google/android/cameraview/Camera2Api23.java
+++ b/android/src/main/java/com/google/android/cameraview/Camera2Api23.java
@@ -20,13 +20,14 @@
import android.content.Context;
import android.graphics.ImageFormat;
import android.hardware.camera2.params.StreamConfigurationMap;
+import android.os.Handler;
@TargetApi(23)
class Camera2Api23 extends Camera2 {
- Camera2Api23(Callback callback, PreviewImpl preview, Context context) {
- super(callback, preview, context);
+ Camera2Api23(Callback callback, PreviewImpl preview, Context context, Handler bgHandler) {
+ super(callback, preview, context, bgHandler);
}
@Override
diff --git a/android/src/main/java/com/google/android/cameraview/CameraView.java b/android/src/main/java/com/google/android/cameraview/CameraView.java
index 784cb2792..be5066d4b 100644
--- a/android/src/main/java/com/google/android/cameraview/CameraView.java
+++ b/android/src/main/java/com/google/android/cameraview/CameraView.java
@@ -22,14 +22,16 @@
import android.hardware.Camera;
import android.media.CamcorderProfile;
import android.os.Build;
+import android.os.HandlerThread;
+import android.os.Handler;
import android.os.Parcel;
import android.os.Parcelable;
-import android.support.annotation.IntDef;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.os.ParcelableCompat;
-import android.support.v4.os.ParcelableCompatCreatorCallbacks;
-import android.support.v4.view.ViewCompat;
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.os.ParcelableCompat;
+import androidx.core.os.ParcelableCompatCreatorCallbacks;
+import androidx.core.view.ViewCompat;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
@@ -41,6 +43,8 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
import java.util.Set;
import java.util.SortedSet;
@@ -89,6 +93,10 @@ public class CameraView extends FrameLayout {
private final DisplayOrientationDetector mDisplayOrientationDetector;
+ protected HandlerThread mBgThread;
+ protected Handler mBgHandler;
+
+
public CameraView(Context context, boolean fallbackToOldApi) {
this(context, null, fallbackToOldApi);
}
@@ -100,6 +108,13 @@ public CameraView(Context context, AttributeSet attrs, boolean fallbackToOldApi)
@SuppressWarnings("WrongConstant")
public CameraView(Context context, AttributeSet attrs, int defStyleAttr, boolean fallbackToOldApi) {
super(context, attrs, defStyleAttr);
+
+ // bg hanadler for non UI heavy work
+ mBgThread = new HandlerThread("RNCamera-Handler-Thread");
+ mBgThread.start();
+ mBgHandler = new Handler(mBgThread.getLooper());
+
+
if (isInEditMode()){
mCallbacks = null;
mDisplayOrientationDetector = null;
@@ -112,11 +127,11 @@ public CameraView(Context context, AttributeSet attrs, int defStyleAttr, boolean
final PreviewImpl preview = createPreviewImpl(context);
mCallbacks = new CallbackBridge();
if (fallbackToOldApi || Build.VERSION.SDK_INT < 21) {
- mImpl = new Camera1(mCallbacks, preview);
+ mImpl = new Camera1(mCallbacks, preview, mBgHandler);
} else if (Build.VERSION.SDK_INT < 23) {
- mImpl = new Camera2(mCallbacks, preview, context);
+ mImpl = new Camera2(mCallbacks, preview, context, mBgHandler);
} else {
- mImpl = new Camera2Api23(mCallbacks, preview, context);
+ mImpl = new Camera2Api23(mCallbacks, preview, context, mBgHandler);
}
// Display orientation detector
@@ -129,6 +144,13 @@ public void onDisplayOrientationChanged(int displayOrientation, int deviceOrient
};
}
+ public void cleanup(){
+ if(mBgThread != null){
+ mBgThread.quitSafely();
+ mBgThread = null;
+ }
+ }
+
@NonNull
private PreviewImpl createPreviewImpl(Context context) {
PreviewImpl preview;
@@ -220,6 +242,7 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
protected Parcelable onSaveInstanceState() {
SavedState state = new SavedState(super.onSaveInstanceState());
state.facing = getFacing();
+ state.cameraId = getCameraId();
state.ratio = getAspectRatio();
state.autoFocus = getAutoFocus();
state.flash = getFlash();
@@ -241,6 +264,7 @@ protected void onRestoreInstanceState(Parcelable state) {
SavedState ss = (SavedState) state;
super.onRestoreInstanceState(ss.getSuperState());
setFacing(ss.facing);
+ setCameraId(ss.cameraId);
setAspectRatio(ss.ratio);
setAutoFocus(ss.autoFocus);
setFlash(ss.flash);
@@ -265,10 +289,12 @@ public void setUsingCamera2Api(boolean useCamera2) {
stop();
}
if (Build.VERSION.SDK_INT < 23) {
- mImpl = new Camera2(mCallbacks, mImpl.mPreview, mContext);
+ mImpl = new Camera2(mCallbacks, mImpl.mPreview, mContext, mBgHandler);
} else {
- mImpl = new Camera2Api23(mCallbacks, mImpl.mPreview, mContext);
+ mImpl = new Camera2Api23(mCallbacks, mImpl.mPreview, mContext, mBgHandler);
}
+
+ onRestoreInstanceState(state);
} else {
if (mImpl instanceof Camera1) {
return;
@@ -277,7 +303,7 @@ public void setUsingCamera2Api(boolean useCamera2) {
if (wasOpened) {
stop();
}
- mImpl = new Camera1(mCallbacks, mImpl.mPreview);
+ mImpl = new Camera1(mCallbacks, mImpl.mPreview, mBgHandler);
}
start();
}
@@ -292,9 +318,9 @@ public void start() {
this.removeView(mImpl.getView());
}
//store the state and restore this state after fall back to Camera1
- Parcelable state=onSaveInstanceState();
+ Parcelable state = onSaveInstanceState();
// Camera2 uses legacy hardware layer; fall back to Camera1
- mImpl = new Camera1(mCallbacks, createPreviewImpl(getContext()));
+ mImpl = new Camera1(mCallbacks, createPreviewImpl(getContext()), mBgHandler);
onRestoreInstanceState(state);
mImpl.start();
}
@@ -384,6 +410,24 @@ public int getFacing() {
return mImpl.getFacing();
}
+ /**
+ * Chooses camera by its camera iD
+ *
+ * @param id The camera ID
+ */
+ public void setCameraId(String id) {
+ mImpl.setCameraId(id);
+ }
+
+ /**
+ * Gets the currently set camera ID
+ *
+ * @return The camera facing.
+ */
+ public String getCameraId() {
+ return mImpl.getCameraId();
+ }
+
/**
* Gets all the aspect ratios supported by the current camera.
*/
@@ -391,6 +435,13 @@ public Set getSupportedAspectRatios() {
return mImpl.getSupportedAspectRatios();
}
+ /**
+ * Gets all the camera IDs supported by the phone as a String
+ */
+ public List getCameraIds() {
+ return mImpl.getCameraIds();
+ }
+
/**
* Sets the aspect ratio of camera.
*
@@ -411,7 +462,7 @@ public void setAspectRatio(@NonNull AspectRatio ratio) {
public AspectRatio getAspectRatio() {
return mImpl.getAspectRatio();
}
-
+
/**
* Gets all the picture sizes for particular ratio supported by the current camera.
*
@@ -420,7 +471,7 @@ public AspectRatio getAspectRatio() {
public SortedSet getAvailablePictureSizes(@NonNull AspectRatio ratio) {
return mImpl.getAvailablePictureSizes(ratio);
}
-
+
/**
* Sets the size of taken pictures.
*
@@ -429,7 +480,7 @@ public SortedSet getAvailablePictureSizes(@NonNull AspectRatio ratio) {
public void setPictureSize(@NonNull Size size) {
mImpl.setPictureSize(size);
}
-
+
/**
* Gets the size of pictures that will be taken.
*/
@@ -478,11 +529,11 @@ public int getFlash() {
return mImpl.getFlash();
}
- public void setExposureCompensation(int exposure) {
+ public void setExposureCompensation(float exposure) {
mImpl.setExposureCompensation(exposure);
}
- public int getExposureCompensation() {
+ public float getExposureCompensation() {
return mImpl.getExposureCompensation();
}
@@ -495,7 +546,7 @@ public int getExposureCompensation() {
public int getCameraOrientation() {
return mImpl.getCameraOrientation();
}
-
+
/**
* Sets the auto focus point.
*
@@ -556,11 +607,11 @@ public boolean record(String path, int maxDuration, int maxFileSize,
public void stopRecording() {
mImpl.stopRecording();
}
-
+
public void resumePreview() {
mImpl.resumePreview();
}
-
+
public void pausePreview() {
mImpl.pausePreview();
}
@@ -646,6 +697,8 @@ protected static class SavedState extends BaseSavedState {
@Facing
int facing;
+ String cameraId;
+
AspectRatio ratio;
boolean autoFocus;
@@ -653,7 +706,7 @@ protected static class SavedState extends BaseSavedState {
@Flash
int flash;
- int exposure;
+ float exposure;
float focusDepth;
@@ -662,17 +715,18 @@ protected static class SavedState extends BaseSavedState {
int whiteBalance;
boolean scanning;
-
+
Size pictureSize;
@SuppressWarnings("WrongConstant")
public SavedState(Parcel source, ClassLoader loader) {
super(source);
facing = source.readInt();
+ cameraId = source.readString();
ratio = source.readParcelable(loader);
autoFocus = source.readByte() != 0;
flash = source.readInt();
- exposure = source.readInt();
+ exposure = source.readFloat();
focusDepth = source.readFloat();
zoom = source.readFloat();
whiteBalance = source.readInt();
@@ -688,10 +742,11 @@ public SavedState(Parcelable superState) {
public void writeToParcel(Parcel out, int flags) {
super.writeToParcel(out, flags);
out.writeInt(facing);
+ out.writeString(cameraId);
out.writeParcelable(ratio, 0);
out.writeByte((byte) (autoFocus ? 1 : 0));
out.writeInt(flash);
- out.writeInt(exposure);
+ out.writeFloat(exposure);
out.writeFloat(focusDepth);
out.writeFloat(zoom);
out.writeInt(whiteBalance);
diff --git a/android/src/main/java/com/google/android/cameraview/CameraViewImpl.java b/android/src/main/java/com/google/android/cameraview/CameraViewImpl.java
index 8036fae41..e656cc30d 100644
--- a/android/src/main/java/com/google/android/cameraview/CameraViewImpl.java
+++ b/android/src/main/java/com/google/android/cameraview/CameraViewImpl.java
@@ -19,21 +19,32 @@
import android.media.CamcorderProfile;
import android.view.View;
import android.graphics.SurfaceTexture;
+import android.os.Handler;
import com.facebook.react.bridge.ReadableMap;
+import java.util.List;
+import java.util.Properties;
import java.util.Set;
import java.util.SortedSet;
+
abstract class CameraViewImpl {
protected final Callback mCallback;
-
protected final PreviewImpl mPreview;
- CameraViewImpl(Callback callback, PreviewImpl preview) {
+ // Background handler that the implementation an use to run heavy tasks in background
+ // in a thread/looper provided by the view.
+ // Most calls should not require this since the view will already schedule it
+ // on the bg thread. However, the implementation might need to do some heavy work
+ // by itself.
+ protected final Handler mBgHandler;
+
+ CameraViewImpl(Callback callback, PreviewImpl preview, Handler bgHandler) {
mCallback = callback;
mPreview = preview;
+ mBgHandler = bgHandler;
}
View getView() {
@@ -53,12 +64,18 @@ View getView() {
abstract int getFacing();
+ abstract void setCameraId(String id);
+
+ abstract String getCameraId();
+
abstract Set getSupportedAspectRatios();
-
+
+ abstract List getCameraIds();
+
abstract SortedSet getAvailablePictureSizes(AspectRatio ratio);
-
+
abstract void setPictureSize(Size size);
-
+
abstract Size getPictureSize();
/**
@@ -76,9 +93,9 @@ View getView() {
abstract int getFlash();
- abstract void setExposureCompensation(int exposure);
+ abstract void setExposureCompensation(float exposure);
- abstract int getExposureCompensation();
+ abstract float getExposureCompensation();
abstract void takePicture(ReadableMap options);
@@ -92,7 +109,7 @@ abstract boolean record(String path, int maxDuration, int maxFileSize,
abstract void setDisplayOrientation(int displayOrientation);
abstract void setDeviceOrientation(int deviceOrientation);
-
+
abstract void setFocusArea(float x, float y);
abstract void setFocusDepth(float value);
@@ -110,9 +127,9 @@ abstract boolean record(String path, int maxDuration, int maxFileSize,
abstract void setScanning(boolean isScanning);
abstract boolean getScanning();
-
+
abstract public void resumePreview();
-
+
abstract public void pausePreview();
abstract public void setPreviewTexture(SurfaceTexture surfaceTexture);
diff --git a/android/src/main/java/com/google/android/cameraview/Size.java b/android/src/main/java/com/google/android/cameraview/Size.java
index d80a12db1..26f52b558 100644
--- a/android/src/main/java/com/google/android/cameraview/Size.java
+++ b/android/src/main/java/com/google/android/cameraview/Size.java
@@ -18,7 +18,7 @@
import android.os.Parcel;
import android.os.Parcelable;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
/**
* Immutable class for describing width and height dimensions in pixels.
diff --git a/android/src/main/java/com/google/android/cameraview/SizeMap.java b/android/src/main/java/com/google/android/cameraview/SizeMap.java
index b6772fbe9..ae8fbf1e5 100644
--- a/android/src/main/java/com/google/android/cameraview/SizeMap.java
+++ b/android/src/main/java/com/google/android/cameraview/SizeMap.java
@@ -16,7 +16,7 @@
package com.google.android.cameraview;
-import android.support.v4.util.ArrayMap;
+import androidx.collection.ArrayMap;
import java.util.Set;
import java.util.SortedSet;
diff --git a/android/src/main/java/com/google/android/cameraview/SurfaceViewPreview.java b/android/src/main/java/com/google/android/cameraview/SurfaceViewPreview.java
index 78872a5ba..454131747 100644
--- a/android/src/main/java/com/google/android/cameraview/SurfaceViewPreview.java
+++ b/android/src/main/java/com/google/android/cameraview/SurfaceViewPreview.java
@@ -17,7 +17,7 @@
package com.google.android.cameraview;
import android.content.Context;
-import android.support.v4.view.ViewCompat;
+import androidx.core.view.ViewCompat;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
diff --git a/android/src/main/java/com/lwansbrough/RCTCamera/MutableImage.java b/android/src/main/java/com/lwansbrough/RCTCamera/MutableImage.java
index 5bcd63536..f069d1198 100644
--- a/android/src/main/java/com/lwansbrough/RCTCamera/MutableImage.java
+++ b/android/src/main/java/com/lwansbrough/RCTCamera/MutableImage.java
@@ -3,7 +3,7 @@
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
-import android.support.media.ExifInterface;
+import androidx.exifinterface.media.ExifInterface;
import android.util.Base64;
import android.util.Log;
diff --git a/android/src/main/java/com/lwansbrough/RCTCamera/RCTCameraViewManager.java b/android/src/main/java/com/lwansbrough/RCTCamera/RCTCameraViewManager.java
index 22f690b37..86919a312 100644
--- a/android/src/main/java/com/lwansbrough/RCTCamera/RCTCameraViewManager.java
+++ b/android/src/main/java/com/lwansbrough/RCTCamera/RCTCameraViewManager.java
@@ -1,6 +1,6 @@
package com.lwansbrough.RCTCamera;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.common.MapBuilder;
diff --git a/android/src/main/java/org/reactnative/camera/CameraModule.java b/android/src/main/java/org/reactnative/camera/CameraModule.java
index 58cff29a1..b1f23ce0b 100644
--- a/android/src/main/java/org/reactnative/camera/CameraModule.java
+++ b/android/src/main/java/org/reactnative/camera/CameraModule.java
@@ -21,11 +21,14 @@
import javax.annotation.Nullable;
import java.io.File;
import java.util.Collections;
-import java.util.HashMap;
+import java.util.Properties;
+import java.util.List;
import java.util.Map;
+import java.util.HashMap;
import java.util.Set;
import java.util.SortedSet;
+
public class CameraModule extends ReactContextBaseJavaModule {
private static final String TAG = "CameraModule";
@@ -208,7 +211,7 @@ private Map getBarCodeConstants() {
}
});
}
-
+
@ReactMethod
public void pausePreview(final int viewTag) {
final ReactApplicationContext context = getReactApplicationContext();
@@ -217,7 +220,7 @@ public void pausePreview(final int viewTag) {
@Override
public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
final RNCameraView cameraView;
-
+
try {
cameraView = (RNCameraView) nativeViewHierarchyManager.resolveView(viewTag);
if (cameraView.isCameraOpened()) {
@@ -229,7 +232,7 @@ public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
}
});
}
-
+
@ReactMethod
public void resumePreview(final int viewTag) {
final ReactApplicationContext context = getReactApplicationContext();
@@ -238,7 +241,7 @@ public void resumePreview(final int viewTag) {
@Override
public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
final RNCameraView cameraView;
-
+
try {
cameraView = (RNCameraView) nativeViewHierarchyManager.resolveView(viewTag);
if (cameraView.isCameraOpened()) {
@@ -261,14 +264,15 @@ public void takePicture(final ReadableMap options, final int viewTag, final Prom
public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
RNCameraView cameraView = (RNCameraView) nativeViewHierarchyManager.resolveView(viewTag);
try {
- if (cameraView.isCameraOpened()) {
- cameraView.takePicture(options, promise, cacheDirectory);
- } else {
- promise.reject("E_CAMERA_UNAVAILABLE", "Camera is not running");
- }
- } catch (Exception e) {
- promise.reject("E_CAMERA_BAD_VIEWTAG", "takePictureAsync: Expected a Camera component");
- }
+ if (cameraView.isCameraOpened()) {
+ cameraView.takePicture(options, promise, cacheDirectory);
+ } else {
+ promise.reject("E_CAMERA_UNAVAILABLE", "Camera is not running");
+ }
+ }
+ catch (Exception e) {
+ promise.reject("E_TAKE_PICTURE_FAILED", e.getMessage());
+ }
}
});
}
@@ -345,49 +349,77 @@ public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
}
});
}
- @ReactMethod
- public void getAvailablePictureSizes(final String ratio, final int viewTag, final Promise promise) {
- final ReactApplicationContext context = getReactApplicationContext();
- UIManagerModule uiManager = context.getNativeModule(UIManagerModule.class);
- uiManager.addUIBlock(new UIBlock() {
- @Override
- public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
- final RNCameraView cameraView;
-
- try {
- cameraView = (RNCameraView) nativeViewHierarchyManager.resolveView(viewTag);
- WritableArray result = Arguments.createArray();
- if (cameraView.isCameraOpened()) {
- SortedSet sizes = cameraView.getAvailablePictureSizes(AspectRatio.parse(ratio));
- for (Size size : sizes) {
- result.pushString(size.toString());
- }
- promise.resolve(result);
- } else {
- promise.reject("E_CAMERA_UNAVAILABLE", "Camera is not running");
- }
- } catch (Exception e) {
- promise.reject("E_CAMERA_BAD_VIEWTAG", "getAvailablePictureSizesAsync: Expected a Camera component");
- }
- }
- });
- }
- @ReactMethod
- public void checkIfRecordAudioPermissionsAreDefined(final Promise promise) {
- try {
- PackageInfo info = getCurrentActivity().getPackageManager().getPackageInfo(getReactApplicationContext().getPackageName(), PackageManager.GET_PERMISSIONS);
- if (info.requestedPermissions != null) {
- for (String p : info.requestedPermissions) {
- if (p.equals(Manifest.permission.RECORD_AUDIO)) {
- promise.resolve(true);
- return;
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- promise.resolve(false);
- }
+ @ReactMethod
+ public void getCameraIds(final int viewTag, final Promise promise) {
+ final ReactApplicationContext context = getReactApplicationContext();
+ UIManagerModule uiManager = context.getNativeModule(UIManagerModule.class);
+ uiManager.addUIBlock(new UIBlock() {
+ @Override
+ public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
+ final RNCameraView cameraView;
+ try {
+ cameraView = (RNCameraView) nativeViewHierarchyManager.resolveView(viewTag);
+ WritableArray result = Arguments.createArray();
+ List ids = cameraView.getCameraIds();
+ for (Properties p : ids) {
+ WritableMap m = new WritableNativeMap();
+ m.putString("id", p.getProperty("id"));
+ m.putInt("type", Integer.valueOf(p.getProperty("type")));
+ result.pushMap(m);
+ }
+ promise.resolve(result);
+ } catch (Exception e) {
+ e.printStackTrace();
+ promise.reject("E_CAMERA_FAILED", e.getMessage());
+ }
+ }
+ });
+ }
+
+ @ReactMethod
+ public void getAvailablePictureSizes(final String ratio, final int viewTag, final Promise promise) {
+ final ReactApplicationContext context = getReactApplicationContext();
+ UIManagerModule uiManager = context.getNativeModule(UIManagerModule.class);
+ uiManager.addUIBlock(new UIBlock() {
+ @Override
+ public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
+ final RNCameraView cameraView;
+
+ try {
+ cameraView = (RNCameraView) nativeViewHierarchyManager.resolveView(viewTag);
+ WritableArray result = Arguments.createArray();
+ if (cameraView.isCameraOpened()) {
+ SortedSet sizes = cameraView.getAvailablePictureSizes(AspectRatio.parse(ratio));
+ for (Size size : sizes) {
+ result.pushString(size.toString());
+ }
+ promise.resolve(result);
+ } else {
+ promise.reject("E_CAMERA_UNAVAILABLE", "Camera is not running");
+ }
+ } catch (Exception e) {
+ promise.reject("E_CAMERA_BAD_VIEWTAG", "getAvailablePictureSizesAsync: Expected a Camera component");
+ }
+ }
+ });
+ }
+
+ @ReactMethod
+ public void checkIfRecordAudioPermissionsAreDefined(final Promise promise) {
+ try {
+ PackageInfo info = getCurrentActivity().getPackageManager().getPackageInfo(getReactApplicationContext().getPackageName(), PackageManager.GET_PERMISSIONS);
+ if (info.requestedPermissions != null) {
+ for (String p : info.requestedPermissions) {
+ if (p.equals(Manifest.permission.RECORD_AUDIO)) {
+ promise.resolve(true);
+ return;
+ }
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ promise.resolve(false);
+ }
}
diff --git a/android/src/main/java/org/reactnative/camera/CameraViewManager.java b/android/src/main/java/org/reactnative/camera/CameraViewManager.java
index 945fcc12f..88491ded1 100644
--- a/android/src/main/java/org/reactnative/camera/CameraViewManager.java
+++ b/android/src/main/java/org/reactnative/camera/CameraViewManager.java
@@ -1,6 +1,6 @@
package org.reactnative.camera;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.common.MapBuilder;
@@ -43,7 +43,7 @@ public String toString() {
@Override
public void onDropViewInstance(RNCameraView view) {
- view.stop();
+ view.onHostDestroy();
super.onDropViewInstance(view);
}
@@ -73,6 +73,11 @@ public void setType(RNCameraView view, int type) {
view.setFacing(type);
}
+ @ReactProp(name = "cameraId")
+ public void setCameraId(RNCameraView view, String id) {
+ view.setCameraId(id);
+ }
+
@ReactProp(name = "ratio")
public void setRatio(RNCameraView view, String ratio) {
view.setAspectRatio(AspectRatio.parse(ratio));
@@ -84,7 +89,7 @@ public void setFlashMode(RNCameraView view, int torchMode) {
}
@ReactProp(name = "exposure")
- public void setExposureCompensation(RNCameraView view, int exposure){
+ public void setExposureCompensation(RNCameraView view, float exposure){
view.setExposureCompensation(exposure);
}
@@ -100,9 +105,11 @@ public void setFocusDepth(RNCameraView view, float depth) {
@ReactProp(name = "autoFocusPointOfInterest")
public void setAutoFocusPointOfInterest(RNCameraView view, ReadableMap coordinates) {
- float x = (float) coordinates.getDouble("x");
- float y = (float) coordinates.getDouble("y");
- view.setAutoFocusPointOfInterest(x, y);
+ if(coordinates != null){
+ float x = (float) coordinates.getDouble("x");
+ float y = (float) coordinates.getDouble("y");
+ view.setAutoFocusPointOfInterest(x, y);
+ }
}
@ReactProp(name = "zoom")
@@ -171,7 +178,7 @@ public void setFaceDetectionClassifications(RNCameraView view, int classificatio
public void setTracking(RNCameraView view, boolean trackingEnabled) {
view.setTracking(trackingEnabled);
}
-
+
@ReactProp(name = "googleVisionBarcodeDetectorEnabled")
public void setGoogleVisionBarcodeDetecting(RNCameraView view, boolean googleBarcodeDetectorEnabled) {
view.setShouldGoogleDetectBarcodes(googleBarcodeDetectorEnabled);
diff --git a/android/src/main/java/org/reactnative/camera/RNCameraView.java b/android/src/main/java/org/reactnative/camera/RNCameraView.java
index f561a62ae..50ae688ca 100644
--- a/android/src/main/java/org/reactnative/camera/RNCameraView.java
+++ b/android/src/main/java/org/reactnative/camera/RNCameraView.java
@@ -7,7 +7,7 @@
import android.media.CamcorderProfile;
import android.media.MediaActionSound;
import android.os.Build;
-import android.support.v4.content.ContextCompat;
+import androidx.core.content.ContextCompat;
import android.view.View;
import android.os.AsyncTask;
import com.facebook.react.bridge.*;
@@ -226,22 +226,28 @@ public void setPlaySoundOnCapture(Boolean playSoundOnCapture) {
mPlaySoundOnCapture = playSoundOnCapture;
}
- public void takePicture(ReadableMap options, final Promise promise, File cacheDirectory) {
- mPictureTakenPromises.add(promise);
- mPictureTakenOptions.put(promise, options);
- mPictureTakenDirectories.put(promise, cacheDirectory);
- if (mPlaySoundOnCapture) {
- MediaActionSound sound = new MediaActionSound();
- sound.play(MediaActionSound.SHUTTER_CLICK);
- }
- try {
- super.takePicture(options);
- } catch (Exception e) {
- mPictureTakenPromises.remove(promise);
- mPictureTakenOptions.remove(promise);
- mPictureTakenDirectories.remove(promise);
- throw e;
- }
+ public void takePicture(final ReadableMap options, final Promise promise, final File cacheDirectory) {
+ mBgHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ mPictureTakenPromises.add(promise);
+ mPictureTakenOptions.put(promise, options);
+ mPictureTakenDirectories.put(promise, cacheDirectory);
+ if (mPlaySoundOnCapture) {
+ MediaActionSound sound = new MediaActionSound();
+ sound.play(MediaActionSound.SHUTTER_CLICK);
+ }
+ try {
+ RNCameraView.super.takePicture(options);
+ } catch (Exception e) {
+ mPictureTakenPromises.remove(promise);
+ mPictureTakenOptions.remove(promise);
+ mPictureTakenDirectories.remove(promise);
+
+ promise.reject("E_TAKE_PICTURE_FAILED", e.getMessage());
+ }
+ }
+ });
}
@Override
@@ -249,39 +255,44 @@ public void onPictureSaved(WritableMap response) {
RNCameraViewHelper.emitPictureSavedEvent(this, response);
}
- public void record(ReadableMap options, final Promise promise, File cacheDirectory) {
- try {
- String path = options.hasKey("path") ? options.getString("path") : RNFileUtils.getOutputFilePath(cacheDirectory, ".mp4");
- int maxDuration = options.hasKey("maxDuration") ? options.getInt("maxDuration") : -1;
- int maxFileSize = options.hasKey("maxFileSize") ? options.getInt("maxFileSize") : -1;
-
- CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
- if (options.hasKey("quality")) {
- profile = RNCameraViewHelper.getCamcorderProfile(options.getInt("quality"));
- }
- if (options.hasKey("videoBitrate")) {
- profile.videoBitRate = options.getInt("videoBitrate");
- }
+ public void record(final ReadableMap options, final Promise promise, final File cacheDirectory) {
+ mBgHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ String path = options.hasKey("path") ? options.getString("path") : RNFileUtils.getOutputFilePath(cacheDirectory, ".mp4");
+ int maxDuration = options.hasKey("maxDuration") ? options.getInt("maxDuration") : -1;
+ int maxFileSize = options.hasKey("maxFileSize") ? options.getInt("maxFileSize") : -1;
+
+ CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
+ if (options.hasKey("quality")) {
+ profile = RNCameraViewHelper.getCamcorderProfile(options.getInt("quality"));
+ }
+ if (options.hasKey("videoBitrate")) {
+ profile.videoBitRate = options.getInt("videoBitrate");
+ }
- boolean recordAudio = true;
- if (options.hasKey("mute")) {
- recordAudio = !options.getBoolean("mute");
- }
+ boolean recordAudio = true;
+ if (options.hasKey("mute")) {
+ recordAudio = !options.getBoolean("mute");
+ }
- int orientation = Constants.ORIENTATION_AUTO;
- if (options.hasKey("orientation")) {
- orientation = options.getInt("orientation");
- }
+ int orientation = Constants.ORIENTATION_AUTO;
+ if (options.hasKey("orientation")) {
+ orientation = options.getInt("orientation");
+ }
- if (super.record(path, maxDuration * 1000, maxFileSize, recordAudio, profile, orientation)) {
- mIsRecording = true;
- mVideoRecordedPromise = promise;
- } else {
- promise.reject("E_RECORDING_FAILED", "Starting video recording failed. Another recording might be in progress.");
+ if (RNCameraView.super.record(path, maxDuration * 1000, maxFileSize, recordAudio, profile, orientation)) {
+ mIsRecording = true;
+ mVideoRecordedPromise = promise;
+ } else {
+ promise.reject("E_RECORDING_FAILED", "Starting video recording failed. Another recording might be in progress.");
+ }
+ } catch (IOException e) {
+ promise.reject("E_RECORDING_FAILED", "Starting video recording failed - could not create video file.");
+ }
}
- } catch (IOException e) {
- promise.reject("E_RECORDING_FAILED", "Starting video recording failed - could not create video file.");
- }
+ });
}
/**
@@ -476,11 +487,16 @@ public void onTextRecognizerTaskCompleted() {
@Override
public void onHostResume() {
if (hasCameraPermissions()) {
- if ((mIsPaused && !isCameraOpened()) || mIsNew) {
- mIsPaused = false;
- mIsNew = false;
- start();
- }
+ mBgHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ if ((mIsPaused && !isCameraOpened()) || mIsNew) {
+ mIsPaused = false;
+ mIsNew = false;
+ start();
+ }
+ }
+ });
} else {
RNCameraViewHelper.emitMountErrorEvent(this, "Camera permissions not granted - component could not be rendered.");
}
@@ -508,6 +524,8 @@ public void onHostDestroy() {
mMultiFormatReader = null;
stop();
mThemedReactContext.removeLifecycleEventListener(this);
+
+ this.cleanup();
}
private boolean hasCameraPermissions() {
diff --git a/android/src/main/java/org/reactnative/camera/RNCameraViewHelper.java b/android/src/main/java/org/reactnative/camera/RNCameraViewHelper.java
index 8c8f28f64..348903b93 100644
--- a/android/src/main/java/org/reactnative/camera/RNCameraViewHelper.java
+++ b/android/src/main/java/org/reactnative/camera/RNCameraViewHelper.java
@@ -6,11 +6,12 @@
import android.graphics.Paint;
import android.media.CamcorderProfile;
import android.os.Build;
-import android.support.media.ExifInterface;
+import androidx.exifinterface.media.ExifInterface;
import android.view.ViewGroup;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReadableMapKeySetIterator;
+import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.bridge.WritableArray;
import com.facebook.react.uimanager.UIManagerModule;
@@ -156,80 +157,144 @@ public class RNCameraViewHelper {
{"int", ExifInterface.TAG_RW2_SENSOR_TOP_BORDER},
{"int", ExifInterface.TAG_RW2_ISO},
};
+
+ // Run all events on native modules queue thread since they might be fired
+ // from other non RN threads.
+
+
// Mount error event
- public static void emitMountErrorEvent(ViewGroup view, String error) {
- CameraMountErrorEvent event = CameraMountErrorEvent.obtain(view.getId(), error);
- ReactContext reactContext = (ReactContext) view.getContext();
- reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ public static void emitMountErrorEvent(final ViewGroup view, final String error) {
+
+ final ReactContext reactContext = (ReactContext) view.getContext();
+ reactContext.runOnNativeModulesQueueThread(new Runnable() {
+ @Override
+ public void run() {
+ CameraMountErrorEvent event = CameraMountErrorEvent.obtain(view.getId(), error);
+ reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ }
+ });
}
// Camera ready event
- public static void emitCameraReadyEvent(ViewGroup view) {
- CameraReadyEvent event = CameraReadyEvent.obtain(view.getId());
- ReactContext reactContext = (ReactContext) view.getContext();
- reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ public static void emitCameraReadyEvent(final ViewGroup view) {
+
+ final ReactContext reactContext = (ReactContext) view.getContext();
+ reactContext.runOnNativeModulesQueueThread(new Runnable() {
+ @Override
+ public void run() {
+ CameraReadyEvent event = CameraReadyEvent.obtain(view.getId());
+ reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ }
+ });
}
// Picture saved event
- public static void emitPictureSavedEvent(ViewGroup view, WritableMap response) {
- PictureSavedEvent event = PictureSavedEvent.obtain(view.getId(), response);
- ReactContext reactContext = (ReactContext) view.getContext();
- reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ public static void emitPictureSavedEvent(final ViewGroup view, final WritableMap response) {
+
+ final ReactContext reactContext = (ReactContext) view.getContext();
+ reactContext.runOnNativeModulesQueueThread(new Runnable() {
+ @Override
+ public void run() {
+ PictureSavedEvent event = PictureSavedEvent.obtain(view.getId(), response);
+ reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ }
+ });
+
}
// Picture taken event
- public static void emitPictureTakenEvent(ViewGroup view) {
- PictureTakenEvent event = PictureTakenEvent.obtain(view.getId());
- ReactContext reactContext = (ReactContext) view.getContext();
- reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ public static void emitPictureTakenEvent(final ViewGroup view) {
+
+ final ReactContext reactContext = (ReactContext) view.getContext();
+ reactContext.runOnNativeModulesQueueThread(new Runnable() {
+ @Override
+ public void run() {
+ PictureTakenEvent event = PictureTakenEvent.obtain(view.getId());
+ reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ }
+ });
}
// Face detection events
- public static void emitFacesDetectedEvent(ViewGroup view, WritableArray data) {
- FacesDetectedEvent event = FacesDetectedEvent.obtain(view.getId(), data);
- ReactContext reactContext = (ReactContext) view.getContext();
- reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ public static void emitFacesDetectedEvent(final ViewGroup view, final WritableArray data) {
+
+ final ReactContext reactContext = (ReactContext) view.getContext();
+ reactContext.runOnNativeModulesQueueThread(new Runnable() {
+ @Override
+ public void run() {
+ FacesDetectedEvent event = FacesDetectedEvent.obtain(view.getId(), data);
+ reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ }
+ });
}
- public static void emitFaceDetectionErrorEvent(ViewGroup view, RNFaceDetector faceDetector) {
- FaceDetectionErrorEvent event = FaceDetectionErrorEvent.obtain(view.getId(), faceDetector);
- ReactContext reactContext = (ReactContext) view.getContext();
- reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ public static void emitFaceDetectionErrorEvent(final ViewGroup view, final RNFaceDetector faceDetector) {
+
+ final ReactContext reactContext = (ReactContext) view.getContext();
+ reactContext.runOnNativeModulesQueueThread(new Runnable() {
+ @Override
+ public void run() {
+ FaceDetectionErrorEvent event = FaceDetectionErrorEvent.obtain(view.getId(), faceDetector);
+ reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ }
+ });
}
// Barcode detection events
- public static void emitBarcodesDetectedEvent(ViewGroup view, WritableArray barcodes) {
- BarcodesDetectedEvent event = BarcodesDetectedEvent.obtain(view.getId(), barcodes);
- ReactContext reactContext = (ReactContext) view.getContext();
- reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ public static void emitBarcodesDetectedEvent(final ViewGroup view, final WritableArray barcodes) {
+
+ final ReactContext reactContext = (ReactContext) view.getContext();
+ reactContext.runOnNativeModulesQueueThread(new Runnable() {
+ @Override
+ public void run() {
+ BarcodesDetectedEvent event = BarcodesDetectedEvent.obtain(view.getId(), barcodes);
+ reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ }
+ });
}
- public static void emitBarcodeDetectionErrorEvent(ViewGroup view, RNBarcodeDetector barcodeDetector) {
- BarcodeDetectionErrorEvent event = BarcodeDetectionErrorEvent.obtain(view.getId(), barcodeDetector);
- ReactContext reactContext = (ReactContext) view.getContext();
- reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ public static void emitBarcodeDetectionErrorEvent(final ViewGroup view, final RNBarcodeDetector barcodeDetector) {
+
+ final ReactContext reactContext = (ReactContext) view.getContext();
+ reactContext.runOnNativeModulesQueueThread(new Runnable() {
+ @Override
+ public void run() {
+ BarcodeDetectionErrorEvent event = BarcodeDetectionErrorEvent.obtain(view.getId(), barcodeDetector);
+ reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ }
+ });
}
// Bar code read event
- public static void emitBarCodeReadEvent(ViewGroup view, Result barCode, int width, int height) {
- BarCodeReadEvent event = BarCodeReadEvent.obtain(view.getId(), barCode, width, height);
- ReactContext reactContext = (ReactContext) view.getContext();
- reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ public static void emitBarCodeReadEvent(final ViewGroup view, final Result barCode, final int width, final int height) {
+ final ReactContext reactContext = (ReactContext) view.getContext();
+ reactContext.runOnNativeModulesQueueThread(new Runnable() {
+ @Override
+ public void run() {
+ BarCodeReadEvent event = BarCodeReadEvent.obtain(view.getId(), barCode, width, height);
+ reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ }
+ });
}
// Text recognition event
- public static void emitTextRecognizedEvent(ViewGroup view, WritableArray data) {
- TextRecognizedEvent event = TextRecognizedEvent.obtain(view.getId(), data);
- ReactContext reactContext = (ReactContext) view.getContext();
- reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ public static void emitTextRecognizedEvent(final ViewGroup view, final WritableArray data) {
+ final ReactContext reactContext = (ReactContext) view.getContext();
+ reactContext.runOnNativeModulesQueueThread(new Runnable() {
+ @Override
+ public void run() {
+ TextRecognizedEvent event = TextRecognizedEvent.obtain(view.getId(), data);
+ reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
+ }
+ });
}
// Utilities
@@ -309,25 +374,46 @@ public static WritableMap getExifData(ExifInterface exifInterface) {
return exifMap;
}
- public static void setExifData(ExifInterface exifInterface, WritableMap exifMap) {
- ReadableMapKeySetIterator iterator = exifMap.keySetIterator();
- while (iterator.hasNextKey()) {
- String key = iterator.nextKey();
- switch (exifMap.getType(key)) {
- case Null:
- exifInterface.setAttribute(key, null);
- break;
- case Boolean:
- exifInterface.setAttribute(key, Boolean.toString(exifMap.getBoolean(key)));
- break;
- case Number:
- exifInterface.setAttribute(key, Double.toString(exifMap.getDouble(key)));
- break;
- case String:
- exifInterface.setAttribute(key, exifMap.getString(key));
- break;
+ public static void setExifData(ExifInterface exifInterface, ReadableMap exifMap) {
+ for (String[] tagInfo : exifTags) {
+ String name = tagInfo[1];
+ if (exifMap.hasKey(name)) {
+ String type = tagInfo[0];
+ switch (type) {
+ case "string":
+ exifInterface.setAttribute(name, exifMap.getString(name));
+ break;
+ case "int":
+ exifInterface.setAttribute(name, Integer.toString(exifMap.getInt(name)));
+ exifMap.getInt(name);
+ break;
+ case "double":
+ exifInterface.setAttribute(name, Double.toString(exifMap.getDouble(name)));
+ exifMap.getDouble(name);
+ break;
+ }
}
}
+
+ if (exifMap.hasKey(ExifInterface.TAG_GPS_LATITUDE) && exifMap.hasKey(ExifInterface.TAG_GPS_LONGITUDE)) {
+ exifInterface.setLatLong(exifMap.getDouble(ExifInterface.TAG_GPS_LATITUDE),
+ exifMap.getDouble(ExifInterface.TAG_GPS_LONGITUDE));
+ }
+ if(exifMap.hasKey(ExifInterface.TAG_GPS_ALTITUDE)){
+ exifInterface.setAltitude(exifMap.getDouble(ExifInterface.TAG_GPS_ALTITUDE));
+ }
+ }
+
+ // clears exif values in place
+ public static void clearExifData(ExifInterface exifInterface) {
+ for (String[] tagInfo : exifTags) {
+ exifInterface.setAttribute(tagInfo[1], null);
+ }
+
+ // these are not part of our tag list, remove by hand
+ exifInterface.setAttribute(ExifInterface.TAG_GPS_LATITUDE, null);
+ exifInterface.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, null);
+ exifInterface.setAttribute(ExifInterface.TAG_GPS_ALTITUDE, null);
}
public static Bitmap generateSimulatorPhoto(int width, int height) {
diff --git a/android/src/main/java/org/reactnative/camera/events/BarCodeReadEvent.java b/android/src/main/java/org/reactnative/camera/events/BarCodeReadEvent.java
index 3f4c1eaff..9e7851785 100644
--- a/android/src/main/java/org/reactnative/camera/events/BarCodeReadEvent.java
+++ b/android/src/main/java/org/reactnative/camera/events/BarCodeReadEvent.java
@@ -1,6 +1,6 @@
package org.reactnative.camera.events;
-import android.support.v4.util.Pools;
+import androidx.core.util.Pools;
import org.reactnative.camera.CameraViewManager;
import com.facebook.react.bridge.Arguments;
@@ -11,7 +11,6 @@
import com.google.zxing.Result;
import com.google.zxing.ResultPoint;
-import java.util.Date;
import java.util.Formatter;
public class BarCodeReadEvent extends Event {
diff --git a/android/src/main/java/org/reactnative/camera/events/BarcodeDetectionErrorEvent.java b/android/src/main/java/org/reactnative/camera/events/BarcodeDetectionErrorEvent.java
index 9328e03ad..e6db6d476 100644
--- a/android/src/main/java/org/reactnative/camera/events/BarcodeDetectionErrorEvent.java
+++ b/android/src/main/java/org/reactnative/camera/events/BarcodeDetectionErrorEvent.java
@@ -1,6 +1,6 @@
package org.reactnative.camera.events;
-import android.support.v4.util.Pools;
+import androidx.core.util.Pools;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.uimanager.events.Event;
diff --git a/android/src/main/java/org/reactnative/camera/events/BarcodesDetectedEvent.java b/android/src/main/java/org/reactnative/camera/events/BarcodesDetectedEvent.java
index f14a03a69..909ed1b24 100644
--- a/android/src/main/java/org/reactnative/camera/events/BarcodesDetectedEvent.java
+++ b/android/src/main/java/org/reactnative/camera/events/BarcodesDetectedEvent.java
@@ -1,6 +1,7 @@
package org.reactnative.camera.events;
-import android.support.v4.util.Pools;
+import androidx.core.util.Pools;
+import android.util.SparseArray;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.WritableArray;
import com.facebook.react.bridge.WritableMap;
diff --git a/android/src/main/java/org/reactnative/camera/events/CameraMountErrorEvent.java b/android/src/main/java/org/reactnative/camera/events/CameraMountErrorEvent.java
index 3a6d8027b..5f7c16021 100644
--- a/android/src/main/java/org/reactnative/camera/events/CameraMountErrorEvent.java
+++ b/android/src/main/java/org/reactnative/camera/events/CameraMountErrorEvent.java
@@ -1,6 +1,6 @@
package org.reactnative.camera.events;
-import android.support.v4.util.Pools;
+import androidx.core.util.Pools;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.uimanager.events.Event;
diff --git a/android/src/main/java/org/reactnative/camera/events/CameraReadyEvent.java b/android/src/main/java/org/reactnative/camera/events/CameraReadyEvent.java
index 43cb86373..ed41221f8 100644
--- a/android/src/main/java/org/reactnative/camera/events/CameraReadyEvent.java
+++ b/android/src/main/java/org/reactnative/camera/events/CameraReadyEvent.java
@@ -1,6 +1,6 @@
package org.reactnative.camera.events;
-import android.support.v4.util.Pools;
+import androidx.core.util.Pools;
import org.reactnative.camera.CameraViewManager;
import com.facebook.react.bridge.Arguments;
@@ -8,8 +8,6 @@
import com.facebook.react.uimanager.events.Event;
import com.facebook.react.uimanager.events.RCTEventEmitter;
-import java.util.Date;
-
public class CameraReadyEvent extends Event {
private static final Pools.SynchronizedPool EVENTS_POOL = new Pools.SynchronizedPool<>(3);
private CameraReadyEvent() {}
diff --git a/android/src/main/java/org/reactnative/camera/events/FaceDetectionErrorEvent.java b/android/src/main/java/org/reactnative/camera/events/FaceDetectionErrorEvent.java
index 55d5d661c..72f7a66ad 100644
--- a/android/src/main/java/org/reactnative/camera/events/FaceDetectionErrorEvent.java
+++ b/android/src/main/java/org/reactnative/camera/events/FaceDetectionErrorEvent.java
@@ -1,6 +1,6 @@
package org.reactnative.camera.events;
-import android.support.v4.util.Pools;
+import androidx.core.util.Pools;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.uimanager.events.Event;
diff --git a/android/src/main/java/org/reactnative/camera/events/FacesDetectedEvent.java b/android/src/main/java/org/reactnative/camera/events/FacesDetectedEvent.java
index c4fc18015..ae93e9ad1 100644
--- a/android/src/main/java/org/reactnative/camera/events/FacesDetectedEvent.java
+++ b/android/src/main/java/org/reactnative/camera/events/FacesDetectedEvent.java
@@ -1,6 +1,6 @@
package org.reactnative.camera.events;
-import android.support.v4.util.Pools;
+import androidx.core.util.Pools;
import org.reactnative.camera.CameraViewManager;
import com.facebook.react.bridge.Arguments;
diff --git a/android/src/main/java/org/reactnative/camera/events/PictureSavedEvent.java b/android/src/main/java/org/reactnative/camera/events/PictureSavedEvent.java
index 3ca64437a..305c54374 100644
--- a/android/src/main/java/org/reactnative/camera/events/PictureSavedEvent.java
+++ b/android/src/main/java/org/reactnative/camera/events/PictureSavedEvent.java
@@ -1,6 +1,6 @@
package org.reactnative.camera.events;
-import android.support.v4.util.Pools;
+import androidx.core.util.Pools;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.uimanager.events.Event;
diff --git a/android/src/main/java/org/reactnative/camera/events/PictureTakenEvent.java b/android/src/main/java/org/reactnative/camera/events/PictureTakenEvent.java
index aad1ded9c..b1247a3c0 100644
--- a/android/src/main/java/org/reactnative/camera/events/PictureTakenEvent.java
+++ b/android/src/main/java/org/reactnative/camera/events/PictureTakenEvent.java
@@ -1,6 +1,6 @@
package org.reactnative.camera.events;
-import android.support.v4.util.Pools;
+import androidx.core.util.Pools;
import org.reactnative.camera.CameraViewManager;
import com.facebook.react.bridge.Arguments;
@@ -8,8 +8,6 @@
import com.facebook.react.uimanager.events.Event;
import com.facebook.react.uimanager.events.RCTEventEmitter;
-import java.util.Date;
-
public class PictureTakenEvent extends Event {
private static final Pools.SynchronizedPool EVENTS_POOL = new Pools.SynchronizedPool<>(3);
private PictureTakenEvent() {}
diff --git a/android/src/main/java/org/reactnative/camera/events/TextRecognizedEvent.java b/android/src/main/java/org/reactnative/camera/events/TextRecognizedEvent.java
index 6a45a380c..f785db300 100644
--- a/android/src/main/java/org/reactnative/camera/events/TextRecognizedEvent.java
+++ b/android/src/main/java/org/reactnative/camera/events/TextRecognizedEvent.java
@@ -1,6 +1,6 @@
package org.reactnative.camera.events;
-import android.support.v4.util.Pools;
+import androidx.core.util.Pools;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.WritableArray;
diff --git a/android/src/main/java/org/reactnative/camera/tasks/ResolveTakenPictureAsyncTask.java b/android/src/main/java/org/reactnative/camera/tasks/ResolveTakenPictureAsyncTask.java
index ee4a29a90..57e0dc105 100644
--- a/android/src/main/java/org/reactnative/camera/tasks/ResolveTakenPictureAsyncTask.java
+++ b/android/src/main/java/org/reactnative/camera/tasks/ResolveTakenPictureAsyncTask.java
@@ -6,7 +6,7 @@
import android.graphics.Matrix;
import android.net.Uri;
import android.os.AsyncTask;
-import android.support.media.ExifInterface;
+import androidx.exifinterface.media.ExifInterface;
import android.util.Base64;
import org.reactnative.camera.RNCameraViewHelper;
@@ -15,6 +15,7 @@
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReadableMap;
+import com.facebook.react.bridge.ReadableType;
import com.facebook.react.bridge.WritableMap;
import java.io.ByteArrayInputStream;
@@ -26,10 +27,10 @@
public class ResolveTakenPictureAsyncTask extends AsyncTask {
private static final String ERROR_TAG = "E_TAKING_PICTURE_FAILED";
private Promise mPromise;
+ private Bitmap mBitmap;
private byte[] mImageData;
private ReadableMap mOptions;
private File mCacheDirectory;
- private Bitmap mBitmap;
private int mDeviceOrientation;
private PictureSavedDelegate mPictureSavedDelegate;
@@ -46,95 +47,109 @@ private int getQuality() {
return (int) (mOptions.getDouble("quality") * 100);
}
+ // loads bitmap only if necessary
+ private void loadBitmap() throws IOException {
+ if(mBitmap == null){
+ mBitmap = BitmapFactory.decodeByteArray(mImageData, 0, mImageData.length);
+ }
+ if(mBitmap == null){
+ throw new IOException("Failed to decode Image Bitmap");
+ }
+ }
+
@Override
protected WritableMap doInBackground(Void... voids) {
WritableMap response = Arguments.createMap();
ByteArrayInputStream inputStream = null;
+ ExifInterface exifInterface = null;
+ WritableMap exifData = null;
+ ReadableMap exifExtraData = null;
+
+ boolean orientationChanged = false;
response.putInt("deviceOrientation", mDeviceOrientation);
response.putInt("pictureOrientation", mOptions.hasKey("orientation") ? mOptions.getInt("orientation") : mDeviceOrientation);
- if (mOptions.hasKey("skipProcessing")) {
- try {
- // Prepare file output
- File imageFile = new File(RNFileUtils.getOutputFilePath(mCacheDirectory, ".jpg"));
- imageFile.createNewFile();
- FileOutputStream fOut = new FileOutputStream(imageFile);
- // Save byte array (it is already a JPEG)
- fOut.write(mImageData);
+ try{
+ // this replaces the skipProcessing flag, we will process only if needed, and in
+ // an orderly manner, so that skipProcessing is the default behaviour if no options are given
+ // and this behaves more like the iOS version.
+ // We will load all data lazily only when needed.
- // get image size
- if (mBitmap == null) {
- mBitmap = BitmapFactory.decodeByteArray(mImageData, 0, mImageData.length);
- }
+ // this should not incurr in any overhead if not read/used
+ inputStream = new ByteArrayInputStream(mImageData);
- response.putInt("width", mBitmap.getWidth());
- response.putInt("height", mBitmap.getHeight());
- // Return file system URI
- String fileUri = Uri.fromFile(imageFile).toString();
- response.putString("uri", fileUri);
+ // Rotate the bitmap to the proper orientation if requested
+ if(mOptions.hasKey("fixOrientation") && mOptions.getBoolean("fixOrientation")){
- } catch (Resources.NotFoundException e) {
- mPromise.reject(ERROR_TAG, "Documents directory of the app could not be found.", e);
- e.printStackTrace();
- } catch (IOException e) {
- mPromise.reject(ERROR_TAG, "An unknown I/O exception has occurred.", e);
- e.printStackTrace();
+ exifInterface = new ExifInterface(inputStream);
+
+ // Get orientation of the image from mImageData via inputStream
+ int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED);
+
+ if(orientation != ExifInterface.ORIENTATION_UNDEFINED){
+ loadBitmap();
+ mBitmap = rotateBitmap(mBitmap, getImageRotation(orientation));
+ orientationChanged = true;
+ }
}
- return response;
- }
+ if (mOptions.hasKey("width")) {
+ loadBitmap();
+ mBitmap = resizeBitmap(mBitmap, mOptions.getInt("width"));
+ }
- // we need the stream only for photos from a device
- if (mBitmap == null) {
- mBitmap = BitmapFactory.decodeByteArray(mImageData, 0, mImageData.length);
- inputStream = new ByteArrayInputStream(mImageData);
- }
+ if (mOptions.hasKey("mirrorImage") && mOptions.getBoolean("mirrorImage")) {
+ loadBitmap();
+ mBitmap = flipHorizontally(mBitmap);
+ }
- try {
- WritableMap fileExifData = null;
- if (inputStream != null) {
- ExifInterface exifInterface = new ExifInterface(inputStream);
- // Get orientation of the image from mImageData via inputStream
- int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION,
- ExifInterface.ORIENTATION_UNDEFINED);
-
- // Rotate the bitmap to the proper orientation if needed
- boolean fixOrientation = mOptions.hasKey("fixOrientation")
- && mOptions.getBoolean("fixOrientation")
- && orientation != ExifInterface.ORIENTATION_UNDEFINED;
- if (fixOrientation) {
- mBitmap = rotateBitmap(mBitmap, getImageRotation(orientation));
- }
+ // EXIF code - we will adjust exif info later if we manipulated the bitmap
+ boolean writeExifToResponse = mOptions.hasKey("exif") && mOptions.getBoolean("exif");
- if (mOptions.hasKey("width")) {
- mBitmap = resizeBitmap(mBitmap, mOptions.getInt("width"));
- }
+ // default to true if not provided so it is consistent with iOS and with what happens if no
+ // processing is done and the image is saved as is.
+ boolean writeExifToFile = true;
- if (mOptions.hasKey("mirrorImage") && mOptions.getBoolean("mirrorImage")) {
- mBitmap = flipHorizontally(mBitmap);
+ if (mOptions.hasKey("writeExif")) {
+ switch (mOptions.getType("writeExif")) {
+ case Boolean:
+ writeExifToFile = mOptions.getBoolean("writeExif");
+ break;
+ case Map:
+ exifExtraData = mOptions.getMap("writeExif");
+ writeExifToFile = true;
+ break;
}
+ }
- WritableMap exifData = null;
- boolean writeExifToResponse = mOptions.hasKey("exif") && mOptions.getBoolean("exif");
- boolean writeExifToFile = mOptions.hasKey("writeExif") && mOptions.getBoolean("writeExif");
+ // Read Exif data if needed
+ if (writeExifToResponse || writeExifToFile) {
- // Read Exif data if needed
- if (writeExifToResponse || writeExifToFile) {
+ // if we manipulated the image, or need to add extra data, or need to add it to the response,
+ // then we need to load the actual exif data.
+ // Otherwise we can just use w/e exif data we have right now in our byte array
+ if(mBitmap != null || exifExtraData != null || writeExifToResponse){
+ if(exifInterface == null){
+ exifInterface = new ExifInterface(inputStream);
+ }
exifData = RNCameraViewHelper.getExifData(exifInterface);
+
+ if(exifExtraData != null){
+ exifData.merge(exifExtraData);
+ }
}
- // Write Exif data to output file if requested
- if (writeExifToFile) {
- fileExifData = Arguments.createMap();
- fileExifData.merge(exifData);
- fileExifData.putInt("width", mBitmap.getWidth());
- fileExifData.putInt("height", mBitmap.getHeight());
- if (fixOrientation) {
- fileExifData.putInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
+ // if we did anything to the bitmap, adjust exif
+ if(mBitmap != null){
+ exifData.putInt("width", mBitmap.getWidth());
+ exifData.putInt("height", mBitmap.getHeight());
+
+ if(orientationChanged){
+ exifData.putInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
}
}
@@ -144,47 +159,108 @@ protected WritableMap doInBackground(Void... voids) {
}
}
- // Upon rotating, write the image's dimensions to the response
- response.putInt("width", mBitmap.getWidth());
- response.putInt("height", mBitmap.getHeight());
-
- // Cache compressed image in imageStream
- ByteArrayOutputStream imageStream = new ByteArrayOutputStream();
- mBitmap.compress(Bitmap.CompressFormat.JPEG, getQuality(), imageStream);
-
- // Write compressed image to file in cache directory unless otherwise specified
- if (!mOptions.hasKey("doNotSave") || !mOptions.getBoolean("doNotSave")) {
- String filePath = writeStreamToFile(imageStream);
- if (fileExifData != null) {
- ExifInterface fileExifInterface = new ExifInterface(filePath);
- RNCameraViewHelper.setExifData(fileExifInterface, fileExifData);
- fileExifInterface.saveAttributes();
+
+
+ // final processing
+ // Based on whether or not we loaded the full bitmap into memory, final processing differs
+ if(mBitmap == null){
+
+ // set response dimensions. If we haven't read our bitmap, get it efficiently
+ // without loading the actual bitmap into memory
+ BitmapFactory.Options options = new BitmapFactory.Options();
+ options.inJustDecodeBounds = true;
+ BitmapFactory.decodeByteArray(mImageData, 0, mImageData.length, options);
+ if(options != null){
+ response.putInt("width", options.outWidth);
+ response.putInt("height", options.outHeight);
+ }
+
+
+ // save to file if requested
+ if (!mOptions.hasKey("doNotSave") || !mOptions.getBoolean("doNotSave")) {
+
+ // Prepare file output
+ File imageFile = new File(RNFileUtils.getOutputFilePath(mCacheDirectory, ".jpg"));
+ imageFile.createNewFile();
+ FileOutputStream fOut = new FileOutputStream(imageFile);
+
+ // Save byte array (it is already a JPEG)
+ fOut.write(mImageData);
+ fOut.flush();
+ fOut.close();
+
+ // update exif data if needed.
+ // Since we didn't modify the image, we only update if we have extra exif info
+ if (writeExifToFile && exifExtraData != null) {
+ ExifInterface fileExifInterface = new ExifInterface(imageFile.getAbsolutePath());
+ RNCameraViewHelper.setExifData(fileExifInterface, exifExtraData);
+ fileExifInterface.saveAttributes();
+ }
+ else if (!writeExifToFile){
+ // if we were requested to NOT store exif, we actually need to
+ // clear the exif tags
+ ExifInterface fileExifInterface = new ExifInterface(imageFile.getAbsolutePath());
+ RNCameraViewHelper.clearExifData(fileExifInterface);
+ fileExifInterface.saveAttributes();
+ }
+ // else: exif is unmodified, no need to update anything
+
+ // Return file system URI
+ String fileUri = Uri.fromFile(imageFile).toString();
+ response.putString("uri", fileUri);
+ }
+
+ if (mOptions.hasKey("base64") && mOptions.getBoolean("base64")) {
+ response.putString("base64", Base64.encodeToString(mImageData, Base64.NO_WRAP));
}
- File imageFile = new File(filePath);
- String fileUri = Uri.fromFile(imageFile).toString();
- response.putString("uri", fileUri);
- }
- // Write base64-encoded image to the response if requested
- if (mOptions.hasKey("base64") && mOptions.getBoolean("base64")) {
- response.putString("base64", Base64.encodeToString(imageStream.toByteArray(), Base64.NO_WRAP));
}
+ else{
+
+ // get response dimensions right from the bitmap if we have it
+ response.putInt("width", mBitmap.getWidth());
+ response.putInt("height", mBitmap.getHeight());
+
+ // Cache compressed image in imageStream
+ ByteArrayOutputStream imageStream = new ByteArrayOutputStream();
+ mBitmap.compress(Bitmap.CompressFormat.JPEG, getQuality(), imageStream);
+
+
+ // Write compressed image to file in cache directory unless otherwise specified
+ if (!mOptions.hasKey("doNotSave") || !mOptions.getBoolean("doNotSave")) {
+ String filePath = writeStreamToFile(imageStream);
+
+ // since we lost any exif data on bitmap creation, we only need
+ // to add it if requested
+ if (writeExifToFile && exifData != null) {
+ ExifInterface fileExifInterface = new ExifInterface(filePath);
+ RNCameraViewHelper.setExifData(fileExifInterface, exifData);
+ fileExifInterface.saveAttributes();
+ }
+ File imageFile = new File(filePath);
+ String fileUri = Uri.fromFile(imageFile).toString();
+ response.putString("uri", fileUri);
+ }
+
+ // Write base64-encoded image to the response if requested
+ if (mOptions.hasKey("base64") && mOptions.getBoolean("base64")) {
+ response.putString("base64", Base64.encodeToString(imageStream.toByteArray(), Base64.NO_WRAP));
+ }
- // Cleanup
- imageStream.close();
- if (inputStream != null) {
- inputStream.close();
- inputStream = null;
}
return response;
- } catch (Resources.NotFoundException e) {
+
+ }
+ catch (Resources.NotFoundException e) {
mPromise.reject(ERROR_TAG, "Documents directory of the app could not be found.", e);
e.printStackTrace();
- } catch (IOException e) {
+ }
+ catch (IOException e) {
mPromise.reject(ERROR_TAG, "An unknown I/O exception has occurred.", e);
e.printStackTrace();
- } finally {
+ }
+ finally {
try {
if (inputStream != null) {
inputStream.close();
@@ -194,7 +270,6 @@ protected WritableMap doInBackground(Void... voids) {
}
}
- // An exception had to occur, promise has already been rejected. Do not try to resolve it again.
return null;
}
diff --git a/android/src/main/java/org/reactnative/camera/utils/ObjectUtils.java b/android/src/main/java/org/reactnative/camera/utils/ObjectUtils.java
new file mode 100644
index 000000000..15ce89cf9
--- /dev/null
+++ b/android/src/main/java/org/reactnative/camera/utils/ObjectUtils.java
@@ -0,0 +1,15 @@
+package org.reactnative.camera.utils;
+
+
+public class ObjectUtils {
+
+ /*
+ * Replacement for Objects.equals that is only available after Android API 19
+ */
+ public static boolean equals(Object o1, Object o2) {
+ if (o1 == null && o2 == null) return true;
+ if (o1 == null) return false;
+ return o1.equals(o2);
+ }
+
+}
diff --git a/android/src/mlkit/java/org/reactnative/barcodedetector/BarcodeFormatUtils.java b/android/src/mlkit/java/org/reactnative/barcodedetector/BarcodeFormatUtils.java
index 5d59ec098..84e5ab4b6 100644
--- a/android/src/mlkit/java/org/reactnative/barcodedetector/BarcodeFormatUtils.java
+++ b/android/src/mlkit/java/org/reactnative/barcodedetector/BarcodeFormatUtils.java
@@ -17,6 +17,7 @@ public class BarcodeFormatUtils {
private static final int UNKNOWN_FORMAT_INT = FirebaseVisionBarcode.FORMAT_UNKNOWN;
private static final String UNKNOWN_TYPE_STRING = "UNKNOWN_TYPE";
+ private static final String UNKNOWN_FORMAT_STRING = "UNKNOWN_FORMAT";
static {
// Initialize integer to string map
@@ -36,7 +37,6 @@ public class BarcodeFormatUtils {
map.put(FirebaseVisionBarcode.FORMAT_AZTEC, "AZTEC");
map.put(FirebaseVisionBarcode.FORMAT_ALL_FORMATS, "ALL");
map.put(FirebaseVisionBarcode.FORMAT_UPC_A, "UPC_A");
- map.put(FirebaseVisionBarcode.FORMAT_ALL_FORMATS, "ALL");
map.put(-1, "None");
FORMATS = map;
@@ -81,6 +81,9 @@ public class BarcodeFormatUtils {
public static String get(int format) {
return TYPES.get(format, UNKNOWN_TYPE_STRING);
}
+ public static String getFormat(int format) {
+ return FORMATS.get(format, UNKNOWN_FORMAT_STRING);
+ }
public static int get(String format) {
if (REVERSE_FORMATS.containsKey(format)) {
diff --git a/android/src/mlkit/java/org/reactnative/barcodedetector/RNBarcodeDetector.java b/android/src/mlkit/java/org/reactnative/barcodedetector/RNBarcodeDetector.java
index f2990fd52..31b676065 100644
--- a/android/src/mlkit/java/org/reactnative/barcodedetector/RNBarcodeDetector.java
+++ b/android/src/mlkit/java/org/reactnative/barcodedetector/RNBarcodeDetector.java
@@ -61,7 +61,7 @@ public void release() {
private void createBarcodeDetector() {
FirebaseVisionBarcodeDetectorOptions options = mBuilder.build();
mBarcodeDetector = FirebaseVision.getInstance()
- .getVisionBarcodeDetector();
+ .getVisionBarcodeDetector(options);
}
}
diff --git a/android/src/mlkit/java/org/reactnative/camera/tasks/BarcodeDetectorAsyncTask.java b/android/src/mlkit/java/org/reactnative/camera/tasks/BarcodeDetectorAsyncTask.java
index c16a38111..b4ffb70a2 100644
--- a/android/src/mlkit/java/org/reactnative/camera/tasks/BarcodeDetectorAsyncTask.java
+++ b/android/src/mlkit/java/org/reactnative/camera/tasks/BarcodeDetectorAsyncTask.java
@@ -57,7 +57,7 @@ public BarcodeDetectorAsyncTask(
mBarcodeDetector = barcodeDetector;
mImageDimensions = new ImageDimensions(width, height, rotation, facing);
mScaleX = (double) (viewWidth) / (mImageDimensions.getWidth() * density);
- mScaleY = (double) (viewHeight) / (mImageDimensions.getHeight() * density);
+ mScaleY = 1 / density;
mPaddingLeft = viewPaddingLeft;
mPaddingTop = viewPaddingTop;
}
@@ -130,6 +130,7 @@ private WritableArray serializeEventData(List barcodes) {
String rawValue = barcode.getRawValue();
int valueType = barcode.getValueType();
+ int valueFormat = barcode.getFormat();
WritableMap serializedBarcode = Arguments.createMap();
@@ -278,6 +279,7 @@ private WritableArray serializeEventData(List barcodes) {
serializedBarcode.putString("data", barcode.getDisplayValue());
serializedBarcode.putString("dataRaw", rawValue);
serializedBarcode.putString("type", BarcodeFormatUtils.get(valueType));
+ serializedBarcode.putString("format", BarcodeFormatUtils.getFormat(valueFormat));
serializedBarcode.putMap("bounds", processBounds(bounds));
barcodesList.pushMap(serializedBarcode);
}
@@ -334,11 +336,7 @@ private WritableMap processBounds(Rect frame) {
x = x - mPaddingLeft / 2;
}
- if (frame.top < mHeight / 2) {
- y = y + mPaddingTop / 2;
- } else if (frame.top > mHeight / 2) {
- y = y - mPaddingTop / 2;
- }
+ y = y + mPaddingTop;
origin.putDouble("x", x * mScaleX);
origin.putDouble("y", y * mScaleY);
diff --git a/android/src/mlkit/java/org/reactnative/facedetector/tasks/FileFaceDetectionAsyncTask.java b/android/src/mlkit/java/org/reactnative/facedetector/tasks/FileFaceDetectionAsyncTask.java
index 3125d9565..ca5521f7f 100644
--- a/android/src/mlkit/java/org/reactnative/facedetector/tasks/FileFaceDetectionAsyncTask.java
+++ b/android/src/mlkit/java/org/reactnative/facedetector/tasks/FileFaceDetectionAsyncTask.java
@@ -1,7 +1,7 @@
package org.reactnative.facedetector.tasks;
import android.content.Context;
-import android.support.media.ExifInterface;
+import androidx.exifinterface.media.ExifInterface;
import android.net.Uri;
import android.os.AsyncTask;
import android.util.Log;
diff --git a/docs/API.md b/docs/API.md
index 57a0460bc..155956302 100644
--- a/docs/API.md
+++ b/docs/API.md
@@ -25,11 +25,10 @@ interface TakePictureOptions {
mirrorImage?: boolean;
doNotSave?: boolean;
pauseAfterCapture?: boolean;
+ writeExif?: boolean | { [name: string]: any };
/** Android only */
- skipProcessing?: boolean;
fixOrientation?: boolean;
- writeExif?: boolean;
/** iOS only */
forceUpOrientation?: boolean;
@@ -76,8 +75,6 @@ interface RecordOptions {
mute?: boolean;
mirrorVideo?: boolean;
path?: string;
-
- /** Android only */
videoBitrate?: number;
/** iOS only */
@@ -266,4 +263,4 @@ const isRecording = await isRecording();
} */
```
----
\ No newline at end of file
+---
diff --git a/docs/AndroidXMigration.md b/docs/AndroidXMigration.md
new file mode 100644
index 000000000..25776139f
--- /dev/null
+++ b/docs/AndroidXMigration.md
@@ -0,0 +1,101 @@
+# AndroidX Migration
+
+AndroidX is the replacement for Google Support Libraries. It is the open-source project that the Android team uses to
+develop, test, package, version and release libraries within Jetpack. Moving forward, all new Android development
+will be in AndroidX, the Support Libraries are depreciated.
+
+> AndroidX is a major improvement to the original Android Support Library. Like the Support Library, AndroidX ships separately from the Android OS and provides backwards-compatibility across Android releases. AndroidX fully replaces the Support Library by providing feature parity and new libraries.
+
+See: https://developer.android.com/jetpack/androidx/
+
+## Migration via Android studio
+
+You can follow the instructions [here](https://developer.android.com/jetpack/androidx/migrate) to migrate you existing
+project.
+
+## Manual
+
+#### Update the android section `android/app/build.gradle` to
+
+```
+android {
+ compileSdkVersion 28
+ buildToolsVersion "28.0.3"
+
+ defaultConfig {
+ ...
+ minSdkVersion 16
+ targetSdkVersion 28
+ }
+...
+```
+
+If you have any `dependencies {` that are using the old Google Support Libraries, you'll need to update them
+to use the androidx version. Can check the full migration list [here](https://developer.android.com/jetpack/androidx/migrate).
+
+#### Update `android/app/src/main/AndroidManifest.xml`
+
+remove
+
+```xml
+
+```
+
+#### Update `android/build.gradle`
+
+```
+buildscript {
+ repositories {
+ google()
+ jcenter()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:3.2.1'
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ mavenLocal()
+ google()
+ jcenter()
+ maven { url "https://jitpack.io" }
+ maven {
+ // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
+ url "$rootDir/../node_modules/react-native/android"
+ }
+ }
+}
+
+ext {
+ compileSdkVersion = 28
+ buildToolsVersion = '28.0.3'
+}
+
+subprojects { subproject ->
+ afterEvaluate{
+ if((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) {
+ android {
+ compileSdkVersion rootProject.ext.compileSdkVersion
+ buildToolsVersion rootProject.ext.buildToolsVersion
+ }
+ }
+ }
+}
+```
+
+#### Update `android/gradle.properties`
+
+add
+
+```
+android.enableJetifier = true;
+android.useAndroidX = true;
+```
+
+#### Update `android/gradle/wrapper/gradle-wrapper.properties`
+
+make sure your gradle `distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip`
diff --git a/docs/RNCamera.md b/docs/RNCamera.md
index eb28fb65c..4e0eb8a5f 100644
--- a/docs/RNCamera.md
+++ b/docs/RNCamera.md
@@ -82,7 +82,7 @@ const styles = StyleSheet.create({
},
});
-AppRegistry.registerComponent('ExampleApp', () => ExampleApp);
+AppRegistry.registerComponent('App', () => ExampleApp);
```
## FaCC (Function as Child Components)
@@ -174,7 +174,7 @@ const styles = StyleSheet.create({
},
});
-AppRegistry.registerComponent('ExampleApp', () => ExampleApp);
+AppRegistry.registerComponent('App', () => ExampleApp);
```
### `camera`
@@ -206,14 +206,23 @@ Use the `autoFocus` property to specify the auto focus setting of your camera. `
### `autoFocusPointOfInterest`
Values: Object `{ x: 0.5, y: 0.5 }`.
+Values (iOS): Object `{ x: 0.5, y: 0.5, autoExposure }`.
Setting this property causes the auto focus feature of the camera to attempt to focus on the part of the image at this coordiate.
Coordinates values are measured as floats from `0` to `1.0`. `{ x: 0, y: 0 }` will focus on the top left of the image, `{ x: 1, y: 1 }` will be the bottom right. Values are based on landscape mode with the home button on the right—this applies even if the device is in portrait mode.
+On iOS, focusing will not change the exposure automatically unless autoExposure is also set to true.
+
Hint:
for portrait orientation, apply 90° clockwise rotation + translation: [Example](https://gist.github.com/Craigtut/6632a9ac7cfff55e74fb561862bc4edb)
+
+### iOS `onSubjectAreaChanged`
+iOS only.
+
+if autoFocusPointOfInterest is set, this event will be fired when a substancial change is detected with the following object: `{ nativeEvent: { prevPoint: { x: number; y: number; } } }`
+
### `captureAudio`
Values: boolean `true` (default) | `false`
@@ -221,6 +230,12 @@ Values: boolean `true` (default) | `false`
Specifies if audio recording permissions should be requested.
Make sure to follow README instructions for audio recording permissions [here](README.md).
+### iOS `keepAudioSession`
+
+Values: boolean `true` | `false` (false)
+
+(iOS Only) When the camera is unmounted, it will release any audio session it acquired (if `captureAudio=true`) so other media can continue playing. However, this might not be always desirable (e.g., if video is played afterwards) and can be disabled by setting it to `true`. Setting this to `true`, means your app will not release the audio session. Note: other apps might still "steal" the audio session from your app.
+
### `flashMode`
Values: `RNCamera.Constants.FlashMode.off` (default), `RNCamera.Constants.FlashMode.on`, `RNCamera.Constants.FlashMode.auto` or `RNCamera.Constants.FlashMode.torch`.
@@ -253,6 +268,14 @@ Values: `RNCamera.Constants.Type.front` or `RNCamera.Constants.Type.back` (defau
Use the `type` property to specify which camera to use.
+### `Android` `cameraId`
+
+Overrides the `type` property and uses the camera given by cameraId. Use `getCameraIds` to get the list of available IDs.
+
+A common use case for this is to provide a "switch camera" button that loops through all available cameras.
+
+Note: Variables such as flash might need to be resetted due to the camera not reporting an error when those values are not supported.
+
### `whiteBalance`
Values: `RNCamera.Constants.WhiteBalance.sunny`, `RNCamera.Constants.WhiteBalance.cloudy`, `RNCamera.Constants.WhiteBalance.shadow`, `RNCamera.Constants.WhiteBalance.incandescent`, `RNCamera.Constants.WhiteBalance.fluorescent` or `RNCamera.Constants.WhiteBalance.auto` (default)
@@ -269,6 +292,14 @@ Value: float from `0` to `1.0`
Specifies the zoom of your camera. The value 0 is no zoom, 1 is maximum zoom. For a medium zoom, for example, you could pass `0.5`.
+### `iOS` `maxZoom`
+
+iOS Only.
+
+Value: optional float greater than `1.0` used to enforce a maximum zoom value on the camera. Setting a value to less than `1` (default) will make the camera use its own max zoom property.
+
+Specifies the max zoom value used in zoom calculations. This is specifically useful for iOS where it reports arbitrary high values and using a 0 to 1 value as the zoom factor is not appropriate.
+
### `Android` `permissionDialogTitle` - Deprecated
Starting on android M individual permissions must be granted for certain services, the camera is one of them, you can use this to change the title of the dialog prompt requesting permissions.
@@ -293,6 +324,10 @@ By default a `Camera not authorized` message will be displayed when access to th
By default a will be displayed while the component is waiting for the user to grant/deny access to the camera, if set displays the passed react element instead of the default one.
+#### `iOS` `rectOfInterest`
+
+An `{x: , y:, width:, height: }` object which defines the rect of interst as normalized coordinates from `(0,0)` top left corner to `(1,1)` bottom right corner.
+
### `iOS` `videoStabilizationMode`
The video stabilization mode used for a video recording. The possible values are:
@@ -304,7 +339,7 @@ The video stabilization mode used for a video recording. The possible values are
You can read more about each stabilization type here: https://developer.apple.com/documentation/avfoundation/avcapturevideostabilizationmode
-### `iOS` `defaultVideoQuality`
+### `defaultVideoQuality`
This option specifies the quality of the video to be taken. The possible values are:
@@ -334,7 +369,7 @@ Note: This solve the flicker video recording issue for iOS
### `onCameraReady`
-Function to be called when native code emit onCameraReady event, when camera is ready.
+Function to be called when native code emit onCameraReady event, when camera is ready. This event will also fire when changing cameras (by `type` or `cameraId`).
### `onMountError`
@@ -349,9 +384,18 @@ Event contains the following fields:
- `cameraStatus` - one of the [CameraStatus](#status) values
- `recordAudioPermissionStatus` - one of the [RecordAudioPermissionStatus](#recordAudioPermissionStatus) values
-### `Android` `onPictureTaken`
+### `iOS` `onAudioInterrupted`
+
+iOS only. Function to be called when the camera audio session is interrupted or fails to start for any reason (e.g., in use or not authorized). For example, this might happen due to another app taking exclusive control over the microphone (e.g., a phone call) if `captureAudio={true}`. When this happens, any active audio input will be temporarily disabled and cause a flicker on the preview screen. This will fire any time an attempt to connect the audio device fails. Use this to update your UI to indicate that audio recording is not currently possible.
+
+### `iOS` `onAudioConnected`
-Function to be called when native code emit onPictureTaken event, when camera has taken a picture.
+iOS only. Function to be called when the camera audio session is connected. This will be fired the first time the camera is mounted with `captureAudio={true}`, and any time the audio device connection is established. Note that this event might not always fire after an interruption due to iOS' behavior. For example, if the audio was already interrupted before the camera was mounted, this event will only fire once a recording is attempted.
+
+
+### `onPictureTaken`
+
+Function to be called when native code emit onPictureTaken event, when camera has taken a picture, but before all extra processing happens. This can be useful to allow the UI to take other pictures while the processing of the current picture is still taking place.
### Bar Code Related props
@@ -379,18 +423,24 @@ Event contains the following fields
}
}
- - onAndroid:
+ - onAndroid: the `ResultPoint[]` (`bounds.origin`) is returned for scanned barcode origins. The number of `ResultPoint` returned depends on the type of Barcode.
- bounds:[{x:string,y:string}]
- - on Android it just returns resultPoints:
- - for barcodes:
+ bounds: {
+ width: number;
+ height: number;
+ origin: Array<{x: number, y: number}>
+ }
- bounds[0].x : left side of barcode.
- bounds[1].x : right side of barcode
- - counting for QRcodes:
+ 1. **PDF417**: 8 ResultPoint, laid out as follow:
+ 0 --- 4 ------ 6 --- 2
+ | ////////////////// |
+ 1 --- 5 ------ 7 --- 3
- 1 2
- 0
+ 2. **QR**: 4 ResultPoint, laid out as follow:
+ 2 ------ 3
+ | //////
+ | //////
+ 1 ------ 0
The following barcode types can be recognised:
@@ -486,7 +536,7 @@ Method to be called when text is detected. Receives a Text Recognized Event obje
### `takePictureAsync([options]): Promise`
-Takes a picture, saves in your app's cache directory and returns a promise.
+Takes a picture, saves in your app's cache directory and returns a promise. Note: additional image processing, such as mirror, orientation, and width, can be significantly slow on Android.
Supported options:
@@ -498,14 +548,21 @@ Supported options:
- `mirrorImage` (boolean true or false). Use this with `true` if you want the resulting rendered picture to be mirrored (inverted in the vertical axis). If no value is specified `mirrorImage:false` is used.
+- `writeExif`: (boolean or object, defaults to true). Setting this to a boolean indicates if the image exif should be preserved after capture, or removed. Setting it to an object, merges any data with the final exif output. This is useful, for example, to add GPS metadata (note that GPS info is correctly transalted from double values to the EXIF format, so there's no need to read the EXIF protocol).
+```js
+writeExif = {
+ "GPSLatitude": latitude,
+ "GPSLongitude": longitude,
+ "GPSAltitude": altitude
+}
+```
+
- `exif` (boolean true or false) Use this with `true` if you want a exif data map of the picture taken on the return data of your promise. If no value is specified `exif:false` is used.
- `fixOrientation` (android only, boolean true or false) Use this with `true` if you want to fix incorrect image orientation (can take up to 5 seconds on some devices). Do not provide this if you only need EXIF based orientation.
- `forceUpOrientation` (iOS only, boolean true or false). This property allows to force portrait orientation based on actual data instead of exif data.
-- `skipProcessing` (android only, boolean). This property skips all image processing on android, this makes taking photos super fast, but you loose some of the information, width, height and the ability to do some processing on the image (base64, width, quality, mirrorImage, exif, etc)
-
- `doNotSave` (boolean true or false). Use this with `true` if you do not want the picture to be saved as a file to cache. If no value is specified `doNotSave:false` is used. If you only need the base64 for the image, you can use this with `base64:true` and avoid having to save the file.
- `pauseAfterCapture` (boolean true or false). If true, pause the preview layer immediately after capturing the image. You will need to call `cameraRef.resumePreview()` before using the camera again. If no value is specified `pauseAfterCapture:false` is used.
@@ -551,7 +608,7 @@ Supported options:
- `videoBitrate`. (int greater than 0) This option specifies a desired video bitrate. For example, 5\*1000\*1000 would be 5Mbps.
- - `ios` Not supported.
+ - `ios` Supported however requires that the codec key is also set.
- `android` Supported.
- `orientation` (string or number). Specifies the orientation that us used for recording the video. Possible values: `"portrait"`, `"portraitUpsideDown"`, `"landscapeLeft"` or `"landscapeRight"`.
@@ -592,7 +649,7 @@ The promise will be fulfilled with an object with some of the following properti
### `refreshAuthorizationStatus: Promise`
-Allows to make RNCamera check Permissions again and set status accordingly.
+Allows to make RNCamera check Permissions again and set status accordingly.
Making it possible to refresh status of RNCamera after user initially rejected the permissions.
### `stopRecording: void`
@@ -611,6 +668,20 @@ Resumes the preview after pausePreview() has been called.
Android only. Returns a promise. The promise will be fulfilled with an object with an array containing strings with all camera aspect ratios supported by the device.
+### `getCameraIdsAsync(): Promise`
+
+Returns a promise. The promise will be fulfilled with an array containing objects with all camera IDs and type supported by the device.
+
+The promise will be fulfilled with an array containing objects with some of the following properties:
+
+- `id`: (string) the ID of the camera.
+
+- `type`: One of `RNCamera.Constants.Type.front` | `RNCamera.Constants.Type.back`
+
+- `deviceType`: iOS 10+ only. Returns the internal device string type used by the OS. Useful to identify camera types (e.g., wide). Constants match iOS' string values: `AVCaptureDeviceTypeBuiltInWideAngleCamera`, `AVCaptureDeviceTypeBuiltInTelephotoCamera`, `AVCaptureDeviceTypeBuiltInUltraWideCamera`. More info can be found at Apple Docs
+
+Note: iOS also allows for virtual cameras (e.g., a camera made of multiple cameras). However, only physical non-virtual cameras are returned by this method since advanced features (such as depth maps or auto switching on camera zoom) are not supported.
+
### `iOS` `isRecording(): Promise`
iOS only. Returns a promise. The promise will be fulfilled with a boolean indicating if currently recording is started or stopped.
@@ -627,6 +698,14 @@ A Barcode and QR code UI mask which can be use to render a scanning layout on ca
Read more about [react-native-barcode-mask](https://github.com/shahnawaz/react-native-barcode-mask) here.
+### @nartc/react-native-barcode-mask
+
+A rewritten version of `react-native-barcode-mask` using `Hooks` and `Reanimated`. If you're already using `react-native-reanimated` (`react-navigation` dependency) then you might benefit from this rewritten component.
+- Customizable
+- Provide custom hook to "scan barcode within finder area"
+
+Read more about it here [@nartc/react-native-barcode-mask](https://github.com/nartc/react-native-barcode-mask)
+
## Testing
To learn about how to test components which uses `RNCamera` check its [documentation about testing](./tests.md).
diff --git a/docs/Tidelift.md b/docs/Tidelift.md
new file mode 100644
index 000000000..9ac8b51c3
--- /dev/null
+++ b/docs/Tidelift.md
@@ -0,0 +1,56 @@
+---
+id: Tidelift
+title: React-Native-Camera for Enterprise
+---
+
+## React-Native-Camera for Enterprise
+
+### Available as part of the Tidelift Subscription
+
+**Tidelift** is working with the maintainers of **React-Native-Camera** and thousands of other open source projects to deliver
+commercial support and maintenance for the open source dependencies you use to build your applications.
+Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use.
+
+[LEARN MORE](https://tidelift.com/subscription/pkg/npm-react-native-camera?utm_source=npm-react-native-camera&utm_medium=referral&utm_campaign=enterprise)
+
+[REQUEST A DEMO](https://tidelift.com/subscription/request-a-demo?utm_source=npm-react-native-camera&utm_medium=referral&utm_campaign=enterprise)
+
+### Enterprise-ready open source software - managed for you
+
+The Tidelift Subscription is a managed open source subscription for application dependencies covering millions
+of open source projects across JavaScript, Python, Java, PHP, Ruby, .NET, and more.
+
+Your subscription includes:
+
+* **Security updates**
+Tidelift’s security response team coordinates patches for new breaking security vulnerabilities and alerts
+immediately through a private channel, so your software supply chain is always secure.
+
+* **Licensing verification and indemnification**
+Tidelift verifies license information to enable easy policy enforcement and adds intellectual property
+indemnification to cover creators and users in case something goes wrong. You always have a 100% up-to-date
+bill of materials for your dependencies to share with your legal team, customers, or partners.
+
+* **Maintenance and code improvement**
+Tidelift ensures the software you rely on keeps working as long as you need it to work.
+Your managed dependencies are actively maintained and we recruit additional maintainers where required.
+
+* **Package selection and version guidance**
+We help you choose the best open source packages from the start—and then guide you through updates to stay on
+the best releases as new issues arise.
+
+* **Roadmap input**
+Take a seat at the table with the creators behind the software you use. Tidelift’s participating maintainers
+earn more income as their software is used by more subscribers, so they’re interested in knowing what you need.
+
+* **Tooling and cloud integration**
+Tidelift works with GitHub, GitLab, BitBucket, and more.
+We support every cloud platform (and other deployment targets, too).
+
+The end result? All of the capabilities you expect from commercial-grade software, for the full breadth
+of open source you use. That means less time grappling with esoteric open source trivia, and more
+time building your own applications—and your business.
+
+[LEARN MORE](https://tidelift.com/subscription/pkg/npm-react-native-camera?utm_source=npm-react-native-camera&utm_medium=referral&utm_campaign=enterprise)
+
+[REQUEST A DEMO](https://tidelift.com/subscription/request-a-demo?utm_source=npm-react-native-camera&utm_medium=referral&utm_campaign=enterprise)
diff --git a/docs/installation.md b/docs/installation.md
index 13067fcec..41abae04a 100644
--- a/docs/installation.md
+++ b/docs/installation.md
@@ -3,15 +3,67 @@ id: installation
title: Installation
---
-## Requirements
+This document is split into two main sections:
+1. Required installation steps for basic usage of `react-native-camera`
+2. Additional installation steps for usage of Face Detection/Text Recognition/BarCode with [MLKit](https://developers.google.com/ml-kit)
-1. JDK >= 1.7 (if you run on 1.6 you will get an error on "\_cameras = new HashMap<>();")
-2. With iOS 10 and higher you need to add the "Privacy - Camera Usage Description" key to the Info.plist of your project. This should be found in 'your_project/ios/your_project/Info.plist'. Add the following code:
+# Required installation steps
-```
+_These steps assume installation for iOS/Android. To install it with Windows, see manual install [below](#windows)_
+
+## Mostly automatic install with autolinking (RN > 0.60)
+
+1. `npm install react-native-camera --save`
+2. Run `cd ios && pod install && cd ..`
+
+## Mostly automatic install with react-native link (RN < 0.60)
+
+1. `npm install react-native-camera --save`
+2. `react-native link react-native-camera`
+
+## Manual install - iOS (not recommended)
+
+1. `npm install react-native-camera --save`
+2. In XCode, in the project navigator, right click `Libraries` ➜ `Add Files to [your project's name]`
+3. Go to `node_modules` ➜ `react-native-camera` and add `RNCamera.xcodeproj`
+4. Expand the `RNCamera.xcodeproj` ➜ `Products` folder
+5. In XCode, in the project navigator, select your project. Add `libRNCamera.a` to your project's `Build Phases` ➜ `Link Binary With Libraries`
+6. Click `RNCamera.xcodeproj` in the project navigator and go the `Build Settings` tab. Make sure 'All' is toggled on (instead of 'Basic'). In the `Search Paths` section, look for `Header Search Paths` and make sure it contains both `$(SRCROOT)/../../react-native/React` and `$(SRCROOT)/../../../React` - mark both as `recursive`.
+
+## Manual install - Android (not recommended)
+
+1. `npm install react-native-camera --save`
+2. Open up `android/app/src/main/java/[...]/MainApplication.java`
+
+- Add `import org.reactnative.camera.RNCameraPackage;` to the imports at the top of the file
+- Add `new RNCameraPackage()` to the list returned by the `getPackages()` method. Add a comma to the previous item if there's already something there.
+
+3. Append the following lines to `android/settings.gradle`:
+
+ ```gradle
+ include ':react-native-camera'
+ project(':react-native-camera').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-camera/android')
+ ```
+
+4. Insert the following lines in `android/app/build.gradle` inside the dependencies block:
+
+ ```gradle
+ implementation project(':react-native-camera')
+ ```
+
+## iOS - other required steps
+
+Add permissions with usage descriptions to your app `Info.plist`:
+
+```xml
+
NSCameraUsageDescription
Your message to user when the camera is accessed for the first time
+
+NSPhotoLibraryAddUsageDescription
+Your message to user when the photo library is accessed for the first time
+
NSPhotoLibraryUsageDescription
Your message to user when the photo library is accessed for the first time
@@ -21,119 +73,130 @@ title: Installation
Your message to user when the microphone is accessed for the first time
```
-3. On Android, you require `buildToolsVersion` of `25.0.2+`. _This should easily and automatically be downloaded by Android Studio's SDK Manager._
+
+ Additional information in case of problems
-4. On iOS 11 and later you need to add `NSPhotoLibraryAddUsageDescription` key to the Info.plist. This key lets you describe the reason your app seeks write-only access to the user’s photo library. Info.plist can be found in 'your_project/ios/your_project/Info.plist'. Add the following code:
+ You might need to adjust your Podfile following the example below:
-```
-
-NSPhotoLibraryAddUsageDescription
-Your message to user when the photo library is accessed for the first time
-```
+ ```ruby
+ target 'yourTargetName' do
+ # See http://facebook.github.io/react-native/docs/integration-with-existing-apps.html#configuring-cocoapods-dependencies
+ pod 'React', :path => '../node_modules/react-native', :subspecs => [
+ 'Core',
+ 'CxxBridge', # Include this for RN >= 0.47
+ 'DevSupport', # Include this to enable In-App Devmenu if RN >= 0.43
+ 'RCTText',
+ 'RCTNetwork',
+ 'RCTWebSocket', # Needed for debugging
+ 'RCTAnimation', # Needed for FlatList and animations running on native UI thread
+ # Add any other subspecs you want to use in your project
+ ]
-## Mostly automatic install with react-native
+ # Explicitly include Yoga if you are using RN >= 0.42.0
+ pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
-1. `npm install react-native-camera --save`
-2. `react-native link react-native-camera`
- _To install it with Windows, see manual install below_
+ # Third party deps podspec link
+ pod 'react-native-camera', path: '../node_modules/react-native-camera'
-## Mostly automatic install with CocoaPods
+ end
-1. `npm install react-native-camera --save`
-2. Add the plugin dependency to your Podfile, pointing at the path where NPM installed it:
+ post_install do |installer|
+ installer.pods_project.targets.each do |target|
+ if target.name == "React"
+ target.remove_from_project
+ end
+ end
+ end
+ ```
+
-```obj-c
-pod 'react-native-camera', path: '../node_modules/react-native-camera'
-```
+## Android - other required steps
-3. Run `pod install`
+Add permissions to your app `android/app/src/main/AndroidManifest.xml` file:
-_Note:_ You might need to adjust your Podfile following the example below:
+```xml
+
+
-```ruby
-target 'yourTargetName' do
- # See http://facebook.github.io/react-native/docs/integration-with-existing-apps.html#configuring-cocoapods-dependencies
- pod 'React', :path => '../node_modules/react-native', :subspecs => [
- 'Core',
- 'CxxBridge', # Include this for RN >= 0.47
- 'DevSupport', # Include this to enable In-App Devmenu if RN >= 0.43
- 'RCTText',
- 'RCTNetwork',
- 'RCTWebSocket', # Needed for debugging
- 'RCTAnimation', # Needed for FlatList and animations running on native UI thread
- # Add any other subspecs you want to use in your project
- ]
-
- # Explicitly include Yoga if you are using RN >= 0.42.0
- pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
-
- # Third party deps podspec link
- pod 'react-native-camera', path: '../node_modules/react-native-camera'
-
-end
-
-post_install do |installer|
- installer.pods_project.targets.each do |target|
- if target.name == "React"
- target.remove_from_project
- end
- end
-end
+
+
+
+
+
+
```
-## Manual install
+Insert the following lines in `android/app/build.gradle`:
-## iOS
+```gradle
+android {
+ ...
+ defaultConfig {
+ ...
+ missingDimensionStrategy 'react-native-camera', 'general' // <--- insert this line
+ }
+}
+```
-1. `npm install react-native-camera --save`
-2. In XCode, in the project navigator, right click `Libraries` ➜ `Add Files to [your project's name]`
-3. Go to `node_modules` ➜ `react-native-camera` and add `RNCamera.xcodeproj`
-4. Expand the `RNCamera.xcodeproj` ➜ `Products` folder
-5. In XCode, in the project navigator, select your project. Add `libRNCamera.a` to your project's `Build Phases` ➜ `Link Binary With Libraries`
-6. Click `RNCamera.xcodeproj` in the project navigator and go the `Build Settings` tab. Make sure 'All' is toggled on (instead of 'Basic'). In the `Search Paths` section, look for `Header Search Paths` and make sure it contains both `$(SRCROOT)/../../react-native/React` and `$(SRCROOT)/../../../React` - mark both as `recursive`.
+
+ Additional information in case of problems
-### Face Detection/Text Recognition/BarCode(using MLKit) Steps
+ 1. Make sure you use `JDK >= 1.7` and your `buildToolsVersion >= 25.0.2`
-Face Detection/Text Recognition/BarCode(using MLKit) are optional on iOS. If you want them, you will need to use CocoaPods path and set-up Firebase project for your app (detailed steps below).
+ 2. Make sure you have jitpack added in `android/build.gradle`
-_Note:_ Installing react-native-firebase package is NOT necessary.
+ ```gradle
+ allprojects {
+ repositories {
+ maven { url "https://www.jitpack.io" }
+ maven { url "https://maven.google.com" }
+ }
+ }
+ ```
+
-### Modifying Podfile
+# Additional installation steps
-Modify the dependency towards `react-native-camera` in your
-`Podfile`, from
+Follow these optional steps if you want to use Face Detection/Text Recognition/BarCode with [MLKit](https://developers.google.com/ml-kit).
+You will need to set-up Firebase project for your app (detailed steps below).
-```
-pod 'react-native-camera', path: '../node_modules/react-native-camera'
-```
+_Note:_ Installing [react-native-firebase](https://github.com/invertase/react-native-firebase) package is NOT necessary.
-to (for Face Detection)
+## iOS
-```
+If you want any of these optional features, you will need to use CocoaPods.
+
+### Modifying Podfile
+
+Add dependency towards `react-native-camera` in your `Podfile` with `subspecs` using one of the following:
+
+* For Face Detection:
+
+```ruby
pod 'react-native-camera', path: '../node_modules/react-native-camera', subspecs: [
'FaceDetectorMLKit'
]
```
-or to (for Text Recognition)
+* For Text Recognition:
-```
+```ruby
pod 'react-native-camera', path: '../node_modules/react-native-camera', subspecs: [
'TextDetector'
]
```
-or to (for Barcode Recognition)
+* For BarCode Recognition:
-```
+```ruby
pod 'react-native-camera', path: '../node_modules/react-native-camera', subspecs: [
'BarcodeDetectorMLKit'
]
```
-or to (all possible detections)
+* For all possible detections:
-```
+```ruby
pod 'react-native-camera', path: '../node_modules/react-native-camera', subspecs: [
'TextDetector',
'FaceDetectorMLKit',
@@ -141,7 +204,9 @@ pod 'react-native-camera', path: '../node_modules/react-native-camera', subspecs
]
```
-## Setting up Firebase
+Then run `cd ios && pod install && cd ..`
+
+### Setting up Firebase
Text/Face recognition for iOS uses Firebase MLKit which requires setting up Firebase project for your app.
If you have not already added Firebase to your app, please follow the steps described in [getting started guide](https://firebase.google.com/docs/ios/setup).
@@ -163,250 +228,207 @@ In short, you would need to
}
```
-- If you have issues with duplicate symbols you will need to enable dead code stripping option in your Xcode (Target > Build Settings > search for "Dead code stripping") [see here](https://github.com/firebase/quickstart-ios/issues/487#issuecomment-415313053).
-- If you are using `pod Firebase/Core` with a version set below 5.13 you might want to add `pod 'GoogleAppMeasurement', '~> 5.3.0'` to your podfile
-
-### Android
-
-1. `npm install react-native-camera --save`
-2. Open up `android/app/src/main/java/[...]/MainApplication.java`
-
-- Add `import org.reactnative.camera.RNCameraPackage;` to the imports at the top of the file
-- Add `new RNCameraPackage()` to the list returned by the `getPackages()` method. Add a comma to the previous item if there's already something there.
-
-3. Append the following lines to `android/settings.gradle`:
+
+ Additional information in case of problems
- ```gradle
- include ':react-native-camera'
- project(':react-native-camera').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-camera/android')
- ```
+ - If you have issues with duplicate symbols you will need to enable dead code stripping option in your Xcode (Target > Build Settings > search for "Dead code stripping") [see here](https://github.com/firebase/quickstart-ios/issues/487#issuecomment-415313053).
+ - If you are using `pod Firebase/Core` with a version set below 5.13 you might want to add `pod 'GoogleAppMeasurement', '~> 5.3.0'` to your podfile
+
-4. Insert the following lines in `android/app/build.gradle`:
-inside the dependencies block:
+## Android
- ```gradle
- implementation project(':react-native-camera')
- ```
+### Modifying build.gradle
-inside defaultConfig block insert either:
+Modify the following lines in `android/app/build.gradle`:
```gradle
android {
...
defaultConfig {
...
- missingDimensionStrategy 'react-native-camera', 'general' <-- insert this line
+ missingDimensionStrategy 'react-native-camera', 'mlkit' // <--- replace general with mlkit
}
}
```
-or, if using MLKit for text/face/barcode recognition:
+### Setting up Firebase
+
+Using Firebase MLKit requires seting up Firebase project for your app. If you have not already added Firebase to your app, please follow the steps described in [getting started guide](https://firebase.google.com/docs/android/setup).
+In short, you would need to
+
+1. Register your app in Firebase console.
+2. Download google-services.json and place it in `android/app/`
+3. Add the folowing to project level `build.gradle`:
```gradle
-android {
- ...
- defaultConfig {
- ...
- missingDimensionStrategy 'react-native-camera', 'mlkit' <-- insert this line
+buildscript {
+ dependencies {
+ // Add this line
+ classpath 'com.google.gms:google-services:4.0.1' // <--- you might want to use different version
}
}
```
-5. Declare the permissions in your Android Manifest (required for `video recording` feature)
-
-```xml
-
-
-
-```
-
-6. Add jitpack to android/build.gradle
+4. add to the bottom of `android/app/build.gradle` file
```gradle
-allprojects {
- repositories {
- maven { url "https://jitpack.io" }
- maven { url "https://maven.google.com" }
- }
-}
+apply plugin: 'com.google.gms.google-services'
```
-7. Additional steps for using MLKit for text/face/barcode recognition
+5. Configure your app to automatically download the ML model to the device after your app is installed from the Play Store. If you do not enable install-time model downloads, the model will be downloaded the first time you run the on-device detector. Requests you make before the download has completed will produce no results.
- 7.1. Using Firebase MLKit requires seting up Firebase project for your app. If you have not already added Firebase to your app, please follow the steps described in [getting started guide](https://firebase.google.com/docs/android/setup).
- In short, you would need to
-
- - Register your app in Firebase console.
- - Download google-services.json and place it in `android/app/`
- - add the folowing to project level build.gradle:
-
- ```gradle
- buildscript {
- dependencies {
- // Add this line
- classpath 'com.google.gms:google-services:4.0.1' <-- you might want to use different version
- }
- }
- ```
-
- - add to the bottom of `android/app/build.gradle` file
-
- ```gradle
- apply plugin: 'com.google.gms.google-services'
- ```
-
- 7.2. Configure your app to automatically download the ML model to the device after your app is installed from the Play Store. If you do not enable install-time model downloads, the model will be downloaded the first time you run the on-device detector. Requests you make before the download has completed will produce no results.
-
- ```xml
-
- ...
-
-
-
- ```
-
-The current Android library defaults to the below values for the Google SDK and Libraries,
-
-```gradle
-def DEFAULT_COMPILE_SDK_VERSION = 26
-def DEFAULT_BUILD_TOOLS_VERSION = "26.0.2"
-def DEFAULT_TARGET_SDK_VERSION = 26
-def DEFAULT_GOOGLE_PLAY_SERVICES_VERSION = "12.0.1"
-def DEFAULT_SUPPORT_LIBRARY_VERSION = "27.1.0"
+```xml
+
+...
+
+
```
-You can override this settings by adding a Project-wide gradle configuration properties for
-use by all modules in your ReactNative project by adding the below to `android/build.gradle`
-file,
+
+ Additional information in case of problems
+ The current Android library defaults to the below values for the Google SDK and Libraries,
+
+ ```gradle
+ def DEFAULT_COMPILE_SDK_VERSION = 26
+ def DEFAULT_BUILD_TOOLS_VERSION = "26.0.2"
+ def DEFAULT_TARGET_SDK_VERSION = 26
+ def DEFAULT_GOOGLE_PLAY_SERVICES_VERSION = "12.0.1"
+ def DEFAULT_SUPPORT_LIBRARY_VERSION = "27.1.0"
+ ```
+
+ You can override this settings by adding a Project-wide gradle configuration properties for
+ use by all modules in your ReactNative project by adding the below to `android/build.gradle`
+ file,
+
+ ```gradle
+ buildscript {...}
+
+ allprojects {...}
+
+ /**
+ * Project-wide gradle configuration properties for use by all modules
+ */
+ ext {
+ compileSdkVersion = 26
+ targetSdkVersion = 26
+ buildToolsVersion = "26.0.2"
+ googlePlayServicesVersion = "12.0.1"
+ googlePlayServicesVisionVersion = "15.0.2"
+ supportLibVersion = "27.1.0"
+ }
+ ```
-```gradle
-buildscript {...}
-
-allprojects {...}
-
-/**
-* Project-wide gradle configuration properties for use by all modules
-*/
-ext {
- compileSdkVersion = 26
- targetSdkVersion = 26
- buildToolsVersion = "26.0.2"
- googlePlayServicesVersion = "12.0.1"
- googlePlayServicesVisionVersion = "15.0.2"
- supportLibVersion = "27.1.0"
-}
-```
+ The above settings in the ReactNative project over-rides the values present in the `react-native-camera`
+ module. For your reference below is the `android/build.gradle` file of the module.
-The above settings in the ReactNative project over-rides the values present in the `react-native-camera`
-module. For your reference below is the `android/build.gradle` file of the module.
+ ```gradle
+ def safeExtGet(prop, fallback) {
+ rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
+ }
-```gradle
-def safeExtGet(prop, fallback) {
- rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
-}
+ buildscript {
+ repositories {
+ google()
+ maven {
+ url 'https://maven.google.com'
+ }
+ jcenter()
+ }
-buildscript {
- repositories {
- google()
- maven {
- url 'https://maven.google.com'
+ dependencies {
+ classpath 'com.android.tools.build:gradle:3.3.1'
}
- jcenter()
}
- dependencies {
- classpath 'com.android.tools.build:gradle:3.3.1'
- }
-}
+ apply plugin: 'com.android.library'
-apply plugin: 'com.android.library'
+ android {
+ compileSdkVersion safeExtGet('compileSdkVersion', 28)
+ buildToolsVersion safeExtGet('buildToolsVersion', '28.0.3')
-android {
- compileSdkVersion safeExtGet('compileSdkVersion', 28)
- buildToolsVersion safeExtGet('buildToolsVersion', '28.0.3')
+ defaultConfig {
+ minSdkVersion safeExtGet('minSdkVersion', 16)
+ targetSdkVersion safeExtGet('targetSdkVersion', 28)
+ }
- defaultConfig {
- minSdkVersion safeExtGet('minSdkVersion', 16)
- targetSdkVersion safeExtGet('targetSdkVersion', 28)
- }
+ flavorDimensions "react-native-camera"
- flavorDimensions "react-native-camera"
+ productFlavors {
+ general {
+ dimension "react-native-camera"
+ }
+ mlkit {
+ dimension "react-native-camera"
+ }
+ }
- productFlavors {
- general {
- dimension "react-native-camera"
+ sourceSets {
+ main {
+ java.srcDirs = ['src/main/java']
+ }
+ general {
+ java.srcDirs = ['src/general/java']
+ }
+ mlkit {
+ java.srcDirs = ['src/mlkit/java']
+ }
}
- mlkit {
- dimension "react-native-camera"
+
+ lintOptions {
+ abortOnError false
+ warning 'InvalidPackage'
}
}
- sourceSets {
- main {
- java.srcDirs = ['src/main/java']
- }
- general {
- java.srcDirs = ['src/general/java']
+ repositories {
+ google()
+ jcenter()
+ maven {
+ url 'https://maven.google.com'
}
- mlkit {
- java.srcDirs = ['src/mlkit/java']
+ maven { url "https://jitpack.io" }
+ maven {
+ // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
+ url "$rootDir/../node_modules/react-native/android"
}
}
- lintOptions {
- abortOnError false
- warning 'InvalidPackage'
- }
-}
-
-repositories {
- google()
- jcenter()
- maven {
- url 'https://maven.google.com'
+ dependencies {
+ def googlePlayServicesVisionVersion = safeExtGet('googlePlayServicesVisionVersion', safeExtGet('googlePlayServicesVersion', '17.0.2'))
+
+ implementation 'com.facebook.react:react-native:+'
+ implementation "com.google.zxing:core:3.3.3"
+ implementation "com.drewnoakes:metadata-extractor:2.11.0"
+ generalImplementation "com.google.android.gms:play-services-vision:$googlePlayServicesVisionVersion"
+ implementation "com.android.support:exifinterface:${safeExtGet('supportLibVersion', '28.0.0')}"
+ implementation "com.android.support:support-annotations:${safeExtGet('supportLibVersion', '28.0.0')}"
+ implementation "com.android.support:support-v4:${safeExtGet('supportLibVersion', '28.0.0')}"
+ mlkitImplementation "com.google.firebase:firebase-ml-vision:${safeExtGet('firebase-ml-vision', '19.0.3')}"
+ mlkitImplementation "com.google.firebase:firebase-ml-vision-face-model:${safeExtGet('firebase-ml-vision-face-model', '17.0.2')}"
}
- maven { url "https://jitpack.io" }
- maven {
- // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
- url "$rootDir/../node_modules/react-native/android"
+ ```
+
+ If you are using a version of `googlePlayServicesVersion` that does not have `play-services-vision`, you can specify a different version of `play-services-vision` by adding `googlePlayServicesVisionVersion` to the project-wide properties
+
+ ```gradle
+ ext {
+ compileSdkVersion = 26
+ targetSdkVersion = 26
+ buildToolsVersion = "26.0.2"
+ googlePlayServicesVersion = "16.0.1"
+ googlePlayServicesVisionVersion = "15.0.2"
+ supportLibVersion = "27.1.0"
}
-}
-
-dependencies {
- def googlePlayServicesVisionVersion = safeExtGet('googlePlayServicesVisionVersion', safeExtGet('googlePlayServicesVersion', '17.0.2'))
-
- implementation 'com.facebook.react:react-native:+'
- implementation "com.google.zxing:core:3.3.3"
- implementation "com.drewnoakes:metadata-extractor:2.11.0"
- generalImplementation "com.google.android.gms:play-services-vision:$googlePlayServicesVisionVersion"
- implementation "com.android.support:exifinterface:${safeExtGet('supportLibVersion', '28.0.0')}"
- implementation "com.android.support:support-annotations:${safeExtGet('supportLibVersion', '28.0.0')}"
- implementation "com.android.support:support-v4:${safeExtGet('supportLibVersion', '28.0.0')}"
- mlkitImplementation "com.google.firebase:firebase-ml-vision:${safeExtGet('firebase-ml-vision', '19.0.3')}"
- mlkitImplementation "com.google.firebase:firebase-ml-vision-face-model:${safeExtGet('firebase-ml-vision-face-model', '17.0.2')}"
-}
-```
-
-If you are using a version of `googlePlayServicesVersion` that does not have `play-services-vision`, you can specify a different version of `play-services-vision` by adding `googlePlayServicesVisionVersion` to the project-wide properties
-
-```
-ext {
- compileSdkVersion = 26
- targetSdkVersion = 26
- buildToolsVersion = "26.0.2"
- googlePlayServicesVersion = "16.0.1"
- googlePlayServicesVisionVersion = "15.0.2"
- supportLibVersion = "27.1.0"
-}
-```
+ ```
+
-### Windows
+# Windows
1. `npm install react-native-camera --save`
-2. Link the library as described here: [react-native-windows / LinkingLibrariesWindows.md](https://github.com/Microsoft/react-native-windows/blob/master/docs/LinkingLibrariesWindows.md)
+2. Link the library as described here: [react-native-windows / LinkingLibrariesWindows.md](https://github.com/microsoft/react-native-windows/blob/master/current/docs/LinkingLibrariesWindows.md)
For the last step of this guide, you have to add the following things to your `MainReactNativeHost.cs`:
- in the import section at the very top: `using RNCamera;`
diff --git a/docs/react-navigation.md b/docs/react-navigation.md
index 796ebfbe3..cc66fa78f 100644
--- a/docs/react-navigation.md
+++ b/docs/react-navigation.md
@@ -4,29 +4,25 @@ title: React Navigation
sidebar_label: React Navigation
---
-React-navigation does not unmount components when switching between tabs. So when you leave and return back to the screen with the camera component it will just be black view. So a good solution is to use `componentDidMount` and added two listeners `willFocus` and `willBlur` to help you mount and unmount the views.
+React-navigation does not unmount components when switching between tabs. So when you leave and return back to the screen with the camera component it will just be black view. So a good solution is to use `withNavigationFocus`, which is a higher order component, and wrap it around your component. Then, you can have access to `isFocused` from `props`.
```jsx
-componentDidMount() {
- const { navigation } = this.props;
- navigation.addListener('willFocus', () =>
- this.setState({ focusedScreen: true })
- );
- navigation.addListener('willBlur', () =>
- this.setState({ focusedScreen: false })
- );
- }
+
+import { withNavigationFocus } from 'react-navigation'
render() {
- const { hasCameraPermission, focusedScreen } = this.state;
- if (hasCameraPermission === null) {
- return ;
- } else if (hasCameraPermission === false) {
- return No access to camera;
- } else if (focusedScreen){
- return (this.cameraView());
- } else {
- return ;
- }
+ const { isFocused } = this.props
+ const { hasCameraPermission } = this.state;
+ if (hasCameraPermission === null) {
+ return ;
+ } else if (hasCameraPermission === false) {
+ return No access to camera;
+ } else if (isFocused){
+ return (this.cameraView());
+ } else {
+ return ;
+ }
}
+
+export default withNavigationFocus(YourComponent)
```
diff --git a/examples/advanced/.gitignore b/examples/advanced/.gitignore
new file mode 100644
index 000000000..2693f0f39
--- /dev/null
+++ b/examples/advanced/.gitignore
@@ -0,0 +1,4 @@
+# OSX
+#
+.DS_Store
+.vscode
\ No newline at end of file
diff --git a/examples/advanced/advanced/.buckconfig b/examples/advanced/advanced/.buckconfig
new file mode 100644
index 000000000..934256cb2
--- /dev/null
+++ b/examples/advanced/advanced/.buckconfig
@@ -0,0 +1,6 @@
+
+[android]
+ target = Google Inc.:Google APIs:23
+
+[maven_repositories]
+ central = https://repo1.maven.org/maven2
diff --git a/examples/advanced/advanced/.eslintrc.js b/examples/advanced/advanced/.eslintrc.js
new file mode 100644
index 000000000..40c6dcd05
--- /dev/null
+++ b/examples/advanced/advanced/.eslintrc.js
@@ -0,0 +1,4 @@
+module.exports = {
+ root: true,
+ extends: '@react-native-community',
+};
diff --git a/examples/advanced/advanced/.flowconfig b/examples/advanced/advanced/.flowconfig
new file mode 100644
index 000000000..4afc766a2
--- /dev/null
+++ b/examples/advanced/advanced/.flowconfig
@@ -0,0 +1,75 @@
+[ignore]
+; We fork some components by platform
+.*/*[.]android.js
+
+; Ignore "BUCK" generated dirs
+/\.buckd/
+
+; Ignore polyfills
+node_modules/react-native/Libraries/polyfills/.*
+
+; These should not be required directly
+; require from fbjs/lib instead: require('fbjs/lib/warning')
+node_modules/warning/.*
+
+; Flow doesn't support platforms
+.*/Libraries/Utilities/LoadingView.js
+
+[untyped]
+.*/node_modules/@react-native-community/cli/.*/.*
+
+[include]
+
+[libs]
+node_modules/react-native/Libraries/react-native/react-native-interface.js
+node_modules/react-native/flow/
+
+[options]
+emoji=true
+
+esproposal.optional_chaining=enable
+esproposal.nullish_coalescing=enable
+
+module.file_ext=.js
+module.file_ext=.json
+module.file_ext=.ios.js
+
+munge_underscores=true
+
+module.name_mapper='^react-native$' -> '/node_modules/react-native/Libraries/react-native/react-native-implementation'
+module.name_mapper='^react-native/\(.*\)$' -> '/node_modules/react-native/\1'
+module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '/node_modules/react-native/Libraries/Image/RelativeImageStub'
+
+suppress_type=$FlowIssue
+suppress_type=$FlowFixMe
+suppress_type=$FlowFixMeProps
+suppress_type=$FlowFixMeState
+
+suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)
+suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+
+suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError
+
+[lints]
+sketchy-null-number=warn
+sketchy-null-mixed=warn
+sketchy-number=warn
+untyped-type-import=warn
+nonstrict-import=warn
+deprecated-type=warn
+unsafe-getters-setters=warn
+inexact-spread=warn
+unnecessary-invariant=warn
+signature-verification-failure=warn
+deprecated-utility=error
+
+[strict]
+deprecated-type
+nonstrict-import
+sketchy-null
+unclear-type
+unsafe-getters-setters
+untyped-import
+untyped-type-import
+
+[version]
+^0.105.0
diff --git a/examples/advanced/advanced/.gitattributes b/examples/advanced/advanced/.gitattributes
new file mode 100644
index 000000000..d42ff1835
--- /dev/null
+++ b/examples/advanced/advanced/.gitattributes
@@ -0,0 +1 @@
+*.pbxproj -text
diff --git a/examples/advanced/advanced/.gitignore b/examples/advanced/advanced/.gitignore
new file mode 100644
index 000000000..ad572e632
--- /dev/null
+++ b/examples/advanced/advanced/.gitignore
@@ -0,0 +1,59 @@
+# OSX
+#
+.DS_Store
+
+# Xcode
+#
+build/
+*.pbxuser
+!default.pbxuser
+*.mode1v3
+!default.mode1v3
+*.mode2v3
+!default.mode2v3
+*.perspectivev3
+!default.perspectivev3
+xcuserdata
+*.xccheckout
+*.moved-aside
+DerivedData
+*.hmap
+*.ipa
+*.xcuserstate
+
+# Android/IntelliJ
+#
+build/
+.idea
+.gradle
+local.properties
+*.iml
+
+# node.js
+#
+node_modules/
+npm-debug.log
+yarn-error.log
+
+# BUCK
+buck-out/
+\.buckd/
+*.keystore
+!debug.keystore
+
+# fastlane
+#
+# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
+# screenshots whenever they are needed.
+# For more information about the recommended setup visit:
+# https://docs.fastlane.tools/best-practices/source-control/
+
+*/fastlane/report.xml
+*/fastlane/Preview.html
+*/fastlane/screenshots
+
+# Bundle artifact
+*.jsbundle
+
+# CocoaPods
+/ios/Pods/
diff --git a/examples/advanced/advanced/.prettierrc.js b/examples/advanced/advanced/.prettierrc.js
new file mode 100644
index 000000000..5c4de1a4f
--- /dev/null
+++ b/examples/advanced/advanced/.prettierrc.js
@@ -0,0 +1,6 @@
+module.exports = {
+ bracketSpacing: false,
+ jsxBracketSameLine: true,
+ singleQuote: true,
+ trailingComma: 'all',
+};
diff --git a/examples/advanced/advanced/.watchmanconfig b/examples/advanced/advanced/.watchmanconfig
new file mode 100644
index 000000000..9e26dfeeb
--- /dev/null
+++ b/examples/advanced/advanced/.watchmanconfig
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/examples/advanced/advanced/android/app/BUCK b/examples/advanced/advanced/android/app/BUCK
new file mode 100644
index 000000000..c8d70c498
--- /dev/null
+++ b/examples/advanced/advanced/android/app/BUCK
@@ -0,0 +1,55 @@
+# To learn about Buck see [Docs](https://buckbuild.com/).
+# To run your application with Buck:
+# - install Buck
+# - `npm start` - to start the packager
+# - `cd android`
+# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"`
+# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck
+# - `buck install -r android/app` - compile, install and run application
+#
+
+load(":build_defs.bzl", "create_aar_targets", "create_jar_targets")
+
+lib_deps = []
+
+create_aar_targets(glob(["libs/*.aar"]))
+
+create_jar_targets(glob(["libs/*.jar"]))
+
+android_library(
+ name = "all-libs",
+ exported_deps = lib_deps,
+)
+
+android_library(
+ name = "app-code",
+ srcs = glob([
+ "src/main/java/**/*.java",
+ ]),
+ deps = [
+ ":all-libs",
+ ":build_config",
+ ":res",
+ ],
+)
+
+android_build_config(
+ name = "build_config",
+ package = "com.advanced",
+)
+
+android_resource(
+ name = "res",
+ package = "com.advanced",
+ res = "src/main/res",
+)
+
+android_binary(
+ name = "app",
+ keystore = "//android/keystores:debug",
+ manifest = "src/main/AndroidManifest.xml",
+ package_type = "debug",
+ deps = [
+ ":app-code",
+ ],
+)
diff --git a/examples/advanced/advanced/android/app/build.gradle b/examples/advanced/advanced/android/app/build.gradle
new file mode 100644
index 000000000..c4e54c6ac
--- /dev/null
+++ b/examples/advanced/advanced/android/app/build.gradle
@@ -0,0 +1,203 @@
+apply plugin: "com.android.application"
+
+import com.android.build.OutputFile
+
+/**
+ * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
+ * and bundleReleaseJsAndAssets).
+ * These basically call `react-native bundle` with the correct arguments during the Android build
+ * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
+ * bundle directly from the development server. Below you can see all the possible configurations
+ * and their defaults. If you decide to add a configuration block, make sure to add it before the
+ * `apply from: "../../node_modules/react-native/react.gradle"` line.
+ *
+ * project.ext.react = [
+ * // the name of the generated asset file containing your JS bundle
+ * bundleAssetName: "index.android.bundle",
+ *
+ * // the entry file for bundle generation
+ * entryFile: "index.android.js",
+ *
+ * // https://facebook.github.io/react-native/docs/performance#enable-the-ram-format
+ * bundleCommand: "ram-bundle",
+ *
+ * // whether to bundle JS and assets in debug mode
+ * bundleInDebug: false,
+ *
+ * // whether to bundle JS and assets in release mode
+ * bundleInRelease: true,
+ *
+ * // whether to bundle JS and assets in another build variant (if configured).
+ * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
+ * // The configuration property can be in the following formats
+ * // 'bundleIn${productFlavor}${buildType}'
+ * // 'bundleIn${buildType}'
+ * // bundleInFreeDebug: true,
+ * // bundleInPaidRelease: true,
+ * // bundleInBeta: true,
+ *
+ * // whether to disable dev mode in custom build variants (by default only disabled in release)
+ * // for example: to disable dev mode in the staging build type (if configured)
+ * devDisabledInStaging: true,
+ * // The configuration property can be in the following formats
+ * // 'devDisabledIn${productFlavor}${buildType}'
+ * // 'devDisabledIn${buildType}'
+ *
+ * // the root of your project, i.e. where "package.json" lives
+ * root: "../../",
+ *
+ * // where to put the JS bundle asset in debug mode
+ * jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
+ *
+ * // where to put the JS bundle asset in release mode
+ * jsBundleDirRelease: "$buildDir/intermediates/assets/release",
+ *
+ * // where to put drawable resources / React Native assets, e.g. the ones you use via
+ * // require('./image.png')), in debug mode
+ * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
+ *
+ * // where to put drawable resources / React Native assets, e.g. the ones you use via
+ * // require('./image.png')), in release mode
+ * resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
+ *
+ * // by default the gradle tasks are skipped if none of the JS files or assets change; this means
+ * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
+ * // date; if you have any other folders that you want to ignore for performance reasons (gradle
+ * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
+ * // for example, you might want to remove it from here.
+ * inputExcludes: ["android/**", "ios/**"],
+ *
+ * // override which node gets called and with what additional arguments
+ * nodeExecutableAndArgs: ["node"],
+ *
+ * // supply additional arguments to the packager
+ * extraPackagerArgs: []
+ * ]
+ */
+
+project.ext.react = [
+ entryFile: "index.js",
+ enableHermes: false, // clean and rebuild if changing
+]
+
+apply from: "../../node_modules/react-native/react.gradle"
+
+/**
+ * Set this to true to create two separate APKs instead of one:
+ * - An APK that only works on ARM devices
+ * - An APK that only works on x86 devices
+ * The advantage is the size of the APK is reduced by about 4MB.
+ * Upload all the APKs to the Play Store and people will download
+ * the correct one based on the CPU architecture of their device.
+ */
+def enableSeparateBuildPerCPUArchitecture = false
+
+/**
+ * Run Proguard to shrink the Java bytecode in release builds.
+ */
+def enableProguardInReleaseBuilds = false
+
+/**
+ * The preferred build flavor of JavaScriptCore.
+ *
+ * For example, to use the international variant, you can use:
+ * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
+ *
+ * The international variant includes ICU i18n library and necessary data
+ * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
+ * give correct results when using with locales other than en-US. Note that
+ * this variant is about 6MiB larger per architecture than default.
+ */
+def jscFlavor = 'org.webkit:android-jsc:+'
+
+/**
+ * Whether to enable the Hermes VM.
+ *
+ * This should be set on project.ext.react and mirrored here. If it is not set
+ * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
+ * and the benefits of using Hermes will therefore be sharply reduced.
+ */
+def enableHermes = project.ext.react.get("enableHermes", false);
+
+android {
+ compileSdkVersion rootProject.ext.compileSdkVersion
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ defaultConfig {
+ applicationId "com.advanced"
+ minSdkVersion rootProject.ext.minSdkVersion
+ targetSdkVersion rootProject.ext.targetSdkVersion
+ versionCode 1
+ versionName "1.0"
+ missingDimensionStrategy 'react-native-camera', 'general'
+
+ }
+ splits {
+ abi {
+ reset()
+ enable enableSeparateBuildPerCPUArchitecture
+ universalApk false // If true, also generate a universal APK
+ include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
+ }
+ }
+ signingConfigs {
+ debug {
+ storeFile file('debug.keystore')
+ storePassword 'android'
+ keyAlias 'androiddebugkey'
+ keyPassword 'android'
+ }
+ }
+ buildTypes {
+ debug {
+ signingConfig signingConfigs.debug
+ }
+ release {
+ // Caution! In production, you need to generate your own keystore file.
+ // see https://facebook.github.io/react-native/docs/signed-apk-android.
+ signingConfig signingConfigs.debug
+ minifyEnabled enableProguardInReleaseBuilds
+ proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
+ }
+ }
+ // applicationVariants are e.g. debug, release
+ applicationVariants.all { variant ->
+ variant.outputs.each { output ->
+ // For each separate APK per architecture, set a unique version code as described here:
+ // https://developer.android.com/studio/build/configure-apk-splits.html
+ def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
+ def abi = output.getFilter(OutputFile.ABI)
+ if (abi != null) { // null for the universal-debug, universal-release variants
+ output.versionCodeOverride =
+ versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
+ }
+
+ }
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: "libs", include: ["*.jar"])
+ implementation "com.facebook.react:react-native:+" // From node_modules
+
+ if (enableHermes) {
+ def hermesPath = "../../node_modules/hermes-engine/android/";
+ debugImplementation files(hermesPath + "hermes-debug.aar")
+ releaseImplementation files(hermesPath + "hermes-release.aar")
+ } else {
+ implementation jscFlavor
+ }
+}
+
+// Run this once to be able to run the application with BUCK
+// puts all compile dependencies into folder libs for BUCK to use
+task copyDownloadableDepsToLibs(type: Copy) {
+ from configurations.compile
+ into 'libs'
+}
+
+apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
diff --git a/examples/advanced/advanced/android/app/build_defs.bzl b/examples/advanced/advanced/android/app/build_defs.bzl
new file mode 100644
index 000000000..fff270f8d
--- /dev/null
+++ b/examples/advanced/advanced/android/app/build_defs.bzl
@@ -0,0 +1,19 @@
+"""Helper definitions to glob .aar and .jar targets"""
+
+def create_aar_targets(aarfiles):
+ for aarfile in aarfiles:
+ name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")]
+ lib_deps.append(":" + name)
+ android_prebuilt_aar(
+ name = name,
+ aar = aarfile,
+ )
+
+def create_jar_targets(jarfiles):
+ for jarfile in jarfiles:
+ name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")]
+ lib_deps.append(":" + name)
+ prebuilt_jar(
+ name = name,
+ binary_jar = jarfile,
+ )
diff --git a/examples/advanced/advanced/android/app/debug.keystore b/examples/advanced/advanced/android/app/debug.keystore
new file mode 100644
index 000000000..364e105ed
Binary files /dev/null and b/examples/advanced/advanced/android/app/debug.keystore differ
diff --git a/examples/advanced/advanced/android/app/proguard-rules.pro b/examples/advanced/advanced/android/app/proguard-rules.pro
new file mode 100644
index 000000000..11b025724
--- /dev/null
+++ b/examples/advanced/advanced/android/app/proguard-rules.pro
@@ -0,0 +1,10 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
diff --git a/examples/advanced/advanced/android/app/src/debug/AndroidManifest.xml b/examples/advanced/advanced/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 000000000..fa26aa56e
--- /dev/null
+++ b/examples/advanced/advanced/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
diff --git a/examples/advanced/advanced/android/app/src/main/AndroidManifest.xml b/examples/advanced/advanced/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..9123d04d9
--- /dev/null
+++ b/examples/advanced/advanced/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/advanced/advanced/android/app/src/main/assets/fonts/AntDesign.ttf b/examples/advanced/advanced/android/app/src/main/assets/fonts/AntDesign.ttf
new file mode 100755
index 000000000..2abf03542
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/assets/fonts/AntDesign.ttf differ
diff --git a/examples/advanced/advanced/android/app/src/main/assets/fonts/Entypo.ttf b/examples/advanced/advanced/android/app/src/main/assets/fonts/Entypo.ttf
new file mode 100755
index 000000000..1c8f5e910
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/assets/fonts/Entypo.ttf differ
diff --git a/examples/advanced/advanced/android/app/src/main/assets/fonts/EvilIcons.ttf b/examples/advanced/advanced/android/app/src/main/assets/fonts/EvilIcons.ttf
new file mode 100755
index 000000000..6868f7bb6
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/assets/fonts/EvilIcons.ttf differ
diff --git a/examples/advanced/advanced/android/app/src/main/assets/fonts/Feather.ttf b/examples/advanced/advanced/android/app/src/main/assets/fonts/Feather.ttf
new file mode 100755
index 000000000..852c7135a
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/assets/fonts/Feather.ttf differ
diff --git a/examples/advanced/advanced/android/app/src/main/assets/fonts/FontAwesome.ttf b/examples/advanced/advanced/android/app/src/main/assets/fonts/FontAwesome.ttf
new file mode 100755
index 000000000..35acda2fa
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/assets/fonts/FontAwesome.ttf differ
diff --git a/examples/advanced/advanced/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf b/examples/advanced/advanced/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf
new file mode 100755
index 000000000..5f72e9127
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf differ
diff --git a/examples/advanced/advanced/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf b/examples/advanced/advanced/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf
new file mode 100755
index 000000000..a309313d5
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf differ
diff --git a/examples/advanced/advanced/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf b/examples/advanced/advanced/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf
new file mode 100755
index 000000000..7ece3282a
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf differ
diff --git a/examples/advanced/advanced/android/app/src/main/assets/fonts/Fontisto.ttf b/examples/advanced/advanced/android/app/src/main/assets/fonts/Fontisto.ttf
new file mode 100755
index 000000000..96e2e81a3
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/assets/fonts/Fontisto.ttf differ
diff --git a/examples/advanced/advanced/android/app/src/main/assets/fonts/Foundation.ttf b/examples/advanced/advanced/android/app/src/main/assets/fonts/Foundation.ttf
new file mode 100755
index 000000000..6cce217dd
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/assets/fonts/Foundation.ttf differ
diff --git a/examples/advanced/advanced/android/app/src/main/assets/fonts/Ionicons.ttf b/examples/advanced/advanced/android/app/src/main/assets/fonts/Ionicons.ttf
new file mode 100755
index 000000000..67bd84202
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/assets/fonts/Ionicons.ttf differ
diff --git a/examples/advanced/advanced/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf b/examples/advanced/advanced/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf
new file mode 100755
index 000000000..cfe2d9f8f
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf differ
diff --git a/examples/advanced/advanced/android/app/src/main/assets/fonts/MaterialIcons.ttf b/examples/advanced/advanced/android/app/src/main/assets/fonts/MaterialIcons.ttf
new file mode 100755
index 000000000..7015564ad
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/assets/fonts/MaterialIcons.ttf differ
diff --git a/examples/advanced/advanced/android/app/src/main/assets/fonts/Octicons.ttf b/examples/advanced/advanced/android/app/src/main/assets/fonts/Octicons.ttf
new file mode 100755
index 000000000..ceac75d75
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/assets/fonts/Octicons.ttf differ
diff --git a/examples/advanced/advanced/android/app/src/main/assets/fonts/Roboto.ttf b/examples/advanced/advanced/android/app/src/main/assets/fonts/Roboto.ttf
new file mode 100755
index 000000000..3e6e2e761
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/assets/fonts/Roboto.ttf differ
diff --git a/examples/advanced/advanced/android/app/src/main/assets/fonts/Roboto_medium.ttf b/examples/advanced/advanced/android/app/src/main/assets/fonts/Roboto_medium.ttf
new file mode 100755
index 000000000..aa00de0ef
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/assets/fonts/Roboto_medium.ttf differ
diff --git a/examples/advanced/advanced/android/app/src/main/assets/fonts/SimpleLineIcons.ttf b/examples/advanced/advanced/android/app/src/main/assets/fonts/SimpleLineIcons.ttf
new file mode 100755
index 000000000..6ecb68683
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/assets/fonts/SimpleLineIcons.ttf differ
diff --git a/examples/advanced/advanced/android/app/src/main/assets/fonts/Zocial.ttf b/examples/advanced/advanced/android/app/src/main/assets/fonts/Zocial.ttf
new file mode 100755
index 000000000..e4ae46c62
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/assets/fonts/Zocial.ttf differ
diff --git a/examples/advanced/advanced/android/app/src/main/assets/fonts/rubicon-icon-font.ttf b/examples/advanced/advanced/android/app/src/main/assets/fonts/rubicon-icon-font.ttf
new file mode 100755
index 000000000..25e7d92e3
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/assets/fonts/rubicon-icon-font.ttf differ
diff --git a/examples/advanced/advanced/android/app/src/main/java/com/advanced/MainActivity.java b/examples/advanced/advanced/android/app/src/main/java/com/advanced/MainActivity.java
new file mode 100644
index 000000000..ebf75678f
--- /dev/null
+++ b/examples/advanced/advanced/android/app/src/main/java/com/advanced/MainActivity.java
@@ -0,0 +1,32 @@
+package com.advanced;
+
+import com.facebook.react.ReactActivity;
+import com.facebook.react.ReactActivityDelegate;
+import com.facebook.react.ReactRootView;
+import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;
+
+
+public class MainActivity extends ReactActivity {
+
+ /**
+ * Returns the name of the main component registered from JavaScript. This is used to schedule
+ * rendering of the component.
+ */
+ @Override
+ protected String getMainComponentName() {
+ return "advanced";
+ }
+
+ /**
+ For react-native-gesture-handler (used)
+ */
+ @Override
+ protected ReactActivityDelegate createReactActivityDelegate() {
+ return new ReactActivityDelegate(this, getMainComponentName()) {
+ @Override
+ protected ReactRootView createRootView() {
+ return new RNGestureHandlerEnabledRootView(MainActivity.this);
+ }
+ };
+ }
+}
diff --git a/examples/advanced/advanced/android/app/src/main/java/com/advanced/MainApplication.java b/examples/advanced/advanced/android/app/src/main/java/com/advanced/MainApplication.java
new file mode 100644
index 000000000..925451ef8
--- /dev/null
+++ b/examples/advanced/advanced/android/app/src/main/java/com/advanced/MainApplication.java
@@ -0,0 +1,74 @@
+package com.advanced;
+
+import android.app.Application;
+import android.content.Context;
+import com.facebook.react.PackageList;
+import com.facebook.react.ReactApplication;
+import com.facebook.react.ReactNativeHost;
+import com.facebook.react.ReactPackage;
+import com.facebook.soloader.SoLoader;
+import java.lang.reflect.InvocationTargetException;
+import java.util.List;
+
+public class MainApplication extends Application implements ReactApplication {
+
+ private final ReactNativeHost mReactNativeHost =
+ new ReactNativeHost(this) {
+ @Override
+ public boolean getUseDeveloperSupport() {
+ return BuildConfig.DEBUG;
+ }
+
+ @Override
+ protected List getPackages() {
+ @SuppressWarnings("UnnecessaryLocalVariable")
+ List packages = new PackageList(this).getPackages();
+ // Packages that cannot be autolinked yet can be added manually here, for example:
+ // packages.add(new MyReactNativePackage());
+ return packages;
+ }
+
+ @Override
+ protected String getJSMainModuleName() {
+ return "index";
+ }
+ };
+
+ @Override
+ public ReactNativeHost getReactNativeHost() {
+ return mReactNativeHost;
+ }
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ SoLoader.init(this, /* native exopackage */ false);
+ initializeFlipper(this); // Remove this line if you don't want Flipper enabled
+ }
+
+ /**
+ * Loads Flipper in React Native templates.
+ *
+ * @param context
+ */
+ private static void initializeFlipper(Context context) {
+ if (BuildConfig.DEBUG) {
+ try {
+ /*
+ We use reflection here to pick up the class that initializes Flipper,
+ since Flipper library is not available in release mode
+ */
+ Class> aClass = Class.forName("com.facebook.flipper.ReactNativeFlipper");
+ aClass.getMethod("initializeFlipper", Context.class).invoke(null, context);
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ } catch (NoSuchMethodException e) {
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ } catch (InvocationTargetException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/examples/advanced/advanced/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/examples/advanced/advanced/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 000000000..a2f590828
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/examples/advanced/advanced/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/examples/advanced/advanced/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 000000000..1b5239980
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/examples/advanced/advanced/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/examples/advanced/advanced/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 000000000..ff10afd6e
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/examples/advanced/advanced/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/examples/advanced/advanced/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 000000000..115a4c768
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/examples/advanced/advanced/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/examples/advanced/advanced/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 000000000..dcd3cd808
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/examples/advanced/advanced/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/examples/advanced/advanced/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 000000000..459ca609d
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/examples/advanced/advanced/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/examples/advanced/advanced/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 000000000..8ca12fe02
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/examples/advanced/advanced/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/examples/advanced/advanced/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 000000000..8e19b410a
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/examples/advanced/advanced/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/examples/advanced/advanced/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 000000000..b824ebdd4
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/examples/advanced/advanced/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/examples/advanced/advanced/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 000000000..4c19a13c2
Binary files /dev/null and b/examples/advanced/advanced/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/examples/advanced/advanced/android/app/src/main/res/values/strings.xml b/examples/advanced/advanced/android/app/src/main/res/values/strings.xml
new file mode 100644
index 000000000..9596b492a
--- /dev/null
+++ b/examples/advanced/advanced/android/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ RNCamera
+
diff --git a/examples/advanced/advanced/android/app/src/main/res/values/styles.xml b/examples/advanced/advanced/android/app/src/main/res/values/styles.xml
new file mode 100644
index 000000000..72a764e98
--- /dev/null
+++ b/examples/advanced/advanced/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
diff --git a/examples/advanced/advanced/android/build.gradle b/examples/advanced/advanced/android/build.gradle
new file mode 100644
index 000000000..28f7ec645
--- /dev/null
+++ b/examples/advanced/advanced/android/build.gradle
@@ -0,0 +1,38 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+ ext {
+ buildToolsVersion = "28.0.3"
+ minSdkVersion = 16
+ compileSdkVersion = 28
+ targetSdkVersion = 28
+ }
+ repositories {
+ google()
+ jcenter()
+ }
+ dependencies {
+ classpath("com.android.tools.build:gradle:3.4.2")
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ mavenLocal()
+ maven {
+ // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
+ url("$rootDir/../node_modules/react-native/android")
+ }
+ maven {
+ // Android JSC is installed from npm
+ url("$rootDir/../node_modules/jsc-android/dist")
+ }
+
+ google()
+ jcenter()
+ maven { url 'https://jitpack.io' }
+ }
+}
diff --git a/examples/advanced/advanced/android/gradle.properties b/examples/advanced/advanced/android/gradle.properties
new file mode 100644
index 000000000..027ef9db8
--- /dev/null
+++ b/examples/advanced/advanced/android/gradle.properties
@@ -0,0 +1,21 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/examples/advanced/advanced/android/gradle/wrapper/gradle-wrapper.jar b/examples/advanced/advanced/android/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 000000000..5c2d1cf01
Binary files /dev/null and b/examples/advanced/advanced/android/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/examples/advanced/advanced/android/gradle/wrapper/gradle-wrapper.properties b/examples/advanced/advanced/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 000000000..e0c4de36d
--- /dev/null
+++ b/examples/advanced/advanced/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-all.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/examples/advanced/advanced/android/gradlew b/examples/advanced/advanced/android/gradlew
new file mode 100755
index 000000000..b0d6d0ab5
--- /dev/null
+++ b/examples/advanced/advanced/android/gradlew
@@ -0,0 +1,188 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/examples/advanced/advanced/android/gradlew.bat b/examples/advanced/advanced/android/gradlew.bat
new file mode 100644
index 000000000..15e1ee37a
--- /dev/null
+++ b/examples/advanced/advanced/android/gradlew.bat
@@ -0,0 +1,100 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem http://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/examples/advanced/advanced/android/settings.gradle b/examples/advanced/advanced/android/settings.gradle
new file mode 100644
index 000000000..f7c4c1750
--- /dev/null
+++ b/examples/advanced/advanced/android/settings.gradle
@@ -0,0 +1,3 @@
+rootProject.name = 'advanced'
+apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
+include ':app'
diff --git a/examples/advanced/advanced/app.json b/examples/advanced/advanced/app.json
new file mode 100644
index 000000000..e54f9725b
--- /dev/null
+++ b/examples/advanced/advanced/app.json
@@ -0,0 +1,4 @@
+{
+ "name": "advanced",
+ "displayName": "RNCamera"
+}
\ No newline at end of file
diff --git a/examples/advanced/advanced/babel.config.js b/examples/advanced/advanced/babel.config.js
new file mode 100644
index 000000000..f842b77fc
--- /dev/null
+++ b/examples/advanced/advanced/babel.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ presets: ['module:metro-react-native-babel-preset'],
+};
diff --git a/examples/advanced/advanced/index.js b/examples/advanced/advanced/index.js
new file mode 100644
index 000000000..97bcfdeec
--- /dev/null
+++ b/examples/advanced/advanced/index.js
@@ -0,0 +1,6 @@
+import 'react-native-gesture-handler'; // required for correct initialization of this library
+import {AppRegistry} from 'react-native';
+import App from './src/App';
+import {name as appName} from './app.json';
+
+AppRegistry.registerComponent(appName, () => App);
diff --git a/examples/advanced/advanced/ios/Podfile b/examples/advanced/advanced/ios/Podfile
new file mode 100644
index 000000000..6894630f4
--- /dev/null
+++ b/examples/advanced/advanced/ios/Podfile
@@ -0,0 +1,40 @@
+platform :ios, '9.0'
+require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
+
+target 'advanced' do
+ # Pods for advanced
+ pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
+ pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"
+ pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired"
+ pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety"
+ pod 'React', :path => '../node_modules/react-native/'
+ pod 'React-Core', :path => '../node_modules/react-native/'
+ pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
+ pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
+ pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
+ pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
+ pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
+ pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
+ pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
+ pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
+ pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
+ pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
+ pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
+ pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'
+
+ pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
+ pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
+ pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
+ pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
+ pod 'ReactCommon/jscallinvoker', :path => "../node_modules/react-native/ReactCommon"
+ pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"
+ pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
+
+ pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
+ pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
+ pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
+
+
+ use_native_modules!
+end
+
diff --git a/examples/advanced/advanced/ios/Podfile.lock b/examples/advanced/advanced/ios/Podfile.lock
new file mode 100644
index 000000000..b2eb53450
--- /dev/null
+++ b/examples/advanced/advanced/ios/Podfile.lock
@@ -0,0 +1,356 @@
+PODS:
+ - boost-for-react-native (1.63.0)
+ - DoubleConversion (1.1.6)
+ - FBLazyVector (0.61.4)
+ - FBReactNativeSpec (0.61.4):
+ - Folly (= 2018.10.22.00)
+ - RCTRequired (= 0.61.4)
+ - RCTTypeSafety (= 0.61.4)
+ - React-Core (= 0.61.4)
+ - React-jsi (= 0.61.4)
+ - ReactCommon/turbomodule/core (= 0.61.4)
+ - Folly (2018.10.22.00):
+ - boost-for-react-native
+ - DoubleConversion
+ - Folly/Default (= 2018.10.22.00)
+ - glog
+ - Folly/Default (2018.10.22.00):
+ - boost-for-react-native
+ - DoubleConversion
+ - glog
+ - glog (0.3.5)
+ - RCTRequired (0.61.4)
+ - RCTTypeSafety (0.61.4):
+ - FBLazyVector (= 0.61.4)
+ - Folly (= 2018.10.22.00)
+ - RCTRequired (= 0.61.4)
+ - React-Core (= 0.61.4)
+ - React (0.61.4):
+ - React-Core (= 0.61.4)
+ - React-Core/DevSupport (= 0.61.4)
+ - React-Core/RCTWebSocket (= 0.61.4)
+ - React-RCTActionSheet (= 0.61.4)
+ - React-RCTAnimation (= 0.61.4)
+ - React-RCTBlob (= 0.61.4)
+ - React-RCTImage (= 0.61.4)
+ - React-RCTLinking (= 0.61.4)
+ - React-RCTNetwork (= 0.61.4)
+ - React-RCTSettings (= 0.61.4)
+ - React-RCTText (= 0.61.4)
+ - React-RCTVibration (= 0.61.4)
+ - React-Core (0.61.4):
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-Core/Default (= 0.61.4)
+ - React-cxxreact (= 0.61.4)
+ - React-jsi (= 0.61.4)
+ - React-jsiexecutor (= 0.61.4)
+ - Yoga
+ - React-Core/CoreModulesHeaders (0.61.4):
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-Core/Default
+ - React-cxxreact (= 0.61.4)
+ - React-jsi (= 0.61.4)
+ - React-jsiexecutor (= 0.61.4)
+ - Yoga
+ - React-Core/Default (0.61.4):
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-cxxreact (= 0.61.4)
+ - React-jsi (= 0.61.4)
+ - React-jsiexecutor (= 0.61.4)
+ - Yoga
+ - React-Core/DevSupport (0.61.4):
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-Core/Default (= 0.61.4)
+ - React-Core/RCTWebSocket (= 0.61.4)
+ - React-cxxreact (= 0.61.4)
+ - React-jsi (= 0.61.4)
+ - React-jsiexecutor (= 0.61.4)
+ - React-jsinspector (= 0.61.4)
+ - Yoga
+ - React-Core/RCTActionSheetHeaders (0.61.4):
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-Core/Default
+ - React-cxxreact (= 0.61.4)
+ - React-jsi (= 0.61.4)
+ - React-jsiexecutor (= 0.61.4)
+ - Yoga
+ - React-Core/RCTAnimationHeaders (0.61.4):
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-Core/Default
+ - React-cxxreact (= 0.61.4)
+ - React-jsi (= 0.61.4)
+ - React-jsiexecutor (= 0.61.4)
+ - Yoga
+ - React-Core/RCTBlobHeaders (0.61.4):
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-Core/Default
+ - React-cxxreact (= 0.61.4)
+ - React-jsi (= 0.61.4)
+ - React-jsiexecutor (= 0.61.4)
+ - Yoga
+ - React-Core/RCTImageHeaders (0.61.4):
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-Core/Default
+ - React-cxxreact (= 0.61.4)
+ - React-jsi (= 0.61.4)
+ - React-jsiexecutor (= 0.61.4)
+ - Yoga
+ - React-Core/RCTLinkingHeaders (0.61.4):
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-Core/Default
+ - React-cxxreact (= 0.61.4)
+ - React-jsi (= 0.61.4)
+ - React-jsiexecutor (= 0.61.4)
+ - Yoga
+ - React-Core/RCTNetworkHeaders (0.61.4):
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-Core/Default
+ - React-cxxreact (= 0.61.4)
+ - React-jsi (= 0.61.4)
+ - React-jsiexecutor (= 0.61.4)
+ - Yoga
+ - React-Core/RCTSettingsHeaders (0.61.4):
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-Core/Default
+ - React-cxxreact (= 0.61.4)
+ - React-jsi (= 0.61.4)
+ - React-jsiexecutor (= 0.61.4)
+ - Yoga
+ - React-Core/RCTTextHeaders (0.61.4):
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-Core/Default
+ - React-cxxreact (= 0.61.4)
+ - React-jsi (= 0.61.4)
+ - React-jsiexecutor (= 0.61.4)
+ - Yoga
+ - React-Core/RCTVibrationHeaders (0.61.4):
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-Core/Default
+ - React-cxxreact (= 0.61.4)
+ - React-jsi (= 0.61.4)
+ - React-jsiexecutor (= 0.61.4)
+ - Yoga
+ - React-Core/RCTWebSocket (0.61.4):
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-Core/Default (= 0.61.4)
+ - React-cxxreact (= 0.61.4)
+ - React-jsi (= 0.61.4)
+ - React-jsiexecutor (= 0.61.4)
+ - Yoga
+ - React-CoreModules (0.61.4):
+ - FBReactNativeSpec (= 0.61.4)
+ - Folly (= 2018.10.22.00)
+ - RCTTypeSafety (= 0.61.4)
+ - React-Core/CoreModulesHeaders (= 0.61.4)
+ - React-RCTImage (= 0.61.4)
+ - ReactCommon/turbomodule/core (= 0.61.4)
+ - React-cxxreact (0.61.4):
+ - boost-for-react-native (= 1.63.0)
+ - DoubleConversion
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-jsinspector (= 0.61.4)
+ - React-jsi (0.61.4):
+ - boost-for-react-native (= 1.63.0)
+ - DoubleConversion
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-jsi/Default (= 0.61.4)
+ - React-jsi/Default (0.61.4):
+ - boost-for-react-native (= 1.63.0)
+ - DoubleConversion
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-jsiexecutor (0.61.4):
+ - DoubleConversion
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-cxxreact (= 0.61.4)
+ - React-jsi (= 0.61.4)
+ - React-jsinspector (0.61.4)
+ - react-native-camera (3.9.0):
+ - React
+ - react-native-camera/RCT (= 3.9.0)
+ - react-native-camera/RN (= 3.9.0)
+ - react-native-camera/RCT (3.9.0):
+ - React
+ - react-native-camera/RN (3.9.0):
+ - React
+ - React-RCTActionSheet (0.61.4):
+ - React-Core/RCTActionSheetHeaders (= 0.61.4)
+ - React-RCTAnimation (0.61.4):
+ - React-Core/RCTAnimationHeaders (= 0.61.4)
+ - React-RCTBlob (0.61.4):
+ - React-Core/RCTBlobHeaders (= 0.61.4)
+ - React-Core/RCTWebSocket (= 0.61.4)
+ - React-jsi (= 0.61.4)
+ - React-RCTNetwork (= 0.61.4)
+ - React-RCTImage (0.61.4):
+ - React-Core/RCTImageHeaders (= 0.61.4)
+ - React-RCTNetwork (= 0.61.4)
+ - React-RCTLinking (0.61.4):
+ - React-Core/RCTLinkingHeaders (= 0.61.4)
+ - React-RCTNetwork (0.61.4):
+ - React-Core/RCTNetworkHeaders (= 0.61.4)
+ - React-RCTSettings (0.61.4):
+ - React-Core/RCTSettingsHeaders (= 0.61.4)
+ - React-RCTText (0.61.4):
+ - React-Core/RCTTextHeaders (= 0.61.4)
+ - React-RCTVibration (0.61.4):
+ - React-Core/RCTVibrationHeaders (= 0.61.4)
+ - ReactCommon/jscallinvoker (0.61.4):
+ - DoubleConversion
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-cxxreact (= 0.61.4)
+ - ReactCommon/turbomodule/core (0.61.4):
+ - DoubleConversion
+ - Folly (= 2018.10.22.00)
+ - glog
+ - React-Core (= 0.61.4)
+ - React-cxxreact (= 0.61.4)
+ - React-jsi (= 0.61.4)
+ - ReactCommon/jscallinvoker (= 0.61.4)
+ - RNGestureHandler (1.5.0):
+ - React
+ - Yoga (1.14.0)
+
+DEPENDENCIES:
+ - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
+ - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
+ - FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`)
+ - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`)
+ - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
+ - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
+ - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
+ - React (from `../node_modules/react-native/`)
+ - React-Core (from `../node_modules/react-native/`)
+ - React-Core/DevSupport (from `../node_modules/react-native/`)
+ - React-Core/RCTWebSocket (from `../node_modules/react-native/`)
+ - React-CoreModules (from `../node_modules/react-native/React/CoreModules`)
+ - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
+ - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
+ - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
+ - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
+ - react-native-camera (from `../node_modules/react-native-camera`)
+ - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
+ - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
+ - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
+ - React-RCTImage (from `../node_modules/react-native/Libraries/Image`)
+ - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`)
+ - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`)
+ - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
+ - React-RCTText (from `../node_modules/react-native/Libraries/Text`)
+ - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
+ - ReactCommon/jscallinvoker (from `../node_modules/react-native/ReactCommon`)
+ - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
+ - RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
+ - Yoga (from `../node_modules/react-native/ReactCommon/yoga`)
+
+SPEC REPOS:
+ https://github.com/cocoapods/specs.git:
+ - boost-for-react-native
+
+EXTERNAL SOURCES:
+ DoubleConversion:
+ :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
+ FBLazyVector:
+ :path: "../node_modules/react-native/Libraries/FBLazyVector"
+ FBReactNativeSpec:
+ :path: "../node_modules/react-native/Libraries/FBReactNativeSpec"
+ Folly:
+ :podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec"
+ glog:
+ :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
+ RCTRequired:
+ :path: "../node_modules/react-native/Libraries/RCTRequired"
+ RCTTypeSafety:
+ :path: "../node_modules/react-native/Libraries/TypeSafety"
+ React:
+ :path: "../node_modules/react-native/"
+ React-Core:
+ :path: "../node_modules/react-native/"
+ React-CoreModules:
+ :path: "../node_modules/react-native/React/CoreModules"
+ React-cxxreact:
+ :path: "../node_modules/react-native/ReactCommon/cxxreact"
+ React-jsi:
+ :path: "../node_modules/react-native/ReactCommon/jsi"
+ React-jsiexecutor:
+ :path: "../node_modules/react-native/ReactCommon/jsiexecutor"
+ React-jsinspector:
+ :path: "../node_modules/react-native/ReactCommon/jsinspector"
+ react-native-camera:
+ :path: "../node_modules/react-native-camera"
+ React-RCTActionSheet:
+ :path: "../node_modules/react-native/Libraries/ActionSheetIOS"
+ React-RCTAnimation:
+ :path: "../node_modules/react-native/Libraries/NativeAnimation"
+ React-RCTBlob:
+ :path: "../node_modules/react-native/Libraries/Blob"
+ React-RCTImage:
+ :path: "../node_modules/react-native/Libraries/Image"
+ React-RCTLinking:
+ :path: "../node_modules/react-native/Libraries/LinkingIOS"
+ React-RCTNetwork:
+ :path: "../node_modules/react-native/Libraries/Network"
+ React-RCTSettings:
+ :path: "../node_modules/react-native/Libraries/Settings"
+ React-RCTText:
+ :path: "../node_modules/react-native/Libraries/Text"
+ React-RCTVibration:
+ :path: "../node_modules/react-native/Libraries/Vibration"
+ ReactCommon:
+ :path: "../node_modules/react-native/ReactCommon"
+ RNGestureHandler:
+ :path: "../node_modules/react-native-gesture-handler"
+ Yoga:
+ :path: "../node_modules/react-native/ReactCommon/yoga"
+
+SPEC CHECKSUMS:
+ boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
+ DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2
+ FBLazyVector: feb35a6b7f7b50f367be07f34012f34a79282fa3
+ FBReactNativeSpec: 51477b84b1bf7ab6f9ef307c24e3dd675391be44
+ Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51
+ glog: 1f3da668190260b06b429bb211bfbee5cd790c28
+ RCTRequired: f3b3fb6f4723e8e52facb229d0c75fdc76773849
+ RCTTypeSafety: 2ec60de6abb1db050b56ecc4b60188026078fd10
+ React: 10e0130b57e55a7cd8c3dee37c1261102ce295f4
+ React-Core: 636212410772d05f3a1eb79d965df2962ca1c70b
+ React-CoreModules: 6f70d5e41919289c582f88c9ad9923fe5c87400a
+ React-cxxreact: ddecbe9157ec1743f52ea17bf8d95debc0d6e846
+ React-jsi: ca921f4041505f9d5197139b2d09eeb020bb12e8
+ React-jsiexecutor: 8dfb73b987afa9324e4009bdce62a18ce23d983c
+ React-jsinspector: d15478d0a8ada19864aa4d1cc1c697b41b3fa92f
+ react-native-camera: 8ad12cae113fd60b07236983532acc8e595c0fc3
+ React-RCTActionSheet: 7369b7c85f99b6299491333affd9f01f5a130c22
+ React-RCTAnimation: d07be15b2bd1d06d89417eb0343f98ffd2b099a7
+ React-RCTBlob: 8e0b23d95c9baa98f6b0e127e07666aaafd96c34
+ React-RCTImage: 443050d14a66e8c2332e9c055f45689d23e15cc7
+ React-RCTLinking: ce9a90ba155aec41be49e75ec721bbae2d48a47e
+ React-RCTNetwork: 41fe54bacc67dd00e6e4c4d30dd98a13e4beabc8
+ React-RCTSettings: 45e3e0a6470310b2dab2ccc6d1d73121ba3ea936
+ React-RCTText: 21934e0a51d522abcd0a275407e80af45d6fd9ec
+ React-RCTVibration: 0f76400ee3cec6edb9c125da49fed279340d145a
+ ReactCommon: a6a294e7028ed67b926d29551aa9394fd989c24c
+ RNGestureHandler: a4ddde1ffc6e590c8127b8b7eabfdade45475c74
+ Yoga: ba3d99dbee6c15ea6bbe3783d1f0cb1ffb79af0f
+
+PODFILE CHECKSUM: 27b3847fe4d98bb58146c377f86ebed45b40a77d
+
+COCOAPODS: 1.7.5
diff --git a/examples/advanced/advanced/ios/advanced.xcodeproj/project.pbxproj b/examples/advanced/advanced/ios/advanced.xcodeproj/project.pbxproj
new file mode 100644
index 000000000..34b993175
--- /dev/null
+++ b/examples/advanced/advanced/ios/advanced.xcodeproj/project.pbxproj
@@ -0,0 +1,508 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 062607D0422842D88DF710BA /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B099670817684071AF0F1893 /* MaterialIcons.ttf */; };
+ 094178A82163487B97009578 /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6E6AFACE6DD74B8D8DE65F9D /* SimpleLineIcons.ttf */; };
+ 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
+ 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; };
+ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
+ 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
+ 348421C833E74C5182BCB9DD /* rubicon-icon-font.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 53E08F4C2C724DDDBB4D1F8A /* rubicon-icon-font.ttf */; };
+ 3D8F8BED9802FE25EF64DF0B /* libPods-advanced.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 13933213D0463644F398ABD8 /* libPods-advanced.a */; };
+ 62EB96F9E7374AACA02A0A5E /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1DBCCE5F94214C56BBB900D4 /* Octicons.ttf */; };
+ 72EB31C325254DF5B991B84D /* AntDesign.ttf in Resources */ = {isa = PBXBuildFile; fileRef = DE200E779C404F619DC27169 /* AntDesign.ttf */; };
+ 783D315FD7684FC8B773B484 /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3BF1497671ED475EBB25942C /* EvilIcons.ttf */; };
+ 7BFA53EAC35948EC8D1B4BF3 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D4F07CE1EF734EC2BD6EEB93 /* Ionicons.ttf */; };
+ 84BE4437EEDB43EAA7FCE6CB /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 436527FFB9A04400BF5944F6 /* FontAwesome.ttf */; };
+ A5FAC66B25374E97AB8AD24F /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 891C6F6AE85849C0AEA4EE9D /* FontAwesome5_Solid.ttf */; };
+ AEBB31508EBC4C2BA44C8846 /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D029104C407640F2B400A4DB /* Foundation.ttf */; };
+ B3CD170387DA49C4B9782E8E /* Fontisto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B60CC3D370D545E58CD72840 /* Fontisto.ttf */; };
+ C94C5AD1867A429AA8ADEF3B /* Roboto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CEB49DD2C8EF43D18EF017B5 /* Roboto.ttf */; };
+ D0B5EF2F6B634AE1A9BBFAD9 /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 230AA087B4DF4002B655AA4A /* Feather.ttf */; };
+ D6F97B93699645358C8C2C8F /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 97956D0EABB145B699AF0F94 /* MaterialCommunityIcons.ttf */; };
+ DC621F6F5E5B4E13BFC33DF8 /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F16C1C727DA5491FBEBD6DE4 /* Zocial.ttf */; };
+ DFFAF9505B41467784F8C6CB /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7EE85165270445CEAD66A58E /* Entypo.ttf */; };
+ E4EF985626DE4E3EBAC7C646 /* Roboto_medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B6F84A95E26241E4B7549034 /* Roboto_medium.ttf */; };
+ EA2436BE9CFF4671B3A05D4F /* FontAwesome5_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F1BB551E32164FE98F9F2ADE /* FontAwesome5_Regular.ttf */; };
+ F16629C0F69642AFB3CEB6D0 /* FontAwesome5_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A1551A287D074DE1BE677698 /* FontAwesome5_Brands.ttf */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; };
+ 07B3BF7D3A962BA50396E297 /* Pods-advanced.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-advanced.release.xcconfig"; path = "Target Support Files/Pods-advanced/Pods-advanced.release.xcconfig"; sourceTree = ""; };
+ 13933213D0463644F398ABD8 /* libPods-advanced.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-advanced.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 13B07F961A680F5B00A75B9A /* advanced.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = advanced.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = advanced/AppDelegate.h; sourceTree = ""; };
+ 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = advanced/AppDelegate.m; sourceTree = ""; };
+ 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; };
+ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = advanced/Images.xcassets; sourceTree = ""; };
+ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = advanced/Info.plist; sourceTree = ""; };
+ 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = advanced/main.m; sourceTree = ""; };
+ 1DBCCE5F94214C56BBB900D4 /* Octicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Octicons.ttf; path = "../node_modules/native-base/Fonts/Octicons.ttf"; sourceTree = ""; };
+ 230AA087B4DF4002B655AA4A /* Feather.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Feather.ttf; path = "../node_modules/native-base/Fonts/Feather.ttf"; sourceTree = ""; };
+ 3BF1497671ED475EBB25942C /* EvilIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = EvilIcons.ttf; path = "../node_modules/native-base/Fonts/EvilIcons.ttf"; sourceTree = ""; };
+ 436527FFB9A04400BF5944F6 /* FontAwesome.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome.ttf; path = "../node_modules/native-base/Fonts/FontAwesome.ttf"; sourceTree = ""; };
+ 53E08F4C2C724DDDBB4D1F8A /* rubicon-icon-font.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "rubicon-icon-font.ttf"; path = "../node_modules/native-base/Fonts/rubicon-icon-font.ttf"; sourceTree = ""; };
+ 6E6AFACE6DD74B8D8DE65F9D /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = SimpleLineIcons.ttf; path = "../node_modules/native-base/Fonts/SimpleLineIcons.ttf"; sourceTree = ""; };
+ 7EE85165270445CEAD66A58E /* Entypo.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Entypo.ttf; path = "../node_modules/native-base/Fonts/Entypo.ttf"; sourceTree = ""; };
+ 891C6F6AE85849C0AEA4EE9D /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Solid.ttf; path = "../node_modules/native-base/Fonts/FontAwesome5_Solid.ttf"; sourceTree = ""; };
+ 8D2F66B2A31434AB475A52FD /* Pods-advanced.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-advanced.debug.xcconfig"; path = "Target Support Files/Pods-advanced/Pods-advanced.debug.xcconfig"; sourceTree = ""; };
+ 97956D0EABB145B699AF0F94 /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialCommunityIcons.ttf; path = "../node_modules/native-base/Fonts/MaterialCommunityIcons.ttf"; sourceTree = ""; };
+ A1551A287D074DE1BE677698 /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Brands.ttf; path = "../node_modules/native-base/Fonts/FontAwesome5_Brands.ttf"; sourceTree = ""; };
+ B099670817684071AF0F1893 /* MaterialIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialIcons.ttf; path = "../node_modules/native-base/Fonts/MaterialIcons.ttf"; sourceTree = ""; };
+ B60CC3D370D545E58CD72840 /* Fontisto.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Fontisto.ttf; path = "../node_modules/native-base/Fonts/Fontisto.ttf"; sourceTree = ""; };
+ B6F84A95E26241E4B7549034 /* Roboto_medium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Roboto_medium.ttf; path = "../node_modules/native-base/Fonts/Roboto_medium.ttf"; sourceTree = ""; };
+ CEB49DD2C8EF43D18EF017B5 /* Roboto.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Roboto.ttf; path = "../node_modules/native-base/Fonts/Roboto.ttf"; sourceTree = ""; };
+ D029104C407640F2B400A4DB /* Foundation.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Foundation.ttf; path = "../node_modules/native-base/Fonts/Foundation.ttf"; sourceTree = ""; };
+ D4F07CE1EF734EC2BD6EEB93 /* Ionicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Ionicons.ttf; path = "../node_modules/native-base/Fonts/Ionicons.ttf"; sourceTree = ""; };
+ DE200E779C404F619DC27169 /* AntDesign.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = AntDesign.ttf; path = "../node_modules/native-base/Fonts/AntDesign.ttf"; sourceTree = ""; };
+ ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
+ ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };
+ F16C1C727DA5491FBEBD6DE4 /* Zocial.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Zocial.ttf; path = "../node_modules/native-base/Fonts/Zocial.ttf"; sourceTree = ""; };
+ F1BB551E32164FE98F9F2ADE /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Regular.ttf; path = "../node_modules/native-base/Fonts/FontAwesome5_Regular.ttf"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3D8F8BED9802FE25EF64DF0B /* libPods-advanced.a in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 13B07FAE1A68108700A75B9A /* advanced */ = {
+ isa = PBXGroup;
+ children = (
+ 008F07F21AC5B25A0029DE68 /* main.jsbundle */,
+ 13B07FAF1A68108700A75B9A /* AppDelegate.h */,
+ 13B07FB01A68108700A75B9A /* AppDelegate.m */,
+ 13B07FB51A68108700A75B9A /* Images.xcassets */,
+ 13B07FB61A68108700A75B9A /* Info.plist */,
+ 13B07FB11A68108700A75B9A /* LaunchScreen.xib */,
+ 13B07FB71A68108700A75B9A /* main.m */,
+ );
+ name = advanced;
+ sourceTree = "";
+ };
+ 2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
+ ED2971642150620600B7C4FE /* JavaScriptCore.framework */,
+ 13933213D0463644F398ABD8 /* libPods-advanced.a */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 80BFD9DB84F945EDBE3A6B57 /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ DE200E779C404F619DC27169 /* AntDesign.ttf */,
+ 7EE85165270445CEAD66A58E /* Entypo.ttf */,
+ 3BF1497671ED475EBB25942C /* EvilIcons.ttf */,
+ 230AA087B4DF4002B655AA4A /* Feather.ttf */,
+ 436527FFB9A04400BF5944F6 /* FontAwesome.ttf */,
+ A1551A287D074DE1BE677698 /* FontAwesome5_Brands.ttf */,
+ F1BB551E32164FE98F9F2ADE /* FontAwesome5_Regular.ttf */,
+ 891C6F6AE85849C0AEA4EE9D /* FontAwesome5_Solid.ttf */,
+ B60CC3D370D545E58CD72840 /* Fontisto.ttf */,
+ D029104C407640F2B400A4DB /* Foundation.ttf */,
+ D4F07CE1EF734EC2BD6EEB93 /* Ionicons.ttf */,
+ 97956D0EABB145B699AF0F94 /* MaterialCommunityIcons.ttf */,
+ B099670817684071AF0F1893 /* MaterialIcons.ttf */,
+ 1DBCCE5F94214C56BBB900D4 /* Octicons.ttf */,
+ B6F84A95E26241E4B7549034 /* Roboto_medium.ttf */,
+ CEB49DD2C8EF43D18EF017B5 /* Roboto.ttf */,
+ 53E08F4C2C724DDDBB4D1F8A /* rubicon-icon-font.ttf */,
+ 6E6AFACE6DD74B8D8DE65F9D /* SimpleLineIcons.ttf */,
+ F16C1C727DA5491FBEBD6DE4 /* Zocial.ttf */,
+ );
+ name = Resources;
+ sourceTree = "";
+ };
+ 832341AE1AAA6A7D00B99B32 /* Libraries */ = {
+ isa = PBXGroup;
+ children = (
+ );
+ name = Libraries;
+ sourceTree = "";
+ };
+ 83CBB9F61A601CBA00E9B192 = {
+ isa = PBXGroup;
+ children = (
+ 13B07FAE1A68108700A75B9A /* advanced */,
+ 832341AE1AAA6A7D00B99B32 /* Libraries */,
+ 83CBBA001A601CBA00E9B192 /* Products */,
+ 2D16E6871FA4F8E400B85C8A /* Frameworks */,
+ CC7D0FD6B9611ABC7A660F90 /* Pods */,
+ 80BFD9DB84F945EDBE3A6B57 /* Resources */,
+ );
+ indentWidth = 2;
+ sourceTree = "";
+ tabWidth = 2;
+ usesTabs = 0;
+ };
+ 83CBBA001A601CBA00E9B192 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 13B07F961A680F5B00A75B9A /* advanced.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ CC7D0FD6B9611ABC7A660F90 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 8D2F66B2A31434AB475A52FD /* Pods-advanced.debug.xcconfig */,
+ 07B3BF7D3A962BA50396E297 /* Pods-advanced.release.xcconfig */,
+ );
+ path = Pods;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 13B07F861A680F5B00A75B9A /* advanced */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "advanced" */;
+ buildPhases = (
+ D02BE58F2A994D5543044933 /* [CP] Check Pods Manifest.lock */,
+ FD10A7F022414F080027D42C /* Start Packager */,
+ 13B07F871A680F5B00A75B9A /* Sources */,
+ 13B07F8C1A680F5B00A75B9A /* Frameworks */,
+ 13B07F8E1A680F5B00A75B9A /* Resources */,
+ 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = advanced;
+ productName = advanced;
+ productReference = 13B07F961A680F5B00A75B9A /* advanced.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 83CBB9F71A601CBA00E9B192 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 940;
+ ORGANIZATIONNAME = Facebook;
+ TargetAttributes = {
+ 13B07F861A680F5B00A75B9A = {
+ DevelopmentTeam = 2MANV67FBC;
+ };
+ };
+ };
+ buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "advanced" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ English,
+ en,
+ Base,
+ );
+ mainGroup = 83CBB9F61A601CBA00E9B192;
+ productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 13B07F861A680F5B00A75B9A /* advanced */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 13B07F8E1A680F5B00A75B9A /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
+ 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
+ 72EB31C325254DF5B991B84D /* AntDesign.ttf in Resources */,
+ DFFAF9505B41467784F8C6CB /* Entypo.ttf in Resources */,
+ 783D315FD7684FC8B773B484 /* EvilIcons.ttf in Resources */,
+ D0B5EF2F6B634AE1A9BBFAD9 /* Feather.ttf in Resources */,
+ 84BE4437EEDB43EAA7FCE6CB /* FontAwesome.ttf in Resources */,
+ F16629C0F69642AFB3CEB6D0 /* FontAwesome5_Brands.ttf in Resources */,
+ EA2436BE9CFF4671B3A05D4F /* FontAwesome5_Regular.ttf in Resources */,
+ A5FAC66B25374E97AB8AD24F /* FontAwesome5_Solid.ttf in Resources */,
+ B3CD170387DA49C4B9782E8E /* Fontisto.ttf in Resources */,
+ AEBB31508EBC4C2BA44C8846 /* Foundation.ttf in Resources */,
+ 7BFA53EAC35948EC8D1B4BF3 /* Ionicons.ttf in Resources */,
+ D6F97B93699645358C8C2C8F /* MaterialCommunityIcons.ttf in Resources */,
+ 062607D0422842D88DF710BA /* MaterialIcons.ttf in Resources */,
+ 62EB96F9E7374AACA02A0A5E /* Octicons.ttf in Resources */,
+ E4EF985626DE4E3EBAC7C646 /* Roboto_medium.ttf in Resources */,
+ C94C5AD1867A429AA8ADEF3B /* Roboto.ttf in Resources */,
+ 348421C833E74C5182BCB9DD /* rubicon-icon-font.ttf in Resources */,
+ 094178A82163487B97009578 /* SimpleLineIcons.ttf in Resources */,
+ DC621F6F5E5B4E13BFC33DF8 /* Zocial.ttf in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Bundle React Native code and images";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
+ };
+ D02BE58F2A994D5543044933 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-advanced-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ FD10A7F022414F080027D42C /* Start Packager */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ );
+ name = "Start Packager";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 13B07F871A680F5B00A75B9A /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */,
+ 13B07FC11A68108700A75B9A /* main.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 13B07FB21A68108700A75B9A /* Base */,
+ );
+ name = LaunchScreen.xib;
+ path = advanced;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 13B07F941A680F5B00A75B9A /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 8D2F66B2A31434AB475A52FD /* Pods-advanced.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CURRENT_PROJECT_VERSION = 1;
+ DEAD_CODE_STRIPPING = NO;
+ DEVELOPMENT_TEAM = 2MANV67FBC;
+ INFOPLIST_FILE = advanced/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-ObjC",
+ "-lc++",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = org.reactnative.rncamera.example.advanced;
+ PRODUCT_NAME = advanced;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Debug;
+ };
+ 13B07F951A680F5B00A75B9A /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 07B3BF7D3A962BA50396E297 /* Pods-advanced.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = 2MANV67FBC;
+ INFOPLIST_FILE = advanced/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-ObjC",
+ "-lc++",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = org.reactnative.rncamera.example.advanced;
+ PRODUCT_NAME = advanced;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Release;
+ };
+ 83CBBA201A601CBA00E9B192 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ };
+ name = Debug;
+ };
+ 83CBBA211A601CBA00E9B192 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = YES;
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "advanced" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 13B07F941A680F5B00A75B9A /* Debug */,
+ 13B07F951A680F5B00A75B9A /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "advanced" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 83CBBA201A601CBA00E9B192 /* Debug */,
+ 83CBBA211A601CBA00E9B192 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
+}
diff --git a/examples/advanced/advanced/ios/advanced.xcodeproj/xcshareddata/xcschemes/advanced.xcscheme b/examples/advanced/advanced/ios/advanced.xcodeproj/xcshareddata/xcschemes/advanced.xcscheme
new file mode 100644
index 000000000..af0bfed0d
--- /dev/null
+++ b/examples/advanced/advanced/ios/advanced.xcodeproj/xcshareddata/xcschemes/advanced.xcscheme
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/advanced/advanced/ios/advanced.xcworkspace/contents.xcworkspacedata b/examples/advanced/advanced/ios/advanced.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 000000000..4e02dc33a
--- /dev/null
+++ b/examples/advanced/advanced/ios/advanced.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/examples/advanced/advanced/ios/advanced.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/examples/advanced/advanced/ios/advanced.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 000000000..18d981003
--- /dev/null
+++ b/examples/advanced/advanced/ios/advanced.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/examples/advanced/advanced/ios/advanced/AppDelegate.h b/examples/advanced/advanced/ios/advanced/AppDelegate.h
new file mode 100644
index 000000000..2726d5e13
--- /dev/null
+++ b/examples/advanced/advanced/ios/advanced/AppDelegate.h
@@ -0,0 +1,15 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+#import
+#import
+
+@interface AppDelegate : UIResponder
+
+@property (nonatomic, strong) UIWindow *window;
+
+@end
diff --git a/examples/advanced/advanced/ios/advanced/AppDelegate.m b/examples/advanced/advanced/ios/advanced/AppDelegate.m
new file mode 100644
index 000000000..c2070a62d
--- /dev/null
+++ b/examples/advanced/advanced/ios/advanced/AppDelegate.m
@@ -0,0 +1,42 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+#import "AppDelegate.h"
+
+#import
+#import
+#import
+
+@implementation AppDelegate
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+ RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
+ RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
+ moduleName:@"advanced"
+ initialProperties:nil];
+
+ rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
+
+ self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
+ UIViewController *rootViewController = [UIViewController new];
+ rootViewController.view = rootView;
+ self.window.rootViewController = rootViewController;
+ [self.window makeKeyAndVisible];
+ return YES;
+}
+
+- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
+{
+#if DEBUG
+ return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
+#else
+ return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
+#endif
+}
+
+@end
diff --git a/examples/advanced/advanced/ios/advanced/Base.lproj/LaunchScreen.xib b/examples/advanced/advanced/ios/advanced/Base.lproj/LaunchScreen.xib
new file mode 100644
index 000000000..f3678c2f0
--- /dev/null
+++ b/examples/advanced/advanced/ios/advanced/Base.lproj/LaunchScreen.xib
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/advanced/advanced/ios/advanced/Images.xcassets/AppIcon.appiconset/Contents.json b/examples/advanced/advanced/ios/advanced/Images.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 000000000..118c98f74
--- /dev/null
+++ b/examples/advanced/advanced/ios/advanced/Images.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,38 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/examples/advanced/advanced/ios/advanced/Images.xcassets/Contents.json b/examples/advanced/advanced/ios/advanced/Images.xcassets/Contents.json
new file mode 100644
index 000000000..2d92bd53f
--- /dev/null
+++ b/examples/advanced/advanced/ios/advanced/Images.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
diff --git a/examples/advanced/advanced/ios/advanced/Info.plist b/examples/advanced/advanced/ios/advanced/Info.plist
new file mode 100644
index 000000000..4e390debe
--- /dev/null
+++ b/examples/advanced/advanced/ios/advanced/Info.plist
@@ -0,0 +1,85 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleDisplayName
+ RNCamera
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ NSAppTransportSecurity
+
+ NSAllowsArbitraryLoads
+
+ NSExceptionDomains
+
+ localhost
+
+ NSExceptionAllowsInsecureHTTPLoads
+
+
+
+
+ NSCameraUsageDescription
+ RNCamera needs to access your camera.
+ NSLocationWhenInUseUsageDescription
+
+ NSMicrophoneUsageDescription
+ zInspector needs access to your microphone in order to record videos with sound.
+ UIAppFonts
+
+ AntDesign.ttf
+ Entypo.ttf
+ EvilIcons.ttf
+ Feather.ttf
+ FontAwesome.ttf
+ FontAwesome5_Brands.ttf
+ FontAwesome5_Regular.ttf
+ FontAwesome5_Solid.ttf
+ Fontisto.ttf
+ Foundation.ttf
+ Ionicons.ttf
+ MaterialCommunityIcons.ttf
+ MaterialIcons.ttf
+ Octicons.ttf
+ Roboto_medium.ttf
+ Roboto.ttf
+ rubicon-icon-font.ttf
+ SimpleLineIcons.ttf
+ Zocial.ttf
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UIUserInterfaceStyle
+ Light
+ UIViewControllerBasedStatusBarAppearance
+
+
+
diff --git a/examples/advanced/advanced/ios/advanced/main.m b/examples/advanced/advanced/ios/advanced/main.m
new file mode 100644
index 000000000..c316cf816
--- /dev/null
+++ b/examples/advanced/advanced/ios/advanced/main.m
@@ -0,0 +1,16 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+#import
+
+#import "AppDelegate.h"
+
+int main(int argc, char * argv[]) {
+ @autoreleasepool {
+ return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
+ }
+}
diff --git a/examples/advanced/advanced/metro.config.js b/examples/advanced/advanced/metro.config.js
new file mode 100644
index 000000000..13a964217
--- /dev/null
+++ b/examples/advanced/advanced/metro.config.js
@@ -0,0 +1,17 @@
+/**
+ * Metro configuration for React Native
+ * https://github.com/facebook/react-native
+ *
+ * @format
+ */
+
+module.exports = {
+ transformer: {
+ getTransformOptions: async () => ({
+ transform: {
+ experimentalImportSupport: false,
+ inlineRequires: false,
+ },
+ }),
+ },
+};
diff --git a/examples/advanced/advanced/package-lock.json b/examples/advanced/advanced/package-lock.json
new file mode 100644
index 000000000..540f8ec2e
--- /dev/null
+++ b/examples/advanced/advanced/package-lock.json
@@ -0,0 +1,9140 @@
+{
+ "name": "advanced",
+ "version": "0.0.1",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
+ "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
+ "requires": {
+ "@babel/highlight": "^7.0.0"
+ }
+ },
+ "@babel/core": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.2.tgz",
+ "integrity": "sha512-eeD7VEZKfhK1KUXGiyPFettgF3m513f8FoBSWiQ1xTvl1RAopLs42Wp9+Ze911I6H0N9lNqJMDgoZT7gHsipeQ==",
+ "requires": {
+ "@babel/code-frame": "^7.5.5",
+ "@babel/generator": "^7.7.2",
+ "@babel/helpers": "^7.7.0",
+ "@babel/parser": "^7.7.2",
+ "@babel/template": "^7.7.0",
+ "@babel/traverse": "^7.7.2",
+ "@babel/types": "^7.7.2",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "json5": "^2.1.0",
+ "lodash": "^4.17.13",
+ "resolve": "^1.3.2",
+ "semver": "^5.4.1",
+ "source-map": "^0.5.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ }
+ }
+ },
+ "@babel/generator": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz",
+ "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==",
+ "requires": {
+ "@babel/types": "^7.7.2",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.13",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.0.tgz",
+ "integrity": "sha512-k50CQxMlYTYo+GGyUGFwpxKVtxVJi9yh61sXZji3zYHccK9RYliZGSTOgci85T+r+0VFN2nWbGM04PIqwfrpMg==",
+ "requires": {
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.0.tgz",
+ "integrity": "sha512-Cd8r8zs4RKDwMG/92lpZcnn5WPQ3LAMQbCw42oqUh4s7vsSN5ANUZjMel0OOnxDLq57hoDDbai+ryygYfCTOsw==",
+ "requires": {
+ "@babel/helper-explode-assignable-expression": "^7.7.0",
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-builder-react-jsx": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.7.0.tgz",
+ "integrity": "sha512-LSln3cexwInTMYYoFeVLKnYPPMfWNJ8PubTBs3hkh7wCu9iBaqq1OOyW+xGmEdLxT1nhsl+9SJ+h2oUDYz0l2A==",
+ "requires": {
+ "@babel/types": "^7.7.0",
+ "esutils": "^2.0.0"
+ }
+ },
+ "@babel/helper-call-delegate": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.7.0.tgz",
+ "integrity": "sha512-Su0Mdq7uSSWGZayGMMQ+z6lnL00mMCnGAbO/R0ZO9odIdB/WNU/VfQKqMQU0fdIsxQYbRjDM4BixIa93SQIpvw==",
+ "requires": {
+ "@babel/helper-hoist-variables": "^7.7.0",
+ "@babel/traverse": "^7.7.0",
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-create-class-features-plugin": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.0.tgz",
+ "integrity": "sha512-MZiB5qvTWoyiFOgootmRSDV1udjIqJW/8lmxgzKq6oDqxdmHUjeP2ZUOmgHdYjmUVNABqRrHjYAYRvj8Eox/UA==",
+ "requires": {
+ "@babel/helper-function-name": "^7.7.0",
+ "@babel/helper-member-expression-to-functions": "^7.7.0",
+ "@babel/helper-optimise-call-expression": "^7.7.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-replace-supers": "^7.7.0",
+ "@babel/helper-split-export-declaration": "^7.7.0"
+ }
+ },
+ "@babel/helper-create-regexp-features-plugin": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.2.tgz",
+ "integrity": "sha512-pAil/ZixjTlrzNpjx+l/C/wJk002Wo7XbbZ8oujH/AoJ3Juv0iN/UTcPUHXKMFLqsfS0Hy6Aow8M31brUYBlQQ==",
+ "requires": {
+ "@babel/helper-regex": "^7.4.4",
+ "regexpu-core": "^4.6.0"
+ }
+ },
+ "@babel/helper-define-map": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.7.0.tgz",
+ "integrity": "sha512-kPKWPb0dMpZi+ov1hJiwse9dWweZsz3V9rP4KdytnX1E7z3cTNmFGglwklzFPuqIcHLIY3bgKSs4vkwXXdflQA==",
+ "requires": {
+ "@babel/helper-function-name": "^7.7.0",
+ "@babel/types": "^7.7.0",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/helper-explode-assignable-expression": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.0.tgz",
+ "integrity": "sha512-CDs26w2shdD1urNUAji2RJXyBFCaR+iBEGnFz3l7maizMkQe3saVw9WtjG1tz8CwbjvlFnaSLVhgnu1SWaherg==",
+ "requires": {
+ "@babel/traverse": "^7.7.0",
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz",
+ "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==",
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.7.0",
+ "@babel/template": "^7.7.0",
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz",
+ "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==",
+ "requires": {
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.0.tgz",
+ "integrity": "sha512-LUe/92NqsDAkJjjCEWkNe+/PcpnisvnqdlRe19FahVapa4jndeuJ+FBiTX1rcAKWKcJGE+C3Q3tuEuxkSmCEiQ==",
+ "requires": {
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.0.tgz",
+ "integrity": "sha512-QaCZLO2RtBcmvO/ekOLp8p7R5X2JriKRizeDpm5ChATAFWrrYDcDxPuCIBXKyBjY+i1vYSdcUTMIb8psfxHDPA==",
+ "requires": {
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.7.0.tgz",
+ "integrity": "sha512-Dv3hLKIC1jyfTkClvyEkYP2OlkzNvWs5+Q8WgPbxM5LMeorons7iPP91JM+DU7tRbhqA1ZeooPaMFvQrn23RHw==",
+ "requires": {
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.7.0.tgz",
+ "integrity": "sha512-rXEefBuheUYQyX4WjV19tuknrJFwyKw0HgzRwbkyTbB+Dshlq7eqkWbyjzToLrMZk/5wKVKdWFluiAsVkHXvuQ==",
+ "requires": {
+ "@babel/helper-module-imports": "^7.7.0",
+ "@babel/helper-simple-access": "^7.7.0",
+ "@babel/helper-split-export-declaration": "^7.7.0",
+ "@babel/template": "^7.7.0",
+ "@babel/types": "^7.7.0",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.0.tgz",
+ "integrity": "sha512-48TeqmbazjNU/65niiiJIJRc5JozB8acui1OS7bSd6PgxfuovWsvjfWSzlgx+gPFdVveNzUdpdIg5l56Pl5jqg==",
+ "requires": {
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz",
+ "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA=="
+ },
+ "@babel/helper-regex": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz",
+ "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==",
+ "requires": {
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/helper-remap-async-to-generator": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.0.tgz",
+ "integrity": "sha512-pHx7RN8X0UNHPB/fnuDnRXVZ316ZigkO8y8D835JlZ2SSdFKb6yH9MIYRU4fy/KPe5sPHDFOPvf8QLdbAGGiyw==",
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.7.0",
+ "@babel/helper-wrap-function": "^7.7.0",
+ "@babel/template": "^7.7.0",
+ "@babel/traverse": "^7.7.0",
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-replace-supers": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.7.0.tgz",
+ "integrity": "sha512-5ALYEul5V8xNdxEeWvRsBzLMxQksT7MaStpxjJf9KsnLxpAKBtfw5NeMKZJSYDa0lKdOcy0g+JT/f5mPSulUgg==",
+ "requires": {
+ "@babel/helper-member-expression-to-functions": "^7.7.0",
+ "@babel/helper-optimise-call-expression": "^7.7.0",
+ "@babel/traverse": "^7.7.0",
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.7.0.tgz",
+ "integrity": "sha512-AJ7IZD7Eem3zZRuj5JtzFAptBw7pMlS3y8Qv09vaBWoFsle0d1kAn5Wq6Q9MyBXITPOKnxwkZKoAm4bopmv26g==",
+ "requires": {
+ "@babel/template": "^7.7.0",
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz",
+ "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==",
+ "requires": {
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helper-wrap-function": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.0.tgz",
+ "integrity": "sha512-sd4QjeMgQqzshSjecZjOp8uKfUtnpmCyQhKQrVJBBgeHAB/0FPi33h3AbVlVp07qQtMD4QgYSzaMI7VwncNK/w==",
+ "requires": {
+ "@babel/helper-function-name": "^7.7.0",
+ "@babel/template": "^7.7.0",
+ "@babel/traverse": "^7.7.0",
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/helpers": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.0.tgz",
+ "integrity": "sha512-VnNwL4YOhbejHb7x/b5F39Zdg5vIQpUUNzJwx0ww1EcVRt41bbGRZWhAURrfY32T5zTT3qwNOQFWpn+P0i0a2g==",
+ "requires": {
+ "@babel/template": "^7.7.0",
+ "@babel/traverse": "^7.7.0",
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
+ "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz",
+ "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A=="
+ },
+ "@babel/plugin-external-helpers": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.2.0.tgz",
+ "integrity": "sha512-QFmtcCShFkyAsNtdCM3lJPmRe1iB+vPZymlB4LnDIKEBj2yKQLQKtoxXxJ8ePT5fwMl4QGg303p4mB0UsSI2/g==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-proposal-class-properties": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.0.tgz",
+ "integrity": "sha512-tufDcFA1Vj+eWvwHN+jvMN6QsV5o+vUlytNKrbMiCeDL0F2j92RURzUsUMWE5EJkLyWxjdUslCsMQa9FWth16A==",
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.7.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-proposal-export-default-from": {
+ "version": "7.5.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.5.2.tgz",
+ "integrity": "sha512-wr9Itk05L1/wyyZKVEmXWCdcsp/e185WUNl6AfYZeEKYaUPPvHXRDqO5K1VH7/UamYqGJowFRuCv30aDYZawsg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-export-default-from": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-nullish-coalescing-operator": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.4.4.tgz",
+ "integrity": "sha512-Amph7Epui1Dh/xxUxS2+K22/MUi6+6JVTvy3P58tja3B6yKTSjwwx0/d83rF7551D6PVSSoplQb8GCwqec7HRw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-object-rest-spread": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz",
+ "integrity": "sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-object-rest-spread": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-optional-catch-binding": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz",
+ "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-optional-chaining": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.6.0.tgz",
+ "integrity": "sha512-kj4gkZ6qUggkprRq3Uh5KP8XnE1MdIO0J7MhdDX8+rAbB6dJ2UrensGIS+0NPZAaaJ1Vr0PN6oLUgXMU1uMcSg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.2.0"
+ }
+ },
+ "@babel/plugin-syntax-class-properties": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.2.0.tgz",
+ "integrity": "sha512-UxYaGXYQ7rrKJS/PxIKRkv3exi05oH7rokBAsmCSsCxz1sVPZ7Fu6FzKoGgUvmY+0YgSkYHgUoCh5R5bCNBQlw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-dynamic-import": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz",
+ "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-export-default-from": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.2.0.tgz",
+ "integrity": "sha512-c7nqUnNST97BWPtoe+Ssi+fJukc9P9/JMZ71IOMNQWza2E+Psrd46N6AEvtw6pqK+gt7ChjXyrw4SPDO79f3Lw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-flow": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.7.0.tgz",
+ "integrity": "sha512-vQMV07p+L+jZeUnvX3pEJ9EiXGCjB5CTTvsirFD9rpEuATnoAvLBLoYbw1v5tyn3d2XxSuvEKi8cV3KqYUa0vQ==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-jsx": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz",
+ "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.2.0.tgz",
+ "integrity": "sha512-lRCEaKE+LTxDQtgbYajI04ddt6WW0WJq57xqkAZ+s11h4YgfRHhVA/Y2VhfPzzFD4qeLHWg32DMp9HooY4Kqlg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz",
+ "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz",
+ "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-optional-chaining": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.2.0.tgz",
+ "integrity": "sha512-HtGCtvp5Uq/jH/WNUPkK6b7rufnCPLLlDAFN7cmACoIjaOOiXxUt3SswU5loHqrhtqTsa/WoLQ1OQ1AGuZqaWA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-typescript": {
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz",
+ "integrity": "sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-arrow-functions": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz",
+ "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-async-to-generator": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.0.tgz",
+ "integrity": "sha512-vLI2EFLVvRBL3d8roAMqtVY0Bm9C1QzLkdS57hiKrjUBSqsQYrBsMCeOg/0KK7B0eK9V71J5mWcha9yyoI2tZw==",
+ "requires": {
+ "@babel/helper-module-imports": "^7.7.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-remap-async-to-generator": "^7.7.0"
+ }
+ },
+ "@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz",
+ "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-block-scoping": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz",
+ "integrity": "sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/plugin-transform-classes": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.0.tgz",
+ "integrity": "sha512-/b3cKIZwGeUesZheU9jNYcwrEA7f/Bo4IdPmvp7oHgvks2majB5BoT5byAql44fiNQYOPzhk2w8DbgfuafkMoA==",
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.7.0",
+ "@babel/helper-define-map": "^7.7.0",
+ "@babel/helper-function-name": "^7.7.0",
+ "@babel/helper-optimise-call-expression": "^7.7.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-replace-supers": "^7.7.0",
+ "@babel/helper-split-export-declaration": "^7.7.0",
+ "globals": "^11.1.0"
+ }
+ },
+ "@babel/plugin-transform-computed-properties": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz",
+ "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-destructuring": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz",
+ "integrity": "sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz",
+ "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==",
+ "requires": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-flow-strip-types": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.6.3.tgz",
+ "integrity": "sha512-l0ETkyEofkqFJ9LS6HChNIKtVJw2ylKbhYMlJ5C6df+ldxxaLIyXY4yOdDQQspfFpV8/vDiaWoJlvflstlYNxg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.2.0"
+ }
+ },
+ "@babel/plugin-transform-for-of": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz",
+ "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-function-name": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.0.tgz",
+ "integrity": "sha512-P5HKu0d9+CzZxP5jcrWdpe7ZlFDe24bmqP6a6X8BHEBl/eizAsY8K6LX8LASZL0Jxdjm5eEfzp+FIrxCm/p8bA==",
+ "requires": {
+ "@babel/helper-function-name": "^7.7.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-literals": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz",
+ "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-member-expression-literals": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz",
+ "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-modules-commonjs": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.0.tgz",
+ "integrity": "sha512-KEMyWNNWnjOom8vR/1+d+Ocz/mILZG/eyHHO06OuBQ2aNhxT62fr4y6fGOplRx+CxCSp3IFwesL8WdINfY/3kg==",
+ "requires": {
+ "@babel/helper-module-transforms": "^7.7.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-simple-access": "^7.7.0",
+ "babel-plugin-dynamic-import-node": "^2.3.0"
+ }
+ },
+ "@babel/plugin-transform-object-assign": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.2.0.tgz",
+ "integrity": "sha512-nmE55cZBPFgUktbF2OuoZgPRadfxosLOpSgzEPYotKSls9J4pEPcembi8r78RU37Rph6UApCpNmsQA4QMWK9Ng==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-object-super": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz",
+ "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-replace-supers": "^7.5.5"
+ }
+ },
+ "@babel/plugin-transform-parameters": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz",
+ "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==",
+ "requires": {
+ "@babel/helper-call-delegate": "^7.4.4",
+ "@babel/helper-get-function-arity": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-property-literals": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz",
+ "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-react-display-name": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz",
+ "integrity": "sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-react-jsx": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.7.0.tgz",
+ "integrity": "sha512-mXhBtyVB1Ujfy+0L6934jeJcSXj/VCg6whZzEcgiiZHNS0PGC7vUCsZDQCxxztkpIdF+dY1fUMcjAgEOC3ZOMQ==",
+ "requires": {
+ "@babel/helper-builder-react-jsx": "^7.7.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@babel/plugin-transform-react-jsx-source": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.5.0.tgz",
+ "integrity": "sha512-58Q+Jsy4IDCZx7kqEZuSDdam/1oW8OdDX8f+Loo6xyxdfg1yF0GE2XNJQSTZCaMol93+FBzpWiPEwtbMloAcPg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@babel/plugin-transform-regenerator": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.0.tgz",
+ "integrity": "sha512-AXmvnC+0wuj/cFkkS/HFHIojxH3ffSXE+ttulrqWjZZRaUOonfJc60e1wSNT4rV8tIunvu/R3wCp71/tLAa9xg==",
+ "requires": {
+ "regenerator-transform": "^0.14.0"
+ }
+ },
+ "@babel/plugin-transform-runtime": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.2.tgz",
+ "integrity": "sha512-cqULw/QB4yl73cS5Y0TZlQSjDvNkzDbu0FurTZyHlJpWE5T3PCMdnyV+xXoH1opr1ldyHODe3QAX3OMAii5NxA==",
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "resolve": "^1.8.1",
+ "semver": "^5.5.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ }
+ }
+ },
+ "@babel/plugin-transform-shorthand-properties": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz",
+ "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-spread": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz",
+ "integrity": "sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-sticky-regex": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz",
+ "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-regex": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-template-literals": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz",
+ "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==",
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-typescript": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.7.2.tgz",
+ "integrity": "sha512-UWhDaJRqdPUtdK1s0sKYdoRuqK0NepjZto2UZltvuCgMoMZmdjhgz5hcRokie/3aYEaSz3xvusyoayVaq4PjRg==",
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.7.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-typescript": "^7.2.0"
+ }
+ },
+ "@babel/plugin-transform-unicode-regex": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.0.tgz",
+ "integrity": "sha512-RrThb0gdrNwFAqEAAx9OWgtx6ICK69x7i9tCnMdVrxQwSDp/Abu9DXFU5Hh16VP33Rmxh04+NGW28NsIkFvFKA==",
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.7.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/register": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.7.0.tgz",
+ "integrity": "sha512-HV3GJzTvSoyOMWGYn2TAh6uL6g+gqKTgEZ99Q3+X9UURT1VPT/WcU46R61XftIc5rXytcOHZ4Z0doDlsjPomIg==",
+ "requires": {
+ "find-cache-dir": "^2.0.0",
+ "lodash": "^4.17.13",
+ "make-dir": "^2.1.0",
+ "pirates": "^4.0.0",
+ "source-map-support": "^0.5.16"
+ }
+ },
+ "@babel/runtime": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz",
+ "integrity": "sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw==",
+ "requires": {
+ "regenerator-runtime": "^0.13.2"
+ }
+ },
+ "@babel/template": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz",
+ "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==",
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/parser": "^7.7.0",
+ "@babel/types": "^7.7.0"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz",
+ "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==",
+ "requires": {
+ "@babel/code-frame": "^7.5.5",
+ "@babel/generator": "^7.7.2",
+ "@babel/helper-function-name": "^7.7.0",
+ "@babel/helper-split-export-declaration": "^7.7.0",
+ "@babel/parser": "^7.7.2",
+ "@babel/types": "^7.7.2",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.13"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "@babel/types": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz",
+ "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==",
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@cnakazawa/watch": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz",
+ "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==",
+ "requires": {
+ "exec-sh": "^0.3.2",
+ "minimist": "^1.2.0"
+ }
+ },
+ "@hapi/address": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.2.tgz",
+ "integrity": "sha512-O4QDrx+JoGKZc6aN64L04vqa7e41tIiLU+OvKdcYaEMP97UttL0f9GIi9/0A4WAMx0uBd6SidDIhktZhgOcN8Q=="
+ },
+ "@hapi/bourne": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz",
+ "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA=="
+ },
+ "@hapi/hoek": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.0.tgz",
+ "integrity": "sha512-7XYT10CZfPsH7j9F1Jmg1+d0ezOux2oM2GfArAzLwWe4mE2Dr3hVjsAL6+TFY49RRJlCdJDMw3nJsLFroTc8Kw=="
+ },
+ "@hapi/joi": {
+ "version": "15.1.1",
+ "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz",
+ "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==",
+ "requires": {
+ "@hapi/address": "2.x.x",
+ "@hapi/bourne": "1.x.x",
+ "@hapi/hoek": "8.x.x",
+ "@hapi/topo": "3.x.x"
+ }
+ },
+ "@hapi/topo": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz",
+ "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==",
+ "requires": {
+ "@hapi/hoek": "^8.3.0"
+ }
+ },
+ "@jest/console": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz",
+ "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==",
+ "requires": {
+ "@jest/source-map": "^24.9.0",
+ "chalk": "^2.0.1",
+ "slash": "^2.0.0"
+ },
+ "dependencies": {
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A=="
+ }
+ }
+ },
+ "@jest/core": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz",
+ "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==",
+ "dev": true,
+ "requires": {
+ "@jest/console": "^24.7.1",
+ "@jest/reporters": "^24.9.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/transform": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "ansi-escapes": "^3.0.0",
+ "chalk": "^2.0.1",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.1.15",
+ "jest-changed-files": "^24.9.0",
+ "jest-config": "^24.9.0",
+ "jest-haste-map": "^24.9.0",
+ "jest-message-util": "^24.9.0",
+ "jest-regex-util": "^24.3.0",
+ "jest-resolve": "^24.9.0",
+ "jest-resolve-dependencies": "^24.9.0",
+ "jest-runner": "^24.9.0",
+ "jest-runtime": "^24.9.0",
+ "jest-snapshot": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jest-validate": "^24.9.0",
+ "jest-watcher": "^24.9.0",
+ "micromatch": "^3.1.10",
+ "p-each-series": "^1.0.0",
+ "realpath-native": "^1.1.0",
+ "rimraf": "^2.5.4",
+ "slash": "^2.0.0",
+ "strip-ansi": "^5.0.0"
+ },
+ "dependencies": {
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true
+ }
+ }
+ },
+ "@jest/environment": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz",
+ "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==",
+ "dev": true,
+ "requires": {
+ "@jest/fake-timers": "^24.9.0",
+ "@jest/transform": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "jest-mock": "^24.9.0"
+ }
+ },
+ "@jest/fake-timers": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz",
+ "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==",
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "jest-message-util": "^24.9.0",
+ "jest-mock": "^24.9.0"
+ }
+ },
+ "@jest/reporters": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz",
+ "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==",
+ "dev": true,
+ "requires": {
+ "@jest/environment": "^24.9.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/transform": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "chalk": "^2.0.1",
+ "exit": "^0.1.2",
+ "glob": "^7.1.2",
+ "istanbul-lib-coverage": "^2.0.2",
+ "istanbul-lib-instrument": "^3.0.1",
+ "istanbul-lib-report": "^2.0.4",
+ "istanbul-lib-source-maps": "^3.0.1",
+ "istanbul-reports": "^2.2.6",
+ "jest-haste-map": "^24.9.0",
+ "jest-resolve": "^24.9.0",
+ "jest-runtime": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jest-worker": "^24.6.0",
+ "node-notifier": "^5.4.2",
+ "slash": "^2.0.0",
+ "source-map": "^0.6.0",
+ "string-length": "^2.0.0"
+ },
+ "dependencies": {
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "@jest/source-map": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz",
+ "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==",
+ "requires": {
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.1.15",
+ "source-map": "^0.6.0"
+ },
+ "dependencies": {
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ }
+ }
+ },
+ "@jest/test-result": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz",
+ "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==",
+ "requires": {
+ "@jest/console": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "@types/istanbul-lib-coverage": "^2.0.0"
+ }
+ },
+ "@jest/test-sequencer": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz",
+ "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==",
+ "dev": true,
+ "requires": {
+ "@jest/test-result": "^24.9.0",
+ "jest-haste-map": "^24.9.0",
+ "jest-runner": "^24.9.0",
+ "jest-runtime": "^24.9.0"
+ }
+ },
+ "@jest/transform": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz",
+ "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.1.0",
+ "@jest/types": "^24.9.0",
+ "babel-plugin-istanbul": "^5.1.0",
+ "chalk": "^2.0.1",
+ "convert-source-map": "^1.4.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "graceful-fs": "^4.1.15",
+ "jest-haste-map": "^24.9.0",
+ "jest-regex-util": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "micromatch": "^3.1.10",
+ "pirates": "^4.0.1",
+ "realpath-native": "^1.1.0",
+ "slash": "^2.0.0",
+ "source-map": "^0.6.1",
+ "write-file-atomic": "2.4.1"
+ },
+ "dependencies": {
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "write-file-atomic": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz",
+ "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.2"
+ }
+ }
+ }
+ },
+ "@jest/types": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
+ "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
+ "requires": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^1.1.1",
+ "@types/yargs": "^13.0.0"
+ }
+ },
+ "@react-native-community/cli-platform-android": {
+ "version": "3.0.0-alpha.7",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-3.0.0-alpha.7.tgz",
+ "integrity": "sha512-Ot/4K841f3vJZM5K7Za/bYgGeXUJyBsZZuoFvnEMAmR/tS6QCrsv8NQ7f/E3HmxvWaSEVNiiF8NiW2+qo6YDxg==",
+ "requires": {
+ "@react-native-community/cli-tools": "^3.0.0-alpha.7",
+ "chalk": "^2.4.2",
+ "execa": "^1.0.0",
+ "jetifier": "^1.6.2",
+ "logkitty": "^0.6.0",
+ "slash": "^3.0.0",
+ "xmldoc": "^1.1.2"
+ }
+ },
+ "@react-native-community/cli-platform-ios": {
+ "version": "3.0.0-alpha.7",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-3.0.0-alpha.7.tgz",
+ "integrity": "sha512-6qM5LpzhCEhkb9MC+nxrOHX2TxoN4qm8+Vg9byIW/wExl8dWCTneRUbQ5qFlkkMksS2U63LiRVSCXK08d6x5bA==",
+ "requires": {
+ "@react-native-community/cli-tools": "^3.0.0-alpha.7",
+ "chalk": "^2.4.2",
+ "js-yaml": "^3.13.1",
+ "xcode": "^2.0.0"
+ }
+ },
+ "@react-native-community/cli-tools": {
+ "version": "3.0.0-alpha.7",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-3.0.0-alpha.7.tgz",
+ "integrity": "sha512-x4XdeMtAx7RC1YP5cqLWIggXOuzuANItWi8BD8R/ak6GWMRd3X5L2HFuLa6GDXgkWSXtoUvqOilJplhVhLRrmQ==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "lodash": "^4.17.5",
+ "mime": "^2.4.1",
+ "node-fetch": "^2.5.0"
+ }
+ },
+ "@react-native-community/cli-types": {
+ "version": "3.0.0-alpha.7",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-3.0.0-alpha.7.tgz",
+ "integrity": "sha512-anT+l41FK7EJXOlOx8ZzIgskDuslT5A5NkMg2Kt3YzAxf8wrCBbOo5/CjnuW6pi9fvjGgB810Yw3tFSl4yZY4A=="
+ },
+ "@react-native-community/eslint-config": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/@react-native-community/eslint-config/-/eslint-config-0.0.5.tgz",
+ "integrity": "sha512-jwO2tnKaTPTLX5XYXMHGEnFdf543SU7jz98/OF5mDH3b7lP+BOaCD+jVfqqHoDRkcqyPlYiR1CgwVGWpi0vMWg==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/eslint-plugin": "^1.5.0",
+ "@typescript-eslint/parser": "^1.5.0",
+ "babel-eslint": "10.0.1",
+ "eslint-plugin-eslint-comments": "^3.1.1",
+ "eslint-plugin-flowtype": "2.50.3",
+ "eslint-plugin-jest": "22.4.1",
+ "eslint-plugin-prettier": "2.6.2",
+ "eslint-plugin-react": "7.12.4",
+ "eslint-plugin-react-hooks": "^1.5.1",
+ "eslint-plugin-react-native": "3.6.0",
+ "prettier": "1.16.4"
+ }
+ },
+ "@react-navigation/core": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-3.5.1.tgz",
+ "integrity": "sha512-q7NyhWVYOhVIWqL2GZKa6G78YarXaVTTtOlSDkvy4ZIggo40wZzamlnrJRvsaQX46gsgw45FAWb5SriHh8o7eA==",
+ "requires": {
+ "hoist-non-react-statics": "^3.3.0",
+ "path-to-regexp": "^1.7.0",
+ "query-string": "^6.4.2",
+ "react-is": "^16.8.6"
+ },
+ "dependencies": {
+ "hoist-non-react-statics": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+ "integrity": "sha512-wbg3bpgA/ZqWrZuMOeJi8+SKMhr7X9TesL/rXMjTzh0p0JUBo3II8DHboYbuIXWRlttrUFxwcu/5kygrCw8fJw==",
+ "requires": {
+ "react-is": "^16.7.0"
+ }
+ }
+ }
+ },
+ "@react-navigation/native": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-3.6.2.tgz",
+ "integrity": "sha512-Cybeou6N82ZeRmgnGlu+wzlV3z5BZQR2dmYaNFV1TNLUGHqtvv8E7oNw9uYcz9Ox5LFbiX+FdNTn2d6ZPlK0kg==",
+ "requires": {
+ "hoist-non-react-statics": "^3.0.1",
+ "react-native-safe-area-view": "^0.14.1",
+ "react-native-screens": "^1.0.0 || ^1.0.0-alpha"
+ },
+ "dependencies": {
+ "hoist-non-react-statics": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+ "integrity": "sha512-wbg3bpgA/ZqWrZuMOeJi8+SKMhr7X9TesL/rXMjTzh0p0JUBo3II8DHboYbuIXWRlttrUFxwcu/5kygrCw8fJw==",
+ "requires": {
+ "react-is": "^16.7.0"
+ }
+ }
+ }
+ },
+ "@types/babel__core": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz",
+ "integrity": "sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "@types/babel__generator": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.0.tgz",
+ "integrity": "sha512-c1mZUu4up5cp9KROs/QAw0gTeHrw/x7m52LcnvMxxOZ03DmLwPV0MlGmlgzV3cnSdjhJOZsj7E7FHeioai+egw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@types/babel__template": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz",
+ "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@types/babel__traverse": {
+ "version": "7.0.7",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.7.tgz",
+ "integrity": "sha512-CeBpmX1J8kWLcDEnI3Cl2Eo6RfbGvzUctA+CjZUhOKDFbLfcr7fc4usEqLNWetrlJd7RhAkyYe2czXop4fICpw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.3.0"
+ }
+ },
+ "@types/eslint-visitor-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
+ "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==",
+ "dev": true
+ },
+ "@types/istanbul-lib-coverage": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz",
+ "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg=="
+ },
+ "@types/istanbul-lib-report": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz",
+ "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==",
+ "requires": {
+ "@types/istanbul-lib-coverage": "*"
+ }
+ },
+ "@types/istanbul-reports": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz",
+ "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==",
+ "requires": {
+ "@types/istanbul-lib-coverage": "*",
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "@types/json-schema": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.3.tgz",
+ "integrity": "sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==",
+ "dev": true
+ },
+ "@types/mkdirp": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz",
+ "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==",
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/node": {
+ "version": "12.12.7",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.7.tgz",
+ "integrity": "sha512-E6Zn0rffhgd130zbCbAr/JdXfXkoOUFAKNs/rF8qnafSJ8KYaA/j3oz7dcwal+lYjLA7xvdd5J4wdYpCTlP8+w=="
+ },
+ "@types/node-notifier": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/@types/node-notifier/-/node-notifier-5.4.0.tgz",
+ "integrity": "sha512-M1XvCG6Rwej6+W0+kWultE46YS7erOy+W7suRmXtKwLGT3ytj6YEe9lqo47nRfL1xILzg9xJpKeNczIsWR8ymw==",
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/semver": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-6.2.0.tgz",
+ "integrity": "sha512-1OzrNb4RuAzIT7wHSsgZRlMBlNsJl+do6UblR7JMW4oB7bbR+uBEYtUh7gEc/jM84GGilh68lSOokyM/zNUlBA=="
+ },
+ "@types/stack-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz",
+ "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw=="
+ },
+ "@types/ws": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-6.0.3.tgz",
+ "integrity": "sha512-yBTM0P05Tx9iXGq00BbJPo37ox68R5vaGTXivs6RGh/BQ6QP5zqZDGWdAO6JbRE/iR1l80xeGAwCQS2nMV9S/w==",
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/yargs": {
+ "version": "13.0.3",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz",
+ "integrity": "sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==",
+ "requires": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "@types/yargs-parser": {
+ "version": "13.1.0",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz",
+ "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg=="
+ },
+ "@typescript-eslint/eslint-plugin": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.13.0.tgz",
+ "integrity": "sha512-WQHCozMnuNADiqMtsNzp96FNox5sOVpU8Xt4meaT4em8lOG1SrOv92/mUbEHQVh90sldKSfcOc/I0FOb/14G1g==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/experimental-utils": "1.13.0",
+ "eslint-utils": "^1.3.1",
+ "functional-red-black-tree": "^1.0.1",
+ "regexpp": "^2.0.1",
+ "tsutils": "^3.7.0"
+ }
+ },
+ "@typescript-eslint/experimental-utils": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz",
+ "integrity": "sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg==",
+ "dev": true,
+ "requires": {
+ "@types/json-schema": "^7.0.3",
+ "@typescript-eslint/typescript-estree": "1.13.0",
+ "eslint-scope": "^4.0.0"
+ }
+ },
+ "@typescript-eslint/parser": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.13.0.tgz",
+ "integrity": "sha512-ITMBs52PCPgLb2nGPoeT4iU3HdQZHcPaZVw+7CsFagRJHUhyeTgorEwHXhFf3e7Evzi8oujKNpHc8TONth8AdQ==",
+ "dev": true,
+ "requires": {
+ "@types/eslint-visitor-keys": "^1.0.0",
+ "@typescript-eslint/experimental-utils": "1.13.0",
+ "@typescript-eslint/typescript-estree": "1.13.0",
+ "eslint-visitor-keys": "^1.0.0"
+ }
+ },
+ "@typescript-eslint/typescript-estree": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz",
+ "integrity": "sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw==",
+ "dev": true,
+ "requires": {
+ "lodash.unescape": "4.0.1",
+ "semver": "5.5.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
+ "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
+ "dev": true
+ }
+ }
+ },
+ "abab": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz",
+ "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==",
+ "dev": true
+ },
+ "abort-controller": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "requires": {
+ "event-target-shim": "^5.0.0"
+ }
+ },
+ "absolute-path": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz",
+ "integrity": "sha1-p4di+9rftSl76ZsV01p4Wy8JW/c="
+ },
+ "accepts": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+ "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+ "requires": {
+ "mime-types": "~2.1.24",
+ "negotiator": "0.6.2"
+ }
+ },
+ "acorn": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz",
+ "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==",
+ "dev": true
+ },
+ "acorn-globals": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz",
+ "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==",
+ "dev": true,
+ "requires": {
+ "acorn": "^6.0.1",
+ "acorn-walk": "^6.0.1"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz",
+ "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==",
+ "dev": true
+ }
+ }
+ },
+ "acorn-jsx": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz",
+ "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
+ "dev": true
+ },
+ "acorn-walk": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz",
+ "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==",
+ "dev": true
+ },
+ "ajv": {
+ "version": "6.10.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
+ "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^2.0.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ansi-colors": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
+ "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
+ "requires": {
+ "ansi-wrap": "^0.1.0"
+ }
+ },
+ "ansi-cyan": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz",
+ "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-escapes": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ=="
+ },
+ "ansi-fragments": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz",
+ "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==",
+ "requires": {
+ "colorette": "^1.0.7",
+ "slice-ansi": "^2.0.0",
+ "strip-ansi": "^5.0.0"
+ }
+ },
+ "ansi-gray": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
+ "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-red": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
+ "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "ansi-wrap": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
+ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768="
+ },
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ }
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ="
+ },
+ "array-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
+ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
+ "dev": true
+ },
+ "array-filter": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
+ "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw="
+ },
+ "array-includes": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
+ "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.7.0"
+ }
+ },
+ "array-map": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
+ "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI="
+ },
+ "array-reduce": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
+ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys="
+ },
+ "array-slice": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
+ "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "art": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/art/-/art-0.10.3.tgz",
+ "integrity": "sha512-HXwbdofRTiJT6qZX/FnchtldzJjS3vkLJxQilc3Xj+ma2MXjY4UAyQ0ls1XZYVnDvVIBiFZbC6QsvtW86TD6tQ=="
+ },
+ "asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
+ },
+ "asn1": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
+ },
+ "astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg=="
+ },
+ "async": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
+ "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+ "requires": {
+ "lodash": "^4.17.14"
+ }
+ },
+ "async-limiter": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
+ "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+ "dev": true
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+ "dev": true
+ },
+ "aws4": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
+ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
+ "dev": true
+ },
+ "babel-eslint": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz",
+ "integrity": "sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/parser": "^7.0.0",
+ "@babel/traverse": "^7.0.0",
+ "@babel/types": "^7.0.0",
+ "eslint-scope": "3.7.1",
+ "eslint-visitor-keys": "^1.0.0"
+ },
+ "dependencies": {
+ "eslint-scope": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
+ "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ }
+ }
+ },
+ "babel-jest": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz",
+ "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==",
+ "dev": true,
+ "requires": {
+ "@jest/transform": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "@types/babel__core": "^7.1.0",
+ "babel-plugin-istanbul": "^5.1.0",
+ "babel-preset-jest": "^24.9.0",
+ "chalk": "^2.4.2",
+ "slash": "^2.0.0"
+ },
+ "dependencies": {
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true
+ }
+ }
+ },
+ "babel-plugin-dynamic-import-node": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz",
+ "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==",
+ "requires": {
+ "object.assign": "^4.1.0"
+ }
+ },
+ "babel-plugin-istanbul": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz",
+ "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "find-up": "^3.0.0",
+ "istanbul-lib-instrument": "^3.3.0",
+ "test-exclude": "^5.2.3"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ }
+ }
+ },
+ "babel-plugin-jest-hoist": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz",
+ "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==",
+ "dev": true,
+ "requires": {
+ "@types/babel__traverse": "^7.0.6"
+ }
+ },
+ "babel-plugin-syntax-trailing-function-commas": {
+ "version": "7.0.0-beta.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz",
+ "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ=="
+ },
+ "babel-preset-fbjs": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.3.0.tgz",
+ "integrity": "sha512-7QTLTCd2gwB2qGoi5epSULMHugSVgpcVt5YAeiFO9ABLrutDQzKfGwzxgZHLpugq8qMdg/DhRZDZ5CLKxBkEbw==",
+ "requires": {
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+ "@babel/plugin-syntax-class-properties": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.0.0",
+ "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
+ "@babel/plugin-transform-arrow-functions": "^7.0.0",
+ "@babel/plugin-transform-block-scoped-functions": "^7.0.0",
+ "@babel/plugin-transform-block-scoping": "^7.0.0",
+ "@babel/plugin-transform-classes": "^7.0.0",
+ "@babel/plugin-transform-computed-properties": "^7.0.0",
+ "@babel/plugin-transform-destructuring": "^7.0.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.0.0",
+ "@babel/plugin-transform-for-of": "^7.0.0",
+ "@babel/plugin-transform-function-name": "^7.0.0",
+ "@babel/plugin-transform-literals": "^7.0.0",
+ "@babel/plugin-transform-member-expression-literals": "^7.0.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+ "@babel/plugin-transform-object-super": "^7.0.0",
+ "@babel/plugin-transform-parameters": "^7.0.0",
+ "@babel/plugin-transform-property-literals": "^7.0.0",
+ "@babel/plugin-transform-react-display-name": "^7.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+ "@babel/plugin-transform-spread": "^7.0.0",
+ "@babel/plugin-transform-template-literals": "^7.0.0",
+ "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0"
+ }
+ },
+ "babel-preset-jest": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz",
+ "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
+ "babel-plugin-jest-hoist": "^24.9.0"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "requires": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "base64-js": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
+ "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
+ },
+ "basic-auth": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
+ "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
+ "requires": {
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "dev": true,
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "big-integer": {
+ "version": "1.6.48",
+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz",
+ "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w=="
+ },
+ "blueimp-md5": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.12.0.tgz",
+ "integrity": "sha512-zo+HIdIhzojv6F1siQPqPFROyVy7C50KzHv/k/Iz+BtvtVzSHXiMXOpq2wCfNkeBqdCv+V8XOV96tsEt2W/3rQ=="
+ },
+ "bplist-creator": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz",
+ "integrity": "sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==",
+ "requires": {
+ "stream-buffers": "~2.2.0"
+ }
+ },
+ "bplist-parser": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
+ "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==",
+ "requires": {
+ "big-integer": "^1.6.44"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "browser-process-hrtime": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz",
+ "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==",
+ "dev": true
+ },
+ "browser-resolve": {
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz",
+ "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==",
+ "dev": true,
+ "requires": {
+ "resolve": "1.1.7"
+ },
+ "dependencies": {
+ "resolve": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
+ "dev": true
+ }
+ }
+ },
+ "bser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
+ "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+ "requires": {
+ "node-int64": "^0.4.0"
+ }
+ },
+ "buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI="
+ },
+ "buffer-from": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+ },
+ "bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "requires": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ }
+ },
+ "caller-callsite": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
+ "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
+ "requires": {
+ "callsites": "^2.0.0"
+ }
+ },
+ "caller-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
+ "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
+ "requires": {
+ "caller-callsite": "^2.0.0"
+ }
+ },
+ "callsites": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
+ "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA="
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+ },
+ "capture-exit": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz",
+ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==",
+ "requires": {
+ "rsvp": "^4.8.4"
+ }
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "chardet": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
+ "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I="
+ },
+ "ci-info": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
+ },
+ "clamp": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/clamp/-/clamp-1.0.1.tgz",
+ "integrity": "sha1-ZqDmQBGBbjcZaCj9yMjBRzEshjQ="
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "requires": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "cli-spinners": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz",
+ "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ=="
+ },
+ "cli-width": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk="
+ },
+ "cliui": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+ "requires": {
+ "string-width": "^2.1.1",
+ "strip-ansi": "^4.0.0",
+ "wrap-ansi": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "color": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz",
+ "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==",
+ "requires": {
+ "color-convert": "^1.9.1",
+ "color-string": "^1.5.2"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ },
+ "color-string": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
+ "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
+ "requires": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "color-support": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="
+ },
+ "colorette": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.1.0.tgz",
+ "integrity": "sha512-6S062WDQUXi6hOfkO/sBPVwE5ASXY4G2+b4atvhJfSsuUUhIaUKlkjLe9692Ipyt5/a+IPF5aVTu3V5gvXq5cg=="
+ },
+ "combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "command-exists": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.8.tgz",
+ "integrity": "sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw=="
+ },
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
+ },
+ "component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
+ },
+ "compressible": {
+ "version": "2.0.17",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz",
+ "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==",
+ "requires": {
+ "mime-db": ">= 1.40.0 < 2"
+ }
+ },
+ "compression": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
+ "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+ "requires": {
+ "accepts": "~1.3.5",
+ "bytes": "3.0.0",
+ "compressible": "~2.0.16",
+ "debug": "2.6.9",
+ "on-headers": "~1.0.2",
+ "safe-buffer": "5.1.2",
+ "vary": "~1.1.2"
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "connect": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
+ "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
+ "requires": {
+ "debug": "2.6.9",
+ "finalhandler": "1.1.2",
+ "parseurl": "~1.3.3",
+ "utils-merge": "1.0.1"
+ }
+ },
+ "convert-source-map": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
+ "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
+ "requires": {
+ "safe-buffer": "~5.1.1"
+ }
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
+ },
+ "core-js": {
+ "version": "2.6.10",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz",
+ "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA=="
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "cosmiconfig": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
+ "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
+ "requires": {
+ "import-fresh": "^2.0.0",
+ "is-directory": "^0.3.1",
+ "js-yaml": "^3.13.1",
+ "parse-json": "^4.0.0"
+ }
+ },
+ "create-react-class": {
+ "version": "15.6.3",
+ "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz",
+ "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==",
+ "requires": {
+ "fbjs": "^0.8.9",
+ "loose-envify": "^1.3.1",
+ "object-assign": "^4.1.1"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
+ "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
+ },
+ "fbjs": {
+ "version": "0.8.17",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz",
+ "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=",
+ "requires": {
+ "core-js": "^1.0.0",
+ "isomorphic-fetch": "^2.1.1",
+ "loose-envify": "^1.0.0",
+ "object-assign": "^4.1.0",
+ "promise": "^7.1.1",
+ "setimmediate": "^1.0.5",
+ "ua-parser-js": "^0.7.18"
+ }
+ }
+ }
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ }
+ }
+ },
+ "cssom": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+ "dev": true
+ },
+ "cssstyle": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz",
+ "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==",
+ "dev": true,
+ "requires": {
+ "cssom": "0.3.x"
+ }
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "data-urls": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz",
+ "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==",
+ "dev": true,
+ "requires": {
+ "abab": "^2.0.0",
+ "whatwg-mimetype": "^2.2.0",
+ "whatwg-url": "^7.0.0"
+ },
+ "dependencies": {
+ "whatwg-url": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
+ "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+ "dev": true,
+ "requires": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.1",
+ "webidl-conversions": "^4.0.2"
+ }
+ }
+ }
+ },
+ "dayjs": {
+ "version": "1.8.17",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.17.tgz",
+ "integrity": "sha512-47VY/htqYqr9GHd7HW/h56PpQzRBSJcxIQFwqL3P20bMF/3az5c3PWdVY3LmPXFl6cQCYHL7c79b9ov+2bOBbw=="
+ },
+ "debounce": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz",
+ "integrity": "sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg=="
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "deepmerge": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz",
+ "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA=="
+ },
+ "defaults": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
+ "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
+ "requires": {
+ "clone": "^1.0.2"
+ }
+ },
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "requires": {
+ "object-keys": "^1.0.12"
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "dev": true
+ },
+ "denodeify": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz",
+ "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE="
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+ },
+ "detect-newline": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz",
+ "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=",
+ "dev": true
+ },
+ "diff-sequences": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz",
+ "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==",
+ "dev": true
+ },
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "domexception": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz",
+ "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==",
+ "dev": true,
+ "requires": {
+ "webidl-conversions": "^4.0.2"
+ }
+ },
+ "ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+ "dev": true,
+ "requires": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
+ },
+ "encoding": {
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
+ "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
+ "requires": {
+ "iconv-lite": "~0.4.13"
+ }
+ },
+ "end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "envinfo": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.4.0.tgz",
+ "integrity": "sha512-FdDfnWnCVjxTTpWE3d6Jgh5JDIA3Cw7LCgpM/pI7kK1ORkjaqI2r6NqQ+ln2j0dfpgxY00AWieSvtkiZQKIItA=="
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "errorhandler": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz",
+ "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==",
+ "requires": {
+ "accepts": "~1.3.7",
+ "escape-html": "~1.0.3"
+ }
+ },
+ "es-abstract": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz",
+ "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.2.0",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.0",
+ "is-callable": "^1.1.4",
+ "is-regex": "^1.0.4",
+ "object-inspect": "^1.6.0",
+ "object-keys": "^1.1.1",
+ "string.prototype.trimleft": "^2.1.0",
+ "string.prototype.trimright": "^2.1.0"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+ },
+ "escodegen": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz",
+ "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==",
+ "dev": true,
+ "requires": {
+ "esprima": "^3.1.3",
+ "estraverse": "^4.2.0",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
+ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "eslint": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.6.0.tgz",
+ "integrity": "sha512-PpEBq7b6qY/qrOmpYQ/jTMDYfuQMELR4g4WI1M/NaSDDD/bdcMb+dj4Hgks7p41kW2caXsPsEZAEAyAgjVVC0g==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "ajv": "^6.10.0",
+ "chalk": "^2.1.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "eslint-scope": "^5.0.0",
+ "eslint-utils": "^1.4.3",
+ "eslint-visitor-keys": "^1.1.0",
+ "espree": "^6.1.2",
+ "esquery": "^1.0.1",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^5.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^5.0.0",
+ "globals": "^11.7.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^7.0.0",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.3.0",
+ "lodash": "^4.17.14",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.2",
+ "progress": "^2.0.0",
+ "regexpp": "^2.0.1",
+ "semver": "^6.1.2",
+ "strip-ansi": "^5.2.0",
+ "strip-json-comments": "^3.0.1",
+ "table": "^5.2.3",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ },
+ "dependencies": {
+ "ansi-escapes": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz",
+ "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.5.2"
+ }
+ },
+ "ansi-regex": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "dev": true
+ },
+ "chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^3.1.0"
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "eslint-scope": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
+ "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "dev": true,
+ "requires": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ }
+ },
+ "figures": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz",
+ "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "import-fresh": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
+ "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
+ "dev": true,
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "inquirer": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz",
+ "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^2.4.2",
+ "cli-cursor": "^3.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^3.0.0",
+ "lodash": "^4.17.15",
+ "mute-stream": "0.0.8",
+ "run-async": "^2.2.0",
+ "rxjs": "^6.4.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^5.1.0",
+ "through": "^2.3.6"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "dev": true
+ },
+ "onetime": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
+ "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true
+ },
+ "restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "dev": true,
+ "requires": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "rxjs": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
+ "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "string-width": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "dependencies": {
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ }
+ }
+ },
+ "type-fest": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz",
+ "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-config-prettier": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.5.0.tgz",
+ "integrity": "sha512-cjXp8SbO9VFGW/Z7mbTydqS9to8Z58E5aYhj3e1+Hx7lS9s6gL5ILKNpCqZAFOVYRcSkWPFYljHrEh8QFEK5EQ==",
+ "requires": {
+ "get-stdin": "^6.0.0"
+ }
+ },
+ "eslint-plugin-eslint-comments": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.1.2.tgz",
+ "integrity": "sha512-QexaqrNeteFfRTad96W+Vi4Zj1KFbkHHNMMaHZEYcovKav6gdomyGzaxSDSL3GoIyUOo078wRAdYlu1caiauIQ==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5",
+ "ignore": "^5.0.5"
+ }
+ },
+ "eslint-plugin-flowtype": {
+ "version": "2.50.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.3.tgz",
+ "integrity": "sha512-X+AoKVOr7Re0ko/yEXyM5SSZ0tazc6ffdIOocp2fFUlWoDt7DV0Bz99mngOkAFLOAWjqRA5jPwqUCbrx13XoxQ==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.10"
+ }
+ },
+ "eslint-plugin-jest": {
+ "version": "22.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-22.4.1.tgz",
+ "integrity": "sha512-gcLfn6P2PrFAVx3AobaOzlIEevpAEf9chTpFZz7bYfc7pz8XRv7vuKTIE4hxPKZSha6XWKKplDQ0x9Pq8xX2mg==",
+ "dev": true
+ },
+ "eslint-plugin-prettier": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.2.tgz",
+ "integrity": "sha512-tGek5clmW5swrAx1mdPYM8oThrBE83ePh7LeseZHBWfHVGrHPhKn7Y5zgRMbU/9D5Td9K4CEmUPjGxA7iw98Og==",
+ "dev": true,
+ "requires": {
+ "fast-diff": "^1.1.1",
+ "jest-docblock": "^21.0.0"
+ }
+ },
+ "eslint-plugin-react": {
+ "version": "7.12.4",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.12.4.tgz",
+ "integrity": "sha512-1puHJkXJY+oS1t467MjbqjvX53uQ05HXwjqDgdbGBqf5j9eeydI54G3KwiJmWciQ0HTBacIKw2jgwSBSH3yfgQ==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.0.3",
+ "doctrine": "^2.1.0",
+ "has": "^1.0.3",
+ "jsx-ast-utils": "^2.0.1",
+ "object.fromentries": "^2.0.0",
+ "prop-types": "^15.6.2",
+ "resolve": "^1.9.0"
+ }
+ },
+ "eslint-plugin-react-hooks": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz",
+ "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==",
+ "dev": true
+ },
+ "eslint-plugin-react-native": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-native/-/eslint-plugin-react-native-3.6.0.tgz",
+ "integrity": "sha512-BEQcHZ06hZSBYWFVuNEq0xuui5VEsWpHDsZGBtfadHfCRqRMUrkYPgdDb3bpc60qShHE83kqIv59uKdinEg91Q==",
+ "dev": true,
+ "requires": {
+ "eslint-plugin-react-native-globals": "^0.1.1"
+ }
+ },
+ "eslint-plugin-react-native-globals": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-native-globals/-/eslint-plugin-react-native-globals-0.1.2.tgz",
+ "integrity": "sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==",
+ "dev": true
+ },
+ "eslint-scope": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
+ "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "eslint-utils": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
+ "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
+ "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
+ "dev": true
+ },
+ "espree": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz",
+ "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==",
+ "dev": true,
+ "requires": {
+ "acorn": "^7.1.0",
+ "acorn-jsx": "^5.1.0",
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
+ },
+ "esquery": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
+ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.0.0"
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.1.0"
+ }
+ },
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
+ },
+ "event-target-shim": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
+ },
+ "eventemitter3": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
+ "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q=="
+ },
+ "exec-sh": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz",
+ "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A=="
+ },
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "requires": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
+ "dev": true
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "expect": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz",
+ "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "ansi-styles": "^3.2.0",
+ "jest-get-type": "^24.9.0",
+ "jest-matcher-utils": "^24.9.0",
+ "jest-message-util": "^24.9.0",
+ "jest-regex-util": "^24.9.0"
+ }
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "external-editor": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
+ "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
+ "requires": {
+ "chardet": "^0.4.0",
+ "iconv-lite": "^0.4.17",
+ "tmp": "^0.0.33"
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+ "dev": true
+ },
+ "fancy-log": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
+ "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
+ "requires": {
+ "ansi-gray": "^0.1.1",
+ "color-support": "^1.1.3",
+ "parse-node-version": "^1.0.0",
+ "time-stamp": "^1.0.0"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+ "dev": true
+ },
+ "fast-diff": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
+ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
+ "dev": true
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "fb-watchman": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz",
+ "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=",
+ "requires": {
+ "bser": "^2.0.0"
+ }
+ },
+ "fbjs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz",
+ "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==",
+ "requires": {
+ "core-js": "^2.4.1",
+ "fbjs-css-vars": "^1.0.0",
+ "isomorphic-fetch": "^2.1.1",
+ "loose-envify": "^1.0.0",
+ "object-assign": "^4.1.0",
+ "promise": "^7.1.1",
+ "setimmediate": "^1.0.5",
+ "ua-parser-js": "^0.7.18"
+ }
+ },
+ "fbjs-css-vars": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz",
+ "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ=="
+ },
+ "fbjs-scripts": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fbjs-scripts/-/fbjs-scripts-1.2.0.tgz",
+ "integrity": "sha512-5krZ8T0Bf8uky0abPoCLrfa7Orxd8UH4Qq8hRUF2RZYNMu+FmEOrBc7Ib3YVONmxTXTlLAvyrrdrVmksDb2OqQ==",
+ "requires": {
+ "@babel/core": "^7.0.0",
+ "ansi-colors": "^1.0.1",
+ "babel-preset-fbjs": "^3.2.0",
+ "core-js": "^2.4.1",
+ "cross-spawn": "^5.1.0",
+ "fancy-log": "^1.3.2",
+ "object-assign": "^4.0.1",
+ "plugin-error": "^0.1.2",
+ "semver": "^5.1.0",
+ "through2": "^2.0.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ }
+ }
+ },
+ "figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "file-entry-cache": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^2.0.1"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "finalhandler": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.3",
+ "statuses": "~1.5.0",
+ "unpipe": "~1.0.0"
+ }
+ },
+ "find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
+ }
+ },
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "dependencies": {
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
+ }
+ }
+ },
+ "flat-cache": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "dev": true,
+ "requires": {
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "flatted": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
+ "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
+ "dev": true
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+ "dev": true
+ },
+ "form-data": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "dev": true,
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
+ },
+ "fs-extra": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+ },
+ "fsevents": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz",
+ "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==",
+ "optional": true,
+ "requires": {
+ "nan": "^2.12.1",
+ "node-pre-gyp": "^0.12.0"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "bundled": true,
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true,
+ "optional": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "bundled": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chownr": {
+ "version": "1.1.1",
+ "bundled": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true,
+ "optional": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true,
+ "optional": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true,
+ "optional": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "debug": {
+ "version": "4.1.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "bundled": true,
+ "optional": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "bundled": true,
+ "optional": true
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.3",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "bundled": true,
+ "optional": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true,
+ "optional": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "bundled": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true,
+ "optional": true
+ },
+ "minipass": {
+ "version": "2.3.5",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.2.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "bundled": true,
+ "optional": true
+ },
+ "needle": {
+ "version": "2.3.0",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "debug": "^4.1.0",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.12.0",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "detect-libc": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "needle": "^2.2.1",
+ "nopt": "^4.0.1",
+ "npm-packlist": "^1.1.6",
+ "npmlog": "^4.0.2",
+ "rc": "^1.2.7",
+ "rimraf": "^2.6.1",
+ "semver": "^5.3.0",
+ "tar": "^4"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.0.6",
+ "bundled": true,
+ "optional": true
+ },
+ "npm-packlist": {
+ "version": "1.4.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true,
+ "optional": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.8",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "bundled": true,
+ "optional": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "bundled": true,
+ "optional": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "bundled": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.7.0",
+ "bundled": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "4.4.8",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "chownr": "^1.1.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.3.4",
+ "minizlib": "^1.1.1",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.2"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "yallist": {
+ "version": "3.0.3",
+ "bundled": true,
+ "optional": true
+ }
+ }
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="
+ },
+ "get-stdin": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz",
+ "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g=="
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
+ "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
+ },
+ "graceful-fs": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
+ "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
+ },
+ "growly": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
+ "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE="
+ },
+ "hammerjs": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz",
+ "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE="
+ },
+ "handlebars": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.2.tgz",
+ "integrity": "sha512-29Zxv/cynYB7mkT1rVWQnV7mGX6v7H/miQ6dbEpYTKq5eJBN7PsRB+ViYJlcT6JINTSu4dVB9kOqEun78h6Exg==",
+ "dev": true,
+ "requires": {
+ "neo-async": "^2.6.0",
+ "optimist": "^0.6.1",
+ "source-map": "^0.6.1",
+ "uglify-js": "^3.1.4"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "3.6.9",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.9.tgz",
+ "integrity": "sha512-pcnnhaoG6RtrvHJ1dFncAe8Od6Nuy30oaJ82ts6//sGSXOP5UjBMEthiProjXmMNHOfd93sqlkztifFMcb+4yw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "commander": "~2.20.3",
+ "source-map": "~0.6.1"
+ }
+ }
+ }
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+ "dev": true
+ },
+ "har-validator": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
+ "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.5.5",
+ "har-schema": "^2.0.0"
+ }
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ }
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
+ },
+ "has-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
+ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q="
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "hermes-engine": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/hermes-engine/-/hermes-engine-0.2.1.tgz",
+ "integrity": "sha512-eNHUQHuadDMJARpaqvlCZoK/Nitpj6oywq3vQ3wCwEsww5morX34mW5PmKWQTO7aU0ck0hgulxR+EVDlXygGxQ=="
+ },
+ "hoist-non-react-statics": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz",
+ "integrity": "sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs="
+ },
+ "hosted-git-info": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
+ "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg=="
+ },
+ "html-encoding-sniffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
+ "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
+ "dev": true,
+ "requires": {
+ "whatwg-encoding": "^1.0.1"
+ }
+ },
+ "http-errors": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
+ "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.1.1",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.0"
+ }
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz",
+ "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==",
+ "dev": true
+ },
+ "image-size": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz",
+ "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA=="
+ },
+ "import-fresh": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
+ "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
+ "requires": {
+ "caller-path": "^2.0.0",
+ "resolve-from": "^3.0.0"
+ }
+ },
+ "import-local": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
+ "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
+ "dev": true,
+ "requires": {
+ "pkg-dir": "^3.0.0",
+ "resolve-cwd": "^2.0.0"
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "inquirer": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
+ "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
+ "requires": {
+ "ansi-escapes": "^3.0.0",
+ "chalk": "^2.0.0",
+ "cli-cursor": "^2.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^2.0.4",
+ "figures": "^2.0.0",
+ "lodash": "^4.3.0",
+ "mute-stream": "0.0.7",
+ "run-async": "^2.2.0",
+ "rx-lite": "^4.0.8",
+ "rx-lite-aggregates": "^4.0.8",
+ "string-width": "^2.1.0",
+ "strip-ansi": "^4.0.0",
+ "through": "^2.3.6"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "requires": {
+ "loose-envify": "^1.0.0"
+ }
+ },
+ "invert-kv": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA=="
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ },
+ "is-callable": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
+ "dev": true
+ },
+ "is-ci": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+ "requires": {
+ "ci-info": "^2.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-date-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+ "dev": true
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+ }
+ }
+ },
+ "is-directory": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
+ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE="
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+ },
+ "is-generator-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
+ },
+ "is-regex": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.1"
+ }
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
+ },
+ "is-symbol": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
+ "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.0"
+ }
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="
+ },
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0="
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ },
+ "isomorphic-fetch": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
+ "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
+ "requires": {
+ "node-fetch": "^1.0.1",
+ "whatwg-fetch": ">=0.10.0"
+ },
+ "dependencies": {
+ "node-fetch": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
+ "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
+ "requires": {
+ "encoding": "^0.1.11",
+ "is-stream": "^1.0.1"
+ }
+ }
+ }
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+ "dev": true
+ },
+ "istanbul-lib-coverage": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
+ "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==",
+ "dev": true
+ },
+ "istanbul-lib-instrument": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz",
+ "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==",
+ "dev": true,
+ "requires": {
+ "@babel/generator": "^7.4.0",
+ "@babel/parser": "^7.4.3",
+ "@babel/template": "^7.4.0",
+ "@babel/traverse": "^7.4.3",
+ "@babel/types": "^7.4.0",
+ "istanbul-lib-coverage": "^2.0.5",
+ "semver": "^6.0.0"
+ }
+ },
+ "istanbul-lib-report": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz",
+ "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==",
+ "dev": true,
+ "requires": {
+ "istanbul-lib-coverage": "^2.0.5",
+ "make-dir": "^2.1.0",
+ "supports-color": "^6.1.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "istanbul-lib-source-maps": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz",
+ "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^2.0.5",
+ "make-dir": "^2.1.0",
+ "rimraf": "^2.6.3",
+ "source-map": "^0.6.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "istanbul-reports": {
+ "version": "2.2.6",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz",
+ "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==",
+ "dev": true,
+ "requires": {
+ "handlebars": "^4.1.2"
+ }
+ },
+ "jest": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz",
+ "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==",
+ "dev": true,
+ "requires": {
+ "import-local": "^2.0.0",
+ "jest-cli": "^24.9.0"
+ },
+ "dependencies": {
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true
+ },
+ "jest-cli": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz",
+ "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==",
+ "dev": true,
+ "requires": {
+ "@jest/core": "^24.9.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "chalk": "^2.0.1",
+ "exit": "^0.1.2",
+ "import-local": "^2.0.0",
+ "is-ci": "^2.0.0",
+ "jest-config": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jest-validate": "^24.9.0",
+ "prompts": "^2.0.1",
+ "realpath-native": "^1.1.0",
+ "yargs": "^13.3.0"
+ }
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ }
+ },
+ "yargs": {
+ "version": "13.3.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz",
+ "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==",
+ "dev": true,
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.1"
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
+ "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "jest-changed-files": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz",
+ "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "execa": "^1.0.0",
+ "throat": "^4.0.0"
+ }
+ },
+ "jest-config": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz",
+ "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.1.0",
+ "@jest/test-sequencer": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "babel-jest": "^24.9.0",
+ "chalk": "^2.0.1",
+ "glob": "^7.1.1",
+ "jest-environment-jsdom": "^24.9.0",
+ "jest-environment-node": "^24.9.0",
+ "jest-get-type": "^24.9.0",
+ "jest-jasmine2": "^24.9.0",
+ "jest-regex-util": "^24.3.0",
+ "jest-resolve": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jest-validate": "^24.9.0",
+ "micromatch": "^3.1.10",
+ "pretty-format": "^24.9.0",
+ "realpath-native": "^1.1.0"
+ }
+ },
+ "jest-diff": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz",
+ "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.1",
+ "diff-sequences": "^24.9.0",
+ "jest-get-type": "^24.9.0",
+ "pretty-format": "^24.9.0"
+ }
+ },
+ "jest-docblock": {
+ "version": "21.2.0",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz",
+ "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==",
+ "dev": true
+ },
+ "jest-each": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz",
+ "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "chalk": "^2.0.1",
+ "jest-get-type": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "pretty-format": "^24.9.0"
+ }
+ },
+ "jest-environment-jsdom": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz",
+ "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==",
+ "dev": true,
+ "requires": {
+ "@jest/environment": "^24.9.0",
+ "@jest/fake-timers": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "jest-mock": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jsdom": "^11.5.1"
+ }
+ },
+ "jest-environment-node": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz",
+ "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==",
+ "dev": true,
+ "requires": {
+ "@jest/environment": "^24.9.0",
+ "@jest/fake-timers": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "jest-mock": "^24.9.0",
+ "jest-util": "^24.9.0"
+ }
+ },
+ "jest-get-type": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz",
+ "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q=="
+ },
+ "jest-haste-map": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz",
+ "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==",
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "anymatch": "^2.0.0",
+ "fb-watchman": "^2.0.0",
+ "fsevents": "^1.2.7",
+ "graceful-fs": "^4.1.15",
+ "invariant": "^2.2.4",
+ "jest-serializer": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jest-worker": "^24.9.0",
+ "micromatch": "^3.1.10",
+ "sane": "^4.0.3",
+ "walker": "^1.0.7"
+ }
+ },
+ "jest-jasmine2": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz",
+ "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==",
+ "dev": true,
+ "requires": {
+ "@babel/traverse": "^7.1.0",
+ "@jest/environment": "^24.9.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "chalk": "^2.0.1",
+ "co": "^4.6.0",
+ "expect": "^24.9.0",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^24.9.0",
+ "jest-matcher-utils": "^24.9.0",
+ "jest-message-util": "^24.9.0",
+ "jest-runtime": "^24.9.0",
+ "jest-snapshot": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "pretty-format": "^24.9.0",
+ "throat": "^4.0.0"
+ }
+ },
+ "jest-leak-detector": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz",
+ "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==",
+ "dev": true,
+ "requires": {
+ "jest-get-type": "^24.9.0",
+ "pretty-format": "^24.9.0"
+ }
+ },
+ "jest-matcher-utils": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz",
+ "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.1",
+ "jest-diff": "^24.9.0",
+ "jest-get-type": "^24.9.0",
+ "pretty-format": "^24.9.0"
+ }
+ },
+ "jest-message-util": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz",
+ "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==",
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "@types/stack-utils": "^1.0.1",
+ "chalk": "^2.0.1",
+ "micromatch": "^3.1.10",
+ "slash": "^2.0.0",
+ "stack-utils": "^1.0.1"
+ },
+ "dependencies": {
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A=="
+ }
+ }
+ },
+ "jest-mock": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz",
+ "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==",
+ "requires": {
+ "@jest/types": "^24.9.0"
+ }
+ },
+ "jest-pnp-resolver": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz",
+ "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==",
+ "dev": true
+ },
+ "jest-react-native": {
+ "version": "18.0.0",
+ "resolved": "https://registry.npmjs.org/jest-react-native/-/jest-react-native-18.0.0.tgz",
+ "integrity": "sha1-d92QnwaTJFmfInxYxhwuYhaHJro="
+ },
+ "jest-regex-util": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz",
+ "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==",
+ "dev": true
+ },
+ "jest-resolve": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz",
+ "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "browser-resolve": "^1.11.3",
+ "chalk": "^2.0.1",
+ "jest-pnp-resolver": "^1.2.1",
+ "realpath-native": "^1.1.0"
+ }
+ },
+ "jest-resolve-dependencies": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz",
+ "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "jest-regex-util": "^24.3.0",
+ "jest-snapshot": "^24.9.0"
+ }
+ },
+ "jest-runner": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz",
+ "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==",
+ "dev": true,
+ "requires": {
+ "@jest/console": "^24.7.1",
+ "@jest/environment": "^24.9.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "chalk": "^2.4.2",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.1.15",
+ "jest-config": "^24.9.0",
+ "jest-docblock": "^24.3.0",
+ "jest-haste-map": "^24.9.0",
+ "jest-jasmine2": "^24.9.0",
+ "jest-leak-detector": "^24.9.0",
+ "jest-message-util": "^24.9.0",
+ "jest-resolve": "^24.9.0",
+ "jest-runtime": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jest-worker": "^24.6.0",
+ "source-map-support": "^0.5.6",
+ "throat": "^4.0.0"
+ },
+ "dependencies": {
+ "jest-docblock": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz",
+ "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==",
+ "dev": true,
+ "requires": {
+ "detect-newline": "^2.1.0"
+ }
+ }
+ }
+ },
+ "jest-runtime": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz",
+ "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==",
+ "dev": true,
+ "requires": {
+ "@jest/console": "^24.7.1",
+ "@jest/environment": "^24.9.0",
+ "@jest/source-map": "^24.3.0",
+ "@jest/transform": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "@types/yargs": "^13.0.0",
+ "chalk": "^2.0.1",
+ "exit": "^0.1.2",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.1.15",
+ "jest-config": "^24.9.0",
+ "jest-haste-map": "^24.9.0",
+ "jest-message-util": "^24.9.0",
+ "jest-mock": "^24.9.0",
+ "jest-regex-util": "^24.3.0",
+ "jest-resolve": "^24.9.0",
+ "jest-snapshot": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jest-validate": "^24.9.0",
+ "realpath-native": "^1.1.0",
+ "slash": "^2.0.0",
+ "strip-bom": "^3.0.0",
+ "yargs": "^13.3.0"
+ },
+ "dependencies": {
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
+ },
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ }
+ },
+ "yargs": {
+ "version": "13.3.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz",
+ "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==",
+ "dev": true,
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.1"
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
+ "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "jest-serializer": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz",
+ "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ=="
+ },
+ "jest-snapshot": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz",
+ "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.0.0",
+ "@jest/types": "^24.9.0",
+ "chalk": "^2.0.1",
+ "expect": "^24.9.0",
+ "jest-diff": "^24.9.0",
+ "jest-get-type": "^24.9.0",
+ "jest-matcher-utils": "^24.9.0",
+ "jest-message-util": "^24.9.0",
+ "jest-resolve": "^24.9.0",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^24.9.0",
+ "semver": "^6.2.0"
+ }
+ },
+ "jest-util": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz",
+ "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==",
+ "requires": {
+ "@jest/console": "^24.9.0",
+ "@jest/fake-timers": "^24.9.0",
+ "@jest/source-map": "^24.9.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "callsites": "^3.0.0",
+ "chalk": "^2.0.1",
+ "graceful-fs": "^4.1.15",
+ "is-ci": "^2.0.0",
+ "mkdirp": "^0.5.1",
+ "slash": "^2.0.0",
+ "source-map": "^0.6.0"
+ },
+ "dependencies": {
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
+ },
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A=="
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ }
+ }
+ },
+ "jest-validate": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz",
+ "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==",
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "camelcase": "^5.3.1",
+ "chalk": "^2.0.1",
+ "jest-get-type": "^24.9.0",
+ "leven": "^3.1.0",
+ "pretty-format": "^24.9.0"
+ }
+ },
+ "jest-watcher": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz",
+ "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==",
+ "dev": true,
+ "requires": {
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "@types/yargs": "^13.0.0",
+ "ansi-escapes": "^3.0.0",
+ "chalk": "^2.0.1",
+ "jest-util": "^24.9.0",
+ "string-length": "^2.0.0"
+ }
+ },
+ "jest-worker": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
+ "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
+ "requires": {
+ "merge-stream": "^2.0.0",
+ "supports-color": "^6.1.0"
+ },
+ "dependencies": {
+ "merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "jetifier": {
+ "version": "1.6.4",
+ "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-1.6.4.tgz",
+ "integrity": "sha512-+f/4OLeqY8RAmXnonI1ffeY1DR8kMNJPhv5WMFehchf7U71cjMQVKkOz1n6asz6kfVoAqKNWJz1A/18i18AcXA=="
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "js-yaml": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "dev": true
+ },
+ "jsc-android": {
+ "version": "245459.0.0",
+ "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-245459.0.0.tgz",
+ "integrity": "sha512-wkjURqwaB1daNkDi2OYYbsLnIdC/lUM2nPXQKRs5pqEU9chDg435bjvo+LSaHotDENygHQDHe+ntUkkw2gwMtg=="
+ },
+ "jsdom": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz",
+ "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==",
+ "dev": true,
+ "requires": {
+ "abab": "^2.0.0",
+ "acorn": "^5.5.3",
+ "acorn-globals": "^4.1.0",
+ "array-equal": "^1.0.0",
+ "cssom": ">= 0.3.2 < 0.4.0",
+ "cssstyle": "^1.0.0",
+ "data-urls": "^1.0.0",
+ "domexception": "^1.0.1",
+ "escodegen": "^1.9.1",
+ "html-encoding-sniffer": "^1.0.2",
+ "left-pad": "^1.3.0",
+ "nwsapi": "^2.0.7",
+ "parse5": "4.0.0",
+ "pn": "^1.1.0",
+ "request": "^2.87.0",
+ "request-promise-native": "^1.0.5",
+ "sax": "^1.2.4",
+ "symbol-tree": "^3.2.2",
+ "tough-cookie": "^2.3.4",
+ "w3c-hr-time": "^1.0.1",
+ "webidl-conversions": "^4.0.2",
+ "whatwg-encoding": "^1.0.3",
+ "whatwg-mimetype": "^2.1.0",
+ "whatwg-url": "^6.4.1",
+ "ws": "^5.2.0",
+ "xml-name-validator": "^3.0.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
+ "dev": true
+ },
+ "ws": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz",
+ "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==",
+ "dev": true,
+ "requires": {
+ "async-limiter": "~1.0.0"
+ }
+ }
+ }
+ },
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+ "requires": {
+ "jsonify": "~0.0.0"
+ }
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+ "dev": true
+ },
+ "json5": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
+ "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ }
+ },
+ "jsx-ast-utils": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz",
+ "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.0.3",
+ "object.assign": "^4.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ },
+ "klaw": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
+ "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
+ "requires": {
+ "graceful-fs": "^4.1.9"
+ }
+ },
+ "kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "dev": true
+ },
+ "lcid": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+ "requires": {
+ "invert-kv": "^2.0.0"
+ }
+ },
+ "left-pad": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
+ "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==",
+ "dev": true
+ },
+ "leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "strip-bom": "^3.0.0"
+ },
+ "dependencies": {
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
+ }
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
+ },
+ "lodash.sortby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
+ "dev": true
+ },
+ "lodash.throttle": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
+ "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ="
+ },
+ "lodash.unescape": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz",
+ "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=",
+ "dev": true
+ },
+ "log-symbols": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
+ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
+ "requires": {
+ "chalk": "^2.0.1"
+ }
+ },
+ "logkitty": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.6.1.tgz",
+ "integrity": "sha512-cHuXN8qUZuzX/7kB6VyS7kB4xyD24e8gyHXIFNhIv+fjW3P+jEXNUhj0o/7qWJtv7UZpbnPgUqzu/AZQ8RAqxQ==",
+ "requires": {
+ "ansi-fragments": "^0.2.1",
+ "dayjs": "^1.8.15",
+ "yargs": "^12.0.5"
+ }
+ },
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ }
+ }
+ },
+ "makeerror": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
+ "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
+ "requires": {
+ "tmpl": "1.0.x"
+ }
+ },
+ "map-age-cleaner": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
+ "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+ "requires": {
+ "p-defer": "^1.0.0"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8="
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "mem": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
+ "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
+ "requires": {
+ "map-age-cleaner": "^0.1.1",
+ "mimic-fn": "^2.0.0",
+ "p-is-promise": "^2.0.0"
+ }
+ },
+ "merge-stream": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
+ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
+ "requires": {
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "metro": {
+ "version": "0.56.3",
+ "resolved": "https://registry.npmjs.org/metro/-/metro-0.56.3.tgz",
+ "integrity": "sha512-mxHpvBGWanZ46wAEZVLinNO5IYMcFbTdMZIRhC7r+rvoSK6r9iPj95AujBfzLXMAl36RI2O3D7yp5hOYif/gEQ==",
+ "requires": {
+ "@babel/core": "^7.0.0",
+ "@babel/generator": "^7.0.0",
+ "@babel/parser": "^7.0.0",
+ "@babel/plugin-external-helpers": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "@babel/traverse": "^7.0.0",
+ "@babel/types": "^7.0.0",
+ "absolute-path": "^0.0.0",
+ "async": "^2.4.0",
+ "babel-preset-fbjs": "^3.1.2",
+ "buffer-crc32": "^0.2.13",
+ "chalk": "^2.4.1",
+ "concat-stream": "^1.6.0",
+ "connect": "^3.6.5",
+ "debug": "^2.2.0",
+ "denodeify": "^1.2.1",
+ "eventemitter3": "^3.0.0",
+ "fbjs": "^1.0.0",
+ "fs-extra": "^1.0.0",
+ "graceful-fs": "^4.1.3",
+ "image-size": "^0.6.0",
+ "invariant": "^2.2.4",
+ "jest-haste-map": "^24.7.1",
+ "jest-worker": "^24.6.0",
+ "json-stable-stringify": "^1.0.1",
+ "lodash.throttle": "^4.1.1",
+ "merge-stream": "^1.0.1",
+ "metro-babel-register": "0.56.3",
+ "metro-babel-transformer": "0.56.3",
+ "metro-cache": "0.56.3",
+ "metro-config": "0.56.3",
+ "metro-core": "0.56.3",
+ "metro-inspector-proxy": "0.56.3",
+ "metro-minify-uglify": "0.56.3",
+ "metro-react-native-babel-preset": "0.56.3",
+ "metro-resolver": "0.56.3",
+ "metro-source-map": "0.56.3",
+ "metro-symbolicate": "0.56.3",
+ "mime-types": "2.1.11",
+ "mkdirp": "^0.5.1",
+ "node-fetch": "^2.2.0",
+ "nullthrows": "^1.1.0",
+ "resolve": "^1.5.0",
+ "rimraf": "^2.5.4",
+ "serialize-error": "^2.1.0",
+ "source-map": "^0.5.6",
+ "temp": "0.8.3",
+ "throat": "^4.1.0",
+ "wordwrap": "^1.0.0",
+ "write-file-atomic": "^1.2.0",
+ "ws": "^1.1.5",
+ "xpipe": "^1.0.5",
+ "yargs": "^9.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0="
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wrap-ansi": "^2.0.0"
+ },
+ "dependencies": {
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ }
+ }
+ },
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "requires": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "fs-extra": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
+ "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^2.1.0",
+ "klaw": "^1.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
+ },
+ "invert-kv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "jsonfile": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
+ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "lcid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "requires": {
+ "invert-kv": "^1.0.0"
+ }
+ },
+ "mem": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
+ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "mime-db": {
+ "version": "1.23.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz",
+ "integrity": "sha1-oxtAcK2uon1zLqMzdApk0OyaZlk="
+ },
+ "mime-types": {
+ "version": "2.1.11",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz",
+ "integrity": "sha1-wlnEcb2oCKhdbNGTtDCl+uRHOzw=",
+ "requires": {
+ "mime-db": "~1.23.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
+ },
+ "os-locale": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
+ "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
+ "requires": {
+ "execa": "^0.7.0",
+ "lcid": "^1.0.0",
+ "mem": "^1.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "y18n": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
+ },
+ "yargs": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz",
+ "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=",
+ "requires": {
+ "camelcase": "^4.1.0",
+ "cliui": "^3.2.0",
+ "decamelize": "^1.1.1",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^2.0.0",
+ "read-pkg-up": "^2.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1",
+ "yargs-parser": "^7.0.0"
+ }
+ },
+ "yargs-parser": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
+ "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
+ "requires": {
+ "camelcase": "^4.1.0"
+ }
+ }
+ }
+ },
+ "metro-babel-register": {
+ "version": "0.56.3",
+ "resolved": "https://registry.npmjs.org/metro-babel-register/-/metro-babel-register-0.56.3.tgz",
+ "integrity": "sha512-ILCRtNFdW6vzqmLAG2MYWdTSE1vCAZqDKNggiNhlfViuoxmWAIL0vOqixl1CHZF5z4t55+fk46A0jSN7UgPyVw==",
+ "requires": {
+ "@babel/core": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-transform-async-to-generator": "^7.0.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.0.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+ "@babel/register": "^7.0.0",
+ "core-js": "^2.2.2",
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "metro-babel-transformer": {
+ "version": "0.56.3",
+ "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.56.3.tgz",
+ "integrity": "sha512-N5/ftb3rBkt6uKlgYAv+lwtzYc4dK0tBpfZ8pjec3kcypGuGTuf4LTHEh65EuzySreLngYI0bQzoFSn3G3DYsw==",
+ "requires": {
+ "@babel/core": "^7.0.0",
+ "metro-source-map": "0.56.3"
+ }
+ },
+ "metro-cache": {
+ "version": "0.56.3",
+ "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.56.3.tgz",
+ "integrity": "sha512-SsryVe/TVkt2IkEGnYhB3gQlg9iMlu8WJikQHcCEjMfPEnSIzmeymrX73fwQNPnTnN7F3E0HVjH6Wvq6fh0mcA==",
+ "requires": {
+ "jest-serializer": "^24.4.0",
+ "metro-core": "0.56.3",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4"
+ }
+ },
+ "metro-config": {
+ "version": "0.56.3",
+ "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.56.3.tgz",
+ "integrity": "sha512-C3ZLA5y5gW5auDSQN5dsCTduJg7LXEiX/tLAADOkgXWVImr5P74x9Wt8y1MMWrKx6p+4p5RMDyEwWDMXJt/DwA==",
+ "requires": {
+ "cosmiconfig": "^5.0.5",
+ "jest-validate": "^24.7.0",
+ "metro": "0.56.3",
+ "metro-cache": "0.56.3",
+ "metro-core": "0.56.3",
+ "pretty-format": "^24.7.0"
+ }
+ },
+ "metro-core": {
+ "version": "0.56.3",
+ "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.56.3.tgz",
+ "integrity": "sha512-OAaHP3mBdlACMZRwDJzZzYC0o2S3qfb4BBK75L8H4Ds+y3QUSrjsDEpHACcpaMTOds8rBvjzn+jjB5tqNoHfBA==",
+ "requires": {
+ "jest-haste-map": "^24.7.1",
+ "lodash.throttle": "^4.1.1",
+ "metro-resolver": "0.56.3",
+ "wordwrap": "^1.0.0"
+ }
+ },
+ "metro-inspector-proxy": {
+ "version": "0.56.3",
+ "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.56.3.tgz",
+ "integrity": "sha512-7WtHinw+VJcunQ3q8El1MqqzYSRvXEjW5QE13VYwcLtnay3pvcqACeiQmGbWI0IqxB1+QH8tf3nkA7z7pQ7Vpw==",
+ "requires": {
+ "connect": "^3.6.5",
+ "debug": "^2.2.0",
+ "rxjs": "^5.4.3",
+ "ws": "^1.1.5",
+ "yargs": "^9.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0="
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wrap-ansi": "^2.0.0"
+ },
+ "dependencies": {
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ }
+ }
+ },
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "requires": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
+ },
+ "invert-kv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "lcid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "requires": {
+ "invert-kv": "^1.0.0"
+ }
+ },
+ "mem": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
+ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
+ },
+ "os-locale": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
+ "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
+ "requires": {
+ "execa": "^0.7.0",
+ "lcid": "^1.0.0",
+ "mem": "^1.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "y18n": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
+ },
+ "yargs": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz",
+ "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=",
+ "requires": {
+ "camelcase": "^4.1.0",
+ "cliui": "^3.2.0",
+ "decamelize": "^1.1.1",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^2.0.0",
+ "read-pkg-up": "^2.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1",
+ "yargs-parser": "^7.0.0"
+ }
+ },
+ "yargs-parser": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
+ "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
+ "requires": {
+ "camelcase": "^4.1.0"
+ }
+ }
+ }
+ },
+ "metro-minify-uglify": {
+ "version": "0.56.3",
+ "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.56.3.tgz",
+ "integrity": "sha512-b9ljyeUpkJWVlFy8M/i4aNbvEBI0zN9vJh1jfU7yx+k9dX7FulLnpGmAQxxQdEszcM//sJrsKNS1oLYBxr0NMQ==",
+ "requires": {
+ "uglify-es": "^3.1.9"
+ }
+ },
+ "metro-react-native-babel-preset": {
+ "version": "0.56.3",
+ "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.56.3.tgz",
+ "integrity": "sha512-tGPzX2ZwI8vQ8SiNVBPUIgKqmaRNVB6rtJtHCBQZAYRiMbxh0NHCUoFfKBej6U5qVgxiYYHyN8oB23evG4/Oow==",
+ "requires": {
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+ "@babel/plugin-syntax-export-default-from": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.2.0",
+ "@babel/plugin-transform-arrow-functions": "^7.0.0",
+ "@babel/plugin-transform-block-scoping": "^7.0.0",
+ "@babel/plugin-transform-classes": "^7.0.0",
+ "@babel/plugin-transform-computed-properties": "^7.0.0",
+ "@babel/plugin-transform-destructuring": "^7.0.0",
+ "@babel/plugin-transform-exponentiation-operator": "^7.0.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.0.0",
+ "@babel/plugin-transform-for-of": "^7.0.0",
+ "@babel/plugin-transform-function-name": "^7.0.0",
+ "@babel/plugin-transform-literals": "^7.0.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+ "@babel/plugin-transform-object-assign": "^7.0.0",
+ "@babel/plugin-transform-parameters": "^7.0.0",
+ "@babel/plugin-transform-react-display-name": "^7.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-source": "^7.0.0",
+ "@babel/plugin-transform-regenerator": "^7.0.0",
+ "@babel/plugin-transform-runtime": "^7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+ "@babel/plugin-transform-spread": "^7.0.0",
+ "@babel/plugin-transform-sticky-regex": "^7.0.0",
+ "@babel/plugin-transform-template-literals": "^7.0.0",
+ "@babel/plugin-transform-typescript": "^7.0.0",
+ "@babel/plugin-transform-unicode-regex": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "react-refresh": "^0.4.0"
+ }
+ },
+ "metro-react-native-babel-transformer": {
+ "version": "0.56.3",
+ "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.56.3.tgz",
+ "integrity": "sha512-T87m4jDu0gIvJo8kWEvkodWFgQ8XBzJUESs1hUUTBSMIqTa31MdWfA1gs+MipadG7OsEJpcb9m83mGr8K70MWw==",
+ "requires": {
+ "@babel/core": "^7.0.0",
+ "babel-preset-fbjs": "^3.1.2",
+ "metro-babel-transformer": "0.56.3",
+ "metro-react-native-babel-preset": "0.56.3",
+ "metro-source-map": "0.56.3"
+ }
+ },
+ "metro-resolver": {
+ "version": "0.56.3",
+ "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.56.3.tgz",
+ "integrity": "sha512-VvMl4xUp0fy76WiP3YDtzMmrn6tN/jwxOBqlTy9MjN6R9sUXrGyO5thwn/uKQqp5vwBTuJev7nZL7OKzwludKA==",
+ "requires": {
+ "absolute-path": "^0.0.0"
+ }
+ },
+ "metro-source-map": {
+ "version": "0.56.3",
+ "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.56.3.tgz",
+ "integrity": "sha512-CheqWbJZSM0zjcNBqELUiocwH3XArrOk6alhVuzJ2gV/WTMBQFwP0TtQssSMwjnouMHNEzY8RxErXKXBk/zJmQ==",
+ "requires": {
+ "@babel/traverse": "^7.0.0",
+ "@babel/types": "^7.0.0",
+ "invariant": "^2.2.4",
+ "metro-symbolicate": "0.56.3",
+ "ob1": "0.56.3",
+ "source-map": "^0.5.6",
+ "vlq": "^1.0.0"
+ }
+ },
+ "metro-symbolicate": {
+ "version": "0.56.3",
+ "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.56.3.tgz",
+ "integrity": "sha512-fSQtjjy4eiJDThSl9eloxMElhrs+5PQB+DKKzmTFXT8e2GDga+pa1xTBFRUACMO8BXGuWmxR7SnGDw0wo5Ngrw==",
+ "requires": {
+ "invariant": "^2.2.4",
+ "metro-source-map": "0.56.3",
+ "source-map": "^0.5.6",
+ "through2": "^2.0.1",
+ "vlq": "^1.0.0"
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "mime": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
+ "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA=="
+ },
+ "mime-db": {
+ "version": "1.42.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz",
+ "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ=="
+ },
+ "mime-types": {
+ "version": "2.1.25",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz",
+ "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==",
+ "requires": {
+ "mime-db": "1.42.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
+ },
+ "mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "requires": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+ }
+ }
+ },
+ "morgan": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz",
+ "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==",
+ "requires": {
+ "basic-auth": "~2.0.0",
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "on-finished": "~2.3.0",
+ "on-headers": "~1.0.1"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s="
+ },
+ "nan": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
+ "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
+ "optional": true
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "native-base": {
+ "version": "2.13.8",
+ "resolved": "https://registry.npmjs.org/native-base/-/native-base-2.13.8.tgz",
+ "integrity": "sha512-47Wm7bjH5Dc99gBUeVvsURyADU97aiLMLPGX4ewPgR9kW47TD9slS/Y5vGMToBgz1bsku9anXgN2T1rpdQbpFA==",
+ "requires": {
+ "blueimp-md5": "^2.5.0",
+ "clamp": "^1.0.1",
+ "color": "~3.1.2",
+ "create-react-class": "^15.6.3",
+ "eslint-config-prettier": "^6.0.0",
+ "fs-extra": "^2.0.0",
+ "jest-react-native": "^18.0.0",
+ "lodash": "^4.17.14",
+ "native-base-shoutem-theme": "0.3.1",
+ "opencollective-postinstall": "^2.0.2",
+ "print-message": "^2.1.0",
+ "prop-types": "^15.5.10",
+ "react-native-drawer": "2.5.1",
+ "react-native-easy-grid": "0.2.2",
+ "react-native-keyboard-aware-scroll-view": "0.9.1",
+ "react-native-vector-icons": "^6.6.0",
+ "react-timer-mixin": "^0.13.4",
+ "react-tween-state": "^0.1.5",
+ "tween-functions": "^1.0.1"
+ },
+ "dependencies": {
+ "fs-extra": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz",
+ "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^2.1.0"
+ }
+ },
+ "jsonfile": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
+ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ }
+ }
+ },
+ "native-base-shoutem-theme": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/native-base-shoutem-theme/-/native-base-shoutem-theme-0.3.1.tgz",
+ "integrity": "sha512-uwEGhg6gwDuJTHuhNXRKbHtNjni1UI9qfAsVchIqfK7mQAHSNPVU1QRs9Hw6O2K/qLZaP/aJmNoZGc2h2EGSwA==",
+ "requires": {
+ "hoist-non-react-statics": "^1.0.5",
+ "lodash": "^4.17.14",
+ "prop-types": "^15.5.10"
+ }
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "negotiator": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
+ },
+ "neo-async": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
+ "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
+ "dev": true
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
+ },
+ "node-fetch": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
+ "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
+ },
+ "node-int64": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs="
+ },
+ "node-modules-regexp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz",
+ "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA="
+ },
+ "node-notifier": {
+ "version": "5.4.3",
+ "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz",
+ "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==",
+ "requires": {
+ "growly": "^1.3.0",
+ "is-wsl": "^1.1.0",
+ "semver": "^5.5.0",
+ "shellwords": "^0.1.1",
+ "which": "^1.3.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ }
+ }
+ },
+ "normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ }
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "nullthrows": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz",
+ "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw=="
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
+ },
+ "nwsapi": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
+ "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==",
+ "dev": true
+ },
+ "oauth-sign": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+ "dev": true
+ },
+ "ob1": {
+ "version": "0.56.3",
+ "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.56.3.tgz",
+ "integrity": "sha512-3JL2ZyWOHDGTEAe4kcG+TxhGPKCCikgyoUIjE82JnXnmpR1LXItM9K3WhGsi4+O7oYngMW6FjpHHoc5xJTMkTQ=="
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "requires": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "object-inspect": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
+ "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
+ "dev": true
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "requires": {
+ "isobject": "^3.0.0"
+ }
+ },
+ "object.assign": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
+ "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+ "requires": {
+ "define-properties": "^1.1.2",
+ "function-bind": "^1.1.1",
+ "has-symbols": "^1.0.0",
+ "object-keys": "^1.0.11"
+ }
+ },
+ "object.fromentries": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.1.tgz",
+ "integrity": "sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.15.0",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3"
+ }
+ },
+ "object.getownpropertydescriptors": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
+ "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.5.1"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "on-headers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+ "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ },
+ "dependencies": {
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
+ }
+ }
+ },
+ "open": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz",
+ "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
+ "requires": {
+ "is-wsl": "^1.1.0"
+ }
+ },
+ "opencollective-postinstall": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz",
+ "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw=="
+ },
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "dev": true,
+ "requires": {
+ "minimist": "~0.0.1",
+ "wordwrap": "~0.0.2"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
+ "dev": true
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+ "dev": true
+ }
+ }
+ },
+ "optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "dev": true,
+ "requires": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ }
+ },
+ "options": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
+ "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8="
+ },
+ "ora": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz",
+ "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "cli-cursor": "^2.1.0",
+ "cli-spinners": "^2.0.0",
+ "log-symbols": "^2.2.0",
+ "strip-ansi": "^5.2.0",
+ "wcwidth": "^1.0.1"
+ }
+ },
+ "os-locale": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+ "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+ "requires": {
+ "execa": "^1.0.0",
+ "lcid": "^2.0.0",
+ "mem": "^4.0.0"
+ }
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
+ },
+ "p-defer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+ "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww="
+ },
+ "p-each-series": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz",
+ "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=",
+ "dev": true,
+ "requires": {
+ "p-reduce": "^1.0.0"
+ }
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
+ },
+ "p-is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
+ "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg=="
+ },
+ "p-limit": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
+ "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-reduce": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz",
+ "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=",
+ "dev": true
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+ },
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0"
+ },
+ "dependencies": {
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ }
+ }
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "parse-node-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
+ "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA=="
+ },
+ "parse5": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
+ "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
+ "dev": true
+ },
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
+ },
+ "path-parse": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
+ },
+ "path-to-regexp": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
+ "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
+ "requires": {
+ "isarray": "0.0.1"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ }
+ }
+ },
+ "path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "requires": {
+ "pify": "^2.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
+ }
+ }
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
+ },
+ "pirates": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz",
+ "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==",
+ "requires": {
+ "node-modules-regexp": "^1.0.0"
+ }
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "requires": {
+ "find-up": "^3.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ }
+ }
+ },
+ "plist": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz",
+ "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==",
+ "requires": {
+ "base64-js": "^1.2.3",
+ "xmlbuilder": "^9.0.7",
+ "xmldom": "0.1.x"
+ }
+ },
+ "plugin-error": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz",
+ "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=",
+ "requires": {
+ "ansi-cyan": "^0.1.1",
+ "ansi-red": "^0.1.1",
+ "arr-diff": "^1.0.1",
+ "arr-union": "^2.0.1",
+ "extend-shallow": "^1.1.2"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz",
+ "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=",
+ "requires": {
+ "arr-flatten": "^1.0.1",
+ "array-slice": "^0.2.3"
+ }
+ },
+ "arr-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz",
+ "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0="
+ },
+ "extend-shallow": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz",
+ "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=",
+ "requires": {
+ "kind-of": "^1.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
+ "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ="
+ }
+ }
+ },
+ "pn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz",
+ "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==",
+ "dev": true
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
+ },
+ "prettier": {
+ "version": "1.16.4",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.4.tgz",
+ "integrity": "sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g==",
+ "dev": true
+ },
+ "pretty-format": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz",
+ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==",
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "ansi-regex": "^4.0.0",
+ "ansi-styles": "^3.2.0",
+ "react-is": "^16.8.4"
+ }
+ },
+ "print-message": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/print-message/-/print-message-2.1.0.tgz",
+ "integrity": "sha1-tViO0IsOG/d6x7y1y3gASvr5qJE=",
+ "requires": {
+ "chalk": "1.1.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ },
+ "chalk": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz",
+ "integrity": "sha1-UJr7ZwZudJn36zU1x3RFdyri0Bk=",
+ "requires": {
+ "ansi-styles": "^2.1.0",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ }
+ }
+ },
+ "private": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
+ "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg=="
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ },
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true
+ },
+ "promise": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+ "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+ "requires": {
+ "asap": "~2.0.3"
+ }
+ },
+ "prompts": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.0.tgz",
+ "integrity": "sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg==",
+ "dev": true,
+ "requires": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.3"
+ }
+ },
+ "prop-types": {
+ "version": "15.7.2",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
+ "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
+ "requires": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.8.1"
+ }
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
+ },
+ "psl": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
+ "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==",
+ "dev": true
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+ "dev": true
+ },
+ "query-string": {
+ "version": "6.9.0",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.9.0.tgz",
+ "integrity": "sha512-KG4bhCFYapExLsUHrFt+kQVEegF2agm4cpF/VNc6pZVthIfCc/GK8t8VyNIE3nyXG9DK3Tf2EGkxjR6/uRdYsA==",
+ "requires": {
+ "decode-uri-component": "^0.2.0",
+ "split-on-first": "^1.0.0",
+ "strict-uri-encode": "^2.0.0"
+ }
+ },
+ "raf": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
+ "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
+ "requires": {
+ "performance-now": "^2.1.0"
+ }
+ },
+ "range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+ },
+ "react": {
+ "version": "16.11.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-16.11.0.tgz",
+ "integrity": "sha512-M5Y8yITaLmU0ynd0r1Yvfq98Rmll6q8AxaEe88c8e7LxO8fZ2cNgmFt0aGAS9wzf1Ao32NKXtCl+/tVVtkxq6g==",
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1",
+ "prop-types": "^15.6.2"
+ }
+ },
+ "react-devtools-core": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-3.6.3.tgz",
+ "integrity": "sha512-+P+eFy/yo8Z/UH9J0DqHZuUM5+RI2wl249TNvMx3J2jpUomLQa4Zxl56GEotGfw3PIP1eI+hVf1s53FlUONStQ==",
+ "requires": {
+ "shell-quote": "^1.6.1",
+ "ws": "^3.3.1"
+ },
+ "dependencies": {
+ "ultron": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
+ "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og=="
+ },
+ "ws": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
+ "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
+ "requires": {
+ "async-limiter": "~1.0.0",
+ "safe-buffer": "~5.1.0",
+ "ultron": "~1.1.0"
+ }
+ }
+ }
+ },
+ "react-is": {
+ "version": "16.12.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz",
+ "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q=="
+ },
+ "react-native": {
+ "version": "0.61.4",
+ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.61.4.tgz",
+ "integrity": "sha512-L8U+dDEy4vP74yWYbb+2XKaZeUkbpCUoSzcmeEM8Oznt69q71Q4fuYyxZGrzVW6tMYw9ZzGXTkfLuOh2nvLeVw==",
+ "requires": {
+ "@babel/runtime": "^7.0.0",
+ "@react-native-community/cli": "^3.0.0-alpha.1",
+ "@react-native-community/cli-platform-android": "^3.0.0-alpha.1",
+ "@react-native-community/cli-platform-ios": "^3.0.0-alpha.1",
+ "abort-controller": "^3.0.0",
+ "art": "^0.10.0",
+ "base64-js": "^1.1.2",
+ "connect": "^3.6.5",
+ "create-react-class": "^15.6.3",
+ "escape-string-regexp": "^1.0.5",
+ "event-target-shim": "^5.0.1",
+ "fbjs": "^1.0.0",
+ "fbjs-scripts": "^1.1.0",
+ "hermes-engine": "^0.2.1",
+ "invariant": "^2.2.4",
+ "jsc-android": "^245459.0.0",
+ "metro-babel-register": "^0.56.0",
+ "metro-react-native-babel-transformer": "^0.56.0",
+ "metro-source-map": "^0.56.0",
+ "nullthrows": "^1.1.0",
+ "pretty-format": "^24.7.0",
+ "promise": "^7.1.1",
+ "prop-types": "^15.7.2",
+ "react-devtools-core": "^3.6.3",
+ "react-refresh": "^0.4.0",
+ "regenerator-runtime": "^0.13.2",
+ "scheduler": "0.15.0",
+ "stacktrace-parser": "^0.1.3",
+ "whatwg-fetch": "^3.0.0"
+ },
+ "dependencies": {
+ "@react-native-community/cli": {
+ "version": "3.0.0-alpha.7",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-3.0.0-alpha.7.tgz",
+ "integrity": "sha512-gmAnmH9sqReBEvfZxk0A3gw0Ddb6UNHYvbjjyM+qgH2TbEAWCfLHLqiHNSCYxfO3hkDyz4mj/cvtb8ahFjTdIw==",
+ "requires": {
+ "@hapi/joi": "^15.0.3",
+ "@react-native-community/cli-platform-android": "^3.0.0-alpha.7",
+ "@react-native-community/cli-platform-ios": "^3.0.0-alpha.7",
+ "@react-native-community/cli-tools": "^3.0.0-alpha.7",
+ "@react-native-community/cli-types": "^3.0.0-alpha.7",
+ "@types/mkdirp": "^0.5.2",
+ "@types/node-notifier": "^5.4.0",
+ "@types/semver": "^6.0.2",
+ "@types/ws": "^6.0.3",
+ "chalk": "^2.4.2",
+ "command-exists": "^1.2.8",
+ "commander": "^2.19.0",
+ "compression": "^1.7.1",
+ "connect": "^3.6.5",
+ "cosmiconfig": "^5.1.0",
+ "deepmerge": "^3.2.0",
+ "envinfo": "^7.1.0",
+ "errorhandler": "^1.5.0",
+ "execa": "^1.0.0",
+ "find-up": "^4.1.0",
+ "fs-extra": "^7.0.1",
+ "glob": "^7.1.1",
+ "graceful-fs": "^4.1.3",
+ "inquirer": "^3.0.6",
+ "lodash": "^4.17.5",
+ "metro": "^0.56.0",
+ "metro-config": "^0.56.0",
+ "metro-core": "^0.56.0",
+ "metro-react-native-babel-transformer": "^0.56.0",
+ "minimist": "^1.2.0",
+ "mkdirp": "^0.5.1",
+ "morgan": "^1.9.0",
+ "node-notifier": "^5.2.1",
+ "open": "^6.2.0",
+ "ora": "^3.4.0",
+ "plist": "^3.0.0",
+ "semver": "^6.3.0",
+ "serve-static": "^1.13.1",
+ "shell-quote": "1.6.1",
+ "strip-ansi": "^5.2.0",
+ "sudo-prompt": "^9.0.0",
+ "wcwidth": "^1.0.1",
+ "ws": "^1.1.0"
+ }
+ }
+ }
+ },
+ "react-native-camera": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/react-native-camera/-/react-native-camera-3.9.0.tgz",
+ "integrity": "sha512-qUhog1yd7FQ9xRTxN1SP+T5f4uLuVY5eXx6mMlBCNsqvYSoKCWFHH1Kpil9fx7d2iOl/o09o/7kHNcSl9RkrkQ==",
+ "requires": {
+ "prop-types": "^15.6.2"
+ }
+ },
+ "react-native-drawer": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/react-native-drawer/-/react-native-drawer-2.5.1.tgz",
+ "integrity": "sha512-cxcQNbSWy5sbGi7anSVp6EDr6JarOBMY9lbFOeLFeVYbONiudoqRKbgEsSDgSw3/LFCLvUXK5zdjXCOedeytxQ==",
+ "requires": {
+ "prop-types": "^15.5.8",
+ "tween-functions": "^1.0.1"
+ }
+ },
+ "react-native-easy-grid": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/react-native-easy-grid/-/react-native-easy-grid-0.2.2.tgz",
+ "integrity": "sha512-MlYrNIldnEMKn6TVatQN1P64GoVlwGIuz+8ncdfJ0Wq/xtzUkQwlil8Uksyp7MhKfENE09MQnGNcba6Mx3oSAA==",
+ "requires": {
+ "lodash": "^4.17.15"
+ }
+ },
+ "react-native-gesture-handler": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-1.5.0.tgz",
+ "integrity": "sha512-YUOXHsGLajK1cFReQ4Xh0H9GUTxDW9cUZEVu1q+dVqur2urSKi63KklAFB2l8Neob9nl1E/w0c5hGcBP9FMCIA==",
+ "requires": {
+ "hammerjs": "^2.0.8",
+ "hoist-non-react-statics": "^2.3.1",
+ "invariant": "^2.2.4",
+ "prop-types": "^15.7.2"
+ },
+ "dependencies": {
+ "hoist-non-react-statics": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
+ "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
+ }
+ }
+ },
+ "react-native-iphone-x-helper": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.2.1.tgz",
+ "integrity": "sha512-/VbpIEp8tSNNHIvstuA3Swx610whci1Zpc9mqNkqn14DkMbw+ORviln2u0XyHG1kPvvwTNGZY6QpeFwxYaSdbQ=="
+ },
+ "react-native-keyboard-aware-scroll-view": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/react-native-keyboard-aware-scroll-view/-/react-native-keyboard-aware-scroll-view-0.9.1.tgz",
+ "integrity": "sha512-tBZ8rmjELN0F6t5UBp5CW3NYmZXgVnJSzVCssv/OqG2t6kiB+OUTqxNvUP24K+HARX4H+XaW0aEJSFQkQCv6KA==",
+ "requires": {
+ "prop-types": "^15.6.2",
+ "react-native-iphone-x-helper": "^1.0.3"
+ }
+ },
+ "react-native-safe-area-view": {
+ "version": "0.14.8",
+ "resolved": "https://registry.npmjs.org/react-native-safe-area-view/-/react-native-safe-area-view-0.14.8.tgz",
+ "integrity": "sha512-MtRSIcZNstxv87Jet+UsPhEd1tpGe8cVskDXlP657x6rHpSrbrc+y13ZNXrwAgGNNhqQNX7UJT68ZIq//ZRmvw==",
+ "requires": {
+ "hoist-non-react-statics": "^2.3.1"
+ },
+ "dependencies": {
+ "hoist-non-react-statics": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
+ "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
+ }
+ }
+ },
+ "react-native-screens": {
+ "version": "1.0.0-alpha.23",
+ "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-1.0.0-alpha.23.tgz",
+ "integrity": "sha512-tOxHGQUN83MTmQB4ghoQkibqOdGiX4JQEmeyEv96MKWO/x8T2PJv84ECUos9hD3blPRQwVwSpAid1PPPhrVEaw==",
+ "requires": {
+ "debounce": "^1.2.0"
+ }
+ },
+ "react-native-vector-icons": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-6.6.0.tgz",
+ "integrity": "sha512-MImKVx8JEvVVBnaShMr7/yTX4Y062JZMupht1T+IEgbqBj4aQeQ1z2SH4VHWKNtWtppk4kz9gYyUiMWqx6tNSw==",
+ "requires": {
+ "lodash": "^4.0.0",
+ "prop-types": "^15.6.2",
+ "yargs": "^13.2.2"
+ },
+ "dependencies": {
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ }
+ },
+ "yargs": {
+ "version": "13.3.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz",
+ "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==",
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.1"
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
+ "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "react-navigation": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/react-navigation/-/react-navigation-4.0.10.tgz",
+ "integrity": "sha512-7PqvmsdQ7HIyxPUMYbd9Uq//VoMdniEOLAOSvIhb/ExtbAt/1INSjUF+RiMWOMCWLTCNvNPRvTz7xy7qwWureg==",
+ "requires": {
+ "@react-navigation/core": "^3.5.1",
+ "@react-navigation/native": "^3.6.2"
+ }
+ },
+ "react-navigation-stack": {
+ "version": "1.10.3",
+ "resolved": "https://registry.npmjs.org/react-navigation-stack/-/react-navigation-stack-1.10.3.tgz",
+ "integrity": "sha512-1gksFi/g/Lg9sBhgLlD0OiEB5xnatHb4C0eNMA5tli9cTVlhq375XNPIqOiTyftibBmjdApAsZFj5srUCoOu/w==",
+ "requires": {
+ "prop-types": "^15.7.2"
+ }
+ },
+ "react-refresh": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.2.tgz",
+ "integrity": "sha512-kv5QlFFSZWo7OlJFNYbxRtY66JImuP2LcrFgyJfQaf85gSP+byzG21UbDQEYjU7f//ny8rwiEkO6py2Y+fEgAQ=="
+ },
+ "react-test-renderer": {
+ "version": "16.9.0",
+ "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.9.0.tgz",
+ "integrity": "sha512-R62stB73qZyhrJo7wmCW9jgl/07ai+YzvouvCXIJLBkRlRqLx4j9RqcLEAfNfU3OxTGucqR2Whmn3/Aad6L3hQ==",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.1.1",
+ "prop-types": "^15.6.2",
+ "react-is": "^16.9.0",
+ "scheduler": "^0.15.0"
+ }
+ },
+ "react-timer-mixin": {
+ "version": "0.13.4",
+ "resolved": "https://registry.npmjs.org/react-timer-mixin/-/react-timer-mixin-0.13.4.tgz",
+ "integrity": "sha512-4+ow23tp/Tv7hBM5Az5/Be/eKKF7DIvJ09voz5LyHGQaqqz9WV8YMs31eFvcYQs7d451LSg7kDJV70XYN/Ug/Q=="
+ },
+ "react-tween-state": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/react-tween-state/-/react-tween-state-0.1.5.tgz",
+ "integrity": "sha1-6YsGZVHvuTy5LdG+FJlcLj3q4zk=",
+ "requires": {
+ "raf": "^3.1.0",
+ "tween-functions": "^1.0.1"
+ }
+ },
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "requires": {
+ "load-json-file": "^2.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^2.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^2.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M="
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "realpath-native": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz",
+ "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==",
+ "dev": true,
+ "requires": {
+ "util.promisify": "^1.0.0"
+ }
+ },
+ "regenerate": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
+ "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg=="
+ },
+ "regenerate-unicode-properties": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz",
+ "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==",
+ "requires": {
+ "regenerate": "^1.4.0"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.13.3",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
+ "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw=="
+ },
+ "regenerator-transform": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz",
+ "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==",
+ "requires": {
+ "private": "^0.1.6"
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "regexpp": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
+ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+ "dev": true
+ },
+ "regexpu-core": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz",
+ "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==",
+ "requires": {
+ "regenerate": "^1.4.0",
+ "regenerate-unicode-properties": "^8.1.0",
+ "regjsgen": "^0.5.0",
+ "regjsparser": "^0.6.0",
+ "unicode-match-property-ecmascript": "^1.0.4",
+ "unicode-match-property-value-ecmascript": "^1.1.0"
+ }
+ },
+ "regjsgen": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz",
+ "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg=="
+ },
+ "regjsparser": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz",
+ "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==",
+ "requires": {
+ "jsesc": "~0.5.0"
+ },
+ "dependencies": {
+ "jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0="
+ }
+ }
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
+ },
+ "repeat-element": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g=="
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
+ },
+ "request": {
+ "version": "2.88.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+ "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.8.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.0",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "~2.4.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.3.2"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ },
+ "tough-cookie": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+ "dev": true,
+ "requires": {
+ "psl": "^1.1.24",
+ "punycode": "^1.4.1"
+ }
+ }
+ }
+ },
+ "request-promise-core": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz",
+ "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.15"
+ }
+ },
+ "request-promise-native": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz",
+ "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==",
+ "dev": true,
+ "requires": {
+ "request-promise-core": "1.1.3",
+ "stealthy-require": "^1.1.1",
+ "tough-cookie": "^2.3.3"
+ }
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
+ },
+ "require-main-filename": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE="
+ },
+ "resolve": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
+ "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
+ "requires": {
+ "path-parse": "^1.0.6"
+ }
+ },
+ "resolve-cwd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
+ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+ "dev": true,
+ "requires": {
+ "resolve-from": "^3.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g="
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
+ },
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "rsvp": {
+ "version": "4.8.5",
+ "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
+ "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA=="
+ },
+ "run-async": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
+ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+ "requires": {
+ "is-promise": "^2.1.0"
+ }
+ },
+ "rx-lite": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
+ "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ="
+ },
+ "rx-lite-aggregates": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
+ "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
+ "requires": {
+ "rx-lite": "*"
+ }
+ },
+ "rxjs": {
+ "version": "5.5.12",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz",
+ "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==",
+ "requires": {
+ "symbol-observable": "1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "sane": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz",
+ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==",
+ "requires": {
+ "@cnakazawa/watch": "^1.0.3",
+ "anymatch": "^2.0.0",
+ "capture-exit": "^2.0.0",
+ "exec-sh": "^0.3.2",
+ "execa": "^1.0.0",
+ "fb-watchman": "^2.0.0",
+ "micromatch": "^3.1.4",
+ "minimist": "^1.1.1",
+ "walker": "~1.0.5"
+ }
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ },
+ "scheduler": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz",
+ "integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==",
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1"
+ }
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ },
+ "send": {
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+ "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "destroy": "~1.0.4",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "~1.7.2",
+ "mime": "1.6.0",
+ "ms": "2.1.1",
+ "on-finished": "~2.3.0",
+ "range-parser": "~1.2.1",
+ "statuses": "~1.5.0"
+ },
+ "dependencies": {
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
+ }
+ }
+ },
+ "serialize-error": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz",
+ "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go="
+ },
+ "serve-static": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+ "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+ "requires": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.17.1"
+ }
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+ },
+ "set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
+ },
+ "setprototypeof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
+ },
+ "shell-quote": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
+ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
+ "requires": {
+ "array-filter": "~0.0.0",
+ "array-map": "~0.0.0",
+ "array-reduce": "~0.0.0",
+ "jsonify": "~0.0.0"
+ }
+ },
+ "shellwords": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
+ "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww=="
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
+ },
+ "simple-plist": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.1.0.tgz",
+ "integrity": "sha512-2i5Tc0BYAqppM7jVzmNrI+aEUntPolIq4fDgji6WuNNn1D/qYdn2KwoLhZdzQkE04lu9L5tUoeJsjuJAvd+lFg==",
+ "requires": {
+ "bplist-creator": "0.0.8",
+ "bplist-parser": "0.2.0",
+ "plist": "^3.0.1"
+ }
+ },
+ "simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
+ "requires": {
+ "is-arrayish": "^0.3.1"
+ },
+ "dependencies": {
+ "is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
+ }
+ }
+ },
+ "sisteransi": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.4.tgz",
+ "integrity": "sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig==",
+ "dev": true
+ },
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
+ },
+ "slice-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.0.0"
+ }
+ },
+ "slide": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
+ "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc="
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "requires": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "requires": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "requires": {
+ "kind-of": "^3.2.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+ },
+ "source-map-resolve": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
+ "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+ "requires": {
+ "atob": "^2.1.1",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "source-map-support": {
+ "version": "0.5.16",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
+ "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ }
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM="
+ },
+ "spdx-correct": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
+ "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
+ "requires": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-exceptions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
+ "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA=="
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
+ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
+ "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q=="
+ },
+ "split-on-first": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
+ "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw=="
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
+ },
+ "sshpk": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
+ "dev": true,
+ "requires": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
+ }
+ },
+ "stack-utils": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz",
+ "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA=="
+ },
+ "stacktrace-parser": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.7.tgz",
+ "integrity": "sha512-Evm+NuZ2ZTwGazsbsZC+EV1EGsvyxgIvtNwbyFfeXaq/8L78M5Kdh0qpmQaTkUpbOAKbbPP7c7qZa7u8XFsrUA==",
+ "requires": {
+ "type-fest": "^0.7.1"
+ }
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "requires": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+ },
+ "stealthy-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
+ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
+ "dev": true
+ },
+ "stream-buffers": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
+ "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ="
+ },
+ "strict-uri-encode": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
+ "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY="
+ },
+ "string-length": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz",
+ "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=",
+ "dev": true,
+ "requires": {
+ "astral-regex": "^1.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "string.prototype.trimleft": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz",
+ "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "function-bind": "^1.1.1"
+ }
+ },
+ "string.prototype.trimright": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz",
+ "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "function-bind": "^1.1.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM="
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
+ },
+ "strip-json-comments": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
+ "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
+ "dev": true
+ },
+ "sudo-prompt": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz",
+ "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA=="
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "symbol-observable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz",
+ "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ="
+ },
+ "symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "dev": true
+ },
+ "table": {
+ "version": "5.4.6",
+ "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
+ "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.10.2",
+ "lodash": "^4.17.14",
+ "slice-ansi": "^2.1.0",
+ "string-width": "^3.0.0"
+ },
+ "dependencies": {
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ }
+ }
+ },
+ "temp": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz",
+ "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=",
+ "requires": {
+ "os-tmpdir": "^1.0.0",
+ "rimraf": "~2.2.6"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.2.8",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
+ "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI="
+ }
+ }
+ },
+ "test-exclude": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz",
+ "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3",
+ "minimatch": "^3.0.4",
+ "read-pkg-up": "^4.0.0",
+ "require-main-filename": "^2.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz",
+ "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0",
+ "read-pkg": "^3.0.0"
+ }
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
+ }
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "throat": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz",
+ "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo="
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
+ },
+ "through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "requires": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "time-stamp": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
+ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM="
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ },
+ "tmpl": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
+ "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE="
+ },
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "requires": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ },
+ "toidentifier": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
+ },
+ "tough-cookie": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
+ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+ "dev": true,
+ "requires": {
+ "psl": "^1.1.28",
+ "punycode": "^2.1.1"
+ }
+ },
+ "tr46": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+ "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "tslib": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
+ "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
+ "dev": true
+ },
+ "tsutils": {
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz",
+ "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.8.1"
+ }
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "tween-functions": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/tween-functions/-/tween-functions-1.2.0.tgz",
+ "integrity": "sha1-GuOlDnxguz3vd06scHrLynO7w/8="
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+ "dev": true
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
+ },
+ "type-fest": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
+ "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg=="
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
+ },
+ "ua-parser-js": {
+ "version": "0.7.20",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz",
+ "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw=="
+ },
+ "uglify-es": {
+ "version": "3.3.9",
+ "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
+ "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
+ "requires": {
+ "commander": "~2.13.0",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
+ "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA=="
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ }
+ }
+ },
+ "ultron": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
+ "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po="
+ },
+ "underscore": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz",
+ "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg=="
+ },
+ "unicode-canonical-property-names-ecmascript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ=="
+ },
+ "unicode-match-property-ecmascript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
+ "requires": {
+ "unicode-canonical-property-names-ecmascript": "^1.0.4",
+ "unicode-property-aliases-ecmascript": "^1.0.4"
+ }
+ },
+ "unicode-match-property-value-ecmascript": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz",
+ "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g=="
+ },
+ "unicode-property-aliases-ecmascript": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz",
+ "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw=="
+ },
+ "union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "requires": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "requires": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E="
+ }
+ }
+ },
+ "uri-js": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI="
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ=="
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "util.promisify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
+ "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "object.getownpropertydescriptors": "^2.0.3"
+ }
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
+ },
+ "uuid": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
+ "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ=="
+ },
+ "v8-compile-cache": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
+ "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
+ "dev": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "requires": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
+ "vlq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz",
+ "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w=="
+ },
+ "w3c-hr-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz",
+ "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=",
+ "dev": true,
+ "requires": {
+ "browser-process-hrtime": "^0.1.2"
+ }
+ },
+ "walker": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
+ "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
+ "requires": {
+ "makeerror": "1.0.x"
+ }
+ },
+ "wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
+ "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+ "requires": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+ "dev": true
+ },
+ "whatwg-encoding": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
+ "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
+ "dev": true,
+ "requires": {
+ "iconv-lite": "0.4.24"
+ }
+ },
+ "whatwg-fetch": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz",
+ "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q=="
+ },
+ "whatwg-mimetype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
+ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
+ "dev": true
+ },
+ "whatwg-url": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz",
+ "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==",
+ "dev": true,
+ "requires": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.1",
+ "webidl-conversions": "^4.0.2"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
+ },
+ "word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "dev": true
+ },
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "write": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+ "dev": true,
+ "requires": {
+ "mkdirp": "^0.5.1"
+ }
+ },
+ "write-file-atomic": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz",
+ "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=",
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "slide": "^1.1.5"
+ }
+ },
+ "ws": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
+ "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
+ "requires": {
+ "options": ">=0.0.5",
+ "ultron": "1.0.x"
+ }
+ },
+ "xcode": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/xcode/-/xcode-2.0.0.tgz",
+ "integrity": "sha512-5xF6RCjAdDEiEsbbZaS/gBRt3jZ/177otZcpoLCjGN/u1LrfgH7/Sgeeavpr/jELpyDqN2im3AKosl2G2W8hfw==",
+ "requires": {
+ "simple-plist": "^1.0.0",
+ "uuid": "^3.3.2"
+ }
+ },
+ "xml-name-validator": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
+ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
+ "dev": true
+ },
+ "xmlbuilder": {
+ "version": "9.0.7",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
+ "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
+ },
+ "xmldoc": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.2.tgz",
+ "integrity": "sha512-ruPC/fyPNck2BD1dpz0AZZyrEwMOrWTO5lDdIXS91rs3wtm4j+T8Rp2o+zoOYkkAxJTZRPOSnOGei1egoRmKMQ==",
+ "requires": {
+ "sax": "^1.2.1"
+ }
+ },
+ "xmldom": {
+ "version": "0.1.27",
+ "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz",
+ "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk="
+ },
+ "xpipe": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/xpipe/-/xpipe-1.0.5.tgz",
+ "integrity": "sha1-jdi/Rfw/f1Xw4FS4ePQ6YmFNr98="
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
+ },
+ "y18n": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
+ },
+ "yargs": {
+ "version": "12.0.5",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
+ "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
+ "requires": {
+ "cliui": "^4.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^3.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1 || ^4.0.0",
+ "yargs-parser": "^11.1.1"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
+ "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+}
diff --git a/examples/advanced/advanced/package.json b/examples/advanced/advanced/package.json
new file mode 100644
index 000000000..8adb67e81
--- /dev/null
+++ b/examples/advanced/advanced/package.json
@@ -0,0 +1,35 @@
+{
+ "name": "advanced",
+ "version": "0.0.1",
+ "private": true,
+ "scripts": {
+ "android": "react-native run-android",
+ "ios": "react-native run-ios",
+ "start": "react-native start",
+ "test": "jest",
+ "lint": "eslint ."
+ },
+ "dependencies": {
+ "react": "16.11.0",
+ "react-native": "0.61.4",
+ "react-navigation": "4.0.10",
+ "react-navigation-stack": "1.10.3",
+ "native-base": "2.13.8",
+ "react-native-gesture-handler": "1.5.0",
+ "underscore": "1.9.1",
+ "react-native-camera": "*"
+ },
+ "devDependencies": {
+ "@babel/core": "7.7.2",
+ "@babel/runtime": "7.7.2",
+ "@react-native-community/eslint-config": "0.0.5",
+ "babel-jest": "24.9.0",
+ "eslint": "6.6.0",
+ "jest": "24.9.0",
+ "metro-react-native-babel-preset": "0.56.3",
+ "react-test-renderer": "16.9.0"
+ },
+ "jest": {
+ "preset": "react-native"
+ }
+}
diff --git a/examples/advanced/advanced/src/App.js b/examples/advanced/advanced/src/App.js
new file mode 100644
index 000000000..b7fd8dc40
--- /dev/null
+++ b/examples/advanced/advanced/src/App.js
@@ -0,0 +1,73 @@
+import conf from 'src/conf';
+import React from 'react';
+import {
+ StatusBar,
+ Text as RNText
+} from 'react-native';
+
+import {StyleProvider, Root, Input} from 'native-base';
+import {createAppContainer} from "react-navigation";
+import { createStackNavigator } from 'react-navigation-stack';
+
+import {routesMap} from 'src/routes';
+import MainHeader from 'src/baseComponents/MainHeader';
+
+
+
+// Disable text font scaling, it is a mess with native-base
+RNText.defaultProps = RNText.defaultProps || {};
+RNText.defaultProps.allowFontScaling = false;
+RNText.defaultProps.fontSize = conf.theme.variables.DefaultFontSize;
+Input.defaultProps = Input.defaultProps || {};
+Input.defaultProps.allowFontScaling = false;
+Input.defaultProps.fontSize = conf.theme.variables.DefaultFontSize;
+
+
+
+// Main stack navigator, used for authenticated routes only.
+// Login won't use navigation. If we want further non authenticated screens
+// we will need a separate router for it.
+const StackNavigator = createStackNavigator (
+ routesMap,
+ {
+ initialRouteName: "Home",
+ transitionConfig: () => ({
+ transitionSpec: {
+ isInteraction: true,
+ useNativeDriver: true
+ }
+ }),
+
+ headerMode: 'screen',
+
+ defaultNavigationOptions: ({ navigation }) => {
+ return {
+ header: props => {
+ return ;
+ },
+ gesturesEnabled: false
+ }
+ }
+ }
+)
+
+const NavigatorApp = createAppContainer(StackNavigator);
+
+
+const App = () => {
+ return (
+
+
+
+
+
+
+ )
+}
+
+
+
+export default App;
diff --git a/examples/advanced/advanced/src/baseComponents/Content.js b/examples/advanced/advanced/src/baseComponents/Content.js
new file mode 100644
index 000000000..2527dba97
--- /dev/null
+++ b/examples/advanced/advanced/src/baseComponents/Content.js
@@ -0,0 +1,44 @@
+import React from "react";
+import {connectStyle} from "native-base";
+import {SafeAreaView, ScrollView} from 'react-native';
+import KeyboardShiftView from './KeyboardShiftView';
+import conf from 'src/conf';
+
+// Replacement for NB's Component
+// We will assign the same styles, but replace the component
+// to use our own keyboard aware component since the one used by native-base is quite outdated
+
+const containerStyle = { flex: 1 };
+const contentPadding = conf.theme.variables.contentPadding;
+
+
+// Copied from native-base source
+class Content extends React.Component{
+
+ constructor(props) {
+ super(props);
+ this.state = {
+ };
+ }
+
+ render(){
+ let {style, padder, contentContainerStyle, ...others} = this.props;
+ return (
+
+
+
+ )
+ }
+}
+
+const StyledContent = connectStyle('baseComponents.Content')(Content);
+
+export { StyledContent as Content };
\ No newline at end of file
diff --git a/examples/advanced/advanced/src/baseComponents/Header.js b/examples/advanced/advanced/src/baseComponents/Header.js
new file mode 100644
index 000000000..6ef85a112
--- /dev/null
+++ b/examples/advanced/advanced/src/baseComponents/Header.js
@@ -0,0 +1,88 @@
+import React from "react";
+import {connectStyle} from "native-base";
+import {View, Dimensions} from 'react-native';
+
+import conf from 'src/conf';
+
+
+let variables = conf.theme.variables;
+
+
+// We won't use NativeBase Header component since it interferes with Android's status bar
+// So we will just create a View component that acts as header
+// and set those styles in the native-base config the same as Header
+// Copied from native-base source
+
+class Header extends React.PureComponent{
+
+ constructor(props) {
+ super(props);
+
+ let {width, height} = Dimensions.get('window');
+ this.state = {
+ isPortrait: width <= height
+ };
+ }
+
+
+ calculateHeight() {
+ let inset = variables.Inset;
+
+ const { style } = this.props;
+
+ const InsetValues = this.state.isPortrait ? inset.portrait : inset.landscape;
+ let oldHeight = null;
+
+ if (style.height != undefined) {
+ oldHeight = style.height;
+ } else if (style[1]) {
+ oldHeight = style[1].height ? style[1].height : style[0].height;
+ } else {
+ oldHeight = style[0].height;
+ }
+
+ let height = oldHeight + InsetValues.topInset;
+
+ return height;
+ }
+
+ calculatePadder() {
+ let inset = variables.Inset;
+ const InsetValues = this.state.isPortrait ? inset.portrait : inset.landscape;
+ return InsetValues.topInset;
+ }
+
+ onLayout = (event) => {
+ let {width, height} = Dimensions.get('window');
+ let isPortrait = width <= height;
+ if(isPortrait != this.state.isPortrait){
+ this.setState({isPortrait: isPortrait});
+ }
+ if(this.props.onLayout){
+ this.props.onLayout(event);
+ }
+
+ }
+
+ render(){
+ let {children, style, ...others} = this.props;
+
+ return(
+
+ {children}
+
+ )
+
+ }
+}
+
+Header = connectStyle('baseComponents.Header')(Header);
+
+export {Header};
diff --git a/examples/advanced/advanced/src/baseComponents/KeyboardShiftView.js b/examples/advanced/advanced/src/baseComponents/KeyboardShiftView.js
new file mode 100644
index 000000000..2631c7593
--- /dev/null
+++ b/examples/advanced/advanced/src/baseComponents/KeyboardShiftView.js
@@ -0,0 +1,339 @@
+import React, { Component } from 'react';
+import { Keyboard, ScrollView, Platform } from 'react-native';
+import {runAfterInteractions} from './utils';
+
+
+// Component similar to react-native-keyboard-aware-scroll-view
+// but made for iOS only with slight modifications for nested support. TODO: Replace react-native-keyboard-aware-scroll-view at some point
+// Input fields will be auto scrolled automatically. For multi line, scrollEnabled={false} must be used.
+// props:
+// Component: FlatList | ScrollView
+// extraHeight
+// innerRef
+
+const IS_IOS = Platform.OS == 'ios';
+
+
+const showEvent = IS_IOS ? 'keyboardWillShow' : 'keyboardDidShow';
+const hideEvent = IS_IOS ? 'keyboardWillHide' : 'keyboardDidHide';
+
+
+// using native props to avoid re-renders
+
+
+class KeyboardShift extends Component {
+ constructor(props){
+ super(props);
+ this.state = {
+ }
+ this.scroll = null;
+ this.lastScroll = null;
+ }
+
+ componentDidMount() {
+ this.keyboardShowSub = Keyboard.addListener(showEvent, this.handleKeyboardShow);
+ this.keyboardHideSub = Keyboard.addListener(hideEvent, this.handleKeyboardHide);
+ this.mounted = true;
+ }
+
+ componentWillUnmount() {
+ this.mounted = false;
+ this.lastScroll = null;
+ this.keyboardShowSub.remove();
+ this.keyboardHideSub.remove();
+
+ if(this.cancelHide){
+ this.cancelHide();
+ this.cancelHide = null;
+ }
+
+ if(this.cancelShow){
+ this.cancelShow();
+ this.cancelShow = null;
+ }
+ }
+
+ onLayout = (event) => {
+ this.layout = event.nativeEvent.layout
+ }
+
+ onScroll = (event) => {
+ if(event.nativeEvent.contentOffset){
+ this.lastScroll = event.nativeEvent.contentOffset.y;
+ }
+ this.props.onScroll && this.props.onScroll(event);
+ }
+
+ onScrollEndDrag = (event) =>{
+ // if user manually scrolled, do not restore scroll
+ this.scroll = null;
+ this.props.onScrollEndDrag && this.props.onScrollEndDrag(event);
+ }
+
+ setRef = (r) => {
+ this.ref = r;
+ if(this.props.innerRef){
+ this.props.innerRef(r);
+ }
+ }
+
+ render() {
+ const { Component, innerRef, onScroll, onScrollEndDrag, keyboardDismissMode, ...rest } = this.props;
+ return (
+
+ );
+ }
+
+ scrollTo = (scroll) => {
+ if(this.ref.scrollToOffset){
+ this.ref.scrollToOffset({
+ offset: scroll,
+ animated: true
+ })
+ }
+ else{
+ this.ref.scrollTo({
+ animated: true,
+ y: scroll
+ })
+ }
+ }
+
+ handleKeyboardShow = (event) => {
+
+ if(this.cancelHide){
+ this.cancelHide();
+ this.cancelHide = null;
+ }
+
+ if(this.cancelShow){
+ this.cancelShow();
+ }
+
+ // need to give time to other stuff to hide if any
+ // also set last scroll to 0 if it wasn't defined since we always must scroll on restore
+ this.scroll = this.lastScroll || (this.lastScroll = 0);
+
+ this.cancelShow = runAfterInteractions(()=>{
+ if(this.layout && this.ref && this.mounted){
+
+ const keyboardHeight = event.endCoordinates.height;
+ //const keyboardPosition = event.endCoordinates.screenY;
+
+ let gap = keyboardHeight + this.props.extraHeight;
+
+ // inset is also added on timeout so it doesn't look too awkward
+ this.ref.setNativeProps({contentInset: { bottom: gap }});
+ this.cancelShow = null;
+
+ }
+ }, 250);
+
+ }
+
+ handleKeyboardHide = () => {
+
+ if(this.cancelHide){
+ this.cancelHide();
+ this.cancelHide = null;
+ }
+
+ if(this.cancelShow){
+ this.cancelShow();
+ this.cancelShow = null;
+ }
+
+ // only fire this if we actually did something
+ if(this.lastScroll != null && this.ref){
+
+ // update inset right away to remove visible area as soon as possible
+ this.ref.setNativeProps({contentInset: { bottom: 0 }});
+
+ this.cancelHide = runAfterInteractions(()=>{
+ if(this.ref && this.mounted){
+
+ let scroll = this.scroll != null ? this.scroll : this.lastScroll;
+ this.scroll = null;
+
+ if(scroll != null && this.props.enableResetScrollToCoords){
+ this.scrollTo(scroll + 0.001);
+ }
+ this.cancelHide = null;
+ }
+
+ }, 150);
+
+ }
+
+
+ }
+}
+
+
+// very similar component with a few differences
+// made to work with android's android:windowSoftInputMode="adjustResize"
+// other modes *might* might work, but test it.
+class KeyboardShiftAndroid extends Component {
+ constructor(props){
+ super(props);
+ this.state = {
+ }
+ this.scroll = null;
+ this.lastScroll = null;
+ }
+
+ componentDidMount() {
+ // Android events are far more limited
+ this.keyboardShowSub = Keyboard.addListener(showEvent, this.handleKeyboardShow);
+ this.keyboardHideSub = Keyboard.addListener(hideEvent, this.handleKeyboardHide);
+ this.mounted = true;
+ }
+
+ componentWillUnmount() {
+ this.mounted = false;
+ this.lastScroll = null;
+ this.keyboardShowSub.remove();
+ this.keyboardHideSub.remove();
+
+ if(this.cancelHide){
+ this.cancelHide();
+ this.cancelHide = null;
+ }
+
+ if(this.cancelShow){
+ this.cancelShow();
+ this.cancelShow = null;
+ }
+ }
+
+ onLayout = (event) => {
+ this.layout = event.nativeEvent.layout
+ }
+
+ onScroll = (event) => {
+ if(event.nativeEvent.contentOffset){
+ // update this with a timeout since scrolling might happen
+ // before keyboard show event
+ let scroll = event.nativeEvent.contentOffset.y;
+ if(this.scrollTimeout){
+ clearTimeout(this.scrollTimeout);
+ }
+ this.scrollTimeout = setTimeout(()=>{
+ this.lastScroll = scroll;
+ }, 260); // just a little higher than keyboard show time
+
+ }
+ this.props.onScroll && this.props.onScroll(event);
+ }
+
+ onScrollEndDrag = (event) =>{
+ // if user manually scrolled, do not restore scroll
+ this.scroll = null;
+ this.props.onScrollEndDrag && this.props.onScrollEndDrag(event);
+ }
+
+ setRef = (r) => {
+ this.ref = r;
+ if(this.props.innerRef){
+ this.props.innerRef(r);
+ }
+ }
+
+ render() {
+ const { Component, innerRef, onScroll, onScrollEndDrag, ...rest } = this.props;
+ return (
+
+ );
+ }
+
+ scrollTo = (scroll) => {
+ if(this.ref.scrollToOffset){
+ this.ref.scrollToOffset({
+ offset: scroll,
+ animated: true
+ })
+ }
+ else{
+ this.ref.scrollTo({
+ animated: true,
+ y: scroll
+ })
+ }
+ }
+
+
+ // this relies on the fact that keyboard did show
+ // happens before everything scrolls up due to height changes
+ handleKeyboardShow = (event) => {
+
+ if(this.cancelHide){
+ this.cancelHide();
+ this.cancelHide = null;
+ }
+
+ // need to give time to other stuff to hide if any
+ // also set last scroll to 0 if it wasn't defined since we always must scroll on restore
+ this.scroll = this.lastScroll || (this.lastScroll = 0);
+
+
+ }
+
+ handleKeyboardHide = () => {
+
+ if(this.cancelHide){
+ this.cancelHide();
+ this.cancelHide = null;
+ }
+
+ // only fire this if we actually did something
+ if(this.lastScroll != null && this.ref){
+
+ this.cancelHide = runAfterInteractions(()=>{
+ if(this.ref && this.mounted && this.scroll != null && this.props.enableResetScrollToCoords){
+ this.scrollTo(this.scroll);
+ this.cancelHide = null;
+ }
+
+ }, 150);
+
+ }
+
+
+ }
+}
+
+
+export default class KeyboardShiftView extends React.Component{
+
+ render(){
+ let {Component, extraHeight, innerRef, androidEnabled, ...rest} = this.props;
+ return IS_IOS ?
+
+ :
+ (androidEnabled ? : )
+ }
+}
+
+KeyboardShiftView.defaultProps = {
+ Component: ScrollView,
+ extraHeight: 10,
+ keyboardDismissMode: 'interactive',
+ enableResetScrollToCoords: true,
+ keyboardShouldPersistTaps: 'handled',
+ androidEnabled: true
+}
\ No newline at end of file
diff --git a/examples/advanced/advanced/src/baseComponents/MainHeader.js b/examples/advanced/advanced/src/baseComponents/MainHeader.js
new file mode 100644
index 000000000..60c8dab0f
--- /dev/null
+++ b/examples/advanced/advanced/src/baseComponents/MainHeader.js
@@ -0,0 +1,125 @@
+
+import conf from 'src/conf';
+import React from 'react';
+import {
+ BackHandler,
+ StyleSheet,
+} from 'react-native';
+
+import {StyleProvider, Root, Input} from 'native-base';
+import {
+ Button,
+ Body,
+ Title,
+ Left,
+ Icon,
+ Right,
+ connectStyle
+} from "native-base";
+
+import {Header} from 'src/baseComponents/Header';
+
+let variables = conf.theme.variables;
+
+const styles = StyleSheet.create({
+ backButton: {
+ width: 48 * variables.sizeScaling,
+ },
+ backButtonIcon: {
+ fontSize: variables.iconBackButtonSize
+ }
+});
+
+
+export class SceneBackHandler extends React.PureComponent{
+
+ componentDidMount(){
+ this.willBlur = this.props.navigation.addListener('willBlur', this.handleBlur);
+ this.willFocus = this.props.navigation.addListener('willFocus', this.handleFocus);
+
+ // also add back handler here if it wasn't set already and we are focused
+ if(this.props.navigation.isFocused() && !this.backHandler){
+ this.handleFocus();
+ }
+ }
+
+ componentWillUnmount(){
+ this.willBlur && this.willBlur.remove();
+ this.willFocus && this.willFocus.remove();
+
+ // blur not called on component unmount
+ this.backHandler && this.backHandler.remove();
+ }
+
+ handleFocus = () => {
+ if(!this.backHandler){
+ this.backHandler = BackHandler.addEventListener('hardwareBackPress', this.onBackPressAndroid);
+ }
+
+ }
+
+ handleBlur = () => {
+ this.backHandler && this.backHandler.remove();
+ this.backHandler = null;
+ }
+
+ onBackPressAndroid = () => {
+ let onExit = this.props.navigation.getParam('onExit', null);
+ if(onExit){
+ return onExit(this.props.navigation);
+ }
+ }
+
+ render(){
+ return null;
+ }
+}
+
+class MainHeader extends React.PureComponent {
+
+ handleBack = () => {
+ let onExit = this.props.navigation.getParam('onExit', null);
+ if(onExit){
+ if(!onExit(this.props.navigation)){
+ this.props.navigation.goBack(null);
+ }
+ }
+ else{
+ this.props.navigation.goBack(null);
+ }
+ }
+
+ render() {
+ let {transparent, back, headerStyle, title} = this.props;
+ return (
+
+ {back ?
+
+
+
+
+ : }
+
+ {typeof title === 'string' ? {title} : title}
+
+
+
+
+
+
+
+
+ );
+ }
+}
+
+MainHeader = connectStyle("Branding")(MainHeader);
+
+export default MainHeader;
\ No newline at end of file
diff --git a/examples/advanced/advanced/src/baseComponents/ZoomView.js b/examples/advanced/advanced/src/baseComponents/ZoomView.js
new file mode 100644
index 000000000..eae139791
--- /dev/null
+++ b/examples/advanced/advanced/src/baseComponents/ZoomView.js
@@ -0,0 +1,47 @@
+import React from 'react';
+import {View} from 'react-native';
+
+import {
+ PinchGestureHandler,
+ State,
+} from 'react-native-gesture-handler';
+
+
+export default class ZoomView extends React.Component {
+
+
+ onGesturePinch = ({ nativeEvent }) => {
+ this.props.onPinchProgress(nativeEvent.scale);
+ }
+
+ onPinchHandlerStateChange = event => {
+
+ if (event.nativeEvent.state === State.END){
+ this.props.onPinchEnd();
+ }
+ else if (event.nativeEvent.oldState === State.BEGAN && event.nativeEvent.state === State.ACTIVE){
+ this.props.onPinchStart();
+ }
+ };
+
+ render() {
+ return (
+
+
+ {this.props.children}
+
+
+ );
+ }
+}
+
+
+
+ZoomView.defaultProps = {
+ onPinchProgress: (p) => {},
+ onPinchStart: () => {},
+ onPinchEnd: () => {}
+}
diff --git a/examples/advanced/advanced/src/baseComponents/orientation.js b/examples/advanced/advanced/src/baseComponents/orientation.js
new file mode 100644
index 000000000..ce81c0811
--- /dev/null
+++ b/examples/advanced/advanced/src/baseComponents/orientation.js
@@ -0,0 +1,97 @@
+import {Dimensions, StatusBar, Platform} from 'react-native';
+import conf from 'src/conf';
+
+// orientation helper to handle extra spaces needed to layout the camera perfectly
+// on various devices
+// This coul be a reducer or something if needed globally
+
+const IS_IOS = Platform.OS == 'ios';
+const IS_IPHONEX = conf.theme.variables.isIphoneX;
+
+const IPHONE_INSET_TOP = conf.theme.variables.Inset.portrait.topInset;
+const IPHONE_INSET_TOP_LANDSCAPE = conf.theme.variables.Inset.landscape.topInset;
+
+const IPHONE_INSET_BOTTOM = conf.theme.variables.Inset.portrait.bottomInset;
+const IPHONE_INSET_BOTTOM_LANDSCAPE = conf.theme.variables.Inset.landscape.bottomInset;
+
+
+
+export function isLandscape(){
+ let {width, height} = Dimensions.get('window');
+ return width > height;
+}
+
+
+
+// height factor that we need sometimes to consider
+// such as status bar height, beause different OS report height
+// differently or status bar hides/shows on IOS, or notches.
+
+// insetTop also used to position stuff with absolute position and consider
+// status bars and notches based on orientation.
+// Try to use this only for absolute positioning, use SafeAreaView otherwise
+let getMinusHeight, getInsetTop, getInsetBottom;
+
+if(!IS_IOS){
+ // on Android, we always have a fixed status bar throught the app
+ getMinusHeight = (isPortrait) => {
+ return StatusBar.currentHeight;
+ }
+ getInsetTop = (isPortrait) => {
+ return 0;
+ }
+ getInsetBottom = (isPortrait) => {
+ return 0;
+ }
+}
+else{
+ if(IS_IPHONEX){
+ getMinusHeight = (isPortrait) => {
+ return 0;
+ }
+ getInsetTop = (isPortrait) => {
+ return isPortrait ? IPHONE_INSET_TOP : IPHONE_INSET_TOP_LANDSCAPE;
+ }
+ getInsetBottom = (isPortrait) => {
+ return isPortrait ? IPHONE_INSET_BOTTOM : IPHONE_INSET_BOTTOM_LANDSCAPE;
+ }
+ }
+ else{
+ getMinusHeight = (isPortrait) => {
+ return 0
+ }
+ getInsetTop = (isPortrait) => {
+ return isPortrait ? IPHONE_INSET_TOP : IPHONE_INSET_TOP_LANDSCAPE;
+ }
+ getInsetBottom = (isPortrait) => {
+ return 0;
+ }
+ }
+}
+
+
+export function getOrientation(){
+ let {width, height} = Dimensions.get('window');
+ let isLandscape = width > height;
+
+ return {
+ width: width,
+ height: height,
+ isLandscape: isLandscape,
+ isPortrait: !isLandscape,
+ minusHeight: getMinusHeight(!isLandscape),
+ insetTop: getInsetTop(!isLandscape),
+ insetBottom: getInsetBottom(!isLandscape),
+ }
+}
+
+// Hide statusbar on iOS landscape so it is consistent with iOS 13.
+Dimensions.addEventListener('change', function(){
+ // give time to UI to adjust
+
+ setTimeout(()=>{
+ // On Android, always visible since it has a bunch of issues.
+ StatusBar.setHidden(IS_IOS && isLandscape(), 'none');
+ }, 100);
+});
+
diff --git a/examples/advanced/advanced/src/baseComponents/utils.js b/examples/advanced/advanced/src/baseComponents/utils.js
new file mode 100644
index 000000000..465ac411f
--- /dev/null
+++ b/examples/advanced/advanced/src/baseComponents/utils.js
@@ -0,0 +1,41 @@
+import React from 'react';
+import {InteractionManager} from 'react-native';
+import {Spinner, connectStyle} from "native-base";
+
+
+// helper that calls interaction manager run after interactions
+// but with a tiny timeout to also give time to other code to run
+// some RN change broke runAfterInteractions in a way that it no longer has a huge delay as it used to
+// so we add one here
+// returns a cancellable object
+export function runAfterInteractions(fun, to=25){
+ // setTimeout(() => {
+ // InteractionManager.runAfterInteractions(fun)
+ // }, to);
+
+ let prom = null;
+ let timeout = setTimeout(() => {
+ prom = InteractionManager.runAfterInteractions(fun);
+ }, to);
+
+ return () => {
+ clearTimeout(timeout);
+ if(prom){
+ prom.cancel();
+ prom = null;
+ }
+ }
+}
+
+
+
+class StyledSpinner extends React.PureComponent{
+ render(){
+ return
+ }
+}
+
+StyledSpinner = connectStyle("Branding")(StyledSpinner);
+
+
+export {StyledSpinner};
\ No newline at end of file
diff --git a/examples/advanced/advanced/src/conf.js b/examples/advanced/advanced/src/conf.js
new file mode 100644
index 000000000..39ea916eb
--- /dev/null
+++ b/examples/advanced/advanced/src/conf.js
@@ -0,0 +1,130 @@
+import {Dimensions} from 'react-native';
+import getTheme from './native-base-theme/components';
+import platform from './native-base-theme/variables/platform';
+
+
+let conf = {};
+
+// Returns the recommended scaling based on screen dimensions
+// as a string
+const recommendedScaling = () => {
+ try{
+
+ // our guideline will be 375 width, based on iphone 7,8 and Xs
+ // ideas taken from https://blog.solutotlv.com/size-matters/
+ const baseWidth = 375;
+ const factor = 0.3; // resize factor
+
+ // Tested Widths in DPI
+ // 375 -> iphone 7, 8, X, 11 [Pro] (4.7 to 5.8 inches) --> normal, no prompt
+ // 414 -> iPhone X/Xs/11 Max (6.5 inches) --> normal, no prompt
+ // 768 -> iPad Pro 9.7 inch (should be the same as ipad mini) --> average, prompt
+ // 834 -> iPad Pro 11 inch --> large, prompt
+ // 1024 -> iPad Pro 12.9 inch --> large prompt
+
+ let res = "1.0"; // our normal sizing
+
+ let {width, height} = Dimensions.get('window');
+ let value = Math.min(width, height); // just in case the device starts up rotated.
+
+ let scale, moderateScale;
+ if(value != 0){
+
+ scale = value / baseWidth;
+ moderateScale = 1 + (scale - 1) * factor;
+
+ // map our ratio to our internal scaling values
+ if(moderateScale >= 2.5){
+ res = "2.5";
+ }
+ else if(moderateScale <= 0.7){ // should never happen unless using a tiny phone
+ res = "0.7";
+ }
+ else{
+ res = (Math.round(moderateScale * 10 ) / 10).toFixed(1);
+ }
+
+ }
+ else{
+ console.warn("Warning, failed to get device screen ratio for scaling calculations, it was 0.");
+ }
+
+ return res;
+
+ }
+ catch(err){
+ console.error("CRITICAL: Failed to get recommended scaling", err.message || err)
+ }
+}
+
+// preconfigured, see native-base-theme/variables/platform for more options
+// key will be the value of the primary color so we can auto select the others
+conf.themes = {
+
+ // default: was typical orange, switched to gray. See gray below
+ 'default': {
+ primaryColor: '#404040',
+ toolbarColor: '#404040',
+ brandLight: '#cfd8dc'
+ },
+
+
+ // red dark
+ '#d32f2f': {
+ primaryColor: '#d32f2f',
+ toolbarColor: '#d32f2f',
+ brandLight: '#e57373',
+ brandDanger: '#b71c1c'
+ },
+
+
+ // super blue light
+ '#bbdefb': {
+ primaryColor: '#bbdefb',
+ toolbarColor: '#bbdefb',
+ brandLight: '#e4f1fb',
+
+ iosStatusbar: 'dark-content',
+ brandDark: '#d9d9d9',
+ brandDanger: '#eb7168',
+ brandSuccess: '#81c784',
+ brandInfo: '#4fc3f7',
+ brandWarning: '#fad25c',
+ brandBlack: '#3c3d3d',
+ inverseTextColor: '#3c3d3d'
+ },
+
+ // blue dark
+ '#1976d2': {
+ primaryColor: '#1976d2',
+ toolbarColor: '#1976d2',
+ brandLight: '#64b5f6'
+ },
+
+ // gray
+ '#404040': {
+ primaryColor: '#404040',
+ toolbarColor: '#404040',
+ brandLight: '#cfd8dc'
+ },
+
+ // black and white
+ 'black': {
+ primaryColor: 'black',
+ toolbarColor: 'black',
+ brandLight: 'white'
+ },
+
+}
+
+const getAppTheme = (overrides, scaling) => getTheme(platform(overrides, scaling));
+const buildTheme = (overrides) => {
+ return getAppTheme(overrides, sizeScaling);
+}
+
+let sizeScaling = parseFloat(recommendedScaling()) || 1;
+
+conf.theme = buildTheme(conf.themes.default);
+
+
+export default conf;
\ No newline at end of file
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Badge.js b/examples/advanced/advanced/src/native-base-theme/components/Badge.js
new file mode 100644
index 000000000..f5002d274
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Badge.js
@@ -0,0 +1,52 @@
+// @flow
+
+
+
+export default (variables) => {
+ const badgeTheme = {
+ ".primary": {
+ backgroundColor: variables.buttonPrimaryBg
+ },
+ ".warning": {
+ backgroundColor: variables.buttonWarningBg
+ },
+ ".info": {
+ backgroundColor: variables.buttonInfoBg
+ },
+ ".success": {
+ backgroundColor: variables.buttonSuccessBg
+ },
+ ".danger": {
+ backgroundColor: variables.buttonDangerBg
+ },
+ "NativeBase.Text": {
+ color: variables.badgeColor,
+ fontSize: variables.fontSizeBase,
+ lineHeight: variables.lineHeight - 1 * variables.sizeScaling,
+ textAlign: "center",
+ paddingHorizontal: 3 * variables.sizeScaling
+ },
+ '.small': {
+ paddingHorizontal: 3 * variables.sizeScaling,
+ height: 20 * variables.sizeScaling,
+ "NativeBase.Text": {
+ fontSize: variables.noteFontSize
+ }
+ },
+ '.transparent': {
+ backgroundColor: 'transparent',
+ borderRadius: 0,
+ "NativeBase.Text": {
+ color: '#000'
+ }
+ },
+ backgroundColor: variables.badgeBg,
+ padding: variables.badgePadding,
+ paddingHorizontal: 6 * variables.sizeScaling,
+ alignSelf: "flex-end",
+ justifyContent: "center", //variables.platform === "ios" ? "center" : undefined,
+ borderRadius: 13.5 * variables.sizeScaling,
+ height: 27 * variables.sizeScaling
+ };
+ return badgeTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Body.js b/examples/advanced/advanced/src/native-base-theme/components/Body.js
new file mode 100644
index 000000000..fab6bd920
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Body.js
@@ -0,0 +1,12 @@
+// @flow
+
+
+export default (variables) => {
+ const bodyTheme = {
+ flex: 1,
+ alignItems: 'center',
+ alignSelf: 'center'
+ };
+
+ return bodyTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Button.js b/examples/advanced/advanced/src/native-base-theme/components/Button.js
new file mode 100644
index 000000000..c1398eb9b
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Button.js
@@ -0,0 +1,615 @@
+// @flow
+
+
+
+export default (variables) => {
+ const platformStyle = variables.platformStyle;
+ const platform = variables.platform;
+
+ const blackCommon = {
+ "NativeBase.Text": {
+ color: variables.brandBlack
+ },
+ "NativeBase.H1": {
+ color: variables.brandBlack
+ },
+ "NativeBase.H2": {
+ color: variables.brandBlack
+ },
+ "NativeBase.H3": {
+ color: variables.brandBlack
+ },
+ "NativeBase.Icon": {
+ color: variables.brandBlack
+ },
+ "NativeBase.IconNB": {
+ color: variables.brandBlack
+ }
+ };
+
+ const blackCommonTransparent = {
+ "NativeBase.Text": {
+ color: variables.transparentColor
+ },
+ "NativeBase.H1": {
+ color: variables.transparentColor
+ },
+ "NativeBase.H2": {
+ color: variables.transparentColor
+ },
+ "NativeBase.H3": {
+ color: variables.transparentColor
+ },
+ "NativeBase.Icon": {
+ color: variables.transparentColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.transparentColor
+ }
+ };
+
+ const darkCommon = {
+ "NativeBase.Text": {
+ color: variables.brandDark
+ },
+ "NativeBase.H1": {
+ color: variables.brandDark
+ },
+ "NativeBase.H2": {
+ color: variables.brandDark
+ },
+ "NativeBase.H3": {
+ color: variables.brandDark
+ },
+ "NativeBase.Icon": {
+ color: variables.brandDark
+ },
+ "NativeBase.IconNB": {
+ color: variables.brandDark
+ }
+ };
+
+ const darkCommonTransparent = {
+ "NativeBase.Text": {
+ color: variables.transparentColor
+ },
+ "NativeBase.H1": {
+ color: variables.transparentColor
+ },
+ "NativeBase.H2": {
+ color: variables.transparentColor
+ },
+ "NativeBase.H3": {
+ color: variables.transparentColor
+ },
+ "NativeBase.Icon": {
+ color: variables.transparentColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.transparentColor
+ }
+ };
+
+ const lightCommon = {
+ "NativeBase.Text": {
+ color: variables.brandLight
+ },
+ "NativeBase.H1": {
+ color: variables.brandLight
+ },
+ "NativeBase.H2": {
+ color: variables.brandLight
+ },
+ "NativeBase.H3": {
+ color: variables.brandLight
+ },
+ "NativeBase.Icon": {
+ color: variables.brandLight
+ },
+ "NativeBase.IconNB": {
+ color: variables.brandLight
+ }
+ };
+ const primaryCommon = {
+ "NativeBase.Text": {
+ color: variables.buttonPrimaryBg
+ },
+ "NativeBase.H1": {
+ color: variables.buttonPrimaryBg
+ },
+ "NativeBase.H2": {
+ color: variables.buttonPrimaryBg
+ },
+ "NativeBase.H3": {
+ color: variables.buttonPrimaryBg
+ },
+ "NativeBase.Icon": {
+ color: variables.buttonPrimaryBg
+ },
+ "NativeBase.IconNB": {
+ color: variables.buttonPrimaryBg
+ }
+ };
+ const successCommon = {
+ "NativeBase.Text": {
+ color: variables.buttonSuccessBg
+ },
+ "NativeBase.H1": {
+ color: variables.buttonSuccessBg
+ },
+ "NativeBase.H2": {
+ color: variables.buttonSuccessBg
+ },
+ "NativeBase.H3": {
+ color: variables.buttonSuccessBg
+ },
+ "NativeBase.Icon": {
+ color: variables.buttonSuccessBg
+ },
+ "NativeBase.IconNB": {
+ color: variables.buttonSuccessBg
+ }
+ };
+ const infoCommon = {
+ "NativeBase.Text": {
+ color: variables.buttonInfoBg
+ },
+ "NativeBase.H1": {
+ color: variables.buttonInfoBg
+ },
+ "NativeBase.H2": {
+ color: variables.buttonInfoBg
+ },
+ "NativeBase.H3": {
+ color: variables.buttonInfoBg
+ },
+ "NativeBase.Icon": {
+ color: variables.buttonInfoBg
+ },
+ "NativeBase.IconNB": {
+ color: variables.buttonInfoBg
+ }
+ };
+ const warningCommon = {
+ "NativeBase.Text": {
+ color: variables.buttonWarningBg
+ },
+ "NativeBase.H1": {
+ color: variables.buttonWarningBg
+ },
+ "NativeBase.H2": {
+ color: variables.buttonWarningBg
+ },
+ "NativeBase.H3": {
+ color: variables.buttonWarningBg
+ },
+ "NativeBase.Icon": {
+ color: variables.buttonWarningBg
+ },
+ "NativeBase.IconNB": {
+ color: variables.buttonWarningBg
+ }
+ };
+ const dangerCommon = {
+ "NativeBase.Text": {
+ color: variables.buttonDangerBg
+ },
+ "NativeBase.H1": {
+ color: variables.buttonDangerBg
+ },
+ "NativeBase.H2": {
+ color: variables.buttonDangerBg
+ },
+ "NativeBase.H3": {
+ color: variables.buttonDangerBg
+ },
+ "NativeBase.Icon": {
+ color: variables.buttonDangerBg
+ },
+ "NativeBase.IconNB": {
+ color: variables.buttonDangerBg
+ }
+ };
+ const buttonTheme = {
+ ".disabled": {
+ ".transparent": {
+ backgroundColor: 'transparent',
+ "NativeBase.Text": {
+ color: variables.buttonDisabledBg
+ },
+ "NativeBase.H1": {
+ color: variables.buttonDisabledBg
+ },
+ "NativeBase.H2": {
+ color: variables.buttonDisabledBg
+ },
+ "NativeBase.H3": {
+ color: variables.buttonDisabledBg
+ },
+ "NativeBase.Icon": {
+ color: variables.buttonDisabledBg
+ },
+ "NativeBase.IconNB": {
+ color: variables.buttonDisabledBg
+ }
+ },
+ "NativeBase.Text": {
+ color: variables.buttonDisabledText
+ },
+ "NativeBase.Icon": {
+ color: variables.buttonDisabledText
+ },
+ "NativeBase.IconNB": {
+ color: variables.buttonDisabledText
+ },
+ backgroundColor: variables.buttonDisabledBg
+ },
+ ".bordered": {
+ ".black": {
+ ...blackCommon,
+ backgroundColor: "transparent",
+ borderColor: variables.brandBlack,
+ borderWidth: variables.borderWidth
+ },
+ ".dark": {
+ ...darkCommon,
+ backgroundColor: "transparent",
+ borderColor: variables.brandDark,
+ borderWidth: variables.borderWidth
+ },
+ ".light": {
+ ...lightCommon,
+ backgroundColor: "transparent",
+ borderColor: variables.brandLight,
+ borderWidth: variables.borderWidth
+ },
+ ".primary": {
+ ...primaryCommon,
+ backgroundColor: "transparent",
+ borderColor: variables.buttonPrimaryBg,
+ borderWidth: variables.borderWidth
+ },
+ ".success": {
+ ...successCommon,
+ backgroundColor: "transparent",
+ borderColor: variables.buttonSuccessBg,
+ borderWidth: variables.borderWidth
+ },
+ ".info": {
+ ...infoCommon,
+ backgroundColor: "transparent",
+ borderColor: variables.buttonInfoBg,
+ borderWidth: variables.borderWidth
+ },
+ ".warning": {
+ ...warningCommon,
+ backgroundColor: "transparent",
+ borderColor: variables.buttonWarningBg,
+ borderWidth: variables.borderWidth
+ },
+ ".danger": {
+ ...dangerCommon,
+ backgroundColor: "transparent",
+ borderColor: variables.buttonDangerBg,
+ borderWidth: variables.borderWidth
+ },
+ ".disabled": {
+ backgroundColor: 'transparent',
+ borderColor: variables.buttonDisabledBg,
+ borderWidth: variables.borderWidth,
+ "NativeBase.Text": {
+ color: variables.buttonDisabledBg
+ }
+ },
+ ...primaryCommon,
+ borderWidth: variables.borderWidth,
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowOpacity: null,
+ shadowRadius: null,
+ backgroundColor: "transparent"
+ },
+
+ ".black": {
+ ".bordered": {
+ ...blackCommon
+ },
+ backgroundColor: variables.brandBlack
+ },
+ ".dark": {
+ ".bordered": {
+ ...darkCommon
+ },
+ backgroundColor: variables.brandDark
+ },
+ ".light": {
+ ".bordered": {
+ ...lightCommon
+ },
+ ...blackCommon,
+ backgroundColor: variables.brandLight
+ },
+
+ ".primary": {
+ ".bordered": {
+ ...primaryCommon
+ },
+ backgroundColor: variables.buttonPrimaryBg
+ },
+
+ ".success": {
+ ".bordered": {
+ ...successCommon
+ },
+ backgroundColor: variables.buttonSuccessBg
+ },
+
+ ".info": {
+ ".bordered": {
+ ...infoCommon
+ },
+ backgroundColor: variables.buttonInfoBg
+ },
+
+ ".warning": {
+ ".bordered": {
+ ...warningCommon
+ },
+ backgroundColor: variables.buttonWarningBg
+ },
+
+ ".danger": {
+ ".bordered": {
+ ...dangerCommon
+ },
+ backgroundColor: variables.buttonDangerBg
+ },
+
+ ".block": {
+ justifyContent: "center",
+ alignSelf: "stretch"
+ },
+
+ ".full": {
+ justifyContent: "center",
+ alignSelf: "stretch",
+ borderRadius: 0
+ },
+
+ ".rounded": {
+ // paddingHorizontal: variables.buttonPadding + 20,
+ borderRadius: variables.borderRadiusLarge
+ },
+
+ ".transparent": {
+ backgroundColor: "transparent",
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null,
+ ...primaryCommon,
+
+ ".black": {
+ ...blackCommon,
+ backgroundColor: 'transparent'
+ },
+ ".dark": {
+ ...darkCommon,
+ backgroundColor: 'transparent'
+ },
+ ".danger": {
+ ...dangerCommon,
+ backgroundColor: 'transparent'
+ },
+ ".warning": {
+ ...warningCommon,
+ backgroundColor: 'transparent'
+ },
+ ".info": {
+ ...infoCommon,
+ backgroundColor: 'transparent'
+ },
+ ".primary": {
+ ...primaryCommon,
+ backgroundColor: 'transparent'
+ },
+ ".success": {
+ ...successCommon,
+ backgroundColor: 'transparent'
+ },
+ ".light": {
+ ...lightCommon,
+ backgroundColor: 'transparent'
+ },
+ ".disabled": {
+ backgroundColor: "transparent",
+ borderColor: variables.buttonDisabledBg,
+ borderWidth: variables.borderWidth,
+ "NativeBase.Text": {
+ color: variables.buttonDisabledBg
+ },
+ "NativeBase.Icon": {
+ color: variables.buttonDisabledBg
+ },
+ "NativeBase.IconNB": {
+ color: variables.buttonDisabledBg
+ }
+ }
+ },
+
+ ".small": {
+ height: 30 * variables.sizeScaling,
+ minWidth: 30 * variables.sizeScaling,
+ "NativeBase.Text": {
+ fontSize: variables.fontSizeSmall
+ },
+ "NativeBase.Icon": {
+ fontSize: 20 * variables.sizeScaling,
+ paddingTop: 0
+ },
+ "NativeBase.IconNB": {
+ fontSize: 20 * variables.sizeScaling,
+ paddingTop: 0
+ },
+ '.noWidth':{
+ minWidth: 0
+ }
+ },
+
+ ".large": {
+ height: 60 * variables.sizeScaling,
+ minWidth: 60 * variables.sizeScaling,
+ "NativeBase.Text": {
+ fontSize: variables.fontSizeLarge,
+ },
+ '.noWidth':{
+ minWidth: 0
+ }
+ },
+
+ ".medium": {
+ height: 50 * variables.sizeScaling,
+ minWidth: 50 * variables.sizeScaling,
+ "NativeBase.Text": {
+ fontSize: variables.fontSizeMedium,
+ },
+ '.noWidth':{
+ minWidth: 0
+ }
+ },
+
+ ".capitalize": {},
+
+ ".vertical": {
+ flexDirection: "column",
+ height: null
+ },
+
+ "NativeBase.Text": {
+ fontFamily: variables.buttonFontFamily,
+ marginLeft: 0,
+ marginRight: 0,
+ color: variables.inverseTextColor,
+ fontSize: variables.buttonTextSize,
+ paddingHorizontal: 16 * variables.sizeScaling,
+ backgroundColor: "transparent"
+ // childPosition: 1
+ },
+
+ "NativeBase.Icon": {
+ color: variables.inverseTextColor,
+ fontSize: variables.buttonIconSize,
+ marginHorizontal: 16 * variables.sizeScaling,
+ paddingTop: 0
+ },
+ "NativeBase.IconNB": {
+ color: variables.inverseTextColor,
+ fontSize: variables.buttonIconSize,
+ marginHorizontal: 16 * variables.sizeScaling,
+ paddingTop: 0
+ },
+
+ ".iconLeft": {
+ "NativeBase.Text": {
+ marginLeft: 0
+ },
+ "NativeBase.IconNB": {
+ marginRight: 0,
+ marginLeft: 16 * variables.sizeScaling
+ },
+ "NativeBase.Icon": {
+ marginRight: 0,
+ marginLeft: 16 * variables.sizeScaling
+ }
+ },
+ ".iconRight": {
+ "NativeBase.Text": {
+ marginRight: 0
+ },
+ "NativeBase.IconNB": {
+ marginLeft: 0,
+ marginRight: 16 * variables.sizeScaling
+ },
+ "NativeBase.Icon": {
+ marginLeft: 0,
+ marginRight: 16 * variables.sizeScaling
+ }
+ },
+ ".picker": {
+ "NativeBase.Text": {
+ ".note": {
+ fontSize: variables.noteFontSize,
+ lineHeight: null
+ }
+ }
+ },
+ ".noSpacing": {
+ "NativeBase.Text": {
+ marginHorizontal: 0,
+ paddingHorizontal: 8 * variables.sizeScaling,
+ },
+ "NativeBase.IconNB": {
+ marginHorizontal: 0,
+ paddingHorizontal: 8 * variables.sizeScaling,
+ },
+ "NativeBase.Icon": {
+ marginHorizontal: 0,
+ paddingHorizontal: 8 * variables.sizeScaling,
+ }
+ },
+
+ paddingVertical: variables.buttonPadding,
+ paddingHorizontal: 0,
+ backgroundColor: variables.buttonPrimaryBg,
+ borderRadius: variables.borderRadiusBase,
+ borderColor: variables.buttonPrimaryBg,
+ borderWidth: null,
+ height: variables.buttonHeight,
+ minWidth: variables.buttonHeight,
+ alignSelf: "flex-start",
+ flexDirection: "row",
+ elevation: 0,
+ shadowColor: platformStyle === "material" ? variables.brandBlack : undefined,
+ shadowOffset:
+ platformStyle === "material" ? { width: 0, height: 2 } : undefined,
+ shadowOpacity: platformStyle === "material" ? 0.2 : undefined,
+ shadowRadius: platformStyle === "material" ? 1.2 : undefined,
+ alignItems: "center",
+ justifyContent: "center",
+
+ '.leftJustified': {
+ justifyContent: 'flex-start'
+ },
+ '.rightJustified': {
+ justifyContent: 'flex-end'
+ },
+ '.topJustified': {
+ alignItems: "flex-start",
+ },
+ '.noWidth':{
+ minWidth: 0
+ },
+ '.autoHeight': {
+ height: 'auto'
+ },
+ '.selfCenter': {
+ alignSelf: 'center'
+ },
+ '.marginLeft': {
+ marginLeft: variables.contentPadding
+ },
+ '.marginRight': {
+ marginRight: variables.contentPadding
+ },
+ '.marginBottom': {
+ marginBottom: variables.contentPadding
+ },
+ '.flex1': {
+ flex: 1
+ }
+
+ };
+ return buttonTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Card.js b/examples/advanced/advanced/src/native-base-theme/components/Card.js
new file mode 100644
index 000000000..66ec497a1
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Card.js
@@ -0,0 +1,60 @@
+// @flow
+
+
+
+export default (variables) => {
+ const cardTheme = {
+ ".transparent": {
+ shadowColor: null,
+ shadowOffset: null,
+ shadowOpacity: null,
+ shadowRadius: null,
+ elevation: null,
+ backgroundColor: "transparent",
+ borderWidth: 0
+ },
+ ".noShadow": {
+ shadowColor: null,
+ shadowOffset: null,
+ shadowOpacity: null,
+ elevation: null
+ },
+ ".noRadius": {
+ borderRadius: 0
+ },
+ ".noRadiusTop": {
+ borderTopLeftRadius: 0,
+ borderTopRightRadius: 0
+ },
+ ".primary": {
+ borderColor: variables.brandPrimary,
+ //backgroundColor: variables.brandPrimary,
+
+ "NativeBase.CardItem": {
+ ".header": {
+ backgroundColor: variables.brandPrimary,
+ borderColor: variables.brandPrimary,
+ "NativeBase.Text": {
+ color: variables.inverseTextColor,
+ },
+ },
+ ".bordered": {
+ borderColor: variables.brandPrimary
+ }
+ }
+ },
+ marginVertical: 5 * variables.sizeScaling,
+ borderWidth: variables.borderWidth,
+ borderRadius: variables.cardBorderRadius,
+ borderColor: variables.cardBorderColor,
+ flexWrap: "nowrap",
+ backgroundColor: variables.cardDefaultBg,
+ shadowColor: "#000",
+ shadowOffset: { width: 0, height: 2 },
+ shadowOpacity: 0.1,
+ shadowRadius: 1.5,
+ elevation: 1
+ };
+
+ return cardTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/CardItem.js b/examples/advanced/advanced/src/native-base-theme/components/CardItem.js
new file mode 100644
index 000000000..2eec3b4d1
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/CardItem.js
@@ -0,0 +1,112 @@
+// @flow
+
+import { StyleSheet } from "react-native";
+
+
+export default (variables) => {
+ const platform = variables.platform;
+
+ const cardItemTheme = {
+ "NativeBase.Left": {
+ "NativeBase.Body": {
+ flex: 1,
+ marginLeft: 10 * variables.sizeScaling,
+ alignItems: null
+ },
+ flex: 0,
+ flexDirection: "row",
+ alignItems: "center"
+ },
+ ".content": {
+ "NativeBase.Text": {
+ color: platform === "ios" ? "#555" : "#222",
+ fontSize: variables.DefaultFontSize - 2 * variables.sizeScaling
+ }
+ },
+ ".cardBody": {
+ padding: -5 * variables.sizeScaling,
+ "NativeBase.Text": {
+ marginTop: 5 * variables.sizeScaling
+ }
+ },
+ "NativeBase.Body": {
+ flex: 1,
+ alignSelf: "stretch",
+ alignItems: "flex-start"
+ },
+ "NativeBase.Right": {
+
+ "NativeBase.Thumbnail": {
+ alignSelf: null
+ },
+ "NativeBase.Image": {
+ alignSelf: null
+ },
+ "NativeBase.Radio": {
+ alignSelf: null
+ },
+ "NativeBase.Checkbox": {
+ alignSelf: null
+ },
+ "NativeBase.Switch": {
+ alignSelf: null
+ },
+ flex: 0
+ },
+ ".header": {
+ "NativeBase.Text": {
+ fontSize: variables.headerFontSize,
+ fontWeight: platform === "ios" ? "600" : "600"
+ },
+ borderTopWidth: 0,
+ borderBottomWidth: variables.borderWidth,
+ borderColor: variables.cardBorderColor,
+ backgroundColor: variables.cardHeaderBg,
+ borderRadius: variables.cardBorderRadius,
+ borderBottomLeftRadius: 0,
+ borderBottomRightRadius: 0,
+ paddingVertical: variables.cardItemPadding
+ },
+ ".footer": {
+ "NativeBase.Text": {
+ fontSize: variables.headerFontSize,
+ fontWeight: platform === "ios" ? "600" : "600"
+ },
+ borderTopWidth: variables.borderWidth,
+ borderBottomWidth: 0,
+ backgroundColor: variables.cardHeaderBg,
+ borderRadius: variables.cardBorderRadius,
+ borderTopLeftRadius: 0,
+ borderTopRightRadius: 0
+ },
+ ".bordered": {
+ borderBottomWidth: variables.borderWidth,
+ borderColor: variables.cardBorderColor
+ },
+ '.first': {
+ borderTopLeftRadius: variables.cardBorderRadius,
+ borderTopRightRadius: variables.cardBorderRadius
+ },
+ '.last': {
+ borderBottomLeftRadius: variables.cardBorderRadius,
+ borderBottomRightRadius: variables.cardBorderRadius
+ },
+ flexDirection: "row",
+ alignItems: "center",
+ padding: variables.cardItemPadding,
+ paddingVertical: variables.cardItemPadding,
+ //backgroundColor: variables.cardDefaultBg,
+
+ ".noPadding": {
+ paddingHorizontal: 0
+ },
+ ".noRadius": {
+ borderRadius: 0
+ },
+ '.noBorder': {
+ borderWidth: 0,
+ },
+ };
+
+ return cardItemTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/CheckBox.js b/examples/advanced/advanced/src/native-base-theme/components/CheckBox.js
new file mode 100644
index 000000000..e96d3e93a
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/CheckBox.js
@@ -0,0 +1,37 @@
+// @flow
+
+
+
+export default (variables) => {
+ const checkBoxTheme = {
+ ".checked": {
+ "NativeBase.Icon": {
+ color: variables.checkboxTickColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.checkboxTickColor
+ }
+ },
+ "NativeBase.Icon": {
+ color: "transparent",
+ lineHeight: variables.CheckboxIconSize,
+ marginTop: variables.CheckboxIconMarginTop,
+ fontSize: variables.CheckboxFontSize
+ },
+ "NativeBase.IconNB": {
+ color: "transparent",
+ lineHeight: variables.CheckboxIconSize,
+ marginTop: variables.CheckboxIconMarginTop,
+ fontSize: variables.CheckboxFontSize
+ },
+ borderRadius: variables.CheckboxRadius,
+ overflow: "hidden",
+ width: variables.checkboxSize,
+ height: variables.checkboxSize,
+ borderWidth: variables.CheckboxBorderWidth,
+ paddingLeft: variables.CheckboxPaddingLeft - 1 * variables.sizeScaling,
+ paddingBottom: variables.CheckboxPaddingBottom
+ };
+
+ return checkBoxTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Container.js b/examples/advanced/advanced/src/native-base-theme/components/Container.js
new file mode 100644
index 000000000..47f5754e8
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Container.js
@@ -0,0 +1,28 @@
+// @flow
+
+import { Platform, Dimensions } from "react-native";
+
+
+const deviceHeight = Dimensions.get("window").height;
+
+export default (variables) => {
+ const theme = {
+ flex: 1,
+ //height: Platform.OS === "ios" ? deviceHeight : deviceHeight - 120,
+ backgroundColor: variables.containerBgColor,
+ '.toolbarColor': {
+ backgroundColor: variables.toolbarDefaultBg
+ },
+ '.transparent': {
+ backgroundColor: 'transparent'
+ },
+ '.semiTransparent': {
+ backgroundColor: 'rgba(0,0,0, 0.9)'
+ },
+ '.fullBlack': {
+ backgroundColor: 'black'
+ }
+ };
+
+ return theme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Content.js b/examples/advanced/advanced/src/native-base-theme/components/Content.js
new file mode 100644
index 000000000..3e9222f01
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Content.js
@@ -0,0 +1,22 @@
+// @flow
+
+
+
+export default (variables) => {
+ const contentTheme = {
+ flex: 1,
+ backgroundColor: 'transparent',
+ '.colored': {
+ backgroundColor: variables.containerBgColor,
+ },
+ '.semiTransparent': {
+ backgroundColor: 'rgba(0,0,0, 0.9)'
+ },
+ "NativeBase.Segment": {
+ borderWidth: 0,
+ backgroundColor: "transparent"
+ }
+ };
+
+ return contentTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Fab.js b/examples/advanced/advanced/src/native-base-theme/components/Fab.js
new file mode 100644
index 000000000..49b726515
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Fab.js
@@ -0,0 +1,29 @@
+// @flow
+
+
+
+export default (variables) => {
+ const platform = variables.platform;
+
+ const fabTheme = {
+ "NativeBase.Button": {
+ alignItems: "center",
+ padding: null,
+ justifyContent: "center",
+ "NativeBase.Icon": {
+ alignSelf: "center",
+ fontSize: 20 * variables.sizeScaling,
+ marginLeft: 0,
+ marginRight: 0,
+ },
+ "NativeBase.IconNB": {
+ alignSelf: "center",
+ fontSize: 20 * variables.sizeScaling,
+ marginLeft: 0,
+ marginRight: 0,
+ },
+ },
+ };
+
+ return fabTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Footer.js b/examples/advanced/advanced/src/native-base-theme/components/Footer.js
new file mode 100644
index 000000000..d3c515305
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Footer.js
@@ -0,0 +1,129 @@
+// @flow
+
+
+
+export default (variables) => {
+ const platformStyle = variables.platformStyle;
+ const platform = variables.platform;
+
+ const iconCommon = {
+ "NativeBase.Icon": {
+ color: variables.tabBarActiveTextColor
+ }
+ };
+ const iconNBCommon = {
+ "NativeBase.IconNB": {
+ color: variables.tabBarActiveTextColor
+ }
+ };
+ const textCommon = {
+ "NativeBase.Text": {
+ color: variables.tabBarActiveTextColor
+ }
+ };
+ const footerTheme = {
+ "NativeBase.Left": {
+ "NativeBase.Button": {
+ ".transparent": {
+ backgroundColor: "transparent",
+ borderColor: null,
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null,
+ ...iconCommon,
+ ...iconNBCommon,
+ ...textCommon
+ },
+ alignSelf: null,
+ ...iconCommon,
+ ...iconNBCommon,
+ // ...textCommon
+ },
+ flex: 1,
+ alignSelf: "center",
+ alignItems: "flex-start"
+ },
+ "NativeBase.Body": {
+ flex: 1,
+ alignItems: "center",
+ alignSelf: "center",
+ flexDirection: "row",
+ "NativeBase.Button": {
+ alignSelf: "center",
+ ".transparent": {
+ backgroundColor: "transparent",
+ borderColor: null,
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null,
+ ...iconCommon,
+ ...iconNBCommon,
+ ...textCommon
+ },
+ ".full": {
+ height: variables.footerHeight,
+ paddingBottom: variables.footerPaddingBottom,
+ flex: 1
+ },
+ ...iconCommon,
+ ...iconNBCommon,
+ // ...textCommon
+ }
+ },
+ "NativeBase.Right": {
+ "NativeBase.Button": {
+ ".transparent": {
+ backgroundColor: "transparent",
+ borderColor: null,
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null,
+ ...iconCommon,
+ ...iconNBCommon,
+ ...textCommon
+ },
+ alignSelf: null,
+ ...iconCommon,
+ ...iconNBCommon,
+ // ...textCommon
+ },
+ flex: 1,
+ alignSelf: "center",
+ alignItems: "flex-end"
+ },
+ backgroundColor: variables.footerDefaultBg,
+ flexDirection: "row",
+ justifyContent: "center",
+ borderTopWidth: undefined,
+ // platform === "ios" && platformStyle !== "material"
+ // ? variables.borderWidth
+ // : undefined,
+ borderColor: undefined,
+ // platform === "ios" && platformStyle !== "material"
+ // ? "#cbcbcb"
+ // : undefined,
+ height: variables.footerHeight,
+ paddingBottom: variables.footerPaddingBottom,
+ elevation: 3,
+ left: 0,
+ right: 0,
+
+ '.landscape': {
+ position: 'absolute',
+ top: 0,
+ // right: !variables.isIphoneX ? 0 : null,
+ // left: !variables.isIphoneX ? null : 0,
+ right: 0,
+ left: null,
+ height: !variables.isIphoneX ? '100%' : Math.min(variables.deviceWidth, variables.deviceHeight),
+ width: variables.footerWidth,
+ }
+ };
+ return footerTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/FooterTab.js b/examples/advanced/advanced/src/native-base-theme/components/FooterTab.js
new file mode 100644
index 000000000..85c240d74
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/FooterTab.js
@@ -0,0 +1,112 @@
+// @flow
+
+import { Platform } from "react-native";
+
+
+
+export default (variables) => {
+ const platform = variables.platform;
+
+ const nativeBaseButton = {
+ ".active": {
+ "NativeBase.Text": {
+ color: variables.tabBarActiveTextColor,
+ fontSize: variables.tabBarTextSize,
+ lineHeight: 16 * variables.sizeScaling
+ },
+ "NativeBase.Icon": {
+ color: variables.tabBarActiveTextColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.tabBarActiveTextColor
+ },
+ backgroundColor: variables.tabActiveBgColor
+ },
+ ".transparent": {
+ "NativeBase.Text": {
+ color: variables.tabBarTextColor,
+ },
+ "NativeBase.H1": {
+ color: variables.tabBarTextColor,
+ },
+ "NativeBase.H2": {
+ color: variables.tabBarTextColor,
+ },
+ "NativeBase.H3": {
+ color: variables.tabBarTextColor,
+ },
+ "NativeBase.Icon": {
+ color: variables.tabBarTextColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.tabBarTextColor
+ }
+ },
+ flexDirection: null,
+ backgroundColor: "transparent",
+ borderColor: null,
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null,
+ alignSelf: "center",
+ flex: 1,
+ height: variables.footerHeight - 5 * variables.sizeScaling,
+ justifyContent: "center",
+ ".badge": {
+ "NativeBase.Badge": {
+ "NativeBase.Text": {
+ fontSize: 11 * variables.sizeScaling,
+ fontWeight: platform === "ios" ? "600" : "600",
+ lineHeight: 14 * variables.sizeScaling
+ },
+ top: -3,
+ alignSelf: "center",
+ left: 10,
+ zIndex: 99,
+ height: 18 * variables.sizeScaling,
+ padding: 1.7 * variables.sizeScaling,
+ paddingHorizontal: 3 * variables.sizeScaling
+ },
+ "NativeBase.Icon": {
+ marginTop: -18 * variables.sizeScaling
+ }
+ },
+ "NativeBase.Icon": {
+ color: variables.tabBarTextColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.tabBarTextColor
+ },
+ "NativeBase.Text": {
+ color: variables.tabBarTextColor,
+ fontSize: variables.tabBarTextSize,
+ lineHeight: 16 * variables.sizeScaling
+ }
+ }
+
+ const footerTabTheme = {
+ "NativeBase.Button": nativeBaseButton,
+ backgroundColor: Platform.OS === "android"
+ ? variables.footerDefaultBg
+ : undefined,
+ flexDirection: "row",
+ justifyContent: "space-between",
+ flex: 1,
+ alignSelf: "stretch",
+
+ '.landscape': {
+ flexDirection: 'column',
+ marginTop: variables.platform === 'ios' ? 15 : 0, // do not scale this one
+
+ // gotta override these too
+ "NativeBase.Button": Object.assign({}, nativeBaseButton, {
+ width: '100%',
+ margin: 0,
+ })
+ }
+ };
+
+ return footerTabTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Form.js b/examples/advanced/advanced/src/native-base-theme/components/Form.js
new file mode 100644
index 000000000..e0cafed5a
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Form.js
@@ -0,0 +1,90 @@
+// @flow
+
+
+
+export default (variables) => {
+ const platform = variables.platform;
+
+ const theme = {
+ "NativeBase.Item": {
+ ".fixedLabel": {
+ "NativeBase.Label": {
+ paddingLeft: null
+ },
+ marginLeft: 15 * variables.sizeScaling
+ },
+ ".inlineLabel": {
+ "NativeBase.Label": {
+ paddingLeft: null
+ },
+ marginLeft: 15 * variables.sizeScaling
+ },
+ ".placeholderLabel": {
+ "NativeBase.Input": {}
+ },
+ ".stackedLabel": {
+ "NativeBase.Label": {
+ top: 5,
+ paddingLeft: null
+ },
+ "NativeBase.Input": {
+ paddingLeft: null,
+ marginLeft: null
+ },
+ "NativeBase.Icon": {
+ marginTop: 36 * variables.sizeScaling
+ },
+ marginLeft: 15 * variables.sizeScaling
+ },
+ ".floatingLabel": {
+ "NativeBase.Input": {
+ paddingLeft: null,
+ top: 10,
+ marginLeft: null
+ },
+ "NativeBase.Label": {
+ left: 0,
+ top: 6
+ },
+ "NativeBase.Icon": {
+ top: 6
+ },
+ marginTop: 15 * variables.sizeScaling,
+ marginLeft: 15 * variables.sizeScaling
+ },
+ ".regular": {
+ "NativeBase.Label": {
+ left: 0
+ },
+ marginLeft: 0
+ },
+ ".rounded": {
+ "NativeBase.Label": {
+ left: 0
+ },
+ marginLeft: 0
+ },
+ ".underline": {
+ "NativeBase.Label": {
+ left: 0,
+ top: 0,
+ position: "relative"
+ },
+ "NativeBase.Input": {
+ left: -15 * variables.sizeScaling
+ },
+ marginLeft: 15 * variables.sizeScaling
+ },
+ ".last": {
+ marginLeft: 0,
+ paddingLeft: 15 * variables.sizeScaling
+ },
+ "NativeBase.Label": {
+ paddingRight: 5 * variables.sizeScaling
+ },
+ marginLeft: 15 * variables.sizeScaling
+ }
+ };
+
+ return theme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/H1.js b/examples/advanced/advanced/src/native-base-theme/components/H1.js
new file mode 100644
index 000000000..bd67e92e9
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/H1.js
@@ -0,0 +1,37 @@
+// @flow
+
+
+
+export default (variables) => {
+ const h1Theme = {
+ color: variables.textColor,
+ fontSize: variables.fontSizeH1,
+ lineHeight: variables.lineHeightH1,
+ '.transparent': {
+ color: variables.transparentColor
+ },
+ '.inverse': {
+ color: variables.inverseTextColor,
+ },
+ '.dark': {
+ color: variables.brandDark
+ },
+ '.black': {
+ color: variables.brandBlack
+ },
+ '.light':{
+ color: variables.brandLight
+ },
+ '.danger':{
+ color: variables.brandDanger
+ },
+ '.success':{
+ color: variables.brandSuccess
+ },
+ ".block": {
+ width: '100%'
+ },
+ };
+
+ return h1Theme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/H2.js b/examples/advanced/advanced/src/native-base-theme/components/H2.js
new file mode 100644
index 000000000..e396db423
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/H2.js
@@ -0,0 +1,37 @@
+// @flow
+
+
+
+export default (variables) => {
+ const h2Theme = {
+ color: variables.textColor,
+ fontSize: variables.fontSizeH2,
+ lineHeight: variables.lineHeightH2,
+ '.transparent': {
+ color: variables.transparentColor
+ },
+ '.inverse': {
+ color: variables.inverseTextColor,
+ },
+ '.dark': {
+ color: variables.brandDark
+ },
+ '.black': {
+ color: variables.brandBlack
+ },
+ '.light':{
+ color: variables.brandLight
+ },
+ '.danger':{
+ color: variables.brandDanger
+ },
+ '.success':{
+ color: variables.brandSuccess
+ },
+ ".block": {
+ width: '100%'
+ },
+ };
+
+ return h2Theme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/H3.js b/examples/advanced/advanced/src/native-base-theme/components/H3.js
new file mode 100644
index 000000000..0d2436623
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/H3.js
@@ -0,0 +1,37 @@
+// @flow
+
+
+
+export default (variables) => {
+ const h3Theme = {
+ color: variables.textColor,
+ fontSize: variables.fontSizeH3,
+ lineHeight: variables.lineHeightH3,
+ '.transparent': {
+ color: variables.transparentColor
+ },
+ '.inverse': {
+ color: variables.inverseTextColor,
+ },
+ '.dark': {
+ color: variables.brandDark
+ },
+ '.black': {
+ color: variables.brandBlack
+ },
+ '.light':{
+ color: variables.brandLight
+ },
+ '.danger':{
+ color: variables.brandDanger
+ },
+ '.success':{
+ color: variables.brandSuccess
+ },
+ ".block": {
+ width: '100%'
+ },
+ };
+
+ return h3Theme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Header.js b/examples/advanced/advanced/src/native-base-theme/components/Header.js
new file mode 100644
index 000000000..49003379a
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Header.js
@@ -0,0 +1,381 @@
+import { PixelRatio, StatusBar } from "react-native";
+
+
+export default (variables) => {
+ const platformStyle = variables.platformStyle;
+ const platform = variables.platform;
+
+ const textStyle = {
+ color: variables.toolbarBtnTextColor,
+ top: 0,
+ paddingHorizontal: 8 * variables.sizeScaling,
+ '.transparent': {
+ color: variables.toolbarBtnTextColor,
+ }
+ }
+
+ const titleStyle = {
+ color: variables.toolbarBtnTextColor,
+ '.transparent': {
+ color: variables.toolbarBtnTextColor,
+ }
+ }
+
+ const transparentTextStyle = {
+ color: variables.transparentColor,
+ '.transparent': {
+ color: variables.transparentColor
+ }
+ }
+
+ const iconStyle = {
+ color: variables.toolbarBtnTextColor,
+ fontSize: variables.iconHeaderSize,
+ marginTop: 0,
+ marginHorizontal: 8 * variables.sizeScaling,
+ paddingTop: 1 * variables.sizeScaling,
+ '.transparent': {
+ color: variables.toolbarBtnTextColor,
+ }
+ }
+
+ const transparentIconStyle = {
+ color: variables.transparentColor,
+ '.transparent': {
+ color: variables.transparentColor
+ }
+ }
+
+ const buttonStyle = {
+ ".transparent": {
+ backgroundColor: "transparent",
+ borderColor: null,
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null,
+ "NativeBase.Icon": {
+ color: variables.toolbarBtnTextColor,
+ '.transparent': {
+ color: variables.toolbarBtnTextColor,
+ }
+ },
+ "NativeBase.IconNB": {
+ color: variables.toolbarBtnTextColor,
+ '.transparent': {
+ color: variables.toolbarBtnTextColor,
+ }
+ },
+ "NativeBase.Text": {
+ color: variables.toolbarBtnTextColor,
+ '.transparent': {
+ color: variables.toolbarBtnTextColor,
+ }
+ }
+ },
+
+ "NativeBase.Icon": iconStyle,
+ "NativeBase.IconNB": iconStyle,
+ "NativeBase.Text": textStyle,
+
+ ".noSpacing": {
+ "NativeBase.Text": {
+ marginHorizontal: 0,
+ paddingHorizontal: 8 * variables.sizeScaling,
+ },
+ "NativeBase.IconNB": {
+ marginHorizontal: 0,
+ paddingHorizontal: 8 * variables.sizeScaling,
+ },
+ "NativeBase.Icon": {
+ marginHorizontal: 0,
+ paddingHorizontal: 8 * variables.sizeScaling,
+ },
+ minWidth: 38 * variables.sizeScaling,
+
+ },
+
+ alignSelf: null
+ }
+
+ const transparentButton = {
+ backgroundColor: "transparent",
+ borderColor: null,
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null,
+
+ ".transparent": {
+ "NativeBase.Icon": transparentIconStyle,
+ "NativeBase.IconNB": transparentIconStyle,
+ "NativeBase.Text": transparentTextStyle
+ },
+
+ "NativeBase.Icon": transparentIconStyle,
+ "NativeBase.IconNB": transparentIconStyle,
+ "NativeBase.Text": transparentTextStyle
+ }
+
+
+
+
+ const headerTheme = {
+ ".span": {
+ height: 128 * variables.sizeScaling,
+ "NativeBase.Left": {
+ alignSelf: "flex-start"
+ },
+ "NativeBase.Body": {
+ alignSelf: "flex-end",
+ alignItems: "flex-start",
+ justifyContent: "center",
+ paddingBottom: 26 * variables.sizeScaling
+ },
+ "NativeBase.Right": {
+ alignSelf: "flex-start"
+ }
+ },
+ ".hasSubtitle": {
+ "NativeBase.Body": {
+ "NativeBase.Title": {
+ fontSize: variables.titleFontSize - 2 * variables.sizeScaling,
+ fontFamily: variables.titleFontfamily,
+ textAlign: "center",
+ fontWeight: "500",
+ paddingBottom: 3 * variables.sizeScaling
+ },
+ "NativeBase.Subtitle": {
+ fontSize: variables.subTitleFontSize,
+ fontFamily: variables.titleFontfamily,
+ color: variables.subtitleColor,
+ textAlign: "center"
+ }
+ }
+ },
+ ".noShadow": {
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null
+ },
+ ".hasTabs": {
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null,
+ borderBottomWidth: null
+ },
+ ".hasSegment": {
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null,
+ borderBottomWidth: null,
+ "NativeBase.Left": {
+ flex: 0.3
+ },
+ "NativeBase.Right": {
+ flex: 0.3
+ },
+ "NativeBase.Body": {
+ flex: 1,
+ "NativeBase.Segment": {
+ marginRight: 0,
+ alignSelf: "center",
+ "NativeBase.Button": {
+ paddingLeft: 0,
+ paddingRight: 0
+ }
+ }
+ }
+ },
+ ".noLeft": {
+ "NativeBase.Left": {
+ width: platform === "ios" ? undefined : 0,
+ flex: platform === "ios" ? 1 : 0
+ },
+ "NativeBase.Body": {
+ "NativeBase.Title": {
+ paddingLeft: platform === "ios" ? undefined : (10 * variables.sizeScaling)
+ },
+ "NativeBase.Subtitle": {
+ paddingLeft: platform === "ios" ? undefined : (10 * variables.sizeScaling)
+ }
+ }
+ },
+
+ ".searchBar": {
+ "NativeBase.Item": {
+ "NativeBase.Icon": {
+ backgroundColor: "transparent",
+ color: variables.dropdownLinkColor,
+ fontSize: variables.toolbarSearchIconSize,
+ alignItems: "center",
+ marginTop: 2 * variables.sizeScaling,
+ paddingRight: 10 * variables.sizeScaling,
+ paddingLeft: 10 * variables.sizeScaling
+ },
+ "NativeBase.IconNB": {
+ backgroundColor: "transparent",
+ color: null,
+ alignSelf: "center"
+ },
+ "NativeBase.Input": {
+ alignSelf: "center",
+ lineHeight: null,
+ height: variables.searchBarInputHeight
+ },
+ alignSelf: "center",
+ alignItems: "center",
+ justifyContent: "flex-start",
+ flex: 1,
+ height: variables.searchBarHeight,
+ borderColor: "transparent",
+ backgroundColor: variables.toolbarInputColor
+ },
+ "NativeBase.Button": {
+ ".transparent": {
+ paddingLeft: platform === "ios" ? (10 * variables.sizeScaling) : null
+ },
+ width: platform === "ios" ? undefined : 0,
+ height: platform === "ios" ? undefined : 0
+ }
+ },
+ ".rounded": {
+ "NativeBase.Item": {
+ borderRadius: (platform === "ios" && platformStyle !== "material" ? 25 : 3) * variables.sizeScaling
+ }
+ },
+ "NativeBase.Left": {
+ "NativeBase.Button": buttonStyle,
+ "NativeBase.Text": textStyle,
+ "NativeBase.Title": titleStyle,
+ "NativeBase.Icon": iconStyle,
+ "NativeBase.IconNB": iconStyle,
+
+ flex: 0,
+ alignSelf: "center",
+ alignItems: "flex-start",
+ '.paddingRight': {
+ paddingRight: variables.contentPadding
+ },
+ '.paddingLeft': {
+ paddingLeft: variables.contentPadding
+ }
+ },
+ "NativeBase.Body": {
+ "NativeBase.Button": buttonStyle,
+ "NativeBase.Text": textStyle,
+ "NativeBase.Title": titleStyle,
+ "NativeBase.Icon": iconStyle,
+ "NativeBase.IconNB": iconStyle,
+ "NativeBase.Segment": {
+ borderWidth: 0,
+ alignSelf: "flex-end",
+ marginRight: (platform === "ios" ? -40 : -55) * variables.sizeScaling
+ },
+
+ flex: 1,
+ alignItems: 'flex-start',
+ alignSelf: "center",
+
+
+ '.paddingRight': {
+ paddingRight: variables.contentPadding
+ },
+ '.paddingLeft': {
+ paddingLeft: variables.contentPadding
+ }
+ },
+ "NativeBase.Right": {
+ "NativeBase.Button": buttonStyle,
+ "NativeBase.Text": textStyle,
+ "NativeBase.Title": titleStyle,
+ "NativeBase.Icon": iconStyle,
+ "NativeBase.IconNB": iconStyle,
+
+ flex: 0,
+ alignSelf: "center",
+ alignItems: "flex-end",
+ flexDirection: "row",
+ justifyContent: "flex-end",
+ '.paddingRight': {
+ paddingRight: variables.contentPadding
+ },
+ '.paddingLeft': {
+ paddingLeft: variables.contentPadding
+ }
+ },
+ backgroundColor: variables.toolbarDefaultBg,
+ flexDirection: "row",
+ paddingLeft: 0, //platform === "ios" && variables.platformStyle !== "material" ? 6 : 10,
+ paddingRight: 0,
+ justifyContent: "center",
+ paddingTop: 0, // Header component will handle paddings.
+ borderBottomWidth:
+ platform === "ios" ? variables.borderWidth : 0,
+ borderBottomColor: variables.toolbarDefaultBorder,
+ height: variables.toolbarHeight,
+ elevation: 3,
+ shadowColor: platformStyle === "material" ? "#000" : undefined,
+ shadowOffset:
+ platformStyle === "material" ? { width: 0, height: 2 } : undefined,
+ shadowOpacity: platformStyle === "material" ? 0.2 : undefined,
+ shadowRadius: platformStyle === "material" ? 1.2 : undefined,
+ top: 0,
+ left: 0,
+ right: 0,
+ zIndex: 100,
+
+ '.noPadding': {
+ paddingLeft: 0,
+ paddingRight: 0
+ },
+
+ ".transparent": {
+ backgroundColor: "rgba(0,0,0,0.4)",
+ borderBottomColor: "transparent",
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null,
+
+ "NativeBase.Button": transparentButton,
+ "NativeBase.Text": transparentTextStyle,
+ "NativeBase.Title": transparentTextStyle,
+ "NativeBase.Icon": transparentIconStyle,
+ "NativeBase.IconNB": transparentIconStyle,
+
+ "NativeBase.Left": {
+ "NativeBase.Button": transparentButton,
+ "NativeBase.Text": transparentTextStyle,
+ "NativeBase.Title": transparentTextStyle,
+ "NativeBase.Icon": transparentIconStyle,
+ "NativeBase.IconNB": transparentIconStyle,
+ },
+ "NativeBase.Body": {
+ "NativeBase.Button": transparentButton,
+ "NativeBase.Text": transparentTextStyle,
+ "NativeBase.Title": transparentTextStyle,
+ "NativeBase.Icon": transparentIconStyle,
+ "NativeBase.IconNB": transparentIconStyle,
+ },
+ "NativeBase.Right": {
+ "NativeBase.Button": transparentButton,
+ "NativeBase.Text": transparentTextStyle,
+ "NativeBase.Title": transparentTextStyle,
+ "NativeBase.Icon": transparentIconStyle,
+ "NativeBase.IconNB": transparentIconStyle,
+ },
+ }
+ };
+
+ return headerTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Icon.js b/examples/advanced/advanced/src/native-base-theme/components/Icon.js
new file mode 100644
index 000000000..1563918ad
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Icon.js
@@ -0,0 +1,58 @@
+// @flow
+
+
+
+export default (variables) => {
+ const iconTheme = {
+ fontSize: variables.iconFontSize,
+ color: variables.textColor,
+
+ '.transparent': {
+ color: variables.transparentColor
+ },
+ '.inverse': {
+ color: variables.inverseTextColor,
+ },
+ '.dark': {
+ color: variables.brandDark
+ },
+ '.black': {
+ color: variables.brandBlack
+ },
+ '.light':{
+ color: variables.brandLight
+ },
+ '.danger':{
+ color: variables.brandDanger
+ },
+ '.success':{
+ color: variables.brandSuccess
+ },
+ ".warning": {
+ color: variables.brandWarning
+ },
+ '.brandInfo': {
+ color: variables.brandInfo
+ },
+ '.noMargin':{
+ marginHorizontal: 0,
+ },
+ '.noMarginLeft':{
+ marginLeft: 0
+ },
+ '.noMarginRight':{
+ marginRight: 0
+ },
+ '.normal': {
+ fontSize: variables.iconFontSize
+ },
+ '.small': {
+ fontSize: variables.iconFontSize - 10 * variables.sizeScaling,
+ },
+ '.large': {
+ fontSize: variables.iconFontSize + 5 * variables.sizeScaling,
+ }
+ };
+
+ return iconTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Input.js b/examples/advanced/advanced/src/native-base-theme/components/Input.js
new file mode 100644
index 000000000..2510b4208
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Input.js
@@ -0,0 +1,33 @@
+// @flow
+
+
+export default (variables) => {
+ const inputTheme = {
+ '.multiline': {
+ height: null,
+ },
+ '.transparent': {
+ color: variables.transparentColor
+ },
+ '.inverse': {
+ color: variables.inverseTextColor,
+ },
+ '.light':{
+ color: variables.brandLight
+ },
+ ".block": {
+ width: '100%'
+ },
+ '.italic': {
+ fontStyle: 'italic'
+ },
+ height: variables.inputHeightBase,
+ color: variables.inputColor,
+ paddingLeft: 0, //5,
+ paddingRight: 0, //5
+ flex: 1,
+ fontSize: variables.inputFontSize
+ };
+
+ return inputTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/InputGroup.js b/examples/advanced/advanced/src/native-base-theme/components/InputGroup.js
new file mode 100644
index 000000000..709c43dd3
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/InputGroup.js
@@ -0,0 +1,132 @@
+// @flow
+
+
+
+export default (variables) => {
+ const inputGroupTheme = {
+ "NativeBase.Icon": {
+ fontSize: variables.buttonIconSize,
+ color: variables.sTabBarActiveTextColor,
+ paddingHorizontal: 5 * variables.sizeScaling
+ },
+ "NativeBase.IconNB": {
+ fontSize: variables.buttonIconSize,
+ color: variables.sTabBarActiveTextColor,
+ paddingHorizontal: 5 * variables.sizeScaling
+ },
+ "NativeBase.Input": {
+ height: variables.inputHeightBase,
+ color: variables.inputColor,
+ paddingLeft: 5 * variables.sizeScaling,
+ paddingRight: 5 * variables.sizeScaling,
+ flex: 1,
+ fontSize: variables.inputFontSize,
+ lineHeight: variables.inputLineHeight
+ },
+ ".underline": {
+ ".success": {
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".error": {
+ borderColor: variables.inputErrorBorderColor
+ },
+ paddingLeft: 5 * variables.sizeScaling,
+ borderWidth: variables.borderWidth,
+ borderTopWidth: 0,
+ borderRightWidth: 0,
+ borderLeftWidth: 0,
+ borderColor: variables.inputBorderColor
+ },
+ ".regular": {
+ ".success": {
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".error": {
+ borderColor: variables.inputErrorBorderColor
+ },
+ paddingLeft: 5 * variables.sizeScaling,
+ borderWidth: variables.borderWidth,
+ borderColor: variables.inputBorderColor
+ },
+ ".rounded": {
+ ".success": {
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".error": {
+ borderColor: variables.inputErrorBorderColor
+ },
+ paddingLeft: 5 * variables.sizeScaling,
+ borderWidth: variables.borderWidth,
+ borderRadius: variables.inputGroupRoundedBorderRadius,
+ borderColor: variables.inputBorderColor
+ },
+
+ ".success": {
+ "NativeBase.Icon": {
+ color: variables.inputSuccessBorderColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.inputSuccessBorderColor
+ },
+ ".rounded": {
+ borderRadius: 30 * variables.sizeScaling,
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".regular": {
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".underline": {
+ borderWidth: variables.borderWidth,
+ borderTopWidth: 0,
+ borderRightWidth: 0,
+ borderLeftWidth: 0,
+ borderColor: variables.inputSuccessBorderColor
+ },
+ borderColor: variables.inputSuccessBorderColor
+ },
+
+ ".error": {
+ "NativeBase.Icon": {
+ color: variables.inputErrorBorderColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.inputErrorBorderColor
+ },
+ ".rounded": {
+ borderRadius: 30 * variables.sizeScaling,
+ borderColor: variables.inputErrorBorderColor
+ },
+ ".regular": {
+ borderColor: variables.inputErrorBorderColor
+ },
+ ".underline": {
+ borderWidth: variables.borderWidth,
+ borderTopWidth: 0,
+ borderRightWidth: 0,
+ borderLeftWidth: 0,
+ borderColor: variables.inputErrorBorderColor
+ },
+ borderColor: variables.inputErrorBorderColor
+ },
+ ".disabled": {
+ "NativeBase.Icon": {
+ color: "#384850"
+ },
+ "NativeBase.IconNB": {
+ color: "#384850"
+ }
+ },
+
+ paddingLeft: 5 * variables.sizeScaling,
+ borderWidth: variables.borderWidth,
+ borderTopWidth: 0,
+ borderRightWidth: 0,
+ borderLeftWidth: 0,
+ borderColor: variables.inputBorderColor,
+ backgroundColor: "transparent",
+ flexDirection: "row",
+ alignItems: "center"
+ };
+
+ return inputGroupTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Item.js b/examples/advanced/advanced/src/native-base-theme/components/Item.js
new file mode 100644
index 000000000..e547d21bd
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Item.js
@@ -0,0 +1,246 @@
+// @flow
+
+import { Platform } from "react-native";
+
+
+
+export default (variables) => {
+ const itemTheme = {
+ ".floatingLabel": {
+ "NativeBase.Input": {
+ height: variables.inputHeightBase,
+ top: 0,
+ paddingTop: 0,
+ paddingBottom: 0,
+ ".multiline": {
+ minHeight: variables.inputHeightBase
+ }
+ },
+ "NativeBase.Label": {
+ paddingTop: 0,
+ marginBottom: 0,
+ },
+ "NativeBase.Icon": {
+ top: 0,
+ paddingTop: 0,
+ },
+ "NativeBase.IconNB": {
+ top: 0,
+ paddingTop: 0,
+ }
+ },
+ ".fixedLabel": {
+ "NativeBase.Label": {
+ position: null,
+ top: null,
+ left: null,
+ right: null,
+ flex: 1,
+ height: null,
+ width: null,
+ fontSize: variables.inputFontSize
+ },
+ "NativeBase.Input": {
+ flex: 2,
+ fontSize: variables.inputFontSize
+ }
+ },
+ ".stackedLabel": {
+ "NativeBase.Label": {
+ position: null,
+ top: null,
+ left: null,
+ right: null,
+ paddingTop: 5 * variables.sizeScaling,
+ alignSelf: "flex-start",
+ fontSize: variables.inputFontSize - 2 * variables.sizeScaling
+ },
+ "NativeBase.Icon": {
+ marginTop: 36 * variables.sizeScaling
+ },
+ "NativeBase.Input": {
+ alignSelf: Platform.OS === "ios" ? "stretch" : "flex-start",
+ flex: 1,
+ width: Platform.OS === "ios" ? null : variables.deviceWidth - 25,
+ fontSize: variables.inputFontSize,
+ lineHeight: variables.inputLineHeight - 6 * variables.sizeScaling,
+ ".secureTextEntry": {
+ fontSize: variables.inputFontSize
+ },
+ ".multiline": {
+ paddingTop: Platform.OS === "ios" ? (9 * variables.sizeScaling) : undefined,
+ paddingBottom: Platform.OS === "ios" ? (9 * variables.sizeScaling) : undefined
+ }
+ },
+ flexDirection: null,
+ minHeight: variables.inputHeightBase + 15 * variables.sizeScaling
+ },
+ ".inlineLabel": {
+ "NativeBase.Label": {
+ position: null,
+ top: null,
+ left: null,
+ right: null,
+ paddingRight: 20 * variables.sizeScaling,
+ height: null,
+ width: null,
+ fontSize: variables.inputFontSize
+ },
+ "NativeBase.Input": {
+ paddingLeft: 5 * variables.sizeScaling,
+ fontSize: variables.inputFontSize
+ },
+ flexDirection: "row"
+ },
+ "NativeBase.Label": {
+ fontSize: variables.inputFontSize,
+ color: variables.labelColor,
+ paddingRight: 5 * variables.sizeScaling
+ },
+ "NativeBase.Icon": {
+ fontSize: variables.buttonIconSize,
+ paddingRight: 8 * variables.sizeScaling
+ },
+ "NativeBase.IconNB": {
+ fontSize: variables.buttonIconSize,
+ paddingRight: 8 * variables.sizeScaling
+ },
+ "NativeBase.Input": {
+ ".multiline": {
+ height: null
+ },
+ height: variables.inputHeightBase,
+ color: variables.inputColor,
+ flex: 1,
+ //top: Platform.OS === "ios" ? (1.5 * variables.sizeScaling) : undefined,
+ fontSize: variables.inputFontSize
+ },
+ ".underline": {
+ "NativeBase.Input": {
+ paddingLeft: 15 * variables.sizeScaling
+ },
+ ".success": {
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".error": {
+ borderColor: variables.inputErrorBorderColor
+ },
+ borderWidth: variables.borderWidth,
+ borderTopWidth: 0,
+ borderRightWidth: 0,
+ borderLeftWidth: 0,
+ borderColor: variables.inputBorderColor
+ },
+ ".regular": {
+ "NativeBase.Input": {
+ paddingLeft: 8 * variables.sizeScaling
+ },
+ "NativeBase.Icon": {
+ paddingLeft: 10 * variables.sizeScaling
+ },
+ ".success": {
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".error": {
+ borderColor: variables.inputErrorBorderColor
+ },
+ borderWidth: variables.borderWidth,
+ borderColor: variables.inputBorderColor
+ },
+ ".rounded": {
+ "NativeBase.Input": {
+ paddingLeft: 8 * variables.sizeScaling
+ },
+ "NativeBase.Icon": {
+ paddingLeft: 10 * variables.sizeScaling
+ },
+ ".success": {
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".error": {
+ borderColor: variables.inputErrorBorderColor
+ },
+ borderWidth: variables.borderWidth,
+ borderRadius: 30 * variables.sizeScaling,
+ borderColor: variables.inputBorderColor
+ },
+
+ ".success": {
+ "NativeBase.Icon": {
+ color: variables.inputSuccessBorderColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.inputSuccessBorderColor
+ },
+ ".rounded": {
+ borderRadius: 30 * variables.sizeScaling,
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".regular": {
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".underline": {
+ borderWidth: variables.borderWidth,
+ borderTopWidth: 0,
+ borderRightWidth: 0,
+ borderLeftWidth: 0,
+ borderColor: variables.inputSuccessBorderColor
+ },
+ borderColor: variables.inputSuccessBorderColor
+ },
+
+ ".error": {
+ "NativeBase.Icon": {
+ color: variables.inputErrorBorderColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.inputErrorBorderColor
+ },
+ ".rounded": {
+ borderRadius: 30 * variables.sizeScaling,
+ borderColor: variables.inputErrorBorderColor
+ },
+ ".regular": {
+ borderColor: variables.inputErrorBorderColor
+ },
+ ".underline": {
+ borderWidth: variables.borderWidth,
+ borderTopWidth: 0,
+ borderRightWidth: 0,
+ borderLeftWidth: 0,
+ borderColor: variables.inputErrorBorderColor
+ },
+ borderColor: variables.inputErrorBorderColor
+ },
+ ".disabled": {
+ "NativeBase.Icon": {
+ color: "#384850"
+ },
+ "NativeBase.IconNB": {
+ color: "#384850"
+ }
+ },
+ ".picker": {
+ marginLeft: 0
+ },
+
+ borderWidth: variables.borderWidth,
+ borderTopWidth: 0,
+ borderRightWidth: 0,
+ borderLeftWidth: 0,
+ borderColor: variables.inputBorderColor,
+ backgroundColor: "transparent",
+ flexDirection: "row",
+ alignItems: "center",
+ margin: 0,
+
+ '.padder': {
+ padding: variables.contentPadding,
+ },
+ '.marginBottom': {
+ marginBottom: variables.contentPadding,
+ }
+ };
+
+ return itemTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Label.js b/examples/advanced/advanced/src/native-base-theme/components/Label.js
new file mode 100644
index 000000000..40d2bc720
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Label.js
@@ -0,0 +1,33 @@
+// @flow
+
+
+
+export default (variables) => {
+ const labelTheme = {
+ fontSize: variables.DefaultFontSize,
+ fontFamily: variables.fontFamily,
+ color: variables.labelColor,
+ ".focused": {
+ width: 0
+ },
+ ".block": {
+ width: '100%'
+ },
+ '.transparent': {
+ color: variables.transparentColor
+ },
+ '.inverse': {
+ color: variables.inverseTextColor,
+ },
+ '.light':{
+ color: variables.brandLight
+ },
+ '.float': {
+ fontSize: variables.DefaultFontSize,
+ fontFamily: variables.fontFamily,
+ color: variables.labelColor,
+ }
+ };
+
+ return labelTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Left.js b/examples/advanced/advanced/src/native-base-theme/components/Left.js
new file mode 100644
index 000000000..7b311e22e
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Left.js
@@ -0,0 +1,12 @@
+// @flow
+
+
+export default (variables) => {
+ const leftTheme = {
+ flex: 1,
+ alignSelf: 'center',
+ alignItems: 'flex-start',
+ };
+
+ return leftTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/ListItem.js b/examples/advanced/advanced/src/native-base-theme/components/ListItem.js
new file mode 100644
index 000000000..78e042739
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/ListItem.js
@@ -0,0 +1,442 @@
+// @flow
+
+import { Platform, PixelRatio } from "react-native";
+
+import pickerTheme from "./Picker";
+
+
+export default (variables) => {
+ const platform = variables.platform;
+ const selectedStyle = {
+ "NativeBase.Text": {
+ color: variables.listItemSelected
+ },
+ "NativeBase.Icon": {
+ color: variables.listItemSelected
+ }
+ };
+
+ const listItemTheme = {
+ "NativeBase.InputGroup": {
+ "NativeBase.Icon": {
+ paddingRight: 5 * variables.sizeScaling
+ },
+ "NativeBase.IconNB": {
+ paddingRight: 5 * variables.sizeScaling
+ },
+ "NativeBase.Input": {
+ paddingHorizontal: 5 * variables.sizeScaling
+ },
+ flex: 1,
+ borderWidth: null,
+ margin: -10 * variables.sizeScaling,
+ borderBottomColor: "transparent"
+ },
+ ".searchBar": {
+ "NativeBase.Item": {
+ "NativeBase.Icon": {
+ backgroundColor: "transparent",
+ color: variables.dropdownLinkColor,
+ fontSize:
+ platform === "ios"
+ ? variables.iconFontSize - 10 * variables.sizeScaling
+ : variables.iconFontSize - 5 * variables.sizeScaling,
+ alignItems: "center",
+ marginTop: 2 * variables.sizeScaling,
+ paddingRight: 8 * variables.sizeScaling
+ },
+ "NativeBase.IconNB": {
+ backgroundColor: "transparent",
+ color: null,
+ alignSelf: "center"
+ },
+ "NativeBase.Input": {
+ alignSelf: "center"
+ },
+ alignSelf: "center",
+ alignItems: "center",
+ justifyContent: "flex-start",
+ flex: 1,
+ height: (platform === "ios" ? 30 : 40) * variables.sizeScaling,
+ borderColor: "transparent",
+ backgroundColor: "#fff",
+ borderRadius: 5 * variables.sizeScaling
+ },
+ "NativeBase.Button": {
+ ".transparent": {
+ "NativeBase.Text": {
+ fontWeight: "500"
+ },
+ paddingHorizontal: null,
+ paddingLeft: platform === "ios" ? (10 * variables.sizeScaling) : null
+ },
+ paddingHorizontal: platform === "ios" ? undefined : null,
+ width: platform === "ios" ? undefined : 0,
+ height: platform === "ios" ? undefined : 0
+ },
+ backgroundColor: variables.toolbarInputColor,
+ padding: 10 * variables.sizeScaling,
+ marginLeft: null
+ },
+ "NativeBase.CheckBox": {
+ marginLeft: -10 * variables.sizeScaling,
+ marginRight: 10 * variables.sizeScaling
+ },
+ ".first": {
+ ".itemHeader": {
+ paddingTop: variables.listItemPadding + 3 * variables.sizeScaling
+ }
+ },
+ ".itemHeader": {
+ ".first": {
+ paddingTop: variables.listItemPadding + 3 * variables.sizeScaling
+ },
+ borderBottomWidth: platform === "ios" ? variables.borderWidth : null,
+ marginLeft: null,
+ padding: variables.listItemPadding,
+ paddingLeft: variables.listItemPadding + 5 * variables.sizeScaling,
+ paddingTop:
+ platform === "ios" ? (variables.listItemPadding + 25 * variables.sizeScaling) : undefined,
+ paddingBottom:
+ platform === "android" ? (variables.listItemPadding + 20 * variables.sizeScaling): undefined,
+ flexDirection: "row",
+ borderColor: variables.listBorderColor,
+ "NativeBase.Text": {
+ fontSize: variables.fontSizeSmall,
+ color: platform === "ios" ? undefined : variables.listNoteColor
+ }
+ },
+ ".itemDivider": {
+ borderBottomWidth: null,
+ marginLeft: null,
+ padding: variables.listItemPadding,
+ paddingLeft: variables.listItemPadding + 5 * variables.sizeScaling,
+ backgroundColor: variables.listDividerBg,
+ flexDirection: "row",
+ borderColor: variables.listBorderColor
+ },
+ ".selected": {
+ "NativeBase.Left": {
+ ...selectedStyle
+ },
+ "NativeBase.Body": {
+ ...selectedStyle
+ },
+ "NativeBase.Right": {
+ ...selectedStyle
+ },
+ ...selectedStyle
+ },
+ "NativeBase.Left": {
+ "NativeBase.Body": {
+ "NativeBase.Text": {
+ ".note": {
+ color: variables.listNoteColor,
+ fontWeight: "200"
+ },
+ fontWeight: "600"
+ },
+ marginLeft: 10 * variables.sizeScaling,
+ alignItems: null,
+ alignSelf: null
+ },
+ "NativeBase.Icon": {
+ width: variables.iconFontSize - 10 * variables.sizeScaling,
+ fontSize: variables.iconFontSize - 10 * variables.sizeScaling
+ },
+ "NativeBase.IconNB": {
+ width: variables.iconFontSize - 10 * variables.sizeScaling,
+ fontSize: variables.iconFontSize - 10 * variables.sizeScaling
+ },
+ "NativeBase.Text": {
+ alignSelf: "center"
+ },
+ flexDirection: "row"
+ },
+ "NativeBase.Body": {
+ "NativeBase.Text": {
+ marginHorizontal: variables.listItemPadding,
+ ".note": {
+ color: variables.listNoteColor,
+ fontWeight: "200"
+ }
+ },
+ alignSelf: null,
+ alignItems: null
+ },
+ "NativeBase.Right": {
+ "NativeBase.Badge": {
+ alignSelf: null
+ },
+ "NativeBase.PickerNB": {
+ "NativeBase.Button": {
+ marginRight: -15 * variables.sizeScaling,
+ "NativeBase.Text": {
+ color: variables.topTabBarActiveTextColor
+ }
+ }
+ },
+ "NativeBase.Button": {
+ alignSelf: null,
+ ".transparent": {
+ "NativeBase.Text": {
+ color: variables.topTabBarActiveTextColor
+ }
+ }
+ },
+ "NativeBase.Icon": {
+ alignSelf: null,
+ fontSize: variables.iconFontSize - 8 * variables.sizeScaling,
+ color: "#c9c8cd"
+ },
+ "NativeBase.IconNB": {
+ alignSelf: null,
+ fontSize: variables.iconFontSize - 8 * variables.sizeScaling,
+ color: "#c9c8cd"
+ },
+ "NativeBase.Text": {
+ ".note": {
+ color: variables.listNoteColor,
+ fontWeight: "200"
+ },
+ alignSelf: null
+ },
+ "NativeBase.Thumbnail": {
+ alignSelf: null
+ },
+ "NativeBase.Image": {
+ alignSelf: null
+ },
+ "NativeBase.Radio": {
+ alignSelf: null
+ },
+ "NativeBase.Checkbox": {
+ alignSelf: null
+ },
+ "NativeBase.Switch": {
+ alignSelf: null
+ },
+ padding: null,
+ flex: 0.28
+ },
+ "NativeBase.Text": {
+ ".note": {
+ color: variables.listNoteColor,
+ fontWeight: "200"
+ },
+ alignSelf: "center"
+ },
+ ".last": {
+ marginLeft: -(variables.listItemPadding + 5 * variables.sizeScaling),
+ paddingLeft: (variables.listItemPadding + 5 * variables.sizeScaling) * 2,
+ top: 1
+ },
+ ".avatar": {
+ "NativeBase.Left": {
+ flex: 0,
+ alignSelf: "flex-start",
+ paddingTop: 14 * variables.sizeScaling
+ },
+ "NativeBase.Body": {
+ "NativeBase.Text": {
+ marginLeft: null
+ },
+ flex: 1,
+ paddingVertical: variables.listItemPadding,
+ borderBottomWidth: variables.borderWidth,
+ borderColor: variables.listBorderColor,
+ marginLeft: variables.listItemPadding + 5 * variables.sizeScaling
+ },
+ "NativeBase.Right": {
+ "NativeBase.Text": {
+ ".note": {
+ fontSize: variables.noteFontSize - 2
+ }
+ },
+ flex: 0,
+ paddingRight: variables.listItemPadding + 5 * variables.sizeScaling,
+ alignSelf: "stretch",
+ paddingVertical: variables.listItemPadding,
+ borderBottomWidth: variables.borderWidth,
+ borderColor: variables.listBorderColor
+ },
+ ".noBorder": {
+ "NativeBase.Body": {
+ borderBottomWidth: null
+ },
+ "NativeBase.Right": {
+ borderBottomWidth: null
+ }
+ },
+ borderBottomWidth: null,
+ paddingVertical: null,
+ paddingRight: null
+ },
+ ".thumbnail": {
+ "NativeBase.Left": {
+ flex: 0
+ },
+ "NativeBase.Body": {
+ "NativeBase.Text": {
+ marginLeft: null
+ },
+ flex: 1,
+ paddingVertical: variables.listItemPadding + 8 * variables.sizeScaling,
+ borderBottomWidth: variables.borderWidth,
+ borderColor: variables.listBorderColor,
+ marginLeft: variables.listItemPadding + 5 * variables.sizeScaling
+ },
+ "NativeBase.Right": {
+ "NativeBase.Button": {
+ ".transparent": {
+ "NativeBase.Text": {
+ fontSize: variables.listNoteSize,
+ color: variables.sTabBarActiveTextColor
+ }
+ },
+ height: null
+ },
+ flex: 0,
+ justifyContent: "center",
+ alignSelf: "stretch",
+ paddingRight: variables.listItemPadding + 5 * variables.sizeScaling,
+ paddingVertical: variables.listItemPadding + 5 * variables.sizeScaling,
+ borderBottomWidth: variables.borderWidth,
+ borderColor: variables.listBorderColor
+ },
+ ".noBorder": {
+ "NativeBase.Body": {
+ borderBottomWidth: null
+ },
+ "NativeBase.Right": {
+ borderBottomWidth: null
+ }
+ },
+ borderBottomWidth: null,
+ paddingVertical: null,
+ paddingRight: null
+ },
+ ".icon": {
+ ".last": {
+ "NativeBase.Body": {
+ borderBottomWidth: null
+ },
+ "NativeBase.Right": {
+ borderBottomWidth: null
+ },
+ borderBottomWidth: variables.borderWidth,
+ borderColor: variables.listBorderColor
+ },
+ "NativeBase.Left": {
+ "NativeBase.Button": {
+ "NativeBase.IconNB": {
+ marginHorizontal: null,
+ fontSize: variables.iconFontSize - 5 * variables.sizeScaling
+ },
+ "NativeBase.Icon": {
+ marginHorizontal: null,
+ fontSize: variables.iconFontSize - 8 * variables.sizeScaling
+ },
+ alignSelf: "center",
+ height: 29 * variables.sizeScaling,
+ width: 29 * variables.sizeScaling,
+ borderRadius: 6 * variables.sizeScaling,
+ paddingVertical: null,
+ paddingHorizontal: null,
+ alignItems: "center",
+ justifyContent: "center"
+ },
+ "NativeBase.Icon": {
+ width: variables.iconFontSize - 5 * variables.sizeScaling,
+ fontSize: variables.iconFontSize - 2 * variables.sizeScaling
+ },
+ "NativeBase.IconNB": {
+ width: variables.iconFontSize - 5 * variables.sizeScaling,
+ fontSize: variables.iconFontSize - 2 * variables.sizeScaling
+ },
+ paddingRight: variables.listItemPadding + 5 * variables.sizeScaling,
+ flex: 0,
+ height: 44 * variables.sizeScaling,
+ justifyContent: "center",
+ alignItems: "center"
+ },
+ "NativeBase.Body": {
+ "NativeBase.Text": {
+ marginLeft: null,
+ },
+ flex: 1,
+ height: 44 * variables.sizeScaling,
+ justifyContent: "center",
+ borderBottomWidth: variables.borderWidth,
+ borderColor: variables.listBorderColor
+ },
+ "NativeBase.Right": {
+ "NativeBase.Text": {
+ textAlign: "center",
+ color: "#8F8E95"
+ },
+ "NativeBase.IconNB": {
+ color: "#C8C7CC",
+ fontSize: variables.iconFontSize - 10 * variables.sizeScaling,
+ alignSelf: "center",
+ paddingLeft: 10 * variables.sizeScaling,
+ paddingTop: 3 * variables.sizeScaling
+ },
+ "NativeBase.Icon": {
+ color: "#C8C7CC",
+ fontSize: variables.iconFontSize - 10 * variables.sizeScaling,
+ alignSelf: "center",
+ paddingLeft: 10 * variables.sizeScaling,
+ paddingTop: 3 * variables.sizeScaling
+ },
+ "NativeBase.Switch": {
+ marginRight: Platform.OS === "ios" ? undefined : (-5 * variables.sizeScaling),
+ alignSelf: null
+ },
+ "NativeBase.PickerNB": {
+ ...pickerTheme(variables)
+ },
+ flexDirection: "row",
+ alignItems: "center",
+ flex: 0,
+ alignSelf: "stretch",
+ height: 44 * variables.sizeScaling,
+ justifyContent: "flex-end",
+ borderBottomWidth: variables.borderWidth,
+ borderColor: variables.listBorderColor,
+ paddingRight: variables.listItemPadding + 5 * variables.sizeScaling
+ },
+ ".noBorder": {
+ "NativeBase.Body": {
+ borderBottomWidth: null
+ },
+ "NativeBase.Right": {
+ borderBottomWidth: null
+ }
+ },
+ borderBottomWidth: null,
+ paddingVertical: null,
+ paddingRight: null,
+ height: 44 * variables.sizeScaling,
+ justifyContent: "center"
+ },
+ ".noBorder": {
+ borderBottomWidth: null
+ },
+ ".noIndent": {
+ marginLeft: null,
+ padding: variables.listItemPadding,
+ paddingLeft: variables.listItemPadding + 6 * variables.sizeScaling
+ },
+ alignItems: "center",
+ flexDirection: "row",
+ paddingRight: variables.listItemPadding + 6 * variables.sizeScaling,
+ paddingVertical: variables.listItemPadding,
+ marginLeft: variables.listItemPadding + 6 * variables.sizeScaling,
+ borderBottomWidth: variables.borderWidth,
+ backgroundColor: variables.listBg,
+ borderColor: variables.listBorderColor
+ };
+
+ return listItemTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Picker.android.js b/examples/advanced/advanced/src/native-base-theme/components/Picker.android.js
new file mode 100644
index 000000000..698d64b4d
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Picker.android.js
@@ -0,0 +1,16 @@
+// @flow
+
+
+
+export default (variables) => {
+ const pickerTheme = {
+ ".note": {
+ color: "#8F8E95"
+ },
+ // width: 90,
+ marginRight: -4 * variables.sizeScaling,
+ flexGrow: 1
+ };
+
+ return pickerTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Picker.ios.js b/examples/advanced/advanced/src/native-base-theme/components/Picker.ios.js
new file mode 100644
index 000000000..57ffa7f2b
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Picker.ios.js
@@ -0,0 +1,9 @@
+// @flow
+
+
+
+export default (variables) => {
+ const pickerTheme = {};
+
+ return pickerTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Picker.js b/examples/advanced/advanced/src/native-base-theme/components/Picker.js
new file mode 100644
index 000000000..698d64b4d
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Picker.js
@@ -0,0 +1,16 @@
+// @flow
+
+
+
+export default (variables) => {
+ const pickerTheme = {
+ ".note": {
+ color: "#8F8E95"
+ },
+ // width: 90,
+ marginRight: -4 * variables.sizeScaling,
+ flexGrow: 1
+ };
+
+ return pickerTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Radio.js b/examples/advanced/advanced/src/native-base-theme/components/Radio.js
new file mode 100644
index 000000000..09f695356
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Radio.js
@@ -0,0 +1,28 @@
+// @flow
+
+import { Platform } from "react-native";
+
+
+
+export default (variables) => {
+ const radioTheme = {
+ ".selected": {
+ "NativeBase.IconNB": {
+ color: Platform.OS === "ios"
+ ? variables.radioColor
+ : variables.radioSelectedColorAndroid,
+ lineHeight: Platform.OS === "ios" ? (25 * variables.sizeScaling) : variables.radioBtnLineHeight,
+ height: Platform.OS === "ios" ? (20 * variables.sizeScaling) : undefined
+ }
+ },
+ "NativeBase.IconNB": {
+ color: Platform.OS === "ios" ? "transparent" : undefined,
+ lineHeight: Platform.OS === "ios"
+ ? undefined
+ : variables.radioBtnLineHeight,
+ fontSize: Platform.OS === "ios" ? undefined : variables.radioBtnSize
+ }
+ };
+
+ return radioTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Right.js b/examples/advanced/advanced/src/native-base-theme/components/Right.js
new file mode 100644
index 000000000..b1759fa51
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Right.js
@@ -0,0 +1,15 @@
+// @flow
+
+
+export default (variables) => {
+ const rightTheme = {
+ 'NativeBase.Button': {
+ alignSelf: null,
+ },
+ flex: 1,
+ alignSelf: 'center',
+ alignItems: 'flex-end',
+ };
+
+ return rightTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Segment.js b/examples/advanced/advanced/src/native-base-theme/components/Segment.js
new file mode 100644
index 000000000..49b0bfc47
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Segment.js
@@ -0,0 +1,56 @@
+// @flow
+
+
+
+export default (variables) => {
+ const platform = variables.platform;
+
+ const segmentTheme = {
+ height: variables.buttonHeight,
+ borderColor: variables.segmentBorderColorMain,
+ flexDirection: "row",
+ justifyContent: "center",
+ backgroundColor: variables.segmentBackgroundColor,
+ "NativeBase.Button": {
+ alignSelf: "center",
+ borderRadius: 0,
+ paddingTop: 3 * variables.sizeScaling,
+ paddingBottom: 3 * variables.sizeScaling,
+ height: 30 * variables.sizeScaling,
+ backgroundColor: "transparent",
+ borderWidth: 1,
+ borderLeftWidth: 0,
+ borderColor: variables.segmentBorderColor,
+ elevation: 0,
+ ".active": {
+ backgroundColor: variables.segmentActiveBackgroundColor,
+ "NativeBase.Text": {
+ color: variables.segmentActiveTextColor
+ },
+ "NativeBase.Icon": {
+ color: variables.segmentActiveTextColor
+ }
+ },
+ ".first": {
+ borderTopLeftRadius: platform === "ios" ? 5 : undefined,
+ borderBottomLeftRadius: platform === "ios" ? 5 : undefined,
+ borderLeftWidth: 1
+ },
+ ".last": {
+ borderTopRightRadius: platform === "ios" ? 5 : undefined,
+ borderBottomRightRadius: platform === "ios" ? 5 : undefined
+ },
+ "NativeBase.Text": {
+ color: variables.segmentTextColor,
+ fontSize: variables.fontSizeSmall
+ },
+ "NativeBase.Icon": {
+ fontSize: 22 * variables.sizeScaling,
+ paddingTop: 0,
+ color: variables.segmentTextColor
+ }
+ }
+ };
+
+ return segmentTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Separator.js b/examples/advanced/advanced/src/native-base-theme/components/Separator.js
new file mode 100644
index 000000000..7263ebc7a
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Separator.js
@@ -0,0 +1,48 @@
+// @flow
+
+
+export default (variables) => {
+ const theme = {
+ '.group': {
+ height: 50 * variables.sizeScaling,
+ paddingVertical: variables.listItemPadding - 8 * variables.sizeScaling,
+ paddingTop: variables.listItemPadding + 12 * variables.sizeScaling,
+ '.bordered': {
+ height: 50 * variables.sizeScaling,
+ paddingVertical: variables.listItemPadding - 8 * variables.sizeScaling,
+ paddingTop: variables.listItemPadding + 12 * variables.sizeScaling,
+ },
+ },
+ '.bordered': {
+ '.noTopBorder': {
+ borderTopWidth: 0,
+ },
+ '.noBottomBorder': {
+ borderBottomWidth: 0,
+ },
+ height: 40 * variables.sizeScaling,
+ paddingTop: variables.listItemPadding + 2 * variables.sizeScaling,
+ paddingBottom: variables.listItemPadding,
+ borderBottomWidth: variables.borderWidth,
+ borderTopWidth: variables.borderWidth,
+ borderColor: variables.listBorderColor,
+ },
+ 'NativeBase.Text': {
+ fontSize: variables.tabBarTextSize,
+ color: '#777',
+ },
+ '.noTopBorder': {
+ borderTopWidth: 0,
+ },
+ '.noBottomBorder': {
+ borderBottomWidth: 0,
+ },
+ height: 42 * variables.sizeScaling,
+ backgroundColor: '#F0EFF5',
+ flex: 1,
+ justifyContent: 'center',
+ paddingLeft: variables.listItemPadding + 5 * variables.sizeScaling,
+ };
+
+ return theme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Spinner.js b/examples/advanced/advanced/src/native-base-theme/components/Spinner.js
new file mode 100644
index 000000000..dab94acfd
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Spinner.js
@@ -0,0 +1,11 @@
+// @flow
+
+
+
+export default (variables) => {
+ const spinnerTheme = {
+ height: 80 * variables.sizeScaling
+ };
+
+ return spinnerTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Subtitle.js b/examples/advanced/advanced/src/native-base-theme/components/Subtitle.js
new file mode 100644
index 000000000..d7f40cb01
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Subtitle.js
@@ -0,0 +1,18 @@
+// @flow
+
+import { Platform } from "react-native";
+
+
+
+export default (variables) => {
+ const subtitleTheme = {
+ fontSize: variables.subTitleFontSize,
+ fontFamily: variables.titleFontfamily,
+ color: variables.subtitleColor,
+ textAlign: "center",
+ paddingLeft: (Platform.OS === "ios" ? 4 : 0) * variables.sizeScaling,
+ marginLeft: Platform.OS === "ios" ? undefined : (-3 * variables.sizeScaling)
+ };
+
+ return subtitleTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/SwipeRow.js b/examples/advanced/advanced/src/native-base-theme/components/SwipeRow.js
new file mode 100644
index 000000000..8adfb77ff
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/SwipeRow.js
@@ -0,0 +1,48 @@
+// @flow
+
+
+
+export default (variables) => {
+ const swipeRowTheme = {
+ "NativeBase.ListItem": {
+ ".list": {
+ backgroundColor: "#FFF",
+ },
+ marginLeft: 0,
+ },
+ "NativeBase.Left": {
+ flex: 0,
+ alignSelf: null,
+ alignItems: null,
+ "NativeBase.Button": {
+ flex: 1,
+ alignItems: "center",
+ justifyContent: "center",
+ alignSelf: "stretch",
+ borderRadius: 0,
+ },
+ },
+ "NativeBase.Right": {
+ flex: 0,
+ alignSelf: null,
+ alignItems: null,
+ "NativeBase.Button": {
+ flex: 1,
+ alignItems: "center",
+ justifyContent: "center",
+ alignSelf: "stretch",
+ borderRadius: 0,
+ },
+ },
+ "NativeBase.Button": {
+ flex: 1,
+ height: null,
+ alignItems: "center",
+ justifyContent: "center",
+ alignSelf: "stretch",
+ borderRadius: 0,
+ },
+ };
+
+ return swipeRowTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Switch.js b/examples/advanced/advanced/src/native-base-theme/components/Switch.js
new file mode 100644
index 000000000..c232242ad
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Switch.js
@@ -0,0 +1,11 @@
+// @flow
+
+
+
+export default (variables) => {
+ const switchTheme = {
+ marginVertical: -5 * variables.sizeScaling,
+ };
+
+ return switchTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Tab.js b/examples/advanced/advanced/src/native-base-theme/components/Tab.js
new file mode 100644
index 000000000..ba2a67e0e
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Tab.js
@@ -0,0 +1,12 @@
+// @flow
+
+
+
+export default (variables) => {
+ const tabTheme = {
+ flex: 1,
+ backgroundColor: "#FFF"
+ };
+
+ return tabTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/TabBar.js b/examples/advanced/advanced/src/native-base-theme/components/TabBar.js
new file mode 100644
index 000000000..a5190fe40
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/TabBar.js
@@ -0,0 +1,57 @@
+// @flow
+
+
+
+export default (variables) => {
+ const tabBarTheme = {
+ ".tabIcon": {
+ height: undefined
+ },
+ ".vertical": {
+ height: 60 * variables.sizeScaling
+ },
+ "NativeBase.Button": {
+ ".transparent": {
+ "NativeBase.Text": {
+ fontSize: variables.tabFontSize,
+ color: variables.sTabBarActiveTextColor,
+ fontWeight: "400"
+ },
+ "NativeBase.IconNB": {
+ color: variables.sTabBarActiveTextColor
+ }
+ },
+ "NativeBase.IconNB": {
+ color: variables.sTabBarActiveTextColor
+ },
+ "NativeBase.Text": {
+ fontSize: variables.tabFontSize,
+ color: variables.sTabBarActiveTextColor,
+ fontWeight: "400"
+ },
+ ".isTabActive": {
+ "NativeBase.Text": {
+ fontWeight: "900"
+ }
+ },
+ flex: 1,
+ alignSelf: "stretch",
+ alignItems: "center",
+ justifyContent: "center",
+ borderRadius: null,
+ borderBottomColor: "transparent",
+ backgroundColor: variables.tabBgColor
+ },
+ height: variables.buttonHeight,
+ flexDirection: "row",
+ justifyContent: "space-around",
+ borderWidth: 1,
+ borderTopWidth: 0,
+ borderLeftWidth: 0,
+ borderRightWidth: 0,
+ borderBottomColor: "#ccc",
+ backgroundColor: variables.tabBgColor
+ };
+
+ return tabBarTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/TabContainer.js b/examples/advanced/advanced/src/native-base-theme/components/TabContainer.js
new file mode 100644
index 000000000..77d8b70d0
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/TabContainer.js
@@ -0,0 +1,26 @@
+// @flow
+
+
+import { Platform } from "react-native";
+
+export default (variables) => {
+ const platformStyle = variables.platformStyle;
+ const platform = variables.platform;
+
+ const tabContainerTheme = {
+ elevation: 3,
+ height: 50 * variables.sizeScaling,
+ flexDirection: "row",
+ shadowColor: platformStyle === "material" ? "#000" : undefined,
+ shadowOffset: platformStyle === "material"
+ ? { width: 0, height: 2 }
+ : undefined,
+ shadowOpacity: platformStyle === "material" ? 0.2 : undefined,
+ shadowRadius: platformStyle === "material" ? 1.2 : undefined,
+ justifyContent: "space-around",
+ borderBottomWidth: Platform.OS === "ios" ? variables.borderWidth : 0,
+ borderColor: variables.topTabBarBorderColor
+ };
+
+ return tabContainerTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/TabHeading.js b/examples/advanced/advanced/src/native-base-theme/components/TabHeading.js
new file mode 100644
index 000000000..ae999a3b9
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/TabHeading.js
@@ -0,0 +1,39 @@
+// @flow
+
+
+
+export default (variables) => {
+ const platform = variables.platform;
+
+ const tabHeadingTheme = {
+ flexDirection: "row",
+ backgroundColor: variables.tabDefaultBg,
+ flex: 1,
+ alignItems: "center",
+ justifyContent: "center",
+ ".scrollable": {
+ paddingHorizontal: 20 * variables.sizeScaling,
+ flex: platform === "android" ? 0 : 1,
+ minWidth: platform === "android" ? undefined : (60 * variables.sizeScaling)
+ },
+ "NativeBase.Text": {
+ color: variables.topTabBarTextColor,
+ marginHorizontal: 7 * variables.sizeScaling
+ },
+ "NativeBase.Icon": {
+ color: variables.topTabBarTextColor,
+ fontSize: platform === "ios" ? (26 * variables.sizeScaling) : undefined
+ },
+ ".active": {
+ "NativeBase.Text": {
+ color: variables.topTabBarActiveTextColor,
+ fontWeight: "600"
+ },
+ "NativeBase.Icon": {
+ color: variables.topTabBarActiveTextColor
+ }
+ }
+ };
+
+ return tabHeadingTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Text.js b/examples/advanced/advanced/src/native-base-theme/components/Text.js
new file mode 100644
index 000000000..c023087d0
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Text.js
@@ -0,0 +1,80 @@
+// @flow
+
+
+
+export default (variables) => {
+ const textTheme = {
+ fontSize: variables.DefaultFontSize,
+ fontFamily: variables.fontFamily,
+ color: variables.textColor,
+ ".note": {
+ //color: "#a7a7a7",
+ fontSize: variables.noteFontSize
+ },
+ '.medium': {
+ fontSize: variables.fontSizeMedium,
+ },
+ '.large': {
+ fontSize: variables.fontSizeLarge,
+ },
+ ".label": {
+ color: variables.labelColor,
+ },
+ '.transparent': {
+ color: variables.transparentColor,
+ },
+ '.inverse': {
+ color: variables.inverseTextColor,
+ },
+ '.light':{
+ color: variables.brandLight
+ },
+ '.danger':{
+ color: variables.brandDanger
+ },
+ '.warning':{
+ color: variables.brandWarning
+ },
+ '.dark': {
+ color: variables.brandDark
+ },
+ '.black': {
+ color: variables.brandBlack
+ },
+ '.success': {
+ color: variables.brandSuccess
+ },
+ ".block": {
+ width: '100%'
+ },
+ '.placeholder': {
+ color: variables.inputColorPlaceholder,
+ '.transparent': {
+ color: variables.inputColorPlaceholderTransparent
+ },
+ '.inverse': {
+ color: variables.inverseTextColor,
+ }
+ },
+ '.disabled': {
+ color: variables.buttonDisabledBg
+ },
+ ".underlined": {
+ textDecorationLine: 'underline'
+ },
+ '.italic': {
+ fontStyle: 'italic'
+ },
+ '.bold': {
+ fontWeight: 'bold'
+ },
+ '.flex1': {
+ flex: 1
+ },
+ '.paddingBottom': {
+ paddingBottom: variables.contentPadding
+ }
+ };
+
+ return textTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Textarea.js b/examples/advanced/advanced/src/native-base-theme/components/Textarea.js
new file mode 100644
index 000000000..89536dba7
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Textarea.js
@@ -0,0 +1,43 @@
+// @flow
+
+
+
+export default (variables) => {
+ const textAreaTheme = {
+ ".underline": {
+ borderBottomWidth: variables.borderWidth,
+ marginTop: 5 * variables.sizeScaling,
+ borderColor: variables.inputBorderColor
+ },
+ ".bordered": {
+ borderWidth: 1,
+ marginTop: 5 * variables.sizeScaling,
+ borderColor: variables.inputBorderColor
+ },
+ '.transparent': {
+ color: variables.transparentColor
+ },
+ '.dark': {
+ color: variables.brandDark
+ },
+ '.black': {
+ color: variables.brandBlack
+ },
+ '.light':{
+ color: variables.brandLight
+ },
+ '.success':{
+ color: variables.brandSuccess
+ },
+ ".block": {
+ width: '100%'
+ },
+ color: variables.textColor,
+ paddingLeft: 10 * variables.sizeScaling,
+ paddingRight: 5 * variables.sizeScaling,
+ fontSize: variables.DefaultFontSize,
+ textAlignVertical: "top"
+ };
+
+ return textAreaTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Thumbnail.js b/examples/advanced/advanced/src/native-base-theme/components/Thumbnail.js
new file mode 100644
index 000000000..6dd13eb2f
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Thumbnail.js
@@ -0,0 +1,41 @@
+// @flow
+
+
+export default (variables) => {
+ const thumbnailTheme = {
+ '.square': {
+ borderRadius: 0,
+ '.small': {
+ width: 36 * variables.sizeScaling,
+ height: 36 * variables.sizeScaling,
+ borderRadius: 0,
+ },
+ '.large': {
+ width: 80 * variables.sizeScaling,
+ height: 80 * variables.sizeScaling,
+ borderRadius: 0,
+ },
+ },
+ '.small': {
+ width: 36 * variables.sizeScaling,
+ height: 36 * variables.sizeScaling,
+ borderRadius: 18 * variables.sizeScaling,
+ '.square': {
+ borderRadius: 0,
+ },
+ },
+ '.large': {
+ width: 80 * variables.sizeScaling,
+ height: 80 * variables.sizeScaling,
+ borderRadius: 40 * variables.sizeScaling,
+ '.square': {
+ borderRadius: 0,
+ },
+ },
+ width: 56 * variables.sizeScaling,
+ height: 56 * variables.sizeScaling,
+ borderRadius: 28 * variables.sizeScaling,
+ };
+
+ return thumbnailTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Title.js b/examples/advanced/advanced/src/native-base-theme/components/Title.js
new file mode 100644
index 000000000..9acf6697d
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Title.js
@@ -0,0 +1,30 @@
+// @flow
+
+import { Platform } from "react-native";
+
+
+
+export default (variables) => {
+ const titleTheme = {
+ fontSize: variables.titleFontSize,
+ fontFamily: variables.titleFontfamily,
+ fontWeight: "600", //Platform.OS === "ios" ? "700" : undefined,
+ textAlign: "center",
+ paddingLeft: 0,//Platform.OS === "ios" ? 4 : 0,
+ paddingTop: 0,
+
+ '.transparent': {
+ color: variables.transparentColor,
+ },
+ '.inverse': {
+ color: variables.inverseTextColor,
+ },
+
+ '.padder': {
+ marginHorizontal: 0,
+ paddingHorizontal: 8 * variables.sizeScaling
+ }
+ };
+
+ return titleTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/Toast.js b/examples/advanced/advanced/src/native-base-theme/components/Toast.js
new file mode 100644
index 000000000..fecb77a63
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/Toast.js
@@ -0,0 +1,41 @@
+// @flow
+
+
+
+export default (variables) => {
+ const platform = variables.platform;
+
+ const toastTheme = {
+ ".danger": {
+ backgroundColor: variables.brandDanger
+ },
+ ".warning": {
+ backgroundColor: variables.brandWarning
+ },
+ ".success": {
+ backgroundColor: variables.brandSuccess
+ },
+ backgroundColor: "rgba(0,0,0,0.8)",
+ borderRadius: platform === "ios" ? (5 * variables.sizeScaling) : 0,
+ flexDirection: "row",
+ justifyContent: "space-between",
+ alignItems: "center",
+ padding: 10 * variables.sizeScaling,
+ minHeight: 50 * variables.sizeScaling,
+ "NativeBase.Text": {
+ color: "#fff",
+ flex: 1
+ },
+ "NativeBase.Button": {
+ backgroundColor: "transparent",
+ height: 30 * variables.sizeScaling,
+ elevation: 0,
+ "NativeBase.Text": {
+ fontSize: variables.fontSizeSmall,
+ color: "#fff"
+ }
+ }
+ };
+
+ return toastTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/View.js b/examples/advanced/advanced/src/native-base-theme/components/View.js
new file mode 100644
index 000000000..732664122
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/View.js
@@ -0,0 +1,13 @@
+// @flow
+
+
+
+export default (variables) => {
+ const viewTheme = {
+ ".padder": {
+ padding: variables.contentPadding
+ }
+ };
+
+ return viewTheme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/components/index.js b/examples/advanced/advanced/src/native-base-theme/components/index.js
new file mode 100644
index 000000000..26d9be8e2
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/components/index.js
@@ -0,0 +1,258 @@
+// @flow
+
+import _ from "lodash";
+
+import bodyTheme from "./Body";
+import leftTheme from "./Left";
+import rightTheme from "./Right";
+import headerTheme from "./Header";
+import switchTheme from "./Switch";
+import thumbnailTheme from "./Thumbnail";
+import containerTheme from "./Container";
+import contentTheme from "./Content";
+import buttonTheme from "./Button";
+import titleTheme from "./Title";
+import subtitleTheme from "./Subtitle";
+import inputGroupTheme from "./InputGroup";
+import badgeTheme from "./Badge";
+import checkBoxTheme from "./CheckBox";
+import cardTheme from "./Card";
+import radioTheme from "./Radio";
+import h3Theme from "./H3";
+import h2Theme from "./H2";
+import h1Theme from "./H1";
+import footerTheme from "./Footer";
+import footerTabTheme from "./FooterTab";
+import fabTheme from "./Fab";
+import itemTheme from "./Item";
+import labelTheme from "./Label";
+import textAreaTheme from "./Textarea";
+import textTheme from "./Text";
+import toastTheme from "./Toast";
+import tabTheme from "./Tab";
+import tabBarTheme from "./TabBar";
+import tabContainerTheme from "./TabContainer";
+import viewTheme from "./View";
+import tabHeadingTheme from "./TabHeading";
+import iconTheme from "./Icon";
+import inputTheme from "./Input";
+import swipeRowTheme from "./SwipeRow";
+import segmentTheme from "./Segment";
+import spinnerTheme from "./Spinner";
+import cardItemTheme from "./CardItem";
+import listItemTheme from "./ListItem";
+import formTheme from "./Form";
+import separatorTheme from "./Separator";
+import pickerTheme from "./Picker"
+
+
+
+export default (variables) => {
+ const theme = {
+ variables,
+
+ // to export all variables
+ "Branding": {
+ ...variables,
+ borderBottomWidth: variables.borderWidth // need this for some reason borderWidth is always empty if using connectStyle
+ },
+
+ // do not use NB Header
+ "baseComponents.Header": {
+ ...headerTheme(variables)
+ },
+
+ // do not use NB Content
+ "baseComponents.Content": {
+ ...contentTheme(variables)
+ },
+
+ // do not use NB Item
+ "baseComponents.Item": {
+ ...itemTheme(variables)
+ },
+
+ "NativeBase.Left": {
+ ...leftTheme(variables)
+ },
+ "NativeBase.Right": {
+ ...rightTheme(variables)
+ },
+ "NativeBase.Body": {
+ ...bodyTheme(variables)
+ },
+
+ "NativeBase.Button": {
+ ...buttonTheme(variables)
+ },
+
+ "NativeBase.Title": {
+ ...titleTheme(variables)
+ },
+ "NativeBase.Subtitle": {
+ ...subtitleTheme(variables)
+ },
+
+ "NativeBase.InputGroup": {
+ ...inputGroupTheme(variables)
+ },
+
+ "NativeBase.Input": {
+ ...inputTheme(variables)
+ },
+
+ "NativeBase.Badge": {
+ ...badgeTheme(variables)
+ },
+
+ "NativeBase.CheckBox": {
+ ...checkBoxTheme(variables)
+ },
+
+ "NativeBase.Radio": {
+ ...radioTheme(variables)
+ },
+
+ "NativeBase.Card": {
+ ...cardTheme(variables)
+ },
+
+ "NativeBase.CardItem": {
+ ...cardItemTheme(variables)
+ },
+
+ "NativeBase.Toast": {
+ ...toastTheme(variables)
+ },
+
+ "NativeBase.H1": {
+ ...h1Theme(variables)
+ },
+ "NativeBase.H2": {
+ ...h2Theme(variables)
+ },
+ "NativeBase.H3": {
+ ...h3Theme(variables)
+ },
+ "NativeBase.Form": {
+ ...formTheme(variables)
+ },
+
+ "NativeBase.Container": {
+ ...containerTheme(variables)
+ },
+
+ "NativeBase.Footer": {
+ ...footerTheme(variables)
+ },
+
+ "NativeBase.Tabs": {
+ flex: 1
+ },
+
+ "NativeBase.FooterTab": {
+ ...footerTabTheme(variables)
+ },
+
+ "NativeBase.ListItem": {
+ ...listItemTheme(variables)
+ },
+
+ "NativeBase.ListItem1": {
+ ...listItemTheme(variables)
+ },
+
+ "NativeBase.Icon": {
+ ...iconTheme(variables)
+ },
+ "NativeBase.IconNB": {
+ ...iconTheme(variables)
+ },
+ "NativeBase.Text": {
+ ...textTheme(variables)
+ },
+ "NativeBase.Spinner": {
+ ...spinnerTheme(variables)
+ },
+
+ "NativeBase.Fab": {
+ ...fabTheme(variables)
+ },
+
+ "NativeBase.Label": {
+ ...labelTheme(variables)
+ },
+
+ "NativeBase.Textarea": {
+ ...textAreaTheme(variables)
+ },
+
+ "NativeBase.PickerNB": {
+ ...pickerTheme(variables),
+ "NativeBase.Button": {
+ "NativeBase.Text": {}
+ }
+ },
+
+ "NativeBase.Tab": {
+ ...tabTheme(variables)
+ },
+
+ "NativeBase.Segment": {
+ ...segmentTheme(variables)
+ },
+
+ "NativeBase.TabBar": {
+ ...tabBarTheme(variables)
+ },
+ "NativeBase.ViewNB": {
+ ...viewTheme(variables)
+ },
+ "NativeBase.TabHeading": {
+ ...tabHeadingTheme(variables)
+ },
+ "NativeBase.TabContainer": {
+ ...tabContainerTheme(variables)
+ },
+ "NativeBase.Switch": {
+ ...switchTheme(variables)
+ },
+ "NativeBase.Separator": {
+ ...separatorTheme(variables)
+ },
+ "NativeBase.SwipeRow": {
+ ...swipeRowTheme(variables)
+ },
+ "NativeBase.Thumbnail": {
+ ...thumbnailTheme(variables)
+ }
+ };
+
+ const cssifyTheme = (grandparent, parent, parentKey) => {
+ _.forEach(parent, (style, styleName) => {
+ if (
+ styleName.indexOf(".") === 0 &&
+ parentKey &&
+ parentKey.indexOf(".") === 0
+ ) {
+ if (grandparent) {
+ if (!grandparent[styleName]) {
+ grandparent[styleName] = {};
+ } else {
+ grandparent[styleName][parentKey] = style;
+ }
+ }
+ }
+ if (style && typeof style === "object" && styleName !== "fontVariant" && styleName !== "transform") {
+ cssifyTheme(parent, style, styleName);
+ }
+ });
+ };
+
+ cssifyTheme(null, theme, null);
+
+ // patch this here once it's fixed on native-base
+ //theme['NativeBase.Text'].fontVariant = ['tabular-nums'];
+
+ return theme;
+};
diff --git a/examples/advanced/advanced/src/native-base-theme/variables/platform.js b/examples/advanced/advanced/src/native-base-theme/variables/platform.js
new file mode 100644
index 000000000..448acf451
--- /dev/null
+++ b/examples/advanced/advanced/src/native-base-theme/variables/platform.js
@@ -0,0 +1,414 @@
+// @flow
+
+import color from "color";
+
+import { Platform, Dimensions, PixelRatio } from "react-native";
+
+const deviceHeight = Dimensions.get("window").height;
+const deviceWidth = Dimensions.get("window").width;
+const platform = Platform.OS;
+const platformStyle = undefined;
+const isIphoneX =
+platform === "ios" && (deviceHeight === 812 || deviceWidth === 812 || deviceHeight === 896 || deviceWidth === 896);
+
+
+// ---------------------------
+// In order to access the theme variables from within a component, we made a small work around
+// because the library does not support it natively.
+// Created a "Branding" theme variable/component (at ./components/index) that exports all variables
+//
+// import {connectStyle} from 'native-base';
+// ... in render: this.props.style.[variable I want]
+// export default connectStyle("Branding")(MyComponent);
+//
+// ---------------------------
+
+export default function getVariables(overrides, sizeScaling=1){
+
+ let primaryColor = overrides.primaryColor || '#FAAC18';
+ let iosPrimaryColor = overrides.primaryColor || '#FAAC18';
+ let toolbarColor = overrides.toolbarColor || '#FAAC18';
+ let statusBarColor = overrides.statusBarColor || toolbarColor;
+ let brandLight = overrides.brandLight || "#FFD185";
+
+ let brandInfo = overrides.brandInfo || "#03a9f4";
+ let brandSuccess = overrides.brandSuccess || "#5cb85c";
+ let brandDanger = overrides.brandDanger || "#d9534f";
+ let brandWarning = overrides.brandWarning || "#f0ad4e";
+ let brandBlack = overrides.brandBlack || '#121212';
+ let brandDark = overrides.brandDark || "#121212";
+
+
+ let textColor = overrides.textColor || brandBlack;
+ let labelColor = '#575757';
+ let labelColorTransparent = '#a5a5a5';
+ let inverseTextColor = overrides.inverseTextColor || "#FFF";
+ let transparentColor = overrides.transparentColor || "#FFF";
+
+ // becareful overriding these since they are used as static variables everywhere
+ // and cannot be updated in real time.
+ let inputColorPlaceholder = "#7b7b7b";
+ let inputColorPlaceholderTransparent = '#a5a5a5';
+ let inputBorderColor = "#575757";
+ let darkBorderColor = "#121212";
+
+ let headerTextColor = overrides.headerTextColor || inverseTextColor;
+
+ let iosStatusbar = overrides.iosStatusbar || 'light-content'; // "dark-content" : "light-content",
+
+ // these will be adjuster by scaling later.
+ let fontSize = 15;
+ let fontSizeSmall = 14;
+ let fontSizeMedium = 17;
+ let fontSizeLarge = 22;
+ let headerFontSize = 16;
+ let noteFontSize = 13;
+ let buttonHeight = 45; // make sure this is smaller than large values from Button
+
+
+ return {
+ platformStyle,
+ platform,
+ sizeScaling,
+
+ //Accordion
+ accordionBorderColor: '#d3d3d3',
+ accordionContentPadding: 10 * sizeScaling,
+ accordionIconFontSize: 18 * sizeScaling,
+ contentStyle: '#f5f4f5',
+ expandedIconStyle: '#000',
+ headerStyle: '#edebed',
+ iconStyle: '#000',
+
+ // ActionSheet
+ elevation: 4,
+ containerTouchableBackgroundColor: 'rgba(0,0,0,0.4)',
+ innerTouchableBackgroundColor: '#fff',
+ listItemHeight: 50 * sizeScaling,
+ listItemBorderColor: 'transparent',
+ marginHorizontal: -15 * sizeScaling,
+ marginLeft: 14 * sizeScaling,
+ marginTop: 15 * sizeScaling,
+ minHeight: 56 * sizeScaling,
+ padding: 15 * sizeScaling,
+ touchableTextColor: '#757575',
+
+ // Android
+ androidRipple: false,
+ androidRippleColor: "rgba(256, 256, 256, 0.35)",
+ androidRippleColorDark: "rgba(0, 0, 0, 0.15)",
+ buttonUppercaseAndroidText: false,
+
+ // Badge
+ badgeBg: "#ED1727",
+ badgeColor: "#fff",
+ badgePadding: 0,
+
+ // Button
+ buttonFontFamily: platform === "ios" ? "System" : "Roboto",
+ buttonDisabledBg: "#a5a5a5",
+ buttonDisabledText: '#f4f4f4',
+ buttonPadding: 6 * sizeScaling,
+ buttonDefaultActiveOpacity: 0.5,
+ buttonDefaultFlex: 1,
+ buttonDefaultBorderRadius: 2 * sizeScaling,
+ buttonDefaultBorderWidth: 1,
+ buttonHeight: buttonHeight * sizeScaling,
+
+ get buttonPrimaryBg() {
+ return this.brandPrimary;
+ },
+ get buttonPrimaryColor() {
+ return this.inverseTextColor;
+ },
+ get buttonInfoBg() {
+ return this.brandInfo;
+ },
+ get buttonInfoColor() {
+ return this.inverseTextColor;
+ },
+ get buttonSuccessBg() {
+ return this.brandSuccess;
+ },
+ get buttonSuccessColor() {
+ return this.inverseTextColor;
+ },
+ get buttonDangerBg() {
+ return this.brandDanger;
+ },
+ get buttonDangerColor() {
+ return this.inverseTextColor;
+ },
+ get buttonWarningBg() {
+ return this.brandWarning;
+ },
+ get buttonWarningColor() {
+ return this.inverseTextColor;
+ },
+ get buttonTextSize() {
+ return this.fontSizeBase; //platform === "ios" ? this.fontSizeBase : this.fontSizeBase;
+ },
+ get buttonTextSizeLarge() {
+ return fontSizeLarge;
+ },
+ get buttonTextSizeSmall() {
+ return fontSizeSmall;
+ },
+ get borderRadiusLarge() {
+ return this.fontSizeBase * 3.8;
+ },
+ get iconSizeLarge() {
+ return this.iconFontSize * 1.5;
+ },
+ get iconSizeSmall() {
+ return this.iconFontSize * 0.6;
+ },
+
+ // Card
+ cardDefaultBg: '#f6f8fa',//'"#fff",
+ cardHeaderBg: '#eaebed',
+ cardBorderColor: "#ccc",
+ cardBorderRadius: 8 * sizeScaling,
+ cardItemPadding: (platform === "ios" ? 10 : 12) * sizeScaling,
+
+ // CheckBox
+ CheckboxRadius: (platform === "ios" ? 10 : 0) * sizeScaling,
+ CheckboxBorderWidth: platform === "ios" ? 1 : 2,
+ CheckboxPaddingLeft: (platform === "ios" ? 5 : 2) * sizeScaling,
+ CheckboxPaddingBottom: (platform === "ios" ? 5 : 5) * sizeScaling,
+ CheckboxIconSize: (platform === "ios" ? 21 : 16) * sizeScaling,
+ CheckboxIconMarginTop: platform === "ios" ? undefined : 1,
+ CheckboxFontSize: (platform === "ios" ? 23 : 17) * sizeScaling,
+ checkboxBgColor: platform === "ios" ? iosPrimaryColor : primaryColor,
+ checkboxSize: 20 * sizeScaling,
+ checkboxTickColor: inverseTextColor,
+ checkboxDefaultColor: 'transparent',
+ checkboxTextShadowRadius: 0,
+
+ // Color
+ brandPrimary: platform === "ios" ? iosPrimaryColor : primaryColor,
+ brandInfo: brandInfo,
+ brandSuccess: brandSuccess,
+ brandDanger: brandDanger,
+ brandWarning: brandWarning,
+ brandDark: brandDark,
+ brandBlack: brandBlack,
+ brandLight: brandLight,
+
+ //Container
+ containerBgColor: "#fff",
+
+ //Date Picker
+ datePickerFlex: 1,
+ datePickerPadding: 10 * sizeScaling,
+ datePickerTextColor: "#000",
+ datePickerBg: "transparent",
+
+ // FAB
+ fabWidth: 56 * sizeScaling,
+
+ // Font
+ DefaultFontSize: fontSize * sizeScaling,
+
+ fontSizeBase: fontSize * sizeScaling,
+ fontSizeSmall: fontSizeSmall * sizeScaling,
+ fontSizeMedium: fontSizeMedium * sizeScaling,
+ fontSizeLarge: fontSizeLarge * sizeScaling,
+ headerFontSize: headerFontSize * sizeScaling,
+ noteFontSize: noteFontSize * sizeScaling,
+
+ fontFamily: platform === "ios" ? "System" : "Roboto",
+ get fontSizeH1() {
+ return this.fontSizeBase * 1.8;
+ },
+ get fontSizeH2() {
+ return this.fontSizeBase * 1.6;
+ },
+ get fontSizeH3() {
+ return this.fontSizeBase * 1.4;
+ },
+
+ // Footer
+ footerHeight: (platform === "ios" ? 60 : 56) * sizeScaling,
+ footerWidth: (platform === "ios" ? 60 : 60) * sizeScaling, // for landscape mode
+ footerDefaultBg: toolbarColor, //platform === "ios" ? "#F8F8F8" : toolbarColor,
+ footerPaddingBottom: 0,
+
+ // FooterTab
+ tabBarTextColor: headerTextColor, //platform === "ios" ? "#6b6b6b" : "#fff",
+ tabBarTextSize: (platform === "ios" ? 15 : 15) * sizeScaling,
+ activeTab: headerTextColor, //platform === "ios" ? iosPrimaryColor : "#fff",
+ sTabBarActiveTextColor: iosPrimaryColor,
+ tabBarActiveTextColor: headerTextColor, //platform === "ios" ? iosPrimaryColor : "#fff",
+ tabActiveBgColor: primaryColor, //platform === "ios" ? "#cde1f9" : primaryColor,
+
+ // Header
+ toolbarBtnColor: headerTextColor, //platform === "ios" ? iosPrimaryColor : "#fff",
+ toolbarDefaultBg: toolbarColor, //platform === "ios" ? "#F8F8F8" : toolbarColor,
+ toolbarHeight: 52 * sizeScaling, // iOS header will adjust this as needed to compensate for status bars
+ toolbarSearchIconSize: (platform === "ios" ? 20 : 23) * sizeScaling,
+ toolbarInputColor: headerTextColor, //platform === "ios" ? "#CECDD2" : "#fff",
+ searchBarHeight: (platform === "ios" ? 30 : 40) * sizeScaling,
+ searchBarInputHeight: (platform === "ios" ? 30 : 30 ) * sizeScaling,
+ toolbarBtnTextColor: headerTextColor, //platform === "ios" ? iosPrimaryColor : "#fff",
+ toolbarDefaultBorder: primaryColor, //platform === "ios" ? "#a7a6ab" : primaryColor,
+ transparentColor: transparentColor,
+ iosStatusbar: iosStatusbar,
+ statusBarColor: statusBarColor,
+ // get statusBarColor() {
+ // return color(this.toolbarDefaultBg)
+ // .darken(0.2)
+ // .hex();
+ // },
+ get darkenHeader() {
+ return color(this.tabBgColor)
+ .darken(0.03)
+ .hex();
+ },
+
+ // Icon
+ iconFamily: "Ionicons",
+ iconFontSize: (platform === "ios" ? 28 : 28) * sizeScaling,
+ iconHeaderSize: (platform === "ios" ? 24 : 24) * sizeScaling,
+ iconBackButtonSize: 28 * sizeScaling,
+ buttonIconSize: (platform === "ios" ? 24 : 24) * sizeScaling,
+
+ // InputGroup
+ inputFontSize: fontSize * sizeScaling,
+ inputBorderColor: inputBorderColor, //D9D5DC
+ darkBorderColor: darkBorderColor,
+ inputSuccessBorderColor: "#2b8339",
+ inputErrorBorderColor: "#ed2f2f",
+ inputHeightBase: 30 * sizeScaling,
+ inputColor: textColor,
+ inputColorPlaceholder: inputColorPlaceholder,
+ inputColorPlaceholderTransparent: inputColorPlaceholderTransparent,
+
+ // Line Height
+ buttonLineHeight: 19 * sizeScaling,
+ lineHeightH1: 32 * sizeScaling,
+ lineHeightH2: 27 * sizeScaling,
+ lineHeightH3: 22 * sizeScaling,
+ lineHeight: 20 * sizeScaling, //platform === "ios" ? 20 : 20,
+ listItemSelected: platform === "ios" ? iosPrimaryColor : primaryColor,
+
+ // List
+ listBg: "transparent",
+ listBorderColor: "#c9c9c9",
+ listDividerBg: "#f4f4f4",
+ listBtnUnderlayColor: "#DDD",
+ listItemPadding: (platform === "ios" ? 10 : 12) * sizeScaling,
+ listNoteColor: inputColorPlaceholder,
+ listNoteSize: 13 * sizeScaling,
+
+ // Progress Bar
+ defaultProgressColor: "#E4202D",
+ inverseProgressColor: "#1A191B",
+
+ // Radio Button
+ radioBtnSize: (platform === "ios" ? 25 : 23) * sizeScaling,
+ radioSelectedColorAndroid: primaryColor,
+ radioBtnLineHeight: (platform === "ios" ? 29 : 24) * sizeScaling,
+ get radioColor() {
+ return this.brandPrimary;
+ },
+
+ // Segment
+ segmentBackgroundColor: platform === "ios" ? iosPrimaryColor: primaryColor,
+ segmentActiveBackgroundColor: "#fff", //platform === "ios" ? iosPrimaryColor : "#fff",
+ segmentTextColor: "#fff", //platform === "ios" ? iosPrimaryColor : "#fff",
+ segmentActiveTextColor: primaryColor, //platform === "ios" ? "#fff" : primaryColor,
+ segmentBorderColor: "#fff", //platform === "ios" ? iosPrimaryColor : "#fff",
+ segmentBorderColorMain: platform === "ios" ? iosPrimaryColor : primaryColor,
+
+ // Spinner
+ defaultSpinnerColor: "#45D56E",
+ inverseSpinnerColor: "#1A191B",
+
+ // Tab
+ tabBarDisabledTextColor: '#BDBDBD',
+ tabDefaultBg: platform === "ios" ? iosPrimaryColor : primaryColor,
+ topTabBarTextColor: headerTextColor, //platform === "ios" ? "#6b6b6b" : "#b3c7f9",
+ topTabBarActiveTextColor: headerTextColor, //platform === "ios" ? iosPrimaryColor: "#fff",
+ topTabBarBorderColor: headerTextColor, //platform === "ios" ? "#a7a6ab" : "#fff",
+ topTabBarActiveBorderColor: headerTextColor, //platform === "ios" ? iosPrimaryColor : "#fff",
+
+ // Tabs
+ tabBgColor: "#F8F8F8",
+ tabFontSize: fontSize * sizeScaling,
+
+ // Text
+ textColor: textColor,
+ labelColor: labelColor,
+ labelColorTransparent: labelColorTransparent,
+ inverseTextColor: inverseTextColor,
+ get defaultTextColor() {
+ return this.textColor;
+ },
+
+ // Title
+ titleFontfamily: platform === "ios" ? "System" : "Roboto_medium",
+ titleFontSize: (platform === "ios" ? 17 : 17) * sizeScaling,
+ subTitleFontSize: (platform === "ios" ? 11 : 11) * sizeScaling,
+ subtitleColor: headerTextColor, //platform === "ios" ? "#8e8e93" : "#FFF",
+ titleFontColor: headerTextColor, //platform === "ios" ? "#000" : "#FFF",
+
+ // Other
+ borderRadiusBase: (platform === "ios" ? 5 : 2) * sizeScaling,
+ //borderWidth: 0.5, /// PixelRatio.getPixelSizeForLayoutSize(1),
+ borderWidth: 1 / PixelRatio.getPixelSizeForLayoutSize(1),
+ contentPadding: 10 * sizeScaling,
+ dropdownLinkColor: "#414142",
+ inputLineHeight: 24 * sizeScaling,
+ deviceWidth,
+ deviceHeight,
+ isIphoneX,
+ inputGroupRoundedBorderRadius: 30 * sizeScaling,
+
+ //iPhoneX SafeArea - barely used, use SafeAreaView instead
+ Inset: isIphoneX ? {
+ portrait: {
+ topInset: 32,
+ leftInset: 0,
+ rightInset: 0,
+ bottomInset: 20
+ },
+ landscape: {
+ topInset: 15,
+ leftInset: 0,
+ rightInset: 0,
+ bottomInset: 10
+ }
+ } :
+ Platform.OS == 'ios' ?
+ {
+ portrait: {
+ topInset: 20, // to account for portrait status bar
+ leftInset: 0,
+ rightInset: 0,
+ bottomInset: 0
+ },
+ landscape: {
+ topInset: 0,
+ leftInset: 0,
+ rightInset: 0,
+ bottomInset: 0
+ }
+ }
+ :
+ { // so we don't need to check for iphoneX or not
+ portrait: {
+ topInset: 0, // Android toolbar/notch does not interfere with screen
+ leftInset: 0,
+ rightInset: 0,
+ bottomInset: 0
+ },
+ landscape: {
+ topInset: 0,
+ leftInset: 0,
+ rightInset: 0,
+ bottomInset: 0
+ }
+ }
+ };
+}
diff --git a/examples/advanced/advanced/src/package.json b/examples/advanced/advanced/src/package.json
new file mode 100644
index 000000000..6745195b0
--- /dev/null
+++ b/examples/advanced/advanced/src/package.json
@@ -0,0 +1,3 @@
+{
+ "name": "src"
+}
diff --git a/examples/advanced/advanced/src/routes.js b/examples/advanced/advanced/src/routes.js
new file mode 100644
index 000000000..4d47da435
--- /dev/null
+++ b/examples/advanced/advanced/src/routes.js
@@ -0,0 +1,33 @@
+// Components and pages for routes
+import Home from "./screens/Home";
+import Camera from './screens/Camera';
+
+
+// Configure main authenticated routes
+
+const routes = [
+ {
+ name: "Home",
+ label: "Home",
+ screen: Home,
+ },
+ {
+ name: "Camera",
+ label: "Camera",
+ screen: Camera
+ }
+];
+
+
+let routesMap = {};
+for(let r of routes){
+ routesMap[r.name] = {
+ screen: r.screen,
+ navigationOptions: ({ navigation }) => ({
+ title: r.label,
+ drawerLabel: r.label
+ })
+ }
+}
+
+export {routes, routesMap};
\ No newline at end of file
diff --git a/examples/advanced/advanced/src/screens/Camera.js b/examples/advanced/advanced/src/screens/Camera.js
new file mode 100644
index 000000000..e44f46cfc
--- /dev/null
+++ b/examples/advanced/advanced/src/screens/Camera.js
@@ -0,0 +1,937 @@
+import React, {Component} from 'react';
+import {
+ Platform,
+ StyleSheet,
+ Dimensions,
+ View,
+ Alert,
+ SafeAreaView,
+ AppState,
+ TouchableOpacity
+} from 'react-native';
+import _ from 'underscore';
+import { Container, Button, Text, Icon, Footer, FooterTab, Spinner, H2, connectStyle, Toast } from 'native-base';
+import { RNCamera } from 'react-native-camera';
+import {NavigationEvents} from 'react-navigation';
+
+import conf from 'src/conf';
+import {getOrientation} from 'src/baseComponents/orientation';
+import KeyboardShiftView from 'src/baseComponents/KeyboardShiftView';
+import ZoomView from 'src/baseComponents/ZoomView';
+import {runAfterInteractions} from 'src/baseComponents/utils';
+import MainHeader from 'src/baseComponents/MainHeader';
+
+
+const IS_IOS = Platform.OS == 'ios';
+const touchCoordsSize = 100 * conf.theme.variables.sizeScaling;
+const flashIcons = {
+ 'on': ,
+ 'auto': ,
+ 'off': ,
+ 'torch': ,
+}
+const MAX_ZOOM = 8; // iOS only
+const ZOOM_F = IS_IOS ? 0.01 : 0.1;
+const BACK_TYPE = RNCamera.Constants.Type.back;
+const FRONT_TYPE = RNCamera.Constants.Type.front;
+
+const WB_OPTIONS = [
+ RNCamera.Constants.WhiteBalance.auto,
+ RNCamera.Constants.WhiteBalance.sunny,
+ RNCamera.Constants.WhiteBalance.cloudy,
+ RNCamera.Constants.WhiteBalance.shadow,
+ RNCamera.Constants.WhiteBalance.incandescent,
+ RNCamera.Constants.WhiteBalance.fluorescent
+];
+
+const WB_OPTIONS_MAP = {
+ 0: 'WB',
+ 1: "SU",
+ 2: "CL",
+ 3: "SH",
+ 4: "IN",
+ 5: "FL"
+}
+
+const getCameraType = (type) => {
+
+ if(type == 'AVCaptureDeviceTypeBuiltInTelephotoCamera'){
+ return 'zoomed';
+ }
+ if(type == 'AVCaptureDeviceTypeBuiltInUltraWideCamera'){
+ return 'wide';
+ }
+
+ return 'normal';
+}
+
+
+const flex1 = {flex: 1};
+
+const styles = StyleSheet.create({
+ content: {flex: 1},
+ actionStyles: {
+ position: 'absolute',
+ bottom: 0,
+ width: '100%',
+ backgroundColor: 'transparent'
+ },
+ capturingStyle: {
+ position: 'absolute',
+ bottom: 0,
+ width: '100%',
+ backgroundColor: 'rgba(0,0,0,0.4)',
+ padding: conf.theme.variables.contentPadding,
+ },
+ cameraLoading: {flex: 1, alignSelf: 'center'},
+ cameraNotAuthorized: {
+ padding: 20 * conf.theme.variables.sizeScaling,
+ paddingTop: 35 * conf.theme.variables.sizeScaling
+ },
+
+ cameraButton: {
+ flex: 1
+ },
+
+ buttonsView: {
+ flex: 1,
+ width: '100%',
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'center'
+ },
+
+ cameraSelectionRow: {
+ flexDirection: 'row',
+ flex: 1,
+ alignItems: 'center',
+ justifyContent: 'center'
+ },
+
+ ratioButton: {
+ width: 100 * conf.theme.variables.sizeScaling
+ },
+})
+
+
+const cameraNotAuthorized = Camera access was not granted. Please go to your phone's settings and allow camera access.;
+
+const defaultCameraOptions = {
+ flashMode: 'off', // on, auto, off, torch
+ wb: 0,
+ zoom: 0, // 0-1
+ focusCoords: undefined
+}
+
+function parseRatio(str){
+ let [p1, p2] = str.split(":");
+ p1 = parseInt(p1);
+ p2 = parseInt(p2);
+ return p1 / p2;
+}
+
+class CameraSelectorButton extends React.PureComponent{
+
+ onChange = () => {
+ if(!this.props.isSelected){
+ this.props.onChange(this.props.camera.id);
+ }
+ }
+
+
+ render(){
+ let {camera, isSelected} = this.props;
+ let cameraType = camera.cameraType;
+ let IconComp;
+
+ if(camera.type == BACK_TYPE){
+ if(cameraType == 'wide'){
+ IconComp = (props) => ;
+
+ }
+ else if(cameraType == 'zoomed'){
+ IconComp = (props) => ;
+ }
+ else{
+ IconComp = (props) => ;
+ }
+ }
+ else if(camera.type == FRONT_TYPE){
+ IconComp = (props) => ;
+ }
+ // should never happen
+ else{
+ IconComp = (props) => ;
+ }
+
+
+ return (
+
+ )
+ }
+}
+
+class CameraSelector extends React.PureComponent{
+
+ loopCamera = () => {
+ let {cameraId, cameraIds, onChange} = this.props;
+
+ if(cameraId != null && cameraIds.length){
+ let newIdx = (cameraIds.findIndex(i => i.id == cameraId) + 1) % cameraIds.length;
+ onChange(cameraIds[newIdx].id);
+
+ }
+ else{
+ // if no available camera ids, always call with null
+ onChange(null);
+ }
+ }
+
+
+ render(){
+ let {cameraId, cameraIds} = this.props;
+
+ if(!cameraIds){return null;}
+
+ // camera ID is null, means we have no info about the camera.
+ // fallback to regular switch
+ if(cameraId == null){
+ return (
+
+ )
+ }
+
+ // 0 or 1 cameras, no button
+ if(cameraIds.length <= 1){
+ return null;
+ }
+
+ // 2 cameras, 1 button, no set default option
+ if(cameraIds.length == 2){
+ return (
+
+ )
+ }
+
+ // 3 or more cameras, multiple buttons
+ return (
+
+ {cameraIds.map((v, i) => {
+ return (
+
+ )
+ })}
+
+ )
+ }
+}
+
+
+class Camera extends Component{
+
+ constructor(props) {
+ super(props);
+ this.state = {
+ ...defaultCameraOptions,
+ orientation: getOrientation(),
+ takingPic: false,
+ recording: false,
+ audioDisabled: false,
+ elapsed: 0,
+ cameraReady: false,
+ cameraIds: null, // null means not checked, empty list means no results
+ cameraType: BACK_TYPE,
+ cameraId: null,
+ aspectRatioStr: "4:3",
+ aspectRatio: parseRatio("4:3")
+ };
+
+ this._prevPinch = 1;
+
+ }
+
+
+ componentDidMount(){
+ this.mounted = true;
+ AppState.addEventListener('change', this.handleAppStateChange);
+ Dimensions.addEventListener('change', this.adjustOrientation);
+ }
+
+ componentWillUnmount(){
+ this.mounted = false;
+ AppState.removeEventListener('change', this.handleAppStateChange);
+ this.stopVideo();
+ }
+
+ adjustOrientation = () => {
+ setTimeout(()=>{
+ if(this.mounted){
+ this.setState({orientation: getOrientation()});
+ }
+ }, 50);
+ }
+
+ // audio permission will be android only
+ onCameraStatusChange = (s) => {
+ if(s.cameraStatus == 'READY'){
+
+ let audioDisabled = s.recordAudioPermissionStatus == 'NOT_AUTHORIZED';
+ this.setState({audioDisabled: audioDisabled}, async () => {
+
+ let ids = [];
+
+ // dummy for simulator test
+ // uncomment above and below
+ // let ids = [
+ // {id: '1', type: BACK_TYPE, deviceType: 'AVCaptureDeviceTypeBuiltInWideAngleCamera'},
+ // {id: '2', type: BACK_TYPE, deviceType: 'AVCaptureDeviceTypeBuiltInTelephotoCamera'},
+ // {id: '3', type: BACK_TYPE, deviceType: 'AVCaptureDeviceTypeBuiltInUltraWideCamera'},
+ // {id: '4', type: FRONT_TYPE, deviceType: 'AVCaptureDeviceTypeBuiltInWideAngleCamera'},
+ // ]
+
+ let cameraId = null;
+
+ try{
+ ids = await this.camera.getCameraIdsAsync();
+
+ // map deviceType to our types
+ ids = ids.map(d => {
+ d.cameraType = getCameraType(d.deviceType);
+ return d;
+ });
+
+ if(ids.length){
+
+ // select the first back camera found
+ cameraId = ids[0].id;
+
+ for(let c of ids){
+
+ if(c.type == BACK_TYPE){
+ cameraId = c.id;
+ break;
+ }
+ }
+ }
+ }
+ catch(err){
+ console.error("Failed to get camera ids", err.message || err);
+ }
+
+ // sort ids so front cameras are first
+ ids = _.sortBy(ids, v => v.type == FRONT_TYPE ? 0 : 1);
+
+ this.setState({cameraIds: ids, cameraId: cameraId});
+
+ });
+ }
+ else{
+ if(this.state.cameraReady){
+ this.setState({cameraReady: false});
+ }
+ }
+ }
+
+ onCameraReady = () => {
+ if(!this.state.cameraReady){
+ this.setState({cameraReady: true});
+ }
+ }
+
+ onCameraMountError = () => {
+ setTimeout(()=>{
+ Alert.alert("Error", "Camera start failed.");
+ }, 150);
+ }
+
+
+ handleAppStateChange = (nextAppState) => {
+ }
+
+
+ onDidFocus = () => {
+ this.focused = true;
+
+ }
+
+ onDidBlur = async () => {
+ this.focused = false;
+ this.stopVideo();
+ }
+
+
+ onPinchProgress = (p) => {
+ let p2 = p - this._prevPinch;
+
+ if(p2 > 0 && p2 > ZOOM_F){
+ this._prevPinch = p;
+ this.setState({zoom: Math.min(this.state.zoom + ZOOM_F, 1)})
+ }
+ else if (p2 < 0 && p2 < -ZOOM_F){
+ this._prevPinch = p;
+ this.setState({zoom: Math.max(this.state.zoom - ZOOM_F, 0)})
+ }
+ }
+
+ onTapToFocus = (event) => {
+
+ if(!this.cameraStyle || this.state.takingPic){
+ return;
+ }
+
+ const {pageX, pageY} = event.nativeEvent;
+ let {width, height, top, left} = this.cameraStyle;
+
+ // compensate for top/left changes
+ let pageX2 = pageX - left;
+ let pageY2 = pageY - top;
+
+ // normalize coords as described by https://gist.github.com/Craigtut/6632a9ac7cfff55e74fb561862bc4edb
+ const x0 = pageX2 / width;
+ const y0 = pageY2 / height;
+
+ let x = x0;
+ let y = y0;
+
+ // if portrait, need to apply a transform because RNCamera always measures coords in landscape mode
+ // with the home button on the right. If the phone is rotated with the home button to the left
+ // we will have issues here, and we have no way to detect that orientation!
+ // TODO: Fix this, however, that orientation should never be used due to camera positon
+ if(this.state.orientation.isPortrait){
+ x = y0;
+ y = -x0 + 1;
+ }
+
+ this.setState({
+ focusCoords: {
+ x: x,
+ y: y,
+ autoExposure: true
+ },
+ touchCoords: {
+ x: pageX2 - 50,
+ y: pageY2 - 50
+ }
+ });
+
+ // remove focus rectangle
+ if(this.focusTimeout){
+ clearTimeout(this.focusTimeout);
+ this.focusTimeout = null;
+ }
+
+ }
+
+ onTapToFocusOut = () => {
+ if(this.state.touchCoords){
+ this.focusTimeout = setTimeout(()=>{
+ if(this.mounted){
+ this.setState({touchCoords: null});
+ }
+ }, 1500);
+ }
+ }
+
+ onPinchStart = () => {
+ this._prevPinch = 1;
+
+ }
+
+ onPinchEnd = () => {
+ this._prevPinch = 1;
+ }
+
+ onAudioInterrupted = () => {
+ this.setState({audioDisabled: true});
+ }
+
+ onAudioConnected = () => {
+ this.setState({audioDisabled: false});
+ }
+
+ onPictureTaken = () => {
+ this.setState({takingPic: false});
+ }
+
+ goBack = () => {
+ this.props.navigation.goBack();
+ }
+
+ render() {
+
+ let {orientation, takingPic, cameraReady, recording, audioDisabled, zoom, wb, cameraType, cameraId, cameraIds, flashMode} = this.state;
+ let {style} = this.props;
+
+ let isPortrait = orientation.isPortrait;
+
+ let disable = takingPic || !cameraReady;
+ let disableOrRecording = disable || recording;
+
+ // flag to decide how to layout camera buttons
+ let cameraCount = 0;
+
+ // we have queried the list of cameras
+ if(cameraIds != null){
+ if(cameraId == null){
+ cameraCount = 2; // no camera id info, assume 2 cameras to switch from back and front
+ }
+ else{
+ cameraCount = cameraIds.length;
+ }
+ }
+
+
+ let buttons = (
+
+
+
+
+ {recording ?
+
+ :
+
+ }
+
+
+
+ );
+
+
+ let cameraStyle;
+
+ // style to cover all the screen exactly
+ // leaving footer and extra heights
+ let mainViewStyle = {
+ flex: 1,
+ width: isPortrait ? orientation.width : orientation.width - style.footerWidth,
+ height: orientation.height - (style.footerHeight * isPortrait) - orientation.minusHeight - orientation.insetBottom
+ }
+
+ if(isPortrait){
+ let height = orientation.width * this.state.aspectRatio;
+ cameraStyle = {
+ position: 'absolute',
+ top: Math.max(0, (mainViewStyle.height - height) / 2),
+ left: 0,
+ width: orientation.width,
+ height: height
+ }
+ }
+ else{
+ let height = orientation.height - orientation.minusHeight;
+ let width = height * this.state.aspectRatio;
+
+ cameraStyle = {
+ position: 'absolute',
+ top: 0,
+ left: Math.max(0, (mainViewStyle.width - width) / 2),
+ width: width,
+ height: height
+ }
+ }
+
+ this.cameraStyle = cameraStyle;
+
+ return (
+
+
+
+
+
+
+
+
+
+ {
+ this.camera = ref;
+ }}
+ style={cameraStyle}
+ type={cameraType}
+ cameraId={cameraId}
+ //useCamera2Api={true}
+ onAudioInterrupted={this.onAudioInterrupted}
+ onAudioConnected={this.onAudioConnected}
+ onPictureTaken={this.onPictureTaken}
+ ratio={this.state.aspectRatioStr}
+ flashMode={flashMode}
+ zoom={zoom}
+ maxZoom={MAX_ZOOM}
+ whiteBalance={WB_OPTIONS[wb]}
+ autoFocusPointOfInterest={this.state.focusCoords}
+ androidCameraPermissionOptions={{
+ title: 'Permission to use camera',
+ message: 'We need your permission to use your camera',
+ buttonPositive: 'Ok',
+ buttonNegative: 'Cancel',
+ }}
+ androidRecordAudioPermissionOptions={{
+ title: 'Permission to use audio recording',
+ message: 'We need your permission to use your audio',
+ buttonPositive: 'Ok',
+ buttonNegative: 'Cancel',
+ }}
+ onStatusChange={this.onCameraStatusChange}
+ onCameraReady={this.onCameraReady}
+ onMountError={this.onCameraMountError}
+ pendingAuthorizationView={
+
+
+
+ }
+ notAuthorizedView={
+
+ {cameraNotAuthorized}
+
+ }
+ >
+
+
+
+ {this.state.touchCoords ?
+
+
+ : null}
+
+
+
+
+ {!takingPic && !recording && !this.state.spinnerVisible && cameraReady ?
+
+
+ {cameraCount > 2 ?
+
+
+
+
+ : null}
+
+
+
+ {cameraCount <= 2 ?
+
+ : null}
+
+
+
+
+
+ {(cameraCount > 1 && cameraCount <= 2) ?
+
+ : null}
+
+
+
+
+ : null }
+
+ {(takingPic || recording)?
+
+ {takingPic ? Capturing Picture...
: {`Capturing Video${audioDisabled ? ' (muted)' : ''}... (${this.state.elapsed})`}
}
+
+ : null}
+
+
+
+
+
+ {isPortrait ?
+
+ :
+
+ }
+
+ );
+ }
+
+ takePicture = async () => {
+ if (this.camera) {
+
+ if(this.state.takingPic || this.state.recording || !this.state.cameraReady){
+ return;
+ }
+ // if we have a non original quality, skip processing and compression.
+ // we will use JPEG compression on resize.
+ let options = {
+ quality: 0.85,
+ fixOrientation: true,
+ forceUpOrientation: true,
+ writeExif: true
+ };
+
+ this.setState({takingPic: true});
+
+ let data = null;
+
+ try{
+ data = await this.camera.takePictureAsync(options);
+ }
+ catch(err){
+ Alert.alert("Error", "Failed to take picture: " + (err.message || err));
+ return;
+ }
+
+ Alert.alert("Picture Taken!", JSON.stringify(data, null, 2));
+
+ }
+ }
+
+ startVideo = async () => {
+ if (this.camera && !this.state.recording) {
+
+ // need to do this in order to avoid race conditions
+ this.state.recording = true;
+
+ const options = {
+ quality: '480p',
+ maxDuration: 60,
+ maxFileSize: 100 * 1024 * 1024
+ };
+
+
+ this.setState({recording: true, elapsed: 0}, async () => {
+
+ let timer = setInterval(()=>{
+ this.setState({elapsed: this.state.elapsed + 1})
+ }, 1000);
+
+ let result = null;
+ try {
+ result = await this.camera.recordAsync(options);
+ }
+ catch(err){
+ console.warn("VIDEO RECORD FAIL", err.message, err);
+ Alert.alert("Error", "Failed to store recorded video: " + err.message);
+ }
+
+
+ if(result){
+ Alert.alert("Video recorded!", JSON.stringify(result));
+ }
+
+ // give time for the camera to recover
+ setTimeout(()=>{
+ this.setState({recording: false});
+ }, 500);
+
+ clearInterval(timer);
+
+ });
+
+ }
+ }
+
+ stopVideo = () => {
+ if(this.camera && this.state.recording){
+ this.camera.stopRecording();
+ }
+ }
+
+ toggleFlash = () => {
+ if (this.state.flashMode === 'torch') {
+ this.setState({ flashMode: 'off' });
+ } else if (this.state.flashMode === 'off') {
+ this.setState({ flashMode: 'auto' });
+ } else if (this.state.flashMode === 'auto') {
+ this.setState({ flashMode: 'on' });
+ } else if (this.state.flashMode === 'on') {
+ this.setState({ flashMode: 'torch' });
+ }
+ }
+
+
+ changeWB = () => {
+ this.setState({
+ wb: (this.state.wb + 1) % WB_OPTIONS.length
+ })
+ }
+
+ toggleRatio = () => {
+ if(this.state.aspectRatioStr == "4:3"){
+ this.setState({
+ aspectRatioStr: "1:1",
+ aspectRatio: parseRatio("1:1")
+ });
+ }
+ else if(this.state.aspectRatioStr == "1:1"){
+ this.setState({
+ aspectRatioStr: "16:9",
+ aspectRatio: parseRatio("16:9")
+ });
+ }
+ else{
+ this.setState({
+ aspectRatioStr: "4:3",
+ aspectRatio: parseRatio("4:3")
+ });
+ }
+ }
+
+ onCameraChange = (cameraId) => {
+
+ this.setState({cameraReady: false}, () => {
+ runAfterInteractions(() => {
+
+ // cameraId will be null if we failed to get a camera by ID or
+ // our id list is empty. Fallback to back/front setting
+
+ if(cameraId == null){
+ let cameraType = this.state.cameraType;
+ if(cameraType == FRONT_TYPE){
+ this.setState({cameraType: BACK_TYPE, cameraId: null, ...defaultCameraOptions});
+ }
+ else{
+ this.setState({cameraType: FRONT_TYPE, cameraId: null, ...defaultCameraOptions});
+ }
+ }
+ else{
+ this.setState({cameraId: cameraId, ...defaultCameraOptions});
+ }
+ });
+ });
+ }
+
+
+ resetZoom = () => {
+ this._prevPinch = 1;
+ this.setState({zoom: 0});
+ }
+}
+
+Camera.navigationOptions = ({ navigation }) => {
+ return {
+ header: props => null
+ }
+}
+
+
+
+Camera = connectStyle("Branding")(Camera);
+
+
+export default Camera;
\ No newline at end of file
diff --git a/examples/advanced/advanced/src/screens/Home.js b/examples/advanced/advanced/src/screens/Home.js
new file mode 100644
index 000000000..c5a4e6055
--- /dev/null
+++ b/examples/advanced/advanced/src/screens/Home.js
@@ -0,0 +1,75 @@
+import React from 'react';
+import {BackHandler, Alert} from 'react-native';
+import {
+ Button,
+ Text,
+ Container,
+ Icon,
+ connectStyle
+} from "native-base";
+
+import {Content} from 'src/baseComponents/Content';
+import MainHeader from 'src/baseComponents/MainHeader';
+
+
+class Home extends React.Component {
+ constructor(props){
+ super(props);
+ this.state = {};
+
+
+ // custom exit handler
+ this.props.navigation.setParams({
+ 'onExit': this.onExit
+ });
+
+ }
+
+ onExit = () => {
+ Alert.alert(
+ 'Confirm',
+ 'Are you sure you want to close the application?',
+ [
+ {
+ text: 'Cancel',
+ style: 'cancel',
+ },
+ {text: 'Yes', onPress: () => BackHandler.exitApp()},
+ ],
+ {cancelable: true},
+ );
+
+ return true;
+ }
+
+ render(){
+ return (
+
+
+ Welcome to RNCamera. Press below to test it!
+
+
+
+
+ )
+ }
+}
+
+// Different header, no back
+Home.navigationOptions = ({ navigation }) => {
+ return {
+ header: props =>
+ }
+}
+
+Home = connectStyle("Branding")(Home);
+
+export default Home;
\ No newline at end of file
diff --git a/examples/advanced/readme.md b/examples/advanced/readme.md
new file mode 100644
index 000000000..1dfdbf6a2
--- /dev/null
+++ b/examples/advanced/readme.md
@@ -0,0 +1,18 @@
+# RNCamera example app 2
+
+Example app that uses all of the commonly used camera features, either by using RNCamera features or implementing the ones not available by default (e.g., tap to focus and pinch to zoom).
+
+As opposed to the basic example, we will link directly to RNCamera from npm's last version. This means that the example can be run as a stand alone project.
+
+
+# Running
+
+cd advanced
+
+npm install (no linking is required)
+
+iOS: react-native run-ios
+Android: react-native run-android
+
+
+Note: A real device is required to test most camera features.
diff --git a/examples/basic/App.js b/examples/basic/App.js
index a9655e8f0..c478191b0 100644
--- a/examples/basic/App.js
+++ b/examples/basic/App.js
@@ -273,7 +273,7 @@ export default class CameraScreen extends React.Component {
renderCamera() {
const { canDetectFaces, canDetectText, canDetectBarcode } = this.state;
-
+
const drawFocusRingPosition = {
top: this.state.autoFocusPoint.drawRectPosition.y - 32,
left: this.state.autoFocusPoint.drawRectPosition.x - 32,
@@ -295,8 +295,12 @@ export default class CameraScreen extends React.Component {
whiteBalance={this.state.whiteBalance}
ratio={this.state.ratio}
focusDepth={this.state.depth}
- permissionDialogTitle={'Permission to use camera'}
- permissionDialogMessage={'We need your permission to use your camera phone'}
+ androidCameraPermissionOptions={{
+ title: 'Permission to use camera',
+ message: 'We need your permission to use your camera',
+ buttonPositive: 'Ok',
+ buttonNegative: 'Cancel',
+ }}
faceDetectionLandmarks={
RNCamera.Constants.FaceDetection.Landmarks
? RNCamera.Constants.FaceDetection.Landmarks.all
diff --git a/examples/basic/android/app/build.gradle b/examples/basic/android/app/build.gradle
index 7b2d4bc0c..60cbb8202 100644
--- a/examples/basic/android/app/build.gradle
+++ b/examples/basic/android/app/build.gradle
@@ -137,7 +137,7 @@ android {
dependencies {
implementation project(':react-native-camera')
implementation fileTree(dir: "libs", include: ["*.jar"])
- implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
+ implementation 'androidx.appcompat:appcompat:1.0.0'
implementation "com.facebook.react:react-native:+" // From node_modules
}
diff --git a/examples/basic/android/app/src/main/AndroidManifest.xml b/examples/basic/android/app/src/main/AndroidManifest.xml
index 3c4bd3034..992343172 100644
--- a/examples/basic/android/app/src/main/AndroidManifest.xml
+++ b/examples/basic/android/app/src/main/AndroidManifest.xml
@@ -9,10 +9,6 @@
-
-
+ package="com.mlkit">
-
+
-
+
-
-
-
-
-
-
-
+ android:roundIcon="@mipmap/ic_launcher_round"
+ android:theme="@style/AppTheme"
+ android:usesCleartextTraffic="true">
+
+
+
+
+
+
+
diff --git a/examples/mlkit/android/build.gradle b/examples/mlkit/android/build.gradle
index 91c2b4673..b2bee9f60 100644
--- a/examples/mlkit/android/build.gradle
+++ b/examples/mlkit/android/build.gradle
@@ -32,9 +32,3 @@ allprojects {
}
}
}
-
-
-task wrapper(type: Wrapper) {
- gradleVersion = '4.7'
- distributionUrl = distributionUrl.replace("bin", "all")
-}
diff --git a/examples/mlkit/android/gradle.properties b/examples/mlkit/android/gradle.properties
index a68197adf..30d0bbe7f 100644
--- a/examples/mlkit/android/gradle.properties
+++ b/examples/mlkit/android/gradle.properties
@@ -16,3 +16,6 @@ org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=1g -XX:+HeapDumpOnOutOfMemoryError -Df
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
+
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/examples/mlkit/android/gradle/wrapper/gradle-wrapper.properties b/examples/mlkit/android/gradle/wrapper/gradle-wrapper.properties
index 019065d1d..d507973c9 100644
--- a/examples/mlkit/android/gradle/wrapper/gradle-wrapper.properties
+++ b/examples/mlkit/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,6 @@
+#Mon Dec 02 11:05:01 EET 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
diff --git a/examples/mlkit/package.json b/examples/mlkit/package.json
index da3cb4357..4fe57bfb6 100644
--- a/examples/mlkit/package.json
+++ b/examples/mlkit/package.json
@@ -11,13 +11,14 @@
"react-native": "0.59.1"
},
"devDependencies": {
- "babel-core": "^7.0.0-bridge.0",
- "babel-jest": "24.1.0",
- "jest": "24.1.0",
- "metro-react-native-babel-preset": "0.53.1",
+ "@babel/core": "^7.6.2",
+ "@babel/runtime": "^7.6.2",
+ "babel-jest": "^24.9.0",
+ "jest": "^24.9.0",
+ "metro-react-native-babel-preset": "^0.56.1",
"react-test-renderer": "16.8.3"
},
"jest": {
"preset": "react-native"
}
-}
\ No newline at end of file
+}
diff --git a/examples/mlkit/yarn.lock b/examples/mlkit/yarn.lock
index be2cb1f2d..e9d712489 100644
--- a/examples/mlkit/yarn.lock
+++ b/examples/mlkit/yarn.lock
@@ -2,655 +2,818 @@
# yarn lockfile v1
-"@babel/code-frame@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
- integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d"
+ integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==
dependencies:
"@babel/highlight" "^7.0.0"
-"@babel/core@^7.0.0", "@babel/core@^7.1.0":
- version "7.3.3"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.3.3.tgz#d090d157b7c5060d05a05acaebc048bd2b037947"
- integrity sha512-w445QGI2qd0E0GlSnq6huRZWPMmQGCp5gd5ZWS4hagn0EiwzxD5QMFkpchyusAyVC1n27OKXzQ0/88aVU9n4xQ==
- dependencies:
- "@babel/code-frame" "^7.0.0"
- "@babel/generator" "^7.3.3"
- "@babel/helpers" "^7.2.0"
- "@babel/parser" "^7.3.3"
- "@babel/template" "^7.2.2"
- "@babel/traverse" "^7.2.2"
- "@babel/types" "^7.3.3"
- convert-source-map "^1.1.0"
+"@babel/core@^7.0.0", "@babel/core@^7.1.0", "@babel/core@^7.6.2":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.4.tgz#37e864532200cb6b50ee9a4045f5f817840166ab"
+ integrity sha512-+bYbx56j4nYBmpsWtnPUsKW3NdnYxbqyfrP2w9wILBuHzdfIKz9prieZK0DFPyIzkjYVUe4QkusGL07r5pXznQ==
+ dependencies:
+ "@babel/code-frame" "^7.5.5"
+ "@babel/generator" "^7.7.4"
+ "@babel/helpers" "^7.7.4"
+ "@babel/parser" "^7.7.4"
+ "@babel/template" "^7.7.4"
+ "@babel/traverse" "^7.7.4"
+ "@babel/types" "^7.7.4"
+ convert-source-map "^1.7.0"
debug "^4.1.0"
json5 "^2.1.0"
- lodash "^4.17.11"
+ lodash "^4.17.13"
resolve "^1.3.2"
semver "^5.4.1"
source-map "^0.5.0"
-"@babel/generator@^7.0.0", "@babel/generator@^7.2.2", "@babel/generator@^7.3.3":
- version "7.3.3"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.3.tgz#185962ade59a52e00ca2bdfcfd1d58e528d4e39e"
- integrity sha512-aEADYwRRZjJyMnKN7llGIlircxTCofm3dtV5pmY6ob18MSIuipHpA2yZWkPlycwu5HJcx/pADS3zssd8eY7/6A==
+"@babel/generator@^7.0.0", "@babel/generator@^7.4.0", "@babel/generator@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.4.tgz#db651e2840ca9aa66f327dcec1dc5f5fa9611369"
+ integrity sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg==
dependencies:
- "@babel/types" "^7.3.3"
+ "@babel/types" "^7.7.4"
jsesc "^2.5.1"
- lodash "^4.17.11"
+ lodash "^4.17.13"
source-map "^0.5.0"
- trim-right "^1.0.1"
-"@babel/helper-annotate-as-pure@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32"
- integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==
+"@babel/helper-annotate-as-pure@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz#bb3faf1e74b74bd547e867e48f551fa6b098b6ce"
+ integrity sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og==
dependencies:
- "@babel/types" "^7.0.0"
+ "@babel/types" "^7.7.4"
-"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f"
- integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz#5f73f2b28580e224b5b9bd03146a4015d6217f5f"
+ integrity sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ==
dependencies:
- "@babel/helper-explode-assignable-expression" "^7.1.0"
- "@babel/types" "^7.0.0"
+ "@babel/helper-explode-assignable-expression" "^7.7.4"
+ "@babel/types" "^7.7.4"
-"@babel/helper-builder-react-jsx@^7.3.0":
- version "7.3.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz#a1ac95a5d2b3e88ae5e54846bf462eeb81b318a4"
- integrity sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw==
+"@babel/helper-builder-react-jsx@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.7.4.tgz#da188d247508b65375b2c30cf59de187be6b0c66"
+ integrity sha512-kvbfHJNN9dg4rkEM4xn1s8d1/h6TYNvajy9L1wx4qLn9HFg0IkTsQi4rfBe92nxrPUFcMsHoMV+8rU7MJb3fCA==
dependencies:
- "@babel/types" "^7.3.0"
+ "@babel/types" "^7.7.4"
esutils "^2.0.0"
-"@babel/helper-call-delegate@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz#6a957f105f37755e8645343d3038a22e1449cc4a"
- integrity sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==
+"@babel/helper-call-delegate@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.7.4.tgz#621b83e596722b50c0066f9dc37d3232e461b801"
+ integrity sha512-8JH9/B7J7tCYJ2PpWVpw9JhPuEVHztagNVuQAFBVFYluRMlpG7F1CgKEgGeL6KFqcsIa92ZYVj6DSc0XwmN1ZA==
dependencies:
- "@babel/helper-hoist-variables" "^7.0.0"
- "@babel/traverse" "^7.1.0"
- "@babel/types" "^7.0.0"
+ "@babel/helper-hoist-variables" "^7.7.4"
+ "@babel/traverse" "^7.7.4"
+ "@babel/types" "^7.7.4"
-"@babel/helper-create-class-features-plugin@^7.3.0":
- version "7.3.2"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.3.2.tgz#ba1685603eb1c9f2f51c9106d5180135c163fe73"
- integrity sha512-tdW8+V8ceh2US4GsYdNVNoohq5uVwOf9k6krjwW4E1lINcHgttnWcNqgdoessn12dAy8QkbezlbQh2nXISNY+A==
+"@babel/helper-create-class-features-plugin@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.4.tgz#fce60939fd50618610942320a8d951b3b639da2d"
+ integrity sha512-l+OnKACG4uiDHQ/aJT8dwpR+LhCJALxL0mJ6nzjB25e5IPwqV1VOsY7ah6UB1DG+VOXAIMtuC54rFJGiHkxjgA==
dependencies:
- "@babel/helper-function-name" "^7.1.0"
- "@babel/helper-member-expression-to-functions" "^7.0.0"
- "@babel/helper-optimise-call-expression" "^7.0.0"
+ "@babel/helper-function-name" "^7.7.4"
+ "@babel/helper-member-expression-to-functions" "^7.7.4"
+ "@babel/helper-optimise-call-expression" "^7.7.4"
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-replace-supers" "^7.2.3"
+ "@babel/helper-replace-supers" "^7.7.4"
+ "@babel/helper-split-export-declaration" "^7.7.4"
-"@babel/helper-define-map@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c"
- integrity sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==
+"@babel/helper-create-regexp-features-plugin@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz#6d5762359fd34f4da1500e4cff9955b5299aaf59"
+ integrity sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A==
dependencies:
- "@babel/helper-function-name" "^7.1.0"
- "@babel/types" "^7.0.0"
- lodash "^4.17.10"
+ "@babel/helper-regex" "^7.4.4"
+ regexpu-core "^4.6.0"
-"@babel/helper-explode-assignable-expression@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6"
- integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==
+"@babel/helper-define-map@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.7.4.tgz#2841bf92eb8bd9c906851546fe6b9d45e162f176"
+ integrity sha512-v5LorqOa0nVQUvAUTUF3KPastvUt/HzByXNamKQ6RdJRTV7j8rLL+WB5C/MzzWAwOomxDhYFb1wLLxHqox86lg==
dependencies:
- "@babel/traverse" "^7.1.0"
- "@babel/types" "^7.0.0"
+ "@babel/helper-function-name" "^7.7.4"
+ "@babel/types" "^7.7.4"
+ lodash "^4.17.13"
-"@babel/helper-function-name@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53"
- integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==
+"@babel/helper-explode-assignable-expression@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz#fa700878e008d85dc51ba43e9fb835cddfe05c84"
+ integrity sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg==
dependencies:
- "@babel/helper-get-function-arity" "^7.0.0"
- "@babel/template" "^7.1.0"
- "@babel/types" "^7.0.0"
+ "@babel/traverse" "^7.7.4"
+ "@babel/types" "^7.7.4"
-"@babel/helper-get-function-arity@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3"
- integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==
+"@babel/helper-function-name@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz#ab6e041e7135d436d8f0a3eca15de5b67a341a2e"
+ integrity sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==
dependencies:
- "@babel/types" "^7.0.0"
+ "@babel/helper-get-function-arity" "^7.7.4"
+ "@babel/template" "^7.7.4"
+ "@babel/types" "^7.7.4"
-"@babel/helper-hoist-variables@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88"
- integrity sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==
+"@babel/helper-get-function-arity@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz#cb46348d2f8808e632f0ab048172130e636005f0"
+ integrity sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==
dependencies:
- "@babel/types" "^7.0.0"
+ "@babel/types" "^7.7.4"
-"@babel/helper-member-expression-to-functions@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f"
- integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==
+"@babel/helper-hoist-variables@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.4.tgz#612384e3d823fdfaaf9fce31550fe5d4db0f3d12"
+ integrity sha512-wQC4xyvc1Jo/FnLirL6CEgPgPCa8M74tOdjWpRhQYapz5JC7u3NYU1zCVoVAGCE3EaIP9T1A3iW0WLJ+reZlpQ==
dependencies:
- "@babel/types" "^7.0.0"
+ "@babel/types" "^7.7.4"
-"@babel/helper-module-imports@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d"
- integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==
+"@babel/helper-member-expression-to-functions@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.4.tgz#356438e2569df7321a8326644d4b790d2122cb74"
+ integrity sha512-9KcA1X2E3OjXl/ykfMMInBK+uVdfIVakVe7W7Lg3wfXUNyS3Q1HWLFRwZIjhqiCGbslummPDnmb7vIekS0C1vw==
dependencies:
- "@babel/types" "^7.0.0"
+ "@babel/types" "^7.7.4"
-"@babel/helper-module-transforms@^7.1.0":
- version "7.2.2"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz#ab2f8e8d231409f8370c883d20c335190284b963"
- integrity sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==
+"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz#e5a92529f8888bf319a6376abfbd1cebc491ad91"
+ integrity sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ==
dependencies:
- "@babel/helper-module-imports" "^7.0.0"
- "@babel/helper-simple-access" "^7.1.0"
- "@babel/helper-split-export-declaration" "^7.0.0"
- "@babel/template" "^7.2.2"
- "@babel/types" "^7.2.2"
- lodash "^4.17.10"
+ "@babel/types" "^7.7.4"
-"@babel/helper-optimise-call-expression@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5"
- integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==
+"@babel/helper-module-transforms@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.7.4.tgz#8d7cdb1e1f8ea3d8c38b067345924ac4f8e0879a"
+ integrity sha512-ehGBu4mXrhs0FxAqN8tWkzF8GSIGAiEumu4ONZ/hD9M88uHcD+Yu2ttKfOCgwzoesJOJrtQh7trI5YPbRtMmnA==
dependencies:
- "@babel/types" "^7.0.0"
+ "@babel/helper-module-imports" "^7.7.4"
+ "@babel/helper-simple-access" "^7.7.4"
+ "@babel/helper-split-export-declaration" "^7.7.4"
+ "@babel/template" "^7.7.4"
+ "@babel/types" "^7.7.4"
+ lodash "^4.17.13"
+
+"@babel/helper-optimise-call-expression@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.4.tgz#034af31370d2995242aa4df402c3b7794b2dcdf2"
+ integrity sha512-VB7gWZ2fDkSuqW6b1AKXkJWO5NyNI3bFL/kK79/30moK57blr6NbH8xcl2XcKCwOmJosftWunZqfO84IGq3ZZg==
+ dependencies:
+ "@babel/types" "^7.7.4"
"@babel/helper-plugin-utils@^7.0.0":
version "7.0.0"
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250"
integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==
-"@babel/helper-regex@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27"
- integrity sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==
+"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.5.5.tgz#0aa6824f7100a2e0e89c1527c23936c152cab351"
+ integrity sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==
dependencies:
- lodash "^4.17.10"
+ lodash "^4.17.13"
-"@babel/helper-remap-async-to-generator@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f"
- integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==
+"@babel/helper-remap-async-to-generator@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz#c68c2407350d9af0e061ed6726afb4fff16d0234"
+ integrity sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.0.0"
- "@babel/helper-wrap-function" "^7.1.0"
- "@babel/template" "^7.1.0"
- "@babel/traverse" "^7.1.0"
- "@babel/types" "^7.0.0"
+ "@babel/helper-annotate-as-pure" "^7.7.4"
+ "@babel/helper-wrap-function" "^7.7.4"
+ "@babel/template" "^7.7.4"
+ "@babel/traverse" "^7.7.4"
+ "@babel/types" "^7.7.4"
-"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.2.3":
- version "7.2.3"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz#19970020cf22677d62b3a689561dbd9644d8c5e5"
- integrity sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA==
+"@babel/helper-replace-supers@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.7.4.tgz#3c881a6a6a7571275a72d82e6107126ec9e2cdd2"
+ integrity sha512-pP0tfgg9hsZWo5ZboYGuBn/bbYT/hdLPVSS4NMmiRJdwWhP0IznPwN9AE1JwyGsjSPLC364I0Qh5p+EPkGPNpg==
dependencies:
- "@babel/helper-member-expression-to-functions" "^7.0.0"
- "@babel/helper-optimise-call-expression" "^7.0.0"
- "@babel/traverse" "^7.2.3"
- "@babel/types" "^7.0.0"
+ "@babel/helper-member-expression-to-functions" "^7.7.4"
+ "@babel/helper-optimise-call-expression" "^7.7.4"
+ "@babel/traverse" "^7.7.4"
+ "@babel/types" "^7.7.4"
-"@babel/helper-simple-access@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c"
- integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==
+"@babel/helper-simple-access@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz#a169a0adb1b5f418cfc19f22586b2ebf58a9a294"
+ integrity sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A==
dependencies:
- "@babel/template" "^7.1.0"
- "@babel/types" "^7.0.0"
+ "@babel/template" "^7.7.4"
+ "@babel/types" "^7.7.4"
-"@babel/helper-split-export-declaration@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813"
- integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==
+"@babel/helper-split-export-declaration@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz#57292af60443c4a3622cf74040ddc28e68336fd8"
+ integrity sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==
dependencies:
- "@babel/types" "^7.0.0"
+ "@babel/types" "^7.7.4"
-"@babel/helper-wrap-function@^7.1.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa"
- integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==
+"@babel/helper-wrap-function@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz#37ab7fed5150e22d9d7266e830072c0cdd8baace"
+ integrity sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg==
dependencies:
- "@babel/helper-function-name" "^7.1.0"
- "@babel/template" "^7.1.0"
- "@babel/traverse" "^7.1.0"
- "@babel/types" "^7.2.0"
+ "@babel/helper-function-name" "^7.7.4"
+ "@babel/template" "^7.7.4"
+ "@babel/traverse" "^7.7.4"
+ "@babel/types" "^7.7.4"
-"@babel/helpers@^7.2.0":
- version "7.3.1"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.3.1.tgz#949eec9ea4b45d3210feb7dc1c22db664c9e44b9"
- integrity sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA==
+"@babel/helpers@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.7.4.tgz#62c215b9e6c712dadc15a9a0dcab76c92a940302"
+ integrity sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==
dependencies:
- "@babel/template" "^7.1.2"
- "@babel/traverse" "^7.1.5"
- "@babel/types" "^7.3.0"
+ "@babel/template" "^7.7.4"
+ "@babel/traverse" "^7.7.4"
+ "@babel/types" "^7.7.4"
"@babel/highlight@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4"
- integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540"
+ integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==
dependencies:
chalk "^2.0.0"
esutils "^2.0.2"
js-tokens "^4.0.0"
-"@babel/parser@^7.0.0", "@babel/parser@^7.2.2", "@babel/parser@^7.2.3", "@babel/parser@^7.3.3":
- version "7.3.3"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.3.tgz#092d450db02bdb6ccb1ca8ffd47d8774a91aef87"
- integrity sha512-xsH1CJoln2r74hR+y7cg2B5JCPaTh+Hd+EbBRk9nWGSNspuo6krjhX0Om6RnRQuIvFq8wVXCLKH3kwKDYhanSg==
+"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.4.tgz#75ab2d7110c2cf2fa949959afb05fa346d2231bb"
+ integrity sha512-jIwvLO0zCL+O/LmEJQjWA75MQTWwx3c3u2JOTDK5D3/9egrWRRA0/0hk9XXywYnXZVVpzrBYeIQTmhwUaePI9g==
"@babel/plugin-external-helpers@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-external-helpers/-/plugin-external-helpers-7.2.0.tgz#7f4cb7dee651cd380d2034847d914288467a6be4"
- integrity sha512-QFmtcCShFkyAsNtdCM3lJPmRe1iB+vPZymlB4LnDIKEBj2yKQLQKtoxXxJ8ePT5fwMl4QGg303p4mB0UsSI2/g==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-external-helpers/-/plugin-external-helpers-7.7.4.tgz#8aa7aa402f0e2ecb924611cbf30942a497dfd17e"
+ integrity sha512-RVGNajLaFlknbZLutaP/uv7Q+xmVs2LMlEWFXbcjLnwtBdPqAVpV3nzYIAJqri/VjJCUrhG5nALijtg0aND+XA==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-proposal-class-properties@^7.0.0":
- version "7.3.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.3.tgz#e69ee114a834a671293ace001708cc1682ed63f9"
- integrity sha512-XO9eeU1/UwGPM8L+TjnQCykuVcXqaO5J1bkRPIygqZ/A2L1xVMJ9aZXrY31c0U4H2/LHKL4lbFQLsxktSrc/Ng==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.4.tgz#2f964f0cb18b948450362742e33e15211e77c2ba"
+ integrity sha512-EcuXeV4Hv1X3+Q1TsuOmyyxeTRiSqurGJ26+I/FW1WbymmRRapVORm6x1Zl3iDIHyRxEs+VXWp6qnlcfcJSbbw==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.3.0"
+ "@babel/helper-create-class-features-plugin" "^7.7.4"
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-proposal-export-default-from@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.2.0.tgz#737b0da44b9254b6152fe29bb99c64e5691f6f68"
- integrity sha512-NVfNe7F6nsasG1FnvcFxh2FN0l04ZNe75qTOAVOILWPam0tw9a63RtT/Dab8dPjedZa4fTQaQ83yMMywF9OSug==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.7.4.tgz#890de3c0c475374638292df31f6582160b54d639"
+ integrity sha512-1t6dh7BHYUz4zD1m4pozYYEZy/3m8dgOr9owx3r0mPPI3iGKRUKUbIxfYmcJ4hwljs/dhd0qOTr1ZDUp43ix+w==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/plugin-syntax-export-default-from" "^7.2.0"
+ "@babel/plugin-syntax-export-default-from" "^7.7.4"
"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.2.0.tgz#c3fda766187b2f2162657354407247a758ee9cf9"
- integrity sha512-QXj/YjFuFJd68oDvoc1e8aqLr2wz7Kofzvp6Ekd/o7MWZl+nZ0/cpStxND+hlZ7DpRWAp7OmuyT2areZ2V3YUA==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.7.4.tgz#7db302c83bc30caa89e38fee935635ef6bd11c28"
+ integrity sha512-TbYHmr1Gl1UC7Vo2HVuj/Naci5BEGNZ0AJhzqD2Vpr6QPFWpUmBRLrIDjedzx7/CShq0bRDS2gI4FIs77VHLVQ==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/plugin-syntax-nullish-coalescing-operator" "^7.2.0"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.7.4"
"@babel/plugin-proposal-object-rest-spread@^7.0.0":
- version "7.3.2"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.2.tgz#6d1859882d4d778578e41f82cc5d7bf3d5daf6c1"
- integrity sha512-DjeMS+J2+lpANkYLLO+m6GjoTMygYglKmRe6cDTbFv3L9i6mmiE8fe6B8MtCSLZpVXscD5kn7s6SgtHrDoBWoA==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.4.tgz#cc57849894a5c774214178c8ab64f6334ec8af71"
+ integrity sha512-rnpnZR3/iWKmiQyJ3LKJpSwLDcX/nSXhdLk4Aq/tXOApIvyu7qoabrige0ylsAJffaUC51WiBu209Q0U+86OWQ==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/plugin-syntax-object-rest-spread" "^7.2.0"
+ "@babel/plugin-syntax-object-rest-spread" "^7.7.4"
"@babel/plugin-proposal-optional-catch-binding@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5"
- integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz#ec21e8aeb09ec6711bc0a39ca49520abee1de379"
+ integrity sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/plugin-syntax-optional-catch-binding" "^7.2.0"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.7.4"
"@babel/plugin-proposal-optional-chaining@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.2.0.tgz#ae454f4c21c6c2ce8cb2397dc332ae8b420c5441"
- integrity sha512-ea3Q6edZC/55wEBVZAEz42v528VulyO0eir+7uky/sT4XRcdkWJcFi1aPtitTlwUzGnECWJNExWww1SStt+yWw==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.7.4.tgz#3f04c2de1a942cbd3008324df8144b9cbc0ca0ba"
+ integrity sha512-JmgaS+ygAWDR/STPe3/7y0lNlHgS+19qZ9aC06nYLwQ/XB7c0q5Xs+ksFU3EDnp9EiEsO0dnRAOKeyLHTZuW3A==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/plugin-syntax-optional-chaining" "^7.2.0"
+ "@babel/plugin-syntax-optional-chaining" "^7.7.4"
"@babel/plugin-syntax-class-properties@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.2.0.tgz#23b3b7b9bcdabd73672a9149f728cd3be6214812"
- integrity sha512-UxYaGXYQ7rrKJS/PxIKRkv3exi05oH7rokBAsmCSsCxz1sVPZ7Fu6FzKoGgUvmY+0YgSkYHgUoCh5R5bCNBQlw==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.7.4.tgz#6048c129ea908a432a1ff85f1dc794dc62ddaa5e"
+ integrity sha512-JH3v5ZOeKT0qqdJ9BeBcZTFQiJOMax8RopSr1bH6ASkZKo2qWsvBML7W1mp89sszBRDBBRO8snqcByGdrMTdMg==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-syntax-dynamic-import@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612"
- integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz#29ca3b4415abfe4a5ec381e903862ad1a54c3aec"
+ integrity sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.2.0.tgz#edd83b7adc2e0d059e2467ca96c650ab6d2f3820"
- integrity sha512-c7nqUnNST97BWPtoe+Ssi+fJukc9P9/JMZ71IOMNQWza2E+Psrd46N6AEvtw6pqK+gt7ChjXyrw4SPDO79f3Lw==
+"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.7.4.tgz#897f05808298060b52873fa804ff853540790ea1"
+ integrity sha512-j888jpjATLEzOWhKawq46UrpXnCRDbdhBd5io4jgwjJ3+CHHGCRb6PNAVEgs+BXIb+dNRAmnkv36zfB992PRVw==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c"
- integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg==
+"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.2.0", "@babel/plugin-syntax-flow@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.7.4.tgz#6d91b59e1a0e4c17f36af2e10dd64ef220919d7b"
+ integrity sha512-2AMAWl5PsmM5KPkB22cvOkUyWk6MjUaqhHNU5nSPUl/ns3j5qLfw2SuYP5RbVZ0tfLvePr4zUScbICtDP2CUNw==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7"
- integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==
+"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.7.4.tgz#dab2b56a36fb6c3c222a1fbc71f7bf97f327a9ec"
+ integrity sha512-wuy6fiMe9y7HeZBWXYCGt2RGxZOj0BImZ9EyXJVnVGBKO/Br592rbR3rtIQn0eQhAk9vqaKP5n8tVqEFBQMfLg==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-syntax-nullish-coalescing-operator@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.2.0.tgz#f75083dfd5ade73e783db729bbd87e7b9efb7624"
- integrity sha512-lRCEaKE+LTxDQtgbYajI04ddt6WW0WJq57xqkAZ+s11h4YgfRHhVA/Y2VhfPzzFD4qeLHWg32DMp9HooY4Kqlg==
+"@babel/plugin-syntax-nullish-coalescing-operator@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.7.4.tgz#e53b751d0c3061b1ba3089242524b65a7a9da12b"
+ integrity sha512-XKh/yIRPiQTOeBg0QJjEus5qiSKucKAiApNtO1psqG7D17xmE+X2i5ZqBEuSvo0HRuyPaKaSN/Gy+Ha9KFQolw==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e"
- integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==
+"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz#47cf220d19d6d0d7b154304701f468fc1cc6ff46"
+ integrity sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-syntax-optional-catch-binding@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c"
- integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==
+"@babel/plugin-syntax-optional-catch-binding@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz#a3e38f59f4b6233867b4a92dcb0ee05b2c334aa6"
+ integrity sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-syntax-optional-chaining@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.2.0.tgz#a59d6ae8c167e7608eaa443fda9fa8fa6bf21dff"
- integrity sha512-HtGCtvp5Uq/jH/WNUPkK6b7rufnCPLLlDAFN7cmACoIjaOOiXxUt3SswU5loHqrhtqTsa/WoLQ1OQ1AGuZqaWA==
+"@babel/plugin-syntax-optional-chaining@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.7.4.tgz#c91fdde6de85d2eb8906daea7b21944c3610c901"
+ integrity sha512-2MqYD5WjZSbJdUagnJvIdSfkb/ucOC9/1fRJxm7GAxY6YQLWlUvkfxoNbUPcPLHJyetKUDQ4+yyuUyAoc0HriA==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-syntax-typescript@^7.2.0":
- version "7.3.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz#a7cc3f66119a9f7ebe2de5383cce193473d65991"
- integrity sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag==
+"@babel/plugin-syntax-typescript@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.7.4.tgz#5d037ffa10f3b25a16f32570ebbe7a8c2efa304b"
+ integrity sha512-77blgY18Hud4NM1ggTA8xVT/dBENQf17OpiToSa2jSmEY3fWXD2jwrdVlO4kq5yzUTeF15WSQ6b4fByNvJcjpQ==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-arrow-functions@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550"
- integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.7.4.tgz#76309bd578addd8aee3b379d809c802305a98a12"
+ integrity sha512-zUXy3e8jBNPiffmqkHRNDdZM2r8DWhCB7HhcoyZjiK1TxYEluLHAvQuYnTT+ARqRpabWqy/NHkO6e3MsYB5YfA==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-async-to-generator@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz#68b8a438663e88519e65b776f8938f3445b1a2ff"
- integrity sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz#694cbeae6d613a34ef0292713fa42fb45c4470ba"
+ integrity sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg==
dependencies:
- "@babel/helper-module-imports" "^7.0.0"
+ "@babel/helper-module-imports" "^7.7.4"
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-remap-async-to-generator" "^7.1.0"
+ "@babel/helper-remap-async-to-generator" "^7.7.4"
"@babel/plugin-transform-block-scoped-functions@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190"
- integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.7.4.tgz#d0d9d5c269c78eaea76227ace214b8d01e4d837b"
+ integrity sha512-kqtQzwtKcpPclHYjLK//3lH8OFsCDuDJBaFhVwf8kqdnF6MN4l618UDlcA7TfRs3FayrHj+svYnSX8MC9zmUyQ==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-block-scoping@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz#f17c49d91eedbcdf5dd50597d16f5f2f770132d4"
- integrity sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.7.4.tgz#200aad0dcd6bb80372f94d9e628ea062c58bf224"
+ integrity sha512-2VBe9u0G+fDt9B5OV5DQH4KBf5DoiNkwFKOz0TCvBWvdAN2rOykCTkrL+jTLxfCAm76l9Qo5OqL7HBOx2dWggg==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
- lodash "^4.17.10"
+ lodash "^4.17.13"
"@babel/plugin-transform-classes@^7.0.0":
- version "7.3.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.3.3.tgz#a0532d6889c534d095e8f604e9257f91386c4b51"
- integrity sha512-n0CLbsg7KOXsMF4tSTLCApNMoXk0wOPb0DYfsOO1e7SfIb9gOyfbpKI2MZ+AXfqvlfzq2qsflJ1nEns48Caf2w==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.0.0"
- "@babel/helper-define-map" "^7.1.0"
- "@babel/helper-function-name" "^7.1.0"
- "@babel/helper-optimise-call-expression" "^7.0.0"
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.4.tgz#c92c14be0a1399e15df72667067a8f510c9400ec"
+ integrity sha512-sK1mjWat7K+buWRuImEzjNf68qrKcrddtpQo3swi9j7dUcG6y6R6+Di039QN2bD1dykeswlagupEmpOatFHHUg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.7.4"
+ "@babel/helper-define-map" "^7.7.4"
+ "@babel/helper-function-name" "^7.7.4"
+ "@babel/helper-optimise-call-expression" "^7.7.4"
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-replace-supers" "^7.1.0"
- "@babel/helper-split-export-declaration" "^7.0.0"
+ "@babel/helper-replace-supers" "^7.7.4"
+ "@babel/helper-split-export-declaration" "^7.7.4"
globals "^11.1.0"
"@babel/plugin-transform-computed-properties@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da"
- integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.7.4.tgz#e856c1628d3238ffe12d668eb42559f79a81910d"
+ integrity sha512-bSNsOsZnlpLLyQew35rl4Fma3yKWqK3ImWMSC/Nc+6nGjC9s5NFWAer1YQ899/6s9HxO2zQC1WoFNfkOqRkqRQ==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-destructuring@^7.0.0":
- version "7.3.2"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.3.2.tgz#f2f5520be055ba1c38c41c0e094d8a461dd78f2d"
- integrity sha512-Lrj/u53Ufqxl/sGxyjsJ2XNtNuEjDyjpqdhMNh5aZ+XFOdThL46KBj27Uem4ggoezSYBxKWAil6Hu8HtwqesYw==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz#2b713729e5054a1135097b6a67da1b6fe8789267"
+ integrity sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-exponentiation-operator@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008"
- integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz#dd30c0191e3a1ba19bcc7e389bdfddc0729d5db9"
+ integrity sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ==
dependencies:
- "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0"
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.7.4"
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-flow-strip-types@^7.0.0":
- version "7.2.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.2.3.tgz#e3ac2a594948454e7431c7db33e1d02d51b5cd69"
- integrity sha512-xnt7UIk9GYZRitqCnsVMjQK1O2eKZwFB3CvvHjf5SGx6K6vr/MScCKQDnf1DxRaj501e3pXjti+inbSXX2ZUoQ==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.7.4.tgz#cc73f85944782df1d77d80977bc097920a8bf31a"
+ integrity sha512-w9dRNlHY5ElNimyMYy0oQowvQpwt/PRHI0QS98ZJCTZU2bvSnKXo5zEiD5u76FBPigTm8TkqzmnUTg16T7qbkA==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/plugin-syntax-flow" "^7.2.0"
+ "@babel/plugin-syntax-flow" "^7.7.4"
"@babel/plugin-transform-for-of@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz#ab7468befa80f764bb03d3cb5eef8cc998e1cad9"
- integrity sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.7.4.tgz#248800e3a5e507b1f103d8b4ca998e77c63932bc"
+ integrity sha512-zZ1fD1B8keYtEcKF+M1TROfeHTKnijcVQm0yO/Yu1f7qoDoxEIc/+GX6Go430Bg84eM/xwPFp0+h4EbZg7epAA==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-function-name@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz#f7930362829ff99a3174c39f0afcc024ef59731a"
- integrity sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.4.tgz#75a6d3303d50db638ff8b5385d12451c865025b1"
+ integrity sha512-E/x09TvjHNhsULs2IusN+aJNRV5zKwxu1cpirZyRPw+FyyIKEHPXTsadj48bVpc1R5Qq1B5ZkzumuFLytnbT6g==
dependencies:
- "@babel/helper-function-name" "^7.1.0"
+ "@babel/helper-function-name" "^7.7.4"
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-literals@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1"
- integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.7.4.tgz#27fe87d2b5017a2a5a34d1c41a6b9f6a6262643e"
+ integrity sha512-X2MSV7LfJFm4aZfxd0yLVFrEXAgPqYoDG53Br/tCKiKYfX0MjVjQeWPIhPHHsCqzwQANq+FLN786fF5rgLS+gw==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-member-expression-literals@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d"
- integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.7.4.tgz#aee127f2f3339fc34ce5e3055d7ffbf7aa26f19a"
+ integrity sha512-9VMwMO7i69LHTesL0RdGy93JU6a+qOPuvB4F4d0kR0zyVjJRVJRaoaGjhtki6SzQUu8yen/vxPKN6CWnCUw6bA==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-modules-commonjs@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz#c4f1933f5991d5145e9cfad1dfd848ea1727f404"
- integrity sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.4.tgz#bee4386e550446343dd52a571eda47851ff857a3"
+ integrity sha512-k8iVS7Jhc367IcNF53KCwIXtKAH7czev866ThsTgy8CwlXjnKZna2VHwChglzLleYrcHz1eQEIJlGRQxB53nqA==
dependencies:
- "@babel/helper-module-transforms" "^7.1.0"
+ "@babel/helper-module-transforms" "^7.7.4"
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-simple-access" "^7.1.0"
+ "@babel/helper-simple-access" "^7.7.4"
+ babel-plugin-dynamic-import-node "^2.3.0"
"@babel/plugin-transform-object-assign@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.2.0.tgz#6fdeea42be17040f119e38e23ea0f49f31968bde"
- integrity sha512-nmE55cZBPFgUktbF2OuoZgPRadfxosLOpSgzEPYotKSls9J4pEPcembi8r78RU37Rph6UApCpNmsQA4QMWK9Ng==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.7.4.tgz#a31b70c434a00a078b2d4d10dbd59992fa70afca"
+ integrity sha512-0TpeUlnhQDwKxPLTIckdaWt46L2s61c/5w5snw1OUod5ehOJywZD98Ha3dFHVjeqkfOFtOTH7cqxddjxUuvcmg==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-object-super@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598"
- integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.7.4.tgz#48488937a2d586c0148451bf51af9d7dda567262"
+ integrity sha512-ho+dAEhC2aRnff2JCA0SAK7V2R62zJd/7dmtoe7MHcso4C2mS+vZjn1Pb1pCVZvJs1mgsvv5+7sT+m3Bysb6eg==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-replace-supers" "^7.1.0"
+ "@babel/helper-replace-supers" "^7.7.4"
"@babel/plugin-transform-parameters@^7.0.0":
- version "7.3.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.3.3.tgz#3a873e07114e1a5bee17d04815662c8317f10e30"
- integrity sha512-IrIP25VvXWu/VlBWTpsjGptpomtIkYrN/3aDp4UKm7xK6UxZY88kcJ1UwETbzHAlwN21MnNfwlar0u8y3KpiXw==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.4.tgz#da4555c97f39b51ac089d31c7380f03bca4075ce"
+ integrity sha512-VJwhVePWPa0DqE9vcfptaJSzNDKrWU/4FbYCjZERtmqEs05g3UMXnYMZoXja7JAJ7Y7sPZipwm/pGApZt7wHlw==
dependencies:
- "@babel/helper-call-delegate" "^7.1.0"
- "@babel/helper-get-function-arity" "^7.0.0"
+ "@babel/helper-call-delegate" "^7.7.4"
+ "@babel/helper-get-function-arity" "^7.7.4"
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-property-literals@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905"
- integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.7.4.tgz#2388d6505ef89b266103f450f9167e6bd73f98c2"
+ integrity sha512-MatJhlC4iHsIskWYyawl53KuHrt+kALSADLQQ/HkhTjX954fkxIEh4q5slL4oRAnsm/eDoZ4q0CIZpcqBuxhJQ==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-react-display-name@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0"
- integrity sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.7.4.tgz#9f2b80b14ebc97eef4a9b29b612c58ed9c0d10dd"
+ integrity sha512-sBbIvqYkthai0X0vkD2xsAwluBp+LtNHH+/V4a5ydifmTtb8KOVOlrMIk/MYmIc4uTYDnjZUHQildYNo36SRJw==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-react-jsx-source@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz#20c8c60f0140f5dd3cd63418d452801cf3f7180f"
- integrity sha512-A32OkKTp4i5U6aE88GwwcuV4HAprUgHcTq0sSafLxjr6AW0QahrCRCjxogkbbcdtpbXkuTOlgpjophCxb6sh5g==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.7.4.tgz#8994b1bf6014b133f5a46d3b7d1ee5f5e3e72c10"
+ integrity sha512-5ZU9FnPhqtHsOXxutRtXZAzoEJwDaP32QcobbMP1/qt7NYcsCNK8XgzJcJfoEr/ZnzVvUNInNjIW22Z6I8p9mg==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/plugin-syntax-jsx" "^7.2.0"
+ "@babel/plugin-syntax-jsx" "^7.7.4"
"@babel/plugin-transform-react-jsx@^7.0.0":
- version "7.3.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz#f2cab99026631c767e2745a5368b331cfe8f5290"
- integrity sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.7.4.tgz#d91205717fae4e2f84d020cd3057ec02a10f11da"
+ integrity sha512-LixU4BS95ZTEAZdPaIuyg/k8FiiqN9laQ0dMHB4MlpydHY53uQdWCUrwjLr5o6ilS6fAgZey4Q14XBjl5tL6xw==
dependencies:
- "@babel/helper-builder-react-jsx" "^7.3.0"
+ "@babel/helper-builder-react-jsx" "^7.7.4"
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/plugin-syntax-jsx" "^7.2.0"
+ "@babel/plugin-syntax-jsx" "^7.7.4"
"@babel/plugin-transform-regenerator@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1"
- integrity sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.4.tgz#d18eac0312a70152d7d914cbed2dc3999601cfc0"
+ integrity sha512-e7MWl5UJvmPEwFJTwkBlPmqixCtr9yAASBqff4ggXTNicZiwbF8Eefzm6NVgfiBp7JdAGItecnctKTgH44q2Jw==
dependencies:
- regenerator-transform "^0.13.3"
+ regenerator-transform "^0.14.0"
"@babel/plugin-transform-runtime@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz#566bc43f7d0aedc880eaddbd29168d0f248966ea"
- integrity sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.4.tgz#51fe458c1c1fa98a8b07934f4ed38b6cd62177a6"
+ integrity sha512-O8kSkS5fP74Ad/8pfsCMGa8sBRdLxYoSReaARRNSz3FbFQj3z/QUvoUmJ28gn9BO93YfnXc3j+Xyaqe8cKDNBQ==
dependencies:
- "@babel/helper-module-imports" "^7.0.0"
+ "@babel/helper-module-imports" "^7.7.4"
"@babel/helper-plugin-utils" "^7.0.0"
resolve "^1.8.1"
semver "^5.5.1"
"@babel/plugin-transform-shorthand-properties@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0"
- integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.7.4.tgz#74a0a9b2f6d67a684c6fbfd5f0458eb7ba99891e"
+ integrity sha512-q+suddWRfIcnyG5YiDP58sT65AJDZSUhXQDZE3r04AuqD6d/XLaQPPXSBzP2zGerkgBivqtQm9XKGLuHqBID6Q==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-spread@^7.0.0":
- version "7.2.2"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406"
- integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.7.4.tgz#aa673b356fe6b7e70d69b6e33a17fef641008578"
+ integrity sha512-8OSs0FLe5/80cndziPlg4R0K6HcWSM0zyNhHhLsmw/Nc5MaA49cAsnoJ/t/YZf8qkG7fD+UjTRaApVDB526d7Q==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-sticky-regex@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1"
- integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.7.4.tgz#ffb68c05090c30732076b1285dc1401b404a123c"
+ integrity sha512-Ls2NASyL6qtVe1H1hXts9yuEeONV2TJZmplLONkMPUG158CtmnrzW5Q5teibM5UVOFjG0D3IC5mzXR6pPpUY7A==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/helper-regex" "^7.0.0"
"@babel/plugin-transform-template-literals@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz#d87ed01b8eaac7a92473f608c97c089de2ba1e5b"
- integrity sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.7.4.tgz#1eb6411736dd3fe87dbd20cc6668e5121c17d604"
+ integrity sha512-sA+KxLwF3QwGj5abMHkHgshp9+rRz+oY9uoRil4CyLtgEuE/88dpkeWgNk5qKVsJE9iSfly3nvHapdRiIS2wnQ==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.0.0"
+ "@babel/helper-annotate-as-pure" "^7.7.4"
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-typescript@^7.0.0":
- version "7.3.2"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.3.2.tgz#59a7227163e55738842f043d9e5bd7c040447d96"
- integrity sha512-Pvco0x0ZSCnexJnshMfaibQ5hnK8aUHSvjCQhC1JR8eeg+iBwt0AtCO7gWxJ358zZevuf9wPSO5rv+WJcbHPXQ==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.7.4.tgz#2974fd05f4e85c695acaf497f432342de9fc0636"
+ integrity sha512-X8e3tcPEKnwwPVG+vP/vSqEShkwODOEeyQGod82qrIuidwIrfnsGn11qPM1jBLF4MqguTXXYzm58d0dY+/wdpg==
dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.7.4"
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/plugin-syntax-typescript" "^7.2.0"
+ "@babel/plugin-syntax-typescript" "^7.7.4"
"@babel/plugin-transform-unicode-regex@^7.0.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz#4eb8db16f972f8abb5062c161b8b115546ade08b"
- integrity sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.4.tgz#a3c0f65b117c4c81c5b6484f2a5e7b95346b83ae"
+ integrity sha512-N77UUIV+WCvE+5yHw+oks3m18/umd7y392Zv7mYTpFqHtkpcc+QUz+gLJNTWVlWROIWeLqY0f3OjZxV5TcXnRw==
dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.7.4"
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-regex" "^7.0.0"
- regexpu-core "^4.1.3"
"@babel/register@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.0.0.tgz#fa634bae1bfa429f60615b754fc1f1d745edd827"
- integrity sha512-f/+CRmaCe7rVEvcvPvxeA8j5aJhHC3aJie7YuqcMDhUOuyWLA7J/aNrTaHIzoWPEhpHA54mec4Mm8fv8KBlv3g==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.7.4.tgz#45a4956471a9df3b012b747f5781cc084ee8f128"
+ integrity sha512-/fmONZqL6ZMl9KJUYajetCrID6m0xmL4odX7v+Xvoxcv0DdbP/oO0TWIeLUCHqczQ6L6njDMqmqHFy2cp3FFsA==
dependencies:
- core-js "^2.5.7"
- find-cache-dir "^1.0.0"
- home-or-tmp "^3.0.0"
- lodash "^4.17.10"
- mkdirp "^0.5.1"
+ find-cache-dir "^2.0.0"
+ lodash "^4.17.13"
+ make-dir "^2.1.0"
pirates "^4.0.0"
- source-map-support "^0.5.9"
+ source-map-support "^0.5.16"
-"@babel/runtime@^7.0.0":
- version "7.3.1"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.1.tgz#574b03e8e8a9898eaf4a872a92ea20b7846f6f2a"
- integrity sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA==
- dependencies:
- regenerator-runtime "^0.12.0"
-
-"@babel/template@^7.0.0", "@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2":
- version "7.2.2"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907"
- integrity sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.6.2":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.4.tgz#b23a856751e4bf099262f867767889c0e3fe175b"
+ integrity sha512-r24eVUUr0QqNZa+qrImUk8fn5SPhHq+IfYvIoIMg0do3GdK9sMdiLKP3GYVVaxpPKORgm8KRKaNTEhAjgIpLMw==
dependencies:
- "@babel/code-frame" "^7.0.0"
- "@babel/parser" "^7.2.2"
- "@babel/types" "^7.2.2"
+ regenerator-runtime "^0.13.2"
-"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.2.2", "@babel/traverse@^7.2.3":
- version "7.2.3"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8"
- integrity sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==
+"@babel/template@^7.0.0", "@babel/template@^7.4.0", "@babel/template@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.4.tgz#428a7d9eecffe27deac0a98e23bf8e3675d2a77b"
+ integrity sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==
dependencies:
"@babel/code-frame" "^7.0.0"
- "@babel/generator" "^7.2.2"
- "@babel/helper-function-name" "^7.1.0"
- "@babel/helper-split-export-declaration" "^7.0.0"
- "@babel/parser" "^7.2.3"
- "@babel/types" "^7.2.2"
+ "@babel/parser" "^7.7.4"
+ "@babel/types" "^7.7.4"
+
+"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558"
+ integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==
+ dependencies:
+ "@babel/code-frame" "^7.5.5"
+ "@babel/generator" "^7.7.4"
+ "@babel/helper-function-name" "^7.7.4"
+ "@babel/helper-split-export-declaration" "^7.7.4"
+ "@babel/parser" "^7.7.4"
+ "@babel/types" "^7.7.4"
debug "^4.1.0"
globals "^11.1.0"
- lodash "^4.17.10"
+ lodash "^4.17.13"
-"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.2.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3":
- version "7.3.3"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.3.3.tgz#6c44d1cdac2a7625b624216657d5bc6c107ab436"
- integrity sha512-2tACZ80Wg09UnPg5uGAOUvvInaqLk3l/IAhQzlxLQOIXacr6bMsra5SH6AWw/hIDRCSbCdHP2KzSOD+cT7TzMQ==
+"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193"
+ integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==
dependencies:
esutils "^2.0.2"
- lodash "^4.17.11"
+ lodash "^4.17.13"
to-fast-properties "^2.0.0"
+"@cnakazawa/watch@^1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef"
+ integrity sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==
+ dependencies:
+ exec-sh "^0.3.2"
+ minimist "^1.2.0"
+
+"@jest/console@^24.7.1", "@jest/console@^24.9.0":
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0"
+ integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==
+ dependencies:
+ "@jest/source-map" "^24.9.0"
+ chalk "^2.0.1"
+ slash "^2.0.0"
+
+"@jest/core@^24.9.0":
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4"
+ integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==
+ dependencies:
+ "@jest/console" "^24.7.1"
+ "@jest/reporters" "^24.9.0"
+ "@jest/test-result" "^24.9.0"
+ "@jest/transform" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ ansi-escapes "^3.0.0"
+ chalk "^2.0.1"
+ exit "^0.1.2"
+ graceful-fs "^4.1.15"
+ jest-changed-files "^24.9.0"
+ jest-config "^24.9.0"
+ jest-haste-map "^24.9.0"
+ jest-message-util "^24.9.0"
+ jest-regex-util "^24.3.0"
+ jest-resolve "^24.9.0"
+ jest-resolve-dependencies "^24.9.0"
+ jest-runner "^24.9.0"
+ jest-runtime "^24.9.0"
+ jest-snapshot "^24.9.0"
+ jest-util "^24.9.0"
+ jest-validate "^24.9.0"
+ jest-watcher "^24.9.0"
+ micromatch "^3.1.10"
+ p-each-series "^1.0.0"
+ realpath-native "^1.1.0"
+ rimraf "^2.5.4"
+ slash "^2.0.0"
+ strip-ansi "^5.0.0"
+
+"@jest/environment@^24.9.0":
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18"
+ integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==
+ dependencies:
+ "@jest/fake-timers" "^24.9.0"
+ "@jest/transform" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ jest-mock "^24.9.0"
+
+"@jest/fake-timers@^24.9.0":
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93"
+ integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==
+ dependencies:
+ "@jest/types" "^24.9.0"
+ jest-message-util "^24.9.0"
+ jest-mock "^24.9.0"
+
+"@jest/reporters@^24.9.0":
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43"
+ integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==
+ dependencies:
+ "@jest/environment" "^24.9.0"
+ "@jest/test-result" "^24.9.0"
+ "@jest/transform" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ chalk "^2.0.1"
+ exit "^0.1.2"
+ glob "^7.1.2"
+ istanbul-lib-coverage "^2.0.2"
+ istanbul-lib-instrument "^3.0.1"
+ istanbul-lib-report "^2.0.4"
+ istanbul-lib-source-maps "^3.0.1"
+ istanbul-reports "^2.2.6"
+ jest-haste-map "^24.9.0"
+ jest-resolve "^24.9.0"
+ jest-runtime "^24.9.0"
+ jest-util "^24.9.0"
+ jest-worker "^24.6.0"
+ node-notifier "^5.4.2"
+ slash "^2.0.0"
+ source-map "^0.6.0"
+ string-length "^2.0.0"
+
+"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0":
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714"
+ integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==
+ dependencies:
+ callsites "^3.0.0"
+ graceful-fs "^4.1.15"
+ source-map "^0.6.0"
+
+"@jest/test-result@^24.9.0":
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca"
+ integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==
+ dependencies:
+ "@jest/console" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ "@types/istanbul-lib-coverage" "^2.0.0"
+
+"@jest/test-sequencer@^24.9.0":
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31"
+ integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==
+ dependencies:
+ "@jest/test-result" "^24.9.0"
+ jest-haste-map "^24.9.0"
+ jest-runner "^24.9.0"
+ jest-runtime "^24.9.0"
+
+"@jest/transform@^24.9.0":
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56"
+ integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==
+ dependencies:
+ "@babel/core" "^7.1.0"
+ "@jest/types" "^24.9.0"
+ babel-plugin-istanbul "^5.1.0"
+ chalk "^2.0.1"
+ convert-source-map "^1.4.0"
+ fast-json-stable-stringify "^2.0.0"
+ graceful-fs "^4.1.15"
+ jest-haste-map "^24.9.0"
+ jest-regex-util "^24.9.0"
+ jest-util "^24.9.0"
+ micromatch "^3.1.10"
+ pirates "^4.0.1"
+ realpath-native "^1.1.0"
+ slash "^2.0.0"
+ source-map "^0.6.1"
+ write-file-atomic "2.4.1"
+
+"@jest/types@^24.9.0":
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59"
+ integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==
+ dependencies:
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ "@types/istanbul-reports" "^1.1.1"
+ "@types/yargs" "^13.0.0"
+
"@react-native-community/cli@^1.2.1":
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-1.5.1.tgz#21a93266ecf1885990ac86680a369aa3ff432973"
- integrity sha512-HFCYxI6WW3SoayrOSdhYxor5CaF/SBp7W73TyvTRRNAqQdA9/NX9wMZly+UpmFQkQFkiLvgc2yqS5vT918XXUw==
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-1.12.0.tgz#f4cbc2204af63a87d5736d2fa6a018c1fd5efd44"
+ integrity sha512-GAs4JgVP8QkEYeZks/T7cCrBuwFJKxd9ksBLRdQ058uvLGkOEeS4g3y4GsVM/9C1zat5h6Z6QwU0h/hj7G3tzg==
dependencies:
chalk "^1.1.1"
commander "^2.19.0"
@@ -687,10 +850,80 @@
xcode "^2.0.0"
xmldoc "^0.4.0"
+"@types/babel__core@^7.1.0":
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.3.tgz#e441ea7df63cd080dfcd02ab199e6d16a735fc30"
+ integrity sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==
+ dependencies:
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+ "@types/babel__generator" "*"
+ "@types/babel__template" "*"
+ "@types/babel__traverse" "*"
+
+"@types/babel__generator@*":
+ version "7.6.0"
+ resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.0.tgz#f1ec1c104d1bb463556ecb724018ab788d0c172a"
+ integrity sha512-c1mZUu4up5cp9KROs/QAw0gTeHrw/x7m52LcnvMxxOZ03DmLwPV0MlGmlgzV3cnSdjhJOZsj7E7FHeioai+egw==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@types/babel__template@*":
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307"
+ integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==
+ dependencies:
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6":
+ version "7.0.8"
+ resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.8.tgz#479a4ee3e291a403a1096106013ec22cf9b64012"
+ integrity sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw==
+ dependencies:
+ "@babel/types" "^7.3.0"
+
+"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff"
+ integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==
+
+"@types/istanbul-lib-report@*":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c"
+ integrity sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==
+ dependencies:
+ "@types/istanbul-lib-coverage" "*"
+
+"@types/istanbul-reports@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a"
+ integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==
+ dependencies:
+ "@types/istanbul-lib-coverage" "*"
+ "@types/istanbul-lib-report" "*"
+
+"@types/stack-utils@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
+ integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==
+
+"@types/yargs-parser@*":
+ version "13.1.0"
+ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-13.1.0.tgz#c563aa192f39350a1d18da36c5a8da382bbd8228"
+ integrity sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==
+
+"@types/yargs@^13.0.0":
+ version "13.0.3"
+ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.3.tgz#76482af3981d4412d65371a318f992d33464a380"
+ integrity sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==
+ dependencies:
+ "@types/yargs-parser" "*"
+
abab@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f"
- integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a"
+ integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==
abbrev@1:
version "1.1.1"
@@ -702,26 +935,26 @@ absolute-path@^0.0.0:
resolved "https://registry.yarnpkg.com/absolute-path/-/absolute-path-0.0.0.tgz#a78762fbdadfb5297be99b15d35a785b2f095bf7"
integrity sha1-p4di+9rftSl76ZsV01p4Wy8JW/c=
-accepts@~1.3.3, accepts@~1.3.5:
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
- integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I=
+accepts@~1.3.5, accepts@~1.3.7:
+ version "1.3.7"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
+ integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
dependencies:
- mime-types "~2.1.18"
- negotiator "0.6.1"
+ mime-types "~2.1.24"
+ negotiator "0.6.2"
acorn-globals@^4.1.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz#e3b6f8da3c1552a95ae627571f7dd6923bb54103"
- integrity sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7"
+ integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==
dependencies:
acorn "^6.0.1"
acorn-walk "^6.0.1"
acorn-walk@^6.0.1:
- version "6.1.1"
- resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913"
- integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c"
+ integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==
acorn@^5.5.3:
version "5.7.3"
@@ -729,14 +962,14 @@ acorn@^5.5.3:
integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
acorn@^6.0.1:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.0.tgz#b0a3be31752c97a0f7013c5f4903b71a05db6818"
- integrity sha512-MW/FjM+IvU9CgBzjO3UIPCE2pyEwUsoFl+VGdczOPEdxfGFjuKny/gN54mOuX7Qxmb9Rg9MCn2oKiSUeW+pjrw==
+ version "6.4.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784"
+ integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==
ajv@^6.5.5:
- version "6.9.2"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.9.2.tgz#4927adb83e7f48e5a32b45729744c71ec39c9c7b"
- integrity sha512-4UFy0/LgDo7Oa/+wOAlj44tp9K78u38E5/359eSrqEp1Z5PdVfimCcs7SluXMP755RUQu6d2b4AvF0R1C9RZjg==
+ version "6.10.2"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52"
+ integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==
dependencies:
fast-deep-equal "^2.0.1"
fast-json-stable-stringify "^2.0.0"
@@ -786,10 +1019,10 @@ ansi-regex@^3.0.0:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
-ansi-regex@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9"
- integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==
+ansi-regex@^4.0.0, ansi-regex@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
+ integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
ansi-styles@^2.2.1:
version "2.2.1"
@@ -821,13 +1054,6 @@ anymatch@^2.0.0:
micromatch "^3.1.4"
normalize-path "^2.1.1"
-append-transform@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab"
- integrity sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==
- dependencies:
- default-require-extensions "^2.0.0"
-
aproba@^1.0.3:
version "1.2.0"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
@@ -918,11 +1144,6 @@ array-unique@^0.3.2:
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
-arrify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
- integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
-
art@^0.10.0:
version "0.10.3"
resolved "https://registry.yarnpkg.com/art/-/art-0.10.3.tgz#b01d84a968ccce6208df55a733838c96caeeaea2"
@@ -956,16 +1177,16 @@ astral-regex@^1.0.0:
integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
async-limiter@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
- integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
+ integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
-async@^2.4.0, async@^2.5.0, async@^2.6.1:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381"
- integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==
+async@^2.4.0:
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
+ integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
dependencies:
- lodash "^4.17.11"
+ lodash "^4.17.14"
asynckit@^0.4.0:
version "0.4.0"
@@ -983,48 +1204,56 @@ aws-sign2@~0.7.0:
integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
aws4@^1.8.0:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
- integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
-
-babel-core@^7.0.0-bridge.0:
- version "7.0.0-bridge.0"
- resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece"
- integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==
-
-babel-jest@24.1.0, babel-jest@^24.1.0:
- version "24.1.0"
- resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.1.0.tgz#441e23ef75ded3bd547e300ac3194cef87b55190"
- integrity sha512-MLcagnVrO9ybQGLEfZUqnOzv36iQzU7Bj4elm39vCukumLVSfoX+tRy3/jW7lUKc7XdpRmB/jech6L/UCsSZjw==
- dependencies:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.0.tgz#24390e6ad61386b0a747265754d2a17219de862c"
+ integrity sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A==
+
+babel-jest@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54"
+ integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==
+ dependencies:
+ "@jest/transform" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ "@types/babel__core" "^7.1.0"
babel-plugin-istanbul "^5.1.0"
- babel-preset-jest "^24.1.0"
+ babel-preset-jest "^24.9.0"
chalk "^2.4.2"
slash "^2.0.0"
+babel-plugin-dynamic-import-node@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f"
+ integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==
+ dependencies:
+ object.assign "^4.1.0"
+
babel-plugin-istanbul@^5.1.0:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.1.tgz#7981590f1956d75d67630ba46f0c22493588c893"
- integrity sha512-RNNVv2lsHAXJQsEJ5jonQwrJVWK8AcZpG1oxhnjCUaAjL7xahYLANhPUZbzEQHjKy1NMYUwn+0NPKQc8iSY4xQ==
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854"
+ integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==
dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
find-up "^3.0.0"
- istanbul-lib-instrument "^3.0.0"
- test-exclude "^5.0.0"
+ istanbul-lib-instrument "^3.3.0"
+ test-exclude "^5.2.3"
-babel-plugin-jest-hoist@^24.1.0:
- version "24.1.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.1.0.tgz#dfecc491fb15e2668abbd690a697a8fd1411a7f8"
- integrity sha512-gljYrZz8w1b6fJzKcsfKsipSru2DU2DmQ39aB6nV3xQ0DDv3zpIzKGortA5gknrhNnPN8DweaEgrnZdmbGmhnw==
+babel-plugin-jest-hoist@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756"
+ integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==
+ dependencies:
+ "@types/babel__traverse" "^7.0.6"
babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0:
version "7.0.0-beta.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf"
integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==
-babel-preset-fbjs@^3.0.0, babel-preset-fbjs@^3.0.1:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.2.0.tgz#c0e6347d3e0379ed84b3c2434d3467567aa05297"
- integrity sha512-5Jo+JeWiVz2wHUUyAlvb/sSYnXNig9r+HqGAOSfh5Fzxp7SnAaR/tEGRJ1ZX7C77kfk82658w6R5Z+uPATTD9g==
+babel-preset-fbjs@^3.0.1, babel-preset-fbjs@^3.2.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.3.0.tgz#a6024764ea86c8e06a22d794ca8b69534d263541"
+ integrity sha512-7QTLTCd2gwB2qGoi5epSULMHugSVgpcVt5YAeiFO9ABLrutDQzKfGwzxgZHLpugq8qMdg/DhRZDZ5CLKxBkEbw==
dependencies:
"@babel/plugin-proposal-class-properties" "^7.0.0"
"@babel/plugin-proposal-object-rest-spread" "^7.0.0"
@@ -1054,13 +1283,13 @@ babel-preset-fbjs@^3.0.0, babel-preset-fbjs@^3.0.1:
"@babel/plugin-transform-template-literals" "^7.0.0"
babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0"
-babel-preset-jest@^24.1.0:
- version "24.1.0"
- resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.1.0.tgz#83bc564fdcd4903641af65ec63f2f5de6b04132e"
- integrity sha512-FfNLDxFWsNX9lUmtwY7NheGlANnagvxq8LZdl5PKnVG3umP+S/g0XbVBfwtA4Ai3Ri/IMkWabBz3Tyk9wdspcw==
+babel-preset-jest@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc"
+ integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==
dependencies:
"@babel/plugin-syntax-object-rest-spread" "^7.0.0"
- babel-plugin-jest-hoist "^24.1.0"
+ babel-plugin-jest-hoist "^24.9.0"
balanced-match@^1.0.0:
version "1.0.0"
@@ -1068,9 +1297,9 @@ balanced-match@^1.0.0:
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
base64-js@^1.1.2, base64-js@^1.2.3:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
- integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
+ integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==
base@^0.11.1:
version "0.11.2"
@@ -1099,24 +1328,24 @@ bcrypt-pbkdf@^1.0.0:
dependencies:
tweetnacl "^0.14.3"
-big-integer@^1.6.7:
- version "1.6.42"
- resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.42.tgz#91623ae5ceeff9a47416c56c9440a66f12f534f1"
- integrity sha512-3UQFKcRMx+5Z+IK5vYTMYK2jzLRJkt+XqyDdacgWgtMjjuifKpKTFneJLEgeBElOE2/lXZ1LcMcb5s8pwG2U8Q==
+big-integer@^1.6.44:
+ version "1.6.48"
+ resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e"
+ integrity sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==
-bplist-creator@0.0.7:
- version "0.0.7"
- resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.0.7.tgz#37df1536092824b87c42f957b01344117372ae45"
- integrity sha1-N98VNgkoJLh8QvlXsBNEEXNyrkU=
+bplist-creator@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.0.8.tgz#56b2a6e79e9aec3fc33bf831d09347d73794e79c"
+ integrity sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==
dependencies:
stream-buffers "~2.2.0"
-bplist-parser@0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.1.1.tgz#d60d5dcc20cba6dc7e1f299b35d3e1f95dafbae6"
- integrity sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=
+bplist-parser@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e"
+ integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==
dependencies:
- big-integer "^1.6.7"
+ big-integer "^1.6.44"
brace-expansion@^1.1.7:
version "1.1.11"
@@ -1164,9 +1393,9 @@ browser-resolve@^1.11.3:
resolve "1.1.7"
bser@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719"
- integrity sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
+ integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==
dependencies:
node-int64 "^0.4.0"
@@ -1220,19 +1449,19 @@ callsites@^2.0.0:
integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
callsites@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3"
- integrity sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
camelcase@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
-camelcase@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42"
- integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==
+camelcase@^5.0.0, camelcase@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
capture-exit@^1.2.0:
version "1.2.0"
@@ -1241,6 +1470,13 @@ capture-exit@^1.2.0:
dependencies:
rsvp "^3.3.3"
+capture-exit@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4"
+ integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==
+ dependencies:
+ rsvp "^4.8.4"
+
caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
@@ -1272,9 +1508,9 @@ chardet@^0.4.0:
integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=
chownr@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
- integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142"
+ integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==
ci-info@^2.0.0:
version "2.0.0"
@@ -1312,14 +1548,14 @@ cliui@^3.2.0:
strip-ansi "^3.0.1"
wrap-ansi "^2.0.0"
-cliui@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
- integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==
+cliui@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
+ integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
dependencies:
- string-width "^2.1.1"
- strip-ansi "^4.0.0"
- wrap-ansi "^2.0.0"
+ string-width "^3.1.0"
+ strip-ansi "^5.2.0"
+ wrap-ansi "^5.1.0"
co@^4.6.0:
version "4.6.0"
@@ -1357,59 +1593,49 @@ color-support@^1.1.3:
integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
combined-stream@^1.0.6, combined-stream@~1.0.6:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828"
- integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
dependencies:
delayed-stream "~1.0.0"
-commander@^2.19.0, commander@^2.9.0:
- version "2.19.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
- integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
+commander@^2.19.0, commander@^2.9.0, commander@~2.20.3:
+ version "2.20.3"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
commander@~2.13.0:
version "2.13.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==
-commander@~2.17.1:
- version "2.17.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
- integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
-
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
-compare-versions@^3.2.1:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.4.0.tgz#e0747df5c9cb7f054d6d3dc3e1dbc444f9e92b26"
- integrity sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg==
-
component-emitter@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
- integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
+ integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
-compressible@~2.0.14:
- version "2.0.16"
- resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.16.tgz#a49bf9858f3821b64ce1be0296afc7380466a77f"
- integrity sha512-JQfEOdnI7dASwCuSPWIeVYwc/zMsu/+tRhoUvEfXz2gxOA2DNjmG5vhtFdBlhWPPGo+RdT9S3tgc/uH5qgDiiA==
+compressible@~2.0.16:
+ version "2.0.17"
+ resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1"
+ integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==
dependencies:
- mime-db ">= 1.38.0 < 2"
+ mime-db ">= 1.40.0 < 2"
compression@^1.7.1:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db"
- integrity sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==
+ version "1.7.4"
+ resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
+ integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
dependencies:
accepts "~1.3.5"
bytes "3.0.0"
- compressible "~2.0.14"
+ compressible "~2.0.16"
debug "2.6.9"
- on-headers "~1.0.1"
+ on-headers "~1.0.2"
safe-buffer "5.1.2"
vary "~1.1.2"
@@ -1429,13 +1655,13 @@ concat-stream@^1.6.0:
typedarray "^0.0.6"
connect@^3.6.5:
- version "3.6.6"
- resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524"
- integrity sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8"
+ integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==
dependencies:
debug "2.6.9"
- finalhandler "1.1.0"
- parseurl "~1.3.2"
+ finalhandler "1.1.2"
+ parseurl "~1.3.3"
utils-merge "1.0.1"
console-control-strings@^1.0.0, console-control-strings@~1.1.0:
@@ -1443,10 +1669,10 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0:
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
-convert-source-map@^1.1.0, convert-source-map@^1.4.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20"
- integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==
+convert-source-map@^1.4.0, convert-source-map@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
+ integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
dependencies:
safe-buffer "~5.1.1"
@@ -1460,10 +1686,10 @@ core-js@^1.0.0:
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=
-core-js@^2.2.2, core-js@^2.4.1, core-js@^2.5.7:
- version "2.6.5"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895"
- integrity sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==
+core-js@^2.2.2, core-js@^2.4.1:
+ version "2.6.10"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f"
+ integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==
core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
@@ -1471,14 +1697,13 @@ core-util-is@1.0.2, core-util-is@~1.0.0:
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
cosmiconfig@^5.0.5:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.1.0.tgz#6c5c35e97f37f985061cdf653f114784231185cf"
- integrity sha512-kCNPvthka8gvLtzAxQXvWo4FxqRB+ftRZyPZNuab5ngvM9Y7yw7hbEysglptLgpkGX9nAOKTBVkHUAe8xtYR6Q==
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
+ integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
dependencies:
import-fresh "^2.0.0"
is-directory "^0.3.1"
- js-yaml "^3.9.0"
- lodash.get "^4.4.2"
+ js-yaml "^3.13.1"
parse-json "^4.0.0"
create-react-class@^15.6.3:
@@ -1511,14 +1736,14 @@ cross-spawn@^6.0.0:
which "^1.2.9"
cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
- version "0.3.6"
- resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad"
- integrity sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==
+ version "0.3.8"
+ resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
+ integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
cssstyle@^1.0.0:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.2.1.tgz#3aceb2759eaf514ac1a21628d723d6043a819495"
- integrity sha512-7DYm8qe+gPx/h77QlCyFmX80+fGaE/6A/Ekl0zaszYOubvySO2saYFdQ78P29D0UsULxFKCetDGNaNRUdSF+2A==
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1"
+ integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==
dependencies:
cssom "0.3.x"
@@ -1538,13 +1763,20 @@ data-urls@^1.0.0:
whatwg-mimetype "^2.2.0"
whatwg-url "^7.0.0"
-debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3:
+debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies:
ms "2.0.0"
+debug@^3.2.6:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
+ integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
+ dependencies:
+ ms "^2.1.1"
+
debug@^4.1.0, debug@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
@@ -1572,14 +1804,7 @@ deep-is@~0.1.3:
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
-default-require-extensions@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7"
- integrity sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=
- dependencies:
- strip-bom "^3.0.0"
-
-define-properties@^1.1.2:
+define-properties@^1.1.2, define-properties@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
@@ -1643,10 +1868,10 @@ detect-newline@^2.1.0:
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=
-diff-sequences@^24.0.0:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.0.0.tgz#cdf8e27ed20d8b8d3caccb4e0c0d8fe31a173013"
- integrity sha512-46OkIuVGBBnrC0soO/4LHu5LHGHx0uhP65OVz8XOrAJpqiCB2aVIuESvjI1F9oqebuvY8lekS1pt6TN7vt7qsw==
+diff-sequences@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5"
+ integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==
dom-walk@^0.1.0:
version "0.1.1"
@@ -1673,7 +1898,12 @@ ee-first@1.1.1:
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
-encodeurl@~1.0.1, encodeurl@~1.0.2:
+emoji-regex@^7.0.1:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
+ integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+
+encodeurl@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
@@ -1686,9 +1916,9 @@ encoding@^0.1.11:
iconv-lite "~0.4.13"
end-of-stream@^1.1.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
- integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
dependencies:
once "^1.4.0"
@@ -1705,29 +1935,33 @@ error-ex@^1.2.0, error-ex@^1.3.1:
is-arrayish "^0.2.1"
errorhandler@^1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.5.0.tgz#eaba64ca5d542a311ac945f582defc336165d9f4"
- integrity sha1-6rpkyl1UKjEayUX1gt78M2Fl2fQ=
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.5.1.tgz#b9ba5d17cf90744cd1e851357a6e75bf806a9a91"
+ integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==
dependencies:
- accepts "~1.3.3"
+ accepts "~1.3.7"
escape-html "~1.0.3"
es-abstract@^1.5.1:
- version "1.13.0"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
- integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
+ version "1.16.2"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.2.tgz#4e874331645e9925edef141e74fc4bd144669d34"
+ integrity sha512-jYo/J8XU2emLXl3OLwfwtuFfuF2w6DYPs+xy9ZfVyPkDcrauu6LYrw/q2TyCtrbc/KUdCiC5e9UajRhgNkVopA==
dependencies:
- es-to-primitive "^1.2.0"
+ es-to-primitive "^1.2.1"
function-bind "^1.1.1"
has "^1.0.3"
+ has-symbols "^1.0.1"
is-callable "^1.1.4"
is-regex "^1.0.4"
- object-keys "^1.0.12"
+ object-inspect "^1.7.0"
+ object-keys "^1.1.1"
+ string.prototype.trimleft "^2.1.0"
+ string.prototype.trimright "^2.1.0"
-es-to-primitive@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
- integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
dependencies:
is-callable "^1.1.4"
is-date-object "^1.0.1"
@@ -1744,9 +1978,9 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
escodegen@^1.9.1:
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510"
- integrity sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541"
+ integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==
dependencies:
esprima "^3.1.3"
estraverse "^4.2.0"
@@ -1766,14 +2000,14 @@ esprima@^4.0.0:
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
estraverse@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
- integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
esutils@^2.0.0, esutils@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
- integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
etag@~1.8.1:
version "1.8.1"
@@ -1786,9 +2020,9 @@ event-target-shim@^1.0.5:
integrity sha1-qG5e5r2qFgVEddp5fM3fDFVphJE=
eventemitter3@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163"
- integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
+ integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==
exec-sh@^0.2.0:
version "0.2.2"
@@ -1797,6 +2031,11 @@ exec-sh@^0.2.0:
dependencies:
merge "^1.2.0"
+exec-sh@^0.3.2:
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5"
+ integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==
+
execa@^0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
@@ -1855,16 +2094,17 @@ expand-range@^1.8.1:
dependencies:
fill-range "^2.1.0"
-expect@^24.1.0:
- version "24.1.0"
- resolved "https://registry.yarnpkg.com/expect/-/expect-24.1.0.tgz#88e73301c4c785cde5f16da130ab407bdaf8c0f2"
- integrity sha512-lVcAPhaYkQcIyMS+F8RVwzbm1jro20IG8OkvxQ6f1JfqhVZyyudCwYogQ7wnktlf14iF3ii7ArIUO/mqvrW9Gw==
+expect@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca"
+ integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==
dependencies:
+ "@jest/types" "^24.9.0"
ansi-styles "^3.2.0"
- jest-get-type "^24.0.0"
- jest-matcher-utils "^24.0.0"
- jest-message-util "^24.0.0"
- jest-regex-util "^24.0.0"
+ jest-get-type "^24.9.0"
+ jest-matcher-utils "^24.9.0"
+ jest-message-util "^24.9.0"
+ jest-regex-util "^24.9.0"
extend-shallow@^1.1.2:
version "1.1.4"
@@ -1953,7 +2193,7 @@ fast-json-stable-stringify@^2.0.0:
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
-fast-levenshtein@~2.0.4:
+fast-levenshtein@~2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
@@ -1971,13 +2211,13 @@ fbjs-css-vars@^1.0.0:
integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==
fbjs-scripts@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/fbjs-scripts/-/fbjs-scripts-1.0.1.tgz#7d8d09d76e83308bf3b1fc7b4c9c6fd081c5ef64"
- integrity sha512-x8bfX7k0z5B24Ue0YqjZq/2QxxaKZUNbkGdX//zbQDElMJFqBRrvRi8O3qds7UNNzs78jYqIYCS32Sk/wu5UJg==
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/fbjs-scripts/-/fbjs-scripts-1.2.0.tgz#069a0c0634242d10031c6460ef1fccefcdae8b27"
+ integrity sha512-5krZ8T0Bf8uky0abPoCLrfa7Orxd8UH4Qq8hRUF2RZYNMu+FmEOrBc7Ib3YVONmxTXTlLAvyrrdrVmksDb2OqQ==
dependencies:
"@babel/core" "^7.0.0"
ansi-colors "^1.0.1"
- babel-preset-fbjs "^3.0.0"
+ babel-preset-fbjs "^3.2.0"
core-js "^2.4.1"
cross-spawn "^5.1.0"
fancy-log "^1.3.2"
@@ -2025,14 +2265,6 @@ filename-regex@^2.0.0:
resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=
-fileset@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0"
- integrity sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=
- dependencies:
- glob "^7.0.3"
- minimatch "^3.0.3"
-
fill-range@^2.1.0:
version "2.2.4"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565"
@@ -2054,29 +2286,29 @@ fill-range@^4.0.0:
repeat-string "^1.6.1"
to-regex-range "^2.1.0"
-finalhandler@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5"
- integrity sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=
+finalhandler@1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
+ integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
dependencies:
debug "2.6.9"
- encodeurl "~1.0.1"
+ encodeurl "~1.0.2"
escape-html "~1.0.3"
on-finished "~2.3.0"
- parseurl "~1.3.2"
- statuses "~1.3.1"
+ parseurl "~1.3.3"
+ statuses "~1.5.0"
unpipe "~1.0.0"
-find-cache-dir@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f"
- integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=
+find-cache-dir@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
+ integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
dependencies:
commondir "^1.0.1"
- make-dir "^1.0.0"
- pkg-dir "^2.0.0"
+ make-dir "^2.0.0"
+ pkg-dir "^3.0.0"
-find-up@^2.0.0, find-up@^2.1.0:
+find-up@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
@@ -2147,24 +2379,24 @@ fs-extra@^7.0.1:
universalify "^0.1.0"
fs-minipass@^1.2.5:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
- integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
+ integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==
dependencies:
- minipass "^2.2.1"
+ minipass "^2.6.0"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
-fsevents@^1.2.3:
- version "1.2.7"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4"
- integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==
+fsevents@^1.2.3, fsevents@^1.2.7:
+ version "1.2.9"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f"
+ integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==
dependencies:
- nan "^2.9.2"
- node-pre-gyp "^0.10.0"
+ nan "^2.12.1"
+ node-pre-gyp "^0.12.0"
function-bind@^1.1.1:
version "1.1.1"
@@ -2201,6 +2433,11 @@ get-caller-file@^1.0.1:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
+get-caller-file@^2.0.1:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
get-stream@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
@@ -2240,10 +2477,10 @@ glob-parent@^2.0.0:
dependencies:
is-glob "^2.0.0"
-glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3:
- version "7.1.3"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
- integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
+glob@^7.1.1, glob@^7.1.2, glob@^7.1.3:
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
+ integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
@@ -2253,34 +2490,34 @@ glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3:
path-is-absolute "^1.0.0"
global@^4.3.0:
- version "4.3.2"
- resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f"
- integrity sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406"
+ integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==
dependencies:
min-document "^2.19.0"
- process "~0.5.1"
+ process "^0.11.10"
globals@^11.1.0:
- version "11.11.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e"
- integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==
+ version "11.12.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9:
- version "4.1.15"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
- integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423"
+ integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==
growly@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
-handlebars@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.0.tgz#0d6a6f34ff1f63cecec8423aa4169827bf787c3a"
- integrity sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w==
+handlebars@^4.1.2:
+ version "4.5.3"
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482"
+ integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==
dependencies:
- async "^2.5.0"
+ neo-async "^2.6.0"
optimist "^0.6.1"
source-map "^0.6.1"
optionalDependencies:
@@ -2311,10 +2548,10 @@ has-flag@^3.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
-has-symbols@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
- integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
+has-symbols@^1.0.0, has-symbols@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
+ integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
has-unicode@^2.0.0:
version "2.0.1"
@@ -2359,15 +2596,10 @@ has@^1.0.1, has@^1.0.3:
dependencies:
function-bind "^1.1.1"
-home-or-tmp@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-3.0.0.tgz#57a8fe24cf33cdd524860a15821ddc25c86671fb"
- integrity sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=
-
hosted-git-info@^2.1.4:
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
- integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==
+ version "2.8.5"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c"
+ integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==
html-encoding-sniffer@^1.0.2:
version "1.0.2"
@@ -2376,15 +2608,16 @@ html-encoding-sniffer@^1.0.2:
dependencies:
whatwg-encoding "^1.0.1"
-http-errors@~1.6.2:
- version "1.6.3"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
- integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
+http-errors@~1.7.2:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
+ integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
dependencies:
depd "~1.1.2"
- inherits "2.0.3"
- setprototypeof "1.1.0"
- statuses ">= 1.4.0 < 2"
+ inherits "2.0.4"
+ setprototypeof "1.1.1"
+ statuses ">= 1.5.0 < 2"
+ toidentifier "1.0.0"
http-signature@~1.2.0:
version "1.2.0"
@@ -2403,9 +2636,9 @@ iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
safer-buffer ">= 2.1.2 < 3"
ignore-walk@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
- integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37"
+ integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==
dependencies:
minimatch "^3.0.4"
@@ -2443,10 +2676,10 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@2.0.3, inherits@^2.0.3, inherits@~2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
- integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
ini@~1.3.0:
version "1.3.5"
@@ -2485,11 +2718,6 @@ invert-kv@^1.0.0:
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
-invert-kv@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02"
- integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==
-
is-accessor-descriptor@^0.1.6:
version "0.1.6"
resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
@@ -2610,9 +2838,9 @@ is-fullwidth-code-point@^2.0.0:
integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
is-generator-fn@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.0.0.tgz#038c31b774709641bda678b1f06a4e3227c10b3e"
- integrity sha512-elzyIdM7iKoFHzcrndIqjYomImhxrFRnGP3galODoII4TB9gI7mZ+FnlLQmmjf27SxHS2gKEeyhX5/+YRS6H9g==
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
+ integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
is-glob@^2.0.0, is-glob@^2.0.1:
version "2.0.1"
@@ -2640,7 +2868,7 @@ is-number@^4.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==
-is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+is-plain-object@^2.0.3, is-plain-object@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
@@ -2675,11 +2903,11 @@ is-stream@^1.0.1, is-stream@^1.1.0:
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
is-symbol@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
- integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
+ integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
dependencies:
- has-symbols "^1.0.0"
+ has-symbols "^1.0.1"
is-typedarray@~1.0.0:
version "1.0.0"
@@ -2731,198 +2959,157 @@ isstream@~0.1.2:
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
-istanbul-api@^2.0.8:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-2.1.1.tgz#194b773f6d9cbc99a9258446848b0f988951c4d0"
- integrity sha512-kVmYrehiwyeBAk/wE71tW6emzLiHGjYIiDrc8sfyty4F8M02/lrgXSm+R1kXysmF20zArvmZXjlE/mg24TVPJw==
- dependencies:
- async "^2.6.1"
- compare-versions "^3.2.1"
- fileset "^2.0.3"
- istanbul-lib-coverage "^2.0.3"
- istanbul-lib-hook "^2.0.3"
- istanbul-lib-instrument "^3.1.0"
- istanbul-lib-report "^2.0.4"
- istanbul-lib-source-maps "^3.0.2"
- istanbul-reports "^2.1.1"
- js-yaml "^3.12.0"
- make-dir "^1.3.0"
- minimatch "^3.0.4"
- once "^1.4.0"
-
-istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#0b891e5ad42312c2b9488554f603795f9a2211ba"
- integrity sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw==
+istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49"
+ integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==
-istanbul-lib-hook@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.3.tgz#e0e581e461c611be5d0e5ef31c5f0109759916fb"
- integrity sha512-CLmEqwEhuCYtGcpNVJjLV1DQyVnIqavMLFHV/DP+np/g3qvdxu3gsPqYoJMXm15sN84xOlckFB3VNvRbf5yEgA==
+istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630"
+ integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==
dependencies:
- append-transform "^1.0.0"
-
-istanbul-lib-instrument@^3.0.0, istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz#a2b5484a7d445f1f311e93190813fa56dfb62971"
- integrity sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA==
- dependencies:
- "@babel/generator" "^7.0.0"
- "@babel/parser" "^7.0.0"
- "@babel/template" "^7.0.0"
- "@babel/traverse" "^7.0.0"
- "@babel/types" "^7.0.0"
- istanbul-lib-coverage "^2.0.3"
- semver "^5.5.0"
+ "@babel/generator" "^7.4.0"
+ "@babel/parser" "^7.4.3"
+ "@babel/template" "^7.4.0"
+ "@babel/traverse" "^7.4.3"
+ "@babel/types" "^7.4.0"
+ istanbul-lib-coverage "^2.0.5"
+ semver "^6.0.0"
istanbul-lib-report@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.4.tgz#bfd324ee0c04f59119cb4f07dab157d09f24d7e4"
- integrity sha512-sOiLZLAWpA0+3b5w5/dq0cjm2rrNdAfHWaGhmn7XEFW6X++IV9Ohn+pnELAl9K3rfpaeBfbmH9JU5sejacdLeA==
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33"
+ integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==
dependencies:
- istanbul-lib-coverage "^2.0.3"
- make-dir "^1.3.0"
- supports-color "^6.0.0"
+ istanbul-lib-coverage "^2.0.5"
+ make-dir "^2.1.0"
+ supports-color "^6.1.0"
-istanbul-lib-source-maps@^3.0.1, istanbul-lib-source-maps@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.2.tgz#f1e817229a9146e8424a28e5d69ba220fda34156"
- integrity sha512-JX4v0CiKTGp9fZPmoxpu9YEkPbEqCqBbO3403VabKjH+NRXo72HafD5UgnjTEqHL2SAjaZK1XDuDOkn6I5QVfQ==
+istanbul-lib-source-maps@^3.0.1:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8"
+ integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==
dependencies:
debug "^4.1.1"
- istanbul-lib-coverage "^2.0.3"
- make-dir "^1.3.0"
- rimraf "^2.6.2"
+ istanbul-lib-coverage "^2.0.5"
+ make-dir "^2.1.0"
+ rimraf "^2.6.3"
source-map "^0.6.1"
-istanbul-reports@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.1.1.tgz#72ef16b4ecb9a4a7bd0e2001e00f95d1eec8afa9"
- integrity sha512-FzNahnidyEPBCI0HcufJoSEoKykesRlFcSzQqjH9x0+LC8tnnE/p/90PBLu8iZTxr8yYZNyTtiAujUqyN+CIxw==
+istanbul-reports@^2.2.6:
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af"
+ integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==
dependencies:
- handlebars "^4.1.0"
+ handlebars "^4.1.2"
-jest-changed-files@^24.0.0:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.0.0.tgz#c02c09a8cc9ca93f513166bc773741bd39898ff7"
- integrity sha512-nnuU510R9U+UX0WNb5XFEcsrMqriSiRLeO9KWDFgPrpToaQm60prfQYpxsXigdClpvNot5bekDY440x9dNGnsQ==
+jest-changed-files@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039"
+ integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==
dependencies:
+ "@jest/types" "^24.9.0"
execa "^1.0.0"
throat "^4.0.0"
-jest-cli@^24.1.0:
- version "24.1.0"
- resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.1.0.tgz#f7cc98995f36e7210cce3cbb12974cbf60940843"
- integrity sha512-U/iyWPwOI0T1CIxVLtk/2uviOTJ/OiSWJSe8qt6X1VkbbgP+nrtLJlmT9lPBe4lK78VNFJtrJ7pttcNv/s7yCw==
+jest-cli@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af"
+ integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==
dependencies:
- ansi-escapes "^3.0.0"
+ "@jest/core" "^24.9.0"
+ "@jest/test-result" "^24.9.0"
+ "@jest/types" "^24.9.0"
chalk "^2.0.1"
exit "^0.1.2"
- glob "^7.1.2"
- graceful-fs "^4.1.15"
import-local "^2.0.0"
is-ci "^2.0.0"
- istanbul-api "^2.0.8"
- istanbul-lib-coverage "^2.0.2"
- istanbul-lib-instrument "^3.0.1"
- istanbul-lib-source-maps "^3.0.1"
- jest-changed-files "^24.0.0"
- jest-config "^24.1.0"
- jest-environment-jsdom "^24.0.0"
- jest-get-type "^24.0.0"
- jest-haste-map "^24.0.0"
- jest-message-util "^24.0.0"
- jest-regex-util "^24.0.0"
- jest-resolve-dependencies "^24.1.0"
- jest-runner "^24.1.0"
- jest-runtime "^24.1.0"
- jest-snapshot "^24.1.0"
- jest-util "^24.0.0"
- jest-validate "^24.0.0"
- jest-watcher "^24.0.0"
- jest-worker "^24.0.0"
- micromatch "^3.1.10"
- node-notifier "^5.2.1"
- p-each-series "^1.0.0"
- pirates "^4.0.0"
+ jest-config "^24.9.0"
+ jest-util "^24.9.0"
+ jest-validate "^24.9.0"
prompts "^2.0.1"
- realpath-native "^1.0.0"
- rimraf "^2.5.4"
- slash "^2.0.0"
- string-length "^2.0.0"
- strip-ansi "^5.0.0"
- which "^1.2.12"
- yargs "^12.0.2"
+ realpath-native "^1.1.0"
+ yargs "^13.3.0"
-jest-config@^24.1.0:
- version "24.1.0"
- resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.1.0.tgz#6ea6881cfdd299bc86cc144ee36d937c97c3850c"
- integrity sha512-FbbRzRqtFC6eGjG5VwsbW4E5dW3zqJKLWYiZWhB0/4E5fgsMw8GODLbGSrY5t17kKOtCWb/Z7nsIThRoDpuVyg==
+jest-config@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5"
+ integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==
dependencies:
"@babel/core" "^7.1.0"
- babel-jest "^24.1.0"
+ "@jest/test-sequencer" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ babel-jest "^24.9.0"
chalk "^2.0.1"
glob "^7.1.1"
- jest-environment-jsdom "^24.0.0"
- jest-environment-node "^24.0.0"
- jest-get-type "^24.0.0"
- jest-jasmine2 "^24.1.0"
- jest-regex-util "^24.0.0"
- jest-resolve "^24.1.0"
- jest-util "^24.0.0"
- jest-validate "^24.0.0"
+ jest-environment-jsdom "^24.9.0"
+ jest-environment-node "^24.9.0"
+ jest-get-type "^24.9.0"
+ jest-jasmine2 "^24.9.0"
+ jest-regex-util "^24.3.0"
+ jest-resolve "^24.9.0"
+ jest-util "^24.9.0"
+ jest-validate "^24.9.0"
micromatch "^3.1.10"
- pretty-format "^24.0.0"
- realpath-native "^1.0.2"
+ pretty-format "^24.9.0"
+ realpath-native "^1.1.0"
-jest-diff@^24.0.0:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.0.0.tgz#a3e5f573dbac482f7d9513ac9cfa21644d3d6b34"
- integrity sha512-XY5wMpRaTsuMoU+1/B2zQSKQ9RdE9gsLkGydx3nvApeyPijLA8GtEvIcPwISRCer+VDf9W1mStTYYq6fPt8ryA==
+jest-diff@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da"
+ integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==
dependencies:
chalk "^2.0.1"
- diff-sequences "^24.0.0"
- jest-get-type "^24.0.0"
- pretty-format "^24.0.0"
+ diff-sequences "^24.9.0"
+ jest-get-type "^24.9.0"
+ pretty-format "^24.9.0"
-jest-docblock@^24.0.0:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.0.0.tgz#54d77a188743e37f62181a91a01eb9222289f94e"
- integrity sha512-KfAKZ4SN7CFOZpWg4i7g7MSlY0M+mq7K0aMqENaG2vHuhC9fc3vkpU/iNN9sOus7v3h3Y48uEjqz3+Gdn2iptA==
+jest-docblock@^24.3.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2"
+ integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==
dependencies:
detect-newline "^2.1.0"
-jest-each@^24.0.0:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.0.0.tgz#10987a06b21c7ffbfb7706c89d24c52ed864be55"
- integrity sha512-gFcbY4Cu55yxExXMkjrnLXov3bWO3dbPAW7HXb31h/DNWdNc/6X8MtxGff8nh3/MjkF9DpVqnj0KsPKuPK0cpA==
+jest-each@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05"
+ integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==
dependencies:
+ "@jest/types" "^24.9.0"
chalk "^2.0.1"
- jest-get-type "^24.0.0"
- jest-util "^24.0.0"
- pretty-format "^24.0.0"
-
-jest-environment-jsdom@^24.0.0:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.0.0.tgz#5affa0654d6e44cd798003daa1a8701dbd6e4d11"
- integrity sha512-1YNp7xtxajTRaxbylDc2pWvFnfDTH5BJJGyVzyGAKNt/lEULohwEV9zFqTgG4bXRcq7xzdd+sGFws+LxThXXOw==
- dependencies:
- jest-mock "^24.0.0"
- jest-util "^24.0.0"
+ jest-get-type "^24.9.0"
+ jest-util "^24.9.0"
+ pretty-format "^24.9.0"
+
+jest-environment-jsdom@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b"
+ integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==
+ dependencies:
+ "@jest/environment" "^24.9.0"
+ "@jest/fake-timers" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ jest-mock "^24.9.0"
+ jest-util "^24.9.0"
jsdom "^11.5.1"
-jest-environment-node@^24.0.0:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.0.0.tgz#330948980656ed8773ce2e04eb597ed91e3c7190"
- integrity sha512-62fOFcaEdU0VLaq8JL90TqwI7hLn0cOKOl8vY2n477vRkCJRojiRRtJVRzzCcgFvs6gqU97DNqX5R0BrBP6Rxg==
+jest-environment-node@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3"
+ integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==
dependencies:
- jest-mock "^24.0.0"
- jest-util "^24.0.0"
+ "@jest/environment" "^24.9.0"
+ "@jest/fake-timers" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ jest-mock "^24.9.0"
+ jest-util "^24.9.0"
-jest-get-type@^24.0.0:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.0.0.tgz#36e72930b78e33da59a4f63d44d332188278940b"
- integrity sha512-z6/Eyf6s9ZDGz7eOvl+fzpuJmN9i0KyTt1no37/dHu8galssxz5ZEgnc1KaV8R31q1khxyhB4ui/X5ZjjPk77w==
+jest-get-type@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e"
+ integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==
jest-haste-map@24.0.0-alpha.6:
version "24.0.0-alpha.6"
@@ -2937,200 +3124,240 @@ jest-haste-map@24.0.0-alpha.6:
micromatch "^2.3.11"
sane "^3.0.0"
-jest-haste-map@^24.0.0:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.0.0.tgz#e9ef51b2c9257384b4d6beb83bd48c65b37b5e6e"
- integrity sha512-CcViJyUo41IQqttLxXVdI41YErkzBKbE6cS6dRAploCeutePYfUimWd3C9rQEWhX0YBOQzvNsC0O9nYxK2nnxQ==
+jest-haste-map@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d"
+ integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==
dependencies:
+ "@jest/types" "^24.9.0"
+ anymatch "^2.0.0"
fb-watchman "^2.0.0"
graceful-fs "^4.1.15"
invariant "^2.2.4"
- jest-serializer "^24.0.0"
- jest-util "^24.0.0"
- jest-worker "^24.0.0"
+ jest-serializer "^24.9.0"
+ jest-util "^24.9.0"
+ jest-worker "^24.9.0"
micromatch "^3.1.10"
- sane "^3.0.0"
+ sane "^4.0.3"
+ walker "^1.0.7"
+ optionalDependencies:
+ fsevents "^1.2.7"
-jest-jasmine2@^24.1.0:
- version "24.1.0"
- resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.1.0.tgz#8377324b967037c440f0a549ee0bbd9912055db6"
- integrity sha512-H+o76SdSNyCh9fM5K8upK45YTo/DiFx5w2YAzblQebSQmukDcoVBVeXynyr7DDnxh+0NTHYRCLwJVf3tC518wg==
+jest-jasmine2@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0"
+ integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==
dependencies:
"@babel/traverse" "^7.1.0"
+ "@jest/environment" "^24.9.0"
+ "@jest/test-result" "^24.9.0"
+ "@jest/types" "^24.9.0"
chalk "^2.0.1"
co "^4.6.0"
- expect "^24.1.0"
+ expect "^24.9.0"
is-generator-fn "^2.0.0"
- jest-each "^24.0.0"
- jest-matcher-utils "^24.0.0"
- jest-message-util "^24.0.0"
- jest-snapshot "^24.1.0"
- jest-util "^24.0.0"
- pretty-format "^24.0.0"
+ jest-each "^24.9.0"
+ jest-matcher-utils "^24.9.0"
+ jest-message-util "^24.9.0"
+ jest-runtime "^24.9.0"
+ jest-snapshot "^24.9.0"
+ jest-util "^24.9.0"
+ pretty-format "^24.9.0"
throat "^4.0.0"
-jest-leak-detector@^24.0.0:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.0.0.tgz#78280119fd05ee98317daee62cddb3aa537a31c6"
- integrity sha512-ZYHJYFeibxfsDSKowjDP332pStuiFT2xfc5R67Rjm/l+HFJWJgNIOCOlQGeXLCtyUn3A23+VVDdiCcnB6dTTrg==
+jest-leak-detector@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a"
+ integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==
dependencies:
- pretty-format "^24.0.0"
+ jest-get-type "^24.9.0"
+ pretty-format "^24.9.0"
-jest-matcher-utils@^24.0.0:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.0.0.tgz#fc9c41cfc49b2c3ec14e576f53d519c37729d579"
- integrity sha512-LQTDmO+aWRz1Tf9HJg+HlPHhDh1E1c65kVwRFo5mwCVp5aQDzlkz4+vCvXhOKFjitV2f0kMdHxnODrXVoi+rlA==
+jest-matcher-utils@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073"
+ integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==
dependencies:
chalk "^2.0.1"
- jest-diff "^24.0.0"
- jest-get-type "^24.0.0"
- pretty-format "^24.0.0"
+ jest-diff "^24.9.0"
+ jest-get-type "^24.9.0"
+ pretty-format "^24.9.0"
-jest-message-util@^24.0.0:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.0.0.tgz#a07a141433b2c992dbaec68d4cbfe470ba289619"
- integrity sha512-J9ROJIwz/IeC+eV1XSwnRK4oAwPuhmxEyYx1+K5UI+pIYwFZDSrfZaiWTdq0d2xYFw4Xiu+0KQWsdsQpgJMf3Q==
+jest-message-util@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3"
+ integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==
dependencies:
"@babel/code-frame" "^7.0.0"
+ "@jest/test-result" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ "@types/stack-utils" "^1.0.1"
chalk "^2.0.1"
micromatch "^3.1.10"
slash "^2.0.0"
stack-utils "^1.0.1"
-jest-mock@^24.0.0:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.0.0.tgz#9a4b53e01d66a0e780f7d857462d063e024c617d"
- integrity sha512-sQp0Hu5fcf5NZEh1U9eIW2qD0BwJZjb63Yqd98PQJFvf/zzUTBoUAwv/Dc/HFeNHIw1f3hl/48vNn+j3STaI7A==
+jest-mock@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6"
+ integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==
+ dependencies:
+ "@jest/types" "^24.9.0"
+
+jest-pnp-resolver@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a"
+ integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==
-jest-regex-util@^24.0.0:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.0.0.tgz#4feee8ec4a358f5bee0a654e94eb26163cb9089a"
- integrity sha512-Jv/uOTCuC+PY7WpJl2mpoI+WbY2ut73qwwO9ByJJNwOCwr1qWhEW2Lyi2S9ZewUdJqeVpEBisdEVZSI+Zxo58Q==
+jest-regex-util@^24.3.0, jest-regex-util@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636"
+ integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==
-jest-resolve-dependencies@^24.1.0:
- version "24.1.0"
- resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.1.0.tgz#78f738a2ec59ff4d00751d9da56f176e3f589f6c"
- integrity sha512-2VwPsjd3kRPu7qe2cpytAgowCObk5AKeizfXuuiwgm1a9sijJDZe8Kh1sFj6FKvSaNEfCPlBVkZEJa2482m/Uw==
+jest-resolve-dependencies@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab"
+ integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==
dependencies:
- jest-regex-util "^24.0.0"
- jest-snapshot "^24.1.0"
+ "@jest/types" "^24.9.0"
+ jest-regex-util "^24.3.0"
+ jest-snapshot "^24.9.0"
-jest-resolve@^24.1.0:
- version "24.1.0"
- resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.1.0.tgz#42ff0169b0ea47bfdbd0c52a0067ca7d022c7688"
- integrity sha512-TPiAIVp3TG6zAxH28u/6eogbwrvZjBMWroSLBDkwkHKrqxB/RIdwkWDye4uqPlZIXWIaHtifY3L0/eO5Z0f2wg==
+jest-resolve@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321"
+ integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==
dependencies:
+ "@jest/types" "^24.9.0"
browser-resolve "^1.11.3"
chalk "^2.0.1"
- realpath-native "^1.0.0"
-
-jest-runner@^24.1.0:
- version "24.1.0"
- resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.1.0.tgz#3686a2bb89ce62800da23d7fdc3da2c32792943b"
- integrity sha512-CDGOkT3AIFl16BLL/OdbtYgYvbAprwJ+ExKuLZmGSCSldwsuU2dEGauqkpvd9nphVdAnJUcP12e/EIlnTX0QXg==
- dependencies:
+ jest-pnp-resolver "^1.2.1"
+ realpath-native "^1.1.0"
+
+jest-runner@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42"
+ integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==
+ dependencies:
+ "@jest/console" "^24.7.1"
+ "@jest/environment" "^24.9.0"
+ "@jest/test-result" "^24.9.0"
+ "@jest/types" "^24.9.0"
chalk "^2.4.2"
exit "^0.1.2"
graceful-fs "^4.1.15"
- jest-config "^24.1.0"
- jest-docblock "^24.0.0"
- jest-haste-map "^24.0.0"
- jest-jasmine2 "^24.1.0"
- jest-leak-detector "^24.0.0"
- jest-message-util "^24.0.0"
- jest-runtime "^24.1.0"
- jest-util "^24.0.0"
- jest-worker "^24.0.0"
+ jest-config "^24.9.0"
+ jest-docblock "^24.3.0"
+ jest-haste-map "^24.9.0"
+ jest-jasmine2 "^24.9.0"
+ jest-leak-detector "^24.9.0"
+ jest-message-util "^24.9.0"
+ jest-resolve "^24.9.0"
+ jest-runtime "^24.9.0"
+ jest-util "^24.9.0"
+ jest-worker "^24.6.0"
source-map-support "^0.5.6"
throat "^4.0.0"
-jest-runtime@^24.1.0:
- version "24.1.0"
- resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.1.0.tgz#7c157a2e776609e8cf552f956a5a19ec9c985214"
- integrity sha512-59/BY6OCuTXxGeDhEMU7+N33dpMQyXq7MLK07cNSIY/QYt2QZgJ7Tjx+rykBI0skAoigFl0A5tmT8UdwX92YuQ==
- dependencies:
- "@babel/core" "^7.1.0"
- babel-plugin-istanbul "^5.1.0"
+jest-runtime@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac"
+ integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==
+ dependencies:
+ "@jest/console" "^24.7.1"
+ "@jest/environment" "^24.9.0"
+ "@jest/source-map" "^24.3.0"
+ "@jest/transform" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ "@types/yargs" "^13.0.0"
chalk "^2.0.1"
- convert-source-map "^1.4.0"
exit "^0.1.2"
- fast-json-stable-stringify "^2.0.0"
glob "^7.1.3"
graceful-fs "^4.1.15"
- jest-config "^24.1.0"
- jest-haste-map "^24.0.0"
- jest-message-util "^24.0.0"
- jest-regex-util "^24.0.0"
- jest-resolve "^24.1.0"
- jest-snapshot "^24.1.0"
- jest-util "^24.0.0"
- jest-validate "^24.0.0"
- micromatch "^3.1.10"
- realpath-native "^1.0.0"
+ jest-config "^24.9.0"
+ jest-haste-map "^24.9.0"
+ jest-message-util "^24.9.0"
+ jest-mock "^24.9.0"
+ jest-regex-util "^24.3.0"
+ jest-resolve "^24.9.0"
+ jest-snapshot "^24.9.0"
+ jest-util "^24.9.0"
+ jest-validate "^24.9.0"
+ realpath-native "^1.1.0"
slash "^2.0.0"
strip-bom "^3.0.0"
- write-file-atomic "2.4.1"
- yargs "^12.0.2"
+ yargs "^13.3.0"
jest-serializer@24.0.0-alpha.6:
version "24.0.0-alpha.6"
resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.0.0-alpha.6.tgz#27d2fee4b1a85698717a30c3ec2ab80767312597"
integrity sha512-IPA5T6/GhlE6dedSk7Cd7YfuORnYjN0VD5iJVFn1Q81RJjpj++Hen5kJbKcg547vXsQ1TddV15qOA/zeIfOCLw==
-jest-serializer@^24.0.0, jest-serializer@^24.0.0-alpha.6:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.0.0.tgz#522c44a332cdd194d8c0531eb06a1ee5afb4256b"
- integrity sha512-9FKxQyrFgHtx3ozU+1a8v938ILBE7S8Ko3uiAVjT8Yfi2o91j/fj81jacCQZ/Ihjiff/VsUCXVgQ+iF1XdImOw==
+jest-serializer@^24.0.0-alpha.6, jest-serializer@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73"
+ integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==
-jest-snapshot@^24.1.0:
- version "24.1.0"
- resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.1.0.tgz#85e22f810357aa5994ab61f236617dc2205f2f5b"
- integrity sha512-th6TDfFqEmXvuViacU1ikD7xFb7lQsPn2rJl7OEmnfIVpnrx3QNY2t3PE88meeg0u/mQ0nkyvmC05PBqO4USFA==
+jest-snapshot@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba"
+ integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==
dependencies:
"@babel/types" "^7.0.0"
+ "@jest/types" "^24.9.0"
chalk "^2.0.1"
- jest-diff "^24.0.0"
- jest-matcher-utils "^24.0.0"
- jest-message-util "^24.0.0"
- jest-resolve "^24.1.0"
+ expect "^24.9.0"
+ jest-diff "^24.9.0"
+ jest-get-type "^24.9.0"
+ jest-matcher-utils "^24.9.0"
+ jest-message-util "^24.9.0"
+ jest-resolve "^24.9.0"
mkdirp "^0.5.1"
natural-compare "^1.4.0"
- pretty-format "^24.0.0"
- semver "^5.5.0"
-
-jest-util@^24.0.0:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.0.0.tgz#fd38fcafd6dedbd0af2944d7a227c0d91b68f7d6"
- integrity sha512-QxsALc4wguYS7cfjdQSOr5HTkmjzkHgmZvIDkcmPfl1ib8PNV8QUWLwbKefCudWS0PRKioV+VbQ0oCUPC691fQ==
- dependencies:
+ pretty-format "^24.9.0"
+ semver "^6.2.0"
+
+jest-util@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162"
+ integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==
+ dependencies:
+ "@jest/console" "^24.9.0"
+ "@jest/fake-timers" "^24.9.0"
+ "@jest/source-map" "^24.9.0"
+ "@jest/test-result" "^24.9.0"
+ "@jest/types" "^24.9.0"
callsites "^3.0.0"
chalk "^2.0.1"
graceful-fs "^4.1.15"
is-ci "^2.0.0"
- jest-message-util "^24.0.0"
mkdirp "^0.5.1"
slash "^2.0.0"
source-map "^0.6.0"
-jest-validate@^24.0.0:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.0.0.tgz#aa8571a46983a6538328fef20406b4a496b6c020"
- integrity sha512-vMrKrTOP4BBFIeOWsjpsDgVXATxCspC9S1gqvbJ3Tnn/b9ACsJmteYeVx9830UMV28Cob1RX55x96Qq3Tfad4g==
+jest-validate@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab"
+ integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==
dependencies:
- camelcase "^5.0.0"
+ "@jest/types" "^24.9.0"
+ camelcase "^5.3.1"
chalk "^2.0.1"
- jest-get-type "^24.0.0"
- leven "^2.1.0"
- pretty-format "^24.0.0"
-
-jest-watcher@^24.0.0:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.0.0.tgz#20d44244d10b0b7312410aefd256c1c1eef68890"
- integrity sha512-GxkW2QrZ4YxmW1GUWER05McjVDunBlKMFfExu+VsGmXJmpej1saTEKvONdx5RJBlVdpPI5x6E3+EDQSIGgl53g==
- dependencies:
+ jest-get-type "^24.9.0"
+ leven "^3.1.0"
+ pretty-format "^24.9.0"
+
+jest-watcher@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b"
+ integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==
+ dependencies:
+ "@jest/test-result" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ "@types/yargs" "^13.0.0"
ansi-escapes "^3.0.0"
chalk "^2.0.1"
- jest-util "^24.0.0"
+ jest-util "^24.9.0"
string-length "^2.0.0"
jest-worker@24.0.0-alpha.6:
@@ -3140,31 +3367,31 @@ jest-worker@24.0.0-alpha.6:
dependencies:
merge-stream "^1.0.1"
-jest-worker@^24.0.0, jest-worker@^24.0.0-alpha.6:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.0.0.tgz#3d3483b077bf04f412f47654a27bba7e947f8b6d"
- integrity sha512-s64/OThpfQvoCeHG963MiEZOAAxu8kHsaL/rCMF7lpdzo7vgF0CtPml9hfguOMgykgH/eOm4jFP4ibfHLruytg==
+jest-worker@^24.0.0-alpha.6, jest-worker@^24.6.0, jest-worker@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5"
+ integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==
dependencies:
- merge-stream "^1.0.1"
+ merge-stream "^2.0.0"
supports-color "^6.1.0"
-jest@24.1.0:
- version "24.1.0"
- resolved "https://registry.yarnpkg.com/jest/-/jest-24.1.0.tgz#b1e1135caefcf2397950ecf7f90e395fde866fd2"
- integrity sha512-+q91L65kypqklvlRFfXfdzUKyngQLOcwGhXQaLmVHv+d09LkNXuBuGxlofTFW42XMzu3giIcChchTsCNUjQ78A==
+jest@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171"
+ integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==
dependencies:
import-local "^2.0.0"
- jest-cli "^24.1.0"
+ jest-cli "^24.9.0"
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-js-yaml@^3.12.0, js-yaml@^3.9.0:
- version "3.12.1"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600"
- integrity sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==
+js-yaml@^3.13.1:
+ version "3.13.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
+ integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
@@ -3244,9 +3471,9 @@ json-stringify-safe@~5.0.1:
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
json5@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850"
- integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6"
+ integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==
dependencies:
minimist "^1.2.0"
@@ -3315,10 +3542,10 @@ klaw@^1.0.0:
optionalDependencies:
graceful-fs "^4.1.9"
-kleur@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.2.tgz#83c7ec858a41098b613d5998a7b653962b504f68"
- integrity sha512-3h7B2WRT5LNXOtQiAaWonilegHcPSf9nLVXlSTci8lu1dZUuui61+EsPEZqSVxY7rXYmB2DVKMQILxaO5WL61Q==
+kleur@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
+ integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
lcid@^1.0.0:
version "1.0.0"
@@ -3327,22 +3554,15 @@ lcid@^1.0.0:
dependencies:
invert-kv "^1.0.0"
-lcid@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
- integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==
- dependencies:
- invert-kv "^2.0.0"
-
left-pad@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e"
integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==
-leven@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
- integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA=
+leven@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
+ integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
levn@~0.3.0:
version "0.3.0"
@@ -3388,11 +3608,6 @@ locate-path@^3.0.0:
p-locate "^3.0.0"
path-exists "^3.0.0"
-lodash.get@^4.4.2:
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
- integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
-
lodash.pad@^4.1.0:
version "4.5.1"
resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70"
@@ -3418,10 +3633,10 @@ lodash.throttle@^4.1.1:
resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=
-lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.6.1:
- version "4.17.11"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
- integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
+lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.6.1:
+ version "4.17.15"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
+ integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
version "1.4.0"
@@ -3438,12 +3653,13 @@ lru-cache@^4.0.1:
pseudomap "^1.0.2"
yallist "^2.1.2"
-make-dir@^1.0.0, make-dir@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
- integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==
+make-dir@^2.0.0, make-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
+ integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
dependencies:
- pify "^3.0.0"
+ pify "^4.0.1"
+ semver "^5.6.0"
makeerror@1.0.x:
version "1.0.11"
@@ -3452,13 +3668,6 @@ makeerror@1.0.x:
dependencies:
tmpl "1.0.x"
-map-age-cleaner@^0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
- integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==
- dependencies:
- p-defer "^1.0.0"
-
map-cache@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
@@ -3483,15 +3692,6 @@ mem@^1.1.0:
dependencies:
mimic-fn "^1.0.0"
-mem@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/mem/-/mem-4.1.0.tgz#aeb9be2d21f47e78af29e4ac5978e8afa2ca5b8a"
- integrity sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==
- dependencies:
- map-age-cleaner "^0.1.1"
- mimic-fn "^1.0.0"
- p-is-promise "^2.0.0"
-
merge-stream@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1"
@@ -3499,6 +3699,11 @@ merge-stream@^1.0.1:
dependencies:
readable-stream "^2.0.1"
+merge-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
+ integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
+
merge@^1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145"
@@ -3550,13 +3755,6 @@ metro-babel7-plugin-react-transform@0.51.1:
dependencies:
"@babel/helper-module-imports" "^7.0.0"
-metro-babel7-plugin-react-transform@0.53.1:
- version "0.53.1"
- resolved "https://registry.yarnpkg.com/metro-babel7-plugin-react-transform/-/metro-babel7-plugin-react-transform-0.53.1.tgz#9ad31e5c84f5003333a6a3cf79f2d093cd3b2ddc"
- integrity sha512-98lEpTu7mox/7QurxVuLnbjrGDdayjpS2Z1T4vkLcP+mBxzloKJuTRnmtyWC8cNlx9qjimHGDlqtNY78rQ8rsA==
- dependencies:
- "@babel/helper-module-imports" "^7.0.0"
-
metro-cache@0.51.1:
version "0.51.1"
resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.51.1.tgz#d0b296eab8e009214413bba87e4eac3d9b44cd04"
@@ -3682,10 +3880,10 @@ metro-react-native-babel-preset@0.51.1:
metro-babel7-plugin-react-transform "0.51.1"
react-transform-hmr "^1.0.4"
-metro-react-native-babel-preset@0.53.1:
- version "0.53.1"
- resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.53.1.tgz#6cd9e41a1b9a6e210e71ef2adf114219b4eaf2ec"
- integrity sha512-Uf8EGL8kIPhDkoSdAAysNPxPQclUS2R1QC4cwnc8bkk2f6yqGn+1CorfiY9AaqlLEth5mKQqdtRYFDTFfB9QyA==
+metro-react-native-babel-preset@^0.56.1:
+ version "0.56.3"
+ resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.56.3.tgz#5a1097c2f94e8ee0797a8ba2ab8f86d096f4c093"
+ integrity sha512-tGPzX2ZwI8vQ8SiNVBPUIgKqmaRNVB6rtJtHCBQZAYRiMbxh0NHCUoFfKBej6U5qVgxiYYHyN8oB23evG4/Oow==
dependencies:
"@babel/plugin-proposal-class-properties" "^7.0.0"
"@babel/plugin-proposal-export-default-from" "^7.0.0"
@@ -3721,8 +3919,7 @@ metro-react-native-babel-preset@0.53.1:
"@babel/plugin-transform-typescript" "^7.0.0"
"@babel/plugin-transform-unicode-regex" "^7.0.0"
"@babel/template" "^7.0.0"
- metro-babel7-plugin-react-transform "0.53.1"
- react-transform-hmr "^1.0.4"
+ react-refresh "^0.4.0"
metro-react-native-babel-transformer@0.51.0:
version "0.51.0"
@@ -3853,10 +4050,10 @@ micromatch@^3.1.10, micromatch@^3.1.4:
snapdragon "^0.8.1"
to-regex "^3.0.2"
-"mime-db@>= 1.38.0 < 2", mime-db@~1.38.0:
- version "1.38.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.38.0.tgz#1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad"
- integrity sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==
+mime-db@1.42.0, "mime-db@>= 1.40.0 < 2":
+ version "1.42.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac"
+ integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==
mime-db@~1.23.0:
version "1.23.0"
@@ -3870,19 +4067,14 @@ mime-types@2.1.11:
dependencies:
mime-db "~1.23.0"
-mime-types@^2.1.12, mime-types@~2.1.18, mime-types@~2.1.19:
- version "2.1.22"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.22.tgz#fe6b355a190926ab7698c9a0556a11199b2199bd"
- integrity sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==
+mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24:
+ version "2.1.25"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437"
+ integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==
dependencies:
- mime-db "~1.38.0"
-
-mime@1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
- integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==
+ mime-db "1.42.0"
-mime@^1.3.4:
+mime@1.6.0, mime@^1.3.4:
version "1.6.0"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
@@ -3899,7 +4091,7 @@ min-document@^2.19.0:
dependencies:
dom-walk "^0.1.0"
-minimatch@^3.0.3, minimatch@^3.0.4:
+minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
@@ -3921,25 +4113,25 @@ minimist@~0.0.1:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=
-minipass@^2.2.1, minipass@^2.3.4:
- version "2.3.5"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
- integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==
+minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
+ integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
dependencies:
safe-buffer "^5.1.2"
yallist "^3.0.0"
-minizlib@^1.1.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
- integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==
+minizlib@^1.2.1:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
+ integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==
dependencies:
- minipass "^2.2.1"
+ minipass "^2.9.0"
mixin-deep@^1.2.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
- integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
+ integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
dependencies:
for-in "^1.0.2"
is-extendable "^1.0.1"
@@ -3967,20 +4159,25 @@ ms@2.0.0:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
-ms@^2.1.1:
+ms@2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
+ms@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
mute-stream@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
-nan@^2.9.2:
- version "2.12.1"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552"
- integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==
+nan@^2.12.1:
+ version "2.14.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
+ integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
nanomatch@^1.2.9:
version "1.2.13"
@@ -4005,18 +4202,23 @@ natural-compare@^1.4.0:
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
needle@^2.2.1:
- version "2.2.4"
- resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e"
- integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
+ integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==
dependencies:
- debug "^2.1.2"
+ debug "^3.2.6"
iconv-lite "^0.4.4"
sax "^1.2.4"
-negotiator@0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
- integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=
+negotiator@0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
+ integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
+
+neo-async@^2.6.0:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
+ integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
nice-try@^1.0.4:
version "1.0.5"
@@ -4032,9 +4234,9 @@ node-fetch@^1.0.1:
is-stream "^1.0.1"
node-fetch@^2.2.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.3.0.tgz#1a1d940bbfb916a1d3e0219f037e89e71f8c5fa5"
- integrity sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
+ integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
node-int64@^0.4.0:
version "0.4.0"
@@ -4046,10 +4248,10 @@ node-modules-regexp@^1.0.0:
resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
-node-notifier@^5.2.1:
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.0.tgz#7b455fdce9f7de0c63538297354f3db468426e6a"
- integrity sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ==
+node-notifier@^5.2.1, node-notifier@^5.4.2:
+ version "5.4.3"
+ resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50"
+ integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==
dependencies:
growly "^1.3.0"
is-wsl "^1.1.0"
@@ -4057,10 +4259,10 @@ node-notifier@^5.2.1:
shellwords "^0.1.1"
which "^1.3.0"
-node-pre-gyp@^0.10.0:
- version "0.10.3"
- resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
- integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==
+node-pre-gyp@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149"
+ integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==
dependencies:
detect-libc "^1.0.2"
mkdirp "^0.5.1"
@@ -4104,9 +4306,9 @@ npm-bundled@^1.0.1:
integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==
npm-packlist@^1.1.6:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc"
- integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==
+ version "1.4.6"
+ resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.6.tgz#53ba3ed11f8523079f1457376dd379ee4ea42ff4"
+ integrity sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg==
dependencies:
ignore-walk "^3.0.1"
npm-bundled "^1.0.1"
@@ -4148,9 +4350,9 @@ number-is-nan@^1.0.0:
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
nwsapi@^2.0.7:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.0.tgz#781065940aed90d9bb01ca5d0ce0fcf81c32712f"
- integrity sha512-ZG3bLAvdHmhIjaQ/Db1qvBxsGvFMLIRpQszyqbg31VJ53UP++uZX1/gf3Ut96pdwN9AuDwlMqIYLm0UPCdUeHg==
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
+ integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==
oauth-sign@~0.9.0:
version "0.9.0"
@@ -4171,10 +4373,15 @@ object-copy@^0.1.0:
define-property "^0.2.5"
kind-of "^3.0.3"
-object-keys@^1.0.12:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz#11bd22348dd2e096a045ab06f6c85bcc340fa032"
- integrity sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==
+object-inspect@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67"
+ integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==
+
+object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
object-visit@^1.0.0:
version "1.0.1"
@@ -4183,6 +4390,16 @@ object-visit@^1.0.0:
dependencies:
isobject "^3.0.0"
+object.assign@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
+ integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
+ dependencies:
+ define-properties "^1.1.2"
+ function-bind "^1.1.1"
+ has-symbols "^1.0.0"
+ object-keys "^1.0.11"
+
object.getownpropertydescriptors@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
@@ -4213,7 +4430,7 @@ on-finished@~2.3.0:
dependencies:
ee-first "1.1.1"
-on-headers@~1.0.1:
+on-headers@~1.0.1, on-headers@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
@@ -4248,16 +4465,16 @@ optimist@^0.6.1:
wordwrap "~0.0.2"
optionator@^0.8.1:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
- integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=
+ version "0.8.3"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
+ integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
dependencies:
deep-is "~0.1.3"
- fast-levenshtein "~2.0.4"
+ fast-levenshtein "~2.0.6"
levn "~0.3.0"
prelude-ls "~1.1.2"
type-check "~0.3.2"
- wordwrap "~1.0.0"
+ word-wrap "~1.2.3"
options@>=0.0.5:
version "0.0.6"
@@ -4278,15 +4495,6 @@ os-locale@^2.0.0:
lcid "^1.0.0"
mem "^1.1.0"
-os-locale@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
- integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==
- dependencies:
- execa "^1.0.0"
- lcid "^2.0.0"
- mem "^4.0.0"
-
os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
@@ -4300,11 +4508,6 @@ osenv@^0.1.4:
os-homedir "^1.0.0"
os-tmpdir "^1.0.0"
-p-defer@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
- integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
-
p-each-series@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71"
@@ -4317,11 +4520,6 @@ p-finally@^1.0.0:
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
-p-is-promise@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.0.0.tgz#7554e3d572109a87e1f3f53f6a7d85d1b194f4c5"
- integrity sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==
-
p-limit@^1.1.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
@@ -4330,9 +4528,9 @@ p-limit@^1.1.0:
p-try "^1.0.0"
p-limit@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.1.0.tgz#1d5a0d20fb12707c758a655f6bbc4386b5930d68"
- integrity sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537"
+ integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==
dependencies:
p-try "^2.0.0"
@@ -4361,9 +4559,9 @@ p-try@^1.0.0:
integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
p-try@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1"
- integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
parse-glob@^3.0.4:
version "3.0.4"
@@ -4400,10 +4598,10 @@ parse5@4.0.0:
resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==
-parseurl@~1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
- integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=
+parseurl@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
+ integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
pascalcase@^0.1.1:
version "0.1.1"
@@ -4459,20 +4657,18 @@ pify@^3.0.0:
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
-pirates@^4.0.0:
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
+pirates@^4.0.0, pirates@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87"
integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==
dependencies:
node-modules-regexp "^1.0.0"
-pkg-dir@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
- integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
- dependencies:
- find-up "^2.1.0"
-
pkg-dir@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
@@ -4528,13 +4724,15 @@ pretty-format@24.0.0-alpha.6:
ansi-regex "^4.0.0"
ansi-styles "^3.2.0"
-pretty-format@^24.0.0:
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.0.0.tgz#cb6599fd73ac088e37ed682f61291e4678f48591"
- integrity sha512-LszZaKG665djUcqg5ZQq+XzezHLKrxsA86ZABTozp+oNhkdqa+tG2dX4qa6ERl5c/sRDrAa3lHmwnvKoP+OG/g==
+pretty-format@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9"
+ integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==
dependencies:
+ "@jest/types" "^24.9.0"
ansi-regex "^4.0.0"
ansi-styles "^3.2.0"
+ react-is "^16.8.4"
private@^0.1.6:
version "0.1.8"
@@ -4542,14 +4740,14 @@ private@^0.1.6:
integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==
process-nextick-args@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
- integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
-process@~0.5.1:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf"
- integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=
+process@^0.11.10:
+ version "0.11.10"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+ integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
promise@^7.1.1:
version "7.3.1"
@@ -4559,12 +4757,12 @@ promise@^7.1.1:
asap "~2.0.3"
prompts@^2.0.1:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.0.3.tgz#c5ccb324010b2e8f74752aadceeb57134c1d2522"
- integrity sha512-H8oWEoRZpybm6NV4to9/1limhttEo13xK62pNvn2JzY0MA03p7s0OjtmhXyon3uJmxiJJVSuUwEJFFssI3eBiQ==
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.0.tgz#a444e968fa4cc7e86689a74050685ac8006c4cc4"
+ integrity sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg==
dependencies:
- kleur "^3.0.2"
- sisteransi "^1.0.0"
+ kleur "^3.0.3"
+ sisteransi "^1.0.3"
prop-types@^15.5.8, prop-types@^15.6.2:
version "15.7.2"
@@ -4581,9 +4779,9 @@ pseudomap@^1.0.2:
integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
psl@^1.1.24, psl@^1.1.28:
- version "1.1.31"
- resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184"
- integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.5.0.tgz#47fd1292def7fdb1e138cd78afa8814cebcf7b13"
+ integrity sha512-4vqUjKi2huMu1OJiLhi3jN6jeeKvMZdI1tYgi/njW5zV52jNLgSAZSdN16m9bJFe61/cT8ulmw4qFitV9QRsEA==
pump@^3.0.0:
version "3.0.0"
@@ -4617,10 +4815,10 @@ randomatic@^3.0.0:
kind-of "^6.0.0"
math-random "^1.0.1"
-range-parser@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
- integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=
+range-parser@~1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
+ integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
rc@^1.2.7:
version "1.2.8"
@@ -4643,22 +4841,17 @@ react-deep-force-update@^1.0.0:
integrity sha512-WUSQJ4P/wWcusaH+zZmbECOk7H5N2pOIl0vzheeornkIMhu+qrNdGFm0bDZLCb0hSF0jf/kH1SgkNGfBdTc4wA==
react-devtools-core@^3.6.0:
- version "3.6.1"
- resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-3.6.1.tgz#51af81ceada65209bbccb8b547a01187cd1cbf04"
- integrity sha512-I/LSX+tpeTrGKaF1wXSfJ/kP+6iaP2JfshEjW8LtQBdz6c6HhzOJtjZXhqOUrAdysuey8M1/JgPY1flSVVt8Ig==
+ version "3.6.3"
+ resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-3.6.3.tgz#977d95b684c6ad28205f0c62e1e12c5f16675814"
+ integrity sha512-+P+eFy/yo8Z/UH9J0DqHZuUM5+RI2wl249TNvMx3J2jpUomLQa4Zxl56GEotGfw3PIP1eI+hVf1s53FlUONStQ==
dependencies:
shell-quote "^1.6.1"
ws "^3.3.1"
-react-is@^16.8.1:
- version "16.8.3"
- resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.3.tgz#4ad8b029c2a718fc0cfc746c8d4e1b7221e5387d"
- integrity sha512-Y4rC1ZJmsxxkkPuMLwvKvlL1Zfpbcu+Bf4ZigkHup3v9EfdYhAlWAaVyA19olXq2o2mGn0w+dFKvk3pVVlYcIA==
-
-react-is@^16.8.3:
- version "16.8.5"
- resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.5.tgz#c54ac229dd66b5afe0de5acbe47647c3da692ff8"
- integrity sha512-sudt2uq5P/2TznPV4Wtdi+Lnq3yaYW8LfvPKLM9BKD8jJNBkxMVyB0C9/GmVhLw7Jbdmndk/73n7XQGeN9A3QQ==
+react-is@^16.8.1, react-is@^16.8.3, react-is@^16.8.4:
+ version "16.12.0"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c"
+ integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==
react-native@0.59.1:
version "0.59.1"
@@ -4724,6 +4917,11 @@ react-proxy@^1.1.7:
lodash "^4.6.1"
react-deep-force-update "^1.0.0"
+react-refresh@^0.4.0:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.2.tgz#54a277a6caaac2803d88f1d6f13c1dcfbd81e334"
+ integrity sha512-kv5QlFFSZWo7OlJFNYbxRtY66JImuP2LcrFgyJfQaf85gSP+byzG21UbDQEYjU7f//ny8rwiEkO6py2Y+fEgAQ==
+
react-test-renderer@16.8.3:
version "16.8.3"
resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.8.3.tgz#230006af264cc46aeef94392e04747c21839e05e"
@@ -4799,17 +4997,17 @@ readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.2.2, readable
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
-realpath-native@^1.0.0, realpath-native@^1.0.2:
+realpath-native@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c"
integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==
dependencies:
util.promisify "^1.0.0"
-regenerate-unicode-properties@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c"
- integrity sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==
+regenerate-unicode-properties@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e"
+ integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==
dependencies:
regenerate "^1.4.0"
@@ -4823,15 +5021,15 @@ regenerator-runtime@^0.11.0:
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
-regenerator-runtime@^0.12.0:
- version "0.12.1"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de"
- integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==
+regenerator-runtime@^0.13.2:
+ version "0.13.3"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5"
+ integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==
-regenerator-transform@^0.13.3:
- version "0.13.4"
- resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.4.tgz#18f6763cf1382c69c36df76c6ce122cc694284fb"
- integrity sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A==
+regenerator-transform@^0.14.0:
+ version "0.14.1"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb"
+ integrity sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==
dependencies:
private "^0.1.6"
@@ -4850,22 +5048,22 @@ regex-not@^1.0.0, regex-not@^1.0.2:
extend-shallow "^3.0.2"
safe-regex "^1.1.0"
-regexpu-core@^4.1.3:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.4.0.tgz#8d43e0d1266883969720345e70c275ee0aec0d32"
- integrity sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==
+regexpu-core@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz#2037c18b327cfce8a6fea2a4ec441f2432afb8b6"
+ integrity sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==
dependencies:
regenerate "^1.4.0"
- regenerate-unicode-properties "^7.0.0"
+ regenerate-unicode-properties "^8.1.0"
regjsgen "^0.5.0"
regjsparser "^0.6.0"
unicode-match-property-ecmascript "^1.0.4"
- unicode-match-property-value-ecmascript "^1.0.2"
+ unicode-match-property-value-ecmascript "^1.1.0"
regjsgen@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd"
- integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c"
+ integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==
regjsparser@^0.6.0:
version "0.6.0"
@@ -4889,19 +5087,19 @@ repeat-string@^1.5.2, repeat-string@^1.6.1:
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
-request-promise-core@1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346"
- integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==
+request-promise-core@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9"
+ integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==
dependencies:
- lodash "^4.17.11"
+ lodash "^4.17.15"
request-promise-native@^1.0.5:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59"
- integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36"
+ integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==
dependencies:
- request-promise-core "1.1.2"
+ request-promise-core "1.1.3"
stealthy-require "^1.1.1"
tough-cookie "^2.3.3"
@@ -4941,6 +5139,11 @@ require-main-filename@^1.0.1:
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
+require-main-filename@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
resolve-cwd@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
@@ -4964,9 +5167,9 @@ resolve@1.1.7:
integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
resolve@^1.10.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba"
- integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16"
+ integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==
dependencies:
path-parse "^1.0.6"
@@ -4983,10 +5186,10 @@ ret@~0.1.10:
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
-rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2:
- version "2.6.3"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
- integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
+rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
dependencies:
glob "^7.1.3"
@@ -5000,6 +5203,11 @@ rsvp@^3.3.3:
resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a"
integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==
+rsvp@^4.8.4:
+ version "4.8.5"
+ resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
+ integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
+
run-async@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
@@ -5019,11 +5227,16 @@ rx-lite@*, rx-lite@^4.0.8:
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=
-safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+safe-buffer@^5.0.1, safe-buffer@^5.1.2:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
+ integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
+
safe-regex@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
@@ -5053,6 +5266,21 @@ sane@^3.0.0:
optionalDependencies:
fsevents "^1.2.3"
+sane@^4.0.3:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded"
+ integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==
+ dependencies:
+ "@cnakazawa/watch" "^1.0.3"
+ anymatch "^2.0.0"
+ capture-exit "^2.0.0"
+ exec-sh "^0.3.2"
+ execa "^1.0.0"
+ fb-watchman "^2.0.0"
+ micromatch "^3.1.4"
+ minimist "^1.1.1"
+ walker "~1.0.5"
+
sax@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
@@ -5064,22 +5292,27 @@ sax@~1.1.1:
integrity sha1-XWFr6KXmB9VOEUr65Vt+ry/MMkA=
scheduler@^0.13.3:
- version "0.13.5"
- resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.5.tgz#b7226625167041298af3b98088a9dbbf6d7733a8"
- integrity sha512-K98vjkQX9OIt/riLhp6F+XtDPtMQhqNcf045vsh+pcuvHq+PHy1xCrH3pq1P40m6yR46lpVvVhKdEOtnimuUJw==
+ version "0.13.6"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889"
+ integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
-"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1:
- version "5.6.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
- integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
+"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+
+semver@^6.0.0, semver@^6.2.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
-send@0.16.2:
- version "0.16.2"
- resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
- integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==
+send@0.17.1:
+ version "0.17.1"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
+ integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
dependencies:
debug "2.6.9"
depd "~1.1.2"
@@ -5088,12 +5321,12 @@ send@0.16.2:
escape-html "~1.0.3"
etag "~1.8.1"
fresh "0.5.2"
- http-errors "~1.6.2"
- mime "1.4.1"
- ms "2.0.0"
+ http-errors "~1.7.2"
+ mime "1.6.0"
+ ms "2.1.1"
on-finished "~2.3.0"
- range-parser "~1.2.0"
- statuses "~1.4.0"
+ range-parser "~1.2.1"
+ statuses "~1.5.0"
serialize-error@^2.1.0:
version "2.1.0"
@@ -5101,34 +5334,24 @@ serialize-error@^2.1.0:
integrity sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=
serve-static@^1.13.1:
- version "1.13.2"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
- integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
+ integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
dependencies:
encodeurl "~1.0.2"
escape-html "~1.0.3"
- parseurl "~1.3.2"
- send "0.16.2"
+ parseurl "~1.3.3"
+ send "0.17.1"
set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
-set-value@^0.4.3:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
- integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE=
- dependencies:
- extend-shallow "^2.0.1"
- is-extendable "^0.1.1"
- is-plain-object "^2.0.1"
- to-object-path "^0.3.0"
-
-set-value@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
- integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==
+set-value@^2.0.0, set-value@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
+ integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
dependencies:
extend-shallow "^2.0.1"
is-extendable "^0.1.1"
@@ -5140,10 +5363,10 @@ setimmediate@^1.0.5:
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
-setprototypeof@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
- integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
+setprototypeof@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
+ integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
shebang-command@^1.2.0:
version "1.2.0"
@@ -5157,7 +5380,7 @@ shebang-regex@^1.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
-shell-quote@1.6.1, shell-quote@^1.6.1:
+shell-quote@1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767"
integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=
@@ -5167,6 +5390,11 @@ shell-quote@1.6.1, shell-quote@^1.6.1:
array-reduce "~0.0.0"
jsonify "~0.0.0"
+shell-quote@^1.6.1:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2"
+ integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==
+
shellwords@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
@@ -5178,18 +5406,18 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
simple-plist@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.0.0.tgz#bed3085633b22f371e111f45d159a1ccf94b81eb"
- integrity sha512-043L2rO80LVF7zfZ+fqhsEkoJFvW8o59rt/l4ctx1TJWoTx7/jkiS1R5TatD15Z1oYnuLJytzE7gcnnBuIPL2g==
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.1.0.tgz#8354ab63eb3922a054c78ce96c209c532e907a23"
+ integrity sha512-2i5Tc0BYAqppM7jVzmNrI+aEUntPolIq4fDgji6WuNNn1D/qYdn2KwoLhZdzQkE04lu9L5tUoeJsjuJAvd+lFg==
dependencies:
- bplist-creator "0.0.7"
- bplist-parser "0.1.1"
+ bplist-creator "0.0.8"
+ bplist-parser "0.2.0"
plist "^3.0.1"
-sisteransi@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz#77d9622ff909080f1c19e5f4a1df0c1b0a27b88c"
- integrity sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ==
+sisteransi@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3"
+ integrity sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig==
slash@^2.0.0:
version "2.0.0"
@@ -5242,10 +5470,10 @@ source-map-resolve@^0.5.0:
source-map-url "^0.4.0"
urix "^0.1.0"
-source-map-support@^0.5.6, source-map-support@^0.5.9:
- version "0.5.10"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c"
- integrity sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==
+source-map-support@^0.5.16, source-map-support@^0.5.6:
+ version "0.5.16"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042"
+ integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==
dependencies:
buffer-from "^1.0.0"
source-map "^0.6.0"
@@ -5287,9 +5515,9 @@ spdx-expression-parse@^3.0.0:
spdx-license-ids "^3.0.0"
spdx-license-ids@^3.0.0:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz#81c0ce8f21474756148bbb5f3bfc0f36bf15d76e"
- integrity sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654"
+ integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==
split-string@^3.0.1, split-string@^3.0.2:
version "3.1.0"
@@ -5324,9 +5552,11 @@ stack-utils@^1.0.1:
integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==
stacktrace-parser@^0.1.3:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.4.tgz#01397922e5f62ecf30845522c95c4fe1d25e7d4e"
- integrity sha1-ATl5IuX2Ls8whFUiyVxP4dJefU4=
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.8.tgz#28b0272bd9aeb41636f0c8265c03ba270c865e1b"
+ integrity sha512-ig5rHJSdJrAsVqdb3oAI/8C6aQ7dEwJXoy/TIEIOTzdJHssmn12o6RsFoeQSLHoKjq0lX+kqhmnLDpyQTuWiJA==
+ dependencies:
+ type-fest "^0.7.1"
static-extend@^0.1.1:
version "0.1.2"
@@ -5336,21 +5566,11 @@ static-extend@^0.1.1:
define-property "^0.2.5"
object-copy "^0.1.0"
-"statuses@>= 1.4.0 < 2":
+"statuses@>= 1.5.0 < 2", statuses@~1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
-statuses@~1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
- integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=
-
-statuses@~1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
- integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==
-
stealthy-require@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
@@ -5378,7 +5598,7 @@ string-width@^1.0.1:
is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0"
-"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
+"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
@@ -5386,6 +5606,31 @@ string-width@^1.0.1:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^4.0.0"
+string-width@^3.0.0, string-width@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
+ integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+ dependencies:
+ emoji-regex "^7.0.1"
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^5.1.0"
+
+string.prototype.trimleft@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634"
+ integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==
+ dependencies:
+ define-properties "^1.1.3"
+ function-bind "^1.1.1"
+
+string.prototype.trimright@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58"
+ integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==
+ dependencies:
+ define-properties "^1.1.3"
+ function-bind "^1.1.1"
+
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
@@ -5407,12 +5652,12 @@ strip-ansi@^4.0.0:
dependencies:
ansi-regex "^3.0.0"
-strip-ansi@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f"
- integrity sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==
+strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
dependencies:
- ansi-regex "^4.0.0"
+ ansi-regex "^4.1.0"
strip-bom@^3.0.0:
version "3.0.0"
@@ -5441,7 +5686,7 @@ supports-color@^5.3.0:
dependencies:
has-flag "^3.0.0"
-supports-color@^6.0.0, supports-color@^6.1.0:
+supports-color@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
@@ -5449,22 +5694,22 @@ supports-color@^6.0.0, supports-color@^6.1.0:
has-flag "^3.0.0"
symbol-tree@^3.2.2:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
- integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
+ integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
tar@^4:
- version "4.4.8"
- resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d"
- integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==
+ version "4.4.13"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
+ integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==
dependencies:
chownr "^1.1.1"
fs-minipass "^1.2.5"
- minipass "^2.3.4"
- minizlib "^1.1.1"
+ minipass "^2.8.6"
+ minizlib "^1.2.1"
mkdirp "^0.5.0"
safe-buffer "^5.1.2"
- yallist "^3.0.2"
+ yallist "^3.0.3"
temp@0.8.3:
version "0.8.3"
@@ -5474,15 +5719,15 @@ temp@0.8.3:
os-tmpdir "^1.0.0"
rimraf "~2.2.6"
-test-exclude@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.1.0.tgz#6ba6b25179d2d38724824661323b73e03c0c1de1"
- integrity sha512-gwf0S2fFsANC55fSeSqpb8BYk6w3FDvwZxfNjeF6FRgvFa43r+7wRiA/Q0IxoRU37wB/LE8IQ4221BsNucTaCA==
+test-exclude@^5.2.3:
+ version "5.2.3"
+ resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0"
+ integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==
dependencies:
- arrify "^1.0.1"
+ glob "^7.1.3"
minimatch "^3.0.4"
read-pkg-up "^4.0.0"
- require-main-filename "^1.0.1"
+ require-main-filename "^2.0.0"
throat@^4.0.0, throat@^4.1.0:
version "4.1.0"
@@ -5549,6 +5794,11 @@ to-regex@^3.0.1, to-regex@^3.0.2:
regex-not "^1.0.2"
safe-regex "^1.1.0"
+toidentifier@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
+ integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
+
tough-cookie@^2.3.3, tough-cookie@^2.3.4:
version "2.5.0"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
@@ -5572,11 +5822,6 @@ tr46@^1.0.1:
dependencies:
punycode "^2.1.0"
-trim-right@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
- integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
-
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
@@ -5596,15 +5841,20 @@ type-check@~0.3.2:
dependencies:
prelude-ls "~1.1.2"
+type-fest@^0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48"
+ integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==
+
typedarray@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
ua-parser-js@^0.7.18:
- version "0.7.19"
- resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.19.tgz#94151be4c0a7fb1d001af7022fdaca4642659e4b"
- integrity sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ==
+ version "0.7.20"
+ resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.20.tgz#7527178b82f6a62a0f243d1f94fd30e3e3c21098"
+ integrity sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==
uglify-es@^3.1.9:
version "3.3.9"
@@ -5615,11 +5865,11 @@ uglify-es@^3.1.9:
source-map "~0.6.1"
uglify-js@^3.1.4:
- version "3.4.9"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3"
- integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.1.tgz#35c7de17971a4aa7689cd2eae0a5b39bb838c0c5"
+ integrity sha512-pnOF7jY82wdIhATVn87uUY/FHU+MDUdPLkmGFvGoclQmeu229eTkbG5gjGGBi3R7UuYYSEeYXY/TTY5j2aym2g==
dependencies:
- commander "~2.17.1"
+ commander "~2.20.3"
source-map "~0.6.1"
ultron@1.0.x:
@@ -5645,25 +5895,25 @@ unicode-match-property-ecmascript@^1.0.4:
unicode-canonical-property-names-ecmascript "^1.0.4"
unicode-property-aliases-ecmascript "^1.0.4"
-unicode-match-property-value-ecmascript@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4"
- integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==
+unicode-match-property-value-ecmascript@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277"
+ integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==
unicode-property-aliases-ecmascript@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0"
- integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57"
+ integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==
union-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
- integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
+ integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
dependencies:
arr-union "^3.1.0"
get-value "^2.0.6"
is-extendable "^0.1.1"
- set-value "^0.4.3"
+ set-value "^2.0.1"
universalify@^0.1.0:
version "0.1.2"
@@ -5719,9 +5969,9 @@ utils-merge@1.0.1:
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
uuid@^3.3.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
- integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866"
+ integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==
validate-npm-package-license@^3.0.1:
version "3.0.4"
@@ -5752,7 +6002,7 @@ w3c-hr-time@^1.0.1:
dependencies:
browser-process-hrtime "^0.1.2"
-walker@~1.0.5:
+walker@^1.0.7, walker@~1.0.5:
version "1.0.7"
resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=
@@ -5799,9 +6049,9 @@ whatwg-url@^6.4.1:
webidl-conversions "^4.0.2"
whatwg-url@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd"
- integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06"
+ integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==
dependencies:
lodash.sortby "^4.7.0"
tr46 "^1.0.1"
@@ -5812,7 +6062,7 @@ which-module@^2.0.0:
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-which@^1.2.12, which@^1.2.9, which@^1.3.0:
+which@^1.2.9, which@^1.3.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
@@ -5826,7 +6076,12 @@ wide-align@^1.1.0:
dependencies:
string-width "^1.0.2 || 2"
-wordwrap@^1.0.0, wordwrap@~1.0.0:
+word-wrap@~1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
+ integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
+
+wordwrap@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
@@ -5844,6 +6099,15 @@ wrap-ansi@^2.0.0:
string-width "^1.0.1"
strip-ansi "^3.0.1"
+wrap-ansi@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
+ integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
+ dependencies:
+ ansi-styles "^3.2.0"
+ string-width "^3.0.0"
+ strip-ansi "^5.0.0"
+
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
@@ -5927,16 +6191,16 @@ xpipe@^1.0.5:
integrity sha1-jdi/Rfw/f1Xw4FS4ePQ6YmFNr98=
xtend@~4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
- integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
y18n@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
-"y18n@^3.2.1 || ^4.0.0":
+y18n@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
@@ -5946,15 +6210,15 @@ yallist@^2.1.2:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
-yallist@^3.0.0, yallist@^3.0.2:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
- integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
+yallist@^3.0.0, yallist@^3.0.3:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
-yargs-parser@^11.1.1:
- version "11.1.1"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4"
- integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==
+yargs-parser@^13.1.1:
+ version "13.1.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0"
+ integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==
dependencies:
camelcase "^5.0.0"
decamelize "^1.2.0"
@@ -5966,23 +6230,21 @@ yargs-parser@^7.0.0:
dependencies:
camelcase "^4.1.0"
-yargs@^12.0.2:
- version "12.0.5"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13"
- integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==
+yargs@^13.3.0:
+ version "13.3.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83"
+ integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==
dependencies:
- cliui "^4.0.0"
- decamelize "^1.2.0"
+ cliui "^5.0.0"
find-up "^3.0.0"
- get-caller-file "^1.0.1"
- os-locale "^3.0.0"
+ get-caller-file "^2.0.1"
require-directory "^2.1.1"
- require-main-filename "^1.0.1"
+ require-main-filename "^2.0.0"
set-blocking "^2.0.0"
- string-width "^2.0.0"
+ string-width "^3.0.0"
which-module "^2.0.0"
- y18n "^3.2.1 || ^4.0.0"
- yargs-parser "^11.1.1"
+ y18n "^4.0.0"
+ yargs-parser "^13.1.1"
yargs@^9.0.0:
version "9.0.1"
diff --git a/ios/RN/BarcodeDetectorManagerMlkit.m b/ios/RN/BarcodeDetectorManagerMlkit.m
index 0831ded17..bf4400110 100644
--- a/ios/RN/BarcodeDetectorManagerMlkit.m
+++ b/ios/RN/BarcodeDetectorManagerMlkit.m
@@ -149,14 +149,14 @@ - (NSArray *)processBarcodes:(NSArray *)barcodes
if(barcode.contactInfo.name) {
FIRVisionBarcodePersonName *name = barcode.contactInfo.name;
NSObject *nameObject = @{
- @"formattedName" : name.formattedName,
- @"firstName" : name.first,
- @"middleName" : name.middle,
- @"lastName" : name.last,
- @"prefix" : name.prefix,
- @"pronounciation" : name.pronounciation,
- @"suffix" : name.suffix,
- };
+ @"formattedName" : name.formattedName ? name.formattedName : @"",
+ @"firstName" : name.first ? name.first : @"",
+ @"middleName" : name.middle ? name.middle : @"",
+ @"lastName" : name.last ? name.last : @"",
+ @"prefix" : name.prefix ? name.prefix : @"",
+ @"pronounciation" : name.pronounciation ? name.pronounciation : @"",
+ @"suffix" : name.suffix ? name.suffix : @"",
+ };
[resultDict setObject:nameObject forKey:@"name"];
}
if(barcode.contactInfo.phones) {
diff --git a/ios/RN/RNCamera.h b/ios/RN/RNCamera.h
index 4dd182d26..de8e7cfa3 100644
--- a/ios/RN/RNCamera.h
+++ b/ios/RN/RNCamera.h
@@ -16,30 +16,38 @@
@property(nonatomic, strong) dispatch_queue_t sessionQueue;
@property(nonatomic, strong) AVCaptureSession *session;
@property(nonatomic, strong) AVCaptureDeviceInput *videoCaptureDeviceInput;
+@property(nonatomic, strong) AVCaptureDeviceInput *audioCaptureDeviceInput;
@property(nonatomic, strong) AVCaptureStillImageOutput *stillImageOutput;
@property(nonatomic, strong) AVCaptureMovieFileOutput *movieFileOutput;
@property(nonatomic, strong) AVCaptureMetadataOutput *metadataOutput;
@property(nonatomic, strong) AVCaptureVideoDataOutput *videoDataOutput;
-@property(nonatomic, strong) id runtimeErrorHandlingObserver;
@property(nonatomic, strong) AVCaptureVideoPreviewLayer *previewLayer;
+@property(nonatomic, strong) id runtimeErrorHandlingObserver;
@property(nonatomic, strong) NSArray *barCodeTypes;
@property(nonatomic, strong) NSArray *googleVisionBarcodeTypes;
@property(nonatomic, assign) NSInteger presetCamera;
+@property(nonatomic, copy) NSString *cameraId; // copy required for strings/pointers
@property(assign, nonatomic) NSInteger flashMode;
@property(assign, nonatomic) CGFloat zoom;
+@property(assign, nonatomic) CGFloat maxZoom;
@property(assign, nonatomic) NSInteger autoFocus;
@property(copy, nonatomic) NSDictionary *autoFocusPointOfInterest;
@property(assign, nonatomic) float focusDepth;
@property(assign, nonatomic) NSInteger whiteBalance;
+@property(assign, nonatomic) float exposure;
+@property(assign, nonatomic) float exposureIsoMin;
+@property(assign, nonatomic) float exposureIsoMax;
@property(assign, nonatomic) AVCaptureSessionPreset pictureSize;
@property(nonatomic, assign) BOOL isReadingBarCodes;
-@property(nonatomic, assign) BOOL isRecording;
@property(nonatomic, assign) BOOL isRecordingInterrupted;
@property(nonatomic, assign) BOOL isDetectingFaces;
@property(nonatomic, assign) BOOL canReadText;
@property(nonatomic, assign) BOOL canDetectFaces;
@property(nonatomic, assign) BOOL canDetectBarcodes;
+@property(nonatomic, assign) BOOL captureAudio;
+@property(nonatomic, assign) BOOL keepAudioSession;
+@property(nonatomic, assign) CGRect rectOfInterest;
@property(assign, nonatomic) AVVideoCodecType videoCodecType;
@property(assign, nonatomic)
AVCaptureVideoStabilizationMode videoStabilizationMode;
@@ -55,12 +63,15 @@
- (void)updateAutoFocusPointOfInterest;
- (void)updateZoom;
- (void)updateWhiteBalance;
+- (void)updateExposure;
- (void)updatePictureSize;
+- (void)updateCaptureAudio;
// Face Detection props
- (void)updateTrackingEnabled:(id)requestedTracking;
- (void)updateFaceDetectionMode:(id)requestedMode;
- (void)updateFaceDetectionLandmarks:(id)requestedLandmarks;
- (void)updateFaceDetectionClassifications:(id)requestedClassifications;
+- (void)updateRectOfInterest;
// google Barcode props
- (void)updateGoogleVisionBarcodeType:(id)requestedTypes;
@@ -87,9 +98,11 @@
- (void)onMountingError:(NSDictionary *)event;
- (void)onCodeRead:(NSDictionary *)event;
- (void)onFacesDetected:(NSDictionary *)event;
+- (void)onPictureTaken:(NSDictionary *)event;
- (void)onPictureSaved:(NSDictionary *)event;
- (void)onText:(NSDictionary *)event;
- (void)onBarcodesDetected:(NSDictionary *)event;
- (bool)isRecording;
+- (void)onSubjectAreaChanged:(NSDictionary *)event;
@end
diff --git a/ios/RN/RNCamera.m b/ios/RN/RNCamera.m
index da13fa920..666df240b 100644
--- a/ios/RN/RNCamera.m
+++ b/ios/RN/RNCamera.m
@@ -6,12 +6,12 @@
#import
#import
#import
+#import
#import "RNSensorOrientationChecker.h"
@interface RNCamera ()
@property (nonatomic, weak) RCTBridge *bridge;
@property (nonatomic,strong) RNSensorOrientationChecker * sensorOrientationChecker;
-@property (nonatomic, assign, getter=isSessionPaused) BOOL paused;
@property (nonatomic, strong) RCTPromiseResolveBlock videoRecordedResolve;
@property (nonatomic, strong) RCTPromiseRejectBlock videoRecordedReject;
@@ -20,11 +20,14 @@ @interface RNCamera ()
@property (nonatomic, strong) id barcodeDetector;
@property (nonatomic, copy) RCTDirectEventBlock onCameraReady;
+@property (nonatomic, copy) RCTDirectEventBlock onAudioInterrupted;
+@property (nonatomic, copy) RCTDirectEventBlock onAudioConnected;
@property (nonatomic, copy) RCTDirectEventBlock onMountError;
@property (nonatomic, copy) RCTDirectEventBlock onBarCodeRead;
@property (nonatomic, copy) RCTDirectEventBlock onTextRecognized;
@property (nonatomic, copy) RCTDirectEventBlock onFacesDetected;
@property (nonatomic, copy) RCTDirectEventBlock onGoogleVisionBarcodesDetected;
+@property (nonatomic, copy) RCTDirectEventBlock onPictureTaken;
@property (nonatomic, copy) RCTDirectEventBlock onPictureSaved;
@property (nonatomic, assign) BOOL finishedReadingText;
@property (nonatomic, assign) BOOL finishedDetectingFace;
@@ -33,12 +36,20 @@ @interface RNCamera ()
@property (nonatomic, copy) NSDate *startFace;
@property (nonatomic, copy) NSDate *startBarcode;
+@property (nonatomic, copy) RCTDirectEventBlock onSubjectAreaChanged;
+@property (nonatomic, assign) BOOL isFocusedOnPoint;
+@property (nonatomic, assign) BOOL isExposedOnPoint;
+
@end
@implementation RNCamera
static NSDictionary *defaultFaceDetectorOptions = nil;
+BOOL _recordRequested = NO;
+BOOL _sessionInterrupted = NO;
+
+
- (id)initWithBridge:(RCTBridge *)bridge
{
if ((self = [super init])) {
@@ -61,28 +72,22 @@ - (id)initWithBridge:(RCTBridge *)bridge
self.previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
self.previewLayer.needsDisplayOnBoundsChange = YES;
#endif
- self.paused = NO;
- [self changePreviewOrientation:[UIApplication sharedApplication].statusBarOrientation];
- [self initializeCaptureSessionInput];
- [self startSession];
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(orientationChanged:)
- name:UIDeviceOrientationDidChangeNotification
- object:nil];
-
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(bridgeDidBackground:)
- name:UIApplicationDidEnterBackgroundNotification
- object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(bridgeDidForeground:)
- name:UIApplicationWillEnterForegroundNotification
- object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(audioDidInterrupted:)
- name:AVAudioSessionInterruptionNotification
- object:nil];
+ self.rectOfInterest = CGRectMake(0, 0, 1.0, 1.0);
self.autoFocus = -1;
+ self.exposure = -1;
+ self.presetCamera = AVCaptureDevicePositionUnspecified;
+ self.cameraId = nil;
+ self.isFocusedOnPoint = NO;
+ self.isExposedOnPoint = NO;
+ _recordRequested = NO;
+ _sessionInterrupted = NO;
+
+ // we will do other initialization after
+ // the view is loaded.
+ // This is to prevent code if the view is unused as react
+ // might create multiple instances of it.
+ // and we need to also add/remove event listeners.
+
}
return self;
@@ -109,6 +114,13 @@ - (void)onCodeRead:(NSDictionary *)event
}
}
+- (void)onPictureTaken:(NSDictionary *)event
+{
+ if (_onPictureTaken) {
+ _onPictureTaken(event);
+ }
+}
+
- (void)onPictureSaved:(NSDictionary *)event
{
if (_onPictureSaved) {
@@ -123,6 +135,13 @@ - (void)onText:(NSDictionary *)event
}
}
+- (void)onSubjectAreaChanged:(NSDictionary *)event
+{
+ if (_onSubjectAreaChanged) {
+ _onSubjectAreaChanged(event);
+ }
+}
+
- (void)layoutSubviews
{
[super layoutSubviews];
@@ -133,7 +152,7 @@ - (void)layoutSubviews
- (void)insertReactSubview:(UIView *)view atIndex:(NSInteger)atIndex
{
- [self insertSubview:view atIndex:atIndex + 1];
+ [self insertSubview:view atIndex:atIndex + 1]; // is this + 1 really necessary?
[super insertReactSubview:view atIndex:atIndex];
return;
}
@@ -145,28 +164,108 @@ - (void)removeReactSubview:(UIView *)subview
return;
}
-- (void)removeFromSuperview
+
+- (void)willMoveToSuperview:(nullable UIView *)newSuperview;
+{
+ if(newSuperview != nil){
+
+ [[NSNotificationCenter defaultCenter] addObserver:self
+ selector:@selector(orientationChanged:)
+ name:UIApplicationDidChangeStatusBarOrientationNotification
+ object:nil];
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionWasInterrupted:) name:AVCaptureSessionWasInterruptedNotification object:self.session];
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionDidStartRunning:) name:AVCaptureSessionDidStartRunningNotification object:self.session];
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionRuntimeError:) name:AVCaptureSessionRuntimeErrorNotification object:self.session];
+
+ [[NSNotificationCenter defaultCenter] addObserver:self
+ selector:@selector(audioDidInterrupted:)
+ name:AVAudioSessionInterruptionNotification
+ object:[AVAudioSession sharedInstance]];
+
+
+ // this is not needed since RN will update our type value
+ // after mount to set the camera's default, and that will already
+ // this method
+ // [self initializeCaptureSessionInput];
+ [self startSession];
+ }
+ else{
+ [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];
+
+ [[NSNotificationCenter defaultCenter] removeObserver:self name:AVCaptureSessionWasInterruptedNotification object:self.session];
+
+ [[NSNotificationCenter defaultCenter] removeObserver:self name:AVCaptureSessionDidStartRunningNotification object:self.session];
+
+ [[NSNotificationCenter defaultCenter] removeObserver:self name:AVCaptureSessionRuntimeErrorNotification object:self.session];
+
+ [[NSNotificationCenter defaultCenter] removeObserver:self name:AVAudioSessionInterruptionNotification object:[AVAudioSession sharedInstance]];
+
+ [self stopSession];
+ }
+
+ [super willMoveToSuperview:newSuperview];
+}
+
+
+
+// Helper to get a device from the currently set properties (type and camera id)
+// might return nil if device failed to be retrieved or is invalid
+-(AVCaptureDevice*)getDevice
{
- [super removeFromSuperview];
- [[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil];
- [self stopSession];
+ AVCaptureDevice *captureDevice;
+ if(self.cameraId != nil){
+ captureDevice = [RNCameraUtils deviceWithCameraId:self.cameraId];
+ }
+ else{
+ captureDevice = [RNCameraUtils deviceWithMediaType:AVMediaTypeVideo preferringPosition:self.presetCamera];
+ }
+ return captureDevice;
+
}
+// helper to return the camera's instance default preset
+// this is for pictures only, and video should set another preset
+// before recording.
+// This default preset returns much smoother photos than High.
+-(AVCaptureSessionPreset)getDefaultPreset
+{
+ AVCaptureSessionPreset preset =
+ ([self pictureSize] && [[self pictureSize] integerValue] >= 0) ? [self pictureSize] : AVCaptureSessionPresetPhoto;
+
+ return preset;
+}
+
+// helper to return the camera's default preset for videos
+// considering what is currently set
+-(AVCaptureSessionPreset)getDefaultPresetVideo
+{
+ // Default video quality AVCaptureSessionPresetHigh if non is provided
+ AVCaptureSessionPreset preset =
+ ([self defaultVideoQuality]) ? [RNCameraUtils captureSessionPresetForVideoResolution:[[self defaultVideoQuality] integerValue]] : AVCaptureSessionPresetHigh;
+
+ return preset;
+}
+
+
-(void)updateType
{
- dispatch_async(self.sessionQueue, ^{
- [self initializeCaptureSessionInput];
- if (!self.session.isRunning) {
- [self startSession];
- }
- });
+ [self initializeCaptureSessionInput];
+ [self startSession]; // will already check if session is running
}
+
- (void)updateFlashMode
{
AVCaptureDevice *device = [self.videoCaptureDeviceInput device];
NSError *error = nil;
+ if(device == nil){
+ return;
+ }
+
if (self.flashMode == RNCameraFlashModeTorch) {
if (![device hasTorch])
return;
@@ -218,11 +317,114 @@ - (void)updateFlashMode
[device unlockForConfiguration];
}
+// Function to cleanup focus listeners and variables on device
+// change. This is required since "defocusing" might not be
+// possible on the new device, and our device reference will be
+// different
+- (void)cleanupFocus:(AVCaptureDevice*) previousDevice {
+
+ self.isFocusedOnPoint = NO;
+ self.isExposedOnPoint = NO;
+
+ // cleanup listeners if we had any
+ if(previousDevice != nil){
+
+ // remove event listener
+ [[NSNotificationCenter defaultCenter] removeObserver:self name:AVCaptureDeviceSubjectAreaDidChangeNotification object:previousDevice];
+
+ // cleanup device flags
+ NSError *error = nil;
+ if (![previousDevice lockForConfiguration:&error]) {
+ if (error) {
+ RCTLogError(@"%s: %@", __func__, error);
+ }
+ return;
+ }
+
+ previousDevice.subjectAreaChangeMonitoringEnabled = NO;
+
+ [previousDevice unlockForConfiguration];
+
+ }
+}
+
+- (void)defocusPointOfInterest
+{
+ AVCaptureDevice *device = [self.videoCaptureDeviceInput device];
+
+
+ if (self.isFocusedOnPoint) {
+
+ self.isFocusedOnPoint = NO;
+
+ if(device == nil){
+ return;
+ }
+
+ device.subjectAreaChangeMonitoringEnabled = NO;
+ [[NSNotificationCenter defaultCenter] removeObserver:self name:AVCaptureDeviceSubjectAreaDidChangeNotification object:device];
+
+ CGPoint prevPoint = [device focusPointOfInterest];
+
+ CGPoint autofocusPoint = CGPointMake(0.5f, 0.5f);
+
+ [device setFocusPointOfInterest: autofocusPoint];
+
+ [device setFocusMode:AVCaptureFocusModeContinuousAutoFocus];
+
+ [self onSubjectAreaChanged:@{
+ @"prevPointOfInterest": @{
+ @"x": @(prevPoint.x),
+ @"y": @(prevPoint.y)
+ }
+ }];
+ }
+
+ if(self.isExposedOnPoint){
+ self.isExposedOnPoint = NO;
+
+ if(device == nil){
+ return;
+ }
+
+ CGPoint exposurePoint = CGPointMake(0.5f, 0.5f);
+
+ [device setExposurePointOfInterest: exposurePoint];
+
+ [device setExposureMode:AVCaptureExposureModeContinuousAutoExposure];
+ }
+}
+
+- (void)deexposePointOfInterest
+{
+ AVCaptureDevice *device = [self.videoCaptureDeviceInput device];
+
+
+ if(self.isExposedOnPoint){
+ self.isExposedOnPoint = NO;
+
+ if(device == nil){
+ return;
+ }
+
+ CGPoint exposurePoint = CGPointMake(0.5f, 0.5f);
+
+ [device setExposurePointOfInterest: exposurePoint];
+
+ [device setExposureMode:AVCaptureExposureModeContinuousAutoExposure];
+ }
+}
+
+
- (void)updateAutoFocusPointOfInterest
{
AVCaptureDevice *device = [self.videoCaptureDeviceInput device];
NSError *error = nil;
+ if(device == nil){
+ return;
+ }
+
if (![device lockForConfiguration:&error]) {
if (error) {
RCTLogError(@"%s: %@", __func__, error);
@@ -231,27 +433,77 @@ - (void)updateAutoFocusPointOfInterest
}
if ([self.autoFocusPointOfInterest objectForKey:@"x"] && [self.autoFocusPointOfInterest objectForKey:@"y"]) {
+
float xValue = [self.autoFocusPointOfInterest[@"x"] floatValue];
float yValue = [self.autoFocusPointOfInterest[@"y"] floatValue];
+
+ CGPoint autofocusPoint = CGPointMake(xValue, yValue);
+
+
if ([device isFocusPointOfInterestSupported] && [device isFocusModeSupported:AVCaptureFocusModeContinuousAutoFocus]) {
- CGPoint autofocusPoint = CGPointMake(xValue, yValue);
[device setFocusPointOfInterest:autofocusPoint];
[device setFocusMode:AVCaptureFocusModeContinuousAutoFocus];
- }
- else {
+
+ if (!self.isFocusedOnPoint) {
+ self.isFocusedOnPoint = YES;
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(AutofocusDelegate:) name:AVCaptureDeviceSubjectAreaDidChangeNotification object:device];
+ device.subjectAreaChangeMonitoringEnabled = YES;
+ }
+ } else {
RCTLogWarn(@"AutoFocusPointOfInterest not supported");
}
+
+ if([self.autoFocusPointOfInterest objectForKey:@"autoExposure"]){
+ BOOL autoExposure = [self.autoFocusPointOfInterest[@"autoExposure"] boolValue];
+
+ if(autoExposure){
+ if([device isExposurePointOfInterestSupported] && [device isExposureModeSupported:AVCaptureExposureModeContinuousAutoExposure])
+ {
+ [device setExposurePointOfInterest:autofocusPoint];
+ [device setExposureMode:AVCaptureExposureModeContinuousAutoExposure];
+ self.isExposedOnPoint = YES;
+
+ } else {
+ RCTLogWarn(@"AutoExposurePointOfInterest not supported");
+ }
+ }
+ else{
+ [self deexposePointOfInterest];
+ }
+ }
+ else{
+ [self deexposePointOfInterest];
+ }
+
+ } else {
+ [self defocusPointOfInterest];
+ [self deexposePointOfInterest];
}
[device unlockForConfiguration];
}
+-(void) AutofocusDelegate:(NSNotification*) notification {
+ AVCaptureDevice* device = [notification object];
+
+ if ([device lockForConfiguration:NULL] == YES ) {
+ [self defocusPointOfInterest];
+ [self deexposePointOfInterest];
+ [device unlockForConfiguration];
+ }
+}
+
- (void)updateFocusMode
{
AVCaptureDevice *device = [self.videoCaptureDeviceInput device];
NSError *error = nil;
+ if(device == nil){
+ return;
+ }
+
if (![device lockForConfiguration:&error]) {
if (error) {
RCTLogError(@"%s: %@", __func__, error);
@@ -303,6 +555,10 @@ - (void)updateZoom {
AVCaptureDevice *device = [self.videoCaptureDeviceInput device];
NSError *error = nil;
+ if(device == nil){
+ return;
+ }
+
if (![device lockForConfiguration:&error]) {
if (error) {
RCTLogError(@"%s: %@", __func__, error);
@@ -310,7 +566,16 @@ - (void)updateZoom {
return;
}
- device.videoZoomFactor = (device.activeFormat.videoMaxZoomFactor - 1.0) * self.zoom + 1.0;
+ float maxZoom;
+ if(self.maxZoom > 1){
+ maxZoom = MIN(self.maxZoom, device.activeFormat.videoMaxZoomFactor);
+ }
+ else{
+ maxZoom = device.activeFormat.videoMaxZoomFactor;
+ }
+
+ device.videoZoomFactor = (maxZoom - 1) * self.zoom + 1;
+
[device unlockForConfiguration];
}
@@ -320,6 +585,10 @@ - (void)updateWhiteBalance
AVCaptureDevice *device = [self.videoCaptureDeviceInput device];
NSError *error = nil;
+ if(device == nil){
+ return;
+ }
+
if (![device lockForConfiguration:&error]) {
if (error) {
RCTLogError(@"%s: %@", __func__, error);
@@ -338,9 +607,14 @@ - (void)updateWhiteBalance
AVCaptureWhiteBalanceGains rgbGains = [device deviceWhiteBalanceGainsForTemperatureAndTintValues:temperatureAndTint];
__weak __typeof__(device) weakDevice = device;
if ([device lockForConfiguration:&error]) {
- [device setWhiteBalanceModeLockedWithDeviceWhiteBalanceGains:rgbGains completionHandler:^(CMTime syncTime) {
- [weakDevice unlockForConfiguration];
- }];
+ @try{
+ [device setWhiteBalanceModeLockedWithDeviceWhiteBalanceGains:rgbGains completionHandler:^(CMTime syncTime) {
+ [weakDevice unlockForConfiguration];
+ }];
+ }
+ @catch(NSException *exception){
+ RCTLogError(@"Failed to set white balance: %@", exception);
+ }
} else {
if (error) {
RCTLogError(@"%s: %@", __func__, error);
@@ -351,9 +625,88 @@ - (void)updateWhiteBalance
[device unlockForConfiguration];
}
+
+/// Set the AVCaptureDevice's ISO values based on RNCamera's 'exposure' value,
+/// which is a float between 0 and 1 if defined by the user or -1 to indicate that no
+/// selection is active. 'exposure' gets mapped to a valid ISO value between the
+/// device's min/max-range of ISO-values.
+///
+/// The exposure gets reset every time the user manually sets the autofocus-point in
+/// 'updateAutoFocusPointOfInterest' automatically. Currently no explicit event is fired.
+/// This leads to two 'exposure'-states: one here and one in the component, which is
+/// fine. 'exposure' here gets only synced if 'exposure' on the js-side changes. You
+/// can manually keep the state in sync by setting 'exposure' in your React-state
+/// everytime the js-updateAutoFocusPointOfInterest-function gets called.
+- (void)updateExposure
+{
+ AVCaptureDevice *device = [self.videoCaptureDeviceInput device];
+ NSError *error = nil;
+
+ if(device == nil){
+ return;
+ }
+
+ if (![device lockForConfiguration:&error]) {
+ if (error) {
+ RCTLogError(@"%s: %@", __func__, error);
+ }
+ return;
+ }
+
+ // Check that either no explicit exposure-val has been set yet
+ // or that it has been reset. Check for > 1 is only a guard.
+ if(self.exposure < 0 || self.exposure > 1){
+ [device setExposureMode:AVCaptureExposureModeContinuousAutoExposure];
+ [device unlockForConfiguration];
+ return;
+ }
+
+ // Lazy init of range.
+ if(!self.exposureIsoMin){ self.exposureIsoMin = device.activeFormat.minISO; }
+ if(!self.exposureIsoMax){ self.exposureIsoMax = device.activeFormat.maxISO; }
+
+ // Get a valid ISO-value in range from min to max. After we mapped the exposure
+ // (a val between 0 - 1), the result gets corrected by the offset from 0, which
+ // is the min-ISO-value.
+ float appliedExposure = (self.exposureIsoMax - self.exposureIsoMin) * self.exposure + self.exposureIsoMin;
+
+ // Make sure we're in AVCaptureExposureModeCustom, else the ISO + duration time won't apply.
+ // Also make sure the device can set exposure
+ if([device isExposureModeSupported:AVCaptureExposureModeCustom]){
+ if(device.exposureMode != AVCaptureExposureModeCustom){
+ [device setExposureMode:AVCaptureExposureModeCustom];
+ }
+
+ // Only set the ISO for now, duration will be default as a change might affect frame rate.
+ [device setExposureModeCustomWithDuration:AVCaptureExposureDurationCurrent ISO:appliedExposure completionHandler:nil];
+ }
+ else{
+ RCTLog(@"Device does not support AVCaptureExposureModeCustom");
+ }
+ [device unlockForConfiguration];
+}
+
- (void)updatePictureSize
{
- [self updateSessionPreset:self.pictureSize];
+ // make sure to call this function so the right default is used if
+ // "None" is used
+ AVCaptureSessionPreset preset = [self getDefaultPreset];
+ if (self.session.sessionPreset != preset) {
+ [self updateSessionPreset: preset];
+ }
+}
+
+
+- (void)updateCaptureAudio
+{
+ dispatch_async(self.sessionQueue, ^{
+ if(self.captureAudio){
+ [self initializeAudioCaptureSessionInput];
+ }
+ else{
+ [self removeAudioCaptureSessionInput];
+ }
+ });
}
- (void)takePictureWithOrientation:(NSDictionary *)options resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject{
@@ -367,8 +720,15 @@ - (void)takePictureWithOrientation:(NSDictionary *)options resolve:(RCTPromiseRe
[self takePicture:tmpOptions resolve:resolve reject:reject];
}];
}
+
- (void)takePicture:(NSDictionary *)options resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject
{
+ // if video device is not set, reject
+ if(self.videoCaptureDeviceInput == nil || !self.session.isRunning){
+ reject(@"E_IMAGE_CAPTURE_FAILED", @"Camera is not ready.", nil);
+ return;
+ }
+
if (!self.deviceOrientation) {
[self takePictureWithOrientation:options resolve:resolve reject:reject];
return;
@@ -378,94 +738,222 @@ - (void)takePicture:(NSDictionary *)options resolve:(RCTPromiseResolveBlock)reso
AVCaptureConnection *connection = [self.stillImageOutput connectionWithMediaType:AVMediaTypeVideo];
[connection setVideoOrientation:orientation];
- [self.stillImageOutput captureStillImageAsynchronouslyFromConnection:connection completionHandler: ^(CMSampleBufferRef imageSampleBuffer, NSError *error) {
- if (imageSampleBuffer && !error) {
- if ([options[@"pauseAfterCapture"] boolValue]) {
- [[self.previewLayer connection] setEnabled:NO];
- }
+ @try {
+ [self.stillImageOutput captureStillImageAsynchronouslyFromConnection:connection completionHandler: ^(CMSampleBufferRef imageSampleBuffer, NSError *error) {
+ if (imageSampleBuffer && !error) {
- BOOL useFastMode = [options valueForKey:@"fastMode"] != nil && [options[@"fastMode"] boolValue];
- if (useFastMode) {
- resolve(nil);
- }
- NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer];
+ if ([options[@"pauseAfterCapture"] boolValue]) {
+ [[self.previewLayer connection] setEnabled:NO];
+ }
- UIImage *takenImage = [UIImage imageWithData:imageData];
+ BOOL useFastMode = [options valueForKey:@"fastMode"] != nil && [options[@"fastMode"] boolValue];
+ if (useFastMode) {
+ resolve(nil);
+ }
- CGImageRef takenCGImage = takenImage.CGImage;
- CGSize previewSize;
- if (UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation])) {
- previewSize = CGSizeMake(self.previewLayer.frame.size.height, self.previewLayer.frame.size.width);
- } else {
- previewSize = CGSizeMake(self.previewLayer.frame.size.width, self.previewLayer.frame.size.height);
- }
- CGRect cropRect = CGRectMake(0, 0, CGImageGetWidth(takenCGImage), CGImageGetHeight(takenCGImage));
- CGRect croppedSize = AVMakeRectWithAspectRatioInsideRect(previewSize, cropRect);
- takenImage = [RNImageUtils cropImage:takenImage toRect:croppedSize];
+ [self onPictureTaken:@{}];
- if ([options[@"mirrorImage"] boolValue]) {
- takenImage = [RNImageUtils mirrorImage:takenImage];
- }
- if ([options[@"forceUpOrientation"] boolValue]) {
- takenImage = [RNImageUtils forceUpOrientation:takenImage];
- }
- if ([options[@"width"] integerValue]) {
- takenImage = [RNImageUtils scaleImage:takenImage toWidth:[options[@"width"] integerValue]];
- }
+ // get JPEG image data
+ NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer];
+ UIImage *takenImage = [UIImage imageWithData:imageData];
- NSMutableDictionary *response = [[NSMutableDictionary alloc] init];
- float quality = [options[@"quality"] floatValue];
- NSData *takenImageData = UIImageJPEGRepresentation(takenImage, quality);
- NSString *path = [RNFileSystem generatePathInDirectory:[[RNFileSystem cacheDirectoryPath] stringByAppendingPathComponent:@"Camera"] withExtension:@".jpg"];
- if (![options[@"doNotSave"] boolValue]) {
- response[@"uri"] = [RNImageUtils writeImage:takenImageData toPath:path];
- }
- response[@"width"] = @(takenImage.size.width);
- response[@"height"] = @(takenImage.size.height);
- if ([options[@"base64"] boolValue]) {
- response[@"base64"] = [takenImageData base64EncodedStringWithOptions:0];
- }
+ // Adjust/crop image based on preview dimensions
+ // TODO: This seems needed because iOS does not allow
+ // for aspect ratio settings, so this is the best we can get
+ // to mimic android's behaviour.
+ CGImageRef takenCGImage = takenImage.CGImage;
+ CGSize previewSize;
+ if (UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation])) {
+ previewSize = CGSizeMake(self.previewLayer.frame.size.height, self.previewLayer.frame.size.width);
+ } else {
+ previewSize = CGSizeMake(self.previewLayer.frame.size.width, self.previewLayer.frame.size.height);
+ }
+ CGRect cropRect = CGRectMake(0, 0, CGImageGetWidth(takenCGImage), CGImageGetHeight(takenCGImage));
+ CGRect croppedSize = AVMakeRectWithAspectRatioInsideRect(previewSize, cropRect);
+ takenImage = [RNImageUtils cropImage:takenImage toRect:croppedSize];
+
+ // apply other image settings
+ bool resetOrientation = NO;
+ if ([options[@"mirrorImage"] boolValue]) {
+ takenImage = [RNImageUtils mirrorImage:takenImage];
+ }
+ if ([options[@"forceUpOrientation"] boolValue]) {
+ takenImage = [RNImageUtils forceUpOrientation:takenImage];
+ resetOrientation = YES;
+ }
+ if ([options[@"width"] integerValue]) {
+ takenImage = [RNImageUtils scaleImage:takenImage toWidth:[options[@"width"] integerValue]];
+ resetOrientation = YES;
+ }
+
+ // get image metadata so we can re-add it later
+ // make it mutable since we need to adjust quality/compression
+ CFDictionaryRef metaDict = CMCopyDictionaryOfAttachments(NULL, imageSampleBuffer, kCMAttachmentMode_ShouldPropagate);
+
+ CFMutableDictionaryRef mutableMetaDict = CFDictionaryCreateMutableCopy(NULL, 0, metaDict);
+
+ // release the meta dict now that we've copied it
+ // to Objective-C land
+ CFRelease(metaDict);
+
+ // bridge the copy for auto release
+ NSMutableDictionary *metadata = (NSMutableDictionary *)CFBridgingRelease(mutableMetaDict);
+
+
+ // Get final JPEG image and set compression
+ float quality = [options[@"quality"] floatValue];
+ [metadata setObject:@(quality) forKey:(__bridge NSString *)kCGImageDestinationLossyCompressionQuality];
- if ([options[@"exif"] boolValue]) {
- int imageRotation;
- switch (takenImage.imageOrientation) {
- case UIImageOrientationLeft:
- case UIImageOrientationRightMirrored:
- imageRotation = 90;
- break;
- case UIImageOrientationRight:
- case UIImageOrientationLeftMirrored:
- imageRotation = -90;
- break;
- case UIImageOrientationDown:
- case UIImageOrientationDownMirrored:
- imageRotation = 180;
- break;
- case UIImageOrientationUpMirrored:
- default:
- imageRotation = 0;
- break;
+ // Reset exif orientation if we need to due to image changes
+ // that already rotate the image.
+ // Other dimension attributes will be set automatically
+ // regardless of what we have on our metadata dict
+ if (resetOrientation){
+ metadata[(NSString*)kCGImagePropertyOrientation] = @(1);
}
- [RNImageUtils updatePhotoMetadata:imageSampleBuffer withAdditionalData:@{ @"Orientation": @(imageRotation) } inResponse:response]; // TODO
- }
- response[@"pictureOrientation"] = @([self.orientation integerValue]);
- response[@"deviceOrientation"] = @([self.deviceOrientation integerValue]);
- self.orientation = nil;
- self.deviceOrientation = nil;
- if (useFastMode) {
- [self onPictureSaved:@{@"data": response, @"id": options[@"id"]}];
+ // get our final image data with added metadata
+ // idea taken from: https://stackoverflow.com/questions/9006759/how-to-write-exif-metadata-to-an-image-not-the-camera-roll-just-a-uiimage-or-j/9091472
+ NSMutableData * destData = [NSMutableData data];
+
+ CGImageDestinationRef destination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)destData, kUTTypeJPEG, 1, NULL);
+
+ // defaults to true, must like Android
+ bool writeExif = true;
+
+ if(options[@"writeExif"]){
+
+ // if we received an object, merge with our meta
+ if ([options[@"writeExif"] isKindOfClass:[NSDictionary class]]){
+ NSDictionary *newExif = options[@"writeExif"];
+
+ // need to update both, since apple splits data
+ // across exif and tiff dicts. No problems with duplicates
+ // they will be handled appropiately.
+ NSMutableDictionary *exif = metadata[(NSString*)kCGImagePropertyExifDictionary];
+
+ NSMutableDictionary *tiff = metadata[(NSString*)kCGImagePropertyTIFFDictionary];
+
+
+ // initialize exif dict if not built
+ if(!exif){
+ exif = [[NSMutableDictionary alloc] init];
+ metadata[(NSString*)kCGImagePropertyExifDictionary] = exif;
+ }
+
+ if(!tiff){
+ tiff = [[NSMutableDictionary alloc] init];
+ metadata[(NSString*)kCGImagePropertyTIFFDictionary] = exif;
+ }
+
+ // merge new exif info
+ [exif addEntriesFromDictionary:newExif];
+ [tiff addEntriesFromDictionary:newExif];
+
+
+ // correct any GPS metadata like Android does
+ // need to get the right format for each value.
+ NSMutableDictionary *gpsDict = [[NSMutableDictionary alloc] init];
+
+ if(newExif[@"GPSLatitude"]){
+ gpsDict[(NSString *)kCGImagePropertyGPSLatitude] = @(fabs([newExif[@"GPSLatitude"] floatValue]));
+
+ gpsDict[(NSString *)kCGImagePropertyGPSLatitudeRef] = [newExif[@"GPSLatitude"] floatValue] >= 0 ? @"N" : @"S";
+
+ }
+ if(newExif[@"GPSLongitude"]){
+ gpsDict[(NSString *)kCGImagePropertyGPSLongitude] = @(fabs([newExif[@"GPSLongitude"] floatValue]));
+
+ gpsDict[(NSString *)kCGImagePropertyGPSLongitudeRef] = [newExif[@"GPSLongitude"] floatValue] >= 0 ? @"E" : @"W";
+ }
+ if(newExif[@"GPSAltitude"]){
+ gpsDict[(NSString *)kCGImagePropertyGPSAltitude] = @(fabs([newExif[@"GPSAltitude"] floatValue]));
+
+ gpsDict[(NSString *)kCGImagePropertyGPSAltitudeRef] = [newExif[@"GPSAltitude"] floatValue] >= 0 ? @(0) : @(1);
+ }
+
+ // if we don't have gps info, add it
+ // otherwise, merge it
+ if(!metadata[(NSString *)kCGImagePropertyGPSDictionary]){
+ metadata[(NSString *)kCGImagePropertyGPSDictionary] = gpsDict;
+ }
+ else{
+ [metadata[(NSString *)kCGImagePropertyGPSDictionary] addEntriesFromDictionary:gpsDict];
+ }
+
+ }
+ else{
+ writeExif = [options[@"writeExif"] boolValue];
+ }
+
+ }
+
+ CGImageDestinationAddImage(destination, takenImage.CGImage, writeExif ? ((__bridge CFDictionaryRef) metadata) : nil);
+
+
+ // write final image data with metadata to our destination
+ if (CGImageDestinationFinalize(destination)){
+
+ NSMutableDictionary *response = [[NSMutableDictionary alloc] init];
+
+ NSString *path = [RNFileSystem generatePathInDirectory:[[RNFileSystem cacheDirectoryPath] stringByAppendingPathComponent:@"Camera"] withExtension:@".jpg"];
+
+ if (![options[@"doNotSave"] boolValue]) {
+ response[@"uri"] = [RNImageUtils writeImage:destData toPath:path];
+ }
+ response[@"width"] = @(takenImage.size.width);
+ response[@"height"] = @(takenImage.size.height);
+
+ if ([options[@"base64"] boolValue]) {
+ response[@"base64"] = [destData base64EncodedStringWithOptions:0];
+ }
+
+ if ([options[@"exif"] boolValue]) {
+ response[@"exif"] = metadata;
+
+ // No longer needed since we always get the photo metadata now
+ //[RNImageUtils updatePhotoMetadata:imageSampleBuffer withAdditionalData:@{ @"Orientation": @(imageRotation) } inResponse:response]; // TODO
+ }
+
+ response[@"pictureOrientation"] = @([self.orientation integerValue]);
+ response[@"deviceOrientation"] = @([self.deviceOrientation integerValue]);
+ self.orientation = nil;
+ self.deviceOrientation = nil;
+
+ if (useFastMode) {
+ [self onPictureSaved:@{@"data": response, @"id": options[@"id"]}];
+ } else {
+ resolve(response);
+ }
+ }
+ else{
+ reject(@"E_IMAGE_CAPTURE_FAILED", @"Image could not be saved", error);
+ }
+
+ // release image resource
+ @try{
+ CFRelease(destination);
+ }
+ @catch(NSException *exception){
+ RCTLogError(@"Failed to release CGImageDestinationRef: %@", exception);
+ }
+
} else {
- resolve(response);
+ reject(@"E_IMAGE_CAPTURE_FAILED", @"Image could not be captured", error);
}
- } else {
- reject(@"E_IMAGE_CAPTURE_FAILED", @"Image could not be captured", error);
- }
- }];
+ }];
+ } @catch (NSException *exception) {
+ reject(
+ @"E_IMAGE_CAPTURE_FAILED",
+ @"Got exception while taking picture",
+ [NSError errorWithDomain:@"E_IMAGE_CAPTURE_FAILED" code: 500 userInfo:@{NSLocalizedDescriptionKey:exception.reason}]
+ );
+ }
}
+
- (void)recordWithOrientation:(NSDictionary *)options resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject{
[self.sensorOrientationChecker getDeviceOrientationWithBlock:^(UIInterfaceOrientation orientation) {
NSMutableDictionary *tmpOptions = [options mutableCopy];
@@ -479,6 +967,11 @@ - (void)recordWithOrientation:(NSDictionary *)options resolve:(RCTPromiseResolve
}
- (void)record:(NSDictionary *)options resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject
{
+ if(self.videoCaptureDeviceInput == nil || !self.session.isRunning){
+ reject(@"E_VIDEO_CAPTURE_FAILED", @"Camera is not ready.", nil);
+ return;
+ }
+
if (!self.deviceOrientation) {
[self recordWithOrientation:options resolve:resolve reject:reject];
return;
@@ -486,6 +979,13 @@ - (void)record:(NSDictionary *)options resolve:(RCTPromiseResolveBlock)resolve r
NSInteger orientation = [options[@"orientation"] integerValue];
+ // some operations will change our config
+ // so we batch config updates, even if inner calls
+ // might also call this, only the outermost commit will take effect
+ // making the camera changes much faster.
+ [self.session beginConfiguration];
+
+
if (_movieFileOutput == nil) {
// At the time of writing AVCaptureMovieFileOutput and AVCaptureVideoDataOutput (> GMVDataOutput)
// cannot coexist on the same AVSession (see: https://stackoverflow.com/a/4986032/1123156).
@@ -503,6 +1003,7 @@ - (void)record:(NSDictionary *)options resolve:(RCTPromiseResolveBlock)resolve r
}
if (self.movieFileOutput == nil || self.movieFileOutput.isRecording || _videoRecordedResolve != nil || _videoRecordedReject != nil) {
+ [self.session commitConfiguration];
return;
}
@@ -515,16 +1016,19 @@ - (void)record:(NSDictionary *)options resolve:(RCTPromiseResolveBlock)resolve r
self.movieFileOutput.maxRecordedFileSize = [options[@"maxFileSize"] integerValue];
}
+ // video preset will be cleanedup/restarted once capture is done
+ // with a camera cleanup call
if (options[@"quality"]) {
AVCaptureSessionPreset newQuality = [RNCameraUtils captureSessionPresetForVideoResolution:(RNCameraVideoResolution)[options[@"quality"] integerValue]];
if (self.session.sessionPreset != newQuality) {
[self updateSessionPreset:newQuality];
}
}
-
- // only update audio session when mute is not set or set to false, because otherwise there will be a flickering
- if ([options valueForKey:@"mute"] == nil || ([options valueForKey:@"mute"] != nil && ![options[@"mute"] boolValue])) {
- [self updateSessionAudioIsMuted:NO];
+ else{
+ AVCaptureSessionPreset newQuality = [self getDefaultPresetVideo];
+ if (self.session.sessionPreset != newQuality) {
+ [self updateSessionPreset:newQuality];
+ }
}
AVCaptureConnection *connection = [self.movieFileOutput connectionWithMediaType:AVMediaTypeVideo];
@@ -538,19 +1042,62 @@ - (void)record:(NSDictionary *)options resolve:(RCTPromiseResolveBlock)resolve r
[connection setVideoOrientation:orientation];
if (options[@"codec"]) {
- if (@available(iOS 10, *)) {
- AVVideoCodecType videoCodecType = options[@"codec"];
- if ([self.movieFileOutput.availableVideoCodecTypes containsObject:videoCodecType]) {
- [self.movieFileOutput setOutputSettings:@{AVVideoCodecKey:videoCodecType} forConnection:connection];
- self.videoCodecType = videoCodecType;
- } else {
- RCTLogWarn(@"%s: Setting videoCodec is only supported above iOS version 10.", __func__);
+ if (@available(iOS 10, *)) {
+ AVVideoCodecType videoCodecType = options[@"codec"];
+ if ([self.movieFileOutput.availableVideoCodecTypes containsObject:videoCodecType]) {
+ self.videoCodecType = videoCodecType;
+ if(options[@"videoBitrate"]) {
+ NSString *videoBitrate = options[@"videoBitrate"];
+ [self.movieFileOutput setOutputSettings:@{
+ AVVideoCodecKey:videoCodecType,
+ AVVideoCompressionPropertiesKey:
+ @{
+ AVVideoAverageBitRateKey:videoBitrate
+ }
+ } forConnection:connection];
+ } else {
+ [self.movieFileOutput setOutputSettings:@{AVVideoCodecKey:videoCodecType} forConnection:connection];
+ }
+ } else {
+ RCTLogWarn(@"%s: Setting videoCodec is only supported above iOS version 10.", __func__);
+ }
}
- }
+ }
+
+
+ BOOL recordAudio = [options valueForKey:@"mute"] == nil || ([options valueForKey:@"mute"] != nil && ![options[@"mute"] boolValue]);
+
+
+ // sound recording connection, we can easily turn it on/off without manipulating inputs, this prevents flickering.
+ // note that mute will also be set to true
+ // if captureAudio is set to false on the JS side.
+ // Check the property anyways just in case it is manipulated
+ // with setNativeProps
+ if(recordAudio && self.captureAudio){
+
+ // if we haven't initialized our capture session yet
+ // initialize it. This will cause video to flicker.
+ [self initializeAudioCaptureSessionInput];
+
+
+ // finally, make sure we got access to the capture device
+ // and turn the connection on.
+ if(self.audioCaptureDeviceInput != nil){
+ AVCaptureConnection *audioConnection = [self.movieFileOutput connectionWithMediaType:AVMediaTypeAudio];
+ audioConnection.enabled = YES;
+ }
+
+ }
+
+ // if we have a capture input but are muted
+ // disable connection. No flickering here.
+ else if(self.audioCaptureDeviceInput != nil){
+ AVCaptureConnection *audioConnection = [self.movieFileOutput connectionWithMediaType:AVMediaTypeAudio];
+ audioConnection.enabled = NO;
}
dispatch_async(self.sessionQueue, ^{
- [self updateFlashMode];
+
NSString *path = nil;
if (options[@"path"]) {
path = options[@"path"];
@@ -566,21 +1113,60 @@ - (void)record:(NSDictionary *)options resolve:(RCTPromiseResolveBlock)resolve r
}
}
- NSURL *outputURL = [[NSURL alloc] initFileURLWithPath:path];
- [self.movieFileOutput startRecordingToOutputFileURL:outputURL recordingDelegate:self];
- self.isRecording = YES;
- self.videoRecordedResolve = resolve;
- self.videoRecordedReject = reject;
+ // finally, commit our config changes before starting to record
+ [self.session commitConfiguration];
+
+ // and update flash in case it was turned off automatically
+ // due to session/preset changes
+ [self updateFlashMode];
+
+ // after everything is set, start recording with a tiny delay
+ // to ensure the camera already has focus and exposure set.
+ double delayInSeconds = 0.5;
+ dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
+
+ // we will use this flag to stop recording
+ // if it was requested to stop before it could even start
+ _recordRequested = YES;
+
+ dispatch_after(popTime, self.sessionQueue, ^(void){
+
+ // our session might have stopped in between the timeout
+ // so make sure it is still valid, otherwise, error and cleanup
+ if(self.movieFileOutput != nil && self.videoCaptureDeviceInput != nil && _recordRequested){
+ NSURL *outputURL = [[NSURL alloc] initFileURLWithPath:path];
+ [self.movieFileOutput startRecordingToOutputFileURL:outputURL recordingDelegate:self];
+ self.videoRecordedResolve = resolve;
+ self.videoRecordedReject = reject;
+
+ }
+ else{
+ reject(@"E_VIDEO_CAPTURE_FAILED", !_recordRequested ? @"Recording request cancelled." : @"Camera is not ready.", nil);
+ [self cleanupCamera];
+ }
+
+ // reset our flag
+ _recordRequested = NO;
+ });
+
+
});
}
- (void)stopRecording
{
- if ([self.movieFileOutput isRecording]) {
- [self.movieFileOutput stopRecording];
- } else {
- RCTLogWarn(@"Video is not recording.");
- }
+ dispatch_async(self.sessionQueue, ^{
+ if ([self.movieFileOutput isRecording]) {
+ [self.movieFileOutput stopRecording];
+ } else {
+ if(_recordRequested){
+ _recordRequested = NO;
+ }
+ else{
+ RCTLogWarn(@"Video is not recording.");
+ }
+ }
+ });
}
- (void)resumePreview
@@ -600,14 +1186,25 @@ - (void)startSession
return;
#endif
dispatch_async(self.sessionQueue, ^{
- if (self.presetCamera == AVCaptureDevicePositionUnspecified) {
+
+ // if session already running, also return and fire ready event
+ // this is helpfu when the device type or ID is changed and we must
+ // receive another ready event (like Android does)
+ if(self.session.isRunning){
+ [self onReady:nil];
return;
}
- // Default video quality AVCaptureSessionPresetHigh if non is provided
- AVCaptureSessionPreset preset = ([self defaultVideoQuality]) ? [RNCameraUtils captureSessionPresetForVideoResolution:[[self defaultVideoQuality] integerValue]] : AVCaptureSessionPresetHigh;
+ // if camera not set (invalid type and no ID) return.
+ if (self.presetCamera == AVCaptureDevicePositionUnspecified && self.cameraId == nil) {
+ return;
+ }
+
+ // video device was not initialized, also return
+ if(self.videoCaptureDeviceInput == nil){
+ return;
+ }
- self.session.sessionPreset = preset == AVCaptureSessionPresetHigh ? AVCaptureSessionPresetPhoto: preset;
AVCaptureStillImageOutput *stillImageOutput = [[AVCaptureStillImageOutput alloc] init];
if ([self.session canAddOutput:stillImageOutput]) {
@@ -626,18 +1223,7 @@ - (void)startSession
}
[self setupOrDisableBarcodeScanner];
- __weak RNCamera *weakSelf = self;
- [self setRuntimeErrorHandlingObserver:
- [NSNotificationCenter.defaultCenter addObserverForName:AVCaptureSessionRuntimeErrorNotification object:self.session queue:nil usingBlock:^(NSNotification *note) {
- RNCamera *strongSelf = weakSelf;
- dispatch_async(strongSelf.sessionQueue, ^{
- // Manually restarting the session since it must
- // have been stopped due to an error.
- [strongSelf.session startRunning];
- [strongSelf onReady:nil];
- });
- }]];
-
+ _sessionInterrupted = NO;
[self.session startRunning];
[self onReady:nil];
});
@@ -661,6 +1247,7 @@ - (void)stopSession
[self.previewLayer removeFromSuperlayer];
[self.session commitConfiguration];
[self.session stopRunning];
+
for (AVCaptureInput *input in self.session.inputs) {
[self.session removeInput:input];
}
@@ -668,52 +1255,228 @@ - (void)stopSession
for (AVCaptureOutput *output in self.session.outputs) {
[self.session removeOutput:output];
}
+
+ // cleanup audio input if any, and release
+ // audio session so other apps can continue playback.
+ [self removeAudioCaptureSessionInput];
+
+ // clean these up as well since we've removed
+ // all inputs and outputs from session
+ self.videoCaptureDeviceInput = nil;
+ self.audioCaptureDeviceInput = nil;
+ self.movieFileOutput = nil;
});
}
-- (void)initializeCaptureSessionInput
+// Initializes audio capture device
+// Note: Ensure this is called within a a session configuration block
+- (void)initializeAudioCaptureSessionInput
{
- if (self.videoCaptureDeviceInput.device.position == self.presetCamera) {
- return;
+ // only initialize if not initialized already
+ if(self.audioCaptureDeviceInput == nil){
+ NSError *error = nil;
+
+ AVCaptureDevice *audioCaptureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];
+ AVCaptureDeviceInput *audioDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:audioCaptureDevice error:&error];
+
+ if (error || audioDeviceInput == nil) {
+ RCTLogWarn(@"%s: %@", __func__, error);
+ }
+
+ else{
+
+ // test if we can activate the device input.
+ // If we fail, means it is already being used
+ BOOL setActive = [[AVAudioSession sharedInstance] setActive:YES error:&error];
+
+ if (!setActive) {
+ RCTLogWarn(@"Audio device could not set active: %s: %@", __func__, error);
+ }
+
+ else if ([self.session canAddInput:audioDeviceInput]) {
+ [self.session addInput:audioDeviceInput];
+ self.audioCaptureDeviceInput = audioDeviceInput;
+
+ // inform that audio has been resumed
+ if(self.onAudioConnected){
+ self.onAudioConnected(nil);
+ }
+ }
+ else{
+ RCTLog(@"Cannot add audio input");
+ }
+ }
+
+ // if we failed to get the audio device, fire our interrupted event
+ if(self.audioCaptureDeviceInput == nil && self.onAudioInterrupted){
+ self.onAudioInterrupted(nil);
+ }
}
- __block UIInterfaceOrientation interfaceOrientation;
+}
- void (^statusBlock)() = ^() {
- interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation];
- };
- if ([NSThread isMainThread]) {
- statusBlock();
- } else {
- dispatch_sync(dispatch_get_main_queue(), statusBlock);
+
+// Removes audio capture from the session, allowing the session
+// to resume if it was interrupted, and stopping any
+// recording in progress with the appropriate flags.
+- (void)removeAudioCaptureSessionInput
+{
+ if(self.audioCaptureDeviceInput != nil){
+
+ BOOL audioRemoved = NO;
+
+ if ([self.session.inputs containsObject:self.audioCaptureDeviceInput]) {
+
+ if ([self isRecording]) {
+ self.isRecordingInterrupted = YES;
+ }
+
+ [self.session removeInput:self.audioCaptureDeviceInput];
+
+ self.audioCaptureDeviceInput = nil;
+
+ // update flash since it gets reset when
+ // we change the session inputs
+ dispatch_async(self.sessionQueue, ^{
+ [self updateFlashMode];
+ });
+
+ audioRemoved = YES;
+ }
+
+ // Deactivate our audio session so other audio can resume
+ // playing, if any. E.g., background music.
+ // unless told not to
+ if(!self.keepAudioSession){
+ NSError *error = nil;
+
+ BOOL setInactive = [[AVAudioSession sharedInstance] setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:&error];
+
+ if (!setInactive) {
+ RCTLogWarn(@"Audio device could not set inactive: %s: %@", __func__, error);
+ }
+ }
+
+ self.audioCaptureDeviceInput = nil;
+
+ // inform that audio was interrupted
+ if(audioRemoved && self.onAudioInterrupted){
+ self.onAudioInterrupted(nil);
+ }
}
+}
+
+
+- (void)initializeCaptureSessionInput
+{
- AVCaptureVideoOrientation orientation = [RNCameraUtils videoOrientationForInterfaceOrientation:interfaceOrientation];
dispatch_async(self.sessionQueue, ^{
+
+ // Do all camera initialization in the session queue
+ // to prevent it from
+ AVCaptureDevice *captureDevice = [self getDevice];
+
+ // if setting a new device is the same we currently have, nothing to do
+ // return.
+ if(self.videoCaptureDeviceInput != nil && captureDevice != nil && [self.videoCaptureDeviceInput.device.uniqueID isEqualToString:captureDevice.uniqueID]){
+ return;
+ }
+
+ // if the device we are setting is also invalid/nil, return
+ if(captureDevice == nil){
+ [self onMountingError:@{@"message": @"Invalid camera device."}];
+ return;
+ }
+
+ // get orientation also in our session queue to prevent
+ // race conditions and also blocking the main thread
+ __block UIInterfaceOrientation interfaceOrientation;
+
+ dispatch_sync(dispatch_get_main_queue(), ^{
+ interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation];
+ });
+
+ AVCaptureVideoOrientation orientation = [RNCameraUtils videoOrientationForInterfaceOrientation:interfaceOrientation];
+
+
[self.session beginConfiguration];
NSError *error = nil;
- AVCaptureDevice *captureDevice = [RNCameraUtils deviceWithMediaType:AVMediaTypeVideo preferringPosition:self.presetCamera];
AVCaptureDeviceInput *captureDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:captureDevice error:&error];
+ if(error != nil){
+ NSLog(@"Capture device error %@", error);
+ }
+
if (error || captureDeviceInput == nil) {
RCTLog(@"%s: %@", __func__, error);
+ [self.session commitConfiguration];
+ [self onMountingError:@{@"message": @"Failed to setup capture device."}];
return;
}
+
+ // Do additional cleanup that might be needed on the
+ // previous device, if any.
+ AVCaptureDevice *previousDevice = self.videoCaptureDeviceInput != nil ? self.videoCaptureDeviceInput.device : nil;
+
+ [self cleanupFocus:previousDevice];
+
+
+ // Remove inputs
[self.session removeInput:self.videoCaptureDeviceInput];
+
+ // clear this variable before setting it again.
+ // Otherwise, if setting fails, we end up with a stale value.
+ // and we are no longer able to detect if it changed or not
+ self.videoCaptureDeviceInput = nil;
+
+ // setup our capture preset based on what was set from RN
+ // and our defaults
+ // if the preset is not supported (e.g., when switching cameras)
+ // canAddInput below will fail
+ self.session.sessionPreset = [self getDefaultPreset];
+
+
if ([self.session canAddInput:captureDeviceInput]) {
[self.session addInput:captureDeviceInput];
self.videoCaptureDeviceInput = captureDeviceInput;
- [self updateFlashMode];
- [self updateZoom];
- [self updateFocusMode];
- [self updateFocusDepth];
- [self updateAutoFocusPointOfInterest];
- [self updateWhiteBalance];
+
+ // Update all these async after our session has commited
+ // since some values might be changed on session commit.
+ dispatch_async(self.sessionQueue, ^{
+ [self updateZoom];
+ [self updateFocusMode];
+ [self updateFocusDepth];
+ [self updateExposure];
+ [self updateAutoFocusPointOfInterest];
+ [self updateWhiteBalance];
+ [self updateFlashMode];
+ });
+
[self.previewLayer.connection setVideoOrientation:orientation];
[self _updateMetadataObjectsToRecognize];
}
+ else{
+ RCTLog(@"The selected device does not work with the Preset [%@] or configuration provided", self.session.sessionPreset);
+
+ [self onMountingError:@{@"message": @"Camera device does not support selected settings."}];
+ }
+
+
+ // if we have not yet set our audio capture device,
+ // set it. Setting it early will prevent flickering when
+ // recording a video
+ // Only set it if captureAudio is true so we don't prompt
+ // for permission if audio is not needed.
+ // TODO: If we can update checkRecordAudioAuthorizationStatus
+ // to actually do something in production, we can replace
+ // the captureAudio prop by a simple permission check;
+ // for example, checking
+ // [[AVAudioSession sharedInstance] recordPermission] == AVAudioSessionRecordPermissionGranted
+ if(self.captureAudio){
+ [self initializeAudioCaptureSessionInput];
+ }
[self.session commitConfiguration];
});
@@ -733,91 +1496,118 @@ - (void)updateSessionPreset:(AVCaptureSessionPreset)preset
preset = AVCaptureSessionPresetHigh;
}
dispatch_async(self.sessionQueue, ^{
- [self.session beginConfiguration];
if ([self.session canSetSessionPreset:preset]) {
+ [self.session beginConfiguration];
self.session.sessionPreset = preset;
+ [self.session commitConfiguration];
+
+ // Need to update these since it gets reset on preset change
+ [self updateFlashMode];
+ [self updateZoom];
+ }
+ else{
+ RCTLog(@"The selected preset [%@] does not work with the current session.", preset);
}
- [self.session commitConfiguration];
});
}
#endif
}
-- (void)updateSessionAudioIsMuted:(BOOL)isMuted
+
+// We are using this event to detect audio interruption ended
+// events since we won't receive it on our session
+// after disabling audio.
+- (void)audioDidInterrupted:(NSNotification *)notification
{
- dispatch_async(self.sessionQueue, ^{
- [self.session beginConfiguration];
+ NSDictionary *userInfo = notification.userInfo;
+ NSInteger type = [[userInfo valueForKey:AVAudioSessionInterruptionTypeKey] integerValue];
- for (AVCaptureDeviceInput* input in [self.session inputs]) {
- if ([input.device hasMediaType:AVMediaTypeAudio]) {
- if (isMuted) {
- [self.session removeInput:input];
- }
- [self.session commitConfiguration];
- return;
- }
- }
- if (!isMuted) {
- NSError *error = nil;
+ // if our audio interruption ended
+ if(type == AVAudioSessionInterruptionTypeEnded){
- AVCaptureDevice *audioCaptureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];
- AVCaptureDeviceInput *audioDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:audioCaptureDevice error:&error];
+ // and the end event contains a hint that we should resume
+ // audio. Then re-connect our audio session if we are
+ // capturing audio.
+ // Sometimes we are hinted to not resume audio; e.g.,
+ // when playing music in background.
- if (error || audioDeviceInput == nil) {
- RCTLogWarn(@"%s: %@", __func__, error);
- return;
- }
+ NSInteger option = [[userInfo valueForKey:AVAudioSessionInterruptionOptionKey] integerValue];
- if ([self.session canAddInput:audioDeviceInput]) {
- [self.session addInput:audioDeviceInput];
- }
+ if(self.captureAudio && option == AVAudioSessionInterruptionOptionShouldResume){
+
+ dispatch_async(self.sessionQueue, ^{
+
+ // initialize audio if we need it
+ // check again captureAudio in case it was changed
+ // in between
+ if(self.captureAudio){
+ [self initializeAudioCaptureSessionInput];
+ }
+ });
}
- [self.session commitConfiguration];
- });
+ }
}
-- (void)bridgeDidForeground:(NSNotification *)notification
+
+// session interrupted events
+- (void)sessionWasInterrupted:(NSNotification *)notification
{
+ // Mark session interruption
+ _sessionInterrupted = YES;
+
+ // Turn on video interrupted if our session is interrupted
+ // for any reason
+ if ([self isRecording]) {
+ self.isRecordingInterrupted = YES;
+ }
- if (![self.session isRunning] && [self isSessionPaused]) {
- self.paused = NO;
- dispatch_async( self.sessionQueue, ^{
- [self.session startRunning];
+ // prevent any video recording start that we might have on the way
+ _recordRequested = NO;
+
+ // get event info and fire RN event if our session was interrupted
+ // due to audio being taken away.
+ NSDictionary *userInfo = notification.userInfo;
+ NSInteger type = [[userInfo valueForKey:AVCaptureSessionInterruptionReasonKey] integerValue];
+
+ if(type == AVCaptureSessionInterruptionReasonAudioDeviceInUseByAnotherClient){
+ // if we have audio, stop it so preview resumes
+ // it will eventually be re-loaded the next time recording
+ // is requested, although it will flicker.
+ dispatch_async(self.sessionQueue, ^{
+ [self removeAudioCaptureSessionInput];
});
+
}
+
}
-- (void)bridgeDidBackground:(NSNotification *)notification
+
+// update flash and our interrupted flag on session resume
+- (void)sessionDidStartRunning:(NSNotification *)notification
{
- if (self.isRecording) {
- self.isRecordingInterrupted = YES;
- }
- if ([self.session isRunning] && ![self isSessionPaused]) {
- self.paused = YES;
- dispatch_async( self.sessionQueue, ^{
- [self.session stopRunning];
+ //NSLog(@"sessionDidStartRunning Was interrupted? %d", _sessionInterrupted);
+
+ if(_sessionInterrupted){
+ // resume flash value since it will be resetted / turned off
+ dispatch_async(self.sessionQueue, ^{
+ [self updateFlashMode];
});
}
+
+ _sessionInterrupted = NO;
}
-- (void)audioDidInterrupted:(NSNotification *)notification
+- (void)sessionRuntimeError:(NSNotification *)notification
{
- NSDictionary *userInfo = notification.userInfo;
- NSInteger type = [[userInfo valueForKey:AVAudioSessionInterruptionTypeKey] integerValue];
- switch (type) {
- case AVAudioSessionInterruptionTypeBegan:
- [self bridgeDidBackground: notification];
- break;
-
- case AVAudioSessionInterruptionTypeEnded:
- [self bridgeDidForeground: notification];
- break;
-
- default:
- break;
- }
+ // Manually restarting the session since it must
+ // have been stopped due to an error.
+ dispatch_async(self.sessionQueue, ^{
+ _sessionInterrupted = NO;
+ [self.session startRunning];
+ [self onReady:nil];
+ });
}
- (void)orientationChanged:(NSNotification *)notification
@@ -846,6 +1636,14 @@ - (void)setupOrDisableBarcodeScanner
[self _updateMetadataObjectsToRecognize];
}
+- (void)updateRectOfInterest
+{
+ if (_metadataOutput == nil) {
+ return;
+ }
+ [_metadataOutput setRectOfInterest: _rectOfInterest];
+}
+
- (void)_setupOrDisableMetadataOutput
{
if ([self isReadingBarCodes] && (_metadataOutput == nil || ![self.session.outputs containsObject:_metadataOutput])) {
@@ -878,6 +1676,7 @@ - (void)_updateMetadataObjectsToRecognize
}
[_metadataOutput setMetadataObjectTypes:availableRequestedObjectTypes];
+ [self updateRectOfInterest];
}
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects
@@ -982,7 +1781,7 @@ - (void)captureOutput:(AVCaptureFileOutput *)captureOutput didFinishRecordingToO
void (^resolveBlock)(void) = ^() {
self.videoRecordedResolve(result);
};
-
+
result[@"uri"] = outputFileURL.absoluteString;
result[@"videoOrientation"] = @([self.orientation integerValue]);
result[@"deviceOrientation"] = @([self.deviceOrientation integerValue]);
@@ -1020,7 +1819,6 @@ - (void)cleanupCamera {
self.videoCodecType = nil;
self.deviceOrientation = nil;
self.orientation = nil;
- self.isRecording = NO;
self.isRecordingInterrupted = NO;
if ([self.textDetector isRealDetector] || [self.faceDetector isRealDetector]) {
@@ -1039,9 +1837,10 @@ - (void)cleanupCamera {
[self setupOrDisableBarcodeDetector];
}
- AVCaptureSessionPreset preset = [RNCameraUtils captureSessionPresetForVideoResolution:[self defaultVideoQuality]];
+ // reset preset to current default
+ AVCaptureSessionPreset preset = [self getDefaultPreset];
if (self.session.sessionPreset != preset) {
- [self updateSessionPreset: preset == AVCaptureSessionPresetHigh ? AVCaptureSessionPresetPhoto: preset];
+ [self updateSessionPreset: preset];
}
}
@@ -1100,7 +1899,8 @@ -(id)createFaceDetectorMlKit
- (void)setupOrDisableFaceDetector
{
if (self.canDetectFaces && [self.faceDetector isRealDetector]){
- AVCaptureSessionPreset preset = ([self defaultVideoQuality]) ? [RNCameraUtils captureSessionPresetForVideoResolution:[[self defaultVideoQuality] integerValue]] : AVCaptureSessionPresetHigh;
+ AVCaptureSessionPreset preset = [self getDefaultPresetVideo];
+
self.session.sessionPreset = preset;
if (!self.videoDataOutput) {
self.videoDataOutput = [[AVCaptureVideoDataOutput alloc] init];
@@ -1109,7 +1909,7 @@ - (void)setupOrDisableFaceDetector
[self stopFaceDetection];
return;
}
-
+
NSDictionary *rgbOutputSettings = [NSDictionary
dictionaryWithObject:[NSNumber numberWithInt:kCMPixelFormat_32BGRA]
forKey:(id)kCVPixelBufferPixelFormatTypeKey];
@@ -1129,9 +1929,9 @@ - (void)stopFaceDetection
[self.session removeOutput:self.videoDataOutput];
}
self.videoDataOutput = nil;
- AVCaptureSessionPreset preset = [RNCameraUtils captureSessionPresetForVideoResolution:[self defaultVideoQuality]];
+ AVCaptureSessionPreset preset = [self getDefaultPreset];
if (self.session.sessionPreset != preset) {
- [self updateSessionPreset: preset == AVCaptureSessionPresetHigh ? AVCaptureSessionPresetPhoto: preset];
+ [self updateSessionPreset: preset];
}
}
@@ -1146,7 +1946,7 @@ - (void)updateFaceDetectionMode:(id)requestedMode
}
- (void)updateFaceDetectionLandmarks:(id)requestedLandmarks
-{
+{
[self.faceDetector setLandmarksMode:requestedLandmarks queue:self.sessionQueue];
}
@@ -1173,7 +1973,8 @@ -(id)createBarcodeDetectorMlKit
- (void)setupOrDisableBarcodeDetector
{
if (self.canDetectBarcodes && [self.barcodeDetector isRealDetector]){
- AVCaptureSessionPreset preset = ([self defaultVideoQuality]) ? [RNCameraUtils captureSessionPresetForVideoResolution:[[self defaultVideoQuality] integerValue]] : AVCaptureSessionPresetHigh;
+ AVCaptureSessionPreset preset = [self getDefaultPresetVideo];
+
self.session.sessionPreset = preset;
if (!self.videoDataOutput) {
self.videoDataOutput = [[AVCaptureVideoDataOutput alloc] init];
@@ -1182,7 +1983,7 @@ - (void)setupOrDisableBarcodeDetector
[self stopBarcodeDetection];
return;
}
-
+
NSDictionary *rgbOutputSettings = [NSDictionary
dictionaryWithObject:[NSNumber numberWithInt:kCMPixelFormat_32BGRA]
forKey:(id)kCVPixelBufferPixelFormatTypeKey];
@@ -1202,9 +2003,9 @@ - (void)stopBarcodeDetection
[self.session removeOutput:self.videoDataOutput];
}
self.videoDataOutput = nil;
- AVCaptureSessionPreset preset = [RNCameraUtils captureSessionPresetForVideoResolution:[self defaultVideoQuality]];
+ AVCaptureSessionPreset preset = [self getDefaultPreset];
if (self.session.sessionPreset != preset) {
- [self updateSessionPreset: preset == AVCaptureSessionPresetHigh ? AVCaptureSessionPresetPhoto: preset];
+ [self updateSessionPreset: preset];
}
}
@@ -1323,7 +2124,8 @@ - (void)captureOutput:(AVCaptureOutput *)captureOutput
}
- (bool)isRecording {
- return self.movieFileOutput.isRecording;
+ return self.movieFileOutput != nil ? self.movieFileOutput.isRecording : NO;
}
@end
+
diff --git a/ios/RN/RNCameraManager.h b/ios/RN/RNCameraManager.h
index 36412875d..5565c0618 100644
--- a/ios/RN/RNCameraManager.h
+++ b/ios/RN/RNCameraManager.h
@@ -62,4 +62,3 @@ typedef NS_ENUM(NSInteger, RNCameraVideoResolution) {
+ (NSDictionary *)validVideoStabilizationModes;
@end
-
diff --git a/ios/RN/RNCameraManager.m b/ios/RN/RNCameraManager.m
index 224330e3a..9b3796f16 100644
--- a/ios/RN/RNCameraManager.m
+++ b/ios/RN/RNCameraManager.m
@@ -13,12 +13,16 @@ @implementation RNCameraManager
RCT_EXPORT_MODULE(RNCameraManager);
RCT_EXPORT_VIEW_PROPERTY(onCameraReady, RCTDirectEventBlock);
+RCT_EXPORT_VIEW_PROPERTY(onAudioInterrupted, RCTDirectEventBlock);
+RCT_EXPORT_VIEW_PROPERTY(onAudioConnected, RCTDirectEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onMountError, RCTDirectEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onBarCodeRead, RCTDirectEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onFacesDetected, RCTDirectEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onGoogleVisionBarcodesDetected, RCTDirectEventBlock);
+RCT_EXPORT_VIEW_PROPERTY(onPictureTaken, RCTDirectEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onPictureSaved, RCTDirectEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onTextRecognized, RCTDirectEventBlock);
+RCT_EXPORT_VIEW_PROPERTY(onSubjectAreaChanged, RCTDirectEventBlock);
+ (BOOL)requiresMainQueueSetup
{
@@ -78,7 +82,7 @@ - (NSDictionary *)constantsToExport
- (NSArray *)supportedEvents
{
- return @[@"onCameraReady", @"onMountError", @"onBarCodeRead", @"onFacesDetected", @"onPictureSaved", @"onTextRecognized", @"onGoogleVisionBarcodesDetected"];
+ return @[@"onCameraReady", @"onMountError", @"onBarCodeRead", @"onFacesDetected", @"onPictureTaken", @"onPictureSaved", @"onTextRecognized", @"onGoogleVisionBarcodesDetected", @"onSubjectAreaChanged"];
}
+ (NSDictionary *)validCodecTypes
@@ -164,8 +168,22 @@ + (NSDictionary *)barcodeDetectorConstants
RCT_CUSTOM_VIEW_PROPERTY(type, NSInteger, RNCamera)
{
- if (view.presetCamera != [RCTConvert NSInteger:json]) {
- [view setPresetCamera:[RCTConvert NSInteger:json]];
+ NSInteger newType = [RCTConvert NSInteger:json];
+ if (view.presetCamera != newType) {
+ [view setPresetCamera:newType];
+ [view updateType];
+ }
+}
+
+RCT_CUSTOM_VIEW_PROPERTY(cameraId, NSString, RNCamera)
+{
+ NSString *newId = [RCTConvert NSString:json];
+
+ // also compare pointers so we check for nulls
+ if (view.cameraId != newId && ![view.cameraId isEqualToString:newId]) {
+ [view setCameraId:newId];
+ // using same call as setting the type here since they
+ // both require the same updates
[view updateType];
}
}
@@ -200,12 +218,24 @@ + (NSDictionary *)barcodeDetectorConstants
[view updateZoom];
}
+RCT_CUSTOM_VIEW_PROPERTY(maxZoom, NSNumber, RNCamera)
+{
+ [view setMaxZoom:[RCTConvert CGFloat:json]];
+ [view updateZoom];
+}
+
RCT_CUSTOM_VIEW_PROPERTY(whiteBalance, NSInteger, RNCamera)
{
[view setWhiteBalance:[RCTConvert NSInteger:json]];
[view updateWhiteBalance];
}
+RCT_CUSTOM_VIEW_PROPERTY(exposure, NSNumber, RNCamera)
+{
+ [view setExposure:[RCTConvert float:json]];
+ [view updateExposure];
+}
+
RCT_CUSTOM_VIEW_PROPERTY(pictureSize, NSString *, RNCamera)
{
[view setPictureSize:[[self class] pictureSizes][[RCTConvert NSString:json]]];
@@ -241,7 +271,7 @@ + (NSDictionary *)barcodeDetectorConstants
RCT_CUSTOM_VIEW_PROPERTY(barCodeScannerEnabled, BOOL, RNCamera)
{
-
+
view.isReadingBarCodes = [RCTConvert BOOL:json];
[view setupOrDisableBarcodeScanner];
}
@@ -264,11 +294,28 @@ + (NSDictionary *)barcodeDetectorConstants
RCT_CUSTOM_VIEW_PROPERTY(textRecognizerEnabled, BOOL, RNCamera)
{
-
+
view.canReadText = [RCTConvert BOOL:json];
[view setupOrDisableTextDetector];
}
+RCT_CUSTOM_VIEW_PROPERTY(captureAudio, BOOL, RNCamera)
+{
+ [view setCaptureAudio:[RCTConvert BOOL:json]];
+ [view updateCaptureAudio];
+}
+
+RCT_CUSTOM_VIEW_PROPERTY(keepAudioSession, BOOL, RNCamera)
+{
+ [view setKeepAudioSession:[RCTConvert BOOL:json]];
+}
+
+RCT_CUSTOM_VIEW_PROPERTY(rectOfInterest, CGRect, RNCamera)
+{
+ [view setRectOfInterest: [RCTConvert CGRect:json]];
+ [view updateRectOfInterest];
+}
+
RCT_CUSTOM_VIEW_PROPERTY(defaultVideoQuality, NSInteger, RNCamera)
{
[view setDefaultVideoQuality: [NSNumber numberWithInteger:[RCTConvert NSInteger:json]]];
@@ -294,6 +341,9 @@ + (NSDictionary *)barcodeDetectorConstants
if (useFastMode) {
resolve(nil);
}
+
+ [view onPictureTaken:@{}];
+
NSData *photoData = UIImageJPEGRepresentation(generatedPhoto, quality);
if (![options[@"doNotSave"] boolValue]) {
response[@"uri"] = [RNImageUtils writeImage:photoData toPath:path];
@@ -380,7 +430,7 @@ + (NSDictionary *)barcodeDetectorConstants
RCT_EXPORT_METHOD(checkDeviceAuthorizationStatus:(RCTPromiseResolveBlock)resolve
reject:(__unused RCTPromiseRejectBlock)reject) {
__block NSString *mediaType = AVMediaTypeVideo;
-
+
[AVCaptureDevice requestAccessForMediaType:mediaType completionHandler:^(BOOL granted) {
if (!granted) {
resolve(@(granted));
@@ -452,4 +502,101 @@ + (NSDictionary *)barcodeDetectorConstants
}];
}
+RCT_EXPORT_METHOD(getCameraIds:(RCTPromiseResolveBlock)resolve
+ reject:(RCTPromiseRejectBlock)reject) {
+
+#if TARGET_IPHONE_SIMULATOR
+ resolve(@[]);
+ return;
+#endif
+
+ NSMutableArray *res = [NSMutableArray array];
+
+
+ // need to filter/search devices based on iOS version
+ // these warnings can be easily seen on XCode
+ if (@available(iOS 10.0, *)) {
+ NSArray *captureDeviceType;
+
+
+ if (@available(iOS 13.0, *)) {
+ captureDeviceType = @[
+ AVCaptureDeviceTypeBuiltInWideAngleCamera,
+ AVCaptureDeviceTypeBuiltInTelephotoCamera
+ #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000
+ ,AVCaptureDeviceTypeBuiltInUltraWideCamera
+ #endif
+ ];
+ }
+ else{
+ captureDeviceType = @[
+ AVCaptureDeviceTypeBuiltInWideAngleCamera,
+ AVCaptureDeviceTypeBuiltInTelephotoCamera
+ ];
+ }
+
+
+ AVCaptureDeviceDiscoverySession *captureDevice =
+ [AVCaptureDeviceDiscoverySession
+ discoverySessionWithDeviceTypes:captureDeviceType
+ mediaType:AVMediaTypeVideo
+ position:AVCaptureDevicePositionUnspecified];
+
+ for(AVCaptureDevice *camera in [captureDevice devices]){
+
+ // exclude virtual devices. We currently cannot use
+ // any virtual device feature like auto switching or
+ // depth of field detetion anyways.
+ #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000
+ if (@available(iOS 13.0, *)) {
+ if([camera isVirtualDevice]){
+ continue;
+ }
+ }
+ #endif
+
+
+ if([camera position] == AVCaptureDevicePositionFront) {
+ [res addObject: @{
+ @"id": [camera uniqueID],
+ @"type": @(RNCameraTypeFront),
+ @"deviceType": [camera deviceType]
+ }];
+ }
+ else if([camera position] == AVCaptureDevicePositionBack){
+ [res addObject: @{
+ @"id": [camera uniqueID],
+ @"type": @(RNCameraTypeBack),
+ @"deviceType": [camera deviceType]
+ }];
+ }
+
+ }
+
+ } else {
+ NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
+ for(AVCaptureDevice *camera in devices) {
+
+
+ if([camera position] == AVCaptureDevicePositionFront) {
+ [res addObject: @{
+ @"id": [camera uniqueID],
+ @"type": @(RNCameraTypeFront),
+ @"deviceType": @""
+ }];
+ }
+ else if([camera position] == AVCaptureDevicePositionBack){
+ [res addObject: @{
+ @"id": [camera uniqueID],
+ @"type": @(RNCameraTypeBack),
+ @"deviceType": @""
+ }];
+ }
+
+ }
+ }
+
+ resolve(res);
+}
+
@end
diff --git a/ios/RN/RNCameraUtils.h b/ios/RN/RNCameraUtils.h
index 213c309aa..9201313c7 100644
--- a/ios/RN/RNCameraUtils.h
+++ b/ios/RN/RNCameraUtils.h
@@ -13,6 +13,8 @@
// Camera utilities
+ (AVCaptureDevice *)deviceWithMediaType:(NSString *)mediaType preferringPosition:(AVCaptureDevicePosition)position;
++ (AVCaptureDevice *)deviceWithCameraId:(NSString *)cameraId;
+
// Enum conversions
+ (float)temperatureForWhiteBalance:(RNCameraWhiteBalance)whiteBalance;
+ (NSString *)captureSessionPresetForVideoResolution:(RNCameraVideoResolution)resolution;
diff --git a/ios/RN/RNCameraUtils.m b/ios/RN/RNCameraUtils.m
index eb9ce1733..595307f1e 100644
--- a/ios/RN/RNCameraUtils.m
+++ b/ios/RN/RNCameraUtils.m
@@ -26,6 +26,12 @@ + (AVCaptureDevice *)deviceWithMediaType:(AVMediaType)mediaType preferringPositi
return captureDevice;
}
++ (AVCaptureDevice *)deviceWithCameraId:(NSString *)cameraId
+{
+ AVCaptureDevice *device = [AVCaptureDevice deviceWithUniqueID:cameraId];
+ return device;
+}
+
# pragma mark - Enum conversion
+ (AVCaptureVideoOrientation)videoOrientationForInterfaceOrientation:(UIInterfaceOrientation)orientation
@@ -143,7 +149,7 @@ + (UIImage *)convertBufferToUIImage:(CMSampleBufferRef)sampleBuffer previewSize:
videoImage = [temporaryContext createCGImage:ciImage fromRect:boundingRect];
CGRect croppedSize = AVMakeRectWithAspectRatioInsideRect(previewSize, boundingRect);
CGImageRef croppedCGImage = CGImageCreateWithImageInRect(videoImage, croppedSize);
- UIImage *image = [[UIImage alloc] initWithCGImage:croppedCGImage];
+ UIImage *image = [[UIImage alloc] initWithCGImage:videoImage];
CGImageRelease(videoImage);
CGImageRelease(croppedCGImage);
return image;
diff --git a/ios/RN/RNFaceDetectorModuleMLKit.m b/ios/RN/RNFaceDetectorModuleMLKit.m
index c2b23605e..d2bacb72f 100644
--- a/ios/RN/RNFaceDetectorModuleMLKit.m
+++ b/ios/RN/RNFaceDetectorModuleMLKit.m
@@ -119,9 +119,25 @@ - (int)exifOrientationFor:(UIImageOrientation)orientation
@end
#else
@implementation RNFaceDetectorModuleMLKit
+
+@synthesize bridge = _bridge;
+
+- (void)setBridge:(RCTBridge *)bridge
+{
+ _bridge = bridge;
+}
+
++ (BOOL)requiresMainQueueSetup
+{
+ return NO;
+}
+
- (NSDictionary *)constantsToExport
{
- return [FaceDetectorManagerMlkit constants];
+ return @{};
}
+
+RCT_EXPORT_MODULE(RNFaceDetector);
+
@end
#endif
diff --git a/ios/RN/RNSensorOrientationChecker.m b/ios/RN/RNSensorOrientationChecker.m
index 63f877f63..0be0b7994 100644
--- a/ios/RN/RNSensorOrientationChecker.m
+++ b/ios/RN/RNSensorOrientationChecker.m
@@ -60,11 +60,16 @@ - (void)getDeviceOrientationWithBlock:(RNSensorCallback)callback
{
__weak __typeof(self) weakSelf = self;
self.orientationCallback = ^(UIInterfaceOrientation orientation) {
- if (callback) {
- callback(orientation);
+ // Synchronized because this might fire more than once
+ // under some circumstances, causing a very bad loop
+ // to people that uses it.
+ @synchronized (weakSelf) {
+ if (callback && weakSelf.orientationCallback) {
+ callback(orientation);
+ }
+ weakSelf.orientationCallback = nil;
+ [weakSelf pause];
}
- weakSelf.orientationCallback = nil;
- [weakSelf pause];
};
[self resume];
}
diff --git a/package.json b/package.json
index 515ceffe0..afff85c24 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "react-native-camera",
"description": "A Camera component for React Native. Also reads barcodes.",
- "version": "2.11.0",
+ "version": "3.15.0",
"author": "Lochlan Wansbrough (http://lwansbrough.com)",
"collective": {
"type": "opencollective",
@@ -79,7 +79,7 @@
"prettier": "prettier --write",
"ci:publish": "semantic-release"
},
- "types": "types",
+ "types": "types/index.d.ts",
"release": {
"plugins": [
"@semantic-release/commit-analyzer",
diff --git a/src/RNCamera.js b/src/RNCamera.js
index 020fbfb50..ace2be707 100644
--- a/src/RNCamera.js
+++ b/src/RNCamera.js
@@ -99,7 +99,7 @@ type PictureOptions = {
base64?: boolean,
mirrorImage?: boolean,
exif?: boolean,
- writeExif?: boolean,
+ writeExif?: boolean | { [name: string]: any },
width?: number,
fixOrientation?: boolean,
forceUpOrientation?: boolean,
@@ -140,6 +140,7 @@ type TrackedBarcodeFeature = {
data: string,
dataRaw: string,
type: BarcodeType,
+ format?: string,
addresses?: {
addressesType?: 'UNKNOWN' | 'Work' | 'Home',
addressLines?: string[],
@@ -202,7 +203,8 @@ type BarcodeType =
| 'WIFI'
| 'TEXT'
| 'ISBN'
- | 'PRODUCT';
+ | 'PRODUCT'
+ | 'URL';
type Email = {
address?: string,
@@ -231,16 +233,28 @@ type EventCallbackArgumentsType = {
nativeEvent: Object,
};
+type Rect = {
+ x: number,
+ y: number,
+ width: number,
+ height: number,
+};
+
type PropsType = typeof View.props & {
zoom?: number,
+ maxZoom?: number,
ratio?: string,
focusDepth?: number,
type?: number | string,
onCameraReady?: Function,
+ onAudioInterrupted?: Function,
+ onAudioConnected?: Function,
onStatusChange?: Function,
onBarCodeRead?: Function,
+ onPictureTaken?: Function,
onPictureSaved?: Function,
onGoogleVisionBarcodesDetected?: ({ barcodes: Array }) => void,
+ onSubjectAreaChanged?: ({ nativeEvent: { prevPoint: {| x: number, y: number |} } }) => void,
faceDetectionMode?: number,
trackingEnabled?: boolean,
flashMode?: number | string,
@@ -256,10 +270,12 @@ type PropsType = typeof View.props & {
onFacesDetected?: ({ faces: Array }) => void,
onTextRecognized?: ({ textBlocks: Array }) => void,
captureAudio?: boolean,
+ keepAudioSession?: boolean,
useCamera2Api?: boolean,
playSoundOnCapture?: boolean,
videoStabilizationMode?: number | string,
pictureSize?: string,
+ rectOfInterest: Rect,
};
type StateType = {
@@ -366,16 +382,21 @@ export default class Camera extends React.Component {
static propTypes = {
...ViewPropTypes,
zoom: PropTypes.number,
+ maxZoom: PropTypes.number,
ratio: PropTypes.string,
focusDepth: PropTypes.number,
onMountError: PropTypes.func,
onCameraReady: PropTypes.func,
+ onAudioInterrupted: PropTypes.func,
+ onAudioConnected: PropTypes.func,
onStatusChange: PropTypes.func,
onBarCodeRead: PropTypes.func,
+ onPictureTaken: PropTypes.func,
onPictureSaved: PropTypes.func,
onGoogleVisionBarcodesDetected: PropTypes.func,
onFacesDetected: PropTypes.func,
onTextRecognized: PropTypes.func,
+ onSubjectAreaChanged: PropTypes.func,
trackingEnabled: PropTypes.bool,
faceDetectionMode: PropTypes.number,
faceDetectionLandmarks: PropTypes.number,
@@ -384,6 +405,7 @@ export default class Camera extends React.Component {
googleVisionBarcodeType: PropTypes.number,
googleVisionBarcodeMode: PropTypes.number,
type: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ cameraId: PropTypes.string,
flashMode: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
exposure: PropTypes.number,
whiteBalance: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
@@ -396,22 +418,26 @@ export default class Camera extends React.Component {
notAuthorizedView: PropTypes.element,
pendingAuthorizationView: PropTypes.element,
captureAudio: PropTypes.bool,
+ keepAudioSession: PropTypes.bool,
useCamera2Api: PropTypes.bool,
playSoundOnCapture: PropTypes.bool,
videoStabilizationMode: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
pictureSize: PropTypes.string,
mirrorVideo: PropTypes.bool,
+ rectOfInterest: PropTypes.any,
defaultVideoQuality: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
};
static defaultProps: Object = {
zoom: 0,
+ maxZoom: 0,
ratio: '4:3',
focusDepth: 0,
type: CameraManager.Type.back,
+ cameraId: null,
autoFocus: CameraManager.AutoFocus.on,
flashMode: CameraManager.FlashMode.off,
- exposure: 0,
+ exposure: -1,
whiteBalance: CameraManager.WhiteBalance.auto,
faceDetectionMode: (CameraManager.FaceDetection || {}).fast,
barCodeTypes: Object.values(CameraManager.BarCodeType),
@@ -442,6 +468,7 @@ export default class Camera extends React.Component {
),
captureAudio: true,
+ keepAudioSession: false,
useCamera2Api: false,
playSoundOnCapture: false,
pictureSize: 'None',
@@ -492,6 +519,10 @@ export default class Camera extends React.Component {
options.pauseAfterCapture = false;
}
+ if (!this._cameraHandle) {
+ throw 'Camera handle cannot be null';
+ }
+
return await CameraManager.takePicture(options, this._cameraHandle);
}
@@ -503,6 +534,14 @@ export default class Camera extends React.Component {
}
}
+ async getCameraIdsAsync() {
+ if (Platform.OS === 'android') {
+ return await CameraManager.getCameraIds(this._cameraHandle);
+ } else {
+ return await CameraManager.getCameraIds(); // iOS does not need a camera instance
+ }
+ }
+
getAvailablePictureSizes = async (): string[] => {
//$FlowFixMe
return await CameraManager.getAvailablePictureSizes(this.props.ratio, this._cameraHandle);
@@ -585,6 +624,18 @@ export default class Camera extends React.Component {
}
};
+ _onAudioInterrupted = () => {
+ if (this.props.onAudioInterrupted) {
+ this.props.onAudioInterrupted();
+ }
+ };
+
+ _onAudioConnected = () => {
+ if (this.props.onAudioConnected) {
+ this.props.onAudioConnected();
+ }
+ };
+
_onStatusChange = () => {
if (this.props.onStatusChange) {
this.props.onStatusChange({
@@ -618,6 +669,12 @@ export default class Camera extends React.Component {
}
};
+ _onSubjectAreaChanged = e => {
+ if (this.props.onSubjectAreaChanged) {
+ this.props.onSubjectAreaChanged(e);
+ }
+ };
+
_setReference = (ref: ?Object) => {
if (ref) {
this._cameraRef = ref;
@@ -741,6 +798,8 @@ export default class Camera extends React.Component {
ref={this._setReference}
onMountError={this._onMountError}
onCameraReady={this._onCameraReady}
+ onAudioInterrupted={this._onAudioInterrupted}
+ onAudioConnected={this._onAudioConnected}
onGoogleVisionBarcodesDetected={this._onObjectDetected(
this.props.onGoogleVisionBarcodesDetected,
)}
@@ -748,6 +807,7 @@ export default class Camera extends React.Component {
onFacesDetected={this._onObjectDetected(this.props.onFacesDetected)}
onTextRecognized={this._onObjectDetected(this.props.onTextRecognized)}
onPictureSaved={this._onPictureSaved}
+ onSubjectAreaChanged={this._onSubjectAreaChanged}
/>
{this.renderChildren()}
@@ -810,10 +870,13 @@ const RNCamera = requireNativeComponent('RNCamera', Camera, {
onBarCodeRead: true,
onGoogleVisionBarcodesDetected: true,
onCameraReady: true,
+ onAudioInterrupted: true,
+ onAudioConnected: true,
onPictureSaved: true,
onFaceDetected: true,
onLayout: true,
onMountError: true,
+ onSubjectAreaChanged: true,
renderToHardwareTextureAndroid: true,
testID: true,
},
diff --git a/types/index.d.ts b/types/index.d.ts
index bb84e7bfc..c0f348a39 100644
--- a/types/index.d.ts
+++ b/types/index.d.ts
@@ -134,11 +134,14 @@ export interface RNCameraProps {
autoFocus?: keyof AutoFocus;
autoFocusPointOfInterest?: Point;
+ /* iOS only */
+ onSubjectAreaChanged?: (event: { nativeEvent: { prevPoint: { x: number; y: number; } } }) => void;
type?: keyof CameraType;
flashMode?: keyof FlashMode;
notAuthorizedView?: JSX.Element;
pendingAuthorizationView?: JSX.Element;
useCamera2Api?: boolean;
+ exposure?: number;
whiteBalance?: keyof WhiteBalance;
captureAudio?: boolean;
@@ -149,23 +152,33 @@ export interface RNCameraProps {
}): void;
onMountError?(error: { message: string }): void;
+ /** iOS only */
+ onAudioInterrupted?(): void;
+ onAudioConnected?(): void;
+
/** Value: float from 0 to 1.0 */
zoom?: number;
+ /** iOS only. float from 0 to any. Locks the max zoom value to the provided value
+ A value <= 1 will use the camera's max zoom, while a value > 1
+ will use that value as the max available zoom
+ **/
+ maxZoom?: number;
/** Value: float from 0 to 1.0 */
focusDepth?: number;
// -- BARCODE PROPS
barCodeTypes?: Array;
googleVisionBarcodeType?: Constants['GoogleVisionBarcodeDetection']['BarcodeType'];
+ googleVisionBarcodeMode?: Constants['GoogleVisionBarcodeDetection']['BarcodeMode'];
onBarCodeRead?(event: {
data: string;
rawData?: string;
type: keyof BarCodeType;
/**
- * @description For Android use `[Point, Point]`
+ * @description For Android use `{ width: number, height: number, origin: Array> }`
* @description For iOS use `{ origin: Point, size: Size }`
*/
- bounds: [Point, Point] | { origin: Point; size: Size };
+ bounds: { width: number, height: number, origin: Array> } | { origin: Point; size: Size };
}): void;
onGoogleVisionBarcodesDetected?(event: {
@@ -198,7 +211,7 @@ export interface RNCameraProps {
buttonPositive?: string;
buttonNegative?: string;
buttonNeutral?: string;
- };
+ } | null;
androidRecordAudioPermissionOptions?: {
title: string;
@@ -206,10 +219,12 @@ export interface RNCameraProps {
buttonPositive?: string;
buttonNegative?: string;
buttonNeutral?: string;
- };
+ } | null;
// -- IOS ONLY PROPS
defaultVideoQuality?: keyof VideoQuality;
+ /* if true, audio session will not be released on component unmount */
+ keepAudioSession?: boolean;
}
interface Point {
@@ -222,7 +237,7 @@ interface Size {
height: T;
}
-interface Barcode {
+export interface Barcode {
bounds: {
size: Size;
origin: Point;
@@ -230,6 +245,7 @@ interface Barcode {
data: string;
dataRaw: string;
type: BarcodeType;
+ format?: string;
addresses?: {
addressesType?: "UNKNOWN" | "Work" | "Home";
addressLines?: string[];
@@ -281,7 +297,7 @@ interface Barcode {
message?: string;
}
-type BarcodeType =
+export type BarcodeType =
|"EMAIL"
|"PHONE"
|"CALENDAR_EVENT"
@@ -293,20 +309,21 @@ type BarcodeType =
|"TEXT"
|"ISBN"
|"PRODUCT"
+ |"URL"
-interface Email {
+export interface Email {
address?: string;
body?: string;
subject?: string;
emailType?: "UNKNOWN" | "Work" | "Home";
}
-interface Phone {
+export interface Phone {
number?: string;
phoneType?: "UNKNOWN" | "Work" | "Home" | "Fax" | "Mobile";
}
-interface Face {
+export interface Face {
faceID?: number;
bounds: {
size: Size;
@@ -330,7 +347,7 @@ interface Face {
rollAngle?: number;
}
-interface TrackedTextFeature {
+export interface TrackedTextFeature {
type: 'block' | 'line' | 'element';
bounds: {
size: Size;
@@ -349,17 +366,16 @@ interface TakePictureOptions {
mirrorImage?: boolean;
doNotSave?: boolean;
pauseAfterCapture?: boolean;
+ writeExif?: boolean | { [name: string]: any };
/** Android only */
- skipProcessing?: boolean;
fixOrientation?: boolean;
- writeExif?: boolean;
/** iOS only */
forceUpOrientation?: boolean;
}
-interface TakePictureResponse {
+export interface TakePictureResponse {
width: number;
height: number;
uri: string;
@@ -377,15 +393,13 @@ interface RecordOptions {
mute?: boolean;
mirrorVideo?: boolean;
path?: string;
-
- /** Android only */
videoBitrate?: number;
/** iOS only */
codec?: keyof VideoCodec | VideoCodec[keyof VideoCodec];
}
-interface RecordResponse {
+export interface RecordResponse {
/** Path to the video saved on your app's cache directory. */
uri: string;
videoOrientation: number;
diff --git a/website/i18n/en.json b/website/i18n/en.json
index 59d316b87..b2e9d3dd1 100644
--- a/website/i18n/en.json
+++ b/website/i18n/en.json
@@ -53,6 +53,9 @@
"tests": {
"title": "Testing",
"sidebar_label": "Testing"
+ },
+ "Tidelift": {
+ "title": "React-Native-Camera for Enterprise"
}
},
"links": {
@@ -60,13 +63,15 @@
"Guides": "Guides",
"API": "API",
"Help": "Help",
+ "For Enterprise": "For Enterprise",
"GitHub": "GitHub"
},
"categories": {
"Getting Started": "Getting Started",
"Guides": "Guides",
"API": "API",
- "Help": "Help"
+ "Help": "Help",
+ "Enterprise": "Enterprise"
}
},
"pages-strings": {
diff --git a/website/sidebars.json b/website/sidebars.json
index 7f32b2976..825da3e36 100644
--- a/website/sidebars.json
+++ b/website/sidebars.json
@@ -3,6 +3,7 @@
"Getting Started": ["installation", "contributing"],
"Guides": ["expo_usage", "GradleUpgradeGuide", "migration", "migrationv2", "react-navigation", "recipes", "rncamera", "tests"],
"API": ["api"],
- "Help": ["qa"]
+ "Help": ["qa"],
+ "Enterprise": ["Tidelift"]
}
}
diff --git a/website/siteConfig.js b/website/siteConfig.js
index 420881903..38315f695 100644
--- a/website/siteConfig.js
+++ b/website/siteConfig.js
@@ -35,6 +35,7 @@ const siteConfig = {
{ doc: 'expo_usage', label: 'Guides' },
{ doc: 'api', label: 'API' },
{ page: 'docs/qa', label: 'Help' },
+ { doc: 'Tidelift', label: 'For Enterprise' },
{
href: 'https://github.com/react-native-community/react-native-camera',
label: 'GitHub',
diff --git a/website/yarn.lock b/website/yarn.lock
index 1a9187852..6088bdd3c 100644
--- a/website/yarn.lock
+++ b/website/yarn.lock
@@ -3627,9 +3627,9 @@ lodash.memoize@^4.1.2:
integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
lodash.merge@^4.4.0:
- version "4.6.1"
- resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54"
- integrity sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==
+ version "4.6.2"
+ resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
lodash.pick@^4.2.1:
version "4.4.0"
@@ -3657,9 +3657,9 @@ lodash.uniq@^4.5.0:
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
lodash@^4.17.11, lodash@^4.3.0, lodash@~4.17.10:
- version "4.17.11"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
- integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
+ version "4.17.14"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba"
+ integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==
logalot@^2.0.0:
version "2.1.0"
@@ -3894,9 +3894,9 @@ minimist@^1.1.3, minimist@^1.2.0:
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
mixin-deep@^1.1.3, mixin-deep@^1.2.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
- integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
+ integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
dependencies:
for-in "^1.0.2"
is-extendable "^1.0.1"
diff --git a/yarn.lock b/yarn.lock
index 7cd965c63..089b6fd88 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1133,15 +1133,7 @@
"@types/prop-types" "*"
csstype "^2.2.0"
-JSONStream@^1.0.4:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea"
- integrity sha1-wQI3G27Dp887hHygDCC7D85Mbeo=
- dependencies:
- jsonparse "^1.2.0"
- through ">=2.2.7 <3"
-
-JSONStream@^1.3.4:
+JSONStream@^1.0.4, JSONStream@^1.3.4, JSONStream@^1.3.5:
version "1.3.5"
resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==
@@ -1179,7 +1171,14 @@ acorn@^5.0.3, acorn@^5.6.0:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8"
integrity sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==
-agent-base@4, agent-base@^4.1.0, agent-base@~4.2.0:
+agent-base@4, agent-base@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee"
+ integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==
+ dependencies:
+ es6-promisify "^5.0.0"
+
+agent-base@^4.1.0, agent-base@~4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9"
integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==
@@ -1206,16 +1205,6 @@ ajv-keywords@^3.0.0:
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a"
integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=
-ajv@^5.3.0:
- version "5.5.2"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
- integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=
- dependencies:
- co "^4.6.0"
- fast-deep-equal "^1.0.0"
- fast-json-stable-stringify "^2.0.0"
- json-schema-traverse "^0.3.0"
-
ajv@^6.0.1, ajv@^6.5.0:
version "6.5.2"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.2.tgz#678495f9b82f7cca6be248dd92f59bff5e1f4360"
@@ -1226,6 +1215,16 @@ ajv@^6.0.1, ajv@^6.5.0:
json-schema-traverse "^0.4.1"
uri-js "^4.2.1"
+ajv@^6.5.5:
+ version "6.10.2"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52"
+ integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==
+ dependencies:
+ fast-deep-equal "^2.0.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
ansi-align@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
@@ -1343,12 +1342,12 @@ app-root-path@^2.0.1:
resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46"
integrity sha1-zWLc+OT9WkF+/GZNLlsQZTxlG0Y=
-aproba@^1.0.3, aproba@^1.1.1, aproba@^1.1.2, aproba@~1.2.0:
+aproba@^1.0.3, aproba@^1.1.1, aproba@^1.1.2:
version "1.2.0"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
-"aproba@^1.1.2 || 2":
+"aproba@^1.1.2 || 2", aproba@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc"
integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==
@@ -1359,17 +1358,17 @@ archy@~1.0.0:
integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=
are-we-there-yet@~1.1.2:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
- integrity sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
+ integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
dependencies:
delegates "^1.0.0"
readable-stream "^2.0.6"
argparse@^1.0.7:
- version "1.0.9"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
- integrity sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
dependencies:
sprintf-js "~1.0.2"
@@ -1489,9 +1488,11 @@ asap@^2.0.0, asap@~2.0.3:
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
asn1@~0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
- integrity sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
+ integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
+ dependencies:
+ safer-buffer "~2.1.0"
assert-plus@1.0.0, assert-plus@^1.0.0:
version "1.0.0"
@@ -1531,9 +1532,9 @@ aws-sign2@~0.7.0:
integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
aws4@^1.8.0:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
- integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.0.tgz#24390e6ad61386b0a747265754d2a17219de862c"
+ integrity sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A==
babel-code-frame@^6.26.0:
version "6.26.0"
@@ -1645,16 +1646,16 @@ base@^0.11.1:
pascalcase "^0.1.1"
basic-auth@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.0.tgz#015db3f353e02e56377755f962742e8981e7bbba"
- integrity sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a"
+ integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==
dependencies:
- safe-buffer "5.1.1"
+ safe-buffer "5.1.2"
bcrypt-pbkdf@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
- integrity sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
+ integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
dependencies:
tweetnacl "^0.14.3"
@@ -1668,28 +1669,22 @@ big-integer@^1.6.7:
resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.28.tgz#8cef0fda3ccde8759c2c66efcfacc35aea658283"
integrity sha512-OJT3rzgtsYca/5WmmEuFJDPMwROVh5SSjoEX9wIrpfbbWJ4KqRzShs8Cj6jWHaatBYAeWngBA+kmmrcHSklT1g==
-bin-links@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.2.tgz#fb74bd54bae6b7befc6c6221f25322ac830d9757"
- integrity sha512-8eEHVgYP03nILphilltWjeIjMbKyJo3wvp9K816pHbhP301ismzw15mxAAEVQ/USUwcP++1uNrbERbp8lOA6Fg==
- dependencies:
- bluebird "^3.5.0"
- cmd-shim "^2.0.2"
- gentle-fs "^2.0.0"
- graceful-fs "^4.1.11"
+bin-links@^1.1.2, bin-links@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.6.tgz#30d33e810829305e5e61b90cfcb9a3a4f65eb516"
+ integrity sha512-b5rV3uVyrlrJWLI3mawUUf5t2f9mCEQm/TqT5zNj6DPYhYDZaNp0AYaYd/CVASkSEklayNDLliZHVdo2J3niPw==
+ dependencies:
+ bluebird "^3.5.3"
+ cmd-shim "^3.0.0"
+ gentle-fs "^2.3.0"
+ graceful-fs "^4.1.15"
+ npm-normalize-package-bin "^1.0.0"
write-file-atomic "^2.3.0"
-block-stream@*:
- version "0.0.9"
- resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
- integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=
- dependencies:
- inherits "~2.0.0"
-
-bluebird@^3.5.0, bluebird@^3.5.1, bluebird@~3.5.1:
- version "3.5.2"
- resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a"
- integrity sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==
+bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5:
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
bottleneck@^2.0.1:
version "2.12.2"
@@ -1724,9 +1719,9 @@ bplist-parser@0.1.1:
big-integer "^1.6.7"
brace-expansion@^1.1.7:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
- integrity sha1-wHshHHyVLsH479Uad+8NHTmQopI=
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
@@ -1778,11 +1773,6 @@ buffer-from@^1.0.0:
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
-builtin-modules@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
- integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
-
builtins@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88"
@@ -1793,53 +1783,35 @@ byline@^5.0.0:
resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1"
integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=
-byte-size@^4.0.3:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-4.0.4.tgz#29d381709f41aae0d89c631f1c81aec88cd40b23"
- integrity sha512-82RPeneC6nqCdSwCX2hZUz3JPOvN5at/nTEw/CMf05Smu3Hrpo9Psb7LjN+k+XndNArG1EY8L4+BM3aTM4BCvw==
+byte-size@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-5.0.1.tgz#4b651039a5ecd96767e71a3d7ed380e48bed4191"
+ integrity sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw==
bytes@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
-cacache@^10.0.4:
- version "10.0.4"
- resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460"
- integrity sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==
- dependencies:
- bluebird "^3.5.1"
- chownr "^1.0.1"
- glob "^7.1.2"
- graceful-fs "^4.1.11"
- lru-cache "^4.1.1"
- mississippi "^2.0.0"
- mkdirp "^0.5.1"
- move-concurrently "^1.0.1"
- promise-inflight "^1.0.1"
- rimraf "^2.6.2"
- ssri "^5.2.4"
- unique-filename "^1.1.0"
- y18n "^4.0.0"
-
-cacache@^11.0.1, cacache@^11.0.2, cacache@^11.2.0:
- version "11.2.0"
- resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.2.0.tgz#617bdc0b02844af56310e411c0878941d5739965"
- integrity sha512-IFWl6lfK6wSeYCHUXh+N1lY72UDrpyrYQJNIVQf48paDuWbv5RbAtJYf/4gUQFObTCHZwdZ5sI8Iw7nqwP6nlQ==
+cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3:
+ version "12.0.3"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390"
+ integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==
dependencies:
- bluebird "^3.5.1"
- chownr "^1.0.1"
- figgy-pudding "^3.1.0"
- glob "^7.1.2"
- graceful-fs "^4.1.11"
- lru-cache "^4.1.3"
+ bluebird "^3.5.5"
+ chownr "^1.1.1"
+ figgy-pudding "^3.5.1"
+ glob "^7.1.4"
+ graceful-fs "^4.1.15"
+ infer-owner "^1.0.3"
+ lru-cache "^5.1.1"
mississippi "^3.0.0"
mkdirp "^0.5.1"
move-concurrently "^1.0.1"
promise-inflight "^1.0.1"
- rimraf "^2.6.2"
- ssri "^6.0.0"
- unique-filename "^1.1.0"
+ rimraf "^2.6.3"
+ ssri "^6.0.1"
+ unique-filename "^1.1.1"
y18n "^4.0.0"
cache-base@^1.0.1:
@@ -1862,10 +1834,10 @@ cachedir@2.1.0:
resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.1.0.tgz#b448c32b44cd9c0cd6ce4c419fa5b3c112c02191"
integrity sha512-xGBpPqoBvn3unBW7oxgb8aJn42K0m9m1/wyjmazah10Fq7bROGG3kRAE6OIyr3U3PIJUqGuebhCEdMk9OKJG0A==
-call-limit@~1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.0.tgz#6fd61b03f3da42a2cd0ec2b60f02bd0e71991fea"
- integrity sha1-b9YbA/PaQqLNDsK2DwK9DnGZH+o=
+call-limit@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.1.tgz#ef15f2670db3f1992557e2d965abc459e6e358d4"
+ integrity sha512-5twvci5b9eRBw2wCfPtN0GmlR2/gadZqyFpPhOK6CvMFoFgA+USnZ6Jpu1lhG9h85pQ3Ouil3PfXWRD4EUaRiQ==
call-me-maybe@^1.0.1:
version "1.0.1"
@@ -1975,7 +1947,7 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
-chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0:
+chalk@^2.0.0, chalk@^2.1.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
integrity sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==
@@ -1984,6 +1956,15 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0:
escape-string-regexp "^1.0.5"
supports-color "^4.0.0"
+chalk@^2.0.1:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
chalk@^2.3.1:
version "2.3.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65"
@@ -2012,26 +1993,21 @@ chardet@^0.7.0:
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
-chownr@^1.0.1, chownr@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
- integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==
-
-chownr@~1.0.1:
- version "1.0.1"
- resolved "http://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181"
- integrity sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=
-
-ci-info@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.2.tgz#03561259db48d0474c8bdc90f5b47b068b6bbfb4"
- integrity sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==
+chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142"
+ integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==
-ci-info@^1.4.0:
+ci-info@^1.5.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497"
integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==
+ci-info@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
+ integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
+
cidr-regex@^2.0.10:
version "2.0.10"
resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-2.0.10.tgz#af13878bd4ad704de77d6dc800799358b3afa70d"
@@ -2091,7 +2067,7 @@ cli-spinners@^0.1.2:
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c"
integrity sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=
-cli-table3@^0.5.0:
+cli-table3@^0.5.0, cli-table3@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202"
integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==
@@ -2149,19 +2125,14 @@ clone@^1.0.2:
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
-cmd-shim@^2.0.2, cmd-shim@~2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb"
- integrity sha1-b8vamUg6j9FdfTChlspp1oii79s=
+cmd-shim@^3.0.0, cmd-shim@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-3.0.3.tgz#2c35238d3df37d98ecdd7d5f6b8dc6b21cadc7cb"
+ integrity sha512-DtGg+0xiFhQIntSBRzL2fRQBnmtAVwXIDo4Qq46HPpObYquxMaZS4sb82U9nH91qJrlosC1wa9gwr0QyL/HypA==
dependencies:
graceful-fs "^4.1.2"
mkdirp "~0.5.0"
-co@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
- integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
-
code-point-at@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
@@ -2176,13 +2147,13 @@ collection-visit@^1.0.0:
object-visit "^1.0.0"
color-convert@^1.9.0:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
- integrity sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
dependencies:
- color-name "^1.1.1"
+ color-name "1.1.3"
-color-name@^1.1.1:
+color-name@1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
@@ -2198,9 +2169,9 @@ colors@1.0.3:
integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=
colors@^1.1.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.2.tgz#2df8ff573dfbf255af562f8ce7181d6b971a359b"
- integrity sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ==
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
+ integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
columnify@~1.5.4:
version "1.5.4"
@@ -2211,9 +2182,9 @@ columnify@~1.5.4:
wcwidth "^1.0.0"
combined-stream@^1.0.6, combined-stream@~1.0.6:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828"
- integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
dependencies:
delayed-stream "~1.0.0"
@@ -2283,7 +2254,7 @@ compressible@~2.0.13:
compression@^1.7.1:
version "1.7.2"
- resolved "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz#aaffbcd6aaf854b44ebb280353d5ad1651f59a69"
+ resolved "https://registry.npmjs.org/compression/-/compression-1.7.2.tgz#aaffbcd6aaf854b44ebb280353d5ad1651f59a69"
integrity sha1-qv+81qr4VLROuygDU9WtFlH1mmk=
dependencies:
accepts "~1.3.4"
@@ -2308,7 +2279,7 @@ concat-stream@^1.4.7, concat-stream@^1.6.0:
readable-stream "^2.2.2"
typedarray "^0.0.6"
-concat-stream@^1.5.0, concat-stream@^1.5.2:
+concat-stream@^1.5.0:
version "1.6.2"
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
@@ -2318,7 +2289,7 @@ concat-stream@^1.5.0, concat-stream@^1.5.2:
readable-stream "^2.2.2"
typedarray "^0.0.6"
-config-chain@~1.1.11:
+config-chain@^1.1.12:
version "1.1.12"
resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa"
integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==
@@ -2567,10 +2538,10 @@ currently-unhandled@^0.4.1:
dependencies:
array-find-index "^1.0.1"
-cyclist@~0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
- integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=
+cyclist@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
+ integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=
cz-conventional-changelog@2.1.0:
version "2.1.0"
@@ -2614,35 +2585,28 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8:
dependencies:
ms "2.0.0"
-debug@3.1.0, debug@^3.1.0:
+debug@3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
dependencies:
ms "2.0.0"
-debug@^3.2.6:
+debug@^3.1.0, debug@^3.2.6:
version "3.2.6"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
dependencies:
ms "^2.1.1"
-debug@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87"
- integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==
- dependencies:
- ms "^2.1.1"
-
-debug@^4.1.0:
+debug@^4.0.0, debug@^4.1.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
dependencies:
ms "^2.1.1"
-debuglog@^1.0.1:
+debuglog@*, debuglog@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
@@ -2694,13 +2658,12 @@ defaults@^1.0.3:
dependencies:
clone "^1.0.2"
-define-properties@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
- integrity sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=
+define-properties@^1.1.2, define-properties@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
dependencies:
- foreach "^2.0.5"
- object-keys "^1.0.8"
+ object-keys "^1.0.12"
define-property@^0.2.5:
version "0.2.5"
@@ -2752,7 +2715,7 @@ denodeify@^1.2.1:
resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631"
integrity sha1-OjYof1A05pnnV3kBBSwubJQlFjE=
-depd@~1.1.1, depd@~1.1.2:
+depd@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
@@ -2836,7 +2799,7 @@ dot-prop@^4.1.0:
dotenv@^5.0.1:
version "5.0.1"
- resolved "http://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef"
integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==
duplexer2@~0.1.0:
@@ -2852,9 +2815,9 @@ duplexer3@^0.1.4:
integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
duplexify@^3.4.2, duplexify@^3.6.0:
- version "3.6.1"
- resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125"
- integrity sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
+ integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
dependencies:
end-of-stream "^1.0.0"
inherits "^2.0.1"
@@ -2862,11 +2825,12 @@ duplexify@^3.4.2, duplexify@^3.6.0:
stream-shift "^1.0.0"
ecc-jsbn@~0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
- integrity sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
+ integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
dependencies:
jsbn "~0.1.0"
+ safer-buffer "^2.1.0"
editor@~1.0.0:
version "1.0.0"
@@ -2896,9 +2860,9 @@ encoding@^0.1.11:
iconv-lite "~0.4.13"
end-of-stream@^1.0.0, end-of-stream@^1.1.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
- integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
dependencies:
once "^1.4.0"
@@ -2910,6 +2874,11 @@ env-ci@^3.0.0:
execa "^1.0.0"
java-properties "^0.2.9"
+env-paths@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-1.0.0.tgz#4168133b42bb05c38a35b1ae4397c8298ab369e0"
+ integrity sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=
+
envinfo@^5.7.0:
version "5.10.0"
resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-5.10.0.tgz#503a9774ae15b93ea68bdfae2ccd6306624ea6df"
@@ -2953,6 +2922,23 @@ es-abstract@^1.10.0:
is-callable "^1.1.3"
is-regex "^1.0.4"
+es-abstract@^1.17.0-next.1:
+ version "1.17.0-next.1"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.0-next.1.tgz#94acc93e20b05a6e96dacb5ab2f1cb3a81fc2172"
+ integrity sha512-7MmGr03N7Rnuid6+wyhD9sHNE2n4tFSwExnU2lQl3lIo2ShXWGePY80zYaoMOmILWv57H0amMjZGHNzzGG70Rw==
+ dependencies:
+ es-to-primitive "^1.2.1"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.1"
+ is-callable "^1.1.4"
+ is-regex "^1.0.4"
+ object-inspect "^1.7.0"
+ object-keys "^1.1.1"
+ object.assign "^4.1.0"
+ string.prototype.trimleft "^2.1.0"
+ string.prototype.trimright "^2.1.0"
+
es-abstract@^1.7.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864"
@@ -2973,14 +2959,23 @@ es-to-primitive@^1.1.1:
is-date-object "^1.0.1"
is-symbol "^1.0.1"
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
es6-promise@^4.0.3:
- version "4.2.5"
- resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054"
- integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==
+ version "4.2.8"
+ resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
+ integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
es6-promisify@^5.0.0:
version "5.0.0"
- resolved "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
+ resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=
dependencies:
es6-promise "^4.0.3"
@@ -3073,14 +3068,16 @@ eslint-scope@^4.0.0:
estraverse "^4.1.1"
eslint-utils@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512"
- integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab"
+ integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==
+ dependencies:
+ eslint-visitor-keys "^1.0.0"
eslint-visitor-keys@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
- integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2"
+ integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==
eslint@^5.3.0:
version "5.3.0"
@@ -3135,12 +3132,7 @@ espree@^4.0.0:
acorn "^5.6.0"
acorn-jsx "^4.1.1"
-esprima@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804"
- integrity sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==
-
-esprima@~4.0.0:
+esprima@^4.0.0, esprima@~4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
@@ -3378,11 +3370,6 @@ fancy-log@^1.3.2:
parse-node-version "^1.0.0"
time-stamp "^1.0.0"
-fast-deep-equal@^1.0.0:
- version "1.1.0"
- resolved "http://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
- integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=
-
fast-deep-equal@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
@@ -3465,7 +3452,7 @@ fbjs@^1.0.0:
setimmediate "^1.0.5"
ua-parser-js "^0.7.18"
-figgy-pudding@^3.0.0, figgy-pudding@^3.1.0, figgy-pudding@^3.4.1, figgy-pudding@^3.5.1:
+figgy-pudding@^3.4.1, figgy-pudding@^3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790"
integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==
@@ -3615,12 +3602,12 @@ flat-cache@^1.2.1:
write "^0.2.1"
flush-write-stream@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd"
- integrity sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
+ integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
dependencies:
- inherits "^2.0.1"
- readable-stream "^2.0.4"
+ inherits "^2.0.3"
+ readable-stream "^2.3.6"
for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2"
@@ -3634,11 +3621,6 @@ for-own@^0.1.4:
dependencies:
for-in "^1.0.1"
-foreach@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
- integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k=
-
forever-agent@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
@@ -3714,11 +3696,11 @@ fs-extra@^7.0.1:
universalify "^0.1.0"
fs-minipass@^1.2.5:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
- integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
+ integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==
dependencies:
- minipass "^2.2.1"
+ minipass "^2.6.0"
fs-vacuum@^1.2.10, fs-vacuum@~1.2.10:
version "1.2.10"
@@ -3752,17 +3734,7 @@ fsevents@^1.2.3:
nan "^2.12.1"
node-pre-gyp "^0.12.0"
-fstream@^1.0.0, fstream@^1.0.2:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
- integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=
- dependencies:
- graceful-fs "^4.1.2"
- inherits "~2.0.0"
- mkdirp ">=0.5 0"
- rimraf "2"
-
-function-bind@^1.0.2, function-bind@^1.1.1:
+function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
@@ -3802,24 +3774,27 @@ genfun@^5.0.0:
resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537"
integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==
-gentle-fs@^2.0.0, gentle-fs@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/gentle-fs/-/gentle-fs-2.0.1.tgz#585cfd612bfc5cd52471fdb42537f016a5ce3687"
- integrity sha512-cEng5+3fuARewXktTEGbwsktcldA+YsnUEaXZwcK/3pjSE1X9ObnTs+/8rYf8s+RnIcQm2D5x3rwpN7Zom8Bew==
+gentle-fs@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/gentle-fs/-/gentle-fs-2.3.0.tgz#13538db5029400f98684be4894e8a7d8f0d1ea7f"
+ integrity sha512-3k2CgAmPxuz7S6nKK+AqFE2AdM1QuwqKLPKzIET3VRwK++3q96MsNFobScDjlCrq97ZJ8y5R725MOlm6ffUCjg==
dependencies:
aproba "^1.1.2"
+ chownr "^1.1.2"
+ cmd-shim "^3.0.3"
fs-vacuum "^1.2.10"
graceful-fs "^4.1.11"
iferr "^0.1.5"
+ infer-owner "^1.0.4"
mkdirp "^0.5.1"
path-is-inside "^1.0.2"
read-cmd-shim "^1.0.1"
slide "^1.1.6"
get-caller-file@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
- integrity sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
+ integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
get-own-enumerable-property-symbols@^2.0.1:
version "2.0.1"
@@ -3841,7 +3816,7 @@ get-stream@^3.0.0:
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
-get-stream@^4.0.0:
+get-stream@^4.0.0, get-stream@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
@@ -3911,7 +3886,7 @@ glob-to-regexp@^0.3.0:
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
-glob@7.1.3, glob@^7.0.0, glob@~7.1.2:
+glob@7.1.3:
version "7.1.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
@@ -3923,10 +3898,10 @@ glob@7.1.3, glob@^7.0.0, glob@~7.1.2:
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
- integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==
+glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4:
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
+ integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
@@ -4005,7 +3980,7 @@ globby@^8.0.0, globby@^8.0.1:
got@^6.7.1:
version "6.7.1"
- resolved "http://registry.npmjs.org/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
+ resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=
dependencies:
create-error-class "^3.0.0"
@@ -4020,10 +3995,10 @@ got@^6.7.1:
unzip-response "^2.0.1"
url-parse-lax "^1.0.0"
-graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@~4.1.11:
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
- integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.3:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423"
+ integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==
growly@^1.3.0:
version "1.3.0"
@@ -4047,11 +4022,11 @@ har-schema@^2.0.0:
integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
har-validator@~5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29"
- integrity sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==
+ version "5.1.3"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
+ integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
dependencies:
- ajv "^5.3.0"
+ ajv "^6.5.5"
har-schema "^2.0.0"
has-ansi@^2.0.0:
@@ -4071,10 +4046,10 @@ has-flag@^3.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
-has-symbols@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
- integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
+has-symbols@^1.0.0, has-symbols@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
+ integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
has-unicode@^2.0.0, has-unicode@~2.0.1:
version "2.0.1"
@@ -4112,14 +4087,7 @@ has-values@^1.0.0:
is-number "^3.0.0"
kind-of "^4.0.0"
-has@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
- integrity sha1-hGFzP1OLCDfJNh45qauelwTcLyg=
- dependencies:
- function-bind "^1.0.2"
-
-has@^1.0.3:
+has@^1.0.1, has@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
@@ -4138,15 +4106,10 @@ hook-std@^1.1.0:
resolved "https://registry.yarnpkg.com/hook-std/-/hook-std-1.1.0.tgz#7f76b74b6f96d3cd4106afb50a66bdb0af2d2a2d"
integrity sha512-aIyBZbZl3NS8XoSwIDQ+ZaiBuPOhhPWoBFA3QX0Q8hOMO8Tx4xGRTDnn/nl/LAtZWdieXzFC9ohAtTSnWrlHCQ==
-hosted-git-info@^2.1.4:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
- integrity sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==
-
-hosted-git-info@^2.6.0, hosted-git-info@^2.7.1:
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
- integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==
+hosted-git-info@^2.1.4, hosted-git-info@^2.7.1, hosted-git-info@^2.8.5:
+ version "2.8.5"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c"
+ integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==
http-cache-semantics@^3.8.1:
version "3.8.1"
@@ -4188,6 +4151,14 @@ https-proxy-agent@^2.2.0, https-proxy-agent@^2.2.1:
agent-base "^4.1.0"
debug "^3.1.0"
+https-proxy-agent@^2.2.3:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b"
+ integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==
+ dependencies:
+ agent-base "^4.3.0"
+ debug "^3.1.0"
+
humanize-ms@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed"
@@ -4206,12 +4177,12 @@ husky@^0.14.3:
prebuiltVariants:
husky-v0.14.3-darwin-x64-64 "27f91d601654f8a3a678ed299cc1b44b63faa600"
-iconv-lite@^0.4.17, iconv-lite@~0.4.13:
+iconv-lite@^0.4.17:
version "0.4.19"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
integrity sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==
-iconv-lite@^0.4.24, iconv-lite@^0.4.4:
+iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
@@ -4229,9 +4200,9 @@ iferr@^1.0.2:
integrity sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg==
ignore-walk@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
- integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37"
+ integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==
dependencies:
minimatch "^3.0.4"
@@ -4270,7 +4241,7 @@ import-lazy@^2.1.0:
resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=
-imurmurhash@^0.1.4:
+imurmurhash@*, imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
@@ -4292,6 +4263,11 @@ indent-string@^3.0.0:
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=
+infer-owner@^1.0.3, infer-owner@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
+ integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
+
inflight@^1.0.4, inflight@~1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@@ -4300,7 +4276,12 @@ inflight@^1.0.4, inflight@~1.0.6:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
+inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+inherits@2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
@@ -4326,7 +4307,7 @@ init-package-json@^1.10.3:
inquirer@0.11.0:
version "0.11.0"
- resolved "http://registry.npmjs.org/inquirer/-/inquirer-0.11.0.tgz#7448bfa924092af311d47173bbab990cae2bb027"
+ resolved "https://registry.npmjs.org/inquirer/-/inquirer-0.11.0.tgz#7448bfa924092af311d47173bbab990cae2bb027"
integrity sha1-dEi/qSQJKvMR1HFzu6uZDK4rsCc=
dependencies:
ansi-escapes "^1.1.0"
@@ -4442,7 +4423,7 @@ ip-regex@^2.1.0:
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
-ip@^1.1.4, ip@^1.1.5:
+ip@1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
@@ -4471,29 +4452,27 @@ is-buffer@^1.1.5:
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
-is-builtin-module@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
- integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74=
- dependencies:
- builtin-modules "^1.0.0"
-
is-callable@^1.1.1, is-callable@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
integrity sha1-hut1OSgF3cM69xySoO7fdO52BLI=
+is-callable@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
+ integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
+
is-ci@^1.0.10:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5"
- integrity sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c"
+ integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==
dependencies:
- ci-info "^1.0.0"
+ ci-info "^1.5.0"
-is-cidr@^2.0.6:
- version "2.0.7"
- resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-2.0.7.tgz#0fd4b863c26b2eb2d157ed21060c4f3f8dd356ce"
- integrity sha512-YfOm5liUO1RoYfFh+lhiGNYtbLzem7IXzFqvfjXh+zLCEuAiznTBlQ2QcMWxsgYeOFmjzljOxJfmZID4/cRBAQ==
+is-cidr@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-3.1.0.tgz#72e233d8e1c4cd1d3f11713fcce3eba7b0e3476f"
+ integrity sha512-3kxTForpuj8O4iHn0ocsn1jxRm5VYm60GDghK6HXmpn4IyZOoRy9/GmdjFA2yEMqw91TB1/K3bFTuI7FlFNR1g==
dependencies:
cidr-regex "^2.0.10"
@@ -4733,9 +4712,9 @@ is-resolvable@^1.1.0:
integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
is-retry-allowed@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
- integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4"
+ integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==
is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0:
version "1.1.0"
@@ -4752,6 +4731,13 @@ is-symbol@^1.0.1:
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
integrity sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=
+is-symbol@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
+ integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
+ dependencies:
+ has-symbols "^1.0.1"
+
is-text-path@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e"
@@ -4898,15 +4884,7 @@ js-tokens@^4.0.0:
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-js-yaml@^3.11.0:
- version "3.12.0"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1"
- integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==
- dependencies:
- argparse "^1.0.7"
- esprima "^4.0.0"
-
-js-yaml@^3.13.1:
+js-yaml@^3.11.0, js-yaml@^3.13.1, js-yaml@^3.9.0:
version "3.13.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
@@ -4914,14 +4892,6 @@ js-yaml@^3.13.1:
argparse "^1.0.7"
esprima "^4.0.0"
-js-yaml@^3.9.0:
- version "3.10.0"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
- integrity sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==
- dependencies:
- argparse "^1.0.7"
- esprima "^4.0.0"
-
jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
@@ -4937,21 +4907,11 @@ jsesc@~0.5.0:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
-json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.2:
+json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
-json-parse-better-errors@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz#50183cd1b2d25275de069e9e71b467ac9eab973a"
- integrity sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==
-
-json-schema-traverse@^0.3.0:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
- integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=
-
json-schema-traverse@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
@@ -5102,33 +5062,125 @@ levn@^0.3.0, levn@~0.3.0:
prelude-ls "~1.1.2"
type-check "~0.3.2"
-libcipm@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-2.0.2.tgz#4f38c2b37acf2ec156936cef1cbf74636568fc7b"
- integrity sha512-9uZ6/LAflVEijksTRq/RX0e+pGA4mr8tND9Cmk2JMg7j2fFUBrs8PpFX2DOAJR/XoxPzz+5h8bkWmtIYLunKAg==
+libcipm@^4.0.7:
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-4.0.7.tgz#76cd675c98bdaae64db88b782b01b804b6d02c8a"
+ integrity sha512-fTq33otU3PNXxxCTCYCYe7V96o59v/o7bvtspmbORXpgFk+wcWrGf5x6tBgui5gCed/45/wtPomBsZBYm5KbIw==
dependencies:
bin-links "^1.1.2"
bluebird "^3.5.1"
+ figgy-pudding "^3.5.1"
find-npm-prefix "^1.0.2"
graceful-fs "^4.1.11"
+ ini "^1.3.5"
lock-verify "^2.0.2"
mkdirp "^0.5.1"
- npm-lifecycle "^2.0.3"
+ npm-lifecycle "^3.0.0"
npm-logical-tree "^1.2.1"
npm-package-arg "^6.1.0"
- pacote "^8.1.6"
- protoduck "^5.0.0"
+ pacote "^9.1.0"
read-package-json "^2.0.13"
rimraf "^2.6.2"
worker-farm "^1.6.0"
-libnpmhook@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-4.0.1.tgz#63641654de772cbeb96a88527a7fd5456ec3c2d7"
- integrity sha512-3qqpfqvBD1712WA6iGe0stkG40WwAeoWcujA6BlC0Be1JArQbqwabnEnZ0CRcD05Tf1fPYJYdCbSfcfedEJCOg==
+libnpm@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/libnpm/-/libnpm-3.0.1.tgz#0be11b4c9dd4d1ffd7d95c786e92e55d65be77a2"
+ integrity sha512-d7jU5ZcMiTfBqTUJVZ3xid44fE5ERBm9vBnmhp2ECD2Ls+FNXWxHSkO7gtvrnbLO78gwPdNPz1HpsF3W4rjkBQ==
+ dependencies:
+ bin-links "^1.1.2"
+ bluebird "^3.5.3"
+ find-npm-prefix "^1.0.2"
+ libnpmaccess "^3.0.2"
+ libnpmconfig "^1.2.1"
+ libnpmhook "^5.0.3"
+ libnpmorg "^1.0.1"
+ libnpmpublish "^1.1.2"
+ libnpmsearch "^2.0.2"
+ libnpmteam "^1.0.2"
+ lock-verify "^2.0.2"
+ npm-lifecycle "^3.0.0"
+ npm-logical-tree "^1.2.1"
+ npm-package-arg "^6.1.0"
+ npm-profile "^4.0.2"
+ npm-registry-fetch "^4.0.0"
+ npmlog "^4.1.2"
+ pacote "^9.5.3"
+ read-package-json "^2.0.13"
+ stringify-package "^1.0.0"
+
+libnpmaccess@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.2.tgz#8b2d72345ba3bef90d3b4f694edd5c0417f58923"
+ integrity sha512-01512AK7MqByrI2mfC7h5j8N9V4I7MHJuk9buo8Gv+5QgThpOgpjB7sQBDDkeZqRteFb1QM/6YNdHfG7cDvfAQ==
+ dependencies:
+ aproba "^2.0.0"
+ get-stream "^4.0.0"
+ npm-package-arg "^6.1.0"
+ npm-registry-fetch "^4.0.0"
+
+libnpmconfig@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/libnpmconfig/-/libnpmconfig-1.2.1.tgz#c0c2f793a74e67d4825e5039e7a02a0044dfcbc0"
+ integrity sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==
+ dependencies:
+ figgy-pudding "^3.5.1"
+ find-up "^3.0.0"
+ ini "^1.3.5"
+
+libnpmhook@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-5.0.3.tgz#4020c0f5edbf08ebe395325caa5ea01885b928f7"
+ integrity sha512-UdNLMuefVZra/wbnBXECZPefHMGsVDTq5zaM/LgKNE9Keyl5YXQTnGAzEo+nFOpdRqTWI9LYi4ApqF9uVCCtuA==
+ dependencies:
+ aproba "^2.0.0"
+ figgy-pudding "^3.4.1"
+ get-stream "^4.0.0"
+ npm-registry-fetch "^4.0.0"
+
+libnpmorg@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-1.0.1.tgz#5d2503f6ceb57f33dbdcc718e6698fea6d5ad087"
+ integrity sha512-0sRUXLh+PLBgZmARvthhYXQAWn0fOsa6T5l3JSe2n9vKG/lCVK4nuG7pDsa7uMq+uTt2epdPK+a2g6btcY11Ww==
+ dependencies:
+ aproba "^2.0.0"
+ figgy-pudding "^3.4.1"
+ get-stream "^4.0.0"
+ npm-registry-fetch "^4.0.0"
+
+libnpmpublish@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-1.1.3.tgz#e3782796722d79eef1a0a22944c117e0c4ca4280"
+ integrity sha512-/3LsYqVc52cHXBmu26+J8Ed7sLs/hgGVFMH1mwYpL7Qaynb9RenpKqIKu0sJ130FB9PMkpMlWjlbtU8A4m7CQw==
+ dependencies:
+ aproba "^2.0.0"
+ figgy-pudding "^3.5.1"
+ get-stream "^4.0.0"
+ lodash.clonedeep "^4.5.0"
+ normalize-package-data "^2.4.0"
+ npm-package-arg "^6.1.0"
+ npm-registry-fetch "^4.0.0"
+ semver "^5.5.1"
+ ssri "^6.0.1"
+
+libnpmsearch@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-2.0.2.tgz#9a4f059102d38e3dd44085bdbfe5095f2a5044cf"
+ integrity sha512-VTBbV55Q6fRzTdzziYCr64+f8AopQ1YZ+BdPOv16UegIEaE8C0Kch01wo4s3kRTFV64P121WZJwgmBwrq68zYg==
+ dependencies:
+ figgy-pudding "^3.5.1"
+ get-stream "^4.0.0"
+ npm-registry-fetch "^4.0.0"
+
+libnpmteam@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-1.0.2.tgz#8b48bcbb6ce70dd8150c950fcbdbf3feb6eec820"
+ integrity sha512-p420vM28Us04NAcg1rzgGW63LMM6rwe+6rtZpfDxCcXxM0zUTLl7nPFEnRF3JfFBF5skF/yuZDUthTsHgde8QA==
dependencies:
- figgy-pudding "^3.1.0"
- npm-registry-fetch "^3.0.0"
+ aproba "^2.0.0"
+ figgy-pudding "^3.4.1"
+ get-stream "^4.0.0"
+ npm-registry-fetch "^4.0.0"
libnpx@^10.2.0:
version "10.2.0"
@@ -5271,12 +5323,12 @@ locate-path@^3.0.0:
p-locate "^3.0.0"
path-exists "^3.0.0"
-lock-verify@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/lock-verify/-/lock-verify-2.0.2.tgz#148e4f85974915c9e3c34d694b7de9ecb18ee7a8"
- integrity sha512-QNVwK0EGZBS4R3YQ7F1Ox8p41Po9VGl2QG/2GsuvTbkJZYSsPeWHKMbbH6iZMCHWSMww5nrJroZYnGzI4cePuw==
+lock-verify@^2.0.2, lock-verify@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/lock-verify/-/lock-verify-2.1.0.tgz#fff4c918b8db9497af0c5fa7f6d71555de3ceb47"
+ integrity sha512-vcLpxnGvrqisKvLQ2C2v0/u7LVly17ak2YSgoK4PrdsYBXQIax19vhKiLfvKNFx7FRrpTnitrpzF/uuCMuorIg==
dependencies:
- npm-package-arg "^5.1.2 || 6"
+ npm-package-arg "^6.1.0"
semver "^5.4.1"
lockfile@^1.0.4:
@@ -5286,6 +5338,11 @@ lockfile@^1.0.4:
dependencies:
signal-exit "^3.0.2"
+lodash._baseindexof@*:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c"
+ integrity sha1-/lK1OhxnYeQmGNZU5KJXie1hgiw=
+
lodash._baseuniq@~4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8"
@@ -5294,12 +5351,34 @@ lodash._baseuniq@~4.6.0:
lodash._createset "~4.0.0"
lodash._root "~3.0.0"
+lodash._bindcallback@*:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e"
+ integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4=
+
+lodash._cacheindexof@*:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92"
+ integrity sha1-PcaayCSY0u5ePOVgkbr9Ktx73pI=
+
+lodash._createcache@*:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093"
+ integrity sha1-VtagZAF2JeeevKa4AY4XRAvc8JM=
+ dependencies:
+ lodash._getnative "^3.0.0"
+
lodash._createset@~4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26"
integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY=
-lodash._reinterpolate@~3.0.0:
+lodash._getnative@*, lodash._getnative@^3.0.0:
+ version "3.9.1"
+ resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
+ integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=
+
+lodash._reinterpolate@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
@@ -5324,7 +5403,7 @@ lodash.capitalize@^4.2.1:
resolved "https://registry.yarnpkg.com/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz#f826c9b4e2a8511d84e3aca29db05e1a4f3b72a9"
integrity sha1-+CbJtOKoUR2E46yinbBeGk87cqk=
-lodash.clonedeep@~4.5.0:
+lodash.clonedeep@^4.5.0, lodash.clonedeep@~4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
@@ -5389,6 +5468,11 @@ lodash.pick@4.4.0:
resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=
+lodash.restparam@*:
+ version "3.6.1"
+ resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
+ integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=
+
lodash.snakecase@4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d"
@@ -5400,19 +5484,19 @@ lodash.startcase@4.4.0:
integrity sha1-lDbjTtJgk+1/+uGTYUQ1CRXZrdg=
lodash.template@^4.0.2:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0"
- integrity sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
+ integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==
dependencies:
- lodash._reinterpolate "~3.0.0"
+ lodash._reinterpolate "^3.0.0"
lodash.templatesettings "^4.0.0"
lodash.templatesettings@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316"
- integrity sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33"
+ integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==
dependencies:
- lodash._reinterpolate "~3.0.0"
+ lodash._reinterpolate "^3.0.0"
lodash.throttle@^4.1.1:
version "4.1.1"
@@ -5461,7 +5545,7 @@ lodash@4.17.11, lodash@^4.17.11, lodash@^4.5.1:
lodash@^3.3.1:
version "3.10.1"
- resolved "http://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
+ resolved "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=
lodash@^4.17.10:
@@ -5527,20 +5611,19 @@ lowercase-keys@^1.0.0:
integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
lru-cache@^4.0.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"
- integrity sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
+ integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
dependencies:
pseudomap "^1.0.2"
yallist "^2.1.2"
-lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.3:
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c"
- integrity sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
dependencies:
- pseudomap "^1.0.2"
- yallist "^2.1.2"
+ yallist "^3.0.2"
macos-release@^1.0.0:
version "1.1.0"
@@ -5548,9 +5631,9 @@ macos-release@^1.0.0:
integrity sha512-mmLbumEYMi5nXReB9js3WGsB8UE6cDBWyIO62Z4DNx6GbRhDxHNjA1MlzSpJ2S2KM1wyiPRA0d19uHWYYvMHjA==
make-dir@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b"
- integrity sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
+ integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==
dependencies:
pify "^3.0.0"
@@ -5562,40 +5645,23 @@ make-dir@^2.0.0:
pify "^4.0.1"
semver "^5.6.0"
-"make-fetch-happen@^2.5.0 || 3 || 4", make-fetch-happen@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz#141497cb878f243ba93136c83d8aba12c216c083"
- integrity sha512-7R5ivfy9ilRJ1EMKIOziwrns9fGeAD4bAha8EB7BIiBBLHm2KeTUGCrICFt2rbHfzheTLynv50GnNTK1zDTrcQ==
+make-fetch-happen@^5.0.0:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd"
+ integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==
dependencies:
agentkeepalive "^3.4.1"
- cacache "^11.0.1"
+ cacache "^12.0.0"
http-cache-semantics "^3.8.1"
http-proxy-agent "^2.1.0"
- https-proxy-agent "^2.2.1"
- lru-cache "^4.1.2"
+ https-proxy-agent "^2.2.3"
+ lru-cache "^5.1.1"
mississippi "^3.0.0"
node-fetch-npm "^2.0.2"
promise-retry "^1.1.1"
socks-proxy-agent "^4.0.0"
ssri "^6.0.0"
-make-fetch-happen@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-3.0.0.tgz#7b661d2372fc4710ab5cc8e1fa3c290eea69a961"
- integrity sha512-FmWY7gC0mL6Z4N86vE14+m719JKE4H0A+pyiOH18B025gF/C113pyfb4gHDDYP5cqnRMHOz06JGdmffC/SES+w==
- dependencies:
- agentkeepalive "^3.4.1"
- cacache "^10.0.4"
- http-cache-semantics "^3.8.1"
- http-proxy-agent "^2.1.0"
- https-proxy-agent "^2.2.0"
- lru-cache "^4.1.2"
- mississippi "^3.0.0"
- node-fetch-npm "^2.0.2"
- promise-retry "^1.1.1"
- socks-proxy-agent "^3.0.1"
- ssri "^5.2.4"
-
makeerror@1.0.x:
version "1.0.11"
resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
@@ -5604,9 +5670,9 @@ makeerror@1.0.x:
tmpl "1.0.x"
map-age-cleaner@^0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz#098fb15538fd3dbe461f12745b0ca8568d4e3f74"
- integrity sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
+ integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==
dependencies:
p-defer "^1.0.0"
@@ -5661,13 +5727,13 @@ mem@^1.1.0:
mimic-fn "^1.0.0"
mem@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz#6437690d9471678f6cc83659c00cbafcd6b0cdaf"
- integrity sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178"
+ integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==
dependencies:
map-age-cleaner "^0.1.1"
- mimic-fn "^1.0.0"
- p-is-promise "^1.1.0"
+ mimic-fn "^2.0.0"
+ p-is-promise "^2.0.0"
meow@^3.3.0:
version "3.7.0"
@@ -6037,6 +6103,11 @@ micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8:
snapdragon "^0.8.1"
to-regex "^3.0.2"
+mime-db@1.42.0:
+ version "1.42.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac"
+ integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==
+
"mime-db@>= 1.33.0 < 2", mime-db@~1.33.0:
version "1.33.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
@@ -6047,11 +6118,6 @@ mime-db@~1.23.0:
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.23.0.tgz#a31b4070adaea27d732ea333740a64d0ec9a6659"
integrity sha1-oxtAcK2uon1zLqMzdApk0OyaZlk=
-mime-db@~1.37.0:
- version "1.37.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8"
- integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==
-
mime-types@2.1.11:
version "2.1.11"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.11.tgz#c259c471bda808a85d6cd193b430a5fae4473b3c"
@@ -6059,20 +6125,20 @@ mime-types@2.1.11:
dependencies:
mime-db "~1.23.0"
-mime-types@^2.1.12, mime-types@~2.1.18:
+mime-types@^2.1.12, mime-types@~2.1.19:
+ version "2.1.25"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437"
+ integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==
+ dependencies:
+ mime-db "1.42.0"
+
+mime-types@~2.1.18:
version "2.1.18"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8"
integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==
dependencies:
mime-db "~1.33.0"
-mime-types@~2.1.19:
- version "2.1.21"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96"
- integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==
- dependencies:
- mime-db "~1.37.0"
-
mime@1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
@@ -6093,6 +6159,11 @@ mimic-fn@^1.0.0:
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
integrity sha1-5md4PZLonb00KBi1IwudYqZyrRg=
+mimic-fn@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
min-document@^2.19.0:
version "2.19.0"
resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
@@ -6130,43 +6201,20 @@ minimist@~0.0.1:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=
-minipass@^2.2.1, minipass@^2.3.3, minipass@^2.3.5:
- version "2.3.5"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
- integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==
+minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
+ integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
dependencies:
safe-buffer "^5.1.2"
yallist "^3.0.0"
-minizlib@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.1.tgz#6734acc045a46e61d596a43bb9d9cd326e19cc42"
- integrity sha512-TrfjCjk4jLhcJyGMYymBH6oTXcWjYbUAXTHDbtnWHjZC25h0cdajHuPE1zxb4DVmu8crfh+HwH/WMuyLG0nHBg==
- dependencies:
- minipass "^2.2.1"
-
minizlib@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
- integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==
- dependencies:
- minipass "^2.2.1"
-
-mississippi@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f"
- integrity sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
+ integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==
dependencies:
- concat-stream "^1.5.0"
- duplexify "^3.4.2"
- end-of-stream "^1.1.0"
- flush-write-stream "^1.0.0"
- from2 "^2.1.0"
- parallel-transform "^1.1.0"
- pump "^2.0.1"
- pumpify "^1.3.3"
- stream-each "^1.1.0"
- through2 "^2.0.0"
+ minipass "^2.9.0"
mississippi@^3.0.0:
version "3.0.0"
@@ -6185,14 +6233,14 @@ mississippi@^3.0.0:
through2 "^2.0.0"
mixin-deep@^1.2.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
- integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
+ integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
dependencies:
for-in "^1.0.2"
is-extendable "^1.0.1"
-"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
+mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
@@ -6205,13 +6253,13 @@ modify-values@^1.0.0:
integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==
morgan@^1.9.0:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.0.tgz#d01fa6c65859b76fcf31b3cb53a3821a311d8051"
- integrity sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.1.tgz#0a8d16734a1d9afbc824b99df87e738e58e2da59"
+ integrity sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==
dependencies:
basic-auth "~2.0.0"
debug "2.6.9"
- depd "~1.1.1"
+ depd "~1.1.2"
on-finished "~2.3.0"
on-headers "~1.0.1"
@@ -6233,20 +6281,25 @@ ms@2.0.0:
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
ms@^2.0.0, ms@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
- integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
mute-stream@0.0.5:
version "0.0.5"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
integrity sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=
-mute-stream@0.0.7, mute-stream@~0.0.4:
+mute-stream@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
+mute-stream@~0.0.4:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
+ integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
+
nan@^2.12.1:
version "2.14.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
@@ -6300,9 +6353,9 @@ nerf-dart@^1.0.0:
integrity sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=
nice-try@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4"
- integrity sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
node-emoji@^1.4.1:
version "1.8.1"
@@ -6338,22 +6391,21 @@ node-fetch@^2.2.0:
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
-node-gyp@^3.8.0:
- version "3.8.0"
- resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c"
- integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==
+node-gyp@^5.0.2, node-gyp@^5.0.5:
+ version "5.0.5"
+ resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.0.5.tgz#f6cf1da246eb8c42b097d7cd4d6c3ce23a4163af"
+ integrity sha512-WABl9s4/mqQdZneZHVWVG4TVr6QQJZUC6PAx47ITSk9lreZ1n+7Z9mMAIbA3vnO4J9W20P7LhCxtzfWsAD/KDw==
dependencies:
- fstream "^1.0.0"
+ env-paths "^1.0.0"
glob "^7.0.3"
graceful-fs "^4.1.2"
mkdirp "^0.5.0"
nopt "2 || 3"
npmlog "0 || 1 || 2 || 3 || 4"
- osenv "0"
request "^2.87.0"
rimraf "2"
semver "~5.3.0"
- tar "^2.0.0"
+ tar "^4.4.12"
which "1"
node-int64@^0.4.0:
@@ -6363,7 +6415,7 @@ node-int64@^0.4.0:
node-localstorage@^0.6.0:
version "0.6.0"
- resolved "http://registry.npmjs.org/node-localstorage/-/node-localstorage-0.6.0.tgz#45a0601c6932dfde6644a23361f1be173c75d3af"
+ resolved "https://registry.npmjs.org/node-localstorage/-/node-localstorage-0.6.0.tgz#45a0601c6932dfde6644a23361f1be173c75d3af"
integrity sha1-RaBgHGky395mRKIzYfG+Fzx1068=
node-modules-regexp@^1.0.0:
@@ -6412,13 +6464,13 @@ nopt@^4.0.1, nopt@~4.0.1:
abbrev "1"
osenv "^0.1.4"
-normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0, "normalize-package-data@~1.0.1 || ^2.0.0", normalize-package-data@~2.4.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
- integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==
+normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
dependencies:
hosted-git-info "^2.1.4"
- is-builtin-module "^1.0.0"
+ resolve "^1.10.0"
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"
@@ -6439,39 +6491,41 @@ normalize-url@^3.0.0:
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
-npm-audit-report@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-1.3.1.tgz#e79ea1fcb5ffaf3031102b389d5222c2b0459632"
- integrity sha512-SjTF8ZP4rOu3JiFrTMi4M1CmVo2tni2sP4TzhyCMHwnMGf6XkdGLZKt9cdZ12esKf0mbQqFyU9LtY0SoeahL7g==
+npm-audit-report@^1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-1.3.2.tgz#303bc78cd9e4c226415076a4f7e528c89fc77018"
+ integrity sha512-abeqS5ONyXNaZJPGAf6TOUMNdSe1Y6cpc9MLBRn+CuUoYbfdca6AxOyXVlfIv9OgKX+cacblbG5w7A6ccwoTPw==
dependencies:
cli-table3 "^0.5.0"
console-control-strings "^1.1.0"
npm-bundled@^1.0.1:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979"
- integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b"
+ integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==
+ dependencies:
+ npm-normalize-package-bin "^1.0.1"
npm-cache-filename@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11"
integrity sha1-3tMGxbC/yHCp6fr4I7xfKD4FrhE=
-npm-install-checks@~3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.0.tgz#d4aecdfd51a53e3723b7b2f93b2ee28e307bc0d7"
- integrity sha1-1K7N/VGlPjcjt7L5Oy7ijjB7wNc=
+npm-install-checks@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.2.tgz#ab2e32ad27baa46720706908e5b14c1852de44d9"
+ integrity sha512-E4kzkyZDIWoin6uT5howP8VDvkM+E8IQDcHAycaAxMbwkqhIg5eEYALnXOl3Hq9MrkdQB/2/g1xwBINXdKSRkg==
dependencies:
semver "^2.3.0 || 3.x || 4 || 5"
-npm-lifecycle@^2.0.3, npm-lifecycle@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-2.1.0.tgz#1eda2eedb82db929e3a0c50341ab0aad140ed569"
- integrity sha512-QbBfLlGBKsktwBZLj6AviHC6Q9Y3R/AY4a2PYSIRhSKSS0/CxRyD/PfxEX6tPeOCXQgMSNdwGeECacstgptc+g==
+npm-lifecycle@^3.0.0, npm-lifecycle@^3.1.4:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.4.tgz#de6975c7d8df65f5150db110b57cce498b0b604c"
+ integrity sha512-tgs1PaucZwkxECGKhC/stbEgFyc3TGh2TJcg2CDr6jbvQRdteHNhmMeljRzpe4wgFAXQADoy1cSqqi7mtiAa5A==
dependencies:
byline "^5.0.0"
- graceful-fs "^4.1.11"
- node-gyp "^3.8.0"
+ graceful-fs "^4.1.15"
+ node-gyp "^5.0.2"
resolve-from "^4.0.0"
slide "^1.1.6"
uid-number "0.0.6"
@@ -6483,28 +6537,25 @@ npm-logical-tree@^1.2.1:
resolved "https://registry.yarnpkg.com/npm-logical-tree/-/npm-logical-tree-1.2.1.tgz#44610141ca24664cad35d1e607176193fd8f5b88"
integrity sha512-AJI/qxDB2PWI4LG1CYN579AY1vCiNyWfkiquCsJWqntRu/WwimVrC8yXeILBFHDwxfOejxewlmnvW9XXjMlYIg==
-"npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", "npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", "npm-package-arg@^5.1.2 || 6", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1"
- integrity sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==
+npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
+ integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==
+
+"npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0, npm-package-arg@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7"
+ integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==
dependencies:
- hosted-git-info "^2.6.0"
+ hosted-git-info "^2.7.1"
osenv "^0.1.5"
- semver "^5.5.0"
+ semver "^5.6.0"
validate-npm-package-name "^3.0.0"
-npm-packlist@^1.1.10, npm-packlist@^1.1.11:
- version "1.1.12"
- resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a"
- integrity sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g==
- dependencies:
- ignore-walk "^3.0.1"
- npm-bundled "^1.0.1"
-
-npm-packlist@^1.1.6:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc"
- integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==
+npm-packlist@^1.1.12, npm-packlist@^1.1.6, npm-packlist@^1.4.7:
+ version "1.4.7"
+ resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.7.tgz#9e954365a06b80b18111ea900945af4f88ed4848"
+ integrity sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ==
dependencies:
ignore-walk "^3.0.1"
npm-bundled "^1.0.1"
@@ -6516,65 +6567,36 @@ npm-path@^2.0.2:
dependencies:
which "^1.2.10"
-npm-pick-manifest@^2.1.0:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz#32111d2a9562638bb2c8f2bf27f7f3092c8fae40"
- integrity sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA==
+npm-pick-manifest@^3.0.0, npm-pick-manifest@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7"
+ integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==
dependencies:
figgy-pudding "^3.5.1"
npm-package-arg "^6.0.0"
semver "^5.4.1"
-npm-profile@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-3.0.2.tgz#58d568f1b56ef769602fd0aed8c43fa0e0de0f57"
- integrity sha512-rEJOFR6PbwOvvhGa2YTNOJQKNuc6RovJ6T50xPU7pS9h/zKPNCJ+VHZY2OFXyZvEi+UQYtHRTp8O/YM3tUD20A==
+npm-profile@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-4.0.2.tgz#8272a71c19634d0dce9c35a5daf8ee589cbb0f52"
+ integrity sha512-VRsC04pvRH+9cF+PoVh2nTmJjiG21yu59IHpsBpkxk+jaGAV8lxx96G4SDc0jOHAkfWLXbc6kIph3dGAuRnotQ==
dependencies:
aproba "^1.1.2 || 2"
- make-fetch-happen "^2.5.0 || 3 || 4"
-
-npm-registry-client@^8.6.0:
- version "8.6.0"
- resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-8.6.0.tgz#7f1529f91450732e89f8518e0f21459deea3e4c4"
- integrity sha512-Qs6P6nnopig+Y8gbzpeN/dkt+n7IyVd8f45NTMotGk6Qo7GfBmzwYx6jRLoOOgKiMnaQfYxsuyQlD8Mc3guBhg==
- dependencies:
- concat-stream "^1.5.2"
- graceful-fs "^4.1.6"
- normalize-package-data "~1.0.1 || ^2.0.0"
- npm-package-arg "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0"
- once "^1.3.3"
- request "^2.74.0"
- retry "^0.10.0"
- safe-buffer "^5.1.1"
- semver "2 >=2.2.1 || 3.x || 4 || 5"
- slide "^1.1.3"
- ssri "^5.2.4"
- optionalDependencies:
- npmlog "2 || ^3.1.0 || ^4.0.0"
-
-npm-registry-fetch@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-1.1.1.tgz#710bc5947d9ee2c549375072dab6d5d17baf2eb2"
- integrity sha512-ev+zxOXsgAqRsR8Rk+ErjgWOlbrXcqGdme94/VNdjDo1q8TSy10Pp8xgDv/ZmMk2jG/KvGtXUNG4GS3+l6xbDw==
- dependencies:
- bluebird "^3.5.1"
- figgy-pudding "^3.0.0"
- lru-cache "^4.1.2"
- make-fetch-happen "^3.0.0"
- npm-package-arg "^6.0.0"
- safe-buffer "^5.1.1"
+ figgy-pudding "^3.4.1"
+ npm-registry-fetch "^4.0.0"
-npm-registry-fetch@^3.0.0:
- version "3.8.0"
- resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-3.8.0.tgz#aa7d9a7c92aff94f48dba0984bdef4bd131c88cc"
- integrity sha512-hrw8UMD+Nob3Kl3h8Z/YjmKamb1gf7D1ZZch2otrIXM3uFLB5vjEY6DhMlq80z/zZet6eETLbOXcuQudCB3Zpw==
+npm-registry-fetch@^4.0.0, npm-registry-fetch@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.2.tgz#2b1434f93ccbe6b6385f8e45f45db93e16921d7a"
+ integrity sha512-Z0IFtPEozNdeZRPh3aHHxdG+ZRpzcbQaJLthsm3VhNf6DScicTFRHZzK82u8RsJUsUHkX+QH/zcB/5pmd20H4A==
dependencies:
JSONStream "^1.3.4"
bluebird "^3.5.1"
figgy-pudding "^3.4.1"
- lru-cache "^4.1.3"
- make-fetch-happen "^4.0.1"
+ lru-cache "^5.1.1"
+ make-fetch-happen "^5.0.0"
npm-package-arg "^6.1.0"
+ safe-buffer "^5.2.0"
npm-run-path@^2.0.0:
version "2.0.2"
@@ -6598,121 +6620,135 @@ npm-which@^3.0.1:
which "^1.2.10"
npm@^6.3.0:
- version "6.4.1"
- resolved "https://registry.yarnpkg.com/npm/-/npm-6.4.1.tgz#4f39f9337b557a28faed4a771d5c8802d6b4288b"
- integrity sha512-mXJL1NTVU136PtuopXCUQaNWuHlXCTp4McwlSW8S9/Aj8OEPAlSBgo8og7kJ01MjCDrkmqFQTvN5tTEhBMhXQg==
+ version "6.13.4"
+ resolved "https://registry.yarnpkg.com/npm/-/npm-6.13.4.tgz#1e95b0f311999cf682384c38865dfeb3127203bb"
+ integrity sha512-vTcUL4SCg3AzwInWTbqg1OIaOXlzKSS8Mb8kc5avwrJpcvevDA5J9BhYSuei+fNs3pwOp4lzA5x2FVDXACvoXA==
dependencies:
- JSONStream "^1.3.4"
+ JSONStream "^1.3.5"
abbrev "~1.1.1"
ansicolors "~0.3.2"
ansistyles "~0.1.3"
- aproba "~1.2.0"
+ aproba "^2.0.0"
archy "~1.0.0"
- bin-links "^1.1.2"
- bluebird "~3.5.1"
- byte-size "^4.0.3"
- cacache "^11.2.0"
- call-limit "~1.1.0"
- chownr "~1.0.1"
- ci-info "^1.4.0"
+ bin-links "^1.1.6"
+ bluebird "^3.5.5"
+ byte-size "^5.0.1"
+ cacache "^12.0.3"
+ call-limit "^1.1.1"
+ chownr "^1.1.3"
+ ci-info "^2.0.0"
cli-columns "^3.1.2"
- cli-table3 "^0.5.0"
- cmd-shim "~2.0.2"
+ cli-table3 "^0.5.1"
+ cmd-shim "^3.0.3"
columnify "~1.5.4"
- config-chain "~1.1.11"
+ config-chain "^1.1.12"
+ debuglog "*"
detect-indent "~5.0.0"
detect-newline "^2.1.0"
dezalgo "~1.0.3"
editor "~1.0.0"
- figgy-pudding "^3.4.1"
+ figgy-pudding "^3.5.1"
find-npm-prefix "^1.0.2"
fs-vacuum "~1.2.10"
fs-write-stream-atomic "~1.0.10"
- gentle-fs "^2.0.1"
- glob "~7.1.2"
- graceful-fs "~4.1.11"
+ gentle-fs "^2.3.0"
+ glob "^7.1.4"
+ graceful-fs "^4.2.3"
has-unicode "~2.0.1"
- hosted-git-info "^2.7.1"
+ hosted-git-info "^2.8.5"
iferr "^1.0.2"
+ imurmurhash "*"
+ infer-owner "^1.0.4"
inflight "~1.0.6"
- inherits "~2.0.3"
+ inherits "^2.0.4"
ini "^1.3.5"
init-package-json "^1.10.3"
- is-cidr "^2.0.6"
+ is-cidr "^3.0.0"
json-parse-better-errors "^1.0.2"
lazy-property "~1.0.0"
- libcipm "^2.0.2"
- libnpmhook "^4.0.1"
+ libcipm "^4.0.7"
+ libnpm "^3.0.1"
+ libnpmaccess "^3.0.2"
+ libnpmhook "^5.0.3"
+ libnpmorg "^1.0.1"
+ libnpmsearch "^2.0.2"
+ libnpmteam "^1.0.2"
libnpx "^10.2.0"
- lock-verify "^2.0.2"
+ lock-verify "^2.1.0"
lockfile "^1.0.4"
+ lodash._baseindexof "*"
lodash._baseuniq "~4.6.0"
+ lodash._bindcallback "*"
+ lodash._cacheindexof "*"
+ lodash._createcache "*"
+ lodash._getnative "*"
lodash.clonedeep "~4.5.0"
+ lodash.restparam "*"
lodash.union "~4.6.0"
lodash.uniq "~4.5.0"
lodash.without "~4.4.0"
- lru-cache "^4.1.3"
+ lru-cache "^5.1.1"
meant "~1.0.1"
mississippi "^3.0.0"
mkdirp "~0.5.1"
move-concurrently "^1.0.1"
- node-gyp "^3.8.0"
+ node-gyp "^5.0.5"
nopt "~4.0.1"
- normalize-package-data "~2.4.0"
- npm-audit-report "^1.3.1"
+ normalize-package-data "^2.5.0"
+ npm-audit-report "^1.3.2"
npm-cache-filename "~1.0.2"
- npm-install-checks "~3.0.0"
- npm-lifecycle "^2.1.0"
- npm-package-arg "^6.1.0"
- npm-packlist "^1.1.11"
- npm-pick-manifest "^2.1.0"
- npm-profile "^3.0.2"
- npm-registry-client "^8.6.0"
- npm-registry-fetch "^1.1.0"
+ npm-install-checks "^3.0.2"
+ npm-lifecycle "^3.1.4"
+ npm-package-arg "^6.1.1"
+ npm-packlist "^1.4.7"
+ npm-pick-manifest "^3.0.2"
+ npm-profile "^4.0.2"
+ npm-registry-fetch "^4.0.2"
npm-user-validate "~1.0.0"
npmlog "~4.1.2"
once "~1.4.0"
- opener "^1.5.0"
+ opener "^1.5.1"
osenv "^0.1.5"
- pacote "^8.1.6"
+ pacote "^9.5.11"
path-is-inside "~1.0.2"
promise-inflight "~1.0.1"
qrcode-terminal "^0.12.0"
- query-string "^6.1.0"
+ query-string "^6.8.2"
qw "~1.0.1"
read "~1.0.7"
- read-cmd-shim "~1.0.1"
+ read-cmd-shim "^1.0.5"
read-installed "~4.0.3"
- read-package-json "^2.0.13"
- read-package-tree "^5.2.1"
- readable-stream "^2.3.6"
+ read-package-json "^2.1.1"
+ read-package-tree "^5.3.1"
+ readable-stream "^3.4.0"
+ readdir-scoped-modules "^1.1.0"
request "^2.88.0"
retry "^0.12.0"
- rimraf "~2.6.2"
+ rimraf "^2.6.3"
safe-buffer "^5.1.2"
- semver "^5.5.0"
- sha "~2.0.1"
+ semver "^5.7.1"
+ sha "^3.0.0"
slide "~1.1.6"
sorted-object "~2.0.1"
sorted-union-stream "~2.1.3"
- ssri "^6.0.0"
- stringify-package "^1.0.0"
- tar "^4.4.6"
+ ssri "^6.0.1"
+ stringify-package "^1.0.1"
+ tar "^4.4.13"
text-table "~0.2.0"
tiny-relative-date "^1.3.0"
uid-number "0.0.6"
umask "~1.1.0"
- unique-filename "~1.1.0"
+ unique-filename "^1.1.1"
unpipe "~1.0.0"
update-notifier "^2.5.0"
- uuid "^3.3.2"
+ uuid "^3.3.3"
validate-npm-package-license "^3.0.4"
validate-npm-package-name "~3.0.0"
which "^1.3.1"
- worker-farm "^1.6.0"
- write-file-atomic "^2.3.0"
+ worker-farm "^1.7.0"
+ write-file-atomic "^2.4.3"
-"npmlog@0 || 1 || 2 || 3 || 4", "npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.2, npmlog@~4.1.2:
+"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.2, npmlog@^4.1.2, npmlog@~4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
@@ -6760,10 +6796,15 @@ object-copy@^0.1.0:
define-property "^0.2.5"
kind-of "^3.0.3"
-object-keys@^1.0.8:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
- integrity sha1-xUYBd4rVYPEULODgG8yotW0TQm0=
+object-inspect@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67"
+ integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==
+
+object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
object-visit@^1.0.0:
version "1.0.1"
@@ -6772,6 +6813,24 @@ object-visit@^1.0.0:
dependencies:
isobject "^3.0.0"
+object.assign@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
+ integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
+ dependencies:
+ define-properties "^1.1.2"
+ function-bind "^1.1.1"
+ has-symbols "^1.0.0"
+ object-keys "^1.0.11"
+
+object.getownpropertydescriptors@^2.0.3:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649"
+ integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.0-next.1"
+
object.omit@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
@@ -6795,11 +6854,11 @@ on-finished@~2.3.0:
ee-first "1.1.1"
on-headers@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
- integrity sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
+ integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
-once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0, once@~1.4.0:
+once@^1.3.0, once@^1.3.1, once@^1.4.0, once@~1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
@@ -6818,7 +6877,7 @@ onetime@^2.0.0:
dependencies:
mimic-fn "^1.0.0"
-opener@^1.5.0:
+opener@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed"
integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==
@@ -6888,6 +6947,15 @@ os-locale@^3.0.0:
lcid "^2.0.0"
mem "^4.0.0"
+os-locale@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
+ integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==
+ dependencies:
+ execa "^1.0.0"
+ lcid "^2.0.0"
+ mem "^4.0.0"
+
os-name@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/os-name/-/os-name-2.0.1.tgz#b9a386361c17ae3a21736ef0599405c9a8c5dc5e"
@@ -6906,7 +6974,7 @@ os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
-osenv@0, osenv@^0.1.4, osenv@^0.1.5:
+osenv@^0.1.4, osenv@^0.1.5:
version "0.1.5"
resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
@@ -6931,25 +6999,22 @@ p-finally@^1.0.0:
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
-p-is-promise@^1.1.0:
- version "1.1.0"
- resolved "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e"
- integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=
-
p-is-promise@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.0.0.tgz#7554e3d572109a87e1f3f53f6a7d85d1b194f4c5"
- integrity sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e"
+ integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==
p-limit@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc"
- integrity sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
+ integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
+ dependencies:
+ p-try "^1.0.0"
p-limit@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec"
- integrity sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537"
+ integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==
dependencies:
p-try "^2.0.0"
@@ -6984,10 +7049,15 @@ p-retry@^2.0.0:
dependencies:
retry "^0.12.0"
+p-try@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
+ integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
+
p-try@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1"
- integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
package-json@^4.0.0:
version "4.0.1"
@@ -6999,43 +7069,48 @@ package-json@^4.0.0:
registry-url "^3.0.3"
semver "^5.1.0"
-pacote@^8.1.6:
- version "8.1.6"
- resolved "https://registry.yarnpkg.com/pacote/-/pacote-8.1.6.tgz#8e647564d38156367e7a9dc47a79ca1ab278d46e"
- integrity sha512-wTOOfpaAQNEQNtPEx92x9Y9kRWVu45v583XT8x2oEV2xRB74+xdqMZIeGW4uFvAyZdmSBtye+wKdyyLaT8pcmw==
+pacote@^9.1.0, pacote@^9.5.11, pacote@^9.5.3:
+ version "9.5.11"
+ resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.11.tgz#524152077cb392c47b1fbe198aa28f778bef7ee1"
+ integrity sha512-DMDPvFKCjCg6zMS4IfzZyvT57O/bX8XGG00eEoy4K/S4Wj+qiN8KbnmKpsTvfS6OL9r5TAicxMKWbj1yV2Yh4g==
dependencies:
- bluebird "^3.5.1"
- cacache "^11.0.2"
- get-stream "^3.0.0"
- glob "^7.1.2"
- lru-cache "^4.1.3"
- make-fetch-happen "^4.0.1"
+ bluebird "^3.5.3"
+ cacache "^12.0.2"
+ chownr "^1.1.2"
+ figgy-pudding "^3.5.1"
+ get-stream "^4.1.0"
+ glob "^7.1.3"
+ infer-owner "^1.0.4"
+ lru-cache "^5.1.1"
+ make-fetch-happen "^5.0.0"
minimatch "^3.0.4"
- minipass "^2.3.3"
+ minipass "^2.3.5"
mississippi "^3.0.0"
mkdirp "^0.5.1"
normalize-package-data "^2.4.0"
+ npm-normalize-package-bin "^1.0.0"
npm-package-arg "^6.1.0"
- npm-packlist "^1.1.10"
- npm-pick-manifest "^2.1.0"
+ npm-packlist "^1.1.12"
+ npm-pick-manifest "^3.0.0"
+ npm-registry-fetch "^4.0.0"
osenv "^0.1.5"
promise-inflight "^1.0.1"
promise-retry "^1.1.1"
- protoduck "^5.0.0"
+ protoduck "^5.0.1"
rimraf "^2.6.2"
safe-buffer "^5.1.2"
- semver "^5.5.0"
- ssri "^6.0.0"
- tar "^4.4.3"
- unique-filename "^1.1.0"
- which "^1.3.0"
+ semver "^5.6.0"
+ ssri "^6.0.1"
+ tar "^4.4.10"
+ unique-filename "^1.1.1"
+ which "^1.3.1"
parallel-transform@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06"
- integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc"
+ integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==
dependencies:
- cyclist "~0.2.2"
+ cyclist "^1.0.1"
inherits "^2.0.3"
readable-stream "^2.1.5"
@@ -7304,15 +7379,10 @@ private@^0.1.6:
resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==
-process-nextick-args@~1.0.6:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
- integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=
-
process-nextick-args@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
- integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
process@~0.5.1:
version "0.5.2"
@@ -7373,7 +7443,7 @@ proto-list@~1.2.1:
resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
-protoduck@^5.0.0:
+protoduck@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f"
integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==
@@ -7391,11 +7461,11 @@ pseudomap@^1.0.2:
integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
psl@^1.1.24:
- version "1.1.29"
- resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67"
- integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.6.0.tgz#60557582ee23b6c43719d9890fb4170ecd91e110"
+ integrity sha512-SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA==
-pump@^2.0.0, pump@^2.0.1:
+pump@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
@@ -7426,9 +7496,9 @@ punycode@^1.4.1:
integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
punycode@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d"
- integrity sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
q@^1.4.1, q@^1.5.1:
version "1.5.1"
@@ -7445,12 +7515,13 @@ qs@~6.5.2:
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
-query-string@^6.1.0:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.2.0.tgz#468edeb542b7e0538f9f9b1aeb26f034f19c86e1"
- integrity sha512-5wupExkIt8RYL4h/FE+WTg3JHk62e6fFPWtAZA9J5IWK1PfTfKkMS93HBUHcFpeYi9KsY5pFbh+ldvEyaz5MyA==
+query-string@^6.8.2:
+ version "6.9.0"
+ resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.9.0.tgz#1c3b727c370cf00f177c99f328fda2108f8fa3dd"
+ integrity sha512-KG4bhCFYapExLsUHrFt+kQVEegF2agm4cpF/VNc6pZVthIfCc/GK8t8VyNIE3nyXG9DK3Tf2EGkxjR6/uRdYsA==
dependencies:
decode-uri-component "^0.2.0"
+ split-on-first "^1.0.0"
strict-uri-encode "^2.0.0"
quick-lru@^1.0.0:
@@ -7586,10 +7657,10 @@ react@16.8.3:
prop-types "^15.6.2"
scheduler "^0.13.3"
-read-cmd-shim@^1.0.1, read-cmd-shim@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b"
- integrity sha1-LV0Vd4ajfAVdIgd8MsU/gynpHHs=
+read-cmd-shim@^1.0.1, read-cmd-shim@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16"
+ integrity sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA==
dependencies:
graceful-fs "^4.1.2"
@@ -7607,28 +7678,26 @@ read-installed@~4.0.3:
optionalDependencies:
graceful-fs "^4.1.2"
-"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13:
- version "2.0.13"
- resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.13.tgz#2e82ebd9f613baa6d2ebe3aa72cefe3f68e41f4a"
- integrity sha512-/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg==
+"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13, read-package-json@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.1.tgz#16aa66c59e7d4dad6288f179dd9295fd59bb98f1"
+ integrity sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A==
dependencies:
glob "^7.1.1"
json-parse-better-errors "^1.0.1"
normalize-package-data "^2.0.0"
- slash "^1.0.0"
+ npm-normalize-package-bin "^1.0.0"
optionalDependencies:
graceful-fs "^4.1.2"
-read-package-tree@^5.2.1:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.2.1.tgz#6218b187d6fac82289ce4387bbbaf8eef536ad63"
- integrity sha512-2CNoRoh95LxY47LvqrehIAfUVda2JbuFE/HaGYs42bNrGG+ojbw1h3zOcPcQ+1GQ3+rkzNndZn85u1XyZ3UsIA==
+read-package-tree@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636"
+ integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==
dependencies:
- debuglog "^1.0.1"
- dezalgo "^1.0.0"
- once "^1.3.0"
read-package-json "^2.0.0"
readdir-scoped-modules "^1.0.0"
+ util-promisify "^2.1.0"
read-pkg-up@^1.0.1:
version "1.0.1"
@@ -7705,7 +7774,7 @@ read@1, read@~1.0.1, read@~1.0.7:
dependencies:
mute-stream "~0.0.4"
-"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.3.6:
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6:
version "2.3.6"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
@@ -7718,31 +7787,14 @@ read@1, read@~1.0.1, read@~1.0.7:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
-readable-stream@^2.1.5:
- version "2.3.4"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.4.tgz#c946c3f47fa7d8eabc0b6150f4a12f69a4574071"
- integrity sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.3"
- isarray "~1.0.0"
- process-nextick-args "~2.0.0"
- safe-buffer "~5.1.1"
- string_decoder "~1.0.3"
- util-deprecate "~1.0.1"
-
-readable-stream@^2.2.2:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
- integrity sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==
+readable-stream@^3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc"
+ integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==
dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.3"
- isarray "~1.0.0"
- process-nextick-args "~1.0.6"
- safe-buffer "~5.1.1"
- string_decoder "~1.0.3"
- util-deprecate "~1.0.1"
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
readable-stream@~1.1.10:
version "1.1.14"
@@ -7754,10 +7806,10 @@ readable-stream@~1.1.10:
isarray "0.0.1"
string_decoder "~0.10.x"
-readdir-scoped-modules@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747"
- integrity sha1-n6+jfShr5dksuuve4DDcm19AZ0c=
+readdir-scoped-modules@^1.0.0, readdir-scoped-modules@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309"
+ integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==
dependencies:
debuglog "^1.0.1"
dezalgo "^1.0.0"
@@ -7881,7 +7933,15 @@ regexpu-core@^4.5.4:
unicode-match-property-ecmascript "^1.0.4"
unicode-match-property-value-ecmascript "^1.1.0"
-registry-auth-token@^3.0.1, registry-auth-token@^3.3.1:
+registry-auth-token@^3.0.1:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e"
+ integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==
+ dependencies:
+ rc "^1.1.6"
+ safe-buffer "^5.0.1"
+
+registry-auth-token@^3.3.1:
version "3.3.2"
resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20"
integrity sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==
@@ -7930,7 +7990,7 @@ repeating@^2.0.0:
dependencies:
is-finite "^1.0.0"
-request@^2.74.0, request@^2.87.0, request@^2.88.0:
+request@^2.87.0, request@^2.88.0:
version "2.88.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
@@ -8021,6 +8081,13 @@ resolve@^1.1.6:
dependencies:
path-parse "^1.0.5"
+resolve@^1.10.0:
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16"
+ integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==
+ dependencies:
+ path-parse "^1.0.6"
+
resolve@^1.2.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36"
@@ -8078,12 +8145,12 @@ right-pad@^1.0.1:
resolved "https://registry.yarnpkg.com/right-pad/-/right-pad-1.0.1.tgz#8ca08c2cbb5b55e74dafa96bf7fd1a27d568c8d0"
integrity sha1-jKCMLLtbVedNr6lr9/0aJ9VoyNA=
-rimraf@2, rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
- integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==
+rimraf@2, rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
dependencies:
- glob "^7.0.5"
+ glob "^7.1.3"
rimraf@~2.2.6:
version "2.2.8"
@@ -8147,16 +8214,21 @@ rxjs@^6.1.0:
dependencies:
tslib "^1.9.0"
-safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+safe-buffer@5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==
-safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2:
+safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
+ integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
+
safe-regex@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
@@ -8164,7 +8236,7 @@ safe-regex@^1.1.0:
dependencies:
ret "~0.1.10"
-"safer-buffer@>= 2.1.2 < 3":
+"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
@@ -8253,29 +8325,19 @@ semver-regex@^1.0.0:
resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-1.0.0.tgz#92a4969065f9c70c694753d55248fc68f8f652c9"
integrity sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=
-"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.1:
- version "5.6.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
- integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
-
-"semver@2 || 3 || 4 || 5", semver@^5.3.0:
- version "5.4.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
- integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==
+"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
-semver@5.5.0, semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.5.0:
+semver@5.5.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==
-semver@^5.5.1, semver@^5.6.0:
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
- integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
-
semver@~5.3.0:
version "5.3.0"
- resolved "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8=
send@0.16.2:
@@ -8347,13 +8409,12 @@ setprototypeof@1.1.0:
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
-sha@~2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/sha/-/sha-2.0.1.tgz#6030822fbd2c9823949f8f72ed6411ee5cf25aae"
- integrity sha1-YDCCL70smCOUn49y7WQR7lzyWq4=
+sha@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/sha/-/sha-3.0.0.tgz#b2f2f90af690c16a3a839a6a6c680ea51fedd1ae"
+ integrity sha512-DOYnM37cNsLNSGIG/zZWch5CKIRNoLdYUQTQlcgkRkoYIUwDYjqDyye16YcDZg/OPdcbUgTKMjc4SY6TB7ZAPw==
dependencies:
graceful-fs "^4.1.2"
- readable-stream "^2.0.2"
shebang-command@^1.2.0:
version "1.2.0"
@@ -8436,20 +8497,15 @@ slice-ansi@1.0.0:
dependencies:
is-fullwidth-code-point "^2.0.0"
-slide@^1.1.3, slide@^1.1.5, slide@^1.1.6, slide@~1.1.3, slide@~1.1.6:
+slide@^1.1.5, slide@^1.1.6, slide@~1.1.3, slide@~1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=
-smart-buffer@^1.0.13:
- version "1.1.15"
- resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16"
- integrity sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=
-
-smart-buffer@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.1.tgz#07ea1ca8d4db24eb4cac86537d7d18995221ace3"
- integrity sha512-RFqinRVJVcCAL9Uh1oVqE6FZkqsyLiVOYEZ20TqIOjuX7iFVJ+zsbs4RIghnw/pTs7mZvt8ZHhvm1ZUrR4fykg==
+smart-buffer@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba"
+ integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==
snapdragon-node@^2.0.1:
version "2.1.1"
@@ -8481,37 +8537,21 @@ snapdragon@^0.8.1:
source-map-resolve "^0.5.0"
use "^3.1.0"
-socks-proxy-agent@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz#2eae7cf8e2a82d34565761539a7f9718c5617659"
- integrity sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA==
- dependencies:
- agent-base "^4.1.0"
- socks "^1.1.10"
-
socks-proxy-agent@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz#5936bf8b707a993079c6f37db2091821bffa6473"
- integrity sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw==
- dependencies:
- agent-base "~4.2.0"
- socks "~2.2.0"
-
-socks@^1.1.10:
- version "1.1.10"
- resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.10.tgz#5b8b7fc7c8f341c53ed056e929b7bf4de8ba7b5a"
- integrity sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386"
+ integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==
dependencies:
- ip "^1.1.4"
- smart-buffer "^1.0.13"
+ agent-base "~4.2.1"
+ socks "~2.3.2"
-socks@~2.2.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/socks/-/socks-2.2.1.tgz#68ad678b3642fbc5d99c64c165bc561eab0215f9"
- integrity sha512-0GabKw7n9mI46vcNrVfs0o6XzWzjVa3h6GaSo2UPxtWAROXUWavfJWh1M4PR5tnE0dcnQXZIDFP4yrAysLze/w==
+socks@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3"
+ integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==
dependencies:
- ip "^1.1.5"
- smart-buffer "^4.0.1"
+ ip "1.1.5"
+ smart-buffer "^4.1.0"
sorted-object@~2.0.1:
version "2.0.1"
@@ -8576,20 +8616,13 @@ spawn-sync@^1.0.15:
spawn-sync-v1.0.15-darwin-x64-64 "5bf06e27f84555a1eadfb932a9f61379a6ea54a2"
spdx-correct@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.2.tgz#19bb409e91b47b1ad54159243f7312a858db3c2e"
- integrity sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
+ integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
dependencies:
spdx-expression-parse "^3.0.0"
spdx-license-ids "^3.0.0"
-spdx-correct@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
- integrity sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=
- dependencies:
- spdx-license-ids "^1.0.2"
-
spdx-exceptions@^2.1.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
@@ -8603,20 +8636,15 @@ spdx-expression-parse@^3.0.0:
spdx-exceptions "^2.1.0"
spdx-license-ids "^3.0.0"
-spdx-expression-parse@~1.0.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
- integrity sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=
-
-spdx-license-ids@^1.0.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
- integrity sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=
-
spdx-license-ids@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz#a59efc09784c2a5bada13cfeaf5c75dd214044d2"
- integrity sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654"
+ integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==
+
+split-on-first@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f"
+ integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==
split-string@^3.0.1, split-string@^3.0.2:
version "3.1.0"
@@ -8652,28 +8680,21 @@ sprintf-js@~1.0.2:
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
sshpk@^1.7.0:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb"
- integrity sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=
+ version "1.16.1"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
+ integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
dependencies:
asn1 "~0.2.3"
assert-plus "^1.0.0"
- dashdash "^1.12.0"
- getpass "^0.1.1"
- optionalDependencies:
bcrypt-pbkdf "^1.0.0"
+ dashdash "^1.12.0"
ecc-jsbn "~0.1.1"
+ getpass "^0.1.1"
jsbn "~0.1.0"
+ safer-buffer "^2.0.2"
tweetnacl "~0.14.0"
-ssri@^5.2.4:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06"
- integrity sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==
- dependencies:
- safe-buffer "^5.1.1"
-
-ssri@^6.0.0:
+ssri@^6.0.0, ssri@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8"
integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==
@@ -8743,9 +8764,9 @@ stream-iterate@^1.1.0:
stream-shift "^1.0.0"
stream-shift@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
- integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
+ integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
strict-uri-encode@^2.0.0:
version "2.0.0"
@@ -8757,7 +8778,7 @@ string-argv@^0.0.2:
resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736"
integrity sha1-2sMECGkMIfPDYwo/86BYd73L1zY=
-string-width@^1.0.1, string-width@^1.0.2:
+string-width@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
@@ -8766,7 +8787,7 @@ string-width@^1.0.1, string-width@^1.0.2:
is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0"
-string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
+"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
@@ -8785,18 +8806,34 @@ string.prototype.matchall@^2.0.0:
has-symbols "^1.0.0"
regexp.prototype.flags "^1.2.0"
+string.prototype.trimleft@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634"
+ integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==
+ dependencies:
+ define-properties "^1.1.3"
+ function-bind "^1.1.1"
+
+string.prototype.trimright@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58"
+ integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==
+ dependencies:
+ define-properties "^1.1.3"
+ function-bind "^1.1.1"
+
+string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
string_decoder@~0.10.x:
version "0.10.31"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
-string_decoder@~1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
- integrity sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==
- dependencies:
- safe-buffer "~5.1.0"
-
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
@@ -8813,10 +8850,10 @@ stringify-object@^3.2.2:
is-obj "^1.0.1"
is-regexp "^1.0.0"
-stringify-package@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.0.tgz#e02828089333d7d45cd8c287c30aa9a13375081b"
- integrity sha512-JIQqiWmLiEozOC0b0BtxZ/AOUtdUZHCBPgqIZ2kSJJqGwgb9neo44XdTHUC4HZSGqi03hOeB7W/E8rAlKnGe9g==
+stringify-package@^1.0.0, stringify-package@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.1.tgz#e5aa3643e7f74d0f28628b72f3dad5cecfc3ba85"
+ integrity sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
version "3.0.1"
@@ -8886,9 +8923,9 @@ supports-color@^5.2.0:
has-flag "^3.0.0"
supports-color@^5.3.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0"
- integrity sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
dependencies:
has-flag "^3.0.0"
@@ -8921,41 +8958,19 @@ table@^4.0.3:
slice-ansi "1.0.0"
string-width "^2.1.1"
-tar@^2.0.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
- integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=
- dependencies:
- block-stream "*"
- fstream "^1.0.2"
- inherits "2"
-
-tar@^4:
- version "4.4.10"
- resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1"
- integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA==
+tar@^4, tar@^4.4.10, tar@^4.4.12, tar@^4.4.13:
+ version "4.4.13"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
+ integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==
dependencies:
chownr "^1.1.1"
fs-minipass "^1.2.5"
- minipass "^2.3.5"
+ minipass "^2.8.6"
minizlib "^1.2.1"
mkdirp "^0.5.0"
safe-buffer "^5.1.2"
yallist "^3.0.3"
-tar@^4.4.3, tar@^4.4.6:
- version "4.4.6"
- resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b"
- integrity sha512-tMkTnh9EdzxyfW+6GK6fCahagXsnYk6kE6S9Gr9pjVdys769+laCTbodXDhPAjzVtEBazRgP0gYqOjnk9dQzLg==
- dependencies:
- chownr "^1.0.1"
- fs-minipass "^1.2.5"
- minipass "^2.3.3"
- minizlib "^1.1.0"
- mkdirp "^0.5.0"
- safe-buffer "^5.1.2"
- yallist "^3.0.2"
-
temp@0.8.3:
version "0.8.3"
resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59"
@@ -8986,7 +9001,15 @@ throat@^4.1.0:
resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a"
integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=
-through2@^2.0.0, through2@^2.0.2, through2@~2.0.0:
+through2@^2.0.0:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
+ integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
+ dependencies:
+ readable-stream "~2.3.6"
+ xtend "~4.0.1"
+
+through2@^2.0.2, through2@~2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=
@@ -9197,7 +9220,7 @@ union-value@^1.0.0:
is-extendable "^0.1.1"
set-value "^0.4.3"
-unique-filename@^1.1.0, unique-filename@~1.1.0:
+unique-filename@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
@@ -9205,9 +9228,9 @@ unique-filename@^1.1.0, unique-filename@~1.1.0:
unique-slug "^2.0.0"
unique-slug@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6"
- integrity sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
+ integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
dependencies:
imurmurhash "^0.1.4"
@@ -9264,7 +9287,7 @@ update-notifier@^2.3.0, update-notifier@^2.5.0:
semver-diff "^2.0.0"
xdg-basedir "^3.0.0"
-uri-js@^4.2.1:
+uri-js@^4.2.1, uri-js@^4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
@@ -9300,7 +9323,7 @@ use@^3.1.0:
dependencies:
kind-of "^6.0.2"
-util-deprecate@~1.0.1:
+util-deprecate@^1.0.1, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
@@ -9310,25 +9333,24 @@ util-extend@^1.0.1:
resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f"
integrity sha1-p8IW0mdUUWljeztu3GypEZ4v+T8=
+util-promisify@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53"
+ integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=
+ dependencies:
+ object.getownpropertydescriptors "^2.0.3"
+
utils-merge@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
-uuid@^3.3.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
- integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
-
-validate-npm-package-license@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
- integrity sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=
- dependencies:
- spdx-correct "~1.0.0"
- spdx-expression-parse "~1.0.0"
+uuid@^3.3.2, uuid@^3.3.3:
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866"
+ integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==
-validate-npm-package-license@^3.0.4:
+validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
@@ -9405,7 +9427,7 @@ which-module@^2.0.0:
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-which@1, which@^1.2.12, which@^1.3.1:
+which@1, which@^1.2.10, which@^1.2.12, which@^1.2.9, which@^1.3.0, which@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
@@ -9419,19 +9441,12 @@ which@1.2.x:
dependencies:
isexe "^2.0.0"
-which@^1.2.10, which@^1.2.9, which@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a"
- integrity sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==
- dependencies:
- isexe "^2.0.0"
-
wide-align@^1.1.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710"
- integrity sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
+ integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
dependencies:
- string-width "^1.0.2"
+ string-width "^1.0.2 || 2"
widest-line@^2.0.0:
version "2.0.1"
@@ -9462,10 +9477,10 @@ wordwrap@~0.0.2:
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
-worker-farm@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0"
- integrity sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==
+worker-farm@^1.6.0, worker-farm@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
+ integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
dependencies:
errno "~0.1.7"
@@ -9491,10 +9506,10 @@ write-file-atomic@^1.2.0:
imurmurhash "^0.1.4"
slide "^1.1.5"
-write-file-atomic@^2.0.0, write-file-atomic@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab"
- integrity sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==
+write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.3:
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481"
+ integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==
dependencies:
graceful-fs "^4.1.11"
imurmurhash "^0.1.4"
@@ -9565,9 +9580,9 @@ xregexp@4.0.0:
integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==
xtend@~4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
- integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
y18n@^3.2.1:
version "3.2.1"
@@ -9584,15 +9599,10 @@ yallist@^2.1.2:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
-yallist@^3.0.0, yallist@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9"
- integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=
-
-yallist@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
- integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
+yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
yargs-parser@^10.0.0, yargs-parser@^10.1.0:
version "10.1.0"
@@ -9616,15 +9626,15 @@ yargs-parser@^9.0.2:
camelcase "^4.1.0"
yargs@^11.0.0:
- version "11.1.0"
- resolved "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77"
- integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==
+ version "11.1.1"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.1.tgz#5052efe3446a4df5ed669c995886cc0f13702766"
+ integrity sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==
dependencies:
cliui "^4.0.0"
decamelize "^1.1.1"
find-up "^2.1.0"
get-caller-file "^1.0.1"
- os-locale "^2.0.0"
+ os-locale "^3.1.0"
require-directory "^2.1.1"
require-main-filename "^1.0.1"
set-blocking "^2.0.0"