Commit 8d0e3366 authored by nanahira's avatar nanahira

use ProvidingContextContainer

parent 1af0e2c8
...@@ -31,21 +31,27 @@ function createContextProvider( ...@@ -31,21 +31,27 @@ function createContextProvider(
}; };
} }
export const contextsToProvide: Provider<Context>[] = []; export class ProvidingContextContainer {
contextsToProvide: Provider<Context>[] = [];
const contextTokensSet = new Set<string>(); private contextTokensSet = new Set<string>();
registerContext(scopeType?: ContextScopeTypes, values: string[] = []) {
export function getContextProvideToken(
scopeType?: ContextScopeTypes,
values: string[] = [],
) {
if (!scopeType) { if (!scopeType) {
return KOISHI_CONTEXT; return KOISHI_CONTEXT;
} }
const token = constructProvideToken(scopeType, values); const token = constructProvideToken(scopeType, values);
if (!contextTokensSet.has(token)) { if (!this.contextTokensSet.has(token)) {
contextTokensSet.add(token); this.contextTokensSet.add(token);
contextsToProvide.push(createContextProvider(scopeType, values)); this.contextsToProvide.push(createContextProvider(scopeType, values));
} }
return token; return token;
}
}
export const defaultContextContainer = new ProvidingContextContainer();
export function getContextProvideToken(
scopeType?: ContextScopeTypes,
values: string[] = [],
container = defaultContextContainer,
) {
return container.registerContext(scopeType, values);
} }
...@@ -23,7 +23,7 @@ import { KoishiLoggerService } from './providers/koishi-logger.service'; ...@@ -23,7 +23,7 @@ import { KoishiLoggerService } from './providers/koishi-logger.service';
import { KoishiMetascanService } from './providers/koishi-metascan.service'; import { KoishiMetascanService } from './providers/koishi-metascan.service';
import { DiscoveryModule, INQUIRER } from '@nestjs/core'; import { DiscoveryModule, INQUIRER } from '@nestjs/core';
import { Context } from 'koishi'; import { Context } from 'koishi';
import { contextsToProvide } from './koishi-context.factory'; import { defaultContextContainer } from './koishi-context.factory';
import { KoishiInjectionService } from './providers/koishi-injection.service'; import { KoishiInjectionService } from './providers/koishi-injection.service';
import { KoishiContextService } from './providers/koishi-context.service'; import { KoishiContextService } from './providers/koishi-context.service';
...@@ -79,9 +79,9 @@ export class KoishiModule implements NestModule { ...@@ -79,9 +79,9 @@ export class KoishiModule implements NestModule {
module: KoishiModule, module: KoishiModule,
providers: [ providers: [
{ provide: KOISHI_MODULE_OPTIONS, useValue: options }, { provide: KOISHI_MODULE_OPTIONS, useValue: options },
...contextsToProvide, ...defaultContextContainer.contextsToProvide,
], ],
exports: contextsToProvide, exports: defaultContextContainer.contextsToProvide,
global: options.isGlobal != null ? options.isGlobal : true, global: options.isGlobal != null ? options.isGlobal : true,
}; };
} }
...@@ -92,10 +92,10 @@ export class KoishiModule implements NestModule { ...@@ -92,10 +92,10 @@ export class KoishiModule implements NestModule {
imports: options.imports, imports: options.imports,
providers: [ providers: [
...this.createAsyncProviders(options), ...this.createAsyncProviders(options),
...contextsToProvide, ...defaultContextContainer.contextsToProvide,
...(options.extraProviders || []), ...(options.extraProviders || []),
], ],
exports: contextsToProvide, exports: defaultContextContainer.contextsToProvide,
global: options.isGlobal != null ? options.isGlobal : true, global: options.isGlobal != null ? options.isGlobal : true,
}; };
} }
......
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