deno/cli/tools/bundle/transform.rs
林炳权 68297b5f10
Some checks are pending
ci / pre-build (push) Waiting to run
ci / test debug linux-aarch64 (push) Blocked by required conditions
ci / test release linux-aarch64 (push) Blocked by required conditions
ci / test debug macos-aarch64 (push) Blocked by required conditions
ci / test release macos-aarch64 (push) Blocked by required conditions
ci / bench release linux-x86_64 (push) Blocked by required conditions
ci / lint debug linux-x86_64 (push) Blocked by required conditions
ci / lint debug macos-x86_64 (push) Blocked by required conditions
ci / lint debug windows-x86_64 (push) Blocked by required conditions
ci / test debug linux-x86_64 (push) Blocked by required conditions
ci / test release linux-x86_64 (push) Blocked by required conditions
ci / test debug macos-x86_64 (push) Blocked by required conditions
ci / test release macos-x86_64 (push) Blocked by required conditions
ci / test debug windows-x86_64 (push) Blocked by required conditions
ci / test release windows-x86_64 (push) Blocked by required conditions
ci / build libs (push) Blocked by required conditions
ci / publish canary (push) Blocked by required conditions
chore: Rust 1.89.0 (#30364)
Related PR: https://github.com/denoland/deno/pull/30354
2025-08-09 11:11:48 +00:00

40 lines
1.1 KiB
Rust

// Copyright 2018-2025 the Deno authors. MIT license.
use deno_ast::swc;
use deno_ast::swc::ast::Bool;
use deno_ast::swc::ecma_visit::VisitMut;
use deno_ast::swc::ecma_visit::VisitMutWith;
pub struct BundleImportMetaMainTransform {
is_entrypoint: bool,
}
impl BundleImportMetaMainTransform {
pub fn new(is_entrypoint: bool) -> Self {
Self { is_entrypoint }
}
}
impl VisitMut for BundleImportMetaMainTransform {
fn visit_mut_expr(&mut self, node: &mut swc::ast::Expr) {
// if entrypoint to bundle:
// import.meta.main => import.meta.main
// else:
// import.meta.main => false
if let swc::ast::Expr::Member(member) = node
&& let swc::ast::Expr::MetaProp(meta_prop) = &mut *member.obj
&& meta_prop.kind == swc::ast::MetaPropKind::ImportMeta
&& member.prop.is_ident_with("main")
{
if self.is_entrypoint {
return;
} else {
let span = member.span;
*node =
swc::ast::Expr::Lit(swc::ast::Lit::Bool(Bool { span, value: false }));
return;
}
}
node.visit_mut_children_with(self);
}
}