2024-05-12 19:16:59 +02:00
|
|
|
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";
|
2024-05-12 19:16:59 +02:00
|
|
|
|
|
|
|
export function getKeycloakVersionRangeForJar(params: {
|
2024-07-07 18:45:14 +02:00
|
|
|
doesImplementAccountV1Theme: boolean;
|
2024-05-12 21:41:49 +02:00
|
|
|
keycloakAccountV1Version: KeycloakAccountV1Version;
|
|
|
|
keycloakThemeAdditionalInfoExtensionVersion: KeycloakThemeAdditionalInfoExtensionVersion;
|
2024-05-16 09:20:37 +02:00
|
|
|
}): 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-05-12 19:16:59 +02:00
|
|
|
|
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":
|
2024-06-10 15:29:08 +02:00
|
|
|
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);
|
2024-06-10 15:29:08 +02:00
|
|
|
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
|
|
|
}
|
2024-06-10 15:29:08 +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;
|
2024-05-16 09:20:37 +02:00
|
|
|
} 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;
|
2024-05-12 19:16:59 +02:00
|
|
|
}
|
|
|
|
}
|