Socket
Socket
Sign inDemoInstall

zone.js

Package Overview
Dependencies
Maintainers
3
Versions
124
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

zone.js - npm Package Compare versions

Comparing version 0.8.9 to 0.8.10

dist/zone-error.js

19

CHANGELOG.md

@@ -0,1 +1,20 @@

<a name="0.8.10"></a>
## [0.8.10](https://github.com/angular/zone.js/compare/v0.8.9...0.8.10) (2017-05-03)
### Bug Fixes
* **showError:** fix ignoreConsoleErrorUncaughtError may change during drain microtask ([#763](https://github.com/angular/zone.js/issues/763)) ([4baeb5c](https://github.com/angular/zone.js/commit/4baeb5c))
* **spec:** fix [#760](https://github.com/angular/zone.js/issues/760), fakeAsyncTestSpec should handle microtask with additional args ([#762](https://github.com/angular/zone.js/issues/762)) ([f8d17ac](https://github.com/angular/zone.js/commit/f8d17ac))
* Package Error stack rewriting as a separate bundle. ([#770](https://github.com/angular/zone.js/issues/770)) ([b5e33fd](https://github.com/angular/zone.js/commit/b5e33fd))
* **timer:** fix [#437](https://github.com/angular/zone.js/issues/437), [#744](https://github.com/angular/zone.js/issues/744), fix nativescript timer issue, fix nodejs v0.10.x timer issue ([#772](https://github.com/angular/zone.js/issues/772)) ([3218b5a](https://github.com/angular/zone.js/commit/3218b5a))
### Features
* make codebase more modular so that only parts of it can be loaded ([#748](https://github.com/angular/zone.js/issues/748)) ([e933cbd](https://github.com/angular/zone.js/commit/e933cbd))
* **patch:** load non standard api with new load module method ([#764](https://github.com/angular/zone.js/issues/764)) ([97c03b5](https://github.com/angular/zone.js/commit/97c03b5))
<a name="0.8.9"></a>

@@ -2,0 +21,0 @@ ## [0.8.9](https://github.com/angular/zone.js/compare/v0.8.8...0.8.9) (2017-04-25)

68

dist/fake-async-test.js

@@ -31,4 +31,5 @@ /**

}
Scheduler.prototype.scheduleFunction = function (cb, delay, args, id) {
Scheduler.prototype.scheduleFunction = function (cb, delay, args, isPeriodic, id) {
if (args === void 0) { args = []; }
if (isPeriodic === void 0) { isPeriodic = false; }
if (id === void 0) { id = -1; }

@@ -38,3 +39,10 @@ var currentId = id < 0 ? this.nextId++ : id;

// Insert so that scheduler queue remains sorted by end time.
var newEntry = { endTime: endTime, id: currentId, func: cb, args: args, delay: delay };
var newEntry = {
endTime: endTime,
id: currentId,
func: cb,
args: args,
delay: delay,
isPeriodic: isPeriodic
};
var i = 0;

@@ -80,2 +88,26 @@ for (; i < this._schedulerQueue.length; i++) {

};
Scheduler.prototype.flush = function (limit) {
if (limit === void 0) { limit = 20; }
var startTime = this._currentTime;
var count = 0;
while (this._schedulerQueue.length > 0) {
count++;
if (count > limit) {
throw new Error('flush failed after reaching the limit of ' + limit +
' tasks. Does your code use a polling timeout?');
}
// If the only remaining tasks are periodic, finish flushing.
if (!(this._schedulerQueue.filter(function (task) { return !task.isPeriodic; }).length)) {
break;
}
var current = this._schedulerQueue.shift();
this._currentTime = current.endTime;
var retval = current.func.apply(global, current.args);
if (!retval) {
// Uncaught exception in the current scheduled function. Stop processing the queue.
break;
}
}
return this._currentTime - startTime;
};
return Scheduler;

@@ -140,3 +172,3 @@ }());

if (_this.pendingPeriodicTimers.indexOf(id) !== -1) {
_this._scheduler.scheduleFunction(fn, interval, args, id);
_this._scheduler.scheduleFunction(fn, interval, args, true, id);
}

@@ -174,3 +206,3 @@ };

// Queue the callback and dequeue the periodic timer only on error.
this._scheduler.scheduleFunction(cb, interval, args);
this._scheduler.scheduleFunction(cb, interval, args, true);
this.pendingPeriodicTimers.push(id);

@@ -209,10 +241,34 @@ return id;

var microtask = this._microtasks.shift();
microtask();
microtask.func.apply(microtask.target, microtask.args);
}
flushErrors();
};
FakeAsyncTestZoneSpec.prototype.flush = function () {
FakeAsyncTestZoneSpec.assertInZone();
this.flushMicrotasks();
var elapsed = this._scheduler.flush();
if (this._lastError !== null) {
this._resetLastErrorAndThrow();
}
return elapsed;
};
FakeAsyncTestZoneSpec.prototype.onScheduleTask = function (delegate, current, target, task) {
switch (task.type) {
case 'microTask':
this._microtasks.push(task.invoke);
var args = task.data && task.data.args;
// should pass additional arguments to callback if have any
// currently we know process.nextTick will have such additional
// arguments
var addtionalArgs = void 0;
if (args) {
var callbackIndex = task.data.callbackIndex;
if (typeof args.length === 'number' && args.length > callbackIndex + 1) {
addtionalArgs = Array.prototype.slice.call(args, callbackIndex + 1);
}
}
this._microtasks.push({
func: task.invoke,
args: addtionalArgs,
target: task.data && task.data.target
});
break;

@@ -219,0 +275,0 @@ case 'macroTask':

64

dist/webapis-media-query.js

@@ -21,38 +21,34 @@ /**

*/
(function (_global) {
// patch MediaQuery
patchMediaQuery(_global);
function patchMediaQuery(_global) {
if (!_global['MediaQueryList']) {
return;
}
var patchEventTargetMethods = Zone[Zone.__symbol__('patchEventTargetMethods')];
patchEventTargetMethods(_global['MediaQueryList'].prototype, 'addListener', 'removeListener', function (self, args) {
return {
useCapturing: false,
eventName: 'mediaQuery',
handler: args[0],
target: self || _global,
name: 'mediaQuery',
invokeAddFunc: function (addFnSymbol, delegate) {
if (delegate && delegate.invoke) {
return this.target[addFnSymbol](delegate.invoke);
}
else {
return this.target[addFnSymbol](delegate);
}
},
invokeRemoveFunc: function (removeFnSymbol, delegate) {
if (delegate && delegate.invoke) {
return this.target[removeFnSymbol](delegate.invoke);
}
else {
return this.target[removeFnSymbol](delegate);
}
Zone.__load_patch('mediaQuery', function (global, Zone, api) {
if (!global['MediaQueryList']) {
return;
}
var patchEventTargetMethods = Zone[Zone.__symbol__('patchEventTargetMethods')];
patchEventTargetMethods(_global['MediaQueryList'].prototype, 'addListener', 'removeListener', function (self, args) {
return {
useCapturing: false,
eventName: 'mediaQuery',
handler: args[0],
target: self || global,
name: 'mediaQuery',
invokeAddFunc: function (addFnSymbol, delegate) {
if (delegate && delegate.invoke) {
return this.target[addFnSymbol](delegate.invoke);
}
};
});
}
})(typeof window === 'object' && window || typeof self === 'object' && self || global);
else {
return this.target[addFnSymbol](delegate);
}
},
invokeRemoveFunc: function (removeFnSymbol, delegate) {
if (delegate && delegate.invoke) {
return this.target[removeFnSymbol](delegate.invoke);
}
else {
return this.target[removeFnSymbol](delegate);
}
}
};
});
});
})));

@@ -1,1 +0,1 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t():"function"==typeof define&&define.amd?define(t):t()}(this,function(){"use strict";!function(e){function t(e){if(e.MediaQueryList){var t=Zone[Zone.__symbol__("patchEventTargetMethods")];t(e.MediaQueryList.prototype,"addListener","removeListener",function(t,n){return{useCapturing:!1,eventName:"mediaQuery",handler:n[0],target:t||e,name:"mediaQuery",invokeAddFunc:function(e,t){return t&&t.invoke?this.target[e](t.invoke):this.target[e](t)},invokeRemoveFunc:function(e,t){return t&&t.invoke?this.target[e](t.invoke):this.target[e](t)}}})}}t(e)}("object"==typeof window&&window||"object"==typeof self&&self||global)});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t():"function"==typeof define&&define.amd?define(t):t()}(this,function(){"use strict";Zone.__load_patch("mediaQuery",function(e,t,n){if(e.MediaQueryList){var i=t[t.__symbol__("patchEventTargetMethods")];i(_global.MediaQueryList.prototype,"addListener","removeListener",function(t,n){return{useCapturing:!1,eventName:"mediaQuery",handler:n[0],target:t||e,name:"mediaQuery",invokeAddFunc:function(e,t){return t&&t.invoke?this.target[e](t.invoke):this.target[e](t)},invokeRemoveFunc:function(e,t){return t&&t.invoke?this.target[e](t.invoke):this.target[e](t)}}})}})});

@@ -21,19 +21,15 @@ /**

*/
(function (_global) {
// patch Notification
patchNotification(_global);
function patchNotification(_global) {
var Notification = _global['Notification'];
if (!Notification || !Notification.prototype) {
return;
}
var desc = Object.getOwnPropertyDescriptor(Notification.prototype, 'onerror');
if (!desc || !desc.configurable) {
return;
}
var patchOnProperties = Zone[Zone.__symbol__('patchOnProperties')];
patchOnProperties(Notification.prototype, null);
Zone.__load_patch('notification', function (global, Zone, api) {
var Notification = _global['Notification'];
if (!Notification || !Notification.prototype) {
return;
}
})(typeof window === 'object' && window || typeof self === 'object' && self || global);
var desc = Object.getOwnPropertyDescriptor(Notification.prototype, 'onerror');
if (!desc || !desc.configurable) {
return;
}
var patchOnProperties = Zone[Zone.__symbol__('patchOnProperties')];
patchOnProperties(Notification.prototype, null);
});
})));

@@ -1,1 +0,1 @@

!function(o,e){"object"==typeof exports&&"undefined"!=typeof module?e():"function"==typeof define&&define.amd?define(e):e()}(this,function(){"use strict";!function(o){function e(o){var e=o.Notification;if(e&&e.prototype){var t=Object.getOwnPropertyDescriptor(e.prototype,"onerror");if(t&&t.configurable){var n=Zone[Zone.__symbol__("patchOnProperties")];n(e.prototype,null)}}}e(o)}("object"==typeof window&&window||"object"==typeof self&&self||global)});
!function(o,t){"object"==typeof exports&&"undefined"!=typeof module?t():"function"==typeof define&&define.amd?define(t):t()}(this,function(){"use strict";Zone.__load_patch("notification",function(o,t,e){var n=_global.Notification;if(n&&n.prototype){var i=Object.getOwnPropertyDescriptor(n.prototype,"onerror");if(i&&i.configurable){var r=t[t.__symbol__("patchOnProperties")];r(n.prototype,null)}}})});

@@ -21,4 +21,3 @@ /**

*/
(function () {
var __symbol__ = Zone.__symbol__;
Zone.__load_patch('bluebird', function (global, Zone, api) {
// TODO: @JiaLiPassion, we can automatically patch bluebird

@@ -29,3 +28,3 @@ // if global.Promise = Bluebird, but sometimes in nodejs,

// safe to just expose a method to patch Bluebird explicitly
Zone[__symbol__('bluebird')] = function patchBluebird(Bluebird) {
Zone[Zone.__symbol__('bluebird')] = function patchBluebird(Bluebird) {
Bluebird.setScheduler(function (fn) {

@@ -35,4 +34,4 @@ Zone.current.scheduleMicroTask('bluebird', fn);

};
})();
});
})));

@@ -1,1 +0,1 @@

!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n():"function"==typeof define&&define.amd?define(n):n()}(this,function(){"use strict";!function(){var e=Zone.__symbol__;Zone[e("bluebird")]=function(e){e.setScheduler(function(e){Zone.current.scheduleMicroTask("bluebird",e)})}}()});
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n():"function"==typeof define&&define.amd?define(n):n()}(this,function(){"use strict";Zone.__load_patch("bluebird",function(e,n,t){n[n.__symbol__("bluebird")]=function(e){e.setScheduler(function(e){n.current.scheduleMicroTask("bluebird",e)})}})});

@@ -524,15 +524,2 @@ /**

}
/**
* Extend the Error with additional fields for rewritten stack frames
*/
interface Error {
/**
* Stack trace where extra frames have been removed and zone names added.
*/
zoneAwareStack?: string;
/**
* Original stack trace with no modifications
*/
originalStack?: string;
}
declare const Zone: ZoneType;

