Tags: sarvex/turbo
Tags
ChunkingContext refactor pt. 1 (vercel#4397) Next.js side: vercel/next.js#47693 ### Description This is part one of a larger ChunkingContext refactor. In this episode, we: 1. Move the runtime and evaluation code off of the entry JS chunk and into a dedicated chunk. This means that, within a chunk group, instead of having one chunk that contains modules + runtime code and chunks that only contain modules, we'll have chunks that only contain modules and one chunk that only contains runtime code. 2. Start a larger enterprise of differentiating between "intermediate" chunks (`ChunkVc`s), and "output" chunks (raw `AssetVc`s). Before, we used `EcmascriptChunkVc`s to represent both intermediate chunks that would never actually be created (optimized away) AND final chunks that would be served or written to disk. Now, `EcmascriptChunkVc`s are only intermediate assets, and `DevEcmascriptChunkVc`s are the final chunks. 3. Move a few modules from `turbopack-core` to `turbopack-dev`, as their existence (or the implementation) is only meaningful in a dev context (`ChunkList` and `Manifest*`, the latter of which depends on the chunk list for now). Things left to figure out: 1. What does the `Chunk` trait represent here? We no longer use `.chunking_context()`, and `.path()` is redundant with `Asset::path`. However, it no longer makes sense for `Chunk`s to be `Asset`s as their content is determined by the chunking context. Should we have two traits, one for intermediate chunks and one for output chunks? 2. Should `EvalutatedEntryVc` just be `ChunkableAssetVc`? We don't need *all* of the trait methods of either, just an ident and a way to convert to a chunk. The `Chunk` trait could look like this: ```rust trait Chunk { fn ident(&self) -> IdentVc; fn parallel_chunks(&self) -> ChunksVc; fn references(&self) -> AssetReferencesVc; } ``` Things that will happen in the next part(s): 1. The `ChunkGroupVc::evaluated` logic will move into `turbopack-dev`, as it doesn't make sense in a build context. This will essentially make `ChunkGroupVc` obsolete: the only thing we need it to do is to compute all parallel chunks, but I'm thinking this should be a method on the `Chunk` trait instead. Things I'll leave for future refactors: * Figure out the whole Input, Intermediate, and Output asset story. ### Testing Instructions Snapshots + Next integration tests fix WEB-815 ([link](https://linear.app/vercel/issue/WEB-815))
mark resolve issues inside a try block as warnings (vercel#4414) ### Description I also added source information to the resolve issues where possible fix WEB-633
fix HMR for streaming responses (vercel#4446) ### Description this adds HMR support for streaming responses --------- Co-authored-by: Alex Kirszenberg <alex.kirszenberg@vercel.com>
Add sub-package info to environment-variables.mdx (vercel#4406) Add info about accessing root level `.env` file from sub-packages. ### Description <!-- ✍️ Write a short summary of your work. If necessary, include relevant screenshots. --> ### Testing Instructions <!-- Give a quick description of steps to test your changes. --> --------- Co-authored-by: Anthony Shew <anthony.shew@vercel.com> Co-authored-by: Mehul Kar <mehul.kar@vercel.com>
feature(turborepo): `-F` as filter shorthand (vercel#4422) ### Description Closes vercel#4417. ### Testing Instructions Added tests for parsing `-F` to CLI parser tests
feature(turborepo): `-F` as filter shorthand (vercel#4422) ### Description Closes vercel#4417. ### Testing Instructions Added tests for parsing `-F` to CLI parser tests
feature(turborepo): `-F` as filter shorthand (vercel#4422) ### Description Closes vercel#4417. ### Testing Instructions Added tests for parsing `-F` to CLI parser tests
Use `SharedError` for body streaming (vercel#4392) Follow up to vercel#4329, this removes `BodyError` (which was just a simple `String` and not an `Error`) and switches to `SharedError`. I've implemented a basic `PartialEq` and `Serialization` for `SharedError` so that it doesn't infect everything that uses `Body`.