feat: use inject container

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
MiaoWoo 2020-01-17 11:10:30 +08:00
parent eaf1456771
commit f4ea32862f
3 changed files with 10 additions and 8 deletions

View File

@ -18,7 +18,7 @@ export namespace plugin {
*/
export interface PluginManager {
scan(folder: string): void;
build(container: Container): void;
build(): void;
load(...args: any[]): void;
enable(...args: any[]): void;
disable(...args: any[]): void;

View File

@ -2,7 +2,7 @@ import { interfaces, Container } from "inversify";
let _container: Container;
const CONTAINER = Symbol.for("@ms/ioc:Container");
const ContainerInstance = Symbol.for("@ms/ioc:Container");
const INJECTION = Symbol.for("INJECTION");
function _proxyGetter(
@ -35,12 +35,12 @@ function _proxyGetter(
}
function initContainer(container: Container) {
Reflect.defineMetadata(CONTAINER, container, Reflect);
Reflect.defineMetadata(ContainerInstance, container, Reflect);
_container = container;
}
function getContainer(): Container {
return _container || Reflect.getMetadata(CONTAINER, Reflect)
return _container || Reflect.getMetadata(ContainerInstance, Reflect)
}
function makePropertyInjectDecorator(doCache: boolean) {
@ -97,6 +97,7 @@ let lazyMultiInject = makePropertyMultiInjectDecorator(doCache)
export {
initContainer,
getContainer,
ContainerInstance,
lazyInject,
lazyInjectNamed,
lazyInjectTagged,

View File

@ -3,7 +3,7 @@ import '@ms/nashorn'
import { plugin, server, task, MiaoScriptConsole } from '@ms/api'
import { PluginManagerImpl } from '@ms/plugin'
import { XMLHttpRequest as xhr } from '@ms/ployfill'
import { DefaultContainer as container, injectable, inject, postConstruct } from '@ms/container'
import { DefaultContainer as container, injectable, inject, ContainerInstance } from '@ms/container'
let startTime = new Date().getTime();
@ -23,7 +23,7 @@ class MiaoScriptCore {
console.log('MiaoScript engine loading completed... Done (' + (new Date().getTime() - startTime) / 1000 + 's)!');
return () => this.disable();
}
loadServerConsole() {
// @ts-ignore
console = new this.Console();
@ -39,7 +39,7 @@ class MiaoScriptCore {
loadPlugins() {
this.pluginManager.scan('plugins');
this.pluginManager.build(container);
this.pluginManager.build();
this.pluginManager.load();
this.pluginManager.enable();
}
@ -49,7 +49,7 @@ class MiaoScriptCore {
}
}
function detectServer(){
function detectServer() {
let type = 'unknow'
try {
Java.type("org.bukkit.Bukkit");
@ -75,6 +75,7 @@ function detectServer(){
function init() {
console.info('Initialization MiaoScript Core Package @ms/core. Please wait...')
container.bind(ContainerInstance).toConstantValue(container);
container.bind(plugin.PluginInstance).toConstantValue(base.getInstance());
let type = detectServer();
require(`@ms/${type}`);