@@ -5,7 +5,24 @@ import { CompilerOptions, isBundleEnabled } from "../CompilerOptions";
55import { escapeString } from "../LuaPrinter" ;
66import { assert , normalizeSlashes } from "../utils" ;
77import { couldNotFindBundleEntryPoint } from "./diagnostics" ;
8- import { Chunk , EmitHost , getConfigDirectory , Module } from "./utils" ;
8+ import { Module } from "./module" ;
9+ import { Transpilation } from "./transpiler" ;
10+ import { getConfigDirectory } from "./utils" ;
11+
12+ export interface Chunk {
13+ outputPath : string ;
14+ code : string ;
15+ sourceMap ?: string ;
16+ sourceFiles ?: ts . SourceFile [ ] ;
17+ }
18+
19+ export function modulesToChunks ( transpilation : Transpilation , modules : Module [ ] ) : Chunk [ ] {
20+ return modules . map ( module => {
21+ const moduleId = transpilation . getModuleId ( module ) ;
22+ const outputPath = normalizeSlashes ( path . resolve ( transpilation . outDir , `${ moduleId . replace ( / \. / g, "/" ) } .lua` ) ) ;
23+ return { outputPath, code : module . code , sourceMap : module . sourceMap , sourceFiles : module . sourceFiles } ;
24+ } ) ;
25+ }
926
1027// Override `require` to read from ____modules table.
1128const requireOverride = `
@@ -29,41 +46,33 @@ local function require(file)
2946end
3047` ;
3148
32- export function getBundleChunk (
33- program : ts . Program ,
34- emitHost : EmitHost ,
35- modules : Module [ ] ,
36- createModuleId : ( file : Module ) => string
37- ) : [ ts . Diagnostic [ ] , Chunk ] {
38- const diagnostics : ts . Diagnostic [ ] = [ ] ;
39-
40- const options = program . getCompilerOptions ( ) as CompilerOptions ;
49+ export function modulesToBundleChunks ( transpilation : Transpilation , modules : Module [ ] ) : Chunk [ ] {
50+ const options = transpilation . program . getCompilerOptions ( ) as CompilerOptions ;
4151 assert ( isBundleEnabled ( options ) ) ;
42- const projectDirectory = getConfigDirectory ( options , emitHost ) ;
52+ const projectDirectory = getConfigDirectory ( options , transpilation . emitHost ) ;
4353 const outputPath = normalizeSlashes ( path . resolve ( projectDirectory , options . luaBundle ) ) ;
4454
4555 // Resolve project settings relative to project file.
4656 const entryFileName = normalizeSlashes ( path . resolve ( projectDirectory , options . luaBundleEntry ) ) ;
47- const entryModule = modules . find ( m => m . fileName === entryFileName ) ;
57+ const entryModule = modules . find ( m => m . request === entryFileName ) ;
4858 if ( entryModule === undefined ) {
49- diagnostics . push ( couldNotFindBundleEntryPoint ( options . luaBundleEntry ) ) ;
50- return [ diagnostics , { outputPath, code : "" } ] ;
59+ transpilation . diagnostics . push ( couldNotFindBundleEntryPoint ( options . luaBundleEntry ) ) ;
60+ return [ { outputPath, code : "" } ] ;
5161 }
5262
5363 // For each file: ["<module path>"] = function() <lua content> end,
54- const moduleTableEntries = modules . map ( f => moduleSourceNode ( f , escapeString ( createModuleId ( f ) ) ) ) ;
64+ const moduleTableEntries = modules . map ( m => moduleSourceNode ( m , escapeString ( transpilation . getModuleId ( m ) ) ) ) ;
5565
5666 // Create ____modules table containing all entries from moduleTableEntries
5767 const moduleTable = createModuleTableNode ( moduleTableEntries ) ;
5868
5969 // return require("<entry module path>")
60- const bootstrap = `return require(${ escapeString ( createModuleId ( entryModule ) ) } )\n` ;
70+ const bootstrap = `return require(${ escapeString ( transpilation . getModuleId ( entryModule ) ) } )\n` ;
6171
6272 const bundleNode = joinSourceChunks ( [ requireOverride , moduleTable , bootstrap ] ) ;
6373 const { code, map } = bundleNode . toStringWithSourceMap ( ) ;
6474
6575 return [
66- diagnostics ,
6776 {
6877 outputPath,
6978 code,
@@ -73,8 +82,8 @@ export function getBundleChunk(
7382 ] ;
7483}
7584
76- function moduleSourceNode ( { code , sourceMapNode } : Module , modulePath : string ) : SourceNode {
77- return joinSourceChunks ( [ `[${ modulePath } ] = function()\n` , sourceMapNode ?? code , "\nend,\n" ] ) ;
85+ function moduleSourceNode ( module : Module , modulePath : string ) : SourceNode {
86+ return joinSourceChunks ( [ `[${ modulePath } ] = function()\n` , module . sourceMapNode ?? module . code , "\nend,\n" ] ) ;
7887}
7988
8089function createModuleTableNode ( fileChunks : SourceChunk [ ] ) : SourceNode {
0 commit comments