@samitouri / QOS-React / commits / aeda7b745d

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