From e73dc03031753219d2c6e9254fa982b5dad191ff Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Thu, 12 May 2022 16:23:37 -0400 Subject: [PATCH] more type fixing Signed-off-by: Sebastian Malton --- .../is-compatible-extension.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/extensions/extension-discovery/is-compatible-extension/is-compatible-extension.ts b/src/extensions/extension-discovery/is-compatible-extension/is-compatible-extension.ts index de601ee339..6418ac4c7f 100644 --- a/src/extensions/extension-discovery/is-compatible-extension/is-compatible-extension.ts +++ b/src/extensions/extension-discovery/is-compatible-extension/is-compatible-extension.ts @@ -2,6 +2,7 @@ * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ +import assert from "assert"; import semver, { type SemVer } from "semver"; import type { LensExtensionManifest } from "../../lens-extension"; @@ -13,9 +14,12 @@ export const isCompatibleExtension = ({ appSemVer }: Dependencies): ((manifest: return (manifest: LensExtensionManifest): boolean => { const appVersion = appSemVer.raw.split("-")[0]; // drop prerelease version if any, e.g. "-alpha.0" const manifestLensEngine = manifest.engines.lens; - const validVersion = manifestLensEngine.match(/^[\^0-9]\d*\.\d+\b/); // must start from ^ or number + const lensEngine = semver.coerce(manifestLensEngine, { + loose: true, + includePrerelease: false, + }); - if (!validVersion) { + if (!lensEngine) { const errorInfo = [ `Invalid format for "manifest.engines.lens"="${manifestLensEngine}"`, `Range versions can only be specified starting with '^'.`, @@ -25,11 +29,11 @@ export const isCompatibleExtension = ({ appSemVer }: Dependencies): ((manifest: throw new Error(errorInfo); } - const { major: extMajor, minor: extMinor } = semver.coerce(manifestLensEngine, { - loose: true, - includePrerelease: false, - }); - const supportedVersionsByExtension: string = semver.validRange(`^${extMajor}.${extMinor}`); + const { major: extMajor, minor: extMinor } = lensEngine; + const supportedRange = `^${extMajor}.${extMinor}`; + const supportedVersionsByExtension = semver.validRange(supportedRange); + + assert(supportedVersionsByExtension, `${supportedRange} should always be a valid semver range`); return semver.satisfies(appVersion, supportedVersionsByExtension, { loose: true,