357 Commits

Author SHA1 Message Date
Christoph Pojer
54c4aed3b4 Print proper error from uglify
Reviewed By: jeanlauliac

Differential Revision: D5264809

fbshipit-source-id: 2a2c7c9af74e8c87acf68e2e9205c85b7aea2fb9
2017-06-16 10:25:44 -07:00
David Aurelio
2a085f0c1b Display snippets of TransformErrors
Reviewed By: cpojer

Differential Revision: D5247080

fbshipit-source-id: a0c4515476246e6da4c33c9129f6273af838d04f
2017-06-16 09:39:03 -07:00
Miguel Jiménez Esún
af67937bba Export source maps utilities
Reviewed By: kittens

Differential Revision: D5249991

fbshipit-source-id: e2ad21bfa3497bc08c5afdcb0c7d9b76dc5dcc25
2017-06-15 10:38:57 -07:00
Mark Vayngrib
ee31015d5c add breaking test, fix edge case for replacing browser "main" field
Summary:
**Summary**

fixes edge case for replacing browser "main" field, when "main" field value is a file name rather than a file path

**Test plan**

added breaking test in 1st commit, fix in 2nd commit
Closes https://github.com/facebook/metro-bundler/pull/3

Reviewed By: cpojer

Differential Revision: D5255292

Pulled By: jeanlauliac

fbshipit-source-id: 65764144adfcda9f6dbdf8f5f754186b05e1a8bb
2017-06-15 09:11:41 -07:00
David Aurelio
1e6b34f415 Backed out changeset db8638eebe2d
Reviewed By: alexeylang

Differential Revision: D5246311

fbshipit-source-id: cb12964c27a6d1e6fa719a979a8f0ebcc8efae8a
2017-06-14 09:53:06 -07:00
David Aurelio
20ed5b8d3a Remove retainLines and sourceMaps options
Summary:
`retainLines` is no longer necessary with the much improved source map generation.
`sourceMaps` is handled by the transformer itself.

Reviewed By: cpojer

Differential Revision: D5237103

fbshipit-source-id: e5c6bf5aa9d553fce9c3f4d59b3ea0057d45cfdc
2017-06-14 09:38:25 -07:00
Jean Lauliac
d437b31fea metro-bundler: DependencyGraph-test: switch a bunch of tests to processDgraph()
Reviewed By: davidaurelio

Differential Revision: D5245656

fbshipit-source-id: 276e7406af2f6afb361d14b5c6e1dd5b9f1f6ddb
2017-06-14 08:08:44 -07:00
Jean Lauliac
4012f96c25 metro-bundler: DependencyGraph-test: proof of concept for proper test cleanup
Summary: The `DependencyGraph-test` hangs forever if run in isolation because the watch mode is not properly ended. I propose we just wrap each test in a function that does the correct thing, and also migrate tests to `async`/`await`.

Reviewed By: cpojer

Differential Revision: D5245477

fbshipit-source-id: ea30c0e637e0c7b85afe4c76c5e985846ae9b243
2017-06-14 07:13:19 -07:00
David Aurelio
e87a8205d8 Handle synchronous errors in worker.transformCode
Summary: `worker.transformCode` is a callback-taking function, but did not properly guard against errors thrown in its body.

Reviewed By: cpojer

Differential Revision: D5245253

fbshipit-source-id: 3fd08b68dd8605f664b316652ebd1f9497b2dac9
2017-06-14 05:06:20 -07:00
David Aurelio
fdc8f37a5b Replace RNP: debug prefix with Metro:
Reviewed By: jeanlauliac

Differential Revision: D5236970

fbshipit-source-id: 8bd1d38f009018e9cafef13188bee82351614890
2017-06-14 04:54:42 -07:00
Jean Lauliac
7e9f368ee5 metro-bundler: recreate temp dir if does not exist
Summary: That happens after a reboot on macOS for example, because temp dir is wiped.

Reviewed By: davidaurelio

Differential Revision: D5236249

fbshipit-source-id: be19cd97a7488850e3195b3fc419779ed0df2c38
2017-06-14 04:36:31 -07:00
Christoph Pojer
9127fce33c Add --maxWorkers flag and allow transformers to run in-band.
Summary:
This diff cleans up some cruft and adds some features:

* It removes the usage of an env variable to control workers.
* It removes the lazy and handwavy calculation on how many workers to use for jest-haste-map. Jest itself uses the maximum amount of workers available and it has never been reported as an issue – especially since it is a one-time startup cost of about 3 seconds on a cold cache only.
* It adds a `--max-workers` flag to replace the env variable. This one is able to control both the number of workers for `jest-haste-map` as well as the transformers.
* It makes the transformers run in the parent process if 1 or fewer workers are are specified. This should help with debugging.

