Skip to content

Commit c98a98a

Browse files
committed
Resolve lualib_bundle as a dependency
1 parent d2e4172 commit c98a98a

3 files changed

Lines changed: 20 additions & 19 deletions

File tree

src/LuaPrinter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ export class LuaPrinter {
164164
(luaLibImport === LuaLibImportKind.Require && luaLibFeatures.size > 0)
165165
) {
166166
// Require lualib bundle
167-
header += 'require("lualib_bundle");\n';
167+
header += 'require(__TS__Resolve("<internal>/lualib/lualib_bundle"));\n';
168168
} else if (luaLibImport === LuaLibImportKind.Inline && luaLibFeatures.size > 0) {
169169
// Inline lualib features
170170
header += "-- Lua Library inline imports\n";

src/transpilation/transpilation.ts

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { SourceNode } from "source-map";
55
import * as ts from "typescript";
66
import { CompilerOptions, isBundleEnabled, LuaTarget } from "../CompilerOptions";
77
import { getLuaLibBundle } from "../LuaLib";
8-
import { assert, cast, isNonNull, normalizeSlashes, trimExtension } from "../utils";
8+
import { assert, cast, isNonNull, trimExtension } from "../utils";
99
import { Chunk, modulesToBundleChunks, modulesToChunks } from "./chunk";
1010
import { createResolutionErrorDiagnostic } from "./diagnostics";
1111
import { buildModule, Module } from "./module";
@@ -55,17 +55,6 @@ export class Transpilation {
5555

5656
public emit(): Chunk[] {
5757
this.modules.forEach(module => this.buildModule(module));
58-
59-
const lualibRequired = this.modules.some(m => m.source.toString().includes('require("lualib_bundle")'));
60-
if (lualibRequired) {
61-
const fileName = normalizeSlashes(path.resolve(this.rootDir, "lualib_bundle.lua"));
62-
this.modules.unshift({
63-
request: fileName,
64-
isBuilt: true,
65-
source: new SourceNode(null, null, null, getLuaLibBundle(this.host)),
66-
});
67-
}
68-
6958
return this.mapModulesToChunks(this.modules);
7059
}
7160

@@ -83,6 +72,17 @@ export class Transpilation {
8372
}
8473

8574
private resolveRequestToModule(issuer: string, request: string) {
75+
if (request === "<internal>/lualib/lualib_bundle") {
76+
let module = this.modules.find(m => m.request === request);
77+
if (!module) {
78+
const source = new SourceNode(null, null, null, getLuaLibBundle(this.host));
79+
module = { request, isBuilt: true, source };
80+
this.modules.push(module);
81+
}
82+
83+
return module;
84+
}
85+
8686
let resolvedPath: string;
8787
try {
8888
const result = this.resolver.resolveSync({}, path.dirname(issuer), request);
@@ -103,11 +103,8 @@ export class Transpilation {
103103

104104
// TODO: Load source map files
105105
const code = cast(this.host.readFile(resolvedPath), isNonNull);
106-
module = {
107-
request: resolvedPath,
108-
isBuilt: false,
109-
source: new SourceNode(null, null, null, code),
110-
};
106+
const source = new SourceNode(null, null, null, code);
107+
module = { request: resolvedPath, isBuilt: false, source };
111108

112109
this.modules.push(module);
113110
this.buildModule(module);
@@ -120,6 +117,10 @@ export class Transpilation {
120117
const pluginResult = applyBailPlugin(this.plugins, p => p.getModuleId?.(module, this));
121118
if (pluginResult !== undefined) return pluginResult;
122119

120+
if (module.request.startsWith("<internal>/")) {
121+
return module.request.replace("<internal>/", "");
122+
}
123+
123124
const result = path.relative(this.rootDir, trimExtension(module.request));
124125
// TODO: handle files on other drives
125126
assert(!path.isAbsolute(result), `Invalid path: ${result}`);

test/util.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ export abstract class TestBuilder {
257257
host.resolutionFileSystem = virtualFS;
258258
host.getCurrentDirectory = () => "/";
259259
host.readFile = (fileName, encoding = "utf8") =>
260-
fileName.endsWith("lualib_bundle.lua")
260+
fileName.includes("/lualib/")
261261
? ts.sys.readFile(fileName, encoding)
262262
: (virtualFS.readFileSync(fileName, encoding) as string);
263263
}

0 commit comments

Comments
 (0)