@@ -49,8 +49,8 @@ class ResolutionContext {
4949 // Remove @NoResolution prefix if not building in library mode
5050 if ( ! isBuildModeLibrary ( this . program ) ) {
5151 const path = required . requirePath . replace ( "@NoResolution:" , "" ) ;
52- replaceRequireInCode ( file , required , path ) ;
53- replaceRequireInSourceMap ( file , required , path ) ;
52+ replaceRequireInCode ( file , required , path , this . options . extension ) ;
53+ replaceRequireInSourceMap ( file , required , path , this . options . extension ) ;
5454 }
5555
5656 // Skip
@@ -88,8 +88,8 @@ class ResolutionContext {
8888 // Figure out resolved require path and dependency output path
8989 if ( shouldRewriteRequires ( dependencyPath , this . program ) ) {
9090 const resolvedRequire = getEmitPathRelativeToOutDir ( dependencyPath , this . program ) ;
91- replaceRequireInCode ( file , required , resolvedRequire ) ;
92- replaceRequireInSourceMap ( file , required , resolvedRequire ) ;
91+ replaceRequireInCode ( file , required , resolvedRequire , this . options . extension ) ;
92+ replaceRequireInSourceMap ( file , required , resolvedRequire , this . options . extension ) ;
9393 }
9494 }
9595
@@ -117,8 +117,8 @@ class ResolutionContext {
117117
118118 private couldNotResolveImport ( required : LuaRequire , file : ProcessedFile ) : void {
119119 const fallbackRequire = fallbackResolve ( required , getSourceDir ( this . program ) , path . dirname ( file . fileName ) ) ;
120- replaceRequireInCode ( file , required , fallbackRequire ) ;
121- replaceRequireInSourceMap ( file , required , fallbackRequire ) ;
120+ replaceRequireInCode ( file , required , fallbackRequire , this . options . extension ) ;
121+ replaceRequireInSourceMap ( file , required , fallbackRequire , this . options . extension ) ;
122122
123123 this . diagnostics . push (
124124 couldNotResolveRequire ( required . requirePath , path . relative ( getProjectRoot ( this . program ) , file . fileName ) )
@@ -310,16 +310,26 @@ function isBuildModeLibrary(program: ts.Program) {
310310 return program . getCompilerOptions ( ) . buildMode === BuildMode . Library ;
311311}
312312
313- function replaceRequireInCode ( file : ProcessedFile , originalRequire : LuaRequire , newRequire : string ) : void {
314- const requirePath = formatPathToLuaPath ( newRequire . replace ( ".lua" , "" ) ) ;
313+ function replaceRequireInCode (
314+ file : ProcessedFile ,
315+ originalRequire : LuaRequire ,
316+ newRequire : string ,
317+ extension : string | undefined
318+ ) : void {
319+ const requirePath = requirePathForFile ( newRequire , extension ) ;
315320 file . code = file . code =
316321 file . code . substring ( 0 , originalRequire . from ) +
317322 `require("${ requirePath } ")` +
318323 file . code . substring ( originalRequire . to + 1 ) ;
319324}
320325
321- function replaceRequireInSourceMap ( file : ProcessedFile , originalRequire : LuaRequire , newRequire : string ) : void {
322- const requirePath = formatPathToLuaPath ( newRequire . replace ( ".lua" , "" ) ) ;
326+ function replaceRequireInSourceMap (
327+ file : ProcessedFile ,
328+ originalRequire : LuaRequire ,
329+ newRequire : string ,
330+ extension ?: string | undefined
331+ ) : void {
332+ const requirePath = requirePathForFile ( newRequire , extension ) ;
323333 if ( file . sourceMapNode ) {
324334 replaceInSourceMap (
325335 file . sourceMapNode ,
@@ -330,6 +340,14 @@ function replaceRequireInSourceMap(file: ProcessedFile, originalRequire: LuaRequ
330340 }
331341}
332342
343+ function requirePathForFile ( filePath : string , extension = ".lua" ) : string {
344+ if ( filePath . endsWith ( extension ) ) {
345+ return formatPathToLuaPath ( filePath . substring ( 0 , filePath . length - extension . length ) ) ;
346+ } else {
347+ return formatPathToLuaPath ( filePath ) ;
348+ }
349+ }
350+
333351function replaceInSourceMap ( node : SourceNode , parent : SourceNode , require : string , resolvedRequire : string ) : boolean {
334352 if ( ( ! node . children || node . children . length === 0 ) && node . toString ( ) === require ) {
335353 parent . children = [ new SourceNode ( node . line , node . column , node . source , [ resolvedRequire ] ) ] ;
0 commit comments