swc_ecma_compat_es2020/
optional_chaining.rs

1use serde::Deserialize;
2use swc_common::Mark;
3use swc_ecma_ast::Pass;
4use swc_ecma_compat_es2022::optional_chaining_impl::optional_chaining_impl;
5use swc_ecma_visit::visit_mut_pass;
6
7pub fn optional_chaining(c: Config, unresolved_mark: Mark) -> impl Pass {
8    visit_mut_pass(optional_chaining_impl(
9        swc_ecma_compat_es2022::optional_chaining_impl::Config {
10            no_document_all: c.no_document_all,
11            pure_getter: c.pure_getter,
12        },
13        unresolved_mark,
14    ))
15}
16
17#[derive(Debug, Clone, Copy, Default, Deserialize)]
18#[serde(rename_all = "camelCase")]
19pub struct Config {
20    #[serde(default)]
21    pub no_document_all: bool,
22    #[serde(default)]
23    pub pure_getter: bool,
24}