Commit Graph
60 Commits
Author SHA1 Message Date
Christoph Pojer 57bb955ba1 Move remaining Metro Bundler files around.
Reviewed By: jeanlauliac

Differential Revision: D5154653

fbshipit-source-id: 482bf9829263d5d8f3d0b951ee58e2020236cc2c
2017-05-31 11:17:41 -07:00
Christoph Pojer 414da08a80 Stop requiring setupBabel from within packager/ folder.
Reviewed By: davidaurelio

Differential Revision: D5137246

fbshipit-source-id: 3072aaa6fd74a135980f1f0a7b078a82dd85f09d
2017-05-30 04:46:08 -07:00
David Aurelio f91e376515 Fix code generation for indexed RAM bundles
Summary:
Code generation for indexed RAM bundles did not append module ID and dependencies. This fixes that.

Eventually, we only want to have the call to `addModuleIdsToModuleWrapper` in one place.

Reviewed By: jeanlauliac

Differential Revision: D5129255

fbshipit-source-id: 7f6148dd607bbf7c97e9df7936a07bde3f05b3aa
2017-05-25 10:15:51 -07:00
David Aurelio aa02d19db7 Allow RAM bundle output
Summary: Hooks up indexed RAM bundle output for the build.

Reviewed By: jeanlauliac

Differential Revision: D5121515

fbshipit-source-id: 47a540d8ec016a36e21e1daa2876f582dbdb8504
2017-05-25 10:15:51 -07:00
David Aurelio bea7659762 Move packager core logic from local-cli to packager
Summary: Moves packager core logic to `packager/...` to prepare the open source split.

Reviewed By: cpojer

Differential Revision: D5116162

fbshipit-source-id: 06ee2406026686789f67acc88df41773866c3cd3
2017-05-24 08:06:10 -07:00
David Aurelio aec7b34e50 Add support for RAM bundle groups
Summary: Adds support for “RAM bundle groups” (common section for module groups) to the new Buck integration

Reviewed By: jeanlauliac

Differential Revision: D5112065

fbshipit-source-id: 038c06b8f4133c7fcd39aba8bb04a5ef42594f3e
2017-05-24 08:06:09 -07:00
David Aurelio 6b2122be13 Simplify File type: map is nullable, but not optional
Summary:
Simplifies the `File` type by making `map` a non-optional, but nullable property.
Also adds helper functions for empty/virtual modules

Reviewed By: jeanlauliac

Differential Revision: D5111580

fbshipit-source-id: 9cab6634a9bdb0522dc36aec2abccaef9cf35339
2017-05-23 10:31:27 -07:00
David Aurelio 918bae282b Create an OutputFn that can build indexed RAM bundles
Summary: Adds functionality to assemble an indexed source map to the new Buck integration. This implementation supports startup section optimisations. Hooking it up, and grouping optimisations will be in follow-ups.

Reviewed By: jeanlauliac

Differential Revision: D5106985

fbshipit-source-id: cc4c6ac8cfe4e718fc8bb2a8a93cb88914c92e0b
2017-05-23 10:31:27 -07:00
Christoph Pojer 4f980eedbd Add @format to a few files
Reviewed By: davidaurelio

Differential Revision: D5111297

fbshipit-source-id: bde11df412dd694edca78d6a61f4c69e5abba60a
2017-05-23 05:05:15 -07:00
Jean Lauliac bfc0e8c26f packager: add preprocess for buck worker
Summary: For the Buck integration (work-in-progress), we want to add the ability to do some custom preprocessing similar to the packager server. The signature is different so I prefer to have a separate function for that. Also we don't need the transform options right now, I suggest we don't add them for now and add them later if necessary.

Reviewed By: davidaurelio

Differential Revision: D5094632

fbshipit-source-id: 1775ddef90b331deabc5be3e57a67436bce06c82
2017-05-22 09:03:36 -07:00
David Aurelio 225c4c0a98 Change sourceMappingURL to line comment
Summary: Changes the `sourceMappingURL` comment from multi line to single line.

