Remove fbjs dependency (#13069)
* Inline fbjs/lib/invariant * Inline fbjs/lib/warning * Remove remaining usage of fbjs in packages/*.js * Fix lint * Remove fbjs from dependencies * Protect against accidental fbjs imports * Fix broken test mocks * Allow transitive deps on fbjs/ for UMD bundles * Remove fbjs from release script
Dan Abramov committed
Jun 19, 2018 at 16:03 UTC
aeda7b745d9c080150704feb20ea576238a1b9a1
110 files changed
+320
-156
package.json
-1
@@ -57,7 +57,6 @@
57
"eslint-plugin-no-for-of-loops": "^1.0.0",
58
"eslint-plugin-react": "^6.7.1",
59
"eslint-plugin-react-internal": "link:./scripts/eslint-rules/",
60
- "fbjs": "^0.8.16",
60
"fbjs-scripts": "^0.6.0",
61
"filesize": "^3.5.6",
62
"flow-bin": "^0.72.0",
packages/create-subscription/package.json
-3
@@ -9,9 +9,6 @@
9
"index.js",
10
"cjs/"
11
],
12
- "dependencies": {
13
- "fbjs": "^0.8.16"
14
- },
12
"peerDependencies": {
13
"react": "^16.3.0"
14
},
packages/create-subscription/src/createSubscription.js
+2
-2
@@ -8,8 +8,8 @@
8
*/
9
10
import React from 'react';
11
-import invariant from 'fbjs/lib/invariant';
12
-import warning from 'fbjs/lib/warning';
11
+import invariant from 'shared/invariant';
12
+import warning from 'shared/warning';
13
14
type Unsubscribe = () => void;
15
packages/events/EventPluginHub.js
+1
-1
@@ -7,7 +7,7 @@
7
*/
8
9
import ReactErrorUtils from 'shared/ReactErrorUtils';
10
-import invariant from 'fbjs/lib/invariant';
10
+import invariant from 'shared/invariant';
11
12
import {
13
injectEventPluginOrder,
packages/events/EventPluginRegistry.js
+1
-1
@@ -14,7 +14,7 @@ import type {
14
PluginModule,
15
} from './PluginModuleType';
16
17
-import invariant from 'fbjs/lib/invariant';
17
+import invariant from 'shared/invariant';
18
19
type NamesToPlugins = {[key: PluginName]: PluginModule<AnyNativeEvent>};
20
type EventPluginOrder = null | Array<PluginName>;
packages/events/EventPluginUtils.js
+2
-2
@@ -6,8 +6,8 @@
6
*/
7
8
import ReactErrorUtils from 'shared/ReactErrorUtils';
9
-import invariant from 'fbjs/lib/invariant';
10
-import warning from 'fbjs/lib/warning';
9
+import invariant from 'shared/invariant';
10
+import warning from 'shared/warning';
11
12
export let getFiberCurrentPropsFromNode = null;
13
export let getInstanceFromNode = null;
packages/events/EventPropagators.js
+1
-1
@@ -10,7 +10,7 @@ import {
10
traverseTwoPhase,
11
traverseEnterLeave,
12
} from 'shared/ReactTreeTraversal';
13
-import warning from 'fbjs/lib/warning';
13
+import warning from 'shared/warning';
14
15
import {getListener} from './EventPluginHub';
16
import accumulateInto from './accumulateInto';
packages/events/ReactControlledComponent.js
+1
-1
@@ -5,7 +5,7 @@
5
* LICENSE file in the root directory of this source tree.
6
*/
7
8
-import invariant from 'fbjs/lib/invariant';
8
+import invariant from 'shared/invariant';
9
10
import {
11
getInstanceFromNode,
packages/events/ResponderTouchHistoryStore.js
+2
-2
@@ -7,8 +7,8 @@
7
* @flow
8
*/
9
10
-import invariant from 'fbjs/lib/invariant';
11
-import warning from 'fbjs/lib/warning';
10
+import invariant from 'shared/invariant';
11
+import warning from 'shared/warning';
12
13
import {isStartish, isMoveish, isEndish} from './ResponderTopLevelEventTypes';
14
packages/events/SyntheticEvent.js
+2
-2
@@ -7,8 +7,8 @@
7
8
/* eslint valid-typeof: 0 */
9
10
-import invariant from 'fbjs/lib/invariant';
11
-import warning from 'fbjs/lib/warning';
10
+import invariant from 'shared/invariant';
11
+import warning from 'shared/warning';
12
13
let didWarnForAddedNewProperty = false;
14
const EVENT_POOL_SIZE = 10;
packages/events/accumulate.js
+1
-1
@@ -7,7 +7,7 @@
7
* @flow
8
*/
9
10
-import invariant from 'fbjs/lib/invariant';
10
+import invariant from 'shared/invariant';
11
12
/**
13
* Accumulates items that must not be null or undefined.
packages/events/accumulateInto.js
+1
-1
@@ -7,7 +7,7 @@
7
* @flow
8
*/
9
10
-import invariant from 'fbjs/lib/invariant';
10
+import invariant from 'shared/invariant';
11
12
/**
13
* Accumulates items that must not be null or undefined into the first one. This
packages/react-art/package.json
-1
@@ -20,7 +20,6 @@
20
"dependencies": {
21
"art": "^0.10.1",
22
"create-react-class": "^15.6.2",
23
- "fbjs": "^0.8.16",
23
"loose-envify": "^1.1.0",
24
"object-assign": "^4.1.1",
25
"prop-types": "^15.6.0"
packages/react-art/src/ReactARTHostConfig.js
+1
-1
@@ -8,7 +8,7 @@
8
import * as ReactScheduler from 'shared/ReactScheduler';
9
import Transform from 'art/core/transform';
10
import Mode from 'art/modes/current';
11
-import invariant from 'fbjs/lib/invariant';
11
+import invariant from 'shared/invariant';
12
13
import {TYPES, EVENT_TYPES, childrenAsString} from './ReactARTInternals';
14
packages/react-dom/package.json
-1
@@ -13,7 +13,6 @@
13
},
14
"homepage": "https://reactjs.org/",
15
"dependencies": {
16
- "fbjs": "^0.8.16",
16
"loose-envify": "^1.1.0",
17
"object-assign": "^4.1.1",
18
"prop-types": "^15.6.0"
packages/react-dom/src/__tests__/ReactCompositeComponent-test.js
+42
-10
@@ -17,10 +17,50 @@ let ReactDOMServer;
17
let ReactCurrentOwner;
18
let ReactTestUtils;
19
let PropTypes;
20
-let shallowEqual;
21
-let shallowCompare;
20
21
describe('ReactCompositeComponent', () => {
22
+ const hasOwnProperty = Object.prototype.hasOwnProperty;
23
+
24
+ /**
25
+ * Performs equality by iterating through keys on an object and returning false
26
+ * when any key has values which are not strictly equal between the arguments.
27
+ * Returns true when the values of all keys are strictly equal.
28
+ */
29
+ function shallowEqual(objA: mixed, objB: mixed): boolean {
30
+ if (Object.is(objA, objB)) {
31
+ return true;
32
+ }
33
+ if (
34
+ typeof objA !== 'object' ||
35
+ objA === null ||
36
+ typeof objB !== 'object' ||
37
+ objB === null
38
+ ) {
39
+ return false;
40
+ }
41
+ const keysA = Object.keys(objA);
42
+ const keysB = Object.keys(objB);
43
+ if (keysA.length !== keysB.length) {
44
+ return false;
45
+ }
46
+ for (let i = 0; i < keysA.length; i++) {
47
+ if (
48
+ !hasOwnProperty.call(objB, keysA[i]) ||
49
+ !Object.is(objA[keysA[i]], objB[keysA[i]])
50
+ ) {
51
+ return false;
52
+ }
53
+ }
54
+ return true;
55
+ }
56
+
57
+ function shallowCompare(instance, nextProps, nextState) {
58
+ return (
59
+ !shallowEqual(instance.props, nextProps) ||
60
+ !shallowEqual(instance.state, nextState)
61
+ );
62
+ }
63
+
64
beforeEach(() => {
65
jest.resetModules();
66
React = require('react');
@@ -30,14 +70,6 @@ describe('ReactCompositeComponent', () => {
70
.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner;
71
ReactTestUtils = require('react-dom/test-utils');
72
PropTypes = require('prop-types');
33
- shallowEqual = require('fbjs/lib/shallowEqual');
34
-
35
- shallowCompare = function(instance, nextProps, nextState) {
36
- return (
37
- !shallowEqual(instance.props, nextProps) ||
38
- !shallowEqual(instance.state, nextState)
39
- );
40
- };
73
74
MorphingComponent = class extends React.Component {
75
state = {activated: false};
packages/react-dom/src/__tests__/ReactDOMSelection-test.internal.js
+3
-6
@@ -12,7 +12,6 @@
12
let React;
13
let ReactDOM;
14
let ReactDOMSelection;
15
-let invariant;
15
16
let getModernOffsetsFromPoints;
17
@@ -21,7 +20,6 @@ describe('ReactDOMSelection', () => {
20
React = require('react');
21
ReactDOM = require('react-dom');
22
ReactDOMSelection = require('../client/ReactDOMSelection');
24
- invariant = require('fbjs/lib/invariant');
23
24
({getModernOffsetsFromPoints} = ReactDOMSelection);
25
});
@@ -68,10 +66,9 @@ describe('ReactDOMSelection', () => {
66
}
67
traverse(outerNode);
68
71
- invariant(
72
- start !== null && end !== null,
73
- 'Provided anchor/focus nodes were outside of root.',
74
- );
69
+ if (start === null || end === null) {
70
+ throw new Error('Provided anchor/focus nodes were outside of root.');
71
+ }
72
return {start, end};
73
}
74
packages/react-dom/src/client/ReactDOM.js
+2
-2
@@ -31,9 +31,9 @@ import * as ReactInstanceMap from 'shared/ReactInstanceMap';
31
import ReactVersion from 'shared/ReactVersion';
32
import {ReactCurrentOwner} from 'shared/ReactGlobalSharedState';
33
import getComponentName from 'shared/getComponentName';
34
-import invariant from 'fbjs/lib/invariant';
34
+import invariant from 'shared/invariant';
35
import lowPriorityWarning from 'shared/lowPriorityWarning';
36
-import warning from 'fbjs/lib/warning';
36
+import warning from 'shared/warning';
37
38
import * as ReactDOMComponentTree from './ReactDOMComponentTree';
39
import * as ReactDOMFiberComponent from './ReactDOMFiberComponent';
packages/react-dom/src/client/ReactDOMComponentTree.js
+1
-1
@@ -6,7 +6,7 @@
6
*/
7
8
import {HostComponent, HostText} from 'shared/ReactTypeOfWork';
9
-import invariant from 'fbjs/lib/invariant';
9
+import invariant from 'shared/invariant';
10
11
const randomKey = Math.random()
12
.toString(36)
packages/react-dom/src/client/ReactDOMFiberComponent.js
+1
-1
@@ -10,7 +10,7 @@
10
// TODO: direct imports like some-package/src/* are bad. Fix me.
11
import ReactDebugCurrentFiber from 'react-reconciler/src/ReactDebugCurrentFiber';
12
import {registrationNameModules} from 'events/EventPluginRegistry';
13
-import warning from 'fbjs/lib/warning';
13
+import warning from 'shared/warning';
14
15
import * as DOMPropertyOperations from './DOMPropertyOperations';
16
import * as ReactDOMFiberInput from './ReactDOMFiberInput';
packages/react-dom/src/client/ReactDOMFiberInput.js
+2
-2
@@ -9,8 +9,8 @@
9
10
// TODO: direct imports like some-package/src/* are bad. Fix me.
11
import ReactDebugCurrentFiber from 'react-reconciler/src/ReactDebugCurrentFiber';
12
-import invariant from 'fbjs/lib/invariant';
13
-import warning from 'fbjs/lib/warning';
12
+import invariant from 'shared/invariant';
13
+import warning from 'shared/warning';
14
15
import * as DOMPropertyOperations from './DOMPropertyOperations';
16
import {getFiberCurrentPropsFromNode} from './ReactDOMComponentTree';
packages/react-dom/src/client/ReactDOMFiberOption.js
+1
-1
@@ -8,7 +8,7 @@
8
*/
9
10
import React from 'react';
11
-import warning from 'fbjs/lib/warning';
11
+import warning from 'shared/warning';
12
13
let didWarnSelectedSetOnOption = false;
14
packages/react-dom/src/client/ReactDOMFiberSelect.js
+1
-1
@@ -9,7 +9,7 @@
9
10
// TODO: direct imports like some-package/src/* are bad. Fix me.
11
import ReactDebugCurrentFiber from 'react-reconciler/src/ReactDebugCurrentFiber';
12
-import warning from 'fbjs/lib/warning';
12
+import warning from 'shared/warning';
13
14
import ReactControlledValuePropTypes from '../shared/ReactControlledValuePropTypes';
15
packages/react-dom/src/client/ReactDOMFiberTextarea.js
+2
-2
@@ -7,8 +7,8 @@
7
* @flow
8
*/
9
10
-import invariant from 'fbjs/lib/invariant';
11
-import warning from 'fbjs/lib/warning';
10
+import invariant from 'shared/invariant';
11
+import warning from 'shared/warning';
12
// TODO: direct imports like some-package/src/* are bad. Fix me.
13
import ReactDebugCurrentFiber from 'react-reconciler/src/ReactDebugCurrentFiber';
14
packages/react-dom/src/client/validateDOMNesting.js
+1
-1
@@ -5,7 +5,7 @@
5
* LICENSE file in the root directory of this source tree.
6
*/
7
8
-import warning from 'fbjs/lib/warning';
8
+import warning from 'shared/warning';
9
// TODO: direct imports like some-package/src/* are bad. Fix me.
10
import ReactDebugCurrentFiber from 'react-reconciler/src/ReactDebugCurrentFiber';
11
packages/react-dom/src/events/SimpleEventPlugin.js
+1
-1
@@ -22,7 +22,7 @@ import {accumulateTwoPhaseDispatches} from 'events/EventPropagators';
22
import SyntheticEvent from 'events/SyntheticEvent';
23
24
import * as DOMTopLevelEventTypes from './DOMTopLevelEventTypes';
25
-import warning from 'fbjs/lib/warning';
25
+import warning from 'shared/warning';
26
27
import SyntheticAnimationEvent from './SyntheticAnimationEvent';
28
import SyntheticClipboardEvent from './SyntheticClipboardEvent';
packages/react-dom/src/server/ReactDOMServerBrowser.js
+1
-1
@@ -6,7 +6,7 @@
6
*/
7
8
import ReactVersion from 'shared/ReactVersion';
9
-import invariant from 'fbjs/lib/invariant';
9
+import invariant from 'shared/invariant';
10
11
import {renderToString, renderToStaticMarkup} from './ReactDOMStringRenderer';
12
packages/react-dom/src/server/ReactPartialRenderer.js
+2
-2
@@ -15,9 +15,9 @@ import type {
15
} from 'shared/ReactTypes';
16
17
import React from 'react';
18
-import invariant from 'fbjs/lib/invariant';
18
+import invariant from 'shared/invariant';
19
import lowPriorityWarning from 'shared/lowPriorityWarning';
20
-import warning from 'fbjs/lib/warning';
20
+import warning from 'shared/warning';
21
import checkPropTypes from 'prop-types/checkPropTypes';
22
import describeComponentFrame from 'shared/describeComponentFrame';
23
import {ReactDebugCurrentFrame} from 'shared/ReactGlobalSharedState';
packages/react-dom/src/shared/DOMProperty.js
+1
-1
@@ -7,7 +7,7 @@
7
* @flow
8
*/
9
10
-import warning from 'fbjs/lib/warning';
10
+import warning from 'shared/warning';
11
12
type PropertyType = 0 | 1 | 2 | 3 | 4 | 5 | 6;
13
packages/react-dom/src/shared/ReactDOMInvalidARIAHook.js
+1
-1
@@ -5,7 +5,7 @@
5
* LICENSE file in the root directory of this source tree.
6
*/
7
8
-import warning from 'fbjs/lib/warning';
8
+import warning from 'shared/warning';
9
import {ReactDebugCurrentFrame} from 'shared/ReactGlobalSharedState';
10
11
import {ATTRIBUTE_NAME_CHAR} from './DOMProperty';
packages/react-dom/src/shared/ReactDOMNullInputValuePropHook.js
+1
-1
@@ -6,7 +6,7 @@
6
*/
7
8
import {ReactDebugCurrentFrame} from 'shared/ReactGlobalSharedState';
9
-import warning from 'fbjs/lib/warning';
9
+import warning from 'shared/warning';
10
11
let didWarnValueNull = false;
12
packages/react-dom/src/shared/ReactDOMUnknownPropertyHook.js
+1
-1
@@ -10,7 +10,7 @@ import {
10
possibleRegistrationNames,
11
} from 'events/EventPluginRegistry';
12
import {ReactDebugCurrentFrame} from 'shared/ReactGlobalSharedState';
13
-import warning from 'fbjs/lib/warning';
13
+import warning from 'shared/warning';
14
15
import {
16
ATTRIBUTE_NAME_CHAR,
packages/react-dom/src/shared/assertValidProps.js
+2
-2
@@ -5,8 +5,8 @@
5
* LICENSE file in the root directory of this source tree.
6
*/
7
8
-import invariant from 'fbjs/lib/invariant';
9
-import warning from 'fbjs/lib/warning';
8
+import invariant from 'shared/invariant';
9
+import warning from 'shared/warning';
10
11
import voidElementTags from './voidElementTags';
12
packages/react-dom/src/shared/checkReact.js
+1
-1
@@ -8,7 +8,7 @@
8
*/
9
10
import React from 'react';
11
-import invariant from 'fbjs/lib/invariant';
11
+import invariant from 'shared/invariant';
12
13
invariant(
14
React,
packages/react-dom/src/shared/warnValidStyle.js
+1
-1
@@ -5,7 +5,7 @@
5
* LICENSE file in the root directory of this source tree.
6
*/
7
8
-import warning from 'fbjs/lib/warning';
8
+import warning from 'shared/warning';
9
10
let warnValidStyle = () => {};
11
packages/react-dom/src/test-utils/ReactTestUtils.js
+1
-1
@@ -16,7 +16,7 @@ import {
16
HostText,
17
} from 'shared/ReactTypeOfWork';
18
import SyntheticEvent from 'events/SyntheticEvent';
19
-import invariant from 'fbjs/lib/invariant';
19
+import invariant from 'shared/invariant';
20
21
import * as DOMTopLevelEventTypes from '../events/DOMTopLevelEventTypes';
22
packages/react-native-renderer/package.json
-1
@@ -4,7 +4,6 @@
4
"private": true,
5
"repository": "facebook/react",
6
"dependencies": {
7
- "fbjs": "^0.8.16",
7
"object-assign": "^4.1.1",
8
"prop-types": "^15.6.0"
9
},
packages/react-native-renderer/src/NativeMethodsMixin.js
+1
-1
@@ -15,7 +15,7 @@ import type {
15
ReactNativeBaseComponentViewConfig,
16
} from './ReactNativeTypes';
17
18
-import invariant from 'fbjs/lib/invariant';
18
+import invariant from 'shared/invariant';
19
// Modules provided by RN:
20
import TextInputState from 'TextInputState';
21
import UIManager from 'UIManager';
packages/react-native-renderer/src/ReactFabric.js
+1
-1
@@ -25,7 +25,7 @@ import {getInspectorDataForViewTag} from './ReactNativeFiberInspector';
25
26
import {ReactCurrentOwner} from 'shared/ReactGlobalSharedState';
27
import getComponentName from 'shared/getComponentName';
28
-import warning from 'fbjs/lib/warning';
28
+import warning from 'shared/warning';
29
30
const findHostInstance = ReactFabricRenderer.findHostInstance;
31
packages/react-native-renderer/src/ReactFabricComponentTree.js
+1
-1
@@ -5,7 +5,7 @@
5
* LICENSE file in the root directory of this source tree.
6
*/
7
8
-import invariant from 'fbjs/lib/invariant';
8
+import invariant from 'shared/invariant';
9
10
function getInstanceFromInstance(instanceHandle) {
11
return instanceHandle;
packages/react-native-renderer/src/ReactFabricHostConfig.js
+1
-1
@@ -21,7 +21,7 @@ import * as ReactNativeFrameScheduling from './ReactNativeFrameScheduling';
21
import * as ReactNativeViewConfigRegistry from 'ReactNativeViewConfigRegistry';
22
23
import deepFreezeAndThrowOnMutationInDev from 'deepFreezeAndThrowOnMutationInDev';
24
-import invariant from 'fbjs/lib/invariant';
24
+import invariant from 'shared/invariant';
25
26
import {dispatchEvent} from './ReactFabricEventEmitter';
27
packages/react-native-renderer/src/ReactNativeBridgeEventPlugin.js
+1
-1
@@ -15,7 +15,7 @@ import {
15
import type {TopLevelType} from 'events/TopLevelEventTypes';
16
import * as ReactNativeViewConfigRegistry from 'ReactNativeViewConfigRegistry';
17
import SyntheticEvent from 'events/SyntheticEvent';
18
-import invariant from 'fbjs/lib/invariant';
18
+import invariant from 'shared/invariant';
19
20
const {
21
customBubblingEventTypes,
packages/react-native-renderer/src/ReactNativeComponentTree.js
+1
-1
@@ -5,7 +5,7 @@
5
* LICENSE file in the root directory of this source tree.
6
*/
7
8
-import invariant from 'fbjs/lib/invariant';
8
+import invariant from 'shared/invariant';
9
10
const instanceCache = {};
11
const instanceProps = {};
packages/react-native-renderer/src/ReactNativeEventEmitter.js
+1
-1
@@ -10,7 +10,7 @@
10
import {getListener, runExtractedEventsInBatch} from 'events/EventPluginHub';
11
import {registrationNameModules} from 'events/EventPluginRegistry';
12
import {batchedUpdates} from 'events/ReactGenericBatching';
13
-import warning from 'fbjs/lib/warning';
13
+import warning from 'shared/warning';
14
15
import {getInstanceFromNode} from './ReactNativeComponentTree';
16
packages/react-native-renderer/src/ReactNativeFiberInspector.js
+1
-1
@@ -15,7 +15,7 @@ import {
15
} from 'react-reconciler/reflection';
16
import getComponentName from 'shared/getComponentName';
17
import {HostComponent} from 'shared/ReactTypeOfWork';
18
-import invariant from 'fbjs/lib/invariant';
18
+import invariant from 'shared/invariant';
19
// Module provided by RN:
20
import UIManager from 'UIManager';
21
packages/react-native-renderer/src/ReactNativeHostConfig.js
+1
-1
@@ -9,7 +9,7 @@
9
10
import type {ReactNativeBaseComponentViewConfig} from './ReactNativeTypes';
11
12
-import invariant from 'fbjs/lib/invariant';
12
+import invariant from 'shared/invariant';
13
14
// Modules provided by RN:
15
import UIManager from 'UIManager';
packages/react-native-renderer/src/ReactNativeRenderer.js
+1
-1
@@ -28,7 +28,7 @@ import {getInspectorDataForViewTag} from './ReactNativeFiberInspector';
28
29
import {ReactCurrentOwner} from 'shared/ReactGlobalSharedState';
30
import getComponentName from 'shared/getComponentName';
31
-import warning from 'fbjs/lib/warning';
31
+import warning from 'shared/warning';
32
33
const findHostInstance = ReactNativeFiberRenderer.findHostInstance;
34
packages/react-native-renderer/src/__mocks__/FabricUIManager.js
+1
-1
@@ -9,7 +9,7 @@
9
10
// Mock of the Native Hooks
11
12
-const invariant = require('fbjs/lib/invariant');
12
+import invariant from 'shared/invariant';
13
14
const roots = new Map();
15
const allocatedTags = new Set();
packages/react-native-renderer/src/__mocks__/ReactNativeViewConfigRegistry.js
+1
-1
@@ -13,7 +13,7 @@ import type {
13
ViewConfigGetter,
14
} from './ReactNativeTypes';
15
16
-const invariant = require('fbjs/lib/invariant');
16
+import invariant from 'shared/invariant';
17
18
// Event configs
19
const customBubblingEventTypes = {};
packages/react-native-renderer/src/__mocks__/UIManager.js
+1
-1
@@ -9,7 +9,7 @@
9
10
// Mock of the Native Hooks
11
12
-const invariant = require('fbjs/lib/invariant');
12
+import invariant from 'shared/invariant';
13
14
// Map of viewTag -> {children: [childTag], parent: ?parentTag}
15
const roots = [];
packages/react-noop-renderer/package.json
-1
@@ -7,7 +7,6 @@
7
"repository": "facebook/react",
8
"license": "MIT",
9
"dependencies": {
10
- "fbjs": "^0.8.16",
10
"object-assign": "^4.1.1",
11
"prop-types": "^15.6.0",
12
"regenerator-runtime": "^0.11.0",
packages/react-reconciler/package.json
-1
@@ -25,7 +25,6 @@
25
"react": "^16.0.0"
26
},
27
"dependencies": {
28
- "fbjs": "^0.8.16",
28
"loose-envify": "^1.1.0",
29
"object-assign": "^4.1.1",
30
"prop-types": "^15.6.0"
packages/react-reconciler/src/ReactChildFiber.js
+2
-2
@@ -28,8 +28,8 @@ import {
28
Fragment,
29
} from 'shared/ReactTypeOfWork';
30
import {getStackAddendumByWorkInProgressFiber} from 'shared/ReactFiberComponentTreeHook';
31
-import invariant from 'fbjs/lib/invariant';
32
-import warning from 'fbjs/lib/warning';
31
+import invariant from 'shared/invariant';
32
+import warning from 'shared/warning';
33
34
import {
35
createWorkInProgress,
packages/react-reconciler/src/ReactFiber.js
+1
-1
@@ -15,7 +15,7 @@ import type {TypeOfSideEffect} from 'shared/ReactTypeOfSideEffect';
15
import type {ExpirationTime} from './ReactFiberExpirationTime';
16
import type {UpdateQueue} from './ReactUpdateQueue';
17
18
-import invariant from 'fbjs/lib/invariant';
18
+import invariant from 'shared/invariant';
19
import {enableProfilerTimer} from 'shared/ReactFeatureFlags';
20
import {NoEffect} from 'shared/ReactTypeOfSideEffect';
21
import {
packages/react-reconciler/src/ReactFiberBeginWork.js
+2
-2
@@ -46,10 +46,10 @@ import {
46
debugRenderPhaseSideEffectsForStrictMode,
47
enableProfilerTimer,
48
} from 'shared/ReactFeatureFlags';
49
-import invariant from 'fbjs/lib/invariant';
49
+import invariant from 'shared/invariant';
50
import getComponentName from 'shared/getComponentName';
51
import ReactStrictModeWarnings from './ReactStrictModeWarnings';
52
-import warning from 'fbjs/lib/warning';
52
+import warning from 'shared/warning';
53
import ReactDebugCurrentFiber from './ReactDebugCurrentFiber';
54
import {cancelWorkTimer} from './ReactDebugFiberPerf';
55
packages/react-reconciler/src/ReactFiberClassComponent.js
+2
-2
@@ -22,8 +22,8 @@ import {isMounted} from 'react-reconciler/reflection';
22
import * as ReactInstanceMap from 'shared/ReactInstanceMap';
23
import shallowEqual from 'shared/shallowEqual';
24
import getComponentName from 'shared/getComponentName';
25
-import invariant from 'fbjs/lib/invariant';
26
-import warning from 'fbjs/lib/warning';
25
+import invariant from 'shared/invariant';
26
+import warning from 'shared/warning';
27
28
import {startPhaseTimer, stopPhaseTimer} from './ReactDebugFiberPerf';
29
import {StrictMode} from './ReactTypeOfMode';
packages/react-reconciler/src/ReactFiberCommitWork.js
+2
-2
@@ -38,8 +38,8 @@ import {
38
Update,
39
} from 'shared/ReactTypeOfSideEffect';
40
import {commitUpdateQueue} from './ReactUpdateQueue';
41
-import invariant from 'fbjs/lib/invariant';
42
-import warning from 'fbjs/lib/warning';
41
+import invariant from 'shared/invariant';
42
+import warning from 'shared/warning';
43
44
import {onCommitUnmount} from './ReactFiberDevToolsHook';
45
import {startPhaseTimer, stopPhaseTimer} from './ReactDebugFiberPerf';
packages/react-reconciler/src/ReactFiberCompleteWork.js
+1
-1
@@ -39,7 +39,7 @@ import {
39
} from 'shared/ReactTypeOfWork';
40
import {Placement, Ref, Update} from 'shared/ReactTypeOfSideEffect';
41
import {ProfileMode} from './ReactTypeOfMode';
42
-import invariant from 'fbjs/lib/invariant';
42
+import invariant from 'shared/invariant';
43
44
import {
45
createInstance,
packages/react-reconciler/src/ReactFiberContext.js
+2
-2
@@ -13,8 +13,8 @@ import type {StackCursor} from './ReactFiberStack';
13
import {isFiberMounted} from 'react-reconciler/reflection';
14
import {ClassComponent, HostRoot} from 'shared/ReactTypeOfWork';
15
import getComponentName from 'shared/getComponentName';
16
-import invariant from 'fbjs/lib/invariant';
17
-import warning from 'fbjs/lib/warning';
16
+import invariant from 'shared/invariant';
17
+import warning from 'shared/warning';
18
import checkPropTypes from 'prop-types/checkPropTypes';
19
20
import ReactDebugCurrentFiber from './ReactDebugCurrentFiber';
packages/react-reconciler/src/ReactFiberDevToolsHook.js
+1
-1
@@ -10,7 +10,7 @@
10
import type {Fiber} from './ReactFiber';
11
import type {FiberRoot} from './ReactFiberRoot';
12
13
-import warning from 'fbjs/lib/warning';
13
+import warning from 'shared/warning';
14
15
declare var __REACT_DEVTOOLS_GLOBAL_HOOK__: Object | void;
16
packages/react-reconciler/src/ReactFiberHostConfig.js
+1
-1
@@ -7,7 +7,7 @@
7
* @flow
8
*/
9
10
-import invariant from 'fbjs/lib/invariant';
10
+import invariant from 'shared/invariant';
11
12
// We expect that our Rollup, Jest, and Flow configurations
13
// always shim this module with the corresponding host config
packages/react-reconciler/src/ReactFiberHostContext.js
+1
-1
@@ -11,7 +11,7 @@ import type {Fiber} from './ReactFiber';
11
import type {StackCursor} from './ReactFiberStack';
12
import type {Container, HostContext} from './ReactFiberHostConfig';
13
14
-import invariant from 'fbjs/lib/invariant';
14
+import invariant from 'shared/invariant';
15
16
import {getChildHostContext, getRootHostContext} from './ReactFiberHostConfig';
17
import {createCursor, push, pop} from './ReactFiberStack';
packages/react-reconciler/src/ReactFiberHydrationContext.js
+1
-1
@@ -18,7 +18,7 @@ import type {
18
19
import {HostComponent, HostText, HostRoot} from 'shared/ReactTypeOfWork';
20
import {Deletion, Placement} from 'shared/ReactTypeOfSideEffect';
21
-import invariant from 'fbjs/lib/invariant';
21
+import invariant from 'shared/invariant';
22
23
import {createFiberFromHostInstanceForDeletion} from './ReactFiber';
24
import {
packages/react-reconciler/src/ReactFiberNewContext.js
+1
-1
@@ -18,7 +18,7 @@ export type NewContext = {
18
getContextChangedBits(context: ReactContext<any>): number,
19
};
20
21
-import warning from 'fbjs/lib/warning';
21
+import warning from 'shared/warning';
22
import {isPrimaryRenderer} from './ReactFiberHostConfig';
23
import {createCursor, push, pop} from './ReactFiberStack';
24
packages/react-reconciler/src/ReactFiberReconciler.js
+2
-2
@@ -25,8 +25,8 @@ import {
25
import * as ReactInstanceMap from 'shared/ReactInstanceMap';
26
import {HostComponent} from 'shared/ReactTypeOfWork';
27
import getComponentName from 'shared/getComponentName';
28
-import invariant from 'fbjs/lib/invariant';
29
-import warning from 'fbjs/lib/warning';
28
+import invariant from 'shared/invariant';
29
+import warning from 'shared/warning';
30
31
import {getPublicInstance} from './ReactFiberHostConfig';
32
import {
packages/react-reconciler/src/ReactFiberScheduler.js
+2
-2
@@ -45,8 +45,8 @@ import {
45
warnAboutLegacyContextAPI,
46
} from 'shared/ReactFeatureFlags';
47
import getComponentName from 'shared/getComponentName';
48
-import invariant from 'fbjs/lib/invariant';
49
-import warning from 'fbjs/lib/warning';
48
+import invariant from 'shared/invariant';
49
+import warning from 'shared/warning';
50
51
import ReactFiberInstrumentation from './ReactFiberInstrumentation';
52
import ReactDebugCurrentFiber from './ReactDebugCurrentFiber';
packages/react-reconciler/src/ReactFiberStack.js
+1
-1
@@ -9,7 +9,7 @@
9
10
import type {Fiber} from './ReactFiber';
11
12
-import warning from 'fbjs/lib/warning';
12
+import warning from 'shared/warning';
13
14
export type StackCursor<T> = {
15
current: T,
packages/react-reconciler/src/ReactFiberTreeReflection.js
+2
-2
@@ -9,8 +9,8 @@
9
10
import type {Fiber} from 'react-reconciler/src/ReactFiber';
11
12
-import invariant from 'fbjs/lib/invariant';
13
-import warning from 'fbjs/lib/warning';
12
+import invariant from 'shared/invariant';
13
+import warning from 'shared/warning';
14
15
import * as ReactInstanceMap from 'shared/ReactInstanceMap';
16
import {ReactCurrentOwner} from 'shared/ReactGlobalSharedState';
packages/react-reconciler/src/ReactProfilerTimer.js
+1
-1
@@ -12,7 +12,7 @@ import type {Fiber} from './ReactFiber';
12
import getComponentName from 'shared/getComponentName';
13
import {enableProfilerTimer} from 'shared/ReactFeatureFlags';
14
15
-import warning from 'fbjs/lib/warning';
15
+import warning from 'shared/warning';
16
import {now} from './ReactFiberHostConfig';
17
18
export type ProfilerTimer = {
packages/react-reconciler/src/ReactStrictModeWarnings.js
+1
-1
@@ -13,7 +13,7 @@ import getComponentName from 'shared/getComponentName';
13
import {getStackAddendumByWorkInProgressFiber} from 'shared/ReactFiberComponentTreeHook';
14
import {StrictMode} from './ReactTypeOfMode';
15
import lowPriorityWarning from 'shared/lowPriorityWarning';
16
-import warning from 'fbjs/lib/warning';
16
+import warning from 'shared/warning';
17
18
type LIFECYCLE =
19
| 'UNSAFE_componentWillMount'
packages/react-reconciler/src/ReactUpdateQueue.js
+2
-2
@@ -102,8 +102,8 @@ import {
102
103
import {StrictMode} from './ReactTypeOfMode';
104
105
-import invariant from 'fbjs/lib/invariant';
106
-import warning from 'fbjs/lib/warning';
105
+import invariant from 'shared/invariant';
106
+import warning from 'shared/warning';
107
108
export type Update<State> = {
109
expirationTime: ExpirationTime,
packages/react-reconciler/src/forks/ReactFiberErrorDialog.www.js
+1
-1
@@ -9,7 +9,7 @@
9
10
import type {CapturedError} from '../ReactCapturedValue';
11
12
-import invariant from 'fbjs/lib/invariant';
12
+import invariant from 'shared/invariant';
13
14
// Provided by www
15
const ReactFiberErrorDialogWWW = require('ReactFiberErrorDialog');
packages/react-scheduler/package.json
-1
@@ -14,7 +14,6 @@
14
},
15
"homepage": "https://reactjs.org/",
16
"dependencies": {
17
- "fbjs": "^0.8.16",
17
"object-assign": "^4.1.1"
18
},
19
"files": [
packages/react-scheduler/src/ReactScheduler.js
+1
-1
@@ -42,7 +42,7 @@ type CallbackConfigType = {|
42
export type CallbackIdType = CallbackConfigType;
43
44
import {canUseDOM} from 'shared/ExecutionEnvironment';
45
-import warning from 'fbjs/lib/warning';
45
+import warning from 'shared/warning';
46
47
if (__DEV__) {
48
if (canUseDOM && typeof requestAnimationFrame !== 'function') {
packages/react-test-renderer/package.json
-1
@@ -15,7 +15,6 @@
15
},
16
"homepage": "https://reactjs.org/",
17
"dependencies": {
18
- "fbjs": "^0.8.16",
18
"object-assign": "^4.1.1",
19
"prop-types": "^15.6.0",
20
"react-is": "^16.4.1"
packages/react-test-renderer/src/ReactShallowRenderer.js
+1
-1
@@ -11,7 +11,7 @@ import {isForwardRef} from 'react-is';
11
import describeComponentFrame from 'shared/describeComponentFrame';
12
import getComponentName from 'shared/getComponentName';
13
import shallowEqual from 'shared/shallowEqual';
14
-import invariant from 'fbjs/lib/invariant';
14
+import invariant from 'shared/invariant';
15
import checkPropTypes from 'prop-types/checkPropTypes';
16
17
const emptyObject = {};
packages/react-test-renderer/src/ReactTestRenderer.js
+1
-1
@@ -28,7 +28,7 @@ import {
28
ForwardRef,
29
Profiler,
30
} from 'shared/ReactTypeOfWork';
31
-import invariant from 'fbjs/lib/invariant';
31
+import invariant from 'shared/invariant';
32
33
import * as ReactTestHostConfig from './ReactTestHostConfig';
34
import * as TestRendererScheduling from './ReactTestRendererScheduling';
packages/react/package.json
-1
@@ -21,7 +21,6 @@
21
"node": ">=0.10.0"
22
},
23
"dependencies": {
24
- "fbjs": "^0.8.16",
24
"loose-envify": "^1.1.0",
25
"object-assign": "^4.1.1",
26
"prop-types": "^15.6.0"
packages/react/src/ReactBaseClasses.js
+1
-1
@@ -5,7 +5,7 @@
5
* LICENSE file in the root directory of this source tree.
6
*/
7
8
-import invariant from 'fbjs/lib/invariant';
8
+import invariant from 'shared/invariant';
9
import lowPriorityWarning from 'shared/lowPriorityWarning';
10
11
import ReactNoopUpdateQueue from './ReactNoopUpdateQueue';
packages/react/src/ReactChildren.js
+2
-2
@@ -5,8 +5,8 @@
5
* LICENSE file in the root directory of this source tree.
6
*/
7
8
-import invariant from 'fbjs/lib/invariant';
9
-import warning from 'fbjs/lib/warning';
8
+import invariant from 'shared/invariant';
9
+import warning from 'shared/warning';
10
import {
11
getIteratorFn,
12
REACT_ELEMENT_TYPE,
packages/react/src/ReactContext.js
+1
-1
@@ -11,7 +11,7 @@ import {REACT_PROVIDER_TYPE, REACT_CONTEXT_TYPE} from 'shared/ReactSymbols';
11
12
import type {ReactContext} from 'shared/ReactTypes';
13
14
-import warning from 'fbjs/lib/warning';
14
+import warning from 'shared/warning';
15
16
export function createContext<T>(
17
defaultValue: T,
packages/react/src/ReactElement.js
+2
-2
@@ -5,8 +5,8 @@
5
* LICENSE file in the root directory of this source tree.
6
*/
7
8
-import invariant from 'fbjs/lib/invariant';
9
-import warning from 'fbjs/lib/warning';
8
+import invariant from 'shared/invariant';
9
+import warning from 'shared/warning';
10
import {REACT_ELEMENT_TYPE} from 'shared/ReactSymbols';
11
12
import ReactCurrentOwner from './ReactCurrentOwner';
packages/react/src/ReactElementValidator.js
+1
-1
@@ -22,7 +22,7 @@ import {
22
REACT_FRAGMENT_TYPE,
23
} from 'shared/ReactSymbols';
24
import checkPropTypes from 'prop-types/checkPropTypes';
25
-import warning from 'fbjs/lib/warning';
25
+import warning from 'shared/warning';
26
27
import ReactCurrentOwner from './ReactCurrentOwner';
28
import {isValidElement, createElement, cloneElement} from './ReactElement';
packages/react/src/ReactNoopUpdateQueue.js
+1
-1
@@ -5,7 +5,7 @@
5
* LICENSE file in the root directory of this source tree.
6
*/
7
8
-import warning from 'fbjs/lib/warning';
8
+import warning from 'shared/warning';
9
10
const didWarnStateUpdateForUnmountedComponent = {};
11
packages/react/src/forwardRef.js
+1
-1
@@ -7,7 +7,7 @@
7
8
import {REACT_FORWARD_REF_TYPE} from 'shared/ReactSymbols';
9
10
-import warning from 'fbjs/lib/warning';
10
+import warning from 'shared/warning';
11
12
export default function forwardRef<Props, ElementType: React$ElementType>(
13
render: (props: Props, ref: React$ElementRef<ElementType>) => React$Node,
packages/shared/HostConfigWithNoHydration.js
+1
-1
@@ -7,7 +7,7 @@
7
* @flow
8
*/
9
10
-import invariant from 'fbjs/lib/invariant';
10
+import invariant from 'shared/invariant';
11
12
// Renderers that don't support hydration
13
// can re-export everything from this module.
packages/shared/HostConfigWithNoMutation.js
+1
-1
@@ -7,7 +7,7 @@
7
* @flow
8
*/
9
10
-import invariant from 'fbjs/lib/invariant';
10
+import invariant from 'shared/invariant';
11
12
// Renderers that don't support mutation
13
// can re-export everything from this module.
packages/shared/HostConfigWithNoPersistence.js
+1
-1
@@ -7,7 +7,7 @@
7
* @flow
8
*/
9
10
-import invariant from 'fbjs/lib/invariant';
10
+import invariant from 'shared/invariant';
11
12
// Renderers that don't support persistence
13
// can re-export everything from this module.
packages/shared/ReactErrorUtils.js
+1
-1
@@ -7,7 +7,7 @@
7
* @flow
8
*/
9
10
-import invariant from 'fbjs/lib/invariant';
10
+import invariant from 'shared/invariant';
11
import invokeGuardedCallback from './invokeGuardedCallback';
12
13
const ReactErrorUtils = {
packages/shared/ReactFeatureFlags.js
+1
-1
@@ -7,7 +7,7 @@
7
* @flow
8
*/
9
10
-import invariant from 'fbjs/lib/invariant';
10
+import invariant from 'shared/invariant';
11
12
// Exports ReactDOM.createRoot
13
export const enableUserTimingAPI = __DEV__;
packages/shared/forks/ReactFeatureFlags.native-fabric-fb.js
+1
-1
@@ -7,7 +7,7 @@
7
* @flow
8
*/
9
10
-import invariant from 'fbjs/lib/invariant';
10
+import invariant from 'shared/invariant';
11
12
import typeof * as FeatureFlagsType from 'shared/ReactFeatureFlags';
13
import typeof * as FabricFeatureFlagsType from './ReactFeatureFlags.native-fabric-fb';
packages/shared/forks/ReactFeatureFlags.native-fabric-oss.js
+1
-1
@@ -7,7 +7,7 @@
7
* @flow
8
*/
9
10
-import invariant from 'fbjs/lib/invariant';
10
+import invariant from 'shared/invariant';
11
12
import typeof * as FeatureFlagsType from 'shared/ReactFeatureFlags';
13
import typeof * as FabricFeatureFlagsType from './ReactFeatureFlags.native-fabric-oss';
packages/shared/forks/ReactFeatureFlags.native-fb.js
+1
-1
@@ -7,7 +7,7 @@
7
* @flow
8
*/
9
10
-import invariant from 'fbjs/lib/invariant';
10
+import invariant from 'shared/invariant';
11
12
import typeof * as FeatureFlagsType from 'shared/ReactFeatureFlags';
13
import typeof * as FeatureFlagsShimType from './ReactFeatureFlags.native-fb';
packages/shared/forks/ReactFeatureFlags.native-oss.js
+1
-1
@@ -7,7 +7,7 @@
7
* @flow
8
*/
9
10
-import invariant from 'fbjs/lib/invariant';
10
+import invariant from 'shared/invariant';
11
12
import typeof * as FeatureFlagsType from 'shared/ReactFeatureFlags';
13
import typeof * as FeatureFlagsShimType from './ReactFeatureFlags.native-oss';
packages/shared/forks/ReactFeatureFlags.persistent.js
+1
-1
@@ -7,7 +7,7 @@
7
* @flow
8
*/
9
10
-import invariant from 'fbjs/lib/invariant';
10
+import invariant from 'shared/invariant';
11
12
import typeof * as FeatureFlagsType from 'shared/ReactFeatureFlags';
13
import typeof * as PersistentFeatureFlagsType from './ReactFeatureFlags.persistent';
packages/shared/forks/ReactFeatureFlags.test-renderer.js
+1
-1
@@ -7,7 +7,7 @@
7
* @flow
8
*/
9
10
-import invariant from 'fbjs/lib/invariant';
10
+import invariant from 'shared/invariant';
11
12
import typeof * as FeatureFlagsType from 'shared/ReactFeatureFlags';
13
import typeof * as PersistentFeatureFlagsType from './ReactFeatureFlags.persistent';
packages/shared/forks/invariant.www.js
new
+8
@@ -0,0 +1,8 @@
1
+/**
2
+ * Copyright (c) 2013-present, Facebook, Inc.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+export default require('invariant');
packages/shared/forks/invokeGuardedCallback.www.js
+1
-1
@@ -5,7 +5,7 @@
5
* LICENSE file in the root directory of this source tree.
6
*/
7
8
-import invariant from 'fbjs/lib/invariant';
8
+import invariant from 'shared/invariant';
9
10
const invokeGuardedCallback = require('ReactFbErrorUtils')
11
.invokeGuardedCallback;
packages/shared/forks/warning.www.js
new
+8
@@ -0,0 +1,8 @@
1
+/**
2
+ * Copyright (c) 2013-present, Facebook, Inc.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+export default require('warning');
packages/shared/invariant.js
new
+54
@@ -0,0 +1,54 @@
1
+/**
2
+ * Copyright (c) 2013-present, Facebook, Inc.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+
9
+/**
10
+ * Use invariant() to assert state which your program assumes to be true.
11
+ *
12
+ * Provide sprintf-style format (only %s is supported) and arguments
13
+ * to provide information about what broke and what you were
14
+ * expecting.
15
+ *
16
+ * The invariant message will be stripped in production, but the invariant
17
+ * will remain to ensure logic does not differ in production.
18
+ */
19
+
20
+let validateFormat = () => {};
21
+
22
+if (__DEV__) {
23
+ validateFormat = function(format) {
24
+ if (format === undefined) {
25
+ throw new Error('invariant requires an error message argument');
26
+ }
27
+ };
28
+}
29
+
30
+export default function invariant(condition, format, a, b, c, d, e, f) {
31
+ validateFormat(format);
32
+
33
+ if (!condition) {
34
+ let error;
35
+ if (format === undefined) {
36
+ error = new Error(
37
+ 'Minified exception occurred; use the non-minified dev environment ' +
38
+ 'for the full error message and additional helpful warnings.',
39
+ );
40
+ } else {
41
+ const args = [a, b, c, d, e, f];
42
+ let argIndex = 0;
43
+ error = new Error(
44
+ format.replace(/%s/g, function() {
45
+ return args[argIndex++];
46
+ }),
47
+ );
48
+ error.name = 'Invariant Violation';
49
+ }
50
+
51
+ error.framesToPop = 1; // we don't care about invariant's own frame
52
+ throw error;
53
+ }
54
+}
packages/shared/invokeGuardedCallback.js
+1
-1
@@ -7,7 +7,7 @@
7
* @flow
8
*/
9
10
-import invariant from 'fbjs/lib/invariant';
10
+import invariant from 'shared/invariant';
11
12
let invokeGuardedCallback = function<A, B, C, D, E, F, Context>(
13
name: string | null,
packages/shared/reactProdInvariant.js
+1
-1
@@ -9,7 +9,7 @@
9
10
// Relying on the `invariant()` implementation lets us
11
// have preserve the format and params in the www builds.
12
-import invariant from 'fbjs/lib/invariant';
12
+import invariant from 'shared/invariant';
13
14
/**
15
* WARNING: DO NOT manually require this module.
packages/shared/warning.js
new
+45
@@ -0,0 +1,45 @@
1
+/**
2
+ * Copyright (c) 2013-present, Facebook, Inc.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+/**
9
+ * Similar to invariant but only logs a warning if the condition is not met.
10
+ * This can be used to log issues in development environments in critical
11
+ * paths. Removing the logging code for production environments will keep the
12
+ * same logic and follow the same code paths.
13
+ */
14
+
15
+let warning = () => {};
16
+
17
+if (__DEV__) {
18
+ const printWarning = function(format, ...args) {
19
+ let argIndex = 0;
20
+ const message = 'Warning: ' + format.replace(/%s/g, () => args[argIndex++]);
21
+ if (typeof console !== 'undefined') {
22
+ console.error(message);
23
+ }
24
+ try {
25
+ // --- Welcome to debugging React ---
26
+ // This error was thrown as a convenience so that you can use this stack
27
+ // to find the callsite that caused this warning to fire.
28
+ throw new Error(message);
29
+ } catch (x) {}
30
+ };
31
+
32
+ warning = function(condition, format, ...args) {
33
+ if (format === undefined) {
34
+ throw new Error(
35
+ '`warning(condition, format, ...args)` requires a warning ' +
36
+ 'message argument',
37
+ );
38
+ }
39
+ if (!condition) {
40
+ printWarning(format, ...args);
41
+ }
42
+ };
43
+}
44
+
45
+export default warning;
packages/simple-cache-provider/package.json
-3
@@ -9,9 +9,6 @@
9
"index.js",
10
"cjs/"
11
],
12
- "dependencies": {
13
- "fbjs": "^0.8.16"
14
- },
12
"peerDependencies": {
13
"react": "^16.3.0-alpha.1"
14
}
packages/simple-cache-provider/src/SimpleCacheProvider.js
+1
-1
@@ -8,7 +8,7 @@
8
*/
9
10
import React from 'react';
11
-import warning from 'fbjs/lib/warning';
11
+import warning from 'shared/warning';
12
13
function noop() {}
14
scripts/error-codes/__tests__/replace-invariant-error-codes-test.js
+10
-10
@@ -35,10 +35,10 @@ describe('error codes transform', () => {
35
36
it('should replace simple invariant calls', () => {
37
compare(
38
- "import invariant from 'shared/reactProdInvariant';\n" +
38
+ "import invariant from 'shared/invariant';\n" +
39
"invariant(condition, 'Do not override existing functions.');",
40
"import _prodInvariant from 'shared/reactProdInvariant';\n" +
41
- "import invariant from 'shared/reactProdInvariant';\n" +
41
+ "import invariant from 'shared/invariant';\n" +
42
'!condition ? ' +
43
'__DEV__ ? ' +
44
"invariant(false, 'Do not override existing functions.') : " +
@@ -54,11 +54,11 @@ describe('error codes transform', () => {
54
`_prodInvariant('16') : void 0;`;
55
56
compare(
57
- `import invariant from 'invariant';
57
+ `import invariant from 'shared/invariant';
58
invariant(condition, 'Do not override existing functions.');
59
invariant(condition, 'Do not override existing functions.');`,
60
`import _prodInvariant from 'shared/reactProdInvariant';
61
-import invariant from 'invariant';
61
+import invariant from 'shared/invariant';
62
${expectedInvariantTransformResult}
63
${expectedInvariantTransformResult}`
64
);
@@ -66,10 +66,10 @@ ${expectedInvariantTransformResult}`
66
67
it('should support invariant calls with args', () => {
68
compare(
69
- "import invariant from 'shared/reactProdInvariant';\n" +
69
+ "import invariant from 'shared/invariant';\n" +
70
"invariant(condition, 'Expected %s target to be an array; got %s', 'foo', 'bar');",
71
"import _prodInvariant from 'shared/reactProdInvariant';\n" +
72
- "import invariant from 'shared/reactProdInvariant';\n" +
72
+ "import invariant from 'shared/invariant';\n" +
73
'!condition ? ' +
74
'__DEV__ ? ' +
75
"invariant(false, 'Expected %s target to be an array; got %s', 'foo', 'bar') : " +
@@ -79,10 +79,10 @@ ${expectedInvariantTransformResult}`
79
80
it('should support invariant calls with a concatenated template string and args', () => {
81
compare(
82
- "import invariant from 'shared/reactProdInvariant';\n" +
82
+ "import invariant from 'shared/invariant';\n" +
83
"invariant(condition, 'Expected a component class, ' + 'got %s.' + '%s', 'Foo', 'Bar');",
84
"import _prodInvariant from 'shared/reactProdInvariant';\n" +
85
- "import invariant from 'shared/reactProdInvariant';\n" +
85
+ "import invariant from 'shared/invariant';\n" +
86
'!condition ? ' +
87
'__DEV__ ? ' +
88
"invariant(false, 'Expected a component class, got %s.%s', 'Foo', 'Bar') : " +
@@ -92,10 +92,10 @@ ${expectedInvariantTransformResult}`
92
93
it('should correctly transform invariants that are not in the error codes map', () => {
94
compare(
95
- "import invariant from 'shared/reactProdInvariant';\n" +
95
+ "import invariant from 'shared/invariant';\n" +
96
"invariant(condition, 'This is not a real error message.');",
97
"import _prodInvariant from 'shared/reactProdInvariant';\n" +
98
- "import invariant from 'shared/reactProdInvariant';\n" +
98
+ "import invariant from 'shared/invariant';\n" +
99
"!condition ? invariant(false, 'This is not a real error message.') : void 0;"
100
);
101
});
scripts/release/config.js
+1
-1
@@ -1,6 +1,6 @@
1
'use strict';
2
3
-const dependencies = ['fbjs', 'object-assign', 'prop-types'];
3
+const dependencies = ['object-assign', 'prop-types'];
4
5
const paramDefinitions = [
6
{
scripts/rollup/build.js
+19
-2
@@ -237,6 +237,20 @@ function isProfilingBundleType(bundleType) {
237
}
238
}
239
240
+function blacklistFBJS() {
241
+ return {
242
+ name: 'blacklistFBJS',
243
+ resolveId(importee, importer) {
244
+ if (/^fbjs\//.test(importee)) {
245
+ throw new Error(
246
+ `Don't import ${importee} (found in ${importer}). ` +
247
+ `Use the utilities in packages/shared/ instead.`
248
+ );
249
+ }
250
+ },
251
+ };
252
+}
253
+
254
function getPlugins(
255
entry,
256
externals,
@@ -252,7 +266,7 @@ function getPlugins(
266
const forks = Modules.getForks(bundleType, entry, moduleType);
267
const isProduction = isProductionBundleType(bundleType);
268
const isProfiling = isProfilingBundleType(bundleType);
255
- const isInGlobalScope = bundleType === UMD_DEV || bundleType === UMD_PROD;
269
+ const isUMDBundle = bundleType === UMD_DEV || bundleType === UMD_PROD;
270
const isFBBundle = bundleType === FB_WWW_DEV || bundleType === FB_WWW_PROD;
271
const isRNBundle =
272
bundleType === RN_OSS_DEV ||
@@ -271,6 +285,9 @@ function getPlugins(
285
},
286
// Shim any modules that need forking in this environment.
287
useForks(forks),
288
+ // Ensure we don't try to bundle any fbjs modules
289
+ // unless they're transitive (e.g. through prop-types).
290
+ !isUMDBundle && blacklistFBJS(),
291
// Use Node resolution mechanism.
292
resolve({
293
skip: externals,
@@ -309,7 +326,7 @@ function getPlugins(
326
Object.assign({}, closureOptions, {
327
// Don't let it create global variables in the browser.
328
// https://github.com/facebook/react/issues/10909
312
- assume_function_wrapper: !isInGlobalScope,
329
+ assume_function_wrapper: !isUMDBundle,
330
// Works because `google-closure-compiler-js` is forked in Yarn lockfile.
331
// We can remove this if GCC merges my PR:
332
// https://github.com/google/closure-compiler/pull/2707
scripts/rollup/forks.js
+22
@@ -91,6 +91,17 @@ const forks = Object.freeze({
91
}
92
},
93
94
+ // This logic is forked on www to fork the formatting function.
95
+ 'shared/invariant': (bundleType, entry) => {
96
+ switch (bundleType) {
97
+ case FB_WWW_DEV:
98
+ case FB_WWW_PROD:
99
+ return 'shared/forks/invariant.www.js';
100
+ default:
101
+ return null;
102
+ }
103
+ },
104
+
105
// This logic is forked on www to blacklist warnings.
106
'shared/lowPriorityWarning': (bundleType, entry) => {
107
switch (bundleType) {
@@ -102,6 +113,17 @@ const forks = Object.freeze({
113
}
114
},
115
116
+ // This logic is forked on www to blacklist warnings.
117
+ 'shared/warning': (bundleType, entry) => {
118
+ switch (bundleType) {
119
+ case FB_WWW_DEV:
120
+ case FB_WWW_PROD:
121
+ return 'shared/forks/warning.www.js';
122
+ default:
123
+ return null;
124
+ }
125
+ },
126
+
127
// In FB bundles, we preserve an inline require to ReactCurrentOwner.
128
// See the explanation in FB version of ReactCurrentOwner in www:
129
'react/src/ReactCurrentOwner': (bundleType, entry) => {
scripts/rollup/modules.js
-4
@@ -12,11 +12,7 @@ const UMD_PROD = bundleTypes.UMD_PROD;
12
const HAS_NO_SIDE_EFFECTS_ON_IMPORT = false;
13
// const HAS_SIDE_EFFECTS_ON_IMPORT = true;
14
const importSideEffects = Object.freeze({
15
- 'fbjs/lib/invariant': HAS_NO_SIDE_EFFECTS_ON_IMPORT,
16
- 'fbjs/lib/warning': HAS_NO_SIDE_EFFECTS_ON_IMPORT,
15
'prop-types/checkPropTypes': HAS_NO_SIDE_EFFECTS_ON_IMPORT,
18
- 'fbjs/lib/camelizeStyleName': HAS_NO_SIDE_EFFECTS_ON_IMPORT,
19
- 'fbjs/lib/hyphenateStyleName': HAS_NO_SIDE_EFFECTS_ON_IMPORT,
16
deepFreezeAndThrowOnMutationInDev: HAS_NO_SIDE_EFFECTS_ON_IMPORT,
17
});
18