Skip to content

Commit c4fb39f

Browse files
committed
fyn: loosen peer dep check
1 parent aca0948 commit c4fb39f

File tree

1 file changed

+27
-4
lines changed

1 file changed

+27
-4
lines changed

packages/fyn/lib/pkg-dep-resolver.ts

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -411,10 +411,33 @@ class PkgDepResolver {
411411
const peerDepMeta = json.peerDependenciesMeta || {};
412412
_.each(json.peerDependencies || (json as Record<string, unknown>).peerDepenencies as Record<string, string>, (semver: string, name: string) => {
413413
const peerId = `${name}@${semver}`;
414-
const resolved = this.resolvePackage({
415-
item: { name, semver } as DepItem,
416-
meta: { versions: {} } as PackageMeta
417-
});
414+
const item: DepItem = { name, semver } as DepItem;
415+
416+
// Check if the package is already resolved and installed (in _data)
417+
// For peer dependencies, we only care about packages that are actually installed,
418+
// not packages that could be resolved from lock files or dist tags
419+
const kpkg = this._data.getPkg(item) as KnownPackage | undefined;
420+
let resolved: string | false | undefined;
421+
422+
if (kpkg && kpkg[RESOLVE_ORDER]) {
423+
// Check if any already-resolved version satisfies the semver range
424+
const satisfies = (v: string, sv: string): boolean => {
425+
return semverUtil.satisfies(v, sv);
426+
};
427+
resolved = _.find(kpkg[RESOLVE_ORDER], v => satisfies(v, semver));
428+
}
429+
430+
// Also check getKnownSemver for exact semver matches that were resolved
431+
if (!resolved && kpkg) {
432+
const find = (rsv: Record<string, string | string[]> | undefined): string | false | undefined => {
433+
let x: string | string[] | undefined = rsv && rsv[semver];
434+
if (!x) return x;
435+
if (Array.isArray(x)) x = x[0];
436+
return x;
437+
};
438+
resolved = find(kpkg[LOCK_RSEMVERS]) || find(kpkg[RSEMVERS]);
439+
}
440+
418441
if (!resolved) {
419442
// Skip warning if peer dependency is marked as optional in peerDependenciesMeta
420443
const isOptional = peerDepMeta[name] && peerDepMeta[name].optional;

0 commit comments

Comments
 (0)