Commit f7cce692 authored by nanahira's avatar nanahira

adapt plugin def

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