Once you approve this diff, I will publish a new version of metro to npm and update the version used in RN and remove the use of the env variable altogether: https://our.intern.facebook.com/intern/biggrep/?corpus=xplat&filename=&case=false&view=default&extre=&s=REACT_NATIVE_MAX_WORKERS&engine=apr_strmatch&context=false&filter[uninteresting]=false&filter[intern]=false&filter[test]=false&grep_regex=

Note: the process of adding a CLI option is really broken. Commander also has a weird API. We should consider building a better public API for Metro and then consider how to build a new CLI on top of it and simplify our internal integration. I really don't like how Metro is integrated across pieces of the RN cli in ways that is hard to manage. But that is a larger task for another time :)

Reviewed By: jeanlauliac

Differential Revision: D5217726

fbshipit-source-id: 74efddbb87755a9e744c816fbc62efa21f6a79bf
2017-06-13 09:21:40 -07:00
Jean Lauliac
626fe47667 metro-bundler: fix percent progress output
Reviewed By: davidaurelio

Differential Revision: D5236226

fbshipit-source-id: efbbf46f4212a66a6357b7d87059f89354b6f50b
2017-06-13 08:40:52 -07:00
Jean Lauliac
d3195fa528 ResolutionRequest: extract module resolution
Reviewed By: davidaurelio

Differential Revision: D5218015

fbshipit-source-id: 6e34df5913d96a0b518f9403309658ea0b559730
2017-06-13 07:27:24 -07:00
Miguel Jiménez Esún
b559412a08 Pass bundle options to the reporter to provide additional information
Reviewed By: jeanlauliac

Differential Revision: D5172384

fbshipit-source-id: f2e4cf677f8113060b257ddec6b585870786a336
2017-06-12 10:52:16 -07:00
David Aurelio
573d9edfd0 Upgrade uglify to v3 + es support
Summary: Upgrades uglify to version 3 with (experimental) ES6 support turned on.

Reviewed By: cpojer

Differential Revision: D5227245

fbshipit-source-id: db8638eebe2daf40b60570cac34905e9a7288705
2017-06-12 10:11:20 -07:00
David Aurelio
2678b8fb0d Add nested yarn.lock 2017-06-12 18:07:19 +01:00
Jean Lauliac
5bae61e611 metro-bundler: fix DependencyGraph-test
Reviewed By: cpojer

Differential Revision: D5227270

fbshipit-source-id: 3d36394cafa658070d84d7b5ace2af48d20cc9d7
2017-06-12 07:09:12 -07:00
Jean Lauliac
d4bb0d3282 metro-bunder: caching: when using project dir, keep cache itself in temp
Summary: I wanted to settle #18056064 once and for all. This solution both uses (1) random generation of temp dir, and (2) minimal overhead in the repo. The reason random generation of temporary folder directory names should always be used is the same as why [`mktemp(3)` should never be used](http://man7.org/linux/man-pages/man3/mktemp.3.html#BUGS). The reason we don't want the cache to be fully stored locally (2) is because watchman would catch too many change events we don't care about, hitting performance. Additionally, (1) has the benefit that when one clones the repo from fresh, it'll also always start with a fresh cache. (1) uses a function equivalent to [`mkdtemp(3)`](http://man7.org/linux/man-pages/man3/mkdtemp.3.html), that we cannot use here because it's POSIX and not exposed by the Node.js API.

Reviewed By: davidaurelio

Differential Revision: D5199698

fbshipit-source-id: a660ebbc470e1fe90ed1ab9d0c9fda063b06f90c
2017-06-12 04:50:58 -07:00
David Aurelio
4460ed5307 Unify invocations to uglify.minify
Summary: Puts all invocations of `uglify.minify` into one place to facilitate the upgrade to Uglify 3

Reviewed By: cpojer

Differential Revision: D5218415

fbshipit-source-id: 8085255205f80bfda06e0092c9e268a85947763b
2017-06-12 02:22:13 -07:00
Miguel Jiménez Esún
bc654954a7 Add prettier to metro-bundler, fixing code styling issues
Reviewed By: cpojer

Differential Revision: D5215552

fbshipit-source-id: 64106d322ccd3a39701a41e4efda4975db9aa52c
2017-06-12 01:20:50 -07:00
Christoph Pojer
150aa19fcb Remove babelRegisterOnly call in workers
Reviewed By: jeanlauliac

Differential Revision: D5208950

fbshipit-source-id: 093c1a67ed830480b42f556ee2d6be4ecfce9f0d
2017-06-09 07:22:26 -07:00
Jean Lauliac
c1ff8b5b81 metro-bundler: rename Terminal back to normal
Summary: The 'class' suffix was just to workaround case-insensitivity on macOS.

Reviewed By: cpojer

Differential Revision: D5208747

