mirror of
https://github.com/shlinkio/shlink-web-client.git
synced 2026-02-27 12:16:36 +00:00
45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
import { SemVer } from '../../utils/helpers/version';
|
|
|
|
export interface ServerData {
|
|
name: string;
|
|
url: string;
|
|
apiKey: string;
|
|
}
|
|
|
|
export interface ServerWithId extends ServerData {
|
|
id: string;
|
|
}
|
|
|
|
export interface ReachableServer extends ServerWithId {
|
|
version: SemVer;
|
|
printableVersion: string;
|
|
}
|
|
|
|
export interface NonReachableServer extends ServerWithId {
|
|
serverNotReachable: true;
|
|
}
|
|
|
|
export interface NotFoundServer {
|
|
serverNotFound: true;
|
|
}
|
|
|
|
export type RegularServer = ReachableServer | NonReachableServer;
|
|
|
|
export type SelectedServer = RegularServer | NotFoundServer | null;
|
|
|
|
export type ServersMap = Record<string, ServerWithId>;
|
|
|
|
export const hasServerData = (server: SelectedServer | ServerData): server is ServerData =>
|
|
!!(server as ServerData)?.url && !!(server as ServerData)?.apiKey;
|
|
|
|
export const isServerWithId = (server: SelectedServer | ServerWithId): server is ServerWithId =>
|
|
!!server?.hasOwnProperty('id');
|
|
|
|
export const isReachableServer = (server: SelectedServer): server is ReachableServer =>
|
|
!!server?.hasOwnProperty('version');
|
|
|
|
export const isNotFoundServer = (server: SelectedServer): server is NotFoundServer =>
|
|
!!server?.hasOwnProperty('serverNotFound');
|
|
|
|
export const getServerId = (server: SelectedServer) => isServerWithId(server) ? server.id : '';
|