From 017448cb40e07b0e77e0a99d0caaa15c05118099 Mon Sep 17 00:00:00 2001 From: David Antoon Date: Wed, 21 Oct 2026 12:35:20 +0300 Subject: [PATCH] perf(sdk): import only the semver functions the ESM loader uses semver.utils.ts imported the semver package root, which loads all 46 of its files, at startup. It uses seven functions; importing them from their own modules (semver/functions/*.js, semver/ranges/*.js) loads 23 files, with the same results. --- libs/sdk/src/esm-loader/semver.utils.ts | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/libs/sdk/src/esm-loader/semver.utils.ts b/libs/sdk/src/esm-loader/semver.utils.ts index a01db078b..35188f24f 100644 --- a/libs/sdk/src/esm-loader/semver.utils.ts +++ b/libs/sdk/src/esm-loader/semver.utils.ts @@ -4,7 +4,13 @@ * Isolates the semver dependency to a single file for easier maintenance. */ -import * as semver from 'semver'; +import semverCompare from 'semver/functions/compare.js'; +import semverGt from 'semver/functions/gt.js'; +import semverRcompare from 'semver/functions/rcompare.js'; +import semverSatisfies from 'semver/functions/satisfies.js'; +import semverValid from 'semver/functions/valid.js'; +import semverMaxSatisfying from 'semver/ranges/max-satisfying.js'; +import semverValidRange from 'semver/ranges/valid.js'; /** * Check if a range string is a dist-tag (not a semver range). @@ -14,7 +20,7 @@ import * as semver from 'semver'; * must be guarded separately before calling this function. */ function isDistTag(range: string): boolean { - return /^[a-zA-Z][a-zA-Z0-9]*$/.test(range) && semver.validRange(range) === null; + return /^[a-zA-Z][a-zA-Z0-9]*$/.test(range) && semverValidRange(range) === null; } /** @@ -26,7 +32,7 @@ function isDistTag(range: string): boolean { */ export function satisfiesRange(version: string, range: string): boolean { if (range === 'latest' || isDistTag(range)) return true; - return semver.satisfies(version, range); + return semverSatisfies(version, range); } /** @@ -38,10 +44,10 @@ export function satisfiesRange(version: string, range: string): boolean { */ export function maxSatisfying(versions: string[], range: string): string | null { if (range === 'latest' || isDistTag(range)) { - const sorted = versions.filter((v) => semver.valid(v)).sort(semver.rcompare); + const sorted = versions.filter((v) => semverValid(v)).sort(semverRcompare); return sorted[0] ?? null; } - return semver.maxSatisfying(versions, range); + return semverMaxSatisfying(versions, range); } /** @@ -49,14 +55,14 @@ export function maxSatisfying(versions: string[], range: string): string | null */ export function isValidRange(range: string): boolean { if (range === 'latest' || isDistTag(range)) return true; - return semver.validRange(range) !== null; + return semverValidRange(range) !== null; } /** * Check if a string is a valid semver version. */ export function isValidVersion(version: string): boolean { - return semver.valid(version) !== null; + return semverValid(version) !== null; } /** @@ -66,12 +72,12 @@ export function isValidVersion(version: string): boolean { * - positive if v1 > v2 */ export function compareVersions(v1: string, v2: string): number { - return semver.compare(v1, v2); + return semverCompare(v1, v2); } /** * Check if v1 is greater than v2. */ export function isNewerVersion(v1: string, v2: string): boolean { - return semver.gt(v1, v2); + return semverGt(v1, v2); }