ignore
This commit is contained in:
parent
e0d62f3945
commit
9eeddcab6e
|
@ -87,9 +87,13 @@ dependencies {
|
|||
transitive = false
|
||||
}
|
||||
|
||||
implementation(project(':react-native-restart')) {
|
||||
transitive = false
|
||||
}
|
||||
|
||||
compile fileTree(dir: "libs", include: ["*.jar"])
|
||||
compile "com.google.android.gms:play-services-base:$firebaseVersion"
|
||||
// compile "com.google.firebase:firebase-ads:$firebaseVersion"
|
||||
compile "com.google.firebase:firebase-ads:$firebaseVersion"
|
||||
compile "com.google.firebase:firebase-auth:$firebaseVersion"
|
||||
compile "com.google.firebase:firebase-config:$firebaseVersion"
|
||||
compile "com.google.firebase:firebase-core:$firebaseVersion"
|
||||
|
|
|
@ -31,7 +31,7 @@ public class MainActivity extends ReactActivity {
|
|||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
// checkWindowPerms();
|
||||
checkWindowPerms();
|
||||
}
|
||||
|
||||
public void checkWindowPerms() {
|
||||
|
|
|
@ -9,7 +9,8 @@ import com.facebook.react.shell.MainReactPackage;
|
|||
import com.facebook.soloader.SoLoader;
|
||||
|
||||
import io.invertase.firebase.RNFirebasePackage;
|
||||
//import io.invertase.firebase.admob.RNFirebaseAdMobPackage;
|
||||
import com.avishayil.rnrestart.ReactNativeRestartPackage;
|
||||
import io.invertase.firebase.admob.RNFirebaseAdMobPackage;
|
||||
import io.invertase.firebase.analytics.RNFirebaseAnalyticsPackage;
|
||||
import io.invertase.firebase.auth.RNFirebaseAuthPackage;
|
||||
import io.invertase.firebase.config.RNFirebaseRemoteConfigPackage;
|
||||
|
@ -25,6 +26,7 @@ import io.invertase.firebase.notifications.RNFirebaseNotificationsPackage;
|
|||
import io.invertase.firebase.perf.RNFirebasePerformancePackage;
|
||||
import io.invertase.firebase.storage.RNFirebaseStoragePackage;
|
||||
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -39,8 +41,9 @@ public class MainApplication extends Application implements ReactApplication {
|
|||
protected List<ReactPackage> getPackages() {
|
||||
return Arrays.<ReactPackage>asList(
|
||||
new MainReactPackage(),
|
||||
new ReactNativeRestartPackage(),
|
||||
new RNFirebasePackage(),
|
||||
// new RNFirebaseAdMobPackage(),
|
||||
new RNFirebaseAdMobPackage(),
|
||||
new RNFirebaseAnalyticsPackage(),
|
||||
new RNFirebaseAuthPackage(),
|
||||
new RNFirebaseRemoteConfigPackage(),
|
||||
|
@ -67,6 +70,7 @@ public class MainApplication extends Application implements ReactApplication {
|
|||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
getReactNativeHost().getReactInstanceManager().getDevSupportManager().getDevSettings().setRemoteJSDebugEnabled(true);
|
||||
SoLoader.init(this, /* native exopackage */ false);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
rootProject.name = 'RNFTests'
|
||||
|
||||
include ':react-native-firebase'
|
||||
project(':react-native-firebase').projectDir = new File(rootProject.projectDir, './../../android')
|
||||
|
||||
include ':react-native-restart'
|
||||
project(':react-native-restart').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-restart/android')
|
||||
|
||||
include ':app'
|
||||
|
||||
include ':detox'
|
||||
|
|
|
@ -4,26 +4,20 @@
|
|||
* @flow
|
||||
*/
|
||||
|
||||
import React, { Component } from 'react';
|
||||
import rnModule, { AppRegistry, Text, View } from 'react-native';
|
||||
// must import before all else
|
||||
import Bridge from './bridge/env/rn';
|
||||
|
||||
import testModule from './firebase';
|
||||
import React, { Component } from 'react';
|
||||
import { AppRegistry, Text, View } from 'react-native';
|
||||
|
||||
import firebase from './firebase';
|
||||
|
||||
class Root extends Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {};
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
if (global.__initializeEnvironment) {
|
||||
console.log('Initializing environment...');
|
||||
global.__initializeEnvironment({
|
||||
root: this,
|
||||
rnModule,
|
||||
testModule,
|
||||
});
|
||||
}
|
||||
Bridge.provideRoot(this);
|
||||
Bridge.provideModule(firebase);
|
||||
}
|
||||
|
||||
render() {
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
const detox = require('detox');
|
||||
const vm = require('./vm');
|
||||
const ws = require('./ws');
|
||||
|
||||
const detoxOriginalInit = detox.init.bind(detox);
|
||||
const detoxOriginalCleanup = detox.cleanup.bind(detox);
|
||||
let detoxOriginalReloadReactNative = null;
|
||||
|
||||
let bridgeReady = false;
|
||||
process.on('rn-ready', () => {
|
||||
// console.log('READY', true);
|
||||
bridgeReady = true;
|
||||
});
|
||||
|
||||
function onceBridgeReady() {
|
||||
if (bridgeReady) return Promise.resolve();
|
||||
return new Promise(resolve => {
|
||||
process.once('rn-ready', resolve);
|
||||
});
|
||||
}
|
||||
|
||||
detox.init = async (...args) => {
|
||||
bridgeReady = false;
|
||||
console.log('detox.init.start');
|
||||
|
||||
return detoxOriginalInit(...args).then(() => {
|
||||
console.log('detox.init.complete');
|
||||
|
||||
detoxOriginalReloadReactNative = device.reloadReactNative.bind(device);
|
||||
device.reloadReactNative = async () => {
|
||||
console.log('reloadReactNative.start');
|
||||
bridgeReady = false;
|
||||
// return device.launchApp({ newInstance: true }).then(() => {
|
||||
global.bridge.reload();
|
||||
|
||||
return onceBridgeReady();
|
||||
};
|
||||
|
||||
return onceBridgeReady();
|
||||
});
|
||||
};
|
||||
|
||||
detox.cleanup = async (...args) => {
|
||||
console.log('detox.cleanup');
|
||||
|
||||
return detoxOriginalCleanup(...args).then(() => {
|
||||
console.log('detox.cleanup.end');
|
||||
|
||||
ws.close();
|
||||
process.exit();
|
||||
});
|
||||
};
|
||||
|
||||
global.bridge = {
|
||||
_ws: null,
|
||||
|
||||
rootSetState(state) {
|
||||
// todo
|
||||
return Promise.resolve();
|
||||
},
|
||||
};
|
|
@ -0,0 +1,158 @@
|
|||
const url = require('url');
|
||||
const http = require('http');
|
||||
const invariant = require('assert');
|
||||
const { createContext, Script } = require('vm');
|
||||
const ws = require('./ws');
|
||||
|
||||
let currentContext = null;
|
||||
let scriptCached = null;
|
||||
|
||||
// this is a dummy file path - without a file name the source map is not used in the vm
|
||||
const TEMP_BUNDLE_PATH = '/tmp/bridge/react-native.js';
|
||||
|
||||
/**
|
||||
*
|
||||
* @param replyId
|
||||
* @param result
|
||||
*/
|
||||
function sendResult(replyID, result) {
|
||||
ws.send(
|
||||
JSON.stringify({
|
||||
replyID,
|
||||
result,
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param message
|
||||
*/
|
||||
function sendError(message) {
|
||||
console.error(message);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param src
|
||||
* @param callback
|
||||
*/
|
||||
function getScript(src, callback) {
|
||||
if (scriptCached) return callback(null, scriptCached);
|
||||
return http
|
||||
.get(src, res => {
|
||||
let buff = '';
|
||||
|
||||
res.setEncoding('utf8');
|
||||
|
||||
res.on('data', chunk => {
|
||||
buff += chunk;
|
||||
});
|
||||
|
||||
res.on('end', () => {
|
||||
scriptCached = new Script(buff, {
|
||||
// lineOffset: -1,
|
||||
// columnOffset: -1,
|
||||
timeout: 120000,
|
||||
displayErrors: true,
|
||||
produceCachedData: true,
|
||||
filename: TEMP_BUNDLE_PATH,
|
||||
});
|
||||
|
||||
callback(null, scriptCached);
|
||||
});
|
||||
})
|
||||
.on('error', err => {
|
||||
callback(err);
|
||||
});
|
||||
}
|
||||
|
||||
process.on('ws-message', request => {
|
||||
// console.log(request.method);
|
||||
switch (request.method) {
|
||||
case 'prepareJSRuntime':
|
||||
currentContext = undefined;
|
||||
currentContext = createContext({
|
||||
console,
|
||||
__bridgeNode: {
|
||||
ready() {
|
||||
process.emit('rn-ready');
|
||||
},
|
||||
provideReactNativeModule(rnModule) {
|
||||
global.bridge.rn = undefined;
|
||||
global.bridge.rn = rnModule;
|
||||
},
|
||||
provideModule(moduleExports) {
|
||||
global.bridge.module = undefined;
|
||||
global.bridge.module = moduleExports;
|
||||
},
|
||||
provideReload(reloadFn) {
|
||||
global.bridge.reload = undefined;
|
||||
global.bridge.reload = reloadFn;
|
||||
},
|
||||
provideRoot(rootComponent) {
|
||||
global.bridge.root = undefined;
|
||||
global.bridge.root = rootComponent;
|
||||
},
|
||||
},
|
||||
});
|
||||
sendResult(request.id);
|
||||
return;
|
||||
|
||||
case 'executeApplicationScript':
|
||||
// Modify the URL to make sure we get the inline source map.
|
||||
const parsedUrl = url.parse(request.url, /* parseQueryString */ true);
|
||||
invariant(parsedUrl.query);
|
||||
parsedUrl.query.inlineSourceMap = true;
|
||||
delete parsedUrl.search;
|
||||
// $FlowIssue url.format() does not accept what url.parse() returns.
|
||||
const scriptUrl = url.format(parsedUrl);
|
||||
|
||||
getScript(scriptUrl, (err, script) => {
|
||||
if (err != null) {
|
||||
sendError(`Failed to get script from packager: ${err.message}`);
|
||||
return;
|
||||
}
|
||||
|
||||
if (currentContext == null) {
|
||||
sendError('JS runtime not prepared');
|
||||
return;
|
||||
}
|
||||
|
||||
if (request.inject) {
|
||||
for (const name in request.inject) {
|
||||
currentContext[name] = JSON.parse(request.inject[name]);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
script.runInContext(currentContext, TEMP_BUNDLE_PATH);
|
||||
} catch (e) {
|
||||
sendError(`Failed to exec script: ${e.message}`);
|
||||
}
|
||||
sendResult(request.id);
|
||||
});
|
||||
|
||||
return;
|
||||
|
||||
default:
|
||||
let returnValue = [[], [], [], 0];
|
||||
try {
|
||||
if (
|
||||
currentContext != null &&
|
||||
typeof currentContext.__fbBatchedBridge === 'object'
|
||||
) {
|
||||
returnValue = currentContext.__fbBatchedBridge[request.method].apply(
|
||||
null,
|
||||
request.arguments
|
||||
);
|
||||
}
|
||||
} catch (e) {
|
||||
sendError(
|
||||
`Failed while making a call ${request.method}:::${e.message}`
|
||||
);
|
||||
} finally {
|
||||
sendResult(request.id, JSON.stringify(returnValue));
|
||||
}
|
||||
}
|
||||
});
|
|
@ -0,0 +1,12 @@
|
|||
const WebSocket = require('ws');
|
||||
|
||||
const ws = new WebSocket(
|
||||
// todo read url from somewhere
|
||||
'ws://' + 'localhost:8081' + '/debugger-proxy?role=debugger&name=Chrome'
|
||||
);
|
||||
|
||||
ws.onmessage = message => process.emit('ws-message', JSON.parse(message.data));
|
||||
ws.onopen = () => console.log('WS open');
|
||||
ws.onclose = event => (!event.wasClean ? console.log('WS close', event) : '');
|
||||
|
||||
module.exports = ws;
|
|
@ -0,0 +1,28 @@
|
|||
import reactNative, { Platform, NativeModules } from 'react-native';
|
||||
import RNRestart from 'react-native-restart'; // Import package from node modules
|
||||
|
||||
const bridgeNode = global.__bridgeNode;
|
||||
|
||||
// https://github.com/ptmt/react-native-macos/blob/master/React/Modules/RCTDevSettings.mm
|
||||
if (Platform.OS === 'ios' && !bridgeNode) {
|
||||
NativeModules.RCTDevSettings.setIsDebuggingRemotely(true);
|
||||
}
|
||||
|
||||
if (bridgeNode) {
|
||||
bridgeNode.provideReactNativeModule(reactNative);
|
||||
bridgeNode.provideReload(RNRestart.Restart);
|
||||
}
|
||||
|
||||
export default {
|
||||
provideModule(moduleExports) {
|
||||
if (bridgeNode) {
|
||||
bridgeNode.provideModule(moduleExports);
|
||||
bridgeNode.ready();
|
||||
}
|
||||
},
|
||||
provideRoot(rootComponent) {
|
||||
if (bridgeNode) {
|
||||
bridgeNode.provideRoot(rootComponent);
|
||||
}
|
||||
},
|
||||
};
|
|
@ -0,0 +1,60 @@
|
|||
// describe('Example', () => {
|
||||
// beforeEach(async () => {
|
||||
// await device.reloadReactNative();
|
||||
// });
|
||||
//
|
||||
// it('should have welcome screen', async () => {
|
||||
// await expect(element(by.id('welcome'))).toBeVisible();
|
||||
// });
|
||||
//
|
||||
// it('should show hello screen after tap', async () => {
|
||||
// await element(by.id('hello_button')).tap();
|
||||
// await expect(element(by.text('Hello!!!'))).toBeVisible();
|
||||
// });
|
||||
//
|
||||
// it('should show world screen after tap', async () => {
|
||||
// await element(by.id('world_button')).tap();
|
||||
// await expect(element(by.text('World!!!'))).toBeVisible();
|
||||
// });
|
||||
// });
|
||||
|
||||
describe('should work inside node', () => {
|
||||
beforeEach(async () => {
|
||||
await device.reloadReactNative();
|
||||
});
|
||||
|
||||
it('should provide bridge global', () => {
|
||||
const firebase = bridge.module;
|
||||
|
||||
|
||||
return Promise.resolve();
|
||||
});
|
||||
|
||||
it('should require 2', () => {
|
||||
const firebase = bridge.module;
|
||||
// const { Platform } = bridge.rnModule;
|
||||
// should.equal(firebase.auth.nativeModuleExists, true);
|
||||
return Promise.resolve();
|
||||
});
|
||||
|
||||
it('should require 3', () => {
|
||||
const firebase = bridge.module;
|
||||
// const { Platform } = bridge.rnModule;
|
||||
// should.equal(firebase.auth.nativeModuleExists, true);
|
||||
return Promise.resolve();
|
||||
});
|
||||
|
||||
it('should require 4', () => {
|
||||
const firebase = bridge.module;
|
||||
// const { Platform } = bridge.rnModule;
|
||||
// should.equal(firebase.auth.nativeModuleExists, true);
|
||||
return Promise.resolve();
|
||||
});
|
||||
|
||||
it('should require 5', () => {
|
||||
const firebase = bridge.module;
|
||||
// const { Platform } = bridge.rnModule;
|
||||
// should.equal(firebase.auth.nativeModuleExists, true);
|
||||
return Promise.resolve();
|
||||
});
|
||||
});
|
|
@ -25,7 +25,36 @@ describe('should work inside node', () => {
|
|||
|
||||
it('should require', () => {
|
||||
const firebase = bridge.module;
|
||||
|
||||
|
||||
return Promise.resolve();
|
||||
});
|
||||
|
||||
it('should require 2', () => {
|
||||
const firebase = bridge.module;
|
||||
// const { Platform } = bridge.rnModule;
|
||||
should.equal(firebase.auth.nativeModuleExists, true);
|
||||
// should.equal(firebase.auth.nativeModuleExists, true);
|
||||
return Promise.resolve();
|
||||
});
|
||||
|
||||
it('should require 3', () => {
|
||||
const firebase = bridge.module;
|
||||
// const { Platform } = bridge.rnModule;
|
||||
// should.equal(firebase.auth.nativeModuleExists, true);
|
||||
return Promise.resolve();
|
||||
});
|
||||
|
||||
it('should require 4', () => {
|
||||
const firebase = bridge.module;
|
||||
// const { Platform } = bridge.rnModule;
|
||||
// should.equal(firebase.auth.nativeModuleExists, true);
|
||||
return Promise.resolve();
|
||||
});
|
||||
|
||||
it('should require 5', () => {
|
||||
const firebase = bridge.module;
|
||||
// const { Platform } = bridge.rnModule;
|
||||
// should.equal(firebase.auth.nativeModuleExists, true);
|
||||
return Promise.resolve();
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
--delay
|
||||
--recursive
|
||||
--timeout 120000
|
||||
--bail
|
||||
--require bridge
|
||||
--require ./bridge/env/node
|
||||
|
|
|
@ -1 +1 @@
|
|||
require('./app');
|
||||
require('./app');
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"name": "example",
|
||||
"name": "rnfirebase-tests",
|
||||
"version": "7.2.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
|
@ -337,8 +337,7 @@
|
|||
"aproba": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
|
||||
"integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
|
||||
"dev": true
|
||||
"integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
|
||||
},
|
||||
"arch": {
|
||||
"version": "2.1.0",
|
||||
|
@ -520,6 +519,11 @@
|
|||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"async-limiter": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
|
||||
"integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
|
||||
},
|
||||
"asynckit": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||
|
@ -1458,8 +1462,7 @@
|
|||
"bluebird": {
|
||||
"version": "3.5.1",
|
||||
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
|
||||
"integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
|
||||
"dev": true
|
||||
"integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
|
||||
},
|
||||
"body-parser": {
|
||||
"version": "1.13.3",
|
||||
|
@ -1544,8 +1547,7 @@
|
|||
"browser-stdout": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz",
|
||||
"integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=",
|
||||
"dev": true
|
||||
"integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8="
|
||||
},
|
||||
"bser": {
|
||||
"version": "2.0.0",
|
||||
|
@ -1639,7 +1641,6 @@
|
|||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/child-process-promise/-/child-process-promise-2.2.1.tgz",
|
||||
"integrity": "sha1-RzChHvYQ+tRQuPIjx50x172tgHQ=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cross-spawn": "4.0.2",
|
||||
"node-version": "1.1.3",
|
||||
|
@ -1650,7 +1651,6 @@
|
|||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz",
|
||||
"integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lru-cache": "4.1.2",
|
||||
"which": "1.3.0"
|
||||
|
@ -2052,8 +2052,7 @@
|
|||
"console-control-strings": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
|
||||
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
|
||||
"dev": true
|
||||
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
|
||||
},
|
||||
"contains-path": {
|
||||
"version": "0.1.0",
|
||||
|
@ -2304,7 +2303,6 @@
|
|||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/detox/-/detox-7.2.0.tgz",
|
||||
"integrity": "sha512-hj+GgnXJWmNit0lzeDY1KjZZv3nvNWsB3V6oGIvwCe3Jdl2JXqg6Qn2USa137loTpuvdR77Zgl5m3u1iG1Am/Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"child-process-promise": "2.2.1",
|
||||
"commander": "2.15.1",
|
||||
|
@ -2324,7 +2322,6 @@
|
|||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
|
||||
"integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "4.1.11",
|
||||
"jsonfile": "4.0.0",
|
||||
|
@ -2335,7 +2332,6 @@
|
|||
"version": "2.7.4",
|
||||
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
|
||||
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"aproba": "1.2.0",
|
||||
"console-control-strings": "1.1.0",
|
||||
|
@ -2351,7 +2347,6 @@
|
|||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
|
||||
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"number-is-nan": "1.0.1"
|
||||
}
|
||||
|
@ -2360,7 +2355,6 @@
|
|||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
|
||||
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "4.1.11"
|
||||
}
|
||||
|
@ -2369,7 +2363,6 @@
|
|||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
|
||||
"integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"are-we-there-yet": "1.1.4",
|
||||
"console-control-strings": "1.1.0",
|
||||
|
@ -2381,12 +2374,20 @@
|
|||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
||||
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"code-point-at": "1.1.0",
|
||||
"is-fullwidth-code-point": "1.0.0",
|
||||
"strip-ansi": "3.0.1"
|
||||
}
|
||||
},
|
||||
"ws": {
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
|
||||
"integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
|
||||
"requires": {
|
||||
"options": "0.0.6",
|
||||
"ultron": "1.0.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -2394,7 +2395,6 @@
|
|||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/detox-server/-/detox-server-7.0.0.tgz",
|
||||
"integrity": "sha512-zs9ZP/MgeEmaZD/+MCl5PVcYHRjUtFBkBx3xQRPcsjJ/PmpCKy/BvygjLO6tRsR/2SC9UYay6W+BdguEYeft8g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lodash": "4.17.5",
|
||||
"npmlog": "4.1.2",
|
||||
|
@ -2405,7 +2405,6 @@
|
|||
"version": "2.7.4",
|
||||
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
|
||||
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"aproba": "1.2.0",
|
||||
"console-control-strings": "1.1.0",
|
||||
|
@ -2421,7 +2420,6 @@
|
|||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
|
||||
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"number-is-nan": "1.0.1"
|
||||
}
|
||||
|
@ -2430,7 +2428,6 @@
|
|||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
|
||||
"integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"are-we-there-yet": "1.1.4",
|
||||
"console-control-strings": "1.1.0",
|
||||
|
@ -2442,20 +2439,27 @@
|
|||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
||||
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"code-point-at": "1.1.0",
|
||||
"is-fullwidth-code-point": "1.0.0",
|
||||
"strip-ansi": "3.0.1"
|
||||
}
|
||||
},
|
||||
"ws": {
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
|
||||
"integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
|
||||
"requires": {
|
||||
"options": "0.0.6",
|
||||
"ultron": "1.0.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"diff": {
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz",
|
||||
"integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==",
|
||||
"dev": true
|
||||
"integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww=="
|
||||
},
|
||||
"doctrine": {
|
||||
"version": "2.1.0",
|
||||
|
@ -4214,7 +4218,6 @@
|
|||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/get-port/-/get-port-2.1.0.tgz",
|
||||
"integrity": "sha1-h4P53OvR7qSVozThpqJR54iHqxo=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"pinkie-promise": "2.0.1"
|
||||
}
|
||||
|
@ -4311,8 +4314,7 @@
|
|||
"growl": {
|
||||
"version": "1.10.3",
|
||||
"resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz",
|
||||
"integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==",
|
||||
"dev": true
|
||||
"integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q=="
|
||||
},
|
||||
"growly": {
|
||||
"version": "1.3.0",
|
||||
|
@ -4482,8 +4484,7 @@
|
|||
"he": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
|
||||
"integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
|
||||
"dev": true
|
||||
"integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0="
|
||||
},
|
||||
"hoek": {
|
||||
"version": "4.2.1",
|
||||
|
@ -4561,8 +4562,7 @@
|
|||
"ini": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
|
||||
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
|
||||
"dev": true
|
||||
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
|
||||
},
|
||||
"inquirer": {
|
||||
"version": "3.3.0",
|
||||
|
@ -5554,6 +5554,15 @@
|
|||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
|
||||
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
|
||||
},
|
||||
"ws": {
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
|
||||
"integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
|
||||
"requires": {
|
||||
"options": "0.0.6",
|
||||
"ultron": "1.0.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -5675,7 +5684,6 @@
|
|||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/mocha/-/mocha-4.1.0.tgz",
|
||||
"integrity": "sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"browser-stdout": "1.3.0",
|
||||
"commander": "2.11.0",
|
||||
|
@ -5692,14 +5700,12 @@
|
|||
"commander": {
|
||||
"version": "2.11.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
|
||||
"integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ=="
|
||||
},
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
|
@ -5707,14 +5713,12 @@
|
|||
"has-flag": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
|
||||
"integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
|
||||
"dev": true
|
||||
"integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
|
||||
"integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has-flag": "2.0.0"
|
||||
}
|
||||
|
@ -5862,8 +5866,7 @@
|
|||
"node-version": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/node-version/-/node-version-1.1.3.tgz",
|
||||
"integrity": "sha512-rEwE51JWn0yN3Wl5BXeGn5d52OGbSXzWiiXRjAQeuyvcGKyvuSILW2rb3G7Xh+nexzLwhTpek6Ehxd6IjvHePg==",
|
||||
"dev": true
|
||||
"integrity": "sha512-rEwE51JWn0yN3Wl5BXeGn5d52OGbSXzWiiXRjAQeuyvcGKyvuSILW2rb3G7Xh+nexzLwhTpek6Ehxd6IjvHePg=="
|
||||
},
|
||||
"normalize-package-data": {
|
||||
"version": "2.4.0",
|
||||
|
@ -6273,14 +6276,12 @@
|
|||
"pinkie": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
|
||||
"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
|
||||
"dev": true
|
||||
"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
|
||||
},
|
||||
"pinkie-promise": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
|
||||
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"pinkie": "2.0.4"
|
||||
}
|
||||
|
@ -6392,8 +6393,7 @@
|
|||
"promise-polyfill": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.1.0.tgz",
|
||||
"integrity": "sha1-36lpQ+qcEh/KTem1hoyznTRy4Fc=",
|
||||
"dev": true
|
||||
"integrity": "sha1-36lpQ+qcEh/KTem1hoyznTRy4Fc="
|
||||
},
|
||||
"prop-types": {
|
||||
"version": "15.6.1",
|
||||
|
@ -6605,9 +6605,23 @@
|
|||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz",
|
||||
"integrity": "sha1-rDydOfMgxtzlM5lp0FTvQ90zMxk="
|
||||
},
|
||||
"ws": {
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
|
||||
"integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
|
||||
"requires": {
|
||||
"options": "0.0.6",
|
||||
"ultron": "1.0.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"react-native-restart": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/react-native-restart/-/react-native-restart-0.0.6.tgz",
|
||||
"integrity": "sha512-ysKvNOjCeCS8A4ouQkJ8DZRYH4wgPdPEJqqqSGFuNzK4eAi3VPOeneQ3w0HHYeOui5fc6fV9y9ClOB9LcKbKpQ=="
|
||||
},
|
||||
"react-proxy": {
|
||||
"version": "1.1.8",
|
||||
"resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-1.1.8.tgz",
|
||||
|
@ -7430,7 +7444,6 @@
|
|||
"version": "1.0.9",
|
||||
"resolved": "https://registry.npmjs.org/shell-utils/-/shell-utils-1.0.9.tgz",
|
||||
"integrity": "sha512-JbTHnKpMyj9TUUbL+Us2Rx2iVHFvH5QyQoke9SN1L0pueiZeO2Gzlzopmloi7oqObL4qtvdSuZPE3UfdIzmlag==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lodash": "4.17.5"
|
||||
}
|
||||
|
@ -7906,14 +7919,12 @@
|
|||
"tail": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/tail/-/tail-1.2.3.tgz",
|
||||
"integrity": "sha1-sI1vp5+5KIaWMaNBpRwUSXwcQlU=",
|
||||
"dev": true
|
||||
"integrity": "sha1-sI1vp5+5KIaWMaNBpRwUSXwcQlU="
|
||||
},
|
||||
"telnet-client": {
|
||||
"version": "0.15.3",
|
||||
"resolved": "https://registry.npmjs.org/telnet-client/-/telnet-client-0.15.3.tgz",
|
||||
"integrity": "sha512-GSfdzQV0BKIYsmeXq7bJFJ2wHeJud6icaIxCUf6QCGQUD6R0BBGbT1+yLDhq67JRdgRpwyPwUbV7JxFeRrZomQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bluebird": "3.5.1"
|
||||
}
|
||||
|
@ -8522,8 +8533,7 @@
|
|||
"universalify": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
|
||||
"integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=",
|
||||
"dev": true
|
||||
"integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc="
|
||||
},
|
||||
"unpipe": {
|
||||
"version": "1.0.0",
|
||||
|
@ -8704,7 +8714,6 @@
|
|||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
|
||||
"integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"string-width": "1.0.2"
|
||||
},
|
||||
|
@ -8713,7 +8722,6 @@
|
|||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
|
||||
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"number-is-nan": "1.0.1"
|
||||
}
|
||||
|
@ -8722,7 +8730,6 @@
|
|||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
||||
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"code-point-at": "1.1.0",
|
||||
"is-fullwidth-code-point": "1.0.0",
|
||||
|
@ -8798,12 +8805,11 @@
|
|||
}
|
||||
},
|
||||
"ws": {
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
|
||||
"integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-5.1.0.tgz",
|
||||
"integrity": "sha512-7KU/qkUXtJW9aa5WRKlo0puE1ejEoAgDb0D/Pt+lWpTkKF7Kp+MqFOtwNFwnuiYeeDpFjp0qyMniE84OjKIEqQ==",
|
||||
"requires": {
|
||||
"options": "0.0.6",
|
||||
"ultron": "1.0.2"
|
||||
"async-limiter": "1.0.0"
|
||||
}
|
||||
},
|
||||
"xcode": {
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
"version": "7.2.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"start": "REACT_DEBUGGER='todo' node node_modules/react-native/local-cli/cli.js start --platforms ios,android --skipflow",
|
||||
"start-local-debug": "node node_modules/react-native/local-cli/cli.js start --platforms ios,android --skipflow",
|
||||
"start": "REACT_DEBUGGER='echo nope' node node_modules/react-native/local-cli/cli.js start --platforms ios,android --skipflow",
|
||||
"start-ci": "REACT_DEBUGGER='todo' node node_modules/react-native/local-cli/cli.js start --platforms ios,android --skipflow --nonPersistent",
|
||||
"android:dev": "react-native run-android",
|
||||
"android:prod": "react-native run-android --configuration=release",
|
||||
|
@ -12,10 +13,12 @@
|
|||
"ios:pod:install": "cd ios && rm -rf ReactNativeFirebaseDemo.xcworkspace && pod install && cd .."
|
||||
},
|
||||
"dependencies": {
|
||||
"detox": "^7.2.0",
|
||||
"mocha": "^4.0.1",
|
||||
"react": "^16.2.0",
|
||||
"react-native": "^0.52.3",
|
||||
"detox": "^7.2.0",
|
||||
"mocha": "^4.0.1"
|
||||
"react-native-restart": "0.0.6",
|
||||
"ws": "^5.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-cli": "^6.24.0",
|
||||
|
|
Loading…
Reference in New Issue