feat: complate plugin system

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
2019-09-10 17:22:00 +08:00
parent 634dbdb16d
commit 6ff25c7164
4 changed files with 15 additions and 18 deletions

View File

@ -5,16 +5,15 @@ import { getPluginMetadatas } from './utils'
/**
* MiaoScript plugin
* @param name namespace name default is '/'
* @param middleware middleware array
* @param metadata PluginMetadata
*/
export function plugin(currentMetadata: interfaces.PluginMetadata) {
export function plugin(metadata: interfaces.PluginMetadata) {
return function(target: any) {
target.description = currentMetadata;
currentMetadata.target = target;
target.description = metadata;
metadata.target = target;
decorate(injectable(), target);
Reflect.defineMetadata(METADATA_KEY.plugin, currentMetadata, target);
Reflect.defineMetadata(METADATA_KEY.plugin, metadata, target);
const previousMetadata: interfaces.PluginMetadata[] = getPluginMetadatas();
Reflect.defineMetadata(METADATA_KEY.plugin, [currentMetadata, ...previousMetadata], Reflect);
Reflect.defineMetadata(METADATA_KEY.plugin, [metadata, ...previousMetadata], Reflect);
};
}