Tim van der Lippe | 2c89197 | 2021-07-29 16:22:50 +0100 | [diff] [blame] | 1 | 'use strict'; |
| 2 | exports.__esModule = true; |
Tim van der Lippe | fdbd42e | 2020-04-07 15:14:36 +0100 | [diff] [blame] | 3 | |
Tim van der Lippe | 2c89197 | 2021-07-29 16:22:50 +0100 | [diff] [blame] | 4 | const Module = require('module'); |
| 5 | const path = require('path'); |
Tim van der Lippe | fdbd42e | 2020-04-07 15:14:36 +0100 | [diff] [blame] | 6 | |
| 7 | // borrowed from babel-eslint |
| 8 | function createModule(filename) { |
Tim van der Lippe | 2c89197 | 2021-07-29 16:22:50 +0100 | [diff] [blame] | 9 | const mod = new Module(filename); |
| 10 | mod.filename = filename; |
| 11 | mod.paths = Module._nodeModulePaths(path.dirname(filename)); |
| 12 | return mod; |
Tim van der Lippe | fdbd42e | 2020-04-07 15:14:36 +0100 | [diff] [blame] | 13 | } |
| 14 | |
| 15 | exports.default = function moduleRequire(p) { |
| 16 | try { |
| 17 | // attempt to get espree relative to eslint |
Tim van der Lippe | 2c89197 | 2021-07-29 16:22:50 +0100 | [diff] [blame] | 18 | const eslintPath = require.resolve('eslint'); |
| 19 | const eslintModule = createModule(eslintPath); |
| 20 | return require(Module._resolveFilename(p, eslintModule)); |
Tim van der Lippe | bc3a0b7 | 2021-11-08 15:22:37 +0000 | [diff] [blame^] | 21 | } catch (err) { /* ignore */ } |
Tim van der Lippe | fdbd42e | 2020-04-07 15:14:36 +0100 | [diff] [blame] | 22 | |
| 23 | try { |
| 24 | // try relative to entry point |
Tim van der Lippe | 2c89197 | 2021-07-29 16:22:50 +0100 | [diff] [blame] | 25 | return require.main.require(p); |
Tim van der Lippe | bc3a0b7 | 2021-11-08 15:22:37 +0000 | [diff] [blame^] | 26 | } catch (err) { /* ignore */ } |
Tim van der Lippe | fdbd42e | 2020-04-07 15:14:36 +0100 | [diff] [blame] | 27 | |
| 28 | // finally, try from here |
Tim van der Lippe | 2c89197 | 2021-07-29 16:22:50 +0100 | [diff] [blame] | 29 | return require(p); |
| 30 | }; |