Skip to content
This repository was archived by the owner on May 12, 2025. It is now read-only.

Commit c94dbe0

Browse files
arodionovAndrii Rodionov
andauthored
Implemented visitExternalModuleReference (#195)
Co-authored-by: Andrii Rodionov <[email protected]>
1 parent 9bceecd commit c94dbe0

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

openrewrite/src/javascript/parser.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3393,7 +3393,20 @@ export class JavaScriptParserVisitor {
33933393
}
33943394

33953395
visitExternalModuleReference(node: ts.ExternalModuleReference) {
3396-
return this.visitUnknown(node);
3396+
return new J.MethodInvocation(
3397+
randomId(),
3398+
this.prefix(node),
3399+
Markers.EMPTY,
3400+
null,
3401+
null,
3402+
this.mapIdentifier(node, "require"),
3403+
new J.JContainer(
3404+
this.prefix(this.findChildNode(node, ts.SyntaxKind.OpenParenToken)!),
3405+
[this.rightPadded(this.visit(node.expression), this.suffix(node.expression))],
3406+
Markers.EMPTY
3407+
),
3408+
this.mapMethodType(node)
3409+
)
33973410
}
33983411

33993412
visitJsxElement(node: ts.JsxElement) {

openrewrite/test/javascript/parser/import.test.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,4 +115,13 @@ describe('import mapping', () => {
115115
`)
116116
);
117117
});
118+
119+
test('external module import', () => {
120+
rewriteRun(
121+
//language=typescript
122+
typeScript(`
123+
import mongodb = /*a*/require/*b*/(/*c*/'mongodb'/*d*/)/*e*/;
124+
`)
125+
);
126+
});
118127
});

0 commit comments

Comments
 (0)