Reviewed By: johnislarry

Differential Revision: D5094791

fbshipit-source-id: f8fa2efd7f173290cac985564c06b4a118a80aae
2017-05-19 13:47:16 -07:00
David Aurelio 3f176008e8 Separate build modules from require calls when bundling
Summary: separates modules of the dependency graph from the generated require calls to kick of the app. This is required to make RAM bundle generation work properly'

Reviewed By: jeanlauliac

Differential Revision: D5094635

fbshipit-source-id: fca69a3e2d9b030cdc4d4405c2b5e795b0d55f87
2017-05-19 08:00:30 -07:00
David Aurelio 5ee4e63abf Call minification post-processing hook
Summary: RN configuration allows to specify a post-minify hook. This wasn’t called in the new Buck integration so far. Added here.

Reviewed By: cpojer

Differential Revision: D5087325

fbshipit-source-id: 74b58bd3a203716d8f01b5d7ba552b6ad1b575ce
2017-05-19 03:00:21 -07:00
Gabe Levi 3ddc7d47d5 Fix react-native function call arity errors
Reviewed By: zertosh

Differential Revision: D5081816

fbshipit-source-id: 5978770c30a69fb287d03aa7511999ce30f856a1
2017-05-18 16:55:55 -07:00
David Aurelio cce99f44fd Output .meta files for plain bundles
Summary: Outputs `.meta` files for plain text bundles just like “old packager” did.

Reviewed By: jeanlauliac, cpojer

Differential Revision: D5077649

fbshipit-source-id: eb87999dd899066adeb9756333adb4d79ce04832
2017-05-17 07:32:40 -07:00
Jean Lauliac 98fc4373fc packager: ResolutionRequest: unify asset resolution
Summary:
The existing resolution logic of assets:

* goes over all the files of the asset's directory for every resolution request;
* duplicates the parsing logic of `AssetPaths` by building up a custom regex for each resolution request.

This changeset proposes to tweak this by building an index for each particular directory in which we're looking for assets, so that we don't have to crawl a single directory twice, and so that it reuses the logic of `AssetPaths.tryParse()` for determining variants.

Reviewed By: davidaurelio

Differential Revision: D5062435

fbshipit-source-id: 708fc5612f57b14565499fad741701269438c806
2017-05-16 09:19:36 -07:00
David Aurelio 280ec6e1eb Append sourceMappingURL in bundle building function
Summary:
We appended a `sourceMappingURL` in the same place where we write out the files. This will break output that is not a plain text file, like Random Access Bundles.
This moves the corresponding logic into the function that builds the bundle.

Reviewed By: cpojer

Differential Revision: D5061039

fbshipit-source-id: 17fadb5a687c8d4b1f29439e8bf946bae58eb2d9
2017-05-16 05:16:28 -07:00
Jean Lauliac 4ae8e5e21a packager: HasteMap: @flow + fixes
Summary: Add Flow types, revealing a few problems, such as `isHaste` having the wrong return value in the "pseudo-mocks". But since the buck worker is in fact working, I guess these functions were never called... The point of typing this file is that I'm going to start aggressively pruning dead code in `node-haste` and hopefully, eventually, get rid of `Moduleish` and `Packageish`.

Reviewed By: davidaurelio

Differential Revision: D5052379

fbshipit-source-id: dab3f18f05fcf43fbbc48b589170b1cf367d6a48
2017-05-12 10:37:03 -07:00
David Aurelio e1306565db Use this rather than global in prelude
Summary: in new-style builds, the prelude is not wrapped into an IIFE, so `global` is not available. Since the bundle as a whole is not running in strict mode, we can access the global object with `this`.

Reviewed By: jeanlauliac

Differential Revision: D5051731

