Commit Graph

1043 Commits

Author SHA1 Message Date
Miguel Jimenez Esun a4c417a1c5 Fine-tune adjustments to experimental caches
Reviewed By: jeanlauliac

Differential Revision: D7185544

fbshipit-source-id: b4b6c363910a80f906260afe49a72d476609ae14
2018-03-08 04:35:11 -08:00
Rafael Oleza 8fd56bf2e5 Bump metro@0.29.0
Reviewed By: BYK

Differential Revision: D7181876

fbshipit-source-id: a1b567303b8024b832bf43dd6be56ccebffaf39c
2018-03-07 15:00:27 -08:00
Miguel Jimenez Esun aaedb99ac4 Get rid of unused methods
Reviewed By: davidaurelio

Differential Revision: D7169707

fbshipit-source-id: 8b29791e15631a3ee4674a6cb5046e675c2c3727
2018-03-07 07:03:44 -08:00
Miguel Jimenez Esun 0e9e2505dd Type transformCode
Reviewed By: davidaurelio

Differential Revision: D7169708

fbshipit-source-id: b886ea7b3e694ada4d930df9fa6aec1cdc188d98
2018-03-06 18:07:27 -08:00
Miguel Jimenez Esun 8a10127b58 Enforce object strictness at runtime
Reviewed By: jeanlauliac

Differential Revision: D7153674

fbshipit-source-id: a7f68d26430d04dc36360199ffcb243f8e2e09cf
2018-03-06 04:51:38 -08:00
Jean Lauliac 08283058ec metro: switch Assets-test to the new memory-fs
Reviewed By: mjesun

Differential Revision: D7135767

fbshipit-source-id: dd7998b8aca87391ec2081770645ba73d11cf859
2018-03-05 07:53:53 -08:00
Jean Lauliac e565f10a30 metro-memory-fs: implement createReadStream()
Reviewed By: mjesun

Differential Revision: D7124071

fbshipit-source-id: a267e35bb32d540cec915ac38f5ab11e2096f33e
2018-03-05 07:53:53 -08:00
Miguel Jimenez Esun b7e3e046cd Tweaks to experimental caches
Reviewed By: jeanlauliac

Differential Revision: D7123128

fbshipit-source-id: 2f838d66c51ef5faef261a6ad474cefd9ac7e8ad
2018-03-05 04:05:48 -08:00
Miguel Jimenez Esun 3bd7ef1d74 Remove "projectRoot" as an option
Reviewed By: jeanlauliac

Differential Revision: D7123052

fbshipit-source-id: be57635187c7e9c4bed2a62eca23bfe8346bc4f3
2018-03-05 04:05:48 -08:00
Jean Lauliac a4d1bf21b3 metro: switch Bundler-test to the new memory-fs
Reviewed By: rafeca

Differential Revision: D7111251

fbshipit-source-id: dfba2c3e7d17cc90c329785736b7c5a30816305b
2018-03-02 12:05:49 -08:00
Rafael Oleza cc392c699a Make the chrome debugger handle dynamic delta ids
Differential Revision: D7112419

fbshipit-source-id: 1d80c0c13144dd19bbcd5535383befc6567cacf7
2018-03-02 03:18:52 -08:00
Burak Yigit Kaya edacc36cb4 Implement `dispose` for HMR
Reviewed By: rafeca

Differential Revision: D7111433

fbshipit-source-id: 3ae8b6abc08328ea178965bfa60ec6af91dcc2cf
2018-03-01 09:36:44 -08:00
Miguel Jimenez Esun df399aa8c5 Make caches not to update beyond the hit
Reviewed By: davidaurelio

Differential Revision: D7098171

fbshipit-source-id: 2e934054fd265c40887a9ff5458bf294b2a61132
2018-03-01 07:10:41 -08:00
Rafael Oleza cd13bb80eb Reduce memory in the traverse dependencies logic by reusing objects
Reviewed By: BYK

Differential Revision: D7110823

fbshipit-source-id: 575da43e99bc2ba82b6e7bdcf61e933e95535710
2018-03-01 06:07:40 -08:00
Christoph Nakazawa 5bec7748e4 Tweaks to error reporting
Reviewed By: mjesun

Differential Revision: D7110894

fbshipit-source-id: cd4b10bb423c14519acb930192cfc3d9932fa091
2018-03-01 06:07:40 -08:00
Christoph Nakazawa 240711313c Enable colors to syntax highlight code in errors
Reviewed By: mjesun

Differential Revision: D7110895

fbshipit-source-id: 1ec1a2147258de44fe65453e1df25afb72c2c6a4
2018-03-01 06:07:40 -08:00
Rafael Oleza 59cfe85cca Make eslint rules more strict
Reviewed By: cpojer

Differential Revision: D7123137

fbshipit-source-id: 68f82124ed565f223c6bf546c22e55ca401f1996
2018-03-01 06:07:40 -08:00
Miguel Jimenez Esun cfb8516925 Only capture "ENOENT"s in "FileStore"
Reviewed By: jeanlauliac

Differential Revision: D7111352

fbshipit-source-id: 97525051e58482d7f0604cd9c3e50183db83d455
2018-03-01 06:07:40 -08:00
Miguel Jimenez Esun 123f1cfd42 Use "writeFileSync" instead of "writeFile"
Reviewed By: cpojer

Differential Revision: D7110494

fbshipit-source-id: 3024227431317a446ec23d2c78cde8a66c49d41f
2018-03-01 06:07:40 -08:00
Miguel Jimenez Esun da45d64c76 Use global cache getter with Metro's experimental caches
Reviewed By: davidaurelio

Differential Revision: D7084356

fbshipit-source-id: e5960c8981e7157efb58294d722067000d285497
2018-03-01 06:07:40 -08:00
Miguel Jimenez Esun f583f81254 Remove optional parameter from server and enforce empty list everywhere
Reviewed By: jeanlauliac

Differential Revision: D6999448

fbshipit-source-id: 39a6b9333e3c3ec05bae5423fcc84ad17e1fdc06
2018-03-01 06:07:40 -08:00
Peter van der Zee f8b0a77dd3 Don't import, yet
Reviewed By: mjesun

Differential Revision: D7110450

fbshipit-source-id: fa31566443e976df13313f05ed8775c31863d6e5
2018-03-01 02:22:22 -08:00
Peter van der Zee d08682472b Add @babel/register to Metro
Summary:
This adds the babel register package for babel 7 to Metro

All changes are caused by yarn

Reviewed By: davidaurelio

Differential Revision: D7102279

fbshipit-source-id: a8a6db5600207b868bb10217884eb659de9778f4
2018-03-01 02:22:22 -08:00
Peter van der Zee 4946945215 Bump Babel 7 beta versions
Summary: Turns out we need an updated version of the babel 7 stack because the runtime depends on something in the newest version. This commit bumps various main package versions to beta.40

Reviewed By: davidaurelio

Differential Revision: D7104132

fbshipit-source-id: ff7db16f6ad82ea2a728ead63fe19b1c9dbd708c
2018-02-28 16:53:22 -08:00
Jean Lauliac bc4c233a1e metro: fix dep over memory-fs in OSS
Reviewed By: rafeca

Differential Revision: D7111222

fbshipit-source-id: 1aca3836e1c55a60ec77c22c8f38aabf9ba5cbb2
2018-02-28 10:56:59 -08:00
Rafael Oleza d7165e5cbb Add extraneous dependencies eslint plugin to metro
Reviewed By: davidaurelio

Differential Revision: D7084893

fbshipit-source-id: f1726fc189174bde8fc6f32ed6b0125764fe5093
2018-02-28 04:34:15 -08:00
Rafael Oleza 2f98a6ee61 Remove nested package.json files
Reviewed By: cpojer

Differential Revision: D7097285

fbshipit-source-id: 66b107632e3b84edf4f2c099b03ca590a7c6bb7b
2018-02-28 04:34:15 -08:00
Rafael Oleza f5bb45ffdd Do not transform Platform.select() calls using dynamic properties
Reviewed By: davidaurelio

Differential Revision: D7085775

fbshipit-source-id: 348e43312ecb8298c14b202f209850b54d9b7b12
2018-02-28 04:34:15 -08:00
David Aurelio 36cee35684 Remove `getOptions()` from `DeltaBundler`
Summary: More cleanup of `DeltaBundler` in order to move from `Bundler` to `ModuleGraph`. I am trying to remove all unrelated functionality to make the transition easier.

Reviewed By: rafeca

Differential Revision: D7100153

fbshipit-source-id: 2e0c2d4957dece27bd28d3cf7e4ff2e178c60fb2
2018-02-28 04:04:33 -08:00
Jean Lauliac 50356b7408 metro-resolver: simplify API with exceptions
Reviewed By: mjesun

