gravitlauncher-remotecontrol-js
Version:
GravitLauncher RemoteControl module nodejs implementation
51 lines (50 loc) • 2.48 kB
TypeScript
export interface RequestParams<LogEnabled extends boolean> {
rawUrl: string;
token: string;
command: string;
log?: LogEnabled;
}
export interface ExtractDataOptions<LogEnabled extends boolean> {
onException: (exception: string, lines: Line<LogEnabled>[]) => void;
onError: (error: ApiErrorResponse['error']) => void;
removeColors?: true;
filter?: {
dev?: true;
debug?: true;
info?: true;
error?: true;
};
}
export type ExtractedData<LogEnabled extends boolean> = {
lines: Line<LogEnabled>[];
data: string;
};
export default request;
export declare function request<L extends boolean = true>(params: RequestParams<L>, extractData: ExtractDataOptions<L>): Promise<ExtractedData<L>>;
export declare function request<L extends boolean = false>(params: RequestParams<L>, extractData: ExtractDataOptions<L>): Promise<ExtractedData<L>>;
export declare function request<L extends boolean = true>(params: RequestParams<L>, extractData?: undefined): Promise<ApiResponse<L>>;
export declare function request<L extends boolean = false>(params: RequestParams<L>, extractData?: undefined): Promise<ApiResponse<L>>;
export declare const isError: (response: ApiResponse<boolean>) => response is ApiErrorResponse;
export declare const getSuccess: <LogEnabled extends boolean>(response: ApiResponse<LogEnabled>) => ApiSuccessResponse<LogEnabled>;
export declare const isException: <LogEnabled extends boolean>(response: ApiResponse<LogEnabled>) => response is ApiExceptionResponse<LogEnabled>;
export type ApiResponse<LogEnabled extends boolean> = Readonly<ApiSuccessResponse<LogEnabled> | ApiExceptionResponse<LogEnabled> | ApiErrorResponse>;
export type Line<LogEnabled extends boolean> = LogEnabled extends true ? {
level: 'DEV' | 'DEBUG' | 'INFO' | 'ERROR';
message: string;
} : undefined;
export interface ApiSuccessResponse<LogEnabled extends boolean> {
data: {
lines: Line<LogEnabled>[];
success: true;
};
}
export interface ApiExceptionResponse<LogEnabled extends boolean> {
data: {
lines: Line<LogEnabled>[];
exception: string;
success: false;
};
}
export interface ApiErrorResponse {
error: 'RemoteControl disabled' | 'You can used only GET and POST requests' | 'Missing required parameter: token' | 'Token not valid' | 'Missing required parameter: command' | 'You cannot execute this command';
}