turbopack/module_options/
custom_module_type.rs

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