refactor(read-package-hook): type checking perf (#7900)

This commit is contained in:
Khải authored and GitHub committed 2024-04-11 15:39:13 +02:00
1 parent 18f4060ac8
commit bcc8eb2622
4 files changed
+9 -18

No files matched your search

@@ -24,14 +24,14 @@ export function createPackageExtender (
return extendPkgHook.bind(null, extensionsByPkgName) as ReadPackageHook
}
function extendPkgHook (extensionsByPkgName: ExtensionsByPkgName, manifest: PackageManifest) {
function extendPkgHook (extensionsByPkgName: ExtensionsByPkgName, manifest: PackageManifest): PackageManifest {
const extensions = extensionsByPkgName.get(manifest.name)
if (extensions == null) return manifest
extendPkg(manifest, extensions)
return manifest
}
function extendPkg (manifest: PackageManifest, extensions: PackageExtensionMatch[]) {
function extendPkg (manifest: PackageManifest, extensions: PackageExtensionMatch[]): void {
for (const { range, packageExtension } of extensions) {
if (range != null && !semver.satisfies(manifest.version, range)) continue
for (const field of ['dependencies', 'optionalDependencies', 'peerDependencies', 'peerDependenciesMeta'] as const) {
@@ -3,7 +3,7 @@ import semver from 'semver'
import partition from 'ramda/src/partition'
import { type Dependencies, type PackageManifest, type ReadPackageHook } from '@pnpm/types'
import { PnpmError } from '@pnpm/error'
import { parseOverrides } from '@pnpm/parse-overrides'
import { parseOverrides, type VersionOverride as VersionOverrideBase } from '@pnpm/parse-overrides'
import normalizePath from 'normalize-path'
import { isIntersectingRange } from './isIntersectingRange'
@@ -45,7 +45,7 @@ export function createVersionsOverrider (
}) as ReadPackageHook
}
function tryParseOverrides (overrides: Record<string, string>) {
function tryParseOverrides (overrides: Record<string, string>): VersionOverrideBase[] {
try {
return parseOverrides(overrides)
} catch (e) {
@@ -53,16 +53,7 @@ function tryParseOverrides (overrides: Record<string, string>) {
}
}
interface VersionOverride {
parentPkg?: {
name: string
pref?: string
}
targetPkg: {
name: string
pref?: string
}
newPref: string
interface VersionOverride extends VersionOverrideBase {
linkTarget?: string
linkFileTarget?: string
}
@@ -78,7 +69,7 @@ function overrideDepsOfPkg (
{ manifest, dir }: { manifest: PackageManifest, dir: string | undefined },
versionOverrides: VersionOverrideWithParent[],
genericVersionOverrides: VersionOverride[]
) {
): void {
if (manifest.dependencies != null) overrideDeps(versionOverrides, genericVersionOverrides, manifest.dependencies, dir)
if (manifest.optionalDependencies != null) overrideDeps(versionOverrides, genericVersionOverrides, manifest.optionalDependencies, dir)
if (manifest.devDependencies != null) overrideDeps(versionOverrides, genericVersionOverrides, manifest.devDependencies, dir)
@@ -90,7 +81,7 @@ function overrideDeps (
genericVersionOverrides: VersionOverride[],
deps: Dependencies,
dir: string | undefined
) {
): void {
for (const [name, pref] of Object.entries(deps)) {
const versionOverride =
pickMostSpecificVersionOverride(
@@ -1,6 +1,6 @@
import semver from 'semver'
export function isIntersectingRange (range1: string | undefined, range2: string) {
export function isIntersectingRange (range1: string | undefined, range2: string): boolean {
return !range1 ||
range2 === range1 ||
semver.validRange(range2) != null &&
+1 -1
View File
@@ -1,6 +1,6 @@
import semver from 'semver'
export function isSubRange (superRange: string | undefined, subRange: string) {
export function isSubRange (superRange: string | undefined, subRange: string): boolean {
return !superRange ||
subRange === superRange ||
semver.validRange(subRange) != null &&