swc_ecma_compat_es2020/
nullish_coalescing.rs

1use serde::Deserialize;
2use swc_ecma_ast::Pass;
3use swc_ecma_compiler::{Compiler, Features};
4use swc_ecma_transforms_base::assumptions::Assumptions;
5
6/// Configuration for nullish coalescing transformation
7#[derive(Debug, Clone, Copy, Default, Deserialize)]
8#[serde(rename_all = "camelCase")]
9pub struct Config {
10    #[serde(default)]
11    pub no_document_all: bool,
12}
13
14/// Creates a nullish coalescing transformation pass
15///
16/// This is now a thin wrapper around the Compiler implementation.
17pub fn nullish_coalescing(c: Config) -> impl Pass + 'static {
18    let mut assumptions = Assumptions::default();
19    assumptions.no_document_all = c.no_document_all;
20
21    Compiler::new(swc_ecma_compiler::Config {
22        includes: Features::NULLISH_COALESCING,
23        assumptions,
24        ..Default::default()
25    })
26}