turbopack_ecmascript/chunk/
data.rs

1use 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}