UNPKG

1.79 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.loadTypeScript = void 0;
4var fs_1 = require("fs");
5var resolve_1 = require("resolve");
6var patchCreateProgram_1 = require("./patchCreateProgram");
7var path_1 = require("path");
8var vm_1 = require("vm");
9var Module = require("module");
10function loadTypeScript(filename, _a) {
11 var _b = _a === void 0 ? {} : _a, _c = _b.folder, folder = _c === void 0 ? __dirname : _c, _d = _b.forceConfigLoad, forceConfigLoad = _d === void 0 ? false : _d;
12 var libFilename = (0, resolve_1.sync)('typescript/lib/' + filename, { basedir: folder });
13 if (!require.cache[libFilename]) {
14 require.cache[libFilename] = TSModuleFactory(libFilename);
15 }
16 var ts = TSModuleFactory(libFilename).exports;
17 var _e = ts.versionMajorMinor.split('.'), major = _e[0], minor = _e[1];
18 if (+major < 3 && +minor < 7) {
19 throw new Error('ttypescript supports typescript from 2.7 version');
20 }
21 return (0, patchCreateProgram_1.patchCreateProgram)(ts, forceConfigLoad);
22}
23exports.loadTypeScript = loadTypeScript;
24var typeScriptFactoryCache = new Map();
25function TSModuleFactory(filename) {
26 var factory = typeScriptFactoryCache.get(filename);
27 if (!factory) {
28 var code = (0, fs_1.readFileSync)(filename, 'utf8');
29 factory = (0, vm_1.runInThisContext)("(function (exports, require, module, __filename, __dirname) {".concat(code, "\n});"), {
30 filename: filename,
31 lineOffset: 0,
32 displayErrors: true,
33 });
34 typeScriptFactoryCache.set(filename, factory);
35 }
36 var newModule = new Module(filename, module);
37 factory.call(newModule, newModule.exports, require, newModule, filename, (0, path_1.dirname)(filename));
38 return newModule;
39}