Commit Graph

1519 Commits

Author SHA1 Message Date
Burak Yigit Kaya 9f8d4ad4fe Make bablyon parse files in module mode
Reviewed By: davidaurelio

Differential Revision: D6008659

fbshipit-source-id: 6ec3a5e1470e91208a6e71eeca3a2f7c5e755acf
2017-10-09 10:27:46 -07:00
Jani Eväkallio b2002609c1 Fixes Platform.OS and process.env.NODE_ENV inlining resulting in an invalid AST
Summary:
Resolves https://github.com/facebook/metro-bundler/issues/27

**Summary**

There is an edge case where tools like react-primitives need to assign to `Platform.OS`,
but the inline transformation results in an invalid AST.

When Platform.OS is unconditionally inlined, the following scenario:
````
Platform.OS = 'ios';
````
Is transformed to:
```
"ios"="ios"
````

And results in error `Property left of AssignmentExpression expected node to be of a type ["LVal"] but instead got "StringLiteral"**`.

See issue in react-primitives: https://github.com/lelandrichardson/react-primitives/issues/79

This patch checks whether the current node is on the left hand side of an AssignmentExpression
and skips the inlining when this is the case.

It also does the same for `process.env.NODE_ENV`, which suffers from the same problem. See related closed issue https://github.com/facebook/react-native/issues/7607#issuecomment-221425153 which was resolved by using bracket notation `process.env["NODE_ENV"]` instead.

**Test plan**

Unit tests included.

**Notes**

This is my first contribution to Metro, and haven't worked with Babel AST a lot, so constructive feedback on the implementation is welcome.
Closes https://github.com/facebook/metro-bundler/pull/45

Reviewed By: cpojer

Differential Revision: D5974615

Pulled By: mjesun

fbshipit-source-id: 224e63cef24f450b33e17ff9c0e0c0cea46bc70e
2017-10-09 08:23:04 -07:00
Daniel Mueller 475a580569 Add require.getModules
Summary:
In order to aid with debugging inline requires we add a method that
will give us the modules.

**Summary**

I was looking for a way to see what modules had been loaded when I was working with inline requires. I had tried using beginEvent on Systrace, but I was worried that there were modules that I might have missed (I'm not certain if all the loaded files are polyfills before the entryFile is invoked for instance). By adding getModules() it simplifies seeing what modules are loaded.

**Test plan**

At the root of my app `index.ios.js`:

```

import App from './App';
import { AppRegistry } from 'react-native';

AppRegistry.registerComponent('App', () => App);

// after 3 seconds the initial app data should have loaded, so lets take a look:
setTimeout(() => {
  console.log(require.getModules());
}, 3000);

