Skip to main content

turbopack_ecmascript/chunk/
data.rs

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