Commit 860b1e6e authored by nanahira's avatar nanahira

improve http adapter search again

parent 2ed39af4
Pipeline #6158 passed with stages
in 1 minute and 21 seconds
{ {
"name": "koishi-nestjs", "name": "koishi-nestjs",
"version": "1.0.32", "version": "1.0.33",
"description": "Koishi.js as Nest.js Module", "description": "Koishi.js as Nest.js Module",
"main": "dist/index.js", "main": "dist/index.js",
"typings": "dist/index.d.ts", "typings": "dist/index.d.ts",
......
...@@ -4,7 +4,7 @@ import { ...@@ -4,7 +4,7 @@ import {
DiscoveryService, DiscoveryService,
HttpAdapterHost, HttpAdapterHost,
MetadataScanner, MetadataScanner,
ModulesContainer, ModuleRef,
Reflector, Reflector,
} from '@nestjs/core'; } from '@nestjs/core';
import { Argv, Command, Context } from 'koishi'; import { Argv, Command, Context } from 'koishi';
...@@ -29,34 +29,16 @@ export class KoishiMetascanService { ...@@ -29,34 +29,16 @@ export class KoishiMetascanService {
private readonly discoveryService: DiscoveryService, private readonly discoveryService: DiscoveryService,
private readonly metadataScanner: MetadataScanner, private readonly metadataScanner: MetadataScanner,
private readonly reflector: Reflector, private readonly reflector: Reflector,
private readonly moduleContainer: ModulesContainer, private readonly moduleRef: ModuleRef,
) {} ) {}
getHttpAdapter(): AbstractHttpAdapter { getHttpAdapter(): AbstractHttpAdapter {
const possibleHttpAdapters: AbstractHttpAdapter[] = []; const apdaterHost = this.moduleRef.get(HttpAdapterHost, { strict: false });
for (const module of this.moduleContainer.values()) { if (apdaterHost) {
const adapterHost = module.providers.get(HttpAdapterHost); return apdaterHost.httpAdapter;
if (adapterHost) { } else {
const httpAdapter = (adapterHost as InstanceWrapper<HttpAdapterHost>)
.instance.httpAdapter;
possibleHttpAdapters.push(httpAdapter);
}
}
if (!possibleHttpAdapters.length) {
return null; return null;
} }
// Try those adapters one by one
const adapterTypesToTry = ['express', 'fastify', 'koa'];
for (const adapterType of adapterTypesToTry) {
const foundAdapter = possibleHttpAdapters.find(
(adapter) => adapter.getType() === adapterType,
);
if (foundAdapter) {
return foundAdapter;
}
}
// Fallback to first adapter
return possibleHttpAdapters[0];
} }
private async handleInstance( private async handleInstance(
......
...@@ -23,7 +23,7 @@ import { createServer } from 'http'; ...@@ -23,7 +23,7 @@ import { createServer } from 'http';
import { AddressInfo } from 'net'; import { AddressInfo } from 'net';
import { KoishiLoggerService } from './koishi-logger.service'; import { KoishiLoggerService } from './koishi-logger.service';
import { KoishiMetascanService } from './koishi-metascan.service'; import { KoishiMetascanService } from './koishi-metascan.service';
import { DiscoveryModule, DiscoveryService } from '@nestjs/core'; import { DiscoveryModule } from '@nestjs/core';
const koishiContextProvider: Provider = { const koishiContextProvider: Provider = {
provide: KOISHI_CONTEXT, provide: KOISHI_CONTEXT,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment