From 240dfae28c81a05dab137a84e81e48c5ccecdcec Mon Sep 17 00:00:00 2001 From: Sebastian Markbage Date: Thu, 24 Mar 2016 22:55:58 -0700 Subject: [PATCH] Add React Native Modules to module map + fix fbjs Our module rewrite whitelist needs to ignore providesModule files that are going to be required from the global React Native environment. We also need to add ReactDOM to providesModule since we removed it from React Native. --- gulpfile.js | 38 ++++++++++++++----- packages/react/lib/ReactDOM.native.js | 4 ++ .../NodeHandle/UniversalWorkerNodeHandle.js | 2 +- .../ReactIOS/IOSNativeBridgeEventPlugin.js | 2 +- .../native/ReactIOS/NativeMethodsMixin.js | 2 +- .../ReactNative/ReactNativeBaseComponent.js | 4 +- .../ReactNativeDefaultInjection.js | 2 +- .../ReactNative/ReactNativeEventEmitter.js | 2 +- .../native/ReactNative/ReactNativeMount.js | 2 +- .../ReactNative/ReactNativeTagHandles.js | 4 +- .../ReactNative/ReactNativeTextComponent.js | 2 +- .../native/ReactNative/findNodeHandle.js | 4 +- 12 files changed, 46 insertions(+), 22 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index f885ea349a..2c2a7c9823 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -20,6 +20,7 @@ var paths = { react: { src: [ 'src/**/*.js', + '!src/**/__benchmarks__/**/*.js', '!src/**/__tests__/**/*.js', '!src/**/__mocks__/**/*.js', '!src/shared/vendor/**/*.js', @@ -28,17 +29,36 @@ var paths = { }, }; +var fbjsModuleMap = require('fbjs/module-map'); +var moduleMap = {}; +for (var key in fbjsModuleMap) { + moduleMap[key] = fbjsModuleMap[key]; +} +var whiteListNames = [ + 'deepDiffer', + 'deepFreezeAndThrowOnMutationInDev', + 'flattenStyle', + 'InitializeJavaScriptAppEngine', + 'InteractionManager', + 'JSTimersExecution', + 'merge', + 'Platform', + 'RCTEventEmitter', + 'RCTLog', + 'TextInputState', + 'UIManager', + 'View', +]; + +whiteListNames.forEach(function(name) { + moduleMap[name] = name; +}); + +moduleMap['object-assign'] = 'object-assign'; + var babelOpts = { plugins: [ - [babelPluginModules, { - map: Object.assign( - {}, - require('fbjs/module-map'), - { - 'object-assign': 'object-assign', - } - ), - }], + [babelPluginModules, { map: moduleMap }], ], }; diff --git a/packages/react/lib/ReactDOM.native.js b/packages/react/lib/ReactDOM.native.js index bdd9044a8b..2c4b436a7e 100644 --- a/packages/react/lib/ReactDOM.native.js +++ b/packages/react/lib/ReactDOM.native.js @@ -1,3 +1,7 @@ +/** + * @providesModule ReactDOM + */ + 'use strict'; var ReactUpdates = require('./ReactUpdates'); diff --git a/src/renderers/native/NodeHandle/UniversalWorkerNodeHandle.js b/src/renderers/native/NodeHandle/UniversalWorkerNodeHandle.js index ca7faa7fec..b91feba9b1 100644 --- a/src/renderers/native/NodeHandle/UniversalWorkerNodeHandle.js +++ b/src/renderers/native/NodeHandle/UniversalWorkerNodeHandle.js @@ -4,7 +4,7 @@ var ReactNativeTagHandles = require('ReactNativeTagHandles'); -var invariant = require('fbjs/lib/invariant'); +var invariant = require('invariant'); var UniversalWorkerNodeHandle = { getRootNodeID: function(nodeHandle) { diff --git a/src/renderers/native/ReactIOS/IOSNativeBridgeEventPlugin.js b/src/renderers/native/ReactIOS/IOSNativeBridgeEventPlugin.js index d1ffc1d402..6c1d887e55 100644 --- a/src/renderers/native/ReactIOS/IOSNativeBridgeEventPlugin.js +++ b/src/renderers/native/ReactIOS/IOSNativeBridgeEventPlugin.js @@ -16,7 +16,7 @@ var SyntheticEvent = require('SyntheticEvent'); var UIManager = require('UIManager'); var merge = require('merge'); -var warning = require('fbjs/lib/warning'); +var warning = require('warning'); var customBubblingEventTypes = UIManager.customBubblingEventTypes; var customDirectEventTypes = UIManager.customDirectEventTypes; diff --git a/src/renderers/native/ReactIOS/NativeMethodsMixin.js b/src/renderers/native/ReactIOS/NativeMethodsMixin.js index 88f451a58c..f9247a1419 100644 --- a/src/renderers/native/ReactIOS/NativeMethodsMixin.js +++ b/src/renderers/native/ReactIOS/NativeMethodsMixin.js @@ -16,7 +16,7 @@ var TextInputState = require('TextInputState'); var UIManager = require('UIManager'); var findNodeHandle = require('findNodeHandle'); -var invariant = require('fbjs/lib/invariant'); +var invariant = require('invariant'); type MeasureOnSuccessCallback = ( x: number, diff --git a/src/renderers/native/ReactNative/ReactNativeBaseComponent.js b/src/renderers/native/ReactNative/ReactNativeBaseComponent.js index b879b45b6a..19afca8036 100644 --- a/src/renderers/native/ReactNative/ReactNativeBaseComponent.js +++ b/src/renderers/native/ReactNative/ReactNativeBaseComponent.js @@ -19,8 +19,8 @@ var ReactMultiChild = require('ReactMultiChild'); var UIManager = require('UIManager'); var deepFreezeAndThrowOnMutationInDev = require('deepFreezeAndThrowOnMutationInDev'); -var invariant = require('fbjs/lib/invariant'); -var warning = require('fbjs/lib/warning'); +var invariant = require('invariant'); +var warning = require('warning'); var registrationNames = ReactNativeEventEmitter.registrationNames; var putListener = ReactNativeEventEmitter.putListener; diff --git a/src/renderers/native/ReactNative/ReactNativeDefaultInjection.js b/src/renderers/native/ReactNative/ReactNativeDefaultInjection.js index ee97c2560e..0d55d670c4 100644 --- a/src/renderers/native/ReactNative/ReactNativeDefaultInjection.js +++ b/src/renderers/native/ReactNative/ReactNativeDefaultInjection.js @@ -38,7 +38,7 @@ var ReactUpdates = require('ReactUpdates'); var ResponderEventPlugin = require('ResponderEventPlugin'); var UniversalWorkerNodeHandle = require('UniversalWorkerNodeHandle'); -var invariant = require('fbjs/lib/invariant'); +var invariant = require('invariant'); // Just to ensure this gets packaged, since its only caller is from Native. require('RCTEventEmitter'); diff --git a/src/renderers/native/ReactNative/ReactNativeEventEmitter.js b/src/renderers/native/ReactNative/ReactNativeEventEmitter.js index c7680257af..ac8854b6cb 100644 --- a/src/renderers/native/ReactNative/ReactNativeEventEmitter.js +++ b/src/renderers/native/ReactNative/ReactNativeEventEmitter.js @@ -18,7 +18,7 @@ var NodeHandle = require('NodeHandle'); var EventConstants = require('EventConstants'); var merge = require('merge'); -var warning = require('fbjs/lib/warning'); +var warning = require('warning'); var topLevelTypes = EventConstants.topLevelTypes; diff --git a/src/renderers/native/ReactNative/ReactNativeMount.js b/src/renderers/native/ReactNative/ReactNativeMount.js index cf8c5bb336..2a38c3dbba 100644 --- a/src/renderers/native/ReactNative/ReactNativeMount.js +++ b/src/renderers/native/ReactNative/ReactNativeMount.js @@ -19,7 +19,7 @@ var ReactUpdateQueue = require('ReactUpdateQueue'); var ReactUpdates = require('ReactUpdates'); var UIManager = require('UIManager'); -var emptyObject = require('fbjs/lib/emptyObject'); +var emptyObject = require('emptyObject'); var instantiateReactComponent = require('instantiateReactComponent'); var shouldUpdateReactComponent = require('shouldUpdateReactComponent'); diff --git a/src/renderers/native/ReactNative/ReactNativeTagHandles.js b/src/renderers/native/ReactNative/ReactNativeTagHandles.js index 5a0de4cda3..ab350817c6 100644 --- a/src/renderers/native/ReactNative/ReactNativeTagHandles.js +++ b/src/renderers/native/ReactNative/ReactNativeTagHandles.js @@ -11,8 +11,8 @@ */ 'use strict'; -var invariant = require('fbjs/lib/invariant'); -var warning = require('fbjs/lib/warning'); +var invariant = require('invariant'); +var warning = require('warning'); /** * Keeps track of allocating and associating native "tags" which are numeric, diff --git a/src/renderers/native/ReactNative/ReactNativeTextComponent.js b/src/renderers/native/ReactNative/ReactNativeTextComponent.js index 7bd97467f2..07463ff905 100644 --- a/src/renderers/native/ReactNative/ReactNativeTextComponent.js +++ b/src/renderers/native/ReactNative/ReactNativeTextComponent.js @@ -14,7 +14,7 @@ var ReactNativeTagHandles = require('ReactNativeTagHandles'); var UIManager = require('UIManager'); -var invariant = require('fbjs/lib/invariant'); +var invariant = require('invariant'); var ReactNativeTextComponent = function(props) { // This constructor and its argument is currently used by mocks. diff --git a/src/renderers/native/ReactNative/findNodeHandle.js b/src/renderers/native/ReactNative/findNodeHandle.js index dd3191b82d..37c772760c 100644 --- a/src/renderers/native/ReactNative/findNodeHandle.js +++ b/src/renderers/native/ReactNative/findNodeHandle.js @@ -16,8 +16,8 @@ var ReactCurrentOwner = require('ReactCurrentOwner'); var ReactInstanceMap = require('ReactInstanceMap'); var ReactNativeTagHandles = require('ReactNativeTagHandles'); -var invariant = require('fbjs/lib/invariant'); -var warning = require('fbjs/lib/warning'); +var invariant = require('invariant'); +var warning = require('warning'); /** * ReactNative vs ReactWeb