make MiUser.isRemoteUser / MiUser.isLocalUser generic

This commit is contained in:
Hazelnoot 2025-09-30 22:03:53 -04:00
parent 7c8d09f1c9
commit c2f6f54f50

View file

@ -430,6 +430,22 @@ export type MiPartialRemoteUser = Partial<MiUser> & {
uri: string;
};
export function isRemoteUser(user: MiUser): user is MiRemoteUser;
export function isRemoteUser<U extends PartialUser>(user: U): user is PartialRemoteUser<U>;
export function isRemoteUser(user: { host: string | null }): user is { host: string } {
return user.host != null;
}
export function isLocalUser(user: MiUser): user is MiLocalUser;
export function isLocalUser<U extends PartialUser>(user: U): user is PartialLocalUser<U>;
export function isLocalUser(user: { host: string | null }): user is { host: null } {
return user.host == null;
}
type PartialUser = Partial<MiUser> & { host: string | null, uri?: string | null };
type PartialLocalUser<U extends PartialUser> = U & { host: null, uri?: null };
type PartialRemoteUser<U extends PartialUser> = U & { host: string, uri?: string };
export const localUsernameSchema = { type: 'string', pattern: /^\w{1,20}$/.toString().slice(1, -1) } as const;
export const passwordSchema = { type: 'string', minLength: 1 } as const;
export const nameSchema = { type: 'string', minLength: 1, maxLength: 50 } as const;