From 2b2fe6db5bc5931fa8cdd9c64a76ce0c5cf9eea7 Mon Sep 17 00:00:00 2001 From: lizheming Date: Sat, 30 Apr 2022 23:27:01 +0800 Subject: [PATCH] feat: refactor d.ts --- src/index.ts | 15 ++++++++------- src/types/comment.ts | 6 ++---- src/types/user.ts | 2 +- src/util.ts | 6 +++--- tsconfig.json | 3 ++- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/index.ts b/src/index.ts index 36257bd..9242294 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,7 @@ -import { CommentId, GetAdminListRequest, GetAdminListResponse, GetCountRequest, GetCountResponse, GetListRequest, GetListResponse, GetRecentCommentRequest, GetRecentCommentResponse, GetUserResponse, LoginRequest, PostCommentRequest, PostCommentResponse, RegisterUserRequest, UpdateCommentRequest, UpdateUserRequest, WalineAPIOptions } from "./types"; +import { BasicResponse, CommentId, GetAdminListRequest, GetAdminListResponse, GetCountRequest, GetCountResponse, GetListRequest, GetListResponse, GetRecentCommentRequest, GetRecentCommentResponse, GetUserResponse, LoginRequest, PostCommentRequest, PostCommentResponse, RegisterUserRequest, UpdateCommentRequest, UpdateUserRequest, WalineAPIOptions } from "./types"; import { fetchFactory, qs } from "./util"; +type BaseResponse = Required; export default function(options: WalineAPIOptions) { const request = fetchFactory(options); return { @@ -27,7 +28,7 @@ export default function(options: WalineAPIOptions) { }); }, update(data: UpdateCommentRequest) { - return request('/comment', { + return request('/comment', { method: 'PUT', headers: { 'content-type': 'application/json', @@ -36,7 +37,7 @@ export default function(options: WalineAPIOptions) { }); }, delete(commentId: CommentId) { - return request('/comment/' + commentId, { method: 'DELETE' }); + return request('/comment/' + commentId, { method: 'DELETE' }); } }, user: { @@ -44,7 +45,7 @@ export default function(options: WalineAPIOptions) { return request('/token'); }, register(params: RegisterUserRequest) { - return request('/user', { + return request('/user', { method: 'POST', headers: { 'content-type': 'application/json', @@ -53,7 +54,7 @@ export default function(options: WalineAPIOptions) { }); }, update(params: UpdateUserRequest) { - return request('/user', { + return request('/user', { method: 'PUT', headers: { 'content-type': 'application/json', @@ -62,7 +63,7 @@ export default function(options: WalineAPIOptions) { }); }, login(params: LoginRequest) { - return request('/token', { + return request('/token', { method: 'POST', headers: { 'content-type': 'application/json', @@ -71,7 +72,7 @@ export default function(options: WalineAPIOptions) { }); }, logout() { - return request('/token', { method: 'DELETE' }); + return request('/token', { method: 'DELETE' }); } } } diff --git a/src/types/comment.ts b/src/types/comment.ts index 15a0927..b84f0cb 100644 --- a/src/types/comment.ts +++ b/src/types/comment.ts @@ -52,9 +52,7 @@ export interface GetAdminListRequest { page?: number; } -export interface GetAdminListResponse { - errno: number; - errmsg: string; +export interface GetAdminListResponse extends Required { data: AdminList; } @@ -92,7 +90,7 @@ export interface PostCommentRequest { at?: string; } -export interface PostCommentResponse extends BasicResponse { +export interface PostCommentResponse extends Required { data: Omit } diff --git a/src/types/user.ts b/src/types/user.ts index 75e6e71..79b17e8 100644 --- a/src/types/user.ts +++ b/src/types/user.ts @@ -34,6 +34,6 @@ export interface LoginRequest { password: string; } -export interface GetUserResponse extends BasicResponse{ +export interface GetUserResponse extends Required { data: User; } \ No newline at end of file diff --git a/src/util.ts b/src/util.ts index 0c4bdcb..aaacf13 100644 --- a/src/util.ts +++ b/src/util.ts @@ -6,7 +6,7 @@ export function fetchFactory(factoryOpt: WalineAPIOptions) { baseUrl = baseUrl.replace(/\/+$/, ''); } - return async function request(input: RequestInfo, init?: RequestInit) { + return async function request(input: RequestInfo, init?: RequestInit): Promise { input = baseUrl + input; if (factoryOpt.token) { @@ -21,11 +21,11 @@ export function fetchFactory(factoryOpt: WalineAPIOptions) { } const response = await fetch(input, init); - const resp: T = await response.json(); + const resp = await response.json(); if (!resp.hasOwnProperty('errno')) { return resp; } else if (resp.errno) { - throw new Error(resp.errmsg); + throw new Error(typeof resp.errmsg === 'string' ? resp.errmsg : JSON.stringify(resp.errmsg)); } return resp.data; diff --git a/tsconfig.json b/tsconfig.json index b56e06e..83f674a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,6 +11,7 @@ "forceConsistentCasingInFileNames": true, "strict": true, "noImplicitAny": true, - "skipLibCheck": true + "skipLibCheck": true, + "moduleResolution": "node" } }