diff --git a/package.json b/package.json index 069e2580..e155c756 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,6 @@ "watch": "lerna run watch --parallel", "build": "lerna run build --scope=\"@ccms/!(plugins)\"", "build:plugins": "lerna run build --scope=\"@ccms/plugins\"", - "publish": "yarn lerna exec \"npm publish --access=public\" --scope=\"@ccms/!(plugins|client|types)\"", "ug": "yarn upgrade-interactive --latest", "lp": "lerna publish" }, diff --git a/packages/common/src/fs.ts b/packages/common/src/fs.ts index b8f1923d..16b281e1 100644 --- a/packages/common/src/fs.ts +++ b/packages/common/src/fs.ts @@ -23,9 +23,7 @@ export function concat(...args: string[]) { * @returns {*} */ export function file(...opts: any[]): any { - if (!opts[0]) { - console.warn("文件名称不得为 undefined 或者 null !"); - } + if (!opts[0]) { throw new Error("文件名称不得为 undefined 或者 null !") } switch (opts.length) { case 1: var f = opts[0]; @@ -143,7 +141,7 @@ export function del(file) { return; } if (file.isDirectory()) { - Files.list(file.toPath()).collect(Collector.toList()).forEach(function(f) { + Files.list(file.toPath()).collect(Collector.toList()).forEach(function (f) { del(f); }) } diff --git a/packages/plugin/src/decorators.ts b/packages/plugin/src/decorators.ts index 3f10741e..6287034e 100644 --- a/packages/plugin/src/decorators.ts +++ b/packages/plugin/src/decorators.ts @@ -10,14 +10,13 @@ import { getPluginMetadatas, getPluginCommandMetadata, getPluginListenerMetadata export function plugin(metadata: interfaces.PluginMetadata) { return function (target: any) { metadata.target = target; - metadata.source = metadata.source + ''; decorate(injectable(), target); Reflect.defineMetadata(METADATA_KEY.plugin, metadata, target); const previousMetadata: Map = getPluginMetadatas(); previousMetadata.set(metadata.name, metadata); Reflect.defineMetadata(METADATA_KEY.plugin, previousMetadata, Reflect); const previousSources: Map = getPluginSources(); - previousSources.set(metadata.source, metadata); + previousSources.set(metadata.source.toString(), metadata); Reflect.defineMetadata(METADATA_KEY.souece, previousSources, Reflect); }; } diff --git a/packages/plugin/src/interfaces.ts b/packages/plugin/src/interfaces.ts index ad5cff50..4ca8d5e8 100644 --- a/packages/plugin/src/interfaces.ts +++ b/packages/plugin/src/interfaces.ts @@ -1,5 +1,5 @@ import { server, MiaoScriptConsole, event } from "@ccms/api"; -import { injectable, inject } from "@ccms/container"; +import { injectable, inject, postConstruct } from "@ccms/container"; import { getPluginMetadata } from "./utils"; export namespace interfaces { @@ -7,11 +7,17 @@ export namespace interfaces { export abstract class Plugin { public description: PluginMetadata; public logger: Console; + @inject(server.Console) + private Console: MiaoScriptConsole; - constructor(@inject(server.Console) Console: MiaoScriptConsole) { + constructor() { this.description = getPluginMetadata(this) + } + + @postConstruct() + private initialize() { // @ts-ignore - this.logger = new Console(this.description.prefix || this.description.name) + this.logger = new this.Console(this.description.prefix || this.description.name) } public load() { } diff --git a/packages/plugin/src/manager.ts b/packages/plugin/src/manager.ts index 70a5da56..e5f70256 100644 --- a/packages/plugin/src/manager.ts +++ b/packages/plugin/src/manager.ts @@ -35,7 +35,7 @@ export class PluginManagerImpl implements plugin.PluginManager { this.pluginMap = new Map() console.i18n('ms.plugin.event.map', { count: this.EventManager.mapEventName().toFixed(0), type: this.serverType }); this.initialized = true; - this.plugnMappings = getPluginSources() + this.plugnMappings = getPluginSources(); } } @@ -62,9 +62,13 @@ export class PluginManagerImpl implements plugin.PluginManager { this.execPluginStage(plugin, stage) } + /** + * 从文件加载插件 + * @param file java.io.File + */ loadFromFile(file: string): interfaces.Plugin { this.loadPlugin(file) - let plugin = this.buildPlugin(this.plugnMappings.get(file)) + let plugin = this.buildPlugin(this.plugnMappings.get(file.toString())) this.load(plugin) this.enable(plugin) return plugin; diff --git a/packages/plugin/src/utils.ts b/packages/plugin/src/utils.ts index d56476e9..3c444583 100644 --- a/packages/plugin/src/utils.ts +++ b/packages/plugin/src/utils.ts @@ -1,6 +1,8 @@ import { interfaces } from './interfaces' import { METADATA_KEY } from './constants' +const pluginSourceCache = new Map(); + function getPlugins() { return [...getPluginMetadatas().values()].map((target) => target.target); } @@ -13,7 +15,7 @@ function getPluginSources() { let pluginSources: Map = Reflect.getMetadata( METADATA_KEY.souece, Reflect - ) || new Map(); + ) || pluginSourceCache; return pluginSources; }