mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
fix is-compatible-extension.test.ts types
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
a27c092c40
commit
fac1ce9678
@ -102,6 +102,12 @@ describe("Extension/App versions compatibility check", () => {
|
|||||||
})(getExtensionManifestMock({
|
})(getExtensionManifestMock({
|
||||||
lensEngine: ">=2.0",
|
lensEngine: ">=2.0",
|
||||||
}))).toThrow(/Invalid format/i);
|
}))).toThrow(/Invalid format/i);
|
||||||
|
|
||||||
|
expect(() => isCompatibleExtension({
|
||||||
|
appSemVer: semverCoerce("1.0.0"),
|
||||||
|
})(getExtensionManifestMock({
|
||||||
|
lensEngine: ">=2.0 <3.0",
|
||||||
|
}))).toThrow(/Invalid format/i);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("'*' cannot be used for any version matching (at least in the prefix)", () => {
|
it("'*' cannot be used for any version matching (at least in the prefix)", () => {
|
||||||
|
|||||||
@ -2,7 +2,6 @@
|
|||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
import assert from "assert";
|
|
||||||
import semver, { type SemVer } from "semver";
|
import semver, { type SemVer } from "semver";
|
||||||
import type { LensExtensionManifest } from "../../lens-extension";
|
import type { LensExtensionManifest } from "../../lens-extension";
|
||||||
|
|
||||||
@ -14,12 +13,9 @@ export const isCompatibleExtension = ({ appSemVer }: Dependencies): ((manifest:
|
|||||||
return (manifest: LensExtensionManifest): boolean => {
|
return (manifest: LensExtensionManifest): boolean => {
|
||||||
const appVersion = appSemVer.raw.split("-")[0]; // drop prerelease version if any, e.g. "-alpha.0"
|
const appVersion = appSemVer.raw.split("-")[0]; // drop prerelease version if any, e.g. "-alpha.0"
|
||||||
const manifestLensEngine = manifest.engines.lens;
|
const manifestLensEngine = manifest.engines.lens;
|
||||||
const lensEngine = semver.coerce(manifestLensEngine, {
|
const validVersion = manifestLensEngine.match(/^[\^0-9]\d*\.\d+\b/); // must start from ^ or number
|
||||||
loose: true,
|
|
||||||
includePrerelease: false,
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!lensEngine) {
|
if (!validVersion) {
|
||||||
const errorInfo = [
|
const errorInfo = [
|
||||||
`Invalid format for "manifest.engines.lens"="${manifestLensEngine}"`,
|
`Invalid format for "manifest.engines.lens"="${manifestLensEngine}"`,
|
||||||
`Range versions can only be specified starting with '^'.`,
|
`Range versions can only be specified starting with '^'.`,
|
||||||
@ -29,11 +25,11 @@ export const isCompatibleExtension = ({ appSemVer }: Dependencies): ((manifest:
|
|||||||
throw new Error(errorInfo);
|
throw new Error(errorInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
const { major: extMajor, minor: extMinor } = lensEngine;
|
const { major: extMajor, minor: extMinor } = semver.coerce(manifestLensEngine, {
|
||||||
const supportedRange = `^${extMajor}.${extMinor}`;
|
loose: true,
|
||||||
const supportedVersionsByExtension = semver.validRange(supportedRange);
|
includePrerelease: false,
|
||||||
|
}) as semver.SemVer;
|
||||||
assert(supportedVersionsByExtension, `${supportedRange} should always be a valid semver range`);
|
const supportedVersionsByExtension = semver.validRange(`^${extMajor}.${extMinor}`) as string;
|
||||||
|
|
||||||
return semver.satisfies(appVersion, supportedVersionsByExtension, {
|
return semver.satisfies(appVersion, supportedVersionsByExtension, {
|
||||||
loose: true,
|
loose: true,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user