feat: add node-shim & move plugin interface
Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
		@@ -1,13 +1,13 @@
 | 
			
		||||
/// <reference types="@ccms/nashorn" />
 | 
			
		||||
 | 
			
		||||
import i18n from '@ccms/i18n'
 | 
			
		||||
let ployfillStartTime = new Date().getTime();
 | 
			
		||||
i18n.initialize();
 | 
			
		||||
console.i18n("ms.ployfill.initialize");
 | 
			
		||||
require('./es5-ext');
 | 
			
		||||
require('core-js');
 | 
			
		||||
require('./node-shim');
 | 
			
		||||
let ployfillStartTime = new Date().getTime()
 | 
			
		||||
i18n.initialize()
 | 
			
		||||
console.i18n("ms.ployfill.initialize")
 | 
			
		||||
require('./es5-ext')
 | 
			
		||||
require('./node-shim')
 | 
			
		||||
require('core-js')
 | 
			
		||||
global.setGlobal('Proxy', require('./proxy').Proxy)
 | 
			
		||||
global.setGlobal('XMLHttpRequest', require('./xml-http-request').XMLHttpRequest)
 | 
			
		||||
global.setGlobal('Blob', require('blob-polyfill').Blob)
 | 
			
		||||
console.i18n("ms.ployfill.completed", { time: (new Date().getTime() - ployfillStartTime) / 1000 });
 | 
			
		||||
console.i18n("ms.ployfill.completed", { time: (new Date().getTime() - ployfillStartTime) / 1000 })
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,36 @@
 | 
			
		||||
global.setGlobal('process', {
 | 
			
		||||
    env: {
 | 
			
		||||
import { EventEmitter } from 'events'
 | 
			
		||||
 | 
			
		||||
const Thread = Java.type('java.lang.Thread')
 | 
			
		||||
const ThreadGroup = Java.type("java.lang.ThreadGroup")
 | 
			
		||||
const AtomicInteger = Java.type("java.util.concurrent.atomic.AtomicInteger")
 | 
			
		||||
const ThreadPoolExecutor = Java.type('java.util.concurrent.ThreadPoolExecutor')
 | 
			
		||||
const LinkedBlockingQueue = Java.type("java.util.concurrent.LinkedBlockingQueue")
 | 
			
		||||
 | 
			
		||||
const threadCount = new AtomicInteger(0)
 | 
			
		||||
const threadGroup = new ThreadGroup("@ccms/ployfill-micro-task")
 | 
			
		||||
const microTaskPool = new ThreadPoolExecutor(
 | 
			
		||||
    10, 100, 60, Packages.java.util.concurrent.TimeUnit.SECONDS,
 | 
			
		||||
    new LinkedBlockingQueue(500),
 | 
			
		||||
    (run: any) => new Thread(threadGroup, run, "@ccms/micro-task-" + threadCount.incrementAndGet()),
 | 
			
		||||
    new ThreadPoolExecutor.CallerRunsPolicy()
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
class Process extends EventEmitter {
 | 
			
		||||
    env = {
 | 
			
		||||
        __noSuchProperty__: (prop) => {
 | 
			
		||||
            return Packages.java.lang.System.getenv(prop)
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    platform: Packages.java.lang.System.getProperty("os.name")
 | 
			
		||||
}, {})
 | 
			
		||||
    }
 | 
			
		||||
    platform = Packages.java.lang.System.getProperty("os.name")
 | 
			
		||||
    nextTick(func: Function) {
 | 
			
		||||
        microTaskPool.execute(func)
 | 
			
		||||
    }
 | 
			
		||||
    queueMicrotask(func: Function) {
 | 
			
		||||
        microTaskPool.execute(func)
 | 
			
		||||
    }
 | 
			
		||||
    exit() {
 | 
			
		||||
        microTaskPool.shutdown();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
global.setGlobal('process', new Process(), {})
 | 
			
		||||
global.setGlobal('queueMicrotask', (func: any) => microTaskPool.execute(func), {})
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user