From 165fa2b522099d6a5b928bc08bd89dfdb8177776 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Wed, 15 Jan 2020 11:32:11 -0500 Subject: [PATCH 001/356] add a podspec so autolinking works --- ios/RCTARKit.podspec | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 ios/RCTARKit.podspec diff --git a/ios/RCTARKit.podspec b/ios/RCTARKit.podspec new file mode 100644 index 00000000..6e228bff --- /dev/null +++ b/ios/RCTARKit.podspec @@ -0,0 +1,18 @@ +require 'json' +version = JSON.parse(File.read('../package.json'))["version"] + +Pod::Spec.new do |s| + + s.name = "RCTARKit" + s.version = version + s.summary = "ARKit for react native" + s.homepage = "https://github.com/react-native-ar/react-native-arkit" + s.license = "MIT" + s.author = { "macrozone" => "https://github.com/macrozone" } + s.platforms = { :ios => "9.0", :tvos => "9.0" } + s.source = { :git => "https://github.com/react-native-ar/react-native-arkit"", :tag => "v#{s.version}" } + s.source_files = 'RCTARKitManager/**/*.{h,m}' + s.preserve_paths = "**/*.js" + s.dependency 'React' + +end \ No newline at end of file From 0c1c878a83d78b4c6850896210004c5cf0dec7a4 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Wed, 15 Jan 2020 11:45:36 -0500 Subject: [PATCH 002/356] fixing podspec --- ios/RCTARKit.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.podspec b/ios/RCTARKit.podspec index 6e228bff..e9f303be 100644 --- a/ios/RCTARKit.podspec +++ b/ios/RCTARKit.podspec @@ -10,7 +10,7 @@ Pod::Spec.new do |s| s.license = "MIT" s.author = { "macrozone" => "https://github.com/macrozone" } s.platforms = { :ios => "9.0", :tvos => "9.0" } - s.source = { :git => "https://github.com/react-native-ar/react-native-arkit"", :tag => "v#{s.version}" } + s.source = { :git => "https://github.com/react-native-ar/react-native-arkit"", :tag => #{s.version}" } s.source_files = 'RCTARKitManager/**/*.{h,m}' s.preserve_paths = "**/*.js" s.dependency 'React' From 84dc8e230f52037d18f8d777c02c24289bc50816 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Wed, 15 Jan 2020 12:05:22 -0500 Subject: [PATCH 003/356] fixing podspec --- ios/RCTARKit.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.podspec b/ios/RCTARKit.podspec index e9f303be..db4ae68b 100644 --- a/ios/RCTARKit.podspec +++ b/ios/RCTARKit.podspec @@ -11,7 +11,7 @@ Pod::Spec.new do |s| s.author = { "macrozone" => "https://github.com/macrozone" } s.platforms = { :ios => "9.0", :tvos => "9.0" } s.source = { :git => "https://github.com/react-native-ar/react-native-arkit"", :tag => #{s.version}" } - s.source_files = 'RCTARKitManager/**/*.{h,m}' + s.source_files = '**/*.{h,m}' s.preserve_paths = "**/*.js" s.dependency 'React' From 76729abfdc282afa4fc12515adf4c55b713cc6c1 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Mon, 27 Jan 2020 22:32:17 -0500 Subject: [PATCH 004/356] peer browser working with 2 phones connecting and getting and sending worldmap.. extreme wip --- .DS_Store | Bin 0 -> 8196 bytes ios/.DS_Store | Bin 0 -> 6148 bytes ios/RCTARKit.h | 4 + ios/RCTARKit.m | 17 +++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++ ios/RCTARKitManager.m | 52 +++++++ ios/RCTMultiPeer.h | 43 ++++++ ios/RCTMultiPeer.m | 132 ++++++++++++++++++ 8 files changed, 256 insertions(+) create mode 100644 .DS_Store create mode 100644 ios/.DS_Store create mode 100644 ios/RCTARKit.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/RCTMultiPeer.h create mode 100644 ios/RCTMultiPeer.m diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7a2506fc5cd7b1d61c68f3349aa400ca81ec2a9d GIT binary patch literal 8196 zcmeHM-A)rh6h1?%Yzqc7DqQZ3i5Ey9{$OHEYH8I*1!JpTD1mObfy%N=x?2j?n%?*f z@(MnQkKlv&0Q#Mop=`Iy4Ht&QnPle7&YW+~*>BEtIRg=iV#i%3nkOO)mF4Udnv}xx zT*u0U9=QQ2fG3J*kv>sa@q)&fwiz%C7zPXjh5^HXVc;S#fNwSz>x}Qdnl-Iqz%cM% zGQhtNHY&@4mIEc_PX`*A0zhUlEDQR`10=@QvY_QaNeRW8DtizbDs+k=6ddz5t3wvF z94M*aBov&4wk&jpBBXWTY^hG7prmOH1BQWd1~_-O=n1`{7u1U9?~WHZnB(L02=(?K zSYC9K`iA(&vPA z`K~EiPB+}wKK^v}y;c}4E&UP`ne3&@la`gY@>lX3)t#VQjp|V+EY{l}_~~^$+HrKh z76jg~Uw7WMn%&LW>#Knu)mwhEEx|3f36+oUTfQ4~i$TYCL%B{>O;}dW%5Bcx?DZZl z*!S+5yPkqW^pD_ji25>4YYDMiJ}cr!5K|Pwvo^fs^A*a7 z96Mzk>EbZPM;@9H-mZ5sjuu?^@y9UOcMK5Ol&?(T-n49#rW0veCyL;(ttXu0;<5W0&C%NDD{8u>;8Y4q*tndD)6TiF#Rmg zCfri2t)0zDt+n)1x|rm(0p}D>d?{wGl;SPAH^!|@h-t(&AR{#W5%4nTpbGq`0w0TC BMTY + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 2df43c4c..e182380a 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -12,7 +12,11 @@ #import #import #import "color-grabber.h" +#import "RCTMultiPeer.h" +@interface RCTARKitManager () + +@end @implementation RCTARKitManager RCT_EXPORT_MODULE() @@ -179,6 +183,7 @@ - (NSDictionary *)constantsToExport RCT_EXPORT_VIEW_PROPERTY(onTapOnPlaneNoExtent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onEvent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onARKitError, RCTBubblingEventBlock) +RCT_EXPORT_VIEW_PROPERTY(worldMap, NSObject); RCT_EXPORT_METHOD(pause:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { [[ARKit sharedInstance] pause]; @@ -199,6 +204,33 @@ - (NSDictionary *)constantsToExport resolve(@([ARKit isInitialized])); } +RCT_EXPORT_METHOD(findMultiPeerSession:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + dispatch_async(dispatch_get_main_queue(), ^{ + [ARKit sharedInstance].multipeer.mpBrowser.delegate = self; + UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController; + + [rootViewController presentViewController:[ARKit sharedInstance].multipeer.mpBrowser animated: YES completion:^{ + // TODO: have a onPreviewVisible callback + }]; + }); +} + +RCT_EXPORT_METHOD(sendWorldmapData:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + [[ARKit sharedInstance] getCurrentWorldMap:resolve reject:reject]; +// resolve([[ARKit sharedInstance] getCurrentWorldMap:resolve reject:reject]); +// dispatch_async(dispatch_get_main_queue(), ^{ +// ARSession *session = [ARKit sharedInstance]; +// [session getCurrentWorldMapWithCompletionHandler:^(ARWorldMap * _Nullable worldMap, NSError * _Nullable error) { +// if (error) { +// NSLog(@"error====%@",error); +// } +// +// NSData *data = [NSKeyedArchiver archivedDataWithRootObject:worldMap requiringSecureCoding:true error:nil]; +// [[ARKit sharedInstance].multipeer sendToAllPeers:data]; +// }]; +// }); +} + RCT_EXPORT_METHOD(isMounted:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { if( [ARKit isInitialized]) { dispatch_async(dispatch_get_main_queue(), ^{ @@ -398,4 +430,24 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve(@{}); } +- (void)browserViewControllerDidFinish:(nonnull MCBrowserViewController *)browserViewController { + dispatch_async(dispatch_get_main_queue(), ^{ + UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController; + + [rootViewController dismissViewControllerAnimated:YES completion:^{ + + }]; + }); +} + +- (void)browserViewControllerWasCancelled:(nonnull MCBrowserViewController *)browserViewController { + dispatch_async(dispatch_get_main_queue(), ^{ + UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController; + + [rootViewController dismissViewControllerAnimated:YES completion:^{ + + }]; + }); +} + @end diff --git a/ios/RCTMultiPeer.h b/ios/RCTMultiPeer.h new file mode 100644 index 00000000..3d17c6db --- /dev/null +++ b/ios/RCTMultiPeer.h @@ -0,0 +1,43 @@ +// +// MultipeerConnectivity.h +// ARKit +// +// Created by Mac on 2018/6/5. +// Copyright © 2018年 AR. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol MultipeerConnectivityDelegate +@optional + +- (void)receivedDataHandler:(NSData *)data PeerID:(MCPeerID *)peerID; + +@end + +@interface MultipeerConnectivity : NSObject + +@property(nonatomic, strong)MCPeerID *myPeerID; + +@property(nonatomic, strong)MCSession *session; + +@property(nonatomic, strong)MCNearbyServiceAdvertiser *serviceAdvertiser; + +@property(nonatomic, strong)MCNearbyServiceBrowser *serviceBrowser; +@property(nonatomic, strong)MCBrowserViewController *mpBrowser; + +@property(nonatomic, weak)id delegate; +//@property(nonatomic, weak)id delegate; + +- (void)sendToAllPeers:(NSData *)data; + +- (void)findMultiPeerSession; + +- (NSArray *)connectedPeers; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/RCTMultiPeer.m b/ios/RCTMultiPeer.m new file mode 100644 index 00000000..399795af --- /dev/null +++ b/ios/RCTMultiPeer.m @@ -0,0 +1,132 @@ +// +// MultipeerConnectivity.m +// ARKit +// +// Created by Mac on 2018/6/5. +// Copyright © 2018年 AR. All rights reserved. +// + +#import "RCTMultiPeer.h" + +@interface MultipeerConnectivity () + +@end + +@implementation MultipeerConnectivity + +- (instancetype)init +{ + self = [super init]; + + if (self) { + NSString *serviceType = @"ar-multi-sample"; + + self.myPeerID = [[MCPeerID alloc] initWithDisplayName:[UIDevice currentDevice].name]; + + self.session = [[MCSession alloc] initWithPeer:self.myPeerID securityIdentity:nil encryptionPreference:MCEncryptionRequired]; + self.session.delegate = self; + + self.mpBrowser = [[MCBrowserViewController alloc] initWithServiceType:serviceType session:self.session]; + self.mpBrowser.delegate = self; + + self.serviceAdvertiser = [[MCNearbyServiceAdvertiser alloc] initWithPeer:self.myPeerID discoveryInfo:nil serviceType:serviceType]; + self.serviceAdvertiser.delegate = self; + [self.serviceAdvertiser startAdvertisingPeer]; + + self.serviceBrowser = [[MCNearbyServiceBrowser alloc] initWithPeer:self.myPeerID serviceType:serviceType]; + self.serviceBrowser.delegate = self; + [self.serviceBrowser startBrowsingForPeers]; + } + + return self; +} + +- (void)findMultiPeerSession { + NSLog(@"FIND MUltiPeer sessIonn?"); +} + +- (void)sendToAllPeers:(NSData *)data +{ + @try { + [self.session sendData:data toPeers:self.session.connectedPeers withMode:MCSessionSendDataReliable error:nil]; + } @catch (NSException *exception) { + NSLog(@"error sending data to peers: \(error.localizedDescription)"); + } @finally { + + } +} + +- (NSArray *)connectedPeers +{ + return self.session.connectedPeers; +} + +#pragma mark MCSessionDelegate + +// Remote peer changed state. +- (void)session:(MCSession *)session peer:(MCPeerID *)peerID didChangeState:(MCSessionState)state +{ + +} + +// Received data from remote peer. +- (void)session:(MCSession *)session didReceiveData:(NSData *)data fromPeer:(MCPeerID *)peerID +{ + if (self.delegate && [self.delegate respondsToSelector:@selector(receivedDataHandler:PeerID:)]) { + [self.delegate receivedDataHandler:data PeerID:peerID]; + } +} + +// Received a byte stream from remote peer. +- (void)session:(MCSession *)session didReceiveStream:(NSInputStream *)stream withName:(NSString *)streamName fromPeer:(MCPeerID *)peerID +{ + assert(@"This service does not send/receive streams."); +} + +// Start receiving a resource from remote peer. +- (void)session:(MCSession *)session didStartReceivingResourceWithName:(NSString *)resourceName fromPeer:(MCPeerID *)peerID withProgress:(NSProgress *)progress +{ + assert(@"This service does not send/receive resources."); +} + +// Finished receiving a resource from remote peer and saved the content +// in a temporary location - the app is responsible for moving the file +// to a permanent location within its sandbox. +- (void)session:(MCSession *)session didFinishReceivingResourceWithName:(NSString *)resourceName fromPeer:(MCPeerID *)peerID atURL:(nullable NSURL *)localURL withError:(nullable NSError *)error +{ + assert(@"This service does not send/receive resources."); +} + +#pragma mark MCNearbyServiceBrowserDelegate +// Found a nearby advertising peer. +- (void)browser:(MCNearbyServiceBrowser *)browser foundPeer:(MCPeerID *)peerID withDiscoveryInfo:(nullable NSDictionary *)info +{ + // Invite the new peer to the session. + [browser invitePeer:peerID toSession:self.session withContext:nil timeout:10]; +} + +// A nearby peer has stopped advertising. +- (void)browser:(MCNearbyServiceBrowser *)browser lostPeer:(MCPeerID *)peerID +{ + // This app doesn't do anything with non-invited peers, so there's nothing to do here. +} + +#pragma mark MCNearbyServiceAdvertiserDelegate +// Incoming invitation request. Call the invitationHandler block with YES +// and a valid session to connect the inviting peer to the session. +- (void)advertiser:(MCNearbyServiceAdvertiser *)advertiser didReceiveInvitationFromPeer:(MCPeerID *)peerID withContext:(nullable NSData *)context invitationHandler:(void (^)(BOOL accept, MCSession * __nullable session))invitationHandler +{ + // Call handler to accept invitation and join the session. + invitationHandler(true, self.session); +} + +- (void)browserViewControllerDidFinish:(nonnull MCBrowserViewController *)browserViewController { + +} + +- (void)browserViewControllerWasCancelled:(nonnull MCBrowserViewController *)browserViewController { + +} + +@end + From 5437a4f2be7f67be08ebc41dc4efa205ed992d7a Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Mon, 27 Jan 2020 22:47:59 -0500 Subject: [PATCH 005/356] worldmap syncs on two devices! dont use this yet --- ios/RCTARKit.h | 1 + ios/RCTARKit.m | 34 +++++++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index ab34915b..6abcf94e 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -30,6 +30,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error @property (nonatomic, strong) NSMutableArray> *touchDelegates; @property (nonatomic, strong) NSMutableArray> *rendererDelegates; @property (nonatomic, strong) NSMutableArray> *sessionDelegates; +@property (nonatomic, strong) NSMutableArray> *multipeerDelegate; #pragma mark - Properties diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 099e8773..0b39bfdd 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -12,7 +12,7 @@ @import CoreLocation; -@interface RCTARKit () { +@interface RCTARKit () { RCTARKitResolve _resolve; } @@ -53,6 +53,7 @@ + (instancetype)sharedInstance { ARSCNView *arView = [[ARSCNView alloc] init]; MultipeerConnectivity *multipeer = [[MultipeerConnectivity alloc] init]; instance = [[self alloc] initWithARView:arView]; + multipeer.delegate = instance; instance.multipeer = multipeer; } }); @@ -61,7 +62,6 @@ + (instancetype)sharedInstance { } - (bool)isMounted { - return self.superview != nil; } @@ -106,7 +106,35 @@ - (instancetype)initWithARView:(ARSCNView *)arView { return self; } - +- (void)receivedDataHandler:(NSData *)data PeerID:(MCPeerID *)peerID +{ + id unarchived = [NSKeyedUnarchiver unarchivedObjectOfClass:[ARWorldMap classForKeyedUnarchiver] fromData:data error:nil]; + + if ([unarchived isKindOfClass:[ARWorldMap class]]) { + NSLog(@"[unarchived class]====%@",[unarchived class]); + ARWorldMap *worldMap = unarchived; + self.configuration = [[ARWorldTrackingConfiguration alloc] init]; + self.configuration.worldAlignment = ARWorldAlignmentGravity; + self.configuration.planeDetection = ARPlaneDetectionHorizontal|ARPlaneDetectionVertical; + self.configuration.initialWorldMap = worldMap; + [self.arView.session runWithConfiguration:self.configuration options:ARSessionRunOptionResetTracking|ARSessionRunOptionRemoveExistingAnchors]; + + return; + } + + unarchived = [NSKeyedUnarchiver unarchivedObjectOfClass:[ARAnchor classForKeyedUnarchiver] fromData:data error:nil]; + + if ([unarchived isKindOfClass:[ARAnchor class]]) { + NSLog(@"[unarchived class]====%@",[unarchived class]); + ARAnchor *anchor = unarchived; + + [self.arView.session addAnchor:anchor]; + + return; + } + + NSLog(@"unknown data recieved from \(%@)",peerID.displayName); +} - (void)layoutSubviews { From c29b0ddef4802e973ba2434429ca6431a84a8e5b Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Tue, 28 Jan 2020 21:54:10 -0500 Subject: [PATCH 006/356] exposes commands to js for hosting a multipeer session with a serviceType(stringid) and also joining a session by serviceType(stringid) and opening the browser of connected peers --- ios/RCTARKitManager.m | 29 +++++++++------------------ ios/RCTMultiPeer.h | 5 +++-- ios/RCTMultiPeer.m | 46 +++++++++++++++++++++++++++++-------------- 3 files changed, 43 insertions(+), 37 deletions(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index e182380a..895ea62e 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -204,31 +204,20 @@ - (NSDictionary *)constantsToExport resolve(@([ARKit isInitialized])); } -RCT_EXPORT_METHOD(findMultiPeerSession:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - dispatch_async(dispatch_get_main_queue(), ^{ - [ARKit sharedInstance].multipeer.mpBrowser.delegate = self; - UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController; +RCT_EXPORT_METHOD(findMultiPeerSession:(NSString *)serviceType resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + [[ARKit sharedInstance].multipeer openMultipeerBrowser:serviceType]; +} - [rootViewController presentViewController:[ARKit sharedInstance].multipeer.mpBrowser animated: YES completion:^{ - // TODO: have a onPreviewVisible callback - }]; - }); +RCT_EXPORT_METHOD(startBrowsingForPeers:(NSString *)serviceType resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + [[ARKit sharedInstance].multipeer startBrowsingForPeers:serviceType]; +} + +RCT_EXPORT_METHOD(advertiseReadyToJoinSession:(NSString *)serviceType resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + [[ARKit sharedInstance].multipeer advertiseReadyToJoinSession:serviceType]; } RCT_EXPORT_METHOD(sendWorldmapData:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { [[ARKit sharedInstance] getCurrentWorldMap:resolve reject:reject]; -// resolve([[ARKit sharedInstance] getCurrentWorldMap:resolve reject:reject]); -// dispatch_async(dispatch_get_main_queue(), ^{ -// ARSession *session = [ARKit sharedInstance]; -// [session getCurrentWorldMapWithCompletionHandler:^(ARWorldMap * _Nullable worldMap, NSError * _Nullable error) { -// if (error) { -// NSLog(@"error====%@",error); -// } -// -// NSData *data = [NSKeyedArchiver archivedDataWithRootObject:worldMap requiringSecureCoding:true error:nil]; -// [[ARKit sharedInstance].multipeer sendToAllPeers:data]; -// }]; -// }); } RCT_EXPORT_METHOD(isMounted:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { diff --git a/ios/RCTMultiPeer.h b/ios/RCTMultiPeer.h index 3d17c6db..e09177ee 100644 --- a/ios/RCTMultiPeer.h +++ b/ios/RCTMultiPeer.h @@ -30,11 +30,12 @@ NS_ASSUME_NONNULL_BEGIN @property(nonatomic, strong)MCBrowserViewController *mpBrowser; @property(nonatomic, weak)id delegate; -//@property(nonatomic, weak)id delegate; - (void)sendToAllPeers:(NSData *)data; -- (void)findMultiPeerSession; +- (void)startBrowsingForPeers:(NSString *)serviceType; +- (void)advertiseReadyToJoinSession:(NSString *)serviceType; +- (void)openMultipeerBrowser:(NSString *)serviceType; - (NSArray *)connectedPeers; diff --git a/ios/RCTMultiPeer.m b/ios/RCTMultiPeer.m index 399795af..221bf3d8 100644 --- a/ios/RCTMultiPeer.m +++ b/ios/RCTMultiPeer.m @@ -19,30 +19,46 @@ - (instancetype)init self = [super init]; if (self) { - NSString *serviceType = @"ar-multi-sample"; - self.myPeerID = [[MCPeerID alloc] initWithDisplayName:[UIDevice currentDevice].name]; self.session = [[MCSession alloc] initWithPeer:self.myPeerID securityIdentity:nil encryptionPreference:MCEncryptionRequired]; self.session.delegate = self; - - self.mpBrowser = [[MCBrowserViewController alloc] initWithServiceType:serviceType session:self.session]; - self.mpBrowser.delegate = self; - - self.serviceAdvertiser = [[MCNearbyServiceAdvertiser alloc] initWithPeer:self.myPeerID discoveryInfo:nil serviceType:serviceType]; - self.serviceAdvertiser.delegate = self; - [self.serviceAdvertiser startAdvertisingPeer]; - - self.serviceBrowser = [[MCNearbyServiceBrowser alloc] initWithPeer:self.myPeerID serviceType:serviceType]; - self.serviceBrowser.delegate = self; - [self.serviceBrowser startBrowsingForPeers]; } return self; } -- (void)findMultiPeerSession { - NSLog(@"FIND MUltiPeer sessIonn?"); +- (void)startBrowsingForPeers:(NSString *)serviceType +{ + // browseForSessions + // this starts the multi peer service looking for peers that are looking for it's service type (string id) + + self.serviceBrowser = [[MCNearbyServiceBrowser alloc] initWithPeer:self.myPeerID serviceType:serviceType]; + self.serviceBrowser.delegate = self; + [self.serviceBrowser startBrowsingForPeers]; +} + +- (void)advertiseReadyToJoinSession:(NSString *)serviceType +{ + self.serviceAdvertiser = [[MCNearbyServiceAdvertiser alloc] initWithPeer:self.myPeerID discoveryInfo:nil serviceType:serviceType]; + self.serviceAdvertiser.delegate = self; + [self.serviceAdvertiser startAdvertisingPeer]; +} + +- (void)openMultipeerBrowser:(NSString *)serviceType +{ + if (!self.mpBrowser) { + self.mpBrowser = [[MCBrowserViewController alloc] initWithServiceType:serviceType session:self.session]; + self.mpBrowser.delegate = self; + } + dispatch_async(dispatch_get_main_queue(), ^{ + self.mpBrowser.delegate = self; + UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController; + + [rootViewController presentViewController:self.mpBrowser animated: YES completion:^{ + // TODO: have a onPreviewVisible callback + }]; + }); } - (void)sendToAllPeers:(NSData *)data From 955b3d1854617abb35e398e24b66a50b4945e567 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Wed, 29 Jan 2020 22:03:05 -0500 Subject: [PATCH 007/356] added stuff for sending JSON over multi peer to all peers --- ios/RCTARKit.h | 4 +++ ios/RCTARKit.m | 64 ++++++++++++++++++++++++++++--------------- ios/RCTARKitManager.m | 26 +++++++++++++++++- ios/RCTMultiPeer.m | 3 +- 4 files changed, 72 insertions(+), 25 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 6abcf94e..8afb1a1b 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -64,6 +64,10 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error @property (nonatomic, copy) RCTBubblingEventBlock onEvent; @property (nonatomic, copy) RCTBubblingEventBlock onARKitError; +@property (nonatomic, copy) RCTBubblingEventBlock onMultipeerJsonDataReceived; + + + @property NSMutableDictionary *planes; // plane detected diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 0b39bfdd..7f897c5f 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -108,32 +108,52 @@ - (instancetype)initWithARView:(ARSCNView *)arView { - (void)receivedDataHandler:(NSData *)data PeerID:(MCPeerID *)peerID { - id unarchived = [NSKeyedUnarchiver unarchivedObjectOfClass:[ARWorldMap classForKeyedUnarchiver] fromData:data error:nil]; - - if ([unarchived isKindOfClass:[ARWorldMap class]]) { - NSLog(@"[unarchived class]====%@",[unarchived class]); - ARWorldMap *worldMap = unarchived; - self.configuration = [[ARWorldTrackingConfiguration alloc] init]; - self.configuration.worldAlignment = ARWorldAlignmentGravity; - self.configuration.planeDetection = ARPlaneDetectionHorizontal|ARPlaneDetectionVertical; - self.configuration.initialWorldMap = worldMap; - [self.arView.session runWithConfiguration:self.configuration options:ARSessionRunOptionResetTracking|ARSessionRunOptionRemoveExistingAnchors]; + id parsedJSON; + @try { + NSError *error = nil; + parsedJSON = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; + } @catch (NSException *exception) { + // TODO: make a onMultipeerDataFailure callback + } @finally { - return; } - unarchived = [NSKeyedUnarchiver unarchivedObjectOfClass:[ARAnchor classForKeyedUnarchiver] fromData:data error:nil]; - - if ([unarchived isKindOfClass:[ARAnchor class]]) { - NSLog(@"[unarchived class]====%@",[unarchived class]); - ARAnchor *anchor = unarchived; - - [self.arView.session addAnchor:anchor]; - - return; + if (parsedJSON) { + if (self.onMultipeerJsonDataReceived) { + dispatch_async(dispatch_get_main_queue(), ^{ + self.onMultipeerJsonDataReceived(@{ + @"data": parsedJSON, + }); + }); + } + } else { + id unarchived = [NSKeyedUnarchiver unarchivedObjectOfClass:[ARWorldMap classForKeyedUnarchiver] fromData:data error:nil]; + + if ([unarchived isKindOfClass:[ARWorldMap class]]) { + NSLog(@"[unarchived class]====%@",[unarchived class]); + ARWorldMap *worldMap = unarchived; + self.configuration = [[ARWorldTrackingConfiguration alloc] init]; + self.configuration.worldAlignment = ARWorldAlignmentGravity; + self.configuration.planeDetection = ARPlaneDetectionHorizontal|ARPlaneDetectionVertical; + self.configuration.initialWorldMap = worldMap; + [self.arView.session runWithConfiguration:self.configuration options:ARSessionRunOptionResetTracking|ARSessionRunOptionRemoveExistingAnchors]; + + return; + } + + unarchived = [NSKeyedUnarchiver unarchivedObjectOfClass:[ARAnchor classForKeyedUnarchiver] fromData:data error:nil]; + + if ([unarchived isKindOfClass:[ARAnchor class]]) { + NSLog(@"[unarchived class]====%@",[unarchived class]); + ARAnchor *anchor = unarchived; + + [self.arView.session addAnchor:anchor]; + + return; + } + + NSLog(@"unknown data recieved from \(%@)",peerID.displayName); } - - NSLog(@"unknown data recieved from \(%@)",peerID.displayName); } diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 895ea62e..6895bbc4 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -176,6 +176,8 @@ - (NSDictionary *)constantsToExport RCT_EXPORT_VIEW_PROPERTY(onAnchorUpdated, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onAnchorRemoved, RCTBubblingEventBlock) +RCT_EXPORT_VIEW_PROPERTY(onMultipeerJsonDataReceived, RCTBubblingEventBlock) + RCT_EXPORT_VIEW_PROPERTY(onTrackingState, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onFeaturesDetected, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onLightEstimation, RCTBubblingEventBlock) @@ -204,7 +206,7 @@ - (NSDictionary *)constantsToExport resolve(@([ARKit isInitialized])); } -RCT_EXPORT_METHOD(findMultiPeerSession:(NSString *)serviceType resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { +RCT_EXPORT_METHOD(openMultipeerBrowser:(NSString *)serviceType resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { [[ARKit sharedInstance].multipeer openMultipeerBrowser:serviceType]; } @@ -216,6 +218,11 @@ - (NSDictionary *)constantsToExport [[ARKit sharedInstance].multipeer advertiseReadyToJoinSession:serviceType]; } +RCT_EXPORT_METHOD(sendDataToAllPeers:(NSDictionary *)data resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + [self sendData:[RCTARKit sharedInstance].multipeer.connectedPeers data:data callback:resolve]; +} + +// TODO: Should only be able to do if host ? Or thats a config option RCT_EXPORT_METHOD(sendWorldmapData:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { [[ARKit sharedInstance] getCurrentWorldMap:resolve reject:reject]; } @@ -249,6 +256,23 @@ - (NSDictionary *)constantsToExport [[ARKit sharedInstance] hitTestSceneObjects:point resolve:resolve reject:reject]; } +- (void)sendData:(NSArray *)recipients data:(NSDictionary *)data callback:(RCTResponseSenderBlock)callback { + NSError *error = nil; + NSMutableArray *peers = [NSMutableArray array]; +// for (NSString *peerUUID in recipients) { +// [peers addObject:[[ARKit sharedInstance].multipeer.session.connectedPeers valueForKey:peerUUID]]; +// } + NSData *jsonData = [NSJSONSerialization dataWithJSONObject:data options:0 error:&error]; + [[ARKit sharedInstance].multipeer.session sendData:jsonData toPeers:recipients withMode:MCSessionSendDataReliable error:&error]; + NSLog(@"Sending data..."); + if (error == nil) { + callback(@[[NSNull null]]); + } + else { + callback(@[[error description]]); + } +} + diff --git a/ios/RCTMultiPeer.m b/ios/RCTMultiPeer.m index 221bf3d8..5a64cd7b 100644 --- a/ios/RCTMultiPeer.m +++ b/ios/RCTMultiPeer.m @@ -19,7 +19,7 @@ - (instancetype)init self = [super init]; if (self) { - self.myPeerID = [[MCPeerID alloc] initWithDisplayName:[UIDevice currentDevice].name]; + self.myPeerID = [[MCPeerID alloc] initWithDisplayName:[[NSUUID UUID] UUIDString]]; self.session = [[MCSession alloc] initWithPeer:self.myPeerID securityIdentity:nil encryptionPreference:MCEncryptionRequired]; self.session.delegate = self; @@ -52,7 +52,6 @@ - (void)openMultipeerBrowser:(NSString *)serviceType self.mpBrowser.delegate = self; } dispatch_async(dispatch_get_main_queue(), ^{ - self.mpBrowser.delegate = self; UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController; [rootViewController presentViewController:self.mpBrowser animated: YES completion:^{ From 41f315c5a0580b8ab4a6041033fe016bbad79c03 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Wed, 29 Jan 2020 22:21:40 -0500 Subject: [PATCH 008/356] added a function for js to send json to array of connected peer ids --- ios/RCTARKitManager.m | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 6895bbc4..36c100fd 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -218,11 +218,22 @@ - (NSDictionary *)constantsToExport [[ARKit sharedInstance].multipeer advertiseReadyToJoinSession:serviceType]; } +// TODO: Should be optionally to only be available to host RCT_EXPORT_METHOD(sendDataToAllPeers:(NSDictionary *)data resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { [self sendData:[RCTARKit sharedInstance].multipeer.connectedPeers data:data callback:resolve]; } -// TODO: Should only be able to do if host ? Or thats a config option +// TODO: Should be optional to lock it down so peers can only send to host +RCT_EXPORT_METHOD(sendDataToPeers:(NSDictionary *)data recepientPeerIDs:(NSArray *)recepientPeerIDs resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + NSError *error = nil; + NSMutableArray *peers = [NSMutableArray array]; + for (NSString *peerUUID in recepientPeerIDs) { + [peers addObject:[[RCTARKit sharedInstance].multipeer.connectedPeers valueForKey:peerUUID]]; + } + [self sendData:[RCTARKit sharedInstance].multipeer.connectedPeers data:data callback:resolve]; +} + +// TODO: Should be optional to only be available to host RCT_EXPORT_METHOD(sendWorldmapData:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { [[ARKit sharedInstance] getCurrentWorldMap:resolve reject:reject]; } From 796bc2e2509085e7e6856693ee1fb0fa72014c78 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Thu, 30 Jan 2020 19:12:19 -0500 Subject: [PATCH 009/356] adds onPeerConnecting, onPeerConnected and onPeerDisconnected and passed the peer's uuid to the event cb --- ios/RCTARKit.h | 4 ++++ ios/RCTARKit.m | 2 +- ios/RCTARKitManager.m | 10 ++++++++++ ios/RCTMultiPeer.h | 12 ++++++++++- ios/RCTMultiPeer.m | 46 +++++++++++++++++++++++++++++++++++++++---- 5 files changed, 68 insertions(+), 6 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 8afb1a1b..0c96997c 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -64,6 +64,10 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error @property (nonatomic, copy) RCTBubblingEventBlock onEvent; @property (nonatomic, copy) RCTBubblingEventBlock onARKitError; +@property (nonatomic, copy) RCTBubblingEventBlock onPeerConnected; +@property (nonatomic, copy) RCTBubblingEventBlock onPeerConnecting; +@property (nonatomic, copy) RCTBubblingEventBlock onPeerDisconnected; + @property (nonatomic, copy) RCTBubblingEventBlock onMultipeerJsonDataReceived; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 7f897c5f..cec116be 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -151,7 +151,7 @@ - (void)receivedDataHandler:(NSData *)data PeerID:(MCPeerID *)peerID return; } - + NSLog(@"unknown data recieved from \(%@)",peerID.displayName); } } diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 36c100fd..27a8ae1e 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -178,6 +178,11 @@ - (NSDictionary *)constantsToExport RCT_EXPORT_VIEW_PROPERTY(onMultipeerJsonDataReceived, RCTBubblingEventBlock) +// TODO: Option to lock these three below down for host only +RCT_EXPORT_VIEW_PROPERTY(onPeerConnected, RCTBubblingEventBlock) +RCT_EXPORT_VIEW_PROPERTY(onPeerConnecting, RCTBubblingEventBlock) +RCT_EXPORT_VIEW_PROPERTY(onPeerDisconnected, RCTBubblingEventBlock) + RCT_EXPORT_VIEW_PROPERTY(onTrackingState, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onFeaturesDetected, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onLightEstimation, RCTBubblingEventBlock) @@ -238,6 +243,11 @@ - (NSDictionary *)constantsToExport [[ARKit sharedInstance] getCurrentWorldMap:resolve reject:reject]; } +// TODO: Should be optional to only be available to host +RCT_EXPORT_METHOD(getAllConnectedPeers:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + //TODO: get all peer ids +} + RCT_EXPORT_METHOD(isMounted:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { if( [ARKit isInitialized]) { dispatch_async(dispatch_get_main_queue(), ^{ diff --git a/ios/RCTMultiPeer.h b/ios/RCTMultiPeer.h index e09177ee..1d455f1e 100644 --- a/ios/RCTMultiPeer.h +++ b/ios/RCTMultiPeer.h @@ -11,6 +11,10 @@ NS_ASSUME_NONNULL_BEGIN +typedef void (^RCTBubblingEventBlock)(NSDictionary *body); +typedef void (^RCTARKitResolve)(id result); +typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error); + @protocol MultipeerConnectivityDelegate @optional @@ -18,7 +22,7 @@ NS_ASSUME_NONNULL_BEGIN @end -@interface MultipeerConnectivity : NSObject +@interface MultipeerConnectivity : UIView @property(nonatomic, strong)MCPeerID *myPeerID; @@ -29,6 +33,8 @@ NS_ASSUME_NONNULL_BEGIN @property(nonatomic, strong)MCNearbyServiceBrowser *serviceBrowser; @property(nonatomic, strong)MCBrowserViewController *mpBrowser; +@property(nonatomic, strong)NSMutableDictionary *connectedPeersDictionary; + @property(nonatomic, weak)id delegate; - (void)sendToAllPeers:(NSData *)data; @@ -37,6 +43,10 @@ NS_ASSUME_NONNULL_BEGIN - (void)advertiseReadyToJoinSession:(NSString *)serviceType; - (void)openMultipeerBrowser:(NSString *)serviceType; +//@property (nonatomic, copy) RCTBubblingEventBlock onPeerConnected; +//@property (nonatomic, copy) RCTBubblingEventBlock onPeerConnecting; +//@property (nonatomic, copy) RCTBubblingEventBlock onPeerDisconnected; + - (NSArray *)connectedPeers; @end diff --git a/ios/RCTMultiPeer.m b/ios/RCTMultiPeer.m index 5a64cd7b..24d7ea0d 100644 --- a/ios/RCTMultiPeer.m +++ b/ios/RCTMultiPeer.m @@ -7,8 +7,11 @@ // #import "RCTMultiPeer.h" +#import "RCTARKit.h" -@interface MultipeerConnectivity () +@interface MultipeerConnectivity () { + RCTARKitResolve _resolve; +} @end @@ -23,6 +26,7 @@ - (instancetype)init self.session = [[MCSession alloc] initWithPeer:self.myPeerID securityIdentity:nil encryptionPreference:MCEncryptionRequired]; self.session.delegate = self; + self.connectedPeersDictionary = [NSMutableDictionary dictionary]; } return self; @@ -78,10 +82,44 @@ - (void)sendToAllPeers:(NSData *)data #pragma mark MCSessionDelegate -// Remote peer changed state. -- (void)session:(MCSession *)session peer:(MCPeerID *)peerID didChangeState:(MCSessionState)state -{ +- (void)session:(MCSession *)session peer:(MCPeerID *)peerID didChangeState:(MCSessionState)state { + // don't react to own state changes + if ([peerID.displayName isEqualToString:self.myPeerID.displayName]) return; + if (state == MCSessionStateConnected) { + [self.connectedPeersDictionary setValue:peerID forKey:peerID.displayName]; + if ([ARKit sharedInstance].onPeerConnected) { + dispatch_async(dispatch_get_main_queue(), ^{ + [ARKit sharedInstance].onPeerConnected(@{ + @"peer": @{ + @"id": peerID.displayName + } + }); + }); + } + } + else if (state == MCSessionStateConnecting) { + if ([ARKit sharedInstance].onPeerConnecting) { + dispatch_async(dispatch_get_main_queue(), ^{ + [ARKit sharedInstance].onPeerConnecting(@{ + @"peer": @{ + @"id": peerID.displayName + } + }); + }); + } + } + else if (state == MCSessionStateNotConnected) { + if ([ARKit sharedInstance].onPeerDisconnected) { + dispatch_async(dispatch_get_main_queue(), ^{ + [ARKit sharedInstance].onPeerDisconnected(@{ + @"peer": @{ + @"id": peerID.displayName + } + }); + }); + } + } } // Received data from remote peer. From d5933caecf854d17b62afe46d1be72a6a12fbaca Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Sat, 1 Feb 2020 18:26:23 -0500 Subject: [PATCH 010/356] exposes getFrontOfCamera to js --- ios/RCTARKitManager.m | 36 +++++++++++++++++++++++------------- ios/RCTMultiPeer.h | 2 +- ios/RCTMultiPeer.m | 11 +++++++++++ 3 files changed, 35 insertions(+), 14 deletions(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 27a8ae1e..0484c265 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -219,23 +219,22 @@ - (NSDictionary *)constantsToExport [[ARKit sharedInstance].multipeer startBrowsingForPeers:serviceType]; } +RCT_EXPORT_METHOD(getFrontOfCameraPosition:resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + resolve(@{@"frontOfCamera": [ARKit sharedInstance].nodeManager.frontOfCamera}); +} + RCT_EXPORT_METHOD(advertiseReadyToJoinSession:(NSString *)serviceType resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { [[ARKit sharedInstance].multipeer advertiseReadyToJoinSession:serviceType]; } // TODO: Should be optionally to only be available to host RCT_EXPORT_METHOD(sendDataToAllPeers:(NSDictionary *)data resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - [self sendData:[RCTARKit sharedInstance].multipeer.connectedPeers data:data callback:resolve]; + [self sendDataToAll:data callback:resolve]; } // TODO: Should be optional to lock it down so peers can only send to host -RCT_EXPORT_METHOD(sendDataToPeers:(NSDictionary *)data recepientPeerIDs:(NSArray *)recepientPeerIDs resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - NSError *error = nil; - NSMutableArray *peers = [NSMutableArray array]; - for (NSString *peerUUID in recepientPeerIDs) { - [peers addObject:[[RCTARKit sharedInstance].multipeer.connectedPeers valueForKey:peerUUID]]; - } - [self sendData:[RCTARKit sharedInstance].multipeer.connectedPeers data:data callback:resolve]; +RCT_EXPORT_METHOD(sendDataToPeer:(NSDictionary *)data recipientId:(NSString *)recipientId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + [self sendData:recipientId data:data callback:resolve]; } // TODO: Should be optional to only be available to host @@ -277,12 +276,23 @@ - (NSDictionary *)constantsToExport [[ARKit sharedInstance] hitTestSceneObjects:point resolve:resolve reject:reject]; } -- (void)sendData:(NSArray *)recipients data:(NSDictionary *)data callback:(RCTResponseSenderBlock)callback { +- (void)sendDataToAll:(NSDictionary *)data callback:(RCTResponseSenderBlock)callback { + NSError *error = nil; + NSData *jsonData = [NSJSONSerialization dataWithJSONObject:data options:0 error:&error]; + [[ARKit sharedInstance].multipeer.session sendData:jsonData toPeers:[RCTARKit sharedInstance].multipeer.session.connectedPeers withMode:MCSessionSendDataReliable error:&error]; + NSLog(@"Sending data..."); + if (error == nil) { + callback(@[[NSNull null]]); + } + else { + callback(@[[error description]]); + } +} + +- (void)sendData:(NSString *)recipient data:(NSDictionary *)data callback:(RCTResponseSenderBlock)callback { NSError *error = nil; - NSMutableArray *peers = [NSMutableArray array]; -// for (NSString *peerUUID in recipients) { -// [peers addObject:[[ARKit sharedInstance].multipeer.session.connectedPeers valueForKey:peerUUID]]; -// } + NSPredicate *predicate = [NSPredicate predicateWithFormat:@"peerUUID == %@", recipient]; + NSArray *recipients = [[RCTARKit sharedInstance].multipeer.session.connectedPeers filteredArrayUsingPredicate:predicate]; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:data options:0 error:&error]; [[ARKit sharedInstance].multipeer.session sendData:jsonData toPeers:recipients withMode:MCSessionSendDataReliable error:&error]; NSLog(@"Sending data..."); diff --git a/ios/RCTMultiPeer.h b/ios/RCTMultiPeer.h index 1d455f1e..080933ae 100644 --- a/ios/RCTMultiPeer.h +++ b/ios/RCTMultiPeer.h @@ -22,7 +22,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error @end -@interface MultipeerConnectivity : UIView +@interface MultipeerConnectivity : NSObject @property(nonatomic, strong)MCPeerID *myPeerID; diff --git a/ios/RCTMultiPeer.m b/ios/RCTMultiPeer.m index 24d7ea0d..46f5a7e7 100644 --- a/ios/RCTMultiPeer.m +++ b/ios/RCTMultiPeer.m @@ -75,6 +75,17 @@ - (void)sendToAllPeers:(NSData *)data } } +- (void)sendToPeers:(NSArray *)recipients data:(NSData *)data +{ + @try { + [self.session sendData:data toPeers:recipients withMode:MCSessionSendDataReliable error:nil]; + } @catch (NSException *exception) { + NSLog(@"error sending data to peers: \(error.localizedDescription)"); + } @finally { + + } +} + - (NSArray *)connectedPeers { return self.session.connectedPeers; From 2a41081d63d0c2f0af359a2f299d0f21cd1593f5 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Fri, 14 Feb 2020 21:30:23 -0500 Subject: [PATCH 011/356] Cleaning up some code --- ios/RCTARKit.m | 2 +- ios/RCTARKitManager.m | 8 ++++++++ ios/RCTARKitNodes.m | 2 +- ios/RCTMultiPeer.h | 12 ------------ ios/RCTMultiPeer.m | 8 -------- 5 files changed, 10 insertions(+), 22 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index cec116be..a5ba8fd0 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -222,7 +222,7 @@ - (BOOL)debug { - (void)setDebug:(BOOL)debug { if (debug) { self.arView.showsStatistics = YES; - self.arView.debugOptions = ARSCNDebugOptionShowWorldOrigin | ARSCNDebugOptionShowFeaturePoints; + self.arView.debugOptions = ARSCNDebugOptionShowFeaturePoints; } else { self.arView.showsStatistics = NO; self.arView.debugOptions = SCNDebugOptionNone; diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 0484c265..b5622572 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -223,6 +223,14 @@ - (NSDictionary *)constantsToExport resolve(@{@"frontOfCamera": [ARKit sharedInstance].nodeManager.frontOfCamera}); } +RCT_EXPORT_METHOD(getFrontOfCamera:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + resolve(@{ + @"x": @([ARKit sharedInstance].nodeManager.frontOfCamera.position.x), + @"y": @([ARKit sharedInstance].nodeManager.frontOfCamera.position.y), + @"z": @([ARKit sharedInstance].nodeManager.frontOfCamera.position.z) + }); +} + RCT_EXPORT_METHOD(advertiseReadyToJoinSession:(NSString *)serviceType resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { [[ARKit sharedInstance].multipeer advertiseReadyToJoinSession:serviceType]; } diff --git a/ios/RCTARKitNodes.m b/ios/RCTARKitNodes.m index 6379fb8a..b2d5640e 100644 --- a/ios/RCTARKitNodes.m +++ b/ios/RCTARKitNodes.m @@ -15,7 +15,7 @@ @implementation SCNNode (ReferenceFrame) @dynamic referenceFrame; @end -CGFloat focDistance = 0.2f; +CGFloat focDistance = 0.45f; @interface RCTARKitNodes () diff --git a/ios/RCTMultiPeer.h b/ios/RCTMultiPeer.h index 080933ae..9da32ab9 100644 --- a/ios/RCTMultiPeer.h +++ b/ios/RCTMultiPeer.h @@ -1,11 +1,3 @@ -// -// MultipeerConnectivity.h -// ARKit -// -// Created by Mac on 2018/6/5. -// Copyright © 2018年 AR. All rights reserved. -// - #import #import @@ -43,10 +35,6 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)advertiseReadyToJoinSession:(NSString *)serviceType; - (void)openMultipeerBrowser:(NSString *)serviceType; -//@property (nonatomic, copy) RCTBubblingEventBlock onPeerConnected; -//@property (nonatomic, copy) RCTBubblingEventBlock onPeerConnecting; -//@property (nonatomic, copy) RCTBubblingEventBlock onPeerDisconnected; - - (NSArray *)connectedPeers; @end diff --git a/ios/RCTMultiPeer.m b/ios/RCTMultiPeer.m index 46f5a7e7..3897dce4 100644 --- a/ios/RCTMultiPeer.m +++ b/ios/RCTMultiPeer.m @@ -1,11 +1,3 @@ -// -// MultipeerConnectivity.m -// ARKit -// -// Created by Mac on 2018/6/5. -// Copyright © 2018年 AR. All rights reserved. -// - #import "RCTMultiPeer.h" #import "RCTARKit.h" From 80446f28da2c1f869393ff76591d9e89430c2dec Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Fri, 14 Feb 2020 21:51:40 -0500 Subject: [PATCH 012/356] remove DS_Store and add it to ignore and add some attribution and links --- .DS_Store | Bin 8196 -> 0 bytes .gitignore | 1 + ios/RCTMultiPeer.h | 6 ++++++ ios/RCTMultiPeer.m | 5 +++++ 4 files changed, 12 insertions(+) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 7a2506fc5cd7b1d61c68f3349aa400ca81ec2a9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHM-A)rh6h1?%Yzqc7DqQZ3i5Ey9{$OHEYH8I*1!JpTD1mObfy%N=x?2j?n%?*f z@(MnQkKlv&0Q#Mop=`Iy4Ht&QnPle7&YW+~*>BEtIRg=iV#i%3nkOO)mF4Udnv}xx zT*u0U9=QQ2fG3J*kv>sa@q)&fwiz%C7zPXjh5^HXVc;S#fNwSz>x}Qdnl-Iqz%cM% zGQhtNHY&@4mIEc_PX`*A0zhUlEDQR`10=@QvY_QaNeRW8DtizbDs+k=6ddz5t3wvF z94M*aBov&4wk&jpBBXWTY^hG7prmOH1BQWd1~_-O=n1`{7u1U9?~WHZnB(L02=(?K zSYC9K`iA(&vPA z`K~EiPB+}wKK^v}y;c}4E&UP`ne3&@la`gY@>lX3)t#VQjp|V+EY{l}_~~^$+HrKh z76jg~Uw7WMn%&LW>#Knu)mwhEEx|3f36+oUTfQ4~i$TYCL%B{>O;}dW%5Bcx?DZZl z*!S+5yPkqW^pD_ji25>4YYDMiJ}cr!5K|Pwvo^fs^A*a7 z96Mzk>EbZPM;@9H-mZ #import diff --git a/ios/RCTMultiPeer.m b/ios/RCTMultiPeer.m index 3897dce4..a6d1f952 100644 --- a/ios/RCTMultiPeer.m +++ b/ios/RCTMultiPeer.m @@ -1,3 +1,8 @@ +// Created by Matt Thompson on 01/25/20. +// MIT Licence. +// lwansbrough/react-native-multipeer +// https://developer.apple.com/documentation/arkit/creating_a_multiuser_ar_experience?language=objc + #import "RCTMultiPeer.h" #import "RCTARKit.h" From bd5bfea3f0dfe082b6c847382c2c60a30122a0d2 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 20 Apr 2020 19:26:31 -0400 Subject: [PATCH 013/356] add roatation gesutre handler --- ARKit.js | 2 ++ ios/RCTARKit.h | 4 ++++ ios/RCTARKit.m | 18 ++++++++++++++++++ ios/RCTARKitManager.m | 1 + 4 files changed, 25 insertions(+) diff --git a/ARKit.js b/ARKit.js index f52b3698..2a3dd912 100644 --- a/ARKit.js +++ b/ARKit.js @@ -58,6 +58,7 @@ class ARKit extends Component { keyBy([ 'onTapOnPlaneUsingExtent', 'onTapOnPlaneNoExtent', + 'onRotationGesture', 'onPlaneDetected', 'onPlaneRemoved', 'onPlaneUpdated', @@ -238,6 +239,7 @@ ARKit.propTypes = { onTrackingState: PropTypes.func, onTapOnPlaneUsingExtent: PropTypes.func, onTapOnPlaneNoExtent: PropTypes.func, + onRotationGesture: PropTypes.func, onEvent: PropTypes.func, isMounted: PropTypes.func, isInitialized: PropTypes.func, diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 0c96997c..ee740a3b 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -50,6 +50,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error @property (nonatomic, copy) RCTBubblingEventBlock onPlaneRemoved; @property (nonatomic, copy) RCTBubblingEventBlock onPlaneUpdated; + @property (nonatomic, copy) RCTBubblingEventBlock onAnchorDetected; @property (nonatomic, copy) RCTBubblingEventBlock onAnchorRemoved; @property (nonatomic, copy) RCTBubblingEventBlock onAnchorUpdated; @@ -61,6 +62,9 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error @property (nonatomic, copy) RCTBubblingEventBlock onTrackingState; @property (nonatomic, copy) RCTBubblingEventBlock onTapOnPlaneUsingExtent; @property (nonatomic, copy) RCTBubblingEventBlock onTapOnPlaneNoExtent; + +@property (nonatomic, copy) RCTBubblingEventBlock onRotationGesture; + @property (nonatomic, copy) RCTBubblingEventBlock onEvent; @property (nonatomic, copy) RCTBubblingEventBlock onARKitError; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index a5ba8fd0..c04222b6 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -76,6 +76,9 @@ - (instancetype)initWithARView:(ARSCNView *)arView { UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)]; tapGestureRecognizer.numberOfTapsRequired = 1; [self.arView addGestureRecognizer:tapGestureRecognizer]; + + UIRotationGestureRecognizer *rotationGestureRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotationFrom:)]; + [self.arView addGestureRecognizer:rotationGestureRecognizer]; self.touchDelegates = [NSMutableArray array]; self.rendererDelegates = [NSMutableArray array]; @@ -550,7 +553,22 @@ - (void)handleTapFrom: (UITapGestureRecognizer *)recognizer { } } +- (void)handleRotationFrom: (UIRotationGestureRecognizer *)recognizer { + + if( recognizer.state == UIGestureRecognizerStateBegan || + recognizer.state == UIGestureRecognizerStateChanged || + recognizer.state == UIGestureRecognizerStateEnded) { + + if(self.onRotationGesture) { + NSDictionary *rotationGesture = @{ + @"rotation": @(recognizer.rotation), + @"velocity": @(recognizer.velocity) + }; + self.onRotationGesture(rotationGesture); + } + } +} #pragma mark - ARSCNViewDelegate diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index b5622572..faa2c5d9 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -188,6 +188,7 @@ - (NSDictionary *)constantsToExport RCT_EXPORT_VIEW_PROPERTY(onLightEstimation, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onTapOnPlaneUsingExtent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onTapOnPlaneNoExtent, RCTBubblingEventBlock) +RCT_EXPORT_VIEW_PROPERTY(onRotationGesture, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onEvent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onARKitError, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(worldMap, NSObject); From 2a68afdbaa0c3c8b2966dead26c40747e0fa63d7 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 20 Apr 2020 19:47:31 -0400 Subject: [PATCH 014/356] add pinch --- ARKit.js | 2 ++ ios/RCTARKit.h | 1 + ios/RCTARKit.m | 22 +++++++++++++++++++++- ios/RCTARKitManager.m | 1 + 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/ARKit.js b/ARKit.js index 2a3dd912..d5f48ce6 100644 --- a/ARKit.js +++ b/ARKit.js @@ -59,6 +59,7 @@ class ARKit extends Component { 'onTapOnPlaneUsingExtent', 'onTapOnPlaneNoExtent', 'onRotationGesture', + 'onPinchGesture', 'onPlaneDetected', 'onPlaneRemoved', 'onPlaneUpdated', @@ -240,6 +241,7 @@ ARKit.propTypes = { onTapOnPlaneUsingExtent: PropTypes.func, onTapOnPlaneNoExtent: PropTypes.func, onRotationGesture: PropTypes.func, + onPinchGesture: PropTypes.func, onEvent: PropTypes.func, isMounted: PropTypes.func, isInitialized: PropTypes.func, diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index ee740a3b..cda73a9f 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -64,6 +64,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error @property (nonatomic, copy) RCTBubblingEventBlock onTapOnPlaneNoExtent; @property (nonatomic, copy) RCTBubblingEventBlock onRotationGesture; +@property (nonatomic, copy) RCTBubblingEventBlock onPinchGesture; @property (nonatomic, copy) RCTBubblingEventBlock onEvent; @property (nonatomic, copy) RCTBubblingEventBlock onARKitError; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index c04222b6..cd7b3f37 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -79,7 +79,10 @@ - (instancetype)initWithARView:(ARSCNView *)arView { UIRotationGestureRecognizer *rotationGestureRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotationFrom:)]; [self.arView addGestureRecognizer:rotationGestureRecognizer]; - + + UIPinchGestureRecognizer *pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinchFrom:)]; + [self.arView addGestureRecognizer:pinchGestureRecognizer]; + self.touchDelegates = [NSMutableArray array]; self.rendererDelegates = [NSMutableArray array]; self.sessionDelegates = [NSMutableArray array]; @@ -570,6 +573,23 @@ - (void)handleRotationFrom: (UIRotationGestureRecognizer *)recognizer { } } +- (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { + + if( recognizer.state == UIGestureRecognizerStateBegan || + recognizer.state == UIGestureRecognizerStateChanged || + recognizer.state == UIGestureRecognizerStateEnded) { + + if(self.onPinchGesture) { + NSDictionary *pinchGesture = @{ + @"scale": @(recognizer.scale), + @"velocity": @(recognizer.velocity) + }; + + self.onPinchGesture(pinchGesture); + } + } +} + #pragma mark - ARSCNViewDelegate - (void)renderer:(id)renderer updateAtTime:(NSTimeInterval)time { diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index faa2c5d9..90736e37 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -189,6 +189,7 @@ - (NSDictionary *)constantsToExport RCT_EXPORT_VIEW_PROPERTY(onTapOnPlaneUsingExtent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onTapOnPlaneNoExtent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onRotationGesture, RCTBubblingEventBlock) +RCT_EXPORT_VIEW_PROPERTY(onPinchGesture, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onEvent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onARKitError, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(worldMap, NSObject); From a205191a00c1570a9909f197ef2b0fc7289b4777 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 20 Apr 2020 20:33:29 -0400 Subject: [PATCH 015/356] onpress --- ARKit.js | 2 ++ ios/RCTARKit.h | 4 ++++ ios/RCTARKit.m | 23 +++++++++++++++++++++++ ios/RCTARKitManager.m | 1 + 4 files changed, 30 insertions(+) diff --git a/ARKit.js b/ARKit.js index d5f48ce6..48ac9a9f 100644 --- a/ARKit.js +++ b/ARKit.js @@ -59,6 +59,7 @@ class ARKit extends Component { 'onTapOnPlaneUsingExtent', 'onTapOnPlaneNoExtent', 'onRotationGesture', + 'onPressGesture', 'onPinchGesture', 'onPlaneDetected', 'onPlaneRemoved', @@ -241,6 +242,7 @@ ARKit.propTypes = { onTapOnPlaneUsingExtent: PropTypes.func, onTapOnPlaneNoExtent: PropTypes.func, onRotationGesture: PropTypes.func, + onPressGesture: PropTypes.func, onPinchGesture: PropTypes.func, onEvent: PropTypes.func, isMounted: PropTypes.func, diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index cda73a9f..12e03e9b 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -66,6 +66,10 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error @property (nonatomic, copy) RCTBubblingEventBlock onRotationGesture; @property (nonatomic, copy) RCTBubblingEventBlock onPinchGesture; +@property (nonatomic, copy) RCTBubblingEventBlock onPressGesture; + + + @property (nonatomic, copy) RCTBubblingEventBlock onEvent; @property (nonatomic, copy) RCTBubblingEventBlock onARKitError; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index cd7b3f37..ff5f608c 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -80,6 +80,10 @@ - (instancetype)initWithARView:(ARSCNView *)arView { UIRotationGestureRecognizer *rotationGestureRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotationFrom:)]; [self.arView addGestureRecognizer:rotationGestureRecognizer]; + UIPress *pressGestureRecognizer = [[UIPress alloc] initWithTarget:self action:@selector(handlePressFrom:)]; + [self.arView addGestureRecognizer:pressGestureRecognizer]; + + UIPinchGestureRecognizer *pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinchFrom:)]; [self.arView addGestureRecognizer:pinchGestureRecognizer]; @@ -573,6 +577,25 @@ - (void)handleRotationFrom: (UIRotationGestureRecognizer *)recognizer { } } + +- (void)handlePressFrom: (UIPress *)recognizer { + if(self.onPressGesture) { + NSDictionary *press = @{ + @"press": @(recognizer.press), + @"responder": @(recognizer.responder), + @"window": @(recognizer.widnow), + @"key": @(recognizer.key), + @"type": @(recognizer.type), + @"phase": @(recognizer.phase), + @"timestamp": @(recognizer.timestamp), + + }; + + self.onPressGesture(press); + } +} + + - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { if( recognizer.state == UIGestureRecognizerStateBegan || diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 90736e37..c8c71cbb 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -189,6 +189,7 @@ - (NSDictionary *)constantsToExport RCT_EXPORT_VIEW_PROPERTY(onTapOnPlaneUsingExtent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onTapOnPlaneNoExtent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onRotationGesture, RCTBubblingEventBlock) +RCT_EXPORT_VIEW_PROPERTY(onPressGesture, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onPinchGesture, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onEvent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onARKitError, RCTBubblingEventBlock) From acca535bfbb721a3e96ec441ef53b2bd00cab1d6 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 20 Apr 2020 20:45:30 -0400 Subject: [PATCH 016/356] remove onrpess --- ARKit.js | 2 -- ios/RCTARKit.h | 4 ---- ios/RCTARKit.m | 22 ---------------------- ios/RCTARKitManager.m | 1 - 4 files changed, 29 deletions(-) diff --git a/ARKit.js b/ARKit.js index 48ac9a9f..d5f48ce6 100644 --- a/ARKit.js +++ b/ARKit.js @@ -59,7 +59,6 @@ class ARKit extends Component { 'onTapOnPlaneUsingExtent', 'onTapOnPlaneNoExtent', 'onRotationGesture', - 'onPressGesture', 'onPinchGesture', 'onPlaneDetected', 'onPlaneRemoved', @@ -242,7 +241,6 @@ ARKit.propTypes = { onTapOnPlaneUsingExtent: PropTypes.func, onTapOnPlaneNoExtent: PropTypes.func, onRotationGesture: PropTypes.func, - onPressGesture: PropTypes.func, onPinchGesture: PropTypes.func, onEvent: PropTypes.func, isMounted: PropTypes.func, diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 12e03e9b..cda73a9f 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -66,10 +66,6 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error @property (nonatomic, copy) RCTBubblingEventBlock onRotationGesture; @property (nonatomic, copy) RCTBubblingEventBlock onPinchGesture; -@property (nonatomic, copy) RCTBubblingEventBlock onPressGesture; - - - @property (nonatomic, copy) RCTBubblingEventBlock onEvent; @property (nonatomic, copy) RCTBubblingEventBlock onARKitError; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index ff5f608c..57d758c7 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -80,10 +80,6 @@ - (instancetype)initWithARView:(ARSCNView *)arView { UIRotationGestureRecognizer *rotationGestureRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotationFrom:)]; [self.arView addGestureRecognizer:rotationGestureRecognizer]; - UIPress *pressGestureRecognizer = [[UIPress alloc] initWithTarget:self action:@selector(handlePressFrom:)]; - [self.arView addGestureRecognizer:pressGestureRecognizer]; - - UIPinchGestureRecognizer *pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinchFrom:)]; [self.arView addGestureRecognizer:pinchGestureRecognizer]; @@ -578,24 +574,6 @@ - (void)handleRotationFrom: (UIRotationGestureRecognizer *)recognizer { } -- (void)handlePressFrom: (UIPress *)recognizer { - if(self.onPressGesture) { - NSDictionary *press = @{ - @"press": @(recognizer.press), - @"responder": @(recognizer.responder), - @"window": @(recognizer.widnow), - @"key": @(recognizer.key), - @"type": @(recognizer.type), - @"phase": @(recognizer.phase), - @"timestamp": @(recognizer.timestamp), - - }; - - self.onPressGesture(press); - } -} - - - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { if( recognizer.state == UIGestureRecognizerStateBegan || diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index c8c71cbb..90736e37 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -189,7 +189,6 @@ - (NSDictionary *)constantsToExport RCT_EXPORT_VIEW_PROPERTY(onTapOnPlaneUsingExtent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onTapOnPlaneNoExtent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onRotationGesture, RCTBubblingEventBlock) -RCT_EXPORT_VIEW_PROPERTY(onPressGesture, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onPinchGesture, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onEvent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onARKitError, RCTBubblingEventBlock) From faa35b8f27385b7053c00b6f9a1038fa85bcddb8 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 20 Apr 2020 21:30:19 -0400 Subject: [PATCH 017/356] add pan gesture --- ARKit.js | 2 ++ ios/RCTARKit.h | 3 +++ ios/RCTARKit.m | 22 ++++++++++++++++++++++ ios/RCTARKitManager.m | 1 + 4 files changed, 28 insertions(+) diff --git a/ARKit.js b/ARKit.js index d5f48ce6..e1147905 100644 --- a/ARKit.js +++ b/ARKit.js @@ -59,6 +59,7 @@ class ARKit extends Component { 'onTapOnPlaneUsingExtent', 'onTapOnPlaneNoExtent', 'onRotationGesture', + 'onPanGesture', 'onPinchGesture', 'onPlaneDetected', 'onPlaneRemoved', @@ -241,6 +242,7 @@ ARKit.propTypes = { onTapOnPlaneUsingExtent: PropTypes.func, onTapOnPlaneNoExtent: PropTypes.func, onRotationGesture: PropTypes.func, + onPanGesture: PropTypes.func, onPinchGesture: PropTypes.func, onEvent: PropTypes.func, isMounted: PropTypes.func, diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index cda73a9f..5dcb9a00 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -65,6 +65,9 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error @property (nonatomic, copy) RCTBubblingEventBlock onRotationGesture; @property (nonatomic, copy) RCTBubblingEventBlock onPinchGesture; +@property (nonatomic, copy) RCTBubblingEventBlock onPanGestureGesture; + + @property (nonatomic, copy) RCTBubblingEventBlock onEvent; @property (nonatomic, copy) RCTBubblingEventBlock onARKitError; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 57d758c7..53e0bd49 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -77,6 +77,12 @@ - (instancetype)initWithARView:(ARSCNView *)arView { tapGestureRecognizer.numberOfTapsRequired = 1; [self.arView addGestureRecognizer:tapGestureRecognizer]; + UIPanGestureRecognizer *panGestureReconizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanFrom:)]; + panGestureReconizer.maximumNumberOfTouches = 1; + panGestureReconizer.minimumNumberOfTouches = 1; + [self.arView addGestureRecognizer:panGestureReconizer]; + + UIRotationGestureRecognizer *rotationGestureRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotationFrom:)]; [self.arView addGestureRecognizer:rotationGestureRecognizer]; @@ -591,6 +597,22 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { } } +- (void)handlePanFrom:(UIPanGestureRecognizer *)recognizer { + CGPoint translation = [recognizer translationInView:self.view]; + // recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, + // recognizer.view.center.y + translation.y); + + if(self.onPanGesture) { + NSDictionary *panGesture = @{ + @"x": @(translation.x), + @"y": @(translation.y) + }; + + self.onPanGesture(panGesture); + } + // [recognizer setTranslation:CGPointZero inView:self.view]; +} + #pragma mark - ARSCNViewDelegate - (void)renderer:(id)renderer updateAtTime:(NSTimeInterval)time { diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 90736e37..d61469a6 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -189,6 +189,7 @@ - (NSDictionary *)constantsToExport RCT_EXPORT_VIEW_PROPERTY(onTapOnPlaneUsingExtent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onTapOnPlaneNoExtent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onRotationGesture, RCTBubblingEventBlock) +RCT_EXPORT_VIEW_PROPERTY(onPanGesture, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onPinchGesture, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onEvent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onARKitError, RCTBubblingEventBlock) From 612dfacd9bd656c526d2c6e315a395618ed1c0c9 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 20 Apr 2020 21:38:52 -0400 Subject: [PATCH 018/356] update pan gesature' --- ios/RCTARKit.m | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 53e0bd49..30c1dba8 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -598,15 +598,16 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { } - (void)handlePanFrom:(UIPanGestureRecognizer *)recognizer { - CGPoint translation = [recognizer translationInView:self.view]; + // CGPoint translation = [recognizer translationInView:self.view]; // recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, // recognizer.view.center.y + translation.y); + if(self.onPanGesture) { NSDictionary *panGesture = @{ - @"x": @(translation.x), - @"y": @(translation.y) - }; + @"x": @(recognizer.view.center.x), + @"y": @(recognizer.view.center.y ) + }; self.onPanGesture(panGesture); } From f87d8031116960b00fa4106a6ff8590764c4ea95 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 20 Apr 2020 21:46:05 -0400 Subject: [PATCH 019/356] remove pan gesture --- ios/RCTARKit.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 5dcb9a00..d08450bd 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -63,9 +63,9 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error @property (nonatomic, copy) RCTBubblingEventBlock onTapOnPlaneUsingExtent; @property (nonatomic, copy) RCTBubblingEventBlock onTapOnPlaneNoExtent; +@property (nonatomic, copy) RCTBubblingEventBlock onPanGestureGesture; @property (nonatomic, copy) RCTBubblingEventBlock onRotationGesture; @property (nonatomic, copy) RCTBubblingEventBlock onPinchGesture; -@property (nonatomic, copy) RCTBubblingEventBlock onPanGestureGesture; From 29144da40be24f243311311f10518665a642fb4c Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 20 Apr 2020 21:51:52 -0400 Subject: [PATCH 020/356] fix panning --- ios/RCTARKit.h | 2 +- ios/RCTARKit.m | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index d08450bd..7aeb3bb4 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -63,7 +63,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error @property (nonatomic, copy) RCTBubblingEventBlock onTapOnPlaneUsingExtent; @property (nonatomic, copy) RCTBubblingEventBlock onTapOnPlaneNoExtent; -@property (nonatomic, copy) RCTBubblingEventBlock onPanGestureGesture; +@property (nonatomic, copy) RCTBubblingEventBlock onPanGesture; @property (nonatomic, copy) RCTBubblingEventBlock onRotationGesture; @property (nonatomic, copy) RCTBubblingEventBlock onPinchGesture; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 30c1dba8..32e7749e 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -598,15 +598,15 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { } - (void)handlePanFrom:(UIPanGestureRecognizer *)recognizer { - // CGPoint translation = [recognizer translationInView:self.view]; + CGPoint translation = [recognizer translationInView:self.view]; // recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, // recognizer.view.center.y + translation.y); if(self.onPanGesture) { NSDictionary *panGesture = @{ - @"x": @(recognizer.view.center.x), - @"y": @(recognizer.view.center.y ) + @"x": @(translation.x), + @"y": @(translation.y ) }; self.onPanGesture(panGesture); From da46c575844be1e3eab0ab7b2d530fef3040d55e Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 20 Apr 2020 21:58:02 -0400 Subject: [PATCH 021/356] update view --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 32e7749e..740a9e56 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -598,7 +598,7 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { } - (void)handlePanFrom:(UIPanGestureRecognizer *)recognizer { - CGPoint translation = [recognizer translationInView:self.view]; + CGPoint translation = [recognizer translationInView:recognizer.view]; // recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, // recognizer.view.center.y + translation.y); From 474f9949e088b2530975c08c1b7b9aa8a3ba9dbb Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 21 Apr 2020 18:32:40 -0400 Subject: [PATCH 022/356] add z stat --- ios/RCTARKit.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 740a9e56..a5aa50f2 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -606,7 +606,9 @@ - (void)handlePanFrom:(UIPanGestureRecognizer *)recognizer { if(self.onPanGesture) { NSDictionary *panGesture = @{ @"x": @(translation.x), - @"y": @(translation.y ) + @"y": @(translation.y), + @"z": @(translation.z), + }; self.onPanGesture(panGesture); From f67e1c477f4835dc5c6dfad9b05bd39e63e22bda Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 21 Apr 2020 18:38:10 -0400 Subject: [PATCH 023/356] remove z stat --- ios/RCTARKit.m | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index a5aa50f2..a11c3bf9 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -606,9 +606,7 @@ - (void)handlePanFrom:(UIPanGestureRecognizer *)recognizer { if(self.onPanGesture) { NSDictionary *panGesture = @{ @"x": @(translation.x), - @"y": @(translation.y), - @"z": @(translation.z), - + @"y": @(translation.y), }; self.onPanGesture(panGesture); From 5e9a265919ef26876c42b755d3a780c4849af6f8 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 21 Apr 2020 18:56:49 -0400 Subject: [PATCH 024/356] add reconzer stats --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index a11c3bf9..11792f96 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -605,8 +605,8 @@ - (void)handlePanFrom:(UIPanGestureRecognizer *)recognizer { if(self.onPanGesture) { NSDictionary *panGesture = @{ - @"x": @(translation.x), - @"y": @(translation.y), + @"x": @(recognizer.view.center.x), + @"y": @(recognizer.view.center.y), }; self.onPanGesture(panGesture); From 32bde18a26be556206d2d4e2a9eef99a63f70f71 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 21 Apr 2020 19:11:28 -0400 Subject: [PATCH 025/356] debug translator and view --- ios/RCTARKit.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 11792f96..45424b20 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -607,6 +607,8 @@ - (void)handlePanFrom:(UIPanGestureRecognizer *)recognizer { NSDictionary *panGesture = @{ @"x": @(recognizer.view.center.x), @"y": @(recognizer.view.center.y), + @"recognizer": @(recognizer), + @"translation": @(translation) }; self.onPanGesture(panGesture); From 2931d6e2c2dddaaf467a5b9e68cfd7d9b26f9bc1 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 21 Apr 2020 19:19:44 -0400 Subject: [PATCH 026/356] remove pan --- ios/RCTARKit.m | 2 -- 1 file changed, 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 45424b20..11792f96 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -607,8 +607,6 @@ - (void)handlePanFrom:(UIPanGestureRecognizer *)recognizer { NSDictionary *panGesture = @{ @"x": @(recognizer.view.center.x), @"y": @(recognizer.view.center.y), - @"recognizer": @(recognizer), - @"translation": @(translation) }; self.onPanGesture(panGesture); From ae3e0bc2d2600d6e6591f0bde1eeb15a8af873ff Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 21 Apr 2020 19:28:40 -0400 Subject: [PATCH 027/356] completely remove panhandler --- ARKit.js | 2 -- ios/RCTARKit.h | 1 - ios/RCTARKit.m | 22 ---------------------- ios/RCTARKitManager.m | 1 - 4 files changed, 26 deletions(-) diff --git a/ARKit.js b/ARKit.js index e1147905..d5f48ce6 100644 --- a/ARKit.js +++ b/ARKit.js @@ -59,7 +59,6 @@ class ARKit extends Component { 'onTapOnPlaneUsingExtent', 'onTapOnPlaneNoExtent', 'onRotationGesture', - 'onPanGesture', 'onPinchGesture', 'onPlaneDetected', 'onPlaneRemoved', @@ -242,7 +241,6 @@ ARKit.propTypes = { onTapOnPlaneUsingExtent: PropTypes.func, onTapOnPlaneNoExtent: PropTypes.func, onRotationGesture: PropTypes.func, - onPanGesture: PropTypes.func, onPinchGesture: PropTypes.func, onEvent: PropTypes.func, isMounted: PropTypes.func, diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 7aeb3bb4..cfdc3500 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -63,7 +63,6 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error @property (nonatomic, copy) RCTBubblingEventBlock onTapOnPlaneUsingExtent; @property (nonatomic, copy) RCTBubblingEventBlock onTapOnPlaneNoExtent; -@property (nonatomic, copy) RCTBubblingEventBlock onPanGesture; @property (nonatomic, copy) RCTBubblingEventBlock onRotationGesture; @property (nonatomic, copy) RCTBubblingEventBlock onPinchGesture; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 11792f96..32ee724b 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -76,13 +76,7 @@ - (instancetype)initWithARView:(ARSCNView *)arView { UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)]; tapGestureRecognizer.numberOfTapsRequired = 1; [self.arView addGestureRecognizer:tapGestureRecognizer]; - - UIPanGestureRecognizer *panGestureReconizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanFrom:)]; - panGestureReconizer.maximumNumberOfTouches = 1; - panGestureReconizer.minimumNumberOfTouches = 1; - [self.arView addGestureRecognizer:panGestureReconizer]; - UIRotationGestureRecognizer *rotationGestureRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotationFrom:)]; [self.arView addGestureRecognizer:rotationGestureRecognizer]; @@ -597,22 +591,6 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { } } -- (void)handlePanFrom:(UIPanGestureRecognizer *)recognizer { - CGPoint translation = [recognizer translationInView:recognizer.view]; - // recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, - // recognizer.view.center.y + translation.y); - - - if(self.onPanGesture) { - NSDictionary *panGesture = @{ - @"x": @(recognizer.view.center.x), - @"y": @(recognizer.view.center.y), - }; - - self.onPanGesture(panGesture); - } - // [recognizer setTranslation:CGPointZero inView:self.view]; -} #pragma mark - ARSCNViewDelegate diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index d61469a6..90736e37 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -189,7 +189,6 @@ - (NSDictionary *)constantsToExport RCT_EXPORT_VIEW_PROPERTY(onTapOnPlaneUsingExtent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onTapOnPlaneNoExtent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onRotationGesture, RCTBubblingEventBlock) -RCT_EXPORT_VIEW_PROPERTY(onPanGesture, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onPinchGesture, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onEvent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onARKitError, RCTBubblingEventBlock) From db21fe7aefd139947975e20bc1afc71203454442 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 21 Apr 2020 20:12:19 -0400 Subject: [PATCH 028/356] add recongizer --- ios/RCTARKit.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 32ee724b..d7e31c8e 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -583,7 +583,8 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { if(self.onPinchGesture) { NSDictionary *pinchGesture = @{ @"scale": @(recognizer.scale), - @"velocity": @(recognizer.velocity) + @"velocity": @(recognizer.velocity), + @"recongizer": vectorToJson(recognizer) }; self.onPinchGesture(pinchGesture); From b25cd7d057b9d9b372d7db5391a66b961fab505c Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 21 Apr 2020 20:21:16 -0400 Subject: [PATCH 029/356] add name --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index d7e31c8e..cb6ca4ad 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -584,7 +584,7 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { NSDictionary *pinchGesture = @{ @"scale": @(recognizer.scale), @"velocity": @(recognizer.velocity), - @"recongizer": vectorToJson(recognizer) + @"name": @(recognizer.name) }; self.onPinchGesture(pinchGesture); From c4b72f2b9cfdd7f8ac38ac78a4b9fc2f2596128d Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 21 Apr 2020 20:35:39 -0400 Subject: [PATCH 030/356] remove name --- ios/RCTARKit.m | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index cb6ca4ad..32ee724b 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -583,8 +583,7 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { if(self.onPinchGesture) { NSDictionary *pinchGesture = @{ @"scale": @(recognizer.scale), - @"velocity": @(recognizer.velocity), - @"name": @(recognizer.name) + @"velocity": @(recognizer.velocity) }; self.onPinchGesture(pinchGesture); From f83cc08e8fa5288972bc595e991cfabf1be51d28 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 23 Apr 2020 20:50:36 -0400 Subject: [PATCH 031/356] update detection images --- ios/RCTARKit.m | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 32ee724b..ac469c71 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -313,10 +313,30 @@ - (void)setDetectionImages:(NSArray*) detectionImages { ARWorldTrackingConfiguration *configuration = self.configuration; NSSet *detectionImagesSet = [[NSSet alloc] init]; for (id config in detectionImages) { - if(config[@"resourceGroupName"]) { - // TODO: allow bundle to be defined - detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage referenceImagesInGroupNamed:config[@"resourceGroupName"] bundle:nil]]; + // pass in image links + // create ui image https://medium.com/ar-tips-and-tricks/how-to-add-arkit-ar-reference-images-from-the-internet-on-the-fly-eae3bc55fe0c + if(config[@"arDetectionImages"]) { + for (id url in config[@"arDetectionImages"]) { + + self.loadImageFrom(url: URL(string: url)!) { (result) in + //SET YOUR IMAGE REAL WORLD WIDTH + arImage = ARReferenceImage(result.cgImage!, orientation: CGImagePropertyOrientation.up, physicalWidth: "0.1") + // SET YOUR IMAGE NAME + arImage.name = url; + // APPEND TO REFERENCE IMAGES + detectionImagesSet.insert(arImage); + // RESET TRACKING + self.resetTracking(); + } + + // configuration.detectionImages = newReferenceImages; + + } } + + // if(config[@"resourceGroupName"]) { + // detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage referenceImagesInGroupNamed:config[@"resourceGroupName"] bundle:nil]]; + // } } configuration.detectionImages = detectionImagesSet; [self resume];; From 31e7b4034a66c41794a112ad6abf88830d0a0679 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 23 Apr 2020 21:06:22 -0400 Subject: [PATCH 032/356] load iamge from --- ios/RCTARKit.m | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index ac469c71..5b6eef03 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -306,6 +306,20 @@ - (void)setWorldAlignment:(ARWorldAlignment)worldAlignment { [self resume]; } +func loadImageFrom(url: URL, completionHandler:@escaping(UIImage)->()) { + DispatchQueue.global().async { [weak self] in + if let data = try? Data(contentsOf: url) { + if let image = UIImage(data: data) { + DispatchQueue.main.async { + print("LOADED ASSET"); + completionHandler(image); + } + } + } + } +} + + #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 110300 - (void)setDetectionImages:(NSArray*) detectionImages { From 86de51547649caeb17fcd827df461829074405bf Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 23 Apr 2020 21:13:17 -0400 Subject: [PATCH 033/356] update url --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 5b6eef03..ba096f82 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -306,7 +306,7 @@ - (void)setWorldAlignment:(ARWorldAlignment)worldAlignment { [self resume]; } -func loadImageFrom(url: URL, completionHandler:@escaping(UIImage)->()) { +- (void) loadImageFrom(url: URL, completionHandler:@escaping(UIImage)->()) { DispatchQueue.global().async { [weak self] in if let data = try? Data(contentsOf: url) { if let image = UIImage(data: data) { From e70c36b744f899bdd7224af2b47972da1dc9d406 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 23 Apr 2020 21:56:49 -0400 Subject: [PATCH 034/356] create images on the fly --- ios/RCTARKit.m | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index ba096f82..9447586e 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -306,18 +306,7 @@ - (void)setWorldAlignment:(ARWorldAlignment)worldAlignment { [self resume]; } -- (void) loadImageFrom(url: URL, completionHandler:@escaping(UIImage)->()) { - DispatchQueue.global().async { [weak self] in - if let data = try? Data(contentsOf: url) { - if let image = UIImage(data: data) { - DispatchQueue.main.async { - print("LOADED ASSET"); - completionHandler(image); - } - } - } - } -} + #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 110300 @@ -332,18 +321,12 @@ - (void)setDetectionImages:(NSArray*) detectionImages { if(config[@"arDetectionImages"]) { for (id url in config[@"arDetectionImages"]) { - self.loadImageFrom(url: URL(string: url)!) { (result) in - //SET YOUR IMAGE REAL WORLD WIDTH - arImage = ARReferenceImage(result.cgImage!, orientation: CGImagePropertyOrientation.up, physicalWidth: "0.1") - // SET YOUR IMAGE NAME - arImage.name = url; - // APPEND TO REFERENCE IMAGES - detectionImagesSet.insert(arImage); - // RESET TRACKING - self.resetTracking(); - } - - // configuration.detectionImages = newReferenceImages; + NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"http://myurl/mypic.jpg"]]; + nextArImage = [UIImage imageWithData: imageData]; + customARReferenceImage = ARReferenceImage(nextArImage, orientation: CGImagePropertyOrientation.up, physicalWidth: 0.1) + + // configuration.detectionImages = newReferenceImages; + detectionImagesSet.insert(arImage); } } From 1653b20b2edf24922917e96c24c985a5258de27b Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 23 Apr 2020 22:06:13 -0400 Subject: [PATCH 035/356] update ur --- ios/RCTARKit.m | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 9447586e..9c6d63bb 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -322,11 +322,9 @@ - (void)setDetectionImages:(NSArray*) detectionImages { for (id url in config[@"arDetectionImages"]) { NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"http://myurl/mypic.jpg"]]; - nextArImage = [UIImage imageWithData: imageData]; - customARReferenceImage = ARReferenceImage(nextArImage, orientation: CGImagePropertyOrientation.up, physicalWidth: 0.1) - + cell.image = [UIImage imageWithData: imageData]; // configuration.detectionImages = newReferenceImages; - detectionImagesSet.insert(arImage); + detectionImagesSet.insert(ARReferenceImage(cell.image, orientation: CGImagePropertyOrientation.up, physicalWidth: 0.1)); } } From 5fbbce482d5e47295d0d3e2164b0289c877c2cea Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 23 Apr 2020 22:13:57 -0400 Subject: [PATCH 036/356] update url stuff --- ios/RCTARKit.m | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 9c6d63bb..b7c6543b 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -320,12 +320,9 @@ - (void)setDetectionImages:(NSArray*) detectionImages { // create ui image https://medium.com/ar-tips-and-tricks/how-to-add-arkit-ar-reference-images-from-the-internet-on-the-fly-eae3bc55fe0c if(config[@"arDetectionImages"]) { for (id url in config[@"arDetectionImages"]) { - NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"http://myurl/mypic.jpg"]]; - cell.image = [UIImage imageWithData: imageData]; // configuration.detectionImages = newReferenceImages; - detectionImagesSet.insert(ARReferenceImage(cell.image, orientation: CGImagePropertyOrientation.up, physicalWidth: 0.1)); - + detectionImagesSet.insert(ARReferenceImage([UIImage imageWithData: imageData], orientation: up, physicalWidth: 0.1)); } } From e9e43444ad236b408527d5e691a7789a3aa305da Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 23 Apr 2020 22:23:52 -0400 Subject: [PATCH 037/356] update image creation' --- ios/RCTARKit.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index b7c6543b..bfbf3901 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -322,7 +322,9 @@ - (void)setDetectionImages:(NSArray*) detectionImages { for (id url in config[@"arDetectionImages"]) { NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"http://myurl/mypic.jpg"]]; // configuration.detectionImages = newReferenceImages; - detectionImagesSet.insert(ARReferenceImage([UIImage imageWithData: imageData], orientation: up, physicalWidth: 0.1)); + NSData * newImage = [UIImage imageWithData: imageData]; + + // detectionImagesSet.insert(ARReferenceImage([UIImage imageWithData: imageData], orientation: up, physicalWidth: 0.1)); } } From 69020b97fcc30111bb64294be77dc5a0b3ca6e41 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 23 Apr 2020 22:30:28 -0400 Subject: [PATCH 038/356] update react antive arkit --- ios/RCTARKit.m | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index bfbf3901..e9cb7004 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -323,8 +323,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"http://myurl/mypic.jpg"]]; // configuration.detectionImages = newReferenceImages; NSData * newImage = [UIImage imageWithData: imageData]; - - // detectionImagesSet.insert(ARReferenceImage([UIImage imageWithData: imageData], orientation: up, physicalWidth: 0.1)); + NSData * arImage = ARReferenceImage([UIImage imageWithData: imageData], orientation: up, physicalWidth: 0.1); } } From 1826a5200a849008a386486bd68307e27c91b908 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Fri, 24 Apr 2020 12:04:55 -0400 Subject: [PATCH 039/356] use cig image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index e9cb7004..29cf174c 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -323,7 +323,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"http://myurl/mypic.jpg"]]; // configuration.detectionImages = newReferenceImages; NSData * newImage = [UIImage imageWithData: imageData]; - NSData * arImage = ARReferenceImage([UIImage imageWithData: imageData], orientation: up, physicalWidth: 0.1); + NSData * arImage = ARReferenceImage(newImage, orientation: up, physicalWidth: 0.1); } } From f021a9057cc76e82fcc76e7c8d74ee9f3fdc3e95 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Fri, 24 Apr 2020 12:16:06 -0400 Subject: [PATCH 040/356] create ar refernce iamge --- ios/RCTARKit.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 29cf174c..5d88245b 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -323,7 +323,9 @@ - (void)setDetectionImages:(NSArray*) detectionImages { NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"http://myurl/mypic.jpg"]]; // configuration.detectionImages = newReferenceImages; NSData * newImage = [UIImage imageWithData: imageData]; - NSData * arImage = ARReferenceImage(newImage, orientation: up, physicalWidth: 0.1); + NSData * arImage = [ARReferenceImage init: newImage physicalWidth: 0.1]; + + // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); } } From 13d809c5d11606114b044c38788e0991cb3726cd Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sat, 25 Apr 2020 10:41:44 -0400 Subject: [PATCH 041/356] clean up pinch functions and return image funcs --- ios/RCTARKit.m | 36 +++++++++++------------------------- 1 file changed, 11 insertions(+), 25 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 5d88245b..e08fc715 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -306,37 +306,23 @@ - (void)setWorldAlignment:(ARWorldAlignment)worldAlignment { [self resume]; } - - - #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 110300 - (void)setDetectionImages:(NSArray*) detectionImages { - - if (@available(iOS 11.3, *)) { - ARWorldTrackingConfiguration *configuration = self.configuration; - NSSet *detectionImagesSet = [[NSSet alloc] init]; - for (id config in detectionImages) { - // pass in image links - // create ui image https://medium.com/ar-tips-and-tricks/how-to-add-arkit-ar-reference-images-from-the-internet-on-the-fly-eae3bc55fe0c - if(config[@"arDetectionImages"]) { - for (id url in config[@"arDetectionImages"]) { - NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"http://myurl/mypic.jpg"]]; - // configuration.detectionImages = newReferenceImages; - NSData * newImage = [UIImage imageWithData: imageData]; - NSData * arImage = [ARReferenceImage init: newImage physicalWidth: 0.1]; - - // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); - } - } + if (@available(iOS 11.3, *)) { + ARWorldTrackingConfiguration *configuration = self.configuration; + NSSet *detectionImagesSet = [[NSSet alloc] init]; + for (id config in detectionImages) { - // if(config[@"resourceGroupName"]) { - // detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage referenceImagesInGroupNamed:config[@"resourceGroupName"] bundle:nil]]; - // } + if(config[@"resourceGroupName"]) { + detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage referenceImagesInGroupNamed:config[@"resourceGroupName"] bundle:nil]]; + } + + configuration.detectionImages = detectionImagesSet; + [self resume]; } - configuration.detectionImages = detectionImagesSet; - [self resume];; } } + #endif - (NSDictionary *)readCameraPosition { // deprecated From 54c2d32f7006f4e416636b8fcf9da6a7530bdaab Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 15:59:33 -0400 Subject: [PATCH 042/356] add detection images --- ios/RCTARKit.m | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index e08fc715..03d2e8f0 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -313,6 +313,15 @@ - (void)setDetectionImages:(NSArray*) detectionImages { NSSet *detectionImagesSet = [[NSSet alloc] init]; for (id config in detectionImages) { + for (id url in config[@"arDetectionImages"]) { + NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"http://myurl/mypic.jpg"]]; + // configuration.detectionImages = newReferenceImages; + NSData * newImage = [UIImage imageWithData: imageData]; + NSData * arImage = [ARReferenceImage init: newImage]; + // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); + } + + if(config[@"resourceGroupName"]) { detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage referenceImagesInGroupNamed:config[@"resourceGroupName"] bundle:nil]]; } From 05e379b7f77a0d000f3930adbec43d2534e39457 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 16:11:22 -0400 Subject: [PATCH 043/356] update refernce images --- ios/RCTARKit.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 03d2e8f0..b16955e4 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -317,7 +317,8 @@ - (void)setDetectionImages:(NSArray*) detectionImages { NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"http://myurl/mypic.jpg"]]; // configuration.detectionImages = newReferenceImages; NSData * newImage = [UIImage imageWithData: imageData]; - NSData * arImage = [ARReferenceImage init: newImage]; + detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage init: newImage]]; + // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); } From e6d2460cdd997b300a53dd72380365c71e757e25 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 16:18:12 -0400 Subject: [PATCH 044/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index b16955e4..da384ccf 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -317,7 +317,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"http://myurl/mypic.jpg"]]; // configuration.detectionImages = newReferenceImages; NSData * newImage = [UIImage imageWithData: imageData]; - detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage init: newImage]]; + detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage newImage]]; // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); } From 44f09f00c0b667b037ddf81d81092595d7d2b5df Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 16:23:41 -0400 Subject: [PATCH 045/356] add refernce image --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index da384ccf..277da791 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -316,8 +316,8 @@ - (void)setDetectionImages:(NSArray*) detectionImages { for (id url in config[@"arDetectionImages"]) { NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"http://myurl/mypic.jpg"]]; // configuration.detectionImages = newReferenceImages; - NSData * newImage = [UIImage imageWithData: imageData]; - detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage newImage]]; + // NSData * newImage = [UIImage imageWithData: imageData]; + detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage [UIImage imageWithData: imageData]]]; // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); } From a7944641b5c2ab367bcd221654fe9ccf3e93dbd2 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 16:41:51 -0400 Subject: [PATCH 046/356] add refernce image --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 277da791..9903d2b6 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -314,10 +314,10 @@ - (void)setDetectionImages:(NSArray*) detectionImages { for (id config in detectionImages) { for (id url in config[@"arDetectionImages"]) { - NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"http://myurl/mypic.jpg"]]; + NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"https://storage.googleapis.com/beswick-images/cc_catalogs/Beswick/lines/PRODUCTS/images/icons_medium/QDC-I.jpg"]]; // configuration.detectionImages = newReferenceImages; // NSData * newImage = [UIImage imageWithData: imageData]; - detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage [UIImage imageWithData: imageData]]]; + detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage init:[UIImage imageWithData: imageData]]]; // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); } From 78e3051449d503a1d6a85e2f64060474014efd2d Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 16:48:56 -0400 Subject: [PATCH 047/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 9903d2b6..33647dac 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -317,7 +317,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"https://storage.googleapis.com/beswick-images/cc_catalogs/Beswick/lines/PRODUCTS/images/icons_medium/QDC-I.jpg"]]; // configuration.detectionImages = newReferenceImages; // NSData * newImage = [UIImage imageWithData: imageData]; - detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage init:[UIImage imageWithData: imageData]]]; + detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage([UIImage imageWithData: imageData])]]; // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); } From 20ffb22622ec44438fe5066c2f01dcdda3e8cd23 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 16:54:51 -0400 Subject: [PATCH 048/356] add refernce image --- ios/RCTARKit.m | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 33647dac..200b4a1e 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -317,8 +317,9 @@ - (void)setDetectionImages:(NSArray*) detectionImages { NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"https://storage.googleapis.com/beswick-images/cc_catalogs/Beswick/lines/PRODUCTS/images/icons_medium/QDC-I.jpg"]]; // configuration.detectionImages = newReferenceImages; // NSData * newImage = [UIImage imageWithData: imageData]; - detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage([UIImage imageWithData: imageData])]]; - + // detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage([UIImage imageWithData: imageData])]]; + CGImageRef cgImage = [imageData CGImage]; + ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:a_physicalWidth[i]]; // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); } From 4c14d0b95d527da81049d733708c41082e72aaeb Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 17:00:47 -0400 Subject: [PATCH 049/356] add refernce image --- ios/RCTARKit.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 200b4a1e..0634564e 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -316,10 +316,10 @@ - (void)setDetectionImages:(NSArray*) detectionImages { for (id url in config[@"arDetectionImages"]) { NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"https://storage.googleapis.com/beswick-images/cc_catalogs/Beswick/lines/PRODUCTS/images/icons_medium/QDC-I.jpg"]]; // configuration.detectionImages = newReferenceImages; - // NSData * newImage = [UIImage imageWithData: imageData]; + NSData * newImage = [UIImage imageWithData: imageData]; // detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage([UIImage imageWithData: imageData])]]; - CGImageRef cgImage = [imageData CGImage]; - ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:a_physicalWidth[i]]; + CGImageRef cgImage = [newImage CGImage]; + ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); } From 9ce50166eaa9bc87620b6d9a486e7fc1c6e02abc Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 17:15:28 -0400 Subject: [PATCH 050/356] add refernce image --- ios/RCTARKit.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 0634564e..5a4abd5a 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -318,7 +318,8 @@ - (void)setDetectionImages:(NSArray*) detectionImages { // configuration.detectionImages = newReferenceImages; NSData * newImage = [UIImage imageWithData: imageData]; // detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage([UIImage imageWithData: imageData])]]; - CGImageRef cgImage = [newImage CGImage]; + + CGImageRef videoImage = [temporaryContext createCGImage:newImage]; ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); } From 1e27863ca1a8b70733bef3040326dd529bc5a496 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 17:20:25 -0400 Subject: [PATCH 051/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 5a4abd5a..8282e92c 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -319,7 +319,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { NSData * newImage = [UIImage imageWithData: imageData]; // detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage([UIImage imageWithData: imageData])]]; - CGImageRef videoImage = [temporaryContext createCGImage:newImage]; + CGImageRef cgImage = [createCGImage:newImage]; ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); } From 658ea5ef0aef0d813febdc955f46a8c8b5823952 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 17:25:53 -0400 Subject: [PATCH 052/356] add refernce image --- ios/RCTARKit.m | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 8282e92c..a49653bb 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -319,8 +319,10 @@ - (void)setDetectionImages:(NSArray*) detectionImages { NSData * newImage = [UIImage imageWithData: imageData]; // detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage([UIImage imageWithData: imageData])]]; - CGImageRef cgImage = [createCGImage:newImage]; - ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; + // CGImageRef cgImage = [temporaryContext createCGImage:newImage]; + CGImageRef imageRef = [newImage CGImage]; + + // ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); } From 9407c9dc97de4acc2e07df44b4193d0a65d345fb Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 17:30:31 -0400 Subject: [PATCH 053/356] add refernce image --- ios/RCTARKit.m | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index a49653bb..2d9912f7 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -316,11 +316,13 @@ - (void)setDetectionImages:(NSArray*) detectionImages { for (id url in config[@"arDetectionImages"]) { NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"https://storage.googleapis.com/beswick-images/cc_catalogs/Beswick/lines/PRODUCTS/images/icons_medium/QDC-I.jpg"]]; // configuration.detectionImages = newReferenceImages; - NSData * newImage = [UIImage imageWithData: imageData]; + // NSData * newImage = [UIImage imageWithData: imageData]; // detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage([UIImage imageWithData: imageData])]]; // CGImageRef cgImage = [temporaryContext createCGImage:newImage]; - CGImageRef imageRef = [newImage CGImage]; + UIImage* uiimage = [[UIImage alloc] initWithData:imageData]; + + CGImageRef imageRef = [newImage uiimage]; // ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); From 26e102cbcd7cb4a57f51d2d8272991cc3c4352f6 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 17:35:23 -0400 Subject: [PATCH 054/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 2d9912f7..c72f72ff 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -322,7 +322,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { // CGImageRef cgImage = [temporaryContext createCGImage:newImage]; UIImage* uiimage = [[UIImage alloc] initWithData:imageData]; - CGImageRef imageRef = [newImage uiimage]; + CGImageRef imageRef = [uiimage CGImage]; // ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); From 8a61e9d9ef7e666c781e338a752a445907d215f5 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 17:41:49 -0400 Subject: [PATCH 055/356] add refernce image --- ios/RCTARKit.m | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index c72f72ff..6776b9c6 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -322,9 +322,8 @@ - (void)setDetectionImages:(NSArray*) detectionImages { // CGImageRef cgImage = [temporaryContext createCGImage:newImage]; UIImage* uiimage = [[UIImage alloc] initWithData:imageData]; - CGImageRef imageRef = [uiimage CGImage]; - - // ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; + CGImageRef cgImage = [uiimage CGImage]; + ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); } From e564ba4783e0abc39803ebaede13592d6ddbf08b Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 17:48:40 -0400 Subject: [PATCH 056/356] add refernce image --- ios/RCTARKit.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 6776b9c6..9d0674dd 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -325,6 +325,8 @@ - (void)setDetectionImages:(NSArray*) detectionImages { CGImageRef cgImage = [uiimage CGImage]; ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); + detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:image; + } From 76178844140450bd8b8bf12ae9e2e4f1ec35ccd1 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 17:54:23 -0400 Subject: [PATCH 057/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 9d0674dd..95c111cc 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -325,7 +325,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { CGImageRef cgImage = [uiimage CGImage]; ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); - detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:image; + detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:image]; } From 6da7ed296e8d330290a1288b8f0e5cd1c6d1c3b2 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 18:11:02 -0400 Subject: [PATCH 058/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 95c111cc..20b1d19f 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -325,7 +325,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { CGImageRef cgImage = [uiimage CGImage]; ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); - detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:image]; + detectionImagesSet = [detectionImagesSet addObject:image]; } From ce6729cf62082df79614af2a74b06cbc2079981d Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 20:06:12 -0400 Subject: [PATCH 059/356] add refernce image --- ios/RCTARKit.m | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 20b1d19f..6d8163e9 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -325,7 +325,10 @@ - (void)setDetectionImages:(NSArray*) detectionImages { CGImageRef cgImage = [uiimage CGImage]; ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); - detectionImagesSet = [detectionImagesSet addObject:image]; + // detectionImagesSet = [detectionImagesSet addObject:image]; + + [detectionImagesSet addObject:image]; // Works with NSMutableArray + } From 9bfd11a16754a68832c155235db5dd2178d23211 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 20:11:42 -0400 Subject: [PATCH 060/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 6d8163e9..8cfc05e3 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -310,7 +310,7 @@ - (void)setWorldAlignment:(ARWorldAlignment)worldAlignment { - (void)setDetectionImages:(NSArray*) detectionImages { if (@available(iOS 11.3, *)) { ARWorldTrackingConfiguration *configuration = self.configuration; - NSSet *detectionImagesSet = [[NSSet alloc] init]; + NSMutableSet *detectionImagesSet = [[NSSet alloc] init]; for (id config in detectionImages) { for (id url in config[@"arDetectionImages"]) { From 36da0bf2af3f14ae1495dce584e5b7b3a200cf85 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 20:19:32 -0400 Subject: [PATCH 061/356] add refernce image --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 8cfc05e3..b45fd435 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -310,7 +310,7 @@ - (void)setWorldAlignment:(ARWorldAlignment)worldAlignment { - (void)setDetectionImages:(NSArray*) detectionImages { if (@available(iOS 11.3, *)) { ARWorldTrackingConfiguration *configuration = self.configuration; - NSMutableSet *detectionImagesSet = [[NSSet alloc] init]; + @property (retain) NSMutableSet *detectionImagesSet = [[NSSet alloc] init]; for (id config in detectionImages) { for (id url in config[@"arDetectionImages"]) { @@ -327,7 +327,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); // detectionImagesSet = [detectionImagesSet addObject:image]; - [detectionImagesSet addObject:image]; // Works with NSMutableArray + [detectionImagesSet addObject:image]; } From b334f40252c3fbd252f23abf35a709044ab8dd48 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 20:25:14 -0400 Subject: [PATCH 062/356] add refernce image --- ios/RCTARKit.m | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index b45fd435..fd4dd1be 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -310,7 +310,7 @@ - (void)setWorldAlignment:(ARWorldAlignment)worldAlignment { - (void)setDetectionImages:(NSArray*) detectionImages { if (@available(iOS 11.3, *)) { ARWorldTrackingConfiguration *configuration = self.configuration; - @property (retain) NSMutableSet *detectionImagesSet = [[NSSet alloc] init]; + NSMutableSet *detectionImagesSet = [[NSSet alloc] init]; for (id config in detectionImages) { for (id url in config[@"arDetectionImages"]) { @@ -327,8 +327,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); // detectionImagesSet = [detectionImagesSet addObject:image]; - [detectionImagesSet addObject:image]; - + detectionImagesSet = [detectionImagesSet addObject:image]; } From 175129b7f9303a06185aa71264c6003c962b0fc1 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 20:29:17 -0400 Subject: [PATCH 063/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index fd4dd1be..82e3f98d 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -310,7 +310,7 @@ - (void)setWorldAlignment:(ARWorldAlignment)worldAlignment { - (void)setDetectionImages:(NSArray*) detectionImages { if (@available(iOS 11.3, *)) { ARWorldTrackingConfiguration *configuration = self.configuration; - NSMutableSet *detectionImagesSet = [[NSSet alloc] init]; + NSSet *detectionImagesSet = [[NSSet alloc] init]; for (id config in detectionImages) { for (id url in config[@"arDetectionImages"]) { From 835a4bb0d8c31a1930636a7758fce9d9ea90ef73 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 20:34:25 -0400 Subject: [PATCH 064/356] add refernce image --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 82e3f98d..94d40306 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -310,7 +310,7 @@ - (void)setWorldAlignment:(ARWorldAlignment)worldAlignment { - (void)setDetectionImages:(NSArray*) detectionImages { if (@available(iOS 11.3, *)) { ARWorldTrackingConfiguration *configuration = self.configuration; - NSSet *detectionImagesSet = [[NSSet alloc] init]; + NSMutableSet *detectionImagesSet = [[NSSet alloc] init]; for (id config in detectionImages) { for (id url in config[@"arDetectionImages"]) { @@ -327,7 +327,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); // detectionImagesSet = [detectionImagesSet addObject:image]; - detectionImagesSet = [detectionImagesSet addObject:image]; + detectionImagesSet = [detectionImagesSet add:image]; } From 36cc185c6d2e5eae57abdd837d4a1970a70a5cb8 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 20:40:19 -0400 Subject: [PATCH 065/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 94d40306..97504544 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -327,7 +327,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); // detectionImagesSet = [detectionImagesSet addObject:image]; - detectionImagesSet = [detectionImagesSet add:image]; + detectionImagesSet = [detectionImagesSet adding:image]; } From 6ee838a6143924aa25058782dc2d89652b2bd318 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 20:44:27 -0400 Subject: [PATCH 066/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 97504544..5ea66dcd 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -310,7 +310,7 @@ - (void)setWorldAlignment:(ARWorldAlignment)worldAlignment { - (void)setDetectionImages:(NSArray*) detectionImages { if (@available(iOS 11.3, *)) { ARWorldTrackingConfiguration *configuration = self.configuration; - NSMutableSet *detectionImagesSet = [[NSSet alloc] init]; + NSSet *detectionImagesSet = [[NSSet alloc] init]; for (id config in detectionImages) { for (id url in config[@"arDetectionImages"]) { From 6b0a1cad2c3c5ca038afe6fd113a9915f01a84f9 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 20:49:57 -0400 Subject: [PATCH 067/356] add refernce image --- ios/RCTARKit.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 5ea66dcd..2c77151d 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -327,7 +327,8 @@ - (void)setDetectionImages:(NSArray*) detectionImages { // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); // detectionImagesSet = [detectionImagesSet addObject:image]; - detectionImagesSet = [detectionImagesSet adding:image]; + // detectionImagesSet = [detectionImagesSet adding:image]; + detectionImagesSet = [detectionImagesSet setByAddingObject:ARReferenceImage]; } From b069d4e7bf5865bbae7cb6f384ec99f101cdb64e Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 20:56:40 -0400 Subject: [PATCH 068/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 2c77151d..72cb5005 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -328,7 +328,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { // detectionImagesSet = [detectionImagesSet addObject:image]; // detectionImagesSet = [detectionImagesSet adding:image]; - detectionImagesSet = [detectionImagesSet setByAddingObject:ARReferenceImage]; + detectionImagesSet = [detectionImagesSet setByAddingObject:image]; } From aaa438c3488fea593439dc7269fc18a3eb92d852 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 21:06:49 -0400 Subject: [PATCH 069/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 72cb5005..ed168837 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -314,7 +314,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { for (id config in detectionImages) { for (id url in config[@"arDetectionImages"]) { - NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"https://storage.googleapis.com/beswick-images/cc_catalogs/Beswick/lines/PRODUCTS/images/icons_medium/QDC-I.jpg"]]; + NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @url]]; // configuration.detectionImages = newReferenceImages; // NSData * newImage = [UIImage imageWithData: imageData]; // detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage([UIImage imageWithData: imageData])]]; From d35b433826555d9f65a9fbba1bebf83c504865be Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 21:11:38 -0400 Subject: [PATCH 070/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index ed168837..3cab6cfe 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -314,7 +314,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { for (id config in detectionImages) { for (id url in config[@"arDetectionImages"]) { - NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @url]]; + NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: url]]; // configuration.detectionImages = newReferenceImages; // NSData * newImage = [UIImage imageWithData: imageData]; // detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage([UIImage imageWithData: imageData])]]; From 57231de9c9af920c5757c5e48c1eca3ae5218534 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 21:19:05 -0400 Subject: [PATCH 071/356] add refernce image --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 3cab6cfe..2e54fac3 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -316,11 +316,11 @@ - (void)setDetectionImages:(NSArray*) detectionImages { for (id url in config[@"arDetectionImages"]) { NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: url]]; // configuration.detectionImages = newReferenceImages; - // NSData * newImage = [UIImage imageWithData: imageData]; + NSData * newImage = [UIImage imageWithData: imageData]; // detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage([UIImage imageWithData: imageData])]]; // CGImageRef cgImage = [temporaryContext createCGImage:newImage]; - UIImage* uiimage = [[UIImage alloc] initWithData:imageData]; + UIImage* uiimage = [[UIImage alloc] initWithData:newImage]; CGImageRef cgImage = [uiimage CGImage]; ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; From 7088687e1f01ede9d96ecd0a281ee2c755008dde Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 21:29:00 -0400 Subject: [PATCH 072/356] add refernce image --- ios/RCTARKit.m | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 2e54fac3..6988ce79 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -314,15 +314,12 @@ - (void)setDetectionImages:(NSArray*) detectionImages { for (id config in detectionImages) { for (id url in config[@"arDetectionImages"]) { - NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: url]]; - // configuration.detectionImages = newReferenceImages; - NSData * newImage = [UIImage imageWithData: imageData]; - // detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage([UIImage imageWithData: imageData])]]; + NSData * imageData = [[NSData alloc] dataWithContentsOfURL: [NSURL URLWithString: url]]; - // CGImageRef cgImage = [temporaryContext createCGImage:newImage]; - UIImage* uiimage = [[UIImage alloc] initWithData:newImage]; + UIImage* uiimage = [[UIImage alloc] initWithData:imageData]; CGImageRef cgImage = [uiimage CGImage]; + ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); // detectionImagesSet = [detectionImagesSet addObject:image]; From 023849f0a9db4382cca83fc6f2f910ea87432741 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 21:36:23 -0400 Subject: [PATCH 073/356] add refernce image --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 6988ce79..a5a8f327 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -314,12 +314,12 @@ - (void)setDetectionImages:(NSArray*) detectionImages { for (id config in detectionImages) { for (id url in config[@"arDetectionImages"]) { - NSData * imageData = [[NSData alloc] dataWithContentsOfURL: [NSURL URLWithString: url]]; + NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: url]]; UIImage* uiimage = [[UIImage alloc] initWithData:imageData]; CGImageRef cgImage = [uiimage CGImage]; - + ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); // detectionImagesSet = [detectionImagesSet addObject:image]; From 80d3574f2c39a015b2f65ab285b19f93fd6b7505 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 21:46:16 -0400 Subject: [PATCH 074/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index a5a8f327..92812adf 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -310,7 +310,7 @@ - (void)setWorldAlignment:(ARWorldAlignment)worldAlignment { - (void)setDetectionImages:(NSArray*) detectionImages { if (@available(iOS 11.3, *)) { ARWorldTrackingConfiguration *configuration = self.configuration; - NSSet *detectionImagesSet = [[NSSet alloc] init]; + NSSet *detectionImagesSet = [[NSSet alloc] init setWithObject:@""]; for (id config in detectionImages) { for (id url in config[@"arDetectionImages"]) { From db9f497244e53ae3cc985f633461584b79e268d7 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 21:51:04 -0400 Subject: [PATCH 075/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 92812adf..98b057b8 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -310,7 +310,7 @@ - (void)setWorldAlignment:(ARWorldAlignment)worldAlignment { - (void)setDetectionImages:(NSArray*) detectionImages { if (@available(iOS 11.3, *)) { ARWorldTrackingConfiguration *configuration = self.configuration; - NSSet *detectionImagesSet = [[NSSet alloc] init setWithObject:@""]; + NSSet *detectionImagesSet = [[NSSet alloc] setWithObject:@""]; for (id config in detectionImages) { for (id url in config[@"arDetectionImages"]) { From ce55e910f6c9919a7efdb16b94a5f8498b801c82 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 21:57:16 -0400 Subject: [PATCH 076/356] add refernce image --- ios/RCTARKit.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 98b057b8..184d827f 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -310,7 +310,9 @@ - (void)setWorldAlignment:(ARWorldAlignment)worldAlignment { - (void)setDetectionImages:(NSArray*) detectionImages { if (@available(iOS 11.3, *)) { ARWorldTrackingConfiguration *configuration = self.configuration; - NSSet *detectionImagesSet = [[NSSet alloc] setWithObject:@""]; + // NSSet *detectionImagesSet = [[NSSet alloc] init]; + NSSet *detectionImagesSet = [NSSet detectionImagesSet]; + for (id config in detectionImages) { for (id url in config[@"arDetectionImages"]) { From 80ca31b7d19da4407e3f9e5dbb3f9184fbe19fc7 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 22:02:51 -0400 Subject: [PATCH 077/356] add refernce image --- ios/RCTARKit.m | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 184d827f..77fac1ca 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -310,9 +310,7 @@ - (void)setWorldAlignment:(ARWorldAlignment)worldAlignment { - (void)setDetectionImages:(NSArray*) detectionImages { if (@available(iOS 11.3, *)) { ARWorldTrackingConfiguration *configuration = self.configuration; - // NSSet *detectionImagesSet = [[NSSet alloc] init]; - NSSet *detectionImagesSet = [NSSet detectionImagesSet]; - + NSSet *detectionImagesSet = [[NSSet alloc] init]; for (id config in detectionImages) { for (id url in config[@"arDetectionImages"]) { @@ -323,11 +321,8 @@ - (void)setDetectionImages:(NSArray*) detectionImages { CGImageRef cgImage = [uiimage CGImage]; ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; - // NSData * arImage = ARReferenceImage.init(newImage, orientation: up, physicalWidth: 0.1); - // detectionImagesSet = [detectionImagesSet addObject:image]; - - // detectionImagesSet = [detectionImagesSet adding:image]; - detectionImagesSet = [detectionImagesSet setByAddingObject:image]; + + // detectionImagesSet = [detectionImagesSet setByAddingObject:image]; } From f2d7bec955487545b9e0f9a21e2bc28901af56a1 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 22:16:59 -0400 Subject: [PATCH 078/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 77fac1ca..15cdba1a 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -322,7 +322,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; - // detectionImagesSet = [detectionImagesSet setByAddingObject:image]; + detectionImagesSet = [detectionImagesSet adding:image]; } From 3ec9ac968a9552283c0a189959424e776f711187 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 22:24:47 -0400 Subject: [PATCH 079/356] add refernce image --- ios/RCTARKit.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 15cdba1a..e06ea25c 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -315,6 +315,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { for (id url in config[@"arDetectionImages"]) { NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: url]]; + NSLog(@"HELLO WORLD:"); UIImage* uiimage = [[UIImage alloc] initWithData:imageData]; @@ -322,7 +323,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; - detectionImagesSet = [detectionImagesSet adding:image]; + detectionImagesSet = [detectionImagesSet setByAddingObject:image]; } From eb8c50a900891080c2b6532287c0daffe244e7ff Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 22:33:06 -0400 Subject: [PATCH 080/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index e06ea25c..584821e6 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -323,7 +323,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; - detectionImagesSet = [detectionImagesSet setByAddingObject:image]; + // detectionImagesSet = [detectionImagesSet setByAddingObject:image]; } From 50b02b574009ab6a332f71c6c504130131cbb12c Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 22:41:29 -0400 Subject: [PATCH 081/356] add refernce image --- ios/RCTARKit.m | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 584821e6..c76e4560 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -315,14 +315,13 @@ - (void)setDetectionImages:(NSArray*) detectionImages { for (id url in config[@"arDetectionImages"]) { NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: url]]; - NSLog(@"HELLO WORLD:"); UIImage* uiimage = [[UIImage alloc] initWithData:imageData]; CGImageRef cgImage = [uiimage CGImage]; ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; - + NSLog(@"%@hello world man",image); // detectionImagesSet = [detectionImagesSet setByAddingObject:image]; } From 649ed778b6d14e9ce60e0c6382c75d62d60faa2c Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 22:48:40 -0400 Subject: [PATCH 082/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index c76e4560..8b6f22d8 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -320,7 +320,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { CGImageRef cgImage = [uiimage CGImage]; - ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; + ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp name:url physicalWidth:0.1]; NSLog(@"%@hello world man",image); // detectionImagesSet = [detectionImagesSet setByAddingObject:image]; From f078fc868d6bda7a970b72f7c4b1a7130a18a592 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 22:53:49 -0400 Subject: [PATCH 083/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 8b6f22d8..3fa7d60c 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -320,7 +320,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { CGImageRef cgImage = [uiimage CGImage]; - ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp name:url physicalWidth:0.1]; + ARReferenceImage *image = [[ARReferenceImage alloc] name:url initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; NSLog(@"%@hello world man",image); // detectionImagesSet = [detectionImagesSet setByAddingObject:image]; From 88a2ff3c04d3c34b51b7f5637a32685c1258e080 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 22:57:49 -0400 Subject: [PATCH 084/356] add refernce image --- ios/RCTARKit.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 3fa7d60c..0c375d03 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -320,7 +320,8 @@ - (void)setDetectionImages:(NSArray*) detectionImages { CGImageRef cgImage = [uiimage CGImage]; - ARReferenceImage *image = [[ARReferenceImage alloc] name:url initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; + ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; + image.name=url NSLog(@"%@hello world man",image); // detectionImagesSet = [detectionImagesSet setByAddingObject:image]; From c2ec85339921c00c6fea8989588c4102986a4ceb Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 23:01:42 -0400 Subject: [PATCH 085/356] add refernce image --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 0c375d03..62b853d6 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -321,8 +321,8 @@ - (void)setDetectionImages:(NSArray*) detectionImages { CGImageRef cgImage = [uiimage CGImage]; ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; - image.name=url - NSLog(@"%@hello world man",image); + image.name=url; + NSLog(@"%@hello world test man",image); // detectionImagesSet = [detectionImagesSet setByAddingObject:image]; } From 9dfdf57c362529404ac690406d003e602e3c0d88 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 23:08:33 -0400 Subject: [PATCH 086/356] add refernce image --- ios/RCTARKit.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 62b853d6..0d5b54ce 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -323,6 +323,8 @@ - (void)setDetectionImages:(NSArray*) detectionImages { ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; image.name=url; NSLog(@"%@hello world test man",image); + NSLog(@"%@hello world test woman",detectionImagesSet); + // detectionImagesSet = [detectionImagesSet setByAddingObject:image]; } From 6f44316bb8301b9fbd437cc739bcc8f3c41c48ed Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 26 Apr 2020 23:13:51 -0400 Subject: [PATCH 087/356] add refernce image --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 0d5b54ce..d7420844 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -325,7 +325,7 @@ - (void)setDetectionImages:(NSArray*) detectionImages { NSLog(@"%@hello world test man",image); NSLog(@"%@hello world test woman",detectionImagesSet); - // detectionImagesSet = [detectionImagesSet setByAddingObject:image]; + detectionImagesSet = [detectionImagesSet setByAddingObject:image]; } From 92bd5c56c69a51106b899c22a3d6b5f2cf75a5b0 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 29 Apr 2020 20:28:58 -0400 Subject: [PATCH 088/356] update image width --- ios/RCTARKit.m | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index d7420844..ae6d35f5 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -320,11 +320,8 @@ - (void)setDetectionImages:(NSArray*) detectionImages { CGImageRef cgImage = [uiimage CGImage]; - ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:0.1]; + ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:1]; image.name=url; - NSLog(@"%@hello world test man",image); - NSLog(@"%@hello world test woman",detectionImagesSet); - detectionImagesSet = [detectionImagesSet setByAddingObject:image]; } From 3d4a45293df50e853a691b1208a128f7276ce402 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 10 May 2020 13:30:35 -0400 Subject: [PATCH 089/356] updaet pinch --- ios/RCTARKit.m | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index ae6d35f5..a7b8352a 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -591,19 +591,36 @@ - (void)handleRotationFrom: (UIRotationGestureRecognizer *)recognizer { - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { - if( recognizer.state == UIGestureRecognizerStateBegan || - recognizer.state == UIGestureRecognizerStateChanged || - recognizer.state == UIGestureRecognizerStateEnded) { + // if( recognizer.state == UIGestureRecognizerStateBegan || + // recognizer.state == UIGestureRecognizerStateChanged || + // recognizer.state == UIGestureRecognizerStateEnded) { + + // if(self.onPinchGesture) { + // NSDictionary *pinchGesture = @{ + // @"scale": @(recognizer.scale), + // @"velocity": @(recognizer.velocity) + // }; + + // self.onPinchGesture(pinchGesture); + // } + // } - if(self.onPinchGesture) { + + if (recognizer.state == UIGestureRecognizerStateBegan || recognizer.state == UIGestureRecognizerStateChanged) { + recognizer.state.view?.transform = (recognizer.state.view?.transform. + scaledBy(x: recognizer.state.scale, y: recognizer.state.scale))! + recognizer.state.scale = 1.0 + + if(self.onPinchGesture) { NSDictionary *pinchGesture = @{ - @"scale": @(recognizer.scale), + @"scale": @(recognizer.state.scale), @"velocity": @(recognizer.velocity) }; self.onPinchGesture(pinchGesture); } - } + } + } From b4a004ae099914cc177713e67fe0fd27de675ae8 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 10 May 2020 13:40:16 -0400 Subject: [PATCH 090/356] update pinch gesture --- ios/RCTARKit.m | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index a7b8352a..ded6f94a 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -604,22 +604,11 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { // self.onPinchGesture(pinchGesture); // } // } - - - if (recognizer.state == UIGestureRecognizerStateBegan || recognizer.state == UIGestureRecognizerStateChanged) { - recognizer.state.view?.transform = (recognizer.state.view?.transform. - scaledBy(x: recognizer.state.scale, y: recognizer.state.scale))! - recognizer.state.scale = 1.0 - - if(self.onPinchGesture) { - NSDictionary *pinchGesture = @{ - @"scale": @(recognizer.state.scale), - @"velocity": @(recognizer.velocity) - }; - - self.onPinchGesture(pinchGesture); - } - } + if gestureRecognizer.state == .began || gestureRecognizer.state == .changed { + gestureRecognizer.view?.transform = (gestureRecognizer.view?.transform. + scaledBy(x: gestureRecognizer.scale, y: gestureRecognizer.scale))! + gestureRecognizer.scale = 1.0 + }} } From db259610879401537edf604f1c6156fba6e39e87 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 10 May 2020 13:45:33 -0400 Subject: [PATCH 091/356] update pinch gesture --- ios/RCTARKit.m | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index ded6f94a..69b1d6eb 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -608,8 +608,7 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { gestureRecognizer.view?.transform = (gestureRecognizer.view?.transform. scaledBy(x: gestureRecognizer.scale, y: gestureRecognizer.scale))! gestureRecognizer.scale = 1.0 - }} - + } } From 8eba7045bafff9ac2e825488418a257616d6fabe Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 10 May 2020 13:51:59 -0400 Subject: [PATCH 092/356] update status of ui pinch --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 69b1d6eb..b1393c7d 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -589,7 +589,7 @@ - (void)handleRotationFrom: (UIRotationGestureRecognizer *)recognizer { } -- (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { +- (void)handlePinchFrom: (UIPinchGestureRecognizer *)gestureRecognizer { // if( recognizer.state == UIGestureRecognizerStateBegan || // recognizer.state == UIGestureRecognizerStateChanged || @@ -604,7 +604,7 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { // self.onPinchGesture(pinchGesture); // } // } - if gestureRecognizer.state == .began || gestureRecognizer.state == .changed { + if (gestureRecognizer.state == .began || gestureRecognizer.state == .changed) { gestureRecognizer.view?.transform = (gestureRecognizer.view?.transform. scaledBy(x: gestureRecognizer.scale, y: gestureRecognizer.scale))! gestureRecognizer.scale = 1.0 From 9f4cbd05d3159f29b524c5cbca7053736dc0e3d1 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 10 May 2020 13:56:05 -0400 Subject: [PATCH 093/356] update status of ui pinch --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index b1393c7d..12be6c26 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -604,8 +604,8 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)gestureRecognizer { // self.onPinchGesture(pinchGesture); // } // } - if (gestureRecognizer.state == .began || gestureRecognizer.state == .changed) { - gestureRecognizer.view?.transform = (gestureRecognizer.view?.transform. + if (gestureRecognizer.state == UIGestureRecognizerStateBegan || gestureRecognizer.state == UIGestureRecognizerStateChanged) { + gestureRecognizer.view.transform = (gestureRecognizer.view.transform. scaledBy(x: gestureRecognizer.scale, y: gestureRecognizer.scale))! gestureRecognizer.scale = 1.0 } From 792a47a9d5612a2d78df8b951f578a1ad312edc8 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 10 May 2020 14:03:36 -0400 Subject: [PATCH 094/356] update uipinch --- ios/RCTARKit.m | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 12be6c26..e479ca23 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -589,26 +589,25 @@ - (void)handleRotationFrom: (UIRotationGestureRecognizer *)recognizer { } -- (void)handlePinchFrom: (UIPinchGestureRecognizer *)gestureRecognizer { - - // if( recognizer.state == UIGestureRecognizerStateBegan || - // recognizer.state == UIGestureRecognizerStateChanged || - // recognizer.state == UIGestureRecognizerStateEnded) { - - // if(self.onPinchGesture) { - // NSDictionary *pinchGesture = @{ - // @"scale": @(recognizer.scale), - // @"velocity": @(recognizer.velocity) - // }; - - // self.onPinchGesture(pinchGesture); - // } - // } - if (gestureRecognizer.state == UIGestureRecognizerStateBegan || gestureRecognizer.state == UIGestureRecognizerStateChanged) { - gestureRecognizer.view.transform = (gestureRecognizer.view.transform. - scaledBy(x: gestureRecognizer.scale, y: gestureRecognizer.scale))! - gestureRecognizer.scale = 1.0 - } +- (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { + + if( recognizer.state == UIGestureRecognizerStateBegan || + recognizer.state == UIGestureRecognizerStateChanged || + recognizer.state == UIGestureRecognizerStateEnded) { + + recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); + recognizer.scale = 1; + + // if(self.onPinchGesture) { + // NSDictionary *pinchGesture = @{ + // @"scale": @(recognizer.scale), + // @"velocity": @(recognizer.velocity) + // }; + + // self.onPinchGesture(pinchGesture); + // } + } + } From b801f6664e3dda7296db5b553c8b5b00d3a80a19 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 10 May 2020 14:15:56 -0400 Subject: [PATCH 095/356] update scale for pinch --- ios/RCTARKit.m | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index e479ca23..10925b0d 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -595,17 +595,17 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { recognizer.state == UIGestureRecognizerStateChanged || recognizer.state == UIGestureRecognizerStateEnded) { - recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); - recognizer.scale = 1; + // recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); + // recognizer.scale = 1; - // if(self.onPinchGesture) { - // NSDictionary *pinchGesture = @{ - // @"scale": @(recognizer.scale), - // @"velocity": @(recognizer.velocity) - // }; + if(self.onPinchGesture) { + NSDictionary *pinchGesture = @{ + @"scale": @(CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale)), + @"velocity": @(recognizer.velocity) + }; - // self.onPinchGesture(pinchGesture); - // } + self.onPinchGesture(pinchGesture); + } } } From a6ce64684b5dc5264ee2861780d1852a2ce91465 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 10 May 2020 14:23:01 -0400 Subject: [PATCH 096/356] update gesture handlers --- ios/RCTARKit.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 10925b0d..132fabec 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -595,12 +595,12 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { recognizer.state == UIGestureRecognizerStateChanged || recognizer.state == UIGestureRecognizerStateEnded) { - // recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); - // recognizer.scale = 1; + recognizer.state.scale = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); + recognizer.scale = 1; if(self.onPinchGesture) { NSDictionary *pinchGesture = @{ - @"scale": @(CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale)), + @"scale": @(recognizer.state.scale), @"velocity": @(recognizer.velocity) }; From 3aa46947e5e1794a716c21e6cdb328cce264d28d Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 10 May 2020 14:31:25 -0400 Subject: [PATCH 097/356] update gesture handlers --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 132fabec..8d89abc8 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -595,12 +595,12 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { recognizer.state == UIGestureRecognizerStateChanged || recognizer.state == UIGestureRecognizerStateEnded) { - recognizer.state.scale = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); + float *nextScale = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); recognizer.scale = 1; if(self.onPinchGesture) { NSDictionary *pinchGesture = @{ - @"scale": @(recognizer.state.scale), + @"scale": @(nextScale), @"velocity": @(recognizer.velocity) }; From df7248a47fe522de2367c0966f979a6add8b4dea Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 10 May 2020 14:35:13 -0400 Subject: [PATCH 098/356] update gesture handlers --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 8d89abc8..4203dc5b 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -595,7 +595,7 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { recognizer.state == UIGestureRecognizerStateChanged || recognizer.state == UIGestureRecognizerStateEnded) { - float *nextScale = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); + nextScale = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); recognizer.scale = 1; if(self.onPinchGesture) { From b7822bea125abc7e9687fc25515356ed352916ce Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 10 May 2020 14:40:01 -0400 Subject: [PATCH 099/356] update scale --- ios/RCTARKit.m | 1 + 1 file changed, 1 insertion(+) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 4203dc5b..c7b6e4d6 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -594,6 +594,7 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { if( recognizer.state == UIGestureRecognizerStateBegan || recognizer.state == UIGestureRecognizerStateChanged || recognizer.state == UIGestureRecognizerStateEnded) { + @property (nonatomic) float nextScale; nextScale = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); recognizer.scale = 1; From fcba3ade6fb8aed8726287024b20872e0352811a Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 10 May 2020 14:44:25 -0400 Subject: [PATCH 100/356] update scale --- ios/RCTARKit.m | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index c7b6e4d6..2d52468f 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -594,9 +594,8 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { if( recognizer.state == UIGestureRecognizerStateBegan || recognizer.state == UIGestureRecognizerStateChanged || recognizer.state == UIGestureRecognizerStateEnded) { - @property (nonatomic) float nextScale; - nextScale = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); + float nextScale = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); recognizer.scale = 1; if(self.onPinchGesture) { From 2da7bf6b81608bf556a7fc3f2510437dbff849b0 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 10 May 2020 22:06:08 -0400 Subject: [PATCH 101/356] update pinch --- ios/RCTARKit.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 2d52468f..d0d0a17d 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -595,12 +595,12 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { recognizer.state == UIGestureRecognizerStateChanged || recognizer.state == UIGestureRecognizerStateEnded) { - float nextScale = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); - recognizer.scale = 1; + recognizer.scale = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); + // recognizer.scale = 1; if(self.onPinchGesture) { NSDictionary *pinchGesture = @{ - @"scale": @(nextScale), + @"scale": @(recognizer.scale), @"velocity": @(recognizer.velocity) }; From 08c30da8391ce3217bd1fd4a50d5c8616aa0a0b2 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 10 May 2020 22:12:06 -0400 Subject: [PATCH 102/356] update pinch --- ios/RCTARKit.m | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index d0d0a17d..e08a2bf3 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -595,13 +595,14 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { recognizer.state == UIGestureRecognizerStateChanged || recognizer.state == UIGestureRecognizerStateEnded) { - recognizer.scale = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); - // recognizer.scale = 1; + // recognizer.scale = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); + // // recognizer.scale = 1; if(self.onPinchGesture) { NSDictionary *pinchGesture = @{ @"scale": @(recognizer.scale), - @"velocity": @(recognizer.velocity) + @"velocity": @(recognizer.velocity), + @"transform": @(recognizer.view.transform) }; self.onPinchGesture(pinchGesture); From 7e2183335a2cb8afb69b2129341d847a5b9dd9b0 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 10 May 2020 22:21:24 -0400 Subject: [PATCH 103/356] update pinch --- ios/RCTARKit.m | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index e08a2bf3..4c7a0f57 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -591,14 +591,28 @@ - (void)handleRotationFrom: (UIRotationGestureRecognizer *)recognizer { - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { - if( recognizer.state == UIGestureRecognizerStateBegan || - recognizer.state == UIGestureRecognizerStateChanged || - recognizer.state == UIGestureRecognizerStateEnded) { + // if( recognizer.state == UIGestureRecognizerStateBegan || + // recognizer.state == UIGestureRecognizerStateChanged || + // recognizer.state == UIGestureRecognizerStateEnded) { + + // // recognizer.scale = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); + // // // recognizer.scale = 1; - // recognizer.scale = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); - // // recognizer.scale = 1; + // if(self.onPinchGesture) { + // NSDictionary *pinchGesture = @{ + // @"scale": @(recognizer.scale), + // @"velocity": @(recognizer.velocity), + // @"transform": @(recognizer.view.transform) + // }; - if(self.onPinchGesture) { + // self.onPinchGesture(pinchGesture); + // } + // } + + + if recognizer.state == UIGestureRecognizerStateBegan || recognizer.state == UIGestureRecognizerStateChanged { + recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); + if(self.onPinchGesture) { NSDictionary *pinchGesture = @{ @"scale": @(recognizer.scale), @"velocity": @(recognizer.velocity), @@ -607,7 +621,8 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { self.onPinchGesture(pinchGesture); } - } + recognizer.scale = 1.0 + }} } From 0dc917aa3b5759060492fde7724300cbc72f0c2a Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 10 May 2020 22:25:26 -0400 Subject: [PATCH 104/356] update pinch --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 4c7a0f57..d461091e 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -610,7 +610,7 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { // } - if recognizer.state == UIGestureRecognizerStateBegan || recognizer.state == UIGestureRecognizerStateChanged { + if (recognizer.state == UIGestureRecognizerStateBegan || recognizer.state == UIGestureRecognizerStateChanged) { recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); if(self.onPinchGesture) { NSDictionary *pinchGesture = @{ From f18e9fc048c43ffd33eebbafe4699fc41b2fe4c8 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 10 May 2020 23:02:36 -0400 Subject: [PATCH 105/356] update pinch --- ios/RCTARKit.m | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index d461091e..6775db52 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -615,8 +615,7 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { if(self.onPinchGesture) { NSDictionary *pinchGesture = @{ @"scale": @(recognizer.scale), - @"velocity": @(recognizer.velocity), - @"transform": @(recognizer.view.transform) + @"velocity": @(recognizer.velocity) }; self.onPinchGesture(pinchGesture); From 76f88c2ec108ca303c3f988a6bed2735d8d2adfd Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 10 May 2020 23:07:02 -0400 Subject: [PATCH 106/356] update pinch --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 6775db52..8d9af633 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -620,8 +620,8 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { self.onPinchGesture(pinchGesture); } - recognizer.scale = 1.0 - }} + recognizer.scale = 1.0; + } } From 01b6f6327496759c0f1639fefdfa87a999950d45 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 11 May 2020 19:25:43 -0400 Subject: [PATCH 107/356] update pinch --- ios/RCTARKit.m | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 8d9af633..a505349c 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -591,37 +591,36 @@ - (void)handleRotationFrom: (UIRotationGestureRecognizer *)recognizer { - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { - // if( recognizer.state == UIGestureRecognizerStateBegan || - // recognizer.state == UIGestureRecognizerStateChanged || - // recognizer.state == UIGestureRecognizerStateEnded) { - - // // recognizer.scale = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); - // // // recognizer.scale = 1; - - // if(self.onPinchGesture) { - // NSDictionary *pinchGesture = @{ - // @"scale": @(recognizer.scale), - // @"velocity": @(recognizer.velocity), - // @"transform": @(recognizer.view.transform) - // }; - - // self.onPinchGesture(pinchGesture); - // } - // } + if( recognizer.state == UIGestureRecognizerStateBegan || + recognizer.state == UIGestureRecognizerStateChanged || + recognizer.state == UIGestureRecognizerStateEnded) { + // recognizer.scale = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); + // // recognizer.scale = 1; - if (recognizer.state == UIGestureRecognizerStateBegan || recognizer.state == UIGestureRecognizerStateChanged) { - recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); - if(self.onPinchGesture) { + if(self.onPinchGesture) { NSDictionary *pinchGesture = @{ @"scale": @(recognizer.scale), - @"velocity": @(recognizer.velocity) + @"velocity": @(recognizer.velocity), }; self.onPinchGesture(pinchGesture); } - recognizer.scale = 1.0; - } + } + + +// if (recognizer.state == UIGestureRecognizerStateBegan || recognizer.state == UIGestureRecognizerStateChanged) { +// recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); +// if(self.onPinchGesture) { +// NSDictionary *pinchGesture = @{ +// @"scale": @(recognizer.scale), +// @"velocity": @(recognizer.velocity) +// }; + +// self.onPinchGesture(pinchGesture); +// } +// recognizer.scale = 1.0; +// } } From 5c8315296b25cf183c900139c20daf366d39333d Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 11 May 2020 19:47:55 -0400 Subject: [PATCH 108/356] update dynmaic images --- ios/RCTARKit.m | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index a505349c..ae6d35f5 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -595,33 +595,15 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { recognizer.state == UIGestureRecognizerStateChanged || recognizer.state == UIGestureRecognizerStateEnded) { - // recognizer.scale = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); - // // recognizer.scale = 1; - if(self.onPinchGesture) { NSDictionary *pinchGesture = @{ @"scale": @(recognizer.scale), - @"velocity": @(recognizer.velocity), + @"velocity": @(recognizer.velocity) }; self.onPinchGesture(pinchGesture); } } - - -// if (recognizer.state == UIGestureRecognizerStateBegan || recognizer.state == UIGestureRecognizerStateChanged) { -// recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); -// if(self.onPinchGesture) { -// NSDictionary *pinchGesture = @{ -// @"scale": @(recognizer.scale), -// @"velocity": @(recognizer.velocity) -// }; - -// self.onPinchGesture(pinchGesture); -// } -// recognizer.scale = 1.0; -// } - } From 5dadd20ffd7cf868f748869f425e8d8172eddfa2 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 18 May 2020 20:48:50 -0400 Subject: [PATCH 109/356] add pan gesture --- ARKit.js | 2 ++ ios/RCTARKit.h | 1 + ios/RCTARKit.m | 25 ++++++++++++++++++++++--- ios/RCTARKitManager.m | 1 + 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/ARKit.js b/ARKit.js index d5f48ce6..1503c361 100644 --- a/ARKit.js +++ b/ARKit.js @@ -60,6 +60,7 @@ class ARKit extends Component { 'onTapOnPlaneNoExtent', 'onRotationGesture', 'onPinchGesture', + 'onPanGesture', 'onPlaneDetected', 'onPlaneRemoved', 'onPlaneUpdated', @@ -242,6 +243,7 @@ ARKit.propTypes = { onTapOnPlaneNoExtent: PropTypes.func, onRotationGesture: PropTypes.func, onPinchGesture: PropTypes.func, + onPanGesture: PropTypes.func, onEvent: PropTypes.func, isMounted: PropTypes.func, isInitialized: PropTypes.func, diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index cfdc3500..435cf3f8 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -66,6 +66,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error @property (nonatomic, copy) RCTBubblingEventBlock onRotationGesture; @property (nonatomic, copy) RCTBubblingEventBlock onPinchGesture; +@property (nonatomic, copy) RCTBubblingEventBlock onPanGesture; @property (nonatomic, copy) RCTBubblingEventBlock onEvent; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index ae6d35f5..9fb23f07 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -83,6 +83,11 @@ - (instancetype)initWithARView:(ARSCNView *)arView { UIPinchGestureRecognizer *pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinchFrom:)]; [self.arView addGestureRecognizer:pinchGestureRecognizer]; + UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)]; + [self.arView addGestureRecognizer:panGestureRecognizer]; + + + self.touchDelegates = [NSMutableArray array]; self.rendererDelegates = [NSMutableArray array]; self.sessionDelegates = [NSMutableArray array]; @@ -417,9 +422,6 @@ - (UIImage *)getSnapshot:(NSDictionary *)selection { } - - - - (UIImage *)getSnapshotCamera:(NSDictionary *)selection { CVPixelBufferRef pixelBuffer = self.arView.session.currentFrame.capturedImage; CIImage *ciImage = [CIImage imageWithCVPixelBuffer:pixelBuffer]; @@ -607,6 +609,23 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { } +- (void)handlePan:(UIPanGestureRecognizer *)recognizer { + + if( recognizer.state == UIGestureRecognizerStateBegan || + recognizer.state == UIGestureRecognizerStateChanged || + recognizer.state == UIGestureRecognizerStateEnded) { + + if(self.onPanGesture) { + CGPoint translation = [recognizer translationInView:self.view]; + NSDictionary *panGesture = @{ + @"x": @(translation.x), + @"y": @(translation.y) + }; + self.onPanGesture(panGesture); + } + } +} + #pragma mark - ARSCNViewDelegate - (void)renderer:(id)renderer updateAtTime:(NSTimeInterval)time { diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 90736e37..7ea538d8 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -190,6 +190,7 @@ - (NSDictionary *)constantsToExport RCT_EXPORT_VIEW_PROPERTY(onTapOnPlaneNoExtent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onRotationGesture, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onPinchGesture, RCTBubblingEventBlock) +RCT_EXPORT_VIEW_PROPERTY(onPanGesture, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onEvent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onARKitError, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(worldMap, NSObject); From ab9fcbb9a1b1713bfafc1e1eb86bee7a6d4a08d7 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 18 May 2020 20:55:36 -0400 Subject: [PATCH 110/356] add arview --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 9fb23f07..942e614e 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -616,7 +616,7 @@ - (void)handlePan:(UIPanGestureRecognizer *)recognizer { recognizer.state == UIGestureRecognizerStateEnded) { if(self.onPanGesture) { - CGPoint translation = [recognizer translationInView:self.view]; + CGPoint translation = [recognizer translationInView:self.arView]; NSDictionary *panGesture = @{ @"x": @(translation.x), @"y": @(translation.y) From 251d6dc1fbadbac3a8d017a8fdf62c79a9c8210e Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 18 May 2020 21:41:02 -0400 Subject: [PATCH 111/356] add maximum numner of touches --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 942e614e..5ec3689e 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -84,10 +84,10 @@ - (instancetype)initWithARView:(ARSCNView *)arView { [self.arView addGestureRecognizer:pinchGestureRecognizer]; UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)]; + [panGestureRecognizer setMinimumNumberOfTouches:1]; + [panGestureRecognizer setMaximumNumberOfTouches:1]; [self.arView addGestureRecognizer:panGestureRecognizer]; - - self.touchDelegates = [NSMutableArray array]; self.rendererDelegates = [NSMutableArray array]; self.sessionDelegates = [NSMutableArray array]; From 16a39cd1157c853ca3f7c85052ef3b2d8020fe1a Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 18 May 2020 22:13:22 -0400 Subject: [PATCH 112/356] add maximum numner of touches --- ios/RCTARKit.m | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 5ec3689e..999f43e3 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -617,9 +617,19 @@ - (void)handlePan:(UIPanGestureRecognizer *)recognizer { if(self.onPanGesture) { CGPoint translation = [recognizer translationInView:self.arView]; + CGPoint velocity = [recognizer velocityInView:self.view]; + CGFloat magnitude = sqrtf((velocity.x * velocity.x) + (velocity.y * velocity.y)); + CGFloat slideMult = magnitude / 200; + NSLog(@"magnitude: %f, slideMult: %f", magnitude, slideMult); + + float slideFactor = 0.1 * slideMult; // Increase for more of a slide + CGPoint finalPoint = CGPointMake(recognizer.view.center.x + (velocity.x * slideFactor), + recognizer.view.center.y + (velocity.y * slideFactor)); + finalPoint.x = MIN(MAX(finalPoint.x, 0), self.view.bounds.size.width); + finalPoint.y = MIN(MAX(finalPoint.y, 0), self.view.bounds.size.height); NSDictionary *panGesture = @{ - @"x": @(translation.x), - @"y": @(translation.y) + @"x": @(finalPoint.x), + @"y": @(finalPoint.y) }; self.onPanGesture(panGesture); } From f891699373c28760a0574083783c627b626da591 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 18 May 2020 22:19:52 -0400 Subject: [PATCH 113/356] update to arview --- ios/RCTARKit.m | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 999f43e3..34e38fd8 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -617,16 +617,16 @@ - (void)handlePan:(UIPanGestureRecognizer *)recognizer { if(self.onPanGesture) { CGPoint translation = [recognizer translationInView:self.arView]; - CGPoint velocity = [recognizer velocityInView:self.view]; + CGPoint velocity = [recognizer velocityInView:self.arView]; CGFloat magnitude = sqrtf((velocity.x * velocity.x) + (velocity.y * velocity.y)); CGFloat slideMult = magnitude / 200; NSLog(@"magnitude: %f, slideMult: %f", magnitude, slideMult); float slideFactor = 0.1 * slideMult; // Increase for more of a slide - CGPoint finalPoint = CGPointMake(recognizer.view.center.x + (velocity.x * slideFactor), - recognizer.view.center.y + (velocity.y * slideFactor)); - finalPoint.x = MIN(MAX(finalPoint.x, 0), self.view.bounds.size.width); - finalPoint.y = MIN(MAX(finalPoint.y, 0), self.view.bounds.size.height); + CGPoint finalPoint = CGPointMake(recognizer.arView.center.x + (velocity.x * slideFactor), + recognizer.arView.center.y + (velocity.y * slideFactor)); + finalPoint.x = MIN(MAX(finalPoint.x, 0), self.arView.bounds.size.width); + finalPoint.y = MIN(MAX(finalPoint.y, 0), self.arView.bounds.size.height); NSDictionary *panGesture = @{ @"x": @(finalPoint.x), @"y": @(finalPoint.y) From 2fea16cad1276b7cbf4c3d8a5313a84abf653e0d Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 18 May 2020 22:26:27 -0400 Subject: [PATCH 114/356] update arview --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 34e38fd8..70962a63 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -623,8 +623,8 @@ - (void)handlePan:(UIPanGestureRecognizer *)recognizer { NSLog(@"magnitude: %f, slideMult: %f", magnitude, slideMult); float slideFactor = 0.1 * slideMult; // Increase for more of a slide - CGPoint finalPoint = CGPointMake(recognizer.arView.center.x + (velocity.x * slideFactor), - recognizer.arView.center.y + (velocity.y * slideFactor)); + CGPoint finalPoint = CGPointMake(recognizer.view.center.x + (velocity.x * slideFactor), + recognizer.view.center.y + (velocity.y * slideFactor)); finalPoint.x = MIN(MAX(finalPoint.x, 0), self.arView.bounds.size.width); finalPoint.y = MIN(MAX(finalPoint.y, 0), self.arView.bounds.size.height); NSDictionary *panGesture = @{ From d5faf02f1e44b8a9ee8fdf703cf295a1849b936c Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 18 May 2020 22:34:43 -0400 Subject: [PATCH 115/356] upadte pan handler --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 70962a63..8d22a1d3 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -625,8 +625,8 @@ - (void)handlePan:(UIPanGestureRecognizer *)recognizer { float slideFactor = 0.1 * slideMult; // Increase for more of a slide CGPoint finalPoint = CGPointMake(recognizer.view.center.x + (velocity.x * slideFactor), recognizer.view.center.y + (velocity.y * slideFactor)); - finalPoint.x = MIN(MAX(finalPoint.x, 0), self.arView.bounds.size.width); - finalPoint.y = MIN(MAX(finalPoint.y, 0), self.arView.bounds.size.height); + // finalPoint.x = MIN(MAX(finalPoint.x, 0), self.arView.bounds.size.width); + // finalPoint.y = MIN(MAX(finalPoint.y, 0), self.arView.bounds.size.height); NSDictionary *panGesture = @{ @"x": @(finalPoint.x), @"y": @(finalPoint.y) From 0b85ac4e9d0fdd1e4b12fd8be561dac21c832281 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 18 May 2020 22:50:07 -0400 Subject: [PATCH 116/356] update gesture rec --- ios/RCTARKit.m | 57 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 17 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 8d22a1d3..d740e195 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -609,27 +609,50 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { } -- (void)handlePan:(UIPanGestureRecognizer *)recognizer { +- (void)handlePan:(UIPanGestureRecognizer *)sender { + [self.view bringSubviewToFront:sender.view]; + CGPoint translatedPoint = [sender translationInView:sender.view.superview]; + + if (sender.state == UIGestureRecognizerStateBegan) { + firstX = sender.view.center.x; + firstY = sender.view.center.y; + } + + + translatedPoint = CGPointMake(sender.view.center.x+translatedPoint.x, sender.view.center.y+translatedPoint.y); + + [sender.view setCenter:translatedPoint]; + [sender setTranslation:CGPointZero inView:sender.view]; - if( recognizer.state == UIGestureRecognizerStateBegan || - recognizer.state == UIGestureRecognizerStateChanged || - recognizer.state == UIGestureRecognizerStateEnded) { + if( sender.state == UIGestureRecognizerStateBegan || + sender.state == UIGestureRecognizerStateChanged || + sender.state == UIGestureRecognizerStateEnded) { + CGFloat velocityX = (0.2*[sender velocityInView:self.view].x); + CGFloat velocityY = (0.2*[sender velocityInView:self.view].y); + + CGFloat finalX = translatedPoint.x + velocityX; + CGFloat finalY = translatedPoint.y + velocityY;// translatedPoint.y + (.35*[(UIPanGestureRecognizer*)sender velocityInView:self.view].y); + + if (finalX < 0) { + finalX = 0; + } else if (finalX > self.view.frame.size.width) { + finalX = self.view.frame.size.width; + } + + if (finalY < 50) { // to avoid status bar + finalY = 50; + } else if (finalY > self.view.frame.size.height) { + finalY = self.view.frame.size.height; + } + + CGFloat animationDuration = (ABS(velocityX)*.0002)+.2; + NSLog(@"the duration is: %f", animationDuration); if(self.onPanGesture) { - CGPoint translation = [recognizer translationInView:self.arView]; - CGPoint velocity = [recognizer velocityInView:self.arView]; - CGFloat magnitude = sqrtf((velocity.x * velocity.x) + (velocity.y * velocity.y)); - CGFloat slideMult = magnitude / 200; - NSLog(@"magnitude: %f, slideMult: %f", magnitude, slideMult); - - float slideFactor = 0.1 * slideMult; // Increase for more of a slide - CGPoint finalPoint = CGPointMake(recognizer.view.center.x + (velocity.x * slideFactor), - recognizer.view.center.y + (velocity.y * slideFactor)); - // finalPoint.x = MIN(MAX(finalPoint.x, 0), self.arView.bounds.size.width); - // finalPoint.y = MIN(MAX(finalPoint.y, 0), self.arView.bounds.size.height); + NSDictionary *panGesture = @{ - @"x": @(finalPoint.x), - @"y": @(finalPoint.y) + @"x": @(finalX), + @"y": @(finalY) }; self.onPanGesture(panGesture); } From de12301b5b11f454754ec216e748690286f7bd21 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 18 May 2020 22:54:59 -0400 Subject: [PATCH 117/356] update images --- ios/RCTARKit.m | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index d740e195..cdd47111 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -610,7 +610,7 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { - (void)handlePan:(UIPanGestureRecognizer *)sender { - [self.view bringSubviewToFront:sender.view]; + [self.arView bringSubviewToFront:sender.view]; CGPoint translatedPoint = [sender translationInView:sender.view.superview]; if (sender.state == UIGestureRecognizerStateBegan) { @@ -627,22 +627,22 @@ - (void)handlePan:(UIPanGestureRecognizer *)sender { if( sender.state == UIGestureRecognizerStateBegan || sender.state == UIGestureRecognizerStateChanged || sender.state == UIGestureRecognizerStateEnded) { - CGFloat velocityX = (0.2*[sender velocityInView:self.view].x); - CGFloat velocityY = (0.2*[sender velocityInView:self.view].y); + CGFloat velocityX = (0.2*[sender velocityInView:self.arView].x); + CGFloat velocityY = (0.2*[sender velocityInView:self.arView].y); CGFloat finalX = translatedPoint.x + velocityX; - CGFloat finalY = translatedPoint.y + velocityY;// translatedPoint.y + (.35*[(UIPanGestureRecognizer*)sender velocityInView:self.view].y); + CGFloat finalY = translatedPoint.y + velocityY;// translatedPoint.y + (.35*[(UIPanGestureRecognizer*)sender velocityInView:self.arView].y); if (finalX < 0) { finalX = 0; - } else if (finalX > self.view.frame.size.width) { - finalX = self.view.frame.size.width; + } else if (finalX > self.arView.frame.size.width) { + finalX = self.arView.frame.size.width; } if (finalY < 50) { // to avoid status bar finalY = 50; - } else if (finalY > self.view.frame.size.height) { - finalY = self.view.frame.size.height; + } else if (finalY > self.arView.frame.size.height) { + finalY = self.arView.frame.size.height; } CGFloat animationDuration = (ABS(velocityX)*.0002)+.2; From 5c182155efe177a2bec8aec849ba714d5d072006 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 18 May 2020 23:02:24 -0400 Subject: [PATCH 118/356] update images --- ios/RCTARKit.m | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index cdd47111..716c742b 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -618,7 +618,6 @@ - (void)handlePan:(UIPanGestureRecognizer *)sender { firstY = sender.view.center.y; } - translatedPoint = CGPointMake(sender.view.center.x+translatedPoint.x, sender.view.center.y+translatedPoint.y); [sender.view setCenter:translatedPoint]; @@ -645,9 +644,6 @@ - (void)handlePan:(UIPanGestureRecognizer *)sender { finalY = self.arView.frame.size.height; } - CGFloat animationDuration = (ABS(velocityX)*.0002)+.2; - - NSLog(@"the duration is: %f", animationDuration); if(self.onPanGesture) { NSDictionary *panGesture = @{ From c327d83c15162f90d9e721d312f51f32893e6723 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 18 May 2020 23:08:40 -0400 Subject: [PATCH 119/356] update arkit pan --- ios/RCTARKit.m | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 716c742b..9d3f5580 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -632,17 +632,17 @@ - (void)handlePan:(UIPanGestureRecognizer *)sender { CGFloat finalX = translatedPoint.x + velocityX; CGFloat finalY = translatedPoint.y + velocityY;// translatedPoint.y + (.35*[(UIPanGestureRecognizer*)sender velocityInView:self.arView].y); - if (finalX < 0) { - finalX = 0; - } else if (finalX > self.arView.frame.size.width) { - finalX = self.arView.frame.size.width; - } - - if (finalY < 50) { // to avoid status bar - finalY = 50; - } else if (finalY > self.arView.frame.size.height) { - finalY = self.arView.frame.size.height; - } + // if (finalX < 0) { + // finalX = 0; + // } else if (finalX > self.arView.frame.size.width) { + // finalX = self.arView.frame.size.width; + // } + + // if (finalY < 50) { // to avoid status bar + // finalY = 50; + // } else if (finalY > self.arView.frame.size.height) { + // finalY = self.arView.frame.size.height; + // } if(self.onPanGesture) { From 9b374f5978ea7eff8ba32be956ffa35a150e5c5c Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 18 May 2020 23:17:23 -0400 Subject: [PATCH 120/356] update dynmic images --- ios/RCTARKit.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 9d3f5580..434ff8d0 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -613,10 +613,10 @@ - (void)handlePan:(UIPanGestureRecognizer *)sender { [self.arView bringSubviewToFront:sender.view]; CGPoint translatedPoint = [sender translationInView:sender.view.superview]; - if (sender.state == UIGestureRecognizerStateBegan) { - firstX = sender.view.center.x; - firstY = sender.view.center.y; - } + // if (sender.state == UIGestureRecognizerStateBegan) { + // firstX = sender.view.center.x; + // firstY = sender.view.center.y; + // } translatedPoint = CGPointMake(sender.view.center.x+translatedPoint.x, sender.view.center.y+translatedPoint.y); From f1f826f320f89d292b1754800fc87edf67be1b36 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 18 May 2020 23:27:48 -0400 Subject: [PATCH 121/356] update dynamic images --- ios/RCTARKit.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 434ff8d0..b38eefc5 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -620,7 +620,7 @@ - (void)handlePan:(UIPanGestureRecognizer *)sender { translatedPoint = CGPointMake(sender.view.center.x+translatedPoint.x, sender.view.center.y+translatedPoint.y); - [sender.view setCenter:translatedPoint]; + // [sender.view setCenter:translatedPoint]; [sender setTranslation:CGPointZero inView:sender.view]; if( sender.state == UIGestureRecognizerStateBegan || @@ -647,8 +647,8 @@ - (void)handlePan:(UIPanGestureRecognizer *)sender { if(self.onPanGesture) { NSDictionary *panGesture = @{ - @"x": @(finalX), - @"y": @(finalY) + @"x": @(translatedPoint.x), + @"y": @(translatedPoint.y) }; self.onPanGesture(panGesture); } From b55f2278108560d48485d97c7fa4bdaa9c5eb548 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 18 May 2020 23:42:51 -0400 Subject: [PATCH 122/356] update dynamic images --- ios/RCTARKit.m | 35 +++++------------------------------ 1 file changed, 5 insertions(+), 30 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index b38eefc5..2468d1ea 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -610,45 +610,20 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { - (void)handlePan:(UIPanGestureRecognizer *)sender { - [self.arView bringSubviewToFront:sender.view]; - CGPoint translatedPoint = [sender translationInView:sender.view.superview]; - // if (sender.state == UIGestureRecognizerStateBegan) { - // firstX = sender.view.center.x; - // firstY = sender.view.center.y; - // } - - translatedPoint = CGPointMake(sender.view.center.x+translatedPoint.x, sender.view.center.y+translatedPoint.y); - - // [sender.view setCenter:translatedPoint]; - [sender setTranslation:CGPointZero inView:sender.view]; if( sender.state == UIGestureRecognizerStateBegan || sender.state == UIGestureRecognizerStateChanged || sender.state == UIGestureRecognizerStateEnded) { - CGFloat velocityX = (0.2*[sender velocityInView:self.arView].x); - CGFloat velocityY = (0.2*[sender velocityInView:self.arView].y); - - CGFloat finalX = translatedPoint.x + velocityX; - CGFloat finalY = translatedPoint.y + velocityY;// translatedPoint.y + (.35*[(UIPanGestureRecognizer*)sender velocityInView:self.arView].y); - - // if (finalX < 0) { - // finalX = 0; - // } else if (finalX > self.arView.frame.size.width) { - // finalX = self.arView.frame.size.width; - // } - - // if (finalY < 50) { // to avoid status bar - // finalY = 50; - // } else if (finalY > self.arView.frame.size.height) { - // finalY = self.arView.frame.size.height; - // } + CGPoint translation = [recognizer translationInView:self.view]; + recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, + recognizer.view.center.y + translation.y); if(self.onPanGesture) { NSDictionary *panGesture = @{ - @"x": @(translatedPoint.x), - @"y": @(translatedPoint.y) + @"x": @(finalX), + @"y": @(finalY) }; self.onPanGesture(panGesture); } From 80db73a7f0360a0572cb00336d596aa13141e0b2 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 18 May 2020 23:43:52 -0400 Subject: [PATCH 123/356] update pan handler --- ios/RCTARKit.m | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 2468d1ea..51e045b9 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -615,15 +615,15 @@ - (void)handlePan:(UIPanGestureRecognizer *)sender { if( sender.state == UIGestureRecognizerStateBegan || sender.state == UIGestureRecognizerStateChanged || sender.state == UIGestureRecognizerStateEnded) { - CGPoint translation = [recognizer translationInView:self.view]; - recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, - recognizer.view.center.y + translation.y); + CGPoint translation = [recognizer translationInView:self.arView]; + // recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, + // recognizer.view.center.y + translation.y); if(self.onPanGesture) { NSDictionary *panGesture = @{ - @"x": @(finalX), - @"y": @(finalY) + @"x": @(recognizer.view.center.x + translation.x), + @"y": @(recognizer.view.center.y + translation.y) }; self.onPanGesture(panGesture); } From 894dba5eefc615bd32c9ca1856e20bd2be47d7ec Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 20 May 2020 19:03:26 -0400 Subject: [PATCH 124/356] handle tap --- ios/RCTARKit.m | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 51e045b9..48a125bd 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -562,8 +562,10 @@ - (void)handleTapFrom: (UITapGestureRecognizer *)recognizer { // if(self.onTapOnPlaneUsingExtent) { // Take the screen space tap coordinates and pass them to the hitTest method on the ARSCNView instance - NSDictionary * planeHitResult = [self getPlaneHitResult:tapPoint types:ARHitTestResultTypeExistingPlaneUsingExtent]; - self.onTapOnPlaneUsingExtent(planeHitResult); + // NSDictionary * planeHitResult = [self getPlaneHitResult:tapPoint types:ARHitTestResultTypeExistingPlaneUsingExtent]; + CGPoint point = CGPointMake( [pointDict[@"x"] floatValue], [pointDict[@"y"] floatValue] ); + + self.onTapOnPlaneUsingExtent([ARKit sharedInstance] hitTestSceneObjects:point resolve:resolve reject:reject];); } if(self.onTapOnPlaneNoExtent) { From 3278b7305964fbeb7e4d9edd65b2c51473d64847 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 20 May 2020 19:10:19 -0400 Subject: [PATCH 125/356] handle tap --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 48a125bd..cc678d86 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -563,9 +563,9 @@ - (void)handleTapFrom: (UITapGestureRecognizer *)recognizer { if(self.onTapOnPlaneUsingExtent) { // Take the screen space tap coordinates and pass them to the hitTest method on the ARSCNView instance // NSDictionary * planeHitResult = [self getPlaneHitResult:tapPoint types:ARHitTestResultTypeExistingPlaneUsingExtent]; - CGPoint point = CGPointMake( [pointDict[@"x"] floatValue], [pointDict[@"y"] floatValue] ); + // CGPoint point = CGPointMake( [pointDict[@"x"] floatValue], [pointDict[@"y"] floatValue] ); - self.onTapOnPlaneUsingExtent([ARKit sharedInstance] hitTestSceneObjects:point resolve:resolve reject:reject];); + self.onTapOnPlaneUsingExtent([ARKit sharedInstance] hitTestSceneObjects:tapPoint resolve:resolve reject:reject];); } if(self.onTapOnPlaneNoExtent) { From 13b3e55c0192169e255c95558de4dfe5cc8e1ee2 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 20 May 2020 19:18:38 -0400 Subject: [PATCH 126/356] handle tap --- ios/RCTARKit.m | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index cc678d86..e8f58c8a 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -564,8 +564,12 @@ - (void)handleTapFrom: (UITapGestureRecognizer *)recognizer { // Take the screen space tap coordinates and pass them to the hitTest method on the ARSCNView instance // NSDictionary * planeHitResult = [self getPlaneHitResult:tapPoint types:ARHitTestResultTypeExistingPlaneUsingExtent]; // CGPoint point = CGPointMake( [pointDict[@"x"] floatValue], [pointDict[@"y"] floatValue] ); - - self.onTapOnPlaneUsingExtent([ARKit sharedInstance] hitTestSceneObjects:tapPoint resolve:resolve reject:reject];); + NSDictionary *tap = @{ + @"rotation": @(tapPoint.x), + @"velocity": @(tapPoint.y) + }; + + self.onTapOnPlaneUsingExtent(tap); } if(self.onTapOnPlaneNoExtent) { From 0e7ade26fa0d272bf1fd79c57b9479375008f29f Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 20 May 2020 19:27:16 -0400 Subject: [PATCH 127/356] update pan --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index e8f58c8a..da91e1ba 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -628,8 +628,8 @@ - (void)handlePan:(UIPanGestureRecognizer *)sender { if(self.onPanGesture) { NSDictionary *panGesture = @{ - @"x": @(recognizer.view.center.x + translation.x), - @"y": @(recognizer.view.center.y + translation.y) + @"x": @(sender.view.center.x + translation.x), + @"y": @(sender.view.center.y + translation.y) }; self.onPanGesture(panGesture); } From 100d0591fc45211b7099d23287f174363ca55c91 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 20 May 2020 19:44:16 -0400 Subject: [PATCH 128/356] update pna --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index da91e1ba..a0b084c5 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -621,7 +621,7 @@ - (void)handlePan:(UIPanGestureRecognizer *)sender { if( sender.state == UIGestureRecognizerStateBegan || sender.state == UIGestureRecognizerStateChanged || sender.state == UIGestureRecognizerStateEnded) { - CGPoint translation = [recognizer translationInView:self.arView]; + CGPoint translation = [sender translationInView:self.arView]; // recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, // recognizer.view.center.y + translation.y); From 8397e1833d1e5728c68638a1625248fe2c71a141 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 20 May 2020 20:03:22 -0400 Subject: [PATCH 129/356] update pand gesuture names --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index a0b084c5..8857f4b9 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -565,8 +565,8 @@ - (void)handleTapFrom: (UITapGestureRecognizer *)recognizer { // NSDictionary * planeHitResult = [self getPlaneHitResult:tapPoint types:ARHitTestResultTypeExistingPlaneUsingExtent]; // CGPoint point = CGPointMake( [pointDict[@"x"] floatValue], [pointDict[@"y"] floatValue] ); NSDictionary *tap = @{ - @"rotation": @(tapPoint.x), - @"velocity": @(tapPoint.y) + @"x": @(tapPoint.x), + @"y": @(tapPoint.y) }; self.onTapOnPlaneUsingExtent(tap); From 6cb654f118396301262a3d6face9f14371d41d00 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 26 May 2020 00:59:56 -0400 Subject: [PATCH 130/356] remove pan gesture --- ARKit.js | 2 -- ios/RCTARKit.h | 3 --- ios/RCTARKit.m | 25 ------------------------- ios/RCTARKitManager.m | 1 - 4 files changed, 31 deletions(-) diff --git a/ARKit.js b/ARKit.js index 1503c361..d5f48ce6 100644 --- a/ARKit.js +++ b/ARKit.js @@ -60,7 +60,6 @@ class ARKit extends Component { 'onTapOnPlaneNoExtent', 'onRotationGesture', 'onPinchGesture', - 'onPanGesture', 'onPlaneDetected', 'onPlaneRemoved', 'onPlaneUpdated', @@ -243,7 +242,6 @@ ARKit.propTypes = { onTapOnPlaneNoExtent: PropTypes.func, onRotationGesture: PropTypes.func, onPinchGesture: PropTypes.func, - onPanGesture: PropTypes.func, onEvent: PropTypes.func, isMounted: PropTypes.func, isInitialized: PropTypes.func, diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 435cf3f8..cda73a9f 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -66,9 +66,6 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error @property (nonatomic, copy) RCTBubblingEventBlock onRotationGesture; @property (nonatomic, copy) RCTBubblingEventBlock onPinchGesture; -@property (nonatomic, copy) RCTBubblingEventBlock onPanGesture; - - @property (nonatomic, copy) RCTBubblingEventBlock onEvent; @property (nonatomic, copy) RCTBubblingEventBlock onARKitError; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 8857f4b9..28c74dac 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -83,11 +83,6 @@ - (instancetype)initWithARView:(ARSCNView *)arView { UIPinchGestureRecognizer *pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinchFrom:)]; [self.arView addGestureRecognizer:pinchGestureRecognizer]; - UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)]; - [panGestureRecognizer setMinimumNumberOfTouches:1]; - [panGestureRecognizer setMaximumNumberOfTouches:1]; - [self.arView addGestureRecognizer:panGestureRecognizer]; - self.touchDelegates = [NSMutableArray array]; self.rendererDelegates = [NSMutableArray array]; self.sessionDelegates = [NSMutableArray array]; @@ -615,26 +610,6 @@ - (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { } -- (void)handlePan:(UIPanGestureRecognizer *)sender { - - - if( sender.state == UIGestureRecognizerStateBegan || - sender.state == UIGestureRecognizerStateChanged || - sender.state == UIGestureRecognizerStateEnded) { - CGPoint translation = [sender translationInView:self.arView]; - // recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, - // recognizer.view.center.y + translation.y); - - if(self.onPanGesture) { - - NSDictionary *panGesture = @{ - @"x": @(sender.view.center.x + translation.x), - @"y": @(sender.view.center.y + translation.y) - }; - self.onPanGesture(panGesture); - } - } -} #pragma mark - ARSCNViewDelegate diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 7ea538d8..90736e37 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -190,7 +190,6 @@ - (NSDictionary *)constantsToExport RCT_EXPORT_VIEW_PROPERTY(onTapOnPlaneNoExtent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onRotationGesture, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onPinchGesture, RCTBubblingEventBlock) -RCT_EXPORT_VIEW_PROPERTY(onPanGesture, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onEvent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onARKitError, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(worldMap, NSObject); From 9f42e63929cbfda35d09e51f3f8916c31d8e83a7 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 26 May 2020 20:21:05 -0400 Subject: [PATCH 131/356] location tracking --- package-lock.json | 927 ++++++++++++++++++++++++---------------------- package.json | 8 +- 2 files changed, 489 insertions(+), 446 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8ea2eda5..67ec37d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "react-native-arkit", - "version": "0.8.0-beta.2", + "version": "0.9.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -17,9 +17,9 @@ "resolved": "https://registry.npmjs.org/react/-/react-15.4.2.tgz", "integrity": "sha1-QfeZGyYYU5K6m66WyIiefgGDl+8=", "requires": { - "fbjs": "0.8.15", - "loose-envify": "1.3.1", - "object-assign": "4.1.1" + "fbjs": "^0.8.4", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.0" } } } @@ -36,7 +36,7 @@ "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, "requires": { - "acorn": "3.3.0" + "acorn": "^3.0.4" }, "dependencies": { "acorn": { @@ -53,10 +53,10 @@ "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", "dev": true, "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "json-schema-traverse": "^0.3.0", + "json-stable-stringify": "^1.0.1" } }, "ajv-keywords": { @@ -89,7 +89,7 @@ "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", "dev": true, "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "aria-query": { @@ -107,8 +107,8 @@ "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", "dev": true, "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.8.2" + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" } }, "array-union": { @@ -117,7 +117,7 @@ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -158,9 +158,9 @@ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" } }, "babel-eslint": { @@ -169,10 +169,10 @@ "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0" + "babel-code-frame": "^6.22.0", + "babel-traverse": "^6.23.1", + "babel-types": "^6.23.0", + "babylon": "^6.17.0" } }, "babel-helper-builder-react-jsx": { @@ -181,9 +181,9 @@ "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "esutils": "2.0.2" + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "esutils": "^2.0.2" } }, "babel-helper-call-delegate": { @@ -192,10 +192,10 @@ "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", "dev": true, "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-define-map": { @@ -204,10 +204,10 @@ "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.4" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, "babel-helper-function-name": { @@ -216,11 +216,11 @@ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "dev": true, "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-get-function-arity": { @@ -229,8 +229,8 @@ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-hoist-variables": { @@ -239,8 +239,8 @@ "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-optimise-call-expression": { @@ -249,8 +249,8 @@ "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-replace-supers": { @@ -259,12 +259,12 @@ "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", "dev": true, "requires": { - "babel-helper-optimise-call-expression": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-messages": { @@ -273,7 +273,7 @@ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-check-es2015-constants": { @@ -282,7 +282,7 @@ "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-react-transform": { @@ -291,7 +291,7 @@ "integrity": "sha1-UVu/qZaJOYEULZCx+bFjXeKZUQk=", "dev": true, "requires": { - "lodash": "4.17.4" + "lodash": "^4.6.1" } }, "babel-plugin-syntax-async-functions": { @@ -336,10 +336,10 @@ "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-plugin-syntax-class-properties": "6.13.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-arrow-functions": { @@ -348,7 +348,7 @@ "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-block-scoping": { @@ -357,11 +357,11 @@ "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.4" + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, "babel-plugin-transform-es2015-classes": { @@ -370,15 +370,15 @@ "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", "dev": true, "requires": { - "babel-helper-define-map": "6.26.0", - "babel-helper-function-name": "6.24.1", - "babel-helper-optimise-call-expression": "6.24.1", - "babel-helper-replace-supers": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-computed-properties": { @@ -387,8 +387,8 @@ "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-destructuring": { @@ -397,7 +397,7 @@ "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-for-of": { @@ -406,7 +406,7 @@ "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-function-name": { @@ -415,9 +415,9 @@ "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-literals": { @@ -426,7 +426,7 @@ "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-modules-commonjs": { @@ -435,10 +435,10 @@ "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", "dev": true, "requires": { - "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" } }, "babel-plugin-transform-es2015-parameters": { @@ -447,12 +447,12 @@ "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", "dev": true, "requires": { - "babel-helper-call-delegate": "6.24.1", - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-shorthand-properties": { @@ -461,8 +461,8 @@ "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-spread": { @@ -471,7 +471,7 @@ "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-template-literals": { @@ -480,7 +480,7 @@ "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-flow-strip-types": { @@ -489,8 +489,8 @@ "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", "dev": true, "requires": { - "babel-plugin-syntax-flow": "6.18.0", - "babel-runtime": "6.26.0" + "babel-plugin-syntax-flow": "^6.18.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-object-assign": { @@ -499,7 +499,7 @@ "integrity": "sha1-+Z0vZvGgsNSY40bFNZaEdAyqILo=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-object-rest-spread": { @@ -508,8 +508,8 @@ "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", "dev": true, "requires": { - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "babel-runtime": "6.26.0" + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" } }, "babel-plugin-transform-react-display-name": { @@ -518,7 +518,7 @@ "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-react-jsx": { @@ -527,9 +527,9 @@ "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", "dev": true, "requires": { - "babel-helper-builder-react-jsx": "6.26.0", - "babel-plugin-syntax-jsx": "6.18.0", - "babel-runtime": "6.26.0" + "babel-helper-builder-react-jsx": "^6.24.1", + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-react-jsx-source": { @@ -538,8 +538,8 @@ "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", "dev": true, "requires": { - "babel-plugin-syntax-jsx": "6.18.0", - "babel-runtime": "6.26.0" + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-regenerator": { @@ -548,7 +548,7 @@ "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", "dev": true, "requires": { - "regenerator-transform": "0.10.1" + "regenerator-transform": "^0.10.0" } }, "babel-plugin-transform-strict-mode": { @@ -557,8 +557,8 @@ "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-preset-react-native": { @@ -567,35 +567,35 @@ "integrity": "sha1-kBPr2C2hyIECv1iIEP9Z4gnKK4o=", "dev": true, "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-check-es2015-constants": "^6.5.0", "babel-plugin-react-transform": "2.0.2", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-plugin-syntax-class-properties": "6.13.0", - "babel-plugin-syntax-flow": "6.18.0", - "babel-plugin-syntax-jsx": "6.18.0", - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-class-properties": "6.24.1", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.26.0", - "babel-plugin-transform-es2015-classes": "6.24.1", - "babel-plugin-transform-es2015-computed-properties": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-flow-strip-types": "6.22.0", - "babel-plugin-transform-object-assign": "6.22.0", - "babel-plugin-transform-object-rest-spread": "6.26.0", - "babel-plugin-transform-react-display-name": "6.25.0", - "babel-plugin-transform-react-jsx": "6.24.1", - "babel-plugin-transform-react-jsx-source": "6.22.0", - "babel-plugin-transform-regenerator": "6.26.0", - "react-transform-hmr": "1.0.4" + "babel-plugin-syntax-async-functions": "^6.5.0", + "babel-plugin-syntax-class-properties": "^6.5.0", + "babel-plugin-syntax-flow": "^6.5.0", + "babel-plugin-syntax-jsx": "^6.5.0", + "babel-plugin-syntax-trailing-function-commas": "^6.5.0", + "babel-plugin-transform-class-properties": "^6.5.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.5.0", + "babel-plugin-transform-es2015-block-scoping": "^6.5.0", + "babel-plugin-transform-es2015-classes": "^6.5.0", + "babel-plugin-transform-es2015-computed-properties": "^6.5.0", + "babel-plugin-transform-es2015-destructuring": "^6.5.0", + "babel-plugin-transform-es2015-for-of": "^6.5.0", + "babel-plugin-transform-es2015-function-name": "^6.5.0", + "babel-plugin-transform-es2015-literals": "^6.5.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.5.0", + "babel-plugin-transform-es2015-parameters": "^6.5.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.5.0", + "babel-plugin-transform-es2015-spread": "^6.5.0", + "babel-plugin-transform-es2015-template-literals": "^6.5.0", + "babel-plugin-transform-flow-strip-types": "^6.5.0", + "babel-plugin-transform-object-assign": "^6.5.0", + "babel-plugin-transform-object-rest-spread": "^6.5.0", + "babel-plugin-transform-react-display-name": "^6.5.0", + "babel-plugin-transform-react-jsx": "^6.5.0", + "babel-plugin-transform-react-jsx-source": "^6.5.0", + "babel-plugin-transform-regenerator": "^6.5.0", + "react-transform-hmr": "^1.0.4" } }, "babel-runtime": { @@ -604,8 +604,8 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.11.0" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" }, "dependencies": { "core-js": { @@ -622,11 +622,11 @@ "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.4" + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" } }, "babel-traverse": { @@ -635,15 +635,15 @@ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" } }, "babel-types": { @@ -652,10 +652,10 @@ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" } }, "babylon": { @@ -676,7 +676,7 @@ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -692,7 +692,7 @@ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", "dev": true, "requires": { - "callsites": "0.2.0" + "callsites": "^0.2.0" } }, "callsites": { @@ -707,11 +707,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "circular-json": { @@ -726,7 +726,7 @@ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "restore-cursor": "2.0.0" + "restore-cursor": "^2.0.0" } }, "cli-width": { @@ -747,7 +747,7 @@ "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" } }, "color-name": { @@ -768,9 +768,9 @@ "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "typedarray": "0.0.6" + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, "contains-path": { @@ -790,26 +790,15 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "create-react-class": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.0.tgz", - "integrity": "sha1-q0SEl8JlZuHilBPogyB9V8/nvtQ=", - "dev": true, - "requires": { - "fbjs": "0.8.15", - "loose-envify": "1.3.1", - "object-assign": "4.1.1" - } - }, "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=", "dev": true, "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "damerau-levenshtein": { @@ -839,8 +828,8 @@ "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", "dev": true, "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" + "foreach": "^2.0.5", + "object-keys": "^1.0.8" } }, "del": { @@ -849,13 +838,13 @@ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "dev": true, "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.2" + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" } }, "doctrine": { @@ -864,8 +853,8 @@ "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", "dev": true, "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" + "esutils": "^2.0.2", + "isarray": "^1.0.0" } }, "dom-walk": { @@ -885,7 +874,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.19" + "iconv-lite": "~0.4.13" } }, "error-ex": { @@ -894,7 +883,7 @@ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "es-abstract": { @@ -903,11 +892,11 @@ "integrity": "sha512-dvhwFL3yjQxNNsOWx6exMlaDrRHCRGMQlnx5lsXDCZ/J7G/frgIIl94zhZSp/galVAYp7VzPi1OrAHta89/yGQ==", "dev": true, "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.1", - "has": "1.0.1", - "is-callable": "1.1.3", - "is-regex": "1.0.4" + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" } }, "es-to-primitive": { @@ -916,9 +905,9 @@ "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", "dev": true, "requires": { - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-symbol": "1.0.1" + "is-callable": "^1.1.1", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.1" } }, "escape-string-regexp": { @@ -933,43 +922,43 @@ "integrity": "sha1-/29fUZOEiifum2J74+c/ucteZi4=", "dev": true, "requires": { - "ajv": "5.2.2", - "babel-code-frame": "6.26.0", - "chalk": "2.1.0", - "concat-stream": "1.6.0", - "cross-spawn": "5.1.0", - "debug": "3.0.1", - "doctrine": "2.0.0", - "eslint-scope": "3.7.1", - "espree": "3.5.1", - "esquery": "1.0.0", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "functional-red-black-tree": "1.0.1", - "glob": "7.1.2", - "globals": "9.18.0", - "ignore": "3.3.5", - "imurmurhash": "0.1.4", - "inquirer": "3.3.0", - "is-resolvable": "1.0.0", - "js-yaml": "3.10.0", - "json-stable-stringify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "7.0.0", - "progress": "2.0.0", - "require-uncached": "1.0.3", - "semver": "5.4.1", - "strip-ansi": "4.0.0", - "strip-json-comments": "2.0.1", - "table": "4.0.1", - "text-table": "0.2.0" + "ajv": "^5.2.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.0.1", + "doctrine": "^2.0.0", + "eslint-scope": "^3.7.1", + "espree": "^3.5.1", + "esquery": "^1.0.0", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^9.17.0", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^3.0.6", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "~2.0.1", + "table": "^4.0.1", + "text-table": "~0.2.0" }, "dependencies": { "ansi-regex": { @@ -984,7 +973,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "^1.9.0" } }, "chalk": { @@ -993,9 +982,9 @@ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", "dev": true, "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" + "ansi-styles": "^3.1.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^4.0.0" } }, "debug": { @@ -1013,7 +1002,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } }, "supports-color": { @@ -1022,7 +1011,7 @@ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } } } @@ -1033,7 +1022,7 @@ "integrity": "sha512-m0q9fiMBzDAIbirlGnpJNWToIhdhJmXXnMG+IFflYzzod9231ZhtmGKegKg8E9T8F1YuVaDSU1FnCm5b9iXVhQ==", "dev": true, "requires": { - "eslint-config-airbnb-base": "11.3.2" + "eslint-config-airbnb-base": "^11.3.0" } }, "eslint-config-airbnb-base": { @@ -1042,7 +1031,7 @@ "integrity": "sha512-/fhjt/VqzBA2SRsx7ErDtv6Ayf+XLw9LIOqmpBuHFCVwyJo2EtzGWMB9fYRFBoWWQLxmNmCpenNiH0RxyeS41w==", "dev": true, "requires": { - "eslint-restricted-globals": "0.1.1" + "eslint-restricted-globals": "^0.1.1" } }, "eslint-config-prettier": { @@ -1051,7 +1040,7 @@ "integrity": "sha1-8h2w67Q4rWePuYlGCXxLsZi+/Mw=", "dev": true, "requires": { - "get-stdin": "5.0.1" + "get-stdin": "^5.0.1" } }, "eslint-import-resolver-node": { @@ -1060,8 +1049,8 @@ "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==", "dev": true, "requires": { - "debug": "2.6.9", - "resolve": "1.4.0" + "debug": "^2.6.8", + "resolve": "^1.2.0" } }, "eslint-module-utils": { @@ -1070,8 +1059,8 @@ "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", "dev": true, "requires": { - "debug": "2.6.9", - "pkg-dir": "1.0.0" + "debug": "^2.6.8", + "pkg-dir": "^1.0.0" } }, "eslint-plugin-flowtype": { @@ -1080,7 +1069,7 @@ "integrity": "sha512-YTCeVsMOi3ga8PJjdAV97FaTNXNknzrO+4ZDMHJN65i4uMjL5KgfgQZpyVsBirWOfgXMKRduxpsyM64K/0LbXw==", "dev": true, "requires": { - "lodash": "4.17.4" + "lodash": "^4.15.0" } }, "eslint-plugin-import": { @@ -1089,16 +1078,16 @@ "integrity": "sha512-HGYmpU9f/zJaQiKNQOVfHUh2oLWW3STBrCgH0sHTX1xtsxYlH1zjLh8FlQGEIdZSdTbUMaV36WaZ6ImXkenGxQ==", "dev": true, "requires": { - "builtin-modules": "1.1.1", - "contains-path": "0.1.0", - "debug": "2.6.9", + "builtin-modules": "^1.1.1", + "contains-path": "^0.1.0", + "debug": "^2.6.8", "doctrine": "1.5.0", - "eslint-import-resolver-node": "0.3.1", - "eslint-module-utils": "2.1.1", - "has": "1.0.1", - "lodash.cond": "4.5.2", - "minimatch": "3.0.4", - "read-pkg-up": "2.0.0" + "eslint-import-resolver-node": "^0.3.1", + "eslint-module-utils": "^2.1.1", + "has": "^1.0.1", + "lodash.cond": "^4.3.0", + "minimatch": "^3.0.3", + "read-pkg-up": "^2.0.0" }, "dependencies": { "doctrine": { @@ -1107,8 +1096,8 @@ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "dev": true, "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" + "esutils": "^2.0.2", + "isarray": "^1.0.0" } } } @@ -1119,13 +1108,13 @@ "integrity": "sha512-5I9SpoP7gT4wBFOtXT8/tXNPYohHBVfyVfO17vkbC7r9kEIxYJF12D3pKqhk8+xnk12rfxKClS3WCFpVckFTPQ==", "dev": true, "requires": { - "aria-query": "0.7.0", - "array-includes": "3.0.3", + "aria-query": "^0.7.0", + "array-includes": "^3.0.3", "ast-types-flow": "0.0.7", - "axobject-query": "0.1.0", - "damerau-levenshtein": "1.0.4", - "emoji-regex": "6.5.1", - "jsx-ast-utils": "1.4.1" + "axobject-query": "^0.1.0", + "damerau-levenshtein": "^1.0.0", + "emoji-regex": "^6.1.0", + "jsx-ast-utils": "^1.4.0" } }, "eslint-plugin-prettier": { @@ -1134,8 +1123,8 @@ "integrity": "sha512-AV8shBlGN9tRZffj5v/f4uiQWlP3qiQ+lh+BhTqRLuKSyczx+HRWVkVZaf7dOmguxghAH1wftnou/JUEEChhGg==", "dev": true, "requires": { - "fast-diff": "1.1.2", - "jest-docblock": "21.1.0" + "fast-diff": "^1.1.1", + "jest-docblock": "^21.0.0" } }, "eslint-plugin-react": { @@ -1144,10 +1133,10 @@ "integrity": "sha512-7L6QEOxm7XhcDoe+U9Qt7GJjU6KeQOX9jCLGE8EPGF6FQbwZ9LgcBzsjXIZv9oYvNQlvQZmLjJs76xEeWsI4QA==", "dev": true, "requires": { - "doctrine": "2.0.0", - "has": "1.0.1", - "jsx-ast-utils": "2.0.1", - "prop-types": "15.5.10" + "doctrine": "^2.0.0", + "has": "^1.0.1", + "jsx-ast-utils": "^2.0.0", + "prop-types": "^15.5.10" }, "dependencies": { "jsx-ast-utils": { @@ -1156,7 +1145,17 @@ "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", "dev": true, "requires": { - "array-includes": "3.0.3" + "array-includes": "^3.0.3" + } + }, + "prop-types": { + "version": "15.5.10", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", + "integrity": "sha1-J5ffwxJhguOpXj37suiT3ddFYVQ=", + "dev": true, + "requires": { + "fbjs": "^0.8.9", + "loose-envify": "^1.3.1" } } } @@ -1173,8 +1172,8 @@ "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "dev": true, "requires": { - "esrecurse": "4.2.0", - "estraverse": "4.2.0" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, "espree": { @@ -1183,8 +1182,8 @@ "integrity": "sha1-DJiLirRttTEAoZVK5LqZXd0n2H4=", "dev": true, "requires": { - "acorn": "5.1.2", - "acorn-jsx": "3.0.1" + "acorn": "^5.1.1", + "acorn-jsx": "^3.0.0" } }, "esprima": { @@ -1199,7 +1198,7 @@ "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.0.0" } }, "esrecurse": { @@ -1208,8 +1207,8 @@ "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", "dev": true, "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" + "estraverse": "^4.1.0", + "object-assign": "^4.0.1" } }, "estraverse": { @@ -1230,9 +1229,9 @@ "integrity": "sha512-Msjo64WT5W+NhOpQXh0nOHm+n0RfU1QUwDnKYvJ8dEJ8zlwLrqXNTv5mSUTJpepf41PDJGyhueTw2vNZW+Fr/w==", "dev": true, "requires": { - "iconv-lite": "0.4.19", - "jschardet": "1.5.1", - "tmp": "0.0.33" + "iconv-lite": "^0.4.17", + "jschardet": "^1.4.2", + "tmp": "^0.0.33" } }, "fast-deep-equal": { @@ -1257,13 +1256,13 @@ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.15.tgz", "integrity": "sha1-TwaV/fzBbDfAsH+s7Iy0xAkWhbk=", "requires": { - "core-js": "1.2.7", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.14" + "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.9" } }, "figures": { @@ -1272,7 +1271,7 @@ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.5" } }, "file-entry-cache": { @@ -1281,8 +1280,8 @@ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", "dev": true, "requires": { - "flat-cache": "1.2.2", - "object-assign": "4.1.1" + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" } }, "find-up": { @@ -1291,8 +1290,8 @@ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "flat-cache": { @@ -1301,10 +1300,10 @@ "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", "dev": true, "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" + "circular-json": "^0.3.1", + "del": "^2.0.2", + "graceful-fs": "^4.1.2", + "write": "^0.2.1" } }, "foreach": { @@ -1343,12 +1342,12 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "global": { @@ -1357,8 +1356,8 @@ "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", "dev": true, "requires": { - "min-document": "2.19.0", - "process": "0.5.2" + "min-document": "^2.19.0", + "process": "~0.5.1" } }, "globals": { @@ -1373,12 +1372,12 @@ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", "dev": true, "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "graceful-fs": { @@ -1393,7 +1392,7 @@ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", "dev": true, "requires": { - "function-bind": "1.1.1" + "function-bind": "^1.0.2" } }, "has-ansi": { @@ -1402,7 +1401,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -1440,8 +1439,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -1456,20 +1455,20 @@ "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "dev": true, "requires": { - "ansi-escapes": "3.0.0", - "chalk": "2.1.0", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.0.5", - "figures": "2.0.0", - "lodash": "4.17.4", + "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.3.0", - "rx-lite": "4.0.8", - "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" + "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": { @@ -1484,7 +1483,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "^1.9.0" } }, "chalk": { @@ -1493,9 +1492,9 @@ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", "dev": true, "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" + "ansi-styles": "^3.1.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^4.0.0" } }, "strip-ansi": { @@ -1504,7 +1503,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } }, "supports-color": { @@ -1513,7 +1512,7 @@ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } } } @@ -1524,7 +1523,7 @@ "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", "dev": true, "requires": { - "loose-envify": "1.3.1" + "loose-envify": "^1.0.0" } }, "is-arrayish": { @@ -1539,7 +1538,7 @@ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-callable": { @@ -1572,7 +1571,7 @@ "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", "dev": true, "requires": { - "is-path-inside": "1.0.0" + "is-path-inside": "^1.0.0" } }, "is-path-inside": { @@ -1581,7 +1580,7 @@ "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", "dev": true, "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "is-promise": { @@ -1596,7 +1595,7 @@ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "dev": true, "requires": { - "has": "1.0.1" + "has": "^1.0.1" } }, "is-resolvable": { @@ -1605,7 +1604,7 @@ "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", "dev": true, "requires": { - "tryit": "1.0.3" + "tryit": "^1.0.1" } }, "is-stream": { @@ -1636,8 +1635,8 @@ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { - "node-fetch": "1.7.3", - "whatwg-fetch": "2.0.3" + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" } }, "jest-docblock": { @@ -1657,8 +1656,8 @@ "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", "dev": true, "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jschardet": { @@ -1679,7 +1678,7 @@ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "jsonify": { @@ -1700,8 +1699,8 @@ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, "load-json-file": { @@ -1710,10 +1709,10 @@ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" } }, "locate-path": { @@ -1722,8 +1721,8 @@ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" }, "dependencies": { "path-exists": { @@ -1750,7 +1749,7 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "requires": { - "js-tokens": "3.0.2" + "js-tokens": "^3.0.0" } }, "lru-cache": { @@ -1759,8 +1758,8 @@ "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "mimic-fn": { @@ -1775,7 +1774,7 @@ "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", "dev": true, "requires": { - "dom-walk": "0.1.1" + "dom-walk": "^0.1.0" } }, "minimatch": { @@ -1784,7 +1783,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -1825,8 +1824,8 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" + "encoding": "^0.1.11", + "is-stream": "^1.0.1" } }, "normalize-package-data": { @@ -1835,10 +1834,10 @@ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "object-assign": { @@ -1858,7 +1857,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { @@ -1867,7 +1866,7 @@ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "^1.0.0" } }, "optionator": { @@ -1876,12 +1875,12 @@ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "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", - "wordwrap": "1.0.0" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" } }, "os-tmpdir": { @@ -1902,7 +1901,7 @@ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "1.1.0" + "p-limit": "^1.1.0" } }, "parse-json": { @@ -1911,7 +1910,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "path-exists": { @@ -1920,7 +1919,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "path-is-absolute": { @@ -1947,7 +1946,7 @@ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, "requires": { - "pify": "2.3.0" + "pify": "^2.0.0" } }, "pify": { @@ -1968,7 +1967,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "pkg-dir": { @@ -1977,7 +1976,7 @@ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { - "find-up": "1.1.2" + "find-up": "^1.0.0" } }, "pluralize": { @@ -2027,16 +2026,27 @@ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "requires": { - "asap": "2.0.6" + "asap": "~2.0.3" } }, "prop-types": { - "version": "15.5.10", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", - "integrity": "sha1-J5ffwxJhguOpXj37suiT3ddFYVQ=", + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", "requires": { - "fbjs": "0.8.15", - "loose-envify": "1.3.1" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + }, + "dependencies": { + "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" + } + } } }, "pseudomap": { @@ -2046,16 +2056,38 @@ "dev": true }, "react": { - "version": "16.0.0-alpha.12", - "resolved": "https://registry.npmjs.org/react/-/react-16.0.0-alpha.12.tgz", - "integrity": "sha1-jFlIUoFIXfMZtvd2gtjdBiHAgZQ=", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.2.0.tgz", + "integrity": "sha512-ZmIomM7EE1DvPEnSFAHZn9Vs9zJl5A9H7el0EGTE6ZbW9FKe/14IYAlPbC8iH25YarEQxZL+E8VW7Mi7kfQrDQ==", "dev": true, "requires": { - "create-react-class": "15.6.0", - "fbjs": "0.8.15", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "prop-types": "15.5.10" + "fbjs": "^0.8.16", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.0" + }, + "dependencies": { + "fbjs": { + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", + "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", + "dev": true, + "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" + } + }, + "ua-parser-js": { + "version": "0.7.21", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz", + "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==", + "dev": true + } } }, "react-deep-force-update": { @@ -2064,14 +2096,19 @@ "integrity": "sha1-vNMUeAJ7ZLMznxCJIatSC0MT3Cw=", "dev": true }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "react-proxy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-1.1.8.tgz", "integrity": "sha1-nb/Z2SdSjDqp9ETkVYw3gwq4wmo=", "dev": true, "requires": { - "lodash": "4.17.4", - "react-deep-force-update": "1.1.1" + "lodash": "^4.6.1", + "react-deep-force-update": "^1.0.0" } }, "react-transform-hmr": { @@ -2080,8 +2117,8 @@ "integrity": "sha1-4aQL0Krvxy6N/Xp82gmvhQZjl7s=", "dev": true, "requires": { - "global": "4.3.2", - "react-proxy": "1.1.8" + "global": "^4.3.0", + "react-proxy": "^1.1.7" } }, "read-pkg": { @@ -2090,9 +2127,9 @@ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "dev": true, "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" } }, "read-pkg-up": { @@ -2101,8 +2138,8 @@ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" }, "dependencies": { "find-up": { @@ -2111,7 +2148,7 @@ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } } } @@ -2122,13 +2159,13 @@ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "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" } }, "regenerator-runtime": { @@ -2143,9 +2180,9 @@ "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "private": "0.1.7" + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" } }, "require-uncached": { @@ -2154,8 +2191,8 @@ "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", "dev": true, "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" } }, "resolve": { @@ -2164,7 +2201,7 @@ "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", "dev": true, "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } }, "resolve-from": { @@ -2179,8 +2216,8 @@ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, "rimraf": { @@ -2189,7 +2226,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "run-async": { @@ -2198,7 +2235,7 @@ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "dev": true, "requires": { - "is-promise": "2.1.0" + "is-promise": "^2.1.0" } }, "rx-lite": { @@ -2213,7 +2250,7 @@ "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", "dev": true, "requires": { - "rx-lite": "4.0.8" + "rx-lite": "*" } }, "safe-buffer": { @@ -2239,7 +2276,7 @@ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -2266,7 +2303,7 @@ "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", "dev": true, "requires": { - "spdx-license-ids": "1.2.2" + "spdx-license-ids": "^1.0.2" } }, "spdx-expression-parse": { @@ -2293,8 +2330,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "dependencies": { "ansi-regex": { @@ -2309,7 +2346,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -2320,7 +2357,7 @@ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "strip-ansi": { @@ -2329,7 +2366,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -2356,12 +2393,12 @@ "integrity": "sha1-qBFsEz+sLGH0pCCrbN9cTWHw5DU=", "dev": true, "requires": { - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "chalk": "1.1.3", - "lodash": "4.17.4", + "ajv": "^4.7.0", + "ajv-keywords": "^1.0.0", + "chalk": "^1.1.1", + "lodash": "^4.0.0", "slice-ansi": "0.0.4", - "string-width": "2.1.1" + "string-width": "^2.0.0" }, "dependencies": { "ajv": { @@ -2370,8 +2407,8 @@ "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } } } @@ -2394,7 +2431,7 @@ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.2" } }, "to-fast-properties": { @@ -2415,7 +2452,7 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "1.1.2" + "prelude-ls": "~1.1.2" } }, "typedarray": { @@ -2441,8 +2478,8 @@ "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", "dev": true, "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" } }, "whatwg-fetch": { @@ -2456,7 +2493,7 @@ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "wordwrap": { @@ -2477,7 +2514,7 @@ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", "dev": true, "requires": { - "mkdirp": "0.5.1" + "mkdirp": "^0.5.1" } }, "yallist": { diff --git a/package.json b/package.json index 111b5b8b..f872eb31 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,13 @@ "author": "Zehao Li ", "license": "MIT", "homepage": "https://github.com/HippoAR/react-native-arkit", - "keywords": ["react-native", "react", "native", "ARKit", "AR"], + "keywords": [ + "react-native", + "react", + "native", + "ARKit", + "AR" + ], "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" From 80718be0036325b52f00c0387000517c9ea2739b Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 26 May 2020 22:06:14 -0400 Subject: [PATCH 132/356] start location tracking --- ios/RCTARKit.m | 14 +++++++++++++- ios/RCTARKitManager.m | 4 ++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 28c74dac..6967e4bc 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -344,6 +344,19 @@ - (NSDictionary *)readCameraPosition { return vectorToJson(cameraPosition); } + +- (NSDictionary *)getArAnchorPosition { + // deprecated + + CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(-43.242534,-54.93662) altitude:1] + CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(-43.242534,-54.93662) altitude:1] + CLLocationDistance distance = [location distanceFromLocation:landmark]; + NSLog(@"distance to helloworld ===> %@", distance); + + SCNVector3 cameraPosition = self.nodeManager.cameraOrigin.position; + return vectorToJson(cameraPosition); +} + static NSDictionary * vectorToJson(const SCNVector3 v) { return @{ @"x": @(v.x), @"y": @(v.y), @"z": @(v.z) }; } @@ -403,7 +416,6 @@ -(ARWorldTrackingConfiguration *)configuration { #pragma mark - snapshot methods - (void)hitTestSceneObjects:(const CGPoint)tapPoint resolve:(RCTARKitResolve)resolve reject:(RCTARKitReject)reject { - resolve([self.nodeManager getSceneObjectsHitResult:tapPoint]); } diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 90736e37..a0273e3b 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -450,6 +450,10 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] readCameraPosition]); } +RCT_EXPORT_METHOD(getAnchorPosition:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + resolve([[ARKit sharedInstance] getArAnchorPosition]); +} + RCT_EXPORT_METHOD(getCurrentLightEstimation:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { resolve([[ARKit sharedInstance] getCurrentLightEstimation]); } From 708ba0747614b5f5ca35875708743c3ff55cf15d Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 26 May 2020 22:14:03 -0400 Subject: [PATCH 133/356] expose aranchor function --- ios/RCTARKit.h | 1 + 1 file changed, 1 insertion(+) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index cda73a9f..c7086037 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -96,6 +96,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)focusScene; - (void)clearScene; - (NSDictionary *)readCameraPosition; +- (NSDictionary *)getArAnchorPosition; - (NSDictionary *)readCamera; - (NSDictionary* )getCurrentLightEstimation; - (NSArray * )getCurrentDetectedFeaturePoints; From b0a99a8dd295819960647f97100246f734e046de Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 26 May 2020 22:21:48 -0400 Subject: [PATCH 134/356] remov alt and declar distance var --- ios/RCTARKit.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 6967e4bc..d0cc6326 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -348,9 +348,9 @@ - (NSDictionary *)readCameraPosition { - (NSDictionary *)getArAnchorPosition { // deprecated - CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(-43.242534,-54.93662) altitude:1] - CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(-43.242534,-54.93662) altitude:1] - CLLocationDistance distance = [location distanceFromLocation:landmark]; + CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(-43.242534,-54.93662)] + CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(-43.242534,-54.93662)] + CLLocationDistance *distance = [location distanceFromLocation:landmark]; NSLog(@"distance to helloworld ===> %@", distance); SCNVector3 cameraPosition = self.nodeManager.cameraOrigin.position; From 7467cab3ae50394fae9c13d20b9e254a11636060 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 26 May 2020 22:30:57 -0400 Subject: [PATCH 135/356] update location function' --- ios/RCTARKit.m | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index d0cc6326..119c04be 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -348,10 +348,18 @@ - (NSDictionary *)readCameraPosition { - (NSDictionary *)getArAnchorPosition { // deprecated - CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(-43.242534,-54.93662)] - CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(-43.242534,-54.93662)] + CLLocation *landmark = [[[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(41.44994138650804, -1.1874988592864875) + altitude:0 + horizontalAccuracy:0 + verticalAccuracy:0 + timestamp:[NSDate date]] autorelease]; + CLLocation *location = [[[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(41.44994138650804, -1.1874988592864875) + altitude:0 + horizontalAccuracy:0 + verticalAccuracy:0 + timestamp:[NSDate date]] autorelease]; CLLocationDistance *distance = [location distanceFromLocation:landmark]; - NSLog(@"distance to helloworld ===> %@", distance); + NSLog(@"distance to helloworld ===> %@", location); SCNVector3 cameraPosition = self.nodeManager.cameraOrigin.position; return vectorToJson(cameraPosition); From 6ae1d52996105919d8dc223710f9380170ee63ce Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 26 May 2020 22:38:20 -0400 Subject: [PATCH 136/356] update location --- ios/RCTARKit.m | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 119c04be..f6f8a3a8 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -361,8 +361,9 @@ - (NSDictionary *)getArAnchorPosition { CLLocationDistance *distance = [location distanceFromLocation:landmark]; NSLog(@"distance to helloworld ===> %@", location); - SCNVector3 cameraPosition = self.nodeManager.cameraOrigin.position; - return vectorToJson(cameraPosition); + return @{ + "hello": "world" + }; } static NSDictionary * vectorToJson(const SCNVector3 v) { From 7e436781c73c7d7a85c8c9fec4a26961afbda1aa Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 26 May 2020 22:54:06 -0400 Subject: [PATCH 137/356] remove auto release --- ios/RCTARKit.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index f6f8a3a8..68c65f4e 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -352,17 +352,17 @@ - (NSDictionary *)getArAnchorPosition { altitude:0 horizontalAccuracy:0 verticalAccuracy:0 - timestamp:[NSDate date]] autorelease]; + timestamp:[NSDate date]]]; CLLocation *location = [[[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(41.44994138650804, -1.1874988592864875) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 - timestamp:[NSDate date]] autorelease]; + timestamp:[NSDate date]]]; CLLocationDistance *distance = [location distanceFromLocation:landmark]; NSLog(@"distance to helloworld ===> %@", location); return @{ - "hello": "world" + @"hello": "world" }; } From 5b5fcd291b26faa8a1ec4bc8ac9addef1484c553 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 26 May 2020 23:02:54 -0400 Subject: [PATCH 138/356] update location logs' --- ios/RCTARKit.m | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 68c65f4e..b4b21e75 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -348,21 +348,20 @@ - (NSDictionary *)readCameraPosition { - (NSDictionary *)getArAnchorPosition { // deprecated - CLLocation *landmark = [[[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(41.44994138650804, -1.1874988592864875) + CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(41.44994138650804, -1.1874988592864875) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 - timestamp:[NSDate date]]]; - CLLocation *location = [[[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(41.44994138650804, -1.1874988592864875) + timestamp:[NSDate date]]; + CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(41.44994138650804, -1.1874988592864875) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 - timestamp:[NSDate date]]]; - CLLocationDistance *distance = [location distanceFromLocation:landmark]; - NSLog(@"distance to helloworld ===> %@", location); - + timestamp:[NSDate date]]; + CLLocationDistance distance = [location distanceFromLocation:landmark]; + NSLog(@"distance:-%f",distance); return @{ - @"hello": "world" + @"hello": @"world" }; } From d0eb07f7dbaa8caf3c4aa33886b584163467db6e Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 26 May 2020 23:12:06 -0400 Subject: [PATCH 139/356] update test values --- ios/RCTARKit.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index b4b21e75..f9d02ec7 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -353,12 +353,13 @@ - (NSDictionary *)getArAnchorPosition { horizontalAccuracy:0 verticalAccuracy:0 timestamp:[NSDate date]]; - CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(41.44994138650804, -1.1874988592864875) + CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(45.44994138650804, -3.1874988592864875) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 timestamp:[NSDate date]]; CLLocationDistance distance = [location distanceFromLocation:landmark]; + NSLog(@"distance:-%f",distance); return @{ @"hello": @"world" From da66cd50555a84b567445b7e038c1263ded6b5b2 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 27 May 2020 08:31:13 -0400 Subject: [PATCH 140/356] update location tracking --- ios/RCTARKit.m | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index f9d02ec7..fbc36e7a 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -346,14 +346,13 @@ - (NSDictionary *)readCameraPosition { - (NSDictionary *)getArAnchorPosition { - // deprecated - CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(41.44994138650804, -1.1874988592864875) + CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(43.08051617820102, -70.94884654513649) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 timestamp:[NSDate date]]; - CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(45.44994138650804, -3.1874988592864875) + CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(43.08044748850453, -70.94876264228574) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 From 34d65b296ebbc04ae6c1ac8e28242a0ab8bd78e4 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 27 May 2020 08:43:53 -0400 Subject: [PATCH 141/356] add option coords --- ios/RCTARKit.m | 2 +- ios/RCTARKitManager.m | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index fbc36e7a..5a879b25 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -345,7 +345,7 @@ - (NSDictionary *)readCameraPosition { } -- (NSDictionary *)getArAnchorPosition { +- (NSDictionary *)getArAnchorPosition: (NSDictionary*) options { CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(43.08051617820102, -70.94884654513649) altitude:0 diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index a0273e3b..21f7a7af 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -450,8 +450,8 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] readCameraPosition]); } -RCT_EXPORT_METHOD(getAnchorPosition:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - resolve([[ARKit sharedInstance] getArAnchorPosition]); +RCT_EXPORT_METHOD(getAnchorPosition:(RCTPromiseResolveBlock)resolve options:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject) { + resolve([[ARKit sharedInstance] getArAnchorPosition:options]); } RCT_EXPORT_METHOD(getCurrentLightEstimation:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { From dce26ed39c0ba8b5ccd9288963a10068dea47988 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 27 May 2020 08:51:30 -0400 Subject: [PATCH 142/356] update option var pass --- ios/RCTARKit.m | 4 ++-- ios/RCTARKitManager.m | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 5a879b25..bf08ff4c 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -347,12 +347,12 @@ - (NSDictionary *)readCameraPosition { - (NSDictionary *)getArAnchorPosition: (NSDictionary*) options { - CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(43.08051617820102, -70.94884654513649) + CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(options["landmarkLat"], options["landmarkLong"]) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 timestamp:[NSDate date]]; - CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(43.08044748850453, -70.94876264228574) + CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(options["locationLat"], options["locationLong"]) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 21f7a7af..0389fb5a 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -451,7 +451,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP } RCT_EXPORT_METHOD(getAnchorPosition:(RCTPromiseResolveBlock)resolve options:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject) { - resolve([[ARKit sharedInstance] getArAnchorPosition:options]); + resolve([[ARKit sharedInstance] getArAnchorPosition:options:options]); } RCT_EXPORT_METHOD(getCurrentLightEstimation:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { From 57a55360a07deea4d75b277a687df967ce82b3e9 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 27 May 2020 09:04:41 -0400 Subject: [PATCH 143/356] add options to location --- ios/RCTARKit.m | 2 +- ios/RCTARKitManager.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index bf08ff4c..3d16cfe4 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -345,7 +345,7 @@ - (NSDictionary *)readCameraPosition { } -- (NSDictionary *)getArAnchorPosition: (NSDictionary*) options { +- (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(options["landmarkLat"], options["landmarkLong"]) altitude:0 diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 0389fb5a..21f7a7af 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -451,7 +451,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP } RCT_EXPORT_METHOD(getAnchorPosition:(RCTPromiseResolveBlock)resolve options:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject) { - resolve([[ARKit sharedInstance] getArAnchorPosition:options:options]); + resolve([[ARKit sharedInstance] getArAnchorPosition:options]); } RCT_EXPORT_METHOD(getCurrentLightEstimation:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { From d354946822110864f4261bdf2cc847b32d8e21b7 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 27 May 2020 09:14:47 -0400 Subject: [PATCH 144/356] add options var --- ios/RCTARKit.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index c7086037..c0eb2588 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -96,7 +96,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)focusScene; - (void)clearScene; - (NSDictionary *)readCameraPosition; -- (NSDictionary *)getArAnchorPosition; +- (NSDictionary *)getArAnchorPosition:(NSDictionary*)options; - (NSDictionary *)readCamera; - (NSDictionary* )getCurrentLightEstimation; - (NSArray * )getCurrentDetectedFeaturePoints; From a97e549697407d83faf77a1ad6291842494f47a4 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 28 May 2020 21:53:03 -0400 Subject: [PATCH 145/356] add @ before string --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 3d16cfe4..8dae6167 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -347,12 +347,12 @@ - (NSDictionary *)readCameraPosition { - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { - CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(options["landmarkLat"], options["landmarkLong"]) + CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(options["@landmarkLat"], options["@landmarkLong"]) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 timestamp:[NSDate date]]; - CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(options["locationLat"], options["locationLong"]) + CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(options["@locationLat"], options["@locationLong"]) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 From 4d636a944e6a7d544eb388954d82cf56090718f4 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 28 May 2020 22:12:24 -0400 Subject: [PATCH 146/356] add @ before string --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 8dae6167..84e73019 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -347,12 +347,12 @@ - (NSDictionary *)readCameraPosition { - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { - CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(options["@landmarkLat"], options["@landmarkLong"]) + CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(options[@"@landmarkLat"], options[@"@landmarkLong"]) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 timestamp:[NSDate date]]; - CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(options["@locationLat"], options["@locationLong"]) + CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(options[@"@locationLat"], options[@"@locationLong"]) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 From ac673da48be1b8edd947626d4e28cf79161e1538 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 28 May 2020 22:23:53 -0400 Subject: [PATCH 147/356] add landmark lat and long --- ios/RCTARKit.m | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 84e73019..eb399961 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -347,22 +347,29 @@ - (NSDictionary *)readCameraPosition { - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { - CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(options[@"@landmarkLat"], options[@"@landmarkLong"]) - altitude:0 - horizontalAccuracy:0 - verticalAccuracy:0 - timestamp:[NSDate date]]; - CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(options[@"@locationLat"], options[@"@locationLong"]) - altitude:0 - horizontalAccuracy:0 - verticalAccuracy:0 - timestamp:[NSDate date]]; - CLLocationDistance distance = [location distanceFromLocation:landmark]; - - NSLog(@"distance:-%f",distance); - return @{ - @"hello": @"world" - }; + if(options[@"landmarkLat"]){ + if(options[@"landmarkLong"]){ + + CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(options[@"landmarkLat"], options[@"landmarkLong"]) + altitude:0 + horizontalAccuracy:0 + verticalAccuracy:0 + timestamp:[NSDate date]]; + + CLLocationDistance distance = [landmark distanceFromLocation:landmark]; + + NSLog(@"distance:-%f",distance); + return @{ + @"hello": @"world" + }; + } + } + // CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(options[@"locationLat"], options[@"locationLong"]) + // altitude:0 + // horizontalAccuracy:0 + // verticalAccuracy:0 + // timestamp:[NSDate date]]; + } static NSDictionary * vectorToJson(const SCNVector3 v) { From a2d93c1a847b7483994ddd6fee59293898441fb5 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 28 May 2020 22:35:17 -0400 Subject: [PATCH 148/356] add floats as lat and long --- ios/RCTARKit.m | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index eb399961..16d0df04 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -349,13 +349,16 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { if(options[@"landmarkLat"]){ if(options[@"landmarkLong"]){ + float landMarkLat = options[@"landmarkLat"] + float landMarkLong = options[@"landmarkLong"] - CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(options[@"landmarkLat"], options[@"landmarkLong"]) + + CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(landMarkLat, landMarkLong) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 timestamp:[NSDate date]]; - + CLLocationDistance distance = [landmark distanceFromLocation:landmark]; NSLog(@"distance:-%f",distance); From b0ff00a0ccf8b995516e9501ec564f9e522cdfe1 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 28 May 2020 22:44:02 -0400 Subject: [PATCH 149/356] update landmark lat and long --- ios/RCTARKit.m | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 16d0df04..faa4aefc 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -349,11 +349,12 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { if(options[@"landmarkLat"]){ if(options[@"landmarkLong"]){ - float landMarkLat = options[@"landmarkLat"] - float landMarkLong = options[@"landmarkLong"] + NSNumber * landMarkLat = options[@"landmarkLat"]; + NSNumber * landMarkLong = options[@"landmarkLong"]; - CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(landMarkLat, landMarkLong) + + CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(1.0, 0.1) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 From 9def2d59706733f142e64634a937073233d42628 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 28 May 2020 22:50:13 -0400 Subject: [PATCH 150/356] add else statement --- ios/RCTARKit.m | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index faa4aefc..d0a55915 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -368,6 +368,12 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { }; } } + + return @{ + @"results": @"no results" + }; + + // CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(options[@"locationLat"], options[@"locationLong"]) // altitude:0 // horizontalAccuracy:0 From 983dc8d9e116405134d935fa6b3a72ba2aa67adb Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 28 May 2020 23:03:48 -0400 Subject: [PATCH 151/356] add else statement --- ios/RCTARKit.m | 1 + 1 file changed, 1 insertion(+) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index d0a55915..cfa69b0a 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -352,6 +352,7 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { NSNumber * landMarkLat = options[@"landmarkLat"]; NSNumber * landMarkLong = options[@"landmarkLong"]; + float nextFloat = [landMarkLat floatValue]; CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(1.0, 0.1) From 4a4076d92e4ad5a54d4cb41cc81a0844cf89baa9 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 28 May 2020 23:15:14 -0400 Subject: [PATCH 152/356] update location code --- ios/RCTARKit.m | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index cfa69b0a..a26b88d6 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -350,18 +350,31 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { if(options[@"landmarkLat"]){ if(options[@"landmarkLong"]){ - NSNumber * landMarkLat = options[@"landmarkLat"]; - NSNumber * landMarkLong = options[@"landmarkLong"]; - float nextFloat = [landMarkLat floatValue]; + NSNumber * nsLandMarkLat = options[@"landmarkLat"]; + NSNumber * nsLandMarkLong = options[@"landmarkLong"]; + NSNumber * nsLocationLat = options[@"locationLat"]; + NSNumber * nsLocationLong = options[@"locationLong"]; + float landMarkLat = [nsLandMarkLat floatValue]; + float landMarklong = [nsLandMarkLong floatValue]; + float locationLat = [nsLocationLat floatValue]; + float locationLong = [nsLocationLong floatValue]; - CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(1.0, 0.1) + CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(landMarkLat, landMarkLat) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 timestamp:[NSDate date]]; - CLLocationDistance distance = [landmark distanceFromLocation:landmark]; + + CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(locationLat, locationLong) + altitude:0 + horizontalAccuracy:0 + verticalAccuracy:0 + timestamp:[NSDate date]]; + + CLLocationDistance distance = [location distanceFromLocation:landmark]; + NSLog(@"distance:-%f",distance); return @{ @@ -375,11 +388,6 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { }; - // CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(options[@"locationLat"], options[@"locationLong"]) - // altitude:0 - // horizontalAccuracy:0 - // verticalAccuracy:0 - // timestamp:[NSDate date]]; } From 2009571967eab2ff1b2ec3717067f9e29f06b271 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 28 May 2020 23:41:49 -0400 Subject: [PATCH 153/356] update order of params --- ios/RCTARKitManager.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 21f7a7af..456597a9 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -450,7 +450,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] readCameraPosition]); } -RCT_EXPORT_METHOD(getAnchorPosition:(RCTPromiseResolveBlock)resolve options:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject) { +RCT_EXPORT_METHOD(getAnchorPosition: options:(NSDictionary *)options resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { resolve([[ARKit sharedInstance] getArAnchorPosition:options]); } From 91622a22c7088f2c15536099f7c62cc6e27476f8 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sat, 30 May 2020 10:30:26 -0400 Subject: [PATCH 154/356] update location func --- ios/RCTARKit.m | 2 +- ios/RCTARKitManager.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index a26b88d6..cf9086bc 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -373,7 +373,7 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { verticalAccuracy:0 timestamp:[NSDate date]]; - CLLocationDistance distance = [location distanceFromLocation:landmark]; + CLLocationDistance distance = [landmark distanceFromLocation:location]; NSLog(@"distance:-%f",distance); diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 456597a9..865289bc 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -450,7 +450,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] readCameraPosition]); } -RCT_EXPORT_METHOD(getAnchorPosition: options:(NSDictionary *)options resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { +RCT_EXPORT_METHOD(getAnchorPosition:(NSDictionary *)options resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { resolve([[ARKit sharedInstance] getArAnchorPosition:options]); } From 6b06ea17db4378e64ebacb6c37ccd19e49bdc4f5 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sat, 30 May 2020 10:53:45 -0400 Subject: [PATCH 155/356] create matrix: --- ios/RCTARKit.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index cf9086bc..1769e452 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -374,6 +374,8 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { timestamp:[NSDate date]]; CLLocationDistance distance = [landmark distanceFromLocation:location]; + result = matrix_identity_float4x4 + NSLog(@"distance:-%f",distance); From 5e1f45fe88303ec589e17931a492290adb7875af Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sat, 30 May 2020 11:02:26 -0400 Subject: [PATCH 156/356] udpate matrix --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 1769e452..371a827e 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -374,7 +374,7 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { timestamp:[NSDate date]]; CLLocationDistance distance = [landmark distanceFromLocation:location]; - result = matrix_identity_float4x4 + matrix_float4x4 result = matrix_identity_float4x4; From d1010325ba48973411651821d346ab006581915c Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sat, 30 May 2020 11:10:33 -0400 Subject: [PATCH 157/356] log matrix result --- ios/RCTARKit.m | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 371a827e..206cee6b 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -377,8 +377,9 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { matrix_float4x4 result = matrix_identity_float4x4; - - NSLog(@"distance:-%f",distance); + NSLog(@"matrix_result:-%f", result); + NSLog(@"distance:-%f", distance); + return @{ @"hello": @"world" }; From 2896e1d30796a6711b3c5212e4a8a11f369e5e50 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sat, 30 May 2020 11:20:54 -0400 Subject: [PATCH 158/356] update matrix result --- ios/RCTARKit.m | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 206cee6b..9aaae41e 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -375,11 +375,14 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { CLLocationDistance distance = [landmark distanceFromLocation:location]; matrix_float4x4 result = matrix_identity_float4x4; + result.columns[3][0] = 0; + result.columns[3][1] = 0; + result.columns[3][2] = -0.1; NSLog(@"matrix_result:-%f", result); NSLog(@"distance:-%f", distance); - + return @{ @"hello": @"world" }; From 1ed2b0dd6ae45e510e4204090099c9015e8c3836 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sat, 30 May 2020 11:30:30 -0400 Subject: [PATCH 159/356] log results --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 9aaae41e..a97083e3 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -380,7 +380,7 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { result.columns[3][2] = -0.1; - NSLog(@"matrix_result:-%f", result); + NSLog(@"matrix_result:-%f", result.columns[3][2]); NSLog(@"distance:-%f", distance); return @{ From 006efc845fdb09a4ee764627b0b40cd31ecfb139 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sat, 30 May 2020 11:48:10 -0400 Subject: [PATCH 160/356] update transform --- ios/RCTARKit.m | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index a97083e3..afa4bdb7 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -374,11 +374,13 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { timestamp:[NSDate date]]; CLLocationDistance distance = [landmark distanceFromLocation:location]; - matrix_float4x4 result = matrix_identity_float4x4; - result.columns[3][0] = 0; - result.columns[3][1] = 0; - result.columns[3][2] = -0.1; + matrix_float4x4 distanceTransform = matrix_identity_float4x4; + distanceTransform.columns[3][0] = 0; + distanceTransform.columns[3][1] = 0; + distanceTransform.columns[3][2] = distance; + newTransForm = [[ARAnchor alloc] initWithTransform:distanceTransform]; + NSLog(@"newAnchor:-%f", newTransForm); NSLog(@"matrix_result:-%f", result.columns[3][2]); NSLog(@"distance:-%f", distance); From ca3d33b5292f904e0cea031923b8f49e72be857d Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sat, 30 May 2020 11:56:40 -0400 Subject: [PATCH 161/356] add new anchor --- ios/RCTARKit.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index afa4bdb7..971f9a0e 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -379,10 +379,10 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { distanceTransform.columns[3][1] = 0; distanceTransform.columns[3][2] = distance; - newTransForm = [[ARAnchor alloc] initWithTransform:distanceTransform]; - NSLog(@"newAnchor:-%f", newTransForm); + ARAnchor *newAnchor = [[ARAnchor alloc] initWithTransform:distanceTransform]; + NSLog(@"newAnchor:-%f", newAnchor); - NSLog(@"matrix_result:-%f", result.columns[3][2]); + NSLog(@"matrix_result:-%f", newAnchor); NSLog(@"distance:-%f", distance); return @{ From 36c384463b210084e2b80d54b03cbe297abb104b Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sat, 30 May 2020 12:21:14 -0400 Subject: [PATCH 162/356] update location params --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 971f9a0e..3b5c486c 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -360,14 +360,14 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { float locationLat = [nsLocationLat floatValue]; float locationLong = [nsLocationLong floatValue]; - CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(landMarkLat, landMarkLat) + CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(43.08029866752368, -70.94861127912127) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 timestamp:[NSDate date]]; - CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(locationLat, locationLong) + CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(43.080337992970904, -70.94862029914505) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 From d36b7c67a8dfbe4f16f7b4b4910ee307811bc399 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sat, 30 May 2020 12:30:04 -0400 Subject: [PATCH 163/356] add landmark lat --- ios/RCTARKit.m | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 3b5c486c..da027f86 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -384,6 +384,10 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { NSLog(@"matrix_result:-%f", newAnchor); NSLog(@"distance:-%f", distance); + NSLog(@"nsLandMarkLat:-%f", nsLandMarkLat); + NSLog(@"options:-%f", options[@"landmarkLat"]); + NSLog(@"landMarkLat:-%f", nsLandMarkLat); + return @{ @"hello": @"world" From d495cd97eb332f0f5efda255f01391167ec40a10 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sat, 30 May 2020 12:38:01 -0400 Subject: [PATCH 164/356] add landmark log --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index da027f86..f6b8143f 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -386,8 +386,8 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { NSLog(@"distance:-%f", distance); NSLog(@"nsLandMarkLat:-%f", nsLandMarkLat); NSLog(@"options:-%f", options[@"landmarkLat"]); - NSLog(@"landMarkLat:-%f", nsLandMarkLat); - + NSLog(@"landMarkLat:-%f", landMarkLat); + NSLog(@"landmark:-%f", landmark); return @{ @"hello": @"world" From 6824557991bffe5e1b0be5d5d4342cfb0b7b3fc4 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 11:09:25 -0400 Subject: [PATCH 165/356] update lat long options --- ios/RCTARKit.m | 1 - ios/RCTARKitManager.m | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index f6b8143f..1abc7871 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -381,7 +381,6 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { ARAnchor *newAnchor = [[ARAnchor alloc] initWithTransform:distanceTransform]; NSLog(@"newAnchor:-%f", newAnchor); - NSLog(@"matrix_result:-%f", newAnchor); NSLog(@"distance:-%f", distance); NSLog(@"nsLandMarkLat:-%f", nsLandMarkLat); diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 865289bc..62c168f4 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -451,6 +451,8 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP } RCT_EXPORT_METHOD(getAnchorPosition:(NSDictionary *)options resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + NSLog(@"latlongOptions:-%f", options); + resolve([[ARKit sharedInstance] getArAnchorPosition:options]); } From 2bcd0b673aeb32c1cca3c312fda4ee73618cd9b3 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 11:18:37 -0400 Subject: [PATCH 166/356] landmark lat --- ios/RCTARKitManager.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 62c168f4..4d7a6ae0 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -451,7 +451,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP } RCT_EXPORT_METHOD(getAnchorPosition:(NSDictionary *)options resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - NSLog(@"latlongOptions:-%f", options); + NSLog(@"latlongOptions:-%f", options[@"landmarkLat"]); resolve([[ARKit sharedInstance] getArAnchorPosition:options]); } From a961701bd6ef1d0fdc81da8e424e2cd2975a2a08 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 11:37:26 -0400 Subject: [PATCH 167/356] initn number with float --- ios/RCTARKit.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 1abc7871..203ba72c 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -350,7 +350,8 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { if(options[@"landmarkLat"]){ if(options[@"landmarkLong"]){ - NSNumber * nsLandMarkLat = options[@"landmarkLat"]; + // NSNumber * nsLandMarkLat = options[@"landmarkLat"]; + NSNumber * nsLandMarkLat = [[NSNumber alloc] initWithFloat:[[options objectForKey:@"landmarkLat"] doubleValue]]; NSNumber * nsLandMarkLong = options[@"landmarkLong"]; NSNumber * nsLocationLat = options[@"locationLat"]; NSNumber * nsLocationLong = options[@"locationLong"]; From ab65c5bc4b7216773e66e675f0f3095bc15e0929 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 11:58:30 -0400 Subject: [PATCH 168/356] add double vlaue --- ios/RCTARKit.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 203ba72c..cc1390c4 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -356,6 +356,8 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { NSNumber * nsLocationLat = options[@"locationLat"]; NSNumber * nsLocationLong = options[@"locationLong"]; + double testDouble = [options[@"landmarkLat"] doubleValue]; + float landMarkLat = [nsLandMarkLat floatValue]; float landMarklong = [nsLandMarkLong floatValue]; float locationLat = [nsLocationLat floatValue]; @@ -388,6 +390,7 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { NSLog(@"options:-%f", options[@"landmarkLat"]); NSLog(@"landMarkLat:-%f", landMarkLat); NSLog(@"landmark:-%f", landmark); + NSLog(@"testDouble:-%f", testDouble); return @{ @"hello": @"world" From 23871c429eb6ba0a228c15c8d3662f680d76631d Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 12:24:52 -0400 Subject: [PATCH 169/356] add double value --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index cc1390c4..e8465b05 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -351,7 +351,7 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { if(options[@"landmarkLong"]){ // NSNumber * nsLandMarkLat = options[@"landmarkLat"]; - NSNumber * nsLandMarkLat = [[NSNumber alloc] initWithFloat:[[options objectForKey:@"landmarkLat"] doubleValue]]; + NSNumber * nsLandMarkLat = [[NSNumber alloc] initWithDouble:[[options objectForKey:@"landmarkLat"] doubleValue]]; NSNumber * nsLandMarkLong = options[@"landmarkLong"]; NSNumber * nsLocationLat = options[@"locationLat"]; NSNumber * nsLocationLong = options[@"locationLong"]; From 106615e2d747c47e5d918349870ea98f642ec2f2 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 12:44:00 -0400 Subject: [PATCH 170/356] add long diff --- ios/RCTARKit.m | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index e8465b05..3cd95724 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -383,15 +383,13 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { distanceTransform.columns[3][2] = distance; ARAnchor *newAnchor = [[ARAnchor alloc] initWithTransform:distanceTransform]; - NSLog(@"newAnchor:-%f", newAnchor); - NSLog(@"matrix_result:-%f", newAnchor); - NSLog(@"distance:-%f", distance); - NSLog(@"nsLandMarkLat:-%f", nsLandMarkLat); - NSLog(@"options:-%f", options[@"landmarkLat"]); - NSLog(@"landMarkLat:-%f", landMarkLat); - NSLog(@"landmark:-%f", landmark); - NSLog(@"testDouble:-%f", testDouble); + double startLat = GLKMathDegreesToRadians(locationLat); + double startLon = GLKMathDegreesToRadians(landMarklong); + double endLat = GLKMathDegreesToRadians(landMarkLat) + double endLon = GLKMathDegreesToRadians(locationLong) + double lonDiff = endLon - startLon + return @{ @"hello": @"world" }; From 93a806d1e86f2293781530fefd455270076da986 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 12:54:54 -0400 Subject: [PATCH 171/356] add semicolon --- ios/RCTARKit.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 3cd95724..d3e58757 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -386,9 +386,9 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { double startLat = GLKMathDegreesToRadians(locationLat); double startLon = GLKMathDegreesToRadians(landMarklong); - double endLat = GLKMathDegreesToRadians(landMarkLat) - double endLon = GLKMathDegreesToRadians(locationLong) - double lonDiff = endLon - startLon + double endLat = GLKMathDegreesToRadians(landMarkLat); + double endLon = GLKMathDegreesToRadians(locationLong); + double lonDiff = endLon - startLon; return @{ @"hello": @"world" From a297d06c3f011012551579efbb78eb87bec462e6 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 13:04:44 -0400 Subject: [PATCH 172/356] return angle --- ios/RCTARKit.m | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index d3e58757..beb65936 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -389,7 +389,10 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { double endLat = GLKMathDegreesToRadians(landMarkLat); double endLon = GLKMathDegreesToRadians(locationLong); double lonDiff = endLon - startLon; - + double y = sin(lonDiff) * cos(endLat) + double x = (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)) + double angle = atan2(y, x) + return @{ @"hello": @"world" }; From 5b9975fd2cf8c53d6dbdfce99ae664b7f3440321 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 13:12:55 -0400 Subject: [PATCH 173/356] add semicolons --- ios/RCTARKit.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index beb65936..8ac4fcf0 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -389,9 +389,9 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { double endLat = GLKMathDegreesToRadians(landMarkLat); double endLon = GLKMathDegreesToRadians(locationLong); double lonDiff = endLon - startLon; - double y = sin(lonDiff) * cos(endLat) - double x = (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)) - double angle = atan2(y, x) + double y = sin(lonDiff) * cos(endLat); + double x = (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)); + double angle = atan2(y, x); return @{ @"hello": @"world" From 3847162bb4b3549d36402c45c8634cd29d11f749 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 13:23:21 -0400 Subject: [PATCH 174/356] update location tracking --- ios/RCTARKit.m | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 8ac4fcf0..ee16c63e 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -376,7 +376,7 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { verticalAccuracy:0 timestamp:[NSDate date]]; - CLLocationDistance distance = [landmark distanceFromLocation:location]; + CLLocationDistance distance = [location distanceFromLocation:landmark]; matrix_float4x4 distanceTransform = matrix_identity_float4x4; distanceTransform.columns[3][0] = 0; distanceTransform.columns[3][1] = 0; @@ -391,7 +391,9 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { double lonDiff = endLon - startLon; double y = sin(lonDiff) * cos(endLat); double x = (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)); - double angle = atan2(y, x); + double rotation = atan2(y, x); + double opposite = landmark.altitude - location.altitude + double tilt = atan2(opposite, distance) return @{ @"hello": @"world" From acc83a260cfbf9a2211ffc108428c69067b0ee49 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 13:27:47 -0400 Subject: [PATCH 175/356] add semicolons --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index ee16c63e..61d59763 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -392,8 +392,8 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { double y = sin(lonDiff) * cos(endLat); double x = (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)); double rotation = atan2(y, x); - double opposite = landmark.altitude - location.altitude - double tilt = atan2(opposite, distance) + double opposite = landmark.altitude - location.altitude; + double tilt = atan2(opposite, distance); return @{ @"hello": @"world" From 06d032455436c6a57041c79efa75ce7d045be32f Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 13:41:31 -0400 Subject: [PATCH 176/356] add rotation matrix --- ios/RCTARKit.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 61d59763..374a55b4 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -394,6 +394,8 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { double rotation = atan2(y, x); double opposite = landmark.altitude - location.altitude; double tilt = atan2(opposite, distance); + matrix_float4x4 tiltRotation = GLKMatrix4MakeXRotation(tilt); + return @{ @"hello": @"world" From 0d144310981477f5c35bb15511e581691c0223de Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 13:46:40 -0400 Subject: [PATCH 177/356] init page with new value' --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 374a55b4..750e2d47 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -394,7 +394,7 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { double rotation = atan2(y, x); double opposite = landmark.altitude - location.altitude; double tilt = atan2(opposite, distance); - matrix_float4x4 tiltRotation = GLKMatrix4MakeXRotation(tilt); + glkMatrix tiltRotation = GLKMatrix4MakeXRotation(tilt); return @{ From ca127f3f9f865ced1a8bf56bef2bd8619ab796db Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 13:51:43 -0400 Subject: [PATCH 178/356] update matrix roattion --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 750e2d47..6a5b9cde 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -394,7 +394,7 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { double rotation = atan2(y, x); double opposite = landmark.altitude - location.altitude; double tilt = atan2(opposite, distance); - glkMatrix tiltRotation = GLKMatrix4MakeXRotation(tilt); + GLKMatrix4 tiltRotation = GLKMatrix4MakeXRotation(tilt); return @{ From c8bdad7b1189efe3acc145df5945ba403274f0f5 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 14:05:32 -0400 Subject: [PATCH 179/356] re trun distance transform --- ios/RCTARKit.m | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 6a5b9cde..2c8616dc 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -382,23 +382,22 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { distanceTransform.columns[3][1] = 0; distanceTransform.columns[3][2] = distance; - ARAnchor *newAnchor = [[ARAnchor alloc] initWithTransform:distanceTransform]; - double startLat = GLKMathDegreesToRadians(locationLat); - double startLon = GLKMathDegreesToRadians(landMarklong); - double endLat = GLKMathDegreesToRadians(landMarkLat); - double endLon = GLKMathDegreesToRadians(locationLong); - double lonDiff = endLon - startLon; - double y = sin(lonDiff) * cos(endLat); - double x = (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)); - double rotation = atan2(y, x); - double opposite = landmark.altitude - location.altitude; - double tilt = atan2(opposite, distance); - GLKMatrix4 tiltRotation = GLKMatrix4MakeXRotation(tilt); + // double startLat = GLKMathDegreesToRadians(locationLat); + // double startLon = GLKMathDegreesToRadians(landMarklong); + // double endLat = GLKMathDegreesToRadians(landMarkLat); + // double endLon = GLKMathDegreesToRadians(locationLong); + // double lonDiff = endLon - startLon; + // double y = sin(lonDiff) * cos(endLat); + // double x = (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)); + // double rotation = atan2(y, x); + // double opposite = landmark.altitude - location.altitude; + // double tilt = atan2(opposite, distance); + // GLKMatrix4 tiltRotation = GLKMatrix4MakeXRotation(tilt); return @{ - @"hello": @"world" + @"results": distanceTransform }; } } From 407815f354d48e1908cd8a4e3e930254d6f8130a Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 14:14:07 -0400 Subject: [PATCH 180/356] update distance --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 2c8616dc..1495c036 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -397,7 +397,7 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { return @{ - @"results": distanceTransform + @"results": distance }; } } From 4faf85f7096e1a197c102a1d346401bb3b2f79f8 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 14:20:12 -0400 Subject: [PATCH 181/356] log distance --- ios/RCTARKit.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 1495c036..e618e3a7 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -381,6 +381,7 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { distanceTransform.columns[3][0] = 0; distanceTransform.columns[3][1] = 0; distanceTransform.columns[3][2] = distance; + NSLog("distance:", distance) // double startLat = GLKMathDegreesToRadians(locationLat); @@ -397,7 +398,7 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { return @{ - @"results": distance + @"results": @"test" }; } } From ef3eb1f696f08dff31beac0568c2042ec8999cff Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 14:25:34 -0400 Subject: [PATCH 182/356] add semicolon --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index e618e3a7..9928a874 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -381,7 +381,7 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { distanceTransform.columns[3][0] = 0; distanceTransform.columns[3][1] = 0; distanceTransform.columns[3][2] = distance; - NSLog("distance:", distance) + NSLog("distance:", distance); // double startLat = GLKMathDegreesToRadians(locationLat); From 1916754e5acede78458bb41207019c8a3ea0b610 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 14:35:35 -0400 Subject: [PATCH 183/356] add log' --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 9928a874..c00412de 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -381,7 +381,7 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { distanceTransform.columns[3][0] = 0; distanceTransform.columns[3][1] = 0; distanceTransform.columns[3][2] = distance; - NSLog("distance:", distance); + NSLog(@"distance:-%f", distance); // double startLat = GLKMathDegreesToRadians(locationLat); From 7d9a7c96bda4a498e22e65f90b8f1c56e182ce23 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 31 May 2020 14:43:15 -0400 Subject: [PATCH 184/356] return distance --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index c00412de..a532c35c 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -398,7 +398,7 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { return @{ - @"results": @"test" + @"results": @(distance) }; } } From af43404a7f503733d3c218c517600b499cbe4ef2 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 2 Jun 2020 21:28:23 -0400 Subject: [PATCH 185/356] log y value --- ios/RCTARKit.m | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index a532c35c..7ff56bdb 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -384,12 +384,14 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { NSLog(@"distance:-%f", distance); - // double startLat = GLKMathDegreesToRadians(locationLat); - // double startLon = GLKMathDegreesToRadians(landMarklong); - // double endLat = GLKMathDegreesToRadians(landMarkLat); - // double endLon = GLKMathDegreesToRadians(locationLong); - // double lonDiff = endLon - startLon; - // double y = sin(lonDiff) * cos(endLat); + double startLat = GLKMathDegreesToRadians(locationLat); + double startLon = GLKMathDegreesToRadians(landMarklong); + double endLat = GLKMathDegreesToRadians(landMarkLat); + double endLon = GLKMathDegreesToRadians(locationLong); + double lonDiff = endLon - startLon; + double y = sin(lonDiff) * cos(endLat); + NSLog(@"yvalue:-%f", y); + // double x = (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)); // double rotation = atan2(y, x); // double opposite = landmark.altitude - location.altitude; From 163d35a0470d20633714edc11fa2750bad4391c1 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 2 Jun 2020 21:39:34 -0400 Subject: [PATCH 186/356] add endlat --- ios/RCTARKit.m | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 7ff56bdb..d10e99ba 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -363,18 +363,16 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { float locationLat = [nsLocationLat floatValue]; float locationLong = [nsLocationLong floatValue]; - CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(43.08029866752368, -70.94861127912127) - altitude:0 - horizontalAccuracy:0 - verticalAccuracy:0 - timestamp:[NSDate date]]; - - CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(43.080337992970904, -70.94862029914505) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 timestamp:[NSDate date]]; + CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(43.08029866752368, -70.94861127912127) + altitude:0 + horizontalAccuracy:0 + verticalAccuracy:0 + timestamp:[NSDate date]]; CLLocationDistance distance = [location distanceFromLocation:landmark]; matrix_float4x4 distanceTransform = matrix_identity_float4x4; @@ -384,10 +382,10 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { NSLog(@"distance:-%f", distance); - double startLat = GLKMathDegreesToRadians(locationLat); - double startLon = GLKMathDegreesToRadians(landMarklong); - double endLat = GLKMathDegreesToRadians(landMarkLat); - double endLon = GLKMathDegreesToRadians(locationLong); + double startLat = GLKMathDegreesToRadians(43.080337992970904); + double startLon = GLKMathDegreesToRadians(-70.94862029914505); + double endLat = GLKMathDegreesToRadians(43.08029866752368); + double endLon = GLKMathDegreesToRadians(-70.94861127912127); double lonDiff = endLon - startLon; double y = sin(lonDiff) * cos(endLat); NSLog(@"yvalue:-%f", y); @@ -400,13 +398,13 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { return @{ - @"results": @(distance) + @"results": @{ @"x": @(distance), @"y": @(y) } }; } } return @{ - @"results": @"no results" + @"results": @{} }; From 6267a2f10b9c27e2408aabaaff4b1a2f4628d651 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 2 Jun 2020 22:28:39 -0400 Subject: [PATCH 187/356] add z --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index d10e99ba..0df54774 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -398,7 +398,7 @@ - (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { return @{ - @"results": @{ @"x": @(distance), @"y": @(y) } + @"results": @{ @"y": @(y), @"z": @(distance) } }; } } From d4cc1f1d3672218f9abf409bd42514276b301439 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 3 Jun 2020 19:33:26 -0400 Subject: [PATCH 188/356] test with float vlaue --- ios/RCTARKitManager.m | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 4d7a6ae0..3f18ce25 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -450,8 +450,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] readCameraPosition]); } -RCT_EXPORT_METHOD(getAnchorPosition:(NSDictionary *)options resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - NSLog(@"latlongOptions:-%f", options[@"landmarkLat"]); +RCT_EXPORT_METHOD(getAnchorPosition:(NSDictionary *)options lat:(double *)lat resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { resolve([[ARKit sharedInstance] getArAnchorPosition:options]); } From b61ab21a4fbc353fbac7893696db929ebe8e57be Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 3 Jun 2020 19:44:25 -0400 Subject: [PATCH 189/356] add location lat and long --- ios/RCTARKit.h | 2 +- ios/RCTARKit.m | 4 +++- ios/RCTARKitManager.m | 5 ++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index c0eb2588..9de5ed28 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -96,7 +96,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)focusScene; - (void)clearScene; - (NSDictionary *)readCameraPosition; -- (NSDictionary *)getArAnchorPosition:(NSDictionary*)options; +- (NSDictionary *)getArAnchorPosition:(double *)locationLat locationLong:(double *)locationLong landmarkLat:(double *)landmarkLat landmarkLong:(double *)landmarkLong - (NSDictionary *)readCamera; - (NSDictionary* )getCurrentLightEstimation; - (NSArray * )getCurrentDetectedFeaturePoints; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 0df54774..fcdd35de 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -345,7 +345,9 @@ - (NSDictionary *)readCameraPosition { } -- (NSDictionary *)getArAnchorPosition:(NSDictionary*)options { +- (NSDictionary *)getArAnchorPosition:(double *)locationLat locationLong:(double *)locationLong landmarkLat:(double *)landmarkLat landmarkLong:(double *)landmarkLong { + NSLog(@"locationLat:-%f", locationLat); + NSLog(@"locationLong:-%f", locationLong); if(options[@"landmarkLat"]){ if(options[@"landmarkLong"]){ diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 3f18ce25..af46daab 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -450,9 +450,8 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] readCameraPosition]); } -RCT_EXPORT_METHOD(getAnchorPosition:(NSDictionary *)options lat:(double *)lat resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - - resolve([[ARKit sharedInstance] getArAnchorPosition:options]); +RCT_EXPORT_METHOD(getAnchorPosition:(double *)locationLat locationLong:(double *)locationLong landmarkLat:(double *)landmarkLat landmarkLong:(double *)landmarkLong resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + resolve([[ARKit sharedInstance] getArAnchorPosition:locationLat locationLong:locationLong landmarkLat:landmarkLat landmarkLong:landmarkLong]); } RCT_EXPORT_METHOD(getCurrentLightEstimation:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { From 74e49cc75e3262c622704b7cba8b3d7adfa52839 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 3 Jun 2020 19:50:07 -0400 Subject: [PATCH 190/356] add semicolon --- ios/RCTARKit.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 9de5ed28..19b2f948 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -96,7 +96,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)focusScene; - (void)clearScene; - (NSDictionary *)readCameraPosition; -- (NSDictionary *)getArAnchorPosition:(double *)locationLat locationLong:(double *)locationLong landmarkLat:(double *)landmarkLat landmarkLong:(double *)landmarkLong +- (NSDictionary *)getArAnchorPosition:(double *)locationLat locationLong:(double *)locationLong landmarkLat:(double *)landmarkLat landmarkLong:(double *)landmarkLong; - (NSDictionary *)readCamera; - (NSDictionary* )getCurrentLightEstimation; - (NSArray * )getCurrentDetectedFeaturePoints; From 160fda2e684b8744988a274bc7eeaa1205fe912d Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 3 Jun 2020 19:56:14 -0400 Subject: [PATCH 191/356] remove all reference of options --- ios/RCTARKit.m | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index fcdd35de..846ff82c 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -349,22 +349,6 @@ - (NSDictionary *)getArAnchorPosition:(double *)locationLat locationLong:(double NSLog(@"locationLat:-%f", locationLat); NSLog(@"locationLong:-%f", locationLong); - if(options[@"landmarkLat"]){ - if(options[@"landmarkLong"]){ - - // NSNumber * nsLandMarkLat = options[@"landmarkLat"]; - NSNumber * nsLandMarkLat = [[NSNumber alloc] initWithDouble:[[options objectForKey:@"landmarkLat"] doubleValue]]; - NSNumber * nsLandMarkLong = options[@"landmarkLong"]; - NSNumber * nsLocationLat = options[@"locationLat"]; - NSNumber * nsLocationLong = options[@"locationLong"]; - - double testDouble = [options[@"landmarkLat"] doubleValue]; - - float landMarkLat = [nsLandMarkLat floatValue]; - float landMarklong = [nsLandMarkLong floatValue]; - float locationLat = [nsLocationLat floatValue]; - float locationLong = [nsLocationLong floatValue]; - CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(43.080337992970904, -70.94862029914505) altitude:0 horizontalAccuracy:0 From cee6ce43338ce16ab9b71e04595741336a7785f5 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 3 Jun 2020 20:01:21 -0400 Subject: [PATCH 192/356] remove closing brace --- ios/RCTARKit.m | 87 ++++++++++++++++++++++---------------------------- 1 file changed, 39 insertions(+), 48 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 846ff82c..2eb9063d 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -346,55 +346,46 @@ - (NSDictionary *)readCameraPosition { - (NSDictionary *)getArAnchorPosition:(double *)locationLat locationLong:(double *)locationLong landmarkLat:(double *)landmarkLat landmarkLong:(double *)landmarkLong { - NSLog(@"locationLat:-%f", locationLat); - NSLog(@"locationLong:-%f", locationLong); - - CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(43.080337992970904, -70.94862029914505) - altitude:0 - horizontalAccuracy:0 - verticalAccuracy:0 - timestamp:[NSDate date]]; - CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(43.08029866752368, -70.94861127912127) - altitude:0 - horizontalAccuracy:0 - verticalAccuracy:0 - timestamp:[NSDate date]]; - - CLLocationDistance distance = [location distanceFromLocation:landmark]; - matrix_float4x4 distanceTransform = matrix_identity_float4x4; - distanceTransform.columns[3][0] = 0; - distanceTransform.columns[3][1] = 0; - distanceTransform.columns[3][2] = distance; - NSLog(@"distance:-%f", distance); - - - double startLat = GLKMathDegreesToRadians(43.080337992970904); - double startLon = GLKMathDegreesToRadians(-70.94862029914505); - double endLat = GLKMathDegreesToRadians(43.08029866752368); - double endLon = GLKMathDegreesToRadians(-70.94861127912127); - double lonDiff = endLon - startLon; - double y = sin(lonDiff) * cos(endLat); - NSLog(@"yvalue:-%f", y); - - // double x = (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)); - // double rotation = atan2(y, x); - // double opposite = landmark.altitude - location.altitude; - // double tilt = atan2(opposite, distance); - // GLKMatrix4 tiltRotation = GLKMatrix4MakeXRotation(tilt); - - - return @{ - @"results": @{ @"y": @(y), @"z": @(distance) } - }; - } - } - - return @{ - @"results": @{} + NSLog(@"locationLat:-%f", locationLat); + NSLog(@"locationLong:-%f", locationLong); + + CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(43.080337992970904, -70.94862029914505) + altitude:0 + horizontalAccuracy:0 + verticalAccuracy:0 + timestamp:[NSDate date]]; + CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(43.08029866752368, -70.94861127912127) + altitude:0 + horizontalAccuracy:0 + verticalAccuracy:0 + timestamp:[NSDate date]]; + + CLLocationDistance distance = [location distanceFromLocation:landmark]; + matrix_float4x4 distanceTransform = matrix_identity_float4x4; + distanceTransform.columns[3][0] = 0; + distanceTransform.columns[3][1] = 0; + distanceTransform.columns[3][2] = distance; + NSLog(@"distance:-%f", distance); + + + double startLat = GLKMathDegreesToRadians(43.080337992970904); + double startLon = GLKMathDegreesToRadians(-70.94862029914505); + double endLat = GLKMathDegreesToRadians(43.08029866752368); + double endLon = GLKMathDegreesToRadians(-70.94861127912127); + double lonDiff = endLon - startLon; + double y = sin(lonDiff) * cos(endLat); + NSLog(@"yvalue:-%f", y); + + // double x = (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)); + // double rotation = atan2(y, x); + // double opposite = landmark.altitude - location.altitude; + // double tilt = atan2(opposite, distance); + // GLKMatrix4 tiltRotation = GLKMatrix4MakeXRotation(tilt); + + + return @{ + @"results": @{ @"y": @(y), @"z": @(distance) } }; - - - } static NSDictionary * vectorToJson(const SCNVector3 v) { From d2a4536e72d8bb38d77c7b6ceb97b3c05819f658 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 3 Jun 2020 20:11:02 -0400 Subject: [PATCH 193/356] add dynamic double values' --- ios/RCTARKit.m | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 2eb9063d..1cc34443 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -346,15 +346,14 @@ - (NSDictionary *)readCameraPosition { - (NSDictionary *)getArAnchorPosition:(double *)locationLat locationLong:(double *)locationLong landmarkLat:(double *)landmarkLat landmarkLong:(double *)landmarkLong { - NSLog(@"locationLat:-%f", locationLat); - NSLog(@"locationLong:-%f", locationLong); - CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(43.080337992970904, -70.94862029914505) + + CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(locationLat, locationLong) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 timestamp:[NSDate date]]; - CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(43.08029866752368, -70.94861127912127) + CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(landmarkLat, landmarkLong) altitude:0 horizontalAccuracy:0 verticalAccuracy:0 @@ -368,10 +367,10 @@ - (NSDictionary *)getArAnchorPosition:(double *)locationLat locationLong:(double NSLog(@"distance:-%f", distance); - double startLat = GLKMathDegreesToRadians(43.080337992970904); - double startLon = GLKMathDegreesToRadians(-70.94862029914505); - double endLat = GLKMathDegreesToRadians(43.08029866752368); - double endLon = GLKMathDegreesToRadians(-70.94861127912127); + double startLat = GLKMathDegreesToRadians(locationLat); + double startLon = GLKMathDegreesToRadians(locationLong); + double endLat = GLKMathDegreesToRadians(landmarkLat); + double endLon = GLKMathDegreesToRadians(landmarkLong); double lonDiff = endLon - startLon; double y = sin(lonDiff) * cos(endLat); NSLog(@"yvalue:-%f", y); From 85668d11d776eda179382b7c61fc42d56a2f5fca Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 3 Jun 2020 20:16:28 -0400 Subject: [PATCH 194/356] switch double to float --- ios/RCTARKit.h | 2 +- ios/RCTARKit.m | 14 +++++++------- ios/RCTARKitManager.m | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 19b2f948..7c1b36c5 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -96,7 +96,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)focusScene; - (void)clearScene; - (NSDictionary *)readCameraPosition; -- (NSDictionary *)getArAnchorPosition:(double *)locationLat locationLong:(double *)locationLong landmarkLat:(double *)landmarkLat landmarkLong:(double *)landmarkLong; +- (NSDictionary *)getArAnchorPosition:(float *)locationLat locationLong:(float *)locationLong landmarkLat:(float *)landmarkLat landmarkLong:(float *)landmarkLong; - (NSDictionary *)readCamera; - (NSDictionary* )getCurrentLightEstimation; - (NSArray * )getCurrentDetectedFeaturePoints; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 1cc34443..da74e952 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -345,7 +345,7 @@ - (NSDictionary *)readCameraPosition { } -- (NSDictionary *)getArAnchorPosition:(double *)locationLat locationLong:(double *)locationLong landmarkLat:(double *)landmarkLat landmarkLong:(double *)landmarkLong { +- (NSDictionary *)getArAnchorPosition:(float *)locationLat locationLong:(float *)locationLong landmarkLat:(float *)landmarkLat landmarkLong:(float *)landmarkLong { CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(locationLat, locationLong) @@ -367,12 +367,12 @@ - (NSDictionary *)getArAnchorPosition:(double *)locationLat locationLong:(double NSLog(@"distance:-%f", distance); - double startLat = GLKMathDegreesToRadians(locationLat); - double startLon = GLKMathDegreesToRadians(locationLong); - double endLat = GLKMathDegreesToRadians(landmarkLat); - double endLon = GLKMathDegreesToRadians(landmarkLong); - double lonDiff = endLon - startLon; - double y = sin(lonDiff) * cos(endLat); + float startLat = GLKMathDegreesToRadians(locationLat); + float startLon = GLKMathDegreesToRadians(locationLong); + float endLat = GLKMathDegreesToRadians(landmarkLat); + float endLon = GLKMathDegreesToRadians(landmarkLong); + float lonDiff = endLon - startLon; + float y = sin(lonDiff) * cos(endLat); NSLog(@"yvalue:-%f", y); // double x = (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)); diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index af46daab..706caba0 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -450,7 +450,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] readCameraPosition]); } -RCT_EXPORT_METHOD(getAnchorPosition:(double *)locationLat locationLong:(double *)locationLong landmarkLat:(double *)landmarkLat landmarkLong:(double *)landmarkLong resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { +RCT_EXPORT_METHOD(getAnchorPosition:(float *)locationLat locationLong:(float *)locationLong landmarkLat:(float *)landmarkLat landmarkLong:(float *)landmarkLong resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { resolve([[ARKit sharedInstance] getArAnchorPosition:locationLat locationLong:locationLong landmarkLat:landmarkLat landmarkLong:landmarkLong]); } From e07c745b026f4809c8e36f65e5482528ae6cb9dd Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 3 Jun 2020 20:38:16 -0400 Subject: [PATCH 195/356] remove * on float decleration --- ios/RCTARKit.h | 2 +- ios/RCTARKit.m | 2 +- ios/RCTARKitManager.m | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 7c1b36c5..6997094a 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -96,7 +96,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)focusScene; - (void)clearScene; - (NSDictionary *)readCameraPosition; -- (NSDictionary *)getArAnchorPosition:(float *)locationLat locationLong:(float *)locationLong landmarkLat:(float *)landmarkLat landmarkLong:(float *)landmarkLong; +- (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong; - (NSDictionary *)readCamera; - (NSDictionary* )getCurrentLightEstimation; - (NSArray * )getCurrentDetectedFeaturePoints; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index da74e952..8632cfc9 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -345,7 +345,7 @@ - (NSDictionary *)readCameraPosition { } -- (NSDictionary *)getArAnchorPosition:(float *)locationLat locationLong:(float *)locationLong landmarkLat:(float *)landmarkLat landmarkLong:(float *)landmarkLong { +- (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong { CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(locationLat, locationLong) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 706caba0..6eae1025 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -450,7 +450,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] readCameraPosition]); } -RCT_EXPORT_METHOD(getAnchorPosition:(float *)locationLat locationLong:(float *)locationLong landmarkLat:(float *)landmarkLat landmarkLong:(float *)landmarkLong resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { +RCT_EXPORT_METHOD(getAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { resolve([[ARKit sharedInstance] getArAnchorPosition:locationLat locationLong:locationLong landmarkLat:landmarkLat landmarkLong:landmarkLong]); } From f14dafd4aa55dcd7c177257f2d7b3fc7f065514b Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 4 Jun 2020 16:41:22 -0400 Subject: [PATCH 196/356] add acuracy --- ios/RCTARKit.m | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 8632cfc9..0a3fab2b 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -350,14 +350,14 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(locationLat, locationLong) altitude:0 - horizontalAccuracy:0 - verticalAccuracy:0 + horizontalAccuracy:5 + verticalAccuracy:0 timestamp:[NSDate date]]; CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(landmarkLat, landmarkLong) - altitude:0 - horizontalAccuracy:0 - verticalAccuracy:0 - timestamp:[NSDate date]]; + altitude:0 + horizontalAccuracy:5 + verticalAccuracy:0 + timestamp:[NSDate date]]; CLLocationDistance distance = [location distanceFromLocation:landmark]; matrix_float4x4 distanceTransform = matrix_identity_float4x4; From d3c6cd8b7c28524f7358f74ed3b98bba6ecdadf5 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 4 Jun 2020 16:53:31 -0400 Subject: [PATCH 197/356] add vertical and horizontal accurcy --- ios/RCTARKit.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 0a3fab2b..653f31cb 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -349,14 +349,14 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(locationLat, locationLong) - altitude:0 + altitude:13.655269622802734 horizontalAccuracy:5 - verticalAccuracy:0 + verticalAccuracy:8 timestamp:[NSDate date]]; CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(landmarkLat, landmarkLong) - altitude:0 + altitude:13.655269622802734 horizontalAccuracy:5 - verticalAccuracy:0 + verticalAccuracy:8 timestamp:[NSDate date]]; CLLocationDistance distance = [location distanceFromLocation:landmark]; From 30741a3c98f6f85aa1bbdaa5c882cf0ffe8818c0 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 8 Jun 2020 21:40:44 -0400 Subject: [PATCH 198/356] get distance between points --- ios/RCTARKit.h | 3 +++ ios/RCTARKit.m | 36 ++++++++++++++++++++++++++++++++++++ ios/RCTARKitManager.m | 7 +++++++ 3 files changed, 46 insertions(+) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 6997094a..869058a0 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -97,6 +97,9 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)clearScene; - (NSDictionary *)readCameraPosition; - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong; +- (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong distanceKm:(double)distanceKm atBearingDegrees:(double)bearingDegrees; + + - (NSDictionary *)readCamera; - (NSDictionary* )getCurrentLightEstimation; - (NSArray * )getCurrentDetectedFeaturePoints; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 653f31cb..32ae6058 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -344,6 +344,42 @@ - (NSDictionary *)readCameraPosition { return vectorToJson(cameraPosition); } +- (double)radiansFromDegrees:(double)degrees +{ + return degrees * (M_PI/180.0); +} + +- (double)degreesFromRadians:(double)radians +{ + return radians * (180.0/M_PI); +} + +- (CLLocationCoordinate2D)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(double)distanceKm atBearingDegrees:(double)bearingDegrees +{ + + + double distanceRadians = distanceKm / 6371.0; + //6,371 = Earth's radius in km + double bearingRadians = [self radiansFromDegrees:bearingDegrees]; + double fromLatRadians = [self radiansFromDegrees:locationLong]; + double fromLonRadians = [self radiansFromDegrees:locationLat]; + + double toLatRadians = asin( sin(fromLatRadians) * cos(distanceRadians) + + cos(fromLatRadians) * sin(distanceRadians) * cos(bearingRadians) ); + + double toLonRadians = fromLonRadians + atan2(sin(bearingRadians) + * sin(distanceRadians) * cos(fromLatRadians), cos(distanceRadians) + - sin(fromLatRadians) * sin(toLatRadians)); + + // adjust toLonRadians to be in the range -180 to +180... + toLonRadians = fmod((toLonRadians + 3*M_PI), (2*M_PI)) - M_PI; + + CLLocationCoordinate2D result; + result.latitude = [self degreesFromRadians:toLatRadians]; + result.longitude = [self degreesFromRadians:toLonRadians]; + return result; +} + - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong { diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 6eae1025..c5bd2464 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -454,6 +454,13 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] getArAnchorPosition:locationLat locationLong:locationLong landmarkLat:landmarkLat landmarkLong:landmarkLong]); } +RCT_EXPORT_METHOD(getNewCoords:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + resolve([[ARKit sharedInstance] coordinateFromCoord:locationLat locationLong:locationLong distanceKm:(double)distanceKm atBearingDegrees:(double)bearingDegrees;]); +} + + + + RCT_EXPORT_METHOD(getCurrentLightEstimation:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { resolve([[ARKit sharedInstance] getCurrentLightEstimation]); } From e756c9ce272cae10949037c828c9944be4ebda27 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 8 Jun 2020 21:48:21 -0400 Subject: [PATCH 199/356] add bearing and degrees --- ios/RCTARKitManager.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index c5bd2464..5adde966 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -454,8 +454,8 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] getArAnchorPosition:locationLat locationLong:locationLong landmarkLat:landmarkLat landmarkLong:landmarkLong]); } -RCT_EXPORT_METHOD(getNewCoords:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - resolve([[ARKit sharedInstance] coordinateFromCoord:locationLat locationLong:locationLong distanceKm:(double)distanceKm atBearingDegrees:(double)bearingDegrees;]); +RCT_EXPORT_METHOD(getNewCoords:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong distanceKm:(double)distanceKm atBearingDegrees:(double)bearingDegrees resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + resolve([[ARKit sharedInstance] coordinateFromCoord:locationLat locationLong:locationLong distanceKm:(double)distanceKm atBearingDegrees:(double)bearingDegrees]); } From 7b365120e2ff3355df650e79e768a776ce144e14 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 8 Jun 2020 22:11:22 -0400 Subject: [PATCH 200/356] update location long --- ios/RCTARKitManager.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 5adde966..42a7bca8 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -454,7 +454,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] getArAnchorPosition:locationLat locationLong:locationLong landmarkLat:landmarkLat landmarkLong:landmarkLong]); } -RCT_EXPORT_METHOD(getNewCoords:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong distanceKm:(double)distanceKm atBearingDegrees:(double)bearingDegrees resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { +RCT_EXPORT_METHOD(getNewCoords:(float)locationLat locationLong:(float)locationLong distanceKm:(double)distanceKm atBearingDegrees:(double)bearingDegrees resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { resolve([[ARKit sharedInstance] coordinateFromCoord:locationLat locationLong:locationLong distanceKm:(double)distanceKm atBearingDegrees:(double)bearingDegrees]); } From 3a09b2cb0e5adc4e84ed7eed1bce1b485bbe1631 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 8 Jun 2020 22:23:44 -0400 Subject: [PATCH 201/356] change double to flaot --- ios/RCTARKit.h | 2 +- ios/RCTARKit.m | 6 +++--- ios/RCTARKitManager.m | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 869058a0..846ad12a 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -97,7 +97,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)clearScene; - (NSDictionary *)readCameraPosition; - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong; -- (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong distanceKm:(double)distanceKm atBearingDegrees:(double)bearingDegrees; +- (CLLocationCoordinate2D)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong distanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees; - (NSDictionary *)readCamera; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 32ae6058..6bc20178 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -344,17 +344,17 @@ - (NSDictionary *)readCameraPosition { return vectorToJson(cameraPosition); } -- (double)radiansFromDegrees:(double)degrees +- (double)radiansFromDegrees:(float)degrees { return degrees * (M_PI/180.0); } -- (double)degreesFromRadians:(double)radians +- (double)degreesFromRadians:(float)radians { return radians * (180.0/M_PI); } -- (CLLocationCoordinate2D)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(double)distanceKm atBearingDegrees:(double)bearingDegrees +- (CLLocationCoordinate2D)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees { diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 42a7bca8..fcec8d10 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -454,8 +454,8 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] getArAnchorPosition:locationLat locationLong:locationLong landmarkLat:landmarkLat landmarkLong:landmarkLong]); } -RCT_EXPORT_METHOD(getNewCoords:(float)locationLat locationLong:(float)locationLong distanceKm:(double)distanceKm atBearingDegrees:(double)bearingDegrees resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - resolve([[ARKit sharedInstance] coordinateFromCoord:locationLat locationLong:locationLong distanceKm:(double)distanceKm atBearingDegrees:(double)bearingDegrees]); +RCT_EXPORT_METHOD(getNewCoords:(float)locationLat locationLong:(float)locationLong distanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + resolve([[ARKit sharedInstance] coordinateFromCoord:locationLat locationLong:locationLong distanceKm:distanceKm atBearingDegrees:bearingDegrees]); } From 2c85072e5b4b4894f3c935ebf4a80c2ab3a3eda5 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 8 Jun 2020 22:29:26 -0400 Subject: [PATCH 202/356] add type to function --- ios/RCTARKit.h | 2 +- ios/RCTARKit.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 846ad12a..339ed7d8 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -97,7 +97,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)clearScene; - (NSDictionary *)readCameraPosition; - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong; -- (CLLocationCoordinate2D)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong distanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees; +- (CLLocationCoordinate2D *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong distanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees; - (NSDictionary *)readCamera; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 6bc20178..d2309c6b 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -354,7 +354,7 @@ - (double)degreesFromRadians:(float)radians return radians * (180.0/M_PI); } -- (CLLocationCoordinate2D)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees +- (CLLocationCoordinate2D *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees { From b60088f614c6ab40b17ac6d61c036d7d6888b330 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 8 Jun 2020 22:35:28 -0400 Subject: [PATCH 203/356] return location --- ios/RCTARKit.h | 2 +- ios/RCTARKit.m | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 339ed7d8..db1ad701 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -97,7 +97,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)clearScene; - (NSDictionary *)readCameraPosition; - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong; -- (CLLocationCoordinate2D *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong distanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees; +- (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong distanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees; - (NSDictionary *)readCamera; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index d2309c6b..327332d5 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -354,7 +354,7 @@ - (double)degreesFromRadians:(float)radians return radians * (180.0/M_PI); } -- (CLLocationCoordinate2D *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees +- (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees { @@ -377,7 +377,10 @@ - (CLLocationCoordinate2D *)coordinateFromCoord:(float)locationLat locationLong: CLLocationCoordinate2D result; result.latitude = [self degreesFromRadians:toLatRadians]; result.longitude = [self degreesFromRadians:toLonRadians]; - return result; + return @{ + @"results": @{ @"latitude": @(result.latitude), @"longitude": @(result.longitude) } + }; +} } From aa076a98a407859c6b4fb4348f95263688174bf2 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 8 Jun 2020 22:40:17 -0400 Subject: [PATCH 204/356] remove brace --- ios/RCTARKit.m | 1 - 1 file changed, 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 327332d5..fa7d918f 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -381,7 +381,6 @@ - (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)loc @"results": @{ @"latitude": @(result.latitude), @"longitude": @(result.longitude) } }; } -} - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong { From 66f15dd23c87a058eae56408f84ad0c4f59c5d7f Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 8 Jun 2020 22:51:22 -0400 Subject: [PATCH 205/356] update distance km --- ios/RCTARKit.h | 2 +- ios/RCTARKit.m | 4 +--- ios/RCTARKitManager.m | 4 ++-- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index db1ad701..229eccf2 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -97,7 +97,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)clearScene; - (NSDictionary *)readCameraPosition; - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong; -- (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong distanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees; +- (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees; - (NSDictionary *)readCamera; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index fa7d918f..63e4ab24 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -354,9 +354,7 @@ - (double)degreesFromRadians:(float)radians return radians * (180.0/M_PI); } -- (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees -{ - +- (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees { double distanceRadians = distanceKm / 6371.0; //6,371 = Earth's radius in km diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index fcec8d10..0441db17 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -454,8 +454,8 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] getArAnchorPosition:locationLat locationLong:locationLong landmarkLat:landmarkLat landmarkLong:landmarkLong]); } -RCT_EXPORT_METHOD(getNewCoords:(float)locationLat locationLong:(float)locationLong distanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - resolve([[ARKit sharedInstance] coordinateFromCoord:locationLat locationLong:locationLong distanceKm:distanceKm atBearingDegrees:bearingDegrees]); +RCT_EXPORT_METHOD(getNewCoords:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + resolve([[ARKit sharedInstance] coordinateFromCoord:locationLat locationLong:locationLong atDistanceKm:distanceKm atBearingDegrees:bearingDegrees]); } From e25af5ca65e1a9584034efdf0d06c5a0886e9afd Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 8 Jun 2020 22:59:59 -0400 Subject: [PATCH 206/356] update lat and long radians --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 63e4ab24..8b0f03c0 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -359,8 +359,8 @@ - (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)loc double distanceRadians = distanceKm / 6371.0; //6,371 = Earth's radius in km double bearingRadians = [self radiansFromDegrees:bearingDegrees]; - double fromLatRadians = [self radiansFromDegrees:locationLong]; - double fromLonRadians = [self radiansFromDegrees:locationLat]; + double fromLatRadians = [self radiansFromDegrees:locationLat]; + double fromLonRadians = [self radiansFromDegrees:locationLong]; double toLatRadians = asin( sin(fromLatRadians) * cos(distanceRadians) + cos(fromLatRadians) * sin(distanceRadians) * cos(bearingRadians) ); From 6ac84dff02cc4883926fa112659bbac8c31b2a26 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 19:15:41 -0400 Subject: [PATCH 207/356] add smd4 make --- ios/RCTARKit.m | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 8b0f03c0..745247c1 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -407,16 +407,19 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc float startLon = GLKMathDegreesToRadians(locationLong); float endLat = GLKMathDegreesToRadians(landmarkLat); float endLon = GLKMathDegreesToRadians(landmarkLong); + float lonDiff = endLon - startLon; float y = sin(lonDiff) * cos(endLat); - NSLog(@"yvalue:-%f", y); + float x = cos(startLat) * sin(endLat) - sin(startLat) * cos(endLat) * cos(endLon - startLon) + float rotation = atan2(y, x); + float bearing = [self degreesFromRadians:rotation]; + simd_float4 position = simd_make_float4(0, 0, -distance, 0) - // double x = (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)); - // double rotation = atan2(y, x); - // double opposite = landmark.altitude - location.altitude; - // double tilt = atan2(opposite, distance); - // GLKMatrix4 tiltRotation = GLKMatrix4MakeXRotation(tilt); + // float opposite = landmark.altitude - location.altitude; + // float tilt = atan2(opposite, distance); + // GLKMatrix4 tiltRotation = GLKMatrix4MakeXRotation(tilt); + // simd_float3 simd_mul(simd_float3 __x, simd_float3x3 __y); return @{ @"results": @{ @"y": @(y), @"z": @(distance) } From 1768b896efa9133627933d991b7f953bf27ae307 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 19:25:11 -0400 Subject: [PATCH 208/356] add semicolons --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 745247c1..bd00d6d8 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -410,10 +410,10 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc float lonDiff = endLon - startLon; float y = sin(lonDiff) * cos(endLat); - float x = cos(startLat) * sin(endLat) - sin(startLat) * cos(endLat) * cos(endLon - startLon) + float x = cos(startLat) * sin(endLat) - sin(startLat) * cos(endLat) * cos(endLon - startLon); float rotation = atan2(y, x); float bearing = [self degreesFromRadians:rotation]; - simd_float4 position = simd_make_float4(0, 0, -distance, 0) + simd_float4 position = simd_make_float4(0, 0, -distance, 0); // float opposite = landmark.altitude - location.altitude; From cf9070c3386dab54d56c8b9828a80a5888998a93 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 19:43:09 -0400 Subject: [PATCH 209/356] add log for function result --- ios/RCTARKit.m | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index bd00d6d8..08e39f6b 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -396,10 +396,9 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc timestamp:[NSDate date]]; CLLocationDistance distance = [location distanceFromLocation:landmark]; - matrix_float4x4 distanceTransform = matrix_identity_float4x4; distanceTransform.columns[3][0] = 0; distanceTransform.columns[3][1] = 0; - distanceTransform.columns[3][2] = distance; + distanceTransform.columns[3][2] = -distance; NSLog(@"distance:-%f", distance); @@ -413,13 +412,22 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc float x = cos(startLat) * sin(endLat) - sin(startLat) * cos(endLat) * cos(endLon - startLon); float rotation = atan2(y, x); float bearing = [self degreesFromRadians:rotation]; - simd_float4 position = simd_make_float4(0, 0, -distance, 0); + simd_float4 position = simd_make_float4(0.0, 0.0, -distance, 0.0); + matrix_float4x4 translationMatrix = matrix_identity_float4x4; + translationMatrix.columns[3] = position; + matrix_float4x4 rotationMatrix = matrix_identity_float4x4; + rotationMatrix.columns.[0].x = cos(bearing) + rotationMatrix.columns.[0].z = -sin(bearing) + rotationMatrix.columns.[2].x = sin(bearing) + rotationMatrix.columns.[2].z = cos(bearing) + simd_float3 transformMatrix = simd_mul(rotationMatrix, translationMatrix); + NSLog(@"transformMatrix:-%f", transformMatrix); + // float opposite = landmark.altitude - location.altitude; // float tilt = atan2(opposite, distance); // GLKMatrix4 tiltRotation = GLKMatrix4MakeXRotation(tilt); - // simd_float3 simd_mul(simd_float3 __x, simd_float3x3 __y); return @{ @"results": @{ @"y": @(y), @"z": @(distance) } From 4586696a917c7bedf5b4c2bad265db0f0e27982c Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 19:49:13 -0400 Subject: [PATCH 210/356] add semicolons --- ios/RCTARKit.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 08e39f6b..2eb96e88 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -416,10 +416,10 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc matrix_float4x4 translationMatrix = matrix_identity_float4x4; translationMatrix.columns[3] = position; matrix_float4x4 rotationMatrix = matrix_identity_float4x4; - rotationMatrix.columns.[0].x = cos(bearing) - rotationMatrix.columns.[0].z = -sin(bearing) - rotationMatrix.columns.[2].x = sin(bearing) - rotationMatrix.columns.[2].z = cos(bearing) + rotationMatrix.columns.[0].x = cos(bearing); + rotationMatrix.columns.[0].z = -sin(bearing); + rotationMatrix.columns.[2].x = sin(bearing); + rotationMatrix.columns.[2].z = cos(bearing); simd_float3 transformMatrix = simd_mul(rotationMatrix, translationMatrix); From 98bc4ffb4238ff380de02277bd2c67cda12026b0 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 19:56:08 -0400 Subject: [PATCH 211/356] update var names --- ios/RCTARKit.m | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 2eb96e88..da9ff867 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -396,9 +396,6 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc timestamp:[NSDate date]]; CLLocationDistance distance = [location distanceFromLocation:landmark]; - distanceTransform.columns[3][0] = 0; - distanceTransform.columns[3][1] = 0; - distanceTransform.columns[3][2] = -distance; NSLog(@"distance:-%f", distance); @@ -422,7 +419,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc rotationMatrix.columns.[2].z = cos(bearing); - simd_float3 transformMatrix = simd_mul(rotationMatrix, translationMatrix); + simd_float4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); NSLog(@"transformMatrix:-%f", transformMatrix); // float opposite = landmark.altitude - location.altitude; From e0f512e5a168ebd1154d37874565abdb3af27b3a Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 20:02:53 -0400 Subject: [PATCH 212/356] add indexes --- ios/RCTARKit.m | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index da9ff867..c6f1aac2 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -413,13 +413,13 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc matrix_float4x4 translationMatrix = matrix_identity_float4x4; translationMatrix.columns[3] = position; matrix_float4x4 rotationMatrix = matrix_identity_float4x4; - rotationMatrix.columns.[0].x = cos(bearing); - rotationMatrix.columns.[0].z = -sin(bearing); - rotationMatrix.columns.[2].x = sin(bearing); - rotationMatrix.columns.[2].z = cos(bearing); + rotationMatrix.columns.0.x = cos(bearing); + rotationMatrix.columns.0.z = -sin(bearing); + rotationMatrix.columns.2.x = sin(bearing); + rotationMatrix.columns.2.z = cos(bearing); - simd_float4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); + simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); NSLog(@"transformMatrix:-%f", transformMatrix); // float opposite = landmark.altitude - location.altitude; From cea200b568a1f4f801ecfbb2e0bee7f2d78fc5d5 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 20:07:30 -0400 Subject: [PATCH 213/356] add itendifiers --- ios/RCTARKit.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index c6f1aac2..12d6567d 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -413,10 +413,10 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc matrix_float4x4 translationMatrix = matrix_identity_float4x4; translationMatrix.columns[3] = position; matrix_float4x4 rotationMatrix = matrix_identity_float4x4; - rotationMatrix.columns.0.x = cos(bearing); - rotationMatrix.columns.0.z = -sin(bearing); - rotationMatrix.columns.2.x = sin(bearing); - rotationMatrix.columns.2.z = cos(bearing); + float rotationMatrix.columns.[0].x = cos(bearing); + float rotationMatrix.columns.[0].z = -sin(bearing); + float rotationMatrix.columns.[2].x = sin(bearing); + float rotationMatrix.columns.[2].z = cos(bearing); simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); From a2df16143ddf4f73f97e73331be965980eab431b Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 20:21:49 -0400 Subject: [PATCH 214/356] add transformation matrix --- ios/RCTARKit.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 12d6567d..0b27b8e0 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -413,10 +413,10 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc matrix_float4x4 translationMatrix = matrix_identity_float4x4; translationMatrix.columns[3] = position; matrix_float4x4 rotationMatrix = matrix_identity_float4x4; - float rotationMatrix.columns.[0].x = cos(bearing); - float rotationMatrix.columns.[0].z = -sin(bearing); - float rotationMatrix.columns.[2].x = sin(bearing); - float rotationMatrix.columns.[2].z = cos(bearing); + rotationMatrix.columns.[0][2] = cos(bearing); + rotationMatrix.columns.[0][2] = -sin(bearing); + rotationMatrix.columns.[2][2] = sin(bearing); + rotationMatrix.columns.[2][2] = cos(bearing); simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); From e437ae64b57b1cbf6145dffb8a61d8e2ba0ba439 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 20:26:47 -0400 Subject: [PATCH 215/356] remove dots --- ios/RCTARKit.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 0b27b8e0..7e3ce2f5 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -413,10 +413,10 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc matrix_float4x4 translationMatrix = matrix_identity_float4x4; translationMatrix.columns[3] = position; matrix_float4x4 rotationMatrix = matrix_identity_float4x4; - rotationMatrix.columns.[0][2] = cos(bearing); - rotationMatrix.columns.[0][2] = -sin(bearing); - rotationMatrix.columns.[2][2] = sin(bearing); - rotationMatrix.columns.[2][2] = cos(bearing); + rotationMatrix.columns[0][2] = cos(bearing); + rotationMatrix.columns[0][2] = -sin(bearing); + rotationMatrix.columns[2][2] = sin(bearing); + rotationMatrix.columns[2][2] = cos(bearing); simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); From e054cac42a4e8ef21d31e491cc491f19e750f744 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 20:32:49 -0400 Subject: [PATCH 216/356] checkout x value' --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 7e3ce2f5..8fef8885 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -420,7 +420,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); - NSLog(@"transformMatrix:-%f", transformMatrix); + NSLog(@"transformMatrix:-%f", transformMatrix.x); // float opposite = landmark.altitude - location.altitude; // float tilt = atan2(opposite, distance); From 680c1b3730c0411a8fa34ba188be9b592c0619fd Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 20:37:15 -0400 Subject: [PATCH 217/356] access zero --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 8fef8885..02800133 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -420,7 +420,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); - NSLog(@"transformMatrix:-%f", transformMatrix.x); + NSLog(@"transformMatrix:-%f", transformMatrix[0]); // float opposite = landmark.altitude - location.altitude; // float tilt = atan2(opposite, distance); From 45ebf35ef138ce6fc2a51d6c4c737062bd555eb5 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 20:47:25 -0400 Subject: [PATCH 218/356] update vars --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 02800133..916edf97 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -420,7 +420,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); - NSLog(@"transformMatrix:-%f", transformMatrix[0]); + NSLog(@"transformMatrix:-%f", transformMatrix.columns[0]); // float opposite = landmark.altitude - location.altitude; // float tilt = atan2(opposite, distance); From b1a159404df735437d18fa866a9ba048170df90c Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 20:54:05 -0400 Subject: [PATCH 219/356] log z value --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 916edf97..4767513a 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -420,7 +420,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); - NSLog(@"transformMatrix:-%f", transformMatrix.columns[0]); + NSLog(@"transformMatrix:-%f", transformMatrix.columns[0][2]); // float opposite = landmark.altitude - location.altitude; // float tilt = atan2(opposite, distance); From 316f1aeaf315ba0413d82915547c400807757d30 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 21:04:27 -0400 Subject: [PATCH 220/356] add a bunch of logs --- ios/RCTARKit.m | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 4767513a..66e30f94 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -420,7 +420,16 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); - NSLog(@"transformMatrix:-%f", transformMatrix.columns[0][2]); + NSLog(@"transformMatrix.columns[0][0]:-%f", transformMatrix.columns[0][0]); + NSLog(@"transformMatrix.columns[0][1]:-%f", transformMatrix.columns[0][1]); + NSLog(@"transformMatrix.columns[0][2]:-%f", transformMatrix.columns[0][2]); + NSLog(@"transformMatrix.columns[1][0]:-%f", transformMatrix.columns[1][0]); + NSLog(@"transformMatrix.columns[1][1]:-%f", transformMatrix.columns[1][1]); + NSLog(@"transformMatrix.columns[1][2]:-%f", transformMatrix.columns[1][2]); + NSLog(@"transformMatrix.columns[2][0]:-%f", transformMatrix.columns[2][0]); + NSLog(@"transformMatrix.columns[2][1]:-%f", transformMatrix.columns[2][1]); + NSLog(@"transformMatrix.columns[2][2]:-%f", transformMatrix.columns[2][2]); + // float opposite = landmark.altitude - location.altitude; // float tilt = atan2(opposite, distance); From a941dad331fb491a5c4f2a70bba9d67af5f335cd Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 21:13:15 -0400 Subject: [PATCH 221/356] add more logs --- ios/RCTARKit.m | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 66e30f94..1f606889 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -423,12 +423,19 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc NSLog(@"transformMatrix.columns[0][0]:-%f", transformMatrix.columns[0][0]); NSLog(@"transformMatrix.columns[0][1]:-%f", transformMatrix.columns[0][1]); NSLog(@"transformMatrix.columns[0][2]:-%f", transformMatrix.columns[0][2]); + NSLog(@"transformMatrix.columns[0][3]:-%f", transformMatrix.columns[0][3]); NSLog(@"transformMatrix.columns[1][0]:-%f", transformMatrix.columns[1][0]); NSLog(@"transformMatrix.columns[1][1]:-%f", transformMatrix.columns[1][1]); NSLog(@"transformMatrix.columns[1][2]:-%f", transformMatrix.columns[1][2]); + NSLog(@"transformMatrix.columns[1][3]:-%f", transformMatrix.columns[1][3]); NSLog(@"transformMatrix.columns[2][0]:-%f", transformMatrix.columns[2][0]); NSLog(@"transformMatrix.columns[2][1]:-%f", transformMatrix.columns[2][1]); NSLog(@"transformMatrix.columns[2][2]:-%f", transformMatrix.columns[2][2]); + NSLog(@"transformMatrix.columns[2][3]:-%f", transformMatrix.columns[2][3]); + NSLog(@"transformMatrix.columns[3][0]:-%f", transformMatrix.columns[3][0]); + NSLog(@"transformMatrix.columns[3][1]:-%f", transformMatrix.columns[3][1]); + NSLog(@"transformMatrix.columns[3][2]:-%f", transformMatrix.columns[3][2]); + NSLog(@"transformMatrix.columns[3][3]:-%f", transformMatrix.columns[3][3]); // float opposite = landmark.altitude - location.altitude; From d9be3b8d622dc24381b81d0ae7c49a6b48354f4b Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 21:26:05 -0400 Subject: [PATCH 222/356] add ar anchor --- ios/RCTARKit.m | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 1f606889..4051adf3 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -420,22 +420,9 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); - NSLog(@"transformMatrix.columns[0][0]:-%f", transformMatrix.columns[0][0]); - NSLog(@"transformMatrix.columns[0][1]:-%f", transformMatrix.columns[0][1]); - NSLog(@"transformMatrix.columns[0][2]:-%f", transformMatrix.columns[0][2]); - NSLog(@"transformMatrix.columns[0][3]:-%f", transformMatrix.columns[0][3]); - NSLog(@"transformMatrix.columns[1][0]:-%f", transformMatrix.columns[1][0]); - NSLog(@"transformMatrix.columns[1][1]:-%f", transformMatrix.columns[1][1]); - NSLog(@"transformMatrix.columns[1][2]:-%f", transformMatrix.columns[1][2]); - NSLog(@"transformMatrix.columns[1][3]:-%f", transformMatrix.columns[1][3]); - NSLog(@"transformMatrix.columns[2][0]:-%f", transformMatrix.columns[2][0]); - NSLog(@"transformMatrix.columns[2][1]:-%f", transformMatrix.columns[2][1]); - NSLog(@"transformMatrix.columns[2][2]:-%f", transformMatrix.columns[2][2]); - NSLog(@"transformMatrix.columns[2][3]:-%f", transformMatrix.columns[2][3]); - NSLog(@"transformMatrix.columns[3][0]:-%f", transformMatrix.columns[3][0]); - NSLog(@"transformMatrix.columns[3][1]:-%f", transformMatrix.columns[3][1]); - NSLog(@"transformMatrix.columns[3][2]:-%f", transformMatrix.columns[3][2]); - NSLog(@"transformMatrix.columns[3][3]:-%f", transformMatrix.columns[3][3]); + ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; + + NSLog(@"%@artestanchor", localAnchor); // float opposite = landmark.altitude - location.altitude; From 157f1997e461d1e0e0fcc506a058f1c576b737fc Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 21:33:57 -0400 Subject: [PATCH 223/356] log transform --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 4051adf3..0dc4f5ef 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -422,7 +422,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; - NSLog(@"%@artestanchor", localAnchor); + NSLog(@"%@artestanchor", localAnchor.transform); // float opposite = landmark.altitude - location.altitude; From 1b6794e6181a7037187b889aec6a0129ee12bd50 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 21:52:51 -0400 Subject: [PATCH 224/356] log matrix --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 0dc4f5ef..4bb777d0 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -422,7 +422,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; - NSLog(@"%@artestanchor", localAnchor.transform); + NSLog(@"%@artestanchor", transformMatrix); // float opposite = landmark.altitude - location.altitude; From b5fa527a80f2b2d95b81016627870d5e9208b223 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 21:59:26 -0400 Subject: [PATCH 225/356] update log --- ios/RCTARKit.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 4bb777d0..dde604e7 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -421,8 +421,9 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; + NSLog(, transformMatrix); - NSLog(@"%@artestanchor", transformMatrix); + NSLog(@"transformMatrix %@", transformMatrix); // float opposite = landmark.altitude - location.altitude; From 5d5f669c0ff94e6db78c75cfeb58edab0247d0b2 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 22:03:54 -0400 Subject: [PATCH 226/356] remove bad logs --- ios/RCTARKit.m | 2 -- 1 file changed, 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index dde604e7..96abb9be 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -421,8 +421,6 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; - NSLog(, transformMatrix); - NSLog(@"transformMatrix %@", transformMatrix); From f7d72cd4232072c5a01143aa5083a704f208c86a Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 22:04:17 -0400 Subject: [PATCH 227/356] add transform log --- ios/RCTARKit.m | 1 + 1 file changed, 1 insertion(+) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 96abb9be..89106a49 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -423,6 +423,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; NSLog(@"transformMatrix %@", transformMatrix); + NSLog(@"localAnchor %@", localAnchor.transform); // float opposite = landmark.altitude - location.altitude; // float tilt = atan2(opposite, distance); From 88c5539114ea37e257110eda95923361a13d3732 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 22:11:09 -0400 Subject: [PATCH 228/356] remove log stuff --- ios/RCTARKit.m | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 89106a49..944ccc32 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -421,9 +421,10 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; - NSLog(@"transformMatrix %@", transformMatrix); + NSLog(@"%@", transformMatrix); - NSLog(@"localAnchor %@", localAnchor.transform); + NSLog(@"%@", localAnchor.transform); + NSLog(@"hello world"); // float opposite = landmark.altitude - location.altitude; // float tilt = atan2(opposite, distance); From d2625ce9017de0e930cc981685516aacb2597e33 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 22:17:25 -0400 Subject: [PATCH 229/356] log matrix --- ios/RCTARKit.m | 2 -- 1 file changed, 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 944ccc32..efa2bef8 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -421,10 +421,8 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; - NSLog(@"%@", transformMatrix); NSLog(@"%@", localAnchor.transform); - NSLog(@"hello world"); // float opposite = landmark.altitude - location.altitude; // float tilt = atan2(opposite, distance); From 27233b51f71c65ba8d9be3457fbc1847cdc37cb1 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 15 Jun 2020 22:25:16 -0400 Subject: [PATCH 230/356] log anchor: --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index efa2bef8..f0fddcee 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -422,7 +422,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; - NSLog(@"%@", localAnchor.transform); + NSLog(@"%@", localAnchor); // float opposite = landmark.altitude - location.altitude; // float tilt = atan2(opposite, distance); From a7aa3dc07087164870b2d4ef0e08cbb7999dec44 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 16:28:30 -0400 Subject: [PATCH 231/356] add transformation matrix --- ios/RCTARKit.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index f0fddcee..54b2b864 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -422,7 +422,8 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; - NSLog(@"%@", localAnchor); + NSLog(@"hello world!"); + NSLog(@"%@", transformMatrix.columns[3]); // float opposite = landmark.altitude - location.altitude; // float tilt = atan2(opposite, distance); From 390fae97f508f1ed42cfe6e68a3633c0ce15a12e Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 17:08:43 -0400 Subject: [PATCH 232/356] update log --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 54b2b864..c92269dd 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -423,7 +423,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; NSLog(@"hello world!"); - NSLog(@"%@", transformMatrix.columns[3]); + NSLog(@"%@", transformMatrix.columns); // float opposite = landmark.altitude - location.altitude; // float tilt = atan2(opposite, distance); From 8799a1183f31e0fb01b4bc13aea4ecc82d022efe Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 17:15:41 -0400 Subject: [PATCH 233/356] logmatrix --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index c92269dd..bd77f432 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -423,7 +423,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; NSLog(@"hello world!"); - NSLog(@"%@", transformMatrix.columns); + NSLog(@"%@", transformMatrix); // float opposite = landmark.altitude - location.altitude; // float tilt = atan2(opposite, distance); From 3aae174ea7ad85474f326fe5cc0d07ccab0fb5fe Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 17:15:48 -0400 Subject: [PATCH 234/356] logmatrix --- ios/RCTARKit.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index bd77f432..d0e6dd22 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -423,7 +423,9 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; NSLog(@"hello world!"); - NSLog(@"%@", transformMatrix); + NSLog(@"%@", transformMatrix.columns[0]); + NSLog(@"%@", transformMatrix.columns[1]); + NSLog(@"%@", transformMatrix.columns[2]); // float opposite = landmark.altitude - location.altitude; // float tilt = atan2(opposite, distance); From d96b280cd266387d00411cd8fa83cea239f512e3 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 17:25:38 -0400 Subject: [PATCH 235/356] upadate position abs --- ios/RCTARKit.m | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index d0e6dd22..e1e91b4e 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -421,11 +421,10 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; + SCNVector3 positionAbsolute = toSCNVector3(transformMatrix.columns[3]); NSLog(@"hello world!"); - NSLog(@"%@", transformMatrix.columns[0]); - NSLog(@"%@", transformMatrix.columns[1]); - NSLog(@"%@", transformMatrix.columns[2]); + NSLog(@"%@", positionAbsolute); // float opposite = landmark.altitude - location.altitude; // float tilt = atan2(opposite, distance); @@ -436,6 +435,10 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc }; } +static SCNVector3 toSCNVector3(simd_float4 float4) { + SCNVector3 positionAbsolute = SCNVector3Make(float4.x, float4.y, float4.z); + return positionAbsolute; +} static NSDictionary * vectorToJson(const SCNVector3 v) { return @{ @"x": @(v.x), @"y": @(v.y), @"z": @(v.z) }; } From 8ecbbd9d31e327d0e2d3cede19e2a83c9f680dd2 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 17:33:17 -0400 Subject: [PATCH 236/356] add more ogs --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index e1e91b4e..1b23a1e9 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -421,7 +421,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; - SCNVector3 positionAbsolute = toSCNVector3(transformMatrix.columns[3]); + SCNVector3 positionAbsolute = toSCNVector3(transformMatrix.columns[1]); NSLog(@"hello world!"); NSLog(@"%@", positionAbsolute); From 1f76c1e2f850a8047449095ebf1613ef9d20084c Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 17:41:22 -0400 Subject: [PATCH 237/356] convert vector to json --- ios/RCTARKit.m | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 1b23a1e9..919c1545 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -421,10 +421,17 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; - SCNVector3 positionAbsolute = toSCNVector3(transformMatrix.columns[1]); + SCNVector3 positionAbsolute = toSCNVector3(transformMatrix.columns[0]); + SCNVector3 position = toSCNVector3(transformMatrix.columns[1]); + SCNVector3 pos = toSCNVector3(transformMatrix.columns[2]); + NSDictionary jsonpos = vectorToJson(positionAbsolute) + NSDictionary jsonpos1 = vectorToJson(position) + NSDictionary pjos = vectorToJson(position) NSLog(@"hello world!"); - NSLog(@"%@", positionAbsolute); + NSLog(@"%@", jsonpos); + NSLog(@"%@", jsonpos1); + NSLog(@"%@", pjos); // float opposite = landmark.altitude - location.altitude; // float tilt = atan2(opposite, distance); From 3000a363dfc0026d6a79749cdb8b8513338ebc0c Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 17:45:58 -0400 Subject: [PATCH 238/356] update syntax errors --- ios/RCTARKit.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 919c1545..84031ec1 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -422,11 +422,11 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; SCNVector3 positionAbsolute = toSCNVector3(transformMatrix.columns[0]); - SCNVector3 position = toSCNVector3(transformMatrix.columns[1]); + SCNVector3 pos1 = toSCNVector3(transformMatrix.columns[1]); SCNVector3 pos = toSCNVector3(transformMatrix.columns[2]); - NSDictionary jsonpos = vectorToJson(positionAbsolute) - NSDictionary jsonpos1 = vectorToJson(position) - NSDictionary pjos = vectorToJson(position) + NSDictionary jsonpos = vectorToJson(positionAbsolute); + NSDictionary jsonpos1 = vectorToJson(pos1); + NSDictionary pjos = vectorToJson(position); NSLog(@"hello world!"); NSLog(@"%@", jsonpos); From 0d99d4e8e1c8dca6d7848694bf0a4b1af0f950b1 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 17:50:50 -0400 Subject: [PATCH 239/356] remove staic allocation --- ios/RCTARKit.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 84031ec1..2ca531fe 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -424,9 +424,9 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc SCNVector3 positionAbsolute = toSCNVector3(transformMatrix.columns[0]); SCNVector3 pos1 = toSCNVector3(transformMatrix.columns[1]); SCNVector3 pos = toSCNVector3(transformMatrix.columns[2]); - NSDictionary jsonpos = vectorToJson(positionAbsolute); - NSDictionary jsonpos1 = vectorToJson(pos1); - NSDictionary pjos = vectorToJson(position); + NSDictionary *jsonpos = vectorToJson(positionAbsolute); + NSDictionary *jsonpos1 = vectorToJson(pos1); + NSDictionary *pjos = vectorToJson(position); NSLog(@"hello world!"); NSLog(@"%@", jsonpos); From f608cfaf9fdeec878c77bbc1d873b5507db0a3a4 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 17:54:41 -0400 Subject: [PATCH 240/356] update logs --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 2ca531fe..22d54293 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -426,7 +426,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc SCNVector3 pos = toSCNVector3(transformMatrix.columns[2]); NSDictionary *jsonpos = vectorToJson(positionAbsolute); NSDictionary *jsonpos1 = vectorToJson(pos1); - NSDictionary *pjos = vectorToJson(position); + NSDictionary *pjos = vectorToJson(pos); NSLog(@"hello world!"); NSLog(@"%@", jsonpos); From f28e64fc8fb3a2e1b5400039b2389a6b2e48565c Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 18:01:20 -0400 Subject: [PATCH 241/356] update logs --- ios/RCTARKit.m | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 22d54293..824549d8 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -421,17 +421,12 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; - SCNVector3 positionAbsolute = toSCNVector3(transformMatrix.columns[0]); - SCNVector3 pos1 = toSCNVector3(transformMatrix.columns[1]); - SCNVector3 pos = toSCNVector3(transformMatrix.columns[2]); + SCNVector3 positionAbsolute = toSCNVector3(localAnchor.transform.columns[3]); NSDictionary *jsonpos = vectorToJson(positionAbsolute); - NSDictionary *jsonpos1 = vectorToJson(pos1); - NSDictionary *pjos = vectorToJson(pos); NSLog(@"hello world!"); NSLog(@"%@", jsonpos); - NSLog(@"%@", jsonpos1); - NSLog(@"%@", pjos); + // float opposite = landmark.altitude - location.altitude; // float tilt = atan2(opposite, distance); From 25f66b70a065f283433d2a96c48b7880a053d43c Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 18:08:15 -0400 Subject: [PATCH 242/356] log entire matrix --- ios/RCTARKit.m | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 824549d8..1dd766fe 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -421,11 +421,21 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; - SCNVector3 positionAbsolute = toSCNVector3(localAnchor.transform.columns[3]); - NSDictionary *jsonpos = vectorToJson(positionAbsolute); + SCNVector3 zpos = toSCNVector3(localAnchor.transform.columns[3]); + SCNVector3 xpos = toSCNVector3(localAnchor.transform.columns[2]); + SCNVector3 ypos = toSCNVector3(localAnchor.transform.columns[1]); + SCNVector3 apos = toSCNVector3(localAnchor.transform.columns[0]); + + NSDictionary *zjson = vectorToJson(zpos); + NSDictionary *xjson = vectorToJson(xpos); + NSDictionary *yjson = vectorToJson(ypos); + NSDictionary *ajson = vectorToJson(apos); NSLog(@"hello world!"); - NSLog(@"%@", jsonpos); + NSLog(@"%@", zjson); + NSLog(@"%@", xjson); + NSLog(@"%@", yjson); + NSLog(@"%@", ajson); // float opposite = landmark.altitude - location.altitude; From 208e4c4cb11498c9cfab61ecf90f2ae9025a00c0 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 18:30:02 -0400 Subject: [PATCH 243/356] log out new roattion matrix --- ios/RCTARKit.m | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 1dd766fe..84917ff3 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -425,6 +425,9 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc SCNVector3 xpos = toSCNVector3(localAnchor.transform.columns[2]); SCNVector3 ypos = toSCNVector3(localAnchor.transform.columns[1]); SCNVector3 apos = toSCNVector3(localAnchor.transform.columns[0]); + GLKMatrix4 newRotation = GLKMatrix4MakeYRotation(rotation); + + NSDictionary *zjson = vectorToJson(zpos); NSDictionary *xjson = vectorToJson(xpos); @@ -432,11 +435,22 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc NSDictionary *ajson = vectorToJson(apos); NSLog(@"hello world!"); - NSLog(@"%@", zjson); - NSLog(@"%@", xjson); - NSLog(@"%@", yjson); - NSLog(@"%@", ajson); - + NSLog(@"%@", newRotation[0,0]); + NSLog(@"%@", newRotation[0,1]); + NSLog(@"%@", newRotation[0,2]); + NSLog(@"%@", newRotation[0,3]); + NSLog(@"%@", newRotation[1,0]); + NSLog(@"%@", newRotation[1,1]); + NSLog(@"%@", newRotation[1,2]); + NSLog(@"%@", newRotation[1,3]); + NSLog(@"%@", newRotation[2,0]); + NSLog(@"%@", newRotation[2,1]); + NSLog(@"%@", newRotation[2,2]); + NSLog(@"%@", newRotation[2,3]); + NSLog(@"%@", newRotation[3,0]); + NSLog(@"%@", newRotation[3,1]); + NSLog(@"%@", newRotation[3,2]); + NSLog(@"%@", newRotation[3,3]); // float opposite = landmark.altitude - location.altitude; // float tilt = atan2(opposite, distance); From 1e769ad96aadfbda6df78f0f4ebde150addf5589 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 18:43:03 -0400 Subject: [PATCH 244/356] remove stupid logs and get rotation --- ios/RCTARKit.m | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 84917ff3..071b9c2e 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -425,7 +425,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc SCNVector3 xpos = toSCNVector3(localAnchor.transform.columns[2]); SCNVector3 ypos = toSCNVector3(localAnchor.transform.columns[1]); SCNVector3 apos = toSCNVector3(localAnchor.transform.columns[0]); - GLKMatrix4 newRotation = GLKMatrix4MakeYRotation(rotation); + // GLKMatrix4 newRotation = GLKMatrix4MakeYRotation(rotation); @@ -433,24 +433,13 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc NSDictionary *xjson = vectorToJson(xpos); NSDictionary *yjson = vectorToJson(ypos); NSDictionary *ajson = vectorToJson(apos); + // GLKVector4 vec = GLKMatrix4GetColumn(newRotation, 0); + + // GLKVector4 result = vector4ToJson(vec); NSLog(@"hello world!"); - NSLog(@"%@", newRotation[0,0]); - NSLog(@"%@", newRotation[0,1]); - NSLog(@"%@", newRotation[0,2]); - NSLog(@"%@", newRotation[0,3]); - NSLog(@"%@", newRotation[1,0]); - NSLog(@"%@", newRotation[1,1]); - NSLog(@"%@", newRotation[1,2]); - NSLog(@"%@", newRotation[1,3]); - NSLog(@"%@", newRotation[2,0]); - NSLog(@"%@", newRotation[2,1]); - NSLog(@"%@", newRotation[2,2]); - NSLog(@"%@", newRotation[2,3]); - NSLog(@"%@", newRotation[3,0]); - NSLog(@"%@", newRotation[3,1]); - NSLog(@"%@", newRotation[3,2]); - NSLog(@"%@", newRotation[3,3]); + NSLog(@"%@", rotation); + // float opposite = landmark.altitude - location.altitude; // float tilt = atan2(opposite, distance); From 054ddc8d26da5d7082de89c705f4fda13aded7e9 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 18:49:16 -0400 Subject: [PATCH 245/356] remove logs --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 071b9c2e..dab46bee 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -438,7 +438,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc // GLKVector4 result = vector4ToJson(vec); NSLog(@"hello world!"); - NSLog(@"%@", rotation); + // NSLog(@"%@", rotation); // float opposite = landmark.altitude - location.altitude; @@ -446,7 +446,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc // GLKMatrix4 tiltRotation = GLKMatrix4MakeXRotation(tilt); return @{ - @"results": @{ @"y": @(y), @"z": @(distance) } + @"results": @{ @"y": @(rotation), @"z": @(distance) } }; } From 5c2e9b465da8b9da036a37b4c5100bae30ee3f51 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 18:58:02 -0400 Subject: [PATCH 246/356] log vector 4s --- ios/RCTARKit.m | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index dab46bee..85cfd6a3 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -425,7 +425,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc SCNVector3 xpos = toSCNVector3(localAnchor.transform.columns[2]); SCNVector3 ypos = toSCNVector3(localAnchor.transform.columns[1]); SCNVector3 apos = toSCNVector3(localAnchor.transform.columns[0]); - // GLKMatrix4 newRotation = GLKMatrix4MakeYRotation(rotation); + GLKMatrix4 newRotation = GLKMatrix4MakeYRotation(rotation); @@ -433,12 +433,21 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc NSDictionary *xjson = vectorToJson(xpos); NSDictionary *yjson = vectorToJson(ypos); NSDictionary *ajson = vectorToJson(apos); - // GLKVector4 vec = GLKMatrix4GetColumn(newRotation, 0); + GLKVector4 vec = GLKMatrix4GetColumn(newRotation, 0); + GLKVector4 vec1 = GLKMatrix4GetColumn(newRotation, 1); + GLKVector4 vec2 = GLKMatrix4GetColumn(newRotation, 2); + GLKVector4 vec3 = GLKMatrix4GetColumn(newRotation, 3); - // GLKVector4 result = vector4ToJson(vec); + NSDictionary *result = vector4ToJson(vec); + NSDictionary *result1 = vector4ToJson(vec1); + NSDictionary *result2 = vector4ToJson(vec2); + NSDictionary *result3 = vector4ToJson(vec3); NSLog(@"hello world!"); - // NSLog(@"%@", rotation); + NSLog(@"%@", result); + NSLog(@"%@", result1); + NSLog(@"%@", result2); + NSLog(@"%@", result3); // float opposite = landmark.altitude - location.altitude; From ffca91926138cbbd60248f07cc2b2b2d6152f25b Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 19:03:48 -0400 Subject: [PATCH 247/356] get vec 4' --- ios/RCTARKit.m | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 85cfd6a3..99911cc9 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -438,16 +438,14 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc GLKVector4 vec2 = GLKMatrix4GetColumn(newRotation, 2); GLKVector4 vec3 = GLKMatrix4GetColumn(newRotation, 3); - NSDictionary *result = vector4ToJson(vec); - NSDictionary *result1 = vector4ToJson(vec1); - NSDictionary *result2 = vector4ToJson(vec2); - NSDictionary *result3 = vector4ToJson(vec3); + // NSDictionary *result = vector4ToJson(vec); + // NSDictionary *result1 = vector4ToJson(vec1); + // NSDictionary *result2 = vector4ToJson(vec2); + // NSDictionary *result3 = vector4ToJson(vec3); NSLog(@"hello world!"); - NSLog(@"%@", result); - NSLog(@"%@", result1); - NSLog(@"%@", result2); - NSLog(@"%@", result3); + NSLog(@"%@", vec[0]); + // float opposite = landmark.altitude - location.altitude; From 3e1bf4da8ca5ad2e7edf983f064edceba52fb8fb Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 19:10:23 -0400 Subject: [PATCH 248/356] update logs --- ios/RCTARKit.m | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 99911cc9..91c89c93 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -433,8 +433,8 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc NSDictionary *xjson = vectorToJson(xpos); NSDictionary *yjson = vectorToJson(ypos); NSDictionary *ajson = vectorToJson(apos); - GLKVector4 vec = GLKMatrix4GetColumn(newRotation, 0); - GLKVector4 vec1 = GLKMatrix4GetColumn(newRotation, 1); + GLKVector4 vec = GLKMatrix4GetRow(newRotation, 3); + GLKVector4 vec1 = GLKMatrix4GetColumn(newRotation, 3); GLKVector4 vec2 = GLKMatrix4GetColumn(newRotation, 2); GLKVector4 vec3 = GLKMatrix4GetColumn(newRotation, 3); @@ -444,8 +444,9 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc // NSDictionary *result3 = vector4ToJson(vec3); NSLog(@"hello world!"); - NSLog(@"%@", vec[0]); - + NSLog(@"%@", vec); + NSLog(@"%@", vec1); + // float opposite = landmark.altitude - location.altitude; From b05395e316ac4c9ae4ff1a4ccc9e5b02ea5663c3 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 19:24:28 -0400 Subject: [PATCH 249/356] update action --- ios/RCTARKit.m | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 91c89c93..055dcdd2 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -438,14 +438,10 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc GLKVector4 vec2 = GLKMatrix4GetColumn(newRotation, 2); GLKVector4 vec3 = GLKMatrix4GetColumn(newRotation, 3); - // NSDictionary *result = vector4ToJson(vec); - // NSDictionary *result1 = vector4ToJson(vec1); - // NSDictionary *result2 = vector4ToJson(vec2); - // NSDictionary *result3 = vector4ToJson(vec3); + SCNAction *action = [SCNAction rotateToX:rotation y:0 z:0 duration:0.5]; NSLog(@"hello world!"); - NSLog(@"%@", vec); - NSLog(@"%@", vec1); + NSLog(@"%@", action); From 9f5084f8137c09df0d5dc20697acde66884c9fca Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 19:34:15 -0400 Subject: [PATCH 250/356] update logs --- ios/RCTARKit.m | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 055dcdd2..643bd74c 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -433,15 +433,16 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc NSDictionary *xjson = vectorToJson(xpos); NSDictionary *yjson = vectorToJson(ypos); NSDictionary *ajson = vectorToJson(apos); - GLKVector4 vec = GLKMatrix4GetRow(newRotation, 3); - GLKVector4 vec1 = GLKMatrix4GetColumn(newRotation, 3); + GLKVector4 vec = GLKMatrix4GetRow(newRotation, 0); + GLKVector4 vec1 = GLKMatrix4GetColumn(newRotation, 0); GLKVector4 vec2 = GLKMatrix4GetColumn(newRotation, 2); GLKVector4 vec3 = GLKMatrix4GetColumn(newRotation, 3); SCNAction *action = [SCNAction rotateToX:rotation y:0 z:0 duration:0.5]; NSLog(@"hello world!"); - NSLog(@"%@", action); + NSLog(@"%@", vec); + NSLog(@"%@", vec1); From bd541f2da90d68d388aba417a8fd3556037770e5 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 19:41:54 -0400 Subject: [PATCH 251/356] upodate new rotation --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 643bd74c..8ea9b6da 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -441,7 +441,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc SCNAction *action = [SCNAction rotateToX:rotation y:0 z:0 duration:0.5]; NSLog(@"hello world!"); - NSLog(@"%@", vec); + NSLog(@"%@", newRotation.m00); NSLog(@"%@", vec1); From 64408a63cc02a66307682ef4a773807ab1d5af3e Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 21:09:33 -0400 Subject: [PATCH 252/356] add dynamic degree to calculation --- ios/RCTARKit.h | 2 +- ios/RCTARKit.m | 62 +++++++++++++++++++------------------------ ios/RCTARKitManager.m | 4 +-- 3 files changed, 31 insertions(+), 37 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 229eccf2..f10b810a 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -96,7 +96,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)focusScene; - (void)clearScene; - (NSDictionary *)readCameraPosition; -- (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong; +- (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong bearingDegrees:(float)bearingDegrees; - (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 8ea9b6da..cd525c16 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -381,7 +381,7 @@ - (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)loc } -- (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong { +- (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong bearingDegrees:(float)bearingDegrees { CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(locationLat, locationLong) @@ -403,12 +403,20 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc float startLon = GLKMathDegreesToRadians(locationLong); float endLat = GLKMathDegreesToRadians(landmarkLat); float endLon = GLKMathDegreesToRadians(landmarkLong); + float distanceKm = distance / 1000 + + NSDictionary * bearingResult = [self coordinateFromCoord:locationLat locationLong:locationLong atDistanceKm:distanceKm atBearingDegrees:bearingDegrees]; + + float bearingLat = bearingResult.results.latitude; + float bearingLong = bearingResult.results.longitude; + + + float dynamicDegrees = angleBetweenPoints(endLat, endLon, bearingLat, bearingLong); + + float finalX = (distance * sin(bearing)) / sin(dynamicDegrees); + + float bearing = angleBetweenPoints(startLat, startLon, endLat, endLon); - float lonDiff = endLon - startLon; - float y = sin(lonDiff) * cos(endLat); - float x = cos(startLat) * sin(endLat) - sin(startLat) * cos(endLat) * cos(endLon - startLon); - float rotation = atan2(y, x); - float bearing = [self degreesFromRadians:rotation]; simd_float4 position = simd_make_float4(0.0, 0.0, -distance, 0.0); matrix_float4x4 translationMatrix = matrix_identity_float4x4; translationMatrix.columns[3] = position; @@ -419,39 +427,13 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc rotationMatrix.columns[2][2] = cos(bearing); + simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; - SCNVector3 zpos = toSCNVector3(localAnchor.transform.columns[3]); - SCNVector3 xpos = toSCNVector3(localAnchor.transform.columns[2]); - SCNVector3 ypos = toSCNVector3(localAnchor.transform.columns[1]); - SCNVector3 apos = toSCNVector3(localAnchor.transform.columns[0]); - GLKMatrix4 newRotation = GLKMatrix4MakeYRotation(rotation); - - - - NSDictionary *zjson = vectorToJson(zpos); - NSDictionary *xjson = vectorToJson(xpos); - NSDictionary *yjson = vectorToJson(ypos); - NSDictionary *ajson = vectorToJson(apos); - GLKVector4 vec = GLKMatrix4GetRow(newRotation, 0); - GLKVector4 vec1 = GLKMatrix4GetColumn(newRotation, 0); - GLKVector4 vec2 = GLKMatrix4GetColumn(newRotation, 2); - GLKVector4 vec3 = GLKMatrix4GetColumn(newRotation, 3); - SCNAction *action = [SCNAction rotateToX:rotation y:0 z:0 duration:0.5]; - - NSLog(@"hello world!"); - NSLog(@"%@", newRotation.m00); - NSLog(@"%@", vec1); - - - - // float opposite = landmark.altitude - location.altitude; - // float tilt = atan2(opposite, distance); - // GLKMatrix4 tiltRotation = GLKMatrix4MakeXRotation(tilt); return @{ - @"results": @{ @"y": @(rotation), @"z": @(distance) } + @"results": @{ @"y": @(finalX), @"z": @(distance) } }; } @@ -459,6 +441,18 @@ static SCNVector3 toSCNVector3(simd_float4 float4) { SCNVector3 positionAbsolute = SCNVector3Make(float4.x, float4.y, float4.z); return positionAbsolute; } + + +static float angleBetweenPoints(const float startLat, const float startLon, const float endLat, const float endLon) { + float lonDiff = endLon - startLon; + float y = sin(lonDiff) * cos(endLat); + float x = cos(startLat) * sin(endLat) - sin(startLat) * cos(endLat) * cos(endLon - startLon); + float rotation = atan2(y, x); + float bearing = [self degreesFromRadians:rotation]; + return positionAbsolute; +} + + static NSDictionary * vectorToJson(const SCNVector3 v) { return @{ @"x": @(v.x), @"y": @(v.y), @"z": @(v.z) }; } diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 0441db17..c7805a76 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -450,8 +450,8 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] readCameraPosition]); } -RCT_EXPORT_METHOD(getAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - resolve([[ARKit sharedInstance] getArAnchorPosition:locationLat locationLong:locationLong landmarkLat:landmarkLat landmarkLong:landmarkLong]); +RCT_EXPORT_METHOD(getAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong bearingDegrees:(float)bearingDegrees resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + resolve([[ARKit sharedInstance] getArAnchorPosition:locationLat locationLong:locationLong landmarkLat:landmarkLat landmarkLong:landmarkLong bearingDegrees:(float)bearingDegrees]); } RCT_EXPORT_METHOD(getNewCoords:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { From 36f80e87249b6dbcacc53e02727eb52c35bedee0 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 21:18:32 -0400 Subject: [PATCH 253/356] update bearing results --- ios/RCTARKit.m | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index cd525c16..c83d921b 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -403,19 +403,17 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc float startLon = GLKMathDegreesToRadians(locationLong); float endLat = GLKMathDegreesToRadians(landmarkLat); float endLon = GLKMathDegreesToRadians(landmarkLong); - float distanceKm = distance / 1000 + float distanceKm = distance / 1000; NSDictionary * bearingResult = [self coordinateFromCoord:locationLat locationLong:locationLong atDistanceKm:distanceKm atBearingDegrees:bearingDegrees]; - float bearingLat = bearingResult.results.latitude; - float bearingLong = bearingResult.results.longitude; + float bearingLat = bearingResult[@"results"][@"latitude"]; + float bearingLong = bearingResult[@"results"][@"longitude"];; float dynamicDegrees = angleBetweenPoints(endLat, endLon, bearingLat, bearingLong); - - float finalX = (distance * sin(bearing)) / sin(dynamicDegrees); - float bearing = angleBetweenPoints(startLat, startLon, endLat, endLon); + float finalX = (distance * sin(bearing)) / sin(dynamicDegrees); simd_float4 position = simd_make_float4(0.0, 0.0, -distance, 0.0); matrix_float4x4 translationMatrix = matrix_identity_float4x4; @@ -448,8 +446,8 @@ static float angleBetweenPoints(const float startLat, const float startLon, con float y = sin(lonDiff) * cos(endLat); float x = cos(startLat) * sin(endLat) - sin(startLat) * cos(endLat) * cos(endLon - startLon); float rotation = atan2(y, x); - float bearing = [self degreesFromRadians:rotation]; - return positionAbsolute; + float bearing = rotation * (180.0/M_PI); + return bearing; } From 6aaa193d1a630f2219f70e3e631c49d63376c2e3 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 21:26:52 -0400 Subject: [PATCH 254/356] add ditonary accessor --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index c83d921b..35068c2c 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -407,8 +407,8 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc NSDictionary * bearingResult = [self coordinateFromCoord:locationLat locationLong:locationLong atDistanceKm:distanceKm atBearingDegrees:bearingDegrees]; - float bearingLat = bearingResult[@"results"][@"latitude"]; - float bearingLong = bearingResult[@"results"][@"longitude"];; + float bearingLat = [bearingResult valueForKeyPath:@"results.latitude"]; + float bearingLong = [bearingResult valueForKeyPath:@"results.longitude"]; float dynamicDegrees = angleBetweenPoints(endLat, endLon, bearingLat, bearingLong); From 7258f9fb3e0e19729186a868d45a488d00721e5d Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 21:35:59 -0400 Subject: [PATCH 255/356] redeclare vlaues --- ios/RCTARKit.m | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 35068c2c..86f6427d 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -406,9 +406,13 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc float distanceKm = distance / 1000; NSDictionary * bearingResult = [self coordinateFromCoord:locationLat locationLong:locationLong atDistanceKm:distanceKm atBearingDegrees:bearingDegrees]; + float bearingLat = 0.0 + float bearingLong = 0.0 + if(bearingResult[@"results"][@"latitude"] && bearingResult[@"results"][@"longitude"] ){ + bearingLat = [bearingResult valueForKeyPath:@"results.latitude"]; + bearingLong = [bearingResult valueForKeyPath:@"results.longitude"]; + } - float bearingLat = [bearingResult valueForKeyPath:@"results.latitude"]; - float bearingLong = [bearingResult valueForKeyPath:@"results.longitude"]; float dynamicDegrees = angleBetweenPoints(endLat, endLon, bearingLat, bearingLong); From 2b72fe6e5d4743fdf30c9d76ca090ac3bb14f234 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 21:41:51 -0400 Subject: [PATCH 256/356] add semicolons --- ios/RCTARKit.m | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 86f6427d..28cb9038 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -406,13 +406,14 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc float distanceKm = distance / 1000; NSDictionary * bearingResult = [self coordinateFromCoord:locationLat locationLong:locationLong atDistanceKm:distanceKm atBearingDegrees:bearingDegrees]; - float bearingLat = 0.0 - float bearingLong = 0.0 + float bearingLat = 0.0; + float bearingLong = 0.0; if(bearingResult[@"results"][@"latitude"] && bearingResult[@"results"][@"longitude"] ){ bearingLat = [bearingResult valueForKeyPath:@"results.latitude"]; bearingLong = [bearingResult valueForKeyPath:@"results.longitude"]; } - + NSLog(@"bearingLat:-%f", bearingLat); + NSLog(@"bearingLong:-%f", bearingLong); float dynamicDegrees = angleBetweenPoints(endLat, endLon, bearingLat, bearingLong); From 4311bbd6d5a41fad8cb3df2ee382d2bb5cc86de8 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 18 Jun 2020 21:48:32 -0400 Subject: [PATCH 257/356] correctly access dict --- ios/RCTARKit.m | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 28cb9038..c5c6ce9c 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -406,12 +406,10 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc float distanceKm = distance / 1000; NSDictionary * bearingResult = [self coordinateFromCoord:locationLat locationLong:locationLong atDistanceKm:distanceKm atBearingDegrees:bearingDegrees]; - float bearingLat = 0.0; - float bearingLong = 0.0; - if(bearingResult[@"results"][@"latitude"] && bearingResult[@"results"][@"longitude"] ){ - bearingLat = [bearingResult valueForKeyPath:@"results.latitude"]; - bearingLong = [bearingResult valueForKeyPath:@"results.longitude"]; - } + + float bearingLat = [[bearingResult valueForKeyPath:@"results.latitude"] floatValue]; + float bearingLong = [[bearingResult valueForKeyPath:@"results.longitude"] floatValue]; + NSLog(@"bearingLat:-%f", bearingLat); NSLog(@"bearingLong:-%f", bearingLong); From 6675c802cf775342deb22e4240656cf5db1e9d71 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 22 Jun 2020 18:30:59 -0400 Subject: [PATCH 258/356] access rotation matrix --- ios/RCTARKit.m | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index c5c6ce9c..03d9ee9c 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -419,17 +419,16 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc float finalX = (distance * sin(bearing)) / sin(dynamicDegrees); simd_float4 position = simd_make_float4(0.0, 0.0, -distance, 0.0); - matrix_float4x4 translationMatrix = matrix_identity_float4x4; - translationMatrix.columns[3] = position; - matrix_float4x4 rotationMatrix = matrix_identity_float4x4; - rotationMatrix.columns[0][2] = cos(bearing); - rotationMatrix.columns[0][2] = -sin(bearing); - rotationMatrix.columns[2][2] = sin(bearing); - rotationMatrix.columns[2][2] = cos(bearing); + matrix_float4x4 distanceTransform = matrix_identity_float4x4; + distanceTransform.columns[3] = position; + float opposite = 13.655269622802734 - 13.655269622802734 + float tilt = atan2(opposite, distance) + + GLKMatrix4 rotation = GLKMatrix4MakeXRotation(tilt); + float firstRotation = rotation[0][0]; - simd_float4x4 transformMatrix = simd_mul(rotationMatrix, translationMatrix); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; From e14be10b9ae149bc745ea3e9ce5f22ea506a3a9d Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 22 Jun 2020 18:44:04 -0400 Subject: [PATCH 259/356] add getrow --- ios/RCTARKit.m | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 03d9ee9c..77fd3a5a 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -422,14 +422,15 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc matrix_float4x4 distanceTransform = matrix_identity_float4x4; distanceTransform.columns[3] = position; - float opposite = 13.655269622802734 - 13.655269622802734 - float tilt = atan2(opposite, distance) + float opposite = 13.655269622802734 - 13.655269622802734; + float tilt = atan2(opposite, distance); GLKMatrix4 rotation = GLKMatrix4MakeXRotation(tilt); - float firstRotation = rotation[0][0]; + GLKVector4 vec = GLKMatrix4GetRow(rotation, 0); - ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; + + // ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; return @{ From a58bca142941a5410c09e26598f4ef05ba40ff73 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 22 Jun 2020 19:08:07 -0400 Subject: [PATCH 260/356] update url --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 77fd3a5a..62de76c6 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -426,7 +426,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc float tilt = atan2(opposite, distance); GLKMatrix4 rotation = GLKMatrix4MakeXRotation(tilt); - GLKVector4 vec = GLKMatrix4GetRow(rotation, 0); + GLKVector4 vec = GLKMatrix4GetRow(rotation, 0)[0]; From 66e7a2390abeb301ba5a91016952ad02e46cb2c6 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 23 Jun 2020 23:35:06 -0400 Subject: [PATCH 261/356] update matrix info --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 62de76c6..4585f641 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -426,7 +426,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc float tilt = atan2(opposite, distance); GLKMatrix4 rotation = GLKMatrix4MakeXRotation(tilt); - GLKVector4 vec = GLKMatrix4GetRow(rotation, 0)[0]; + float vec = GLKMatrix4GetRow(rotation, 0).columns[0]; From 8b79eb1f985b250443626628bd9c3db7c36b1a87 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 23 Jun 2020 23:44:23 -0400 Subject: [PATCH 262/356] update x --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 4585f641..d703d6e4 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -426,7 +426,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc float tilt = atan2(opposite, distance); GLKMatrix4 rotation = GLKMatrix4MakeXRotation(tilt); - float vec = GLKMatrix4GetRow(rotation, 0).columns[0]; + float vec = GLKMatrix4GetRow(rotation, 0).x; From 98db28003c6241c2dcc3730c0df9ac778ceb4cb1 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 23 Jun 2020 23:50:16 -0400 Subject: [PATCH 263/356] update w --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index d703d6e4..5a2e044f 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -426,7 +426,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc float tilt = atan2(opposite, distance); GLKMatrix4 rotation = GLKMatrix4MakeXRotation(tilt); - float vec = GLKMatrix4GetRow(rotation, 0).x; + float vec = GLKMatrix4GetRow(rotation, 0).w; From 32052b749bc828190c5d12baaefc6e2df28cb442 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 24 Jun 2020 18:18:19 -0400 Subject: [PATCH 264/356] add anchjor --- ios/RCTARKit.m | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 5a2e044f..c14fa8cc 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -428,10 +428,28 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc GLKMatrix4 rotation = GLKMatrix4MakeXRotation(tilt); float vec = GLKMatrix4GetRow(rotation, 0).w; + matrix_float4x4 rotationMatrix = matrix_identity_float4x4; + rotationMatrix.columns[0] = simd_make_float4(GLKMatrix4GetRow(rotation, 0).x, GLKMatrix4GetRow(rotation, 0).y, GLKMatrix4GetRow(rotation, 0).z, GLKMatrix4GetRow(rotation, 0).w); + rotationMatrix.columns[1] = simd_make_float4(GLKMatrix4GetRow(rotation, 1).x, GLKMatrix4GetRow(rotation, 1).y, GLKMatrix4GetRow(rotation, 1).z, GLKMatrix4GetRow(rotation, 1).w); + rotationMatrix.columns[2] = simd_make_float4(GLKMatrix4GetRow(rotation, 2).x, GLKMatrix4GetRow(rotation, 2).y, GLKMatrix4GetRow(rotation, 2).z, GLKMatrix4GetRow(rotation, 2).w); + rotationMatrix.columns[3] = simd_make_float4(GLKMatrix4GetRow(rotation, 3).x, GLKMatrix4GetRow(rotation, 3).y, GLKMatrix4GetRow(rotation, 3).z, GLKMatrix4GetRow(rotation, 3).w); + matrix_float4x4 tiltedTransformation = simd_mul(rotationMatrix, distanceTransform) + GLKMatrix4 yRotation = GLKMatrix4MakeYRotation(-bearing); - // ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:transformMatrix]; + matrix_float4x4 yRotationMatrix = matrix_identity_float4x4; + yRotationMatrix.columns[0] = simd_make_float4(GLKMatrix4GetRow(yRotation, 0).x, GLKMatrix4GetRow(yRotation, 0).y, GLKMatrix4GetRow(yRotation, 0).z, GLKMatrix4GetRow(yRotation, 0).w); + yRotationMatrix.columns[1] = simd_make_float4(GLKMatrix4GetRow(yRotation, 1).x, GLKMatrix4GetRow(yRotation, 1).y, GLKMatrix4GetRow(yRotation, 1).z, GLKMatrix4GetRow(yRotation, 1).w); + yRotationMatrix.columns[2] = simd_make_float4(GLKMatrix4GetRow(yRotation, 2).x, GLKMatrix4GetRow(yRotation, 2).y, GLKMatrix4GetRow(yRotation, 2).z, GLKMatrix4GetRow(yRotation, 2).w); + yRotationMatrix.columns[3] = simd_make_float4(GLKMatrix4GetRow(yRotation, 3).x, GLKMatrix4GetRow(yRotation, 3).y, GLKMatrix4GetRow(yRotation, 3).z, GLKMatrix4GetRow(yRotation, 3).w); + matrix_float4x4 finalTransform = simd_mul(yRotationMatrix, tiltedTransformation) + + + + ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:finalTransform]; + + [self.arView.session addAnchor:localAnchor]; return @{ @"results": @{ @"y": @(finalX), @"z": @(distance) } From 1e4343ffd6a0438cb3bdeb928b1f58046001f5e5 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 24 Jun 2020 18:24:37 -0400 Subject: [PATCH 265/356] add semicolon --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index c14fa8cc..b3d3fa71 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -434,7 +434,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc rotationMatrix.columns[2] = simd_make_float4(GLKMatrix4GetRow(rotation, 2).x, GLKMatrix4GetRow(rotation, 2).y, GLKMatrix4GetRow(rotation, 2).z, GLKMatrix4GetRow(rotation, 2).w); rotationMatrix.columns[3] = simd_make_float4(GLKMatrix4GetRow(rotation, 3).x, GLKMatrix4GetRow(rotation, 3).y, GLKMatrix4GetRow(rotation, 3).z, GLKMatrix4GetRow(rotation, 3).w); - matrix_float4x4 tiltedTransformation = simd_mul(rotationMatrix, distanceTransform) + matrix_float4x4 tiltedTransformation = simd_mul(rotationMatrix, distanceTransform); GLKMatrix4 yRotation = GLKMatrix4MakeYRotation(-bearing); matrix_float4x4 yRotationMatrix = matrix_identity_float4x4; @@ -443,7 +443,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc yRotationMatrix.columns[2] = simd_make_float4(GLKMatrix4GetRow(yRotation, 2).x, GLKMatrix4GetRow(yRotation, 2).y, GLKMatrix4GetRow(yRotation, 2).z, GLKMatrix4GetRow(yRotation, 2).w); yRotationMatrix.columns[3] = simd_make_float4(GLKMatrix4GetRow(yRotation, 3).x, GLKMatrix4GetRow(yRotation, 3).y, GLKMatrix4GetRow(yRotation, 3).z, GLKMatrix4GetRow(yRotation, 3).w); - matrix_float4x4 finalTransform = simd_mul(yRotationMatrix, tiltedTransformation) + matrix_float4x4 finalTransform = simd_mul(yRotationMatrix, tiltedTransformation); From 919d6f2540b9b045df964077a093b22d73cca8c0 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 24 Jun 2020 18:53:28 -0400 Subject: [PATCH 266/356] update location tracking --- ios/RCTARKit.m | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index b3d3fa71..38ab831e 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -403,30 +403,20 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc float startLon = GLKMathDegreesToRadians(locationLong); float endLat = GLKMathDegreesToRadians(landmarkLat); float endLon = GLKMathDegreesToRadians(landmarkLong); - float distanceKm = distance / 1000; - NSDictionary * bearingResult = [self coordinateFromCoord:locationLat locationLong:locationLong atDistanceKm:distanceKm atBearingDegrees:bearingDegrees]; - float bearingLat = [[bearingResult valueForKeyPath:@"results.latitude"] floatValue]; - float bearingLong = [[bearingResult valueForKeyPath:@"results.longitude"] floatValue]; - - NSLog(@"bearingLat:-%f", bearingLat); - NSLog(@"bearingLong:-%f", bearingLong); + matrix_float4x4 distanceTransform = matrix_identity_float4x4; + distanceTransform.columns[3].x = 0; + distanceTransform.columns[3].y = 0; + distanceTransform.columns[3].z = distance; + float rotation = angleBetweenPoints(startLat, startLon, endLat, endLon); - float dynamicDegrees = angleBetweenPoints(endLat, endLon, bearingLat, bearingLong); - float bearing = angleBetweenPoints(startLat, startLon, endLat, endLon); - float finalX = (distance * sin(bearing)) / sin(dynamicDegrees); - - simd_float4 position = simd_make_float4(0.0, 0.0, -distance, 0.0); - matrix_float4x4 distanceTransform = matrix_identity_float4x4; - distanceTransform.columns[3] = position; float opposite = 13.655269622802734 - 13.655269622802734; float tilt = atan2(opposite, distance); - GLKMatrix4 rotation = GLKMatrix4MakeXRotation(tilt); - float vec = GLKMatrix4GetRow(rotation, 0).w; + GLKMatrix4 rad = GLKMatrix4MakeXRotation(tilt); matrix_float4x4 rotationMatrix = matrix_identity_float4x4; rotationMatrix.columns[0] = simd_make_float4(GLKMatrix4GetRow(rotation, 0).x, GLKMatrix4GetRow(rotation, 0).y, GLKMatrix4GetRow(rotation, 0).z, GLKMatrix4GetRow(rotation, 0).w); @@ -435,7 +425,8 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc rotationMatrix.columns[3] = simd_make_float4(GLKMatrix4GetRow(rotation, 3).x, GLKMatrix4GetRow(rotation, 3).y, GLKMatrix4GetRow(rotation, 3).z, GLKMatrix4GetRow(rotation, 3).w); matrix_float4x4 tiltedTransformation = simd_mul(rotationMatrix, distanceTransform); - GLKMatrix4 yRotation = GLKMatrix4MakeYRotation(-bearing); + + GLKMatrix4 yRotation = GLKMatrix4MakeYRotation(-rotation); matrix_float4x4 yRotationMatrix = matrix_identity_float4x4; yRotationMatrix.columns[0] = simd_make_float4(GLKMatrix4GetRow(yRotation, 0).x, GLKMatrix4GetRow(yRotation, 0).y, GLKMatrix4GetRow(yRotation, 0).z, GLKMatrix4GetRow(yRotation, 0).w); @@ -443,11 +434,11 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc yRotationMatrix.columns[2] = simd_make_float4(GLKMatrix4GetRow(yRotation, 2).x, GLKMatrix4GetRow(yRotation, 2).y, GLKMatrix4GetRow(yRotation, 2).z, GLKMatrix4GetRow(yRotation, 2).w); yRotationMatrix.columns[3] = simd_make_float4(GLKMatrix4GetRow(yRotation, 3).x, GLKMatrix4GetRow(yRotation, 3).y, GLKMatrix4GetRow(yRotation, 3).z, GLKMatrix4GetRow(yRotation, 3).w); - matrix_float4x4 finalTransform = simd_mul(yRotationMatrix, tiltedTransformation); + matrix_float4x4 completedTransformation = simd_mul(yRotationMatrix, tiltedTransformation); - ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:finalTransform]; + ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:completedTransformation]; [self.arView.session addAnchor:localAnchor]; @@ -465,10 +456,10 @@ static SCNVector3 toSCNVector3(simd_float4 float4) { static float angleBetweenPoints(const float startLat, const float startLon, const float endLat, const float endLon) { float lonDiff = endLon - startLon; float y = sin(lonDiff) * cos(endLat); - float x = cos(startLat) * sin(endLat) - sin(startLat) * cos(endLat) * cos(endLon - startLon); + float x == (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)) float rotation = atan2(y, x); - float bearing = rotation * (180.0/M_PI); - return bearing; + // float bearing = rotation * (180.0/M_PI); + return rotation; } From 86ffd64f606872a6db9919ba6fb329a8a51e3258 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 24 Jun 2020 18:59:47 -0400 Subject: [PATCH 267/356] update rotation --- ios/RCTARKit.m | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 38ab831e..bed4992d 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -419,10 +419,10 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc GLKMatrix4 rad = GLKMatrix4MakeXRotation(tilt); matrix_float4x4 rotationMatrix = matrix_identity_float4x4; - rotationMatrix.columns[0] = simd_make_float4(GLKMatrix4GetRow(rotation, 0).x, GLKMatrix4GetRow(rotation, 0).y, GLKMatrix4GetRow(rotation, 0).z, GLKMatrix4GetRow(rotation, 0).w); - rotationMatrix.columns[1] = simd_make_float4(GLKMatrix4GetRow(rotation, 1).x, GLKMatrix4GetRow(rotation, 1).y, GLKMatrix4GetRow(rotation, 1).z, GLKMatrix4GetRow(rotation, 1).w); - rotationMatrix.columns[2] = simd_make_float4(GLKMatrix4GetRow(rotation, 2).x, GLKMatrix4GetRow(rotation, 2).y, GLKMatrix4GetRow(rotation, 2).z, GLKMatrix4GetRow(rotation, 2).w); - rotationMatrix.columns[3] = simd_make_float4(GLKMatrix4GetRow(rotation, 3).x, GLKMatrix4GetRow(rotation, 3).y, GLKMatrix4GetRow(rotation, 3).z, GLKMatrix4GetRow(rotation, 3).w); + rotationMatrix.columns[0] = simd_make_float4(GLKMatrix4GetRow(rad, 0).x, GLKMatrix4GetRow(rad, 0).y, GLKMatrix4GetRow(rad, 0).z, GLKMatrix4GetRow(rad, 0).w); + rotationMatrix.columns[1] = simd_make_float4(GLKMatrix4GetRow(rad, 1).x, GLKMatrix4GetRow(rad, 1).y, GLKMatrix4GetRow(rad, 1).z, GLKMatrix4GetRow(rad, 1).w); + rotationMatrix.columns[2] = simd_make_float4(GLKMatrix4GetRow(rad, 2).x, GLKMatrix4GetRow(rad, 2).y, GLKMatrix4GetRow(rad, 2).z, GLKMatrix4GetRow(rad, 2).w); + rotationMatrix.columns[3] = simd_make_float4(GLKMatrix4GetRow(rad, 3).x, GLKMatrix4GetRow(rad, 3).y, GLKMatrix4GetRow(rad, 3).z, GLKMatrix4GetRow(rad, 3).w); matrix_float4x4 tiltedTransformation = simd_mul(rotationMatrix, distanceTransform); @@ -443,7 +443,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc [self.arView.session addAnchor:localAnchor]; return @{ - @"results": @{ @"y": @(finalX), @"z": @(distance) } + @"results": @{ @"y": @(0.0), @"z": @(distance) } }; } @@ -456,7 +456,7 @@ static SCNVector3 toSCNVector3(simd_float4 float4) { static float angleBetweenPoints(const float startLat, const float startLon, const float endLat, const float endLon) { float lonDiff = endLon - startLon; float y = sin(lonDiff) * cos(endLat); - float x == (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)) + float x = (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)); float rotation = atan2(y, x); // float bearing = rotation * (180.0/M_PI); return rotation; From d149ce6e595d839d0bebe420612a3de3a559eb23 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 24 Jun 2020 19:08:46 -0400 Subject: [PATCH 268/356] add some logs to figure shit out --- ios/RCTARKit.m | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index bed4992d..e5643a40 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -411,10 +411,12 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc distanceTransform.columns[3].z = distance; float rotation = angleBetweenPoints(startLat, startLon, endLat, endLon); + NSLog(@"rotation:-%f", rotation); float opposite = 13.655269622802734 - 13.655269622802734; float tilt = atan2(opposite, distance); + NSLog(@"tilt:-%f", tilt); GLKMatrix4 rad = GLKMatrix4MakeXRotation(tilt); @@ -435,8 +437,23 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc yRotationMatrix.columns[3] = simd_make_float4(GLKMatrix4GetRow(yRotation, 3).x, GLKMatrix4GetRow(yRotation, 3).y, GLKMatrix4GetRow(yRotation, 3).z, GLKMatrix4GetRow(yRotation, 3).w); matrix_float4x4 completedTransformation = simd_mul(yRotationMatrix, tiltedTransformation); - - + + NSLog(@"completedTransformation0x:-%f", completedTransformation.columns[0].x); + NSLog(@"completedTransformation0y:-%f", completedTransformation.columns[0].y); + NSLog(@"completedTransformation0z:-%f", completedTransformation.columns[0].z); + NSLog(@"completedTransformation0w:-%f", completedTransformation.columns[0].w); + NSLog(@"completedTransformation1x:-%f", completedTransformation.columns[1].x); + NSLog(@"completedTransformation1y:-%f", completedTransformation.columns[1].y); + NSLog(@"completedTransformation1z:-%f", completedTransformation.columns[1].z); + NSLog(@"completedTransformation1w:-%f", completedTransformation.columns[1].w); + NSLog(@"completedTransformation2x:-%f", completedTransformation.columns[2].x); + NSLog(@"completedTransformation2y:-%f", completedTransformation.columns[2].y); + NSLog(@"completedTransformation2z:-%f", completedTransformation.columns[2].z); + NSLog(@"completedTransformation2w:-%f", completedTransformation.columns[2].w); + NSLog(@"completedTransformation3x:-%f", completedTransformation.columns[3].x); + NSLog(@"completedTransformation3y:-%f", completedTransformation.columns[3].y); + NSLog(@"completedTransformation3z:-%f", completedTransformation.columns[3].z); + NSLog(@"completedTransformation3w:-%f", completedTransformation.columns[3].w); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:completedTransformation]; From 74ad5b2097dfcf0f4b7bbac96238af49e9c75d93 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 24 Jun 2020 19:21:59 -0400 Subject: [PATCH 269/356] try wiht distance transform --- ios/RCTARKit.m | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index e5643a40..5d0c228c 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -437,7 +437,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc yRotationMatrix.columns[3] = simd_make_float4(GLKMatrix4GetRow(yRotation, 3).x, GLKMatrix4GetRow(yRotation, 3).y, GLKMatrix4GetRow(yRotation, 3).z, GLKMatrix4GetRow(yRotation, 3).w); matrix_float4x4 completedTransformation = simd_mul(yRotationMatrix, tiltedTransformation); - + NSLog(@"completedTransformation0x:-%f", completedTransformation.columns[0].x); NSLog(@"completedTransformation0y:-%f", completedTransformation.columns[0].y); NSLog(@"completedTransformation0z:-%f", completedTransformation.columns[0].z); @@ -455,7 +455,8 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc NSLog(@"completedTransformation3z:-%f", completedTransformation.columns[3].z); NSLog(@"completedTransformation3w:-%f", completedTransformation.columns[3].w); - ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:completedTransformation]; + ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:distanceTransform]; + NSLog(@"localAnchor:-%f", localAnchor); [self.arView.session addAnchor:localAnchor]; From 54206c4e07d7a29d870807c68350c1f600896aa7 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 24 Jun 2020 20:47:04 -0400 Subject: [PATCH 270/356] add rotation info --- ios/RCTARKit.m | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 5d0c228c..19e5472c 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -414,7 +414,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc NSLog(@"rotation:-%f", rotation); - float opposite = 13.655269622802734 - 13.655269622802734; + float opposite = 13.655269622802734 - 13.0; float tilt = atan2(opposite, distance); NSLog(@"tilt:-%f", tilt); @@ -476,8 +476,13 @@ static float angleBetweenPoints(const float startLat, const float startLon, con float y = sin(lonDiff) * cos(endLat); float x = (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)); float rotation = atan2(y, x); - // float bearing = rotation * (180.0/M_PI); - return rotation; + float bearing = rotation * (180.0/M_PI); + if(bearing < 0){ + return rotation + 360; + } else { + return rotation + 360; + + } } From e0f76298e7c35e31de2362e2c6ce1d8a8fe73b30 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 24 Jun 2020 21:05:44 -0400 Subject: [PATCH 271/356] update rotation --- ios/RCTARKit.m | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 19e5472c..4747936b 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -476,11 +476,10 @@ static float angleBetweenPoints(const float startLat, const float startLon, con float y = sin(lonDiff) * cos(endLat); float x = (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)); float rotation = atan2(y, x); - float bearing = rotation * (180.0/M_PI); - if(bearing < 0){ - return rotation + 360; + if(rotation < 0){ + return rotation + M_PI * 2 ; } else { - return rotation + 360; + return rotation; } } From 199481e4728be2ad686e702f7ddd5638c8164036 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 24 Jun 2020 22:12:30 -0400 Subject: [PATCH 272/356] update location --- ios/RCTARKit.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 4747936b..d13be7f0 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -418,8 +418,11 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc float tilt = atan2(opposite, distance); NSLog(@"tilt:-%f", tilt); + GLKMatrix4 rad = GLKMatrix4MakeXRotation(tilt); + float newRad = rad.m01 + matrix_float4x4 rotationMatrix = matrix_identity_float4x4; rotationMatrix.columns[0] = simd_make_float4(GLKMatrix4GetRow(rad, 0).x, GLKMatrix4GetRow(rad, 0).y, GLKMatrix4GetRow(rad, 0).z, GLKMatrix4GetRow(rad, 0).w); rotationMatrix.columns[1] = simd_make_float4(GLKMatrix4GetRow(rad, 1).x, GLKMatrix4GetRow(rad, 1).y, GLKMatrix4GetRow(rad, 1).z, GLKMatrix4GetRow(rad, 1).w); From 9d7706dc345c41f739fe5bd79a5a4bf727b4b99d Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 24 Jun 2020 22:16:58 -0400 Subject: [PATCH 273/356] add semicolon --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index d13be7f0..87c57ef2 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -421,7 +421,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc GLKMatrix4 rad = GLKMatrix4MakeXRotation(tilt); - float newRad = rad.m01 + float newRad = rad.m01; matrix_float4x4 rotationMatrix = matrix_identity_float4x4; rotationMatrix.columns[0] = simd_make_float4(GLKMatrix4GetRow(rad, 0).x, GLKMatrix4GetRow(rad, 0).y, GLKMatrix4GetRow(rad, 0).z, GLKMatrix4GetRow(rad, 0).w); From 1439360b0c33920aa7d7661f2b3fca4e4732f39d Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 24 Jun 2020 22:24:58 -0400 Subject: [PATCH 274/356] update matrix accessor --- ios/RCTARKit.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 87c57ef2..4468e2a4 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -424,10 +424,10 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc float newRad = rad.m01; matrix_float4x4 rotationMatrix = matrix_identity_float4x4; - rotationMatrix.columns[0] = simd_make_float4(GLKMatrix4GetRow(rad, 0).x, GLKMatrix4GetRow(rad, 0).y, GLKMatrix4GetRow(rad, 0).z, GLKMatrix4GetRow(rad, 0).w); - rotationMatrix.columns[1] = simd_make_float4(GLKMatrix4GetRow(rad, 1).x, GLKMatrix4GetRow(rad, 1).y, GLKMatrix4GetRow(rad, 1).z, GLKMatrix4GetRow(rad, 1).w); - rotationMatrix.columns[2] = simd_make_float4(GLKMatrix4GetRow(rad, 2).x, GLKMatrix4GetRow(rad, 2).y, GLKMatrix4GetRow(rad, 2).z, GLKMatrix4GetRow(rad, 2).w); - rotationMatrix.columns[3] = simd_make_float4(GLKMatrix4GetRow(rad, 3).x, GLKMatrix4GetRow(rad, 3).y, GLKMatrix4GetRow(rad, 3).z, GLKMatrix4GetRow(rad, 3).w); + rotationMatrix.columns[0] = simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03); + rotationMatrix.columns[1] = simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13); + rotationMatrix.columns[2] = simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23); + rotationMatrix.columns[3] = simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33); matrix_float4x4 tiltedTransformation = simd_mul(rotationMatrix, distanceTransform); From 18476a3f0413364e63a21691b37a03cc93cfa6b0 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 24 Jun 2020 22:36:31 -0400 Subject: [PATCH 275/356] make float 4x4 --- ios/RCTARKit.m | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 4468e2a4..326e8ba5 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -424,20 +424,25 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc float newRad = rad.m01; matrix_float4x4 rotationMatrix = matrix_identity_float4x4; - rotationMatrix.columns[0] = simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03); - rotationMatrix.columns[1] = simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13); - rotationMatrix.columns[2] = simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23); - rotationMatrix.columns[3] = simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33); + + simd_float4x4 res = simd_make_float4(simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03) + simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13) + simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23) + simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33)); + // rotationMatrix.columns[0] = simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03); + // rotationMatrix.columns[1] = simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13); + // rotationMatrix.columns[2] = simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23); + // rotationMatrix.columns[3] = simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33); matrix_float4x4 tiltedTransformation = simd_mul(rotationMatrix, distanceTransform); GLKMatrix4 yRotation = GLKMatrix4MakeYRotation(-rotation); matrix_float4x4 yRotationMatrix = matrix_identity_float4x4; - yRotationMatrix.columns[0] = simd_make_float4(GLKMatrix4GetRow(yRotation, 0).x, GLKMatrix4GetRow(yRotation, 0).y, GLKMatrix4GetRow(yRotation, 0).z, GLKMatrix4GetRow(yRotation, 0).w); - yRotationMatrix.columns[1] = simd_make_float4(GLKMatrix4GetRow(yRotation, 1).x, GLKMatrix4GetRow(yRotation, 1).y, GLKMatrix4GetRow(yRotation, 1).z, GLKMatrix4GetRow(yRotation, 1).w); - yRotationMatrix.columns[2] = simd_make_float4(GLKMatrix4GetRow(yRotation, 2).x, GLKMatrix4GetRow(yRotation, 2).y, GLKMatrix4GetRow(yRotation, 2).z, GLKMatrix4GetRow(yRotation, 2).w); - yRotationMatrix.columns[3] = simd_make_float4(GLKMatrix4GetRow(yRotation, 3).x, GLKMatrix4GetRow(yRotation, 3).y, GLKMatrix4GetRow(yRotation, 3).z, GLKMatrix4GetRow(yRotation, 3).w); + yRotationMatrix.columns[0] = simd_make_float4(yRotation.m00, yRotation.m01, yRotation.m02, yRotation.m03); + yRotationMatrix.columns[1] = simd_make_float4(yRotation.m10, yRotation.m11, yRotation.m12, yRotation.m13); + yRotationMatrix.columns[2] = simd_make_float4(yRotation.m20, yRotation.m21, yRotation.m22, yRotation.m23); + yRotationMatrix.columns[3] = simd_make_float4(yRotation.m30, yRotation.m31, yRotation.m32, yRotation.m33); matrix_float4x4 completedTransformation = simd_mul(yRotationMatrix, tiltedTransformation); From 2b318585cd38b44b744994a132e2ae434738fc69 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 24 Jun 2020 22:44:14 -0400 Subject: [PATCH 276/356] update syntax --- ios/RCTARKit.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 326e8ba5..612bc12a 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -425,9 +425,9 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc matrix_float4x4 rotationMatrix = matrix_identity_float4x4; - simd_float4x4 res = simd_make_float4(simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03) - simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13) - simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23) + simd_float4x4 res = simd_make_float4(simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03), + simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13), + simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23), simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33)); // rotationMatrix.columns[0] = simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03); // rotationMatrix.columns[1] = simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13); From 1fe87f91bb533caeb2f3e7d38191193ef0397fcf Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 24 Jun 2020 22:50:49 -0400 Subject: [PATCH 277/356] make 4x4 --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 612bc12a..184f8fa4 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -425,7 +425,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc matrix_float4x4 rotationMatrix = matrix_identity_float4x4; - simd_float4x4 res = simd_make_float4(simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03), + simd_float4x4 res = simd_make_float4x4(simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03), simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13), simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23), simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33)); From 942097cc0ad018c3b1ac4f72f4ccacb400c83e4e Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 25 Jun 2020 00:28:31 -0400 Subject: [PATCH 278/356] update matrix --- ios/RCTARKit.m | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 184f8fa4..a66fb51f 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -425,14 +425,14 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc matrix_float4x4 rotationMatrix = matrix_identity_float4x4; - simd_float4x4 res = simd_make_float4x4(simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03), - simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13), - simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23), - simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33)); - // rotationMatrix.columns[0] = simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03); - // rotationMatrix.columns[1] = simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13); - // rotationMatrix.columns[2] = simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23); - // rotationMatrix.columns[3] = simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33); + // simd_float4x4 res = simd_make_float4x4(simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03), + // simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13), + // simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23), + // simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33)); + rotationMatrix.columns[0] = simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03); + rotationMatrix.columns[1] = simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13); + rotationMatrix.columns[2] = simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23); + rotationMatrix.columns[3] = simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33); matrix_float4x4 tiltedTransformation = simd_mul(rotationMatrix, distanceTransform); From 63485db8a55b7ee0a207b279709fd80bda9ad8d4 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 28 Jun 2020 21:02:16 -0400 Subject: [PATCH 279/356] update roatation matrix --- ios/RCTARKit.m | 55 +++++++++++++++++++++----------------------------- 1 file changed, 23 insertions(+), 32 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index a66fb51f..d62f7172 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -421,47 +421,39 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc GLKMatrix4 rad = GLKMatrix4MakeXRotation(tilt); - float newRad = rad.m01; + // matrix_float4x4 rotationMatrix = matrix_identity_float4x4; + simd_float4x4 rotationMatrix = simd_matrix4x4(simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03), + simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13), + simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23), + simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33) + ); - matrix_float4x4 rotationMatrix = matrix_identity_float4x4; - // simd_float4x4 res = simd_make_float4x4(simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03), - // simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13), - // simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23), - // simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33)); - rotationMatrix.columns[0] = simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03); - rotationMatrix.columns[1] = simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13); - rotationMatrix.columns[2] = simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23); - rotationMatrix.columns[3] = simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33); + // rotationMatrix.columns[0] = simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03); + // rotationMatrix.columns[1] = simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13); + // rotationMatrix.columns[2] = simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23); + // rotationMatrix.columns[3] = simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33); matrix_float4x4 tiltedTransformation = simd_mul(rotationMatrix, distanceTransform); GLKMatrix4 yRotation = GLKMatrix4MakeYRotation(-rotation); - matrix_float4x4 yRotationMatrix = matrix_identity_float4x4; - yRotationMatrix.columns[0] = simd_make_float4(yRotation.m00, yRotation.m01, yRotation.m02, yRotation.m03); - yRotationMatrix.columns[1] = simd_make_float4(yRotation.m10, yRotation.m11, yRotation.m12, yRotation.m13); - yRotationMatrix.columns[2] = simd_make_float4(yRotation.m20, yRotation.m21, yRotation.m22, yRotation.m23); - yRotationMatrix.columns[3] = simd_make_float4(yRotation.m30, yRotation.m31, yRotation.m32, yRotation.m33); + simd_float4x4 rotationMatrix = simd_matrix4x4(simd_make_float4(yRotation.m00, yRotation.m01, yRotation.m02, yRotation.m03), + simd_make_float4(yRotation.m10, yRotation.m11, yRotation.m12, yRotation.m13), + simd_make_float4(yRotation.m20, yRotation.m21, yRotation.m22, yRotation.m23), + simd_make_float4(yRotation.m30, yRotation.m31, yRotation.m32, yRotation.m33) + ); + + + + // matrix_float4x4 yRotationMatrix = matrix_identity_float4x4; + // yRotationMatrix.columns[0] = simd_make_float4(yRotation.m00, yRotation.m01, yRotation.m02, yRotation.m03); + // yRotationMatrix.columns[1] = simd_make_float4(yRotation.m10, yRotation.m11, yRotation.m12, yRotation.m13); + // yRotationMatrix.columns[2] = simd_make_float4(yRotation.m20, yRotation.m21, yRotation.m22, yRotation.m23); + // yRotationMatrix.columns[3] = simd_make_float4(yRotation.m30, yRotation.m31, yRotation.m32, yRotation.m33); matrix_float4x4 completedTransformation = simd_mul(yRotationMatrix, tiltedTransformation); - NSLog(@"completedTransformation0x:-%f", completedTransformation.columns[0].x); - NSLog(@"completedTransformation0y:-%f", completedTransformation.columns[0].y); - NSLog(@"completedTransformation0z:-%f", completedTransformation.columns[0].z); - NSLog(@"completedTransformation0w:-%f", completedTransformation.columns[0].w); - NSLog(@"completedTransformation1x:-%f", completedTransformation.columns[1].x); - NSLog(@"completedTransformation1y:-%f", completedTransformation.columns[1].y); - NSLog(@"completedTransformation1z:-%f", completedTransformation.columns[1].z); - NSLog(@"completedTransformation1w:-%f", completedTransformation.columns[1].w); - NSLog(@"completedTransformation2x:-%f", completedTransformation.columns[2].x); - NSLog(@"completedTransformation2y:-%f", completedTransformation.columns[2].y); - NSLog(@"completedTransformation2z:-%f", completedTransformation.columns[2].z); - NSLog(@"completedTransformation2w:-%f", completedTransformation.columns[2].w); - NSLog(@"completedTransformation3x:-%f", completedTransformation.columns[3].x); - NSLog(@"completedTransformation3y:-%f", completedTransformation.columns[3].y); - NSLog(@"completedTransformation3z:-%f", completedTransformation.columns[3].z); - NSLog(@"completedTransformation3w:-%f", completedTransformation.columns[3].w); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:distanceTransform]; NSLog(@"localAnchor:-%f", localAnchor); @@ -488,7 +480,6 @@ static float angleBetweenPoints(const float startLat, const float startLon, con return rotation + M_PI * 2 ; } else { return rotation; - } } From 500b71b676cb95953e1c9ee37904300e2291adf6 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 28 Jun 2020 21:10:08 -0400 Subject: [PATCH 280/356] use simd_matrix --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index d62f7172..5b55934e 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -422,7 +422,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc GLKMatrix4 rad = GLKMatrix4MakeXRotation(tilt); // matrix_float4x4 rotationMatrix = matrix_identity_float4x4; - simd_float4x4 rotationMatrix = simd_matrix4x4(simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03), + simd_float4x4 rotationMatrix = simd_matrix(simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03), simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13), simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23), simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33) @@ -438,7 +438,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc GLKMatrix4 yRotation = GLKMatrix4MakeYRotation(-rotation); - simd_float4x4 rotationMatrix = simd_matrix4x4(simd_make_float4(yRotation.m00, yRotation.m01, yRotation.m02, yRotation.m03), + simd_float4x4 rotationMatrix = simd_matrix(simd_make_float4(yRotation.m00, yRotation.m01, yRotation.m02, yRotation.m03), simd_make_float4(yRotation.m10, yRotation.m11, yRotation.m12, yRotation.m13), simd_make_float4(yRotation.m20, yRotation.m21, yRotation.m22, yRotation.m23), simd_make_float4(yRotation.m30, yRotation.m31, yRotation.m32, yRotation.m33) From 046264614bdbe7c3822c2864293fe30063344ed2 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 28 Jun 2020 21:15:54 -0400 Subject: [PATCH 281/356] update use of rotation --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 5b55934e..8bc3c1ee 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -438,7 +438,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc GLKMatrix4 yRotation = GLKMatrix4MakeYRotation(-rotation); - simd_float4x4 rotationMatrix = simd_matrix(simd_make_float4(yRotation.m00, yRotation.m01, yRotation.m02, yRotation.m03), + simd_float4x4 yRotationMatrix = simd_matrix(simd_make_float4(yRotation.m00, yRotation.m01, yRotation.m02, yRotation.m03), simd_make_float4(yRotation.m10, yRotation.m11, yRotation.m12, yRotation.m13), simd_make_float4(yRotation.m20, yRotation.m21, yRotation.m22, yRotation.m23), simd_make_float4(yRotation.m30, yRotation.m31, yRotation.m32, yRotation.m33) From 91cb0878bafa453c93ae2f199f288aa78595ba6d Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sun, 28 Jun 2020 21:24:19 -0400 Subject: [PATCH 282/356] change to 4x4 matrix --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 8bc3c1ee..ee89a5d8 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -434,7 +434,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc // rotationMatrix.columns[2] = simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23); // rotationMatrix.columns[3] = simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33); - matrix_float4x4 tiltedTransformation = simd_mul(rotationMatrix, distanceTransform); + simd_float4x4 tiltedTransformation = simd_mul(rotationMatrix, distanceTransform); GLKMatrix4 yRotation = GLKMatrix4MakeYRotation(-rotation); @@ -452,7 +452,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc // yRotationMatrix.columns[2] = simd_make_float4(yRotation.m20, yRotation.m21, yRotation.m22, yRotation.m23); // yRotationMatrix.columns[3] = simd_make_float4(yRotation.m30, yRotation.m31, yRotation.m32, yRotation.m33); - matrix_float4x4 completedTransformation = simd_mul(yRotationMatrix, tiltedTransformation); + simd_float4x4 completedTransformation = simd_mul(yRotationMatrix, tiltedTransformation); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:distanceTransform]; From 5cc30b884c6827e1eca3f042266ba06a4626ae31 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 29 Jun 2020 18:20:35 -0400 Subject: [PATCH 283/356] create with hardcoded values --- ios/RCTARKit.m | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index ee89a5d8..1979b285 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -422,10 +422,10 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc GLKMatrix4 rad = GLKMatrix4MakeXRotation(tilt); // matrix_float4x4 rotationMatrix = matrix_identity_float4x4; - simd_float4x4 rotationMatrix = simd_matrix(simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03), - simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13), - simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23), - simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33) + simd_float4x4 rotationMatrix = simd_matrix(simd_make_float4(6, 6, 3, 1), + simd_make_float4(6, 5, 3, 1), + simd_make_float4(4, 2, 4, 2), + simd_make_float4(6, 1, 3, 5) ); @@ -455,7 +455,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 completedTransformation = simd_mul(yRotationMatrix, tiltedTransformation); - ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:distanceTransform]; + ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:tiltedTransformation]; NSLog(@"localAnchor:-%f", localAnchor); [self.arView.session addAnchor:localAnchor]; From f58dfff0010fb123685c5fe23a22e2253dfe6474 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 29 Jun 2020 18:50:16 -0400 Subject: [PATCH 284/356] use distance transform --- ios/RCTARKit.m | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 1979b285..873b1eea 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -420,12 +420,13 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc GLKMatrix4 rad = GLKMatrix4MakeXRotation(tilt); + NSLog(@"rad.m33:-%f", rad.m33); // matrix_float4x4 rotationMatrix = matrix_identity_float4x4; - simd_float4x4 rotationMatrix = simd_matrix(simd_make_float4(6, 6, 3, 1), - simd_make_float4(6, 5, 3, 1), - simd_make_float4(4, 2, 4, 2), - simd_make_float4(6, 1, 3, 5) + simd_float4x4 rotationMatrix = simd_matrix(simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03), + simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13), + simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23), + simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33) ); @@ -455,7 +456,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 completedTransformation = simd_mul(yRotationMatrix, tiltedTransformation); - ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:tiltedTransformation]; + ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:distanceTransform]; NSLog(@"localAnchor:-%f", localAnchor); [self.arView.session addAnchor:localAnchor]; From eee1694a24cf90916a588b49e4a2e8c1d48472c8 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 29 Jun 2020 19:01:04 -0400 Subject: [PATCH 285/356] use complteted transfomration --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 873b1eea..3f2d1db8 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -456,7 +456,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 completedTransformation = simd_mul(yRotationMatrix, tiltedTransformation); - ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:distanceTransform]; + ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:completedTransformation]; NSLog(@"localAnchor:-%f", localAnchor); [self.arView.session addAnchor:localAnchor]; From 60541fafeb008b595cd56ba21770a19cb1593dd6 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 29 Jun 2020 20:05:44 -0400 Subject: [PATCH 286/356] change aranchor init --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 3f2d1db8..481ba86f 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -456,7 +456,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 completedTransformation = simd_mul(yRotationMatrix, tiltedTransformation); - ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:completedTransformation]; + ARAnchor *localAnchor = [[ARAnchor alloc] init:completedTransformation]; NSLog(@"localAnchor:-%f", localAnchor); [self.arView.session addAnchor:localAnchor]; From dc55a65b93943188712dfe33528dff92e9451423 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 29 Jun 2020 20:16:20 -0400 Subject: [PATCH 287/356] remove bearing degrees --- ios/RCTARKit.h | 2 +- ios/RCTARKit.m | 4 ++-- ios/RCTARKitManager.m | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index f10b810a..229eccf2 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -96,7 +96,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)focusScene; - (void)clearScene; - (NSDictionary *)readCameraPosition; -- (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong bearingDegrees:(float)bearingDegrees; +- (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong; - (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 481ba86f..54d4ef9f 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -381,7 +381,7 @@ - (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)loc } -- (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong bearingDegrees:(float)bearingDegrees { +- (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong { CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(locationLat, locationLong) @@ -456,7 +456,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_float4x4 completedTransformation = simd_mul(yRotationMatrix, tiltedTransformation); - ARAnchor *localAnchor = [[ARAnchor alloc] init:completedTransformation]; + ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:completedTransformation]; NSLog(@"localAnchor:-%f", localAnchor); [self.arView.session addAnchor:localAnchor]; diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index c7805a76..0441db17 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -450,8 +450,8 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] readCameraPosition]); } -RCT_EXPORT_METHOD(getAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong bearingDegrees:(float)bearingDegrees resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - resolve([[ARKit sharedInstance] getArAnchorPosition:locationLat locationLong:locationLong landmarkLat:landmarkLat landmarkLong:landmarkLong bearingDegrees:(float)bearingDegrees]); +RCT_EXPORT_METHOD(getAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + resolve([[ARKit sharedInstance] getArAnchorPosition:locationLat locationLong:locationLong landmarkLat:landmarkLat landmarkLong:landmarkLong]); } RCT_EXPORT_METHOD(getNewCoords:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { From 8fd066a08ab91e1003c8dbc994124fb2920fbdd2 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 29 Jun 2020 22:13:35 -0400 Subject: [PATCH 288/356] ad dmore accurate reading --- ios/RCTARKit.h | 2 +- ios/RCTARKit.m | 30 ++++++++---------------------- ios/RCTARKitManager.m | 2 +- 3 files changed, 10 insertions(+), 24 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 229eccf2..80c187c9 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -96,7 +96,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)focusScene; - (void)clearScene; - (NSDictionary *)readCameraPosition; -- (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong; +- (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationaAltitude landmarkAltitude:(float)landmarkAltitude; - (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 54d4ef9f..1e5e1da9 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -381,18 +381,18 @@ - (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)loc } -- (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong { +- (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationAltitude landmarkAltitude:(float)landmarkAltitude { CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(locationLat, locationLong) - altitude:13.655269622802734 - horizontalAccuracy:5 - verticalAccuracy:8 + altitude:locationAltitude + horizontalAccuracy:locationHorizontalAccuracy + verticalAccuracy:locationVerticalAccuracy timestamp:[NSDate date]]; CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(landmarkLat, landmarkLong) - altitude:13.655269622802734 - horizontalAccuracy:5 - verticalAccuracy:8 + altitude:landmarkAltitude + horizontalAccuracy:landmarkHorizontalAccuracy + verticalAccuracy:landmarkVerticalAccuracy timestamp:[NSDate date]]; CLLocationDistance distance = [location distanceFromLocation:landmark]; @@ -414,7 +414,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc NSLog(@"rotation:-%f", rotation); - float opposite = 13.655269622802734 - 13.0; + float opposite = locationaAltitude - landmarkAltitude; float tilt = atan2(opposite, distance); NSLog(@"tilt:-%f", tilt); @@ -430,11 +430,6 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc ); - // rotationMatrix.columns[0] = simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03); - // rotationMatrix.columns[1] = simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13); - // rotationMatrix.columns[2] = simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23); - // rotationMatrix.columns[3] = simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33); - simd_float4x4 tiltedTransformation = simd_mul(rotationMatrix, distanceTransform); GLKMatrix4 yRotation = GLKMatrix4MakeYRotation(-rotation); @@ -444,18 +439,9 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc simd_make_float4(yRotation.m20, yRotation.m21, yRotation.m22, yRotation.m23), simd_make_float4(yRotation.m30, yRotation.m31, yRotation.m32, yRotation.m33) ); - - - - // matrix_float4x4 yRotationMatrix = matrix_identity_float4x4; - // yRotationMatrix.columns[0] = simd_make_float4(yRotation.m00, yRotation.m01, yRotation.m02, yRotation.m03); - // yRotationMatrix.columns[1] = simd_make_float4(yRotation.m10, yRotation.m11, yRotation.m12, yRotation.m13); - // yRotationMatrix.columns[2] = simd_make_float4(yRotation.m20, yRotation.m21, yRotation.m22, yRotation.m23); - // yRotationMatrix.columns[3] = simd_make_float4(yRotation.m30, yRotation.m31, yRotation.m32, yRotation.m33); simd_float4x4 completedTransformation = simd_mul(yRotationMatrix, tiltedTransformation); - ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:completedTransformation]; NSLog(@"localAnchor:-%f", localAnchor); diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 0441db17..2442e063 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -451,7 +451,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP } RCT_EXPORT_METHOD(getAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - resolve([[ARKit sharedInstance] getArAnchorPosition:locationLat locationLong:locationLong landmarkLat:landmarkLat landmarkLong:landmarkLong]); + resolve([[ARKit sharedInstance] getArAnchorPosition:locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationaAltitude landmarkAltitude:(float)landmarkAltitude]); } RCT_EXPORT_METHOD(getNewCoords:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { From 881247cea1a49496296c339640dcf9ca27f174c4 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 30 Jun 2020 08:53:40 -0400 Subject: [PATCH 289/356] fix typo --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 1e5e1da9..48e933ad 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -414,7 +414,7 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc NSLog(@"rotation:-%f", rotation); - float opposite = locationaAltitude - landmarkAltitude; + float opposite = locationAltitude - landmarkAltitude; float tilt = atan2(opposite, distance); NSLog(@"tilt:-%f", tilt); From 47a09e589bd56e5897ac60bac62eb91e8005cba6 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 30 Jun 2020 21:21:12 -0400 Subject: [PATCH 290/356] add in extra to function def --- ios/RCTARKitManager.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 2442e063..6bb231f1 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -450,7 +450,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] readCameraPosition]); } -RCT_EXPORT_METHOD(getAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { +RCT_EXPORT_METHOD(getAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationaAltitude landmarkAltitude:(float)landmarkAltitude resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { resolve([[ARKit sharedInstance] getArAnchorPosition:locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationaAltitude landmarkAltitude:(float)landmarkAltitude]); } From 6473dcd02bebad2fa81545a07c0345a3ac6fe0c7 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 30 Jun 2020 21:49:20 -0400 Subject: [PATCH 291/356] add log and create voide function --- ios/RCTARKit.h | 2 +- ios/RCTARKit.m | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 80c187c9..97441d36 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -96,7 +96,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)focusScene; - (void)clearScene; - (NSDictionary *)readCameraPosition; -- (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationaAltitude landmarkAltitude:(float)landmarkAltitude; +- (void)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationaAltitude landmarkAltitude:(float)landmarkAltitude; - (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 48e933ad..ed3b6725 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -381,7 +381,7 @@ - (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)loc } -- (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationAltitude landmarkAltitude:(float)landmarkAltitude { +- (void)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationAltitude landmarkAltitude:(float)landmarkAltitude { CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(locationLat, locationLong) @@ -446,10 +446,10 @@ - (NSDictionary *)getArAnchorPosition:(float)locationLat locationLong:(float)loc NSLog(@"localAnchor:-%f", localAnchor); [self.arView.session addAnchor:localAnchor]; + NSLog(@"we made it this fat:-%f"); + + return; - return @{ - @"results": @{ @"y": @(0.0), @"z": @(distance) } - }; } static SCNVector3 toSCNVector3(simd_float4 float4) { From 10273c278be471e5f1ed56b68904342eecae8f7f Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 30 Jun 2020 21:55:30 -0400 Subject: [PATCH 292/356] remove resolve --- ios/RCTARKitManager.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 6bb231f1..1acd304b 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -451,7 +451,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP } RCT_EXPORT_METHOD(getAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationaAltitude landmarkAltitude:(float)landmarkAltitude resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - resolve([[ARKit sharedInstance] getArAnchorPosition:locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationaAltitude landmarkAltitude:(float)landmarkAltitude]); + [[ARKit sharedInstance] getArAnchorPosition:locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationaAltitude landmarkAltitude:(float)landmarkAltitude]; } RCT_EXPORT_METHOD(getNewCoords:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { From b555f8e62c152dcaa3086e75182681026ec9d7a5 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 1 Jul 2020 20:47:29 -0400 Subject: [PATCH 293/356] create negitive rotation --- ios/RCTARKit.m | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index ed3b6725..5f703cf7 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -408,7 +408,7 @@ - (void)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong matrix_float4x4 distanceTransform = matrix_identity_float4x4; distanceTransform.columns[3].x = 0; distanceTransform.columns[3].y = 0; - distanceTransform.columns[3].z = distance; + distanceTransform.columns[3].z = -distance; float rotation = angleBetweenPoints(startLat, startLon, endLat, endLon); NSLog(@"rotation:-%f", rotation); @@ -446,7 +446,6 @@ - (void)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong NSLog(@"localAnchor:-%f", localAnchor); [self.arView.session addAnchor:localAnchor]; - NSLog(@"we made it this fat:-%f"); return; From 48e385e27a5fef94f4a2a9d4ceb10600f30abdfa Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 1 Jul 2020 22:25:33 -0400 Subject: [PATCH 294/356] Scrub up the code --- ios/RCTARKit.h | 2 +- ios/RCTARKit.m | 110 +++++++++++++++++++----------------------- ios/RCTARKitManager.m | 14 +++++- 3 files changed, 63 insertions(+), 63 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 97441d36..02d22c43 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -96,7 +96,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)focusScene; - (void)clearScene; - (NSDictionary *)readCameraPosition; -- (void)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationaAltitude landmarkAltitude:(float)landmarkAltitude; +- (void)getArAnchorPosition:(CLLocation)location locationLong:(CLLocation)landmark; - (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 5f703cf7..fa6ccfad 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -380,75 +380,26 @@ - (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)loc }; } - -- (void)getArAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationAltitude landmarkAltitude:(float)landmarkAltitude { - - - CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(locationLat, locationLong) - altitude:locationAltitude - horizontalAccuracy:locationHorizontalAccuracy - verticalAccuracy:locationVerticalAccuracy - timestamp:[NSDate date]]; - CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(landmarkLat, landmarkLong) - altitude:landmarkAltitude - horizontalAccuracy:landmarkHorizontalAccuracy - verticalAccuracy:landmarkVerticalAccuracy - timestamp:[NSDate date]]; +- (void)getArAnchorPosition:(CLLocation)location locationLong:(CLLocation)landmark { CLLocationDistance distance = [location distanceFromLocation:landmark]; - NSLog(@"distance:-%f", distance); - - float startLat = GLKMathDegreesToRadians(locationLat); - float startLon = GLKMathDegreesToRadians(locationLong); - float endLat = GLKMathDegreesToRadians(landmarkLat); - float endLon = GLKMathDegreesToRadians(landmarkLong); + matrix_float4x4 distanceTransform = translatingIdentity(0, 0, -distance); - - matrix_float4x4 distanceTransform = matrix_identity_float4x4; - distanceTransform.columns[3].x = 0; - distanceTransform.columns[3].y = 0; - distanceTransform.columns[3].z = -distance; - - float rotation = angleBetweenPoints(startLat, startLon, endLat, endLon); + float rotation = angleBetweenPoints(location, landmark); NSLog(@"rotation:-%f", rotation); + float tilt = angleOffHorizon(location, landmark) - float opposite = locationAltitude - landmarkAltitude; - float tilt = atan2(opposite, distance); - NSLog(@"tilt:-%f", tilt); - - - GLKMatrix4 rad = GLKMatrix4MakeXRotation(tilt); - NSLog(@"rad.m33:-%f", rad.m33); - - // matrix_float4x4 rotationMatrix = matrix_identity_float4x4; - simd_float4x4 rotationMatrix = simd_matrix(simd_make_float4(rad.m00, rad.m01, rad.m02, rad.m03), - simd_make_float4(rad.m10, rad.m11, rad.m12, rad.m13), - simd_make_float4(rad.m20, rad.m21, rad.m22, rad.m23), - simd_make_float4(rad.m30, rad.m31, rad.m32, rad.m33) - ); - - - simd_float4x4 tiltedTransformation = simd_mul(rotationMatrix, distanceTransform); - - GLKMatrix4 yRotation = GLKMatrix4MakeYRotation(-rotation); - - simd_float4x4 yRotationMatrix = simd_matrix(simd_make_float4(yRotation.m00, yRotation.m01, yRotation.m02, yRotation.m03), - simd_make_float4(yRotation.m10, yRotation.m11, yRotation.m12, yRotation.m13), - simd_make_float4(yRotation.m20, yRotation.m21, yRotation.m22, yRotation.m23), - simd_make_float4(yRotation.m30, yRotation.m31, yRotation.m32, yRotation.m33) - ); + simd_float4x4 tiltedTransformation = rotateVertically(distanceTransform, tilt) - simd_float4x4 completedTransformation = simd_mul(yRotationMatrix, tiltedTransformation); + simd_float4x4 completedTransformation = rotateHorizontally(tiltedTransformation, -rotation) ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:completedTransformation]; - NSLog(@"localAnchor:-%f", localAnchor); [self.arView.session addAnchor:localAnchor]; return; - } static SCNVector3 toSCNVector3(simd_float4 float4) { @@ -457,18 +408,57 @@ static SCNVector3 toSCNVector3(simd_float4 float4) { } -static float angleBetweenPoints(const float startLat, const float startLon, const float endLat, const float endLon) { +static float angleBetweenPoints(const CLLocation location, const CLLocation landmark) { + float startLat = GLKMathDegreesToRadians(location.coordinate.latitude); + float startLon = GLKMathDegreesToRadians(location.coordinate.longitude); + float endLat = GLKMathDegreesToRadians(landmark.coordinate.latitude); + float endLon = GLKMathDegreesToRadians(landmark.coordinate.longitude); + float lonDiff = endLon - startLon; float y = sin(lonDiff) * cos(endLat); float x = (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)); - float rotation = atan2(y, x); - if(rotation < 0){ - return rotation + M_PI * 2 ; + float angle = atan2(y, x); + if(angle < 0){ + float finalAngle = angle + (M_PI * 2) + return finalAngle } else { - return rotation; + return angle; } } +static matrix_float4x4 translatingIdentity(const float x, const float y, const float z) { + matrix_float4x4 result = matrix_identity_float4x4; + result.columns[3].x = x; + result.columns[3].y = y; + result.columns[3].z = z; + return result; +} + +static float angleOffHorizon(const CLLocation start, const CLLocation end) { + CLLocationDistance adjacent = [location distanceFromLocation:landmark]; + float opposite = end.altitude - start.altitude + return atan2(opposite, adjacent); +} + +static matrix_float4x4 rotateVertically(const matrix_float4x4 distanceTrans, const float radians) { + GLKMatrix4 rotation = GLKMatrix4MakeXRotation(tilt); + return simd_mul(convert(rotation), distanceTrans); +} + +static matrix_float4x4 rotateHorizontally(const matrix_float4x4 titledTrans, const float rotation) { + GLKMatrix4 rotation = GLKMatrix4MakeYRotation(rotation); + return simd_mul(convert(rotation), distanceTrans); +} + +static simd_float4x4 convert(const GLKMatrix4 matrix) { + return simd_matrix( + simd_make_float4(matrix.m00, matrix.m01, matrix.m02, matrix.m03), + simd_make_float4(matrix.m10, matrix.m11, matrix.m12, matrix.m13), + simd_make_float4(matrix.m20, matrix.m21, matrix.m22, matrix.m23), + simd_make_float4(matrix.m30, matrix.m31, matrix.m32, matrix.m33) + ); +} + static NSDictionary * vectorToJson(const SCNVector3 v) { return @{ @"x": @(v.x), @"y": @(v.y), @"z": @(v.z) }; diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 1acd304b..1e9d1da6 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -451,8 +451,18 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP } RCT_EXPORT_METHOD(getAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationaAltitude landmarkAltitude:(float)landmarkAltitude resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - [[ARKit sharedInstance] getArAnchorPosition:locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationaAltitude landmarkAltitude:(float)landmarkAltitude]; -} + CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(locationLat, locationLong) + altitude:locationAltitude + horizontalAccuracy:locationHorizontalAccuracy + verticalAccuracy:locationVerticalAccuracy + timestamp:[NSDate date]]; + CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(landmarkLat, landmarkLong) + altitude:landmarkAltitude + horizontalAccuracy:landmarkHorizontalAccuracy + verticalAccuracy:landmarkVerticalAccuracy + timestamp:[NSDate date]]; + + [[ARKit sharedInstance] getArAnchorPosition:location locationLong:(CLLocation)landmark]; RCT_EXPORT_METHOD(getNewCoords:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { resolve([[ARKit sharedInstance] coordinateFromCoord:locationLat locationLong:locationLong atDistanceKm:distanceKm atBearingDegrees:bearingDegrees]); From 01631c101421b26aa110cda68886575a094aa398 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 1 Jul 2020 22:32:52 -0400 Subject: [PATCH 295/356] import corelocation --- ios/RCTARKit.h | 1 + 1 file changed, 1 insertion(+) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 02d22c43..e687ade9 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -13,6 +13,7 @@ #import "RCTARKitDelegate.h" #import "RCTARKitNodes.h" #import "RCTMultiPeer.h" +@import CoreLocation; typedef void (^RCTBubblingEventBlock)(NSDictionary *body); typedef void (^RCTARKitResolve)(id result); From 933beb9428f1647a7391d3fc22549f71fc964ea6 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 1 Jul 2020 22:41:07 -0400 Subject: [PATCH 296/356] add astrik --- ios/RCTARKit.h | 2 +- ios/RCTARKit.m | 2 +- ios/RCTARKitManager.m | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index e687ade9..26a2ce17 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -97,7 +97,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)focusScene; - (void)clearScene; - (NSDictionary *)readCameraPosition; -- (void)getArAnchorPosition:(CLLocation)location locationLong:(CLLocation)landmark; +- (void)getArAnchorPosition:(CLLocation *)location locationLong:(CLLocation *)landmark; - (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index fa6ccfad..a1bdd843 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -380,7 +380,7 @@ - (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)loc }; } -- (void)getArAnchorPosition:(CLLocation)location locationLong:(CLLocation)landmark { +- (void)getArAnchorPosition:(CLLocation *)location locationLong:(CLLocation *)landmark { CLLocationDistance distance = [location distanceFromLocation:landmark]; diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 1e9d1da6..ab044b55 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -462,7 +462,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP verticalAccuracy:landmarkVerticalAccuracy timestamp:[NSDate date]]; - [[ARKit sharedInstance] getArAnchorPosition:location locationLong:(CLLocation)landmark]; + [[ARKit sharedInstance] getArAnchorPosition:location landmark:landmark]; RCT_EXPORT_METHOD(getNewCoords:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { resolve([[ARKit sharedInstance] coordinateFromCoord:locationLat locationLong:locationLong atDistanceKm:distanceKm atBearingDegrees:bearingDegrees]); From f6f04af494e66e796a229a0a25a91e78c9f5daac Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 1 Jul 2020 22:47:32 -0400 Subject: [PATCH 297/356] fix syntax errors --- ios/RCTARKit.m | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index a1bdd843..86c92425 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -389,11 +389,11 @@ - (void)getArAnchorPosition:(CLLocation *)location locationLong:(CLLocation *)la float rotation = angleBetweenPoints(location, landmark); NSLog(@"rotation:-%f", rotation); - float tilt = angleOffHorizon(location, landmark) + float tilt = angleOffHorizon(location, landmark); - simd_float4x4 tiltedTransformation = rotateVertically(distanceTransform, tilt) + simd_float4x4 tiltedTransformation = rotateVertically(distanceTransform, tilt); - simd_float4x4 completedTransformation = rotateHorizontally(tiltedTransformation, -rotation) + simd_float4x4 completedTransformation = rotateHorizontally(tiltedTransformation, -rotation); ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:completedTransformation]; @@ -419,7 +419,7 @@ static float angleBetweenPoints(const CLLocation location, const CLLocation land float x = (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)); float angle = atan2(y, x); if(angle < 0){ - float finalAngle = angle + (M_PI * 2) + float finalAngle = angle + (M_PI * 2); return finalAngle } else { return angle; @@ -435,19 +435,19 @@ static matrix_float4x4 translatingIdentity(const float x, const float y, const f } static float angleOffHorizon(const CLLocation start, const CLLocation end) { - CLLocationDistance adjacent = [location distanceFromLocation:landmark]; - float opposite = end.altitude - start.altitude + CLLocationDistance adjacent = [start distanceFromLocation:end]; + float opposite = end.altitude - start.altitude; return atan2(opposite, adjacent); } static matrix_float4x4 rotateVertically(const matrix_float4x4 distanceTrans, const float radians) { - GLKMatrix4 rotation = GLKMatrix4MakeXRotation(tilt); + GLKMatrix4 rotation = GLKMatrix4MakeXRotation(radians); return simd_mul(convert(rotation), distanceTrans); } -static matrix_float4x4 rotateHorizontally(const matrix_float4x4 titledTrans, const float rotation) { - GLKMatrix4 rotation = GLKMatrix4MakeYRotation(rotation); - return simd_mul(convert(rotation), distanceTrans); +static matrix_float4x4 rotateHorizontally(const matrix_float4x4 titledTrans, const float radians) { + GLKMatrix4 rotation = GLKMatrix4MakeYRotation(radians); + return simd_mul(convert(rotation), titledTrans); } static simd_float4x4 convert(const GLKMatrix4 matrix) { From 725f96cd8c0427bd99c05444d252deb73490034d Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 1 Jul 2020 22:54:23 -0400 Subject: [PATCH 298/356] fix syntax issues --- ios/RCTARKit.h | 2 +- ios/RCTARKit.m | 2 +- ios/RCTARKitManager.m | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 26a2ce17..fde57385 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -97,7 +97,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)focusScene; - (void)clearScene; - (NSDictionary *)readCameraPosition; -- (void)getArAnchorPosition:(CLLocation *)location locationLong:(CLLocation *)landmark; +- (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landmark; - (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 86c92425..6445a152 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -380,7 +380,7 @@ - (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)loc }; } -- (void)getArAnchorPosition:(CLLocation *)location locationLong:(CLLocation *)landmark { +- (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landmark { CLLocationDistance distance = [location distanceFromLocation:landmark]; diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index ab044b55..901e7ac5 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -450,7 +450,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] readCameraPosition]); } -RCT_EXPORT_METHOD(getAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationaAltitude landmarkAltitude:(float)landmarkAltitude resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { +RCT_EXPORT_METHOD(getAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationAltitude landmarkAltitude:(float)landmarkAltitude resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(locationLat, locationLong) altitude:locationAltitude horizontalAccuracy:locationHorizontalAccuracy @@ -463,6 +463,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP timestamp:[NSDate date]]; [[ARKit sharedInstance] getArAnchorPosition:location landmark:landmark]; +} RCT_EXPORT_METHOD(getNewCoords:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { resolve([[ARKit sharedInstance] coordinateFromCoord:locationLat locationLong:locationLong atDistanceKm:distanceKm atBearingDegrees:bearingDegrees]); From 16cf979840f7eef50e529e925582c4a3ecd75ec9 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 1 Jul 2020 22:59:48 -0400 Subject: [PATCH 299/356] syntax issues --- ios/RCTARKit.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 6445a152..78019a06 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -408,7 +408,7 @@ static SCNVector3 toSCNVector3(simd_float4 float4) { } -static float angleBetweenPoints(const CLLocation location, const CLLocation landmark) { +static float angleBetweenPoints(const CLLocation *location, const CLLocation *landmark) { float startLat = GLKMathDegreesToRadians(location.coordinate.latitude); float startLon = GLKMathDegreesToRadians(location.coordinate.longitude); float endLat = GLKMathDegreesToRadians(landmark.coordinate.latitude); @@ -420,7 +420,7 @@ static float angleBetweenPoints(const CLLocation location, const CLLocation land float angle = atan2(y, x); if(angle < 0){ float finalAngle = angle + (M_PI * 2); - return finalAngle + return finalAngle; } else { return angle; } @@ -434,7 +434,7 @@ static matrix_float4x4 translatingIdentity(const float x, const float y, const f return result; } -static float angleOffHorizon(const CLLocation start, const CLLocation end) { +static float angleOffHorizon(const CLLocation *start, const CLLocation *end) { CLLocationDistance adjacent = [start distanceFromLocation:end]; float opposite = end.altitude - start.altitude; return atan2(opposite, adjacent); From ca395f249091f95b2f3310bf73c2820f470af242 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 13 Jul 2020 21:43:10 -0400 Subject: [PATCH 300/356] rename location function and add anchorname --- ios/RCTARKit.h | 2 +- ios/RCTARKit.m | 4 ++-- ios/RCTARKitManager.m | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index fde57385..5dd6438f 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -97,7 +97,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)focusScene; - (void)clearScene; - (NSDictionary *)readCameraPosition; -- (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landmark; +- (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landmark anchorName:(NSString *)anchorName; - (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 78019a06..8710b423 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -380,7 +380,7 @@ - (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)loc }; } -- (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landmark { +- (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landmark anchorName:(NSString *)anchorName { CLLocationDistance distance = [location distanceFromLocation:landmark]; @@ -395,7 +395,7 @@ - (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landma simd_float4x4 completedTransformation = rotateHorizontally(tiltedTransformation, -rotation); - ARAnchor *localAnchor = [[ARAnchor alloc] initWithTransform:completedTransformation]; + ARAnchor *localAnchor = [[ARAnchor alloc] name:anchorName initWithTransform:completedTransformation]; [self.arView.session addAnchor:localAnchor]; diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 901e7ac5..1ac3e065 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -450,7 +450,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] readCameraPosition]); } -RCT_EXPORT_METHOD(getAnchorPosition:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationAltitude landmarkAltitude:(float)landmarkAltitude resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { +RCT_EXPORT_METHOD(addAnchorByLocation:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationAltitude landmarkAltitude:(float)landmarkAltitude anchorName:(NSString *)anchorName resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(locationLat, locationLong) altitude:locationAltitude horizontalAccuracy:locationHorizontalAccuracy @@ -462,7 +462,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP verticalAccuracy:landmarkVerticalAccuracy timestamp:[NSDate date]]; - [[ARKit sharedInstance] getArAnchorPosition:location landmark:landmark]; + [[ARKit sharedInstance] getArAnchorPosition:location landmark:landmark anchorName:anchorName]; } RCT_EXPORT_METHOD(getNewCoords:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { From f375cda1494c9579adeb89f77220cf9a84f906b4 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 13 Jul 2020 21:50:13 -0400 Subject: [PATCH 301/356] use init with name --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 8710b423..c9bbb0c1 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -395,7 +395,7 @@ - (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landma simd_float4x4 completedTransformation = rotateHorizontally(tiltedTransformation, -rotation); - ARAnchor *localAnchor = [[ARAnchor alloc] name:anchorName initWithTransform:completedTransformation]; + ARAnchor *localAnchor = [[ARAnchor alloc] initWithName:anchorName transform:completedTransformation]; [self.arView.session addAnchor:localAnchor]; From ed7aeddff7a03bf33c33ac10ddb491beff107b54 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 13 Jul 2020 22:07:04 -0400 Subject: [PATCH 302/356] return name in anchor result --- ios/RCTARKit.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index c9bbb0c1..9f4b9152 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -755,7 +755,9 @@ - (NSDictionary *)makeAnchorDetectionResult:(SCNNode *)node anchor:(ARAnchor *)a @"type": @"unkown", @"eulerAngles":vectorToJson(node.eulerAngles), @"position": vectorToJson([self.nodeManager getRelativePositionToOrigin:node.position]), - @"positionAbsolute": vectorToJson(node.position) + @"positionAbsolute": vectorToJson(node.position), + @"name": anchor.name + }; NSMutableDictionary* dict = [NSMutableDictionary dictionaryWithDictionary:baseProps]; From fe6f9b49f4181075e0c1c42c72a65a82fb61b5c4 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 13 Jul 2020 22:16:54 -0400 Subject: [PATCH 303/356] add name prop logic --- ios/RCTARKit.m | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 9f4b9152..d455b48e 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -756,8 +756,6 @@ - (NSDictionary *)makeAnchorDetectionResult:(SCNNode *)node anchor:(ARAnchor *)a @"eulerAngles":vectorToJson(node.eulerAngles), @"position": vectorToJson([self.nodeManager getRelativePositionToOrigin:node.position]), @"positionAbsolute": vectorToJson(node.position), - @"name": anchor.name - }; NSMutableDictionary* dict = [NSMutableDictionary dictionaryWithDictionary:baseProps]; @@ -776,6 +774,13 @@ - (NSDictionary *)makeAnchorDetectionResult:(SCNNode *)node anchor:(ARAnchor *)a } else { // Fallback on earlier versions } + if(anchor.name != nil){ + NSDictionary* nameProps = @{ + @"name": anchor.name + } + + [dict addEntriesFromDictionary:nameProps]; + } return dict; } From 768ba080ddccf22809440784bbb14466ceb5370a Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 13 Jul 2020 22:22:41 -0400 Subject: [PATCH 304/356] add semicolon --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index d455b48e..f5703b5b 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -776,7 +776,7 @@ - (NSDictionary *)makeAnchorDetectionResult:(SCNNode *)node anchor:(ARAnchor *)a } if(anchor.name != nil){ NSDictionary* nameProps = @{ - @"name": anchor.name + @"name": anchor.name; } [dict addEntriesFromDictionary:nameProps]; From bec6ff186b921405ae548bbd5c52954205ba5fbd Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 13 Jul 2020 22:28:31 -0400 Subject: [PATCH 305/356] add semicolon --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index f5703b5b..7db57593 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -776,8 +776,8 @@ - (NSDictionary *)makeAnchorDetectionResult:(SCNNode *)node anchor:(ARAnchor *)a } if(anchor.name != nil){ NSDictionary* nameProps = @{ - @"name": anchor.name; - } + @"name": anchor.name + }; [dict addEntriesFromDictionary:nameProps]; } From 33aab03ec53d1ed16f62ae08a4520d4e73ff996c Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 13 Jul 2020 22:39:05 -0400 Subject: [PATCH 306/356] add nodename --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 7db57593..f69387be 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -774,9 +774,9 @@ - (NSDictionary *)makeAnchorDetectionResult:(SCNNode *)node anchor:(ARAnchor *)a } else { // Fallback on earlier versions } - if(anchor.name != nil){ + if(node.name != nil){ NSDictionary* nameProps = @{ - @"name": anchor.name + @"name": node.name }; [dict addEntriesFromDictionary:nameProps]; From d086fb5f582d2968a01c89a833d3aaf83a8844e1 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 13 Jul 2020 22:47:15 -0400 Subject: [PATCH 307/356] add anchor name --- ios/RCTARKit.m | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index f69387be..2013d2fb 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -387,7 +387,6 @@ - (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landma matrix_float4x4 distanceTransform = translatingIdentity(0, 0, -distance); float rotation = angleBetweenPoints(location, landmark); - NSLog(@"rotation:-%f", rotation); float tilt = angleOffHorizon(location, landmark); @@ -396,6 +395,8 @@ - (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landma simd_float4x4 completedTransformation = rotateHorizontally(tiltedTransformation, -rotation); ARAnchor *localAnchor = [[ARAnchor alloc] initWithName:anchorName transform:completedTransformation]; + NSLog(@"anchorName:-%f", anchorName); + NSLog(@"localAnchor.name:-%f", localAnchor.name); [self.arView.session addAnchor:localAnchor]; @@ -774,6 +775,9 @@ - (NSDictionary *)makeAnchorDetectionResult:(SCNNode *)node anchor:(ARAnchor *)a } else { // Fallback on earlier versions } + NSLog(@"node.name:-%f", node.name); + NSLog(@"anchor.name:-%f", anchor.name); + if(node.name != nil){ NSDictionary* nameProps = @{ @"name": node.name From f3bb2c3b7bd33e147062747a054e7c8e47666312 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 13 Jul 2020 23:04:07 -0400 Subject: [PATCH 308/356] log strings --- ios/RCTARKit.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 2013d2fb..90863e8c 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -395,8 +395,8 @@ - (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landma simd_float4x4 completedTransformation = rotateHorizontally(tiltedTransformation, -rotation); ARAnchor *localAnchor = [[ARAnchor alloc] initWithName:anchorName transform:completedTransformation]; - NSLog(@"anchorName:-%f", anchorName); - NSLog(@"localAnchor.name:-%f", localAnchor.name); + NSLog(@"anchorName:-%@", anchorName); + NSLog(@"localAnchor.name:-%@", localAnchor.name); [self.arView.session addAnchor:localAnchor]; @@ -775,8 +775,8 @@ - (NSDictionary *)makeAnchorDetectionResult:(SCNNode *)node anchor:(ARAnchor *)a } else { // Fallback on earlier versions } - NSLog(@"node.name:-%f", node.name); - NSLog(@"anchor.name:-%f", anchor.name); + NSLog(@"node.name:-%@", node.name); + NSLog(@"anchor.name:-%@", anchor.name); if(node.name != nil){ NSDictionary* nameProps = @{ From 19ef298e06a7456708c690817c24668cc89ae508 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 13 Jul 2020 23:17:25 -0400 Subject: [PATCH 309/356] add tests --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 90863e8c..4e0871a0 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -394,7 +394,7 @@ - (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landma simd_float4x4 completedTransformation = rotateHorizontally(tiltedTransformation, -rotation); - ARAnchor *localAnchor = [[ARAnchor alloc] initWithName:anchorName transform:completedTransformation]; + ARAnchor *localAnchor = [[ARAnchor alloc] initWithName:@"testName1" transform:completedTransformation]; NSLog(@"anchorName:-%@", anchorName); NSLog(@"localAnchor.name:-%@", localAnchor.name); From 2441603278f388f6dd2a7048d9986f5d095cc4a0 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 13 Jul 2020 23:26:21 -0400 Subject: [PATCH 310/356] add testname --- ios/RCTARKit.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 4e0871a0..21e5ef5f 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -778,9 +778,9 @@ - (NSDictionary *)makeAnchorDetectionResult:(SCNNode *)node anchor:(ARAnchor *)a NSLog(@"node.name:-%@", node.name); NSLog(@"anchor.name:-%@", anchor.name); - if(node.name != nil){ + if(anchor.name != nil){ NSDictionary* nameProps = @{ - @"name": node.name + @"name": anchor.name }; [dict addEntriesFromDictionary:nameProps]; From 4ae32807c44644a4fb45969ad8f6f235845145dc Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 13 Jul 2020 23:37:48 -0400 Subject: [PATCH 311/356] add anchor name --- ios/RCTARKit.m | 2 +- ios/RCTARKitManager.m | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 21e5ef5f..c522434d 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -394,7 +394,7 @@ - (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landma simd_float4x4 completedTransformation = rotateHorizontally(tiltedTransformation, -rotation); - ARAnchor *localAnchor = [[ARAnchor alloc] initWithName:@"testName1" transform:completedTransformation]; + ARAnchor *localAnchor = [[ARAnchor alloc] initWithName:anchorName transform:completedTransformation]; NSLog(@"anchorName:-%@", anchorName); NSLog(@"localAnchor.name:-%@", localAnchor.name); diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 1ac3e065..a3ea3b3c 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -461,6 +461,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP horizontalAccuracy:landmarkHorizontalAccuracy verticalAccuracy:landmarkVerticalAccuracy timestamp:[NSDate date]]; + NSLog(@"anchorName:-%@", anchorName); [[ARKit sharedInstance] getArAnchorPosition:location landmark:landmark anchorName:anchorName]; } From 324be9638f58358910a5d6b21bb22a4493d3b6be Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 13 Jul 2020 23:54:39 -0400 Subject: [PATCH 312/356] move nsstring frist --- ios/RCTARKitManager.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index a3ea3b3c..83e90266 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -450,7 +450,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] readCameraPosition]); } -RCT_EXPORT_METHOD(addAnchorByLocation:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationAltitude landmarkAltitude:(float)landmarkAltitude anchorName:(NSString *)anchorName resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { +RCT_EXPORT_METHOD(addAnchorByLocation:(NSString *)anchorName locationLat:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationAltitude landmarkAltitude:(float)landmarkAltitude resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(locationLat, locationLong) altitude:locationAltitude horizontalAccuracy:locationHorizontalAccuracy @@ -461,7 +461,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP horizontalAccuracy:landmarkHorizontalAccuracy verticalAccuracy:landmarkVerticalAccuracy timestamp:[NSDate date]]; - NSLog(@"anchorName:-%@", anchorName); + NSLog(@"FIRSTANchorName:-%@", anchorName); [[ARKit sharedInstance] getArAnchorPosition:location landmark:landmark anchorName:anchorName]; } From f04f07d1bd0da92b79a021218fff39ab7ce7d3f5 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 14 Jul 2020 00:11:42 -0400 Subject: [PATCH 313/356] remove logs --- ios/RCTARKit.m | 2 -- ios/RCTARKitManager.m | 3 +-- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index c522434d..9dac4697 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -395,8 +395,6 @@ - (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landma simd_float4x4 completedTransformation = rotateHorizontally(tiltedTransformation, -rotation); ARAnchor *localAnchor = [[ARAnchor alloc] initWithName:anchorName transform:completedTransformation]; - NSLog(@"anchorName:-%@", anchorName); - NSLog(@"localAnchor.name:-%@", localAnchor.name); [self.arView.session addAnchor:localAnchor]; diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 83e90266..d5d287ff 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -461,8 +461,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP horizontalAccuracy:landmarkHorizontalAccuracy verticalAccuracy:landmarkVerticalAccuracy timestamp:[NSDate date]]; - NSLog(@"FIRSTANchorName:-%@", anchorName); - + [[ARKit sharedInstance] getArAnchorPosition:location landmark:landmark anchorName:anchorName]; } From a0869bb4765787ae2ae609e3d3006f2b1b675b05 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 16 Jul 2020 21:47:11 -0400 Subject: [PATCH 314/356] clean code for master merge --- ios/RCTARKit.h | 2 -- ios/RCTARKit.m | 26 -------------------------- ios/RCTARKitManager.m | 7 ------- 3 files changed, 35 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 5dd6438f..5ac6b21b 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -98,8 +98,6 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)clearScene; - (NSDictionary *)readCameraPosition; - (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landmark anchorName:(NSString *)anchorName; -- (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees; - - (NSDictionary *)readCamera; - (NSDictionary* )getCurrentLightEstimation; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 9dac4697..a15aca0b 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -354,32 +354,6 @@ - (double)degreesFromRadians:(float)radians return radians * (180.0/M_PI); } -- (NSDictionary *)coordinateFromCoord:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees { - - double distanceRadians = distanceKm / 6371.0; - //6,371 = Earth's radius in km - double bearingRadians = [self radiansFromDegrees:bearingDegrees]; - double fromLatRadians = [self radiansFromDegrees:locationLat]; - double fromLonRadians = [self radiansFromDegrees:locationLong]; - - double toLatRadians = asin( sin(fromLatRadians) * cos(distanceRadians) - + cos(fromLatRadians) * sin(distanceRadians) * cos(bearingRadians) ); - - double toLonRadians = fromLonRadians + atan2(sin(bearingRadians) - * sin(distanceRadians) * cos(fromLatRadians), cos(distanceRadians) - - sin(fromLatRadians) * sin(toLatRadians)); - - // adjust toLonRadians to be in the range -180 to +180... - toLonRadians = fmod((toLonRadians + 3*M_PI), (2*M_PI)) - M_PI; - - CLLocationCoordinate2D result; - result.latitude = [self degreesFromRadians:toLatRadians]; - result.longitude = [self degreesFromRadians:toLonRadians]; - return @{ - @"results": @{ @"latitude": @(result.latitude), @"longitude": @(result.longitude) } - }; -} - - (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landmark anchorName:(NSString *)anchorName { CLLocationDistance distance = [location distanceFromLocation:landmark]; diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index d5d287ff..09967ff7 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -465,13 +465,6 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP [[ARKit sharedInstance] getArAnchorPosition:location landmark:landmark anchorName:anchorName]; } -RCT_EXPORT_METHOD(getNewCoords:(float)locationLat locationLong:(float)locationLong atDistanceKm:(float)distanceKm atBearingDegrees:(float)bearingDegrees resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - resolve([[ARKit sharedInstance] coordinateFromCoord:locationLat locationLong:locationLong atDistanceKm:distanceKm atBearingDegrees:bearingDegrees]); -} - - - - RCT_EXPORT_METHOD(getCurrentLightEstimation:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { resolve([[ARKit sharedInstance] getCurrentLightEstimation]); } From 6f2bf9df9e6cb919be0286d695d0d277c28e0e0c Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Fri, 31 Jul 2020 21:24:48 -0400 Subject: [PATCH 315/356] addd min --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index a15aca0b..6ceaa02a 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -358,7 +358,7 @@ - (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landma CLLocationDistance distance = [location distanceFromLocation:landmark]; - matrix_float4x4 distanceTransform = translatingIdentity(0, 0, -distance); + matrix_float4x4 distanceTransform = translatingIdentity(0, 0, -min(distance)); float rotation = angleBetweenPoints(location, landmark); From 9bab863931113bdfc82a179486bbeca4ffe97066 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Fri, 31 Jul 2020 21:35:18 -0400 Subject: [PATCH 316/356] update distance function --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 6ceaa02a..918faf56 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -358,7 +358,7 @@ - (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landma CLLocationDistance distance = [location distanceFromLocation:landmark]; - matrix_float4x4 distanceTransform = translatingIdentity(0, 0, -min(distance)); + matrix_float4x4 distanceTransform = translatingIdentity(0, 0, -min(distance, 75)); float rotation = angleBetweenPoints(location, landmark); From d5d287cd6db53be3a96549d102d3ef7f49e99c5e Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Fri, 31 Jul 2020 21:52:00 -0400 Subject: [PATCH 317/356] remove distance function --- ios/RCTARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 918faf56..fa781e15 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -358,7 +358,7 @@ - (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landma CLLocationDistance distance = [location distanceFromLocation:landmark]; - matrix_float4x4 distanceTransform = translatingIdentity(0, 0, -min(distance, 75)); + matrix_float4x4 distanceTransform = translatingIdentity(0, 0, -distance)); float rotation = angleBetweenPoints(location, landmark); From 08e22190b6eea4def1c2329be730a36900291d9e Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Fri, 31 Jul 2020 21:58:07 -0400 Subject: [PATCH 318/356] add distance filter --- ios/RCTARKit.m | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index fa781e15..bd8b0371 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -357,8 +357,12 @@ - (double)degreesFromRadians:(float)radians - (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landmark anchorName:(NSString *)anchorName { CLLocationDistance distance = [location distanceFromLocation:landmark]; + if(distance < 50){ + matrix_float4x4 distanceTransform = translatingIdentity(0, 0, -50); + } else { + matrix_float4x4 distanceTransform = translatingIdentity(0, 0, -distance); + } - matrix_float4x4 distanceTransform = translatingIdentity(0, 0, -distance)); float rotation = angleBetweenPoints(location, landmark); From b9e57a0aa9d3d6b0712c30086555d8c799cccc9f Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Fri, 31 Jul 2020 22:07:02 -0400 Subject: [PATCH 319/356] update distance transform --- ios/RCTARKit.m | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index bd8b0371..01770a49 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -357,12 +357,11 @@ - (double)degreesFromRadians:(float)radians - (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landmark anchorName:(NSString *)anchorName { CLLocationDistance distance = [location distanceFromLocation:landmark]; + matrix_float4x4 distanceTransform = translatingIdentity(0, 0, -distance); + if(distance < 50){ matrix_float4x4 distanceTransform = translatingIdentity(0, 0, -50); - } else { - matrix_float4x4 distanceTransform = translatingIdentity(0, 0, -distance); - } - + } float rotation = angleBetweenPoints(location, landmark); From 17da7c35f3fe314783a443e2328eff7a7fa085f3 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 17 Aug 2020 21:02:25 -0400 Subject: [PATCH 320/356] add image object --- ios/RCTARKitManager.m | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 09967ff7..6e729337 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -446,6 +446,14 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] readCamera]); } + +RCT_EXPORT_METHOD(createImageObject:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + UIImage *image = [UIImage imageWithContentsOfFile:@"https://arworldimages.s3.us-east-2.amazonaws.com/%2F00c3e640-9232-11ea-8c4f-59f384dfd412.png?response-content-disposition=inline&X-Amz-Security-Token=IQoJb3JpZ2luX2VjECEaCXVzLWVhc3QtMSJHMEUCICG51UhaGXhNpVxoWYRZZHodagHysuHaIrt5qwazNvsXAiEAoP4ue3XOfEqp4W75ibB418i6CYNnPJ8oXJlUR9B4jkQqzQII%2Bv%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgwxNTExMDQwMzM0MjMiDDzAsWatG%2F8ur776CCqhAtFe1%2FsQmB0hCXVW5kjcoeB2pLjZcaZ18bad%2FkrEQxUeK%2F0i3b0fyg8p8iOEo2NKvgQxbTNRGRUeoyUfiltUXrpy1tmgs4CPnY2yTA9UR1mvu99SIOz3RerCBvbFfal1jn5%2Bs7Qh%2BWfItg2dsY%2FPdM47jBYXZ0Gs1c%2BvRkzBcjWgSdpChASAqwOFS49idkcqn6JcNubKR%2F9Pkl1x0ruqWwFidXRXHLflIEBlSQH0oKbl1ByFfwXrsz9af%2BhlRjBYlm2GLhRTbAhAFvpi22Ex0MgA7rz%2BsPmV15KkAKOhuPzb7Tjy8l3d00ZMUrXU2c5C1%2Fhnajr8LrtbYh96EumPO%2FCp8dhX7sB0eRTqPRNgN2YfbxmWoGhCPIZoCSQyOZ0pXi0w3c%2Fs%2BQU6sAJHCc40L6%2FB3iyRntUUa1%2BzjOAJDUY3esaOt5bSTuhF0ALsw3Sl8Y%2FyN23qna76BVyiDk9KDqjJXpwc3%2FpGNjn5bRJCwkjnfDwyL%2Bdw4dKovKVHnTEvtzuQTUIyzeDCBdguzUWOt5RPNHIEdO%2BXPIM8MEdLIW9vWjITN7CxOEfvxaiD3qmiOcnjYeGFRY3iBW3mdGyxv8TEDp7vNF0KDdqw7UO0a0RYusOa0Y7%2FswqunIpVqRP1mn6rfK7AWGsGFxkMlueBH0WfJE7TBI989S0O9%2BIXykSZyGT4jbX8TTBfVf99BVcZiqX%2BawFEfarhTMH0%2B7V7m5%2F6kUeE4Fy%2Bch%2Bg0%2BNUGMmmLyJr51%2Bt48QuZHXX8MiDmF%2FZC10JOU8r5zb9wLuu8IPaAI724u98yWjc&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20200818T005945Z&X-Amz-SignedHeaders=host&X-Amz-Expires=300&X-Amz-Credential=ASIASGLUASKH52KQ22X3%2F20200818%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Signature=7a4f73ec0d002cfe76a950985b753dcf548652a629bb509329ff55bf7cd663ed"]; + + NSLog("TestImage %@", image); +} + + RCT_EXPORT_METHOD(getCameraPosition:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { resolve([[ARKit sharedInstance] readCameraPosition]); } From b4677deca5328cb33548d364b07c24392528757f Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 17 Aug 2020 21:10:01 -0400 Subject: [PATCH 321/356] remove secuirty token --- ios/RCTARKitManager.m | 1 - 1 file changed, 1 deletion(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 6e729337..ef6524d9 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -448,7 +448,6 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP RCT_EXPORT_METHOD(createImageObject:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - UIImage *image = [UIImage imageWithContentsOfFile:@"https://arworldimages.s3.us-east-2.amazonaws.com/%2F00c3e640-9232-11ea-8c4f-59f384dfd412.png?response-content-disposition=inline&X-Amz-Security-Token=IQoJb3JpZ2luX2VjECEaCXVzLWVhc3QtMSJHMEUCICG51UhaGXhNpVxoWYRZZHodagHysuHaIrt5qwazNvsXAiEAoP4ue3XOfEqp4W75ibB418i6CYNnPJ8oXJlUR9B4jkQqzQII%2Bv%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgwxNTExMDQwMzM0MjMiDDzAsWatG%2F8ur776CCqhAtFe1%2FsQmB0hCXVW5kjcoeB2pLjZcaZ18bad%2FkrEQxUeK%2F0i3b0fyg8p8iOEo2NKvgQxbTNRGRUeoyUfiltUXrpy1tmgs4CPnY2yTA9UR1mvu99SIOz3RerCBvbFfal1jn5%2Bs7Qh%2BWfItg2dsY%2FPdM47jBYXZ0Gs1c%2BvRkzBcjWgSdpChASAqwOFS49idkcqn6JcNubKR%2F9Pkl1x0ruqWwFidXRXHLflIEBlSQH0oKbl1ByFfwXrsz9af%2BhlRjBYlm2GLhRTbAhAFvpi22Ex0MgA7rz%2BsPmV15KkAKOhuPzb7Tjy8l3d00ZMUrXU2c5C1%2Fhnajr8LrtbYh96EumPO%2FCp8dhX7sB0eRTqPRNgN2YfbxmWoGhCPIZoCSQyOZ0pXi0w3c%2Fs%2BQU6sAJHCc40L6%2FB3iyRntUUa1%2BzjOAJDUY3esaOt5bSTuhF0ALsw3Sl8Y%2FyN23qna76BVyiDk9KDqjJXpwc3%2FpGNjn5bRJCwkjnfDwyL%2Bdw4dKovKVHnTEvtzuQTUIyzeDCBdguzUWOt5RPNHIEdO%2BXPIM8MEdLIW9vWjITN7CxOEfvxaiD3qmiOcnjYeGFRY3iBW3mdGyxv8TEDp7vNF0KDdqw7UO0a0RYusOa0Y7%2FswqunIpVqRP1mn6rfK7AWGsGFxkMlueBH0WfJE7TBI989S0O9%2BIXykSZyGT4jbX8TTBfVf99BVcZiqX%2BawFEfarhTMH0%2B7V7m5%2F6kUeE4Fy%2Bch%2Bg0%2BNUGMmmLyJr51%2Bt48QuZHXX8MiDmF%2FZC10JOU8r5zb9wLuu8IPaAI724u98yWjc&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20200818T005945Z&X-Amz-SignedHeaders=host&X-Amz-Expires=300&X-Amz-Credential=ASIASGLUASKH52KQ22X3%2F20200818%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Signature=7a4f73ec0d002cfe76a950985b753dcf548652a629bb509329ff55bf7cd663ed"]; NSLog("TestImage %@", image); } From d77aed37debd5740d490e7b9389ce11ceeb7170b Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 19 Aug 2020 16:27:04 -0400 Subject: [PATCH 322/356] updated image url --- ios/RCTARKitManager.m | 1 + 1 file changed, 1 insertion(+) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index ef6524d9..47401dfa 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -448,6 +448,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP RCT_EXPORT_METHOD(createImageObject:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + UIImage *image = [UIImage imageWithContentsOfFile:@"https://arworldimages.s3.us-east-2.amazonaws.com/%2F00c3e640-9232-11ea-8c4f-59f384dfd412.png"]; NSLog("TestImage %@", image); } From e3f614037ca7c02889c677b409ab85e91115ba62 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 19 Aug 2020 20:42:38 -0400 Subject: [PATCH 323/356] update ns jog --- ios/RCTARKitManager.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 47401dfa..5067fac5 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -450,7 +450,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP RCT_EXPORT_METHOD(createImageObject:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { UIImage *image = [UIImage imageWithContentsOfFile:@"https://arworldimages.s3.us-east-2.amazonaws.com/%2F00c3e640-9232-11ea-8c4f-59f384dfd412.png"]; - NSLog("TestImage %@", image); + NSLog(@"TestImage %@", image); } From c4767b6d45ae951b34cc02683ce52e4cae40bbbb Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 19 Aug 2020 21:04:49 -0400 Subject: [PATCH 324/356] add iamge node --- ios/RCTARKitManager.m | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 5067fac5..f5aefaf8 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -448,9 +448,24 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP RCT_EXPORT_METHOD(createImageObject:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + SCNPlane *plane = [SCNPlane planeWithWidth:0.5 height:0.5]; + SCNMaterial *material = [SCNMaterial material]; + UIImage *image = [UIImage imageWithContentsOfFile:@"https://arworldimages.s3.us-east-2.amazonaws.com/%2F00c3e640-9232-11ea-8c4f-59f384dfd412.png"]; + material.diffuse.contents = image; + planeGeometry.materials = [material]; + + SCNNode *paintingNode= [SCNNode nodeWithGeometry:planeGeometry]; + SCNMatrix4 transform = SCNMatrix4Identity; + SCNVector3 angles = SCNVector3Make(0, 0, 0); + SCNVector3 position = SCNVector3Make(0, 0, -3); - NSLog(@"TestImage %@", image); + + paintingNode.transform = transform + paintingNode.eulerAngles = angles + paintingNode.position = position + + [arView.scene.rootNode addChildNode:paintingNode]; } From cd5ce5158093639fd769779d8447265c81dc241a Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 19 Aug 2020 21:11:16 -0400 Subject: [PATCH 325/356] update plane var --- ios/RCTARKitManager.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index f5aefaf8..5c2fa08f 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -448,7 +448,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP RCT_EXPORT_METHOD(createImageObject:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - SCNPlane *plane = [SCNPlane planeWithWidth:0.5 height:0.5]; + SCNPlane *planeGeometry = [SCNPlane planeWithWidth:0.5 height:0.5]; SCNMaterial *material = [SCNMaterial material]; UIImage *image = [UIImage imageWithContentsOfFile:@"https://arworldimages.s3.us-east-2.amazonaws.com/%2F00c3e640-9232-11ea-8c4f-59f384dfd412.png"]; From 4dc17992b03cdcb6023f489198d793549244f746 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 19 Aug 2020 21:21:27 -0400 Subject: [PATCH 326/356] add child node --- ios/RCTARKitManager.m | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 5c2fa08f..e3e09ed4 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -461,11 +461,14 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP SCNVector3 position = SCNVector3Make(0, 0, -3); - paintingNode.transform = transform - paintingNode.eulerAngles = angles - paintingNode.position = position + paintingNode.transform = transform; + paintingNode.eulerAngles = angles; + paintingNode.position = position; - [arView.scene.rootNode addChildNode:paintingNode]; + arView.scene.rootNode.addChildNode(paintingNode) + + // [arView.scene.rootNode addChildNode:paintingNode]; // Place camera in the scene + } From 464401f1a2875d69d8da850b49a7a9b069b90a5b Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 19 Aug 2020 21:27:39 -0400 Subject: [PATCH 327/356] update global vars --- ios/RCTARKitManager.m | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index e3e09ed4..83b44aca 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -453,7 +453,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP UIImage *image = [UIImage imageWithContentsOfFile:@"https://arworldimages.s3.us-east-2.amazonaws.com/%2F00c3e640-9232-11ea-8c4f-59f384dfd412.png"]; material.diffuse.contents = image; - planeGeometry.materials = [material]; + planeGeometry.materials = material; SCNNode *paintingNode= [SCNNode nodeWithGeometry:planeGeometry]; SCNMatrix4 transform = SCNMatrix4Identity; @@ -465,10 +465,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP paintingNode.eulerAngles = angles; paintingNode.position = position; - arView.scene.rootNode.addChildNode(paintingNode) - - // [arView.scene.rootNode addChildNode:paintingNode]; // Place camera in the scene - + [arView.scene.rootNode addChildNode:paintingNode]; } From 70db7196c79f436a2842dbbd113819c965355891 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 19 Aug 2020 21:33:05 -0400 Subject: [PATCH 328/356] add chidl to scence --- ios/RCTARKitManager.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 83b44aca..daafd440 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -465,7 +465,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP paintingNode.eulerAngles = angles; paintingNode.position = position; - [arView.scene.rootNode addChildNode:paintingNode]; + [self.rootNode addChildNode:paintingNode]; } From 4e7902a17be06349f4c05a03623008a20d49e367 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 19 Aug 2020 21:40:18 -0400 Subject: [PATCH 329/356] try arview --- ios/RCTARKitManager.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index daafd440..a6f9ecd3 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -465,7 +465,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP paintingNode.eulerAngles = angles; paintingNode.position = position; - [self.rootNode addChildNode:paintingNode]; + [self.arView.scene.rootNode addChildNode:paintingNode]; } From 079a02dd391013db8a488f1f5e2a01a62c0e7e67 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 19 Aug 2020 21:50:41 -0400 Subject: [PATCH 330/356] add nodes to scence --- ios/RCTARKitManager.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index a6f9ecd3..e135a09e 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -465,7 +465,7 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP paintingNode.eulerAngles = angles; paintingNode.position = position; - [self.arView.scene.rootNode addChildNode:paintingNode]; + [[RCTARKitNodes sharedInstance] addNodeToScene:paintingNode]; } From c87db4bb16e943e753522b8b9eafde9a647e6954 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 24 Aug 2020 21:56:49 -0400 Subject: [PATCH 331/356] add Image Object --- components/ARImage.js | 24 ++++++++++++++++++++++++ index.js | 3 +++ ios/RCTARKitManager.m | 20 -------------------- ios/RCTConvert+ARKit.h | 3 +++ ios/RCTConvert+ARKit.m | 21 +++++++++++++++++++++ ios/components/ARImageManager.h | 13 +++++++++++++ ios/components/ARImageManager.m | 22 ++++++++++++++++++++++ 7 files changed, 86 insertions(+), 20 deletions(-) create mode 100644 components/ARImage.js create mode 100644 ios/components/ARImageManager.h create mode 100644 ios/components/ARImageManager.m diff --git a/components/ARImage.js b/components/ARImage.js new file mode 100644 index 00000000..50385afe --- /dev/null +++ b/components/ARImage.js @@ -0,0 +1,24 @@ +// +// ARImage.js +// +// Created by HippoAR on 8/12/17. +// Copyright © 2017 HippoAR. All rights reserved. +// + +import PropTypes from 'prop-types'; + +import { NativeModules } from 'react-native'; + +import { material } from './lib/propTypes'; +import createArComponent from './lib/createArComponent'; + +const ARImage = createArComponent( + { mount: NativeModules.ARImageManager.mount, pick: ['id', 'imageUrl'] }, + { + imageUrl: PropTypes.string, + material + }, + ['imageUrl'] +); + +export default ARImage; diff --git a/index.js b/index.js index 0bdb4b4d..53c2d82d 100644 --- a/index.js +++ b/index.js @@ -19,6 +19,7 @@ import ARShape from './components/ARShape'; import ARSphere from './components/ARSphere'; import ARSprite from './components/ARSprite'; import ARText from './components/ARText'; +import ARImage from './components/ARImage'; import ARTorus from './components/ARTorus'; import ARTube from './components/ARTube'; import DeviceMotion from './DeviceMotion'; @@ -37,6 +38,7 @@ ARKit.Torus = ARTorus; ARKit.Capsule = ARCapsule; ARKit.Plane = ARPlane; ARKit.Text = ARText; +ARKit.Image = ARImage; ARKit.Model = ARModel; ARKit.Sprite = ARSprite; ARKit.Group = ARGroup; @@ -60,6 +62,7 @@ export { ARCapsule, ARPlane, ARText, + ARImage, ARModel, ARLight, ARGroup, diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index e135a09e..fa0dc994 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -447,26 +447,6 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP } -RCT_EXPORT_METHOD(createImageObject:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - SCNPlane *planeGeometry = [SCNPlane planeWithWidth:0.5 height:0.5]; - SCNMaterial *material = [SCNMaterial material]; - - UIImage *image = [UIImage imageWithContentsOfFile:@"https://arworldimages.s3.us-east-2.amazonaws.com/%2F00c3e640-9232-11ea-8c4f-59f384dfd412.png"]; - material.diffuse.contents = image; - planeGeometry.materials = material; - - SCNNode *paintingNode= [SCNNode nodeWithGeometry:planeGeometry]; - SCNMatrix4 transform = SCNMatrix4Identity; - SCNVector3 angles = SCNVector3Make(0, 0, 0); - SCNVector3 position = SCNVector3Make(0, 0, -3); - - - paintingNode.transform = transform; - paintingNode.eulerAngles = angles; - paintingNode.position = position; - - [[RCTARKitNodes sharedInstance] addNodeToScene:paintingNode]; -} RCT_EXPORT_METHOD(getCameraPosition:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { diff --git a/ios/RCTConvert+ARKit.h b/ios/RCTConvert+ARKit.h index 60beee71..e214f014 100644 --- a/ios/RCTConvert+ARKit.h +++ b/ios/RCTConvert+ARKit.h @@ -12,6 +12,8 @@ #import @interface SCNTextNode : SCNNode +@interface SCNImageNode : SCNNode + @end @@ -36,6 +38,7 @@ + (SCNLight *)SCNLight:(id)json; + (SCNTextNode *)SCNTextNode:(id)json; ++ (SCNImageNode *)SCNImageNode:(id)json; + (void)setNodeProperties:(SCNNode *)node properties:(id)json; + (void)setMaterialProperties:(SCNMaterial *)material properties:(id)json; diff --git a/ios/RCTConvert+ARKit.m b/ios/RCTConvert+ARKit.m index 16c1f133..c10a64c6 100644 --- a/ios/RCTConvert+ARKit.m +++ b/ios/RCTConvert+ARKit.m @@ -297,6 +297,27 @@ + (SCNTextNode *)SCNTextNode:(id)json { return textNode; } ++ (SCNImageNode *)SCNImageNode:(id)json { + SCNPlane *planeGeometry = [SCNPlane planeWithWidth:0.5 height:0.5]; + SCNMaterial *material = [SCNMaterial material]; + + UIImage *image = [UIImage imageWithContentsOfFile:@"https://arworldimages.s3.us-east-2.amazonaws.com/%2F00c3e640-9232-11ea-8c4f-59f384dfd412.png"]; + material.diffuse.contents = image; + planeGeometry.materials = material; + + SCNImageNode *paintingNode= [SCNNode nodeWithGeometry:planeGeometry]; + SCNMatrix4 transform = SCNMatrix4Identity; + SCNVector3 angles = SCNVector3Make(0, 0, 0); + SCNVector3 position = SCNVector3Make(0, 0, -3); + + + paintingNode.transform = transform; + paintingNode.eulerAngles = angles; + paintingNode.position = position; + + return paintingNode +} + + (SCNLight *)SCNLight:(id)json { SCNLight * light = [SCNLight light]; diff --git a/ios/components/ARImageManager.h b/ios/components/ARImageManager.h new file mode 100644 index 00000000..1c5cd52c --- /dev/null +++ b/ios/components/ARImageManager.h @@ -0,0 +1,13 @@ +// +// ARImageManager.h +// RCTARKit +// +// Created by Zehao Li on 8/12/17. +// Copyright © 2017 HippoAR. All rights reserved. +// + +#import + +@interface ARImageManager : NSObject + +@end diff --git a/ios/components/ARImageManager.m b/ios/components/ARImageManager.m new file mode 100644 index 00000000..a4d32e2d --- /dev/null +++ b/ios/components/ARImageManager.m @@ -0,0 +1,22 @@ +// +// ARImageManager.m +// RCTARKit +// +// Created by Zehao Li on 8/12/17. +// Copyright © 2017 HippoAR. All rights reserved. +// + +#import "ARImageManager.h" +#import "RCTARKitNodes.h" +#import "RCTConvert+ARKit.h" + +@implementation ARImageManager + +RCT_EXPORT_MODULE() + +RCT_EXPORT_METHOD(mount:(SCNImageNode*)imageNode node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId) { + [node addChildNode:imageNode]; + [[RCTARKitNodes sharedInstance] addNodeToScene:node inReferenceFrame:frame withParentId:parentId]; +} + +@end From 8aaaefdfeec19142e99bdf4a1dd8b7ce88067b24 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 24 Aug 2020 22:03:45 -0400 Subject: [PATCH 332/356] update iamge objects --- ios/RCTConvert+ARKit.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ios/RCTConvert+ARKit.h b/ios/RCTConvert+ARKit.h index e214f014..8e8fd7f0 100644 --- a/ios/RCTConvert+ARKit.h +++ b/ios/RCTConvert+ARKit.h @@ -12,8 +12,9 @@ #import @interface SCNTextNode : SCNNode -@interface SCNImageNode : SCNNode +@end +@interface SCNImageNode : SCNNode @end From 090d04d3527ff7e3bacf018513eb41e9bc1491e9 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 24 Aug 2020 22:08:28 -0400 Subject: [PATCH 333/356] add semicolon --- ios/RCTConvert+ARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTConvert+ARKit.m b/ios/RCTConvert+ARKit.m index c10a64c6..1437aabd 100644 --- a/ios/RCTConvert+ARKit.m +++ b/ios/RCTConvert+ARKit.m @@ -315,7 +315,7 @@ + (SCNImageNode *)SCNImageNode:(id)json { paintingNode.eulerAngles = angles; paintingNode.position = position; - return paintingNode + return paintingNode; } From 0de5df547da3ac6c1bab6090368734135e3a092d Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 25 Aug 2020 07:32:29 -0400 Subject: [PATCH 334/356] add new console.logs --- components/lib/createArComponent.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/components/lib/createArComponent.js b/components/lib/createArComponent.js index 21552962..7f6b5ef3 100644 --- a/components/lib/createArComponent.js +++ b/components/lib/createArComponent.js @@ -65,6 +65,8 @@ the property will be updated on scenekit, instead of beeing remounted. this excludes at the moment: model, font, text, (???) * */ export default (mountConfig, propTypes = {}, nonUpdateablePropKeys = []) => { + console.log("made it to ar componnet manager") + const allPropTypes = { ...MOUNT_UNMOUNT_ANIMATION_PROPS, ...PROP_TYPES_IMMUTABLE, @@ -84,7 +86,7 @@ export default (mountConfig, propTypes = {}, nonUpdateablePropKeys = []) => { }); const getNonNodeProps = props => parseMaterials(pick(props, nonNodePropKeys)); - + console.log("gotNodeProbs") const mountFunc = typeof mountConfig === 'string' ? ARGeosManager[mountConfig] @@ -92,6 +94,8 @@ export default (mountConfig, propTypes = {}, nonUpdateablePropKeys = []) => { const mount = (id, props, parentId) => { if (DEBUG) console.log(`[${id}] [${new Date().getTime()}] mount`, props); + console.log("parentId", parentId) + console.log("props.frame", props.frame) return mountFunc( getNonNodeProps(props), { From 3df3d8192696289042063398e68a07b736e184e6 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 25 Aug 2020 07:53:56 -0400 Subject: [PATCH 335/356] add more logs --- components/lib/createArComponent.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/components/lib/createArComponent.js b/components/lib/createArComponent.js index 7f6b5ef3..d6c3c411 100644 --- a/components/lib/createArComponent.js +++ b/components/lib/createArComponent.js @@ -65,8 +65,6 @@ the property will be updated on scenekit, instead of beeing remounted. this excludes at the moment: model, font, text, (???) * */ export default (mountConfig, propTypes = {}, nonUpdateablePropKeys = []) => { - console.log("made it to ar componnet manager") - const allPropTypes = { ...MOUNT_UNMOUNT_ANIMATION_PROPS, ...PROP_TYPES_IMMUTABLE, @@ -86,7 +84,6 @@ export default (mountConfig, propTypes = {}, nonUpdateablePropKeys = []) => { }); const getNonNodeProps = props => parseMaterials(pick(props, nonNodePropKeys)); - console.log("gotNodeProbs") const mountFunc = typeof mountConfig === 'string' ? ARGeosManager[mountConfig] @@ -94,8 +91,9 @@ export default (mountConfig, propTypes = {}, nonUpdateablePropKeys = []) => { const mount = (id, props, parentId) => { if (DEBUG) console.log(`[${id}] [${new Date().getTime()}] mount`, props); - console.log("parentId", parentId) - console.log("props.frame", props.frame) + console.log("parentId", this.context.arkitParentId) + console.log("props", props) + return mountFunc( getNonNodeProps(props), { @@ -103,7 +101,7 @@ export default (mountConfig, propTypes = {}, nonUpdateablePropKeys = []) => { ...pick(props, NODE_PROPS), }, props.frame, - parentId, + parentId, ); }; From fbff845dc87c66fc5aed84a34599299b1161cfb6 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 25 Aug 2020 08:05:45 -0400 Subject: [PATCH 336/356] add consolelogs --- components/lib/createArComponent.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/lib/createArComponent.js b/components/lib/createArComponent.js index d6c3c411..5904eab1 100644 --- a/components/lib/createArComponent.js +++ b/components/lib/createArComponent.js @@ -91,8 +91,6 @@ export default (mountConfig, propTypes = {}, nonUpdateablePropKeys = []) => { const mount = (id, props, parentId) => { if (DEBUG) console.log(`[${id}] [${new Date().getTime()}] mount`, props); - console.log("parentId", this.context.arkitParentId) - console.log("props", props) return mountFunc( getNonNodeProps(props), @@ -140,6 +138,8 @@ export default (mountConfig, propTypes = {}, nonUpdateablePropKeys = []) => { } async mountWithProps(props) { + console.log("parentId", this.context.arkitParentId) + console.log("props", props) return mount(this.identifier, props, this.context.arkitParentId); } From dc24a139198a208b3b5e279c57d8d817dea0acff Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 25 Aug 2020 21:36:24 -0400 Subject: [PATCH 337/356] add materials --- components/ARImage.js | 4 ++-- components/lib/createArComponent.js | 4 +++- ios/RCTConvert+ARKit.m | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/components/ARImage.js b/components/ARImage.js index 50385afe..1e6a6b2a 100644 --- a/components/ARImage.js +++ b/components/ARImage.js @@ -13,12 +13,12 @@ import { material } from './lib/propTypes'; import createArComponent from './lib/createArComponent'; const ARImage = createArComponent( - { mount: NativeModules.ARImageManager.mount, pick: ['id', 'imageUrl'] }, + { mount: NativeModules.ARImageManager.mount, pick: ['id'] }, { imageUrl: PropTypes.string, material }, - ['imageUrl'] + [] ); export default ARImage; diff --git a/components/lib/createArComponent.js b/components/lib/createArComponent.js index 5904eab1..25516492 100644 --- a/components/lib/createArComponent.js +++ b/components/lib/createArComponent.js @@ -126,13 +126,15 @@ export default (mountConfig, propTypes = {}, nonUpdateablePropKeys = []) => { const { transition: transitionOnMount = { duration: 0 }, } = fullPropsOnMount; - + console.log("fullpropsmount", fullPropsOnMount) this.doPendingTimers(); this.mountWithProps(fullPropsOnMount).then(() => { this.props = propsOnMount; this.componentWillUpdate({ ...props, transition: transitionOnMount }); }); } else { + console.log("halfpropsmount", props) + this.mountWithProps(props); } } diff --git a/ios/RCTConvert+ARKit.m b/ios/RCTConvert+ARKit.m index 1437aabd..f08393f3 100644 --- a/ios/RCTConvert+ARKit.m +++ b/ios/RCTConvert+ARKit.m @@ -303,7 +303,7 @@ + (SCNImageNode *)SCNImageNode:(id)json { UIImage *image = [UIImage imageWithContentsOfFile:@"https://arworldimages.s3.us-east-2.amazonaws.com/%2F00c3e640-9232-11ea-8c4f-59f384dfd412.png"]; material.diffuse.contents = image; - planeGeometry.materials = material; + // planeGeometry.materials = material; SCNImageNode *paintingNode= [SCNNode nodeWithGeometry:planeGeometry]; SCNMatrix4 transform = SCNMatrix4Identity; @@ -314,6 +314,7 @@ + (SCNImageNode *)SCNImageNode:(id)json { paintingNode.transform = transform; paintingNode.eulerAngles = angles; paintingNode.position = position; + [self addMaterials:paintingNode json:material sides:1]; return paintingNode; } From ded8c01e46e9cb891b59f0d595602206846e82ee Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 25 Aug 2020 21:54:03 -0400 Subject: [PATCH 338/356] add material --- ios/RCTConvert+ARKit.m | 47 +++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/ios/RCTConvert+ARKit.m b/ios/RCTConvert+ARKit.m index f08393f3..865b8afb 100644 --- a/ios/RCTConvert+ARKit.m +++ b/ios/RCTConvert+ARKit.m @@ -150,6 +150,32 @@ + (SCNCapsule *)SCNCapsule:(id)json { return geometry; } ++ (SCNImageNode *)SCNImageNode:(id)json { + SCNPlane *planeGeometry = [SCNPlane planeWithWidth:0.5 height:0.5]; + NSDictionary* shape = json[@"shape"]; + + UIImage *image = [UIImage imageWithContentsOfFile:@"https://arworldimages.s3.us-east-2.amazonaws.com/%2F00c3e640-9232-11ea-8c4f-59f384dfd412.png"]; + material.diffuse.contents = image; + + NSMutableArray *materials = [NSMutableArray array]; + [materials addObject:@(material)]; + + + planeGeometry.materials = materials; + + SCNImageNode *paintingNode= [SCNNode nodeWithGeometry:planeGeometry]; + SCNMatrix4 transform = SCNMatrix4Identity; + SCNVector3 angles = SCNVector3Make(0, 0, 0); + SCNVector3 position = SCNVector3Make(0, 0, -3); + + + paintingNode.transform = transform; + paintingNode.eulerAngles = angles; + paintingNode.position = position; + + return paintingNode; +} + + (SCNPlane *)SCNPlane:(id)json { NSDictionary* shape = json[@"shape"]; CGFloat width = [shape[@"width"] floatValue]; @@ -297,27 +323,6 @@ + (SCNTextNode *)SCNTextNode:(id)json { return textNode; } -+ (SCNImageNode *)SCNImageNode:(id)json { - SCNPlane *planeGeometry = [SCNPlane planeWithWidth:0.5 height:0.5]; - SCNMaterial *material = [SCNMaterial material]; - - UIImage *image = [UIImage imageWithContentsOfFile:@"https://arworldimages.s3.us-east-2.amazonaws.com/%2F00c3e640-9232-11ea-8c4f-59f384dfd412.png"]; - material.diffuse.contents = image; - // planeGeometry.materials = material; - - SCNImageNode *paintingNode= [SCNNode nodeWithGeometry:planeGeometry]; - SCNMatrix4 transform = SCNMatrix4Identity; - SCNVector3 angles = SCNVector3Make(0, 0, 0); - SCNVector3 position = SCNVector3Make(0, 0, -3); - - - paintingNode.transform = transform; - paintingNode.eulerAngles = angles; - paintingNode.position = position; - [self addMaterials:paintingNode json:material sides:1]; - - return paintingNode; -} + (SCNLight *)SCNLight:(id)json { From 63eb6f8777b02be591577332ab30875be7abb9e5 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 25 Aug 2020 21:59:44 -0400 Subject: [PATCH 339/356] add material var --- ios/RCTConvert+ARKit.m | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ios/RCTConvert+ARKit.m b/ios/RCTConvert+ARKit.m index 865b8afb..dd15b8f0 100644 --- a/ios/RCTConvert+ARKit.m +++ b/ios/RCTConvert+ARKit.m @@ -152,11 +152,10 @@ + (SCNCapsule *)SCNCapsule:(id)json { + (SCNImageNode *)SCNImageNode:(id)json { SCNPlane *planeGeometry = [SCNPlane planeWithWidth:0.5 height:0.5]; - NSDictionary* shape = json[@"shape"]; + SCNMaterial *material = [SCNMaterial material]; UIImage *image = [UIImage imageWithContentsOfFile:@"https://arworldimages.s3.us-east-2.amazonaws.com/%2F00c3e640-9232-11ea-8c4f-59f384dfd412.png"]; material.diffuse.contents = image; - NSMutableArray *materials = [NSMutableArray array]; [materials addObject:@(material)]; From f6ff939e4a9ff7962a9464cbd290de09a97366ff Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Tue, 25 Aug 2020 22:05:03 -0400 Subject: [PATCH 340/356] remove box --- ios/RCTConvert+ARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTConvert+ARKit.m b/ios/RCTConvert+ARKit.m index dd15b8f0..e9398d60 100644 --- a/ios/RCTConvert+ARKit.m +++ b/ios/RCTConvert+ARKit.m @@ -157,7 +157,7 @@ + (SCNImageNode *)SCNImageNode:(id)json { UIImage *image = [UIImage imageWithContentsOfFile:@"https://arworldimages.s3.us-east-2.amazonaws.com/%2F00c3e640-9232-11ea-8c4f-59f384dfd412.png"]; material.diffuse.contents = image; NSMutableArray *materials = [NSMutableArray array]; - [materials addObject:@(material)]; + [materials addObject:material]; planeGeometry.materials = materials; From 2929e61548d10fa717efff1ef27b3549ee8134a1 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 26 Aug 2020 23:27:22 -0400 Subject: [PATCH 341/356] init image data --- ios/RCTARKit.m | 4 ++-- ios/RCTConvert+ARKit.m | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index 01770a49..4dc1e5bc 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -316,9 +316,9 @@ - (void)setDetectionImages:(NSArray*) detectionImages { for (id url in config[@"arDetectionImages"]) { NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: url]]; - UIImage* uiimage = [[UIImage alloc] initWithData:imageData]; + UIImage* uiImage = [[UIImage alloc] initWithData:imageData]; - CGImageRef cgImage = [uiimage CGImage]; + CGImageRef cgImage = [uiImage CGImage]; ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:1]; image.name=url; diff --git a/ios/RCTConvert+ARKit.m b/ios/RCTConvert+ARKit.m index e9398d60..07eae590 100644 --- a/ios/RCTConvert+ARKit.m +++ b/ios/RCTConvert+ARKit.m @@ -153,8 +153,9 @@ + (SCNCapsule *)SCNCapsule:(id)json { + (SCNImageNode *)SCNImageNode:(id)json { SCNPlane *planeGeometry = [SCNPlane planeWithWidth:0.5 height:0.5]; SCNMaterial *material = [SCNMaterial material]; + NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"https://arworldimages.s3.us-east-2.amazonaws.com/%2F00c3e640-9232-11ea-8c4f-59f384dfd412.png"]]; - UIImage *image = [UIImage imageWithContentsOfFile:@"https://arworldimages.s3.us-east-2.amazonaws.com/%2F00c3e640-9232-11ea-8c4f-59f384dfd412.png"]; + UIImage *image = [[UIImage alloc] initWithData:imageData]; material.diffuse.contents = image; NSMutableArray *materials = [NSMutableArray array]; [materials addObject:material]; From 750043af5422559a0d1cbab5c4b59438efa71eb2 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Thu, 27 Aug 2020 21:35:42 -0400 Subject: [PATCH 342/356] add dynamic url --- ios/RCTConvert+ARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTConvert+ARKit.m b/ios/RCTConvert+ARKit.m index 07eae590..2fda4f02 100644 --- a/ios/RCTConvert+ARKit.m +++ b/ios/RCTConvert+ARKit.m @@ -153,7 +153,7 @@ + (SCNCapsule *)SCNCapsule:(id)json { + (SCNImageNode *)SCNImageNode:(id)json { SCNPlane *planeGeometry = [SCNPlane planeWithWidth:0.5 height:0.5]; SCNMaterial *material = [SCNMaterial material]; - NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"https://arworldimages.s3.us-east-2.amazonaws.com/%2F00c3e640-9232-11ea-8c4f-59f384dfd412.png"]]; + NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: json["@url"]]]; UIImage *image = [[UIImage alloc] initWithData:imageData]; material.diffuse.contents = image; From 64cf29a306ec1d1ceae441311d0c614b5f2a8657 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sat, 29 Aug 2020 16:03:25 -0400 Subject: [PATCH 343/356] add @ inside of image --- ios/RCTConvert+ARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTConvert+ARKit.m b/ios/RCTConvert+ARKit.m index 2fda4f02..db185169 100644 --- a/ios/RCTConvert+ARKit.m +++ b/ios/RCTConvert+ARKit.m @@ -153,7 +153,7 @@ + (SCNCapsule *)SCNCapsule:(id)json { + (SCNImageNode *)SCNImageNode:(id)json { SCNPlane *planeGeometry = [SCNPlane planeWithWidth:0.5 height:0.5]; SCNMaterial *material = [SCNMaterial material]; - NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: json["@url"]]]; + NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: json[@"ImageUrl"]]]; UIImage *image = [[UIImage alloc] initWithData:imageData]; material.diffuse.contents = image; From 41b5e5b670acc9c18ec8629cd6a334a3503acafe Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sat, 29 Aug 2020 16:43:10 -0400 Subject: [PATCH 344/356] log image url --- ios/RCTConvert+ARKit.m | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ios/RCTConvert+ARKit.m b/ios/RCTConvert+ARKit.m index db185169..8bb282fc 100644 --- a/ios/RCTConvert+ARKit.m +++ b/ios/RCTConvert+ARKit.m @@ -151,9 +151,12 @@ + (SCNCapsule *)SCNCapsule:(id)json { } + (SCNImageNode *)SCNImageNode:(id)json { + NSLog(@"setDeviceMotionUpdateInterval: %f", json[@"imageUrl"]]); + SCNPlane *planeGeometry = [SCNPlane planeWithWidth:0.5 height:0.5]; SCNMaterial *material = [SCNMaterial material]; - NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: json[@"ImageUrl"]]]; + NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: json[@"imageUrl"]]]; + UIImage *image = [[UIImage alloc] initWithData:imageData]; material.diffuse.contents = image; From b1d6f72d88db9f469a7c32ee833bad78d0713237 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Sat, 29 Aug 2020 16:47:35 -0400 Subject: [PATCH 345/356] remove extra bracket --- ios/RCTConvert+ARKit.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTConvert+ARKit.m b/ios/RCTConvert+ARKit.m index 8bb282fc..0b64a844 100644 --- a/ios/RCTConvert+ARKit.m +++ b/ios/RCTConvert+ARKit.m @@ -151,7 +151,7 @@ + (SCNCapsule *)SCNCapsule:(id)json { } + (SCNImageNode *)SCNImageNode:(id)json { - NSLog(@"setDeviceMotionUpdateInterval: %f", json[@"imageUrl"]]); + NSLog(@"setDeviceMotionUpdateInterval: %f", json[@"imageUrl"]); SCNPlane *planeGeometry = [SCNPlane planeWithWidth:0.5 height:0.5]; SCNMaterial *material = [SCNMaterial material]; From e888e73e00aec0370873ccbf9d21dfe5a6f56b60 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Wed, 30 Sep 2020 21:14:58 -0400 Subject: [PATCH 346/356] add size to shape --- components/ARShape.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/ARShape.js b/components/ARShape.js index 91e951f9..e6f90a95 100644 --- a/components/ARShape.js +++ b/components/ARShape.js @@ -5,6 +5,8 @@ import createArComponent from './lib/createArComponent'; const ARShape = createArComponent('addShape', { shape: PropTypes.shape({ + width: PropTypes.number, + height: PropTypes.number, extrusion: PropTypes.number, pathSvg: PropTypes.string, pathFlatness: PropTypes.number, From 1dbe6cf5a2da31e5a10bbe419d5deb71468b3695 Mon Sep 17 00:00:00 2001 From: Jack Sobocinski Date: Mon, 20 Apr 2020 19:47:31 -0400 Subject: [PATCH 347/356] add pinch onpress remove onrpess add pan gesture update pan gesature' remove pan gesture fix panning update view add z stat remove z stat add reconzer stats debug translator and view remove pan completely remove panhandler add recongizer add name remove name update detection images load iamge from update url create images on the fly update ur update url stuff update image creation' update react antive arkit use cig image create ar refernce iamge clean up pinch functions and return image funcs add detection images update refernce images add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image add refernce image update image width updaet pinch update pinch gesture update pinch gesture update status of ui pinch update status of ui pinch update uipinch update scale for pinch update gesture handlers update gesture handlers update gesture handlers update scale update scale update pinch update pinch update pinch update pinch update pinch update pinch update pinch update dynmaic images add pan gesture add arview add maximum numner of touches add maximum numner of touches update to arview update arview upadte pan handler update gesture rec update images update images update arkit pan update dynmic images update dynamic images update dynamic images update pan handler handle tap handle tap handle tap update pan update pna update pand gesuture names remove pan gesture location tracking start location tracking expose aranchor function remov alt and declar distance var update location function' update location remove auto release update location logs' update test values update location tracking add option coords update option var pass add options to location add options var add @ before string add @ before string add landmark lat and long add floats as lat and long update landmark lat and long add else statement add else statement update location code update order of params update location func create matrix: udpate matrix log matrix result update matrix result log results update transform add new anchor update location params add landmark lat add landmark log update lat long options landmark lat initn number with float add double vlaue add double value add long diff add semicolon return angle add semicolons update location tracking add semicolons add rotation matrix init page with new value' update matrix roattion re trun distance transform update distance log distance add semicolon add log' return distance log y value add endlat add z test with float vlaue add location lat and long add semicolon remove all reference of options remove closing brace add dynamic double values' switch double to float remove * on float decleration add acuracy add vertical and horizontal accurcy get distance between points add bearing and degrees update location long change double to flaot add type to function return location remove brace update distance km update lat and long radians add smd4 make add semicolons add log for function result add semicolons update var names add indexes add itendifiers add transformation matrix remove dots checkout x value' access zero update vars log z value add a bunch of logs add more logs add ar anchor log transform log matrix update log remove bad logs add transform log remove log stuff log matrix log anchor: add transformation matrix update log logmatrix logmatrix upadate position abs add more ogs convert vector to json update syntax errors remove staic allocation update logs update logs log entire matrix log out new roattion matrix remove stupid logs and get rotation remove logs log vector 4s get vec 4' update logs update action update logs upodate new rotation add dynamic degree to calculation update bearing results add ditonary accessor redeclare vlaues add semicolons correctly access dict access rotation matrix add getrow update url update matrix info update x update w add anchjor add semicolon update location tracking update rotation add some logs to figure shit out try wiht distance transform add rotation info update rotation update location add semicolon update matrix accessor make float 4x4 update syntax make 4x4 update matrix update roatation matrix use simd_matrix update use of rotation change to 4x4 matrix create with hardcoded values use distance transform use complteted transfomration change aranchor init remove bearing degrees ad dmore accurate reading fix typo add in extra to function def add log and create voide function remove resolve create negitive rotation Scrub up the code import corelocation add astrik fix syntax errors fix syntax issues syntax issues rename location function and add anchorname use init with name return name in anchor result add name prop logic add semicolon add semicolon add nodename add anchor name log strings add tests add testname add anchor name move nsstring frist remove logs clean code for master merge addd min update distance function remove distance function add distance filter update distance transform change distance remove location code --- ARKit.js | 2 + ios/RCTARKit.h | 4 + ios/RCTARKit.m | 182 ++++++++- ios/RCTARKitManager.m | 16 + package-lock.json | 927 ++++++++++++++++++++++-------------------- package.json | 8 +- 6 files changed, 673 insertions(+), 466 deletions(-) diff --git a/ARKit.js b/ARKit.js index 2a3dd912..d5f48ce6 100644 --- a/ARKit.js +++ b/ARKit.js @@ -59,6 +59,7 @@ class ARKit extends Component { 'onTapOnPlaneUsingExtent', 'onTapOnPlaneNoExtent', 'onRotationGesture', + 'onPinchGesture', 'onPlaneDetected', 'onPlaneRemoved', 'onPlaneUpdated', @@ -240,6 +241,7 @@ ARKit.propTypes = { onTapOnPlaneUsingExtent: PropTypes.func, onTapOnPlaneNoExtent: PropTypes.func, onRotationGesture: PropTypes.func, + onPinchGesture: PropTypes.func, onEvent: PropTypes.func, isMounted: PropTypes.func, isInitialized: PropTypes.func, diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index ee740a3b..921e241a 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -13,6 +13,7 @@ #import "RCTARKitDelegate.h" #import "RCTARKitNodes.h" #import "RCTMultiPeer.h" +@import CoreLocation; typedef void (^RCTBubblingEventBlock)(NSDictionary *body); typedef void (^RCTARKitResolve)(id result); @@ -64,6 +65,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error @property (nonatomic, copy) RCTBubblingEventBlock onTapOnPlaneNoExtent; @property (nonatomic, copy) RCTBubblingEventBlock onRotationGesture; +@property (nonatomic, copy) RCTBubblingEventBlock onPinchGesture; @property (nonatomic, copy) RCTBubblingEventBlock onEvent; @property (nonatomic, copy) RCTBubblingEventBlock onARKitError; @@ -95,6 +97,8 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)focusScene; - (void)clearScene; - (NSDictionary *)readCameraPosition; +// - (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landmark anchorName:(NSString *)anchorName; + - (NSDictionary *)readCamera; - (NSDictionary* )getCurrentLightEstimation; - (NSArray * )getCurrentDetectedFeaturePoints; diff --git a/ios/RCTARKit.m b/ios/RCTARKit.m index c04222b6..96ca5b04 100644 --- a/ios/RCTARKit.m +++ b/ios/RCTARKit.m @@ -76,10 +76,13 @@ - (instancetype)initWithARView:(ARSCNView *)arView { UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)]; tapGestureRecognizer.numberOfTapsRequired = 1; [self.arView addGestureRecognizer:tapGestureRecognizer]; - + UIRotationGestureRecognizer *rotationGestureRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotationFrom:)]; [self.arView addGestureRecognizer:rotationGestureRecognizer]; - + + UIPinchGestureRecognizer *pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinchFrom:)]; + [self.arView addGestureRecognizer:pinchGestureRecognizer]; + self.touchDelegates = [NSMutableArray array]; self.rendererDelegates = [NSMutableArray array]; self.sessionDelegates = [NSMutableArray array]; @@ -305,20 +308,35 @@ - (void)setWorldAlignment:(ARWorldAlignment)worldAlignment { #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 110300 - (void)setDetectionImages:(NSArray*) detectionImages { - - if (@available(iOS 11.3, *)) { - ARWorldTrackingConfiguration *configuration = self.configuration; - NSSet *detectionImagesSet = [[NSSet alloc] init]; - for (id config in detectionImages) { - if(config[@"resourceGroupName"]) { - // TODO: allow bundle to be defined - detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage referenceImagesInGroupNamed:config[@"resourceGroupName"] bundle:nil]]; - } + if (@available(iOS 11.3, *)) { + ARWorldTrackingConfiguration *configuration = self.configuration; + NSSet *detectionImagesSet = [[NSSet alloc] init]; + for (id config in detectionImages) { + + for (id url in config[@"arDetectionImages"]) { + NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: url]]; + + UIImage* uiimage = [[UIImage alloc] initWithData:imageData]; + + CGImageRef cgImage = [uiimage CGImage]; + + ARReferenceImage *image = [[ARReferenceImage alloc] initWithCGImage:cgImage orientation:kCGImagePropertyOrientationUp physicalWidth:1]; + image.name=url; + detectionImagesSet = [detectionImagesSet setByAddingObject:image]; + + } + + + if(config[@"resourceGroupName"]) { + detectionImagesSet = [detectionImagesSet setByAddingObjectsFromSet:[ARReferenceImage referenceImagesInGroupNamed:config[@"resourceGroupName"] bundle:nil]]; + } + + configuration.detectionImages = detectionImagesSet; + [self resume]; } - configuration.detectionImages = detectionImagesSet; - [self resume];; } } + #endif - (NSDictionary *)readCameraPosition { // deprecated @@ -326,6 +344,98 @@ - (NSDictionary *)readCameraPosition { return vectorToJson(cameraPosition); } +- (double)radiansFromDegrees:(float)degrees +{ + return degrees * (M_PI/180.0); +} + +- (double)degreesFromRadians:(float)radians +{ + return radians * (180.0/M_PI); +} + +- (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landmark anchorName:(NSString *)anchorName { + + CLLocationDistance distance = [location distanceFromLocation:landmark]; + matrix_float4x4 distanceTransform = translatingIdentity(0, 0, -distance); + + if(distance < 200){ + matrix_float4x4 distanceTransform = translatingIdentity(0, 0, -50); + } + + float rotation = angleBetweenPoints(location, landmark); + + float tilt = angleOffHorizon(location, landmark); + + simd_float4x4 tiltedTransformation = rotateVertically(distanceTransform, tilt); + + simd_float4x4 completedTransformation = rotateHorizontally(tiltedTransformation, -rotation); + + ARAnchor *localAnchor = [[ARAnchor alloc] initWithName:anchorName transform:completedTransformation]; + + [self.arView.session addAnchor:localAnchor]; + + return; +} + +static SCNVector3 toSCNVector3(simd_float4 float4) { + SCNVector3 positionAbsolute = SCNVector3Make(float4.x, float4.y, float4.z); + return positionAbsolute; +} + + +static float angleBetweenPoints(const CLLocation *location, const CLLocation *landmark) { + float startLat = GLKMathDegreesToRadians(location.coordinate.latitude); + float startLon = GLKMathDegreesToRadians(location.coordinate.longitude); + float endLat = GLKMathDegreesToRadians(landmark.coordinate.latitude); + float endLon = GLKMathDegreesToRadians(landmark.coordinate.longitude); + + float lonDiff = endLon - startLon; + float y = sin(lonDiff) * cos(endLat); + float x = (cos(startLat) * sin(endLat)) - (sin(startLat) * cos(endLat) * cos(lonDiff)); + float angle = atan2(y, x); + if(angle < 0){ + float finalAngle = angle + (M_PI * 2); + return finalAngle; + } else { + return angle; + } +} + +static matrix_float4x4 translatingIdentity(const float x, const float y, const float z) { + matrix_float4x4 result = matrix_identity_float4x4; + result.columns[3].x = x; + result.columns[3].y = y; + result.columns[3].z = z; + return result; +} + +static float angleOffHorizon(const CLLocation *start, const CLLocation *end) { + CLLocationDistance adjacent = [start distanceFromLocation:end]; + float opposite = end.altitude - start.altitude; + return atan2(opposite, adjacent); +} + +static matrix_float4x4 rotateVertically(const matrix_float4x4 distanceTrans, const float radians) { + GLKMatrix4 rotation = GLKMatrix4MakeXRotation(radians); + return simd_mul(convert(rotation), distanceTrans); +} + +static matrix_float4x4 rotateHorizontally(const matrix_float4x4 titledTrans, const float radians) { + GLKMatrix4 rotation = GLKMatrix4MakeYRotation(radians); + return simd_mul(convert(rotation), titledTrans); +} + +static simd_float4x4 convert(const GLKMatrix4 matrix) { + return simd_matrix( + simd_make_float4(matrix.m00, matrix.m01, matrix.m02, matrix.m03), + simd_make_float4(matrix.m10, matrix.m11, matrix.m12, matrix.m13), + simd_make_float4(matrix.m20, matrix.m21, matrix.m22, matrix.m23), + simd_make_float4(matrix.m30, matrix.m31, matrix.m32, matrix.m33) + ); +} + + static NSDictionary * vectorToJson(const SCNVector3 v) { return @{ @"x": @(v.x), @"y": @(v.y), @"z": @(v.z) }; } @@ -385,7 +495,6 @@ -(ARWorldTrackingConfiguration *)configuration { #pragma mark - snapshot methods - (void)hitTestSceneObjects:(const CGPoint)tapPoint resolve:(RCTARKitResolve)resolve reject:(RCTARKitReject)reject { - resolve([self.nodeManager getSceneObjectsHitResult:tapPoint]); } @@ -399,9 +508,6 @@ - (UIImage *)getSnapshot:(NSDictionary *)selection { } - - - - (UIImage *)getSnapshotCamera:(NSDictionary *)selection { CVPixelBufferRef pixelBuffer = self.arView.session.currentFrame.capturedImage; CIImage *ciImage = [CIImage imageWithCVPixelBuffer:pixelBuffer]; @@ -542,8 +648,14 @@ - (void)handleTapFrom: (UITapGestureRecognizer *)recognizer { // if(self.onTapOnPlaneUsingExtent) { // Take the screen space tap coordinates and pass them to the hitTest method on the ARSCNView instance - NSDictionary * planeHitResult = [self getPlaneHitResult:tapPoint types:ARHitTestResultTypeExistingPlaneUsingExtent]; - self.onTapOnPlaneUsingExtent(planeHitResult); + // NSDictionary * planeHitResult = [self getPlaneHitResult:tapPoint types:ARHitTestResultTypeExistingPlaneUsingExtent]; + // CGPoint point = CGPointMake( [pointDict[@"x"] floatValue], [pointDict[@"y"] floatValue] ); + NSDictionary *tap = @{ + @"x": @(tapPoint.x), + @"y": @(tapPoint.y) + }; + + self.onTapOnPlaneUsingExtent(tap); } if(self.onTapOnPlaneNoExtent) { @@ -570,6 +682,26 @@ - (void)handleRotationFrom: (UIRotationGestureRecognizer *)recognizer { } } + +- (void)handlePinchFrom: (UIPinchGestureRecognizer *)recognizer { + + if( recognizer.state == UIGestureRecognizerStateBegan || + recognizer.state == UIGestureRecognizerStateChanged || + recognizer.state == UIGestureRecognizerStateEnded) { + + if(self.onPinchGesture) { + NSDictionary *pinchGesture = @{ + @"scale": @(recognizer.scale), + @"velocity": @(recognizer.velocity) + }; + + self.onPinchGesture(pinchGesture); + } + } +} + + + #pragma mark - ARSCNViewDelegate - (void)renderer:(id)renderer updateAtTime:(NSTimeInterval)time { @@ -599,7 +731,7 @@ - (NSDictionary *)makeAnchorDetectionResult:(SCNNode *)node anchor:(ARAnchor *)a @"type": @"unkown", @"eulerAngles":vectorToJson(node.eulerAngles), @"position": vectorToJson([self.nodeManager getRelativePositionToOrigin:node.position]), - @"positionAbsolute": vectorToJson(node.position) + @"positionAbsolute": vectorToJson(node.position), }; NSMutableDictionary* dict = [NSMutableDictionary dictionaryWithDictionary:baseProps]; @@ -618,6 +750,16 @@ - (NSDictionary *)makeAnchorDetectionResult:(SCNNode *)node anchor:(ARAnchor *)a } else { // Fallback on earlier versions } + NSLog(@"node.name:-%@", node.name); + NSLog(@"anchor.name:-%@", anchor.name); + + if(anchor.name != nil){ + NSDictionary* nameProps = @{ + @"name": anchor.name + }; + + [dict addEntriesFromDictionary:nameProps]; + } return dict; } diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index faa2c5d9..483b6297 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -189,6 +189,7 @@ - (NSDictionary *)constantsToExport RCT_EXPORT_VIEW_PROPERTY(onTapOnPlaneUsingExtent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onTapOnPlaneNoExtent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onRotationGesture, RCTBubblingEventBlock) +RCT_EXPORT_VIEW_PROPERTY(onPinchGesture, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onEvent, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onARKitError, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(worldMap, NSObject); @@ -449,6 +450,21 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] readCameraPosition]); } +// RCT_EXPORT_METHOD(addAnchorByLocation:(NSString *)anchorName locationLat:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationAltitude landmarkAltitude:(float)landmarkAltitude resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { +// CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(locationLat, locationLong) +// altitude:locationAltitude +// horizontalAccuracy:locationHorizontalAccuracy +// verticalAccuracy:locationVerticalAccuracy +// timestamp:[NSDate date]]; +// CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(landmarkLat, landmarkLong) +// altitude:landmarkAltitude +// horizontalAccuracy:landmarkHorizontalAccuracy +// verticalAccuracy:landmarkVerticalAccuracy +// timestamp:[NSDate date]]; + +// [[ARKit sharedInstance] getArAnchorPosition:location landmark:landmark anchorName:anchorName]; +// } + RCT_EXPORT_METHOD(getCurrentLightEstimation:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { resolve([[ARKit sharedInstance] getCurrentLightEstimation]); } diff --git a/package-lock.json b/package-lock.json index 8ea2eda5..67ec37d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "react-native-arkit", - "version": "0.8.0-beta.2", + "version": "0.9.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -17,9 +17,9 @@ "resolved": "https://registry.npmjs.org/react/-/react-15.4.2.tgz", "integrity": "sha1-QfeZGyYYU5K6m66WyIiefgGDl+8=", "requires": { - "fbjs": "0.8.15", - "loose-envify": "1.3.1", - "object-assign": "4.1.1" + "fbjs": "^0.8.4", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.0" } } } @@ -36,7 +36,7 @@ "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, "requires": { - "acorn": "3.3.0" + "acorn": "^3.0.4" }, "dependencies": { "acorn": { @@ -53,10 +53,10 @@ "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", "dev": true, "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "json-schema-traverse": "^0.3.0", + "json-stable-stringify": "^1.0.1" } }, "ajv-keywords": { @@ -89,7 +89,7 @@ "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", "dev": true, "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "aria-query": { @@ -107,8 +107,8 @@ "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", "dev": true, "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.8.2" + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" } }, "array-union": { @@ -117,7 +117,7 @@ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -158,9 +158,9 @@ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" } }, "babel-eslint": { @@ -169,10 +169,10 @@ "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0" + "babel-code-frame": "^6.22.0", + "babel-traverse": "^6.23.1", + "babel-types": "^6.23.0", + "babylon": "^6.17.0" } }, "babel-helper-builder-react-jsx": { @@ -181,9 +181,9 @@ "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "esutils": "2.0.2" + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "esutils": "^2.0.2" } }, "babel-helper-call-delegate": { @@ -192,10 +192,10 @@ "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", "dev": true, "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-define-map": { @@ -204,10 +204,10 @@ "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.4" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, "babel-helper-function-name": { @@ -216,11 +216,11 @@ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "dev": true, "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-get-function-arity": { @@ -229,8 +229,8 @@ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-hoist-variables": { @@ -239,8 +239,8 @@ "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-optimise-call-expression": { @@ -249,8 +249,8 @@ "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-replace-supers": { @@ -259,12 +259,12 @@ "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", "dev": true, "requires": { - "babel-helper-optimise-call-expression": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-messages": { @@ -273,7 +273,7 @@ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-check-es2015-constants": { @@ -282,7 +282,7 @@ "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-react-transform": { @@ -291,7 +291,7 @@ "integrity": "sha1-UVu/qZaJOYEULZCx+bFjXeKZUQk=", "dev": true, "requires": { - "lodash": "4.17.4" + "lodash": "^4.6.1" } }, "babel-plugin-syntax-async-functions": { @@ -336,10 +336,10 @@ "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-plugin-syntax-class-properties": "6.13.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-arrow-functions": { @@ -348,7 +348,7 @@ "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-block-scoping": { @@ -357,11 +357,11 @@ "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.4" + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, "babel-plugin-transform-es2015-classes": { @@ -370,15 +370,15 @@ "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", "dev": true, "requires": { - "babel-helper-define-map": "6.26.0", - "babel-helper-function-name": "6.24.1", - "babel-helper-optimise-call-expression": "6.24.1", - "babel-helper-replace-supers": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-computed-properties": { @@ -387,8 +387,8 @@ "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-destructuring": { @@ -397,7 +397,7 @@ "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-for-of": { @@ -406,7 +406,7 @@ "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-function-name": { @@ -415,9 +415,9 @@ "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-literals": { @@ -426,7 +426,7 @@ "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-modules-commonjs": { @@ -435,10 +435,10 @@ "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", "dev": true, "requires": { - "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" } }, "babel-plugin-transform-es2015-parameters": { @@ -447,12 +447,12 @@ "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", "dev": true, "requires": { - "babel-helper-call-delegate": "6.24.1", - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-shorthand-properties": { @@ -461,8 +461,8 @@ "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-spread": { @@ -471,7 +471,7 @@ "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-template-literals": { @@ -480,7 +480,7 @@ "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-flow-strip-types": { @@ -489,8 +489,8 @@ "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", "dev": true, "requires": { - "babel-plugin-syntax-flow": "6.18.0", - "babel-runtime": "6.26.0" + "babel-plugin-syntax-flow": "^6.18.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-object-assign": { @@ -499,7 +499,7 @@ "integrity": "sha1-+Z0vZvGgsNSY40bFNZaEdAyqILo=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-object-rest-spread": { @@ -508,8 +508,8 @@ "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", "dev": true, "requires": { - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "babel-runtime": "6.26.0" + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" } }, "babel-plugin-transform-react-display-name": { @@ -518,7 +518,7 @@ "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-react-jsx": { @@ -527,9 +527,9 @@ "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", "dev": true, "requires": { - "babel-helper-builder-react-jsx": "6.26.0", - "babel-plugin-syntax-jsx": "6.18.0", - "babel-runtime": "6.26.0" + "babel-helper-builder-react-jsx": "^6.24.1", + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-react-jsx-source": { @@ -538,8 +538,8 @@ "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", "dev": true, "requires": { - "babel-plugin-syntax-jsx": "6.18.0", - "babel-runtime": "6.26.0" + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-regenerator": { @@ -548,7 +548,7 @@ "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", "dev": true, "requires": { - "regenerator-transform": "0.10.1" + "regenerator-transform": "^0.10.0" } }, "babel-plugin-transform-strict-mode": { @@ -557,8 +557,8 @@ "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-preset-react-native": { @@ -567,35 +567,35 @@ "integrity": "sha1-kBPr2C2hyIECv1iIEP9Z4gnKK4o=", "dev": true, "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-check-es2015-constants": "^6.5.0", "babel-plugin-react-transform": "2.0.2", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-plugin-syntax-class-properties": "6.13.0", - "babel-plugin-syntax-flow": "6.18.0", - "babel-plugin-syntax-jsx": "6.18.0", - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-class-properties": "6.24.1", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.26.0", - "babel-plugin-transform-es2015-classes": "6.24.1", - "babel-plugin-transform-es2015-computed-properties": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-flow-strip-types": "6.22.0", - "babel-plugin-transform-object-assign": "6.22.0", - "babel-plugin-transform-object-rest-spread": "6.26.0", - "babel-plugin-transform-react-display-name": "6.25.0", - "babel-plugin-transform-react-jsx": "6.24.1", - "babel-plugin-transform-react-jsx-source": "6.22.0", - "babel-plugin-transform-regenerator": "6.26.0", - "react-transform-hmr": "1.0.4" + "babel-plugin-syntax-async-functions": "^6.5.0", + "babel-plugin-syntax-class-properties": "^6.5.0", + "babel-plugin-syntax-flow": "^6.5.0", + "babel-plugin-syntax-jsx": "^6.5.0", + "babel-plugin-syntax-trailing-function-commas": "^6.5.0", + "babel-plugin-transform-class-properties": "^6.5.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.5.0", + "babel-plugin-transform-es2015-block-scoping": "^6.5.0", + "babel-plugin-transform-es2015-classes": "^6.5.0", + "babel-plugin-transform-es2015-computed-properties": "^6.5.0", + "babel-plugin-transform-es2015-destructuring": "^6.5.0", + "babel-plugin-transform-es2015-for-of": "^6.5.0", + "babel-plugin-transform-es2015-function-name": "^6.5.0", + "babel-plugin-transform-es2015-literals": "^6.5.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.5.0", + "babel-plugin-transform-es2015-parameters": "^6.5.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.5.0", + "babel-plugin-transform-es2015-spread": "^6.5.0", + "babel-plugin-transform-es2015-template-literals": "^6.5.0", + "babel-plugin-transform-flow-strip-types": "^6.5.0", + "babel-plugin-transform-object-assign": "^6.5.0", + "babel-plugin-transform-object-rest-spread": "^6.5.0", + "babel-plugin-transform-react-display-name": "^6.5.0", + "babel-plugin-transform-react-jsx": "^6.5.0", + "babel-plugin-transform-react-jsx-source": "^6.5.0", + "babel-plugin-transform-regenerator": "^6.5.0", + "react-transform-hmr": "^1.0.4" } }, "babel-runtime": { @@ -604,8 +604,8 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.11.0" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" }, "dependencies": { "core-js": { @@ -622,11 +622,11 @@ "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.4" + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" } }, "babel-traverse": { @@ -635,15 +635,15 @@ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" } }, "babel-types": { @@ -652,10 +652,10 @@ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" } }, "babylon": { @@ -676,7 +676,7 @@ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -692,7 +692,7 @@ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", "dev": true, "requires": { - "callsites": "0.2.0" + "callsites": "^0.2.0" } }, "callsites": { @@ -707,11 +707,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "circular-json": { @@ -726,7 +726,7 @@ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "restore-cursor": "2.0.0" + "restore-cursor": "^2.0.0" } }, "cli-width": { @@ -747,7 +747,7 @@ "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" } }, "color-name": { @@ -768,9 +768,9 @@ "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "typedarray": "0.0.6" + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, "contains-path": { @@ -790,26 +790,15 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "create-react-class": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.0.tgz", - "integrity": "sha1-q0SEl8JlZuHilBPogyB9V8/nvtQ=", - "dev": true, - "requires": { - "fbjs": "0.8.15", - "loose-envify": "1.3.1", - "object-assign": "4.1.1" - } - }, "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=", "dev": true, "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "damerau-levenshtein": { @@ -839,8 +828,8 @@ "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", "dev": true, "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" + "foreach": "^2.0.5", + "object-keys": "^1.0.8" } }, "del": { @@ -849,13 +838,13 @@ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "dev": true, "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.2" + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" } }, "doctrine": { @@ -864,8 +853,8 @@ "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", "dev": true, "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" + "esutils": "^2.0.2", + "isarray": "^1.0.0" } }, "dom-walk": { @@ -885,7 +874,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.19" + "iconv-lite": "~0.4.13" } }, "error-ex": { @@ -894,7 +883,7 @@ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "es-abstract": { @@ -903,11 +892,11 @@ "integrity": "sha512-dvhwFL3yjQxNNsOWx6exMlaDrRHCRGMQlnx5lsXDCZ/J7G/frgIIl94zhZSp/galVAYp7VzPi1OrAHta89/yGQ==", "dev": true, "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.1", - "has": "1.0.1", - "is-callable": "1.1.3", - "is-regex": "1.0.4" + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" } }, "es-to-primitive": { @@ -916,9 +905,9 @@ "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", "dev": true, "requires": { - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-symbol": "1.0.1" + "is-callable": "^1.1.1", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.1" } }, "escape-string-regexp": { @@ -933,43 +922,43 @@ "integrity": "sha1-/29fUZOEiifum2J74+c/ucteZi4=", "dev": true, "requires": { - "ajv": "5.2.2", - "babel-code-frame": "6.26.0", - "chalk": "2.1.0", - "concat-stream": "1.6.0", - "cross-spawn": "5.1.0", - "debug": "3.0.1", - "doctrine": "2.0.0", - "eslint-scope": "3.7.1", - "espree": "3.5.1", - "esquery": "1.0.0", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "functional-red-black-tree": "1.0.1", - "glob": "7.1.2", - "globals": "9.18.0", - "ignore": "3.3.5", - "imurmurhash": "0.1.4", - "inquirer": "3.3.0", - "is-resolvable": "1.0.0", - "js-yaml": "3.10.0", - "json-stable-stringify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "7.0.0", - "progress": "2.0.0", - "require-uncached": "1.0.3", - "semver": "5.4.1", - "strip-ansi": "4.0.0", - "strip-json-comments": "2.0.1", - "table": "4.0.1", - "text-table": "0.2.0" + "ajv": "^5.2.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.0.1", + "doctrine": "^2.0.0", + "eslint-scope": "^3.7.1", + "espree": "^3.5.1", + "esquery": "^1.0.0", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^9.17.0", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^3.0.6", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "~2.0.1", + "table": "^4.0.1", + "text-table": "~0.2.0" }, "dependencies": { "ansi-regex": { @@ -984,7 +973,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "^1.9.0" } }, "chalk": { @@ -993,9 +982,9 @@ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", "dev": true, "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" + "ansi-styles": "^3.1.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^4.0.0" } }, "debug": { @@ -1013,7 +1002,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } }, "supports-color": { @@ -1022,7 +1011,7 @@ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } } } @@ -1033,7 +1022,7 @@ "integrity": "sha512-m0q9fiMBzDAIbirlGnpJNWToIhdhJmXXnMG+IFflYzzod9231ZhtmGKegKg8E9T8F1YuVaDSU1FnCm5b9iXVhQ==", "dev": true, "requires": { - "eslint-config-airbnb-base": "11.3.2" + "eslint-config-airbnb-base": "^11.3.0" } }, "eslint-config-airbnb-base": { @@ -1042,7 +1031,7 @@ "integrity": "sha512-/fhjt/VqzBA2SRsx7ErDtv6Ayf+XLw9LIOqmpBuHFCVwyJo2EtzGWMB9fYRFBoWWQLxmNmCpenNiH0RxyeS41w==", "dev": true, "requires": { - "eslint-restricted-globals": "0.1.1" + "eslint-restricted-globals": "^0.1.1" } }, "eslint-config-prettier": { @@ -1051,7 +1040,7 @@ "integrity": "sha1-8h2w67Q4rWePuYlGCXxLsZi+/Mw=", "dev": true, "requires": { - "get-stdin": "5.0.1" + "get-stdin": "^5.0.1" } }, "eslint-import-resolver-node": { @@ -1060,8 +1049,8 @@ "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==", "dev": true, "requires": { - "debug": "2.6.9", - "resolve": "1.4.0" + "debug": "^2.6.8", + "resolve": "^1.2.0" } }, "eslint-module-utils": { @@ -1070,8 +1059,8 @@ "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", "dev": true, "requires": { - "debug": "2.6.9", - "pkg-dir": "1.0.0" + "debug": "^2.6.8", + "pkg-dir": "^1.0.0" } }, "eslint-plugin-flowtype": { @@ -1080,7 +1069,7 @@ "integrity": "sha512-YTCeVsMOi3ga8PJjdAV97FaTNXNknzrO+4ZDMHJN65i4uMjL5KgfgQZpyVsBirWOfgXMKRduxpsyM64K/0LbXw==", "dev": true, "requires": { - "lodash": "4.17.4" + "lodash": "^4.15.0" } }, "eslint-plugin-import": { @@ -1089,16 +1078,16 @@ "integrity": "sha512-HGYmpU9f/zJaQiKNQOVfHUh2oLWW3STBrCgH0sHTX1xtsxYlH1zjLh8FlQGEIdZSdTbUMaV36WaZ6ImXkenGxQ==", "dev": true, "requires": { - "builtin-modules": "1.1.1", - "contains-path": "0.1.0", - "debug": "2.6.9", + "builtin-modules": "^1.1.1", + "contains-path": "^0.1.0", + "debug": "^2.6.8", "doctrine": "1.5.0", - "eslint-import-resolver-node": "0.3.1", - "eslint-module-utils": "2.1.1", - "has": "1.0.1", - "lodash.cond": "4.5.2", - "minimatch": "3.0.4", - "read-pkg-up": "2.0.0" + "eslint-import-resolver-node": "^0.3.1", + "eslint-module-utils": "^2.1.1", + "has": "^1.0.1", + "lodash.cond": "^4.3.0", + "minimatch": "^3.0.3", + "read-pkg-up": "^2.0.0" }, "dependencies": { "doctrine": { @@ -1107,8 +1096,8 @@ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "dev": true, "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" + "esutils": "^2.0.2", + "isarray": "^1.0.0" } } } @@ -1119,13 +1108,13 @@ "integrity": "sha512-5I9SpoP7gT4wBFOtXT8/tXNPYohHBVfyVfO17vkbC7r9kEIxYJF12D3pKqhk8+xnk12rfxKClS3WCFpVckFTPQ==", "dev": true, "requires": { - "aria-query": "0.7.0", - "array-includes": "3.0.3", + "aria-query": "^0.7.0", + "array-includes": "^3.0.3", "ast-types-flow": "0.0.7", - "axobject-query": "0.1.0", - "damerau-levenshtein": "1.0.4", - "emoji-regex": "6.5.1", - "jsx-ast-utils": "1.4.1" + "axobject-query": "^0.1.0", + "damerau-levenshtein": "^1.0.0", + "emoji-regex": "^6.1.0", + "jsx-ast-utils": "^1.4.0" } }, "eslint-plugin-prettier": { @@ -1134,8 +1123,8 @@ "integrity": "sha512-AV8shBlGN9tRZffj5v/f4uiQWlP3qiQ+lh+BhTqRLuKSyczx+HRWVkVZaf7dOmguxghAH1wftnou/JUEEChhGg==", "dev": true, "requires": { - "fast-diff": "1.1.2", - "jest-docblock": "21.1.0" + "fast-diff": "^1.1.1", + "jest-docblock": "^21.0.0" } }, "eslint-plugin-react": { @@ -1144,10 +1133,10 @@ "integrity": "sha512-7L6QEOxm7XhcDoe+U9Qt7GJjU6KeQOX9jCLGE8EPGF6FQbwZ9LgcBzsjXIZv9oYvNQlvQZmLjJs76xEeWsI4QA==", "dev": true, "requires": { - "doctrine": "2.0.0", - "has": "1.0.1", - "jsx-ast-utils": "2.0.1", - "prop-types": "15.5.10" + "doctrine": "^2.0.0", + "has": "^1.0.1", + "jsx-ast-utils": "^2.0.0", + "prop-types": "^15.5.10" }, "dependencies": { "jsx-ast-utils": { @@ -1156,7 +1145,17 @@ "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", "dev": true, "requires": { - "array-includes": "3.0.3" + "array-includes": "^3.0.3" + } + }, + "prop-types": { + "version": "15.5.10", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", + "integrity": "sha1-J5ffwxJhguOpXj37suiT3ddFYVQ=", + "dev": true, + "requires": { + "fbjs": "^0.8.9", + "loose-envify": "^1.3.1" } } } @@ -1173,8 +1172,8 @@ "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "dev": true, "requires": { - "esrecurse": "4.2.0", - "estraverse": "4.2.0" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, "espree": { @@ -1183,8 +1182,8 @@ "integrity": "sha1-DJiLirRttTEAoZVK5LqZXd0n2H4=", "dev": true, "requires": { - "acorn": "5.1.2", - "acorn-jsx": "3.0.1" + "acorn": "^5.1.1", + "acorn-jsx": "^3.0.0" } }, "esprima": { @@ -1199,7 +1198,7 @@ "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.0.0" } }, "esrecurse": { @@ -1208,8 +1207,8 @@ "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", "dev": true, "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" + "estraverse": "^4.1.0", + "object-assign": "^4.0.1" } }, "estraverse": { @@ -1230,9 +1229,9 @@ "integrity": "sha512-Msjo64WT5W+NhOpQXh0nOHm+n0RfU1QUwDnKYvJ8dEJ8zlwLrqXNTv5mSUTJpepf41PDJGyhueTw2vNZW+Fr/w==", "dev": true, "requires": { - "iconv-lite": "0.4.19", - "jschardet": "1.5.1", - "tmp": "0.0.33" + "iconv-lite": "^0.4.17", + "jschardet": "^1.4.2", + "tmp": "^0.0.33" } }, "fast-deep-equal": { @@ -1257,13 +1256,13 @@ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.15.tgz", "integrity": "sha1-TwaV/fzBbDfAsH+s7Iy0xAkWhbk=", "requires": { - "core-js": "1.2.7", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.14" + "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.9" } }, "figures": { @@ -1272,7 +1271,7 @@ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.5" } }, "file-entry-cache": { @@ -1281,8 +1280,8 @@ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", "dev": true, "requires": { - "flat-cache": "1.2.2", - "object-assign": "4.1.1" + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" } }, "find-up": { @@ -1291,8 +1290,8 @@ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "flat-cache": { @@ -1301,10 +1300,10 @@ "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", "dev": true, "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" + "circular-json": "^0.3.1", + "del": "^2.0.2", + "graceful-fs": "^4.1.2", + "write": "^0.2.1" } }, "foreach": { @@ -1343,12 +1342,12 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "global": { @@ -1357,8 +1356,8 @@ "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", "dev": true, "requires": { - "min-document": "2.19.0", - "process": "0.5.2" + "min-document": "^2.19.0", + "process": "~0.5.1" } }, "globals": { @@ -1373,12 +1372,12 @@ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", "dev": true, "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "graceful-fs": { @@ -1393,7 +1392,7 @@ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", "dev": true, "requires": { - "function-bind": "1.1.1" + "function-bind": "^1.0.2" } }, "has-ansi": { @@ -1402,7 +1401,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -1440,8 +1439,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -1456,20 +1455,20 @@ "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "dev": true, "requires": { - "ansi-escapes": "3.0.0", - "chalk": "2.1.0", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.0.5", - "figures": "2.0.0", - "lodash": "4.17.4", + "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.3.0", - "rx-lite": "4.0.8", - "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" + "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": { @@ -1484,7 +1483,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "^1.9.0" } }, "chalk": { @@ -1493,9 +1492,9 @@ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", "dev": true, "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" + "ansi-styles": "^3.1.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^4.0.0" } }, "strip-ansi": { @@ -1504,7 +1503,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } }, "supports-color": { @@ -1513,7 +1512,7 @@ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } } } @@ -1524,7 +1523,7 @@ "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", "dev": true, "requires": { - "loose-envify": "1.3.1" + "loose-envify": "^1.0.0" } }, "is-arrayish": { @@ -1539,7 +1538,7 @@ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-callable": { @@ -1572,7 +1571,7 @@ "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", "dev": true, "requires": { - "is-path-inside": "1.0.0" + "is-path-inside": "^1.0.0" } }, "is-path-inside": { @@ -1581,7 +1580,7 @@ "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", "dev": true, "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "is-promise": { @@ -1596,7 +1595,7 @@ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "dev": true, "requires": { - "has": "1.0.1" + "has": "^1.0.1" } }, "is-resolvable": { @@ -1605,7 +1604,7 @@ "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", "dev": true, "requires": { - "tryit": "1.0.3" + "tryit": "^1.0.1" } }, "is-stream": { @@ -1636,8 +1635,8 @@ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { - "node-fetch": "1.7.3", - "whatwg-fetch": "2.0.3" + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" } }, "jest-docblock": { @@ -1657,8 +1656,8 @@ "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", "dev": true, "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jschardet": { @@ -1679,7 +1678,7 @@ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "jsonify": { @@ -1700,8 +1699,8 @@ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, "load-json-file": { @@ -1710,10 +1709,10 @@ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" } }, "locate-path": { @@ -1722,8 +1721,8 @@ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" }, "dependencies": { "path-exists": { @@ -1750,7 +1749,7 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "requires": { - "js-tokens": "3.0.2" + "js-tokens": "^3.0.0" } }, "lru-cache": { @@ -1759,8 +1758,8 @@ "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "mimic-fn": { @@ -1775,7 +1774,7 @@ "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", "dev": true, "requires": { - "dom-walk": "0.1.1" + "dom-walk": "^0.1.0" } }, "minimatch": { @@ -1784,7 +1783,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -1825,8 +1824,8 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" + "encoding": "^0.1.11", + "is-stream": "^1.0.1" } }, "normalize-package-data": { @@ -1835,10 +1834,10 @@ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "object-assign": { @@ -1858,7 +1857,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { @@ -1867,7 +1866,7 @@ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "^1.0.0" } }, "optionator": { @@ -1876,12 +1875,12 @@ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "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", - "wordwrap": "1.0.0" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" } }, "os-tmpdir": { @@ -1902,7 +1901,7 @@ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "1.1.0" + "p-limit": "^1.1.0" } }, "parse-json": { @@ -1911,7 +1910,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "path-exists": { @@ -1920,7 +1919,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "path-is-absolute": { @@ -1947,7 +1946,7 @@ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, "requires": { - "pify": "2.3.0" + "pify": "^2.0.0" } }, "pify": { @@ -1968,7 +1967,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "pkg-dir": { @@ -1977,7 +1976,7 @@ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { - "find-up": "1.1.2" + "find-up": "^1.0.0" } }, "pluralize": { @@ -2027,16 +2026,27 @@ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "requires": { - "asap": "2.0.6" + "asap": "~2.0.3" } }, "prop-types": { - "version": "15.5.10", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", - "integrity": "sha1-J5ffwxJhguOpXj37suiT3ddFYVQ=", + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", "requires": { - "fbjs": "0.8.15", - "loose-envify": "1.3.1" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + }, + "dependencies": { + "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" + } + } } }, "pseudomap": { @@ -2046,16 +2056,38 @@ "dev": true }, "react": { - "version": "16.0.0-alpha.12", - "resolved": "https://registry.npmjs.org/react/-/react-16.0.0-alpha.12.tgz", - "integrity": "sha1-jFlIUoFIXfMZtvd2gtjdBiHAgZQ=", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.2.0.tgz", + "integrity": "sha512-ZmIomM7EE1DvPEnSFAHZn9Vs9zJl5A9H7el0EGTE6ZbW9FKe/14IYAlPbC8iH25YarEQxZL+E8VW7Mi7kfQrDQ==", "dev": true, "requires": { - "create-react-class": "15.6.0", - "fbjs": "0.8.15", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "prop-types": "15.5.10" + "fbjs": "^0.8.16", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.0" + }, + "dependencies": { + "fbjs": { + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", + "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", + "dev": true, + "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" + } + }, + "ua-parser-js": { + "version": "0.7.21", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz", + "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==", + "dev": true + } } }, "react-deep-force-update": { @@ -2064,14 +2096,19 @@ "integrity": "sha1-vNMUeAJ7ZLMznxCJIatSC0MT3Cw=", "dev": true }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "react-proxy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-1.1.8.tgz", "integrity": "sha1-nb/Z2SdSjDqp9ETkVYw3gwq4wmo=", "dev": true, "requires": { - "lodash": "4.17.4", - "react-deep-force-update": "1.1.1" + "lodash": "^4.6.1", + "react-deep-force-update": "^1.0.0" } }, "react-transform-hmr": { @@ -2080,8 +2117,8 @@ "integrity": "sha1-4aQL0Krvxy6N/Xp82gmvhQZjl7s=", "dev": true, "requires": { - "global": "4.3.2", - "react-proxy": "1.1.8" + "global": "^4.3.0", + "react-proxy": "^1.1.7" } }, "read-pkg": { @@ -2090,9 +2127,9 @@ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "dev": true, "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" } }, "read-pkg-up": { @@ -2101,8 +2138,8 @@ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" }, "dependencies": { "find-up": { @@ -2111,7 +2148,7 @@ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } } } @@ -2122,13 +2159,13 @@ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "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" } }, "regenerator-runtime": { @@ -2143,9 +2180,9 @@ "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "private": "0.1.7" + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" } }, "require-uncached": { @@ -2154,8 +2191,8 @@ "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", "dev": true, "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" } }, "resolve": { @@ -2164,7 +2201,7 @@ "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", "dev": true, "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } }, "resolve-from": { @@ -2179,8 +2216,8 @@ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, "rimraf": { @@ -2189,7 +2226,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "run-async": { @@ -2198,7 +2235,7 @@ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "dev": true, "requires": { - "is-promise": "2.1.0" + "is-promise": "^2.1.0" } }, "rx-lite": { @@ -2213,7 +2250,7 @@ "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", "dev": true, "requires": { - "rx-lite": "4.0.8" + "rx-lite": "*" } }, "safe-buffer": { @@ -2239,7 +2276,7 @@ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -2266,7 +2303,7 @@ "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", "dev": true, "requires": { - "spdx-license-ids": "1.2.2" + "spdx-license-ids": "^1.0.2" } }, "spdx-expression-parse": { @@ -2293,8 +2330,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "dependencies": { "ansi-regex": { @@ -2309,7 +2346,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -2320,7 +2357,7 @@ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "strip-ansi": { @@ -2329,7 +2366,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -2356,12 +2393,12 @@ "integrity": "sha1-qBFsEz+sLGH0pCCrbN9cTWHw5DU=", "dev": true, "requires": { - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "chalk": "1.1.3", - "lodash": "4.17.4", + "ajv": "^4.7.0", + "ajv-keywords": "^1.0.0", + "chalk": "^1.1.1", + "lodash": "^4.0.0", "slice-ansi": "0.0.4", - "string-width": "2.1.1" + "string-width": "^2.0.0" }, "dependencies": { "ajv": { @@ -2370,8 +2407,8 @@ "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } } } @@ -2394,7 +2431,7 @@ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.2" } }, "to-fast-properties": { @@ -2415,7 +2452,7 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "1.1.2" + "prelude-ls": "~1.1.2" } }, "typedarray": { @@ -2441,8 +2478,8 @@ "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", "dev": true, "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" } }, "whatwg-fetch": { @@ -2456,7 +2493,7 @@ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "wordwrap": { @@ -2477,7 +2514,7 @@ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", "dev": true, "requires": { - "mkdirp": "0.5.1" + "mkdirp": "^0.5.1" } }, "yallist": { diff --git a/package.json b/package.json index 111b5b8b..f872eb31 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,13 @@ "author": "Zehao Li ", "license": "MIT", "homepage": "https://github.com/HippoAR/react-native-arkit", - "keywords": ["react-native", "react", "native", "ARKit", "AR"], + "keywords": [ + "react-native", + "react", + "native", + "ARKit", + "AR" + ], "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" From 5224f5098717bcc132f0557f202bc87d962ee7d6 Mon Sep 17 00:00:00 2001 From: yoursobojack Date: Sun, 13 Dec 2020 11:07:43 -0500 Subject: [PATCH 348/356] expose location functions --- ios/RCTARKit.h | 2 +- ios/RCTARKitManager.m | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/ios/RCTARKit.h b/ios/RCTARKit.h index 921e241a..5ac6b21b 100644 --- a/ios/RCTARKit.h +++ b/ios/RCTARKit.h @@ -97,7 +97,7 @@ typedef void (^RCTARKitReject)(NSString *code, NSString *message, NSError *error - (void)focusScene; - (void)clearScene; - (NSDictionary *)readCameraPosition; -// - (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landmark anchorName:(NSString *)anchorName; +- (void)getArAnchorPosition:(CLLocation *)location landmark:(CLLocation *)landmark anchorName:(NSString *)anchorName; - (NSDictionary *)readCamera; - (NSDictionary* )getCurrentLightEstimation; diff --git a/ios/RCTARKitManager.m b/ios/RCTARKitManager.m index 483b6297..09967ff7 100644 --- a/ios/RCTARKitManager.m +++ b/ios/RCTARKitManager.m @@ -450,20 +450,20 @@ - (void)storeImage:(UIImage *)image options:(NSDictionary *)options reject:(RCTP resolve([[ARKit sharedInstance] readCameraPosition]); } -// RCT_EXPORT_METHOD(addAnchorByLocation:(NSString *)anchorName locationLat:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationAltitude landmarkAltitude:(float)landmarkAltitude resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { -// CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(locationLat, locationLong) -// altitude:locationAltitude -// horizontalAccuracy:locationHorizontalAccuracy -// verticalAccuracy:locationVerticalAccuracy -// timestamp:[NSDate date]]; -// CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(landmarkLat, landmarkLong) -// altitude:landmarkAltitude -// horizontalAccuracy:landmarkHorizontalAccuracy -// verticalAccuracy:landmarkVerticalAccuracy -// timestamp:[NSDate date]]; +RCT_EXPORT_METHOD(addAnchorByLocation:(NSString *)anchorName locationLat:(float)locationLat locationLong:(float)locationLong landmarkLat:(float)landmarkLat landmarkLong:(float)landmarkLong locationHorizontalAccuracy:(float)locationHorizontalAccuracy landmarkHorizontalAccuracy:(float)landmarkHorizontalAccuracy locationVerticalAccuracy:(float)locationVerticalAccuracy landmarkVerticalAccuracy:(float)landmarkVerticalAccuracy locationAltitude:(float)locationAltitude landmarkAltitude:(float)landmarkAltitude resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { + CLLocation *location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(locationLat, locationLong) + altitude:locationAltitude + horizontalAccuracy:locationHorizontalAccuracy + verticalAccuracy:locationVerticalAccuracy + timestamp:[NSDate date]]; + CLLocation *landmark = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(landmarkLat, landmarkLong) + altitude:landmarkAltitude + horizontalAccuracy:landmarkHorizontalAccuracy + verticalAccuracy:landmarkVerticalAccuracy + timestamp:[NSDate date]]; -// [[ARKit sharedInstance] getArAnchorPosition:location landmark:landmark anchorName:anchorName]; -// } + [[ARKit sharedInstance] getArAnchorPosition:location landmark:landmark anchorName:anchorName]; +} RCT_EXPORT_METHOD(getCurrentLightEstimation:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { resolve([[ARKit sharedInstance] getCurrentLightEstimation]); From d31d0837010e0105fa6c16ca2962bbede799745c Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 13 Dec 2020 13:31:34 -0500 Subject: [PATCH 349/356] remove android from test project. remove pocketsvg from gitmodules and add pocketsvg as a podspec dependency --- .gitignore | 18 +- .gitmodules | 4 +- ios/.DS_Store | Bin 6148 -> 6148 bytes ios/PocketSVG | 1 - ios/RCTARKit.podspec | 1 + testproject/.buckconfig | 6 + testproject/.eslintrc.js | 4 + testproject/.flowconfig | 73 + testproject/.gitattributes | 1 + testproject/.gitignore | 59 + testproject/.prettierrc.js | 6 + testproject/.watchmanconfig | 1 + testproject/App.js | 114 + testproject/__tests__/App-test.js | 14 + testproject/app.json | 4 + testproject/babel.config.js | 3 + testproject/index.js | 9 + testproject/ios/Podfile | 33 + testproject/ios/Podfile.lock | 479 + testproject/ios/testproject-tvOS/Info.plist | 53 + .../ios/testproject-tvOSTests/Info.plist | 24 + .../ios/testproject.xcodeproj/project.pbxproj | 985 ++ .../xcschemes/testproject-tvOS.xcscheme | 88 + .../xcschemes/testproject.xcscheme | 88 + .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + testproject/ios/testproject/AppDelegate.h | 8 + testproject/ios/testproject/AppDelegate.m | 58 + .../AppIcon.appiconset/Contents.json | 38 + .../testproject/Images.xcassets/Contents.json | 6 + testproject/ios/testproject/Info.plist | 57 + .../ios/testproject/LaunchScreen.storyboard | 58 + testproject/ios/testproject/main.m | 9 + testproject/ios/testprojectTests/Info.plist | 24 + .../ios/testprojectTests/testprojectTests.m | 65 + testproject/metro.config.js | 17 + testproject/package-lock.json | 12617 ++++++++++++++++ testproject/package.json | 33 + 38 files changed, 15069 insertions(+), 7 deletions(-) delete mode 160000 ios/PocketSVG create mode 100644 testproject/.buckconfig create mode 100644 testproject/.eslintrc.js create mode 100644 testproject/.flowconfig create mode 100644 testproject/.gitattributes create mode 100644 testproject/.gitignore create mode 100644 testproject/.prettierrc.js create mode 100644 testproject/.watchmanconfig create mode 100644 testproject/App.js create mode 100644 testproject/__tests__/App-test.js create mode 100644 testproject/app.json create mode 100644 testproject/babel.config.js create mode 100644 testproject/index.js create mode 100644 testproject/ios/Podfile create mode 100644 testproject/ios/Podfile.lock create mode 100644 testproject/ios/testproject-tvOS/Info.plist create mode 100644 testproject/ios/testproject-tvOSTests/Info.plist create mode 100644 testproject/ios/testproject.xcodeproj/project.pbxproj create mode 100644 testproject/ios/testproject.xcodeproj/xcshareddata/xcschemes/testproject-tvOS.xcscheme create mode 100644 testproject/ios/testproject.xcodeproj/xcshareddata/xcschemes/testproject.xcscheme create mode 100644 testproject/ios/testproject.xcworkspace/contents.xcworkspacedata create mode 100644 testproject/ios/testproject.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 testproject/ios/testproject/AppDelegate.h create mode 100644 testproject/ios/testproject/AppDelegate.m create mode 100644 testproject/ios/testproject/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 testproject/ios/testproject/Images.xcassets/Contents.json create mode 100644 testproject/ios/testproject/Info.plist create mode 100644 testproject/ios/testproject/LaunchScreen.storyboard create mode 100644 testproject/ios/testproject/main.m create mode 100644 testproject/ios/testprojectTests/Info.plist create mode 100644 testproject/ios/testprojectTests/testprojectTests.m create mode 100644 testproject/metro.config.js create mode 100644 testproject/package-lock.json create mode 100644 testproject/package.json diff --git a/.gitignore b/.gitignore index f27644a1..7fd793d6 100644 --- a/.gitignore +++ b/.gitignore @@ -34,7 +34,7 @@ bower_components build/Release # Dependency directories -node_modules/ +node_modules jspm_packages/ # Typescript v1 declaration files @@ -71,9 +71,9 @@ xcuserdata/ *.xccheckout ## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +# Xcode +# build/ -DerivedData/ -*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -82,3 +82,15 @@ DerivedData/ !default.mode2v3 *.perspectivev3 !default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate + +/testproject/ios/Pods/ +*.jsbundle +.DS_Store + diff --git a/.gitmodules b/.gitmodules index e5af7848..8b137891 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1 @@ -[submodule "ios/PocketSVG"] - path = ios/PocketSVG - url = https://github.com/pocketsvg/PocketSVG + diff --git a/ios/.DS_Store b/ios/.DS_Store index 36fe0902f9820aad63b9d93c9c33c0c8bb0ad8e3..ac04fda2e01ec99782186edc7ddd6a0aa37ff7b8 100644 GIT binary patch delta 71 zcmZoMXffE3$i(EZVe)(?t;xMiTHq)$ diff --git a/ios/PocketSVG b/ios/PocketSVG deleted file mode 160000 index 5405d0f5..00000000 --- a/ios/PocketSVG +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5405d0f5838c1242e79b490c6ddf738779e4d5c0 diff --git a/ios/RCTARKit.podspec b/ios/RCTARKit.podspec index db4ae68b..dd6f932b 100644 --- a/ios/RCTARKit.podspec +++ b/ios/RCTARKit.podspec @@ -14,5 +14,6 @@ Pod::Spec.new do |s| s.source_files = '**/*.{h,m}' s.preserve_paths = "**/*.js" s.dependency 'React' + s.dependency 'PocketSVG', '~> 2.6' end \ No newline at end of file diff --git a/testproject/.buckconfig b/testproject/.buckconfig new file mode 100644 index 00000000..934256cb --- /dev/null +++ b/testproject/.buckconfig @@ -0,0 +1,6 @@ + +[android] + target = Google Inc.:Google APIs:23 + +[maven_repositories] + central = https://repo1.maven.org/maven2 diff --git a/testproject/.eslintrc.js b/testproject/.eslintrc.js new file mode 100644 index 00000000..40c6dcd0 --- /dev/null +++ b/testproject/.eslintrc.js @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: '@react-native-community', +}; diff --git a/testproject/.flowconfig b/testproject/.flowconfig new file mode 100644 index 00000000..b274ad1d --- /dev/null +++ b/testproject/.flowconfig @@ -0,0 +1,73 @@ +[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/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/\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 +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.122.0 diff --git a/testproject/.gitattributes b/testproject/.gitattributes new file mode 100644 index 00000000..d42ff183 --- /dev/null +++ b/testproject/.gitattributes @@ -0,0 +1 @@ +*.pbxproj -text diff --git a/testproject/.gitignore b/testproject/.gitignore new file mode 100644 index 00000000..ad572e63 --- /dev/null +++ b/testproject/.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/testproject/.prettierrc.js b/testproject/.prettierrc.js new file mode 100644 index 00000000..5c4de1a4 --- /dev/null +++ b/testproject/.prettierrc.js @@ -0,0 +1,6 @@ +module.exports = { + bracketSpacing: false, + jsxBracketSameLine: true, + singleQuote: true, + trailingComma: 'all', +}; diff --git a/testproject/.watchmanconfig b/testproject/.watchmanconfig new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/testproject/.watchmanconfig @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/testproject/App.js b/testproject/App.js new file mode 100644 index 00000000..23cd158d --- /dev/null +++ b/testproject/App.js @@ -0,0 +1,114 @@ +/** + * Sample React Native App + * https://github.com/facebook/react-native + * + * @format + * @flow strict-local + */ + +import React from 'react'; +import { + SafeAreaView, + StyleSheet, + ScrollView, + View, + Text, + StatusBar, +} from 'react-native'; + +import { + Header, + LearnMoreLinks, + Colors, + DebugInstructions, + ReloadInstructions, +} from 'react-native/Libraries/NewAppScreen'; + +const App: () => React$Node = () => { + return ( + <> + + + +
+ {global.HermesInternal == null ? null : ( + + Engine: Hermes + + )} + + + Step One + + Edit App.js to change this + screen and then come back to see your edits. + + + + See Your Changes + + + + + + Debug + + + + + + Learn More + + Read the docs to discover what to do next: + + + + + + + + ); +}; + +const styles = StyleSheet.create({ + scrollView: { + backgroundColor: Colors.lighter, + }, + engine: { + position: 'absolute', + right: 0, + }, + body: { + backgroundColor: Colors.white, + }, + sectionContainer: { + marginTop: 32, + paddingHorizontal: 24, + }, + sectionTitle: { + fontSize: 24, + fontWeight: '600', + color: Colors.black, + }, + sectionDescription: { + marginTop: 8, + fontSize: 18, + fontWeight: '400', + color: Colors.dark, + }, + highlight: { + fontWeight: '700', + }, + footer: { + color: Colors.dark, + fontSize: 12, + fontWeight: '600', + padding: 4, + paddingRight: 12, + textAlign: 'right', + }, +}); + +export default App; diff --git a/testproject/__tests__/App-test.js b/testproject/__tests__/App-test.js new file mode 100644 index 00000000..17847669 --- /dev/null +++ b/testproject/__tests__/App-test.js @@ -0,0 +1,14 @@ +/** + * @format + */ + +import 'react-native'; +import React from 'react'; +import App from '../App'; + +// Note: test renderer must be required after react-native. +import renderer from 'react-test-renderer'; + +it('renders correctly', () => { + renderer.create(); +}); diff --git a/testproject/app.json b/testproject/app.json new file mode 100644 index 00000000..f8ee8c3c --- /dev/null +++ b/testproject/app.json @@ -0,0 +1,4 @@ +{ + "name": "testproject", + "displayName": "testproject" +} \ No newline at end of file diff --git a/testproject/babel.config.js b/testproject/babel.config.js new file mode 100644 index 00000000..f842b77f --- /dev/null +++ b/testproject/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: ['module:metro-react-native-babel-preset'], +}; diff --git a/testproject/index.js b/testproject/index.js new file mode 100644 index 00000000..a850d031 --- /dev/null +++ b/testproject/index.js @@ -0,0 +1,9 @@ +/** + * @format + */ + +import {AppRegistry} from 'react-native'; +import App from './App'; +import {name as appName} from './app.json'; + +AppRegistry.registerComponent(appName, () => App); diff --git a/testproject/ios/Podfile b/testproject/ios/Podfile new file mode 100644 index 00000000..c9fcef5a --- /dev/null +++ b/testproject/ios/Podfile @@ -0,0 +1,33 @@ +require_relative '../node_modules/react-native/scripts/react_native_pods' +require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' + +platform :ios, '10.0' + +target 'testproject' do + config = use_native_modules! + + use_react_native!(:path => config["reactNativePath"]) + + target 'testprojectTests' do + inherit! :complete + # Pods for testing + end + + # Enables Flipper. + # + # Note that if you have use_frameworks! enabled, Flipper will not work and + # you should disable these next few lines. + use_flipper! + post_install do |installer| + flipper_post_install(installer) + end +end + +target 'testproject-tvOS' do + # Pods for testproject-tvOS + + target 'testproject-tvOSTests' do + inherit! :search_paths + # Pods for testing + end +end diff --git a/testproject/ios/Podfile.lock b/testproject/ios/Podfile.lock new file mode 100644 index 00000000..7716379a --- /dev/null +++ b/testproject/ios/Podfile.lock @@ -0,0 +1,479 @@ +PODS: + - boost-for-react-native (1.63.0) + - CocoaAsyncSocket (7.6.4) + - CocoaLibEvent (1.0.0) + - DoubleConversion (1.1.6) + - FBLazyVector (0.63.4) + - FBReactNativeSpec (0.63.4): + - Folly (= 2020.01.13.00) + - RCTRequired (= 0.63.4) + - RCTTypeSafety (= 0.63.4) + - React-Core (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - Flipper (0.54.0): + - Flipper-Folly (~> 2.2) + - Flipper-RSocket (~> 1.1) + - Flipper-DoubleConversion (1.1.7) + - Flipper-Folly (2.3.0): + - boost-for-react-native + - CocoaLibEvent (~> 1.0) + - Flipper-DoubleConversion + - Flipper-Glog + - OpenSSL-Universal (= 1.0.2.20) + - Flipper-Glog (0.3.6) + - Flipper-PeerTalk (0.0.4) + - Flipper-RSocket (1.1.0): + - Flipper-Folly (~> 2.2) + - FlipperKit (0.54.0): + - FlipperKit/Core (= 0.54.0) + - FlipperKit/Core (0.54.0): + - Flipper (~> 0.54.0) + - FlipperKit/CppBridge + - FlipperKit/FBCxxFollyDynamicConvert + - FlipperKit/FBDefines + - FlipperKit/FKPortForwarding + - FlipperKit/CppBridge (0.54.0): + - Flipper (~> 0.54.0) + - FlipperKit/FBCxxFollyDynamicConvert (0.54.0): + - Flipper-Folly (~> 2.2) + - FlipperKit/FBDefines (0.54.0) + - FlipperKit/FKPortForwarding (0.54.0): + - CocoaAsyncSocket (~> 7.6) + - Flipper-PeerTalk (~> 0.0.4) + - FlipperKit/FlipperKitHighlightOverlay (0.54.0) + - FlipperKit/FlipperKitLayoutPlugin (0.54.0): + - FlipperKit/Core + - FlipperKit/FlipperKitHighlightOverlay + - FlipperKit/FlipperKitLayoutTextSearchable + - YogaKit (~> 1.18) + - FlipperKit/FlipperKitLayoutTextSearchable (0.54.0) + - FlipperKit/FlipperKitNetworkPlugin (0.54.0): + - FlipperKit/Core + - FlipperKit/FlipperKitReactPlugin (0.54.0): + - FlipperKit/Core + - FlipperKit/FlipperKitUserDefaultsPlugin (0.54.0): + - FlipperKit/Core + - FlipperKit/SKIOSNetworkPlugin (0.54.0): + - FlipperKit/Core + - FlipperKit/FlipperKitNetworkPlugin + - Folly (2020.01.13.00): + - boost-for-react-native + - DoubleConversion + - Folly/Default (= 2020.01.13.00) + - glog + - Folly/Default (2020.01.13.00): + - boost-for-react-native + - DoubleConversion + - glog + - glog (0.3.5) + - OpenSSL-Universal (1.0.2.20): + - OpenSSL-Universal/Static (= 1.0.2.20) + - OpenSSL-Universal/Static (1.0.2.20) + - PocketSVG (2.7.0) + - RCTARKit (0.9.0): + - PocketSVG (~> 2.6) + - React + - RCTRequired (0.63.4) + - RCTTypeSafety (0.63.4): + - FBLazyVector (= 0.63.4) + - Folly (= 2020.01.13.00) + - RCTRequired (= 0.63.4) + - React-Core (= 0.63.4) + - React (0.63.4): + - React-Core (= 0.63.4) + - React-Core/DevSupport (= 0.63.4) + - React-Core/RCTWebSocket (= 0.63.4) + - React-RCTActionSheet (= 0.63.4) + - React-RCTAnimation (= 0.63.4) + - React-RCTBlob (= 0.63.4) + - React-RCTImage (= 0.63.4) + - React-RCTLinking (= 0.63.4) + - React-RCTNetwork (= 0.63.4) + - React-RCTSettings (= 0.63.4) + - React-RCTText (= 0.63.4) + - React-RCTVibration (= 0.63.4) + - React-callinvoker (0.63.4) + - React-Core (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default (= 0.63.4) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/CoreModulesHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/Default (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/DevSupport (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default (= 0.63.4) + - React-Core/RCTWebSocket (= 0.63.4) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - React-jsinspector (= 0.63.4) + - Yoga + - React-Core/RCTActionSheetHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/RCTAnimationHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/RCTBlobHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/RCTImageHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/RCTLinkingHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/RCTNetworkHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/RCTSettingsHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/RCTTextHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/RCTVibrationHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/RCTWebSocket (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default (= 0.63.4) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-CoreModules (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.4) + - React-Core/CoreModulesHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - React-RCTImage (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-cxxreact (0.63.4): + - boost-for-react-native (= 1.63.0) + - DoubleConversion + - Folly (= 2020.01.13.00) + - glog + - React-callinvoker (= 0.63.4) + - React-jsinspector (= 0.63.4) + - React-jsi (0.63.4): + - boost-for-react-native (= 1.63.0) + - DoubleConversion + - Folly (= 2020.01.13.00) + - glog + - React-jsi/Default (= 0.63.4) + - React-jsi/Default (0.63.4): + - boost-for-react-native (= 1.63.0) + - DoubleConversion + - Folly (= 2020.01.13.00) + - glog + - React-jsiexecutor (0.63.4): + - DoubleConversion + - Folly (= 2020.01.13.00) + - glog + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsinspector (0.63.4) + - React-RCTActionSheet (0.63.4): + - React-Core/RCTActionSheetHeaders (= 0.63.4) + - React-RCTAnimation (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.4) + - React-Core/RCTAnimationHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTBlob (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - React-Core/RCTBlobHeaders (= 0.63.4) + - React-Core/RCTWebSocket (= 0.63.4) + - React-jsi (= 0.63.4) + - React-RCTNetwork (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTImage (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.4) + - React-Core/RCTImageHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - React-RCTNetwork (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTLinking (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - React-Core/RCTLinkingHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTNetwork (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.4) + - React-Core/RCTNetworkHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTSettings (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.4) + - React-Core/RCTSettingsHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTText (0.63.4): + - React-Core/RCTTextHeaders (= 0.63.4) + - React-RCTVibration (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - React-Core/RCTVibrationHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - ReactCommon/turbomodule/core (0.63.4): + - DoubleConversion + - Folly (= 2020.01.13.00) + - glog + - React-callinvoker (= 0.63.4) + - React-Core (= 0.63.4) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - RNSVG (12.1.0): + - React + - Yoga (1.14.0) + - YogaKit (1.18.1): + - Yoga (~> 1.14) + +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`) + - Flipper (~> 0.54.0) + - Flipper-DoubleConversion (= 1.1.7) + - Flipper-Folly (~> 2.2) + - Flipper-Glog (= 0.3.6) + - Flipper-PeerTalk (~> 0.0.4) + - Flipper-RSocket (~> 1.1) + - FlipperKit (~> 0.54.0) + - FlipperKit/Core (~> 0.54.0) + - FlipperKit/CppBridge (~> 0.54.0) + - FlipperKit/FBCxxFollyDynamicConvert (~> 0.54.0) + - FlipperKit/FBDefines (~> 0.54.0) + - FlipperKit/FKPortForwarding (~> 0.54.0) + - FlipperKit/FlipperKitHighlightOverlay (~> 0.54.0) + - FlipperKit/FlipperKitLayoutPlugin (~> 0.54.0) + - FlipperKit/FlipperKitLayoutTextSearchable (~> 0.54.0) + - FlipperKit/FlipperKitNetworkPlugin (~> 0.54.0) + - FlipperKit/FlipperKitReactPlugin (~> 0.54.0) + - FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.54.0) + - FlipperKit/SKIOSNetworkPlugin (~> 0.54.0) + - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) + - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) + - RCTARKit (from `../../ios`) + - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) + - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) + - React (from `../node_modules/react-native/`) + - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) + - 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-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/turbomodule/core (from `../node_modules/react-native/ReactCommon`) + - RNSVG (from `../node_modules/react-native-svg`) + - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) + +SPEC REPOS: + trunk: + - boost-for-react-native + - CocoaAsyncSocket + - CocoaLibEvent + - Flipper + - Flipper-DoubleConversion + - Flipper-Folly + - Flipper-Glog + - Flipper-PeerTalk + - Flipper-RSocket + - FlipperKit + - OpenSSL-Universal + - PocketSVG + - YogaKit + +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" + RCTARKit: + :path: "../../ios" + RCTRequired: + :path: "../node_modules/react-native/Libraries/RCTRequired" + RCTTypeSafety: + :path: "../node_modules/react-native/Libraries/TypeSafety" + React: + :path: "../node_modules/react-native/" + React-callinvoker: + :path: "../node_modules/react-native/ReactCommon/callinvoker" + 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-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" + RNSVG: + :path: "../node_modules/react-native-svg" + Yoga: + :path: "../node_modules/react-native/ReactCommon/yoga" + +SPEC CHECKSUMS: + boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c + CocoaAsyncSocket: 694058e7c0ed05a9e217d1b3c7ded962f4180845 + CocoaLibEvent: 2fab71b8bd46dd33ddb959f7928ec5909f838e3f + DoubleConversion: cde416483dac037923206447da6e1454df403714 + FBLazyVector: 3bb422f41b18121b71783a905c10e58606f7dc3e + FBReactNativeSpec: f2c97f2529dd79c083355182cc158c9f98f4bd6e + Flipper: be611d4b742d8c87fbae2ca5f44603a02539e365 + Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41 + Flipper-Folly: e4493b013c02d9347d5e0cb4d128680239f6c78a + Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6 + Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 + Flipper-RSocket: 64e7431a55835eb953b0bf984ef3b90ae9fdddd7 + FlipperKit: ab353d41aea8aae2ea6daaf813e67496642f3d7d + Folly: b73c3869541e86821df3c387eb0af5f65addfab4 + glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3 + OpenSSL-Universal: ff34003318d5e1163e9529b08470708e389ffcdd + PocketSVG: 5e0ff20c8a661586b2f2c295cd18b3e8f06de552 + RCTARKit: 294e0512cee6185119b572689879f8cc05c821e5 + RCTRequired: 082f10cd3f905d6c124597fd1c14f6f2655ff65e + RCTTypeSafety: 8c9c544ecbf20337d069e4ae7fd9a377aadf504b + React: b0a957a2c44da4113b0c4c9853d8387f8e64e615 + React-callinvoker: c3f44dd3cb195b6aa46621fff95ded79d59043fe + React-Core: d3b2a1ac9a2c13c3bcde712d9281fc1c8a5b315b + React-CoreModules: 0581ff36cb797da0943d424f69e7098e43e9be60 + React-cxxreact: c1480d4fda5720086c90df537ee7d285d4c57ac3 + React-jsi: a0418934cf48f25b485631deb27c64dc40fb4c31 + React-jsiexecutor: 93bd528844ad21dc07aab1c67cb10abae6df6949 + React-jsinspector: 58aef7155bc9a9683f5b60b35eccea8722a4f53a + React-RCTActionSheet: 89a0ca9f4a06c1f93c26067af074ccdce0f40336 + React-RCTAnimation: 1bde3ecc0c104c55df246eda516e0deb03c4e49b + React-RCTBlob: a97d378b527740cc667e03ebfa183a75231ab0f0 + React-RCTImage: c1b1f2d3f43a4a528c8946d6092384b5c880d2f0 + React-RCTLinking: 35ae4ab9dc0410d1fcbdce4d7623194a27214fb2 + React-RCTNetwork: 29ec2696f8d8cfff7331fac83d3e893c95ef43ae + React-RCTSettings: 60f0691bba2074ef394f95d4c2265ec284e0a46a + React-RCTText: 5c51df3f08cb9dedc6e790161195d12bac06101c + React-RCTVibration: ae4f914cfe8de7d4de95ae1ea6cc8f6315d73d9d + ReactCommon: 73d79c7039f473b76db6ff7c6b159c478acbbb3b + RNSVG: ce9d996113475209013317e48b05c21ee988d42e + Yoga: 4bd86afe9883422a7c4028c00e34790f560923d6 + YogaKit: f782866e155069a2cca2517aafea43200b01fd5a + +PODFILE CHECKSUM: 2e2fae10f62d1cac4e25e99962003b75850b07ee + +COCOAPODS: 1.9.3 diff --git a/testproject/ios/testproject-tvOS/Info.plist b/testproject/ios/testproject-tvOS/Info.plist new file mode 100644 index 00000000..ecbd496b --- /dev/null +++ b/testproject/ios/testproject-tvOS/Info.plist @@ -0,0 +1,53 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSExceptionDomains + + localhost + + NSExceptionAllowsInsecureHTTPLoads + + + + + NSLocationWhenInUseUsageDescription + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/testproject/ios/testproject-tvOSTests/Info.plist b/testproject/ios/testproject-tvOSTests/Info.plist new file mode 100644 index 00000000..ba72822e --- /dev/null +++ b/testproject/ios/testproject-tvOSTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/testproject/ios/testproject.xcodeproj/project.pbxproj b/testproject/ios/testproject.xcodeproj/project.pbxproj new file mode 100644 index 00000000..93dfe89e --- /dev/null +++ b/testproject/ios/testproject.xcodeproj/project.pbxproj @@ -0,0 +1,985 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 00E356F31AD99517003FC87E /* testprojectTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* testprojectTests.m */; }; + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; + 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 2DCD954D1E0B4F2C00145EB5 /* testprojectTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* testprojectTests.m */; }; + 55F8CFD3E35178284BCF367F /* libPods-testproject-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BA887C52E40F34B995359483 /* libPods-testproject-tvOS.a */; }; + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; + 9BAE7A9CD8B55DFEFC4EB861 /* libPods-testproject-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA9DE9AD3C8AF3730CB3391E /* libPods-testproject-tvOSTests.a */; }; + A11E6AAACA5A3803F4209DE6 /* libPods-testproject.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D479911DF72D8948F0A0153 /* libPods-testproject.a */; }; + E71CDB98CA2938A9121A9CD0 /* libPods-testproject-testprojectTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D882FEF6D77DC9B5AC708B6 /* libPods-testproject-testprojectTests.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 13B07F861A680F5B00A75B9A; + remoteInfo = testproject; + }; + 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7; + remoteInfo = "testproject-tvOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; + 00E356EE1AD99517003FC87E /* testprojectTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = testprojectTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 00E356F21AD99517003FC87E /* testprojectTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = testprojectTests.m; sourceTree = ""; }; + 0D882FEF6D77DC9B5AC708B6 /* libPods-testproject-testprojectTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-testproject-testprojectTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 0E70AD9C1601E4417390B5B7 /* Pods-testproject-testprojectTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-testproject-testprojectTests.debug.xcconfig"; path = "Target Support Files/Pods-testproject-testprojectTests/Pods-testproject-testprojectTests.debug.xcconfig"; sourceTree = ""; }; + 13B07F961A680F5B00A75B9A /* testproject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testproject.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = testproject/AppDelegate.h; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = testproject/AppDelegate.m; sourceTree = ""; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = testproject/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = testproject/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = testproject/main.m; sourceTree = ""; }; + 1D479911DF72D8948F0A0153 /* libPods-testproject.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-testproject.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 26745C308A47928C4AA5FA25 /* Pods-testproject.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-testproject.debug.xcconfig"; path = "Target Support Files/Pods-testproject/Pods-testproject.debug.xcconfig"; sourceTree = ""; }; + 2D02E47B1E0B4A5D006451C7 /* testproject-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "testproject-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 2D02E4901E0B4A5D006451C7 /* testproject-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "testproject-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3CB733F489BE140890A5CAC8 /* Pods-testproject-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-testproject-tvOSTests.release.xcconfig"; path = "Target Support Files/Pods-testproject-tvOSTests/Pods-testproject-tvOSTests.release.xcconfig"; sourceTree = ""; }; + 5EDF54F018C2D42AE60FFA5C /* Pods-testproject-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-testproject-tvOSTests.debug.xcconfig"; path = "Target Support Files/Pods-testproject-tvOSTests/Pods-testproject-tvOSTests.debug.xcconfig"; sourceTree = ""; }; + 690105CFCFE6B470B9B28C92 /* Pods-testproject-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-testproject-tvOS.release.xcconfig"; path = "Target Support Files/Pods-testproject-tvOS/Pods-testproject-tvOS.release.xcconfig"; sourceTree = ""; }; + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = testproject/LaunchScreen.storyboard; sourceTree = ""; }; + 8AB8E4B5B73DA3175B0D750F /* Pods-testproject-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-testproject-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-testproject-tvOS/Pods-testproject-tvOS.debug.xcconfig"; sourceTree = ""; }; + B65E5B94FC00306DEAA587AD /* Pods-testproject-testprojectTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-testproject-testprojectTests.release.xcconfig"; path = "Target Support Files/Pods-testproject-testprojectTests/Pods-testproject-testprojectTests.release.xcconfig"; sourceTree = ""; }; + BA887C52E40F34B995359483 /* libPods-testproject-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-testproject-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + C544EC0C85EE353C51B1E05F /* Pods-testproject.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-testproject.release.xcconfig"; path = "Target Support Files/Pods-testproject/Pods-testproject.release.xcconfig"; sourceTree = ""; }; + DA9DE9AD3C8AF3730CB3391E /* libPods-testproject-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-testproject-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 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; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 00E356EB1AD99517003FC87E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E71CDB98CA2938A9121A9CD0 /* libPods-testproject-testprojectTests.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A11E6AAACA5A3803F4209DE6 /* libPods-testproject.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D02E4781E0B4A5D006451C7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 55F8CFD3E35178284BCF367F /* libPods-testproject-tvOS.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D02E48D1E0B4A5D006451C7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 9BAE7A9CD8B55DFEFC4EB861 /* libPods-testproject-tvOSTests.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 00E356EF1AD99517003FC87E /* testprojectTests */ = { + isa = PBXGroup; + children = ( + 00E356F21AD99517003FC87E /* testprojectTests.m */, + 00E356F01AD99517003FC87E /* Supporting Files */, + ); + path = testprojectTests; + sourceTree = ""; + }; + 00E356F01AD99517003FC87E /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 00E356F11AD99517003FC87E /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 13B07FAE1A68108700A75B9A /* testproject */ = { + isa = PBXGroup; + children = ( + 008F07F21AC5B25A0029DE68 /* main.jsbundle */, + 13B07FAF1A68108700A75B9A /* AppDelegate.h */, + 13B07FB01A68108700A75B9A /* AppDelegate.m */, + 13B07FB51A68108700A75B9A /* Images.xcassets */, + 13B07FB61A68108700A75B9A /* Info.plist */, + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, + 13B07FB71A68108700A75B9A /* main.m */, + ); + name = testproject; + sourceTree = ""; + }; + 1A7B57086BE60D37B26D5D10 /* Pods */ = { + isa = PBXGroup; + children = ( + 26745C308A47928C4AA5FA25 /* Pods-testproject.debug.xcconfig */, + C544EC0C85EE353C51B1E05F /* Pods-testproject.release.xcconfig */, + 0E70AD9C1601E4417390B5B7 /* Pods-testproject-testprojectTests.debug.xcconfig */, + B65E5B94FC00306DEAA587AD /* Pods-testproject-testprojectTests.release.xcconfig */, + 8AB8E4B5B73DA3175B0D750F /* Pods-testproject-tvOS.debug.xcconfig */, + 690105CFCFE6B470B9B28C92 /* Pods-testproject-tvOS.release.xcconfig */, + 5EDF54F018C2D42AE60FFA5C /* Pods-testproject-tvOSTests.debug.xcconfig */, + 3CB733F489BE140890A5CAC8 /* Pods-testproject-tvOSTests.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { + isa = PBXGroup; + children = ( + ED297162215061F000B7C4FE /* JavaScriptCore.framework */, + ED2971642150620600B7C4FE /* JavaScriptCore.framework */, + 1D479911DF72D8948F0A0153 /* libPods-testproject.a */, + 0D882FEF6D77DC9B5AC708B6 /* libPods-testproject-testprojectTests.a */, + BA887C52E40F34B995359483 /* libPods-testproject-tvOS.a */, + DA9DE9AD3C8AF3730CB3391E /* libPods-testproject-tvOSTests.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { + isa = PBXGroup; + children = ( + ); + name = Libraries; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 13B07FAE1A68108700A75B9A /* testproject */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, + 00E356EF1AD99517003FC87E /* testprojectTests */, + 83CBBA001A601CBA00E9B192 /* Products */, + 2D16E6871FA4F8E400B85C8A /* Frameworks */, + 1A7B57086BE60D37B26D5D10 /* Pods */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + usesTabs = 0; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* testproject.app */, + 00E356EE1AD99517003FC87E /* testprojectTests.xctest */, + 2D02E47B1E0B4A5D006451C7 /* testproject-tvOS.app */, + 2D02E4901E0B4A5D006451C7 /* testproject-tvOSTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 00E356ED1AD99517003FC87E /* testprojectTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "testprojectTests" */; + buildPhases = ( + 9B805302470C6E3CF91842DB /* [CP] Check Pods Manifest.lock */, + 00E356EA1AD99517003FC87E /* Sources */, + 00E356EB1AD99517003FC87E /* Frameworks */, + 00E356EC1AD99517003FC87E /* Resources */, + 4A24862CDCFEE161206E6307 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + 00E356F51AD99517003FC87E /* PBXTargetDependency */, + ); + name = testprojectTests; + productName = testprojectTests; + productReference = 00E356EE1AD99517003FC87E /* testprojectTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 13B07F861A680F5B00A75B9A /* testproject */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "testproject" */; + buildPhases = ( + 6F01A14172095ECD4810C782 /* [CP] Check Pods Manifest.lock */, + FD10A7F022414F080027D42C /* Start Packager */, + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + DA7D3DC72C245C4395DBB21F /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testproject; + productName = testproject; + productReference = 13B07F961A680F5B00A75B9A /* testproject.app */; + productType = "com.apple.product-type.application"; + }; + 2D02E47A1E0B4A5D006451C7 /* testproject-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "testproject-tvOS" */; + buildPhases = ( + B7F7B70A9C6D4E14F5928BFC /* [CP] Check Pods Manifest.lock */, + FD10A7F122414F3F0027D42C /* Start Packager */, + 2D02E4771E0B4A5D006451C7 /* Sources */, + 2D02E4781E0B4A5D006451C7 /* Frameworks */, + 2D02E4791E0B4A5D006451C7 /* Resources */, + 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "testproject-tvOS"; + productName = "testproject-tvOS"; + productReference = 2D02E47B1E0B4A5D006451C7 /* testproject-tvOS.app */; + productType = "com.apple.product-type.application"; + }; + 2D02E48F1E0B4A5D006451C7 /* testproject-tvOSTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "testproject-tvOSTests" */; + buildPhases = ( + D13EB28A5C518AD67FF283CE /* [CP] Check Pods Manifest.lock */, + 2D02E48C1E0B4A5D006451C7 /* Sources */, + 2D02E48D1E0B4A5D006451C7 /* Frameworks */, + 2D02E48E1E0B4A5D006451C7 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */, + ); + name = "testproject-tvOSTests"; + productName = "testproject-tvOSTests"; + productReference = 2D02E4901E0B4A5D006451C7 /* testproject-tvOSTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1130; + TargetAttributes = { + 00E356ED1AD99517003FC87E = { + CreatedOnToolsVersion = 6.2; + DevelopmentTeam = QNYVG6H7C3; + TestTargetID = 13B07F861A680F5B00A75B9A; + }; + 13B07F861A680F5B00A75B9A = { + DevelopmentTeam = QNYVG6H7C3; + LastSwiftMigration = 1120; + }; + 2D02E47A1E0B4A5D006451C7 = { + CreatedOnToolsVersion = 8.2.1; + DevelopmentTeam = QNYVG6H7C3; + ProvisioningStyle = Automatic; + }; + 2D02E48F1E0B4A5D006451C7 = { + CreatedOnToolsVersion = 8.2.1; + DevelopmentTeam = QNYVG6H7C3; + ProvisioningStyle = Automatic; + TestTargetID = 2D02E47A1E0B4A5D006451C7; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "testproject" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* testproject */, + 00E356ED1AD99517003FC87E /* testprojectTests */, + 2D02E47A1E0B4A5D006451C7 /* testproject-tvOS */, + 2D02E48F1E0B4A5D006451C7 /* testproject-tvOSTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 00E356EC1AD99517003FC87E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D02E4791E0B4A5D006451C7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D02E48E1E0B4A5D006451C7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + 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"; + }; + 2D02E4CB1E0B4B27006451C7 /* 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"; + }; + 4A24862CDCFEE161206E6307 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-testproject-testprojectTests/Pods-testproject-testprojectTests-resources.sh", + "${PODS_ROOT}/PocketSVG/Sources/Resources/SVGColors.plist", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SVGColors.plist", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-testproject-testprojectTests/Pods-testproject-testprojectTests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 6F01A14172095ECD4810C782 /* [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-testproject-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; + }; + 9B805302470C6E3CF91842DB /* [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-testproject-testprojectTests-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; + }; + B7F7B70A9C6D4E14F5928BFC /* [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-testproject-tvOS-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; + }; + D13EB28A5C518AD67FF283CE /* [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-testproject-tvOSTests-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; + }; + DA7D3DC72C245C4395DBB21F /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-testproject/Pods-testproject-resources.sh", + "${PODS_ROOT}/PocketSVG/Sources/Resources/SVGColors.plist", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SVGColors.plist", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-testproject/Pods-testproject-resources.sh\"\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; + }; + FD10A7F122414F3F0027D42C /* 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 */ + 00E356EA1AD99517003FC87E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 00E356F31AD99517003FC87E /* testprojectTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, + 13B07FC11A68108700A75B9A /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D02E4771E0B4A5D006451C7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */, + 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D02E48C1E0B4A5D006451C7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2DCD954D1E0B4F2C00145EB5 /* testprojectTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 13B07F861A680F5B00A75B9A /* testproject */; + targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; + }; + 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 2D02E47A1E0B4A5D006451C7 /* testproject-tvOS */; + targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 00E356F61AD99517003FC87E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0E70AD9C1601E4417390B5B7 /* Pods-testproject-testprojectTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + DEVELOPMENT_TEAM = QNYVG6H7C3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = testprojectTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + "$(inherited)", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/testproject.app/testproject"; + }; + name = Debug; + }; + 00E356F71AD99517003FC87E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B65E5B94FC00306DEAA587AD /* Pods-testproject-testprojectTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + COPY_PHASE_STRIP = NO; + DEVELOPMENT_TEAM = QNYVG6H7C3; + INFOPLIST_FILE = testprojectTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + "$(inherited)", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/testproject.app/testproject"; + }; + name = Release; + }; + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 26745C308A47928C4AA5FA25 /* Pods-testproject.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = QNYVG6H7C3; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = testproject/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.reactjs.native.example.testproject654; + PRODUCT_NAME = testproject; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C544EC0C85EE353C51B1E05F /* Pods-testproject.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = QNYVG6H7C3; + INFOPLIST_FILE = testproject/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.reactjs.native.example.testproject654; + PRODUCT_NAME = testproject; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 2D02E4971E0B4A5E006451C7 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8AB8E4B5B73DA3175B0D750F /* Pods-testproject-tvOS.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = QNYVG6H7C3; + ENABLE_TESTABILITY = YES; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = "testproject-tvOS/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.testproject-tvOS654"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 10.0; + }; + name = Debug; + }; + 2D02E4981E0B4A5E006451C7 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 690105CFCFE6B470B9B28C92 /* Pods-testproject-tvOS.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = QNYVG6H7C3; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = "testproject-tvOS/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.testproject-tvOS654"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 10.0; + }; + name = Release; + }; + 2D02E4991E0B4A5E006451C7 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5EDF54F018C2D42AE60FFA5C /* Pods-testproject-tvOSTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = QNYVG6H7C3; + ENABLE_TESTABILITY = YES; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = "testproject-tvOSTests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.testproject-tvOSTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/testproject-tvOS.app/testproject-tvOS"; + TVOS_DEPLOYMENT_TARGET = 10.1; + }; + name = Debug; + }; + 2D02E49A1E0B4A5E006451C7 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3CB733F489BE140890A5CAC8 /* Pods-testproject-tvOSTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = QNYVG6H7C3; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = "testproject-tvOSTests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.testproject-tvOSTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/testproject-tvOS.app/testproject-tvOS"; + TVOS_DEPLOYMENT_TARGET = 10.1; + }; + name = Release; + }; + 83CBBA201A601CBA00E9B192 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + 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 = 10.0; + LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LIBRARY_SEARCH_PATHS = ( + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 83CBBA211A601CBA00E9B192 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + 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 = 10.0; + LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LIBRARY_SEARCH_PATHS = ( + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "testprojectTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 00E356F61AD99517003FC87E /* Debug */, + 00E356F71AD99517003FC87E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "testproject" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "testproject-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2D02E4971E0B4A5E006451C7 /* Debug */, + 2D02E4981E0B4A5E006451C7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "testproject-tvOSTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2D02E4991E0B4A5E006451C7 /* Debug */, + 2D02E49A1E0B4A5E006451C7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "testproject" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} diff --git a/testproject/ios/testproject.xcodeproj/xcshareddata/xcschemes/testproject-tvOS.xcscheme b/testproject/ios/testproject.xcodeproj/xcshareddata/xcschemes/testproject-tvOS.xcscheme new file mode 100644 index 00000000..dc58882f --- /dev/null +++ b/testproject/ios/testproject.xcodeproj/xcshareddata/xcschemes/testproject-tvOS.xcscheme @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testproject/ios/testproject.xcodeproj/xcshareddata/xcschemes/testproject.xcscheme b/testproject/ios/testproject.xcodeproj/xcshareddata/xcschemes/testproject.xcscheme new file mode 100644 index 00000000..6266bc0c --- /dev/null +++ b/testproject/ios/testproject.xcodeproj/xcshareddata/xcschemes/testproject.xcscheme @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testproject/ios/testproject.xcworkspace/contents.xcworkspacedata b/testproject/ios/testproject.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..50cf0170 --- /dev/null +++ b/testproject/ios/testproject.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/testproject/ios/testproject.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/testproject/ios/testproject.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/testproject/ios/testproject.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/testproject/ios/testproject/AppDelegate.h b/testproject/ios/testproject/AppDelegate.h new file mode 100644 index 00000000..ef1de86a --- /dev/null +++ b/testproject/ios/testproject/AppDelegate.h @@ -0,0 +1,8 @@ +#import +#import + +@interface AppDelegate : UIResponder + +@property (nonatomic, strong) UIWindow *window; + +@end diff --git a/testproject/ios/testproject/AppDelegate.m b/testproject/ios/testproject/AppDelegate.m new file mode 100644 index 00000000..6ddaa46c --- /dev/null +++ b/testproject/ios/testproject/AppDelegate.m @@ -0,0 +1,58 @@ +#import "AppDelegate.h" + +#import +#import +#import + +#ifdef FB_SONARKIT_ENABLED +#import +#import +#import +#import +#import +#import + +static void InitializeFlipper(UIApplication *application) { + FlipperClient *client = [FlipperClient sharedClient]; + SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults]; + [client addPlugin:[[FlipperKitLayoutPlugin alloc] initWithRootNode:application withDescriptorMapper:layoutDescriptorMapper]]; + [client addPlugin:[[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]]; + [client addPlugin:[FlipperKitReactPlugin new]]; + [client addPlugin:[[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]]; + [client start]; +} +#endif + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ +#ifdef FB_SONARKIT_ENABLED + InitializeFlipper(application); +#endif + + RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; + RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge + moduleName:@"testproject" + 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/testproject/ios/testproject/Images.xcassets/AppIcon.appiconset/Contents.json b/testproject/ios/testproject/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..118c98f7 --- /dev/null +++ b/testproject/ios/testproject/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/testproject/ios/testproject/Images.xcassets/Contents.json b/testproject/ios/testproject/Images.xcassets/Contents.json new file mode 100644 index 00000000..2d92bd53 --- /dev/null +++ b/testproject/ios/testproject/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/testproject/ios/testproject/Info.plist b/testproject/ios/testproject/Info.plist new file mode 100644 index 00000000..eed98dc7 --- /dev/null +++ b/testproject/ios/testproject/Info.plist @@ -0,0 +1,57 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + testproject + 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 + + + + + NSLocationWhenInUseUsageDescription + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/testproject/ios/testproject/LaunchScreen.storyboard b/testproject/ios/testproject/LaunchScreen.storyboard new file mode 100644 index 00000000..37c970bb --- /dev/null +++ b/testproject/ios/testproject/LaunchScreen.storyboard @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testproject/ios/testproject/main.m b/testproject/ios/testproject/main.m new file mode 100644 index 00000000..b1df44b9 --- /dev/null +++ b/testproject/ios/testproject/main.m @@ -0,0 +1,9 @@ +#import + +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/testproject/ios/testprojectTests/Info.plist b/testproject/ios/testprojectTests/Info.plist new file mode 100644 index 00000000..ba72822e --- /dev/null +++ b/testproject/ios/testprojectTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/testproject/ios/testprojectTests/testprojectTests.m b/testproject/ios/testprojectTests/testprojectTests.m new file mode 100644 index 00000000..21b90595 --- /dev/null +++ b/testproject/ios/testprojectTests/testprojectTests.m @@ -0,0 +1,65 @@ +#import +#import + +#import +#import + +#define TIMEOUT_SECONDS 600 +#define TEXT_TO_LOOK_FOR @"Welcome to React" + +@interface testprojectTests : XCTestCase + +@end + +@implementation testprojectTests + +- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test +{ + if (test(view)) { + return YES; + } + for (UIView *subview in [view subviews]) { + if ([self findSubviewInView:subview matching:test]) { + return YES; + } + } + return NO; +} + +- (void)testRendersWelcomeScreen +{ + UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; + NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; + BOOL foundElement = NO; + + __block NSString *redboxError = nil; +#ifdef DEBUG + RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { + if (level >= RCTLogLevelError) { + redboxError = message; + } + }); +#endif + + while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { + [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; + [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; + + foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { + if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { + return YES; + } + return NO; + }]; + } + +#ifdef DEBUG + RCTSetLogFunction(RCTDefaultLogFunction); +#endif + + XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); + XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); +} + + +@end diff --git a/testproject/metro.config.js b/testproject/metro.config.js new file mode 100644 index 00000000..13a96421 --- /dev/null +++ b/testproject/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/testproject/package-lock.json b/testproject/package-lock.json new file mode 100644 index 00000000..5bb38ff5 --- /dev/null +++ b/testproject/package-lock.json @@ -0,0 +1,12617 @@ +{ + "name": "testproject", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/core": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz", + "integrity": "sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.10", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "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==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@babel/generator": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.10.tgz", + "integrity": "sha512-6mCdfhWgmqLdtTkhXjnIz0LcdVCd26wS2JXRtj2XY0u5klDsXBREA/pG5NVOuVnF2LUrBGNFtQkIqqTbblg0ww==", + "requires": { + "@babel/types": "^7.12.10", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz", + "integrity": "sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==", + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-builder-react-jsx": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", + "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.10.tgz", + "integrity": "sha512-3Kcr2LGpL7CTRDTTYm1bzeor9qZbxbvU2AxsLA6mUG9gYarSfIKMK0UlU+azLWI+s0+BH768bwyaziWB2NOJlQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.10", + "@babel/helper-module-imports": "^7.12.5", + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz", + "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz", + "integrity": "sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==", + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz", + "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==", + "requires": { + "@babel/types": "^7.12.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz", + "integrity": "sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==", + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-replace-supers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-simple-access": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/helper-wrap-function": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helpers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", + "requires": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "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" + } + } + } + }, + "@babel/parser": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.10.tgz", + "integrity": "sha512-PJdRPwyoOqFAWfLytxrWwGrAxghCgh/yTNCYciOz8QgjflA7aZhECPZAa2VUedKg2+QMWkI0L9lynh2SNmNEgA==" + }, + "@babel/plugin-external-helpers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.12.1.tgz", + "integrity": "sha512-5VBqan0daXhDSRjrq2miABuELRwWJWFdM42Jvs/CDuhp+Es+fW+ISA5l+co8d+9oN3WLz/N3VvzyeseL3AvjxA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-export-default-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.12.1.tgz", + "integrity": "sha512-z5Q4Ke7j0AexQRfgUvnD+BdCSgpTEKnqQ3kskk2jWtOBulxICzd1X9BGt7kmWftxZ2W3++OZdt5gtmC8KLxdRQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-default-from": "^7.12.1" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz", + "integrity": "sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-default-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.12.1.tgz", + "integrity": "sha512-dP5eGg6tHEkhnRD2/vRG/KJKRSg8gtxu2i+P/8/yFPJn/CfPU5G0/7Gks2i3M6IOVAPQekmsLN9LPsmXFFL4Uw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.1.tgz", + "integrity": "sha512-1lBLLmtxrwpm4VKmtVFselI/P3pX+G63fAtUUt6b2Nzgao77KNDwyuRt90Mj2/9pKobtt68FdvjfqohZjg/FCA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz", + "integrity": "sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.10.tgz", + "integrity": "sha512-0ti12wLTLeUIzu9U7kjqIn4MyOL7+Wibc7avsHhj4o1l5C0ATs8p2IMHrVYjm9t9wzhfEO6S3kxax0Rpdo8LTg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-flow": "^7.12.1" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-object-assign": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.12.1.tgz", + "integrity": "sha512-geUHn4XwHznRAFiuROTy0Hr7bKbpijJCmr1Svt/VNGhpxmp0OrdxURNpWbOAf94nUbL+xj6gbxRVPHWIbRpRoA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz", + "integrity": "sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.10.tgz", + "integrity": "sha512-MM7/BC8QdHXM7Qc1wdnuk73R4gbuOpfrSUgfV/nODGc86sPY1tgmY2M9E9uAnf2e4DOIp8aKGWqgZfQxnTNGuw==", + "requires": { + "@babel/helper-builder-react-jsx": "^7.10.4", + "@babel/helper-builder-react-jsx-experimental": "^7.12.10", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.12.1" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz", + "integrity": "sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz", + "integrity": "sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.10.tgz", + "integrity": "sha512-xOrUfzPxw7+WDm9igMgQCbO3cJKymX7dFdsgRr1eu9n3KjjyU4pptIXbXPseQDquw+W+RuJEJMHKHNsPNNm3CA==", + "requires": { + "@babel/helper-module-imports": "^7.12.5", + "@babel/helper-plugin-utils": "^7.10.4", + "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.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz", + "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz", + "integrity": "sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-typescript": "^7.12.1" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/register": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.12.10.tgz", + "integrity": "sha512-EvX/BvMMJRAA3jZgILWgbsrHwBQvllC5T8B29McyME8DvkdOxk4ujESfrMvME8IHSDvWXrmMXxPvA/lx2gqPLQ==", + "requires": { + "find-cache-dir": "^2.0.0", + "lodash": "^4.17.19", + "make-dir": "^2.1.0", + "pirates": "^4.0.0", + "source-map-support": "^0.5.16" + } + }, + "@babel/runtime": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.12.5.tgz", + "integrity": "sha512-roGr54CsTmNPPzZoCP1AmDXuBoNao7tnSA83TXTwt+UK5QVyh1DIJnrgYRPWKCF2flqZQXwa7Yr8v7VmLzF0YQ==", + "dev": true, + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", + "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.12.7", + "@babel/types": "^7.12.7" + } + }, + "@babel/traverse": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.10.tgz", + "integrity": "sha512-6aEtf0IeRgbYWzta29lePeYSk+YAFIC3kyqESeft8o5CkFlYIMX+EQDDWEiAQ9LHOA3d0oHdgrSsID/CKqXJlg==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.10", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.10", + "@babel/types": "^7.12.10", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "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.12.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.10.tgz", + "integrity": "sha512-sf6wboJV5mGyip2hIpDSKsr80RszPinEFjsHTalMxZAZkoQ2/2yQzxlcFN52SJqsyPfLtPmenL4g2KB3KJXPDw==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" + }, + "@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.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" + }, + "@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" + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true + }, + "@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": { + "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" + } + }, + "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" + } + }, + "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=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + }, + "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" + } + } + } + }, + "@jest/core": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-25.5.4.tgz", + "integrity": "sha512-3uSo7laYxF00Dg/DMgbn4xMJKmDdWvZnf89n8Xj/5/AeQ2dOQmn6b6Hkj/MleyzZWXpwv+WSdYWl4cLsy2JsoA==", + "dev": true, + "requires": { + "@jest/console": "^25.5.0", + "@jest/reporters": "^25.5.1", + "@jest/test-result": "^25.5.0", + "@jest/transform": "^25.5.1", + "@jest/types": "^25.5.0", + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^25.5.0", + "jest-config": "^25.5.4", + "jest-haste-map": "^25.5.1", + "jest-message-util": "^25.5.0", + "jest-regex-util": "^25.2.6", + "jest-resolve": "^25.5.1", + "jest-resolve-dependencies": "^25.5.4", + "jest-runner": "^25.5.4", + "jest-runtime": "^25.5.4", + "jest-snapshot": "^25.5.1", + "jest-util": "^25.5.0", + "jest-validate": "^25.5.0", + "jest-watcher": "^25.5.0", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "realpath-native": "^2.0.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "@jest/console": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", + "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "jest-message-util": "^25.5.0", + "jest-util": "^25.5.0", + "slash": "^3.0.0" + } + }, + "@jest/test-result": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", + "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", + "dev": true, + "requires": { + "@jest/console": "^25.5.0", + "@jest/types": "^25.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + } + }, + "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 + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.2.1.tgz", + "integrity": "sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA==", + "dev": true, + "optional": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "jest-haste-map": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.5.1.tgz", + "integrity": "sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "@types/graceful-fs": "^4.1.2", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-serializer": "^25.5.0", + "jest-util": "^25.5.0", + "jest-worker": "^25.5.0", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7", + "which": "^2.0.2" + } + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-serializer": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.5.0.tgz", + "integrity": "sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + } + }, + "jest-validate": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.5.0.tgz", + "integrity": "sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "jest-get-type": "^25.2.6", + "leven": "^3.1.0", + "pretty-format": "^25.5.0" + } + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "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==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@jest/environment": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-25.5.0.tgz", + "integrity": "sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^25.5.0", + "@jest/types": "^25.5.0", + "jest-mock": "^25.5.0" + }, + "dependencies": { + "@jest/fake-timers": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.5.0.tgz", + "integrity": "sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "jest-message-util": "^25.5.0", + "jest-mock": "^25.5.0", + "jest-util": "^25.5.0", + "lolex": "^5.0.0" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.5.0.tgz", + "integrity": "sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.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" + }, + "dependencies": { + "@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" + } + }, + "@types/yargs": { + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", + "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "@jest/globals": { + "version": "25.5.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-25.5.2.tgz", + "integrity": "sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA==", + "dev": true, + "requires": { + "@jest/environment": "^25.5.0", + "@jest/types": "^25.5.0", + "expect": "^25.5.0" + } + }, + "@jest/reporters": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-25.5.1.tgz", + "integrity": "sha512-3jbd8pPDTuhYJ7vqiHXbSwTJQNavczPs+f1kRprRDxETeE3u6srJ+f0NPuwvOmk+lmunZzPkYWIFZDLHQPkviw==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^25.5.0", + "@jest/test-result": "^25.5.0", + "@jest/transform": "^25.5.1", + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^25.5.1", + "jest-resolve": "^25.5.1", + "jest-util": "^25.5.0", + "jest-worker": "^25.5.0", + "node-notifier": "^6.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^3.1.0", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^4.1.3" + }, + "dependencies": { + "@jest/console": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", + "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "jest-message-util": "^25.5.0", + "jest-util": "^25.5.0", + "slash": "^3.0.0" + } + }, + "@jest/test-result": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", + "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", + "dev": true, + "requires": { + "@jest/console": "^25.5.0", + "@jest/types": "^25.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.2.1.tgz", + "integrity": "sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA==", + "dev": true, + "optional": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-haste-map": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.5.1.tgz", + "integrity": "sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "@types/graceful-fs": "^4.1.2", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-serializer": "^25.5.0", + "jest-util": "^25.5.0", + "jest-worker": "^25.5.0", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7", + "which": "^2.0.2" + } + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-serializer": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.5.0.tgz", + "integrity": "sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + } + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "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==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "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 + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@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" + }, + "dependencies": { + "@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" + } + }, + "@types/yargs": { + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", + "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "@jest/test-sequencer": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-25.5.4.tgz", + "integrity": "sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA==", + "dev": true, + "requires": { + "@jest/test-result": "^25.5.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^25.5.1", + "jest-runner": "^25.5.4", + "jest-runtime": "^25.5.4" + }, + "dependencies": { + "@jest/console": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", + "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "jest-message-util": "^25.5.0", + "jest-util": "^25.5.0", + "slash": "^3.0.0" + } + }, + "@jest/test-result": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", + "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", + "dev": true, + "requires": { + "@jest/console": "^25.5.0", + "@jest/types": "^25.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.2.1.tgz", + "integrity": "sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA==", + "dev": true, + "optional": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-haste-map": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.5.1.tgz", + "integrity": "sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "@types/graceful-fs": "^4.1.2", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-serializer": "^25.5.0", + "jest-util": "^25.5.0", + "jest-worker": "^25.5.0", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7", + "which": "^2.0.2" + } + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-serializer": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.5.0.tgz", + "integrity": "sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + } + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "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==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@jest/transform": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-25.5.1.tgz", + "integrity": "sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^25.5.0", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^3.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^25.5.1", + "jest-regex-util": "^25.2.6", + "jest-util": "^25.5.0", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "realpath-native": "^2.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.2.1.tgz", + "integrity": "sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA==", + "dev": true, + "optional": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-haste-map": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.5.1.tgz", + "integrity": "sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "@types/graceful-fs": "^4.1.2", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-serializer": "^25.5.0", + "jest-util": "^25.5.0", + "jest-worker": "^25.5.0", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7", + "which": "^2.0.2" + } + }, + "jest-serializer": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.5.0.tgz", + "integrity": "sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + } + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "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==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "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 + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + } + } + }, + "@jest/types": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", + "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==" + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@oclif/command": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.8.0.tgz", + "integrity": "sha512-5vwpq6kbvwkQwKqAoOU3L72GZ3Ta8RRrewKj9OJRolx28KLJJ8Dg9Rf7obRwt5jQA9bkYd8gqzMTrI7H3xLfaw==", + "requires": { + "@oclif/config": "^1.15.1", + "@oclif/errors": "^1.3.3", + "@oclif/parser": "^3.8.3", + "@oclif/plugin-help": "^3", + "debug": "^4.1.1", + "semver": "^7.3.2" + }, + "dependencies": { + "@oclif/plugin-help": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-3.2.0.tgz", + "integrity": "sha512-7jxtpwVWAVbp1r46ZnTK/uF+FeZc6y4p1XcGaIUuPAp7wx6NJhIRN/iMT9UfNFX/Cz7mq+OyJz+E+i0zrik86g==", + "requires": { + "@oclif/command": "^1.5.20", + "@oclif/config": "^1.15.1", + "chalk": "^2.4.1", + "indent-string": "^4.0.0", + "lodash.template": "^4.4.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "widest-line": "^3.1.0", + "wrap-ansi": "^4.0.0" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "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" + } + }, + "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" + } + }, + "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=" + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "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": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "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" + } + }, + "wrap-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-4.0.0.tgz", + "integrity": "sha512-uMTsj9rDb0/7kk1PbcbCcwvHUxp60fGDB/NNXpVa0Q+ic/e7y5+BwTxKfQ33VYgDppSwi/FBzpetYzo8s6tfbg==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^2.1.1", + "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=" + }, + "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" + } + }, + "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" + } + } + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "@oclif/config": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.17.0.tgz", + "integrity": "sha512-Lmfuf6ubjQ4ifC/9bz1fSCHc6F6E653oyaRXxg+lgT4+bYf9bk+nqrUpAbrXyABkCqgIBiFr3J4zR/kiFdE1PA==", + "requires": { + "@oclif/errors": "^1.3.3", + "@oclif/parser": "^3.8.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-wsl": "^2.1.1", + "tslib": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } + } + }, + "@oclif/errors": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@oclif/errors/-/errors-1.3.4.tgz", + "integrity": "sha512-pJKXyEqwdfRTUdM8n5FIHiQQHg5ETM0Wlso8bF9GodczO40mF5Z3HufnYWJE7z8sGKxOeJCdbAVZbS8Y+d5GCw==", + "requires": { + "clean-stack": "^3.0.0", + "fs-extra": "^8.1", + "indent-string": "^4.0.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "@oclif/linewrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@oclif/linewrap/-/linewrap-1.0.0.tgz", + "integrity": "sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw==" + }, + "@oclif/parser": { + "version": "3.8.5", + "resolved": "https://registry.npmjs.org/@oclif/parser/-/parser-3.8.5.tgz", + "integrity": "sha512-yojzeEfmSxjjkAvMRj0KzspXlMjCfBzNRPkWw8ZwOSoNWoJn+OCS/m/S+yfV6BvAM4u2lTzX9Y5rCbrFIgkJLg==", + "requires": { + "@oclif/errors": "^1.2.2", + "@oclif/linewrap": "^1.0.0", + "chalk": "^2.4.2", + "tslib": "^1.9.3" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "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" + } + } + } + }, + "@oclif/plugin-help": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-2.2.3.tgz", + "integrity": "sha512-bGHUdo5e7DjPJ0vTeRBMIrfqTRDBfyR5w0MP41u0n3r7YG5p14lvMmiCXxi6WDaP2Hw5nqx3PnkAIntCKZZN7g==", + "requires": { + "@oclif/command": "^1.5.13", + "chalk": "^2.4.1", + "indent-string": "^4.0.0", + "lodash.template": "^4.4.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0", + "widest-line": "^2.0.1", + "wrap-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=" + }, + "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" + } + }, + "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" + } + }, + "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=" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "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" + } + }, + "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" + } + }, + "widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "requires": { + "string-width": "^2.1.1" + }, + "dependencies": { + "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" + } + }, + "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" + } + } + } + }, + "wrap-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-4.0.0.tgz", + "integrity": "sha512-uMTsj9rDb0/7kk1PbcbCcwvHUxp60fGDB/NNXpVa0Q+ic/e7y5+BwTxKfQ33VYgDppSwi/FBzpetYzo8s6tfbg==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "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" + } + }, + "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" + } + } + } + } + } + }, + "@panter/react-animation-frame": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@panter/react-animation-frame/-/react-animation-frame-0.3.7.tgz", + "integrity": "sha1-MaDXaD5KjS4bKf9RLK02UTvUPQA=", + "requires": { + "react": "15.4.2" + }, + "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" + } + }, + "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" + } + }, + "react": { + "version": "15.4.2", + "resolved": "https://registry.npmjs.org/react/-/react-15.4.2.tgz", + "integrity": "sha1-QfeZGyYYU5K6m66WyIiefgGDl+8=", + "requires": { + "fbjs": "^0.8.4", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.0" + } + } + } + }, + "@react-native-community/cli-debugger-ui": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-4.13.1.tgz", + "integrity": "sha512-UFnkg5RTq3s2X15fSkrWY9+5BKOFjihNSnJjTV2H5PtTUFbd55qnxxPw8CxSfK0bXb1IrSvCESprk2LEpqr5cg==", + "requires": { + "serve-static": "^1.13.1" + } + }, + "@react-native-community/cli-hermes": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-4.13.0.tgz", + "integrity": "sha512-oG+w0Uby6rSGsUkJGLvMQctZ5eVRLLfhf84lLyz942OEDxFRa9U19YJxOe9FmgCKtotbYiM3P/XhK+SVCuerPQ==", + "requires": { + "@react-native-community/cli-platform-android": "^4.13.0", + "@react-native-community/cli-tools": "^4.13.0", + "chalk": "^3.0.0", + "hermes-profile-transformer": "^0.0.6", + "ip": "^1.1.5" + } + }, + "@react-native-community/cli-platform-android": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-4.13.0.tgz", + "integrity": "sha512-3i8sX8GklEytUZwPnojuoFbCjIRzMugCdzDIdZ9UNmi/OhD4/8mLGO0dgXfT4sMWjZwu3qjy45sFfk2zOAgHbA==", + "requires": { + "@react-native-community/cli-tools": "^4.13.0", + "chalk": "^3.0.0", + "execa": "^1.0.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.3", + "jetifier": "^1.6.2", + "lodash": "^4.17.15", + "logkitty": "^0.7.1", + "slash": "^3.0.0", + "xmldoc": "^1.1.2" + } + }, + "@react-native-community/cli-platform-ios": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-4.13.0.tgz", + "integrity": "sha512-6THlTu8zp62efkzimfGr3VIuQJ2514o+vScZERJCV1xgEi8XtV7mb/ZKt9o6Y9WGxKKkc0E0b/aVAtgy+L27CA==", + "requires": { + "@react-native-community/cli-tools": "^4.13.0", + "chalk": "^3.0.0", + "glob": "^7.1.3", + "js-yaml": "^3.13.1", + "lodash": "^4.17.15", + "plist": "^3.0.1", + "xcode": "^2.0.0" + } + }, + "@react-native-community/cli-server-api": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-4.13.1.tgz", + "integrity": "sha512-vQzsFKD9CjHthA2ehTQX8c7uIzlI9A7ejaIow1I9RlEnLraPH2QqVDmzIdbdh5Od47UPbRzamCgAP8Bnqv3qwQ==", + "requires": { + "@react-native-community/cli-debugger-ui": "^4.13.1", + "@react-native-community/cli-tools": "^4.13.0", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.0", + "nocache": "^2.1.0", + "pretty-format": "^25.1.0", + "serve-static": "^1.13.1", + "ws": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + } + } + }, + "@react-native-community/cli-tools": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-4.13.0.tgz", + "integrity": "sha512-s4f489h5+EJksn4CfheLgv5PGOM0CDmK1UEBLw2t/ncWs3cW2VI7vXzndcd/WJHTv3GntJhXDcJMuL+Z2IAOgg==", + "requires": { + "chalk": "^3.0.0", + "lodash": "^4.17.15", + "mime": "^2.4.1", + "node-fetch": "^2.6.0", + "open": "^6.2.0", + "shell-quote": "1.6.1" + }, + "dependencies": { + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" + } + } + }, + "@react-native-community/cli-types": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-4.10.1.tgz", + "integrity": "sha512-ael2f1onoPF3vF7YqHGWy7NnafzGu+yp88BbFbP0ydoCP2xGSUzmZVw0zakPTC040Id+JQ9WeFczujMkDy6jYQ==" + }, + "@react-native-community/eslint-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/eslint-config/-/eslint-config-1.1.0.tgz", + "integrity": "sha512-hwb1hC28BhkwLwnO6vDISV6XZbipw2RIEhBVBN+pE7AUG9HjFXxoksiiOSoYgox9C8g86VJwHnKpak/3NnVBkQ==", + "dev": true, + "requires": { + "@react-native-community/eslint-plugin": "^1.1.0", + "@typescript-eslint/eslint-plugin": "^2.25.0", + "@typescript-eslint/parser": "^2.25.0", + "babel-eslint": "10.1.0", + "eslint-config-prettier": "^6.10.1", + "eslint-plugin-eslint-comments": "^3.1.2", + "eslint-plugin-flowtype": "2.50.3", + "eslint-plugin-jest": "22.4.1", + "eslint-plugin-prettier": "3.1.2", + "eslint-plugin-react": "7.19.0", + "eslint-plugin-react-hooks": "^3.0.0", + "eslint-plugin-react-native": "3.8.1", + "prettier": "^2.0.2" + } + }, + "@react-native-community/eslint-plugin": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/eslint-plugin/-/eslint-plugin-1.1.0.tgz", + "integrity": "sha512-W/J0fNYVO01tioHjvYWQ9m6RgndVtbElzYozBq1ZPrHO/iCzlqoySHl4gO/fpCl9QEFjvJfjPgtPMTMlsoq5DQ==", + "dev": true + }, + "@sinonjs/commons": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz", + "integrity": "sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@types/babel__core": { + "version": "7.1.12", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.12.tgz", + "integrity": "sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ==", + "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.2", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", + "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", + "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.0.tgz", + "integrity": "sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg==", + "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/graceful-fs": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.4.tgz", + "integrity": "sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==" + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "dev": true + }, + "@types/node": { + "version": "14.14.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.13.tgz", + "integrity": "sha512-vbxr0VZ8exFMMAjCW8rJwaya0dMCDyYW2ZRdTyjtrCvJoENMpdUHOT/eTzvgyA5ZnqRZ/sI0NwqAxNHKYokLJQ==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==", + "dev": true + }, + "@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/yargs": { + "version": "15.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.11.tgz", + "integrity": "sha512-jfcNBxHFYJ4nPIacsi3woz1+kvUO6s1CyeEhtnDHBjHUMNj5UlW2GynmnSgiJJEdNg9yW5C8lfoNRZrHGv5EqA==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" + }, + "@typescript-eslint/eslint-plugin": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", + "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "2.34.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", + "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", + "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", + "dev": true, + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.34.0", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", + "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "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 + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "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.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "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.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + } + } + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "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.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==" + }, + "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": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "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.1.2", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.2.tgz", + "integrity": "sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "get-intrinsic": "^1.0.1", + "is-string": "^1.0.5" + } + }, + "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-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "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-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "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.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-jest": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-25.5.1.tgz", + "integrity": "sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ==", + "dev": true, + "requires": { + "@jest/transform": "^25.5.1", + "@jest/types": "^25.5.0", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.5.0.tgz", + "integrity": "sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@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-current-node-syntax": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.4.tgz", + "integrity": "sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "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": "25.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-25.5.0.tgz", + "integrity": "sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^25.5.0", + "babel-preset-current-node-syntax": "^0.1.2" + } + }, + "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.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "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==" + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "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": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "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" + } + }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^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": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + } + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "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" + } + } + } + }, + "clean-stack": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-3.0.1.tgz", + "integrity": "sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==", + "requires": { + "escape-string-regexp": "4.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + } + } + }, + "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.5.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", + "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==" + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.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 + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "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-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "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.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" + }, + "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.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" + }, + "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.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.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.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + }, + "core-js-pure": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.8.1.tgz", + "integrity": "sha512-Se+LaxqXlVXGvmexKGPvnUIYC1jwXu1H6Pkyb3uBM5d8/NELMYCHs/4/roD7721NxrTLyv7e5nXd5/QLBO+10g==", + "dev": true + }, + "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" + } + }, + "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==" + } + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-tree": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", + "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "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" + } + }, + "dayjs": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.9.7.tgz", + "integrity": "sha512-IC877KBdMhBrCfBfJXHQlo0G8keZ0Opy7YIIq5QKtUbCuHMzim8S4PyiVK4YmihI3iOF9lhfUBW4AQWHTR5WHA==" + }, + "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" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "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": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "diff-sequences": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz", + "integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, + "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" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==" + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "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" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "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==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "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" + } + }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" + }, + "envinfo": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz", + "integrity": "sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==" + }, + "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.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "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.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "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, + "optional": true + } + } + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "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": "^12.1.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.3", + "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.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "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 + }, + "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==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "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==", + "dev": true, + "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=", + "dev": true + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "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-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" + } + }, + "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.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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.2", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", + "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "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.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.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 + }, + "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.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz", + "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==", + "dev": true, + "requires": { + "get-stdin": "^6.0.0" + } + }, + "eslint-plugin-eslint-comments": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", + "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", + "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": "3.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", + "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-react": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz", + "integrity": "sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.3", + "object.entries": "^1.1.1", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.15.1", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.2", + "xregexp": "^4.3.0" + } + }, + "eslint-plugin-react-hooks": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-3.0.0.tgz", + "integrity": "sha512-EjxTHxjLKIBWFgDJdhKKzLh5q+vjTFrqNZX36uIxWS4OfyXe5DawqPj3U5qeJ1ngLwatjzQnmR0Lz0J0YH3kxw==", + "dev": true + }, + "eslint-plugin-react-native": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-native/-/eslint-plugin-react-native-3.8.1.tgz", + "integrity": "sha512-6Z4s4nvgFRdda/1s1+uu4a6EMZwEjjJ9Bk/1yBImv0fd9U2CsGu2cUakAtV83cZKhizbWhSouXoaK4JtlScdFg==", + "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": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.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.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "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": "25.5.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-25.5.0.tgz", + "integrity": "sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "ansi-styles": "^4.0.0", + "jest-get-type": "^25.2.6", + "jest-matcher-utils": "^25.5.0", + "jest-message-util": "^25.5.0", + "jest-regex-util": "^25.2.6" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.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": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "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-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "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 + }, + "fastq": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.9.0.tgz", + "integrity": "sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w==", + "requires": { + "reusify": "^1.0.4" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "requires": { + "bser": "2.1.1" + } + }, + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "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" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "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" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "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": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "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.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "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 + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "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==" + }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "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==", + "dev": true + }, + "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.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "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==" + }, + "globby": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true, + "optional": true + }, + "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.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "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==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "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.5.1", + "resolved": "https://registry.npmjs.org/hermes-engine/-/hermes-engine-0.5.1.tgz", + "integrity": "sha512-hLwqh8dejHayjlpvZY40e1aDCDvyP98cWx/L5DhAjSJLH8g4z9Tp08D7y4+3vErDsncPOdf1bxm+zUWpx0/Fxg==" + }, + "hermes-profile-transformer": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz", + "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==", + "requires": { + "source-map": "^0.7.3" + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "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" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "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" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "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.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" + }, + "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": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "dependencies": { + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "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=" + }, + "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" + } + }, + "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" + } + }, + "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=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "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" + } + }, + "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" + } + }, + "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" + } + } + } + }, + "internal-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", + "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", + "dev": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "has": "^1.0.3", + "side-channel": "^1.0.2" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "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" + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "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-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "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.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "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-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "requires": { + "has": "^1.0.3" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "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-docker": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", + "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==" + }, + "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=" + }, + "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==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "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-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^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-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "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": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-25.5.4.tgz", + "integrity": "sha512-hHFJROBTqZahnO+X+PMtT6G2/ztqAZJveGqz//FnWWHurizkD05PQGzRZOhF3XP6z7SJmL+5tCfW8qV06JypwQ==", + "dev": true, + "requires": { + "@jest/core": "^25.5.4", + "import-local": "^3.0.2", + "jest-cli": "^25.5.4" + }, + "dependencies": { + "@jest/console": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", + "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "jest-message-util": "^25.5.0", + "jest-util": "^25.5.0", + "slash": "^3.0.0" + } + }, + "@jest/test-result": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", + "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", + "dev": true, + "requires": { + "@jest/console": "^25.5.0", + "@jest/types": "^25.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "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 + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-cli": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-25.5.4.tgz", + "integrity": "sha512-rG8uJkIiOUpnREh1768/N3n27Cm+xPFkSNFO91tgg+8o2rXeVLStz+vkXkGr4UtzH6t1SNbjwoiswd7p4AhHTw==", + "dev": true, + "requires": { + "@jest/core": "^25.5.4", + "@jest/test-result": "^25.5.0", + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^25.5.4", + "jest-util": "^25.5.0", + "jest-validate": "^25.5.0", + "prompts": "^2.0.1", + "realpath-native": "^2.0.0", + "yargs": "^15.3.1" + } + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + } + }, + "jest-validate": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.5.0.tgz", + "integrity": "sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "jest-get-type": "^25.2.6", + "leven": "^3.1.0", + "pretty-format": "^25.5.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "jest-changed-files": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-25.5.0.tgz", + "integrity": "sha512-EOw9QEqapsDT7mKF162m8HFzRPbmP8qJQny6ldVOdOVBz3ACgPm/1nAn5fPQ/NDaYhX/AHkrGwwkCncpAVSXcw==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "execa": "^3.2.0", + "throat": "^5.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "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==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "jest-config": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-25.5.4.tgz", + "integrity": "sha512-SZwR91SwcdK6bz7Gco8qL7YY2sx8tFJYzvg216DLihTWf+LKY/DoJXpM9nTzYakSyfblbqeU48p/p7Jzy05Atg==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^25.5.4", + "@jest/types": "^25.5.0", + "babel-jest": "^25.5.1", + "chalk": "^3.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^25.5.0", + "jest-environment-node": "^25.5.0", + "jest-get-type": "^25.2.6", + "jest-jasmine2": "^25.5.4", + "jest-regex-util": "^25.2.6", + "jest-resolve": "^25.5.1", + "jest-util": "^25.5.0", + "jest-validate": "^25.5.0", + "micromatch": "^4.0.2", + "pretty-format": "^25.5.0", + "realpath-native": "^2.0.0" + }, + "dependencies": { + "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 + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + } + }, + "jest-validate": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.5.0.tgz", + "integrity": "sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "jest-get-type": "^25.2.6", + "leven": "^3.1.0", + "pretty-format": "^25.5.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "jest-diff": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.5.0.tgz", + "integrity": "sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "diff-sequences": "^25.2.6", + "jest-get-type": "^25.2.6", + "pretty-format": "^25.5.0" + }, + "dependencies": { + "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 + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + } + } + }, + "jest-docblock": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-25.3.0.tgz", + "integrity": "sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-25.5.0.tgz", + "integrity": "sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "jest-get-type": "^25.2.6", + "jest-util": "^25.5.0", + "pretty-format": "^25.5.0" + }, + "dependencies": { + "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 + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + } + } + }, + "jest-environment-jsdom": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-25.5.0.tgz", + "integrity": "sha512-7Jr02ydaq4jaWMZLY+Skn8wL5nVIYpWvmeatOHL3tOcV3Zw8sjnPpx+ZdeBfc457p8jCR9J6YCc+Lga0oIy62A==", + "dev": true, + "requires": { + "@jest/environment": "^25.5.0", + "@jest/fake-timers": "^25.5.0", + "@jest/types": "^25.5.0", + "jest-mock": "^25.5.0", + "jest-util": "^25.5.0", + "jsdom": "^15.2.1" + }, + "dependencies": { + "@jest/fake-timers": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.5.0.tgz", + "integrity": "sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "jest-message-util": "^25.5.0", + "jest-mock": "^25.5.0", + "jest-util": "^25.5.0", + "lolex": "^5.0.0" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.5.0.tgz", + "integrity": "sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "jest-environment-node": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-25.5.0.tgz", + "integrity": "sha512-iuxK6rQR2En9EID+2k+IBs5fCFd919gVVK5BeND82fYeLWPqvRcFNPKu9+gxTwfB5XwBGBvZ0HFQa+cHtIoslA==", + "dev": true, + "requires": { + "@jest/environment": "^25.5.0", + "@jest/fake-timers": "^25.5.0", + "@jest/types": "^25.5.0", + "jest-mock": "^25.5.0", + "jest-util": "^25.5.0", + "semver": "^6.3.0" + }, + "dependencies": { + "@jest/fake-timers": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.5.0.tgz", + "integrity": "sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "jest-message-util": "^25.5.0", + "jest-mock": "^25.5.0", + "jest-util": "^25.5.0", + "lolex": "^5.0.0" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.5.0.tgz", + "integrity": "sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.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" + }, + "dependencies": { + "@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" + } + }, + "@types/yargs": { + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", + "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "jest-jasmine2": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-25.5.4.tgz", + "integrity": "sha512-9acbWEfbmS8UpdcfqnDO+uBUgKa/9hcRh983IHdM+pKmJPL77G0sWAAK0V0kr5LK3a8cSBfkFSoncXwQlRZfkQ==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^25.5.0", + "@jest/source-map": "^25.5.0", + "@jest/test-result": "^25.5.0", + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "co": "^4.6.0", + "expect": "^25.5.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^25.5.0", + "jest-matcher-utils": "^25.5.0", + "jest-message-util": "^25.5.0", + "jest-runtime": "^25.5.4", + "jest-snapshot": "^25.5.1", + "jest-util": "^25.5.0", + "pretty-format": "^25.5.0", + "throat": "^5.0.0" + }, + "dependencies": { + "@jest/console": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", + "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "jest-message-util": "^25.5.0", + "jest-util": "^25.5.0", + "slash": "^3.0.0" + } + }, + "@jest/source-map": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-25.5.0.tgz", + "integrity": "sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", + "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", + "dev": true, + "requires": { + "@jest/console": "^25.5.0", + "@jest/types": "^25.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "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 + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, + "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 + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "jest-leak-detector": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-25.5.0.tgz", + "integrity": "sha512-rV7JdLsanS8OkdDpZtgBf61L5xZ4NnYLBq72r6ldxahJWWczZjXawRsoHyXzibM5ed7C2QRjpp6ypgwGdKyoVA==", + "dev": true, + "requires": { + "jest-get-type": "^25.2.6", + "pretty-format": "^25.5.0" + }, + "dependencies": { + "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 + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + } + } + }, + "jest-matcher-utils": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.5.0.tgz", + "integrity": "sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "jest-diff": "^25.5.0", + "jest-get-type": "^25.2.6", + "pretty-format": "^25.5.0" + }, + "dependencies": { + "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 + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.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": { + "@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" + } + }, + "@types/yargs": { + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", + "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + }, + "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" + } + } + } + }, + "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" + }, + "dependencies": { + "@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" + } + }, + "@types/yargs": { + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", + "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true + }, + "jest-regex-util": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-25.2.6.tgz", + "integrity": "sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw==", + "dev": true + }, + "jest-resolve": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-25.5.1.tgz", + "integrity": "sha512-Hc09hYch5aWdtejsUZhA+vSzcotf7fajSlPA6EZPE1RmPBAD39XtJhvHWFStid58iit4IPDLI/Da4cwdDmAHiQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "browser-resolve": "^1.11.3", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.1", + "read-pkg-up": "^7.0.1", + "realpath-native": "^2.0.0", + "resolve": "^1.17.0", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-25.5.4.tgz", + "integrity": "sha512-yFmbPd+DAQjJQg88HveObcGBA32nqNZ02fjYmtL16t1xw9bAttSn5UGRRhzMHIQbsep7znWvAvnD4kDqOFM0Uw==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "jest-regex-util": "^25.2.6", + "jest-snapshot": "^25.5.1" + } + }, + "jest-runner": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-25.5.4.tgz", + "integrity": "sha512-V/2R7fKZo6blP8E9BL9vJ8aTU4TH2beuqGNxHbxi6t14XzTb+x90B3FRgdvuHm41GY8ch4xxvf0ATH4hdpjTqg==", + "dev": true, + "requires": { + "@jest/console": "^25.5.0", + "@jest/environment": "^25.5.0", + "@jest/test-result": "^25.5.0", + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^25.5.4", + "jest-docblock": "^25.3.0", + "jest-haste-map": "^25.5.1", + "jest-jasmine2": "^25.5.4", + "jest-leak-detector": "^25.5.0", + "jest-message-util": "^25.5.0", + "jest-resolve": "^25.5.1", + "jest-runtime": "^25.5.4", + "jest-util": "^25.5.0", + "jest-worker": "^25.5.0", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + }, + "dependencies": { + "@jest/console": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", + "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "jest-message-util": "^25.5.0", + "jest-util": "^25.5.0", + "slash": "^3.0.0" + } + }, + "@jest/test-result": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", + "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", + "dev": true, + "requires": { + "@jest/console": "^25.5.0", + "@jest/types": "^25.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.2.1.tgz", + "integrity": "sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA==", + "dev": true, + "optional": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-haste-map": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.5.1.tgz", + "integrity": "sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "@types/graceful-fs": "^4.1.2", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-serializer": "^25.5.0", + "jest-util": "^25.5.0", + "jest-worker": "^25.5.0", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7", + "which": "^2.0.2" + } + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-serializer": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.5.0.tgz", + "integrity": "sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + } + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "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==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "jest-runtime": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-25.5.4.tgz", + "integrity": "sha512-RWTt8LeWh3GvjYtASH2eezkc8AehVoWKK20udV6n3/gC87wlTbE1kIA+opCvNWyyPeBs6ptYsc6nyHUb1GlUVQ==", + "dev": true, + "requires": { + "@jest/console": "^25.5.0", + "@jest/environment": "^25.5.0", + "@jest/globals": "^25.5.2", + "@jest/source-map": "^25.5.0", + "@jest/test-result": "^25.5.0", + "@jest/transform": "^25.5.1", + "@jest/types": "^25.5.0", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^25.5.4", + "jest-haste-map": "^25.5.1", + "jest-message-util": "^25.5.0", + "jest-mock": "^25.5.0", + "jest-regex-util": "^25.2.6", + "jest-resolve": "^25.5.1", + "jest-snapshot": "^25.5.1", + "jest-util": "^25.5.0", + "jest-validate": "^25.5.0", + "realpath-native": "^2.0.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.3.1" + }, + "dependencies": { + "@jest/console": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", + "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "jest-message-util": "^25.5.0", + "jest-util": "^25.5.0", + "slash": "^3.0.0" + } + }, + "@jest/source-map": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-25.5.0.tgz", + "integrity": "sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", + "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", + "dev": true, + "requires": { + "@jest/console": "^25.5.0", + "@jest/types": "^25.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "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 + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.2.1.tgz", + "integrity": "sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA==", + "dev": true, + "optional": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "jest-haste-map": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.5.1.tgz", + "integrity": "sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "@types/graceful-fs": "^4.1.2", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-serializer": "^25.5.0", + "jest-util": "^25.5.0", + "jest-worker": "^25.5.0", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7", + "which": "^2.0.2" + } + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.5.0.tgz", + "integrity": "sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0" + } + }, + "jest-serializer": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.5.0.tgz", + "integrity": "sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + } + }, + "jest-validate": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.5.0.tgz", + "integrity": "sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "jest-get-type": "^25.2.6", + "leven": "^3.1.0", + "pretty-format": "^25.5.0" + } + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "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==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, + "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 + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.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": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-25.5.1.tgz", + "integrity": "sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/prettier": "^1.19.0", + "chalk": "^3.0.0", + "expect": "^25.5.0", + "graceful-fs": "^4.2.4", + "jest-diff": "^25.5.0", + "jest-get-type": "^25.2.6", + "jest-matcher-utils": "^25.5.0", + "jest-message-util": "^25.5.0", + "jest-resolve": "^25.5.1", + "make-dir": "^3.0.0", + "natural-compare": "^1.4.0", + "pretty-format": "^25.5.0", + "semver": "^6.3.0" + }, + "dependencies": { + "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 + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.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": { + "@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" + } + }, + "@types/yargs": { + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", + "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "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" + } + }, + "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=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "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==" + }, + "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" + } + } + } + }, + "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" + }, + "dependencies": { + "@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" + } + }, + "@types/yargs": { + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", + "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "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" + } + } + } + }, + "jest-watcher": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-25.5.0.tgz", + "integrity": "sha512-XrSfJnVASEl+5+bb51V0Q7WQx65dTSk7NL4yDdVjPnRNpM0hG+ncFmDYJo9O8jaSRcAitVbuVawyXCRoxGrT5Q==", + "dev": true, + "requires": { + "@jest/test-result": "^25.5.0", + "@jest/types": "^25.5.0", + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "jest-util": "^25.5.0", + "string-length": "^3.1.0" + }, + "dependencies": { + "@jest/console": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", + "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "jest-message-util": "^25.5.0", + "jest-util": "^25.5.0", + "slash": "^3.0.0" + } + }, + "@jest/test-result": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", + "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", + "dev": true, + "requires": { + "@jest/console": "^25.5.0", + "@jest/types": "^25.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "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": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "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.6", + "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-1.6.6.tgz", + "integrity": "sha512-JNAkmPeB/GS2tCRqUzRPsTOHpGDah7xP18vGJfIjZC+W2sxEHbxgJxetIjIqhjQ3yYbYNEELkM/spKLtwoOSUQ==" + }, + "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.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "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": "15.2.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", + "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", + "array-equal": "^1.0.0", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.1", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.2.0", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "ws": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.1.tgz", + "integrity": "sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ==", + "dev": true + } + } + }, + "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-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "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.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "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.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", + "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "object.assign": "^4.1.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "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 + }, + "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" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "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" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + }, + "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.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" + }, + "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" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "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" + } + } + } + }, + "logkitty": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", + "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", + "requires": { + "ansi-fragments": "^0.2.1", + "dayjs": "^1.8.15", + "yargs": "^15.1.0" + } + }, + "lolex": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", + "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "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-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" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "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" + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "metro": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.58.0.tgz", + "integrity": "sha512-yi/REXX+/s4r7RjzXht+E+qE6nzvFIrEXO5Q61h+70Q7RODMU8EnlpXx04JYk7DevHuMhFaX+NWhCtRINzR4zA==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.0.0", + "@babel/generator": "^7.5.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.3.0", + "buffer-crc32": "^0.2.13", + "chalk": "^2.4.1", + "ci-info": "^2.0.0", + "concat-stream": "^1.6.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "denodeify": "^1.2.1", + "eventemitter3": "^3.0.0", + "fbjs": "^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.58.0", + "metro-babel-transformer": "0.58.0", + "metro-cache": "0.58.0", + "metro-config": "0.58.0", + "metro-core": "0.58.0", + "metro-inspector-proxy": "0.58.0", + "metro-minify-uglify": "0.58.0", + "metro-react-native-babel-preset": "0.58.0", + "metro-resolver": "0.58.0", + "metro-source-map": "0.58.0", + "metro-symbolicate": "0.58.0", + "mime-types": "2.1.11", + "mkdirp": "^0.5.1", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "resolve": "^1.5.0", + "rimraf": "^2.5.4", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "strip-ansi": "^4.0.0", + "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": "^14.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "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" + } + }, + "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" + } + }, + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "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" + } + } + } + }, + "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=" + }, + "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" + } + }, + "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" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "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" + } + }, + "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" + } + }, + "metro-babel-register": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-babel-register/-/metro-babel-register-0.58.0.tgz", + "integrity": "sha512-P5+G3ufhSYL6cA3a7xkbSJzzFBvtivj/PhWvGXFXnuFssDlMAX1CTktff+0gpka5Cd6B6QLt0UAMWulUAAE4Eg==", + "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-react-native-babel-preset": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.58.0.tgz", + "integrity": "sha512-MRriNW+fF6jxABsgPphocUY6mIhmCm8idcrQZ58fT3Iti2vCdtkaK32TyCGUNUptzhUe2/cbE57j4aC+eaodAA==", + "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.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "react-refresh": "^0.4.0" + } + }, + "metro-source-map": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.58.0.tgz", + "integrity": "sha512-yvN1YPmejmgiiS7T1aKBiiUTHPw2Vcm3r2TZ+DY92z/9PR4alysIywrCs/fTHs8rbDcKM5VfPCKGLpkBrbKeOw==", + "requires": { + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "invariant": "^2.2.4", + "metro-symbolicate": "0.58.0", + "ob1": "0.58.0", + "source-map": "^0.5.6", + "vlq": "^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" + } + }, + "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" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "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-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" + } + }, + "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" + } + }, + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "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" + } + } + } + }, + "yargs": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", + "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", + "requires": { + "cliui": "^5.0.0", + "decamelize": "^1.2.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": "^15.0.1" + } + }, + "yargs-parser": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", + "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "metro-babel-register": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/metro-babel-register/-/metro-babel-register-0.59.0.tgz", + "integrity": "sha512-JtWc29erdsXO/V3loenXKw+aHUXgj7lt0QPaZKPpctLLy8kcEpI/8pfXXgVK9weXICCpCnYtYncIosAyzh0xjg==", + "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-optional-chaining": "^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", + "escape-string-regexp": "^1.0.5" + } + }, + "metro-babel-transformer": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.58.0.tgz", + "integrity": "sha512-yBX3BkRhw2TCNPhe+pmLSgsAEA3huMvnX08UwjFqSXXI1aiqzRQobn92uKd1U5MM1Vx8EtXVomlJb95ZHNAv6A==", + "requires": { + "@babel/core": "^7.0.0", + "metro-source-map": "0.58.0" + }, + "dependencies": { + "metro-source-map": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.58.0.tgz", + "integrity": "sha512-yvN1YPmejmgiiS7T1aKBiiUTHPw2Vcm3r2TZ+DY92z/9PR4alysIywrCs/fTHs8rbDcKM5VfPCKGLpkBrbKeOw==", + "requires": { + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "invariant": "^2.2.4", + "metro-symbolicate": "0.58.0", + "ob1": "0.58.0", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "metro-cache": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.58.0.tgz", + "integrity": "sha512-jjW9zCTKxhgKcVkyQ6LHyna9Zdf4TK/45vvT1fPyyTk1RY82ZYjU1qs+84ycKEd08Ka4YcK9xcUew9SIDJYI8Q==", + "requires": { + "jest-serializer": "^24.4.0", + "metro-core": "0.58.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4" + } + }, + "metro-config": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.58.0.tgz", + "integrity": "sha512-4vgBliXwL56vjUlYplvGMVSNrJJpkHuLcD+O20trV3FvPxKg4ZsvuOcNSxqDSMU26FCtIEJ15ojcuCbRL7KY0w==", + "requires": { + "cosmiconfig": "^5.0.5", + "jest-validate": "^24.7.0", + "metro": "0.58.0", + "metro-cache": "0.58.0", + "metro-core": "0.58.0", + "pretty-format": "^24.7.0" + } + }, + "metro-core": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.58.0.tgz", + "integrity": "sha512-RzXUjGFmCLOyzUqcKDvr91AldGtIOxnzNZrWUIiG8uC3kerVLo0mQp4YH3+XVm6fMNiLMg6iER7HLqD+MbpUjQ==", + "requires": { + "jest-haste-map": "^24.7.1", + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.58.0", + "wordwrap": "^1.0.0" + } + }, + "metro-inspector-proxy": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.58.0.tgz", + "integrity": "sha512-oFqTyNTJdCdvcw1Ha6SKE7ITbSaoTbO4xpYownIoJR+WZ0ZfxbWpp225JkHuBJm9UcBAnG9c0CME924m3uBbaw==", + "requires": { + "connect": "^3.6.5", + "debug": "^2.2.0", + "rxjs": "^5.4.3", + "ws": "^1.1.5", + "yargs": "^14.2.0" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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=" + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "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": "14.2.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", + "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", + "requires": { + "cliui": "^5.0.0", + "decamelize": "^1.2.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": "^15.0.1" + } + }, + "yargs-parser": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", + "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "metro-minify-uglify": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.58.0.tgz", + "integrity": "sha512-vRHsA7bCi7eCn3LXLm20EfY2NoWDyYOnmWaq/N8LB0OxL2L5DXRqMYAQK+prWGJ5S1yvVnDuuNVP+peQ9851TA==", + "requires": { + "uglify-es": "^3.1.9" + } + }, + "metro-react-native-babel-preset": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.59.0.tgz", + "integrity": "sha512-BoO6ncPfceIDReIH8pQ5tQptcGo5yRWQXJGVXfANbiKLq4tfgdZB1C1e2rMUJ6iypmeJU9dzl+EhPmIFKtgREg==", + "dev": true, + "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-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.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-self": "^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.5.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.59.0", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.59.0.tgz", + "integrity": "sha512-1O3wrnMq4NcPQ1asEcl9lRDn/t+F1Oef6S9WaYVIKEhg9m/EQRGVrrTVP+R6B5Eeaj3+zNKbzM8Dx/NWy1hUbQ==", + "requires": { + "@babel/core": "^7.0.0", + "babel-preset-fbjs": "^3.3.0", + "metro-babel-transformer": "0.59.0", + "metro-react-native-babel-preset": "0.59.0", + "metro-source-map": "0.59.0" + }, + "dependencies": { + "metro-babel-transformer": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.59.0.tgz", + "integrity": "sha512-fdZJl8rs54GVFXokxRdD7ZrQ1TJjxWzOi/xSP25VR3E8tbm3nBZqS+/ylu643qSr/IueABR+jrlqAyACwGEf6w==", + "requires": { + "@babel/core": "^7.0.0", + "metro-source-map": "0.59.0" + } + }, + "metro-react-native-babel-preset": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.59.0.tgz", + "integrity": "sha512-BoO6ncPfceIDReIH8pQ5tQptcGo5yRWQXJGVXfANbiKLq4tfgdZB1C1e2rMUJ6iypmeJU9dzl+EhPmIFKtgREg==", + "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-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.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-self": "^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.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "react-refresh": "^0.4.0" + } + } + } + }, + "metro-resolver": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.58.0.tgz", + "integrity": "sha512-XFbAKvCHN2iWqKeiRARzEXn69eTDdJVJC7lu16S4dPQJ+Dy82dZBr5Es12iN+NmbJuFgrAuIHbpWrdnA9tOf6Q==", + "requires": { + "absolute-path": "^0.0.0" + } + }, + "metro-source-map": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.59.0.tgz", + "integrity": "sha512-0w5CmCM+ybSqXIjqU4RiK40t4bvANL6lafabQ2GP2XD3vSwkLY+StWzCtsb4mPuyi9R/SgoLBel+ZOXHXAH0eQ==", + "requires": { + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "invariant": "^2.2.4", + "metro-symbolicate": "0.59.0", + "ob1": "0.59.0", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "dependencies": { + "metro-symbolicate": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.59.0.tgz", + "integrity": "sha512-asLaF2A7rndrToGFIknL13aiohwPJ95RKHf0NM3hP/nipiLDoMzXT6ZnQvBqDxkUKyP+51AI75DMtb+Wcyw4Bw==", + "requires": { + "invariant": "^2.2.4", + "metro-source-map": "0.59.0", + "source-map": "^0.5.6", + "through2": "^2.0.1", + "vlq": "^1.0.0" + } + }, + "ob1": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.59.0.tgz", + "integrity": "sha512-opXMTxyWJ9m68ZglCxwo0OPRESIC/iGmKFPXEXzMZqsVIrgoRXOHmoMDkQzz4y3irVjbyPJRAh5pI9fd0MJTFQ==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "metro-symbolicate": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.58.0.tgz", + "integrity": "sha512-uIVxUQC1E26qOMj13dKROhwAa2FmZk5eR0NcBqej/aXmQhpr8LjJg2sondkoLKUp827Tf/Fm9+pS4icb5XiqCw==", + "requires": { + "invariant": "^2.2.4", + "metro-source-map": "0.58.0", + "source-map": "^0.5.6", + "through2": "^2.0.1", + "vlq": "^1.0.0" + }, + "dependencies": { + "metro-source-map": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.58.0.tgz", + "integrity": "sha512-yvN1YPmejmgiiS7T1aKBiiUTHPw2Vcm3r2TZ+DY92z/9PR4alysIywrCs/fTHs8rbDcKM5VfPCKGLpkBrbKeOw==", + "requires": { + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "invariant": "^2.2.4", + "metro-symbolicate": "0.58.0", + "ob1": "0.58.0", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "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": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.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==" + }, + "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.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "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.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "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==" + }, + "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.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "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" + } + }, + "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==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "nocache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.1.0.tgz", + "integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q==" + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "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": "6.0.0", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-6.0.0.tgz", + "integrity": "sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw==", + "dev": true, + "optional": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.1.1", + "semver": "^6.3.0", + "shellwords": "^0.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "optional": true, + "requires": { + "is-docker": "^2.0.0" + } + } + } + }, + "node-stream-zip": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.12.0.tgz", + "integrity": "sha512-HZ3XehqShTFj9gHauRJ3Bri9eiCTOII7/crtXzURtT14NdnOFs9Ia5E82W7z3izVBNx760tqwddxrBJVG52Y1Q==" + }, + "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==", + "dev": true, + "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==", + "dev": true + } + } + }, + "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" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "requires": { + "boolbase": "~1.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==" + }, + "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.58.0", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.58.0.tgz", + "integrity": "sha512-uZP44cbowAfHafP1k4skpWItk5iHCoRevMfrnUvYCfyNNPPJd3rfDCyj0exklWi2gDXvjlj2ObsfiqP/bs/J7Q==" + }, + "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.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "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.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", + "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.3.tgz", + "integrity": "sha512-IDUSMXs6LOSJBWE++L0lzIbSqHl9KDCfff2x/JSEIDtEUavUnyMYC2ZGay/04Zq4UT8lvd4xNhU4/YHKibAOlw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "has": "^1.0.3" + } + }, + "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" + } + }, + "object.values": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz", + "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "has": "^1.0.3" + } + }, + "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" + } + }, + "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" + } + }, + "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" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "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" + } + } + } + }, + "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-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.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" + } + }, + "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": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "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-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "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==" + }, + "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-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, + "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": "2.2.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", + "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "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" + }, + "dependencies": { + "@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" + } + }, + "@types/yargs": { + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", + "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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=" + } + } + }, + "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": "8.1.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", + "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", + "requires": { + "asap": "~2.0.6" + } + }, + "prompts": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", + "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "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.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "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 + }, + "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.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-devtools-core": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.10.1.tgz", + "integrity": "sha512-sXbBjGAWcf9HAblTP/zMtFhGHqxAfIR+GPxONZsSGN9FHnF4635dx1s2LdQWG9rJ+Ehr3nWg+BUAB6P78my5PA==", + "requires": { + "shell-quote": "^1.6.1", + "ws": "^7" + }, + "dependencies": { + "ws": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.1.tgz", + "integrity": "sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ==" + } + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-native": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.63.4.tgz", + "integrity": "sha512-I4kM8kYO2mWEYUFITMcpRulcy4/jd+j9T6PbIzR0FuMcz/xwd+JwHoLPa1HmCesvR1RDOw9o4D+OFLwuXXfmGw==", + "requires": { + "@babel/runtime": "^7.0.0", + "@react-native-community/cli": "^4.10.0", + "@react-native-community/cli-platform-android": "^4.10.0", + "@react-native-community/cli-platform-ios": "^4.10.0", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "base64-js": "^1.1.2", + "event-target-shim": "^5.0.1", + "fbjs": "^1.0.0", + "fbjs-scripts": "^1.1.0", + "hermes-engine": "~0.5.0", + "invariant": "^2.2.4", + "jsc-android": "^245459.0.0", + "metro-babel-register": "0.59.0", + "metro-react-native-babel-transformer": "0.59.0", + "metro-source-map": "0.59.0", + "nullthrows": "^1.1.1", + "pretty-format": "^24.9.0", + "promise": "^8.0.3", + "prop-types": "^15.7.2", + "react-devtools-core": "^4.6.0", + "react-refresh": "^0.4.0", + "regenerator-runtime": "^0.13.2", + "scheduler": "0.19.1", + "stacktrace-parser": "^0.1.3", + "use-subscription": "^1.0.0", + "whatwg-fetch": "^3.0.0" + }, + "dependencies": { + "@react-native-community/cli": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-4.13.1.tgz", + "integrity": "sha512-+/TeRVToADpQPSprsPkwi9KY8x64YcuJpjzMBVISwWP+aWzsIDuWJmyMXTADlCg2EBMJqJR7bn1W/IkfzVRCWA==", + "requires": { + "@hapi/joi": "^15.0.3", + "@react-native-community/cli-debugger-ui": "^4.13.1", + "@react-native-community/cli-hermes": "^4.13.0", + "@react-native-community/cli-server-api": "^4.13.1", + "@react-native-community/cli-tools": "^4.13.0", + "@react-native-community/cli-types": "^4.10.1", + "chalk": "^3.0.0", + "command-exists": "^1.2.8", + "commander": "^2.19.0", + "cosmiconfig": "^5.1.0", + "deepmerge": "^3.2.0", + "envinfo": "^7.7.2", + "execa": "^1.0.0", + "find-up": "^4.1.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.3", + "graceful-fs": "^4.1.3", + "inquirer": "^3.0.6", + "leven": "^3.1.0", + "lodash": "^4.17.15", + "metro": "^0.58.0", + "metro-config": "^0.58.0", + "metro-core": "^0.58.0", + "metro-react-native-babel-transformer": "^0.58.0", + "metro-resolver": "^0.58.0", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "node-stream-zip": "^1.9.1", + "ora": "^3.4.0", + "pretty-format": "^25.2.0", + "semver": "^6.3.0", + "serve-static": "^1.13.1", + "strip-ansi": "^5.2.0", + "sudo-prompt": "^9.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "metro-react-native-babel-transformer": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.58.0.tgz", + "integrity": "sha512-3A73+cRq1eUPQ8g+hPNGgMUMCGmtQjwqHfoG1DwinAoJ/kr4WOXWWbGZo0xHJNBe/zdHGl0uHcDCp2knPglTdQ==", + "requires": { + "@babel/core": "^7.0.0", + "babel-preset-fbjs": "^3.3.0", + "metro-babel-transformer": "0.58.0", + "metro-react-native-babel-preset": "0.58.0", + "metro-source-map": "0.58.0" + }, + "dependencies": { + "metro-react-native-babel-preset": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.58.0.tgz", + "integrity": "sha512-MRriNW+fF6jxABsgPphocUY6mIhmCm8idcrQZ58fT3Iti2vCdtkaK32TyCGUNUptzhUe2/cbE57j4aC+eaodAA==", + "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.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "react-refresh": "^0.4.0" + } + } + } + }, + "metro-source-map": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.58.0.tgz", + "integrity": "sha512-yvN1YPmejmgiiS7T1aKBiiUTHPw2Vcm3r2TZ+DY92z/9PR4alysIywrCs/fTHs8rbDcKM5VfPCKGLpkBrbKeOw==", + "requires": { + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "invariant": "^2.2.4", + "metro-symbolicate": "0.58.0", + "ob1": "0.58.0", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + } + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + } + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "react-native-arkit": { + "version": "file:..", + "requires": { + "@panter/react-animation-frame": "^0.3.7", + "fast-deep-equal": "^1.0.0", + "lodash": "^4.17.4", + "prop-types": "^15.6.0" + }, + "dependencies": { + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + } + } + }, + "react-native-svg": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-12.1.0.tgz", + "integrity": "sha512-1g9qBRci7man8QsHoXn6tP3DhCDiypGgc6+AOWq+Sy+PmP6yiyf8VmvKuoqrPam/tf5x+ZaBT2KI0gl7bptZ7w==", + "requires": { + "css-select": "^2.1.0", + "css-tree": "^1.0.0-alpha.39" + } + }, + "react-native-yunolink": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/react-native-yunolink/-/react-native-yunolink-2.2.0.tgz", + "integrity": "sha512-Wc78Uclv+0sUTcF43erLmv6BQwl8Uwj531xYgNsgYOwiILbX1QuYEpDQ/JBsqz1YANpxk9uQvort7YVx8/sF6Q==", + "requires": { + "@oclif/command": "^1.5.2", + "@oclif/config": "^1.8.6", + "@oclif/plugin-help": "^2.1.2", + "chokidar": "^2.0.4", + "debug": "^4.0.1", + "mkdirp": "^0.5.1", + "safe-json-stringify": "^1.2.0" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "react-refresh": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", + "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==" + }, + "react-test-renderer": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.13.1.tgz", + "integrity": "sha512-Sn2VRyOK2YJJldOqoh8Tn/lWQ+ZiKhyZTPtaO0Q6yNj+QDbmRkVFap6pZPy3YQk8DScRDfyqm/KxKYP9gCMRiQ==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "react-is": "^16.8.6", + "scheduler": "^0.19.1" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "parse-json": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "realpath-native": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-2.0.0.tgz", + "integrity": "sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q==", + "dev": true + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "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" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "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.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "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.3", + "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.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "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" + } + } + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "dev": true, + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "dependencies": { + "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" + } + } + } + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "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==" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "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.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" + }, + "run-parallel": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", + "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==" + }, + "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-json-stringify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==" + }, + "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==" + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "^2.1.1" + } + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "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" + } + }, + "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==", + "dev": true, + "optional": true + }, + "side-channel": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", + "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", + "dev": true, + "requires": { + "es-abstract": "^1.18.0-next.0", + "object-inspect": "^1.8.0" + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "simple-plist": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.1.1.tgz", + "integrity": "sha512-pKMCVKvZbZTsqYR6RKgLfBHkh2cV89GXcA/0CVPje3sOiNOnXA8+rp/ciAMZ7JRaUdLzlEM6JFfUn+fS6Nt3hg==", + "requires": { + "bplist-creator": "0.0.8", + "bplist-parser": "0.2.0", + "plist": "^3.0.1" + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "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" + }, + "dependencies": { + "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" + } + }, + "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=" + } + } + }, + "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" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "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.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "atob": "^2.1.2", + "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.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "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.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "dev": true + }, + "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.4", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.4.tgz", + "integrity": "sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w==", + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + } + } + }, + "stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "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=" + }, + "string-length": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", + "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^5.2.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==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "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==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "string.prototype.matchall": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.3.tgz", + "integrity": "sha512-OBxYDA2ifZQ2e13cP82dWFMaCV9CGF8GzmN4fljBVw5O5wep0lu4gacm1OL6MjROoUnB8VbkWRThqkV2YFLNxw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3" + } + }, + "string.prototype.trimend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", + "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", + "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "sudo-prompt": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", + "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.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=" + } + } + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + } + }, + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "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": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "requires": { + "ip-regex": "^2.1.0", + "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.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "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" + } + }, + "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-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "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=" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "ua-parser-js": { + "version": "0.7.23", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.23.tgz", + "integrity": "sha512-m4hvMLxgGHXG3O3fQVAyyAQpZzDOvwnhOTjYz5Xmr7r/+LpkNy3vJXdVRWgd1TkAb7NGROZuSy96CrlNVjA7KA==" + }, + "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=" + }, + "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.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" + }, + "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=" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "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==" + }, + "use-subscription": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz", + "integrity": "sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==", + "requires": { + "object-assign": "^4.1.1" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "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.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "v8-compile-cache": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "dev": true + }, + "v8-to-istanbul": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz", + "integrity": "sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + } + }, + "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==", + "dev": true, + "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.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "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.5.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz", + "integrity": "sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A==" + }, + "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": "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" + } + }, + "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=" + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "requires": { + "string-width": "^4.0.0" + } + }, + "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": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.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.1.0", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-2.1.0.tgz", + "integrity": "sha512-uCrmPITrqTEzhn0TtT57fJaNaw8YJs1aCzs+P/QqxsDbvPZSv7XMPPwXrKvHtD6pLjBM/NaVwraWJm8q83Y4iQ==", + "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=" + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "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.31", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", + "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==" + }, + "xpipe": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/xpipe/-/xpipe-1.0.5.tgz", + "integrity": "sha1-jdi/Rfw/f1Xw4FS4ePQ6YmFNr98=" + }, + "xregexp": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.4.1.tgz", + "integrity": "sha512-2u9HwfadaJaY9zHtRRnH6BY6CQVNQKkYm3oLtC9gJXXzfsbACg5X5e4EZZGVAH+YIfa+QA9lsFQTTe3HURF3ag==", + "dev": true, + "requires": { + "@babel/runtime-corejs3": "^7.12.1" + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.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": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } +} diff --git a/testproject/package.json b/testproject/package.json new file mode 100644 index 00000000..8c50500a --- /dev/null +++ b/testproject/package.json @@ -0,0 +1,33 @@ +{ + "name": "testproject", + "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 .", + "watch-modules": "npx rn-link ../" + }, + "dependencies": { + "react": "16.13.1", + "react-native": "0.63.4", + "react-native-arkit": "../", + "react-native-svg": "^12.1.0", + "react-native-yunolink": "^2.2.0" + }, + "devDependencies": { + "@babel/core": "7.12.10", + "@babel/runtime": "7.12.5", + "@react-native-community/eslint-config": "1.1.0", + "babel-jest": "25.5.1", + "eslint": "6.8.0", + "jest": "25.5.4", + "metro-react-native-babel-preset": "0.59.0", + "react-test-renderer": "16.13.1" + }, + "jest": { + "preset": "react-native" + } +} From f0235b58e38e2053ceaaa701230f80a26132834e Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 13 Dec 2020 14:05:15 -0500 Subject: [PATCH 350/356] test project builds and loads into AR --- testproject/App.js | 216 ++++++++++++------------- testproject/ios/testproject/Info.plist | 2 + testproject/metro.config.js | 18 +++ 3 files changed, 127 insertions(+), 109 deletions(-) diff --git a/testproject/App.js b/testproject/App.js index 23cd158d..74dd9649 100644 --- a/testproject/App.js +++ b/testproject/App.js @@ -1,114 +1,112 @@ -/** - * Sample React Native App - * https://github.com/facebook/react-native - * - * @format - * @flow strict-local - */ +// index.ios.js -import React from 'react'; -import { - SafeAreaView, - StyleSheet, - ScrollView, - View, - Text, - StatusBar, -} from 'react-native'; +import React, { Component } from 'react'; +import { AppRegistry, View } from 'react-native'; +import { ARKit } from 'react-native-arkit'; -import { - Header, - LearnMoreLinks, - Colors, - DebugInstructions, - ReloadInstructions, -} from 'react-native/Libraries/NewAppScreen'; +export default class ReactNativeARKit extends Component { + render() { + return ( + + React$Node = () => { - return ( - <> - - - -
- {global.HermesInternal == null ? null : ( - - Engine: Hermes - - )} - - - Step One - - Edit App.js to change this - screen and then come back to see your edits. - - - - See Your Changes - - - - - - Debug - - - - - - Learn More - - Read the docs to discover what to do next: - - - - - - - - ); -}; + // enable light estimation (defaults to true) + lightEstimationEnabled + // get the current lightEstimation (if enabled) + // it fires rapidly, so better poll it from outside with + // ARKit.getCurrentLightEstimation() + onLightEstimation={e => console.log(e.nativeEvent)} -const styles = StyleSheet.create({ - scrollView: { - backgroundColor: Colors.lighter, - }, - engine: { - position: 'absolute', - right: 0, - }, - body: { - backgroundColor: Colors.white, - }, - sectionContainer: { - marginTop: 32, - paddingHorizontal: 24, - }, - sectionTitle: { - fontSize: 24, - fontWeight: '600', - color: Colors.black, - }, - sectionDescription: { - marginTop: 8, - fontSize: 18, - fontWeight: '400', - color: Colors.dark, - }, - highlight: { - fontWeight: '700', - }, - footer: { - color: Colors.dark, - fontSize: 12, - fontWeight: '600', - padding: 4, - paddingRight: 12, - textAlign: 'right', - }, -}); + // event listener for (horizontal) plane detection + onPlaneDetected={anchor => console.log(anchor)} -export default App; + // event listener for plane update + onPlaneUpdated={anchor => console.log(anchor)} + + // arkit sometimes removes detected planes + onPlaneRemoved={anchor => console.log(anchor)} + + // event listeners for all anchors, see [Planes and Anchors](#planes-and-anchors) + onAnchorDetected={anchor => console.log(anchor)} + onAnchorUpdated={anchor => console.log(anchor)} + onAnchorRemoved={anchor => console.log(anchor)} + + // you can detect images and will get an anchor for these images + detectionImages={[{ resourceGroupName: 'DetectionImages' }]} + + + onARKitError={console.log} // if arkit could not be initialized (e.g. missing permissions), you will get notified here + > + + + + + + + + + + + + + + + + ); + } +} + +AppRegistry.registerComponent('ReactNativeARKit', () => ReactNativeARKit); \ No newline at end of file diff --git a/testproject/ios/testproject/Info.plist b/testproject/ios/testproject/Info.plist index eed98dc7..5d2313fc 100644 --- a/testproject/ios/testproject/Info.plist +++ b/testproject/ios/testproject/Info.plist @@ -41,6 +41,8 @@ UILaunchStoryboardName LaunchScreen + NSCameraUsageDescription + Display AR content UIRequiredDeviceCapabilities armv7 diff --git a/testproject/metro.config.js b/testproject/metro.config.js index 13a96421..7509ad82 100644 --- a/testproject/metro.config.js +++ b/testproject/metro.config.js @@ -5,6 +5,16 @@ * @format */ +const path = require('path'); + +const extraNodeModules = { + 'react-native-arkit': path.resolve(__dirname + '/../'), +}; + +const watchFolders = [ + path.resolve(__dirname + '/../') +]; + module.exports = { transformer: { getTransformOptions: async () => ({ @@ -14,4 +24,12 @@ module.exports = { }, }), }, + resolver: { + extraNodeModules: new Proxy(extraNodeModules, { + get: (target, name) => + //redirects dependencies referenced from common/ to local node_modules + name in target ? target[name] : path.join(process.cwd(), `node_modules/${name}`), + }), + }, + watchFolders, }; From 8a0bd63c3b727bea99b6745c7a639fdc7865cf8b Mon Sep 17 00:00:00 2001 From: yoursobojack Date: Sun, 13 Dec 2020 18:13:33 -0500 Subject: [PATCH 351/356] add docs to function --- README.md | 13 +++++++++++++ testproject/ios/Podfile.lock | 2 +- testproject/package-lock.json | 3 +-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0f5c5218..0ea6297c 100644 --- a/README.md +++ b/README.md @@ -229,6 +229,8 @@ An `DetectionImage` is an image or image resource group that should be detected See https://developer.apple.com/documentation/arkit/arreferenceimage?language=objc how to add these images. +You can also pass in a list of URLS to detect images dynamicaly from the web `detectionImages={[{ arDetectionImages: myImages }]}`. + You will then receive theses images in `onAnchorDetected/onAnchorUpdated`. See also [Planes and Anchors](#planes-and-anchors) for more details. `DetectionImage` has these properties @@ -252,9 +254,20 @@ We probably will add the option to load images from other sources as well (PRs e | `onPlaneDetected` | `Anchor` | When a plane anchor is first detected. | `onPlaneUpdated` | `Anchor` | When a detected plane is updated | `onPlaneRemoved` | `Anchor` | When a detected plane is removed +| `onRotationGesture` | `{"rotation": 1.4, "velocity": 1}` | Returns new value for Z axis of rotation when an anchor is rotated with.two fingers +| `onPinchGesture` | `{"scale": 1.0, "velocity": 1.9}` | Returns new scale for anchor when an anchor is pinched with two fingers. See [Planes and Anchors](#planes-and-anchors) for Details about anchors +#### Callbacks + +| Callback Name | Callbacks | Examples | Notes +|---|---|---|---| +| `addAnchorByLocation` | `onAnchorUpdated, onAnchorDetected` | `ARKit.addAnchorByLocation(name, locationLatidude, locationLongitude, landmarkLatitude, landmarkLongitude, locationHorizontalAccruacy, locationHorizontalAccruacy, locationVerticalAccuracy, landmarkVerticalAccuracy, locationAltitude, landmarkAltitude + );`| ⚠️ (This function needs work and provides very inconsistent results, if you have ways to improve it please open a PR. Arkit/CoreLocation solves this problem much better if you would like to find a way to import their functions into this library. https://github.com/ProjectDent/ARKit-CoreLocation. Pass in location information for the location of the user and the location information of the landmark where you want the AR anchor to appear. worldAlignment Must be set as GravityAndHeading. Returns position of anchor in onAnchorUpdated callback. + + +See [Planes and Anchors](#planes-and-anchors) for Details about anchors #### Planes and Anchors diff --git a/testproject/ios/Podfile.lock b/testproject/ios/Podfile.lock index 7716379a..89de401e 100644 --- a/testproject/ios/Podfile.lock +++ b/testproject/ios/Podfile.lock @@ -476,4 +476,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 2e2fae10f62d1cac4e25e99962003b75850b07ee -COCOAPODS: 1.9.3 +COCOAPODS: 1.10.0 diff --git a/testproject/package-lock.json b/testproject/package-lock.json index 5bb38ff5..3638fa3c 100644 --- a/testproject/package-lock.json +++ b/testproject/package-lock.json @@ -10795,8 +10795,7 @@ "dependencies": { "fast-deep-equal": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + "bundled": true } } }, From c5d8226c292e8b0f7d4da6d031cb2659dc7ce6d2 Mon Sep 17 00:00:00 2001 From: yoursobojack Date: Sun, 13 Dec 2020 18:14:57 -0500 Subject: [PATCH 352/356] fix redme typo --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 0ea6297c..92aad5d6 100644 --- a/README.md +++ b/README.md @@ -263,8 +263,7 @@ See [Planes and Anchors](#planes-and-anchors) for Details about anchors | Callback Name | Callbacks | Examples | Notes |---|---|---|---| -| `addAnchorByLocation` | `onAnchorUpdated, onAnchorDetected` | `ARKit.addAnchorByLocation(name, locationLatidude, locationLongitude, landmarkLatitude, landmarkLongitude, locationHorizontalAccruacy, locationHorizontalAccruacy, locationVerticalAccuracy, landmarkVerticalAccuracy, locationAltitude, landmarkAltitude - );`| ⚠️ (This function needs work and provides very inconsistent results, if you have ways to improve it please open a PR. Arkit/CoreLocation solves this problem much better if you would like to find a way to import their functions into this library. https://github.com/ProjectDent/ARKit-CoreLocation. Pass in location information for the location of the user and the location information of the landmark where you want the AR anchor to appear. worldAlignment Must be set as GravityAndHeading. Returns position of anchor in onAnchorUpdated callback. +| `addAnchorByLocation` | `onAnchorUpdated, onAnchorDetected` | `ARKit.addAnchorByLocation(name, locationLatidude, locationLongitude, landmarkLatitude, landmarkLongitude, locationHorizontalAccruacy, locationHorizontalAccruacy, locationVerticalAccuracy, landmarkVerticalAccuracy, locationAltitude, landmarkAltitude);`| ⚠️ (This function needs work and provides very inconsistent results, if you have ways to improve it please open a PR. Arkit/CoreLocation solves this problem much better if you would like to find a way to import their functions into this library. https://github.com/ProjectDent/ARKit-CoreLocation. Pass in location information for the location of the user and the location information of the landmark where you want the AR anchor to appear. worldAlignment Must be set as GravityAndHeading. Returns position of anchor in onAnchorUpdated callback. See [Planes and Anchors](#planes-and-anchors) for Details about anchors From 8496d41d734fe08c4d291bce0f969a21eb5fc512 Mon Sep 17 00:00:00 2001 From: yoursobojack Date: Sun, 13 Dec 2020 18:17:54 -0500 Subject: [PATCH 353/356] update readme --- README.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/README.md b/README.md index 92aad5d6..411bcaea 100644 --- a/README.md +++ b/README.md @@ -263,12 +263,7 @@ See [Planes and Anchors](#planes-and-anchors) for Details about anchors | Callback Name | Callbacks | Examples | Notes |---|---|---|---| -| `addAnchorByLocation` | `onAnchorUpdated, onAnchorDetected` | `ARKit.addAnchorByLocation(name, locationLatidude, locationLongitude, landmarkLatitude, landmarkLongitude, locationHorizontalAccruacy, locationHorizontalAccruacy, locationVerticalAccuracy, landmarkVerticalAccuracy, locationAltitude, landmarkAltitude);`| ⚠️ (This function needs work and provides very inconsistent results, if you have ways to improve it please open a PR. Arkit/CoreLocation solves this problem much better if you would like to find a way to import their functions into this library. https://github.com/ProjectDent/ARKit-CoreLocation. Pass in location information for the location of the user and the location information of the landmark where you want the AR anchor to appear. worldAlignment Must be set as GravityAndHeading. Returns position of anchor in onAnchorUpdated callback. - - -See [Planes and Anchors](#planes-and-anchors) for Details about anchors - - +| `addAnchorByLocation` | `onAnchorUpdated, onAnchorDetected` | `ARKit.addAnchorByLocation(name, locationLatidude, locationLongitude, landmarkLatitude, landmarkLongitude, locationHorizontalAccruacy, locationHorizontalAccruacy, locationVerticalAccuracy, landmarkVerticalAccuracy, locationAltitude, landmarkAltitude);`| ⚠️ (This function needs work and provides very inconsistent results, if you have ways to improve it please open a PR. Arkit/CoreLocation solves this problem much better if you would like to find a way to import their functions into this library. https://github.com/ProjectDent/ARKit-CoreLocation ⚠️. Pass in location information of the user and the location information of the landmark where you want the AR anchor to appear. worldAlignment Must be set as GravityAndHeading. Returns position of anchor in onAnchorUpdated callback. #### Planes and Anchors ARKit can detect different anchors in the real world: From 66d973ab75f999df8bf234d70eb07d052a734598 Mon Sep 17 00:00:00 2001 From: yoursobojack Date: Tue, 26 Jan 2021 21:36:27 -0500 Subject: [PATCH 354/356] update iamge line --- components/ARImage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/ARImage.js b/components/ARImage.js index 1e6a6b2a..1a7a30a6 100644 --- a/components/ARImage.js +++ b/components/ARImage.js @@ -13,7 +13,7 @@ import { material } from './lib/propTypes'; import createArComponent from './lib/createArComponent'; const ARImage = createArComponent( - { mount: NativeModules.ARImageManager.mount, pick: ['id'] }, + // { mount: NativeModules.ARImageManager.mount, pick: ['id'] }, { imageUrl: PropTypes.string, material From e49fc7fbf69ee941055b51c68fb6d872f87f1c66 Mon Sep 17 00:00:00 2001 From: yoursobojack Date: Wed, 17 Feb 2021 20:59:21 -0500 Subject: [PATCH 355/356] set node props --- ios/RCTConvert+ARKit.m | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/ios/RCTConvert+ARKit.m b/ios/RCTConvert+ARKit.m index 0b64a844..9c48f530 100644 --- a/ios/RCTConvert+ARKit.m +++ b/ios/RCTConvert+ARKit.m @@ -151,7 +151,7 @@ + (SCNCapsule *)SCNCapsule:(id)json { } + (SCNImageNode *)SCNImageNode:(id)json { - NSLog(@"setDeviceMotionUpdateInterval: %f", json[@"imageUrl"]); + NSLog(@"imageNode: %f", json[@"imageUrl"]); SCNPlane *planeGeometry = [SCNPlane planeWithWidth:0.5 height:0.5]; SCNMaterial *material = [SCNMaterial material]; @@ -167,14 +167,7 @@ + (SCNImageNode *)SCNImageNode:(id)json { planeGeometry.materials = materials; SCNImageNode *paintingNode= [SCNNode nodeWithGeometry:planeGeometry]; - SCNMatrix4 transform = SCNMatrix4Identity; - SCNVector3 angles = SCNVector3Make(0, 0, 0); - SCNVector3 position = SCNVector3Make(0, 0, -3); - - - paintingNode.transform = transform; - paintingNode.eulerAngles = angles; - paintingNode.position = position; + [self setNodeProperties:paintingNode properties:json]; return paintingNode; } From ea98caa0d029e8907c346ee617f352b7391689d8 Mon Sep 17 00:00:00 2001 From: yoursobojack Date: Thu, 18 Feb 2021 22:05:44 -0500 Subject: [PATCH 356/356] update iamge node --- ios/RCTConvert+ARKit.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ios/RCTConvert+ARKit.m b/ios/RCTConvert+ARKit.m index 9c48f530..fc7f8904 100644 --- a/ios/RCTConvert+ARKit.m +++ b/ios/RCTConvert+ARKit.m @@ -153,7 +153,7 @@ + (SCNCapsule *)SCNCapsule:(id)json { + (SCNImageNode *)SCNImageNode:(id)json { NSLog(@"imageNode: %f", json[@"imageUrl"]); - SCNPlane *planeGeometry = [SCNPlane planeWithWidth:0.5 height:0.5]; + SCNPlane *planeGeometry = [SCNPlane planeWithWidth:1.5 height:1.5]; SCNMaterial *material = [SCNMaterial material]; NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: json[@"imageUrl"]]]; @@ -168,6 +168,7 @@ + (SCNImageNode *)SCNImageNode:(id)json { SCNImageNode *paintingNode= [SCNNode nodeWithGeometry:planeGeometry]; [self setNodeProperties:paintingNode properties:json]; + NSLog(@"CURRENCT IMAGE NODE: %f", json[@"imageUrl"]); return paintingNode; }