turbopack_ecmascript/chunk/
data.rs1use 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}