diff --git a/packages/backend/src/server/api/EndpointsModule.ts b/packages/backend/src/server/api/EndpointsModule.ts index cd0e100a36..9cfb2f0ac0 100644 --- a/packages/backend/src/server/api/EndpointsModule.ts +++ b/packages/backend/src/server/api/EndpointsModule.ts @@ -6,12 +6,13 @@ import { Module } from '@nestjs/common'; import { CoreModule } from '@/core/CoreModule.js'; -import { endpointEntries } from './endpoint-entries.js'; +import * as endpointsObject from './endpoint-list.js'; import { GetterService } from './GetterService.js'; import { ApiLoggerService } from './ApiLoggerService.js'; import type { Provider } from '@nestjs/common'; -const endpointProviders = endpointEntries.map(([path, endpoint]): Provider => ({ provide: `ep:${path}`, useClass: endpoint.default })); +const endpoints = Object.entries(endpointsObject); +const endpointProviders = endpoints.map(([path, endpoint]): Provider => ({ provide: `ep:${path}`, useClass: endpoint.default })); @Module({ imports: [ diff --git a/packages/backend/src/server/api/endpoint-entries.ts b/packages/backend/src/server/api/endpoint-entries.ts deleted file mode 100644 index 4fa8e5c1c9..0000000000 --- a/packages/backend/src/server/api/endpoint-entries.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * SPDX-FileCopyrightText: syuilo and misskey-project - * SPDX-License-Identifier: AGPL-3.0-only - */ - -import * as endpointsObject from './endpoint-list.js'; - -type EndpointModule = { - default: object; - meta?: unknown; - paramDef?: unknown; -}; - -function isEndpointModule(endpoint: unknown): endpoint is EndpointModule { - return endpoint != null - && typeof endpoint === 'object' - && 'default' in endpoint - && endpoint.default != null; -} - -// Vitest can expose unresolved namespace re-exports from endpoint-list as undefined -// while loading the full endpoint graph. Keep a single normalized view here. -export const endpointEntries = Object.entries(endpointsObject).flatMap(([path, endpoint]) => { - return isEndpointModule(endpoint) ? [[path, endpoint] as const] : []; -}); diff --git a/packages/backend/src/server/api/endpoints.ts b/packages/backend/src/server/api/endpoints.ts index ee9c7dfbb6..03c729ed18 100644 --- a/packages/backend/src/server/api/endpoints.ts +++ b/packages/backend/src/server/api/endpoints.ts @@ -6,7 +6,7 @@ import { permissions } from 'misskey-js'; import type { KeyOf, Schema } from '@/misc/json-schema.js'; -import { endpointEntries } from './endpoint-entries.js'; +import * as endpointsObject from './endpoint-list.js'; interface IEndpointMetaBase { readonly stability?: 'deprecated' | 'experimental' | 'stable'; @@ -130,7 +130,7 @@ export interface IEndpoint { params: Schema; } -const endpoints: IEndpoint[] = endpointEntries.map(([name, ep]) => { +const endpoints: IEndpoint[] = Object.entries(endpointsObject).map(([name, ep]) => { return { name: name, get meta() { diff --git a/packages/backend/test/unit/server/api/drive/files/create.ts b/packages/backend/test/unit/server/api/drive/files/create.ts index 6bd3e3d068..5a97f1db89 100644 --- a/packages/backend/test/unit/server/api/drive/files/create.ts +++ b/packages/backend/test/unit/server/api/drive/files/create.ts @@ -21,10 +21,8 @@ import { IdService } from '@/core/IdService.js'; // TODO: uploadableFileTypes で許可されていないファイルが弾かれるかのテスト describe('/drive/files/create', () => { - const HOOK_TIMEOUT = 60000; - - let module: TestingModule | undefined; - let server: FastifyInstance | undefined; + let module: TestingModule; + let server: FastifyInstance; let roleService: RoleService; let idService: IdService; @@ -108,7 +106,7 @@ describe('/drive/files/create', () => { }, }, }); - }, HOOK_TIMEOUT); + }); beforeEach(async () => { await roleService.unassign(root.id, role_tinyAttachment.id).catch(() => { @@ -120,14 +118,9 @@ describe('/drive/files/create', () => { }); afterAll(async () => { - if (server != null) { - await server.close(); - } - - if (module != null) { - await module.close(); - } - }, HOOK_TIMEOUT); + await server.close(); + await module.close(); + }); async function postFile(props: { name: string, @@ -138,10 +131,6 @@ describe('/drive/files/create', () => { }) { const { name, comment, isSensitive, force, fileContent } = props; - if (server == null) { - throw new Error('Server is not initialized'); - } - return await request(server.server) .post('/api/drive/files/create') .set('Content-Type', 'multipart/form-data') diff --git a/packages/backend/vitest.config.ts b/packages/backend/vitest.config.ts index 06324a6ec3..c253de31f2 100644 --- a/packages/backend/vitest.config.ts +++ b/packages/backend/vitest.config.ts @@ -4,7 +4,6 @@ import { defineConfig } from 'vitest/config'; export const baseConfig = defineConfig({ test: { exclude: ['node_modules', 'dist'], - hookTimeout: 60000, coverage: { provider: 'v8', reportsDirectory: 'coverage',