swc_node_bundler/v1/
resolve.rs1use std::{collections::HashMap, path::PathBuf};
2
3use serde::Deserialize;
4use swc_atoms::{atom, Atom};
5
6#[derive(Debug, Deserialize)]
8#[serde(rename = "Resolve", rename_all = "camelCase")]
9pub struct ResolveConfig {
10 #[serde(default)]
11 pub alias: Option<AliasConfig>,
12
13 #[serde(default)]
14 pub alias_fields: Vec<Atom>,
15
16 #[serde(default)]
17 pub description_files: Vec<Atom>,
18
19 #[serde(default)]
20 pub enforce_extension: bool,
21
22 #[serde(default = "default_extensions")]
23 pub extensions: Vec<Atom>,
24
25 #[serde(default)]
26 pub main_fields: Vec<Atom>,
27
28 #[serde(default = "default_symlinks")]
29 pub symlinks: bool,
30}
31
32fn default_extensions() -> Vec<Atom> {
33 vec![
34 atom!(".wasm"),
35 atom!(".mjs"),
36 atom!(".js"),
37 atom!(".json"),
38 atom!(".ts"),
39 atom!(".tsc"),
40 ]
41}
42
43fn default_symlinks() -> bool {
44 true
45}
46
47#[derive(Debug, Deserialize)]
48#[serde(rename = "Resolve.Alias", rename_all = "camelCase")]
49pub struct AliasConfig {
50 #[serde(flatten)]
51 pub map: HashMap<Atom, PathBuf>,
52}