mirror of
1
0
Fork 0
ultimate-vim/sources_non_forked/markdown-preview.nvim/app/lib/app/load.js

37 lines
1.8 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const fs_1 = tslib_1.__importDefault(require("fs"));
const module_1 = tslib_1.__importDefault(require("module"));
const path_1 = tslib_1.__importDefault(require("path"));
const vm_1 = tslib_1.__importDefault(require("vm"));
const preloadmodules_1 = tslib_1.__importDefault(require("./preloadmodules"));
function load(scriptPath) {
const userModule = new module_1.default(scriptPath);
userModule.filename = scriptPath;
userModule.paths = module_1.default._nodeModulePaths(path_1.default.dirname(scriptPath));
const moduleCode = fs_1.default.readFileSync(userModule.filename, 'utf-8');
userModule.require = userModule.require.bind(userModule);
const sanbox = vm_1.default.createContext(Object.assign(Object.assign({}, global), { exports: userModule.exports, module: userModule, require: name => {
if (preloadmodules_1.default[name]) {
return preloadmodules_1.default[name];
}
try {
return userModule.require(name);
}
catch (e) {
let loadScript = path_1.default.join(path_1.default.dirname(scriptPath), name);
if (fs_1.default.existsSync(loadScript) && fs_1.default.statSync(loadScript).isDirectory()) {
loadScript = path_1.default.join(loadScript, 'index.js');
}
else if (!fs_1.default.existsSync(loadScript)) {
loadScript = `${loadScript}.js`;
}
return load(loadScript);
}
}, __filename: userModule.filename, __dirname: path_1.default.dirname(scriptPath), process }));
vm_1.default.runInContext(moduleCode, sanbox, { filename: userModule.filename });
return userModule.exports;
}
exports.default = load;