diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a574d76..c8e3209 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,7 +11,7 @@ jobs: test-vers: strategy: matrix: - node: ['8.6', '8', '10.0', '10', '12.0', '12', '14.0', '14', '16.0', '16', '18.0', '18', '20', '22'] + node: ['8.10', '10.0', '10', '12.0', '12', '14.0', '14', '16.0', '16', '18.0', '18', '20', '22'] runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -20,15 +20,3 @@ jobs: node-version: ${{ matrix.node }} - run: npm install - run: npm test - test-expose-http2: - strategy: - matrix: - node: ['8.6'] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node }} - - run: npm install - - run: NODE_OPTIONS='--expose-http2' npm test diff --git a/index.js b/index.js index 11ea82a..67ed0b7 100644 --- a/index.js +++ b/index.js @@ -35,54 +35,7 @@ if (Module.isBuiltin) { // Added in node v18.6.0, v16.17.0 return builtinModules.has(moduleName) } } else { - const _resolve = require('resolve') - const [major, minor] = process.versions.node.split('.').map(Number) - if (major === 8 && minor < 8) { - // For node versions `[8.0, 8.8)` the "http2" module was built-in but - // behind the `--expose-http2` flag. `resolve` only considers unflagged - // modules to be core: https://github.com/browserify/resolve/issues/139 - // However, for `ExportsCache` to work for "http2" we need it to be - // considered core. - isCore = moduleName => { - if (moduleName === 'http2') { - return true - } - // Prefer `resolve.core` lookup to `resolve.isCore(moduleName)` because - // the latter is doing version range matches for every call. - return !!_resolve.core[moduleName] - } - } else { - isCore = moduleName => { - // Prefer `resolve.core` lookup to `resolve.isCore(moduleName)` because - // the latter is doing version range matches for every call. - return !!_resolve.core[moduleName] - } - } -} - -let _resolve - -function resolve (moduleName, basedir) { - // Feature detection: This property was added in Node.js 8.9.0, the same time - // as the `paths` options argument was added to the `require.resolve` function, - // which is the one we want - if (!_resolve) { - // require.resolve might be undefined when using Node SEA mode: - // https://nodejs.org/api/single-executable-applications.html - // Also see https://github.com/nodejs/require-in-the-middle/issues/105 - if (require.resolve && require.resolve.paths) { - _resolve = function (moduleName, basedir) { - return require.resolve(moduleName, { paths: [basedir] }) - } - } else { - const resolve = require('resolve') - _resolve = function (moduleName, basedir) { - return resolve.sync(moduleName, { basedir }) - } - } - } - - return _resolve(moduleName, basedir) + throw new Error('\'require-in-the-middle\' requires Node.js >=v9.3.0 or >=v8.10.0') } // 'foo/bar.js' or 'foo/bar/index.js' => 'foo/bar' @@ -320,7 +273,7 @@ function Hook (modules, options, onrequire) { // figure out if this is the main module file, or a file inside the module let res try { - res = resolve(moduleName, basedir) + res = require.resolve(moduleName, { paths: [basedir] }) } catch (e) { debug('could not resolve module: %s', moduleName) self._cache.set(filename, exports, core) diff --git a/package.json b/package.json index 2088ad7..b207e26 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,7 @@ "types": "types/index.d.ts", "dependencies": { "debug": "^4.3.5", - "module-details-from-path": "^1.0.3", - "resolve": "^1.22.8" + "module-details-from-path": "^1.0.3" }, "devDependencies": { "@babel/core": "^7.9.0", @@ -53,6 +52,6 @@ }, "homepage": "https://github.com/nodejs/require-in-the-middle#readme", "engines": { - "node": ">=8.6.0" + "node": ">=9.3.0 || >=8.10.0 <9.0.0" } }