```

**NOTE**
If there is a way to get to this easily (via the debugger or some other mechanism) I would be happy to use that instead and add documentation for it.
Closes https://github.com/facebook/metro-bundler/pull/37

Differential Revision: D6008180

Pulled By: cpojer

fbshipit-source-id: 850103bbce166bf65a0cbd710582198c66273db5
2017-10-09 08:08:43 -07:00
Richard Girges c4307d7170 Prevent error on safely-handled requires using non-static arguments
Summary:
**Summary**
This is the workaround that cpojer suggested in #65 and should resolve the biggest pain point that developers are experiencing in that issue: using moment.js in React Native. Hopefully this at least serves as a starting point to reaching a decent solution for libraries using non-static `require()` statements.

**Test plan**
- Expected error when non-static-argument-based `require()` is nested more than one level deep within a `try` statement
- Expected no error when non-static-argument-based `require()` is nested directly within a `try` statement

```bash
ip-192-168-1-10:trueflipapp richard$ react-native bundle --entry-file index.js --platform ios --bundle-output /tmp/test.js --reset-cache
Scanning folders for symlinks in /repo/trueflip/sandbox/code/trueflipapp/node_modules (8ms)
Scanning folders for symlinks in /repo/trueflip/sandbox/code/trueflipapp/node_modules (8ms)
Loading dependency graph, done.
warning: the transform cache was reset.
bundle: start
bundle: finish
bundle: Writing bundle output to: /tmp/test.js
bundle: Done writing bundle output
```

Closes https://github.com/facebook/metro-bundler/pull/69

Differential Revision: D6008567

Pulled By: cpojer

fbshipit-source-id: f9be328cf50dc47c7433ffeb5eb053b398c92122
2017-10-09 08:08:43 -07:00
Jean Lauliac 51d4754efc metro-bundler: AmbiguousModuleResolutionError: provide default message
Reviewed By: davidaurelio

Differential Revision: D5986044

fbshipit-source-id: f61d351f91fed3638177bd3c10702f1cb0742a21
2017-10-09 07:45:01 -07:00
Matt Labrum 6c60f61cbd Fix importing a dot file from the root directory doesn't work
Summary:
Hi,
**Summary**
This fixes #40 where bundler cannot resolve a file starting with `.` from the root package directory.

it just adds a check to see if the absolute path filename is the same as the localpath filename then lets it through.

**Test plan**
- Steps to reproduce have been written up in #40

Thanks!
Closes https://github.com/facebook/metro-bundler/pull/54

Reviewed By: cpojer

Differential Revision: D5974618

Pulled By: mjesun

fbshipit-source-id: 4b7113c3bed20f2c908739881d61410d651e6ed7
2017-10-09 05:51:07 -07:00
Zachary Kim d07bfa1532 Whitelist node opt --max-old-space-size for JSTransformer
Summary:
Whitelist node opt `--max-old-space-size` for JSTransformer.

Bundling can choke on the default node memory settings for those of us generating large index.js files. This change allows supplied node options to make it through to the node processes spawned by the JSTransformer worker farm.
Closes https://github.com/facebook/metro-bundler/pull/70

Differential Revision: D6008141

Pulled By: cpojer

fbshipit-source-id: 1ef3b436ea30baf3f255a4fd718fe4d958d70c65
2017-10-09 04:28:39 -07:00
Miguel Jimenez Esun 5d09fd1798 Update README with some useful information
Summary:
Add useful information in the README, as an initial first version. Not all of the fields are explained, and we still miss some useful bullet points (e.g. how to release), but that should be good to give some initial guidance as a standalone project.
Closes https://github.com/facebook/metro-bundler/pull/71

Reviewed By: cpojer

Differential Revision: D6008241

Pulled By: mjesun

fbshipit-source-id: b2c4672aee5088e9f4a2b12a225814e7f273f37c
2017-10-09 03:58:56 -07:00
Jean Lauliac 1349edad70 Fix edge case of moving a haste file to a different folder
Reviewed By: davidaurelio

Differential Revision: D5945574

fbshipit-source-id: 5fdd12c0af1b7a92012f4be71ce18f44e42ad4e1
2017-10-05 04:51:40 -07:00
Jean Lauliac e235f6a9fd metro-bundler: writeFile: limit concurrency
Reviewed By: cpojer

Differential Revision: D5975830

fbshipit-source-id: c35be29e8dd64d9653cd24814c5d9f1ef89755dd
2017-10-05 03:27:59 -07:00
Rafael Oleza 6d0c371d65 Handle the case where a file gets modified and deleted afterwards
Reviewed By: jeanlauliac

Differential Revision: D5944099

fbshipit-source-id: 7d41cf849dc53936cb014c44ce02f106853733c6
2017-10-04 04:21:02 -07:00
Sam Goldman 87cfc05ea6 Upgrade Flow to v0.56.0
Reviewed By: calebmer

Differential Revision: D5958715

fbshipit-source-id: 7feda03a9540e69bf8d9b4eb89720248ff43294f
2017-10-02 21:05:38 -07:00
Matt Bruce 86a69bf25d Change all calls to no-console from no-console-disallow
Reviewed By: TheSavior

Differential Revision: D5944700

fbshipit-source-id: cdd78d1b32fa98d8a792a39ccc3cb37241ab4366
2017-09-29 16:37:02 -07:00
Rafael Oleza f32c1edb8d Implement getOrderedDependencyPaths() using the Delta Bundler
Reviewed By: jeanlauliac

Differential Revision: D5922153

fbshipit-source-id: d5d595f99053d0eacde37fe0cedcba2ca86bd6f7
2017-09-29 15:06:49 -07:00
Rafael Oleza 09ee6d9cbe Add Source Map support to e2e deltas in chrome debugger
Reviewed By: jeanlauliac

Differential Revision: D5917380

fbshipit-source-id: 31391bc03c420b8e7af5c840fbea2fb0dd5f7bbc
2017-09-29 05:58:31 -07:00
Rafael Oleza 07d73a3af2 Improve progress bar when using delta dependencies traversal
Reviewed By: davidaurelio

Differential Revision: D5901052

fbshipit-source-id: a06584bfbd287f6d8d9b53fb5918dfa7d88bceef
2017-09-28 15:10:50 -07:00
Rafael Oleza a606e79af0 Integrate the incremental dependency traversor into the Delta Bundler
Reviewed By: davidaurelio

Differential Revision: D5880892

fbshipit-source-id: d6e04b59aee5fe0bf671553c98f728be054e01b9
2017-09-28 15:10:50 -07:00
Rafael Oleza 7e65f2f1ea Add module for incrementally traversing the dependencies
Reviewed By: davidaurelio

Differential Revision: D5880827

fbshipit-source-id: 9500c54c2f93726449a413321b9e4ef46825b977
2017-09-28 15:10:50 -07:00
Christoph Nakazawa 34b108b37e Small Config defaults cleanup
Reviewed By: davidaurelio

Differential Revision: D5841910

fbshipit-source-id: e3645a115da4a445dd2b16cf9adccf68462513f9
2017-09-28 10:07:06 -07:00
Rafael Oleza ccbe4bc78c Use Delta Bundler for symbolication of errors endpoint
Reviewed By: jeanlauliac

Differential Revision: D5913798

fbshipit-source-id: 5a8aaa6b39aa864424eabb94748cbff24b463b81
2017-09-28 09:28:16 -07:00
Rafael Oleza 8302fcb92b Bump metro-bundler dependency to 0.19.x
Reviewed By: cpojer

Differential Revision: D5920597

fbshipit-source-id: fdc4f50ffdb43487e7c3480b7cc587b7ff483681
2017-09-27 14:36:30 -07:00
Christopher Chedeau f4d9fccee6 Codemod to 1.7.0
Differential Revision: D5763302

fbshipit-source-id: a91ca1786c7ac8eb9aa3dd43555a7a223dc6f9cf
2017-09-26 23:46:09 -07:00
Christopher Chedeau 23c69f5362 Upgrade to 1.7.0
Reviewed By: fkgozali

Differential Revision: D5763293

fbshipit-source-id: 865ed74a78606cb54f274ebedae49de980dcab6f
2017-09-26 23:46:09 -07:00
Rafael Oleza 7c69e832b2 Add support to metro server to send Deltas to devices
Reviewed By: jeanlauliac

Differential Revision: D5890498

fbshipit-source-id: 3ce5c3edb69598adffd2224a418647f3b8897945
2017-09-26 18:06:31 -07:00
Rafael Oleza a3a60c912a Make Module.getName() synchronous
Reviewed By: cpojer

Differential Revision: D5911221

fbshipit-source-id: 2381d70008adff9e0f7613fe43c8fb562222acd6
2017-09-26 17:23:20 -07:00
Rafael Oleza eefb8e9fc5 Make the runBeforeMainModule config param to RN repo and make it absolute
Reviewed By: davidaurelio

Differential Revision: D5880700

fbshipit-source-id: 5df6781026030395900388c561283abadefa6511
2017-09-26 13:07:13 -07:00
Caleb Meredith f9246bcbb3 Update typings for Promise.all() for D5827319
Reviewed By: samwgoldman

Differential Revision: D5830645

fbshipit-source-id: db2bb0715aab58d3601712ee0b080abaa9f8f131
2017-09-26 11:26:27 -07:00
Rafael Oleza 7ba76a32e1 Change format of dependencyPairs param received by wrapModule()
Reviewed By: jeanlauliac

Differential Revision: D5880766

fbshipit-source-id: ef9f0ec2d7dcc4e47f5dacb9d899b5f1fde18e8f
2017-09-26 07:09:21 -07:00
Rafael Oleza 24be572cf5 Fix integration snapshots + add emails to test
Reviewed By: davidaurelio

Differential Revision: D5910903

fbshipit-source-id: 2d7d95db99303ce1106203f6146173b0030c4096
2017-09-26 06:53:41 -07:00
Jean Lauliac 21eef9ebb1 RN buck: add bundle splitting
Reviewed By: davidaurelio

Differential Revision: D5854013

fbshipit-source-id: 97e706d2e40ccb18397950f3d09763dd2498aee8
2017-09-26 04:21:38 -07:00
David Aurelio afb91bccd3 Don’t save original source code
Reviewed By: jeanlauliac

Differential Revision: D5901918

fbshipit-source-id: 68332b07f34ac4fd5491868cbc9f81283dae8d91
2017-09-25 18:06:58 -07:00
Jean Lauliac 0c2e414337 RN: add bundleId to nativeRequire() call
Reviewed By: davidaurelio

Differential Revision: D5863569

fbshipit-source-id: 62f65032f103b5bd20252343c771d0cd01950109
2017-09-25 09:06:49 -07:00
Jean Lauliac c4f9ee5720 metro-bundler: fix jest-haste-map require
Summary:
Addresses https://github.com/facebook/metro-bundler/issues/62

Apparently with some versions of `jest-haste-map`, the nested source file returns the module wrapped with `default` instead of the exports themselves (due to some ES6 babel transform, I am guessing). I wasn't able to reproduce this myself yet, but I think a good first step is to avoid using nested library files in the first place, ie. only use what's exported at the top-level.

Reviewed By: rafeca

Differential Revision: D5890757

fbshipit-source-id: 1196264b5626eda65c4aae222db2a1620f901c55
2017-09-25 07:20:58 -07:00
Jean Lauliac 3b6fddc746 RN buck: move asset work into transform worker
Reviewed By: davidaurelio

Differential Revision: D5872268

fbshipit-source-id: 829a0d26930f8893b93a5f42ef7026350dc01f29
2017-09-22 07:25:03 -07:00
Rafael Oleza e736518c43 Remove unneeded params from `getTransformOptions()`
Reviewed By: jeanlauliac

Differential Revision: D5880687

fbshipit-source-id: ef9683b1272133a9b38005cb8ba43d80b9ac6ec8
2017-09-21 09:27:05 -07:00
Sina Sabet f700c9e54d Removing unnecessary eslint enable/disable comments (round 2)
Reviewed By: TheSavior

Differential Revision: D5865725

fbshipit-source-id: 92d5e4376956a05c23aeeb84a4996626d82e0fb6
2017-09-20 23:39:49 -07:00
Jean Lauliac 39238acb78 RN: add some test to module system
Reviewed By: davidaurelio

Differential Revision: D5862757

fbshipit-source-id: cf5c88c4bb9d65368df07f6e85b207c90565bad9
2017-09-20 11:05:49 -07:00
Jean Lauliac 7d92dd2b5d RN buck: fix Flow error
Reviewed By: davidaurelio

Differential Revision: D5871509

fbshipit-source-id: 91bd020b95d33a854b5649daea1a0b8d7782706d
2017-09-20 09:22:56 -07:00
Lee Byron 9f4ca4a541 Synchronize all relay packages
Reviewed By: mjmahone

Differential Revision: D5842774

fbshipit-source-id: 40c57619901e15b0baa62c59837fc887c100652b
2017-09-19 22:56:43 -07:00
Jan Kassens 2635363e97 Add version to .flowconfig
Summary:
**Summary**

Without this editors or a globally installed flow would use the latest version.
This ensures that flow uses the right version when checking the code.

**Test plan**
```
$ flow
```
Closes https://github.com/facebook/metro-bundler/pull/53

Reviewed By: jeanlauliac

Differential Revision: D5831038

Pulled By: kassens

fbshipit-source-id: c4a7cac7961b1176e940d86419f7a495e98baf23
2017-09-19 15:40:05 -07:00
Ian Levesque 522a0460a1 Revert D5841425: Removing unnecessary eslint enable/disable comments
Differential Revision: D5841425

fbshipit-source-id: 5a5bb73eafce9e09c89fe9f0cf57676cfc962a5a
2017-09-19 13:26:30 -07:00
Sina Sabet 114b00ee34 Removing unnecessary eslint enable/disable comments
Reviewed By: TheSavior

Differential Revision: D5841425

fbshipit-source-id: cf30e47e0a544230595b8298c6bca67cbee2fb08
2017-09-19 12:52:15 -07:00
David Aurelio ad927b93dc Upgrade uglify to v3 + es support
Summary: Upgrades uglify to version 3 with (experimental) ES6 support turned on.

Reviewed By: jeanlauliac

Differential Revision: D5842410

fbshipit-source-id: 1c8ccea15785bc5bb1c68d7a83b75881432d0ce2
2017-09-19 12:23:53 -07:00
David Aurelio 025e1841d9 Get rid of `async/queue`
Summary:
This replaces `async/queue` with a hand-rolled queue that does not yield to the event loop if a unit of work can be run synchronously.

Anecdotally, this leads to a > 11x speedup for the graph traversal when all data is available synchronously, e.g. from an in-memory cache.

Reviewed By: jeanlauliac

Differential Revision: D5861763

fbshipit-source-id: f7cf5f916a13adf9ca418d7522cd2f19df596fba
2017-09-19 09:21:40 -07:00
David Aurelio c546349da4 `GraphFn` returns promise rather than taking callback
Summary: Changes `GraphFn` to return a promise rather than taking a callback. This is more in line with call sites, which so far have been using `denodeify`.

Reviewed By: jeanlauliac

Differential Revision: D5857192

fbshipit-source-id: 61bbbef4fbf24b0b91c4a3008541eaa5a1af0f7a
2017-09-19 09:21:40 -07:00
David Aurelio 5aaf148179 `@format` for `Graph-test.js`
Reviewed By: jeanlauliac

Differential Revision: D5857069

fbshipit-source-id: 38e58f11579161a94d5201d016cf8b0ba3681eb4
2017-09-19 09:21:37 -07:00
David Aurelio 6062a9bd34 `LoadFn`/`ResolveFn` without callbacks
Summary:
Changes `LoadFn` to be synchronous or return a promise, and `ResolveFn` to be synchronsous.

This makes for a nicer API, without losing the property of not yielding to the event loop for synchronous work.

Reviewed By: jeanlauliac

Differential Revision: D5855963

fbshipit-source-id: 4b3c3363f4e49a9890586462925e8e400872feb2
2017-09-19 09:21:32 -07:00
David Aurelio 3f2b200e01 Fix creation of indexed RAM bundles
Reviewed By: jeanlauliac

Differential Revision: D5852737

fbshipit-source-id: 98e16fbd69d9ad3666acfc86e5de308175102643
2017-09-18 11:08:44 -07:00
Rafael Oleza f6e2e17900 HMR: Include updated modules in the correct order
Reviewed By: davidaurelio

Differential Revision: D5852269

fbshipit-source-id: 519564a4899b22d16a2ab3be4b466e21783e8f86
2017-09-18 09:06:43 -07:00
Jean Lauliac a7ad7502aa RN buck: ModuleGraph: get rid of callbacks, async/await for the best
Reviewed By: davidaurelio

Differential Revision: D5842855

fbshipit-source-id: 71f9e799db4ad312213a20c1b1a93280e934d1e7
2017-09-18 04:21:14 -07:00