@brusalk/react-wow-addon
Version:
React-style UI Framework for World of Warcraft AddOns
34 lines (33 loc) • 1.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RequirePreload = void 0;
/* eslint-disable @typescript-eslint/no-object-literal-type-assertion */
const ts = require("typescript");
const typescript_to_lua_1 = require("typescript-to-lua");
exports.RequirePreload = {
visitors: {
[ts.SyntaxKind.SourceFile]: (node, context) => {
const [fileContent] = context.superTransformNode(node);
if (context.isModule) {
const moduleFunction = typescript_to_lua_1.createFunctionExpression(fileContent, undefined, undefined, undefined);
let moduleName = context.sourceFile.fileName.split("src")[1];
if (moduleName.startsWith("/"))
moduleName = moduleName.substring(1);
if (moduleName.endsWith(".tsx"))
moduleName = moduleName.substring(0, moduleName.length - 4);
if (moduleName.endsWith(".ts"))
moduleName = moduleName.substring(0, moduleName.length - 3);
moduleName = moduleName.split("/").join(".");
moduleName = moduleName.replace(".index", "");
// Skip init.lua so it can be the entry-point
if (moduleName === "init")
return fileContent;
// Generates:
// tstl_register_module("module/name", function() ... end)
const moduleCallExpression = typescript_to_lua_1.createCallExpression(typescript_to_lua_1.createIdentifier("tstl_register_module"), [typescript_to_lua_1.createStringLiteral(moduleName), moduleFunction]);
return typescript_to_lua_1.createBlock([typescript_to_lua_1.createExpressionStatement(moduleCallExpression)]);
}
return fileContent;
},
},
};