@xsin/xboard
Version:
Common utilities for XBoard, used by both the client and server
126 lines (115 loc) • 3.97 kB
text/typescript
import { Prisma, Permission, Role, Resource, User } from '@prisma/client';
export * from '@prisma/client';
type KeysOf<T, K extends keyof T = never> = Exclude<keyof T, K>;
type Nullable<T> = T | null;
type Optional<T> = T | undefined;
type NullOptional<T> = Nullable<Optional<T>>;
interface IListQueryResult<T> {
items: T[];
total: number;
page: number;
limit: number;
}
interface IListQueryDto {
page?: number;
limit?: number;
search?: string;
filters?: string[];
orders?: string[];
}
interface IApiResponseBase {
success: boolean;
code: number;
message: string;
data?: unknown;
}
interface IApiResponse<T> extends IApiResponseBase {
data?: T | null;
}
type FilterOperator = 'equals' | 'not' | 'lt' | 'gt' | 'lte' | 'gte' | 'contains' | 'startsWith' | 'endsWith' | 'in' | 'notIn';
type JsonValueInput = Prisma.NullableJsonNullValueInput | Prisma.InputJsonValue;
interface IDict extends Prisma.DictCreateInput {
}
declare enum XBError {
UNKNOWN = "error.unknown",
UNAUTHORIZED = "error.unauthorized",
FORBIDDEN = "error.forbidden",
NOT_FOUND = "error.notFound",
DUPLICATE = "error.duplicate",
INVALID_PARAMETERS = "error.invalidParameters",
EMAIL_NOT_VERIFIED = "error.emailNotVerified",
EMAIL_ALREADY_SENT = "error.emailAlreadySent",
EMAIL_SENT_FAILED = "error.emailSentFailed",
AUTH_OTP_EXISTS = "error.authOTPExists",
AUTH_INVALID_OTP = "error.authInvalidOTP",
AUTH_INVALID_PWD = "error.authInvalidPassword",
AUTH_UNVERIFIED_EMAIL = "error.authUnverifiedEmail"
}
declare enum EmailType {
VERIFY = "verify",
OTP = "otp"
}
declare enum EmailService {
NODEMAILER = "NODEMAILER",
RESEND = "RESEND"
}
interface ISendEmailResult {
type: EmailType;
time: Date;
duration?: number;
}
declare enum TPermission {
USER_SELECT = "user.select",
USER_CREATE = "user.create",
USER_UPDATE = "user.update",
USER_DELETE = "user.delete",
ROLE_SELECT = "role.select",
ROLE_CREATE = "role.create",
ROLE_UPDATE = "role.update",
ROLE_DELETE = "role.delete",
PERMISSION_SELECT = "permission.select",
PERMISSION_CREATE = "permission.create",
PERMISSION_UPDATE = "permission.update",
PERMISSION_DELETE = "permission.delete",
RESOURCE_SELECT = "resource.select",
RESOURCE_CREATE = "resource.create",
RESOURCE_UPDATE = "resource.update",
RESOURCE_DELETE = "resource.delete",
DIC_SELECT = "dic.select",
DIC_CREATE = "dic.create",
DIC_UPDATE = "dic.update",
DIC_DELETE = "dic.delete",
LOG_SELECT = "log.select",
LOG_DELETE = "log.delete"
}
interface IPermission extends Permission {
}
interface IRole extends Role {
}
interface IUserToken {
accessToken?: string;
refreshToken?: string;
accessTokenExpiredAt?: Date;
refreshTokenExpiredAt?: Date;
}
interface IUserExtra extends IUserToken {
roles?: Role[];
roleNames?: string[];
permissions?: Permission[];
permissionNames?: string[];
resources?: Resource[];
}
interface IUser extends Omit<User, 'password'>, IUserExtra {
}
interface IUserFull extends User, IUserExtra {
}
interface IUserTokenPayload {
iss: string;
username: string;
sub: string;
}
type TUserProfileFields = KeysOf<IUser, 'roles' | 'permissions' | 'resources' | 'online' | 'disabled' | 'createdBy' | 'updatedBy'>;
interface IUserProfile extends Pick<IUser, TUserProfileFields> {
}
declare function undefinedToNull<T>(obj: T, deep?: boolean): T;
export { EmailService, EmailType, type FilterOperator, type IApiResponse, type IApiResponseBase, type IDict, type IListQueryDto, type IListQueryResult, type IPermission, type IRole, type ISendEmailResult, type IUser, type IUserExtra, type IUserFull, type IUserProfile, type IUserToken, type IUserTokenPayload, type JsonValueInput, type KeysOf, type NullOptional, type Nullable, type Optional, TPermission, type TUserProfileFields, XBError, undefinedToNull };