@@ -1,1 +0,1 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t():"function"==typeof define&&define.amd?define(t):t()}(this,function(){"use strict";function e(e,t){for(var n=e.length-1;n>=0;n--)"function"==typeof e[n]&&(e[n]=Zone.current.wrap(e[n],t+"_"+n));return e}function t(t,n){for(var r=t.constructor.name,o=function(o){var a=n[o],i=t[a];i&&(t[a]=function(t){var n=function(){return t.apply(this,e(arguments,r+"."+a))};return d(n,t),n}(i))},a=0;a<n.length;a++)o(a)}function n(e,t){var n=Object.getOwnPropertyDescriptor(e,t)||{enumerable:!0,configurable:!0};if(n.configurable){delete n.writable,delete n.value;var r=n.get,o=t.substr(2),a=P("_"+t);n.set=function(t){var n=this;if(n||e!==C||(n=C),n){var r=n[a];if(r&&n.removeEventListener(o,r),"function"==typeof t){var i=function(e){var n=t.apply(this,arguments);return void 0==n||n||e.preventDefault(),n};n[a]=i,n.addEventListener(o,i,!1)}else n[a]=null}},n.get=function(){var o=this;if(o||e!==C||(o=C),!o)return null;if(o.hasOwnProperty(a))return o[a];if(r){var i=r.apply(this);if(i)return n.set.apply(this,[i]),"function"==typeof o.removeAttribute&&o.removeAttribute(t),i}return null},Object.defineProperty(e,t,n)}}function r(e,t){if(t)for(var r=0;r<t.length;r++)n(e,"on"+t[r]);else{var o=[];for(var a in e)"on"==a.substr(0,2)&&o.push(a);for(var i=0;i<o.length;i++)n(e,o[i])}}function o(e,t){var n="boolean"==typeof e?e:"object"==typeof e&&(e&&e.capture),r="boolean"==typeof t?t:"object"==typeof t&&(t&&t.capture);return!!n==!!r}function a(e,t,n,r,a){var i=e[H];if(i)for(var s=0;s<i.length;s++){var c=i[s],u=c.data,l=u.handler;if((u.handler===t||l.listener===t)&&o(u.options,r)&&u.eventName===n)return a&&i.splice(s,1),c}return null}function i(e,t,n){var r=e[H];r||(r=e[H]=[]),n?r.unshift(t):r.push(t)}function s(e,t,n,r,o,s){function c(e){var t=e.data;return i(t.target,e,o),t.invokeAddFunc(l,e)}function u(e){var t=e.data;return a(t.target,e.invoke,t.eventName,t.options,!0),t.invokeRemoveFunc(h,e)}void 0===n&&(n=!0),void 0===r&&(r=!1),void 0===o&&(o=!1),void 0===s&&(s=q);var l=P(e),h=P(t),f=!n&&void 0;return function(t,n){var o=s(t,n);o.options=o.options||f;var i=null;"function"==typeof o.handler?i=o.handler:o.handler&&o.handler.handleEvent&&(i=function(e){return o.handler.handleEvent(e)});var h=!1;try{h=o.handler&&"[object FunctionWrapper]"===o.handler.toString()}catch(p){return o.crossContext=!0,o.invokeAddFunc(l,o.handler)}if(!i||h)return o.invokeAddFunc(l,o.handler);if(!r){var d=a(o.target,o.handler,o.eventName,o.options,!1);if(d)return o.invokeAddFunc(l,d)}var v=Zone.current,k=o.target.constructor.name+"."+e+":"+o.eventName;v.scheduleEventTask(k,i,o,c,u)}}function c(e,t,n){void 0===t&&(t=!0),void 0===n&&(n=q);var r=P(e),o=!t&&void 0;return function(e,t){var i=n(e,t);i.options=i.options||o;var s=null;"function"==typeof i.handler?s=i.handler:i.handler&&i.handler.handleEvent&&(s=function(e){return i.handler.handleEvent(e)});var c=!1;try{c=i.handler&&"[object FunctionWrapper]"===i.handler.toString()}catch(u){return i.crossContext=!0,i.invokeRemoveFunc(r,i.handler)}if(!s||c)return i.invokeRemoveFunc(r,i.handler);var l=a(i.target,i.handler,i.eventName,i.options,!0);l?l.zone.cancelTask(l):i.invokeRemoveFunc(r,i.handler)}}function u(e,t,n,r){return void 0===t&&(t=R),void 0===n&&(n=x),void 0===r&&(r=q),!(!e||!e[t])&&(f(e,t,function(){return s(t,n,!0,!1,!1,r)}),f(e,n,function(){return c(n,!0,r)}),!0)}function l(t){var n=C[t];if(n){C[P(t)]=n,C[t]=function(){var r=e(arguments,t);switch(r.length){case 0:this[A]=new n;break;case 1:this[A]=new n(r[0]);break;case 2:this[A]=new n(r[0],r[1]);break;case 3:this[A]=new n(r[0],r[1],r[2]);break;case 4:this[A]=new n(r[0],r[1],r[2],r[3]);break;default:throw new Error("Arg list too long.")}},d(C[t],n);var r,o=new n(function(){});for(r in o)"XMLHttpRequest"===t&&"responseBlob"===r||!function(e){"function"==typeof o[e]?C[t].prototype[e]=function(){return this[A][e].apply(this[A],arguments)}:Object.defineProperty(C[t].prototype,e,{set:function(n){"function"==typeof n?(this[A][e]=Zone.current.wrap(n,t+"."+e),d(this[A][e],n)):this[A][e]=n},get:function(){return this[A][e]}})}(r);for(r in n)"prototype"!==r&&n.hasOwnProperty(r)&&(C[t][r]=n[r])}}function h(e,t){try{return Function("f","return function "+e+"(){return f(this, arguments)}")(t)}catch(n){return function(){return t(this,arguments)}}}function f(e,t,n){for(var r=e;r&&Object.getOwnPropertyNames(r).indexOf(t)===-1;)r=Object.getPrototypeOf(r);!r&&e[t]&&(r=e);var o,a=P(t);return r&&!(o=r[a])&&(o=r[a]=r[t],r[t]=h(t,n(o,a,t)),d(r[t],o)),o}function p(e,t){var n=e[P("eventTasks")],r=[];if(n)for(var o=0;o<n.length;o++){var a=n[o],i=a.data,s=i&&i.eventName;s===t&&r.push(a)}return r}function d(e,t){e[P("OriginalDelegate")]=t}function v(e,t,n,r){function o(t){function n(){try{t.invoke.apply(this,arguments)}finally{delete c[r.handleId]}}var r=t.data;return r.args[0]=n,r.handleId=i.apply(e,r.args),c[r.handleId]=t,t}function a(e){return delete c[e.data.handleId],s(e.data.handleId)}var i=null,s=null;t+=r,n+=r;var c={};i=f(e,t,function(n){return function(i,s){if("function"==typeof s[0]){var c=Zone.current,u={handleId:null,isPeriodic:"Interval"===r,delay:"Timeout"===r||"Interval"===r?s[1]||0:null,args:s},l=c.scheduleMacroTask(t,s[0],u,o,a);if(!l)return l;var h=l.data.handleId;return h&&h.ref&&h.unref&&"function"==typeof h.ref&&"function"==typeof h.unref&&(l.ref=h.ref.bind(h),l.unref=h.unref.bind(h)),l}return n.apply(e,s)}}),s=f(e,n,function(t){return function(n,r){var o="number"==typeof r[0]?c[r[0]]:r[0];o&&"string"==typeof o.type?"notScheduled"!==o.state&&(o.cancelFn&&o.data.isPeriodic||0===o.runCount)&&o.zone.cancelTask(o):t.apply(e,r)}})}function k(){var e=Function.prototype.toString,t="undefined"!=typeof window&&window||"undefined"!=typeof self&&self||global;Function.prototype.toString=function(){if("function"==typeof this){if(this[P("OriginalDelegate")])return e.apply(this[P("OriginalDelegate")],arguments);if(this===Promise){var n=t[P("Promise")];if(n)return e.apply(n,arguments)}if(this===Error){var r=t[P("Error")];if(r)return e.apply(r,arguments)}}return e.apply(this,arguments)}}function y(){var e=Object.prototype.toString;Object.prototype.toString=function(){return this instanceof Promise?"[object Promise]":e.apply(this,arguments)}}function g(){Object.defineProperty=function(e,t,n){if(m(e,t))throw new TypeError("Cannot assign to read only property '"+t+"' of "+e);var r=n.configurable;return"prototype"!==t&&(n=b(e,t,n)),_(e,t,n,r)},Object.defineProperties=function(e,t){return Object.keys(t).forEach(function(n){Object.defineProperty(e,n,t[n])}),e},Object.create=function(e,t){return"object"!=typeof t||Object.isFrozen(t)||Object.keys(t).forEach(function(n){t[n]=b(e,n,t[n])}),X(e,t)},Object.getOwnPropertyDescriptor=function(e,t){var n=B(e,t);return m(e,t)&&(n.configurable=!1),n}}function T(e,t,n){var r=n.configurable;return n=b(e,t,n),_(e,t,n,r)}function m(e,t){return e&&e[W]&&e[W][t]}function b(e,t,n){return n.configurable=!0,n.configurable||(e[W]||N(e,W,{writable:!0,value:{}}),e[W][t]=!0),n}function _(e,t,n,r){try{return N(e,t,n)}catch(o){if(!n.configurable)throw o;"undefined"==typeof r?delete n.configurable:n.configurable=r;try{return N(e,t,n)}catch(o){var a=null;try{a=JSON.stringify(n)}catch(o){a=a.toString()}console.log("Attempting to configure '"+t+"' with descriptor '"+a+"' on object '"+e+"' and got error, giving up: "+o)}}}function w(e){var t=[],n=e.wtf;n?t=G.split(",").map(function(e){return"HTML"+e+"Element"}).concat(U):e[V]?t.push(V):t=U;for(var r=0;r<t.length;r++){var o=e[t[r]];u(o&&o.prototype)}}function E(e){var t=e.WebSocket;e.EventTarget||u(t.prototype),e.WebSocket=function(e,n){var o,a=arguments.length>1?new t(e,n):new t(e),i=Object.getOwnPropertyDescriptor(a,"onmessage");return i&&i.configurable===!1?(o=Object.create(a),["addEventListener","removeEventListener","send","close"].forEach(function(e){o[e]=function(){return a[e].apply(a,arguments)}})):o=a,r(o,["close","error","message","open"]),o};for(var n in t)e.WebSocket[n]=t[n]}function S(e){if(!I||M){var t="undefined"!=typeof WebSocket;O()?(F&&(r(window,K.concat(["resize"])),r(Document.prototype,K),"undefined"!=typeof window.SVGElement&&r(window.SVGElement.prototype,K),r(HTMLElement.prototype,K)),r(XMLHttpRequest.prototype,null),"undefined"!=typeof IDBIndex&&(r(IDBIndex.prototype,null),r(IDBRequest.prototype,null),r(IDBOpenDBRequest.prototype,null),r(IDBDatabase.prototype,null),r(IDBTransaction.prototype,null),r(IDBCursor.prototype,null)),t&&r(WebSocket.prototype,null)):(D(),l("XMLHttpRequest"),t&&E(e))}}function O(){if((F||M)&&!Object.getOwnPropertyDescriptor(HTMLElement.prototype,"onclick")&&"undefined"!=typeof Element){var e=Object.getOwnPropertyDescriptor(Element.prototype,"onclick");if(e&&!e.configurable)return!1}var t=Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype,"onreadystatechange");if(t){Object.defineProperty(XMLHttpRequest.prototype,"onreadystatechange",{enumerable:!0,configurable:!0,get:function(){return!0}});var n=new XMLHttpRequest,r=!!n.onreadystatechange;return Object.defineProperty(XMLHttpRequest.prototype,"onreadystatechange",t||{}),r}Object.defineProperty(XMLHttpRequest.prototype,"onreadystatechange",{enumerable:!0,configurable:!0,get:function(){return this[P("fakeonreadystatechange")]},set:function(e){this[P("fakeonreadystatechange")]=e}});var n=new XMLHttpRequest,o=function(){};n.onreadystatechange=o;var r=n[P("fakeonreadystatechange")]===o;return n.onreadystatechange=null,r}function D(){for(var e=function(e){var t=K[e],n="on"+t;self.addEventListener(t,function(e){var t,r,o=e.target;for(r=o?o.constructor.name+"."+n:"unknown."+n;o;)o[n]&&!o[n][J]&&(t=Zone.current.wrap(o[n],r),t[J]=o[n],o[n]=t),o=o.parentElement},!0)},t=0;t<K.length;t++)e(t)}function Z(e){if((F||M)&&"registerElement"in e.document){var t=document.registerElement,n=["createdCallback","attachedCallback","detachedCallback","attributeChangedCallback"];document.registerElement=function(e,r){return r&&r.prototype&&n.forEach(function(e){var t="Document.registerElement::"+e;if(r.prototype.hasOwnProperty(e)){var n=Object.getOwnPropertyDescriptor(r.prototype,e);n&&n.value?(n.value=Zone.current.wrap(n.value,t),T(r.prototype,e,n)):r.prototype[e]=Zone.current.wrap(r.prototype[e],t)}else r.prototype[e]&&(r.prototype[e]=Zone.current.wrap(r.prototype[e],t))}),t.apply(document,[e,r])},d(document.registerElement,t)}}function z(e){function t(e){var t=e[oe];return t}function n(e){XMLHttpRequest[se]=!1;var t=e.data,n=t.target[ie];n&&t.target.removeEventListener("readystatechange",n);var r=t.target[ie]=function(){t.target.readyState===t.target.DONE&&!t.aborted&&XMLHttpRequest[se]&&"scheduled"===e.state&&e.invoke()};t.target.addEventListener("readystatechange",r);var o=t.target[oe];return o||(t.target[oe]=e),i.apply(t.target,t.args),XMLHttpRequest[se]=!0,e}function r(){}function o(e){var t=e.data;return t.aborted=!0,s.apply(t.target,t.args)}var a=f(e.XMLHttpRequest.prototype,"open",function(){return function(e,t){return e[ae]=0==t[2],a.apply(e,t)}}),i=f(e.XMLHttpRequest.prototype,"send",function(){return function(e,t){var a=Zone.current;if(e[ae])return i.apply(e,t);var s={target:e,isPeriodic:!1,delay:null,args:t,aborted:!1};return a.scheduleMacroTask("XMLHttpRequest.send",r,s,n,o)}}),s=f(e.XMLHttpRequest.prototype,"abort",function(e){return function(e,n){var r=t(e);if(r&&"string"==typeof r.type){if(null==r.cancelFn||r.data&&r.data.aborted)return;r.zone.cancelTask(r)}}})}function j(e){return function(t){var n=p(ee,e);n.forEach(function(n){var r=ee.PromiseRejectionEvent;if(r){var o=new r(e,{promise:t.promise,reason:t.rejection});n.invoke(o)}})}}var P=(function(e){function t(e){return"__zone_symbol__"+e}function n(){0===q&&0===H.length&&(e[L]?e[L].resolve(0)[I](i):e[C](i,0))}function r(e){n(),H.push(e)}function o(e){if(!D[t("ignoreConsoleErrorUncaughtError")]){var n=e&&e.rejection;n&&console.error("Unhandled Promise rejection:",n instanceof Error?n.message:n,"; Zone:",e.zone.name,"; Task:",e.task&&e.task.source,"; Value:",n,n instanceof Error?n.stack:void 0),console.error(e)}}function a(e){o(e);try{var n=D[t("unhandledPromiseRejectionHandler")];n&&"function"==typeof n&&n.apply(this,[e])}catch(r){}}function i(){if(!R){for(R=!0;H.length;){var e=H;H=[];for(var t=0;t<e.length;t++){var n=e[t];try{n.zone.runTask(n,null,null)}catch(r){o(r)}}}for(;x.length;)for(var i=function(){var e=x.shift();try{e.zone.runGuarded(function(){throw e})}catch(t){a(t)}};x.length;)i();R=!1}}function s(e){return e&&e.then}function c(e){return e}function u(e){return K.reject(e)}function l(e,t){return function(n){try{h(e,t,n)}catch(r){h(e,!1,r)}}}function h(e,r,o){var a=V();if(e===o)throw new TypeError("Promise resolved with itself");if(e[A]===X){var i=null;try{"object"!=typeof o&&"function"!=typeof o||(i=o&&o.then)}catch(s){return a(function(){h(e,!1,s)})(),e}if(r!==G&&o instanceof K&&o.hasOwnProperty(A)&&o.hasOwnProperty(N)&&o[A]!==X)f(o),h(e,o[A],o[N]);else if(r!==G&&"function"==typeof i)try{i.apply(o,[a(l(e,r)),a(l(e,!1))])}catch(s){a(function(){h(e,!1,s)})()}else{e[A]=r;var c=e[N];e[N]=o,r===G&&o instanceof Error&&(o[t("currentTask")]=D.currentTask);for(var u=0;u<c.length;)p(e,c[u++],c[u++],c[u++],c[u++]);if(0==c.length&&r==G){e[A]=U;try{throw new Error("Uncaught (in promise): "+o+(o&&o.stack?"\n"+o.stack:""))}catch(s){var d=s;d.rejection=o,d.promise=e,d.zone=D.current,d.task=D.currentTask,x.push(d),n()}}}}return e}function f(e){if(e[A]===U){try{var n=D[t("rejectionHandledHandler")];n&&"function"==typeof n&&n.apply(this,[{rejection:e[N],promise:e}])}catch(r){}e[A]=G;for(var o=0;o<x.length;o++)e===x[o].promise&&x.splice(o,1)}}function p(e,t,n,r,o){f(e);var a=e[A]?"function"==typeof r?r:c:"function"==typeof o?o:u;t.scheduleMicroTask(B,function(){try{h(n,!0,t.run(a,void 0,[e[N]]))}catch(r){h(n,!1,r)}})}function d(e){var t=e.prototype,n=t.then;t[I]=n,e.prototype.then=function(e,t){var r=this,o=new K(function(e,t){n.call(r,e,t)});return o.then(e,t)},e[Q]=!0}function v(e){return function(){var t=e.apply(this,arguments);if(t instanceof K)return t;var n=t.constructor;return n[Q]||d(n),t}}function k(){var e=this,t=ne.apply(this,arguments),n=t.originalStack=t.stack;if(k[oe]&&n){for(var r=n.split("\n"),o=F,a=0;r[a]!==$&&r[a]!==ee&&a<r.length;)a++;for(;a<r.length&&o;a++){var i=r[a];if(i.trim())switch(re[i]){case 0:r.splice(a,1),a--;break;case 1:o=o.parent?o.parent:null,r.splice(a,1),a--;break;default:r[a]+=" ["+o.zone.name+"]"}}try{t.stack=t.zoneAwareStack=r.join("\n")}catch(s){}}return this instanceof ne&&this.constructor!=ne?(Object.keys(t).concat("stack","message").forEach(function(n){if(void 0!==t[n])try{e[n]=t[n]}catch(r){}}),this):t}if(e.Zone)throw new Error("Zone already loaded.");var y={name:"NO ZONE"},g="notScheduled",T="scheduling",m="scheduled",b="running",_="canceling",w="unknown",E="microTask",S="macroTask",O="eventTask",D=function(){function t(e,t){this._properties=null,this._parent=e,this._name=t?t.name||"unnamed":"<root>",this._properties=t&&t.properties||{},this._zoneDelegate=new z(this,this._parent&&this._parent._zoneDelegate,t)}return t.assertZonePatched=function(){if(e.Promise!==K)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")},Object.defineProperty(t,"root",{get:function(){for(var e=t.current;e.parent;)e=e.parent;return e},enumerable:!0,configurable:!0}),Object.defineProperty(t,"current",{get:function(){return F.zone},enumerable:!0,configurable:!0}),Object.defineProperty(t,"currentTask",{get:function(){return M},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0}),t.prototype.get=function(e){var t=this.getZoneWith(e);if(t)return t._properties[e]},t.prototype.getZoneWith=function(e){for(var t=this;t;){if(t._properties.hasOwnProperty(e))return t;t=t._parent}return null},t.prototype.fork=function(e){if(!e)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,e)},t.prototype.wrap=function(e,t){if("function"!=typeof e)throw new Error("Expecting function got: "+e);var n=this._zoneDelegate.intercept(this,e,t),r=this;return function(){return r.runGuarded(n,this,arguments,t)}},t.prototype.run=function(e,t,n,r){void 0===t&&(t=void 0),void 0===n&&(n=null),void 0===r&&(r=null),F=new P(F,this);try{return this._zoneDelegate.invoke(this,e,t,n,r)}finally{F=F.parent}},t.prototype.runGuarded=function(e,t,n,r){void 0===t&&(t=null),void 0===n&&(n=null),void 0===r&&(r=null),F=new P(F,this);try{try{return this._zoneDelegate.invoke(this,e,t,n,r)}catch(o){if(this._zoneDelegate.handleError(this,o))throw o}}finally{F=F.parent}},t.prototype.runTask=function(e,t,n){if(e.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(e.zone||y).name+"; Execution: "+this.name+")");var r=e.state!=b;r&&e._transitionTo(b,m),e.runCount++;var o=M;M=e,F=new P(F,this);try{e.type==S&&e.data&&!e.data.isPeriodic&&(e.cancelFn=null);try{return this._zoneDelegate.invokeTask(this,e,t,n)}catch(a){if(this._zoneDelegate.handleError(this,a))throw a}}finally{e.state!==g&&e.state!==w&&(e.type==O||e.data&&e.data.isPeriodic?r&&e._transitionTo(m,b):(e.runCount=0,this._updateTaskCount(e,-1),r&&e._transitionTo(g,b,g))),F=F.parent,M=o}},t.prototype.scheduleTask=function(e){if(e.zone&&e.zone!==this)for(var t=this;t;){if(t===e.zone)throw Error("can not reschedule task to "+this.name+" which is descendants of the original zone "+e.zone.name);t=t.parent}e._transitionTo(T,g);var n=[];e._zoneDelegates=n,e._zone=this;try{e=this._zoneDelegate.scheduleTask(this,e)}catch(r){throw e._transitionTo(w,T,g),this._zoneDelegate.handleError(this,r),r}return e._zoneDelegates===n&&this._updateTaskCount(e,1),e.state==T&&e._transitionTo(m,T),e},t.prototype.scheduleMicroTask=function(e,t,n,r){return this.scheduleTask(new j(E,e,t,n,r,null))},t.prototype.scheduleMacroTask=function(e,t,n,r,o){return this.scheduleTask(new j(S,e,t,n,r,o))},t.prototype.scheduleEventTask=function(e,t,n,r,o){return this.scheduleTask(new j(O,e,t,n,r,o))},t.prototype.cancelTask=function(e){if(e.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(e.zone||y).name+"; Execution: "+this.name+")");e._transitionTo(_,m,b);try{this._zoneDelegate.cancelTask(this,e)}catch(t){throw e._transitionTo(w,_),this._zoneDelegate.handleError(this,t),t}return this._updateTaskCount(e,-1),e._transitionTo(g,_),e.runCount=0,e},t.prototype._updateTaskCount=function(e,t){var n=e._zoneDelegates;t==-1&&(e._zoneDelegates=null);for(var r=0;r<n.length;r++)n[r]._updateTaskCount(e.type,t)},t}();D.__symbol__=t;var Z={name:"",onHasTask:function(e,t,n,r){return e.hasTask(n,r)},onScheduleTask:function(e,t,n,r){return e.scheduleTask(n,r)},onInvokeTask:function(e,t,n,r,o,a){return e.invokeTask(n,r,o,a)},onCancelTask:function(e,t,n,r){return e.cancelTask(n,r)}},z=function(){function e(e,t,n){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=e,this._parentDelegate=t,this._forkZS=n&&(n&&n.onFork?n:t._forkZS),this._forkDlgt=n&&(n.onFork?t:t._forkDlgt),this._forkCurrZone=n&&(n.onFork?this.zone:t.zone),this._interceptZS=n&&(n.onIntercept?n:t._interceptZS),this._interceptDlgt=n&&(n.onIntercept?t:t._interceptDlgt),this._interceptCurrZone=n&&(n.onIntercept?this.zone:t.zone),this._invokeZS=n&&(n.onInvoke?n:t._invokeZS),this._invokeDlgt=n&&(n.onInvoke?t:t._invokeDlgt),this._invokeCurrZone=n&&(n.onInvoke?this.zone:t.zone),this._handleErrorZS=n&&(n.onHandleError?n:t._handleErrorZS),this._handleErrorDlgt=n&&(n.onHandleError?t:t._handleErrorDlgt),this._handleErrorCurrZone=n&&(n.onHandleError?this.zone:t.zone),this._scheduleTaskZS=n&&(n.onScheduleTask?n:t._scheduleTaskZS),this._scheduleTaskDlgt=n&&(n.onScheduleTask?t:t._scheduleTaskDlgt),this._scheduleTaskCurrZone=n&&(n.onScheduleTask?this.zone:t.zone),this._invokeTaskZS=n&&(n.onInvokeTask?n:t._invokeTaskZS),this._invokeTaskDlgt=n&&(n.onInvokeTask?t:t._invokeTaskDlgt),this._invokeTaskCurrZone=n&&(n.onInvokeTask?this.zone:t.zone),this._cancelTaskZS=n&&(n.onCancelTask?n:t._cancelTaskZS),this._cancelTaskDlgt=n&&(n.onCancelTask?t:t._cancelTaskDlgt),this._cancelTaskCurrZone=n&&(n.onCancelTask?this.zone:t.zone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;var r=n&&n.onHasTask,o=t&&t._hasTaskZS;(r||o)&&(this._hasTaskZS=r?n:Z,this._hasTaskDlgt=t,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=e,n.onScheduleTask||(this._scheduleTaskZS=Z,this._scheduleTaskDlgt=t,this._scheduleTaskCurrZone=this.zone),n.onInvokeTask||(this._invokeTaskZS=Z,this._invokeTaskDlgt=t,this._invokeTaskCurrZone=this.zone),n.onCancelTask||(this._cancelTaskZS=Z,this._cancelTaskDlgt=t,this._cancelTaskCurrZone=this.zone))}return e.prototype.fork=function(e,t){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,e,t):new D(e,t)},e.prototype.intercept=function(e,t,n){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,e,t,n):t},e.prototype.invoke=function(e,t,n,r,o){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,e,t,n,r,o):t.apply(n,r)},e.prototype.handleError=function(e,t){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,e,t)},e.prototype.scheduleTask=function(e,t){var n=t;if(this._scheduleTaskZS)this._hasTaskZS&&n._zoneDelegates.push(this._hasTaskDlgtOwner),n=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,e,t),n||(n=t);else if(t.scheduleFn)t.scheduleFn(t);else{if(t.type!=E)throw new Error("Task is missing scheduleFn.");r(t)}return n},e.prototype.invokeTask=function(e,t,n,r){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,e,t,n,r):t.callback.apply(n,r)},e.prototype.cancelTask=function(e,t){var n;if(this._cancelTaskZS)n=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,e,t);else{if(!t.cancelFn)throw Error("Task is not cancelable");n=t.cancelFn(t)}return n},e.prototype.hasTask=function(e,t){try{return this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,e,t)}catch(n){this.handleError(e,n)}},e.prototype._updateTaskCount=function(e,t){var n=this._taskCounts,r=n[e],o=n[e]=r+t;if(o<0)throw new Error("More tasks executed then were scheduled.");if(0==r||0==o){var a={microTask:n.microTask>0,macroTask:n.macroTask>0,eventTask:n.eventTask>0,change:e};this.hasTask(this.zone,a)}},e}(),j=function(){function e(e,t,n,r,o,a){this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=e,this.source=t,this.data=r,this.scheduleFn=o,this.cancelFn=a,this.callback=n;var s=this;this.invoke=function(){q++;try{return s.runCount++,s.zone.runTask(s,this,arguments)}finally{1==q&&i(),q--}}}return Object.defineProperty(e.prototype,"zone",{get:function(){return this._zone},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"state",{get:function(){return this._state},enumerable:!0,configurable:!0}),e.prototype.cancelScheduleRequest=function(){this._transitionTo(g,T)},e.prototype._transitionTo=function(e,t,n){if(this._state!==t&&this._state!==n)throw new Error(this.type+" '"+this.source+"': can not transition to '"+e+"', expecting state '"+t+"'"+(n?" or '"+n+"'":"")+", was '"+this._state+"'.");this._state=e,e==g&&(this._zoneDelegates=null)},e.prototype.toString=function(){return this.data&&"undefined"!=typeof this.data.handleId?this.data.handleId:Object.prototype.toString.call(this)},e.prototype.toJSON=function(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,invoke:this.invoke,scheduleFn:this.scheduleFn,cancelFn:this.cancelFn,runCount:this.runCount,callback:this.callback}},e}(),P=function(){function e(e,t){this.parent=e,this.zone=t}return e}(),C=t("setTimeout"),L=t("Promise"),I=t("then"),F=new P(null,new D(null,null)),M=null,H=[],R=!1,x=[],q=0,A=t("state"),N=t("value"),B="Promise.then",X=null,W=!0,G=!1,U=0,V=function(){var e=!1;return function(t){return function(){e||(e=!0,t.apply(null,arguments))}}},K=function(){function e(t){var n=this;if(!(n instanceof e))throw new Error("Must be an instanceof Promise.");n[A]=X,n[N]=[];try{t&&t(l(n,W),l(n,G))}catch(r){h(n,!1,r)}}return e.toString=function(){return"function ZoneAwarePromise() { [native code] }"},e.resolve=function(e){return h(new this(null),W,e)},e.reject=function(e){return h(new this(null),G,e)},e.race=function(e){function t(e){a&&(a=r(e))}function n(e){a&&(a=o(e))}for(var r,o,a=new this(function(e,t){n=[e,t],r=n[0],o=n[1];var n}),i=0,c=e;i<c.length;i++){var u=c[i];s(u)||(u=this.resolve(u)),u.then(t,n)}return a},e.all=function(e){for(var t,n,r=new this(function(e,r){t=e,n=r}),o=0,a=[],i=0,c=e;i<c.length;i++){var u=c[i];s(u)||(u=this.resolve(u)),u.then(function(e){return function(n){a[e]=n,o--,o||t(a)}}(o),n),o++}return o||t(a),r},e.prototype.then=function(e,t){var n=new this.constructor(null),r=D.current;return this[A]==X?this[N].push(r,n,e,t):p(this,r,n,e,t),n},e.prototype["catch"]=function(e){return this.then(null,e)},e}();K.resolve=K.resolve,K.reject=K.reject,K.race=K.race,K.all=K.all;var J=e[L]=e.Promise;e.Promise=K;var Q=t("thenPatched");if(J){d(J);var Y=e.fetch;"function"==typeof Y&&(e.fetch=v(Y))}Promise[D.__symbol__("uncaughtPromiseErrors")]=x;var $,ee,te=D.__symbol__("blacklistedStackFrames"),ne=e[t("Error")]=e.Error,re={};e.Error=k;var oe="stackRewrite";k.prototype=ne.prototype,k[te]=re,k[oe]=!1;var ae=["stackTraceLimit","captureStackTrace","prepareStackTrace"],ie=Object.keys(ne);ie&&ie.forEach(function(e){0===ae.filter(function(t){return t===e}).length&&Object.defineProperty(k,e,{get:function(){return ne[e]},set:function(t){ne[e]=t}})}),ne.hasOwnProperty("stackTraceLimit")&&(ne.stackTraceLimit=Math.max(ne.stackTraceLimit,15),Object.defineProperty(k,"stackTraceLimit",{get:function(){return ne.stackTraceLimit},set:function(e){return ne.stackTraceLimit=e}})),ne.hasOwnProperty("captureStackTrace")&&Object.defineProperty(k,"captureStackTrace",{value:function(e,t){ne.captureStackTrace(e,t)}}),Object.defineProperty(k,"prepareStackTrace",{get:function(){return ne.prepareStackTrace},set:function(e){return e&&"function"==typeof e?ne.prepareStackTrace=function(t,n){if(n)for(var r=0;r<n.length;r++){var o=n[r];if("zoneCaptureStackTrace"===o.getFunctionName()){n.splice(r,1);break}}return e.apply(this,[t,n])}:ne.prepareStackTrace=e}});var se=D.current.fork({name:"detect",onHandleError:function(e,t,n,r){if(r.originalStack&&Error===k)for(var o=r.originalStack.split(/\n/),a=!1,i=!1,s=!1;o.length;){var c=o.shift();if(/:\d+:\d+/.test(c)){var u=c.split("(")[0].split("@")[0],l=1;if(u.indexOf("ZoneAwareError")!==-1&&($=c,ee=c.replace("Error.",""),re[ee]=0),u.indexOf("runGuarded")!==-1?i=!0:u.indexOf("runTask")!==-1?s=!0:u.indexOf("run")!==-1?a=!0:l=0,re[c]=l,a&&i&&s){k[oe]=!0;break}}}return!1}}),ce=se.fork({name:"child",onScheduleTask:function(e,t,n,r){return e.scheduleTask(n,r)},onInvokeTask:function(e,t,n,r,o,a){return e.invokeTask(n,r,o,a)},onCancelTask:function(e,t,n,r){return e.cancelTask(n,r)},onInvoke:function(e,t,n,r,o,a,i){return e.invoke(n,r,o,a,i)}}),ue=Error.stackTraceLimit;return Error.stackTraceLimit=100,ce.run(function(){ce.runGuarded(function(){var e=function(e,t,n){};ce.scheduleEventTask(te,function(){ce.scheduleMacroTask(te,function(){ce.scheduleMicroTask(te,function(){throw new k(k,ne)},null,function(t){t._transitionTo=e,t.invoke()})},null,function(t){t._transitionTo=e,t.invoke()},function(){})},null,function(t){t._transitionTo=e,t.invoke()},function(){})})}),Error.stackTraceLimit=ue,e.Zone=D}("undefined"!=typeof window&&window||"undefined"!=typeof self&&self||global),function(e){return"__zone_symbol__"+e}),C="object"==typeof window&&window||"object"==typeof self&&self||global,L="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,I=!("nw"in C)&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),F=!I&&!L&&!("undefined"==typeof window||!window.HTMLElement),M="undefined"!=typeof process&&"[object process]"==={}.toString.call(process)&&!L&&!("undefined"==typeof window||!window.HTMLElement),H=P("eventTasks"),R="addEventListener",x="removeEventListener",q=function(e,t){return{options:t[2],eventName:t[0],handler:t[1],target:e||C,name:t[0],crossContext:!1,invokeAddFunc:function(e,t){if(!this.crossContext)return t&&t.invoke?this.target[e](this.eventName,t.invoke,this.options):this.target[e](this.eventName,t,this.options);try{return this.target[e](this.eventName,t,this.options)}catch(n){}},invokeRemoveFunc:function(e,t){if(!this.crossContext)return t&&t.invoke?this.target[e](this.eventName,t.invoke,this.options):this.target[e](this.eventName,t,this.options);try{return this.target[e](this.eventName,t,this.options)}catch(n){}}}},A=P("originalInstance");Zone[P("patchEventTargetMethods")]=u,Zone[P("patchOnProperties")]=r;var N=Object[P("defineProperty")]=Object.defineProperty,B=Object[P("getOwnPropertyDescriptor")]=Object.getOwnPropertyDescriptor,X=Object.create,W=P("unconfigurables"),G="Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video",U="ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket".split(","),V="EventTarget",K="copy cut paste abort blur focus canplay canplaythrough change click contextmenu dblclick drag dragend dragenter dragleave dragover dragstart drop durationchange emptied ended input invalid keydown keypress keyup load loadeddata loadedmetadata loadstart message mousedown mouseenter mouseleave mousemove mouseout mouseover mouseup pause play playing progress ratechange reset scroll seeked seeking select show stalled submit suspend timeupdate volumechange waiting mozfullscreenchange mozfullscreenerror mozpointerlockchange mozpointerlockerror error webglcontextrestored webglcontextlost webglcontextcreationerror".split(" "),J=P("unbound"),Q="set",Y="clear",$=["alert","prompt","confirm"],ee="undefined"!=typeof window&&window||"undefined"!=typeof self&&self||global;v(ee,Q,Y,"Timeout"),v(ee,Q,Y,"Interval"),v(ee,Q,Y,"Immediate"),v(ee,"request","cancel","AnimationFrame"),v(ee,"mozRequest","mozCancel","AnimationFrame"),v(ee,"webkitRequest","webkitCancel","AnimationFrame");for(var te=0;te<$.length;te++){var ne=$[te];f(ee,ne,function(e,t,n){return function(t,r){return Zone.current.run(e,ee,r,n)}})}w(ee);var re=ee.XMLHttpRequestEventTarget;re&&re.prototype&&u(re.prototype),S(ee),l("MutationObserver"),l("WebKitMutationObserver"),l("FileReader"),g(),Z(ee),z(ee);var oe=P("xhrTask"),ae=P("xhrSync"),ie=P("xhrListener"),se=P("xhrScheduled");ee.navigator&&ee.navigator.geolocation&&t(ee.navigator.geolocation,["getCurrentPosition","watchPosition"]),k(),y(),ee.PromiseRejectionEvent&&(Zone[P("unhandledPromiseRejectionHandler")]=j("unhandledrejection"),Zone[P("rejectionHandledHandler")]=j("rejectionhandled"))});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t():"function"==typeof define&&define.amd?define(t):t()}(this,function(){"use strict";function e(e,t){for(var n=e.length-1;n>=0;n--)"function"==typeof e[n]&&(e[n]=Zone.current.wrap(e[n],t+"_"+n));return e}function t(t,n){for(var r=t.constructor.name,o=function(o){var a=n[o],i=t[a];i&&(t[a]=function(t){var n=function(){return t.apply(this,e(arguments,r+"."+a))};return f(n,t),n}(i))},a=0;a<n.length;a++)o(a)}function n(e,t){var n=Object.getOwnPropertyDescriptor(e,t)||{enumerable:!0,configurable:!0};if(n.configurable){delete n.writable,delete n.value;var r=n.get,o=t.substr(2),a=D("_"+t);n.set=function(t){var n=this;if(n||e!==S||(n=S),n){var r=n[a];if(r&&n.removeEventListener(o,r),"function"==typeof t){var i=function(e){var n=t.apply(this,arguments);return void 0==n||n||e.preventDefault(),n};n[a]=i,n.addEventListener(o,i,!1)}else n[a]=null}},n.get=function(){var o=this;if(o||e!==S||(o=S),!o)return null;if(o.hasOwnProperty(a))return o[a];if(r){var i=r&&r.apply(this);if(i)return n.set.apply(this,[i]),"function"==typeof o.removeAttribute&&o.removeAttribute(t),i}return null},Object.defineProperty(e,t,n)}}function r(e,t){if(t)for(var r=0;r<t.length;r++)n(e,"on"+t[r]);else{var o=[];for(var a in e)"on"==a.substr(0,2)&&o.push(a);for(var i=0;i<o.length;i++)n(e,o[i])}}function o(e,t){var n="boolean"==typeof e?e:"object"==typeof e&&(e&&e.capture),r="boolean"==typeof t?t:"object"==typeof t&&(t&&t.capture);return!!n==!!r}function a(e,t,n,r,a){var i=e[C];if(i)for(var s=0;s<i.length;s++){var c=i[s],u=c.data,l=u.handler;if((u.handler===t||l.listener===t)&&o(u.options,r)&&u.eventName===n)return a&&i.splice(s,1),c}return null}function i(e,t,n){var r=e[C];r||(r=e[C]=[]),n?r.unshift(t):r.push(t)}function s(e,t,n,r,o,s){function c(e){var t=e.data;return i(t.target,e,o),t.invokeAddFunc(l,e)}function u(e){var t=e.data;return a(t.target,e.invoke,t.eventName,t.options,!0),t.invokeRemoveFunc(h,e)}void 0===n&&(n=!0),void 0===r&&(r=!1),void 0===o&&(o=!1),void 0===s&&(s=F);var l=D(e),h=D(t),p=!n&&void 0;return function(t,n){var o=s(t,n);o.options=o.options||p;var i=null;"function"==typeof o.handler?i=o.handler:o.handler&&o.handler.handleEvent&&(i=function(e){return o.handler.handleEvent(e)});var h=!1;try{h=o.handler&&"[object FunctionWrapper]"===o.handler.toString()}catch(f){return o.crossContext=!0,o.invokeAddFunc(l,o.handler)}if(!i||h)return o.invokeAddFunc(l,o.handler);if(!r){var d=a(o.target,o.handler,o.eventName,o.options,!1);if(d)return o.invokeAddFunc(l,d)}var v=Zone.current,y=o.target.constructor.name+"."+e+":"+o.eventName;v.scheduleEventTask(y,i,o,c,u)}}function c(e,t,n){void 0===t&&(t=!0),void 0===n&&(n=F);var r=D(e),o=!t&&void 0;return function(e,t){var i=n(e,t);i.options=i.options||o;var s=null;"function"==typeof i.handler?s=i.handler:i.handler&&i.handler.handleEvent&&(s=function(e){return i.handler.handleEvent(e)});var c=!1;try{c=i.handler&&"[object FunctionWrapper]"===i.handler.toString()}catch(u){return i.crossContext=!0,i.invokeRemoveFunc(r,i.handler)}if(!s||c)return i.invokeRemoveFunc(r,i.handler);var l=a(i.target,i.handler,i.eventName,i.options,!0);l?l.zone.cancelTask(l):i.invokeRemoveFunc(r,i.handler)}}function u(e,t,n,r){return void 0===t&&(t=I),void 0===n&&(n=M),void 0===r&&(r=F),!(!e||!e[t])&&(h(e,t,function(){return s(t,n,!0,!1,!1,r)}),h(e,n,function(){return c(n,!0,r)}),!0)}function l(t){var n=S[t];if(n){S[D(t)]=n,S[t]=function(){var r=e(arguments,t);switch(r.length){case 0:this[H]=new n;break;case 1:this[H]=new n(r[0]);break;case 2:this[H]=new n(r[0],r[1]);break;case 3:this[H]=new n(r[0],r[1],r[2]);break;case 4:this[H]=new n(r[0],r[1],r[2],r[3]);break;default:throw new Error("Arg list too long.")}},f(S[t],n);var r,o=new n(function(){});for(r in o)"XMLHttpRequest"===t&&"responseBlob"===r||!function(e){"function"==typeof o[e]?S[t].prototype[e]=function(){return this[H][e].apply(this[H],arguments)}:Object.defineProperty(S[t].prototype,e,{set:function(n){"function"==typeof n?(this[H][e]=Zone.current.wrap(n,t+"."+e),f(this[H][e],n)):this[H][e]=n},get:function(){return this[H][e]}})}(r);for(r in n)"prototype"!==r&&n.hasOwnProperty(r)&&(S[t][r]=n[r])}}function h(e,t,n){for(var r=e;r&&!r.hasOwnProperty(t);)r=Object.getPrototypeOf(r);!r&&e[t]&&(r=e);var o,a=D(t);if(r&&!(o=r[a])){o=r[a]=r[t];var i=n(o,a,t);r[t]=function(){return i(this,arguments)},f(r[t],o)}return o}function p(e,t){var n=e[D("eventTasks")],r=[];if(n)for(var o=0;o<n.length;o++){var a=n[o],i=a.data,s=i&&i.eventName;s===t&&r.push(a)}return r}function f(e,t){e[D("OriginalDelegate")]=t}function d(e,t,n,r){function o(t){function n(){try{t.invoke.apply(this,arguments)}finally{"number"==typeof r.handleId&&delete c[r.handleId]}}var r=t.data;return r.args[0]=n,r.handleId=i.apply(e,r.args),"number"==typeof r.handleId&&(c[r.handleId]=t),t}function a(e){return"number"==typeof e.data.handleId&&delete c[e.data.handleId],s(e.data.handleId)}var i=null,s=null;t+=r,n+=r;var c={};i=h(e,t,function(n){return function(i,s){if("function"==typeof s[0]){var c=Zone.current,u={handleId:null,isPeriodic:"Interval"===r,delay:"Timeout"===r||"Interval"===r?s[1]||0:null,args:s},l=c.scheduleMacroTask(t,s[0],u,o,a);if(!l)return l;var h=l.data.handleId;return h&&h.ref&&h.unref&&"function"==typeof h.ref&&"function"==typeof h.unref&&(l.ref=h.ref.bind(h),l.unref=h.unref.bind(h)),l}return n.apply(e,s)}}),s=h(e,n,function(t){return function(n,r){var o="number"==typeof r[0]?c[r[0]]:r[0];o&&"string"==typeof o.type?"notScheduled"!==o.state&&(o.cancelFn&&o.data.isPeriodic||0===o.runCount)&&o.zone.cancelTask(o):t.apply(e,r)}})}function v(){Object.defineProperty=function(e,t,n){if(k(e,t))throw new TypeError("Cannot assign to read only property '"+t+"' of "+e);var r=n.configurable;return"prototype"!==t&&(n=g(e,t,n)),_(e,t,n,r)},Object.defineProperties=function(e,t){return Object.keys(t).forEach(function(n){Object.defineProperty(e,n,t[n])}),e},Object.create=function(e,t){return"object"!=typeof t||Object.isFrozen(t)||Object.keys(t).forEach(function(n){t[n]=g(e,n,t[n])}),q(e,t)},Object.getOwnPropertyDescriptor=function(e,t){var n=R(e,t);return k(e,t)&&(n.configurable=!1),n}}function y(e,t,n){var r=n.configurable;return n=g(e,t,n),_(e,t,n,r)}function k(e,t){return e&&e[x]&&e[x][t]}function g(e,t,n){return n.configurable=!0,n.configurable||(e[x]||L(e,x,{writable:!0,value:{}}),e[x][t]=!0),n}function _(e,t,n,r){try{return L(e,t,n)}catch(o){if(!n.configurable)throw o;"undefined"==typeof r?delete n.configurable:n.configurable=r;try{return L(e,t,n)}catch(o){var a=null;try{a=JSON.stringify(n)}catch(o){a=a.toString()}console.log("Attempting to configure '"+t+"' with descriptor '"+a+"' on object '"+e+"' and got error, giving up: "+o)}}}function m(e){var t=[],n=e.wtf;n?t=A.split(",").map(function(e){return"HTML"+e+"Element"}).concat(B):e[X]?t.push(X):t=B;for(var r=0;r<t.length;r++){var o=e[t[r]];u(o&&o.prototype)}}function T(e){var t=e.WebSocket;e.EventTarget||u(t.prototype),e.WebSocket=function(e,n){var o,a=arguments.length>1?new t(e,n):new t(e),i=Object.getOwnPropertyDescriptor(a,"onmessage");return i&&i.configurable===!1?(o=Object.create(a),["addEventListener","removeEventListener","send","close"].forEach(function(e){o[e]=function(){return a[e].apply(a,arguments)}})):o=a,r(o,["close","error","message","open"]),o};for(var n in t)e.WebSocket[n]=t[n]}function b(e){if(!P||j){var t="undefined"!=typeof WebSocket;w()?(O&&(r(window,N.concat(["resize"])),r(Document.prototype,N),"undefined"!=typeof window.SVGElement&&r(window.SVGElement.prototype,N),r(HTMLElement.prototype,N)),r(XMLHttpRequest.prototype,null),"undefined"!=typeof IDBIndex&&(r(IDBIndex.prototype,null),r(IDBRequest.prototype,null),r(IDBOpenDBRequest.prototype,null),r(IDBDatabase.prototype,null),r(IDBTransaction.prototype,null),r(IDBCursor.prototype,null)),t&&r(WebSocket.prototype,null)):(E(),l("XMLHttpRequest"),t&&T(e))}}function w(){if((O||j)&&!Object.getOwnPropertyDescriptor(HTMLElement.prototype,"onclick")&&"undefined"!=typeof Element){var e=Object.getOwnPropertyDescriptor(Element.prototype,"onclick");if(e&&!e.configurable)return!1}var t=Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype,"onreadystatechange");if(t){Object.defineProperty(XMLHttpRequest.prototype,"onreadystatechange",{enumerable:!0,configurable:!0,get:function(){return!0}});var n=new XMLHttpRequest,r=!!n.onreadystatechange;return Object.defineProperty(XMLHttpRequest.prototype,"onreadystatechange",t||{}),r}Object.defineProperty(XMLHttpRequest.prototype,"onreadystatechange",{enumerable:!0,configurable:!0,get:function(){return this[D("fakeonreadystatechange")]},set:function(e){this[D("fakeonreadystatechange")]=e}});var n=new XMLHttpRequest,o=function(){};n.onreadystatechange=o;var r=n[D("fakeonreadystatechange")]===o;return n.onreadystatechange=null,r}function E(){for(var e=function(e){var t=N[e],n="on"+t;self.addEventListener(t,function(e){var t,r,o=e.target;for(r=o?o.constructor.name+"."+n:"unknown."+n;o;)o[n]&&!o[n][W]&&(t=Zone.current.wrap(o[n],r),t[W]=o[n],o[n]=t),o=o.parentElement},!0)},t=0;t<N.length;t++)e(t)}function Z(e){if((O||j)&&"registerElement"in e.document){var t=document.registerElement,n=["createdCallback","attachedCallback","detachedCallback","attributeChangedCallback"];document.registerElement=function(e,r){return r&&r.prototype&&n.forEach(function(e){var t="Document.registerElement::"+e;if(r.prototype.hasOwnProperty(e)){var n=Object.getOwnPropertyDescriptor(r.prototype,e);n&&n.value?(n.value=Zone.current.wrap(n.value,t),y(r.prototype,e,n)):r.prototype[e]=Zone.current.wrap(r.prototype[e],t)}else r.prototype[e]&&(r.prototype[e]=Zone.current.wrap(r.prototype[e],t))}),t.apply(document,[e,r])},f(document.registerElement,t)}}(function(e){function t(e){s&&s.mark&&s.mark(e)}function n(e,t){s&&s.measure&&s.measure(e,t)}function r(t){0===j&&0===v.length&&(e[f]?e[f].resolve(0)[d](o):e[p](o,0)),t&&v.push(t)}function o(){if(!y){for(y=!0;v.length;){var e=v;v=[];for(var t=0;t<e.length;t++){var n=e[t];try{n.zone.runTask(n,null,null)}catch(r){z.onUnhandledError(r)}}}!c[i("ignoreConsoleErrorUncaughtError")];z.microtaskDrainDone(),y=!1}}function a(){}function i(e){return"__zone_symbol__"+e}var s=e.performance;if(t("Zone"),e.Zone)throw new Error("Zone already loaded.");var c=function(){function r(e,t){this._properties=null,this._parent=e,this._name=t?t.name||"unnamed":"<root>",this._properties=t&&t.properties||{},this._zoneDelegate=new l(this,this._parent&&this._parent._zoneDelegate,t)}return r.assertZonePatched=function(){if(e.Promise!==S.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")},Object.defineProperty(r,"root",{get:function(){for(var e=r.current;e.parent;)e=e.parent;return e},enumerable:!0,configurable:!0}),Object.defineProperty(r,"current",{get:function(){return P.zone},enumerable:!0,configurable:!0}),Object.defineProperty(r,"currentTask",{get:function(){return O},enumerable:!0,configurable:!0}),r.__load_patch=function(o,a){if(S.hasOwnProperty(o))throw Error("Already loaded patch: "+o);if(!e["__Zone_disable_"+o]){var i="Zone:"+o;t(i),S[o]=a(e,r,z),n(i,i)}},Object.defineProperty(r.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0}),r.prototype.get=function(e){var t=this.getZoneWith(e);if(t)return t._properties[e]},r.prototype.getZoneWith=function(e){for(var t=this;t;){if(t._properties.hasOwnProperty(e))return t;t=t._parent}return null},r.prototype.fork=function(e){if(!e)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,e)},r.prototype.wrap=function(e,t){if("function"!=typeof e)throw new Error("Expecting function got: "+e);var n=this._zoneDelegate.intercept(this,e,t),r=this;return function(){return r.runGuarded(n,this,arguments,t)}},r.prototype.run=function(e,t,n,r){void 0===t&&(t=void 0),void 0===n&&(n=null),void 0===r&&(r=null),P={parent:P,zone:this};try{return this._zoneDelegate.invoke(this,e,t,n,r)}finally{P=P.parent}},r.prototype.runGuarded=function(e,t,n,r){void 0===t&&(t=null),void 0===n&&(n=null),void 0===r&&(r=null),P={parent:P,zone:this};try{try{return this._zoneDelegate.invoke(this,e,t,n,r)}catch(o){if(this._zoneDelegate.handleError(this,o))throw o}}finally{P=P.parent}},r.prototype.runTask=function(e,t,n){if(e.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(e.zone||k).name+"; Execution: "+this.name+")");var r=e.state!=T;r&&e._transitionTo(T,m),e.runCount++;var o=O;O=e,P={parent:P,zone:this};try{e.type==Z&&e.data&&!e.data.isPeriodic&&(e.cancelFn=null);try{return this._zoneDelegate.invokeTask(this,e,t,n)}catch(a){if(this._zoneDelegate.handleError(this,a))throw a}}finally{e.state!==g&&e.state!==w&&(e.type==D||e.data&&e.data.isPeriodic?r&&e._transitionTo(m,T):(e.runCount=0,this._updateTaskCount(e,-1),r&&e._transitionTo(g,T,g))),P=P.parent,O=o}},r.prototype.scheduleTask=function(e){if(e.zone&&e.zone!==this)for(var t=this;t;){if(t===e.zone)throw Error("can not reschedule task to "+this.name+" which is descendants of the original zone "+e.zone.name);t=t.parent}e._transitionTo(_,g);var n=[];e._zoneDelegates=n,e._zone=this;try{e=this._zoneDelegate.scheduleTask(this,e)}catch(r){throw e._transitionTo(w,_,g),this._zoneDelegate.handleError(this,r),r}return e._zoneDelegates===n&&this._updateTaskCount(e,1),e.state==_&&e._transitionTo(m,_),e},r.prototype.scheduleMicroTask=function(e,t,n,r){return this.scheduleTask(new h(E,e,t,n,r,null))},r.prototype.scheduleMacroTask=function(e,t,n,r,o){return this.scheduleTask(new h(Z,e,t,n,r,o))},r.prototype.scheduleEventTask=function(e,t,n,r,o){return this.scheduleTask(new h(D,e,t,n,r,o))},r.prototype.cancelTask=function(e){if(e.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(e.zone||k).name+"; Execution: "+this.name+")");e._transitionTo(b,m,T);try{this._zoneDelegate.cancelTask(this,e)}catch(t){throw e._transitionTo(w,b),this._zoneDelegate.handleError(this,t),t}return this._updateTaskCount(e,-1),e._transitionTo(g,b),e.runCount=0,e},r.prototype._updateTaskCount=function(e,t){var n=e._zoneDelegates;t==-1&&(e._zoneDelegates=null);for(var r=0;r<n.length;r++)n[r]._updateTaskCount(e.type,t)},r}();c.__symbol__=i;var u={name:"",onHasTask:function(e,t,n,r){return e.hasTask(n,r)},onScheduleTask:function(e,t,n,r){return e.scheduleTask(n,r)},onInvokeTask:function(e,t,n,r,o,a){return e.invokeTask(n,r,o,a)},onCancelTask:function(e,t,n,r){return e.cancelTask(n,r)}},l=function(){function e(e,t,n){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=e,this._parentDelegate=t,this._forkZS=n&&(n&&n.onFork?n:t._forkZS),this._forkDlgt=n&&(n.onFork?t:t._forkDlgt),this._forkCurrZone=n&&(n.onFork?this.zone:t.zone),this._interceptZS=n&&(n.onIntercept?n:t._interceptZS),this._interceptDlgt=n&&(n.onIntercept?t:t._interceptDlgt),this._interceptCurrZone=n&&(n.onIntercept?this.zone:t.zone),this._invokeZS=n&&(n.onInvoke?n:t._invokeZS),this._invokeDlgt=n&&(n.onInvoke?t:t._invokeDlgt),this._invokeCurrZone=n&&(n.onInvoke?this.zone:t.zone),this._handleErrorZS=n&&(n.onHandleError?n:t._handleErrorZS),this._handleErrorDlgt=n&&(n.onHandleError?t:t._handleErrorDlgt),this._handleErrorCurrZone=n&&(n.onHandleError?this.zone:t.zone),this._scheduleTaskZS=n&&(n.onScheduleTask?n:t._scheduleTaskZS),this._scheduleTaskDlgt=n&&(n.onScheduleTask?t:t._scheduleTaskDlgt),this._scheduleTaskCurrZone=n&&(n.onScheduleTask?this.zone:t.zone),this._invokeTaskZS=n&&(n.onInvokeTask?n:t._invokeTaskZS),this._invokeTaskDlgt=n&&(n.onInvokeTask?t:t._invokeTaskDlgt),this._invokeTaskCurrZone=n&&(n.onInvokeTask?this.zone:t.zone),this._cancelTaskZS=n&&(n.onCancelTask?n:t._cancelTaskZS),this._cancelTaskDlgt=n&&(n.onCancelTask?t:t._cancelTaskDlgt),this._cancelTaskCurrZone=n&&(n.onCancelTask?this.zone:t.zone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;var r=n&&n.onHasTask,o=t&&t._hasTaskZS;(r||o)&&(this._hasTaskZS=r?n:u,this._hasTaskDlgt=t,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=e,n.onScheduleTask||(this._scheduleTaskZS=u,this._scheduleTaskDlgt=t,this._scheduleTaskCurrZone=this.zone),n.onInvokeTask||(this._invokeTaskZS=u,this._invokeTaskDlgt=t,this._invokeTaskCurrZone=this.zone),n.onCancelTask||(this._cancelTaskZS=u,this._cancelTaskDlgt=t,this._cancelTaskCurrZone=this.zone))}return e.prototype.fork=function(e,t){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,e,t):new c(e,t)},e.prototype.intercept=function(e,t,n){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,e,t,n):t},e.prototype.invoke=function(e,t,n,r,o){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,e,t,n,r,o):t.apply(n,r)},e.prototype.handleError=function(e,t){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,e,t)},e.prototype.scheduleTask=function(e,t){var n=t;if(this._scheduleTaskZS)this._hasTaskZS&&n._zoneDelegates.push(this._hasTaskDlgtOwner),n=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,e,t),n||(n=t);else if(t.scheduleFn)t.scheduleFn(t);else{if(t.type!=E)throw new Error("Task is missing scheduleFn.");r(t)}return n},e.prototype.invokeTask=function(e,t,n,r){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,e,t,n,r):t.callback.apply(n,r)},e.prototype.cancelTask=function(e,t){var n;if(this._cancelTaskZS)n=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,e,t);else{if(!t.cancelFn)throw Error("Task is not cancelable");n=t.cancelFn(t)}return n},e.prototype.hasTask=function(e,t){try{return this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,e,t)}catch(n){this.handleError(e,n)}},e.prototype._updateTaskCount=function(e,t){var n=this._taskCounts,r=n[e],o=n[e]=r+t;if(o<0)throw new Error("More tasks executed then were scheduled.");if(0==r||0==o){var a={microTask:n.microTask>0,macroTask:n.macroTask>0,eventTask:n.eventTask>0,change:e};this.hasTask(this.zone,a)}},e}(),h=function(){function e(e,t,n,r,a,i){this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=e,this.source=t,this.data=r,this.scheduleFn=a,this.cancelFn=i,this.callback=n;var s=this;this.invoke=function(){j++;try{return s.runCount++,s.zone.runTask(s,this,arguments)}finally{1==j&&o(),j--}}}return Object.defineProperty(e.prototype,"zone",{get:function(){return this._zone},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"state",{get:function(){return this._state},enumerable:!0,configurable:!0}),e.prototype.cancelScheduleRequest=function(){this._transitionTo(g,_)},e.prototype._transitionTo=function(e,t,n){if(this._state!==t&&this._state!==n)throw new Error(this.type+" '"+this.source+"': can not transition to '"+e+"', expecting state '"+t+"'"+(n?" or '"+n+"'":"")+", was '"+this._state+"'.");this._state=e,e==g&&(this._zoneDelegates=null)},e.prototype.toString=function(){return this.data&&"undefined"!=typeof this.data.handleId?this.data.handleId:Object.prototype.toString.call(this)},e.prototype.toJSON=function(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,invoke:this.invoke,scheduleFn:this.scheduleFn,cancelFn:this.cancelFn,runCount:this.runCount,callback:this.callback}},e}(),p=i("setTimeout"),f=i("Promise"),d=i("then"),v=[],y=!1,k={name:"NO ZONE"},g="notScheduled",_="scheduling",m="scheduled",T="running",b="canceling",w="unknown",E="microTask",Z="macroTask",D="eventTask",S={},z={symbol:i,currentZoneFrame:function(){return P},onUnhandledError:a,microtaskDrainDone:a,scheduleMicroTask:r,showUncaughtError:function(){return!c[i("ignoreConsoleErrorUncaughtError")]}},P={parent:null,zone:new c(null,null)},O=null,j=0;return n("Zone","Zone"),e.Zone=c})("undefined"!=typeof window&&window||"undefined"!=typeof self&&self||global);Zone.__load_patch("ZoneAwarePromise",function(e,t,n){function r(e){n.onUnhandledError(e);try{var r=t[f("unhandledPromiseRejectionHandler")];r&&"function"==typeof r&&r.apply(this,[e])}catch(o){}}function o(e){return e&&e.then}function a(e){return e}function i(e){return Z.reject(e)}function s(e,t){return function(n){try{c(e,t,n)}catch(r){c(e,!1,r)}}}function c(e,r,o){var a=E();if(e===o)throw new TypeError("Promise resolved with itself");if(e[k]===m){var i=null;try{"object"!=typeof o&&"function"!=typeof o||(i=o&&o.then)}catch(h){return a(function(){c(e,!1,h)})(),e}if(r!==b&&o instanceof Z&&o.hasOwnProperty(k)&&o.hasOwnProperty(g)&&o[k]!==m)u(o),c(e,o[k],o[g]);else if(r!==b&&"function"==typeof i)try{i.apply(o,[a(s(e,r)),a(s(e,!1))])}catch(h){a(function(){c(e,!1,h)})()}else{e[k]=r;var p=e[g];e[g]=o,r===b&&o instanceof Error&&(o[f("currentTask")]=t.currentTask);for(var v=0;v<p.length;)l(e,p[v++],p[v++],p[v++],p[v++]);if(0==p.length&&r==b){e[k]=w;try{throw new Error("Uncaught (in promise): "+o+(o&&o.stack?"\n"+o.stack:""))}catch(h){var y=h;y.rejection=o,y.promise=e,y.zone=t.current,y.task=t.currentTask,d.push(y),n.scheduleMicroTask()}}}}return e}function u(e){if(e[k]===w){try{var n=t[f("rejectionHandledHandler")];n&&"function"==typeof n&&n.apply(this,[{rejection:e[g],promise:e}])}catch(r){}e[k]=b;for(var o=0;o<d.length;o++)e===d[o].promise&&d.splice(o,1)}}function l(e,t,n,r,o){u(e);var s=e[k]?"function"==typeof r?r:a:"function"==typeof o?o:i;t.scheduleMicroTask(_,function(){try{c(n,!0,t.run(s,void 0,[e[g]]))}catch(r){c(n,!1,r)}})}function h(e){var t=e.prototype,n=t.then;t[y]=n,e.prototype.then=function(e,t){var r=this,o=new Z(function(e,t){n.call(r,e,t)});return o.then(e,t)},e[S]=!0}function p(e){return function(){var t=e.apply(this,arguments);if(t instanceof Z)return t;var n=t.constructor;return n[S]||h(n),t}}var f=n.symbol,d=[],v=f("Promise"),y=f("then");n.onUnhandledError=function(e){if(n.showUncaughtError()){var t=e&&e.rejection;t&&console.error("Unhandled Promise rejection:",t instanceof Error?t.message:t,"; Zone:",e.zone.name,"; Task:",e.task&&e.task.source,"; Value:",t,t instanceof Error?t.stack:void 0),console.error(e)}},n.microtaskDrainDone=function(){for(;d.length;)for(var e=function(){var e=d.shift();try{e.zone.runGuarded(function(){throw e})}catch(t){r(t)}};d.length;)e()};var k=f("state"),g=f("value"),_="Promise.then",m=null,T=!0,b=!1,w=0,E=function(){var e=!1;return function(t){return function(){e||(e=!0,t.apply(null,arguments))}}},Z=function(){function e(t){var n=this;if(!(n instanceof e))throw new Error("Must be an instanceof Promise.");n[k]=m,n[g]=[];try{t&&t(s(n,T),s(n,b))}catch(r){c(n,!1,r)}}return e.toString=function(){return"function ZoneAwarePromise() { [native code] }"},e.resolve=function(e){return c(new this(null),T,e)},e.reject=function(e){return c(new this(null),b,e)},e.race=function(e){function t(e){i&&(i=r(e))}function n(e){i&&(i=a(e))}for(var r,a,i=new this(function(e,t){n=[e,t],r=n[0],a=n[1];var n}),s=0,c=e;s<c.length;s++){var u=c[s];o(u)||(u=this.resolve(u)),u.then(t,n)}return i},e.all=function(e){for(var t,n,r=new this(function(e,r){t=e,n=r}),a=0,i=[],s=0,c=e;s<c.length;s++){var u=c[s];o(u)||(u=this.resolve(u)),u.then(function(e){return function(n){i[e]=n,a--,a||t(i)}}(a),n),a++}return a||t(i),r},e.prototype.then=function(e,n){var r=new this.constructor(null),o=t.current;return this[k]==m?this[g].push(o,r,e,n):l(this,o,r,e,n),r},e.prototype["catch"]=function(e){return this.then(null,e)},e}();Z.resolve=Z.resolve,Z.reject=Z.reject,Z.race=Z.race,Z.all=Z.all;var D=e[v]=e.Promise;e.Promise=Z;var S=f("thenPatched");if(D){h(D);var z=e.fetch;"function"==typeof z&&(e.fetch=p(z))}return Promise[t.__symbol__("uncaughtPromiseErrors")]=d,Z});var D=function(e){return"__zone_symbol__"+e},S="object"==typeof window&&window||"object"==typeof self&&self||global,z="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,P=!("nw"in S)&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),O=!P&&!z&&!("undefined"==typeof window||!window.HTMLElement),j="undefined"!=typeof process&&"[object process]"==={}.toString.call(process)&&!z&&!("undefined"==typeof window||!window.HTMLElement),C=D("eventTasks"),I="addEventListener",M="removeEventListener",F=function(e,t){return{options:t[2],eventName:t[0],handler:t[1],target:e||S,name:t[0],crossContext:!1,invokeAddFunc:function(e,t){if(!this.crossContext)return t&&t.invoke?this.target[e](this.eventName,t.invoke,this.options):this.target[e](this.eventName,t,this.options);try{return this.target[e](this.eventName,t,this.options)}catch(n){}},invokeRemoveFunc:function(e,t){if(!this.crossContext)return t&&t.invoke?this.target[e](this.eventName,t.invoke,this.options):this.target[e](this.eventName,t,this.options);try{return this.target[e](this.eventName,t,this.options)}catch(n){}}}},H=D("originalInstance");Zone[D("patchEventTargetMethods")]=u,Zone[D("patchOnProperties")]=r,Zone.__load_patch("toString",function(e,t,n){var r=Function.prototype.toString;Function.prototype.toString=function(){if("function"==typeof this){if(this[D("OriginalDelegate")])return r.apply(this[D("OriginalDelegate")],arguments);if(this===Promise){var t=e[D("Promise")];if(t)return r.apply(t,arguments)}if(this===Error){var n=e[D("Error")];if(n)return r.apply(n,arguments)}}return r.apply(this,arguments)};var o=Object.prototype.toString;Object.prototype.toString=function(){return this instanceof Promise?"[object Promise]":o.apply(this,arguments)}});var L=Object[D("defineProperty")]=Object.defineProperty,R=Object[D("getOwnPropertyDescriptor")]=Object.getOwnPropertyDescriptor,q=Object.create,x=D("unconfigurables"),A="Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video",B="ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket".split(","),X="EventTarget",N="copy cut paste abort blur focus canplay canplaythrough change click contextmenu dblclick drag dragend dragenter dragleave dragover dragstart drop durationchange emptied ended input invalid keydown keypress keyup load loadeddata loadedmetadata loadstart message mousedown mouseenter mouseleave mousemove mouseout mouseover mouseup pause play playing progress ratechange reset scroll seeked seeking select show stalled submit suspend timeupdate volumechange waiting mozfullscreenchange mozfullscreenerror mozpointerlockchange mozpointerlockerror error webglcontextrestored webglcontextlost webglcontextcreationerror".split(" "),W=D("unbound");Zone.__load_patch("timers",function(e,t,n){var r="set",o="clear";d(e,r,o,"Timeout"),d(e,r,o,"Interval"),d(e,r,o,"Immediate"),d(e,"request","cancel","AnimationFrame"),d(e,"mozRequest","mozCancel","AnimationFrame"),d(e,"webkitRequest","webkitCancel","AnimationFrame")}),Zone.__load_patch("blocking",function(e,t,n){for(var r=["alert","prompt","confirm"],o=0;o<r.length;o++){var a=r[o];h(e,a,function(n,r,o){return function(r,a){return t.current.run(n,e,a,o)}})}}),Zone.__load_patch("EventTarget",function(e,t,n){m(e);var r=e.XMLHttpRequestEventTarget;r&&r.prototype&&u(r.prototype),l("MutationObserver"),l("WebKitMutationObserver"),l("FileReader")}),Zone.__load_patch("on_property",function(e,t,n){b(e),v(),Z(e)}),Zone.__load_patch("XHR",function(e,t,n){function r(e){function n(e){var t=e[o];return t}function r(e){XMLHttpRequest[s]=!1;var t=e.data,n=t.target[i];n&&t.target.removeEventListener("readystatechange",n);var r=t.target[i]=function(){t.target.readyState===t.target.DONE&&!t.aborted&&XMLHttpRequest[s]&&"scheduled"===e.state&&e.invoke()};t.target.addEventListener("readystatechange",r);var a=t.target[o];return a||(t.target[o]=e),p.apply(t.target,t.args),XMLHttpRequest[s]=!0,e}function c(){}function u(e){var t=e.data;return t.aborted=!0,f.apply(t.target,t.args)}var l=h(e.XMLHttpRequest.prototype,"open",function(){return function(e,t){return e[a]=0==t[2],l.apply(e,t)}}),p=h(e.XMLHttpRequest.prototype,"send",function(){return function(e,n){var o=t.current;if(e[a])return p.apply(e,n);var i={target:e,isPeriodic:!1,delay:null,args:n,aborted:!1};return o.scheduleMacroTask("XMLHttpRequest.send",c,i,r,u)}}),f=h(e.XMLHttpRequest.prototype,"abort",function(e){return function(e,t){var r=n(e);if(r&&"string"==typeof r.type){if(null==r.cancelFn||r.data&&r.data.aborted)return;r.zone.cancelTask(r)}}})}r(e);var o=D("xhrTask"),a=D("xhrSync"),i=D("xhrListener"),s=D("xhrScheduled")}),Zone.__load_patch("geolocation",function(e,n,r){e.navigator&&e.navigator.geolocation&&t(e.navigator.geolocation,["getCurrentPosition","watchPosition"])}),Zone.__load_patch("PromiseRejectionEvent",function(e,t,n){function r(t){return function(n){var r=p(e,t);r.forEach(function(r){var o=e.PromiseRejectionEvent;if(o){var a=new o(t,{promise:n.promise,reason:n.rejection});r.invoke(a)}})}}e.PromiseRejectionEvent&&(t[D("unhandledPromiseRejectionHandler")]=r("unhandledrejection"),t[D("rejectionHandledHandler")]=r("rejectionhandled"))})});

@@ -9,4 +9,5 @@ /**

import '../common/to-string';
import {patchTimer} from '../common/timers';
import {patchFuncToString, patchObjectToString} from '../common/to-string';
import {findEventTask, patchClass, patchEventTargetMethods, patchMethod, patchPrototype, zoneSymbol} from '../common/utils';

@@ -19,166 +20,175 @@

const set = 'set';
const clear = 'clear';
const blockingMethods = ['alert', 'prompt', 'confirm'];
const _global: any =
typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global;
Zone.__load_patch('timers', (global: any, Zone: ZoneType, api: _ZonePrivate) => {
const set = 'set';
const clear = 'clear';
patchTimer(global, set, clear, 'Timeout');
patchTimer(global, set, clear, 'Interval');
patchTimer(global, set, clear, 'Immediate');
patchTimer(global, 'request', 'cancel', 'AnimationFrame');
patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame');
patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame');
});
patchTimer(_global, set, clear, 'Timeout');
patchTimer(_global, set, clear, 'Interval');
patchTimer(_global, set, clear, 'Immediate');
patchTimer(_global, 'request', 'cancel', 'AnimationFrame');
patchTimer(_global, 'mozRequest', 'mozCancel', 'AnimationFrame');
patchTimer(_global, 'webkitRequest', 'webkitCancel', 'AnimationFrame');
Zone.__load_patch('blocking', (global: any, Zone: ZoneType, api: _ZonePrivate) => {
const blockingMethods = ['alert', 'prompt', 'confirm'];
for (let i = 0; i < blockingMethods.length; i++) {
const name = blockingMethods[i];
patchMethod(global, name, (delegate, symbol, name) => {
return function(s: any, args: any[]) {
return Zone.current.run(delegate, global, args, name);
};
});
}
});
for (let i = 0; i < blockingMethods.length; i++) {
const name = blockingMethods[i];
patchMethod(_global, name, (delegate, symbol, name) => {
return function(s: any, args: any[]) {
return Zone.current.run(delegate, _global, args, name);
};
});
}
Zone.__load_patch('EventTarget', (global: any, Zone: ZoneType, api: _ZonePrivate) => {
eventTargetPatch(global);
// patch XMLHttpRequestEventTarget's addEventListener/removeEventListener
const XMLHttpRequestEventTarget = (global as any)['XMLHttpRequestEventTarget'];
if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) {
patchEventTargetMethods(XMLHttpRequestEventTarget.prototype);
}
patchClass('MutationObserver');
patchClass('WebKitMutationObserver');
patchClass('FileReader');
});
eventTargetPatch(_global);
// patch XMLHttpRequestEventTarget's addEventListener/removeEventListener
const XMLHttpRequestEventTarget = (_global as any)['XMLHttpRequestEventTarget'];
if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) {
patchEventTargetMethods(XMLHttpRequestEventTarget.prototype);
}
propertyDescriptorPatch(_global);
patchClass('MutationObserver');
patchClass('WebKitMutationObserver');
patchClass('FileReader');
propertyPatch();
registerElementPatch(_global);
Zone.__load_patch('on_property', (global: any, Zone: ZoneType, api: _ZonePrivate) => {
propertyDescriptorPatch(global);
propertyPatch();
registerElementPatch(global);
});
// Treat XMLHTTPRequest as a macrotask.
patchXHR(_global);
Zone.__load_patch('XHR', (global: any, Zone: ZoneType, api: _ZonePrivate) => {
// Treat XMLHTTPRequest as a macrotask.
patchXHR(global);
const XHR_TASK = zoneSymbol('xhrTask');
const XHR_SYNC = zoneSymbol('xhrSync');
const XHR_LISTENER = zoneSymbol('xhrListener');
const XHR_SCHEDULED = zoneSymbol('xhrScheduled');
const XHR_TASK = zoneSymbol('xhrTask');
const XHR_SYNC = zoneSymbol('xhrSync');
const XHR_LISTENER = zoneSymbol('xhrListener');
const XHR_SCHEDULED = zoneSymbol('xhrScheduled');
interface XHROptions extends TaskData {
target: any;
args: any[];
aborted: boolean;
}
function patchXHR(window: any) {
function findPendingTask(target: any) {
const pendingTask: Task = target[XHR_TASK];
return pendingTask;
interface XHROptions extends TaskData {
target: any;
args: any[];
aborted: boolean;
}
function scheduleTask(task: Task) {
(XMLHttpRequest as any)[XHR_SCHEDULED] = false;
const data = <XHROptions>task.data;
// remove existing event listener
const listener = data.target[XHR_LISTENER];
if (listener) {
data.target.removeEventListener('readystatechange', listener);
function patchXHR(window: any) {
function findPendingTask(target: any) {
const pendingTask: Task = target[XHR_TASK];
return pendingTask;
}
const newListener = data.target[XHR_LISTENER] = () => {
if (data.target.readyState === data.target.DONE) {
// sometimes on some browsers XMLHttpRequest will fire onreadystatechange with
// readyState=4 multiple times, so we need to check task state here
if (!data.aborted && (XMLHttpRequest as any)[XHR_SCHEDULED] && task.state === 'scheduled') {
task.invoke();
function scheduleTask(task: Task) {
(XMLHttpRequest as any)[XHR_SCHEDULED] = false;
const data = <XHROptions>task.data;
// remove existing event listener
const listener = data.target[XHR_LISTENER];
if (listener) {
data.target.removeEventListener('readystatechange', listener);
}
const newListener = data.target[XHR_LISTENER] = () => {
if (data.target.readyState === data.target.DONE) {
// sometimes on some browsers XMLHttpRequest will fire onreadystatechange with
// readyState=4 multiple times, so we need to check task state here
if (!data.aborted && (XMLHttpRequest as any)[XHR_SCHEDULED] &&
task.state === 'scheduled') {
task.invoke();
}
}
};
data.target.addEventListener('readystatechange', newListener);
const storedTask: Task = data.target[XHR_TASK];
if (!storedTask) {
data.target[XHR_TASK] = task;
}
};
data.target.addEventListener('readystatechange', newListener);
sendNative.apply(data.target, data.args);
(XMLHttpRequest as any)[XHR_SCHEDULED] = true;
return task;
}
const storedTask: Task = data.target[XHR_TASK];
if (!storedTask) {
data.target[XHR_TASK] = task;
function placeholderCallback() {}
function clearTask(task: Task) {
const data = <XHROptions>task.data;
// Note - ideally, we would call data.target.removeEventListener here, but it's too late
// to prevent it from firing. So instead, we store info for the event listener.
data.aborted = true;
return abortNative.apply(data.target, data.args);
}
sendNative.apply(data.target, data.args);
(XMLHttpRequest as any)[XHR_SCHEDULED] = true;
return task;
}
function placeholderCallback() {}
const openNative: Function = patchMethod(
window.XMLHttpRequest.prototype, 'open', () => function(self: any, args: any[]) {
self[XHR_SYNC] = args[2] == false;
return openNative.apply(self, args);
});
function clearTask(task: Task) {
const data = <XHROptions>task.data;
// Note - ideally, we would call data.target.removeEventListener here, but it's too late
// to prevent it from firing. So instead, we store info for the event listener.
data.aborted = true;
return abortNative.apply(data.target, data.args);
const sendNative: Function = patchMethod(
window.XMLHttpRequest.prototype, 'send', () => function(self: any, args: any[]) {
const zone = Zone.current;
if (self[XHR_SYNC]) {
// if the XHR is sync there is no task to schedule, just execute the code.
return sendNative.apply(self, args);
} else {
const options: XHROptions =
{target: self, isPeriodic: false, delay: null, args: args, aborted: false};
return zone.scheduleMacroTask(
'XMLHttpRequest.send', placeholderCallback, options, scheduleTask, clearTask);
}
});
const abortNative = patchMethod(
window.XMLHttpRequest.prototype, 'abort',
(delegate: Function) => function(self: any, args: any[]) {
const task: Task = findPendingTask(self);
if (task && typeof task.type == 'string') {
// If the XHR has already completed, do nothing.
// If the XHR has already been aborted, do nothing.
// Fix #569, call abort multiple times before done will cause
// macroTask task count be negative number
if (task.cancelFn == null || (task.data && (<XHROptions>task.data).aborted)) {
return;
}
task.zone.cancelTask(task);
}
// Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no
// task
// to cancel. Do nothing.
});
}
});
const openNative: Function =
patchMethod(window.XMLHttpRequest.prototype, 'open', () => function(self: any, args: any[]) {
self[XHR_SYNC] = args[2] == false;
return openNative.apply(self, args);
});
Zone.__load_patch('geolocation', (global: any, Zone: ZoneType, api: _ZonePrivate) => {
/// GEO_LOCATION
if (global['navigator'] && global['navigator'].geolocation) {
patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']);
}
});
const sendNative: Function =
patchMethod(window.XMLHttpRequest.prototype, 'send', () => function(self: any, args: any[]) {
const zone = Zone.current;
if (self[XHR_SYNC]) {
// if the XHR is sync there is no task to schedule, just execute the code.
return sendNative.apply(self, args);
} else {
const options: XHROptions =
{target: self, isPeriodic: false, delay: null, args: args, aborted: false};
return zone.scheduleMacroTask(
'XMLHttpRequest.send', placeholderCallback, options, scheduleTask, clearTask);
Zone.__load_patch('PromiseRejectionEvent', (global: any, Zone: ZoneType, api: _ZonePrivate) => {
// handle unhandled promise rejection
function findPromiseRejectionHandler(evtName: string) {
return function(e: any) {
const eventTasks = findEventTask(global, evtName);
eventTasks.forEach(eventTask => {
// windows has added unhandledrejection event listener
// trigger the event listener
const PromiseRejectionEvent = global['PromiseRejectionEvent'];
if (PromiseRejectionEvent) {
const evt = new PromiseRejectionEvent(evtName, {promise: e.promise, reason: e.rejection});
eventTask.invoke(evt);
}
});
};
}
const abortNative = patchMethod(
window.XMLHttpRequest.prototype, 'abort',
(delegate: Function) => function(self: any, args: any[]) {
const task: Task = findPendingTask(self);
if (task && typeof task.type == 'string') {
// If the XHR has already completed, do nothing.
// If the XHR has already been aborted, do nothing.
// Fix #569, call abort multiple times before done will cause
// macroTask task count be negative number
if (task.cancelFn == null || (task.data && (<XHROptions>task.data).aborted)) {
return;
}
task.zone.cancelTask(task);
}
// Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no task
// to cancel. Do nothing.
});
}
if (global['PromiseRejectionEvent']) {
(Zone as any)[zoneSymbol('unhandledPromiseRejectionHandler')] =
findPromiseRejectionHandler('unhandledrejection');
/// GEO_LOCATION
if (_global['navigator'] && _global['navigator'].geolocation) {
patchPrototype(_global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']);
}
// patch Func.prototype.toString to let them look like native
patchFuncToString();
// patch Object.prototype.toString to let them look like native
patchObjectToString();
// handle unhandled promise rejection
function findPromiseRejectionHandler(evtName: string) {
return function(e: any) {
const eventTasks = findEventTask(_global, evtName);
eventTasks.forEach(eventTask => {
// windows has added unhandledrejection event listener
// trigger the event listener
const PromiseRejectionEvent = _global['PromiseRejectionEvent'];
if (PromiseRejectionEvent) {
const evt = new PromiseRejectionEvent(evtName, {promise: e.promise, reason: e.rejection});
eventTask.invoke(evt);
}
});
};
}
if (_global['PromiseRejectionEvent']) {
(Zone as any)[zoneSymbol('unhandledPromiseRejectionHandler')] =
findPromiseRejectionHandler('unhandledrejection');
(Zone as any)[zoneSymbol('rejectionHandledHandler')] =
findPromiseRejectionHandler('rejectionhandled');
}
(Zone as any)[zoneSymbol('rejectionHandledHandler')] =
findPromiseRejectionHandler('rejectionhandled');
}
});

@@ -11,2 +11,3 @@ /**

import '../zone';
import './browser';
import '../common/promise';
import './browser';

@@ -8,38 +8,33 @@ /**

*/
((_global: any) => {
// patch MediaQuery
patchMediaQuery(_global);
function patchMediaQuery(_global: any) {
if (!_global['MediaQueryList']) {
return;
}
const patchEventTargetMethods =
(Zone as any)[(Zone as any).__symbol__('patchEventTargetMethods')];
patchEventTargetMethods(
_global['MediaQueryList'].prototype, 'addListener', 'removeListener',
(self: any, args: any[]) => {
return {
useCapturing: false,
eventName: 'mediaQuery',
handler: args[0],
target: self || _global,
name: 'mediaQuery',
invokeAddFunc: function(addFnSymbol: any, delegate: any) {
if (delegate && (<Task>delegate).invoke) {
return this.target[addFnSymbol]((<Task>delegate).invoke);
} else {
return this.target[addFnSymbol](delegate);
}
},
invokeRemoveFunc: function(removeFnSymbol: any, delegate: any) {
if (delegate && (<Task>delegate).invoke) {
return this.target[removeFnSymbol]((<Task>delegate).invoke);
} else {
return this.target[removeFnSymbol](delegate);
}
Zone.__load_patch('mediaQuery', (global: any, Zone: ZoneType, api: _ZonePrivate) => {
if (!global['MediaQueryList']) {
return;
}
const patchEventTargetMethods =
(Zone as any)[(Zone as any).__symbol__('patchEventTargetMethods')];
patchEventTargetMethods(
_global['MediaQueryList'].prototype, 'addListener', 'removeListener',
(self: any, args: any[]) => {
return {
useCapturing: false,
eventName: 'mediaQuery',
handler: args[0],
target: self || global,
name: 'mediaQuery',
invokeAddFunc: function(addFnSymbol: any, delegate: any) {
if (delegate && (<Task>delegate).invoke) {
return this.target[addFnSymbol]((<Task>delegate).invoke);
} else {
return this.target[addFnSymbol](delegate);
}
};
});
}
})(typeof window === 'object' && window || typeof self === 'object' && self || global);
},
invokeRemoveFunc: function(removeFnSymbol: any, delegate: any) {
if (delegate && (<Task>delegate).invoke) {
return this.target[removeFnSymbol]((<Task>delegate).invoke);
} else {
return this.target[removeFnSymbol](delegate);
}
}
};
});
});

@@ -8,18 +8,13 @@ /**

*/
((_global: any) => {
// patch Notification
patchNotification(_global);
function patchNotification(_global: any) {
const Notification = _global['Notification'];
if (!Notification || !Notification.prototype) {
return;
}
const desc = Object.getOwnPropertyDescriptor(Notification.prototype, 'onerror');
if (!desc || !desc.configurable) {
return;
}
const patchOnProperties = (Zone as any)[(Zone as any).__symbol__('patchOnProperties')];
patchOnProperties(Notification.prototype, null);
Zone.__load_patch('notification', (global: any, Zone: ZoneType, api: _ZonePrivate) => {
const Notification = _global['Notification'];
if (!Notification || !Notification.prototype) {
return;
}
})(typeof window === 'object' && window || typeof self === 'object' && self || global);
const desc = Object.getOwnPropertyDescriptor(Notification.prototype, 'onerror');
if (!desc || !desc.configurable) {
return;
}
const patchOnProperties = (Zone as any)[(Zone as any).__symbol__('patchOnProperties')];
patchOnProperties(Notification.prototype, null);
});

@@ -42,4 +42,4 @@ /**

for (const prop in WS) {
_global.WebSocket[prop] = WS[prop];
_global['WebSocket'][prop] = WS[prop];
}
}

@@ -30,3 +30,6 @@ /**

} finally {
delete tasksByHandleId[data.handleId];
if (typeof data.handleId === 'number') {
// Node returns complex objects as handleIds
delete tasksByHandleId[data.handleId];
}
}

@@ -36,3 +39,8 @@ }

data.handleId = setNative.apply(window, data.args);
tasksByHandleId[data.handleId] = task;
if (typeof data.handleId === 'number') {
// Node returns complex objects as handleIds -> no need to keep them around. Additionally,
// this throws an
// exception in older node versions and has no effect there, because of the stringified key.
tasksByHandleId[data.handleId] = task;
}
return task;

@@ -42,3 +50,6 @@ }

function clearTask(task: Task) {
delete tasksByHandleId[(<TimerOptions>task.data).handleId];
if (typeof(<TimerOptions>task.data).handleId === 'number') {
// Node returns complex objects as handleIds
delete tasksByHandleId[(<TimerOptions>task.data).handleId];
}
return clearNative((<TimerOptions>task.data).handleId);

@@ -45,0 +56,0 @@ }

@@ -12,6 +12,5 @@ /**

// look like native function
export function patchFuncToString() {
Zone.__load_patch('toString', (global: any, Zone: ZoneType, api: _ZonePrivate) => {
// patch Func.prototype.toString to let them look like native
const originalFunctionToString = Function.prototype.toString;
const g: any =
typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global;
Function.prototype.toString = function() {

@@ -23,3 +22,3 @@ if (typeof this === 'function') {

if (this === Promise) {
const nativePromise = g[zoneSymbol('Promise')];
const nativePromise = global[zoneSymbol('Promise')];
if (nativePromise) {

@@ -30,3 +29,3 @@ return originalFunctionToString.apply(nativePromise, arguments);

if (this === Error) {
const nativeError = g[zoneSymbol('Error')];
const nativeError = global[zoneSymbol('Error')];
if (nativeError) {

@@ -39,5 +38,5 @@ return originalFunctionToString.apply(nativeError, arguments);

};
}
export function patchObjectToString() {
// patch Object.prototype.toString to let them look like native
const originalObjectToString = Object.prototype.toString;

@@ -50,2 +49,2 @@ Object.prototype.toString = function() {

};
}
});

@@ -136,3 +136,3 @@ /**

// so we should use original native get to retrieve the handler
let value = originalDescGet.apply(this);
let value = originalDescGet && originalDescGet.apply(this);
if (value) {

@@ -557,13 +557,2 @@ desc.set.apply(this, [value]);

export function createNamedFn(name: string, delegate: (self: any, args: any[]) => any): Function {
try {
return (Function('f', `return function ${name}(){return f(this, arguments)}`))(delegate);
} catch (error) {
// if we fail, we must be CSP, just return delegate.
return function() {
return delegate(this, <any>arguments);
};
}
}
export function patchMethod(

@@ -574,3 +563,3 @@ target: any, name: string,

let proto = target;
while (proto && Object.getOwnPropertyNames(proto).indexOf(name) === -1) {
while (proto && !proto.hasOwnProperty(name)) {
proto = Object.getPrototypeOf(proto);

@@ -586,3 +575,6 @@ }

delegate = proto[delegateName] = proto[name];
proto[name] = createNamedFn(name, patchFn(delegate, delegateName, name));
const patchDelegate = patchFn(delegate, delegateName, name);
proto[name] = function() {
return patchDelegate(this, arguments as any);
};
attachOriginToPatched(proto[name], delegate);

@@ -589,0 +581,0 @@ }

@@ -8,4 +8,3 @@ /**

*/
(() => {
const __symbol__ = (Zone as any).__symbol__;
Zone.__load_patch('bluebird', (global: any, Zone: ZoneType, api: _ZonePrivate) => {
// TODO: @JiaLiPassion, we can automatically patch bluebird

@@ -16,3 +15,3 @@ // if global.Promise = Bluebird, but sometimes in nodejs,

// safe to just expose a method to patch Bluebird explicitly
(Zone as any)[__symbol__('bluebird')] = function patchBluebird(Bluebird: any) {
(Zone as any)[Zone.__symbol__('bluebird')] = function patchBluebird(Bluebird: any) {
Bluebird.setScheduler((fn: Function) => {

@@ -22,2 +21,2 @@ Zone.current.scheduleMicroTask('bluebird', fn);

};
})();
});

@@ -10,2 +10,4 @@ /**

import '../zone';
import '../common/promise';
import '../common/to-string';
import './events';

@@ -15,56 +17,53 @@ import './fs';

import {patchTimer} from '../common/timers';
import {patchFuncToString, patchObjectToString} from '../common/to-string';
import {findEventTask, patchMacroTask, patchMicroTask, zoneSymbol} from '../common/utils';
import {findEventTask, patchMacroTask, patchMicroTask} from '../common/utils';
const set = 'set';
const clear = 'clear';
const _global = typeof window === 'object' && window || typeof self === 'object' && self || global;
// Timers
const timers = require('timers');
patchTimer(timers, set, clear, 'Timeout');
patchTimer(timers, set, clear, 'Interval');
patchTimer(timers, set, clear, 'Immediate');
Zone.__load_patch('timers', (global: any, Zone: ZoneType, api: _ZonePrivate) => {
// Timers
let globalUseTimeoutFromTimer = false;
try {
const timers = require('timers');
let globalEqualTimersTimeout = global.setTimeout === timers.setTimeout;
if (!globalEqualTimersTimeout) {
// if global.setTimeout not equal timers.setTimeout, check
// whether global.setTimeout use timers.setTimeout or not
const originSetTimeout = timers.setTimeout;
timers.setTimeout = function() {
globalUseTimeoutFromTimer = true;
return originSetTimeout.apply(this, arguments);
};
const detectTimeout = global.setTimeout(noop, 100);
clearTimeout(detectTimeout);
timers.setTimeout = originSetTimeout;
}
patchTimer(timers, set, clear, 'Timeout');
patchTimer(timers, set, clear, 'Interval');
patchTimer(timers, set, clear, 'Immediate');
} catch (error) {
// timers module not exists, for example, when we using nativescript
// timers is not available
}
if (!globalUseTimeoutFromTimer) {
// 1. global setTimeout equals timers setTimeout
// 2. or global don't use timers setTimeout(maybe some other library patch setTimeout)
// 3. or load timers module error happens, we should patch global setTimeout
patchTimer(global, set, clear, 'Timeout');
patchTimer(global, set, clear, 'Interval');
patchTimer(global, set, clear, 'Immediate');
} else {
// global use timers setTimeout, but not equals
// this happenes when use nodejs v0.10.x, global setTimeout will
// use a lazy load version of timers setTimeout
// we should not double patch timer's setTimeout
// so we only store the __symbol__ for consistency
global[Zone.__symbol__('setTimeout')] = global.setTimeout;
global[Zone.__symbol__('setInterval')] = global.setInterval;
global[Zone.__symbol__('setImmediate')] = global.setImmediate;
}
});
const shouldPatchGlobalTimers = global.setTimeout !== timers.setTimeout;
if (shouldPatchGlobalTimers) {
patchTimer(_global, set, clear, 'Timeout');
patchTimer(_global, set, clear, 'Interval');
patchTimer(_global, set, clear, 'Immediate');
}
// patch process related methods
patchProcess();
handleUnhandledPromiseRejection();
// patch Function.prototyp.toString
patchFuncToString();
// patch Object.prototyp.toString
patchObjectToString();
// Crypto
let crypto: any;
try {
crypto = require('crypto');
} catch (err) {
}
// use the generic patchMacroTask to patch crypto
if (crypto) {
const methodNames = ['randomBytes', 'pbkdf2'];
methodNames.forEach(name => {
patchMacroTask(crypto, name, (self: any, args: any[]) => {
return {
name: 'crypto.' + name,
args: args,
callbackIndex:
(args.length > 0 && typeof args[args.length - 1] === 'function') ? args.length - 1 : -1,
target: crypto
};
});
});
}
function patchProcess() {
Zone.__load_patch('nextTick', (global: any, Zone: ZoneType, api: _ZonePrivate) => {
// patch nextTick as microTask

@@ -79,26 +78,55 @@ patchMicroTask(process, 'nextTick', (self: any, args: any[]) => {

});
}
});
// handle unhandled promise rejection
function findProcessPromiseRejectionHandler(evtName: string) {
return function(e: any) {
const eventTasks = findEventTask(process, evtName);
eventTasks.forEach(eventTask => {
// process has added unhandledrejection event listener
// trigger the event listener
if (evtName === 'unhandledRejection') {
eventTask.invoke(e.rejection, e.promise);
} else if (evtName === 'rejectionHandled') {
eventTask.invoke(e.promise);
Zone.__load_patch(
'handleUnhandledPromiseRejection', (global: any, Zone: ZoneType, api: _ZonePrivate) => {
(Zone as any)[api.symbol('unhandledPromiseRejectionHandler')] =
findProcessPromiseRejectionHandler('unhandledRejection');
(Zone as any)[api.symbol('rejectionHandledHandler')] =
findProcessPromiseRejectionHandler('rejectionHandled');
// handle unhandled promise rejection
function findProcessPromiseRejectionHandler(evtName: string) {
return function(e: any) {
const eventTasks = findEventTask(process, evtName);
eventTasks.forEach(eventTask => {
// process has added unhandledrejection event listener
// trigger the event listener
if (evtName === 'unhandledRejection') {
eventTask.invoke(e.rejection, e.promise);
} else if (evtName === 'rejectionHandled') {
eventTask.invoke(e.promise);
}
});
};
}
});
};
}
function handleUnhandledPromiseRejection() {
(Zone as any)[zoneSymbol('unhandledPromiseRejectionHandler')] =
findProcessPromiseRejectionHandler('unhandledRejection');
(Zone as any)[zoneSymbol('rejectionHandledHandler')] =
findProcessPromiseRejectionHandler('rejectionHandled');
}
// Crypto
Zone.__load_patch('crypto', (global: any, Zone: ZoneType, api: _ZonePrivate) => {
let crypto: any;
try {
crypto = require('crypto');
} catch (err) {
}
// use the generic patchMacroTask to patch crypto
if (crypto) {
const methodNames = ['randomBytes', 'pbkdf2'];
methodNames.forEach(name => {
patchMacroTask(crypto, name, (self: any, args: any[]) => {
return {
name: 'crypto.' + name,
args: args,
callbackIndex: (args.length > 0 && typeof args[args.length - 1] === 'function') ?
args.length - 1 :
-1,
target: crypto
};
});
});
}
});

@@ -16,4 +16,11 @@ /**

delay: number;
isPeriodic: boolean;
}
interface MicroTaskScheduledFunction {
func: Function;
args: any[];
target: any;
}
class Scheduler {

@@ -30,3 +37,5 @@ // Next scheduler id.

scheduleFunction(cb: Function, delay: number, args: any[] = [], id: number = -1): number {
scheduleFunction(
cb: Function, delay: number, args: any[] = [], isPeriodic: boolean = false,
id: number = -1): number {
let currentId: number = id < 0 ? this.nextId++ : id;

@@ -36,4 +45,10 @@ let endTime = this._currentTime + delay;

// Insert so that scheduler queue remains sorted by end time.
let newEntry:
ScheduledFunction = {endTime: endTime, id: currentId, func: cb, args: args, delay: delay};
let newEntry: ScheduledFunction = {
endTime: endTime,
id: currentId,
func: cb,
args: args,
delay: delay,
isPeriodic: isPeriodic
};
let i = 0;

@@ -79,2 +94,27 @@ for (; i < this._schedulerQueue.length; i++) {

}
flush(limit: number = 20): number {
const startTime = this._currentTime;
let count = 0;
while (this._schedulerQueue.length > 0) {
count++;
if (count > limit) {
throw new Error(
'flush failed after reaching the limit of ' + limit +
' tasks. Does your code use a polling timeout?');
}
// If the only remaining tasks are periodic, finish flushing.
if (!(this._schedulerQueue.filter(task => !task.isPeriodic).length)) {
break;
}
let current = this._schedulerQueue.shift();
this._currentTime = current.endTime;
let retval = current.func.apply(global, current.args);
if (!retval) {
// Uncaught exception in the current scheduled function. Stop processing the queue.
break;
}
}
return this._currentTime - startTime;
}
}

@@ -90,3 +130,3 @@

private _scheduler: Scheduler = new Scheduler();
private _microtasks: Function[] = [];
private _microtasks: MicroTaskScheduledFunction[] = [];
private _lastError: Error = null;

@@ -142,3 +182,3 @@ private _uncaughtPromiseErrors: {rejection: any}[] =

if (this.pendingPeriodicTimers.indexOf(id) !== -1) {
this._scheduler.scheduleFunction(fn, interval, args, id);
this._scheduler.scheduleFunction(fn, interval, args, true, id);
}

@@ -177,3 +217,3 @@ };

// Queue the callback and dequeue the periodic timer only on error.
this._scheduler.scheduleFunction(cb, interval, args);
this._scheduler.scheduleFunction(cb, interval, args, true);
this.pendingPeriodicTimers.push(id);

@@ -214,3 +254,3 @@ return id;

let microtask = this._microtasks.shift();
microtask();
microtask.func.apply(microtask.target, microtask.args);
}

@@ -220,2 +260,12 @@ flushErrors();

flush(): number {
FakeAsyncTestZoneSpec.assertInZone();
this.flushMicrotasks();
let elapsed = this._scheduler.flush();
if (this._lastError !== null) {
this._resetLastErrorAndThrow();
}
return elapsed;
}
// ZoneSpec implementation below.

@@ -230,3 +280,18 @@

case 'microTask':
this._microtasks.push(task.invoke);
let args = task.data && (task.data as any).args;
// should pass additional arguments to callback if have any
// currently we know process.nextTick will have such additional
// arguments
let addtionalArgs: any[];
if (args) {
let callbackIndex = (task.data as any).callbackIndex;
if (typeof args.length === 'number' && args.length > callbackIndex + 1) {
addtionalArgs = Array.prototype.slice.call(args, callbackIndex + 1);
}
}
this._microtasks.push({
func: task.invoke,
args: addtionalArgs,
target: task.data && (task.data as any).target
});
break;

@@ -233,0 +298,0 @@ case 'macroTask':

{
"name": "zone.js",
"version": "0.8.9",
"version": "0.8.10",
"description": "Zones for JavaScript",

@@ -5,0 +5,0 @@ "main": "dist/zone-node.js",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc