( raw: RawDep, options: CheckOptions, filter: DependencyFilter = () => true, )
| 229 | } |
| 230 | |
| 231 | export async function resolveDependency( |
| 232 | raw: RawDep, |
| 233 | options: CheckOptions, |
| 234 | filter: DependencyFilter = () => true, |
| 235 | ) { |
| 236 | const dep = { ...raw } as ResolvedDepChange |
| 237 | |
| 238 | const configMode = getPackageMode(dep.name, options) |
| 239 | const optionMode = options.mode |
| 240 | const mergeMode = configMode |
| 241 | ? (configMode === optionMode) |
| 242 | ? optionMode |
| 243 | : optionMode === 'default' ? configMode : 'ignore' |
| 244 | : optionMode |
| 245 | if (isLocalPackage(raw.currentVersion) || isUrlPackage(raw.currentVersion) || !raw.update || !await Promise.resolve(filter(raw)) || mergeMode === 'ignore') { |
| 246 | return { |
| 247 | ...raw, |
| 248 | diff: null, |
| 249 | targetVersion: raw.currentVersion, |
| 250 | update: false, |
| 251 | } as ResolvedDepChange |
| 252 | } |
| 253 | if (isAliasedPackage(raw.currentVersion)) { |
| 254 | const { name, version, protocol } = parseAliasedPackage(raw.currentVersion) |
| 255 | dep.name = name || dep.name |
| 256 | dep.currentVersion = version |
| 257 | dep.aliasName = raw.name |
| 258 | dep.protocol = protocol |
| 259 | if (!version) { |
| 260 | dep.diff = null |
| 261 | dep.targetVersion = version |
| 262 | dep.update = false |
| 263 | return dep |
| 264 | } |
| 265 | } |
| 266 | |
| 267 | let resolvedName = dep.name |
| 268 | |
| 269 | // manage Yarn resolutions (e.g. "foo@1/bar") |
| 270 | if (dep.source === 'resolutions') { |
| 271 | const packages = parseYarnPackagePath(dep.name) |
| 272 | resolvedName = packages.pop() ?? dep.name |
| 273 | } |
| 274 | // manage pnpm overrides (e.g. "foo@1>bar") |
| 275 | else if (dep.source === 'pnpm.overrides') { |
| 276 | const packages = parsePnpmPackagePath(dep.name) |
| 277 | resolvedName = packages.pop() ?? dep.name |
| 278 | } |
| 279 | |
| 280 | const pkgData = await getPackageData(resolvedName, dep.protocol, options.cwd) |
| 281 | const { error, deprecated } = pkgData |
| 282 | |
| 283 | dep.pkgData = pkgData |
| 284 | let err: Error | string | null = null |
| 285 | let target: string | undefined |
| 286 | |
| 287 | if (error == null) { |
| 288 | try { |
no test coverage detected
searching dependent graphs…