keycloak_theme/src/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.ts

97 lines
3.4 KiB
TypeScript
Raw Normal View History

import { assert, type Equals } from "tsafe/assert";
2024-05-20 15:48:51 +02:00
import type {
KeycloakAccountV1Version,
KeycloakThemeAdditionalInfoExtensionVersion
} from "./extensionVersions";
2024-05-17 05:13:41 +02:00
import type { KeycloakVersionRange } from "../../shared/KeycloakVersionRange";
export function getKeycloakVersionRangeForJar(params: {
2024-07-07 18:45:14 +02:00
doesImplementAccountV1Theme: boolean;
keycloakAccountV1Version: KeycloakAccountV1Version;
keycloakThemeAdditionalInfoExtensionVersion: KeycloakThemeAdditionalInfoExtensionVersion;
}): KeycloakVersionRange | undefined {
2024-05-20 15:48:51 +02:00
const {
keycloakAccountV1Version,
keycloakThemeAdditionalInfoExtensionVersion,
2024-07-07 18:45:14 +02:00
doesImplementAccountV1Theme
2024-05-20 15:48:51 +02:00
} = params;
2024-07-07 18:45:14 +02:00
if (doesImplementAccountV1Theme) {
2024-05-17 05:13:41 +02:00
const keycloakVersionRange = (() => {
switch (keycloakAccountV1Version) {
case null:
switch (keycloakThemeAdditionalInfoExtensionVersion) {
case null:
return "21-and-below" as const;
case "1.1.5":
return undefined;
}
2024-05-20 15:48:51 +02:00
assert<
Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>
>(false);
2024-05-17 05:13:41 +02:00
case "0.3":
switch (keycloakThemeAdditionalInfoExtensionVersion) {
case null:
return undefined;
case "1.1.5":
return "23" as const;
}
2024-05-20 15:48:51 +02:00
assert<
Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>
>(false);
2024-05-17 05:13:41 +02:00
case "0.4":
switch (keycloakThemeAdditionalInfoExtensionVersion) {
case null:
return undefined;
case "1.1.5":
return "24" as const;
2024-05-17 05:13:41 +02:00
}
2024-05-20 15:48:51 +02:00
assert<
Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>
>(false);
case "0.6":
switch (keycloakThemeAdditionalInfoExtensionVersion) {
case null:
return undefined;
case "1.1.5":
return "25-and-above" as const;
}
2024-05-17 05:13:41 +02:00
}
assert<Equals<typeof keycloakAccountV1Version, never>>(false);
2024-05-17 05:13:41 +02:00
})();
2024-05-20 15:48:51 +02:00
assert<
Equals<
typeof keycloakVersionRange,
2024-07-07 18:45:14 +02:00
KeycloakVersionRange.WithAccountV1Theme | undefined
2024-05-20 15:48:51 +02:00
>
>();
2024-05-17 05:13:41 +02:00
return keycloakVersionRange;
} else {
2024-05-17 05:13:41 +02:00
const keycloakVersionRange = (() => {
if (keycloakAccountV1Version !== null) {
return undefined;
}
switch (keycloakThemeAdditionalInfoExtensionVersion) {
case null:
return "21-and-below";
case "1.1.5":
return "22-and-above";
}
2024-05-20 15:48:51 +02:00
assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(
false
);
2024-05-17 05:13:41 +02:00
})();
2024-05-20 15:48:51 +02:00
assert<
Equals<
typeof keycloakVersionRange,
2024-07-07 18:45:14 +02:00
KeycloakVersionRange.WithoutAccountV1Theme | undefined
2024-05-20 15:48:51 +02:00
>
>();
2024-05-17 05:13:41 +02:00
return keycloakVersionRange;
}
}