From 0b6c174e42d8847981562d6cfa5a4be386eba6e0 Mon Sep 17 00:00:00 2001 From: MiaoWoo Date: Sun, 2 Feb 2020 01:56:45 +0800 Subject: [PATCH] feat: use dom types and set Proxy global Signed-off-by: MiaoWoo --- packages/common/src/http.ts | 2 +- packages/common/tsconfig.json | 3 +-- packages/ployfill/src/global.ts | 2 -- packages/ployfill/src/index.ts | 2 ++ packages/{common => ployfill}/src/proxy.ts | 4 ++-- 5 files changed, 6 insertions(+), 7 deletions(-) rename packages/{common => ployfill}/src/proxy.ts (91%) diff --git a/packages/common/src/http.ts b/packages/common/src/http.ts index cade1e78..20c2cdeb 100644 --- a/packages/common/src/http.ts +++ b/packages/common/src/http.ts @@ -18,13 +18,13 @@ interface RequestConfig { } function request(config: RequestConfig) { - // @ts-ignore let xhr = new XMLHttpRequest(); xhr.open(config.method, config.url, false); for (const header in config.headers) { xhr.setRequestHeader(header, config.headers[header]); } let future = xhr.send(config.data); + // @ts-ignore return future.get(); } diff --git a/packages/common/tsconfig.json b/packages/common/tsconfig.json index d43b36f6..7aae5d2b 100644 --- a/packages/common/tsconfig.json +++ b/packages/common/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../tsconfig.json", "compilerOptions": { "baseUrl": "src", - "outDir": "dist", - "declaration": true + "outDir": "dist" } } \ No newline at end of file diff --git a/packages/ployfill/src/global.ts b/packages/ployfill/src/global.ts index d6efabb7..6b316128 100644 --- a/packages/ployfill/src/global.ts +++ b/packages/ployfill/src/global.ts @@ -1,4 +1,3 @@ -import { XMLHttpRequest as xhr } from './xml-http-request' declare global { namespace NodeJS { interface Global { @@ -13,7 +12,6 @@ declare global { } var root: string; var base: Core; - var XMLHttpRequest: typeof xhr; var ScriptEngineContextHolder: any; function engineLoad(str: string): any; interface Core { diff --git a/packages/ployfill/src/index.ts b/packages/ployfill/src/index.ts index a7aca07d..9d436f7a 100644 --- a/packages/ployfill/src/index.ts +++ b/packages/ployfill/src/index.ts @@ -1,5 +1,6 @@ import './global' import '@ms/nashorn' +import { Proxy } from './proxy' import { XMLHttpRequest } from './xml-http-request' let ployfillStartTime = new Date().getTime(); @@ -13,5 +14,6 @@ Object.defineProperty(String.prototype, 'contains', { // ES6 Map Symbol ployfill require('es6-map/implement'); require('es6-symbol/implement'); +global.setGlobal('Proxy', Proxy) global.setGlobal('XMLHttpRequest', XMLHttpRequest) console.info('Java Nashorn ployfill loading completed... Cost (' + (new Date().getTime() - ployfillStartTime) / 1000 + 's)!'); diff --git a/packages/common/src/proxy.ts b/packages/ployfill/src/proxy.ts similarity index 91% rename from packages/common/src/proxy.ts rename to packages/ployfill/src/proxy.ts index 28f6ee09..d85e19cd 100644 --- a/packages/common/src/proxy.ts +++ b/packages/ployfill/src/proxy.ts @@ -1,7 +1,7 @@ let createProxy = eval(` function(handle){ return new JSAdapter(handle) } `) -export interface ProxyHandle extends ProxyHandler { +export interface ProxyHandle extends ProxyHandler { // get: (target: any, name: string) => any // set: (target: any, name: string, value: any) => boolean // construct: (target: any, ...args: any[]) => any @@ -19,7 +19,7 @@ export class Proxy { return createProxy({ __get__: (name: string) => handle.get ? handle.get(target, name, undefined) : target[name], __put__: (name: string, value: any) => handle.set ? handle.set(target, name, value, undefined) : target[name] = value, - __call__: (name: string, ...args: any) => handle.apply ? handle.apply(target[name], target, args) : target[name].apply(target, args), + __call__: (name: string, ...args: any) => handle.apply ? handle.apply(target, name, args) : target[name].apply(target, args), __new__: (...args: any) => handle.construct ? handle.construct(target, args, target) : new target(...args), __getIds__: () => handle.ownKeys ? handle.ownKeys(target) : Object.keys(target), __getValues__: () => handle.values ? handle.values(target) : Object.values(target),