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) }
`)