fbshipit-source-id: 4003b5e57ba8626e38e68e92d5778c2c59ca69a5
2017-05-12 09:46:04 -07:00
Jean Lauliac afe19d8ac5 packager: never allow platform-specific asset resolution
Summary: I stumbled on this while refactoring that function, and i realised that, I believe it doesn't make sense to take into account the platform extension of the "potiential" file path. The reason is, if you try to require "foo.ios.png", the returned asset name would be "foo", and thus we'd try to find "foo.${ext}.png" where `ext` could actually be `android` or anything else! So it's confusing. There's no reason we should allow callsites to specify platform anyway I think. With this changeset we're not losing any functionality, but it might require people to fix some incorrect callsites.

Reviewed By: cpojer

Differential Revision: D5051791

fbshipit-source-id: 2a1ec7a8bfa6791b6016213305a72bc0b81f23b9
2017-05-12 07:39:10 -07:00
David Aurelio 2fbe3b799e Pass local paths to transformers
Summary:
Pass `localPath` to transformers to allow usage of plugins like `transform-react-jsx-source` that don’t conflict with x-machine caches, e.g. Buck or our own global cache.
These caches don’t work properly if paths local to a specific machine are part of cached outputs.

Reviewed By: jeanlauliac

Differential Revision: D5044147

fbshipit-source-id: 1177afb48d6dd9351738fcd4da8f9f6357e25e81
2017-05-11 16:47:43 -07:00
David Aurelio 58337c9032 BREAKING: Pass parameters to transformer.transform as object
Reviewed By: jeanlauliac

Differential Revision: D5037155

fbshipit-source-id: fbd18bd62254d7e1522f659ea62055e66748a951
2017-05-11 08:35:07 -07:00
David Aurelio f1a220b3cf Fixes issues with uglify.js usage
Summary: Adds flow type defs for uglify, and fixes the two issues found

Reviewed By: jeanlauliac

Differential Revision: D5029190

fbshipit-source-id: eb5947b051844938da241e002b727edc1384e3a6
2017-05-10 05:16:06 -07:00
David Aurelio 73fc439bc0 Stronger typing for transformers
Reviewed By: jeanlauliac

Differential Revision: D5006679

fbshipit-source-id: 795c60db363fb53bc74697e4befe50995e9b97a7
2017-05-09 08:02:36 -07:00
Jean Lauliac 7d6fec0a39 packager: optimize assets' JS
Reviewed By: davidaurelio

Differential Revision: D5010186

fbshipit-source-id: 3c26d8b8792df1dbc24e5200f28f63e017cb0173
2017-05-08 11:31:20 -07:00
Jean Lauliac 2a5959ae6e packager: buck assets: wrap in __d
Reviewed By: davidaurelio

Differential Revision: D5003464

fbshipit-source-id: 59800dded389d133394b60530eb97642d67a5c89
2017-05-08 11:31:20 -07:00
Jean Lauliac e69b81313f packager: ModuleGraph: include all possible asset types
Summary: Afaik. the list of asset types is hardcoded for the Buck worker so far, and I'm not sure how that would be customizable. For now, let's include all the default asset extensions.

Reviewed By: davidaurelio

Differential Revision: D5002607

fbshipit-source-id: 41069e817d2b73156bca684bc2f73077132928a7
2017-05-08 11:31:20 -07:00
David Aurelio 1a0e78c4e4 Fix release / minified bundle builds
Summary: Fixes building release builds with the new buck integration.

Reviewed By: jeanlauliac

Differential Revision: D5002441

fbshipit-source-id: e7716324c7c8dd0bfcaf5b39cf716ac589e948e8
2017-05-04 08:31:10 -07:00
David Aurelio 11eef69936 Force 'default' transform variant to be present
Summary: Enforces a `'default'` property to be present on the transform variant mapping. This will allow us to simplify transforms of assets and json to only provide one variant for the new Buck build system.

Reviewed By: jeanlauliac

Differential Revision: D5002052

fbshipit-source-id: 2a7240c1b2450f62de686c46ab2c2e5a75dea399
2017-05-04 08:31:10 -07:00
Jean Lauliac 4a86f93982 packager: add support for relative files with custom extensions
Reviewed By: cpojer

Differential Revision: D4994139