Differential Revision: D7098249

fbshipit-source-id: 5eea3dfdc54a98d295b756296398fd3a1dd3890b
2018-02-28 03:08:23 -08:00
Jean Lauliac a66a231dfc metro: DeltaBundler-test: use memory-fs
Reviewed By: rafeca

Differential Revision: D7098504

fbshipit-source-id: 5c2c7b88b2a9b41f3c7d75613c7ab290622176ea
2018-02-28 02:29:26 -08:00
Rafael Oleza 2b32b08b13 Pass the sourcemap variable correctly to the transformer
Reviewed By: Hypuk

Differential Revision: D7102063

fbshipit-source-id: b6162e6f9052099afec02a67e3ea44da2a6ea8be
2018-02-27 14:37:55 -08:00
Jean Lauliac 019622ce50 metro: extract MemoryFS into its own package
Reviewed By: mjesun

Differential Revision: D7098381

fbshipit-source-id: 0ac9d71b7912c9d448468b64969d04a8cc9c853d
2018-02-27 10:51:13 -08:00
David Aurelio 4f35a6d8a1 Remove unused type import
Summary: Removes an unused type from `Bundler`

Reviewed By: jeanlauliac

Differential Revision: D7084608

fbshipit-source-id: 213a49466c9745c4bb85b8b16a8b2e4309b5a524
2018-02-27 09:31:47 -08:00
David Aurelio 958a147162 less mocks in `Serializer-test`
Summary: now that RAM bundle info building is an implementation detail, we make it part of the test rather than mocking it out.

Reviewed By: rafeca

Differential Revision: D7084580

fbshipit-source-id: edbb7b3d1aaca5513ea81d8d2c62b4b5c8e97756
2018-02-27 09:31:47 -08:00
David Aurelio 356d896c01 remove `getRamOptions` from `DeltaTransformer` and `Bundler`
Summary: Removes `getRamOptions` from `DeltaTransformer` and `Bundler` for better separation of concerns, and ultimately, porting delta functionality to `ModuleGraph`

Reviewed By: rafeca

Differential Revision: D7084487

fbshipit-source-id: e8a7ea4addbad9057e7d55627f77ebd01e64786b
2018-02-27 09:31:47 -08:00
Rafael Oleza 2393f849e3 Bump metro@0.28.0
Reviewed By: davidaurelio

Differential Revision: D7085296

fbshipit-source-id: 76032af022d37a28976b33176f9a573e39861a39
2018-02-26 09:59:01 -08:00
Rafael Oleza a645c21862 Add metro-minify-uglify dependency
Differential Revision: D7084802

fbshipit-source-id: bdc1eb1389f9caeb067240e221ebef7ceeb78cda
2018-02-26 09:01:10 -08:00
Peter van der Zee 2303f3b18d Make constant folding plugin use context for babel types
Summary: This makes the plugin use the passed on babel api rather than hardcoded pulling in babel 6 or 7. This is important since they are different packages now and we need to work with them side-by-side.

Reviewed By: mjesun

Differential Revision: D7083873

fbshipit-source-id: 2ce89e0627005bb29ff8d3e0e1ac51fe8ee4eabd
2018-02-26 07:58:33 -08:00
Christoph Nakazawa f179352292 Add `close` event to MetroClient
Reviewed By: rafeca

Differential Revision: D7083989

fbshipit-source-id: 7a4d4913d32e58a1efc6210dd7118b03b6ad6b2b
2018-02-26 07:19:54 -08:00
Christoph Nakazawa 063a6867b1 Cleanup HMR code, rename to MetroClient, add test
Reviewed By: BYK

Differential Revision: D7083982

fbshipit-source-id: ac8193b8025e8ff37d7316e11cafc09b58b7d358
2018-02-26 05:57:05 -08:00
Peter van der Zee 45dfd925fc Enable @flow in the inline tests
Summary: Enable the flow directive for the inline tests. Changes are related to getting Flow to green.

Reviewed By: jeanlauliac

Differential Revision: D7083814

fbshipit-source-id: f5efa35181663b30d9da437ffa727b3fa8f99b5a
2018-02-26 04:54:39 -08:00
Peter van der Zee 56e7aed7cb Let the inline plugin use the babel types from arg
Summary:
Before the inline plugin was explicitly requiring babel itself. With the babel upgrade path that's a problem since it will try to pull in babel 6 even when we want babel 7 (because it's a different package name). To remedy this the plugin is now a function which will use the `types` api from the given context rather than the required global.

I also moved out the `inline` function that only seems to be used in tests. They're now just living in the tests.

Had to add some flow annotations to generic objects since Flow was complaining about missing types and that would require adding the full babel api which is outside of the scope of this task.

Reviewed By: jeanlauliac

Differential Revision: D7083815

fbshipit-source-id: 59b8365d8c3c3dc00b23a3735037dcc9483c0b2c
2018-02-26 04:54:39 -08:00
Miguel Jimenez Esun 8292958c00 Allow passing custom configs through the CLI ("js1 run")
Reviewed By: jeanlauliac

Differential Revision: D7081913

fbshipit-source-id: f5952599c840f2c65213bd2928b21f0c1d84f510
2018-02-26 03:39:24 -08:00
Miguel Jimenez Esun d83903f614 Add "PersistedMapStore" cache
Reviewed By: davidaurelio

Differential Revision: D7050539

fbshipit-source-id: 78191ae25c7b28869ebedb4b0f90300bac52c580
2018-02-25 16:35:45 -08:00
Miguel Jimenez Esun 5edc2acc80 Add "FileStore" cache
Reviewed By: davidaurelio

Differential Revision: D7037483

fbshipit-source-id: b7517f2b3c8df3e5653dd1a756dfbee5bb2bd656
2018-02-25 16:35:45 -08:00
Rafael Oleza a62eaa0d3b Make the inline platform transform support string keys
Summary:
This diff makes the platform inline transformer support string keys, for example:

```
Platform.select({
  'ios': 'ios',
  'default': 'default',
});
```

This fixes https://github.com/facebook/metro/issues/134

Reviewed By: mjesun

Differential Revision: D7079013

fbshipit-source-id: 3e47bb4a28f2ac776475842982e089d5954d6521
2018-02-25 11:05:46 -08:00
Vladimir Timofeev 886c9b986c Fix npm deps
Summary:
**Summary**

