diff --git a/js/resolc/package.json b/js/resolc/package.json index b142a8d..62c12e4 100644 --- a/js/resolc/package.json +++ b/js/resolc/package.json @@ -32,6 +32,7 @@ "@types/node": "^22.9.0", "commander": "^13.1.0", "package-json": "^10.0.1", + "resolve-pkg": "^2.0.0", "solc": ">=0.8.0 <=0.8.30" } } diff --git a/js/resolc/src/index.ts b/js/resolc/src/index.ts index 8c82276..cdf6ad2 100644 --- a/js/resolc/src/index.ts +++ b/js/resolc/src/index.ts @@ -3,6 +3,7 @@ import { spawn } from 'child_process' import { resolc, version as resolcVersion } from './resolc' import path from 'path' import { existsSync, readFileSync } from 'fs' +import resolvePkg from 'resolve-pkg' export type SolcInput = { [contractName: string]: { @@ -149,17 +150,15 @@ export function tryResolveImport(importPath: string) { const specifiedVersion = match[2] // "1.2.3" (optional) const relativePath = match[3] // "/path/to/file.sol" - let packageJsonPath - try { - packageJsonPath = require.resolve(path.join(basePackage, 'package.json')) - } catch { - throw new Error(`Could not resolve package ${basePackage}`) + const packageRoot = resolvePkg(basePackage) + if (!packageRoot) { + throw new Error(`Package ${basePackage} not found.`) } // Check if a version was specified and compare with the installed version if (specifiedVersion) { const installedVersion = JSON.parse( - readFileSync(packageJsonPath, 'utf-8') + readFileSync(path.join(packageRoot, 'package.json'), 'utf-8') ).version if (installedVersion !== specifiedVersion) { @@ -169,8 +168,6 @@ export function tryResolveImport(importPath: string) { } } - const packageRoot = path.dirname(packageJsonPath) - // Construct full path to the requested file const resolvedPath = path.join(packageRoot, relativePath) if (existsSync(resolvedPath)) { diff --git a/package-lock.json b/package-lock.json index 7d18f59..9a5f004 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,12 +44,17 @@ }, "js/resolc": { "name": "@parity/resolc", +<<<<<<< Updated upstream "version": "0.1.0", +======= + "version": "0.1.0-dev.16", +>>>>>>> Stashed changes "license": "Apache-2.0", "dependencies": { "@types/node": "^22.9.0", "commander": "^13.1.0", "package-json": "^10.0.1", + "resolve-pkg": "^2.0.0", "solc": ">=0.8.0 <=0.8.30" }, "bin": { @@ -5601,6 +5606,27 @@ "node": ">=4" } }, + "node_modules/resolve-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg/-/resolve-pkg-2.0.0.tgz", + "integrity": "sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ==", + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-pkg/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/resolve.exports": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz",