Skip to content

Commit

Permalink
BREAKING: Add regenerator-runtime on demand, based on the files
Browse files Browse the repository at this point in the history
Summary:
Adding a Babel plugin that will analyze the file looking for any potential candidate to use `regenerator-runtime`, and if so, will inject dynamically the module. The module is injected per file, so we avoid polluting the global environment. The plugin is also able to inject the `require` call beforehand, so that the inliner can pick them and inline them.

The Babel plugin is part of `react-native-babel-preset`, so as long as you are using this preset you are safe. If not, you should include the specific transformer into your list of plugins, as `react-native-babel-preset/transforms/transform-regenerator-runtime-insertion.js`.

Reviewed By: davidaurelio

Differential Revision: D5388655

fbshipit-source-id: dc403f3d5e2d807529eb8569a85c45fec36a6a3e
  • Loading branch information
Miguel Jimenez Esun authored and facebook-github-bot committed Jul 19, 2017
1 parent d1c9746 commit 3103258
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 16 deletions.
9 changes: 0 additions & 9 deletions Libraries/Core/InitializeCore.js
Original file line number Diff line number Diff line change
Expand Up @@ -138,15 +138,6 @@ defineProperty(global, 'Set', () => require('Set'), true);
// ERROR: Event loop not supported.
defineProperty(global, 'Promise', () => require('Promise'));

// Set up regenerator.
defineProperty(global, 'regeneratorRuntime', () => {
// The require just sets up the global, so make sure when we first
// invoke it the global does not exist
delete global.regeneratorRuntime;
require('regenerator-runtime/runtime');
return global.regeneratorRuntime;
});

// Set up timers
const defineLazyTimer = name => {
defineProperty(global, name, () => require('JSTimers')[name]);
Expand Down
10 changes: 5 additions & 5 deletions RNTester/js/ListExampleShared.js
Original file line number Diff line number Diff line change
Expand Up @@ -163,11 +163,11 @@ const THUMB_URLS = [
require('./Thumbnails/victory.png'),
];

const LOREM_IPSUM = 'Lorem ipsum dolor sit amet, ius ad pertinax oportere accommodare, an vix \
civibus corrumpit referrentur. Te nam case ludus inciderint, te mea facilisi adipiscing. Sea id \
integre luptatum. In tota sale consequuntur nec. Erat ocurreret mei ei. Eu paulo sapientem \
vulputate est, vel an accusam intellegam interesset. Nam eu stet pericula reprimique, ea vim illud \
modus, putant invidunt reprehendunt ne qui.';
const LOREM_IPSUM = 'Lorem ipsum dolor sit amet, ius ad pertinax oportere accommodare, an vix ' +
'civibus corrumpit referrentur. Te nam case ludus inciderint, te mea facilisi adipiscing. Sea id ' +
'integre luptatum. In tota sale consequuntur nec. Erat ocurreret mei ei. Eu paulo sapientem ' +
'vulputate est, vel an accusam intellegam interesset. Nam eu stet pericula reprimique, ea vim illud ' +
'modus, putant invidunt reprehendunt ne qui.';

/* eslint no-bitwise: 0 */
function hashCode(str: string): number {
Expand Down
2 changes: 1 addition & 1 deletion babel-preset/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "babel-preset-react-native",
"version": "2.0.0",
"version": "2.1.0",
"description": "Babel preset for React Native applications",
"main": "index.js",
"repository": "https://github.com/facebook/react-native/tree/master/babel-preset",
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@
"babel-polyfill": "^6.20.0",
"babel-preset-es2015-node": "^6.1.1",
"babel-preset-fbjs": "^2.1.4",
"babel-preset-react-native": "^2.0.0",
"babel-preset-react-native": "^2.1.0",
"babel-register": "^6.24.1",
"babel-runtime": "^6.23.0",
"babel-traverse": "^6.24.1",
Expand Down

0 comments on commit 3103258

Please sign in to comment.