Buckets:
ktongue/docker_container / .vscode-server /extensions /formulahendry.code-runner-0.12.2 /node_modules /zone.js /dist /zone-node.js
| /** | |
| * @license | |
| * Copyright Google Inc. All Rights Reserved. | |
| * | |
| * Use of this source code is governed by an MIT-style license that can be | |
| * found in the LICENSE file at https://angular.io/license | |
| */ | |
| (function (global, factory) { | |
| typeof exports === 'object' && typeof module !== 'undefined' ? factory() : | |
| typeof define === 'function' && define.amd ? define(factory) : | |
| (factory()); | |
| }(this, (function () { 'use strict'; | |
| /** | |
| * @license | |
| * Copyright Google Inc. All Rights Reserved. | |
| * | |
| * Use of this source code is governed by an MIT-style license that can be | |
| * found in the LICENSE file at https://angular.io/license | |
| */ | |
| var Zone$1 = (function (global) { | |
| if (global['Zone']) { | |
| throw new Error('Zone already loaded.'); | |
| } | |
| var Zone = (function () { | |
| function Zone(parent, zoneSpec) { | |
| this._properties = null; | |
| this._parent = parent; | |
| this._name = zoneSpec ? zoneSpec.name || 'unnamed' : '<root>'; | |
| this._properties = zoneSpec && zoneSpec.properties || {}; | |
| this._zoneDelegate = | |
| new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec); | |
| } | |
| Zone.assertZonePatched = function () { | |
| if (global.Promise !== ZoneAwarePromise) { | |
| throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' + | |
| 'has been overwritten.\n' + | |
| 'Most 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(Zone, "current", { | |
| get: function () { | |
| return _currentZoneFrame.zone; | |
| }, | |
| enumerable: true, | |
| configurable: true | |
| }); | |
| Object.defineProperty(Zone, "currentTask", { | |
| get: function () { | |
| return _currentTask; | |
| }, | |
| enumerable: true, | |
| configurable: true | |
| }); | |
| Object.defineProperty(Zone.prototype, "parent", { | |
| get: function () { | |
| return this._parent; | |
| }, | |
| enumerable: true, | |
| configurable: true | |
| }); | |
| Object.defineProperty(Zone.prototype, "name", { | |
| get: function () { | |
| return this._name; | |
| }, | |
| enumerable: true, | |
| configurable: true | |
| }); | |
| Zone.prototype.get = function (key) { | |
| var zone = this.getZoneWith(key); | |
| if (zone) | |
| return zone._properties[key]; | |
| }; | |
| Zone.prototype.getZoneWith = function (key) { | |
| var current = this; | |
| while (current) { | |
| if (current._properties.hasOwnProperty(key)) { | |
| return current; | |
| } | |
| current = current._parent; | |
| } | |
| return null; | |
| }; | |
| Zone.prototype.fork = function (zoneSpec) { | |
| if (!zoneSpec) | |
| throw new Error('ZoneSpec required!'); | |
| return this._zoneDelegate.fork(this, zoneSpec); | |
| }; | |
| Zone.prototype.wrap = function (callback, source) { | |
| if (typeof callback !== 'function') { | |
| throw new Error('Expecting function got: ' + callback); | |
| } | |
| var _callback = this._zoneDelegate.intercept(this, callback, source); | |
| var zone = this; | |
| return function () { | |
| return zone.runGuarded(_callback, this, arguments, source); | |
| }; | |
| }; | |
| Zone.prototype.run = function (callback, applyThis, applyArgs, source) { | |
| if (applyThis === void 0) { applyThis = null; } | |
| if (applyArgs === void 0) { applyArgs = null; } | |
| if (source === void 0) { source = null; } | |
| _currentZoneFrame = new ZoneFrame(_currentZoneFrame, this); | |
| try { | |
| return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); | |
| } | |
| finally { | |
| _currentZoneFrame = _currentZoneFrame.parent; | |
| } | |
| }; | |
| Zone.prototype.runGuarded = function (callback, applyThis, applyArgs, source) { | |
| if (applyThis === void 0) { applyThis = null; } | |
| if (applyArgs === void 0) { applyArgs = null; } | |
| if (source === void 0) { source = null; } | |
| _currentZoneFrame = new ZoneFrame(_currentZoneFrame, this); | |
| try { | |
| try { | |
| return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); | |
| } | |
| catch (error) { | |
| if (this._zoneDelegate.handleError(this, error)) { | |
| throw error; | |
| } | |
| } | |
| } | |
| finally { | |
| _currentZoneFrame = _currentZoneFrame.parent; | |
| } | |
| }; | |
| Zone.prototype.runTask = function (task, applyThis, applyArgs) { | |
| task.runCount++; | |
| if (task.zone != this) | |
| throw new Error('A task can only be run in the zone which created it! (Creation: ' + task.zone.name + | |
| '; Execution: ' + this.name + ')'); | |
| var previousTask = _currentTask; | |
| _currentTask = task; | |
| _currentZoneFrame = new ZoneFrame(_currentZoneFrame, this); | |
| try { | |
| if (task.type == 'macroTask' && task.data && !task.data.isPeriodic) { | |
| task.cancelFn = null; | |
| } | |
| try { | |
| return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs); | |
| } | |
| catch (error) { | |
| if (this._zoneDelegate.handleError(this, error)) { | |
| throw error; | |
| } | |
| } | |
| } | |
| finally { | |
| _currentZoneFrame = _currentZoneFrame.parent; | |
| _currentTask = previousTask; | |
| } | |
| }; | |
| Zone.prototype.scheduleMicroTask = function (source, callback, data, customSchedule) { | |
| return this._zoneDelegate.scheduleTask(this, new ZoneTask('microTask', this, source, callback, data, customSchedule, null)); | |
| }; | |
| Zone.prototype.scheduleMacroTask = function (source, callback, data, customSchedule, customCancel) { | |
| return this._zoneDelegate.scheduleTask(this, new ZoneTask('macroTask', this, source, callback, data, customSchedule, customCancel)); | |
| }; | |
| Zone.prototype.scheduleEventTask = function (source, callback, data, customSchedule, customCancel) { | |
| return this._zoneDelegate.scheduleTask(this, new ZoneTask('eventTask', this, source, callback, data, customSchedule, customCancel)); | |
| }; | |
| Zone.prototype.cancelTask = function (task) { | |
| var value = this._zoneDelegate.cancelTask(this, task); | |
| task.runCount = -1; | |
| task.cancelFn = null; | |
| return value; | |
| }; | |
| return Zone; | |
| }()); | |
| Zone.__symbol__ = __symbol__; | |
| var ZoneDelegate = (function () { | |
| function ZoneDelegate(zone, parentDelegate, zoneSpec) { | |
| this._taskCounts = { microTask: 0, macroTask: 0, eventTask: 0 }; | |
| this.zone = zone; | |
| this._parentDelegate = parentDelegate; | |
| this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS); | |
| this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt); | |
| this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone); | |
| this._interceptZS = | |
| zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS); | |
| this._interceptDlgt = | |
| zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt); | |
| this._interceptCurrZone = | |
| zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone); | |
| this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS); | |
| this._invokeDlgt = | |
| zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt); | |
| this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone); | |
| this._handleErrorZS = | |
| zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS); | |
| this._handleErrorDlgt = | |
| zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt); | |
| this._handleErrorCurrZone = | |
| zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone); | |
| this._scheduleTaskZS = | |
| zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS); | |
| this._scheduleTaskDlgt = | |
| zoneSpec && (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt); | |
| this._scheduleTaskCurrZone = | |
| zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone); | |
| this._invokeTaskZS = | |
| zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS); | |
| this._invokeTaskDlgt = | |
| zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt); | |
| this._invokeTaskCurrZone = | |
| zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone); | |
| this._cancelTaskZS = | |
| zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS); | |
| this._cancelTaskDlgt = | |
| zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt); | |
| this._cancelTaskCurrZone = | |
| zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone); | |
| this._hasTaskZS = zoneSpec && (zoneSpec.onHasTask ? zoneSpec : parentDelegate._hasTaskZS); | |
| this._hasTaskDlgt = | |
| zoneSpec && (zoneSpec.onHasTask ? parentDelegate : parentDelegate._hasTaskDlgt); | |
| this._hasTaskCurrZone = zoneSpec && (zoneSpec.onHasTask ? this.zone : parentDelegate.zone); | |
| } | |
| ZoneDelegate.prototype.fork = function (targetZone, zoneSpec) { | |
| return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) : | |
| new Zone(targetZone, zoneSpec); | |
| }; | |
| ZoneDelegate.prototype.intercept = function (targetZone, callback, source) { | |
| return this._interceptZS ? | |
| this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) : | |
| callback; | |
| }; | |
| ZoneDelegate.prototype.invoke = function (targetZone, callback, applyThis, applyArgs, source) { | |
| return this._invokeZS ? | |
| this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) : | |
| callback.apply(applyThis, applyArgs); | |
| }; | |
| ZoneDelegate.prototype.handleError = function (targetZone, error) { | |
| return this._handleErrorZS ? | |
| this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) : | |
| true; | |
| }; | |
| ZoneDelegate.prototype.scheduleTask = function (targetZone, task) { | |
| try { | |
| if (this._scheduleTaskZS) { | |
| return this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task); | |
| } | |
| else if (task.scheduleFn) { | |
| task.scheduleFn(task); | |
| } | |
| else if (task.type == 'microTask') { | |
| scheduleMicroTask(task); | |
| } | |
| else { | |
| throw new Error('Task is missing scheduleFn.'); | |
| } | |
| return task; | |
| } | |
| finally { | |
| if (targetZone == this.zone) { | |
| this._updateTaskCount(task.type, 1); | |
| } | |
| } | |
| }; | |
| ZoneDelegate.prototype.invokeTask = function (targetZone, task, applyThis, applyArgs) { | |
| try { | |
| return this._invokeTaskZS ? | |
| this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) : | |
| task.callback.apply(applyThis, applyArgs); | |
| } | |
| finally { | |
| if (targetZone == this.zone && (task.type != 'eventTask') && | |
| !(task.data && task.data.isPeriodic)) { | |
| this._updateTaskCount(task.type, -1); | |
| } | |
| } | |
| }; | |
| ZoneDelegate.prototype.cancelTask = function (targetZone, task) { | |
| var value; | |
| if (this._cancelTaskZS) { | |
| value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task); | |
| } | |
| else if (!task.cancelFn) { | |
| throw new Error('Task does not support cancellation, or is already canceled.'); | |
| } | |
| else { | |
| value = task.cancelFn(task); | |
| } | |
| if (targetZone == this.zone) { | |
| // this should not be in the finally block, because exceptions assume not canceled. | |
| this._updateTaskCount(task.type, -1); | |
| } | |
| return value; | |
| }; | |
| ZoneDelegate.prototype.hasTask = function (targetZone, isEmpty) { | |
| return this._hasTaskZS && | |
| this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty); | |
| }; | |
| ZoneDelegate.prototype._updateTaskCount = function (type, count) { | |
| var counts = this._taskCounts; | |
| var prev = counts[type]; | |
| var next = counts[type] = prev + count; | |
| if (next < 0) { | |
| throw new Error('More tasks executed then were scheduled.'); | |
| } | |
| if (prev == 0 || next == 0) { | |
| var isEmpty = { | |
| microTask: counts.microTask > 0, | |
| macroTask: counts.macroTask > 0, | |
| eventTask: counts.eventTask > 0, | |
| change: type | |
| }; | |
| try { | |
| this.hasTask(this.zone, isEmpty); | |
| } | |
| finally { | |
| if (this._parentDelegate) { | |
| this._parentDelegate._updateTaskCount(type, count); | |
| } | |
| } | |
| } | |
| }; | |
| return ZoneDelegate; | |
| }()); | |
| var ZoneTask = (function () { | |
| function ZoneTask(type, zone, source, callback, options, scheduleFn, cancelFn) { | |
| this.runCount = 0; | |
| this.type = type; | |
| this.zone = zone; | |
| this.source = source; | |
| this.data = options; | |
| this.scheduleFn = scheduleFn; | |
| this.cancelFn = cancelFn; | |
| this.callback = callback; | |
| var self = this; | |
| this.invoke = function () { | |
| _numberOfNestedTaskFrames++; | |
| try { | |
| return zone.runTask(self, this, arguments); | |
| } | |
| finally { | |
| if (_numberOfNestedTaskFrames == 1) { | |
| drainMicroTaskQueue(); | |
| } | |
| _numberOfNestedTaskFrames--; | |
| } | |
| }; | |
| } | |
| ZoneTask.prototype.toString = function () { | |
| if (this.data && typeof this.data.handleId !== 'undefined') { | |
| return this.data.handleId; | |
| } | |
| else { | |
| return Object.prototype.toString.call(this); | |
| } | |
| }; | |
| // add toJSON method to prevent cyclic error when | |
| // call JSON.stringify(zoneTask) | |
| ZoneTask.prototype.toJSON = function () { | |
| return { | |
| type: this.type, | |
| source: this.source, | |
| data: this.data, | |
| zone: this.zone.name, | |
| invoke: this.invoke, | |
| scheduleFn: this.scheduleFn, | |
| cancelFn: this.cancelFn, | |
| runCount: this.runCount, | |
| callback: this.callback | |
| }; | |
| }; | |
| return ZoneTask; | |
| }()); | |
| var ZoneFrame = (function () { | |
| function ZoneFrame(parent, zone) { | |
| this.parent = parent; | |
| this.zone = zone; | |
| } | |
| return ZoneFrame; | |
| }()); | |
| function __symbol__(name) { | |
| return '__zone_symbol__' + name; | |
| } | |
| var symbolSetTimeout = __symbol__('setTimeout'); | |
| var symbolPromise = __symbol__('Promise'); | |
| var symbolThen = __symbol__('then'); | |
| var _currentZoneFrame = new ZoneFrame(null, new Zone(null, null)); | |
| var _currentTask = null; | |
| var _microTaskQueue = []; | |
| var _isDrainingMicrotaskQueue = false; | |
| var _uncaughtPromiseErrors = []; | |
| var _numberOfNestedTaskFrames = 0; | |
| function scheduleQueueDrain() { | |
| // if we are not running in any task, and there has not been anything scheduled | |
| // we must bootstrap the initial task creation by manually scheduling the drain | |
| if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) { | |
| // We are not running in Task, so we need to kickstart the microtask queue. | |
| if (global[symbolPromise]) { | |
| global[symbolPromise].resolve(0)[symbolThen](drainMicroTaskQueue); | |
| } | |
| else { | |
| global[symbolSetTimeout](drainMicroTaskQueue, 0); | |
| } | |
| } | |
| } | |
| function scheduleMicroTask(task) { | |
| scheduleQueueDrain(); | |
| _microTaskQueue.push(task); | |
| } | |
| function consoleError(e) { | |
| var rejection = e && e.rejection; | |
| if (rejection) { | |
| console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined); | |
| } | |
| console.error(e); | |
| } | |
| function drainMicroTaskQueue() { | |
| if (!_isDrainingMicrotaskQueue) { | |
| _isDrainingMicrotaskQueue = true; | |
| while (_microTaskQueue.length) { | |
| var queue = _microTaskQueue; | |
| _microTaskQueue = []; | |
| for (var i = 0; i < queue.length; i++) { | |
| var task = queue[i]; | |
| try { | |
| task.zone.runTask(task, null, null); | |
| } | |
| catch (e) { | |
| consoleError(e); | |
| } | |
| } | |
| } | |
| while (_uncaughtPromiseErrors.length) { | |
| var _loop_1 = function () { | |
| var uncaughtPromiseError = _uncaughtPromiseErrors.shift(); | |
| try { | |
| uncaughtPromiseError.zone.runGuarded(function () { | |
| throw uncaughtPromiseError; | |
| }); | |
| } | |
| catch (e) { | |
| consoleError(e); | |
| } | |
| }; | |
| while (_uncaughtPromiseErrors.length) { | |
| _loop_1(); | |
| } | |
| } | |
| _isDrainingMicrotaskQueue = false; | |
| } | |
| } | |
| function isThenable(value) { | |
| return value && value.then; | |
| } | |
| function forwardResolution(value) { | |
| return value; | |
| } | |
| function forwardRejection(rejection) { | |
| return ZoneAwarePromise.reject(rejection); | |
| } | |
| var symbolState = __symbol__('state'); | |
| var symbolValue = __symbol__('value'); | |
| var source = 'Promise.then'; | |
| var UNRESOLVED = null; | |
| var RESOLVED = true; | |
| var REJECTED = false; | |
| var REJECTED_NO_CATCH = 0; | |
| function makeResolver(promise, state) { | |
| return function (v) { | |
| resolvePromise(promise, state, v); | |
| // Do not return value or you will break the Promise spec. | |
| }; | |
| } | |
| function resolvePromise(promise, state, value) { | |
| if (promise[symbolState] === UNRESOLVED) { | |
| if (value instanceof ZoneAwarePromise && value.hasOwnProperty(symbolState) && | |
| value.hasOwnProperty(symbolValue) && value[symbolState] !== UNRESOLVED) { | |
| clearRejectedNoCatch(value); | |
| resolvePromise(promise, value[symbolState], value[symbolValue]); | |
| } | |
| else if (isThenable(value)) { | |
| value.then(makeResolver(promise, state), makeResolver(promise, false)); | |
| } | |
| else { | |
| promise[symbolState] = state; | |
| var queue = promise[symbolValue]; | |
| promise[symbolValue] = value; | |
| for (var i = 0; i < queue.length;) { | |
| scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]); | |
| } | |
| if (queue.length == 0 && state == REJECTED) { | |
| promise[symbolState] = REJECTED_NO_CATCH; | |
| try { | |
| throw new Error('Uncaught (in promise): ' + value + | |
| (value && value.stack ? '\n' + value.stack : '')); | |
| } | |
| catch (e) { | |
| var error_1 = e; | |
| error_1.rejection = value; | |
| error_1.promise = promise; | |
| error_1.zone = Zone.current; | |
| error_1.task = Zone.currentTask; | |
| _uncaughtPromiseErrors.push(error_1); | |
| scheduleQueueDrain(); | |
| } | |
| } | |
| } | |
| } | |
| // Resolving an already resolved promise is a noop. | |
| return promise; | |
| } | |
| function clearRejectedNoCatch(promise) { | |
| if (promise[symbolState] === REJECTED_NO_CATCH) { | |
| promise[symbolState] = REJECTED; | |
| for (var i = 0; i < _uncaughtPromiseErrors.length; i++) { | |
| if (promise === _uncaughtPromiseErrors[i].promise) { | |
| _uncaughtPromiseErrors.splice(i, 1); | |
| break; | |
| } | |
| } | |
| } | |
| } | |
| function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) { | |
| clearRejectedNoCatch(promise); | |
| var delegate = promise[symbolState] ? onFulfilled || forwardResolution : onRejected || forwardRejection; | |
| zone.scheduleMicroTask(source, function () { | |
| try { | |
| resolvePromise(chainPromise, true, zone.run(delegate, null, [promise[symbolValue]])); | |
| } | |
| catch (error) { | |
| resolvePromise(chainPromise, false, error); | |
| } | |
| }); | |
| } | |
| var ZoneAwarePromise = (function () { | |
| function ZoneAwarePromise(executor) { | |
| var promise = this; | |
| if (!(promise instanceof ZoneAwarePromise)) { | |
| throw new Error('Must be an instanceof Promise.'); | |
| } | |
| promise[symbolState] = UNRESOLVED; | |
| promise[symbolValue] = []; // queue; | |
| try { | |
| executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED)); | |
| } | |
| catch (e) { | |
| resolvePromise(promise, false, e); | |
| } | |
| } | |
| ZoneAwarePromise.toString = function () { | |
| return 'function ZoneAwarePromise() { [native code] }'; | |
| }; | |
| ZoneAwarePromise.resolve = function (value) { | |
| return resolvePromise(new this(null), RESOLVED, value); | |
| }; | |
| ZoneAwarePromise.reject = function (error) { | |
| return resolvePromise(new this(null), REJECTED, error); | |
| }; | |
| ZoneAwarePromise.race = function (values) { | |
| var resolve; | |
| var reject; | |
| var promise = new this(function (res, rej) { | |
| _a = [res, rej], resolve = _a[0], reject = _a[1]; | |
| var _a; | |
| }); | |
| function onResolve(value) { | |
| promise && (promise = null || resolve(value)); | |
| } | |
| function onReject(error) { | |
| promise && (promise = null || reject(error)); | |
| } | |
| for (var _i = 0, values_1 = values; _i < values_1.length; _i++) { | |
| var value = values_1[_i]; | |
| if (!isThenable(value)) { | |
| value = this.resolve(value); | |
| } | |
| value.then(onResolve, onReject); | |
| } | |
| return promise; | |
| }; | |
| ZoneAwarePromise.all = function (values) { | |
| var resolve; | |
| var reject; | |
| var promise = new this(function (res, rej) { | |
| resolve = res; | |
| reject = rej; | |
| }); | |
| var count = 0; | |
| var resolvedValues = []; | |
| for (var _i = 0, values_2 = values; _i < values_2.length; _i++) { | |
| var value = values_2[_i]; | |
| if (!isThenable(value)) { | |
| value = this.resolve(value); | |
| } | |
| value.then((function (index) { return function (value) { | |
| resolvedValues[index] = value; | |
| count--; | |
| if (!count) { | |
| resolve(resolvedValues); | |
| } | |
| }; })(count), reject); | |
| count++; | |
| } | |
| if (!count) | |
| resolve(resolvedValues); | |
| return promise; | |
| }; | |
| ZoneAwarePromise.prototype.then = function (onFulfilled, onRejected) { | |
| var chainPromise = new this.constructor(null); | |
| var zone = Zone.current; | |
| if (this[symbolState] == UNRESOLVED) { | |
| this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected); | |
| } | |
| else { | |
| scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected); | |
| } | |
| return chainPromise; | |
| }; | |
| ZoneAwarePromise.prototype.catch = function (onRejected) { | |
| return this.then(null, onRejected); | |
| }; | |
| return ZoneAwarePromise; | |
| }()); | |
| // Protect against aggressive optimizers dropping seemingly unused properties. | |
| // E.g. Closure Compiler in advanced mode. | |
| ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve; | |
| ZoneAwarePromise['reject'] = ZoneAwarePromise.reject; | |
| ZoneAwarePromise['race'] = ZoneAwarePromise.race; | |
| ZoneAwarePromise['all'] = ZoneAwarePromise.all; | |
| var NativePromise = global[__symbol__('Promise')] = global['Promise']; | |
| global['Promise'] = ZoneAwarePromise; | |
| function patchThen(NativePromise) { | |
| var NativePromiseProtototype = NativePromise.prototype; | |
| var NativePromiseThen = NativePromiseProtototype[__symbol__('then')] = | |
| NativePromiseProtototype.then; | |
| NativePromiseProtototype.then = function (onResolve, onReject) { | |
| var nativePromise = this; | |
| return new ZoneAwarePromise(function (resolve, reject) { | |
| NativePromiseThen.call(nativePromise, resolve, reject); | |
| }) | |
| .then(onResolve, onReject); | |
| }; | |
| } | |
| if (NativePromise) { | |
| patchThen(NativePromise); | |
| if (typeof global['fetch'] !== 'undefined') { | |
| var fetchPromise = void 0; | |
| try { | |
| // In MS Edge this throws | |
| fetchPromise = global['fetch'](); | |
| } | |
| catch (e) { | |
| // In Chrome this throws instead. | |
| fetchPromise = global['fetch']('about:blank'); | |
| } | |
| // ignore output to prevent error; | |
| fetchPromise.then(function () { return null; }, function () { return null; }); | |
| if (fetchPromise.constructor != NativePromise && | |
| fetchPromise.constructor != ZoneAwarePromise) { | |
| patchThen(fetchPromise.constructor); | |
| } | |
| } | |
| } | |
| // This is not part of public API, but it is usefull for tests, so we expose it. | |
| Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors; | |
| /* | |
| * This code patches Error so that: | |
| * - It ignores un-needed stack frames. | |
| * - It Shows the associated Zone for reach frame. | |
| */ | |
| var FrameType; | |
| (function (FrameType) { | |
| /// Skip this frame when printing out stack | |
| FrameType[FrameType["blackList"] = 0] = "blackList"; | |
| /// This frame marks zone transition | |
| FrameType[FrameType["transition"] = 1] = "transition"; | |
| })(FrameType || (FrameType = {})); | |
| var NativeError = global[__symbol__('Error')] = global.Error; | |
| // Store the frames which should be removed from the stack frames | |
| var blackListedStackFrames = {}; | |
| // We must find the frame where Error was created, otherwise we assume we don't understand stack | |
| var zoneAwareFrame; | |
| global.Error = ZoneAwareError; | |
| // How should the stack frames be parsed. | |
| var frameParserStrategy = null; | |
| var stackRewrite = 'stackRewrite'; | |
| // fix #595, create property descriptor | |
| // for error properties | |
| var createProperty = function (props, key) { | |
| // if property is already defined, skip it. | |
| if (props[key]) { | |
| return; | |
| } | |
| // define a local property | |
| // in case error property is not settable | |
| var name = __symbol__(key); | |
| props[key] = { | |
| configurable: true, | |
| enumerable: true, | |
| get: function () { | |
| // if local property has no value | |
| // use internal error's property value | |
| if (!this[name]) { | |
| var error_2 = this[__symbol__('error')]; | |
| if (error_2) { | |
| this[name] = error_2[key]; | |
| } | |
| } | |
| return this[name]; | |
| }, | |
| set: function (value) { | |
| // setter will set value to local property value | |
| this[name] = value; | |
| } | |
| }; | |
| }; | |
| // fix #595, create property descriptor | |
| // for error method properties | |
| var createMethodProperty = function (props, key) { | |
| if (props[key]) { | |
| return; | |
| } | |
| props[key] = { | |
| configurable: true, | |
| enumerable: true, | |
| writable: true, | |
| value: function () { | |
| var error = this[__symbol__('error')]; | |
| var errorMethod = (error && error[key]) || this[key]; | |
| if (errorMethod) { | |
| return errorMethod.apply(error, arguments); | |
| } | |
| } | |
| }; | |
| }; | |
| var createErrorProperties = function () { | |
| var props = Object.create(null); | |
| var error = new NativeError(); | |
| var keys = Object.getOwnPropertyNames(error); | |
| for (var i = 0; i < keys.length; i++) { | |
| var key = keys[i]; | |
| // Avoid bugs when hasOwnProperty is shadowed | |
| if (Object.prototype.hasOwnProperty.call(error, key)) { | |
| createProperty(props, key); | |
| } | |
| } | |
| var proto = NativeError.prototype; | |
| if (proto) { | |
| var pKeys = Object.getOwnPropertyNames(proto); | |
| for (var i = 0; i < pKeys.length; i++) { | |
| var key = pKeys[i]; | |
| // skip constructor | |
| if (key !== 'constructor' && key !== 'toString' && key !== 'toSource') { | |
| createProperty(props, key); | |
| } | |
| } | |
| } | |
| // some other properties are not | |
| // in NativeError | |
| createProperty(props, 'originalStack'); | |
| createProperty(props, 'zoneAwareStack'); | |
| // define toString, toSource as method property | |
| createMethodProperty(props, 'toString'); | |
| createMethodProperty(props, 'toSource'); | |
| return props; | |
| }; | |
| var errorProperties = createErrorProperties(); | |
| // for derived Error class which extends ZoneAwareError | |
| // we should not override the derived class's property | |
| // so we create a new props object only copy the properties | |
| // from errorProperties which not exist in derived Error's prototype | |
| var getErrorPropertiesForPrototype = function (prototype) { | |
| // if the prototype is ZoneAwareError.prototype | |
| // we just return the prebuilt errorProperties. | |
| if (prototype === ZoneAwareError.prototype) { | |
| return errorProperties; | |
| } | |
| var newProps = Object.create(null); | |
| var cKeys = Object.getOwnPropertyNames(errorProperties); | |
| var keys = Object.getOwnPropertyNames(prototype); | |
| cKeys.forEach(function (cKey) { | |
| if (keys.filter(function (key) { | |
| return key === cKey; | |
| }) | |
| .length === 0) { | |
| newProps[cKey] = errorProperties[cKey]; | |
| } | |
| }); | |
| return newProps; | |
| }; | |
| /** | |
| * This is ZoneAwareError which processes the stack frame and cleans up extra frames as well as | |
| * adds zone information to it. | |
| */ | |
| function ZoneAwareError() { | |
| // make sure we have a valid this | |
| // if this is undefined(call Error without new) or this is global | |
| // or this is some other objects, we should force to create a | |
| // valid ZoneAwareError by call Object.create() | |
| if (!(this instanceof ZoneAwareError)) { | |
| return ZoneAwareError.apply(Object.create(ZoneAwareError.prototype), arguments); | |
| } | |
| // Create an Error. | |
| var error = NativeError.apply(this, arguments); | |
| this[__symbol__('error')] = error; | |
| // Save original stack trace | |
| error.originalStack = error.stack; | |
| // Process the stack trace and rewrite the frames. | |
| if (ZoneAwareError[stackRewrite] && error.originalStack) { | |
| var frames_1 = error.originalStack.split('\n'); | |
| var zoneFrame = _currentZoneFrame; | |
| var i = 0; | |
| // Find the first frame | |
| while (frames_1[i] !== zoneAwareFrame && i < frames_1.length) { | |
| i++; | |
| } | |
| for (; i < frames_1.length && zoneFrame; i++) { | |
| var frame = frames_1[i]; | |
| if (frame.trim()) { | |
| var frameType = blackListedStackFrames.hasOwnProperty(frame) && blackListedStackFrames[frame]; | |
| if (frameType === FrameType.blackList) { | |
| frames_1.splice(i, 1); | |
| i--; | |
| } | |
| else if (frameType === FrameType.transition) { | |
| if (zoneFrame.parent) { | |
| // This is the special frame where zone changed. Print and process it accordingly | |
| frames_1[i] += " [" + zoneFrame.parent.zone.name + " => " + zoneFrame.zone.name + "]"; | |
| zoneFrame = zoneFrame.parent; | |
| } | |
| else { | |
| zoneFrame = null; | |
| } | |
| } | |
| else { | |
| frames_1[i] += " [" + zoneFrame.zone.name + "]"; | |
| } | |
| } | |
| } | |
| error.stack = error.zoneAwareStack = frames_1.join('\n'); | |
| } | |
| // use defineProperties here instead of copy property value | |
| // because of issue #595 which will break angular2. | |
| Object.defineProperties(this, getErrorPropertiesForPrototype(Object.getPrototypeOf(this))); | |
| return this; | |
| } | |
| // Copy the prototype so that instanceof operator works as expected | |
| ZoneAwareError.prototype = NativeError.prototype; | |
| ZoneAwareError[Zone.__symbol__('blacklistedStackFrames')] = blackListedStackFrames; | |
| ZoneAwareError[stackRewrite] = false; | |
| if (NativeError.hasOwnProperty('stackTraceLimit')) { | |
| // Extend default stack limit as we will be removing few frames. | |
| NativeError.stackTraceLimit = Math.max(NativeError.stackTraceLimit, 15); | |
| // make sure that ZoneAwareError has the same property which forwards to NativeError. | |
| Object.defineProperty(ZoneAwareError, 'stackTraceLimit', { | |
| get: function () { | |
| return NativeError.stackTraceLimit; | |
| }, | |
| set: function (value) { | |
| return NativeError.stackTraceLimit = value; | |
| } | |
| }); | |
| } | |
| if (NativeError.hasOwnProperty('captureStackTrace')) { | |
| Object.defineProperty(ZoneAwareError, 'captureStackTrace', { | |
| // add named function here because we need to remove this | |
| // stack frame when prepareStackTrace below | |
| value: function zoneCaptureStackTrace(targetObject, constructorOpt) { | |
| NativeError.captureStackTrace(targetObject, constructorOpt); | |
| } | |
| }); | |
| } | |
| Object.defineProperty(ZoneAwareError, 'prepareStackTrace', { | |
| get: function () { | |
| return NativeError.prepareStackTrace; | |
| }, | |
| set: function (value) { | |
| if (!value || typeof value !== 'function') { | |
| return NativeError.prepareStackTrace = value; | |
| } | |
| return NativeError.prepareStackTrace = function (error, structuredStackTrace) { | |
| // remove additional stack information from ZoneAwareError.captureStackTrace | |
| if (structuredStackTrace) { | |
| for (var i = 0; i < structuredStackTrace.length; i++) { | |
| var st = structuredStackTrace[i]; | |
| // remove the first function which name is zoneCaptureStackTrace | |
| if (st.getFunctionName() === 'zoneCaptureStackTrace') { | |
| structuredStackTrace.splice(i, 1); | |
| break; | |
| } | |
| } | |
| } | |
| return value.apply(this, [error, structuredStackTrace]); | |
| }; | |
| } | |
| }); | |
| // Now we need to populet the `blacklistedStackFrames` as well as find the | |
| // run/runGuraded/runTask frames. This is done by creating a detect zone and then threading | |
| // the execution through all of the above methods so that we can look at the stack trace and | |
| // find the frames of interest. | |
| var detectZone = Zone.current.fork({ | |
| name: 'detect', | |
| onInvoke: function (parentZoneDelegate, currentZone, targetZone, delegate, applyThis, applyArgs, source) { | |
| // Here only so that it will show up in the stack frame so that it can be black listed. | |
| return parentZoneDelegate.invoke(targetZone, delegate, applyThis, applyArgs, source); | |
| }, | |
| onHandleError: function (parentZD, current, target, error) { | |
| if (error.originalStack && Error === ZoneAwareError) { | |
| var frames_2 = error.originalStack.split(/\n/); | |
| var runFrame = false, runGuardedFrame = false, runTaskFrame = false; | |
| while (frames_2.length) { | |
| var frame = frames_2.shift(); | |
| // On safari it is possible to have stack frame with no line number. | |
| // This check makes sure that we don't filter frames on name only (must have | |
| // linenumber) | |
| if (/:\d+:\d+/.test(frame)) { | |
| // Get rid of the path so that we don't accidintely find function name in path. | |
| // In chrome the seperator is `(` and `@` in FF and safari | |
| // Chrome: at Zone.run (zone.js:100) | |
| // Chrome: at Zone.run (http://localhost:9876/base/build/lib/zone.js:100:24) | |
| // FireFox: Zone.prototype.run@http://localhost:9876/base/build/lib/zone.js:101:24 | |
| // Safari: run@http://localhost:9876/base/build/lib/zone.js:101:24 | |
| var fnName = frame.split('(')[0].split('@')[0]; | |
| var frameType = FrameType.transition; | |
| if (fnName.indexOf('ZoneAwareError') !== -1) { | |
| zoneAwareFrame = frame; | |
| } | |
| if (fnName.indexOf('runGuarded') !== -1) { | |
| runGuardedFrame = true; | |
| } | |
| else if (fnName.indexOf('runTask') !== -1) { | |
| runTaskFrame = true; | |
| } | |
| else if (fnName.indexOf('run') !== -1) { | |
| runFrame = true; | |
| } | |
| else { | |
| frameType = FrameType.blackList; | |
| } | |
| blackListedStackFrames[frame] = frameType; | |
| // Once we find all of the frames we can stop looking. | |
| if (runFrame && runGuardedFrame && runTaskFrame) { | |
| ZoneAwareError[stackRewrite] = true; | |
| break; | |
| } | |
| } | |
| } | |
| } | |
| return false; | |
| } | |
| }); | |
| // carefully constructor a stack frame which contains all of the frames of interest which | |
| // need to be detected and blacklisted. | |
| var detectRunFn = function () { | |
| detectZone.run(function () { | |
| detectZone.runGuarded(function () { | |
| throw new Error('blacklistStackFrames'); | |
| }); | |
| }); | |
| }; | |
| // Cause the error to extract the stack frames. | |
| detectZone.runTask(detectZone.scheduleMacroTask('detect', detectRunFn, null, function () { return null; }, null)); | |
| return global['Zone'] = Zone; | |
| })(typeof window === 'object' && window || typeof self === 'object' && self || global); | |
| /** | |
| * @license | |
| * Copyright Google Inc. All Rights Reserved. | |
| * | |
| * Use of this source code is governed by an MIT-style license that can be | |
| * found in the LICENSE file at https://angular.io/license | |
| */ | |
| /** | |
| * Suppress closure compiler errors about unknown 'Zone' variable | |
| * @fileoverview | |
| * @suppress {undefinedVars} | |
| */ | |
| var zoneSymbol = function (n) { return "__zone_symbol__" + n; }; | |
| var _global$1 = typeof window === 'object' && window || typeof self === 'object' && self || global; | |
| function bindArguments(args, source) { | |
| for (var i = args.length - 1; i >= 0; i--) { | |
| if (typeof args[i] === 'function') { | |
| args[i] = Zone.current.wrap(args[i], source + '_' + i); | |
| } | |
| } | |
| return args; | |
| } | |
| var isNode = (!('nw' in _global$1) && typeof process !== 'undefined' && | |
| {}.toString.call(process) === '[object process]'); | |
| var EVENT_TASKS = zoneSymbol('eventTasks'); | |
| // For EventTarget | |
| var ADD_EVENT_LISTENER = 'addEventListener'; | |
| var REMOVE_EVENT_LISTENER = 'removeEventListener'; | |
| function findExistingRegisteredTask(target, handler, name, capture, remove) { | |
| var eventTasks = target[EVENT_TASKS]; | |
| if (eventTasks) { | |
| for (var i = 0; i < eventTasks.length; i++) { | |
| var eventTask = eventTasks[i]; | |
| var data = eventTask.data; | |
| var listener = data.handler; | |
| if ((data.handler === handler || listener.listener === handler) && | |
| data.useCapturing === capture && data.eventName === name) { | |
| if (remove) { | |
| eventTasks.splice(i, 1); | |
| } | |
| return eventTask; | |
| } | |
| } | |
| } | |
| return null; | |
| } | |
| function findAllExistingRegisteredTasks(target, name, capture, remove) { | |
| var eventTasks = target[EVENT_TASKS]; | |
| if (eventTasks) { | |
| var result = []; | |
| for (var i = eventTasks.length - 1; i >= 0; i--) { | |
| var eventTask = eventTasks[i]; | |
| var data = eventTask.data; | |
| if (data.eventName === name && data.useCapturing === capture) { | |
| result.push(eventTask); | |
| if (remove) { | |
| eventTasks.splice(i, 1); | |
| } | |
| } | |
| } | |
| return result; | |
| } | |
| return null; | |
| } | |
| function attachRegisteredEvent(target, eventTask, isPrepend) { | |
| var eventTasks = target[EVENT_TASKS]; | |
| if (!eventTasks) { | |
| eventTasks = target[EVENT_TASKS] = []; | |
| } | |
| if (isPrepend) { | |
| eventTasks.unshift(eventTask); | |
| } | |
| else { | |
| eventTasks.push(eventTask); | |
| } | |
| } | |
| var defaultListenerMetaCreator = function (self, args) { | |
| return { | |
| useCapturing: args[2], | |
| eventName: args[0], | |
| handler: args[1], | |
| target: self || _global$1, | |
| name: args[0], | |
| invokeAddFunc: function (addFnSymbol, delegate) { | |
| if (delegate && delegate.invoke) { | |
| return this.target[addFnSymbol](this.eventName, delegate.invoke, this.useCapturing); | |
| } | |
| else { | |
| return this.target[addFnSymbol](this.eventName, delegate, this.useCapturing); | |
| } | |
| }, | |
| invokeRemoveFunc: function (removeFnSymbol, delegate) { | |
| if (delegate && delegate.invoke) { | |
| return this.target[removeFnSymbol](this.eventName, delegate.invoke, this.useCapturing); | |
| } | |
| else { | |
| return this.target[removeFnSymbol](this.eventName, delegate, this.useCapturing); | |
| } | |
| } | |
| }; | |
| }; | |
| function makeZoneAwareAddListener(addFnName, removeFnName, useCapturingParam, allowDuplicates, isPrepend, metaCreator) { | |
| if (useCapturingParam === void 0) { useCapturingParam = true; } | |
| if (allowDuplicates === void 0) { allowDuplicates = false; } | |
| if (isPrepend === void 0) { isPrepend = false; } | |
| if (metaCreator === void 0) { metaCreator = defaultListenerMetaCreator; } | |
| var addFnSymbol = zoneSymbol(addFnName); | |
| var removeFnSymbol = zoneSymbol(removeFnName); | |
| var defaultUseCapturing = useCapturingParam ? false : undefined; | |
| function scheduleEventListener(eventTask) { | |
| var meta = eventTask.data; | |
| attachRegisteredEvent(meta.target, eventTask, isPrepend); | |
| return meta.invokeAddFunc(addFnSymbol, eventTask); | |
| } | |
| function cancelEventListener(eventTask) { | |
| var meta = eventTask.data; | |
| findExistingRegisteredTask(meta.target, eventTask.invoke, meta.eventName, meta.useCapturing, true); | |
| return meta.invokeRemoveFunc(removeFnSymbol, eventTask); | |
| } | |
| return function zoneAwareAddListener(self, args) { | |
| var data = metaCreator(self, args); | |
| data.useCapturing = data.useCapturing || defaultUseCapturing; | |
| // - Inside a Web Worker, `this` is undefined, the context is `global` | |
| // - When `addEventListener` is called on the global context in strict mode, `this` is undefined | |
| // see https://github.com/angular/zone.js/issues/190 | |
| var delegate = null; | |
| if (typeof data.handler == 'function') { | |
| delegate = data.handler; | |
| } | |
| else if (data.handler && data.handler.handleEvent) { | |
| delegate = function (event) { return data.handler.handleEvent(event); }; | |
| } | |
| var validZoneHandler = false; | |
| try { | |
| // In cross site contexts (such as WebDriver frameworks like Selenium), | |
| // accessing the handler object here will cause an exception to be thrown which | |
| // will fail tests prematurely. | |
| validZoneHandler = data.handler && data.handler.toString() === '[object FunctionWrapper]'; | |
| } | |
| catch (e) { | |
| // Returning nothing here is fine, because objects in a cross-site context are unusable | |
| return; | |
| } | |
| // Ignore special listeners of IE11 & Edge dev tools, see | |
| // https://github.com/angular/zone.js/issues/150 | |
| if (!delegate || validZoneHandler) { | |
| return data.invokeAddFunc(addFnSymbol, data.handler); | |
| } | |
| if (!allowDuplicates) { | |
| var eventTask = findExistingRegisteredTask(data.target, data.handler, data.eventName, data.useCapturing, false); | |
| if (eventTask) { | |
| // we already registered, so this will have noop. | |
| return data.invokeAddFunc(addFnSymbol, eventTask); | |
| } | |
| } | |
| var zone = Zone.current; | |
| var source = data.target.constructor['name'] + '.' + addFnName + ':' + data.eventName; | |
| zone.scheduleEventTask(source, delegate, data, scheduleEventListener, cancelEventListener); | |
| }; | |
| } | |
| function makeZoneAwareRemoveListener(fnName, useCapturingParam, metaCreator) { | |
| if (useCapturingParam === void 0) { useCapturingParam = true; } | |
| if (metaCreator === void 0) { metaCreator = defaultListenerMetaCreator; } | |
| var symbol = zoneSymbol(fnName); | |
| var defaultUseCapturing = useCapturingParam ? false : undefined; | |
| return function zoneAwareRemoveListener(self, args) { | |
| var data = metaCreator(self, args); | |
| data.useCapturing = data.useCapturing || defaultUseCapturing; | |
| // - Inside a Web Worker, `this` is undefined, the context is `global` | |
| // - When `addEventListener` is called on the global context in strict mode, `this` is undefined | |
| // see https://github.com/angular/zone.js/issues/190 | |
| var eventTask = findExistingRegisteredTask(data.target, data.handler, data.eventName, data.useCapturing, true); | |
| if (eventTask) { | |
| eventTask.zone.cancelTask(eventTask); | |
| } | |
| else { | |
| data.invokeRemoveFunc(symbol, data.handler); | |
| } | |
| }; | |
| } | |
| function makeZoneAwareRemoveAllListeners(fnName, useCapturingParam) { | |
| if (useCapturingParam === void 0) { useCapturingParam = true; } | |
| var symbol = zoneSymbol(fnName); | |
| var defaultUseCapturing = useCapturingParam ? false : undefined; | |
| return function zoneAwareRemoveAllListener(self, args) { | |
| var target = self || _global$1; | |
| if (args.length === 0) { | |
| // remove all listeners without eventName | |
| target[EVENT_TASKS] = []; | |
| // we don't cancel Task either, because call native eventEmitter.removeAllListeners will | |
| // will do remove listener(cancelTask) for us | |
| target[symbol](); | |
| return; | |
| } | |
| var eventName = args[0]; | |
| var useCapturing = args[1] || defaultUseCapturing; | |
| // call this function just remove the related eventTask from target[EVENT_TASKS] | |
| findAllExistingRegisteredTasks(target, eventName, useCapturing, true); | |
| // we don't need useCapturing here because useCapturing is just for DOM, and | |
| // removeAllListeners should only be called by node eventEmitter | |
| // and we don't cancel Task either, because call native eventEmitter.removeAllListeners will | |
| // will do remove listener(cancelTask) for us | |
| target[symbol](eventName); | |
| }; | |
| } | |
| function makeZoneAwareListeners(fnName) { | |
| var symbol = zoneSymbol(fnName); | |
| return function zoneAwareEventListeners(self, args) { | |
| var eventName = args[0]; | |
| var target = self || _global$1; | |
| if (!target[EVENT_TASKS]) { | |
| return []; | |
| } | |
| return target[EVENT_TASKS] | |
| .filter(function (task) { return task.data.eventName === eventName; }) | |
| .map(function (task) { return task.data.handler; }); | |
| }; | |
| } | |
| var zoneAwareAddEventListener = makeZoneAwareAddListener(ADD_EVENT_LISTENER, REMOVE_EVENT_LISTENER); | |
| var zoneAwareRemoveEventListener = makeZoneAwareRemoveListener(REMOVE_EVENT_LISTENER); | |
| var originalInstanceKey = zoneSymbol('originalInstance'); | |
| // wrap some native API on `window` | |
| function createNamedFn(name, delegate) { | |
| try { | |
| return (Function('f', "return function " + name + "(){return f(this, arguments)}"))(delegate); | |
| } | |
| catch (e) { | |
| // if we fail, we must be CSP, just return delegate. | |
| return function () { | |
| return delegate(this, arguments); | |
| }; | |
| } | |
| } | |
| function patchMethod(target, name, patchFn) { | |
| var proto = target; | |
| while (proto && Object.getOwnPropertyNames(proto).indexOf(name) === -1) { | |
| proto = Object.getPrototypeOf(proto); | |
| } | |
| if (!proto && target[name]) { | |
| // somehow we did not find it, but we can see it. This happens on IE for Window properties. | |
| proto = target; | |
| } | |
| var delegateName = zoneSymbol(name); | |
| var delegate; | |
| if (proto && !(delegate = proto[delegateName])) { | |
| delegate = proto[delegateName] = proto[name]; | |
| proto[name] = createNamedFn(name, patchFn(delegate, delegateName, name)); | |
| } | |
| return delegate; | |
| } | |
| // TODO: support cancel task later if necessary | |
| function patchMacroTask(obj, funcName, metaCreator) { | |
| var setNative = null; | |
| function scheduleTask(task) { | |
| var data = task.data; | |
| data.args[data.callbackIndex] = function () { | |
| task.invoke.apply(this, arguments); | |
| }; | |
| setNative.apply(data.target, data.args); | |
| return task; | |
| } | |
| setNative = patchMethod(obj, funcName, function (delegate) { return function (self, args) { | |
| var meta = metaCreator(self, args); | |
| if (meta.callbackIndex >= 0 && typeof args[meta.callbackIndex] === 'function') { | |
| var task = Zone.current.scheduleMacroTask(meta.name, args[meta.callbackIndex], meta, scheduleTask, null); | |
| return task; | |
| } | |
| else { | |
| // cause an error by calling it directly. | |
| return delegate.apply(self, args); | |
| } | |
| }; }); | |
| } | |
| /** | |
| * @license | |
| * Copyright Google Inc. All Rights Reserved. | |
| * | |
| * Use of this source code is governed by an MIT-style license that can be | |
| * found in the LICENSE file at https://angular.io/license | |
| */ | |
| var callAndReturnFirstParam = function (fn) { | |
| return function (self, args) { | |
| fn(self, args); | |
| return self; | |
| }; | |
| }; | |
| // For EventEmitter | |
| var EE_ADD_LISTENER = 'addListener'; | |
| var EE_PREPEND_LISTENER = 'prependListener'; | |
| var EE_REMOVE_LISTENER = 'removeListener'; | |
| var EE_REMOVE_ALL_LISTENER = 'removeAllListeners'; | |
| var EE_LISTENERS = 'listeners'; | |
| var EE_ON = 'on'; | |
| var zoneAwareAddListener$1 = callAndReturnFirstParam(makeZoneAwareAddListener(EE_ADD_LISTENER, EE_REMOVE_LISTENER, false, true, false)); | |
| var zoneAwarePrependListener = callAndReturnFirstParam(makeZoneAwareAddListener(EE_PREPEND_LISTENER, EE_REMOVE_LISTENER, false, true, true)); | |
| var zoneAwareRemoveListener$1 = callAndReturnFirstParam(makeZoneAwareRemoveListener(EE_REMOVE_LISTENER, false)); | |
| var zoneAwareRemoveAllListeners = callAndReturnFirstParam(makeZoneAwareRemoveAllListeners(EE_REMOVE_ALL_LISTENER, false)); | |
| var zoneAwareListeners = makeZoneAwareListeners(EE_LISTENERS); | |
| function patchEventEmitterMethods(obj) { | |
| if (obj && obj.addListener) { | |
| patchMethod(obj, EE_ADD_LISTENER, function () { return zoneAwareAddListener$1; }); | |
| patchMethod(obj, EE_PREPEND_LISTENER, function () { return zoneAwarePrependListener; }); | |
| patchMethod(obj, EE_REMOVE_LISTENER, function () { return zoneAwareRemoveListener$1; }); | |
| patchMethod(obj, EE_REMOVE_ALL_LISTENER, function () { return zoneAwareRemoveAllListeners; }); | |
| patchMethod(obj, EE_LISTENERS, function () { return zoneAwareListeners; }); | |
| obj[EE_ON] = obj[EE_ADD_LISTENER]; | |
| return true; | |
| } | |
| else { | |
| return false; | |
| } | |
| } | |
| // EventEmitter | |
| var events; | |
| try { | |
| events = require('events'); | |
| } | |
| catch (err) { | |
| } | |
| if (events && events.EventEmitter) { | |
| patchEventEmitterMethods(events.EventEmitter.prototype); | |
| } | |
| /** | |
| * @license | |
| * Copyright Google Inc. All Rights Reserved. | |
| * | |
| * Use of this source code is governed by an MIT-style license that can be | |
| * found in the LICENSE file at https://angular.io/license | |
| */ | |
| var fs; | |
| try { | |
| fs = require('fs'); | |
| } | |
| catch (err) { | |
| } | |
| // watch, watchFile, unwatchFile has been patched | |
| // because EventEmitter has been patched | |
| var TO_PATCH_MACROTASK_METHODS = [ | |
| 'access', 'appendFile', 'chmod', 'chown', 'close', 'exists', 'fchmod', | |
| 'fchown', 'fdatasync', 'fstat', 'fsync', 'ftruncate', 'futimes', 'lchmod', | |
| 'lchown', 'link', 'lstat', 'mkdir', 'mkdtemp', 'open', 'read', | |
| 'readdir', 'readFile', 'readlink', 'realpath', 'rename', 'rmdir', 'stat', | |
| 'symlink', 'truncate', 'unlink', 'utimes', 'write', 'writeFile', | |
| ]; | |
| if (fs) { | |
| TO_PATCH_MACROTASK_METHODS.filter(function (name) { return !!fs[name] && typeof fs[name] === 'function'; }) | |
| .forEach(function (name) { | |
| patchMacroTask(fs, name, function (self, args) { | |
| return { | |
| name: 'fs.' + name, | |
| args: args, | |
| callbackIndex: args.length > 0 ? args.length - 1 : -1, | |
| target: self | |
| }; | |
| }); | |
| }); | |
| } | |
| /** | |
| * @license | |
| * Copyright Google Inc. All Rights Reserved. | |
| * | |
| * Use of this source code is governed by an MIT-style license that can be | |
| * found in the LICENSE file at https://angular.io/license | |
| */ | |
| function patchTimer(window, setName, cancelName, nameSuffix) { | |
| var setNative = null; | |
| var clearNative = null; | |
| setName += nameSuffix; | |
| cancelName += nameSuffix; | |
| var tasksByHandleId = {}; | |
| function scheduleTask(task) { | |
| var data = task.data; | |
| data.args[0] = function () { | |
| task.invoke.apply(this, arguments); | |
| delete tasksByHandleId[data.handleId]; | |
| }; | |
| data.handleId = setNative.apply(window, data.args); | |
| tasksByHandleId[data.handleId] = task; | |
| return task; | |
| } | |
| function clearTask(task) { | |
| delete tasksByHandleId[task.data.handleId]; | |
| return clearNative(task.data.handleId); | |
| } | |
| setNative = | |
| patchMethod(window, setName, function (delegate) { return function (self, args) { | |
| if (typeof args[0] === 'function') { | |
| var zone = Zone.current; | |
| var options = { | |
| handleId: null, | |
| isPeriodic: nameSuffix === 'Interval', | |
| delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 : null, | |
| args: args | |
| }; | |
| var task = zone.scheduleMacroTask(setName, args[0], options, scheduleTask, clearTask); | |
| if (!task) { | |
| return task; | |
| } | |
| // Node.js must additionally support the ref and unref functions. | |
| var handle = task.data.handleId; | |
| if (handle.ref && handle.unref) { | |
| task.ref = handle.ref.bind(handle); | |
| task.unref = handle.unref.bind(handle); | |
| } | |
| return task; | |
| } | |
| else { | |
| // cause an error by calling it directly. | |
| return delegate.apply(window, args); | |
| } | |
| }; }); | |
| clearNative = | |
| patchMethod(window, cancelName, function (delegate) { return function (self, args) { | |
| var task = typeof args[0] === 'number' ? tasksByHandleId[args[0]] : args[0]; | |
| if (task && typeof task.type === 'string') { | |
| if (task.cancelFn && task.data.isPeriodic || task.runCount === 0) { | |
| // Do not cancel already canceled functions | |
| task.zone.cancelTask(task); | |
| } | |
| } | |
| else { | |
| // cause an error by calling it directly. | |
| delegate.apply(window, args); | |
| } | |
| }; }); | |
| } | |
| /** | |
| * @license | |
| * Copyright Google Inc. All Rights Reserved. | |
| * | |
| * Use of this source code is governed by an MIT-style license that can be | |
| * found in the LICENSE file at https://angular.io/license | |
| */ | |
| var set = 'set'; | |
| var clear = 'clear'; | |
| var _global = typeof window === 'object' && window || typeof self === 'object' && self || global; | |
| // Timers | |
| var timers = require('timers'); | |
| patchTimer(timers, set, clear, 'Timeout'); | |
| patchTimer(timers, set, clear, 'Interval'); | |
| patchTimer(timers, set, clear, 'Immediate'); | |
| var shouldPatchGlobalTimers = global.setTimeout !== timers.setTimeout; | |
| if (shouldPatchGlobalTimers) { | |
| patchTimer(_global, set, clear, 'Timeout'); | |
| patchTimer(_global, set, clear, 'Interval'); | |
| patchTimer(_global, set, clear, 'Immediate'); | |
| } | |
| patchNextTick(); | |
| // Crypto | |
| var crypto; | |
| try { | |
| crypto = require('crypto'); | |
| } | |
| catch (err) { | |
| } | |
| // TODO(gdi2290): implement a better way to patch these methods | |
| if (crypto) { | |
| var nativeRandomBytes_1 = crypto.randomBytes; | |
| crypto.randomBytes = function randomBytesZone(size, callback) { | |
| if (!callback) { | |
| return nativeRandomBytes_1(size); | |
| } | |
| else { | |
| var zone = Zone.current; | |
| var source = crypto.constructor.name + '.randomBytes'; | |
| return nativeRandomBytes_1(size, zone.wrap(callback, source)); | |
| } | |
| }.bind(crypto); | |
| var nativePbkdf2_1 = crypto.pbkdf2; | |
| crypto.pbkdf2 = function pbkdf2Zone() { | |
| var args = []; | |
| for (var _i = 0; _i < arguments.length; _i++) { | |
| args[_i] = arguments[_i]; | |
| } | |
| var fn = args[args.length - 1]; | |
| if (typeof fn === 'function') { | |
| var zone = Zone.current; | |
| var source = crypto.constructor.name + '.pbkdf2'; | |
| args[args.length - 1] = zone.wrap(fn, source); | |
| return nativePbkdf2_1.apply(void 0, args); | |
| } | |
| else { | |
| return nativePbkdf2_1.apply(void 0, args); | |
| } | |
| }.bind(crypto); | |
| } | |
| // HTTP Client | |
| var httpClient; | |
| try { | |
| httpClient = require('_http_client'); | |
| } | |
| catch (err) { | |
| } | |
| if (httpClient && httpClient.ClientRequest) { | |
| var ClientRequest_1 = httpClient.ClientRequest.bind(httpClient); | |
| httpClient.ClientRequest = function (options, callback) { | |
| if (!callback) { | |
| return new ClientRequest_1(options); | |
| } | |
| else { | |
| var zone = Zone.current; | |
| return new ClientRequest_1(options, zone.wrap(callback, 'http.ClientRequest')); | |
| } | |
| }; | |
| } | |
| function patchNextTick() { | |
| var setNative = null; | |
| function scheduleTask(task) { | |
| var args = task.data; | |
| args[0] = function () { | |
| task.invoke.apply(this, arguments); | |
| }; | |
| setNative.apply(process, args); | |
| return task; | |
| } | |
| setNative = | |
| patchMethod(process, 'nextTick', function (delegate) { return function (self, args) { | |
| if (typeof args[0] === 'function') { | |
| var zone = Zone.current; | |
| var task = zone.scheduleMicroTask('nextTick', args[0], args, scheduleTask); | |
| return task; | |
| } | |
| else { | |
| // cause an error by calling it directly. | |
| return delegate.apply(process, args); | |
| } | |
| }; }); | |
| } | |
| }))); | |
Xet Storage Details
- Size:
- 63.1 kB
- Xet hash:
- 622ae600c413a919b61797c64cbdb87ddfc46f8479f93f77e32ef6fe5e514219
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.