summaryrefslogtreecommitdiff
path: root/src/server/api/define.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-05-28 09:34:42 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-05-28 09:34:42 +0900
commitdb3724cf33c402d66700f89b319b423887466757 (patch)
treed9038bb32da5a65a51a09cc8c6ee780fa59785f4 /src/server/api/define.ts
parentカスタム絵文字をproxyに通すように (#7526) (diff)
downloadsharkey-db3724cf33c402d66700f89b319b423887466757.tar.gz
sharkey-db3724cf33c402d66700f89b319b423887466757.tar.bz2
sharkey-db3724cf33c402d66700f89b319b423887466757.zip
improve types
Diffstat (limited to 'src/server/api/define.ts')
-rw-r--r--src/server/api/define.ts7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/server/api/define.ts b/src/server/api/define.ts
index 432d5017e8..cba69cfdc4 100644
--- a/src/server/api/define.ts
+++ b/src/server/api/define.ts
@@ -5,6 +5,8 @@ import { ApiError } from './error';
import { SchemaType } from '@/misc/schema';
import { AccessToken } from '../../models/entities/access-token';
+type NonOptional<T> = T extends undefined ? never : T;
+
type SimpleUserInfo = {
id: ILocalUser['id'];
host: ILocalUser['host'];
@@ -17,11 +19,12 @@ type SimpleUserInfo = {
isSilenced: ILocalUser['isSilenced'];
};
-// TODO: defaultが設定されている場合はその型も考慮する
type Params<T extends IEndpointMeta> = {
[P in keyof T['params']]: NonNullable<T['params']>[P]['transform'] extends Function
? ReturnType<NonNullable<T['params']>[P]['transform']>
- : ReturnType<NonNullable<T['params']>[P]['validator']['get']>[0];
+ : NonNullable<T['params']>[P]['default'] extends null | number | string
+ ? NonOptional<ReturnType<NonNullable<T['params']>[P]['validator']['get']>[0]>
+ : ReturnType<NonNullable<T['params']>[P]['validator']['get']>[0];
};
export type Response = Record<string, any> | void;