roblox-ts
Version:
A TypeScript-to-Luau Compiler for Roblox
36 lines • 1.95 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.assertNever = assertNever;
const child_process_1 = require("child_process");
const kleur_1 = __importDefault(require("kleur"));
const LogService_1 = require("../../Shared/classes/LogService");
const getKindName_1 = require("./getKindName");
const typescript_1 = __importDefault(require("typescript"));
const util_1 = __importDefault(require("util"));
function findTypescriptVersion(info) {
if (info.name === "roblox-ts" && info.dependencies.typescript) {
return info.dependencies.typescript.version;
}
for (const [, dep] of Object.entries(info.dependencies)) {
const found = findTypescriptVersion(dep);
if (found) {
return found;
}
}
}
function error(message) {
const typescriptVersion = findTypescriptVersion(JSON.parse((0, child_process_1.spawnSync)("npm ls typescript --json").stdout.toString()));
LogService_1.LogService.fatal(kleur_1.default.red(`Exhaustive assertion failed! ${message}`) +
kleur_1.default.yellow("\nThis is usually caused by a TypeScript version mismatch.") +
kleur_1.default.yellow("\nMake sure that all TS versions in your project are the same.") +
kleur_1.default.yellow("\nYou can check the list of installed versions with `npm list typescript`") +
(typescriptVersion ? kleur_1.default.yellow(`\nTry running \`npm install typescript@=${typescriptVersion}\``) : ""));
}
function assertNever(value, message) {
const isTsNode = typeof value === "object" && "kind" in value && typescript_1.default.isNode(value);
error(`${message}, value was ${isTsNode ? `a TS node of kind ${(0, getKindName_1.getKindName)(value.kind)}` : util_1.default.inspect(value)}`);
}
//# sourceMappingURL=assertNever.js.map