From 4b6d48850e18dc5622995624cd1be02c03925cd5 Mon Sep 17 00:00:00 2001 From: Hide_D Date: Sun, 6 Aug 2023 14:27:30 +0000 Subject: [PATCH] =?UTF-8?q?no-explicit-any=20=EB=93=B1=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintrc.cjs | 5 ++++- server/api/decorator/reqGameSession.ts | 0 server/api/decorator/reqSession.ts | 0 server/api/defs.ts | 11 +++++++++++ server/api/generator.ts | 4 ++-- server/apiStructure/defs.ts | 13 +++++++++++++ 6 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 server/api/decorator/reqGameSession.ts create mode 100644 server/api/decorator/reqSession.ts diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 6f40582..838ee34 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -10,6 +10,9 @@ module.exports = { '@vue/eslint-config-prettier/skip-formatting' ], parserOptions: { - ecmaVersion: 'latest' + ecmaVersion: 'latest', + }, + rules: { + "@typescript-eslint/no-explicit-any": "warn", } } diff --git a/server/api/decorator/reqGameSession.ts b/server/api/decorator/reqGameSession.ts new file mode 100644 index 0000000..e69de29 diff --git a/server/api/decorator/reqSession.ts b/server/api/decorator/reqSession.ts new file mode 100644 index 0000000..e69de29 diff --git a/server/api/defs.ts b/server/api/defs.ts index 58317d1..37595be 100644 --- a/server/api/defs.ts +++ b/server/api/defs.ts @@ -9,17 +9,26 @@ import { type ClassTransformOptions, plainToInstance } from "class-transformer"; export type APINamespace = { [key: string]: APINamespace + // eslint-disable-next-line @typescript-eslint/no-explicit-any | ClassType> + // eslint-disable-next-line @typescript-eslint/no-explicit-any | ClassType> + // eslint-disable-next-line @typescript-eslint/no-explicit-any | ClassType> + // eslint-disable-next-line @typescript-eslint/no-explicit-any | ClassType> + // eslint-disable-next-line @typescript-eslint/no-explicit-any | ClassType> + // eslint-disable-next-line @typescript-eslint/no-explicit-any | ClassType> ; } type ValidatorType = T extends undefined ? undefined : ClassType; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export type AnyAPIExecuter = APIExecuter; + export abstract class APIExecuter{ readonly abstract reqType: HttpMethod; readonly abstract argValidator?: ValidatorType; @@ -106,6 +115,8 @@ export function raiseError(reason: string, recovery?: recoveryMethod): InvalidRe }; } + +// eslint-disable-next-line @typescript-eslint/no-explicit-any export type ClassType = new (...args: any[]) => T; export type APIServerType = diff --git a/server/api/generator.ts b/server/api/generator.ts index eee2e14..69d0053 100644 --- a/server/api/generator.ts +++ b/server/api/generator.ts @@ -1,7 +1,7 @@ import { Router } from 'express'; -import type { APIExecuter, APINamespace } from './defs.js'; +import type { AnyAPIExecuter, APINamespace } from './defs.js'; -export function buildAPISystem>(api: N | Q): Router { +export function buildAPISystem(api: N | Q): Router { const router = Router(); for (const [key, value] of Object.entries(api)) { if (typeof value === 'function') { diff --git a/server/apiStructure/defs.ts b/server/apiStructure/defs.ts index 7257156..25f43f2 100644 --- a/server/apiStructure/defs.ts +++ b/server/apiStructure/defs.ts @@ -319,6 +319,7 @@ export interface InvalidResponse { type ExtractValid = T extends ValidResponse ? T : never; type ExtractInvalid = T extends InvalidResponse ? T : never; +// eslint-disable-next-line @typescript-eslint/no-explicit-any export type Callable = (...args: any) => any; export type ExtractResponse = ExtractValid>>; @@ -327,17 +328,29 @@ export type ExtractQuery = Parameters[0]; export type DefAPINamespace = { [key: string]: DefAPINamespace + // eslint-disable-next-line @typescript-eslint/no-explicit-any | BasicGetAPICallT + // eslint-disable-next-line @typescript-eslint/no-explicit-any | BasicPostAPICallT + // eslint-disable-next-line @typescript-eslint/no-explicit-any | BasicPutAPICallT + // eslint-disable-next-line @typescript-eslint/no-explicit-any | BasicDeleteAPICallT + // eslint-disable-next-line @typescript-eslint/no-explicit-any | BasicPatchAPICallT + // eslint-disable-next-line @typescript-eslint/no-explicit-any | BasicHeadAPICallT + // eslint-disable-next-line @typescript-eslint/no-explicit-any | EmptyGetAPICallT + // eslint-disable-next-line @typescript-eslint/no-explicit-any | EmptyPostAPICallT + // eslint-disable-next-line @typescript-eslint/no-explicit-any | EmptyPutAPICallT + // eslint-disable-next-line @typescript-eslint/no-explicit-any | EmptyDeleteAPICallT + // eslint-disable-next-line @typescript-eslint/no-explicit-any | EmptyPatchAPICallT + // eslint-disable-next-line @typescript-eslint/no-explicit-any | EmptyHeadAPICallT ; }