93 lines
No EOL
3.3 KiB
JavaScript
93 lines
No EOL
3.3 KiB
JavaScript
"use strict";
|
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
if (ar || !(i in from)) {
|
|
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
ar[i] = from[i];
|
|
}
|
|
}
|
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.register = void 0;
|
|
var match_path_sync_1 = require("./match-path-sync");
|
|
var config_loader_1 = require("./config-loader");
|
|
var options_1 = require("./options");
|
|
var noOp = function () { return void 0; };
|
|
function getCoreModules(builtinModules) {
|
|
builtinModules = builtinModules || [
|
|
"assert",
|
|
"buffer",
|
|
"child_process",
|
|
"cluster",
|
|
"crypto",
|
|
"dgram",
|
|
"dns",
|
|
"domain",
|
|
"events",
|
|
"fs",
|
|
"http",
|
|
"https",
|
|
"net",
|
|
"os",
|
|
"path",
|
|
"punycode",
|
|
"querystring",
|
|
"readline",
|
|
"stream",
|
|
"string_decoder",
|
|
"tls",
|
|
"tty",
|
|
"url",
|
|
"util",
|
|
"v8",
|
|
"vm",
|
|
"zlib",
|
|
];
|
|
var coreModules = {};
|
|
for (var _i = 0, builtinModules_1 = builtinModules; _i < builtinModules_1.length; _i++) {
|
|
var module_1 = builtinModules_1[_i];
|
|
coreModules[module_1] = true;
|
|
}
|
|
return coreModules;
|
|
}
|
|
/**
|
|
* Installs a custom module load function that can adhere to paths in tsconfig.
|
|
* Returns a function to undo paths registration.
|
|
*/
|
|
function register(explicitParams) {
|
|
var configLoaderResult = (0, config_loader_1.configLoader)({
|
|
cwd: options_1.options.cwd,
|
|
explicitParams: explicitParams,
|
|
});
|
|
if (configLoaderResult.resultType === "failed") {
|
|
console.warn("".concat(configLoaderResult.message, ". tsconfig-paths will be skipped"));
|
|
return noOp;
|
|
}
|
|
var matchPath = (0, match_path_sync_1.createMatchPath)(configLoaderResult.absoluteBaseUrl, configLoaderResult.paths, configLoaderResult.mainFields, configLoaderResult.addMatchAll);
|
|
// Patch node's module loading
|
|
// tslint:disable-next-line:no-require-imports variable-name
|
|
var Module = require("module");
|
|
var originalResolveFilename = Module._resolveFilename;
|
|
var coreModules = getCoreModules(Module.builtinModules);
|
|
// tslint:disable-next-line:no-any
|
|
Module._resolveFilename = function (request, _parent) {
|
|
var isCoreModule = coreModules.hasOwnProperty(request);
|
|
if (!isCoreModule) {
|
|
var found = matchPath(request);
|
|
if (found) {
|
|
var modifiedArguments = __spreadArray([found], [].slice.call(arguments, 1), true); // Passes all arguments. Even those that is not specified above.
|
|
// tslint:disable-next-line:no-invalid-this
|
|
return originalResolveFilename.apply(this, modifiedArguments);
|
|
}
|
|
}
|
|
// tslint:disable-next-line:no-invalid-this
|
|
return originalResolveFilename.apply(this, arguments);
|
|
};
|
|
return function () {
|
|
// Return node's module loading to original state.
|
|
Module._resolveFilename = originalResolveFilename;
|
|
};
|
|
}
|
|
exports.register = register;
|
|
//# sourceMappingURL=register.js.map
|