fbshipit-source-id: 46bff156145880b9a894ff70b0c3dff0895a6d6c
2017-06-08 12:54:15 -07:00
David Aurelio
127f3312ed Fix mock inclusion
Summary:
The 'fs' mock was set up to require 'graceful-fs', which used to delegate to the corresponding mock. After turning off automocking, this no longer necessarily works.
This moves the mock to `fs.js` and makes the mock for graceful-fs require the fs mock via a relative path.

Reviewed By: cpojer

Differential Revision: D5209130

fbshipit-source-id: d468577e09d18382d0b9602ad0964dd880ec2366
2017-06-08 10:15:23 -07:00
Jean Lauliac
795c436cb1 FBGlobalTransformCache: retry 3 times, wait between retries
Summary: That should improve the hit rate a little bit, notably for the cache-filling script. On OSS side, this changeset only adds the sleep() function as `FBGlobalTransformCache` is not exposed.

Reviewed By: cpojer

Differential Revision: D5201196

fbshipit-source-id: c2d8e1a1b03edd9e7747b3202c574b0783f4117d
2017-06-08 09:36:39 -07:00
Jean Lauliac
71275b4018 metro-bundler: ResolutionRequest: remove dep on HasteFS type
Summary: We don't actually need this object anymore, just the function to test a file existence. This simplification allows us to phase out the 'old' HasteFS object easier, as well as adding retry logic using the real filesystem.

Reviewed By: cpojer

Differential Revision: D5208550

fbshipit-source-id: a03317e4385d793643e2dbee5d6782491d20e33c
2017-06-08 09:08:30 -07:00
Christoph Pojer
802094c6f0 @format JSTransformer
Reviewed By: jeanlauliac

Differential Revision: D5208868

fbshipit-source-id: 3b80197c4e879974f9129ccfc4e4a7ca7d4b4258
2017-06-08 07:37:49 -07:00
Christoph Pojer
5e6d70d4d6 Disable automocking from tests
Summary: We are flipping the switch all over Facebook, now that this part of the code is isolated we can do it in Metro as well.

Reviewed By: davidaurelio

Differential Revision: D5199449

fbshipit-source-id: 20c1bacc6dd2d314bd76bc5cc0ecd13266bf81c6
2017-06-08 05:52:18 -07:00
Jean Lauliac
01ecd43c62 FBGlobalTransformCache: retry on server-side errors
Reviewed By: cpojer

Differential Revision: D5200923

fbshipit-source-id: 9fd0d65e8d663437d27a3837580b07e386f70120
2017-06-07 11:22:12 -07:00
Christoph Pojer
ef7965df63 Update package.json
Reviewed By: jeanlauliac

Differential Revision: D5183469

fbshipit-source-id: 89c17c80398afb7755d8e7dec5116e62fbbc520e
2017-06-06 12:37:37 -07:00
Jean Lauliac
de34d9677c metro-bundler: fix integration test
Reviewed By: cpojer

Differential Revision: D5192165

fbshipit-source-id: 9ec8c8e5b6580e72c94771ff865337eb20e5dc94
2017-06-06 11:56:16 -07:00
Christoph Pojer
3d6b143d72 Add .npmignore
Reviewed By: davidaurelio

Differential Revision: D5190512

fbshipit-source-id: 7ab4b19f5b2c0f2ed5b1c28f3818e988313d96a4
2017-06-06 08:41:04 -07:00
Christoph Pojer
7085ed9f93 Update README
Reviewed By: jeanlauliac

Differential Revision: D5183348

fbshipit-source-id: d71bd7a6c5f20cd8954072814918adf4194abc57
2017-06-06 03:29:08 -07:00
Jean Lauliac
9dad135be1 Revert D5129231: packager: enable throwOnModuleCollision for jest-haste-map
Differential Revision: D5129231

fbshipit-source-id: 23e7f9246b55773dab98ee0cbcf38b1c8d5b4f30
2017-06-05 04:07:18 -07:00
Jean Lauliac
c1ed0d872b add fake AssetRegistry module 2017-06-02 18:37:14 +01:00
Christoph Pojer
8977650ba3 New README
Summary: This is a basic README for the new repo. We'll eventually expand on this as more pieces get open sourced and we'll evolve the three identifying tags over time.

Reviewed By: jeanlauliac

Differential Revision: D5172314

fbshipit-source-id: 8e5dd8567eadbcb839ee9860a22929fd6a77ee2e
2017-06-02 09:37:05 -07:00
Jean Lauliac
3b705a1124 react-native: attachHMRServer: make it generic
Reviewed By: cpojer

Differential Revision: D5172344

fbshipit-source-id: ab8b39e1924d66d37da9734455ed9a72cf59906e
2017-06-02 09:37:05 -07:00
Kevin Gozali
de70d376ca add --dev flag to the packager's dependencies command
Summary:
The packager dependencies CLI command always operates on --dev=true today. This means any tooling that needs to get the production dependencies (--dev=false) will always get the dev-mode list instead. For instance:

