feat: support loader & scanner

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
2020-06-17 18:39:24 +08:00
parent 2fb7ddd890
commit 46173ff549
8 changed files with 298 additions and 218 deletions

View File

@ -1,78 +1,79 @@
import { plugin } from '@ccms/api'
import { interfaces } from './interfaces'
import { METADATA_KEY } from './constants'
const pluginSourceCache = new Map<string, interfaces.PluginMetadata>();
const pluginSourceCache = new Map<string, plugin.PluginMetadata>()
function getPlugins() {
return [...getPluginMetadatas().values()].map((target) => target.target);
return [...getPluginMetadatas().values()].map((target) => target.target)
}
function getPlugin(name: string) {
return getPluginMetadatas().get(name);
return getPluginMetadatas().get(name)
}
function getPluginSources() {
let pluginSources: Map<string, interfaces.PluginMetadata> = Reflect.getMetadata(
let pluginSources: Map<string, plugin.PluginMetadata> = Reflect.getMetadata(
METADATA_KEY.souece,
Reflect
) || pluginSourceCache;
return pluginSources;
) || pluginSourceCache
return pluginSources
}
function getPluginMetadatas() {
let pluginMetadatas: Map<string, interfaces.PluginMetadata> = Reflect.getMetadata(
let pluginMetadatas: Map<string, plugin.PluginMetadata> = Reflect.getMetadata(
METADATA_KEY.plugin,
Reflect
) || new Map<string, interfaces.PluginMetadata>();
return pluginMetadatas;
) || new Map<string, plugin.PluginMetadata>()
return pluginMetadatas
}
function getPluginMetadata(target: any) {
let pluginMetadata: interfaces.PluginMetadata = Reflect.getMetadata(
let pluginMetadata: plugin.PluginMetadata = Reflect.getMetadata(
METADATA_KEY.plugin,
target.constructor
) || {};
return pluginMetadata;
) || {}
return pluginMetadata
}
function getPluginCommandMetadata(target: any) {
let commandMetadata: Map<string, interfaces.CommandMetadata> = Reflect.getMetadata(
METADATA_KEY.cmd,
target.constructor
) || new Map<string, interfaces.CommandMetadata>();
return commandMetadata;
) || new Map<string, interfaces.CommandMetadata>()
return commandMetadata
}
function getPluginTabCompleterMetadata(target: any) {
let tabcompleterMetadata: Map<string, interfaces.CommandMetadata> = Reflect.getMetadata(
METADATA_KEY.tab,
target.constructor
) || new Map<string, interfaces.CommandMetadata>();
return tabcompleterMetadata;
) || new Map<string, interfaces.CommandMetadata>()
return tabcompleterMetadata
}
function getPluginListenerMetadata(target: any) {
let listnerMetadata: interfaces.ListenerMetadata[] = Reflect.getMetadata(
METADATA_KEY.listener,
target.constructor
) || [];
return listnerMetadata;
) || []
return listnerMetadata
}
function getPluginConfigMetadata(target: any) {
let configMetadata: Map<string, interfaces.ConfigMetadata> = Reflect.getMetadata(
METADATA_KEY.config,
target.constructor
) || new Map<string, interfaces.ConfigMetadata>();
return configMetadata;
) || new Map<string, interfaces.ConfigMetadata>()
return configMetadata
}
function getPluginStageMetadata(target: any, stage: string) {
let stageMetadata: interfaces.ExecMetadata[] = Reflect.getMetadata(
METADATA_KEY.stage[stage],
target.constructor
) || [];
return stageMetadata;
) || []
return stageMetadata
}
export {