feat: use pnpm & lock core-js shim
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
"scripts": {
|
||||
"clean": "rimraf dist",
|
||||
"watch": "tsc --watch",
|
||||
"build": "yarn clean && tsc",
|
||||
"build": "pnpm clean && tsc",
|
||||
"test": "echo \"Error: run tests from root\" && exit 1"
|
||||
},
|
||||
"dependencies": {
|
||||
@@ -22,9 +22,6 @@
|
||||
"core-js": "^3.32.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ccms/nashorn": "^0.28.0-beta.3",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^4.4.1",
|
||||
"typescript": "^4.9.5"
|
||||
"@ccms/nashorn": "^0.28.0-beta.3"
|
||||
}
|
||||
}
|
||||
|
||||
239
packages/polyfill/src/core-js.ts
Normal file
239
packages/polyfill/src/core-js.ts
Normal file
@@ -0,0 +1,239 @@
|
||||
'use strict';
|
||||
import 'core-js/modules/es.symbol';
|
||||
import 'core-js/modules/es.symbol.description';
|
||||
import 'core-js/modules/es.symbol.async-iterator';
|
||||
import 'core-js/modules/es.symbol.has-instance';
|
||||
import 'core-js/modules/es.symbol.is-concat-spreadable';
|
||||
import 'core-js/modules/es.symbol.iterator';
|
||||
import 'core-js/modules/es.symbol.match';
|
||||
import 'core-js/modules/es.symbol.match-all';
|
||||
import 'core-js/modules/es.symbol.replace';
|
||||
import 'core-js/modules/es.symbol.search';
|
||||
import 'core-js/modules/es.symbol.species';
|
||||
import 'core-js/modules/es.symbol.split';
|
||||
import 'core-js/modules/es.symbol.to-primitive';
|
||||
import 'core-js/modules/es.symbol.to-string-tag';
|
||||
import 'core-js/modules/es.symbol.unscopables';
|
||||
import 'core-js/modules/es.array.at';
|
||||
import 'core-js/modules/es.array.concat';
|
||||
import 'core-js/modules/es.array.copy-within';
|
||||
import 'core-js/modules/es.array.every';
|
||||
import 'core-js/modules/es.array.fill';
|
||||
import 'core-js/modules/es.array.filter';
|
||||
import 'core-js/modules/es.array.find';
|
||||
import 'core-js/modules/es.array.find-index';
|
||||
import 'core-js/modules/es.array.find-last';
|
||||
import 'core-js/modules/es.array.find-last-index';
|
||||
import 'core-js/modules/es.array.flat';
|
||||
import 'core-js/modules/es.array.flat-map';
|
||||
import 'core-js/modules/es.array.for-each';
|
||||
import 'core-js/modules/es.array.from';
|
||||
import 'core-js/modules/es.array.includes';
|
||||
import 'core-js/modules/es.array.index-of';
|
||||
import 'core-js/modules/es.array.is-array';
|
||||
import 'core-js/modules/es.array.iterator';
|
||||
import 'core-js/modules/es.array.join';
|
||||
import 'core-js/modules/es.array.last-index-of';
|
||||
import 'core-js/modules/es.array.map';
|
||||
import 'core-js/modules/es.array.of';
|
||||
import 'core-js/modules/es.array.push';
|
||||
import 'core-js/modules/es.array.reduce';
|
||||
import 'core-js/modules/es.array.reduce-right';
|
||||
import 'core-js/modules/es.array.reverse';
|
||||
import 'core-js/modules/es.array.slice';
|
||||
import 'core-js/modules/es.array.some';
|
||||
import 'core-js/modules/es.array.sort';
|
||||
import 'core-js/modules/es.array.species';
|
||||
import 'core-js/modules/es.array.splice';
|
||||
import 'core-js/modules/es.array.to-reversed';
|
||||
import 'core-js/modules/es.array.to-sorted';
|
||||
import 'core-js/modules/es.array.to-spliced';
|
||||
import 'core-js/modules/es.array.unscopables.flat';
|
||||
import 'core-js/modules/es.array.unscopables.flat-map';
|
||||
import 'core-js/modules/es.array.unshift';
|
||||
import 'core-js/modules/es.array.with';
|
||||
import 'core-js/modules/es.array-buffer.constructor';
|
||||
import 'core-js/modules/es.array-buffer.is-view';
|
||||
import 'core-js/modules/es.array-buffer.slice';
|
||||
import 'core-js/modules/es.data-view';
|
||||
import 'core-js/modules/es.date.get-year';
|
||||
import 'core-js/modules/es.date.now';
|
||||
import 'core-js/modules/es.date.set-year';
|
||||
import 'core-js/modules/es.date.to-gmt-string';
|
||||
import 'core-js/modules/es.date.to-iso-string';
|
||||
import 'core-js/modules/es.date.to-json';
|
||||
import 'core-js/modules/es.date.to-primitive';
|
||||
import 'core-js/modules/es.date.to-string';
|
||||
import 'core-js/modules/es.escape';
|
||||
import 'core-js/modules/es.function.bind';
|
||||
import 'core-js/modules/es.function.has-instance';
|
||||
import 'core-js/modules/es.function.name';
|
||||
import 'core-js/modules/es.global-this';
|
||||
import 'core-js/modules/es.json.stringify';
|
||||
import 'core-js/modules/es.json.to-string-tag';
|
||||
import 'core-js/modules/es.map';
|
||||
import 'core-js/modules/es.math.acosh';
|
||||
import 'core-js/modules/es.math.asinh';
|
||||
import 'core-js/modules/es.math.atanh';
|
||||
import 'core-js/modules/es.math.cbrt';
|
||||
import 'core-js/modules/es.math.clz32';
|
||||
import 'core-js/modules/es.math.cosh';
|
||||
import 'core-js/modules/es.math.expm1';
|
||||
import 'core-js/modules/es.math.fround';
|
||||
import 'core-js/modules/es.math.hypot';
|
||||
import 'core-js/modules/es.math.imul';
|
||||
import 'core-js/modules/es.math.log10';
|
||||
import 'core-js/modules/es.math.log1p';
|
||||
import 'core-js/modules/es.math.log2';
|
||||
import 'core-js/modules/es.math.sign';
|
||||
import 'core-js/modules/es.math.sinh';
|
||||
import 'core-js/modules/es.math.tanh';
|
||||
import 'core-js/modules/es.math.to-string-tag';
|
||||
import 'core-js/modules/es.math.trunc';
|
||||
import 'core-js/modules/es.number.constructor';
|
||||
import 'core-js/modules/es.number.epsilon';
|
||||
import 'core-js/modules/es.number.is-finite';
|
||||
import 'core-js/modules/es.number.is-integer';
|
||||
import 'core-js/modules/es.number.is-nan';
|
||||
import 'core-js/modules/es.number.is-safe-integer';
|
||||
import 'core-js/modules/es.number.max-safe-integer';
|
||||
import 'core-js/modules/es.number.min-safe-integer';
|
||||
import 'core-js/modules/es.number.parse-float';
|
||||
import 'core-js/modules/es.number.parse-int';
|
||||
import 'core-js/modules/es.number.to-exponential';
|
||||
import 'core-js/modules/es.number.to-fixed';
|
||||
import 'core-js/modules/es.number.to-precision';
|
||||
import 'core-js/modules/es.object.assign';
|
||||
import 'core-js/modules/es.object.create';
|
||||
import 'core-js/modules/es.object.define-getter';
|
||||
import 'core-js/modules/es.object.define-properties';
|
||||
import 'core-js/modules/es.object.define-property';
|
||||
import 'core-js/modules/es.object.define-setter';
|
||||
import 'core-js/modules/es.object.entries';
|
||||
import 'core-js/modules/es.object.freeze';
|
||||
import 'core-js/modules/es.object.from-entries';
|
||||
import 'core-js/modules/es.object.get-own-property-descriptor';
|
||||
import 'core-js/modules/es.object.get-own-property-descriptors';
|
||||
import 'core-js/modules/es.object.get-own-property-names';
|
||||
import 'core-js/modules/es.object.get-prototype-of';
|
||||
import 'core-js/modules/es.object.has-own';
|
||||
import 'core-js/modules/es.object.is';
|
||||
import 'core-js/modules/es.object.is-extensible';
|
||||
import 'core-js/modules/es.object.is-frozen';
|
||||
import 'core-js/modules/es.object.is-sealed';
|
||||
import 'core-js/modules/es.object.keys';
|
||||
import 'core-js/modules/es.object.lookup-getter';
|
||||
import 'core-js/modules/es.object.lookup-setter';
|
||||
import 'core-js/modules/es.object.prevent-extensions';
|
||||
import 'core-js/modules/es.object.proto';
|
||||
import 'core-js/modules/es.object.seal';
|
||||
import 'core-js/modules/es.object.values';
|
||||
import 'core-js/modules/es.parse-float';
|
||||
import 'core-js/modules/es.parse-int';
|
||||
import 'core-js/modules/es.promise';
|
||||
import 'core-js/modules/es.promise.all-settled';
|
||||
import 'core-js/modules/es.promise.any';
|
||||
import 'core-js/modules/es.promise.finally';
|
||||
import 'core-js/modules/es.reflect.apply';
|
||||
import 'core-js/modules/es.reflect.construct';
|
||||
import 'core-js/modules/es.reflect.define-property';
|
||||
import 'core-js/modules/es.reflect.delete-property';
|
||||
import 'core-js/modules/es.reflect.get';
|
||||
import 'core-js/modules/es.reflect.get-own-property-descriptor';
|
||||
import 'core-js/modules/es.reflect.get-prototype-of';
|
||||
import 'core-js/modules/es.reflect.has';
|
||||
import 'core-js/modules/es.reflect.is-extensible';
|
||||
import 'core-js/modules/es.reflect.own-keys';
|
||||
import 'core-js/modules/es.reflect.prevent-extensions';
|
||||
import 'core-js/modules/es.reflect.set';
|
||||
import 'core-js/modules/es.reflect.set-prototype-of';
|
||||
import 'core-js/modules/es.reflect.to-string-tag';
|
||||
import 'core-js/modules/es.regexp.constructor';
|
||||
import 'core-js/modules/es.regexp.dot-all';
|
||||
import 'core-js/modules/es.regexp.exec';
|
||||
import 'core-js/modules/es.regexp.flags';
|
||||
import 'core-js/modules/es.regexp.sticky';
|
||||
import 'core-js/modules/es.regexp.test';
|
||||
import 'core-js/modules/es.regexp.to-string';
|
||||
import 'core-js/modules/es.set';
|
||||
import 'core-js/modules/es.string.at-alternative';
|
||||
import 'core-js/modules/es.string.code-point-at';
|
||||
import 'core-js/modules/es.string.ends-with';
|
||||
import 'core-js/modules/es.string.from-code-point';
|
||||
import 'core-js/modules/es.string.includes';
|
||||
import 'core-js/modules/es.string.is-well-formed';
|
||||
import 'core-js/modules/es.string.iterator';
|
||||
import 'core-js/modules/es.string.match';
|
||||
import 'core-js/modules/es.string.match-all';
|
||||
import 'core-js/modules/es.string.pad-end';
|
||||
import 'core-js/modules/es.string.pad-start';
|
||||
import 'core-js/modules/es.string.raw';
|
||||
import 'core-js/modules/es.string.repeat';
|
||||
import 'core-js/modules/es.string.replace';
|
||||
import 'core-js/modules/es.string.replace-all';
|
||||
import 'core-js/modules/es.string.search';
|
||||
import 'core-js/modules/es.string.split';
|
||||
import 'core-js/modules/es.string.starts-with';
|
||||
import 'core-js/modules/es.string.substr';
|
||||
import 'core-js/modules/es.string.to-well-formed';
|
||||
import 'core-js/modules/es.string.trim';
|
||||
import 'core-js/modules/es.string.trim-end';
|
||||
import 'core-js/modules/es.string.trim-start';
|
||||
import 'core-js/modules/es.string.anchor';
|
||||
import 'core-js/modules/es.string.big';
|
||||
import 'core-js/modules/es.string.blink';
|
||||
import 'core-js/modules/es.string.bold';
|
||||
import 'core-js/modules/es.string.fixed';
|
||||
import 'core-js/modules/es.string.fontcolor';
|
||||
import 'core-js/modules/es.string.fontsize';
|
||||
import 'core-js/modules/es.string.italics';
|
||||
import 'core-js/modules/es.string.link';
|
||||
import 'core-js/modules/es.string.small';
|
||||
import 'core-js/modules/es.string.strike';
|
||||
import 'core-js/modules/es.string.sub';
|
||||
import 'core-js/modules/es.string.sup';
|
||||
import 'core-js/modules/es.typed-array.float32-array';
|
||||
import 'core-js/modules/es.typed-array.float64-array';
|
||||
import 'core-js/modules/es.typed-array.int8-array';
|
||||
import 'core-js/modules/es.typed-array.int16-array';
|
||||
import 'core-js/modules/es.typed-array.int32-array';
|
||||
import 'core-js/modules/es.typed-array.uint8-array';
|
||||
import 'core-js/modules/es.typed-array.uint8-clamped-array';
|
||||
import 'core-js/modules/es.typed-array.uint16-array';
|
||||
import 'core-js/modules/es.typed-array.uint32-array';
|
||||
import 'core-js/modules/es.typed-array.at';
|
||||
import 'core-js/modules/es.typed-array.copy-within';
|
||||
import 'core-js/modules/es.typed-array.every';
|
||||
import 'core-js/modules/es.typed-array.fill';
|
||||
import 'core-js/modules/es.typed-array.filter';
|
||||
import 'core-js/modules/es.typed-array.find';
|
||||
import 'core-js/modules/es.typed-array.find-index';
|
||||
import 'core-js/modules/es.typed-array.find-last';
|
||||
import 'core-js/modules/es.typed-array.find-last-index';
|
||||
import 'core-js/modules/es.typed-array.for-each';
|
||||
import 'core-js/modules/es.typed-array.from';
|
||||
import 'core-js/modules/es.typed-array.includes';
|
||||
import 'core-js/modules/es.typed-array.index-of';
|
||||
import 'core-js/modules/es.typed-array.iterator';
|
||||
import 'core-js/modules/es.typed-array.join';
|
||||
import 'core-js/modules/es.typed-array.last-index-of';
|
||||
import 'core-js/modules/es.typed-array.map';
|
||||
import 'core-js/modules/es.typed-array.of';
|
||||
import 'core-js/modules/es.typed-array.reduce';
|
||||
import 'core-js/modules/es.typed-array.reduce-right';
|
||||
import 'core-js/modules/es.typed-array.reverse';
|
||||
import 'core-js/modules/es.typed-array.set';
|
||||
import 'core-js/modules/es.typed-array.slice';
|
||||
import 'core-js/modules/es.typed-array.some';
|
||||
import 'core-js/modules/es.typed-array.sort';
|
||||
import 'core-js/modules/es.typed-array.subarray';
|
||||
import 'core-js/modules/es.typed-array.to-locale-string';
|
||||
import 'core-js/modules/es.typed-array.to-reversed';
|
||||
import 'core-js/modules/es.typed-array.to-sorted';
|
||||
import 'core-js/modules/es.typed-array.to-string';
|
||||
import 'core-js/modules/es.typed-array.with';
|
||||
import 'core-js/modules/es.unescape';
|
||||
import 'core-js/modules/es.weak-map';
|
||||
import 'core-js/modules/es.weak-set';
|
||||
|
||||
module.exports = require('core-js/internals/path');
|
||||
@@ -7,7 +7,7 @@ console.i18n("ms.polyfill.initialize")
|
||||
import './openjdk-nashorn-shim'
|
||||
import './es5-ext'
|
||||
import './node-shim'
|
||||
import 'core-js'
|
||||
import './core-js'
|
||||
//@ts-ignore
|
||||
process.on('exit', () => require.disable())
|
||||
global.setGlobal('Proxy', require('./proxy').Proxy)
|
||||
|
||||
@@ -45,11 +45,13 @@ class Process extends EventEmitter {
|
||||
execArgv = ''
|
||||
execPath = ''
|
||||
|
||||
private queueMicrotaskExecuteTimeout = 5000
|
||||
|
||||
constructor() {
|
||||
super()
|
||||
this.on('exit', () => {
|
||||
console.log(`await microTaskPool termination! queueTask: ${microTaskPool.shutdownNow().size()} remainTask: ${threadGroup.activeCount()}`)
|
||||
microTaskPool.awaitTermination(3000, TimeUnit.MILLISECONDS)
|
||||
microTaskPool.awaitTermination(this.queueMicrotaskExecuteTimeout, TimeUnit.MILLISECONDS)
|
||||
})
|
||||
}
|
||||
on(event: string | symbol, listener: (...args: any[]) => void) {
|
||||
@@ -67,18 +69,30 @@ class Process extends EventEmitter {
|
||||
})
|
||||
}
|
||||
nextTick(callback: Function, ...args: any[]): void {
|
||||
microTaskPool.execute(() => {
|
||||
try {
|
||||
callback(args)
|
||||
} catch (origin: any) {
|
||||
try {
|
||||
super.emit('error', origin)
|
||||
} catch (error: any) {
|
||||
console.ex(origin)
|
||||
console.ex(error)
|
||||
try {
|
||||
microTaskPool.submit(new Callable({
|
||||
call: () => {
|
||||
try {
|
||||
callback(args)
|
||||
} catch (origin: any) {
|
||||
try {
|
||||
super.emit('error', origin)
|
||||
} catch (error: any) {
|
||||
console.ex(origin)
|
||||
console.ex(error)
|
||||
}
|
||||
}
|
||||
}
|
||||
})).get(this.queueMicrotaskExecuteTimeout, TimeUnit.MILLISECONDS)
|
||||
} catch (error: any) {
|
||||
if (error instanceof InterruptedException) {
|
||||
return console.warn(`FixedThreadPool isInterrupted exit! Task ${callback.name || '<anonymous>'} exec exit!`)
|
||||
}
|
||||
})
|
||||
if (error instanceof TimeoutException) {
|
||||
return console.warn(`Task ${callback.name || '<anonymous>'} => ${callback} exec time greater than ${this.queueMicrotaskExecuteTimeout}ms!`)
|
||||
}
|
||||
throw error.getCause && error.getCause() || error
|
||||
}
|
||||
}
|
||||
exit(code: number) {
|
||||
console.log(`process exit by code ${code}!`)
|
||||
@@ -120,9 +134,6 @@ class Process extends EventEmitter {
|
||||
throw new Error('MiaoScript unsupport kill.')
|
||||
return true
|
||||
}
|
||||
toString() {
|
||||
return "[object process]"
|
||||
}
|
||||
}
|
||||
|
||||
class EventLoop {
|
||||
@@ -174,7 +185,7 @@ class EventLoop {
|
||||
this.eventLoopMainThread.interrupt()
|
||||
this.fixedThreadPool.shutdownNow()
|
||||
console.log(`await fixedThreadPool termination!`)
|
||||
this.fixedThreadPool.awaitTermination(3000, TimeUnit.MILLISECONDS)
|
||||
this.fixedThreadPool.awaitTermination(this.taskExecuteTimeout, TimeUnit.MILLISECONDS)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -261,7 +272,7 @@ class EventLoop {
|
||||
}
|
||||
}
|
||||
global.setGlobal('process', new Process(), {})
|
||||
Object.defineProperty(process, require('core-js/es/symbol/to-string-tag'), { value: '[object process]' })
|
||||
Object.defineProperty(process, require('core-js/es/symbol/to-string-tag'), { value: 'process' })
|
||||
const eventLoop = new EventLoop()
|
||||
Object.defineProperty(process, 'eventLoop', { value: eventLoop })
|
||||
eventLoop.startEventLoop()
|
||||
|
||||
Reference in New Issue
Block a user