@@ -49,8 +49,8 @@ class ResolutionContext {
49
49
// Remove @NoResolution prefix if not building in library mode
50
50
if ( ! isBuildModeLibrary ( this . program ) ) {
51
51
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 ) ;
54
54
}
55
55
56
56
// Skip
@@ -88,8 +88,8 @@ class ResolutionContext {
88
88
// Figure out resolved require path and dependency output path
89
89
if ( shouldRewriteRequires ( dependencyPath , this . program ) ) {
90
90
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 ) ;
93
93
}
94
94
}
95
95
@@ -117,8 +117,8 @@ class ResolutionContext {
117
117
118
118
private couldNotResolveImport ( required : LuaRequire , file : ProcessedFile ) : void {
119
119
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 ) ;
122
122
123
123
this . diagnostics . push (
124
124
couldNotResolveRequire ( required . requirePath , path . relative ( getProjectRoot ( this . program ) , file . fileName ) )
@@ -310,16 +310,26 @@ function isBuildModeLibrary(program: ts.Program) {
310
310
return program . getCompilerOptions ( ) . buildMode === BuildMode . Library ;
311
311
}
312
312
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 ) ;
315
320
file . code = file . code =
316
321
file . code . substring ( 0 , originalRequire . from ) +
317
322
`require("${ requirePath } ")` +
318
323
file . code . substring ( originalRequire . to + 1 ) ;
319
324
}
320
325
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 ) ;
323
333
if ( file . sourceMapNode ) {
324
334
replaceInSourceMap (
325
335
file . sourceMapNode ,
@@ -330,6 +340,14 @@ function replaceRequireInSourceMap(file: ProcessedFile, originalRequire: LuaRequ
330
340
}
331
341
}
332
342
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
+
333
351
function replaceInSourceMap ( node : SourceNode , parent : SourceNode , require : string , resolvedRequire : string ) : boolean {
334
352
if ( ( ! node . children || node . children . length === 0 ) && node . toString ( ) === require ) {
335
353
parent . children = [ new SourceNode ( node . line , node . column , node . source , [ resolvedRequire ] ) ] ;
0 commit comments