Skip to content

Commit 28116ec

Browse files
skevyfacebook-github-bot-5
authored andcommitted
Reverted commit D2803288
Summary: As spicyj mentioned in commit 6a838a4, the ideal state of affairs when it comes to consuming `react` and `fbjs` from NPM is for the packager not to have knowledge of either package. This PR addresses the `fbjs` part of that, and relies on facebook/fbjs#95. **DO NOT MERGE** until #95 (or a variation) is in `fbjs` and is released to npm. This PR does several things: 1. Adds stub modules within RN that expose `fbjs` modules to be required using Haste. After discussing a few ideas with spicyj, this seemed like a good option to keep internal FB devs happy (and not make them change the way they write JS), but allow for removing packager complexity and fit in better with the NPM ecosystem. Note -- it skips stubbing `fetch`, `ExecutionEnvironment`, and `ErrorUtils`, due to the fact that these need to have Native specific implementations, and there's no reason for those implementations to exist in `fbjs`. 2. Removes the modules that were previously being used in lieu of their `fbjs` eq Closes #5084 Reviewed By: bestander Differential Revision: D2803288 Pulled By: javache fb-gh-sync-id: 121ae811ce4cc30e6ea79246f85a1e4f65648ce1 shipit-source-id: 121ae811ce4cc30e6ea79246f85a1e4f65648ce1
1 parent 98e5e2b commit 28116ec

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+892
-848
lines changed

.flowconfig

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,12 @@
1414

1515
# Ignore react and fbjs where there are overlaps, but don't ignore
1616
# anything that react-native relies on
17+
.*/node_modules/fbjs/lib/Map.js
18+
.*/node_modules/fbjs/lib/Promise.js
1719
.*/node_modules/fbjs/lib/fetch.js
1820
.*/node_modules/fbjs/lib/ExecutionEnvironment.js
21+
.*/node_modules/fbjs/lib/isEmpty.js
22+
.*/node_modules/fbjs/lib/crc32.js
1923
.*/node_modules/fbjs/lib/ErrorUtils.js
2024

2125
# Flow has a built-in definition for the 'react' module which we prefer to use

Libraries/Interaction/__tests__/InteractionManager-test.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
jest
88
.autoMockOff()
9-
.mock('ErrorUtils')
109
.mock('BatchedBridge');
1110

1211
function expectToBeCalledOnce(fn) {

Libraries/Promise.js

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,30 @@
11
/**
2-
* Copyright (c) 2016-present, Facebook, Inc.
3-
* All rights reserved.
42
*
5-
* This source code is licensed under the BSD-style license found in the
6-
* LICENSE file in the root directory of this source tree. An additional grant
7-
* of patent rights can be found in the PATENTS file in the same directory.
3+
* Copyright 2013-2014 Facebook, Inc.
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
816
*
917
* @providesModule Promise
10-
* @flow
18+
*
19+
* This module wraps and augments the minimally ES6-compliant Promise
20+
* implementation provided by the promise npm package.
1121
*/
12-
'use strict';
1322

14-
const Promise = require('fbjs/lib/Promise'); // this will require Promise.native.js
23+
'use strict';
1524

25+
global.setImmediate = require('setImmediate');
26+
var Promise = require('promise/setimmediate/es6-extensions');
27+
require('promise/setimmediate/done');
1628
if (__DEV__) {
1729
require('promise/setimmediate/rejection-tracking').enable({
1830
allRejections: true,
@@ -34,4 +46,12 @@ if (__DEV__) {
3446
});
3547
}
3648

49+
/**
50+
* Handle either fulfillment or rejection with the same callback.
51+
*/
52+
Promise.prototype.finally = function(onSettled) {
53+
return this.then(onSettled, onSettled);
54+
};
55+
56+
3757
module.exports = Promise;

0 commit comments

Comments
 (0)