From be114e6d1b54efa5e38f1f12603d31cdc15e1e71 Mon Sep 17 00:00:00 2001 From: MiaoWoo Date: Sun, 9 Feb 2020 22:06:45 +0800 Subject: [PATCH] feat: add core-js Signed-off-by: MiaoWoo --- packages/api/src/index.ts | 3 +-- packages/ployfill/package.json | 3 ++- packages/ployfill/src/es5-ext.ts | 26 ++++++++++++++++++++++++++ packages/ployfill/src/index.ts | 23 +++++++---------------- packages/ployfill/src/proxy.ts | 1 + packages/plugins/src/MiaoChat.ts | 16 ---------------- 6 files changed, 37 insertions(+), 35 deletions(-) create mode 100644 packages/ployfill/src/es5-ext.ts diff --git a/packages/api/src/index.ts b/packages/api/src/index.ts index 58a23905..e7ede333 100644 --- a/packages/api/src/index.ts +++ b/packages/api/src/index.ts @@ -1,5 +1,4 @@ -import '@ms/ployfill' - +/// export * from './task' export * from './event' export * from './console' diff --git a/packages/ployfill/package.json b/packages/ployfill/package.json index 5ff5d363..e7da872b 100644 --- a/packages/ployfill/package.json +++ b/packages/ployfill/package.json @@ -17,7 +17,8 @@ "test": "echo \"Error: run tests from root\" && exit 1" }, "dependencies": { - "@ms/nashorn": "^0.1.0" + "@ms/nashorn": "^0.1.0", + "core-js": "^3.6.4" }, "devDependencies": { "reflect-metadata": "^0.1.13", diff --git a/packages/ployfill/src/es5-ext.ts b/packages/ployfill/src/es5-ext.ts new file mode 100644 index 00000000..fb99fc91 --- /dev/null +++ b/packages/ployfill/src/es5-ext.ts @@ -0,0 +1,26 @@ +// ES2015 String ployfill must force overwrite to js method +Object.defineProperty(String.prototype, 'contains', { + value: require(`es5-ext/string/#/contains/shim`), + configurable: true, + enumerable: false, + writable: true +}) +Object.defineProperty(String.prototype, 'repeat', { + value: require(`es5-ext/string/#/repeat/shim`), + configurable: true, + enumerable: false, + writable: true +}) +Object.defineProperty(String.prototype, 'startsWith', { + value: require(`es5-ext/string/#/starts-with/shim`), + configurable: true, + enumerable: false, + writable: true +}) +Object.defineProperty(String.prototype, 'endsWith', { + value: require(`es5-ext/string/#/ends-with/shim`), + configurable: true, + enumerable: false, + writable: true +}) + diff --git a/packages/ployfill/src/index.ts b/packages/ployfill/src/index.ts index 9d436f7a..4b7d07e7 100644 --- a/packages/ployfill/src/index.ts +++ b/packages/ployfill/src/index.ts @@ -1,19 +1,10 @@ -import './global' -import '@ms/nashorn' -import { Proxy } from './proxy' -import { XMLHttpRequest } from './xml-http-request' - +/// +/// let ployfillStartTime = new Date().getTime(); console.info('Initialization Java Nashorn ployfill. Please wait...'); -// String contains ployfill -Object.defineProperty(String.prototype, 'contains', { - value: function(searchString: string, position: number) { - return String.prototype.indexOf.call(this, searchString, position) > -1; - } -}) -// ES6 Map Symbol ployfill -require('es6-map/implement'); -require('es6-symbol/implement'); -global.setGlobal('Proxy', Proxy) -global.setGlobal('XMLHttpRequest', XMLHttpRequest) +require('./es5-ext'); +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.info('Java Nashorn ployfill loading completed... Cost (' + (new Date().getTime() - ployfillStartTime) / 1000 + 's)!'); diff --git a/packages/ployfill/src/proxy.ts b/packages/ployfill/src/proxy.ts index d85e19cd..f7eb7558 100644 --- a/packages/ployfill/src/proxy.ts +++ b/packages/ployfill/src/proxy.ts @@ -1,3 +1,4 @@ +// Nashorn JSAdapter See https://wiki.openjdk.java.net/display/Nashorn/Nashorn+extensions#Nashornextensions-JSAdapterconstructor let createProxy = eval(` function(handle){ return new JSAdapter(handle) } `) diff --git a/packages/plugins/src/MiaoChat.ts b/packages/plugins/src/MiaoChat.ts index 419768a7..bfe65045 100644 --- a/packages/plugins/src/MiaoChat.ts +++ b/packages/plugins/src/MiaoChat.ts @@ -138,22 +138,6 @@ export class MiaoChat extends interfaces.Plugin { private PlaceholderAPI: { setPlaceholders: (player: any, str: string) => string }; load() { - if (!Object.values) { - Object.defineProperty(Object, "values", { - enumerable: false, - configurable: true, - writable: true, - value: function(target) { - "use strict"; - var values = []; - for (var key in target) { - var desc = Object.getOwnPropertyDescriptor(target, key); - if (desc !== undefined && desc.enumerable) values.push(target[key]); - } - return values; - } - }); - } this.chatFormats = Object.values(this.config.ChatFormats); this.chatFormats.sort(this.compare('index')); this.initFormat(this.chatFormats);