This should fix install of the metro with npm (issue #142).
We can't have both babylon@6 and babylon@7 as deps for metro package, so as jeanlauliac suggested in https://github.com/facebook/metro/issues/142#issuecomment-368217279 lets create wrapper-package `metro-babylon7` and reexport babylon@7 from it.

**Test plan**

I do manually `yarn && yarn test` - all checks passed.
Closes https://github.com/facebook/metro/pull/143

Differential Revision: D7079144

Pulled By: rafeca

fbshipit-source-id: eeb4f6a01ad92d84dc14702dee07975e253bcf88
2018-02-24 09:21:43 -08:00
Rafael Oleza 41e7aa6f4a Improve readability of the traverse dependencies tests
Reviewed By: davidaurelio

Differential Revision: D7055471

fbshipit-source-id: dfac739159de0591d453511d4f4d7882beacb9bf
2018-02-24 04:29:24 -08:00
Rafael Oleza ff6f6ef1cf Make the delta protocol more robust by detecting when a client misses a delta
Reviewed By: davidaurelio

Differential Revision: D7031664

fbshipit-source-id: 22985ba45aa330780c8ddc44c07f5557e9e0d9c4
2018-02-24 04:29:24 -08:00
Burak Yigit Kaya a7fdc0f3c1 Add missing metro-cache dependency to metro
Reviewed By: rafeca, mjesun

Differential Revision: D7067918

fbshipit-source-id: 1d096dc3dc98c9ef7d6b47eee3b00e31a2427ec8
2018-02-23 10:45:41 -08:00
Jean Lauliac 0154fb32eb ModuleGraph/node-haste: remove dep over ResolutionRequest
Reviewed By: mjesun

Differential Revision: D7040976

fbshipit-source-id: 93d43342ee23b7f3496afbb532bbc12fefd6e61e
2018-02-23 10:36:52 -08:00
Burak Yigit Kaya 4670c08206 Bring metro-cache to 0.27.0 again
Reviewed By: rafeca

Differential Revision: D7067873

fbshipit-source-id: fa8d377c042f289c807160b8bb78392d00c8e1f4
2018-02-23 09:00:51 -08:00
Burak Yigit Kaya 4e33e7aa85 Release Metro 0.27.0
Reviewed By: davidaurelio

Differential Revision: D7067140

fbshipit-source-id: a2ae64a8049e5ef883c08f4abbe108401427b0aa
2018-02-23 07:51:31 -08:00
Miguel Jimenez Esun bd91fcf131 Add an "experimentalCaches" flag all the way down to Module
Reviewed By: jeanlauliac

Differential Revision: D6976974

fbshipit-source-id: fea0a3655fec924798567d690e2ee4f24465d5c5
2018-02-23 03:52:45 -08:00
Miguel Jimenez Esun 7486444a0a Pass cacheStores
Reviewed By: davidaurelio

Differential Revision: D7023425

fbshipit-source-id: 84d0d6585af4075bd7ac11ac3c97520caeae7b01
2018-02-23 03:52:44 -08:00
Miguel Jimenez Esun eab7030b2e Initial version of caches
Reviewed By: davidaurelio

Differential Revision: D7023408

fbshipit-source-id: 3411a34d7551f8c2e13087af6dae389c3468b1ee
2018-02-23 03:52:44 -08:00
Burak Yigit Kaya 3d061b34f7 Upgrade Jest to 22.4.2
Reviewed By: mjesun

Differential Revision: D7060484

fbshipit-source-id: 91cc7b6d66a2bb99242c144e011eef4393f87e9e
2018-02-23 03:52:44 -08:00
Miguel Jimenez Esun e4b1e773b1 Pass cache keys instead of cache props when talking to the GlobalTransformCache
Reviewed By: jeanlauliac

Differential Revision: D7031064

fbshipit-source-id: a99fb2775b84ce6b866c80be68f966dcd4ea57ca
2018-02-22 09:39:51 -08:00
Rafael Oleza 6da4bc4d30 Make sure that files that have been modified and deleted afterwards are marked as deleted
Reviewed By: davidaurelio

Differential Revision: D7030986

fbshipit-source-id: e00fc80ff6f5cb7bb49714d35c91361cb795ad0b
2018-02-22 09:39:51 -08:00
Michal Glaus 40c2449eec Pass numWorkers instead of maxWorkers to jest-worker
Summary:
<!-- Thanks for submitting a pull request! Please provide enough information so that others can review your pull request. The two fields below are mandatory. -->

**Summary**

Jest Worker accepts parameter `numWorkers`, not `maxWorkers`, see:
https://github.com/facebook/jest/tree/master/packages/jest-worker#numworkers-number-optional

<!-- Explain the **motivation** for making this change. What existing problem does the pull request solve? -->

**Test plan**

<!-- Demonstrate the code is solid. Example: The exact commands you ran and their output, screenshots / videos if the pull request changes UI. -->
Closes https://github.com/facebook/metro/pull/136

Reviewed By: mjesun

Differential Revision: D7036411

Pulled By: rafeca

fbshipit-source-id: 5528ca4a9abe5a8e3668e83b214e10d97ba7a827
2018-02-22 08:31:07 -08:00
Burak Yigit Kaya a984719eef Upgrade Jest to 22.4.0 to pull fixes for jest-haste-map
Reviewed By: mjesun

Differential Revision: D7041111

fbshipit-source-id: 6dbd0cbf7b62a54d0b5f16bbf2fa81332542f14e
2018-02-22 06:15:23 -08:00
Maël Nison b354a81427 Uses Yargs instead of Command
Summary: This diff allows Metro to throw an error when a configuration file cannot be found, by using a new strict: true option.

Reviewed By: rafeca

Differential Revision: D6998613

fbshipit-source-id: b704633be18d5c007f1a022fa811d0a74c636fc9
2018-02-22 06:08:20 -08:00
Maël Nison eb72ad3794 Makes the Metro CLI commands injectable
Summary: This diff makes the Metro CLI commands injectable into any Yargs object, so that we can override various aspects of it, add extra commands, etc.

Reviewed By: davidaurelio

Differential Revision: D6988250

fbshipit-source-id: 217c661e4c1b05282b6cdbf4d745d1b29f5cbbe0
2018-02-22 06:08:20 -08:00
Peter van der Zee 60f16aafc2 Version bump babel-plugin-external-helpers
Reviewed By: cpojer

Differential Revision: D7054249

fbshipit-source-id: 5cb5619ab700e61a9f4feeceac0a5b803ddfdc15
2018-02-22 04:14:23 -08:00
Miguel Jimenez Esun 0f3f7daa4f Move mocking inside beforeEach for Transformer test
Reviewed By: rafeca

Differential Revision: D7040798

fbshipit-source-id: eece8c42e1368ead476c6d1495dad7e0abb4b0e3
2018-02-21 04:53:06 -08:00
Jean Lauliac d110c7b9ea metro: extract metro-resolver package
Reviewed By: rafeca

Differential Revision: D7011526

fbshipit-source-id: 523c54792cef1c31eef281e6e39bc25b20e2ceec
2018-02-21 04:53:06 -08:00
Peter van der Zee 5aa19c7626 Add minifier-path option to Metro
Summary:
This exposes the `minifierPath` externally and allows it to be adjusted through the `--minifier-path` argument.

This works for both the server (when starting the server) and running a single build through the CLI.

In server mode, this can not be used per file request yet, though that should also be doable if need be.

Reviewed By: rafeca

Differential Revision: D6998562

fbshipit-source-id: 669b876c24fe117ec88b2200d48aa82658f568b4
2018-02-20 04:22:00 -08:00
Peter van der Zee c080d70699 Start making the minifier an option for Metro
Reviewed By: jeanlauliac

Differential Revision: D6998187

fbshipit-source-id: 32e6fbb756ff119ed8a3070585e9f6c39fab1baa
2018-02-20 04:22:00 -08:00
Peter van der Zee e9e3a986c7 Add a minifier path option to the ModuleGraph path
Reviewed By: mjesun

Differential Revision: D6998189

fbshipit-source-id: 4876de98b9970088161d78e1b462688307ef477f
2018-02-20 04:22:00 -08:00
Rafael Oleza 25b201148b Refactor the traversal of dependencies logic
Reviewed By: jeanlauliac

Differential Revision: D7009928

fbshipit-source-id: a56e4d3b5a3b2c91f14affbc56cbca56c8526d06
2018-02-19 06:52:36 -08:00
Rafael Oleza cfe175254a Do not do unnecessary work when re-adding a file after deleting it
Reviewed By: mjesun

Differential Revision: D7009760

fbshipit-source-id: 18a93443226bdec4decb69f75539e27f528c128c
2018-02-19 06:52:36 -08:00
Rafael Oleza a5307e986e Make metro rely much less in the ModuleCache system
Reviewed By: jeanlauliac

Differential Revision: D6949157

fbshipit-source-id: cb5ef25aa582935f7c624375392be7fceefd87b6
2018-02-19 06:52:36 -08:00
Miguel Jimenez Esun 03c3b3d219 Fix JSTransformer/index test
Reviewed By: jeanlauliac

Differential Revision: D7019771

fbshipit-source-id: cbf232dc22f55d75dced3206b3c4ef1a472a7102
2018-02-19 04:59:47 -08:00
Peter van der Zee dd48bb1fa3 Improve Flow coverage
Reviewed By: mjesun

Differential Revision: D6999089

fbshipit-source-id: 5dfaef91909060b5a2bec0030048e97c2c2c3698
2018-02-19 04:24:08 -08:00
Sophie Alpert 2a327fb19d Update to MIT license
Summary: Manual changes.

Reviewed By: TheSavior, yungsters

Differential Revision: D7012152

fbshipit-source-id: de7459be3db13c687868b45059856f125c4f2eb1
2018-02-16 18:30:48 -08:00
Sophie Alpert 8242229b59 Update license headers for MIT license
Summary:
Includes React Native and its dependencies Fresco, Metro, and Yoga. Excludes samples/examples/docs.

find: ^(?:( *)|( *(?:[\*~#]|::))( )? *)?Copyright (?:\(c\) )?(\d{4})\b.+Facebook[\s\S]+?BSD[\s\S]+?(?:this source tree|the same directory)\.$
replace: $1$2$3Copyright (c) $4-present, Facebook, Inc.\n$2\n$1$2$3This source code is licensed under the MIT license found in the\n$1$2$3LICENSE file in the root directory of this source tree.

Reviewed By: TheSavior, yungsters

Differential Revision: D7007050

fbshipit-source-id: 37dd6bf0ffec0923bfc99c260bb330683f35553e
2018-02-16 18:30:48 -08:00
Miguel Jimenez Esun e651b81881 Move "transformFile" to "transform" to match worker interface
Reviewed By: cpojer

Differential Revision: D6968803

fbshipit-source-id: 7dee92d5a58e18bb1ee0d5cd5748acd44cde5b18
2018-02-16 11:49:30 -08:00
Miguel Jimenez Esun b129827fa2 Move Buck-specific config into its own types.flow
Reviewed By: rafeca

Differential Revision: D6949488

fbshipit-source-id: aa26b3cb51809569ea2123d9a24cb99506b2b52b
2018-02-16 11:49:30 -08:00
Jean Lauliac 0386ef17e9 metro: ModuleResolution: extract resolveDependency
Reviewed By: rafeca

Differential Revision: D6999063

fbshipit-source-id: 2568d996f7403fcd6f8b9a9311f5bdfa36b25b52
2018-02-16 09:24:43 -08:00
Rafael Oleza 29115f729c Make the getTransformCacheKeyFn-test not dependant on the metro version
Reviewed By: davidaurelio

Differential Revision: D6976235

fbshipit-source-id: 8ba5a0413c3c96224a91d6972beda5a413557646
2018-02-16 05:53:06 -08:00
Peter van der Zee 5b383fce16 Cleanup lint errors
Summary:
Argument was no longer used and is causing lint errors.
Dropping it simplifies the debounce function as well.

Reviewed By: davidaurelio

Differential Revision: D6999567

fbshipit-source-id: 8856ed40feb0fa23155c9d18e20c43550aac876b
2018-02-15 10:07:45 -08:00
Andres Suarez 581623ed11 Fold .eslintrc's into the root eslintrc
Reviewed By: davidaurelio

Differential Revision: D6996960

fbshipit-source-id: f05c76b7356b21ecb8db4489920fd3a1fc34f1d9
2018-02-15 08:24:07 -08:00
Miguel Jimenez Esun b958c400f0 Upgrade Jest to 22.3.0
Reviewed By: BYK

Differential Revision: D6978514

fbshipit-source-id: 3c6be52d38fedbe849dee6319bb2e4d7a97297c9
2018-02-15 03:38:41 -08:00
Peter van der Zee 084dbcef30 Move the minifier to its own package
Reviewed By: davidaurelio

Differential Revision: D6988462

fbshipit-source-id: 437b8a2fda3f25d7ace73d548602356de319a99d
2018-02-15 03:38:41 -08:00
Rafael Oleza d9b6fd7102 Pass cacheVersion param via the new API
Reviewed By: BYK

Differential Revision: D6980337

fbshipit-source-id: 72c01136b6720390ffec8593f0375c8756dc1d4a
2018-02-14 08:46:56 -08:00
Rafael Oleza afa3307659 Fix enableBabelRCLookup option in new CLI + global cache script
Reviewed By: BYK

Differential Revision: D6977885

fbshipit-source-id: 50245e046c7639f9fb4022a9cc5974d50831524c
2018-02-14 08:46:56 -08:00
Rafael Oleza 33e93dcde3 Bump metro@0.26.0
Reviewed By: cpojer

Differential Revision: D6976161

fbshipit-source-id: 0cf20f4b2372997a8aac41cc07a9bdd641a93ad4
2018-02-13 07:15:04 -08:00
Rafael Oleza c955b65b22 Remove flaky babel 7 test + some small lint fixes
Differential Revision: D6976119

fbshipit-source-id: 0315511e8835e7dcfc796ac7133b24346d805853
2018-02-13 06:31:03 -08:00
Christoph Nakazawa 892b4ac9de Expose getDependencies when using RAM bundles
Reviewed By: rafeca

Differential Revision: D6965192

fbshipit-source-id: 8f4178aa4c38c03beab6da8bcaf4dc193c02b044
2018-02-12 10:16:19 -08:00
Andres Suarez 7d5a120fe9 Namespace custom ESLint rules through eslint-plugin-lint
Reviewed By: mzlee

Differential Revision: D6934651

fbshipit-source-id: 3cb0c3550ad628e3b5c0bdaec8cde9d5579ea0af
2018-02-09 11:14:55 -08:00
Peter van der Zee eacd27ecaa Remove log
Reviewed By: jeanlauliac

Differential Revision: D6948396

fbshipit-source-id: 5c9286b47257820bd4ec0da3068c5b21dbaff663
2018-02-09 04:32:23 -08:00
Maël Nison f12b07101e Refactors option forwarding from RN-cli to Metro
Reviewed By: jeanlauliac

Differential Revision: D6936821

fbshipit-source-id: aeaad43ca056cf0cb26255e426695f3bfb396368
2018-02-09 04:32:23 -08:00
Jean Lauliac 07a79853ef metro: ModuleResolution: extract resolveModulePath
Summary: Continue cleaning up the resolution algo. By removing the class completely as well as the `TModule` type, and providing options via the `context`, we'll be able to identify clearly the inputs of the resolution algorithm, and reuse it eventually for Jest. This changeset extract one more function in this fashion. Next steps: extract the rest of the stateful code into functions, or into `ResolutionRequest`.

Reviewed By: davidaurelio

Differential Revision: D6937569

fbshipit-source-id: bab0bcd280be32a11f23174b0591dd0cc7dee7ab
2018-02-08 10:14:25 -08:00
Jean Lauliac 1498c4ba6b metro-buck: getLibrary: precompute asset hashes
Reviewed By: davidaurelio

Differential Revision: D6937279

fbshipit-source-id: 328f06b2b66eeed6fd2f767dab1a03854c4dd28c
2018-02-08 10:06:29 -08:00
Jean Lauliac 01a92f3c2f asyncRequire: wrap result in default
Reviewed By: cpojer

Differential Revision: D6911464

fbshipit-source-id: 44953e0716e076e50d551738059435697d064733
2018-02-08 09:15:55 -08:00
Rafael Oleza 6f6890505e Bump metro@0.25.1
Reviewed By: cpojer

Differential Revision: D6924028

fbshipit-source-id: f643bd912b201a5333778f124b0c21acf84814df
2018-02-07 09:29:50 -08:00
Maël Nison cbaf70ce99 Ensures that the Metro server is closed when an exception happens in runBuild
Differential Revision: D6924180

fbshipit-source-id: 80f5bf60aa357ce8df0598e8fdac92776c4af601
2018-02-07 09:23:04 -08:00
Miguel Jimenez Esun be528451f5 Upgrade Jest to v22.2.1
Reviewed By: rafeca

Differential Revision: D6923664

fbshipit-source-id: 0751ee6f0eb72193b0b22bb38d0398b3d83592a3
2018-02-07 08:45:48 -08:00
Christoph Nakazawa a28fba69c8 Allow to pass output bundle object
Reviewed By: davidaurelio

Differential Revision: D6923820

fbshipit-source-id: 99a9cdeab867f0f749792ca62edee8ebdee33328
2018-02-07 07:27:29 -08:00
Danny B 532a2139b8 Clarify advice on resetting bundler cache
Summary:
**Summary**

The cache dir name now starts with `metro-bundler-cache-` but the message still refers to `react-`.

This just wasted a bit of my time before I realized and that's not the first time this happens either.

Also I don't have `$TMPDIR` defined on vanilla ubuntu, I think using that instead of `/tmp` creates more confusion than helps.

**Test plan**

Just a change in a string constant.

I signed the CLA.
Closes https://github.com/facebook/metro/pull/131

Differential Revision: D6923347

Pulled By: rafeca

fbshipit-source-id: 4e816e5d0c75b0d2ee5ddf4d92d2d7397011d4e4
2018-02-07 04:50:27 -08:00
Maël Nison 1f743f3e93 Adds a globalTransformCache option to the metro API
Reviewed By: rafeca

Differential Revision: D6900514

fbshipit-source-id: b150662b5aec9c11506333b07377165636d9180c
2018-02-06 06:29:41 -08:00
Maël Nison bc6f188a59 Moves the maxWorkers default into the API rather than the CLI
Reviewed By: BYK, davidaurelio

Differential Revision: D6883200

fbshipit-source-id: 9f5a73f873adc3ac39286c7f32d4f759eb36820d
2018-02-06 03:17:27 -08:00
Rafael Oleza c2fb238b5d Bump metro@0.25.0
Reviewed By: davidaurelio

Differential Revision: D6878299

fbshipit-source-id: cde26c9c9e56ee9a052f1915ad7772ae475b5e41
2018-02-05 21:44:21 -08:00
Rafael Oleza e162ea7698 Break infinite loop when trying to hot patch circular dependencies
Reviewed By: BYK

Differential Revision: D6853993

fbshipit-source-id: 9e42d207738102e019fccea517411fccd0fb6b1b
2018-02-05 21:44:21 -08:00
Rafael Oleza e329f00dc9 Avoid doing multiple unnecessary traversals when hot patching modules
Reviewed By: martinbigio

Differential Revision: D6853969

fbshipit-source-id: 982ca135a4113c985bbd7d8e8631601e16844a86
2018-02-05 21:44:21 -08:00
Peter van der Zee 1f14cf1a0f Add progress bar to Metro cli build
Reviewed By: davidaurelio

Differential Revision: D6899035

fbshipit-source-id: 4e9c852ecc8d7d172919a79385903e95c0bc239e
2018-02-05 06:14:25 -08:00
Peter van der Zee d6e80c4ebf When the sourceMap option is false, try to listen to it better
Summary:
I think the default value for the `--source-map` option is true, although it's not defined that way explicitly. Regardless, when it's explicitly set to `false` I would expect Metro to at least listen to that. Currently that's not the case. This diff attempts to improve that situation.

Note that it's still not perfect since there are more places where sourcemaps are still being touched when this flag is `false`. It turns out adding a proper flag for this leads to a lot of cascading type problems and so I ended up with this fix instead.

Reviewed By: rafeca

Differential Revision: D6884423

fbshipit-source-id: 7fe10045d9d9f73c7841588627ba41b14c2e412b
2018-02-05 01:16:56 -08:00
Peter van der Zee eb08ed4adc Dont build sourcemap stuff if it wont be used
Summary: Don't bother to work on the source map if it won't be used anyways

Reviewed By: rafeca

Differential Revision: D6884244

fbshipit-source-id: ac014bf982e33c669a1e79f16dd06149e758a797
2018-02-05 01:16:56 -08:00
Peter van der Zee 5e505980ec This function was working inline, reflect this clearly
Summary:
This function was working on a source map object inline and then returning the same reference.

For clarity it's better if it either clones the whole thing (that would be a waste) or not return the reference at all. Also renamed the function (but not the file) for clarity.

Dropped the unused check and updated callsites instead.

Reviewed By: mjesun

Differential Revision: D6884241

fbshipit-source-id: 33aa7a1ad7096510903bbb74dd6b9c675b81aff5
2018-02-05 01:16:56 -08:00
Peter van der Zee 63e8aebf79 Dont build sourcemap if it will not be used
Summary: Don't bother to work on the source map if it won't be used anyways

Reviewed By: mjesun

Differential Revision: D6884247

fbshipit-source-id: 811409313e7ac1a7255ddd0eed665ed92020241e
2018-02-05 01:16:56 -08:00
Peter van der Zee b1372a37bd Dont relativate source map if it wont be used
Summary: Don't bother to work on the source map if it won't be used anyways

Reviewed By: mjesun

Differential Revision: D6884243

fbshipit-source-id: 483664ad32a72a8e6e3de3e0cc224b3a6ea67d46
2018-02-05 01:16:56 -08:00
Peter van der Zee 92e9cfa050 Drop unused arg
Summary: Small refactor

Reviewed By: mjesun

Differential Revision: D6884242

fbshipit-source-id: b811238c91b0e82d8b25420aa1b463f9d8293482
2018-02-05 01:16:56 -08:00
Peter van der Zee 23e4d7abae Prevent unnecessary deserialize/serialize of sourcemap
Summary: This prevents unnecessary JSON.stringify/JSON.parse when the operation is noop anyways.

Reviewed By: mjesun

Differential Revision: D6884246

fbshipit-source-id: 3370caac1e01cb79f86af95f0dd06285150c5d95
2018-02-05 01:16:56 -08:00
Rafael Oleza 79fd0b341e Allow to pass custom transformer parameters via the request url
Reviewed By: davidaurelio

Differential Revision: D6869137

fbshipit-source-id: a985b2df7e4fca308e62adaededc2ad0038d5373
2018-02-04 09:29:07 -08:00
Rafael Oleza cd23c579b5 Rename the require function name inside modules
Reviewed By: davidaurelio

Differential Revision: D6818774

fbshipit-source-id: ae67dccc07fa8c56be28d7b83e2f510d927e2345
2018-02-04 09:29:07 -08:00
Maël Nison 4c4eaeac8a Renames fetchMetroConfig into loadMetroConfig
Reviewed By: davidaurelio

Differential Revision: D6834104

fbshipit-source-id: fc8e9300dd43b2212c067595063fc2f98dbc8e3b
2018-02-02 05:20:49 -08:00
Maël Nison c020e40894 Removes projectRoots & enhanceMiddleware from the metro options
Reviewed By: davidaurelio

Differential Revision: D6834105

fbshipit-source-id: de7e2264c9902f098a641265e4f3a0aaa0a9100a
2018-02-02 05:20:49 -08:00
Maël Nison 2312bf2929 Uses findMetroConfig and fetchMetroConfig in the internal RN cli
Reviewed By: davidaurelio

Differential Revision: D6819226

fbshipit-source-id: 6436855cc5dce9ce7922d89df99c3cb90abb095e
2018-02-02 05:20:48 -08:00
Maël Nison a620cf05d1 Plugs the metro runServer function into the internal CLI
Reviewed By: rafeca

Differential Revision: D6797531

fbshipit-source-id: 52dab36749c84274d7b70666ee9359afb8cac31e
2018-02-02 05:20:48 -08:00
Peter van der Zee d23c3ca10b Rename `Ast` to a more appropriate `BabelNode` in the babel flow type
Summary:
An Ast consists of `Node` elements and the one Babel uses is specific to Babel (incompatible with Astree spec by default) so `BabelNode` seems more appropriate.

Keeping the other `ast` names for now to reduce the footprint of this diff.

Also makes sure `babel-core` properly exports the same node type as what the api returns making fixes to this type in the future easier to implement.

Reviewed By: davidaurelio

Differential Revision: D6834291

fbshipit-source-id: 4cb0eb2ee280a4988071b8412539edfad12cf56f
2018-02-01 03:23:50 -08:00
Peter van der Zee 7fcff0a976 Small refactor
Summary: This test can be simplified.

Reviewed By: davidaurelio

Differential Revision: D6834289

fbshipit-source-id: 23072230ce844c39b5fba30cfe7ad51e5a879bed
2018-02-01 03:01:44 -08:00
Peter van der Zee bd345427a8 Use the new `sync` versions of `translate` from babel core
Reviewed By: davidaurelio

Differential Revision: D6834295

fbshipit-source-id: 3a954d9c7b62042e15fbbfa428fde4fc81158247
2018-01-31 08:15:16 -08:00
Peter van der Zee 45be0395ce Use Babel 7 when building packages
Reviewed By: davidaurelio

Differential Revision: D6834296

fbshipit-source-id: 177c0ff41145961d8debe623eac3fbd2ca0919bf
2018-01-31 08:15:16 -08:00
Peter van der Zee 9ac44657bc Add Babel 7 packages to metro (only)
Reviewed By: davidaurelio

Differential Revision: D6834293

fbshipit-source-id: 8375f6ff770673e47770b5af19bb50bb6faf0914
2018-01-31 08:15:16 -08:00
Bhuwan Khattar 1ddb0227ff Pass hasteImplModulePath to JestHasteMap and everywhere else
Reviewed By: jeanlauliac

Differential Revision: D6641294

fbshipit-source-id: 36ebec95e69fe920c6cc10addd96406521cb4b82
2018-01-30 11:26:52 -08:00
Peter van der Zee 448c85014c Add babel bridge to switch easily between 6 and 7
Summary:
This bridge pulls in the various babel things and exports them again.

In a future update this bridge will also pull in babel 7 versions of the same thing and an env var will determine which sources to use so you can switch between using babel 6 or 7 through ENV.

Reviewed By: davidaurelio

Differential Revision: D6844862

fbshipit-source-id: 610a60eaf7bf368eddcd015e37f228651e2fd78b
2018-01-30 07:34:51 -08:00
Peter van der Zee f9dc29afbc Fix missing `Ast` flow type
Summary: The type was not imported and this escaped the attention of Flow somehow.

Reviewed By: davidaurelio

Differential Revision: D6834292

fbshipit-source-id: 8a9b5f2ac56fca2d0ff298b52f54935327eb2686
2018-01-30 04:43:54 -08:00
Peter van der Zee 51cb4df06f Fix missing `Ast` flow type
Summary: The type was not imported and this escaped the attention of Flow somehow.

Reviewed By: davidaurelio

Differential Revision: D6834298

fbshipit-source-id: 96f754d5aae9fda661cb18bbbb30ccfd033598a1
2018-01-30 04:43:54 -08:00
Jean Lauliac 4b7371d732 metro: collectDependencies: do not hardwire dependency on asyncRequire
Reviewed By: rafeca

Differential Revision: D6773002

fbshipit-source-id: a55b63f6bf20f467496ffe1d18c663b87f5d7ba6
2018-01-29 08:56:53 -08:00
Rafael Oleza 47519ec56b Bump metro@0.24.7
Summary: Releasing a new version of metro with an executable CLI

Reviewed By: davidaurelio

Differential Revision: D6808207

fbshipit-source-id: 68f6522924ea8ad7b6f9aaa3e952ebcf23d2cf8b
2018-01-25 09:30:07 -08:00
Rafael Oleza af15faa397 Add shebang to metro cli
Summary: To be able to run the metro CLI directly (for example via `yarn run`) we need to add the shebang pointing to the nodejs binary

Reviewed By: davidaurelio

Differential Revision: D6808095

fbshipit-source-id: 89628c07a92266432a404b6bc26eaa412d7859b9
2018-01-25 09:01:59 -08:00
Peter van der Zee 4cf7b69527 Remove the full lodash dep from Metro
Reviewed By: davidaurelio

Differential Revision: D6783736

fbshipit-source-id: 8fee6cbc340a0a0c9b81a825688817d28d1be8f1
2018-01-23 08:28:38 -08:00
Peter van der Zee 8097f8d6e5 Use lodash.throttle instead of lodash/throttle to prevent requiring the whole lodash lib
Reviewed By: jeanlauliac

Differential Revision: D6774508

fbshipit-source-id: bc06adda862a3ac2eb4499d941a99a03a5928952
2018-01-23 01:44:11 -08:00
Rafael Oleza 51c38629df Make the React Native HMR client extend from the generic metro HMR client
Reviewed By: BYK

Differential Revision: D6752278

fbshipit-source-id: 5c93cba3e9f3cee2119cb90a711909e0b4a5b835
2018-01-22 10:26:53 -08:00
Jean Lauliac 59515d058c metro-buck: add control modules
Reviewed By: davidaurelio

Differential Revision: D6738569

fbshipit-source-id: 4f4c7310bf9ec389c075ed6b93a6ff819bf84519
2018-01-22 03:20:35 -08:00
Rafael Oleza 13ba5516d1 Bump metro@0.24.6
Reviewed By: arcanis, cpojer

Differential Revision: D6761110

fbshipit-source-id: b23536d639ed9e963893ef784c93aa0c6ab452a4
2018-01-19 11:36:19 -08:00
Rafael Oleza 19e52ee233 Add workaround to make metro not fail when being run with RN 0.52
Reviewed By: BYK, cpojer

Differential Revision: D6760980

fbshipit-source-id: 78fa75a74391baf18fc5615ef218facc65bc23d1
2018-01-19 11:36:19 -08:00
Rafael Oleza 350e9e4a7e Bump metro@0.24.5
Reviewed By: BYK

Differential Revision: D6759031

fbshipit-source-id: b6ba1e2da77b944c8c73d229749f84d9c16035c7
2018-01-19 08:24:22 -08:00
Rafael Oleza b5d123a99c Add generic HMR Client to metro
Reviewed By: BYK

Differential Revision: D6752277

fbshipit-source-id: 9d5e9e16e7d848fd12454136c6ff10a0a4fa3ae1
2018-01-19 08:24:18 -08:00
Rafael Oleza 429b91c382 Allow to attach the HMR server to an external http server
Reviewed By: BYK

Differential Revision: D6752279

fbshipit-source-id: 250255a3b1226f8aab6054e507cb3910cdcd6a85
2018-01-19 08:24:17 -08:00
Jean Lauliac 46545d4f5c metro: allow dynamic dependencies from within node_modules
Summary: Tries to adress https://github.com/facebook/metro/issues/65. We need a reasonnable workaround to support modules like `moment.js` that do dynamic requires but only in some cases. By replacing the call by a function that throws, we move the exception at runtime instead of happening at compile time. We don't want to do that for non-node_modules file because they are fixable directly, while `node_modules` are not fixable by people and they get completely blocked by the error at compile time.

Reviewed By: rafeca

Differential Revision: D6736989

fbshipit-source-id: a6e1fd9b56fa83907400884efd8f8594018b7c37
2018-01-18 08:15:53 -08:00
Rafael Oleza 40497ee118 Make the FBGlobalTransformCache-test independent from folder structure
Reviewed By: jeanlauliac

Differential Revision: D6738154

fbshipit-source-id: 65f0c7ba11b9ddf0e7614ab9158c2bcf0e0352ac
2018-01-18 03:59:10 -08:00
Rafael Oleza cfb6174c25 Tweak test that calculates the transform cache key to be more consistent
Reviewed By: davidaurelio

Differential Revision: D6736754

fbshipit-source-id: 1a4c9dc1e5df0c7fa069148b87ed63caac949321
2018-01-17 08:14:22 -08:00
Miguel Jimenez Esun e84f33bd9c Update Jest to 22.1.2
Differential Revision: D6736758

fbshipit-source-id: fd6905e41abd1545b4847ad8ee6c12c7e5ce246e
2018-01-17 07:58:28 -08:00
Rafael Oleza f61ba53f73 Fix lint warnings
Reviewed By: davidaurelio

Differential Revision: D6736768

fbshipit-source-id: 7272118c2320edd688e6ce6450aeada3309d620f
2018-01-17 07:29:53 -08:00
Peter van der Zee 4ac601694a Consolidate the defaulting of options
Reviewed By: davidaurelio

Differential Revision: D6736170

fbshipit-source-id: 3b08279cc8a8022e1cb9cceea9665f30b9575cde
2018-01-17 04:20:33 -08:00
Peter van der Zee 329cfb4ee0 Remove lodash dep
Reviewed By: davidaurelio

Differential Revision: D6736155

fbshipit-source-id: 3a9785ecc887f7b49ab3c2ac36b25ea458b1d783
2018-01-17 04:20:33 -08:00
Rafael Oleza eaa4331d70 Add ws dependency
Reviewed By: cpojer

Differential Revision: D6733857

fbshipit-source-id: fff18fcd02a3115a4b65f0c65441f8758338b272
2018-01-17 03:36:22 -08:00
Rafael Oleza afb9b8488d Upgrade connect dependency
Reviewed By: cpojer

Differential Revision: D6732727

fbshipit-source-id: 80181ef184c90e3312789579034d70e2c3bcbf98
2018-01-17 03:36:22 -08:00
James Ide bb93e339fa Use `error.message` to set the `description` property of a nested error payload
Summary:
Depends on #124.

 ---

**Summary**
Metro reports errors using a JSON payload that has an `errors` array. Each item in this array has a `description` field. For transform errors, this field was set using the value in `error.description` -- however, JS Error objects only have a `message` field. (Grepping the Metro code, no errors (except in one test) ever get a `description` field.) This commit uses `error.message` instead of `error.description` when creating JSON payloads.

```
$ git grep description -- 'packages/**/*.js'
packages/metro/src/JSTransformer/__tests__/Transformer-test.js:        babelError.description = message;
packages/metro/src/lib/formatBundlingError.js:    description: string,
packages/metro/src/lib/formatBundlingError.js:): {type: string, message: string, errors: Array<{description: string}>} {
packages/metro/src/lib/formatBundlingError.js:      errors: [{description: message}],
packages/metro/src/lib/formatBundlingError.js:        description: error.message,
packages/metro/src/node-haste/__tests__/Module-test.js:  description: "A require('foo') story",
```

**Test Plan**
Added a unit test to check that the description field is set for transform errors (with the delta bundler).

Also in a test RN app, inspected the error payload that is received by RN when there's a syntax error with HMR turned on and verified that `data.body.errors[0].description` was set.
Closes https://github.com/facebook/metro/pull/125

Differential Revision: D6730671

Pulled By: rafeca

fbshipit-source-id: 58311462db9223d65580d77748203d8ea0ea1ac7
2018-01-16 17:14:32 -08:00
James Ide b7248380a6 Fix RN redbox messages for syntax errors by including error messages in payload
Summary:
**Summary**
With RN 0.52, when there was a redbox due to a syntax error in a source file (with regular, non-delta bundler), the redbox would say just "No message provided". The JSON that Metro sent to RN did not include a "message" field because `JSON.stringify(error)` does not include `message`.

**Test Plan**
Add a syntax error to one of the files in RNTester's JS and load the RNTester app (from RN master). See that the redbox now says there was a transform error with the syntax error's location.

Also tested adding a syntax error with HMR enabled and saw that the error `message` field was set in the payload as expected.

Also added a Jest test to Server-test.js.
Closes https://github.com/facebook/metro/pull/124

Differential Revision: D6728310

Pulled By: rafeca

fbshipit-source-id: 9ee3c113767d8c2849bcaac0cb8a9cfa8f2760a6
2018-01-16 17:14:32 -08:00
Rafael Oleza 3c3d95fb15 Make the global cache logic aware of the assetDataPlugins transform option
Reviewed By: jeanlauliac

Differential Revision: D6727589

fbshipit-source-id: d15fb501c7b1cd64c5fb494523a9154322a63dc6
2018-01-16 10:29:16 -08:00
Jean Lauliac dfcaa30f26 metro: break jest-haste-map cache
Reviewed By: cpojer, mjesun

Differential Revision: D6728279

fbshipit-source-id: ef26c6a295626adb6ff6272b308110fd00b096e2
2018-01-16 10:29:15 -08:00
Miguel Jimenez Esun cc7ceebaff Bind files to workers
Reviewed By: davidaurelio

Differential Revision: D6284120

fbshipit-source-id: f674214fbbc2f2463e0180c5dae45ace7f9c1563
2018-01-16 03:34:42 -08:00
Jean Lauliac 69ae428091 metro-buck: get rid of unecessary createBuildSetup
Reviewed By: mjesun

Differential Revision: D6712304

fbshipit-source-id: b720ff00a329b7dd4629751973f102e9b2034e2c
2018-01-16 03:34:42 -08:00
John Knox 826d68d4f5 Add tests for getRemoteFileMap
Reviewed By: mjesun

Differential Revision: D6711831

fbshipit-source-id: e5323e35a86ae03a8acee8c8d9e389218315d46f
2018-01-16 02:40:34 -08:00
Peter van der Zee 333182363a Add @flow to bunch of (mostly test-) files that trivially pass
Reviewed By: rafeca

Differential Revision: D6712326

fbshipit-source-id: 44ef8506664f92a34f8e3ca124bd6167a20fbade
2018-01-15 05:36:55 -08:00
Rafael Oleza a0d15e0d25 Add lodash as a dependency of metro-core
Reviewed By: mjesun

Differential Revision: D6722187

fbshipit-source-id: ae71df127e0cf3d6a74163b130dd09acaaf9f6ab
2018-01-15 04:58:35 -08:00
Adam Ernst 2e34f6f9a8 Add a flush() function to Terminal
Reviewed By: yungsters

Differential Revision: D6713011

fbshipit-source-id: 05afd49e4099301124d83e1b345d7b40a9c84c73
2018-01-12 13:03:39 -08:00
Rafael Oleza 5d3581e795 Bump metro to v0.24.4
Reviewed By: mjesun

Differential Revision: D6711855

fbshipit-source-id: 88192d22a8b50f16ad329b6dfdb7c5da24b2ce9e
2018-01-12 09:18:09 -08:00
Rafael Oleza 81a500cd67 Tweak default transformer to do some very minimal babel transformation
Reviewed By: jeanlauliac

Differential Revision: D6711526

fbshipit-source-id: 03c6aea85fb6d13e92e458a46bf4a3db1268aa11
2018-01-12 07:44:51 -08:00
Maël Nison 1cad201448 Exposes HMR through the Metro API
Reviewed By: rafeca

Differential Revision: D6692912

fbshipit-source-id: 6f119170c40fb99bf2cad83d00edba91bcbbe1c9
2018-01-12 07:28:47 -08:00
Maël Nison cfe3670a07 Makes js1 run use the builtin Metro CLI
Reviewed By: rafeca

Differential Revision: D6510003

fbshipit-source-id: c0593c71a4b5c236b3e2e91c31f8a7c87bd83e42
2018-01-12 07:28:47 -08:00
James Ide da2fdba240 Add back support for the assetPlugin option
Summary:
**Summary**
Metro used to have support for "asset plugins", which allowed developers to specify arbitrary JS modules that could export a function for adding more fields to asset data objects. Some of this functionality was removed in the delta bundler work -- this PR adds it back.

**Test plan**
Made existing unit tests pass and added unit tests to test asset plugin behavior. Also tested E2E in a React Native project by adding `assetPlugin=/path/to/pluginModule` to a JS bundle URL and ensuring that the plugin ran.
Closes https://github.com/facebook/metro/pull/118

Differential Revision: D6711094

Pulled By: rafeca

fbshipit-source-id: f42c54cfd11bac5103194f85083084eef25fa3cd
2018-01-12 06:01:43 -08:00
Peter van der Zee 1152a69432 Fold modulegraphs sourcemap file into metro-source-map
Reviewed By: rafeca

Differential Revision: D6711210

fbshipit-source-id: 1d91df189607c032045f604df75b119a87794ca6
2018-01-12 05:34:01 -08:00
Peter van der Zee 199b51892b Drop redundant type re-export
Reviewed By: mjesun

Differential Revision: D6711235

fbshipit-source-id: 0e5cb6c22ba4000589f8b97dcfb340297aea5a41
2018-01-12 04:51:23 -08:00
Peter van der Zee fe443193c3 Remove double @format
Reviewed By: rafeca

Differential Revision: D6711182

fbshipit-source-id: 30c61d42900cc6c2471827d560f05d0140dd8721
2018-01-12 04:51:23 -08:00
Jean Lauliac 0151519a42 metro-buck: do not transform non-source files
Reviewed By: davidaurelio

Differential Revision: D6666127

fbshipit-source-id: ba20664da81361fadb8119bfeb858c70a7500c14
2018-01-12 04:51:23 -08:00
Peter van der Zee 1687f3766e Flow cleanup
Reviewed By: mjesun

Differential Revision: D6702877

fbshipit-source-id: ddb6c508f4a408316aef19d69b3a73c8744d5355
2018-01-12 04:23:40 -08:00
Peter van der Zee a05eb11cab Stop using `as SourceMap` and just use `MetroSourceMap` instead
Reviewed By: rafeca

Differential Revision: D6702882

fbshipit-source-id: ef4a58569719bd8aeb8f1869943929c255f89595
2018-01-12 04:23:40 -08:00
Peter van der Zee 4697ecf120 Get rid of the "unknown" source-map raw mapping type, use "segments" instead of "raw"
Reviewed By: mjesun

Differential Revision: D6702883

fbshipit-source-id: def36c719eabbcd443b0c643b760a87781977a45
2018-01-12 04:23:40 -08:00
Peter van der Zee 5c2fb8d327 Rename functions to clarify output
Reviewed By: mjesun

Differential Revision: D6702879

fbshipit-source-id: 23daa9027425c2dd1d020eae9873bab092fff573
2018-01-12 04:23:40 -08:00
Peter van der Zee 4403f81102 Rename `BabelRawMapping` to `BabelSourceMapSegment`
Reviewed By: mjesun

Differential Revision: D6702880

fbshipit-source-id: 4c800ef9571bcfed6f3ed8e39d0002a94bd9190f
2018-01-12 04:23:40 -08:00
Peter van der Zee 4cf85b278f Rename `RawMapping` to `MetroSourceMapSegmentTuple`
Reviewed By: mjesun

Differential Revision: D6702878

fbshipit-source-id: d6063e2f356d24c91ff87760fa90bf909d49f98e
2018-01-12 01:28:39 -08:00
Peter van der Zee 01ab028d4f Clean up mapping types
Reviewed By: mjesun

Differential Revision: D6702876

fbshipit-source-id: 5a19ba033016e14b6aaa919ef838e32ed35748c7
2018-01-11 15:30:06 -08:00
Jean Lauliac 67385d8e4a metro: do not override process.env completely in prelude
Summary: This changeset tweaks the prelude so as to avoid overriding `process.env` if it already exists, and add tests to verify this behavior. This is useful when a bundle is loaded in a context that already provides a global `process` somehow, ex. Electron/Node.js. We still do want to override `NODE_ENV` in that case so as to have consistency with constant inlining.

Reviewed By: rafeca

Differential Revision: D6702441

fbshipit-source-id: 69dd9ba2303a43db151cbe1877f01e38d45b05b9
2018-01-11 10:01:28 -08:00
Jean Lauliac 325a216442 metro, metro-buck: unify prelude code
Reviewed By: rafeca

Differential Revision: D6692449

fbshipit-source-id: 21434de55d076bcb020e156212c26b6bc72e437c
2018-01-11 04:59:24 -08:00
Peter van der Zee 3ee6e5bfb5 Bringing clarity to the Mapping types
Reviewed By: rafeca

Differential Revision: D6702118

fbshipit-source-id: 0fc99454713042117ce41ddfe1d3f84c95265d74
2018-01-11 04:28:49 -08:00
Miguel Jimenez Esun ca525f0e8d Upgrade Jest to 22.0.5
Reviewed By: rafeca

Differential Revision: D6684639

fbshipit-source-id: 3fe7772451377619f93b48b1d7f79462a7a85ddc
2018-01-10 08:58:23 -08:00
Peter van der Zee d6feb5a89a Moving source map stuff into its own package
Reviewed By: rafeca

Differential Revision: D6692262

fbshipit-source-id: 7476ec4c8ea45eaea6c19f410e98650ce7eb0acb
2018-01-10 07:43:58 -08:00
Jean Lauliac 997be549aa metro: ModuleResolution: only throw error at top-level
Summary: Next step would be to move the error handling out of this module so that we don't depend on `TModule` at all anymore. Once this is done, the module can be extracted as `metro-resolve`, and we can potentially reuse it for jest, etc.

Reviewed By: davidaurelio

Differential Revision: D6660540

fbshipit-source-id: dd0612bec6b526f9ab52cc2e162b6977e2b1670f
2018-01-10 03:37:40 -08:00
Rafael Oleza 2ab9c268b1 Move preludes and require.js files to lib folder
Reviewed By: jeanlauliac

Differential Revision: D6674423

fbshipit-source-id: e459e7e8c58b2282b8d341cf7a2d71429e7b7081
2018-01-09 18:14:47 -08:00
Rafael Oleza bdaddb2585 Remove Resolver module
Reviewed By: jeanlauliac

Differential Revision: D6674419

fbshipit-source-id: 75cd9dbbc90725850ce23b62c9c8c50922145dd3
2018-01-09 18:14:47 -08:00
Rafael Oleza a5b0f236e4 Move module minification logic to Bundler
Reviewed By: jeanlauliac

Differential Revision: D6674420

fbshipit-source-id: ee552812437da731f419871cfca9ae930fa8f6a9
2018-01-09 18:14:47 -08:00
Rafael Oleza eb489bf105 Remove logic to calculate polyfills from Resolver
Reviewed By: jeanlauliac

Differential Revision: D6674424

fbshipit-source-id: 20c0ace056150c1f6910edc7eadf8effb9ddf38d
2018-01-09 18:14:47 -08:00
Rafael Oleza fbe441febd Extract the logic to calculate the transform key to a separate module
Reviewed By: jeanlauliac

Differential Revision: D6674422

fbshipit-source-id: 1a439e2afe041084edd27637fb9b177980e667a1
2018-01-09 18:14:47 -08:00
Peter van der Zee 8815c8329d Fix Flow type for babel-generator
Reviewed By: rafeca

Differential Revision: D6682632

fbshipit-source-id: befc2fe51c8e3b542b0f2b8b595ed78b39bd1801
2018-01-09 04:03:36 -08:00
glevi@fb.com 1b37017eb1 @allow-large-files [Flow] Upgrade xplat/js to flow v0.63
Reviewed By: samwgoldman

Differential Revision: D6675320

fbshipit-source-id: 85575a6f30a50a3c40c6b46ba36f8cd33c091b1d
2018-01-08 12:54:34 -08:00
Jean Lauliac 521653798f metro, metro-buck: preprend NODE_ENV variable to bundles
Reviewed By: rafeca

Differential Revision: D6674216

fbshipit-source-id: ca0d17f679eb8fb8dd4c50192836faaf02d1aba8
2018-01-08 10:59:42 -08:00
Rafael Oleza 058336f3b6 Make the public metro runBuild() command generate the sourcemaps
Reviewed By: davidaurelio

Differential Revision: D6666140

fbshipit-source-id: f49e0fdc848a4cec095c808887f5e999d86c104a
2018-01-05 09:40:27 -08:00
Rafael Oleza f5198ad15f Delta Calculator: handle files that have been added from one side and deleted from another
Reviewed By: davidaurelio

Differential Revision: D6665792

fbshipit-source-id: fa8f241bdfc88d77f5662c31796b0644988187cd
2018-01-05 08:15:43 -08:00
Rafael Oleza de77f0340b Remove unused generateSourcemaps param
Reviewed By: jeanlauliac

Differential Revision: D6666060

fbshipit-source-id: e7786b3ed851f4952108ea80f96334f0fb25b034
2018-01-05 07:21:17 -08:00
Rafael Oleza c4d319429c Small flow tweaks in metro api
Reviewed By: jeanlauliac

Differential Revision: D6666057

fbshipit-source-id: 6f0b56fcb531e8c7a10c782342291b35399cac2b
2018-01-05 07:21:17 -08:00
Ville Immonen dad6c51f2a Fix out of memory error in projects with a lot of assets
Summary:
**Summary**

Metro crashed with "Allocation failed - JavaScript heap out of memory" when trying to build a project with a lot of assets. (Repro: https://github.com/fson/metro-out-of-memory, `yarn start` and open the app.)

By looking at a heap snapshot, I found out the reason was that `node-haste` was reading the contents of asset files and parsing them in search of the `providesModule` docblock field, although it should only do this for source files. I fixed this by checking that `isHaste()` evaluates to `true` before attempting to read the docblock. (`AssetModule` always returns `false` for `isHaste()`.)

**Test plan**

* Ran the [repro](https://github.com/fson/metro-out-of-memory) before the fix. It crashed with `FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory`
  * Heap snapshot: <img width="1440" alt="screen shot 2018-01-03 at 17 31 53" src="https://user-images.githubusercontent.com/497214/34571809-33ee8dfc-f178-11e7-93f9-3fd80e62c188.png">
* After implementing the fix, ensured that the process didn't crash anymore and the heap didn't grow significantly during the build:
![screen shot 2018-01-04 at 17 39 26](https://user-images.githubusercontent.com/497214/34571848-622818aa-f178-11e7-9972-9f54146a83ee.png)
Closes https://github.com/facebook/metro/pull/112

Reviewed By: jeanlauliac

Differential Revision: D6660719

Pulled By: rafeca

fbshipit-source-id: d4d8d4445e75274c65f6a52027d878041f1c9a33
2018-01-05 04:29:32 -08:00
Rafael Oleza 8640847e47 Do not include assets source code in the sourcemaps
Summary:
As reported in https://github.com/facebook/metro/issues/109, the sourcemaps generated by metro are including the binary data of all the assets, which adds a lot of overhead and is not useful at all.

This commit removes the assets contents from the sourcemaps to fix https://github.com/facebook/metro/issues/109

Reviewed By: jeanlauliac

Differential Revision: D6649741

fbshipit-source-id: 8b09d429a1aa8d487557c22440bfa73ae55d03bd
2018-01-03 04:31:36 -08:00
Jean Lauliac dd16d7427a ModuleResolution: extract resolveHasteName function
Summary: Finally we can extract this function out, that remove any remaining dependency on the `TModule` generics and the like. Next steps are to push Metro-specific concepts out of the `resolveDependency` function and out of the module completely, after which the module will be ready to have its own unit tests, and be split into a `metro-resolve`.

Reviewed By: cpojer

Differential Revision: D6645333

fbshipit-source-id: a7915d646f888c29b410bf211f2e2bc4ec157676
2018-01-02 03:13:47 -08:00
Jean Lauliac 7cab9a02c9 ModuleResolution: switch _resolveHasteDependency to non-throwing resolveFileOrDir()
Summary: This changeset alters the Haste resolution logic to be in sync with the new refactored pieces (resolveFile, etc.) Next steps involve extracting this function outside of the class so as to reduce the surface API and promote composability.

Reviewed By: cpojer

Differential Revision: D6645302

fbshipit-source-id: 6ee00fb52025cc0d332e57f837b46e8323faf6f4
2017-12-29 08:58:38 -08:00
Jean Lauliac af1e6e3298 ModuleResolution: move InvalidPackageError handler one level up
Summary: In a further diff, I'll add cases where this error may be thrown at a higher level than the `resolveFileOrDir` function. So we need to move the handler and wrapping logic up the stack, that doesn't have any difference in practice.

Reviewed By: cpojer

Differential Revision: D6642475

fbshipit-source-id: 6b746386a170bfc167a9b50d9786fbb98c920c6d
2017-12-29 04:45:07 -08:00
Jean Lauliac 86eb9680ac ModuleResolution: integrate Haste resolution as part of the overall resolution logic
Summary:
This is part of the efforts to clean up and extract the resolution logic. In this diff, the haste resolution is moved as part of the main resolution function rather than having 2 separate top-level functions. The reason for doing this is that logic is duplicated otherwise, making the already complex code harder to follow still. An example of duplicated logic is the call to `isRelativeImport`, that is done both in ResolutionRequest and ModuleResolution's node resolver. In that case, we never want to use Haste. Another duplication is the redirect of requires of package/haste names. With this changeset it is done in a single place at the beginning of the algo.

This changeset causes slight changes in behaviors. For example, consider `require('Foo/')`. A lookup of `Foo` would be done in the package `browser` field for a potential redirect. With this new code, we'll only look for `Foo/` in the redirect map. My opinion is that this is for the better, as this uniformize the way it works with Node.js `node_module` packages, making resolution more predictable. We should, additionally, actively strive to get rid of trailing slashes anywhere they might be in RN as they bring no apparent technical feature, but more confusion (I might be missing context, naturally).

Next steps will be to clean up `_resolveHasteDependency` completely, removing the callsite `try..catch` in favor of saner conditionals, and enforcing Haste packages to resolve if they exist (right now if a Haste package is found but corrupted, we just continue merrily trying to resolve the module with the rest of the logic; we should hash-crash instead, same as has been done for `resolvePackage`).

Reviewed By: cpojer

Differential Revision: D6642347

fbshipit-source-id: 2f40575b35916b644f342e0267c465a89bee202c
2017-12-29 04:45:07 -08:00