From 26f958446b5ad78726533a4cc98a3403ed3467e2 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Thu, 30 Jan 2025 23:16:04 +0100 Subject: [PATCH 1/6] feat!: Remove `resolve` dependency which increases min Node version to v8.10.0 --- .github/workflows/test.yml | 2 +- index.js | 29 ++--------------------------- package.json | 3 +-- 3 files changed, 4 insertions(+), 30 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a574d76..80660b7 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 diff --git a/index.js b/index.js index 00b91ea..d4e8afa 100644 --- a/index.js +++ b/index.js @@ -35,29 +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] - } - } + throw new Error('\'require-in-the-middle\' requires Node.js >= v9.3.0, v8.10.0') } // Feature detection: This property was added in Node.js 8.9.0, the same time @@ -69,10 +47,7 @@ if (require.resolve.paths) { return require.resolve(moduleName, { paths: [basedir] }) } } else { - const _resolve = require('resolve') - resolve = function (moduleName, basedir) { - return _resolve.sync(moduleName, { basedir }) - } + throw new Error('\'require-in-the-middle\' requires Node.js >= v9.3.0, v8.10.0') } // 'foo/bar.js' or 'foo/bar/index.js' => 'foo/bar' diff --git a/package.json b/package.json index 8e7a99f..6cec4b2 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", From 6c921841f64627115e35bd4307213b6e67245171 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Thu, 30 Jan 2025 23:17:12 +0100 Subject: [PATCH 2/6] error wording --- index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index d4e8afa..966f575 100644 --- a/index.js +++ b/index.js @@ -35,7 +35,7 @@ if (Module.isBuiltin) { // Added in node v18.6.0, v16.17.0 return builtinModules.has(moduleName) } } else { - throw new Error('\'require-in-the-middle\' requires Node.js >= v9.3.0, v8.10.0') + throw new Error('\'require-in-the-middle\' requires Node.js >= v9.3.0 or v8.10.0') } // Feature detection: This property was added in Node.js 8.9.0, the same time @@ -47,7 +47,7 @@ if (require.resolve.paths) { return require.resolve(moduleName, { paths: [basedir] }) } } else { - throw new Error('\'require-in-the-middle\' requires Node.js >= v9.3.0, v8.10.0') + 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' From 0958e34ac8b08113eca2ffdbd0c93f2817209fff Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Thu, 30 Jan 2025 23:20:43 +0100 Subject: [PATCH 3/6] Remove unnecessary v8.6 CI test --- .github/workflows/test.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 80660b7..c8e3209 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -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 From 834f9327ae48d23e9ef1051992b47c2e27e56843 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 23 Sep 2025 18:37:29 +0200 Subject: [PATCH 4/6] Further simplify --- index.js | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/index.js b/index.js index 966f575..67ed0b7 100644 --- a/index.js +++ b/index.js @@ -35,19 +35,7 @@ if (Module.isBuiltin) { // Added in node v18.6.0, v16.17.0 return builtinModules.has(moduleName) } } else { - throw new Error('\'require-in-the-middle\' requires Node.js >= v9.3.0 or v8.10.0') -} - -// 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 -let resolve -if (require.resolve.paths) { - resolve = function (moduleName, basedir) { - return require.resolve(moduleName, { paths: [basedir] }) - } -} else { - throw new Error('\'require-in-the-middle\' requires Node.js >= v9.3.0 or v8.10.0') + 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' @@ -285,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) From 6a27274f471f69a799625f729b4f7a65b3f320f1 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 24 Sep 2025 14:53:28 +0200 Subject: [PATCH 5/6] Update `engines.node` --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1129efb..2704098 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,6 @@ }, "homepage": "https://github.com/nodejs/require-in-the-middle#readme", "engines": { - "node": ">=8.6.0" + "node": ">=8.10.0" } } From 2de308ef5cb6167b9eebcbeafa897b8afe7307b9 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 24 Sep 2025 15:31:40 +0200 Subject: [PATCH 6/6] Update `engines.node` Co-authored-by: Thomas Watson --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2704098..b207e26 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,6 @@ }, "homepage": "https://github.com/nodejs/require-in-the-middle#readme", "engines": { - "node": ">=8.10.0" + "node": ">=9.3.0 || >=8.10.0 <9.0.0" } }