@fimbul/wotan
Version:
Pluggable TypeScript and JavaScript linter
39 lines • 1.49 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.NodeResolver = void 0;
const tslib_1 = require("tslib");
const inversify_1 = require("inversify");
const ymir_1 = require("@fimbul/ymir");
const cached_file_system_1 = require("../cached-file-system");
const resolve = require("resolve");
let NodeResolver = class NodeResolver {
constructor(fs, directories) {
this.fs = fs;
this.directories = directories;
this.defaultExtensions = Object.keys(require.extensions).filter((ext) => ext !== '.json' && ext !== '.node');
}
getDefaultExtensions() {
return this.defaultExtensions;
}
resolve(id, basedir = this.directories.getCurrentDirectory(), extensions = this.defaultExtensions, paths) {
return resolve.sync(id, {
basedir,
extensions,
paths,
isFile: (file) => this.fs.isFile(file),
readFileSync: (file) => this.fs.readFile(file),
isDirectory: (file) => this.fs.isDirectory(file),
});
}
require(id, options) {
if (options !== undefined && options.cache === false)
delete require.cache[id];
return require(id);
}
};
NodeResolver = tslib_1.__decorate([
inversify_1.injectable(),
tslib_1.__metadata("design:paramtypes", [cached_file_system_1.CachedFileSystem, ymir_1.DirectoryService])
], NodeResolver);
exports.NodeResolver = NodeResolver;
//# sourceMappingURL=resolver.js.map
;