fbshipit-source-id: 5e47c5bc6f8b2cd750f1ca0df940c23234c66600
2017-05-04 05:21:44 -07:00
David Aurelio 382e633f78 Make bundle building function async
Reviewed By: jeanlauliac

Differential Revision: D4993758

fbshipit-source-id: b466e0d8d494914357f38eac1a0ef3c2ec7d4edd
2017-05-03 13:19:01 -07:00
David Aurelio 7eb005b4df Fix paths of module system and polyfills
Reviewed By: cpojer

Differential Revision: D4993289

fbshipit-source-id: d689ed8921c0d07ce2c1301cef3f5a75ff3a6e15
2017-05-03 13:19:00 -07:00
Jean Lauliac 91ff2159d9 packager: buck worker: better types
Reviewed By: davidaurelio

Differential Revision: D4970025

fbshipit-source-id: 77db309befebe539d25bd8df1039e2304176ca3f
2017-05-02 03:55:28 -07:00
Jean Lauliac cf4a98b053 packager: buck worker: output assets
Reviewed By: davidaurelio

Differential Revision: D4962816

fbshipit-source-id: 4ce4eacb28528c96829ac35134aff18a72063370
2017-05-02 03:55:23 -07:00
David Aurelio a26e042784 Fix support for haste packages
Summary: Fixes support for haste packages in `ModuleGraph`. As `HasteMap` is no longer used for anything else, we can probably strip it down completely.

Reviewed By: cpojer

Differential Revision: D4967367

fbshipit-source-id: d40cbe46c1e8b05690c0a2c71955479c28607c01
2017-04-28 17:01:18 -07:00
David Aurelio 58ba7fc075 Unify source map types
Summary: deduplicates / unifies types for source maps across the code base

Reviewed By: jeanlauliac

Differential Revision: D4955924

fbshipit-source-id: 25cb71031dce835dd7d2bc1c27d6b20050906e81
2017-04-28 12:35:23 -07:00
Jean Lauliac 1f8d1002ef packager: buck library: expose asset content
Reviewed By: davidaurelio

Differential Revision: D4945778

fbshipit-source-id: ea132a3d284ed09c59c69afbdd7b707af9e521b9
2017-04-25 12:04:01 -07:00
Jean Lauliac b6a7a711de packager: buck library: aggregate assets
Reviewed By: davidaurelio

Differential Revision: D4938032

fbshipit-source-id: afc4f4f97b7cc513eca9c925e09fbee4871216f4
2017-04-24 09:34:41 -07:00
Jean Lauliac 2403b42cf9 packager: getAssetDataFromName: @flow
Reviewed By: davidaurelio

Differential Revision: D4921247

fbshipit-source-id: 47c516257cde5de6b69604d714e45310d00afe19
2017-04-20 07:35:15 -07:00
Jean Lauliac 79d9fd8f83 packager: correct transform for assets to avoid string
Reviewed By: davidaurelio

Differential Revision: D4913509

fbshipit-source-id: 9997da819483056d896fedecdc47510ecd381c03
2017-04-20 03:00:10 -07:00
Jean Lauliac 0b339362ff packager: buck: fix messed up file types
Reviewed By: cpojer

Differential Revision: D4913706

fbshipit-source-id: 792d78e1baf7d9bea4eba90f791a1dc593087b55
2017-04-19 08:51:14 -07:00
Jean Lauliac c6f5717d2b packager: ResolutionRequest: stronger option typing
Reviewed By: cpojer

Differential Revision: D4906382

fbshipit-source-id: 1696c3e7fe07c84a3a497740dc87a237d9b71d1e
2017-04-18 10:18:58 -07:00
Jean Lauliac 4ab4df07af packager: buck: transform-module: add support for assets
Reviewed By: davidaurelio

Differential Revision: D4868312

