mirror of
https://github.com/oxc-project/oxc.git
synced 2026-11-04 10:29:58 +00:00
feat(transformer): support ModuleRunnerTransform (#9371)
close: #9169 NOTE: I didn't copy any `sourcemap` tests to here, because these are not directly related to this plugin. --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: 翠 / green <green@sapphi.red>
This commit is contained in:
6 files changed
+2108
-3
No files matched your search
Generated
+2
@@ -2228,12 +2228,14 @@ dependencies = [
|
||||
"oxc_sourcemap",
|
||||
"oxc_span",
|
||||
"oxc_syntax",
|
||||
"oxc_tasks_common",
|
||||
"oxc_traverse",
|
||||
"pico-args",
|
||||
"rustc-hash",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"sha1",
|
||||
"similar",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
||||
@@ -50,7 +50,9 @@ insta = { workspace = true }
|
||||
oxc_codegen = { workspace = true }
|
||||
oxc_parser = { workspace = true }
|
||||
oxc_sourcemap = { workspace = true }
|
||||
oxc_tasks_common = { workspace = true }
|
||||
pico-args = { workspace = true }
|
||||
similar = { workspace = true }
|
||||
|
||||
[features]
|
||||
default = []
|
||||
|
||||
@@ -375,7 +375,7 @@ impl<'a> LegacyDecoratorMetadata<'a, '_> {
|
||||
let binding = MaybeBoundIdentifier::from_identifier_reference(ident, ctx);
|
||||
let ident1 = binding.create_read_expression(ctx);
|
||||
let ident2 = binding.create_read_expression(ctx);
|
||||
let member = create_property_access(ident1, &qualified.right.name, ctx);
|
||||
let member = create_property_access(SPAN, ident1, &qualified.right.name, ctx);
|
||||
Self::create_checked_value(ident2, member, ctx)
|
||||
} else {
|
||||
// `A.B.C` -> `typeof A !== "undefined" && (_a = A.B) !== void 0 && _a.C`
|
||||
@@ -401,7 +401,7 @@ impl<'a> LegacyDecoratorMetadata<'a, '_> {
|
||||
);
|
||||
|
||||
let object = binding.create_read_expression(ctx);
|
||||
let member = create_property_access(object, &qualified.right.name, ctx);
|
||||
let member = create_property_access(SPAN, object, &qualified.right.name, ctx);
|
||||
ctx.ast.expression_logical(SPAN, left, LogicalOperator::And, member)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
mod inject_global_variables;
|
||||
mod module_runner_transform;
|
||||
mod replace_global_defines;
|
||||
|
||||
pub use inject_global_variables::*;
|
||||
pub use module_runner_transform::*;
|
||||
pub use replace_global_defines::*;
|
||||
File diff suppressed because it is too large.
Load diff
@@ -84,10 +84,22 @@ pub fn create_prototype_member<'a>(
|
||||
|
||||
/// `object` -> `object.a`.
|
||||
pub fn create_property_access<'a>(
|
||||
span: Span,
|
||||
object: Expression<'a>,
|
||||
property: &str,
|
||||
ctx: &TraverseCtx<'a>,
|
||||
) -> Expression<'a> {
|
||||
let property = ctx.ast.identifier_name(SPAN, ctx.ast.atom(property));
|
||||
Expression::from(ctx.ast.member_expression_static(SPAN, object, property, false))
|
||||
Expression::from(ctx.ast.member_expression_static(span, object, property, false))
|
||||
}
|
||||
|
||||
/// `object` -> `object['a']`.
|
||||
pub fn create_compute_property_access<'a>(
|
||||
span: Span,
|
||||
object: Expression<'a>,
|
||||
property: &str,
|
||||
ctx: &TraverseCtx<'a>,
|
||||
) -> Expression<'a> {
|
||||
let expression = ctx.ast.expression_string_literal(SPAN, ctx.ast.atom(property), None);
|
||||
Expression::from(ctx.ast.member_expression_computed(span, object, expression, false))
|
||||
}
|
||||
Reference in new issue
Block a user