module-require.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. 'use strict';
  2. exports.__esModule = true;
  3. const Module = require('module');
  4. const path = require('path');
  5. // borrowed from babel-eslint
  6. /** @type {(filename: string) => Module} */
  7. function createModule(filename) {
  8. const mod = new Module(filename);
  9. mod.filename = filename;
  10. // @ts-expect-error _nodeModulesPaths are undocumented
  11. mod.paths = Module._nodeModulePaths(path.dirname(filename));
  12. return mod;
  13. }
  14. /** @type {import('./module-require').default} */
  15. exports.default = function moduleRequire(p) {
  16. try {
  17. // attempt to get espree relative to eslint
  18. const eslintPath = require.resolve('eslint');
  19. const eslintModule = createModule(eslintPath);
  20. // @ts-expect-error _resolveFilename is undocumented
  21. return require(Module._resolveFilename(p, eslintModule));
  22. } catch (err) { /* ignore */ }
  23. try {
  24. // try relative to entry point
  25. // @ts-expect-error TODO: figure out what this is
  26. return require.main.require(p);
  27. } catch (err) { /* ignore */ }
  28. // finally, try from here
  29. return require(p);
  30. };