rspack_plugin_javascript 0.100.7

rspack javascript plugin
Documentation
use rspack_util::SpanExt;
use swc_experimental_ecma_ast::PropName;

use crate::{
  utils::eval::{BasicEvaluatedExpression, eval_bigint, eval_number, eval_str},
  visitors::JavascriptParser,
};

#[inline]
pub fn eval_prop_name<'parser: 'a, 'a>(
  parser: &mut JavascriptParser<'parser>,
  prop_name: &'a PropName<'a>,
) -> BasicEvaluatedExpression<'a> {
  match prop_name {
    PropName::Str(str) => eval_str(str),
    PropName::Num(num) => eval_number(num),
    PropName::BigInt(bigint) => eval_bigint(bigint),
    PropName::Ident(ident) => {
      let mut evaluated =
        BasicEvaluatedExpression::with_range(ident.span.real_lo(), ident.span.real_hi());
      evaluated.set_string(ident.sym.to_string());
      evaluated
    }
    PropName::Computed(computed) => parser.evaluate_expression(&computed.expr),
  }
}