1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.loadTypeScript = void 0;
|
4 | var fs_1 = require("fs");
|
5 | var resolve_1 = require("resolve");
|
6 | var patchCreateProgram_1 = require("./patchCreateProgram");
|
7 | var path_1 = require("path");
|
8 | var vm_1 = require("vm");
|
9 | var Module = require("module");
|
10 | function 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 | }
|
23 | exports.loadTypeScript = loadTypeScript;
|
24 | var typeScriptFactoryCache = new Map();
|
25 | function 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 | }
|