From fdb55ae234679697a5c922edfe493f89fa501389 Mon Sep 17 00:00:00 2001 From: RahulGautamSingh <rahultesnik@gmail.com> Date: Fri, 7 Jan 2022 02:51:35 +0545 Subject: [PATCH] refactor(hex): ensure strict null check (#13394) * added hex to strictNullCheck files * enabled strict null check in versioning/hex * modified npm/range --- lib/versioning/hex/index.spec.ts | 2 +- lib/versioning/hex/index.ts | 65 +++++++++++++++++++------------- tsconfig.strict.json | 1 + 3 files changed, 40 insertions(+), 28 deletions(-) diff --git a/lib/versioning/hex/index.spec.ts b/lib/versioning/hex/index.spec.ts index 05e6beadf4..4426bde971 100644 --- a/lib/versioning/hex/index.spec.ts +++ b/lib/versioning/hex/index.spec.ts @@ -47,7 +47,7 @@ describe('versioning/hex/index', () => { `( 'isLessThanRange($version, $range) === $expected', ({ version, range, expected }) => { - expect(hexScheme.isLessThanRange(version, range)).toBe(expected); + expect(hexScheme.isLessThanRange?.(version, range)).toBe(expected); } ); diff --git a/lib/versioning/hex/index.ts b/lib/versioning/hex/index.ts index 161c276bf3..08b195affb 100644 --- a/lib/versioning/hex/index.ts +++ b/lib/versioning/hex/index.ts @@ -42,52 +42,63 @@ function npm2hex(input: string): string { return output; } -const isLessThanRange = (version: string, range: string): boolean => - npm.isLessThanRange(hex2npm(version), hex2npm(range)); +function isLessThanRange(version: string, range: string): boolean { + return !!npm.isLessThanRange?.(hex2npm(version), hex2npm(range)); +} -const isValid = (input: string): string | boolean => - npm.isValid(hex2npm(input)); +const isValid = (input: string): boolean => !!npm.isValid(hex2npm(input)); const matches = (version: string, range: string): boolean => npm.matches(hex2npm(version), hex2npm(range)); -const getSatisfyingVersion = (versions: string[], range: string): string => - npm.getSatisfyingVersion(versions.map(hex2npm), hex2npm(range)); +function getSatisfyingVersion( + versions: string[], + range: string +): string | null { + return npm.getSatisfyingVersion(versions.map(hex2npm), hex2npm(range)); +} -const minSatisfyingVersion = (versions: string[], range: string): string => - npm.minSatisfyingVersion(versions.map(hex2npm), hex2npm(range)); +function minSatisfyingVersion( + versions: string[], + range: string +): string | null { + return npm.minSatisfyingVersion(versions.map(hex2npm), hex2npm(range)); +} -const getNewValue = ({ +function getNewValue({ currentValue, rangeStrategy, currentVersion, newVersion, -}: NewValueConfig): string => { +}: NewValueConfig): string | null { let newSemver = npm.getNewValue({ currentValue: hex2npm(currentValue), rangeStrategy, currentVersion, newVersion, }); - newSemver = npm2hex(newSemver); - if (regEx(/~>\s*(\d+\.\d+\.\d+)$/).test(currentValue)) { - newSemver = newSemver.replace( - regEx(/[\^~]\s*(\d+\.\d+\.\d+)/), - (_str, p1: string) => `~> ${p1}` - ); - } else if (regEx(/~>\s*(\d+\.\d+)$/).test(currentValue)) { - newSemver = newSemver.replace( - regEx(/\^\s*(\d+\.\d+)(\.\d+)?/), - (_str, p1: string) => `~> ${p1}` - ); - } else { - newSemver = newSemver.replace(regEx(/~\s*(\d+\.\d+\.\d)/), '~> $1'); - } - if (npm.isVersion(newSemver)) { - newSemver = `== ${newSemver}`; + if (newSemver) { + newSemver = npm2hex(newSemver); + + if (regEx(/~>\s*(\d+\.\d+\.\d+)$/).test(currentValue)) { + newSemver = newSemver.replace( + regEx(/[\^~]\s*(\d+\.\d+\.\d+)/), + (_str, p1: string) => `~> ${p1}` + ); + } else if (regEx(/~>\s*(\d+\.\d+)$/).test(currentValue)) { + newSemver = newSemver.replace( + regEx(/\^\s*(\d+\.\d+)(\.\d+)?/), + (_str, p1: string) => `~> ${p1}` + ); + } else { + newSemver = newSemver.replace(regEx(/~\s*(\d+\.\d+\.\d)/), '~> $1'); + } + if (npm.isVersion(newSemver)) { + newSemver = `== ${newSemver}`; + } } return newSemver; -}; +} export { isValid }; diff --git a/tsconfig.strict.json b/tsconfig.strict.json index 852d522237..2a9c713c0b 100644 --- a/tsconfig.strict.json +++ b/tsconfig.strict.json @@ -70,6 +70,7 @@ "lib/util/url.ts", "lib/versioning/gradle/compare.ts", "lib/versioning/maven/**/*.ts", + "lib/versioning/hex/**/*.ts", "lib/versioning/node/**/*.ts", "lib/versioning/npm/**/*.ts", "lib/versioning/ruby/**/*.ts", -- GitLab