UNPKG

@brusalk/react-wow-addon

Version:

React-style UI Framework for World of Warcraft AddOns

34 lines (33 loc) 1.84 kB
"use strict"; 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; }, }, };