turbopack_ecmascript/chunk/
data.rs1use serde::Serialize;
2use turbo_tasks::ReadRef;
3use turbopack_core::chunk::{ChunkData, ModuleId};
4
5#[derive(Serialize, Hash, PartialEq, Eq)]
6#[serde(untagged)]
7pub enum EcmascriptChunkData<'a> {
8 Simple(&'a str),
9 #[serde(rename_all = "camelCase")]
10 WithRuntimeInfo {
11 path: &'a str,
12 #[serde(skip_serializing_if = "<[_]>::is_empty", default)]
13 included: &'a [ReadRef<ModuleId>],
14 #[serde(skip_serializing_if = "<[_]>::is_empty", default)]
15 excluded: &'a [ReadRef<ModuleId>],
16 #[serde(skip_serializing_if = "<[_]>::is_empty", default)]
17 module_chunks: &'a [String],
18 },
19}
20
21impl EcmascriptChunkData<'_> {
22 pub fn new(chunk_data: &ChunkData) -> EcmascriptChunkData {
23 let ChunkData {
24 path,
25 included,
26 excluded,
27 module_chunks,
28 references: _,
29 } = chunk_data;
30 if included.is_empty() && excluded.is_empty() && module_chunks.is_empty() {
31 return EcmascriptChunkData::Simple(path);
32 }
33 EcmascriptChunkData::WithRuntimeInfo {
34 path,
35 included,
36 excluded,
37 module_chunks,
38 }
39 }
40}