```
if (__DEV__) {
  require('Foobar');
}
```

Previously, `Foobar.js` will always be listed in the CLI output. With this change, setting `--dev false` option will correctly skip `Foobar.js` in the output.

Reviewed By: cpojer

Differential Revision: D5163184

fbshipit-source-id: 203221ee5d6ecb7df575442f12f6c4c489bfbd46
2017-06-01 14:06:30 -07:00
Jean Lauliac
7974a5b745 metro-bundler: AssetServer: remove fs timeouts
Reviewed By: cpojer

Differential Revision: D5164550

fbshipit-source-id: 2d294906c7deb67468dd9f85aa5ca998bdadcef3
2017-06-01 10:08:23 -07:00
Jean Lauliac
9095fd12bf metro-bundler: fix integration test for OSS
Summary: This should fix the e2e test for OSS.

Reviewed By: cpojer

Differential Revision: D5164267

fbshipit-source-id: d858b4811f0eb80ca7363177f4f384b66af13994
2017-06-01 10:08:23 -07:00
Christoph Pojer
bbdc4b8152 Update to metro-bundler from npm
Reviewed By: kittens

Differential Revision: D5163718

fbshipit-source-id: c21d3b9b6201d1a9509686cf235b611549652975
2017-06-01 04:38:32 -07:00
Jean Lauliac
98847474cd metro-bundler: Terminal: remove global state
Reviewed By: cpojer

Differential Revision: D5155075

fbshipit-source-id: 1d64bdd0ae13087aca620b65892832e3a1229c4a
2017-06-01 03:06:28 -07:00
Christoph Pojer
921005d44d Move remaining Metro Bundler files around.
Reviewed By: jeanlauliac

Differential Revision: D5154653

fbshipit-source-id: 482bf9829263d5d8f3d0b951ee58e2020236cc2c
2017-05-31 11:08:01 -07:00
Jean Lauliac
db5e2e5a8a metro-bundler: ResolutionRequest: extract FileNameResolver
Summary: I want to untangle `ResolutionRequest` once and for all, that starts by pulling stuff out :-)

Reviewed By: cpojer

Differential Revision: D5155316

fbshipit-source-id: a46ee9b40c6705edcac169adcfdffe25058ec810
2017-05-31 10:51:31 -07:00
Jean Lauliac
51da59f9e6 metro-bundler: use buildID instead of entry path for reporting
Summary: This fixes a longstanding bug that happens when 2 bundles with the same entry path but different options (dev, minify, etc.) get mixed up in the reporting. To prevent that we just use a unique build ID for each bundle that the Server handles separately.

Reviewed By: cpojer

Differential Revision: D5147049

fbshipit-source-id: da5c9cfe8c6a5d888b5be737947800d213081d86
2017-05-31 04:06:52 -07:00
Jean Lauliac
90824bdd98 packager: Server: more consistent error handling
Reviewed By: cpojer

Differential Revision: D5137887

fbshipit-source-id: fe73f9a74ac7091fcad66d91859e2ff90733ce45
2017-05-30 06:23:33 -07:00
Jean Lauliac
e554efaee4 packager: AsyncTaskGroup: @flow
Reviewed By: cpojer

Differential Revision: D5137195

fbshipit-source-id: 7d61d8f920ea5db7f70415e9f8fb7749a279bec8
2017-05-30 04:51:18 -07:00
Christoph Pojer
76ec909780 Stop requiring setupBabel from within packager/ folder.
Reviewed By: davidaurelio

Differential Revision: D5137246

fbshipit-source-id: 3072aaa6fd74a135980f1f0a7b078a82dd85f09d
2017-05-30 04:42:14 -07:00
Werner Roets
e65e6a5da6 Fixed grammar/sentence structure
Summary:
Somebody had to fix it :)
Closes https://github.com/facebook/react-native/pull/13028

Differential Revision: D5145067

Pulled By: shergin

fbshipit-source-id: dc7a56824284c3a599b4b2a41a235e045510a013
2017-05-28 22:29:26 -07:00
Jean Lauliac
06732d9272 packager: Module: get rid of callbacks
Summary: By getting rid of callbacks, we get a code that's pretty halved in size, and much easier to read, but we also fix bugs! When some of the code of Module would throw, we wouldn't catch it, meaning that packager would crash entirely. That's the case for when we have a Haste name mistach, for example. This changeste fixes that by instead capturing exceptions through the Promise chain, that bubble up all the way to the `Server` and reasonnably handled. People can then fix the Haste nane mismatch and refresh right away, and it'll work as expected.

Reviewed By: davidaurelio

Differential Revision: D5137408

fbshipit-source-id: b9e938b93e8d23738af49106bbae1fce97d7a5db
2017-05-26 10:21:23 -07:00