Commit f7cce692 authored by nanahira's avatar nanahira

adapt plugin def

parent 8a4b3444
......@@ -39,19 +39,31 @@ export interface ContextSelector {
useSelector?: OnContextFunction;
}
export type KoishiPluginOptions<T extends Plugin | keyof Modules> =
export type KoishiPluginOptions<T extends keyof Modules | Plugin> =
| boolean
| (T extends keyof Modules
? Plugin.ModuleConfig<Modules[T]>
: Plugin.Config<T>);
: T extends Plugin
? Plugin.Config<T>
: never);
export interface KoishiModulePlugin<T extends Plugin | keyof Modules>
export interface KoishiModulePlugin<T extends keyof Modules | Plugin>
extends ContextSelector {
plugin: T;
options?: boolean | KoishiPluginOptions<T>;
}
export function PluginDef<T extends Plugin | keyof Modules>(
export function PluginDef<T extends keyof Modules>(
plugin: T,
options?: boolean | Plugin.ModuleConfig<Modules[T]>,
select?: Selection,
): KoishiModulePlugin<T>;
export function PluginDef<T extends Plugin>(
plugin: T,
options?: boolean | Plugin.Config<T>,
select?: Selection,
): KoishiModulePlugin<T>;
export function PluginDef<T extends keyof Modules | Plugin>(
plugin: T,
options?: KoishiPluginOptions<T>,
select?: Selection,
......@@ -111,7 +123,7 @@ export interface DoRegisterConfigDataMap {
export interface MappingStruct<
T extends Record<string | number | symbol, any>,
K extends keyof T,
K extends keyof T
> {
type: K;
data?: T[K];
......@@ -119,7 +131,7 @@ export interface MappingStruct<
export function GenerateMappingStruct<
T extends Record<string | number | symbol, any>,
K extends keyof T,
K extends keyof T
>(type: K, data?: T[K]): MappingStruct<T, K> {
return {
type,
......@@ -128,7 +140,7 @@ export function GenerateMappingStruct<
}
export type DoRegisterConfig<
K extends keyof DoRegisterConfigDataMap = keyof DoRegisterConfigDataMap,
K extends keyof DoRegisterConfigDataMap = keyof DoRegisterConfigDataMap
> = MappingStruct<DoRegisterConfigDataMap, K>;
// Command stuff
......@@ -158,7 +170,7 @@ export interface CommandPutConfigMap {
}
export type CommandPutConfig<
K extends keyof CommandPutConfigMap = keyof CommandPutConfigMap,
K extends keyof CommandPutConfigMap = keyof CommandPutConfigMap
> = MappingStruct<CommandPutConfigMap, K>;
export type CommandDefinitionFun = (cmd: Command) => Command;
......@@ -170,17 +182,19 @@ export type MetadataArrayValueMap = {
export type MetadataGenericMap = MetadataArrayValueMap & MetadataMap;
export type MetadataArrayValue<K extends keyof MetadataArrayValueMap> =
MetadataArrayValueMap[K];
export type MetadataArrayValue<
K extends keyof MetadataArrayValueMap
> = MetadataArrayValueMap[K];
export type MetadataKey = keyof MetadataArrayMap | keyof MetadataMap;
export type MetadataMapValue<K extends MetadataKey> =
K extends keyof MetadataArrayValueMap
? MetadataArrayValue<K>
: K extends keyof MetadataMap
? MetadataMap[K]
: never;
export type MetadataMapValue<
K extends MetadataKey
> = K extends keyof MetadataArrayValueMap
? MetadataArrayValue<K>
: K extends keyof MetadataMap
? MetadataMap[K]
: never;
// command interceptor
......@@ -188,7 +202,7 @@ export interface KoishiCommandInterceptor<
U extends User.Field = never,
G extends Channel.Field = never,
A extends any[] = any[],
O extends {} = {},
O extends {} = {}
> {
intercept: Command.Action<U, G, A, O>;
}
......@@ -197,7 +211,7 @@ export type KoishiCommandInterceptorRegistration<
U extends User.Field = never,
G extends Channel.Field = never,
A extends any[] = any[],
O extends {} = {},
O extends {} = {}
> =
| KoishiCommandInterceptor<U, G, A, O>
| Type<KoishiCommandInterceptor<U, G, A, O>>
......
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