feat: update Proxy handle and optimize core index
Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
parent
1d97bbc9ce
commit
a47896a97f
@ -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();
|
||||||
|
Loading…
Reference in New Issue
Block a user