MCPcopy Index your code
hub / github.com/nodejs/nodejs.org / parseCompat

Function parseCompat

apps/site/util/download/index.tsx:48–74  ·  view source on GitHub ↗
(
  items: Array<T>,
  { os, installMethod, platform, version, release }: Types.ReleaseContextType
)

Source from the content-addressed store, hash-verified

46 * Parses compatibility of dropdown items based on context
47 */
48export const parseCompat = <
49 K extends string,
50 T extends DownloadDropdownItem<K>,
51>(
52 items: Array<T>,
53 { os, installMethod, platform, version, release }: Types.ReleaseContextType
54): Array<T> => {
55 const checkCompatibility = (compatibility: T['compatibility']) => {
56 const checks = [
57 !compatibility.os || compatibility.os.includes(os),
58 !compatibility.installMethod ||
59 compatibility.installMethod.includes(installMethod),
60 !compatibility.platform || compatibility.platform.includes(platform),
61 !compatibility.semver ||
62 compatibility.semver.every(semver => satisfies(version, semver)),
63 !compatibility.releases ||
64 compatibility.releases.includes(release.status),
65 ];
66
67 return checks.every(Boolean);
68 };
69
70 return items.map(item => ({
71 ...item,
72 disabled: !checkCompatibility(item.compatibility),
73 }));
74};
75
76/**
77 * Creates an icon element for a component

Callers 5

OperatingSystemDropdownFunction · 0.90
PlatformDropdownFunction · 0.90
PackageManagerDropdownFunction · 0.90
download.test.mjsFile · 0.90

Calls 1

checkCompatibilityFunction · 0.85

Tested by

no test coverage detected