feat: update Proxy handle and optimize core index
Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
		@@ -1,27 +1,30 @@
 | 
				
			|||||||
let createProxy = eval(`
 | 
					let createProxy = eval(`
 | 
				
			||||||
    function(handle){ return new JSAdapter(handle) }
 | 
					    function(handle){ return new JSAdapter(handle) }
 | 
				
			||||||
`)
 | 
					`)
 | 
				
			||||||
export interface ProxyHandle {
 | 
					export interface ProxyHandle extends ProxyHandler<object> {
 | 
				
			||||||
    get: (target: any, name: string) => any
 | 
					    // get: (target: any, name: string) => any
 | 
				
			||||||
    set: (target: any, name: string, value: any) => void
 | 
					    // set: (target: any, name: string, value: any) => boolean
 | 
				
			||||||
    construct: (target: any, ...args: any[]) => any
 | 
					    // construct: (target: any, ...args: any[]) => any
 | 
				
			||||||
    has: (target: any, name: string) => boolean
 | 
					    // has: (target: any, name: string) => boolean
 | 
				
			||||||
    ownKeys: (target: any) => string[]
 | 
					    // ownKeys: (target: any) => string[]
 | 
				
			||||||
    values: (target: any) => any[];
 | 
					    values: (target: any) => any[];
 | 
				
			||||||
    call: (target: any, name: string, ...args: any[]) => any
 | 
					    // call: (target: any, name: string, ...args: any[]) => any
 | 
				
			||||||
    delete: (target: any, name: string) => boolean
 | 
					    // deleteProperty: (target: any, name: string) => boolean
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
export class Proxy {
 | 
					export class Proxy {
 | 
				
			||||||
    static newProxy(target: any, handle: Partial<ProxyHandle>) {
 | 
					    static newProxy(target: any, handle: Partial<ProxyHandle>): any {
 | 
				
			||||||
 | 
					        return new Proxy(target, handle)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    constructor(target: any, handle: Partial<ProxyHandle>) {
 | 
				
			||||||
        return createProxy({
 | 
					        return createProxy({
 | 
				
			||||||
            __get__: (name: string) => handle.get ? handle.get(target, name) : target[name],
 | 
					            __get__: (name: string) => handle.get ? handle.get(target, name, undefined) : target[name],
 | 
				
			||||||
            __put__: (name: string, value: any) => handle.set ? handle.set(target, name, value) : target[name] = value,
 | 
					            __put__: (name: string, value: any) => handle.set ? handle.set(target, name, value, undefined) : target[name] = value,
 | 
				
			||||||
            __call__: (name: string, ...args: any) => handle.call ? handle.call(target, name, ...args) : target[name](...args),
 | 
					            __call__: (name: string, ...args: any) => handle.apply ? handle.apply(target[name], target, args) : target[name].apply(target, args),
 | 
				
			||||||
            __new__: (...args: any) => handle.construct ? handle.construct(target, ...args) : new target(...args),
 | 
					            __new__: (...args: any) => handle.construct ? handle.construct(target, args, target) : new target(...args),
 | 
				
			||||||
            __getIds__: () => handle.ownKeys ? handle.ownKeys(target) : Object.keys(target),
 | 
					            __getIds__: () => handle.ownKeys ? handle.ownKeys(target) : Object.keys(target),
 | 
				
			||||||
            __getValues__: () => handle.values ? handle.values(target) : Object.values(target),
 | 
					            __getValues__: () => handle.values ? handle.values(target) : Object.values(target),
 | 
				
			||||||
            __has__: (name: string) => handle.has ? handle.has(target, name) : Object.getOwnPropertyDescriptor(target, name) != undefined,
 | 
					            __has__: (name: string) => handle.has ? handle.has(target, name) : Object.getOwnPropertyDescriptor(target, name) != undefined,
 | 
				
			||||||
            __delete__: (name: string) => handle.delete ? handle.delete(target, name) : delete target[name]
 | 
					            __delete__: (name: string) => handle.deleteProperty ? handle.deleteProperty(target, name) : delete target[name]
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,34 +51,30 @@ class MiaoScriptCore {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function detectServer() {
 | 
					function detectServer() {
 | 
				
			||||||
    let type = 'unknow'
 | 
					 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
        Java.type("org.bukkit.Bukkit");
 | 
					        Java.type("org.bukkit.Bukkit");
 | 
				
			||||||
        type = 'bukkit';
 | 
					        return 'bukkit'
 | 
				
			||||||
        console.info(`Detect Bukkit Compatible set ServerType to ${type} ...`)
 | 
					 | 
				
			||||||
    } catch (ex) {
 | 
					    } catch (ex) {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
        Java.type("org.spongepowered.api.Sponge");
 | 
					        Java.type("org.spongepowered.api.Sponge");
 | 
				
			||||||
        type = 'sponge';
 | 
					        return 'sponge'
 | 
				
			||||||
        console.info(`Detect Sponge Compatible set ServerType to ${type} ...`)
 | 
					 | 
				
			||||||
    } catch (ex) {
 | 
					    } catch (ex) {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
        Java.type("net.md_5.bungee.api.ProxyServer");
 | 
					        Java.type("net.md_5.bungee.api.ProxyServer");
 | 
				
			||||||
        type = 'bungee';
 | 
					        return 'bungee'
 | 
				
			||||||
        console.info(`Detect Sponge Compatible set ServerType to ${type} ...`)
 | 
					 | 
				
			||||||
    } catch (ex) {
 | 
					    } catch (ex) {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (type === 'unknow') { throw Error('Unknow Server Type...') }
 | 
					    throw Error('Unknow Server Type...')
 | 
				
			||||||
    return type;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function init() {
 | 
					function initialize() {
 | 
				
			||||||
    let corePackageStartTime = new Date().getTime()
 | 
					    let corePackageStartTime = new Date().getTime()
 | 
				
			||||||
    container.bind(ContainerInstance).toConstantValue(container);
 | 
					    container.bind(ContainerInstance).toConstantValue(container);
 | 
				
			||||||
    container.bind(plugin.PluginInstance).toConstantValue(base.getInstance());
 | 
					    container.bind(plugin.PluginInstance).toConstantValue(base.getInstance());
 | 
				
			||||||
    let type = detectServer();
 | 
					    let type = detectServer();
 | 
				
			||||||
 | 
					    console.info(`Detect Compatible Server set ServerType to ${type} ...`)
 | 
				
			||||||
    container.bind(server.ServerType).toConstantValue(type);
 | 
					    container.bind(server.ServerType).toConstantValue(type);
 | 
				
			||||||
    console.log(`Initialization MiaoScript Package @ms/core @ms/${type}. Please wait...`)
 | 
					    console.log(`Initialization MiaoScript Package @ms/core @ms/${type}. Please wait...`)
 | 
				
			||||||
    require(`@ms/${type}`).default(container);
 | 
					    require(`@ms/${type}`).default(container);
 | 
				
			||||||
@@ -90,4 +86,4 @@ function init() {
 | 
				
			|||||||
    return disable;
 | 
					    return disable;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default init();
 | 
					export default initialize();
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user