fbshipit-source-id: 44d20a5ed73637a9b3f43a99b5c82931f3e15dc6
2017-04-18 09:39:32 -07:00
Jean Lauliac 219328d000 packager: preprocess outdated dependencies
Summary:
Note: if this changeset causes some breakage, consider disabling rather than reverting. To disable, the call to `_preprocessPotentialDependencies` in `ResolutionRequest` can be removed.

It's a bit of an experiment. I couldn't see any particular regression caused by this, but I could see net improvement of the global cache performance, as it unlock much, much stronger batching: indeed, instead of discovering dependencies progressively, we synchronously figure out the list of all potential modules of a bundle, and kick-off cache fetching and/or transformations. So when it comes to fetching from the global cache, it'll do less requests, and each requests will ask for considerably more keys at a time.

Potential problem caused by this changeset: if a module's dependencies completely changed, then the first time we try to build the bundle it'll start transforming modules that we probably don't care at all anymore, spending precious CPU time for nothing. I've been thinking about it and I cannot see such a case happening much often. Even if it happens, it should not cause any bug or corruption, it would just take additional time.

Other potential problem: that this new code doesn't handle some types of edge cases. It's quite hard to figure out what could possibly break in the `ResolutionRequest` code (and I think it would benefit from a larger refactor). We do have a good test coverage for `DependencyGraph` and it seems to work smoothly, so I'm relatively confident we're not breaking edge cases.

Reviewed By: davidaurelio

Differential Revision: D4875467

fbshipit-source-id: 2dfcc755bec638d3d1c47862ec1de5220953e812
2017-04-13 10:31:30 -07:00
David Aurelio 7f706e824d Use exact types for options
Summary: Make option types exact to prevent stale options in our code base.

Reviewed By: jeanlauliac

Differential Revision: D4867773

fbshipit-source-id: 6aa06649735d6105f4b6ff2af7f699cf8ba336c7
2017-04-11 08:02:24 -07:00
David Aurelio eabc9cecd6 Push handling of missing parent module to resolve
Reviewed By: jeanlauliac

Differential Revision: D4863235

fbshipit-source-id: 857814cb25ee661db5e2cbdeac7175d9276044db
2017-04-11 08:02:23 -07:00
David Aurelio 3bcf4acfc7 Allow resolution without a parent.
Reviewed By: jeanlauliac

Differential Revision: D4862926

fbshipit-source-id: 18f98b6db98e9f937632bd5d00e0b0acfcff9de5
2017-04-11 08:02:23 -07:00
Jean Lauliac b2101836dc packager: index files by dir for fast matching
Summary: This removes the call to `HasteFS#matchFiles()`, that has linear complexity. Instead, we index all the files by directory from `HasteFS` once loaded, a linear operation. Then, we can filter files from a particular directory much quicker.

Reviewed By: davidaurelio

Differential Revision: D4826721

fbshipit-source-id: c31a0ed9a354dbc7f2dcd56179b859e491faa16c
2017-04-06 07:47:28 -07:00
Jean Lauliac 8755338728 packager: get rid of type any in ResolutionRequest
Summary:
One of my changeset broke the "ModuleGraph" code without warning earlier because we are using `any`, that equivalent to having no typing at all. This changeset fixes the types so that `ResolutionRequest` is exactly what it actually is: a class usable for any `Module`-looking class, including the normal one, and the "ModuleGraph" one used for Buck builds. That way, the ModuleGraph's `Module` is typechecked against `Moduleish`.

Concretely this change mostly migrates the `Module` to its generic parameter counterpart `TModule` inside `ResolutionRequest`.

Reviewed By: kentaromiura

Differential Revision: D4826256

fbshipit-source-id: fcd7ca08ac6c35e4e9ca983e2aab260e352bcb4e
2017-04-04 07:15:23 -07:00
David Aurelio a51e9a0704 Adapt interface of node-haste duplicates
Summary: Adapts mocked / duplicated functionality from `node-haste` to match the new synchronous return types in the original.

Reviewed By: jeanlauliac

Differential Revision: D4819137

fbshipit-source-id: 183316adc3fae161ad9999bf72bccb8218ef8941
2017-04-03 10:05:48 -07:00