@tenderly/hardhat-tenderly missing explicit dependency on @tenderly/api-client
@tenderly/hardhat-tenderly depends directly on @tenderly/api-client:
https://github.com/Tenderly/hardhat-tenderly/blob/df43cb51b74a4d1224dadd6642caf03c3666f498/packages/hre-extender-v2/src/setup.ts#L10-L19
However, this is not captured as a direct dependency in its package.json:
https://github.com/Tenderly/hardhat-tenderly/blob/df43cb51b74a4d1224dadd6642caf03c3666f498/packages/hre-extender-v2/package.json#L37-L47
but only indirectly via the @tenderly/hardhat-integration dependency. This can lead to runtime module resolution errors, e.g.
An unexpected error occurred:
Error: Cannot find module '@tenderly/api-client/common/constants'
Require stack:
- /home/adam/myrepo/packages/hardhat/node_modules/@tenderly/hardhat-tenderly/dist/setup.js
- /home/adam/myrepo/packages/hardhat/node_modules/@tenderly/hardhat-tenderly/dist/index.js
- /home/adam/myrepo/packages/hardhat/hardhat.config.ts
- /home/adam/myrepo/packages/hardhat/node_modules/hardhat/internal/core/config/config-loading.js
- /home/adam/myrepo/packages/hardhat/node_modules/hardhat/internal/cli/cli.js
- /home/adam/myrepo/packages/hardhat/node_modules/hardhat/internal/cli/bootstrap.js
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:1134:15)
at Function.Module._resolveFilename.sharedData.moduleResolveFilenameHook.installedValue [as _resolveFilename] (/home/adam/myrepo/packages/hardhat/node_modules/ts-node/node_modules/@cspotcode/source-map-support/source-map-support.js:679:30)
at Function.Module._load (node:internal/modules/cjs/loader:975:27)
at Module.require (node:internal/modules/cjs/loader:1225:19)
at require (node:internal/modules/helpers:177:18)
at Object.<anonymous> (/home/adam/myrepo/packages/hardhat/node_modules/@tenderly/hardhat-tenderly/src/setup.ts:10:1)
at Module._compile (node:internal/modules/cjs/loader:1356:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1414:10)
at Object.require.extensions.<computed> [as .js] (/home/adam/myrepo/packages/hardhat/node_modules/ts-node/src/index.ts:1445:43)
at Module.load (node:internal/modules/cjs/loader:1197:32) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/home/adam/myrepo/packages/hardhat/node_modules/@tenderly/hardhat-tenderly/dist/setup.js',
'/home/adam/myrepo/packages/hardhat/node_modules/@tenderly/hardhat-tenderly/dist/index.js',
'/home/adam/myrepo/packages/hardhat/hardhat.config.ts',
'/home/adam/myrepo/packages/hardhat/node_modules/hardhat/internal/core/config/config-loading.js',
'/home/adam/myrepo/packages/hardhat/node_modules/hardhat/internal/cli/cli.js',
'/home/adam/myrepo/packages/hardhat/node_modules/hardhat/internal/cli/bootstrap.js'
]
}
This is with yarn v3 configured with nmHoistingLimits: workspaces, resulting in the API client being installed under
/home/adam/myrepo/packages/hardhat/node_modules/@tenderly/hardhat-integration/node_modules/@tenderly/api-client.
The solution is presumably to explicitly list @tenderly/api-client as a dependency in the package.json.