Commit b2c6e97e authored by nanahira's avatar nanahira

add decorated name

parent 6528f1da
...@@ -128,6 +128,9 @@ export function UsingService( ...@@ -128,6 +128,9 @@ export function UsingService(
export const PluginSchema = (schema: Schema | ClassType<any>) => export const PluginSchema = (schema: Schema | ClassType<any>) =>
Metadata.set('KoishiPredefineSchema', schema); Metadata.set('KoishiPredefineSchema', schema);
export const PluginName = (name: string) =>
Metadata.set('KoishiPredefineName', name);
export const If = <T>(func: Condition<boolean, T>): MethodDecorator => export const If = <T>(func: Condition<boolean, T>): MethodDecorator =>
Metadata.append('KoishiIf', func); Metadata.append('KoishiIf', func);
......
...@@ -26,4 +26,5 @@ export interface MetadataMap { ...@@ -26,4 +26,5 @@ export interface MetadataMap {
KoishiServiceInjectSym: keyof Context.Services; KoishiServiceInjectSym: keyof Context.Services;
KoishiSystemInjectSym: SystemInjectFun; KoishiSystemInjectSym: SystemInjectFun;
KoishiPredefineSchema: Schema | ClassType<any>; KoishiPredefineSchema: Schema | ClassType<any>;
KoishiPredefineName: string;
} }
...@@ -52,10 +52,15 @@ export function DefinePlugin<T = any>( ...@@ -52,10 +52,15 @@ export function DefinePlugin<T = any>(
new (...args: any[]): any; new (...args: any[]): any;
} & KoishiPluginRegistrationOptions<T>, } & KoishiPluginRegistrationOptions<T>,
>(originalClass: C) { >(originalClass: C) {
const schemaType =
options.schema || reflector.get('KoishiPredefineSchema', originalClass);
const newClass = class extends originalClass implements PluginClass { const newClass = class extends originalClass implements PluginClass {
static Config = schemaType ? SchemaClass(schemaType) : undefined; static get Config() {
const schemaType =
reflector.get('KoishiPredefineSchema', newClass) ||
reflector.get('KoishiPredefineSchema', originalClass) ||
options.schema;
return schemaType ? SchemaClass(schemaType) : undefined;
}
static get using() { static get using() {
const list = reflector const list = reflector
.getArray(KoishiAddUsingList, originalClass) .getArray(KoishiAddUsingList, originalClass)
...@@ -225,8 +230,11 @@ export function DefinePlugin<T = any>( ...@@ -225,8 +230,11 @@ export function DefinePlugin<T = any>(
Object.defineProperty(newClass, 'name', { Object.defineProperty(newClass, 'name', {
enumerable: true, enumerable: true,
configurable: true, configurable: true,
writable: true, get: () =>
value: options.name || originalClass.name, reflector.get('KoishiPredefineName', newClass) ||
reflector.get('KoishiPredefineName', originalClass) ||
options.name ||
originalClass.name,
}); });
return newClass; return newClass;
}; };
......
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