From 6f2b8f4a0e8d14530b699bf370f791ef78577e0f Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Thu, 17 Nov 2016 20:42:12 +0800 Subject: [PATCH] Added thunkify, promisify, co --- bower.json | 2 +- dist/hprose-html5.js | 8 +- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 184 +++++++++- gulpfile.js | 3 +- package.json | 2 +- src/CopyRight.js | 2 +- src/Future.js | 182 +++++++++- utils/regenerator-runtime.js | 669 +++++++++++++++++++++++++++++++++++ 9 files changed, 1030 insertions(+), 24 deletions(-) create mode 100644 utils/regenerator-runtime.js diff --git a/bower.json b/bower.json index 84b6045..27a094e 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.23", + "version": "2.0.24", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 6059c4a..21d6d17 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.23 +// Hprose for HTML5 v2.0.24 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -!function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(e){return"function"==typeof e.then}function o(e){return n(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function A(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function E(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function x(e,t,r){e?R(e,t,r):t.resolve(r)}function M(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:g},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:A},lastIndexOf:{value:E},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(n(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var i=this;return void t.call(e,function(e){r&&(r=!1,i.resolve(e))},function(e){r&&(r=!1,i.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();x(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();M(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?x(e,n,this._value):this._state===F?M(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return A(this,e,t)}},lastIndexOf:{value:function(e,t){return E(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull); -switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return x(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function E(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function x(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return x(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return E(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return x(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,n,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function T(e,t){return e=o(e,t),st(e,t).then(function(e){if(!t.oneway)return p(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=j(e,t);if(null!==n)return n;throw r})}function O(e,t,r,n){at(e,t).then(r,n)}function S(){var e=Ne.length;if(e>1){var t=Fe+1;t>=e&&(t=0,Qe++),Fe=t,Ue=Ne[Fe]}else Qe++;Ke(ht)}function j(e,t){if(t.failswitch&&S(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?h.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function B(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};O(g,t,r,et.reject)}function A(e,t){return function(){return Xe?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function E(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==y&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function M(e,t,r,n){return Ge?h.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return M(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function N(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();C(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function F(e){return function(){e&&(Ge=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):M(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function W(e,t,r){r.sync&&(Ge=!0);var n=h.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Ge)return h.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Ge=!0);var n=Ze;Ze=[];var i=h.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return $e}function G(e){typeof e===m&&($e=e)}function Y(){return Ke}function J(e){typeof e===m&&(Ke=e)}function $(){return Ue}function K(){return Ne}function V(e){if(typeof e===y)Ne=[e];else{if(!Array.isArray(e))return;Ne=e.slice(0),Ne.sort(function(){return Math.random()-.5})}Fe=0,Ue=Ne[Fe]}function X(){return He}function Z(e){He=!!e}function ee(){return Qe}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function se(e){nt=!!e}function ue(){return nt}function ce(){return We}function fe(e){We=!!e}function le(){return Le}function he(e){Le=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function de(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,r,n){n===t&&(typeof r===d&&(n=r,r=!1),r||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof r===y||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),et.resolve(i),i):(a(B,i),et)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==y)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Be(e,r,n){if(typeof e!==y)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete tt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===rt){if(tt[e]){var i=tt[e];for(r in i)je(i,r,n)}}else rt.then(function(t){Be(e,t,n)});else h.isPromise(r)?r.then(function(t){Be(e,t,n)}):je(tt[e],r,n);v(tt[e])&&delete tt[e]}function Ae(e){return!!tt[e]}function Ee(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=P(ht,"#",[],!1)),rt}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function xe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Me(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Pe(e){return Ie(e),ht}var Ue,Ne=[],Fe=-1,We=!1,Le=!1,De=3e4,ze=10,qe=!1,He=!1,Qe=0,Ge=!1,Ye=[],Je=!1,$e=r,Ke=r,Ve=[],Xe=!1,Ze=[],et=new h,tt=Object.create(null),rt=null,nt=!0,it=N,ot=z,at=T,st=_,ut=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return Re(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return xe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Me(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:Q,set:G},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Se},unsubscribe:{value:Be},isSubscribed:{value:Ae},subscribedList:{value:Ee},use:{value:Pe},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(n))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var d="boolean",y="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new l;o.open("POST",S.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=_),o.onprogress=O,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(t,r){var n=new s;return e.api.ajax({url:S.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:T,certificate:S.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?v(t,r):h(t,r);return r.oneway&&i.resolve(),i}function d(e){"function"==typeof e&&(_=e)}function y(){return _}function w(e){"function"==typeof e&&(O=e)}function m(){return O}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var T=Object.create(null),_=r,O=r,S=this;Object.defineProperties(this,{onprogress:{get:y,set:d},onRequestProgress:{get:y,set:d},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function i(e){var t=v(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{ -if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=e.XMLHttpRequest,h="undefined"!=typeof l,p=!f&&h&&"withCredentials"in new l,v=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new l(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=v,S.onerror=r,S.onclose=g}function y(e,t){null!==S&&S.readyState!==l.CLOSING&&S.readyState!==l.CLOSED||d();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new v;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:d}})}function u(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,d=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")); \ No newline at end of file +!function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&Q(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(e){return"function"==typeof e.then}function o(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return Y(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function a(e){var t=new r;return t.reject(e),t}function s(e){var t=new r;return t.resolve(e),t}function u(e){try{var t=e();return s(t)}catch(e){return a(e)}}function c(e){var t=new r;return e(t.resolve,t.reject),t}function f(e){var t=0;return Array.forEach(e,function(){++t}),t}function l(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),i=new Array(t);if(0===n)return s(i);var o=new r;return Array.forEach(e,function(e,t){j(e).then(function(e){i[t]=e,0===--n&&o.resolve(i)},o.reject)}),o})}function h(){return l(arguments)}function p(e){return e=i(e)?e:s(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){j(e).fill(t)}),t})}function v(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new r;return Array.forEach(e,function(e,t){j(e).then(o.resolve,function(e){i[t]=e,0===--n&&o.reject(i)})}),o})}function g(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),i=new Array(t);if(0===n)return s(i);var o=new r;return Array.forEach(e,function(e,t){var r=j(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&o.resolve(i)})}),o})}function y(e){var t=function(){return this}(),r=Array.slice(arguments,1);return l(r).then(function(r){return e.apply(t,r)})}function d(e,t){var r=Array.slice(arguments,2);return l(r).then(function(r){return e.apply(t,r)})}function w(e){return"function"==typeof e.next&&"function"==typeof e.throw}function m(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||w(t.prototype))}function b(e){var t=function(){return this}(),n=new r;return e.call(t,function(e,t){return arguments.length<2?e instanceof Error?n.reject(e):n.resolve(e):e?n.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void n.resolve(t))}),n}function T(e){return function(){var t=Array.slice(arguments,0),n=this,i=new r;t.push(function(){n=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(n,t)})}}}function _(e){return function(){var t=Array.slice(arguments,0),n=new r;t.push(function(e,t){return arguments.length<2?e instanceof Error?n.reject(e):n.resolve(e):e?n.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void n.resolve(t))});try{e.apply(this,t)}catch(e){n.reject(e)}return n}}function j(e){return e?i(e)?e:m(e)||w(e)?O(e):"function"==typeof e?b(e):s(e):s(e)}function O(e){function t(t){try{i(e.next(t))}catch(e){s.reject(e)}}function n(t){try{i(e.throw(t))}catch(e){return s.reject(e)}}function i(e){e.done?s.resolve(e.value):j(e.value).then(t,n)}var o=function(){return this}();if("function"==typeof e){var a=Array.slice(arguments,1);e=e.apply(o,a)}var s=new r;return e&&"function"==typeof e.next?(t(),s):s.resolve(e)}function E(e,t){return function(){return t=t||this,l(arguments).then(function(r){var n=e.apply(t,r);return m(n)?O.call(t,n):n})}}function S(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.forEach(t,r)})}function B(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.every(t,r)})}function A(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.some(t,r)})}function k(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.filter(t,r)})}function C(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.map(t,r)})}function I(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduce(t,r)})}):l(e).then(function(e){return e.reduce(t)})}function x(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduceRight(t,r)})}):l(e).then(function(e){return e.reduceRight(t)})}function R(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.indexOf(t,r)})})}function P(e,r,n){return l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function M(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.includes(t,r)})})}function U(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.find(t,r)})}function L(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.findIndex(t,r)})}function N(e,t,r){Q(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function F(e,t,r){e?N(e,t,r):t.resolve(r)}function W(e,t,r){e?N(e,t,r):t.reject(r)}function D(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==z}}})}var z=0,q=1,H=2,G="Promise"in e,Q=e.setImmediate,Y=e.setTimeout,J=e.clearTimeout,$=e.TimeoutError;Object.defineProperties(r,{delayed:{value:o},error:{value:a},sync:{value:u},value:{value:s},all:{value:l},race:{value:p},resolve:{value:s},reject:{value:a},promise:{value:c},isFuture:{value:n},isPromise:{value:i},toPromise:{value:j},join:{value:h},any:{value:v},settle:{value:g},attempt:{value:y},run:{value:d},thunkify:{value:T},promisify:{value:_},co:{value:O},wrap:{value:E},forEach:{value:S},every:{value:B},some:{value:A},filter:{value:k},map:{value:C},reduce:{value:I},reduceRight:{value:x},indexOf:{value:R},lastIndexOf:{value:P},includes:{value:M},find:{value:U},findIndex:{value:L}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:z,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(n(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var i=this;return void t.call(e,function(e){r&&(r=!1,i.resolve(e))},function(e){r&&(r=!1,i.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===z){this._state=q,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();F(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===z){this._state=H,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();W(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===q?F(e,n,this._value):this._state===H?W(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){Q(function(){throw e})})}},inspect:{value:function(){switch(this._state){case z:return{state:"pending"};case q:return{state:"fulfilled",value:this._value};case H:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=Y(function(){n.reject(t||new $("timeout"))},e);return this.whenComplete(function(){J(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){Y(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return l(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?I(this,e,t):I(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?x(this,e,t):x(this,e)}},indexOf:{value:function(e,t){return R(this,e,t)}},lastIndexOf:{value:function(e,t){return P(this,e,t)}},includes:{value:function(e,t){return M(this,e,t)}},find:{value:function(e,t){return U(this,e,t)}},findIndex:{value:function(e,t){return L(this,e,t)}}}),e.hprose.Future=r,e.hprose.thunkify=T,e.hprose.promisify=_,e.hprose.co=O,e.hprose.co.wrap=e.hprose.wrap=E,e.hprose.Completer=D,e.hprose.resolved=s,e.hprose.rejected=a,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},G||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:l},race:{value:p},resolve:{value:s},reject:{value:a}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]; +}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=S.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&S.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new j,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?B:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(E.TagNull);switch(n.constructor){case Function:return void i.writeByte(E.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(E.TagEmpty);case 1:return i.writeByte(E.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case j:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case O:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void d(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(E.TagLong):r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?E.TagTrue:E.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c)),r.writeByte(E.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))):(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))),r.writeByte(E.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(E.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(E.TagPoint),r.writeAsciiString(a)),r.writeByte(E.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(E.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.write(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(E.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.writeString(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(E.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(E.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(E.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(E.TagOpenbrace),r.writeByte(E.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(E.TagObject),o.writeAsciiString(""+i),o.writeByte(E.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=d(i,r,0,"."),null===t&&(t=d(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return j(t);case ee.TagDouble:return E(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return B(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return R(e);case ee.TagUTF8Char:return M(e);case ee.TagString:return L(e);case ee.TagGuid:return F(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?G(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(N(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function j(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return j(e);default:r(t)}}function E(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return E(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return B(e);default:r(t)}}function B(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function R(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function P(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return R(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function L(e){var t=U(e);return e.refer.set(t),t}function N(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return M(e);case ee.TagString:return L(e);case ee.TagRef:return K(e);default:r(t)}}function F(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function W(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return F(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return O(this.stream)}},readDouble:{value:function(){return S(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return x(this)}},readBytesWithoutTag:{value:function(){return R(this)}},readBytes:{value:function(){return P(this)}},readStringWithoutTag:{value:function(){return L(this)}},readString:{value:function(){return N(this)}},readGuidWithoutTag:{value:function(){return F(this)}},readGuid:{value:function(){return W(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?G(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,n,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function T(e,t){return e=o(e,t),st(e,t).then(function(e){if(!t.oneway)return p(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=E(e,t);if(null!==n)return n;throw r})}function j(e,t,r,n){at(e,t).then(r,n)}function O(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;Ke(ht)}function E(e,t){if(t.failswitch&&O(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?h.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function S(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};j(g,t,r,et.reject)}function B(e,t){return function(){return Xe?M(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==d&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?h.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,x(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=R(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){j(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();C(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=h.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return h.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(R(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){j(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var y=f.readList();C(y,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Qe)return h.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=h.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return $e}function Q(e){typeof e===m&&($e=e)}function Y(){return Ke}function J(e){typeof e===m&&(Ke=e)}function $(){return Ue}function K(){return Le}function V(e){if(typeof e===d)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function X(){return He}function Z(e){He=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function se(e){nt=!!e}function ue(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function ye(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){de(e)}):de(e)}function de(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,r,n){n===t&&(typeof r===y&&(n=r,r=!1),r||(typeof e===y?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),et.resolve(i),i):(a(S,i),et)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Se(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete tt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===rt){if(tt[e]){var i=tt[e];for(r in i)Ee(i,r,n)}}else rt.then(function(t){Se(e,t,n)});else h.isPromise(r)?r.then(function(t){Se(e,t,n)}):Ee(tt[e],r,n);v(tt[e])&&delete tt[e]}function Be(e){return!!tt[e]}function Ae(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},L)}function xe(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Re(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Pe(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,ze=10,qe=!1,He=!1,Ge=0,Qe=!1,Ye=[],Je=!1,$e=r,Ke=r,Ve=[],Xe=!1,Ze=[],et=new h,tt=Object.create(null),rt=null,nt=!0,it=L,ot=z,at=T,st=_,ut=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return xe(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return Re(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:ye},addFilter:{value:de},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Oe},unsubscribe:{value:Se},isSubscribed:{value:Be},subscribedList:{value:Ae},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(n))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var y="boolean",d="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")), +function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new l;o.open("POST",O.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=_),o.onprogress=j,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:T,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?v(t,r):h(t,r);return r.oneway&&i.resolve(),i}function y(e){"function"==typeof e&&(_=e)}function d(){return _}function w(e){"function"==typeof e&&(j=e)}function m(){return j}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var T=Object.create(null),_=r,j=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:y},onRequestProgress:{get:d,set:y},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function i(e){var t=v(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=e.XMLHttpRequest,h="undefined"!=typeof l,p=!f&&h&&"withCredentials"in new l,v=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?O.send(n):n.buffer.slice?O.send(n.buffer.slice(0,n.length)):O.send(n.buffer)}function p(e){j.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();j.then(function(){h(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,O=null}function y(){j=new u,O=new l(E.uri),O.binaryType="arraybuffer",O.onopen=p,O.onmessage=v,O.onerror=r,O.onclose=g}function d(e,t){null!==O&&O.readyState!==l.CLOSING&&O.readyState!==l.CLOSED||y();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,j.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==O&&(O.onopen=r,O.onmessage=r,O.onclose=r,O.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],j=null,O=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function y(e,t){var r=new v;return m?(null!==_&&_.uri===d.uri||(_=new o(d)),_.sendAndReceive(e,r,t)):(null!==j&&j.uri===d.uri||(j=new a(d)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var d=this,w=!0,m=!1,b=10,T=3e4,_=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:y}})}function u(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,y=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),s=new h(i||[]);return a._invoke=c(e,r,s),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function s(e){this.arg=e}function u(e){function t(n,i,o,a){var u=r(e[n],e,i);if("throw"!==u.type){var c=u.arg,f=c.value;return f instanceof s?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(u.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===O)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var s=n.delegate;if(s){if("return"===o||"throw"===o&&s.iterator[o]===g){n.delegate=null;var u=s.iterator.return;if(u){var c=r(u,s.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(s.iterator[o],s.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=j,f;n[s.resultName]=f.value,n.next=s.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=O;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:j;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=y.call(i,"catchLoc"),s=y.call(i,"finallyLoc");if(a&&s){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&y.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index a79a7d5..ba37be2 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index 0d56c98..3e1109b 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.23 +// Hprose for HTML5 v2.0.24 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -1097,7 +1097,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Oct 21, 2016 * + * LastModified: Nov 17, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -1142,10 +1142,6 @@ return 'function' === typeof obj.then; } - function toPromise(obj) { - return (isFuture(obj) ? obj : value(obj)); - } - function delayed(duration, value) { var computation = (typeof value === 'function') ? value : @@ -1276,9 +1272,10 @@ } function attempt(handler/*, arg1, arg2, ... */) { + var thisArg = (function() { return this; })(); var args = Array.slice(arguments, 1); return all(args).then(function(args) { - return handler.apply(undefined, args); + return handler.apply(thisArg, args); }); } @@ -1289,39 +1286,200 @@ }); } + function isGenerator(obj) { + return 'function' == typeof obj.next && 'function' == typeof obj['throw']; + } + + function isGeneratorFunction(obj) { + if (!obj) { + return false; + } + var constructor = obj.constructor; + if (!constructor) { + return false; + } + if ('GeneratorFunction' === constructor.name || + 'GeneratorFunction' === constructor.displayName) { + return true; + } + return isGenerator(constructor.prototype); + } + + function thunkToPromise(fn) { + var thisArg = (function() { return this; })(); + var future = new Future(); + fn.call(thisArg, function(err, res) { + if (arguments.length < 2) { + if (err instanceof Error) { + return future.reject(err); + } + return future.resolve(err); + } + if (err) { + return future.reject(err); + } + if (arguments.length > 2) { + res = Array.slice(arguments, 1); + } + future.resolve(res); + }); + return future; + } + + function thunkify(fn) { + return function() { + var args = Array.slice(arguments, 0); + var thisArg = this; + var results = new Future(); + args.push(function() { + thisArg = this; + results.resolve(arguments); + }); + try { + fn.apply(this, args); + } + catch (err) { + results.resolve([err]); + } + return function(done) { + results.then(function(results) { + done.apply(thisArg, results); + }); + }; + }; + } + + function promisify(fn) { + return function() { + var args = Array.slice(arguments, 0); + var results = new Future(); + args.push(function(err, res) { + if (arguments.length < 2) { + if (err instanceof Error) { + return results.reject(err); + } + return results.resolve(err); + } + if (err) { + return results.reject(err); + } + if (arguments.length > 2) { + res = Array.slice(arguments, 1); + } + results.resolve(res); + }); + try { + fn.apply(this, args); + } + catch (err) { + results.reject(err); + } + return results; + }; + } + + function toPromise(obj) { + if (!obj) { + return value(obj); + } + if (isPromise(obj)) { + return obj; + } + if (isGeneratorFunction(obj) || isGenerator(obj)) { + return co(obj); + } + if ('function' == typeof obj) { + return thunkToPromise(obj); + } + return value(obj); + } + + function co(gen) { + var thisArg = (function() { return this; })(); + if (typeof gen === 'function') { + var args = Array.slice(arguments, 1); + gen = gen.apply(thisArg, args); + } + var future = new Future(); + + function onFulfilled(res) { + try { + next(gen.next(res)); + } + catch (e) { + future.reject(e); + } + } + + function onRejected(err) { + try { + next(gen['throw'](err)); + } + catch (e) { + return future.reject(e); + } + } + + function next(ret) { + if (ret.done) { + future.resolve(ret.value); + } + else { + toPromise(ret.value).then(onFulfilled, onRejected); + } + } + + if (!gen || typeof gen.next !== 'function') { + return future.resolve(gen); + } + onFulfilled(); + + return future; + } + function wrap(handler, thisArg) { return function() { + thisArg = thisArg || this; return all(arguments).then(function(args) { - return handler.apply(thisArg, args); + var result = handler.apply(thisArg, args); + if (isGeneratorFunction(result)) { + return co.call(thisArg, result); + } + return result; }); }; } function forEach(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.forEach(callback, thisArg); }); } function every(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.every(callback, thisArg); }); } function some(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.some(callback, thisArg); }); } function filter(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.filter(callback, thisArg); }); } function map(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.map(callback, thisArg); }); @@ -1396,12 +1554,14 @@ } function find(array, predicate, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.find(predicate, thisArg); }); } function findIndex(array, predicate, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.findIndex(predicate, thisArg); }); @@ -1428,6 +1588,9 @@ settle: { value: settle }, attempt: { value: attempt }, run: { value: run }, + thunkify: { value: thunkify }, + promisify: { value: promisify }, + co: { value: co }, wrap: { value: wrap }, // for array forEach: { value: forEach }, @@ -1735,6 +1898,11 @@ global.hprose.Future = Future; + global.hprose.thunkify = thunkify; + global.hprose.promisify = promisify; + global.hprose.co = co; + global.hprose.co.wrap = global.hprose.wrap = wrap; + function Completer() { var future = new Future(); Object.defineProperties(this, { diff --git a/gulpfile.js b/gulpfile.js index fdef897..765e741 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -41,7 +41,8 @@ gulp.task('concat', ['clear'], function() { }); gulp.task('uglify', ['concat'], function() { - return gulp.src(['dist/hprose-html5.src.js']) + return gulp.src(['dist/hprose-html5.src.js', + 'utils/regenerator-runtime.js']) .pipe(concat('hprose-html5.js')) .pipe(uglify()) .pipe(gulp.dest('dist')); diff --git a/package.json b/package.json index 8875767..ff2e64f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.23", + "version": "2.0.24", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/CopyRight.js b/src/CopyRight.js index 288e23d..a31b6b4 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.23 +// Hprose for HTML5 v2.0.24 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/Future.js b/src/Future.js index 85a4d29..21b187a 100644 --- a/src/Future.js +++ b/src/Future.js @@ -13,7 +13,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Oct 21, 2016 * + * LastModified: Nov 17, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -58,10 +58,6 @@ return 'function' === typeof obj.then; } - function toPromise(obj) { - return (isFuture(obj) ? obj : value(obj)); - } - function delayed(duration, value) { var computation = (typeof value === 'function') ? value : @@ -192,9 +188,10 @@ } function attempt(handler/*, arg1, arg2, ... */) { + var thisArg = (function() { return this; })(); var args = Array.slice(arguments, 1); return all(args).then(function(args) { - return handler.apply(undefined, args); + return handler.apply(thisArg, args); }); } @@ -205,39 +202,200 @@ }); } + function isGenerator(obj) { + return 'function' == typeof obj.next && 'function' == typeof obj['throw']; + } + + function isGeneratorFunction(obj) { + if (!obj) { + return false; + } + var constructor = obj.constructor; + if (!constructor) { + return false; + } + if ('GeneratorFunction' === constructor.name || + 'GeneratorFunction' === constructor.displayName) { + return true; + } + return isGenerator(constructor.prototype); + } + + function thunkToPromise(fn) { + var thisArg = (function() { return this; })(); + var future = new Future(); + fn.call(thisArg, function(err, res) { + if (arguments.length < 2) { + if (err instanceof Error) { + return future.reject(err); + } + return future.resolve(err); + } + if (err) { + return future.reject(err); + } + if (arguments.length > 2) { + res = Array.slice(arguments, 1); + } + future.resolve(res); + }); + return future; + } + + function thunkify(fn) { + return function() { + var args = Array.slice(arguments, 0); + var thisArg = this; + var results = new Future(); + args.push(function() { + thisArg = this; + results.resolve(arguments); + }); + try { + fn.apply(this, args); + } + catch (err) { + results.resolve([err]); + } + return function(done) { + results.then(function(results) { + done.apply(thisArg, results); + }); + }; + }; + } + + function promisify(fn) { + return function() { + var args = Array.slice(arguments, 0); + var results = new Future(); + args.push(function(err, res) { + if (arguments.length < 2) { + if (err instanceof Error) { + return results.reject(err); + } + return results.resolve(err); + } + if (err) { + return results.reject(err); + } + if (arguments.length > 2) { + res = Array.slice(arguments, 1); + } + results.resolve(res); + }); + try { + fn.apply(this, args); + } + catch (err) { + results.reject(err); + } + return results; + }; + } + + function toPromise(obj) { + if (!obj) { + return value(obj); + } + if (isPromise(obj)) { + return obj; + } + if (isGeneratorFunction(obj) || isGenerator(obj)) { + return co(obj); + } + if ('function' == typeof obj) { + return thunkToPromise(obj); + } + return value(obj); + } + + function co(gen) { + var thisArg = (function() { return this; })(); + if (typeof gen === 'function') { + var args = Array.slice(arguments, 1); + gen = gen.apply(thisArg, args); + } + var future = new Future(); + + function onFulfilled(res) { + try { + next(gen.next(res)); + } + catch (e) { + future.reject(e); + } + } + + function onRejected(err) { + try { + next(gen['throw'](err)); + } + catch (e) { + return future.reject(e); + } + } + + function next(ret) { + if (ret.done) { + future.resolve(ret.value); + } + else { + toPromise(ret.value).then(onFulfilled, onRejected); + } + } + + if (!gen || typeof gen.next !== 'function') { + return future.resolve(gen); + } + onFulfilled(); + + return future; + } + function wrap(handler, thisArg) { return function() { + thisArg = thisArg || this; return all(arguments).then(function(args) { - return handler.apply(thisArg, args); + var result = handler.apply(thisArg, args); + if (isGeneratorFunction(result)) { + return co.call(thisArg, result); + } + return result; }); }; } function forEach(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.forEach(callback, thisArg); }); } function every(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.every(callback, thisArg); }); } function some(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.some(callback, thisArg); }); } function filter(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.filter(callback, thisArg); }); } function map(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.map(callback, thisArg); }); @@ -312,12 +470,14 @@ } function find(array, predicate, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.find(predicate, thisArg); }); } function findIndex(array, predicate, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.findIndex(predicate, thisArg); }); @@ -344,6 +504,9 @@ settle: { value: settle }, attempt: { value: attempt }, run: { value: run }, + thunkify: { value: thunkify }, + promisify: { value: promisify }, + co: { value: co }, wrap: { value: wrap }, // for array forEach: { value: forEach }, @@ -651,6 +814,11 @@ global.hprose.Future = Future; + global.hprose.thunkify = thunkify; + global.hprose.promisify = promisify; + global.hprose.co = co; + global.hprose.co.wrap = global.hprose.wrap = wrap; + function Completer() { var future = new Future(); Object.defineProperties(this, { diff --git a/utils/regenerator-runtime.js b/utils/regenerator-runtime.js new file mode 100644 index 0000000..4ec72f1 --- /dev/null +++ b/utils/regenerator-runtime.js @@ -0,0 +1,669 @@ +/** + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * https://raw.github.com/facebook/regenerator/master/LICENSE file. An + * additional grant of patent rights can be found in the PATENTS file in + * the same directory. + */ + +!(function(global) { + "use strict"; + + var hasOwn = Object.prototype.hasOwnProperty; + var undefined; // More compressible than void 0. + var $Symbol = typeof Symbol === "function" ? Symbol : {}; + var iteratorSymbol = $Symbol.iterator || "@@iterator"; + var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; + + var inModule = typeof module === "object"; + var runtime = global.regeneratorRuntime; + if (runtime) { + if (inModule) { + // If regeneratorRuntime is defined globally and we're in a module, + // make the exports object identical to regeneratorRuntime. + module.exports = runtime; + } + // Don't bother evaluating the rest of this file if the runtime was + // already defined globally. + return; + } + + // Define the runtime globally (as expected by generated code) as either + // module.exports (if we're in a module) or a new, empty object. + runtime = global.regeneratorRuntime = inModule ? module.exports : {}; + + function wrap(innerFn, outerFn, self, tryLocsList) { + // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. + var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; + var generator = Object.create(protoGenerator.prototype); + var context = new Context(tryLocsList || []); + + // The ._invoke method unifies the implementations of the .next, + // .throw, and .return methods. + generator._invoke = makeInvokeMethod(innerFn, self, context); + + return generator; + } + runtime.wrap = wrap; + + // Try/catch helper to minimize deoptimizations. Returns a completion + // record like context.tryEntries[i].completion. This interface could + // have been (and was previously) designed to take a closure to be + // invoked without arguments, but in all the cases we care about we + // already have an existing method we want to call, so there's no need + // to create a new function object. We can even get away with assuming + // the method takes exactly one argument, since that happens to be true + // in every case, so we don't have to touch the arguments object. The + // only additional allocation required is the completion record, which + // has a stable shape and so hopefully should be cheap to allocate. + function tryCatch(fn, obj, arg) { + try { + return { type: "normal", arg: fn.call(obj, arg) }; + } catch (err) { + return { type: "throw", arg: err }; + } + } + + var GenStateSuspendedStart = "suspendedStart"; + var GenStateSuspendedYield = "suspendedYield"; + var GenStateExecuting = "executing"; + var GenStateCompleted = "completed"; + + // Returning this object from the innerFn has the same effect as + // breaking out of the dispatch switch statement. + var ContinueSentinel = {}; + + // Dummy constructor functions that we use as the .constructor and + // .constructor.prototype properties for functions that return Generator + // objects. For full spec compliance, you may wish to configure your + // minifier not to mangle the names of these two functions. + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + + var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype; + GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; + GeneratorFunctionPrototype.constructor = GeneratorFunction; + GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction"; + + // Helper for defining the .next, .throw, and .return methods of the + // Iterator interface in terms of a single ._invoke method. + function defineIteratorMethods(prototype) { + ["next", "throw", "return"].forEach(function(method) { + prototype[method] = function(arg) { + return this._invoke(method, arg); + }; + }); + } + + runtime.isGeneratorFunction = function(genFun) { + var ctor = typeof genFun === "function" && genFun.constructor; + return ctor + ? ctor === GeneratorFunction || + // For the native GeneratorFunction constructor, the best we can + // do is to check its .name property. + (ctor.displayName || ctor.name) === "GeneratorFunction" + : false; + }; + + runtime.mark = function(genFun) { + if (Object.setPrototypeOf) { + Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); + } else { + genFun.__proto__ = GeneratorFunctionPrototype; + if (!(toStringTagSymbol in genFun)) { + genFun[toStringTagSymbol] = "GeneratorFunction"; + } + } + genFun.prototype = Object.create(Gp); + return genFun; + }; + + // Within the body of any async function, `await x` is transformed to + // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test + // `value instanceof AwaitArgument` to determine if the yielded value is + // meant to be awaited. Some may consider the name of this method too + // cutesy, but they are curmudgeons. + runtime.awrap = function(arg) { + return new AwaitArgument(arg); + }; + + function AwaitArgument(arg) { + this.arg = arg; + } + + function AsyncIterator(generator) { + function invoke(method, arg, resolve, reject) { + var record = tryCatch(generator[method], generator, arg); + if (record.type === "throw") { + reject(record.arg); + } else { + var result = record.arg; + var value = result.value; + if (value instanceof AwaitArgument) { + return Promise.resolve(value.arg).then(function(value) { + invoke("next", value, resolve, reject); + }, function(err) { + invoke("throw", err, resolve, reject); + }); + } + + return Promise.resolve(value).then(function(unwrapped) { + // When a yielded Promise is resolved, its final value becomes + // the .value of the Promise<{value,done}> result for the + // current iteration. If the Promise is rejected, however, the + // result for this iteration will be rejected with the same + // reason. Note that rejections of yielded Promises are not + // thrown back into the generator function, as is the case + // when an awaited Promise is rejected. This difference in + // behavior between yield and await is important, because it + // allows the consumer to decide what to do with the yielded + // rejection (swallow it and continue, manually .throw it back + // into the generator, abandon iteration, whatever). With + // await, by contrast, there is no opportunity to examine the + // rejection reason outside the generator function, so the + // only option is to throw it from the await expression, and + // let the generator function handle the exception. + result.value = unwrapped; + resolve(result); + }, reject); + } + } + + if (typeof process === "object" && process.domain) { + invoke = process.domain.bind(invoke); + } + + var previousPromise; + + function enqueue(method, arg) { + function callInvokeWithMethodAndArg() { + return new Promise(function(resolve, reject) { + invoke(method, arg, resolve, reject); + }); + } + + return previousPromise = + // If enqueue has been called before, then we want to wait until + // all previous Promises have been resolved before calling invoke, + // so that results are always delivered in the correct order. If + // enqueue has not been called before, then it is important to + // call invoke immediately, without waiting on a callback to fire, + // so that the async generator function has the opportunity to do + // any necessary setup in a predictable way. This predictability + // is why the Promise constructor synchronously invokes its + // executor callback, and why async functions synchronously + // execute code before the first await. Since we implement simple + // async functions in terms of async generators, it is especially + // important to get this right, even though it requires care. + previousPromise ? previousPromise.then( + callInvokeWithMethodAndArg, + // Avoid propagating failures to Promises returned by later + // invocations of the iterator. + callInvokeWithMethodAndArg + ) : callInvokeWithMethodAndArg(); + } + + // Define the unified helper method that is used to implement .next, + // .throw, and .return (see defineIteratorMethods). + this._invoke = enqueue; + } + + defineIteratorMethods(AsyncIterator.prototype); + + // Note that simple async functions are implemented on top of + // AsyncIterator objects; they just return a Promise for the value of + // the final result produced by the iterator. + runtime.async = function(innerFn, outerFn, self, tryLocsList) { + var iter = new AsyncIterator( + wrap(innerFn, outerFn, self, tryLocsList) + ); + + return runtime.isGeneratorFunction(outerFn) + ? iter // If outerFn is a generator, return the full iterator. + : iter.next().then(function(result) { + return result.done ? result.value : iter.next(); + }); + }; + + function makeInvokeMethod(innerFn, self, context) { + var state = GenStateSuspendedStart; + + return function invoke(method, arg) { + if (state === GenStateExecuting) { + throw new Error("Generator is already running"); + } + + if (state === GenStateCompleted) { + if (method === "throw") { + throw arg; + } + + // Be forgiving, per 25.3.3.3.3 of the spec: + // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume + return doneResult(); + } + + while (true) { + var delegate = context.delegate; + if (delegate) { + if (method === "return" || + (method === "throw" && delegate.iterator[method] === undefined)) { + // A return or throw (when the delegate iterator has no throw + // method) always terminates the yield* loop. + context.delegate = null; + + // If the delegate iterator has a return method, give it a + // chance to clean up. + var returnMethod = delegate.iterator["return"]; + if (returnMethod) { + var record = tryCatch(returnMethod, delegate.iterator, arg); + if (record.type === "throw") { + // If the return method threw an exception, let that + // exception prevail over the original return or throw. + method = "throw"; + arg = record.arg; + continue; + } + } + + if (method === "return") { + // Continue with the outer return, now that the delegate + // iterator has been terminated. + continue; + } + } + + var record = tryCatch( + delegate.iterator[method], + delegate.iterator, + arg + ); + + if (record.type === "throw") { + context.delegate = null; + + // Like returning generator.throw(uncaught), but without the + // overhead of an extra function call. + method = "throw"; + arg = record.arg; + continue; + } + + // Delegate generator ran and handled its own exceptions so + // regardless of what the method was, we continue as if it is + // "next" with an undefined arg. + method = "next"; + arg = undefined; + + var info = record.arg; + if (info.done) { + context[delegate.resultName] = info.value; + context.next = delegate.nextLoc; + } else { + state = GenStateSuspendedYield; + return info; + } + + context.delegate = null; + } + + if (method === "next") { + // Setting context._sent for legacy support of Babel's + // function.sent implementation. + context.sent = context._sent = arg; + + } else if (method === "throw") { + if (state === GenStateSuspendedStart) { + state = GenStateCompleted; + throw arg; + } + + if (context.dispatchException(arg)) { + // If the dispatched exception was caught by a catch block, + // then let that catch block handle the exception normally. + method = "next"; + arg = undefined; + } + + } else if (method === "return") { + context.abrupt("return", arg); + } + + state = GenStateExecuting; + + var record = tryCatch(innerFn, self, context); + if (record.type === "normal") { + // If an exception is thrown from innerFn, we leave state === + // GenStateExecuting and loop back for another invocation. + state = context.done + ? GenStateCompleted + : GenStateSuspendedYield; + + var info = { + value: record.arg, + done: context.done + }; + + if (record.arg === ContinueSentinel) { + if (context.delegate && method === "next") { + // Deliberately forget the last sent value so that we don't + // accidentally pass it on to the delegate. + arg = undefined; + } + } else { + return info; + } + + } else if (record.type === "throw") { + state = GenStateCompleted; + // Dispatch the exception by looping back around to the + // context.dispatchException(arg) call above. + method = "throw"; + arg = record.arg; + } + } + }; + } + + // Define Generator.prototype.{next,throw,return} in terms of the + // unified ._invoke helper method. + defineIteratorMethods(Gp); + + Gp[iteratorSymbol] = function() { + return this; + }; + + Gp[toStringTagSymbol] = "Generator"; + + Gp.toString = function() { + return "[object Generator]"; + }; + + function pushTryEntry(locs) { + var entry = { tryLoc: locs[0] }; + + if (1 in locs) { + entry.catchLoc = locs[1]; + } + + if (2 in locs) { + entry.finallyLoc = locs[2]; + entry.afterLoc = locs[3]; + } + + this.tryEntries.push(entry); + } + + function resetTryEntry(entry) { + var record = entry.completion || {}; + record.type = "normal"; + delete record.arg; + entry.completion = record; + } + + function Context(tryLocsList) { + // The root entry object (effectively a try statement without a catch + // or a finally block) gives us a place to store values thrown from + // locations where there is no enclosing try statement. + this.tryEntries = [{ tryLoc: "root" }]; + tryLocsList.forEach(pushTryEntry, this); + this.reset(true); + } + + runtime.keys = function(object) { + var keys = []; + for (var key in object) { + keys.push(key); + } + keys.reverse(); + + // Rather than returning an object with a next method, we keep + // things simple and return the next function itself. + return function next() { + while (keys.length) { + var key = keys.pop(); + if (key in object) { + next.value = key; + next.done = false; + return next; + } + } + + // To avoid creating an additional object, we just hang the .value + // and .done properties off the next function object itself. This + // also ensures that the minifier will not anonymize the function. + next.done = true; + return next; + }; + }; + + function values(iterable) { + if (iterable) { + var iteratorMethod = iterable[iteratorSymbol]; + if (iteratorMethod) { + return iteratorMethod.call(iterable); + } + + if (typeof iterable.next === "function") { + return iterable; + } + + if (!isNaN(iterable.length)) { + var i = -1, next = function next() { + while (++i < iterable.length) { + if (hasOwn.call(iterable, i)) { + next.value = iterable[i]; + next.done = false; + return next; + } + } + + next.value = undefined; + next.done = true; + + return next; + }; + + return next.next = next; + } + } + + // Return an iterator with no values. + return { next: doneResult }; + } + runtime.values = values; + + function doneResult() { + return { value: undefined, done: true }; + } + + Context.prototype = { + constructor: Context, + + reset: function(skipTempReset) { + this.prev = 0; + this.next = 0; + // Resetting context._sent for legacy support of Babel's + // function.sent implementation. + this.sent = this._sent = undefined; + this.done = false; + this.delegate = null; + + this.tryEntries.forEach(resetTryEntry); + + if (!skipTempReset) { + for (var name in this) { + // Not sure about the optimal order of these conditions: + if (name.charAt(0) === "t" && + hasOwn.call(this, name) && + !isNaN(+name.slice(1))) { + this[name] = undefined; + } + } + } + }, + + stop: function() { + this.done = true; + + var rootEntry = this.tryEntries[0]; + var rootRecord = rootEntry.completion; + if (rootRecord.type === "throw") { + throw rootRecord.arg; + } + + return this.rval; + }, + + dispatchException: function(exception) { + if (this.done) { + throw exception; + } + + var context = this; + function handle(loc, caught) { + record.type = "throw"; + record.arg = exception; + context.next = loc; + return !!caught; + } + + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + var record = entry.completion; + + if (entry.tryLoc === "root") { + // Exception thrown outside of any try block that could handle + // it, so set the completion value of the entire function to + // throw the exception. + return handle("end"); + } + + if (entry.tryLoc <= this.prev) { + var hasCatch = hasOwn.call(entry, "catchLoc"); + var hasFinally = hasOwn.call(entry, "finallyLoc"); + + if (hasCatch && hasFinally) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } else if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else if (hasCatch) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } + + } else if (hasFinally) { + if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else { + throw new Error("try statement without catch or finally"); + } + } + } + }, + + abrupt: function(type, arg) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc <= this.prev && + hasOwn.call(entry, "finallyLoc") && + this.prev < entry.finallyLoc) { + var finallyEntry = entry; + break; + } + } + + if (finallyEntry && + (type === "break" || + type === "continue") && + finallyEntry.tryLoc <= arg && + arg <= finallyEntry.finallyLoc) { + // Ignore the finally entry if control is not jumping to a + // location outside the try/catch block. + finallyEntry = null; + } + + var record = finallyEntry ? finallyEntry.completion : {}; + record.type = type; + record.arg = arg; + + if (finallyEntry) { + this.next = finallyEntry.finallyLoc; + } else { + this.complete(record); + } + + return ContinueSentinel; + }, + + complete: function(record, afterLoc) { + if (record.type === "throw") { + throw record.arg; + } + + if (record.type === "break" || + record.type === "continue") { + this.next = record.arg; + } else if (record.type === "return") { + this.rval = record.arg; + this.next = "end"; + } else if (record.type === "normal" && afterLoc) { + this.next = afterLoc; + } + }, + + finish: function(finallyLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.finallyLoc === finallyLoc) { + this.complete(entry.completion, entry.afterLoc); + resetTryEntry(entry); + return ContinueSentinel; + } + } + }, + + "catch": function(tryLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc === tryLoc) { + var record = entry.completion; + if (record.type === "throw") { + var thrown = record.arg; + resetTryEntry(entry); + } + return thrown; + } + } + + // The context.catch method must only be called with a location + // argument that corresponds to a known catch block. + throw new Error("illegal catch attempt"); + }, + + delegateYield: function(iterable, resultName, nextLoc) { + this.delegate = { + iterator: values(iterable), + resultName: resultName, + nextLoc: nextLoc + }; + + return ContinueSentinel; + } + }; +})( + // Among the various tricks for obtaining a reference to the global + // object, this seems to be the most reliable technique that does not + // use indirect eval (which violates Content Security Policy). + typeof global === "object" ? global : + typeof window === "object" ? window : + typeof self === "object" ? self : this +);