diff --git a/circle.yml b/circle.yml index 64e4b9c59c34..365af0195dcb 100644 --- a/circle.yml +++ b/circle.yml @@ -3,6 +3,8 @@ machine: version: 7.2 node: version: 5.7.0 + java: + version: oraclejdk8 environment: GOPATH: $HOME/go-path PATH: $GOROOT/bin:$PATH diff --git a/desktop/test/render-visdiff.js b/desktop/test/render-visdiff.js index 38a950071657..f6687c5c8768 100644 --- a/desktop/test/render-visdiff.js +++ b/desktop/test/render-visdiff.js @@ -5,7 +5,7 @@ import fs from 'fs' import _ from 'lodash' import {app, BrowserWindow, ipcMain} from 'electron' import {resolveRoot, resolveRootAsURL} from '../resolve-root' -import dumbComponentMap from '../shared/dev/dumb-component-map.desktop' +import dumbComponentMap from '../shared/dev/dumb-sheet/component-map.desktop' const WORKER_COUNT = 10 const CANVAS_SIZE = 1000 diff --git a/desktop/webpack.config.base.js b/desktop/webpack.config.base.js index 17b985dd496e..fea957dab9f4 100644 --- a/desktop/webpack.config.base.js +++ b/desktop/webpack.config.base.js @@ -24,11 +24,7 @@ module.exports = { loader: 'json', }, { test: /\.(gif|png)$/, - loader: 'file', - query: { - emitFile: false, - name: 'NOT_USED_[name].[ext]', - }, + loader: 'null', }], }, output: { diff --git a/desktop/webpack.config.development.js b/desktop/webpack.config.development.js index b8f87110dbcf..64ed6d58024c 100644 --- a/desktop/webpack.config.development.js +++ b/desktop/webpack.config.development.js @@ -43,6 +43,7 @@ config.plugins.push(new UnusedFilesWebpackPlugin({ '../shared/test/**', // Misc '../shared/packager/wipe-cache.js', + '../shared/dev/log-send/index.js', ], }, })) diff --git a/react-native/android/app/build.gradle b/react-native/android/app/build.gradle index 8e3d431a9bf7..4fd6b31a0c15 100644 --- a/react-native/android/app/build.gradle +++ b/react-native/android/app/build.gradle @@ -155,7 +155,6 @@ dependencies { compile 'com.android.support:appcompat-v7:23.0.1' compile "com.facebook.react:react-native:+" // From node_modules compile project(':ReactNativeBarcodescanner') - compile project(':RNPermissionsModule') compile 'org.slf4j:slf4j-api:1.7.21' compile 'com.github.tony19:logback-android-core:1.1.1-5' compile('com.github.tony19:logback-android-classic:1.1.1-5') { diff --git a/react-native/android/app/src/main/java/io/keybase/ossifrage/MainActivity.java b/react-native/android/app/src/main/java/io/keybase/ossifrage/MainActivity.java index b0f75280cb48..94d60587dbaf 100644 --- a/react-native/android/app/src/main/java/io/keybase/ossifrage/MainActivity.java +++ b/react-native/android/app/src/main/java/io/keybase/ossifrage/MainActivity.java @@ -9,7 +9,6 @@ import android.util.Log; import android.view.KeyEvent; -import com.burnweb.rnpermissions.RNPermissionsPackage; import com.facebook.react.ReactActivity; import com.facebook.react.ReactInstanceManager; import com.facebook.react.ReactRootView; @@ -33,11 +32,6 @@ public class MainActivity extends ReactActivity { @TargetApi(Build.VERSION_CODES.KITKAT) protected void onCreate(Bundle savedInstanceState) { logFile = this.getFileStreamPath("android.log"); - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M && !Settings.canDrawOverlays(this) && this.getUseDeveloperSupport()) { - Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName())); - startActivityForResult(intent, -1); - } - initOnce(this.getFilesDir().getPath(), logFile.getAbsolutePath(), "staging", false); try { @@ -62,12 +56,6 @@ public boolean onKeyUp(int keyCode, KeyEvent event) { } return super.onKeyUp(keyCode, event); } - // For dealing with permissions using RNPermissionsPackage - @Override - public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { - RNPermissionsPackage.onRequestPermissionsResult(requestCode, permissions, grantResults); - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - } /** * Returns the name of the main component registered from JavaScript. diff --git a/react-native/android/app/src/main/java/io/keybase/ossifrage/MainApplication.java b/react-native/android/app/src/main/java/io/keybase/ossifrage/MainApplication.java index 3046f680f8a4..b6f407cd1d1c 100644 --- a/react-native/android/app/src/main/java/io/keybase/ossifrage/MainApplication.java +++ b/react-native/android/app/src/main/java/io/keybase/ossifrage/MainApplication.java @@ -11,7 +11,6 @@ import android.util.Log; import android.view.KeyEvent; -import com.burnweb.rnpermissions.RNPermissionsPackage; import com.eguma.barcodescanner.BarcodeScannerPackage; import com.facebook.react.ReactApplication; @@ -52,7 +51,6 @@ protected List getPackages() { return Arrays.asList( new MainReactPackage(), new BarcodeScannerPackage(), - new RNPermissionsPackage(), new KBReactPackage(logFile.getAbsolutePath())); } diff --git a/react-native/android/build.gradle b/react-native/android/build.gradle index 6e7667863e5d..4e748f046afb 100644 --- a/react-native/android/build.gradle +++ b/react-native/android/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.3' + classpath 'com.android.tools.build:gradle:2.2.0' classpath 'com.github.triplet.gradle:play-publisher:1.1.4' // To publish from gradle // NOTE: Do not place your application dependencies here; they belong diff --git a/react-native/android/settings.gradle b/react-native/android/settings.gradle index ba9177a21ad8..a6229057809f 100644 --- a/react-native/android/settings.gradle +++ b/react-native/android/settings.gradle @@ -3,5 +3,3 @@ rootProject.name = 'Keybase' include ':app', ':keybaselib' include ':ReactNativeBarcodescanner', ':app' project(':ReactNativeBarcodescanner').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-barcodescanner/android') -include ':RNPermissionsModule', ':app' -project(':RNPermissionsModule').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-android-permissions/android') diff --git a/react-native/ios/Keybase.xcodeproj/project.pbxproj b/react-native/ios/Keybase.xcodeproj/project.pbxproj index 053cd561ff54..b6cfaaa31e71 100644 --- a/react-native/ios/Keybase.xcodeproj/project.pbxproj +++ b/react-native/ios/Keybase.xcodeproj/project.pbxproj @@ -24,9 +24,6 @@ DB1D5FEC1CA99E67006DC784 /* kb.ttf in Resources */ = {isa = PBXBuildFile; fileRef = DB1D5FE21CA99E67006DC784 /* kb.ttf */; }; DB27DE571D747A6C003DE8BC /* Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = DB27DE561D747A6C003DE8BC /* Utils.m */; }; DB7538FD1D776CC400AFA61B /* Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = DB27DE561D747A6C003DE8BC /* Utils.m */; }; - DB7539021D776CC400AFA61B /* AppDefault.swift in Sources */ = {isa = PBXBuildFile; fileRef = E94938FF1BCC1E4300137015 /* AppDefault.swift */; }; - DB7539031D776CC400AFA61B /* App.swift in Sources */ = {isa = PBXBuildFile; fileRef = E94938C61BCC082C00137015 /* App.swift */; }; - DB7539041D776CC400AFA61B /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E964581C1BC8542000902F39 /* AppDelegate.swift */; }; DB7539071D776CC400AFA61B /* libRCTCamera.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DBF20EBA1BB34AD00048BC26 /* libRCTCamera.a */; }; DB7539081D776CC400AFA61B /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; DB7539091D776CC400AFA61B /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; }; @@ -50,6 +47,9 @@ DB75391D1D776CC400AFA61B /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DBDCF3081B8D03DD00BA95D8 /* Images.xcassets */; }; DB7539351D777E7100AFA61B /* Engine-Test.m in Sources */ = {isa = PBXBuildFile; fileRef = DB7539341D777E7100AFA61B /* Engine-Test.m */; }; DB7539371D777E8400AFA61B /* LogSend-Test.m in Sources */ = {isa = PBXBuildFile; fileRef = DB7539361D777E8400AFA61B /* LogSend-Test.m */; }; + DBBCC6131D9C4A8100312652 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DBBCC6121D9C4A8100312652 /* AppDelegate.m */; }; + DBBCC6161D9C4BA700312652 /* KeyListener.m in Sources */ = {isa = PBXBuildFile; fileRef = DBBCC6151D9C4BA700312652 /* KeyListener.m */; }; + DBBCC6181D9C5C6A00312652 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DBBCC6171D9C5C6A00312652 /* main.m */; }; DBC44FCE1CD3AF9400A226BC /* Lato_bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = DBC44FC71CD3AA1000A226BC /* Lato_bold.ttf */; }; DBC44FCF1CD3AF9400A226BC /* Lato_italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = DBC44FC81CD3AA1000A226BC /* Lato_italic.ttf */; }; DBC44FD01CD3AF9400A226BC /* Lato-Semi_bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = DBC44FC91CD3AA1000A226BC /* Lato-Semi_bold.ttf */; }; @@ -59,13 +59,7 @@ DBC44FD41CD3AF9400A226BC /* SourceCodePro.ttf in Resources */ = {isa = PBXBuildFile; fileRef = DBC44FCD1CD3AA1000A226BC /* SourceCodePro.ttf */; }; DBCE36251B90F14800ECADDE /* Engine.m in Sources */ = {isa = PBXBuildFile; fileRef = DBCE36241B90F14800ECADDE /* Engine.m */; }; DBDCF30E1B8D03DD00BA95D8 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DBDCF3081B8D03DD00BA95D8 /* Images.xcassets */; }; - DBDCF3531B8D04FD00BA95D8 /* ObjcTest.m in Sources */ = {isa = PBXBuildFile; fileRef = DBDCF3501B8D04FD00BA95D8 /* ObjcTest.m */; }; - DBDCF3541B8D04FD00BA95D8 /* ReactBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = DBDCF3511B8D04FD00BA95D8 /* ReactBridge.m */; }; - DBDCF3551B8D04FD00BA95D8 /* SwiftTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBDCF3521B8D04FD00BA95D8 /* SwiftTest.swift */; }; DBF20EC41BB34AF00048BC26 /* libRCTCamera.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DBF20EBA1BB34AD00048BC26 /* libRCTCamera.a */; }; - E94938C71BCC082C00137015 /* App.swift in Sources */ = {isa = PBXBuildFile; fileRef = E94938C61BCC082C00137015 /* App.swift */; }; - E94939001BCC1E4300137015 /* AppDefault.swift in Sources */ = {isa = PBXBuildFile; fileRef = E94938FF1BCC1E4300137015 /* AppDefault.swift */; }; - E964581D1BC8542000902F39 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E964581C1BC8542000902F39 /* AppDelegate.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -182,6 +176,11 @@ DB7539311D77753600AFA61B /* Keybase_For_Tests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Keybase_For_Tests-Bridging-Header.h"; sourceTree = ""; }; DB7539341D777E7100AFA61B /* Engine-Test.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Engine-Test.m"; sourceTree = ""; }; DB7539361D777E8400AFA61B /* LogSend-Test.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "LogSend-Test.m"; sourceTree = ""; }; + DBBCC6111D9C4A8100312652 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + DBBCC6121D9C4A8100312652 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + DBBCC6141D9C4BA700312652 /* KeyListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeyListener.h; sourceTree = ""; }; + DBBCC6151D9C4BA700312652 /* KeyListener.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KeyListener.m; sourceTree = ""; }; + DBBCC6171D9C5C6A00312652 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; DBC44FC71CD3AA1000A226BC /* Lato_bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Lato_bold.ttf; path = ../../../desktop/renderer/fonts/Lato_bold.ttf; sourceTree = ""; }; DBC44FC81CD3AA1000A226BC /* Lato_italic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Lato_italic.ttf; path = ../../../desktop/renderer/fonts/Lato_italic.ttf; sourceTree = ""; }; DBC44FC91CD3AA1000A226BC /* Lato-Semi_bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "Lato-Semi_bold.ttf"; path = "../../../desktop/renderer/fonts/Lato-Semi_bold.ttf"; sourceTree = ""; }; @@ -194,14 +193,7 @@ DBDCF3081B8D03DD00BA95D8 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; DBDCF3091B8D03DD00BA95D8 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; DBDCF3441B8D04FC00BA95D8 /* Keybase-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Keybase-Bridging-Header.h"; sourceTree = ""; }; - DBDCF34F1B8D04FD00BA95D8 /* ObjcTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjcTest.h; sourceTree = ""; }; - DBDCF3501B8D04FD00BA95D8 /* ObjcTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ObjcTest.m; sourceTree = ""; }; - DBDCF3511B8D04FD00BA95D8 /* ReactBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ReactBridge.m; sourceTree = ""; }; - DBDCF3521B8D04FD00BA95D8 /* SwiftTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwiftTest.swift; sourceTree = ""; }; DBF20EB41BB34AD00048BC26 /* RCTCamera.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTCamera.xcodeproj; path = "../node_modules/react-native-camera/ios/RCTCamera.xcodeproj"; sourceTree = ""; }; - E94938C61BCC082C00137015 /* App.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = App.swift; sourceTree = ""; }; - E94938FF1BCC1E4300137015 /* AppDefault.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDefault.swift; sourceTree = ""; }; - E964581C1BC8542000902F39 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -418,20 +410,18 @@ children = ( DB1D5FD61CA99DF4006DC784 /* Fonts */, 005BF9961BB9C6B000BD8953 /* Keybase.entitlements */, - E94938FF1BCC1E4300137015 /* AppDefault.swift */, - E964581C1BC8542000902F39 /* AppDelegate.swift */, - E94938C61BCC082C00137015 /* App.swift */, + DBBCC6111D9C4A8100312652 /* AppDelegate.h */, + DBBCC6121D9C4A8100312652 /* AppDelegate.m */, + DBBCC6141D9C4BA700312652 /* KeyListener.h */, + DBBCC6151D9C4BA700312652 /* KeyListener.m */, DBDCF3081B8D03DD00BA95D8 /* Images.xcassets */, DBDCF3091B8D03DD00BA95D8 /* Info.plist */, DBCE36231B90F14800ECADDE /* Engine.h */, DBCE36241B90F14800ECADDE /* Engine.m */, + DBBCC6171D9C5C6A00312652 /* main.m */, DB7539341D777E7100AFA61B /* Engine-Test.m */, - DBDCF34F1B8D04FD00BA95D8 /* ObjcTest.h */, - DBDCF3501B8D04FD00BA95D8 /* ObjcTest.m */, - DBDCF3511B8D04FD00BA95D8 /* ReactBridge.m */, DB27DE551D747A6B003DE8BC /* Utils.h */, DB27DE561D747A6C003DE8BC /* Utils.m */, - DBDCF3521B8D04FD00BA95D8 /* SwiftTest.swift */, A969A4161CF65CB200F273F2 /* LogSend.h */, A969A4091CF65C9C00F273F2 /* LogSend.m */, DB7539361D777E8400AFA61B /* LogSend-Test.m */, @@ -523,6 +513,7 @@ }; 13B07F861A680F5B00A75B9A = { DevelopmentTeam = 99229SGT5K; + LastSwiftMigration = 0800; SystemCapabilities = { com.apple.ApplicationGroups.iOS = { enabled = 1; @@ -779,13 +770,10 @@ files = ( DB27DE571D747A6C003DE8BC /* Utils.m in Sources */, A969A40A1CF65C9C00F273F2 /* LogSend.m in Sources */, - DBDCF3531B8D04FD00BA95D8 /* ObjcTest.m in Sources */, + DBBCC6181D9C5C6A00312652 /* main.m in Sources */, DBCE36251B90F14800ECADDE /* Engine.m in Sources */, - DBDCF3551B8D04FD00BA95D8 /* SwiftTest.swift in Sources */, - E94939001BCC1E4300137015 /* AppDefault.swift in Sources */, - E94938C71BCC082C00137015 /* App.swift in Sources */, - E964581D1BC8542000902F39 /* AppDelegate.swift in Sources */, - DBDCF3541B8D04FD00BA95D8 /* ReactBridge.m in Sources */, + DBBCC6131D9C4A8100312652 /* AppDelegate.m in Sources */, + DBBCC6161D9C4BA700312652 /* KeyListener.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -794,11 +782,8 @@ buildActionMask = 2147483647; files = ( DB7538FD1D776CC400AFA61B /* Utils.m in Sources */, - DB7539021D776CC400AFA61B /* AppDefault.swift in Sources */, DB7539371D777E8400AFA61B /* LogSend-Test.m in Sources */, DB7539351D777E7100AFA61B /* Engine-Test.m in Sources */, - DB7539031D776CC400AFA61B /* App.swift in Sources */, - DB7539041D776CC400AFA61B /* AppDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -886,6 +871,7 @@ PROVISIONING_PROFILE = ""; SWIFT_OBJC_BRIDGING_HEADER = "Keybase/Keybase-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; }; name = Debug; }; @@ -922,6 +908,7 @@ PRODUCT_NAME = Keybase; PROVISIONING_PROFILE = ""; SWIFT_OBJC_BRIDGING_HEADER = "Keybase/Keybase-Bridging-Header.h"; + SWIFT_VERSION = 3.0; }; name = Release; }; diff --git a/react-native/ios/Keybase/App.swift b/react-native/ios/Keybase/App.swift deleted file mode 100644 index 677f8319c1c3..000000000000 --- a/react-native/ios/Keybase/App.swift +++ /dev/null @@ -1,42 +0,0 @@ -import Foundation - -@objc(AppBridge) -class AppBridge: NSObject { - - func getDevConfig(cb: RCTResponseSenderBlock) { - let standardUserDefaults = NSUserDefaults.standardUserDefaults() - let registrationDomain = standardUserDefaults.volatileDomainForName(NSRegistrationDomain) - let appDomain = standardUserDefaults.persistentDomainForName(NSBundle.mainBundle().bundleIdentifier!) - - var defaultValues: [String: AnyObject] = [:] - var configuredValues: [String: AnyObject] = [:] - - for appDefault: AppDefault in [.APIServer, .RunMode, .HomeDirectory, .ReactHost] { - let key = String(appDefault) - if let defaultValue = registrationDomain[key] { - defaultValues[key] = defaultValue - } - if let configuredValue = appDomain?[key] { - configuredValues[key] = configuredValue - } - } - - cb([[ - "keys": [AppDefault]([.HomeDirectory, .RunMode, .APIServer, .ReactHost]).map { $0.rawValue }, - "defaults": defaultValues, - "configured": configuredValues - ]]) - } - - func setDevConfig(newConfig: [String: AnyObject]) { - for (k, v) in newConfig { - guard let appDefault = AppDefault(rawValue: k) else { - NSLog("Tried to set unknown default: \(k)") - continue - } - appDefault.objectValue = (v is NSNull) ? nil : v - } - NSUserDefaults.standardUserDefaults().synchronize() - } - -} \ No newline at end of file diff --git a/react-native/ios/Keybase/AppDefault.swift b/react-native/ios/Keybase/AppDefault.swift deleted file mode 100644 index 40d1820dabc5..000000000000 --- a/react-native/ios/Keybase/AppDefault.swift +++ /dev/null @@ -1,30 +0,0 @@ -import Foundation - -enum AppDefault: String { - - case APIServer = "APIServer" - case RunMode = "RunMode" - case HomeDirectory = "HomeDirectory" - case ReactHost = "ReactHost" - - var objectValue: AnyObject? { - get { return NSUserDefaults.standardUserDefaults().objectForKey(rawValue) } - nonmutating set { - if let newValue = newValue { - NSUserDefaults.standardUserDefaults().setObject(newValue, forKey: rawValue) - } else { - NSUserDefaults.standardUserDefaults().removeObjectForKey(rawValue) - } - } - } - - var stringValue: String? { - get { return NSUserDefaults.standardUserDefaults().stringForKey(rawValue) } - nonmutating set { objectValue = newValue } - } - - func setDefaultValue(value: AnyObject) { - NSUserDefaults.standardUserDefaults().registerDefaults([rawValue: value]) - } - -} \ No newline at end of file diff --git a/react-native/ios/Keybase/AppDelegate.h b/react-native/ios/Keybase/AppDelegate.h new file mode 100644 index 000000000000..39491102901d --- /dev/null +++ b/react-native/ios/Keybase/AppDelegate.h @@ -0,0 +1,18 @@ +// +// AppDelegate.h +// Keybase +// +// Created by Chris Nojima on 9/28/16. +// Copyright © 2016 Keybase. All rights reserved. +// + +#import + +@class Engine; + +@interface AppDelegate : UIResponder + +@property (nonatomic, strong) UIWindow *window; +@property (nonatomic, strong) Engine * engine; + +@end diff --git a/react-native/ios/Keybase/AppDelegate.m b/react-native/ios/Keybase/AppDelegate.m new file mode 100644 index 000000000000..aa59b64f2369 --- /dev/null +++ b/react-native/ios/Keybase/AppDelegate.m @@ -0,0 +1,78 @@ +// +// AppDelegate.m +// Keybase +// +// Created by Chris Nojima on 9/28/16. +// Copyright © 2016 Keybase. All rights reserved. +// + +#import "AppDelegate.h" + +#import "RCTBundleURLProvider.h" +#import "RCTRootView.h" +#import "KeyListener.h" +#import "Engine.h" +#import "LogSend.h" + +@interface AppDelegate () + +@property (nonatomic, strong) LogSend * logSender; + +@end + +@implementation AppDelegate + +- (void) setupGo +{ + + NSNumber * SecurityAccessGroupOverride = +#if SIMULATOR + @YES; +#else + @NO; +#endif + + NSString * home = NSHomeDirectory(); + +#if TESTING +#else + NSString * logFile = [home stringByAppendingPathComponent:@"ios.log"]; + + NSError * err; + self.engine = [[Engine alloc] initWithSettings:@{ + @"runmode": @"staging", + @"homedir": home, + @"logFile": logFile, + @"serverURI": @"", + @"SecurityAccessGroupOverride": SecurityAccessGroupOverride + } error:&err]; + + self.logSender = [[LogSend alloc] initWithPath:logFile]; +#endif + +} + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + [self setupGo]; + + NSURL *jsCodeLocation; + + jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil]; + + RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation + moduleName:@"Keybase" + initialProperties:nil + launchOptions:launchOptions]; + rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; + + self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; + KeyListener *rootViewController = [KeyListener new]; + rootViewController.bridge = rootView.bridge; + rootViewController.view = rootView; + self.window.rootViewController = rootViewController; + [self.window makeKeyAndVisible]; + return YES; +} + +@end diff --git a/react-native/ios/Keybase/AppDelegate.swift b/react-native/ios/Keybase/AppDelegate.swift deleted file mode 100644 index d3ced4d2dd49..000000000000 --- a/react-native/ios/Keybase/AppDelegate.swift +++ /dev/null @@ -1,129 +0,0 @@ -import UIKit - -func appDelegate() -> AppDelegate { - return UIApplication.sharedApplication().delegate as! AppDelegate -} - -@UIApplicationMain -@objc(AppDelegate) -class AppDelegate: UIResponder { - - var window: UIWindow? -#if TESTING -#else - var engine: Engine! - var logSender: LogSend! -#endif - - private func setupReactWithOptions(launchOptions: [NSObject: AnyObject]?) -> RCTRootView { - return RCTRootView(bundleURL: { - - #if DEBUG - if let reactHost = AppDefault.ReactHost.stringValue { - return NSURL(string: "http://\(reactHost)/index.ios.bundle?platform=ios&dev=true") - } else { - return NSBundle.mainBundle().URLForResource("main", withExtension: "jsbundle") - } - #else - return NSBundle.mainBundle().URLForResource("main", withExtension: "jsbundle") - #endif - }(), moduleName: "Keybase", initialProperties: nil, launchOptions: launchOptions) - } - - private func setupEngine() { - #if SIMULATOR - let SecurityAccessGroupOverride = true - #else - let SecurityAccessGroupOverride = false - #endif - - var home = AppDefault.HomeDirectory.stringValue ?? "" - if home == "" { - home = NSHomeDirectory() - } else { - let root = (NSHomeDirectory() as NSString).stringByAppendingPathComponent("Library") - home = (root as NSString).stringByAppendingPathComponent(home) - } - -#if TESTING -#else - let logFile = (home as NSString).stringByAppendingPathComponent("ios.log"); - - engine = try! Engine(settings: [ - "runmode": AppDefault.RunMode.stringValue!, - "homedir": home, - "logFile": logFile, - "serverURI": AppDefault.APIServer.stringValue ?? "", - "SecurityAccessGroupOverride": SecurityAccessGroupOverride - ]) - - logSender = LogSend(path: logFile); -#endif - } - -} - -class KeyListener: UIViewController { - override func canBecomeFirstResponder() -> Bool { - return true - } - - var bridge: RCTBridge! - - override var keyCommands: [UIKeyCommand]? { - return [ - UIKeyCommand(input: "[", modifierFlags: .Command, action: "goBackInTime:"), - UIKeyCommand(input: "]", modifierFlags: .Command, action: "goForwardInTime:"), - UIKeyCommand(input: "s", modifierFlags: [.Shift, .Command], action: "saveState:"), - UIKeyCommand(input: "c", modifierFlags: [.Shift, .Command], action: "clearState:") - ] - } - - func goBackInTime(sender: UIKeyCommand){ - bridge.eventDispatcher().sendDeviceEventWithName("backInTime", body: true) - } - - func goForwardInTime(sender: UIKeyCommand){ - bridge.eventDispatcher().sendDeviceEventWithName("forwardInTime", body: true) - } - - func saveState(sender: UIKeyCommand){ - bridge.eventDispatcher().sendDeviceEventWithName("saveState", body: true) - } - - func clearState(sender: UIKeyCommand){ - bridge.eventDispatcher().sendDeviceEventWithName("clearState", body: true) - } - -} - -extension AppDelegate: UIApplicationDelegate { - - func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { - AppDefault.RunMode.setDefaultValue("staging") - - #if SIMULATOR - AppDefault.ReactHost.setDefaultValue("localhost:8081") - #else - #if DEBUG - // Uncomment if you want your device to hit a local server while debugging -// AppDefault.ReactHost.setDefaultValue("192.168.1.50:8081") -// AppDefault.APIServer.setDefaultValue("http://192.168.1.50:3000") - #endif - #endif - - setupEngine() - - let rootViewController = KeyListener() - let rctView = setupReactWithOptions(launchOptions) - rootViewController.view = rctView - rootViewController.bridge = rctView.bridge - - let window = UIWindow(frame: UIScreen.mainScreen().bounds) - self.window = window - window.rootViewController = rootViewController - window.makeKeyAndVisible() - return true - } - -} diff --git a/react-native/ios/Keybase/Engine.m b/react-native/ios/Keybase/Engine.m index bbc30faec31b..8ce385c12c1e 100644 --- a/react-native/ios/Keybase/Engine.m +++ b/react-native/ios/Keybase/Engine.m @@ -10,7 +10,7 @@ #import #import "RCTEventDispatcher.h" -#import "Keybase-Swift.h" +#import "AppDelegate.h" #import "Utils.h" @interface Engine () @@ -98,7 +98,7 @@ @implementation ObjcEngine @synthesize bridge = _bridge; - (Engine *)engine { - AppDelegate *delegate = [UIApplication sharedApplication].delegate; + AppDelegate * delegate = (AppDelegate*)[UIApplication sharedApplication].delegate; return delegate.engine; } diff --git a/react-native/ios/Keybase/Info.plist b/react-native/ios/Keybase/Info.plist index 2e619515ee3d..5a9fbcbc1c32 100644 --- a/react-native/ios/Keybase/Info.plist +++ b/react-native/ios/Keybase/Info.plist @@ -58,5 +58,7 @@ 63ff6926-88f0-4db0-8886-a4bb56bd4ad5 UIViewControllerBasedStatusBarAppearance + NSCameraUsageDescription + Scanning codes diff --git a/react-native/ios/Keybase/KeyListener.h b/react-native/ios/Keybase/KeyListener.h new file mode 100644 index 000000000000..b77c1b9fea11 --- /dev/null +++ b/react-native/ios/Keybase/KeyListener.h @@ -0,0 +1,17 @@ +// +// KeyListener.h +// Keybase +// +// Created by Chris Nojima on 9/28/16. +// Copyright © 2016 Keybase. All rights reserved. +// + +#import + +@class RCTBridge; + +@interface KeyListener : UIViewController + +@property (nonatomic, strong) RCTBridge * bridge; + +@end diff --git a/react-native/ios/Keybase/KeyListener.m b/react-native/ios/Keybase/KeyListener.m new file mode 100644 index 000000000000..a4b58d67bf8a --- /dev/null +++ b/react-native/ios/Keybase/KeyListener.m @@ -0,0 +1,46 @@ +// +// KeyListener.m +// Keybase +// +// Created by Chris Nojima on 9/28/16. +// Copyright © 2016 Keybase. All rights reserved. +// + +#import "KeyListener.h" +#import "RCTEventDispatcher.h" + +@implementation KeyListener + +- (BOOL)canBecomeFirstResponder { + return YES; +} + +- (NSArray *)keyCommands { + return @[ + [UIKeyCommand keyCommandWithInput:@"[" modifierFlags:UIKeyModifierCommand action:@selector(goBackInTime:)], + [UIKeyCommand keyCommandWithInput:@"]" modifierFlags:UIKeyModifierCommand action:@selector(goForwardInTime:)], + [UIKeyCommand keyCommandWithInput:@"s" modifierFlags:UIKeyModifierCommand|UIKeyModifierShift action:@selector(saveState:)], + [UIKeyCommand keyCommandWithInput:@"c" modifierFlags:UIKeyModifierCommand|UIKeyModifierShift action:@selector(clearState:)] + ]; +} + +- (void)goBackInTime:(UIKeyCommand *)sender { + [self.bridge.eventDispatcher sendAppEventWithName:@"backInTime" + body:@true]; +} +- (void)goForwardInTime:(UIKeyCommand *)sender { + [self.bridge.eventDispatcher sendAppEventWithName:@"forwardInTime" + body:@true]; +} +- (void)saveState:(UIKeyCommand *)sender { + [self.bridge.eventDispatcher sendAppEventWithName:@"saveState" + body:@true]; +} +- (void)clearState:(UIKeyCommand *)sender { + [self.bridge.eventDispatcher sendAppEventWithName:@"clearState" + body:@true]; +} + + + +@end diff --git a/react-native/ios/Keybase/ObjcTest.h b/react-native/ios/Keybase/ObjcTest.h deleted file mode 100644 index 2fc25e302867..000000000000 --- a/react-native/ios/Keybase/ObjcTest.h +++ /dev/null @@ -1,11 +0,0 @@ -// Keybase -// -// Created by Chris Nojima on 8/25/15. -// Copyright (c) 2015 Keybase. All rights reserved. -// - -#import -#import "RCTBridgeModule.h" - -@interface ObjcTest : NSObject -@end diff --git a/react-native/ios/Keybase/ObjcTest.m b/react-native/ios/Keybase/ObjcTest.m deleted file mode 100644 index b2152aac5616..000000000000 --- a/react-native/ios/Keybase/ObjcTest.m +++ /dev/null @@ -1,67 +0,0 @@ -// -// Keybase -// -// Created by Chris Nojima on 8/25/15. -// Copyright (c) 2015 Keybase. All rights reserved. -// - -#import "ObjcTest.h" -#import -#import "RCTEventDispatcher.h" - -//#define FORCE_MAIN_QUEUE - -@interface ObjcTest() -@property NSInteger count; -@end - -@implementation ObjcTest - -// required by reactnative -@synthesize bridge=_bridge; - -RCT_EXPORT_MODULE(); - -- (instancetype)init { - if ((self = [super init])) { - self.count = 0; - [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(onTimer) userInfo:nil repeats:YES]; - } - return self; -} - -#pragma mark - Send event -- (void)onTimer { - [self.bridge.eventDispatcher sendDeviceEventWithName:@"EventName" - body:@{@"payload": [NSString stringWithFormat:@"%@", @(self.count++)]}]; -} - -#pragma mark - Exposed method - -RCT_EXPORT_METHOD(exampleWith:(NSString *)prefix withCallback:(RCTResponseSenderBlock)callback) { -#ifdef FORCE_MAIN_QUEUE - UIView * view = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 30, 30)]; - view.layer.backgroundColor = [UIColor redColor].CGColor; - - [[[[UIApplication sharedApplication] delegate] window] addSubview:view]; - - callback(@[[prefix stringByAppendingString:@" from ObjC (main thread)"]]); -#else - // Note you can trampoline to main queue using dispatch_async if you want - callback(@[[prefix stringByAppendingString:@" from ObjC (background thread)"]]); -#endif -} - -#ifdef FORCE_MAIN_QUEUE -- (dispatch_queue_t)methodQueue { - return dispatch_get_main_queue(); -} -#endif - -#pragma mark - Exposed Constants - -- (NSDictionary *)constantsToExport { - return @{ @"language": @"English" }; -} - -@end diff --git a/react-native/ios/Keybase/ReactBridge.m b/react-native/ios/Keybase/ReactBridge.m deleted file mode 100644 index edbdd9131e9b..000000000000 --- a/react-native/ios/Keybase/ReactBridge.m +++ /dev/null @@ -1,23 +0,0 @@ -// -// Keybase -// -// Created by Chris Nojima on 8/25/15. -// Copyright (c) 2015 Keybase. All rights reserved. -// - -#import -#import "RCTBridgeModule.h" - -@interface RCT_EXTERN_MODULE(SwiftTest, NSObject) - -RCT_EXTERN_METHOD(example:(NSString *)prefix callback:(RCTResponseSenderBlock)callback) - -@end - - -@interface RCT_EXTERN_REMAP_MODULE(App, AppBridge, NSObject) - -RCT_EXTERN_METHOD(getDevConfig:(RCTResponseSenderBlock)cb) -RCT_EXTERN_METHOD(setDevConfig:(NSDictionary*)newConfig) - -@end diff --git a/react-native/ios/Keybase/SwiftTest.swift b/react-native/ios/Keybase/SwiftTest.swift deleted file mode 100644 index a00e7929d6a0..000000000000 --- a/react-native/ios/Keybase/SwiftTest.swift +++ /dev/null @@ -1,17 +0,0 @@ -// -// Keybase -// -// Created by Chris Nojima on 8/25/15. -// Copyright (c) 2015 Keybase. All rights reserved. -// - -import Foundation - -@objc(SwiftTest) -class SwiftTest: NSObject { - - @objc func example(prefix: String, callback: RCTResponseSenderBlock) -> Void { - callback([prefix + " from Swift"]) - } - -} \ No newline at end of file diff --git a/react-native/ios/Keybase/main.m b/react-native/ios/Keybase/main.m new file mode 100644 index 000000000000..b1df44b953ec --- /dev/null +++ b/react-native/ios/Keybase/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/react-native/npm-shrinkwrap.json b/react-native/npm-shrinkwrap.json index c9da94e52192..2d9a8bd2d4cb 100644 --- a/react-native/npm-shrinkwrap.json +++ b/react-native/npm-shrinkwrap.json @@ -108,9 +108,9 @@ "resolved": "https://registry.npmjs.org/art/-/art-0.10.1.tgz" }, "asap": { - "version": "2.0.4", + "version": "2.0.5", "from": "asap@>=2.0.3 <2.1.0", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.4.tgz" + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz" }, "ast-query": { "version": "1.2.0", @@ -135,9 +135,9 @@ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" }, "babel-code-frame": { - "version": "6.11.0", - "from": "babel-code-frame@>=6.8.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.11.0.tgz", + "version": "6.16.0", + "from": "babel-code-frame@>=6.16.0 <7.0.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.16.0.tgz", "dependencies": { "js-tokens": { "version": "2.0.0", @@ -147,9 +147,9 @@ } }, "babel-core": { - "version": "6.11.4", - "from": "babel-core@>=6.6.4 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.11.4.tgz", + "version": "6.16.0", + "from": "babel-core@>=6.10.4 <7.0.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.16.0.tgz", "dependencies": { "source-map": { "version": "0.5.6", @@ -159,9 +159,9 @@ } }, "babel-generator": { - "version": "6.11.4", - "from": "babel-generator@>=6.11.4 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.11.4.tgz", + "version": "6.16.0", + "from": "babel-generator@>=6.16.0 <7.0.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.16.0.tgz", "dependencies": { "source-map": { "version": "0.5.6", @@ -211,36 +211,14 @@ "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.9.0.tgz" }, "babel-helper-replace-supers": { - "version": "6.14.0", + "version": "6.16.0", "from": "babel-helper-replace-supers@>=6.14.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.14.0.tgz", - "dependencies": { - "babel-template": { - "version": "6.14.0", - "from": "babel-template@^6.14.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.14.0.tgz" - }, - "babel-traverse": { - "version": "6.14.0", - "from": "babel-traverse@^6.14.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.14.0.tgz" - }, - "babel-types": { - "version": "6.14.0", - "from": "babel-types@^6.14.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.14.0.tgz" - }, - "babylon": { - "version": "6.9.1", - "from": "babylon@^6.9.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.9.1.tgz" - } - } + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.16.0.tgz" }, "babel-helpers": { - "version": "6.8.0", - "from": "babel-helpers@>=6.8.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.8.0.tgz" + "version": "6.16.0", + "from": "babel-helpers@>=6.16.0 <7.0.0", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.16.0.tgz" }, "babel-messages": { "version": "6.8.0", @@ -254,7 +232,7 @@ }, "babel-plugin-external-helpers": { "version": "6.8.0", - "from": "babel-plugin-external-helpers@>=6.5.0 <7.0.0", + "from": "babel-plugin-external-helpers@>=6.8.0 <7.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.8.0.tgz" }, "babel-plugin-react-transform": { @@ -293,9 +271,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.13.0.tgz" }, "babel-plugin-transform-class-properties": { - "version": "6.11.5", + "version": "6.16.0", "from": "babel-plugin-transform-class-properties@>=6.8.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.11.5.tgz" + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.16.0.tgz" }, "babel-plugin-transform-es2015-arrow-functions": { "version": "6.8.0", @@ -308,58 +286,14 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.8.0.tgz" }, "babel-plugin-transform-es2015-block-scoping": { - "version": "6.14.0", + "version": "6.15.0", "from": "babel-plugin-transform-es2015-block-scoping@>=6.8.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.14.0.tgz", - "dependencies": { - "babel-template": { - "version": "6.14.0", - "from": "babel-template@^6.14.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.14.0.tgz" - }, - "babel-traverse": { - "version": "6.14.0", - "from": "babel-traverse@^6.14.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.14.0.tgz" - }, - "babel-types": { - "version": "6.14.0", - "from": "babel-types@^6.14.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.14.0.tgz" - }, - "babylon": { - "version": "6.9.1", - "from": "babylon@^6.9.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.9.1.tgz" - } - } + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.15.0.tgz" }, "babel-plugin-transform-es2015-classes": { "version": "6.14.0", "from": "babel-plugin-transform-es2015-classes@>=6.8.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.14.0.tgz", - "dependencies": { - "babel-template": { - "version": "6.14.0", - "from": "babel-template@^6.14.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.14.0.tgz" - }, - "babel-traverse": { - "version": "6.14.0", - "from": "babel-traverse@^6.14.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.14.0.tgz" - }, - "babel-types": { - "version": "6.14.0", - "from": "babel-types@^6.14.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.14.0.tgz" - }, - "babylon": { - "version": "6.9.1", - "from": "babylon@^6.9.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.9.1.tgz" - } - } + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.14.0.tgz" }, "babel-plugin-transform-es2015-computed-properties": { "version": "6.8.0", @@ -367,9 +301,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.8.0.tgz" }, "babel-plugin-transform-es2015-destructuring": { - "version": "6.9.0", + "version": "6.16.0", "from": "babel-plugin-transform-es2015-destructuring@>=6.0.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.9.0.tgz" + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.16.0.tgz" }, "babel-plugin-transform-es2015-for-of": { "version": "6.8.0", @@ -387,31 +321,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.8.0.tgz" }, "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.14.0", + "version": "6.16.0", "from": "babel-plugin-transform-es2015-modules-commonjs@>=6.0.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.14.0.tgz", - "dependencies": { - "babel-template": { - "version": "6.14.0", - "from": "babel-template@>=6.14.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.14.0.tgz" - }, - "babel-traverse": { - "version": "6.14.0", - "from": "babel-traverse@>=6.14.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.14.0.tgz" - }, - "babel-types": { - "version": "6.14.0", - "from": "babel-types@>=6.14.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.14.0.tgz" - }, - "babylon": { - "version": "6.9.1", - "from": "babylon@>=6.9.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.9.1.tgz" - } - } + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.16.0.tgz" }, "babel-plugin-transform-es2015-object-super": { "version": "6.8.0", @@ -419,9 +331,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.8.0.tgz" }, "babel-plugin-transform-es2015-parameters": { - "version": "6.11.4", + "version": "6.16.0", "from": "babel-plugin-transform-es2015-parameters@>=6.0.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.11.4.tgz" + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.16.0.tgz" }, "babel-plugin-transform-es2015-shorthand-properties": { "version": "6.8.0", @@ -469,9 +381,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-assign/-/babel-plugin-transform-object-assign-6.8.0.tgz" }, "babel-plugin-transform-object-rest-spread": { - "version": "6.8.0", + "version": "6.16.0", "from": "babel-plugin-transform-object-rest-spread@>=6.6.5 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.8.0.tgz" + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.16.0.tgz" }, "babel-plugin-transform-react-display-name": { "version": "6.8.0", @@ -489,63 +401,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.9.0.tgz" }, "babel-plugin-transform-regenerator": { - "version": "6.14.0", + "version": "6.16.1", "from": "babel-plugin-transform-regenerator@>=6.5.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.14.0.tgz", - "dependencies": { - "babel-core": { - "version": "6.14.0", - "from": "babel-core@>=6.14.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.14.0.tgz" - }, - "babel-generator": { - "version": "6.14.0", - "from": "babel-generator@>=6.14.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.14.0.tgz" - }, - "babel-register": { - "version": "6.14.0", - "from": "babel-register@>=6.14.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.14.0.tgz", - "dependencies": { - "babel-runtime": { - "version": "6.11.6", - "from": "babel-runtime@>=6.11.6 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz" - } - } - }, - "babel-template": { - "version": "6.14.0", - "from": "babel-template@>=6.14.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.14.0.tgz" - }, - "babel-traverse": { - "version": "6.14.0", - "from": "babel-traverse@>=6.14.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.14.0.tgz" - }, - "babel-types": { - "version": "6.14.0", - "from": "babel-types@>=6.14.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.14.0.tgz" - }, - "babylon": { - "version": "6.9.1", - "from": "babylon@>=6.9.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.9.1.tgz" - }, - "core-js": { - "version": "2.4.1", - "from": "core-js@>=2.4.0 <3.0.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" - }, - "source-map": { - "version": "0.5.6", - "from": "source-map@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" - } - } + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.16.1.tgz" }, "babel-plugin-transform-strict-mode": { "version": "6.11.3", @@ -553,9 +411,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.11.3.tgz" }, "babel-polyfill": { - "version": "6.13.0", + "version": "6.16.0", "from": "babel-polyfill@>=6.9.1 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.13.0.tgz", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.16.0.tgz", "dependencies": { "core-js": { "version": "2.4.1", @@ -576,13 +434,13 @@ }, "babel-preset-react-native": { "version": "1.9.0", - "from": "babel-preset-react-native@latest", + "from": "babel-preset-react-native@>=1.9.0 <2.0.0", "resolved": "https://registry.npmjs.org/babel-preset-react-native/-/babel-preset-react-native-1.9.0.tgz" }, "babel-register": { - "version": "6.11.5", + "version": "6.16.3", "from": "babel-register@>=6.6.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.11.5.tgz", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.16.3.tgz", "dependencies": { "core-js": { "version": "2.4.1", @@ -592,9 +450,9 @@ } }, "babel-runtime": { - "version": "6.9.2", + "version": "6.11.6", "from": "babel-runtime@>=6.9.1 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.9.2.tgz", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", "dependencies": { "core-js": { "version": "2.4.1", @@ -604,24 +462,24 @@ } }, "babel-template": { - "version": "6.9.0", - "from": "babel-template@>=6.9.0 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.9.0.tgz" + "version": "6.16.0", + "from": "babel-template@>=6.16.0 <7.0.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.16.0.tgz" }, "babel-traverse": { - "version": "6.11.4", - "from": "babel-traverse@>=6.11.4 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.11.4.tgz" + "version": "6.16.0", + "from": "babel-traverse@>=6.16.0 <7.0.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.16.0.tgz" }, "babel-types": { - "version": "6.11.1", + "version": "6.16.0", "from": "babel-types@>=6.6.4 <7.0.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.11.1.tgz" + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.16.0.tgz" }, "babylon": { - "version": "6.8.4", - "from": "babylon@>=6.6.4 <7.0.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.8.4.tgz" + "version": "6.11.2", + "from": "babylon@>=6.8.2 <7.0.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.11.2.tgz" }, "balanced-match": { "version": "0.4.2", @@ -634,9 +492,9 @@ "resolved": "https://registry.npmjs.org/base62/-/base62-1.1.1.tgz" }, "base64-js": { - "version": "1.1.2", + "version": "1.2.0", "from": "base64-js@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.1.2.tgz" + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz" }, "base64-url": { "version": "1.2.2", @@ -673,6 +531,11 @@ "from": "bl@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", "dependencies": { + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, "readable-stream": { "version": "2.0.6", "from": "readable-stream@>=2.0.5 <2.1.0", @@ -728,9 +591,9 @@ "resolved": "https://registry.npmjs.org/bser/-/bser-1.0.2.tgz" }, "buffer": { - "version": "4.9.1", - "from": "buffer@4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz" + "version": "5.0.0", + "from": "buffer@5.0.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.0.0.tgz" }, "buffer-crc32": { "version": "0.2.5", @@ -747,6 +610,11 @@ "from": "buffer-to-vinyl@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz", "dependencies": { + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, "readable-stream": { "version": "2.1.5", "from": "readable-stream@>=2.0.2 <3.0.0", @@ -884,7 +752,7 @@ }, "commander": { "version": "2.9.0", - "from": "commander@>=2.5.0 <3.0.0", + "from": "commander@>=2.9.0 <3.0.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz" }, "commondir": { @@ -1037,6 +905,11 @@ "from": "duplexer2@>=0.1.0 <0.2.0", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz" }, + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, "readable-stream": { "version": "2.1.5", "from": "readable-stream@>=2.0.2 <3.0.0", @@ -1059,11 +932,6 @@ "from": "clone@>=0.2.0 <0.3.0", "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz" }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, "object-assign": { "version": "2.1.1", "from": "object-assign@>=2.0.0 <3.0.0", @@ -1096,11 +964,6 @@ "from": "clone@>=0.2.0 <0.3.0", "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz" }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, "object-assign": { "version": "2.1.1", "from": "object-assign@>=2.0.0 <3.0.0", @@ -1133,11 +996,6 @@ "from": "clone@>=0.2.0 <0.3.0", "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz" }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, "object-assign": { "version": "2.1.1", "from": "object-assign@>=2.0.0 <3.0.0", @@ -1279,6 +1137,11 @@ "from": "duplexer2@>=0.1.0 <0.2.0", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz" }, + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, "readable-stream": { "version": "2.1.5", "from": "readable-stream@>=2.0.2 <3.0.0", @@ -1311,6 +1174,16 @@ "from": "end-of-stream@1.0.0", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz" }, + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, + "once": { + "version": "1.3.3", + "from": "once@>=1.3.0 <1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz" + }, "readable-stream": { "version": "2.1.5", "from": "readable-stream@>=2.0.0 <3.0.0", @@ -1329,9 +1202,9 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" }, "ejs": { - "version": "2.5.1", + "version": "2.5.2", "from": "ejs@>=2.3.1 <3.0.0", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.1.tgz" + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.2.tgz" }, "encoding": { "version": "0.1.12", @@ -1341,7 +1214,14 @@ "end-of-stream": { "version": "1.1.0", "from": "end-of-stream@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz" + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", + "dependencies": { + "once": { + "version": "1.3.3", + "from": "once@>=1.3.0 <1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz" + } + } }, "entities": { "version": "1.1.1", @@ -1386,14 +1266,14 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" }, "escodegen": { - "version": "1.8.0", + "version": "1.8.1", "from": "escodegen@>=1.6.0 <2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.0.tgz", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", "dependencies": { "esprima": { - "version": "2.7.2", + "version": "2.7.3", "from": "esprima@^2.7.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.2.tgz" + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" }, "source-map": { "version": "0.2.0", @@ -1477,7 +1357,14 @@ "extglob": { "version": "0.3.2", "from": "extglob@>=0.3.1 <0.4.0", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz" + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "from": "is-extglob@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + } + } }, "fancy-log": { "version": "1.2.0", @@ -1485,9 +1372,9 @@ "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.2.0.tgz" }, "fast-levenshtein": { - "version": "1.1.4", - "from": "fast-levenshtein@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz" + "version": "2.0.5", + "from": "fast-levenshtein@>=2.0.4 <2.1.0", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.5.tgz" }, "fb-watchman": { "version": "1.9.0", @@ -1495,9 +1382,9 @@ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-1.9.0.tgz" }, "fbjs": { - "version": "0.8.4", - "from": "fbjs@>=0.8.3 <0.9.0", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.4.tgz" + "version": "0.8.5", + "from": "fbjs@>=0.8.4 <0.9.0", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.5.tgz" }, "fbjs-scripts": { "version": "0.7.1", @@ -1575,6 +1462,11 @@ "from": "first-chunk-stream@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", "dependencies": { + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, "readable-stream": { "version": "2.1.5", "from": "readable-stream@>=2.0.2 <3.0.0", @@ -1583,9 +1475,9 @@ } }, "for-in": { - "version": "0.1.5", + "version": "0.1.6", "from": "for-in@>=0.1.5 <0.2.0", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.5.tgz" + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.6.tgz" }, "for-own": { "version": "0.1.4", @@ -1655,23 +1547,35 @@ "glob-base": { "version": "0.3.0", "from": "glob-base@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz" + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "from": "glob-parent@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz" + }, + "is-extglob": { + "version": "1.0.0", + "from": "is-extglob@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + }, + "is-glob": { + "version": "2.0.1", + "from": "is-glob@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" + } + } }, "glob-parent": { - "version": "2.0.0", - "from": "glob-parent@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz" + "version": "3.0.0", + "from": "glob-parent@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.0.0.tgz" }, "glob-stream": { - "version": "5.3.4", + "version": "5.3.5", "from": "glob-stream@>=5.3.2 <6.0.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.4.tgz", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", "dependencies": { - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, "readable-stream": { "version": "1.0.34", "from": "readable-stream@>=1.0.33-1 <1.1.0-0", @@ -1685,9 +1589,9 @@ } }, "global": { - "version": "4.3.0", + "version": "4.3.1", "from": "global@>=4.3.0 <5.0.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.0.tgz" + "resolved": "https://registry.npmjs.org/global/-/global-4.3.1.tgz" }, "globals": { "version": "8.18.0", @@ -1721,6 +1625,11 @@ "from": "duplexer2@>=0.1.4 <0.2.0", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz" }, + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, "readable-stream": { "version": "2.1.5", "from": "readable-stream@>=2.0.5 <3.0.0", @@ -1729,9 +1638,9 @@ } }, "graceful-fs": { - "version": "4.1.4", + "version": "4.1.9", "from": "graceful-fs@>=4.1.3 <5.0.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.9.tgz" }, "graceful-readlink": { "version": "1.0.1", @@ -1760,6 +1669,11 @@ "from": "gulp-decompress@>=1.2.0 <2.0.0", "resolved": "https://registry.npmjs.org/gulp-decompress/-/gulp-decompress-1.2.0.tgz", "dependencies": { + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, "readable-stream": { "version": "2.1.5", "from": "readable-stream@>=2.0.2 <3.0.0", @@ -1916,9 +1830,9 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz" }, "inherits": { - "version": "2.0.1", + "version": "2.0.3", "from": "inherits@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" }, "ini": { "version": "1.3.4", @@ -1951,9 +1865,9 @@ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" }, "is-buffer": { - "version": "1.1.3", + "version": "1.1.4", "from": "is-buffer@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.3.tgz" + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.4.tgz" }, "is-builtin-module": { "version": "1.0.0", @@ -1981,9 +1895,9 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" }, "is-extglob": { - "version": "1.0.0", - "from": "is-extglob@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + "version": "2.0.0", + "from": "is-extglob@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.0.0.tgz" }, "is-finite": { "version": "1.0.1", @@ -1996,9 +1910,9 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" }, "is-glob": { - "version": "2.0.1", - "from": "is-glob@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" + "version": "3.0.0", + "from": "is-glob@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.0.0.tgz" }, "is-gzip": { "version": "1.0.0", @@ -2081,9 +1995,9 @@ "resolved": "https://registry.npmjs.org/is-zip/-/is-zip-1.0.0.tgz" }, "isarray": { - "version": "1.0.0", - "from": "isarray@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "version": "0.0.1", + "from": "isarray@0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" }, "isemail": { "version": "1.2.0", @@ -2098,7 +2012,14 @@ "isobject": { "version": "2.1.0", "from": "isobject@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "dependencies": { + "isarray": { + "version": "1.0.0", + "from": "isarray@1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + } + } }, "isomorphic-fetch": { "version": "2.2.1", @@ -2121,9 +2042,9 @@ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.3.tgz" }, "jsesc": { - "version": "0.5.0", - "from": "jsesc@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + "version": "1.3.0", + "from": "jsesc@>=1.3.0 <2.0.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz" }, "json-stable-stringify": { "version": "1.0.1", @@ -2136,9 +2057,9 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" }, "jsonfile": { - "version": "2.3.1", + "version": "2.4.0", "from": "jsonfile@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.3.1.tgz" + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz" }, "jsonify": { "version": "0.0.0", @@ -2147,13 +2068,13 @@ }, "jsonparse": { "version": "1.2.0", - "from": "jsonparse@>=1.1.0 <2.0.0", + "from": "jsonparse@>=1.2.0 <2.0.0", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz" }, "JSONStream": { - "version": "1.1.4", + "version": "1.2.1", "from": "JSONStream@>=1.0.3 <2.0.0", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.1.4.tgz" + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.2.1.tgz" }, "jstransform": { "version": "11.0.3", @@ -2168,9 +2089,9 @@ } }, "kind-of": { - "version": "3.0.3", + "version": "3.0.4", "from": "kind-of@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.3.tgz" + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.4.tgz" }, "klaw": { "version": "1.3.0", @@ -2187,6 +2108,11 @@ "from": "lazystream@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", "dependencies": { + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, "readable-stream": { "version": "2.1.5", "from": "readable-stream@>=2.0.5 <3.0.0", @@ -2210,14 +2136,14 @@ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" }, "lodash": { - "version": "4.15.0", - "from": "lodash@4.15.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.15.0.tgz" + "version": "4.16.2", + "from": "lodash@4.16.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.16.2.tgz" }, "lodash-es": { - "version": "4.14.0", + "version": "4.16.2", "from": "lodash-es@>=4.2.1 <5.0.0", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.14.0.tgz" + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.16.2.tgz" }, "lodash._basecopy": { "version": "3.0.1", @@ -2270,9 +2196,9 @@ "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz" }, "lodash.isarguments": { - "version": "3.0.9", + "version": "3.1.0", "from": "lodash.isarguments@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.0.9.tgz" + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz" }, "lodash.isarray": { "version": "3.0.4", @@ -2387,9 +2313,9 @@ "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-2.3.0.tgz", "dependencies": { "glob": { - "version": "7.0.6", - "from": "glob@^7.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz" + "version": "7.1.0", + "from": "glob@>=7.0.3 <8.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.0.tgz" }, "vinyl": { "version": "1.2.0", @@ -2413,6 +2339,11 @@ "from": "merge-stream@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.0.tgz", "dependencies": { + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, "readable-stream": { "version": "2.1.5", "from": "readable-stream@>=2.0.1 <3.0.0", @@ -2440,7 +2371,19 @@ "micromatch": { "version": "2.3.11", "from": "micromatch@>=2.3.7 <3.0.0", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz" + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "from": "is-extglob@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + }, + "is-glob": { + "version": "2.0.1", + "from": "is-glob@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" + } + } }, "mime": { "version": "1.3.4", @@ -2454,22 +2397,22 @@ }, "mime-types": { "version": "2.1.11", - "from": "mime-types@>=2.1.11 <2.2.0", + "from": "mime-types@2.1.11", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz" }, "min-document": { - "version": "2.18.1", - "from": "min-document@>=2.6.1 <3.0.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.18.1.tgz" + "version": "2.19.0", + "from": "min-document@>=2.19.0 <3.0.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" }, "minimatch": { - "version": "3.0.2", + "version": "3.0.3", "from": "minimatch@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz" + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz" }, "minimist": { "version": "1.2.0", - "from": "minimist@>=1.1.0 <2.0.0", + "from": "minimist@>=1.2.0 <2.0.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" }, "mkdirp": { @@ -2497,9 +2440,9 @@ } }, "moment": { - "version": "2.14.1", - "from": "moment@2.14.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz" + "version": "2.15.1", + "from": "moment@2.15.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.15.1.tgz" }, "morgan": { "version": "1.6.1", @@ -2537,9 +2480,9 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz" }, "node-fetch": { - "version": "1.5.3", + "version": "1.6.3", "from": "node-fetch@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.5.3.tgz" + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz" }, "node-int64": { "version": "0.4.0", @@ -2607,9 +2550,9 @@ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz" }, "once": { - "version": "1.3.3", + "version": "1.4.0", "from": "once@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz" + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz" }, "onetime": { "version": "1.1.0", @@ -2639,9 +2582,9 @@ } }, "optionator": { - "version": "0.8.1", + "version": "0.8.2", "from": "optionator@>=0.8.1 <0.9.0", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.1.tgz" + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz" }, "options": { "version": "0.0.6", @@ -2653,6 +2596,11 @@ "from": "ordered-read-streams@>=0.3.0 <0.4.0", "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", "dependencies": { + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, "readable-stream": { "version": "2.1.5", "from": "readable-stream@>=2.0.1 <3.0.0", @@ -2688,7 +2636,19 @@ "parse-glob": { "version": "3.0.4", "from": "parse-glob@>=3.0.4 <4.0.0", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz" + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "from": "is-extglob@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + }, + "is-glob": { + "version": "2.0.1", + "from": "is-glob@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" + } + } }, "parse-json": { "version": "2.2.0", @@ -2828,9 +2788,9 @@ "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz" }, "qrcode-generator": { - "version": "1.0.0", - "from": "qrcode-generator@1.0.0", - "resolved": "https://registry.npmjs.org/qrcode-generator/-/qrcode-generator-1.0.0.tgz" + "version": "1.0.5", + "from": "qrcode-generator@1.0.5", + "resolved": "https://registry.npmjs.org/qrcode-generator/-/qrcode-generator-1.0.5.tgz" }, "qs": { "version": "4.0.0", @@ -2870,16 +2830,9 @@ "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz" }, "react": { - "version": "15.3.1", - "from": "react@15.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-15.3.1.tgz", - "dependencies": { - "fbjs": { - "version": "0.8.4", - "from": "fbjs@>=0.8.4 <0.9.0", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.4.tgz" - } - } + "version": "15.3.2", + "from": "react@15.3.2", + "resolved": "https://registry.npmjs.org/react/-/react-15.3.2.tgz" }, "react-clone-referenced-element": { "version": "1.0.1", @@ -2892,9 +2845,9 @@ "resolved": "https://registry.npmjs.org/react-deep-force-update/-/react-deep-force-update-1.0.1.tgz" }, "react-native": { - "version": "0.32.0", - "from": "react-native@0.32.0", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.32.0.tgz", + "version": "0.34.1", + "from": "react-native@0.34.1", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.34.1.tgz", "dependencies": { "base64-js": { "version": "0.0.8", @@ -2918,20 +2871,15 @@ } } }, - "react-native-android-permissions": { - "version": "0.0.6", - "from": "react-native-android-permissions@0.0.6", - "resolved": "https://registry.npmjs.org/react-native-android-permissions/-/react-native-android-permissions-0.0.6.tgz" - }, "react-native-barcodescanner": { - "version": "3.0.1", - "from": "react-native-barcodescanner@3.0.1", - "resolved": "https://registry.npmjs.org/react-native-barcodescanner/-/react-native-barcodescanner-3.0.1.tgz" + "version": "3.1.1", + "from": "react-native-barcodescanner@3.1.1", + "resolved": "https://registry.npmjs.org/react-native-barcodescanner/-/react-native-barcodescanner-3.1.1.tgz" }, "react-native-camera": { "version": "0.3.8", - "from": "git://github.com/lwansbrough/react-native-camera.git#9ddc787cb5e40e088596dbc823583ba4aade7ecf", - "resolved": "git://github.com/lwansbrough/react-native-camera.git#9ddc787cb5e40e088596dbc823583ba4aade7ecf" + "from": "git://github.com/lwansbrough/react-native-camera.git#6074ec3c8275ef5eb5fc39489c9a379f6ced923b", + "resolved": "git://github.com/lwansbrough/react-native-camera.git#6074ec3c8275ef5eb5fc39489c9a379f6ced923b" }, "react-proxy": { "version": "1.1.8", @@ -2958,6 +2906,11 @@ "from": "read-all-stream@>=3.0.0 <4.0.0", "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", "dependencies": { + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, "readable-stream": { "version": "2.1.5", "from": "readable-stream@>=2.0.0 <3.0.0", @@ -2983,14 +2936,7 @@ "readable-stream": { "version": "1.1.14", "from": "readable-stream@>=1.1.9 <1.2.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "dependencies": { - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - } - } + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" }, "readline2": { "version": "1.0.1", @@ -3025,9 +2971,9 @@ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz" }, "redux": { - "version": "3.5.2", - "from": "redux@3.5.2", - "resolved": "https://registry.npmjs.org/redux/-/redux-3.5.2.tgz" + "version": "3.6.0", + "from": "redux@3.6.0", + "resolved": "https://registry.npmjs.org/redux/-/redux-3.6.0.tgz" }, "redux-logger": { "version": "2.6.1", @@ -3072,7 +3018,14 @@ "regjsparser": { "version": "0.1.5", "from": "regjsparser@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz" + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "dependencies": { + "jsesc": { + "version": "0.5.0", + "from": "jsesc@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + } + } }, "repeat-element": { "version": "1.1.2", @@ -3120,9 +3073,9 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", "dependencies": { "glob": { - "version": "7.0.6", + "version": "7.1.0", "from": "glob@>=7.0.5 <8.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz" + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.0.tgz" } } }, @@ -3147,9 +3100,9 @@ "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz" }, "sane": { - "version": "1.4.0", - "from": "sane@>=1.2.0 <2.0.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-1.4.0.tgz" + "version": "1.4.1", + "from": "sane@>=1.4.1 <1.5.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-1.4.1.tgz" }, "sax": { "version": "1.1.6", @@ -3221,9 +3174,9 @@ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz" }, "signal-exit": { - "version": "3.0.0", + "version": "3.0.1", "from": "signal-exit@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz" + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.1.tgz" }, "simple-plist": { "version": "0.1.4", @@ -3231,9 +3184,9 @@ "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-0.1.4.tgz" }, "sinon": { - "version": "1.17.5", + "version": "1.17.6", "from": "sinon@>=1.9.1 <2.0.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.17.5.tgz" + "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.17.6.tgz" }, "slash": { "version": "1.0.0", @@ -3246,14 +3199,14 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz" }, "source-map-support": { - "version": "0.2.10", - "from": "source-map-support@>=0.2.10 <0.3.0", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", + "version": "0.4.3", + "from": "source-map-support@>=0.4.2 <0.5.0", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.3.tgz", "dependencies": { "source-map": { - "version": "0.1.32", - "from": "source-map@0.1.32", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz" + "version": "0.5.6", + "from": "source-map@>=0.5.3 <0.6.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" } } }, @@ -3272,20 +3225,15 @@ "from": "spdx-correct@>=1.0.0 <1.1.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz" }, - "spdx-exceptions": { - "version": "1.0.5", - "from": "spdx-exceptions@>=1.0.4 <2.0.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.5.tgz" - }, "spdx-expression-parse": { - "version": "1.0.2", + "version": "1.0.3", "from": "spdx-expression-parse@>=1.0.0 <1.1.0", - "resolved": "http://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.2.tgz" + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.3.tgz" }, "spdx-license-ids": { - "version": "1.2.1", + "version": "1.2.2", "from": "spdx-license-ids@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.1.tgz" + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz" }, "sprintf-js": { "version": "1.0.3", @@ -3298,9 +3246,9 @@ "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.4.tgz" }, "stat-mode": { - "version": "0.2.1", + "version": "0.2.2", "from": "stat-mode@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.1.tgz" + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz" }, "statuses": { "version": "1.3.0", @@ -3317,11 +3265,6 @@ "from": "stream-combiner2@>=1.0.0 <1.1.0", "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.0.2.tgz", "dependencies": { - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, "readable-stream": { "version": "1.0.34", "from": "readable-stream@>=1.0.17 <1.1.0", @@ -3355,9 +3298,9 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" }, "string-width": { - "version": "1.0.1", + "version": "1.0.2", "from": "string-width@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz" + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" }, "strip-ansi": { "version": "3.0.1", @@ -3410,15 +3353,20 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" }, "symbol-observable": { - "version": "0.2.4", - "from": "symbol-observable@>=0.2.3 <0.3.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz" + "version": "1.0.2", + "from": "symbol-observable@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.2.tgz" }, "tar-stream": { "version": "1.5.2", "from": "tar-stream@>=1.1.1 <2.0.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.2.tgz", "dependencies": { + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, "readable-stream": { "version": "2.1.5", "from": "readable-stream@>=2.0.0 <3.0.0", @@ -3458,6 +3406,11 @@ "from": "through2@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz", "dependencies": { + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, "readable-stream": { "version": "2.0.6", "from": "readable-stream@>=2.0.0 <2.1.0", @@ -3556,9 +3509,9 @@ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.10.tgz" }, "uglify-js": { - "version": "2.7.0", + "version": "2.7.3", "from": "uglify-js@>=2.6.2 <3.0.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.0.tgz", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.3.tgz", "dependencies": { "camelcase": { "version": "1.2.1", @@ -3613,9 +3566,9 @@ "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz" }, "unzip-response": { - "version": "1.0.0", + "version": "1.0.1", "from": "unzip-response@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.0.tgz" + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.1.tgz" }, "url-parse-lax": { "version": "1.0.0", @@ -3630,7 +3583,14 @@ "util": { "version": "0.10.3", "from": "util@0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz" + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "inherits@2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } }, "util-deprecate": { "version": "1.0.2", @@ -3643,9 +3603,9 @@ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" }, "uuid": { - "version": "2.0.2", + "version": "2.0.3", "from": "uuid@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.2.tgz" + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz" }, "vali-date": { "version": "1.0.0", @@ -3677,6 +3637,11 @@ "from": "vinyl-assign@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/vinyl-assign/-/vinyl-assign-1.2.1.tgz", "dependencies": { + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, "readable-stream": { "version": "2.1.5", "from": "readable-stream@>=2.0.0 <3.0.0", @@ -3706,6 +3671,11 @@ "from": "first-chunk-stream@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz" }, + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, "readable-stream": { "version": "2.1.5", "from": "readable-stream@>=2.0.4 <3.0.0", @@ -3744,9 +3714,9 @@ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-1.0.0.tgz" }, "which": { - "version": "1.2.10", + "version": "1.2.11", "from": "which@>=1.2.9 <2.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.10.tgz" + "resolved": "https://registry.npmjs.org/which/-/which-1.2.11.tgz" }, "window-size": { "version": "0.1.0", @@ -3785,7 +3755,7 @@ }, "xcode": { "version": "0.8.9", - "from": "xcode@>=0.8.2 <0.9.0", + "from": "xcode@>=0.8.9 <0.9.0", "resolved": "https://registry.npmjs.org/xcode/-/xcode-0.8.9.tgz" }, "xdg-basedir": { @@ -3886,7 +3856,7 @@ }, "lodash": { "version": "3.10.1", - "from": "lodash@^3.1.0", + "from": "lodash@>=3.1.0 <4.0.0", "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" } } diff --git a/react-native/package.json b/react-native/package.json index a72df057fa4f..653335898293 100644 --- a/react-native/package.json +++ b/react-native/package.json @@ -14,23 +14,22 @@ "test-ios": "xcodebuild test -project ios/Keybase.xcodeproj -scheme 'Keybase For Test' -destination 'platform=iOS Simulator,name=iPhone 6s,OS=9.3'" }, "dependencies": { - "buffer": "4.9.1", + "buffer": "5.0.0", "deep-diff": "0.3.4", "framed-msgpack-rpc": "1.1.13", "getenv": "0.6.0", "iced-runtime": "1.0.3", "immutable": "3.8.1", - "lodash": "4.15.0", - "moment": "2.14.1", + "lodash": "4.16.2", + "moment": "2.15.1", "purepack": "1.0.4", - "qrcode-generator": "1.0.0", - "react": "15.3.1", - "react-native": "0.32.0", - "react-native-android-permissions": "0.0.6", - "react-native-barcodescanner": "3.0.1", - "react-native-camera": "git://github.com/lwansbrough/react-native-camera.git#9ddc787cb5e40e088596dbc823583ba4aade7ecf", + "qrcode-generator": "1.0.5", + "react": "15.3.2", + "react-native": "0.34.1", + "react-native-barcodescanner": "3.1.1", + "react-native-camera": "git://github.com/lwansbrough/react-native-camera.git#6074ec3c8275ef5eb5fc39489c9a379f6ced923b", "react-redux": "4.4.5", - "redux": "3.5.2", + "redux": "3.6.0", "redux-saga": "0.11.1", "redux-thunk": "2.1.0", "transit-immutable-js": "0.6.0", diff --git a/shared/actions/config/index.js b/shared/actions/config/index.js index 1c00a27b0791..d7098c9ae87f 100644 --- a/shared/actions/config/index.js +++ b/shared/actions/config/index.js @@ -6,9 +6,6 @@ import {navBasedOnLoginState} from '../../actions/login' import {resetSignup} from '../../actions/signup' import {registerGregorListeners} from '../../actions/gregor' -// $FlowFixMe -import * as platform from './index.platform' - import type {AsyncAction, Action} from '../../constants/types/flux' import {configGetConfigRpc, configGetExtendedStatusRpc, configGetCurrentStatusRpc, userListTrackingRpc, userListTrackersByNameRpc, userLoadUncheckedUserSummariesRpc} from '../../constants/types/flow-types' @@ -179,16 +176,4 @@ function getCurrentStatus (): AsyncAction { } } -export function getDevSettings () { - return platform.getDevSettings() -} - -export function saveDevSettings () { - return platform.saveDevSettings() -} - -export function updateDevSettings (updates: any) { - return platform.updateDevSettings(updates) -} - export {getExtendedStatus} diff --git a/shared/actions/config/index.platform.desktop.js b/shared/actions/config/index.platform.desktop.js deleted file mode 100644 index 998291ed768a..000000000000 --- a/shared/actions/config/index.platform.desktop.js +++ /dev/null @@ -1,30 +0,0 @@ -// @flow -import * as Constants from '../../constants/config' -import type {AsyncAction} from '../../constants/types/flux' - -export function getDevSettings (): AsyncAction { - return (dispatch) => { - dispatch({ - type: Constants.devConfigLoading, - payload: {}, - }) - - dispatch({ - type: Constants.devConfigLoaded, - payload: {}, - }) - } -} - -export function saveDevSettings () { - return { - type: Constants.devConfigSaved, - } -} - -export function updateDevSettings (updates: any) { - return { - type: Constants.devConfigUpdate, - payload: {updates}, - } -} diff --git a/shared/actions/config/index.platform.native.js b/shared/actions/config/index.platform.native.js index 8db30bd5bfc9..d0baae807db5 100644 --- a/shared/actions/config/index.platform.native.js +++ b/shared/actions/config/index.platform.native.js @@ -1,46 +1,8 @@ // @flow import * as Constants from '../../constants/config' -import type {AsyncAction, Action} from '../../constants/types/flux' import {NativeModules} from 'react-native' -export function getDevSettings (): AsyncAction { - return (dispatch) => { - dispatch({ - type: Constants.devConfigLoading, - payload: {}, - }) - - NativeModules.App.getDevConfig(devConfig => { - dispatch({ - type: Constants.devConfigLoaded, - payload: {devConfig}, - }) - }) - } -} - -export function saveDevSettings (): AsyncAction { - return (dispatch, getState) => { - const {config: {devConfig}} = getState() - - console.info(devConfig) - devConfig && NativeModules.App.setDevConfig(devConfig.configured) - - return dispatch({ - type: Constants.devConfigSaved, - payload: {}, - }) - } -} - -export function updateDevSettings (updates: any): Action { - return { - type: Constants.devConfigUpdate, - payload: {updates}, - } -} - -export function readAppVersion () { +function readAppVersion () { const nativeBridge = NativeModules.KeybaseEngine || NativeModules.ObjcEngine const version = nativeBridge.version return { @@ -48,3 +10,7 @@ export function readAppVersion () { payload: {version}, } } + +export { + readAppVersion, +} diff --git a/shared/common-adapters/dumb.desktop.js b/shared/common-adapters/dumb.desktop.js index f153670a523f..207339b6aa5f 100644 --- a/shared/common-adapters/dumb.desktop.js +++ b/shared/common-adapters/dumb.desktop.js @@ -3,12 +3,355 @@ import React, {Component} from 'react' import _ from 'lodash' import type {DumbComponentMap} from '../constants/types/more' import type {IconType} from './icon.constants' -import {Avatar, Button, Box, Checkbox, ChoiceList, Icon, Input, SmallInput, ListItem, PopupMenu, StandardScreen, TabBar, Text} from './index' +import {Avatar, Button, Box, Checkbox, ChoiceList, Icon, Input, SmallInput, ListItem, PopupMenu, StandardScreen, TabBar, Text, Terminal, Dropdown} from './index' import {TabBarButton, TabBarItem} from './tab-bar' import {globalStyles, globalColors} from '../styles' import {iconMeta} from './icon.constants' const onCheck = () => console.log('on check!') +const onClick = () => console.log('on click!') + +const dropdownMap: DumbComponentMap = { + component: Dropdown, + mocks: { + 'Normal': { + type: 'General', + options: ['one', 'two', 'three'], + value: 'one', + onOther: onClick, + onClick: onClick, + }, + 'Not selected': { + type: 'General', + options: ['one', 'two', 'three'], + onOther: onClick, + onClick: onClick, + }, + 'Username': { + type: 'Username', + options: ['marcopolo', 'chris', 'cjb', 'bbbbbbbbbbbbbbbb'], + value: 'cjb', + onOther: onClick, + onClick: onClick, + }, + }, +} +const colorMocks = {} + +Object.keys(globalColors).sort().forEach(c => { + colorMocks[`${c}: ${globalColors[c]}`] = { + parentProps: { + height: 60, + width: 230, + }, + style: {width: 60, height: 60, backgroundColor: globalColors[c]}, + children: , + } +}) + +const colorsMap: DumbComponentMap = { + component: Box, + mocks: colorMocks, +} + +let textMocks = {} +const backgroundModes = ['Normal', 'Terminal', 'Announcements', 'Success', 'Information', 'HighRisk', 'Documentation'] + +backgroundModes.forEach(backgroundMode => { + const backgroundColor = { + 'Normal': globalColors.white, + 'Terminal': globalColors.darkBlue3, + 'Announcements': globalColors.blue, + 'Success': globalColors.green, + 'Information': globalColors.yellow, + 'HighRisk': globalColors.red, + 'Documentation': globalColors.darkBlue, + }[backgroundMode] + + const base = { + parentProps: { + style: { + backgroundColor, + padding: 10, + minWidth: 320, + }, + }, + backgroundMode, + } + + const mocks = {} + + const types = [ + 'Body', + 'BodyPrimaryLink', + 'BodySemibold', + 'BodySmall', + 'BodySmallError', + 'BodySmallLink', + 'BodySmallPrimaryLink', + 'BodySmallSecondaryLink', + 'BodySmallSemibold', + 'BodyXSmall', + 'BodyXSmallLink', + 'Header', + 'HeaderBig', + 'HeaderError', + 'HeaderJumbo', + 'HeaderLink', + ] + + types.forEach(type => { + mocks[type] = { + ...base, + type, + children: type, + } + }) + + Object.keys(mocks).forEach(key => { + textMocks[`${key}: ${backgroundMode}`] = mocks[key] + }) +}) + +const textMap: DumbComponentMap = { + component: Text, + mocks: textMocks, +} + +const terminalMap: DumbComponentMap = { + component: Box, + mocks: { + 'Terminal': { + children: [ + +

+ Word word + inline command line + username + 'secret' + word word word word word + inline command line +

+
, + +

+ command line stuff + username + 'something secret' +

+ +

+ command line stuff + username + 'something public' +

+ + comment + comment +
, + ], + }, + }, +} + +const commonButton = { + onClick, +} + +const buttonsMap: DumbComponentMap