turbopack/module_options/
custom_module_type.rs1use turbo_tasks::Vc;
2use turbopack_core::{module::Module, resolve::ModulePart, source::Source};
3use turbopack_ecmascript::EcmascriptInputTransforms;
4
5use crate::ModuleAssetContext;
6
7#[turbo_tasks::value_trait]
8pub trait CustomModuleType {
9 #[turbo_tasks::function]
10 fn create_module(
11 self: Vc<Self>,
12 source: Vc<Box<dyn Source>>,
13 module_asset_context: Vc<ModuleAssetContext>,
14 part: Option<ModulePart>,
15 ) -> Vc<Box<dyn Module>>;
16
17 #[turbo_tasks::function]
18 fn extend_ecmascript_transforms(
19 self: Vc<Self>,
20 preprocess: Vc<EcmascriptInputTransforms>,
21 main: Vc<EcmascriptInputTransforms>,
22 postprocess: Vc<EcmascriptInputTransforms>,
23 ) -> Vc<Box<dyn CustomModuleType>>;
24}