Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/node_modules/@nativescript/zone-js/nativescript-zone-js-1.0.1.tgz b/node_modules/@nativescript/zone-js/nativescript-zone-js-1.0.1.tgz
- deleted file mode 100644
- index 94660b4..0000000
- Binary files a/node_modules/@nativescript/zone-js/nativescript-zone-js-1.0.1.tgz and /dev/null differ
- diff --git a/node_modules/@nativescript/zone-js/package/testing.jasmine.d.ts b/node_modules/@nativescript/zone-js/package/testing.jasmine.d.ts
- deleted file mode 100644
- index 8984f2b..0000000
- --- a/node_modules/@nativescript/zone-js/package/testing.jasmine.d.ts
- +++ /dev/null
- @@ -1 +0,0 @@
- -import './zone-nativescript.jasmine.js';
- diff --git a/node_modules/@nativescript/zone-js/package/testing.jasmine.js b/node_modules/@nativescript/zone-js/package/testing.jasmine.js
- deleted file mode 100644
- index 3fcf9da..0000000
- --- a/node_modules/@nativescript/zone-js/package/testing.jasmine.js
- +++ /dev/null
- @@ -1,2 +0,0 @@
- -import './zone-nativescript.jasmine.js';
- -//# sourceMappingURL=testing.jasmine.js.map
- \ No newline at end of file
- diff --git a/node_modules/@nativescript/zone-js/package/testing.jasmine.js.map b/node_modules/@nativescript/zone-js/package/testing.jasmine.js.map
- deleted file mode 100644
- index 212da0b..0000000
- --- a/node_modules/@nativescript/zone-js/package/testing.jasmine.js.map
- +++ /dev/null
- @@ -1 +0,0 @@
- -{"version":3,"file":"testing.jasmine.js","sourceRoot":"","sources":["testing.jasmine.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,CAAC;AACrB,OAAO,qCAAqC,CAAC"}
- \ No newline at end of file
- diff --git a/node_modules/@nativescript/zone-js/package/testing.mocha.d.ts b/node_modules/@nativescript/zone-js/package/testing.mocha.d.ts
- deleted file mode 100644
- index 7538179..0000000
- --- a/node_modules/@nativescript/zone-js/package/testing.mocha.d.ts
- +++ /dev/null
- @@ -1,2 +0,0 @@
- -import '../platform';
- -import './zone-nativescript.mocha.js';
- diff --git a/node_modules/@nativescript/zone-js/package/testing.mocha.js b/node_modules/@nativescript/zone-js/package/testing.mocha.js
- deleted file mode 100644
- index e883697..0000000
- --- a/node_modules/@nativescript/zone-js/package/testing.mocha.js
- +++ /dev/null
- @@ -1,2 +0,0 @@
- -import './zone-nativescript.mocha.js';
- -//# sourceMappingURL=testing.mocha.js.map
- \ No newline at end of file
- diff --git a/node_modules/@nativescript/zone-js/package/testing.mocha.js.map b/node_modules/@nativescript/zone-js/package/testing.mocha.js.map
- deleted file mode 100644
- index 19ef784..0000000
- --- a/node_modules/@nativescript/zone-js/package/testing.mocha.js.map
- +++ /dev/null
- @@ -1 +0,0 @@
- -{"version":3,"file":"testing.mocha.js","sourceRoot":"","sources":["testing.mocha.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AACrB,OAAO,mCAAmC,CAAC"}
- \ No newline at end of file
- diff --git a/node_modules/@nativescript/zone-js/package/zone-nativescript.d.ts b/node_modules/@nativescript/zone-js/package/zone-nativescript.d.ts
- deleted file mode 100644
- index e43b810..0000000
- --- a/node_modules/@nativescript/zone-js/package/zone-nativescript.d.ts
- +++ /dev/null
- @@ -1 +0,0 @@
- -export declare const NativeScriptZone: any;
- \ No newline at end of file
- diff --git a/node_modules/@nativescript/zone-js/package/zone-nativescript.jasmine.js b/node_modules/@nativescript/zone-js/package/zone-nativescript.jasmine.js
- deleted file mode 100644
- index 98bac8f..0000000
- --- a/node_modules/@nativescript/zone-js/package/zone-nativescript.jasmine.js
- +++ /dev/null
- @@ -1,1452 +0,0 @@
- -/**
- -* @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
- - */
- -/**
- - * @fileoverview
- - * @suppress {globalThis}
- - */
- -var NEWLINE = '\n';
- -var IGNORE_FRAMES = {};
- -var creationTrace = '__creationTrace__';
- -var ERROR_TAG = 'STACKTRACE TRACKING';
- -var SEP_TAG = '__SEP_TAG__';
- -var sepTemplate = SEP_TAG + '@[native]';
- -var LongStackTrace = /** @class */ (function () {
- - function LongStackTrace() {
- - this.error = getStacktrace();
- - this.timestamp = new Date();
- - }
- - return LongStackTrace;
- -}());
- -function getStacktraceWithUncaughtError() {
- - return new Error(ERROR_TAG);
- -}
- -function getStacktraceWithCaughtError() {
- - try {
- - throw getStacktraceWithUncaughtError();
- - }
- - catch (err) {
- - return err;
- - }
- -}
- -// Some implementations of exception handling don't create a stack trace if the exception
- -// isn't thrown, however it's faster not to actually throw the exception.
- -var error = getStacktraceWithUncaughtError();
- -var caughtError = getStacktraceWithCaughtError();
- -var getStacktrace = error.stack ?
- - getStacktraceWithUncaughtError :
- - (caughtError.stack ? getStacktraceWithCaughtError : getStacktraceWithUncaughtError);
- -function getFrames(error) {
- - return error.stack ? error.stack.split(NEWLINE) : [];
- -}
- -function addErrorStack(lines, error) {
- - var trace = getFrames(error);
- - for (var i = 0; i < trace.length; i++) {
- - var frame = trace[i];
- - // Filter out the Frames which are part of stack capturing.
- - if (!IGNORE_FRAMES.hasOwnProperty(frame)) {
- - lines.push(trace[i]);
- - }
- - }
- -}
- -function renderLongStackTrace(frames, stack) {
- - var longTrace = [stack ? stack.trim() : ''];
- - if (frames) {
- - var timestamp = new Date().getTime();
- - for (var i = 0; i < frames.length; i++) {
- - var traceFrames = frames[i];
- - var lastTime = traceFrames.timestamp;
- - var separator = "____________________Elapsed " + (timestamp - lastTime.getTime()) + " ms; At: " + lastTime;
- - separator = separator.replace(/[^\w\d]/g, '_');
- - longTrace.push(sepTemplate.replace(SEP_TAG, separator));
- - addErrorStack(longTrace, traceFrames.error);
- - timestamp = lastTime.getTime();
- - }
- - }
- - return longTrace.join(NEWLINE);
- -}
- -Zone['longStackTraceZoneSpec'] = {
- - name: 'long-stack-trace',
- - longStackTraceLimit: 10,
- - // add a getLongStackTrace method in spec to
- - // handle handled reject promise error.
- - getLongStackTrace: function (error) {
- - if (!error) {
- - return undefined;
- - }
- - var trace = error[Zone.__symbol__('currentTaskTrace')];
- - if (!trace) {
- - return error.stack;
- - }
- - return renderLongStackTrace(trace, error.stack);
- - },
- - onScheduleTask: function (parentZoneDelegate, currentZone, targetZone, task) {
- - if (Error.stackTraceLimit > 0) {
- - // if Error.stackTraceLimit is 0, means stack trace
- - // is disabled, so we don't need to generate long stack trace
- - // this will improve performance in some test(some test will
- - // set stackTraceLimit to 0, https://github.com/angular/zone.js/issues/698
- - var currentTask = Zone.currentTask;
- - var trace = currentTask && currentTask.data && currentTask.data[creationTrace] || [];
- - trace = [new LongStackTrace()].concat(trace);
- - if (trace.length > this.longStackTraceLimit) {
- - trace.length = this.longStackTraceLimit;
- - }
- - if (!task.data)
- - task.data = {};
- - task.data[creationTrace] = trace;
- - }
- - return parentZoneDelegate.scheduleTask(targetZone, task);
- - },
- - onHandleError: function (parentZoneDelegate, currentZone, targetZone, error) {
- - if (Error.stackTraceLimit > 0) {
- - // if Error.stackTraceLimit is 0, means stack trace
- - // is disabled, so we don't need to generate long stack trace
- - // this will improve performance in some test(some test will
- - // set stackTraceLimit to 0, https://github.com/angular/zone.js/issues/698
- - var parentTask = Zone.currentTask || error.task;
- - if (error instanceof Error && parentTask) {
- - var longStack = renderLongStackTrace(parentTask.data && parentTask.data[creationTrace], error.stack);
- - try {
- - error.stack = error.longStack = longStack;
- - }
- - catch (err) {
- - }
- - }
- - }
- - return parentZoneDelegate.handleError(targetZone, error);
- - }
- -};
- -function captureStackTraces(stackTraces, count) {
- - if (count > 0) {
- - stackTraces.push(getFrames((new LongStackTrace()).error));
- - captureStackTraces(stackTraces, count - 1);
- - }
- -}
- -function computeIgnoreFrames() {
- - if (Error.stackTraceLimit <= 0) {
- - return;
- - }
- - var frames = [];
- - captureStackTraces(frames, 2);
- - var frames1 = frames[0];
- - var frames2 = frames[1];
- - for (var i = 0; i < frames1.length; i++) {
- - var frame1 = frames1[i];
- - if (frame1.indexOf(ERROR_TAG) == -1) {
- - var match = frame1.match(/^\s*at\s+/);
- - if (match) {
- - sepTemplate = match[0] + SEP_TAG + ' (http://localhost)';
- - break;
- - }
- - }
- - }
- - for (var i = 0; i < frames1.length; i++) {
- - var frame1 = frames1[i];
- - var frame2 = frames2[i];
- - if (frame1 === frame2) {
- - IGNORE_FRAMES[frame1] = true;
- - }
- - else {
- - break;
- - }
- - }
- -}
- -computeIgnoreFrames();
- -
- -/**
- - * @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 ProxyZoneSpec = /** @class */ (function () {
- - function ProxyZoneSpec(defaultSpecDelegate) {
- - if (defaultSpecDelegate === void 0) { defaultSpecDelegate = null; }
- - this.defaultSpecDelegate = defaultSpecDelegate;
- - this.name = 'ProxyZone';
- - this.properties = { 'ProxyZoneSpec': this };
- - this.propertyKeys = null;
- - this.lastTaskState = null;
- - this.isNeedToTriggerHasTask = false;
- - this.tasks = [];
- - this.setDelegate(defaultSpecDelegate);
- - }
- - ProxyZoneSpec.get = function () {
- - return Zone.current.get('ProxyZoneSpec');
- - };
- - ProxyZoneSpec.isLoaded = function () {
- - return ProxyZoneSpec.get() instanceof ProxyZoneSpec;
- - };
- - ProxyZoneSpec.assertPresent = function () {
- - if (!ProxyZoneSpec.isLoaded()) {
- - throw new Error("Expected to be running in 'ProxyZone', but it was not found.");
- - }
- - return ProxyZoneSpec.get();
- - };
- - ProxyZoneSpec.prototype.setDelegate = function (delegateSpec) {
- - var _this = this;
- - var isNewDelegate = this._delegateSpec !== delegateSpec;
- - this._delegateSpec = delegateSpec;
- - this.propertyKeys && this.propertyKeys.forEach(function (key) { return delete _this.properties[key]; });
- - this.propertyKeys = null;
- - if (delegateSpec && delegateSpec.properties) {
- - this.propertyKeys = Object.keys(delegateSpec.properties);
- - this.propertyKeys.forEach(function (k) { return _this.properties[k] = delegateSpec.properties[k]; });
- - }
- - // if set a new delegateSpec, shoulde check whether need to
- - // trigger hasTask or not
- - if (isNewDelegate && this.lastTaskState &&
- - (this.lastTaskState.macroTask || this.lastTaskState.microTask)) {
- - this.isNeedToTriggerHasTask = true;
- - }
- - };
- - ProxyZoneSpec.prototype.getDelegate = function () {
- - return this._delegateSpec;
- - };
- - ProxyZoneSpec.prototype.resetDelegate = function () {
- - var delegateSpec = this.getDelegate();
- - this.setDelegate(this.defaultSpecDelegate);
- - };
- - ProxyZoneSpec.prototype.tryTriggerHasTask = function (parentZoneDelegate, currentZone, targetZone) {
- - if (this.isNeedToTriggerHasTask && this.lastTaskState) {
- - // last delegateSpec has microTask or macroTask
- - // should call onHasTask in current delegateSpec
- - this.isNeedToTriggerHasTask = false;
- - this.onHasTask(parentZoneDelegate, currentZone, targetZone, this.lastTaskState);
- - }
- - };
- - ProxyZoneSpec.prototype.removeFromTasks = function (task) {
- - if (!this.tasks) {
- - return;
- - }
- - for (var i = 0; i < this.tasks.length; i++) {
- - if (this.tasks[i] === task) {
- - this.tasks.splice(i, 1);
- - return;
- - }
- - }
- - };
- - ProxyZoneSpec.prototype.getAndClearPendingTasksInfo = function () {
- - if (this.tasks.length === 0) {
- - return '';
- - }
- - var taskInfo = this.tasks.map(function (task) {
- - var dataInfo = task.data &&
- - Object.keys(task.data)
- - .map(function (key) {
- - return key + ':' + task.data[key];
- - })
- - .join(',');
- - return "type: " + task.type + ", source: " + task.source + ", args: {" + dataInfo + "}";
- - });
- - var pendingTasksInfo = '--Pendng async tasks are: [' + taskInfo + ']';
- - // clear tasks
- - this.tasks = [];
- - return pendingTasksInfo;
- - };
- - ProxyZoneSpec.prototype.onFork = function (parentZoneDelegate, currentZone, targetZone, zoneSpec) {
- - if (this._delegateSpec && this._delegateSpec.onFork) {
- - return this._delegateSpec.onFork(parentZoneDelegate, currentZone, targetZone, zoneSpec);
- - }
- - else {
- - return parentZoneDelegate.fork(targetZone, zoneSpec);
- - }
- - };
- - ProxyZoneSpec.prototype.onIntercept = function (parentZoneDelegate, currentZone, targetZone, delegate, source) {
- - if (this._delegateSpec && this._delegateSpec.onIntercept) {
- - return this._delegateSpec.onIntercept(parentZoneDelegate, currentZone, targetZone, delegate, source);
- - }
- - else {
- - return parentZoneDelegate.intercept(targetZone, delegate, source);
- - }
- - };
- - ProxyZoneSpec.prototype.onInvoke = function (parentZoneDelegate, currentZone, targetZone, delegate, applyThis, applyArgs, source) {
- - this.tryTriggerHasTask(parentZoneDelegate, currentZone, targetZone);
- - if (this._delegateSpec && this._delegateSpec.onInvoke) {
- - return this._delegateSpec.onInvoke(parentZoneDelegate, currentZone, targetZone, delegate, applyThis, applyArgs, source);
- - }
- - else {
- - return parentZoneDelegate.invoke(targetZone, delegate, applyThis, applyArgs, source);
- - }
- - };
- - ProxyZoneSpec.prototype.onHandleError = function (parentZoneDelegate, currentZone, targetZone, error) {
- - if (this._delegateSpec && this._delegateSpec.onHandleError) {
- - return this._delegateSpec.onHandleError(parentZoneDelegate, currentZone, targetZone, error);
- - }
- - else {
- - return parentZoneDelegate.handleError(targetZone, error);
- - }
- - };
- - ProxyZoneSpec.prototype.onScheduleTask = function (parentZoneDelegate, currentZone, targetZone, task) {
- - if (task.type !== 'eventTask') {
- - this.tasks.push(task);
- - }
- - if (this._delegateSpec && this._delegateSpec.onScheduleTask) {
- - return this._delegateSpec.onScheduleTask(parentZoneDelegate, currentZone, targetZone, task);
- - }
- - else {
- - return parentZoneDelegate.scheduleTask(targetZone, task);
- - }
- - };
- - ProxyZoneSpec.prototype.onInvokeTask = function (parentZoneDelegate, currentZone, targetZone, task, applyThis, applyArgs) {
- - if (task.type !== 'eventTask') {
- - this.removeFromTasks(task);
- - }
- - this.tryTriggerHasTask(parentZoneDelegate, currentZone, targetZone);
- - if (this._delegateSpec && this._delegateSpec.onInvokeTask) {
- - return this._delegateSpec.onInvokeTask(parentZoneDelegate, currentZone, targetZone, task, applyThis, applyArgs);
- - }
- - else {
- - return parentZoneDelegate.invokeTask(targetZone, task, applyThis, applyArgs);
- - }
- - };
- - ProxyZoneSpec.prototype.onCancelTask = function (parentZoneDelegate, currentZone, targetZone, task) {
- - if (task.type !== 'eventTask') {
- - this.removeFromTasks(task);
- - }
- - this.tryTriggerHasTask(parentZoneDelegate, currentZone, targetZone);
- - if (this._delegateSpec && this._delegateSpec.onCancelTask) {
- - return this._delegateSpec.onCancelTask(parentZoneDelegate, currentZone, targetZone, task);
- - }
- - else {
- - return parentZoneDelegate.cancelTask(targetZone, task);
- - }
- - };
- - ProxyZoneSpec.prototype.onHasTask = function (delegate, current, target, hasTaskState) {
- - this.lastTaskState = hasTaskState;
- - if (this._delegateSpec && this._delegateSpec.onHasTask) {
- - this._delegateSpec.onHasTask(delegate, current, target, hasTaskState);
- - }
- - else {
- - delegate.hasTask(target, hasTaskState);
- - }
- - };
- - return ProxyZoneSpec;
- -}());
- -// Export the class so that new instances can be created with proper
- -// constructor params.
- -Zone['ProxyZoneSpec'] = ProxyZoneSpec;
- -
- -/**
- - * @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 SyncTestZoneSpec = /** @class */ (function () {
- - function SyncTestZoneSpec(namePrefix) {
- - this.runZone = Zone.current;
- - this.name = 'syncTestZone for ' + namePrefix;
- - }
- - SyncTestZoneSpec.prototype.onScheduleTask = function (delegate, current, target, task) {
- - switch (task.type) {
- - case 'microTask':
- - case 'macroTask':
- - throw new Error("Cannot call " + task.source + " from within a sync test.");
- - case 'eventTask':
- - task = delegate.scheduleTask(target, task);
- - break;
- - }
- - return task;
- - };
- - return SyncTestZoneSpec;
- -}());
- -// Export the class so that new instances can be created with proper
- -// constructor params.
- -Zone['SyncTestZoneSpec'] = SyncTestZoneSpec;
- -
- -/**
- - * @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 _global = typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global;
- -var AsyncTestZoneSpec = /** @class */ (function () {
- - function AsyncTestZoneSpec(finishCallback, failCallback, namePrefix) {
- - this.finishCallback = finishCallback;
- - this.failCallback = failCallback;
- - this._pendingMicroTasks = false;
- - this._pendingMacroTasks = false;
- - this._alreadyErrored = false;
- - this._isSync = false;
- - this.runZone = Zone.current;
- - this.unresolvedChainedPromiseCount = 0;
- - this.supportWaitUnresolvedChainedPromise = false;
- - this.name = 'asyncTestZone for ' + namePrefix;
- - this.properties = { 'AsyncTestZoneSpec': this };
- - this.supportWaitUnresolvedChainedPromise =
- - _global[Zone.__symbol__('supportWaitUnResolvedChainedPromise')] === true;
- - }
- - AsyncTestZoneSpec.prototype.isUnresolvedChainedPromisePending = function () {
- - return this.unresolvedChainedPromiseCount > 0;
- - };
- - AsyncTestZoneSpec.prototype._finishCallbackIfDone = function () {
- - var _this = this;
- - if (!(this._pendingMicroTasks || this._pendingMacroTasks ||
- - (this.supportWaitUnresolvedChainedPromise && this.isUnresolvedChainedPromisePending()))) {
- - // We do this because we would like to catch unhandled rejected promises.
- - this.runZone.run(function () {
- - setTimeout(function () {
- - if (!_this._alreadyErrored && !(_this._pendingMicroTasks || _this._pendingMacroTasks)) {
- - _this.finishCallback();
- - }
- - }, 0);
- - });
- - }
- - };
- - AsyncTestZoneSpec.prototype.patchPromiseForTest = function () {
- - if (!this.supportWaitUnresolvedChainedPromise) {
- - return;
- - }
- - var patchPromiseForTest = Promise[Zone.__symbol__('patchPromiseForTest')];
- - if (patchPromiseForTest) {
- - patchPromiseForTest();
- - }
- - };
- - AsyncTestZoneSpec.prototype.unPatchPromiseForTest = function () {
- - if (!this.supportWaitUnresolvedChainedPromise) {
- - return;
- - }
- - var unPatchPromiseForTest = Promise[Zone.__symbol__('unPatchPromiseForTest')];
- - if (unPatchPromiseForTest) {
- - unPatchPromiseForTest();
- - }
- - };
- - AsyncTestZoneSpec.prototype.onScheduleTask = function (delegate, current, target, task) {
- - if (task.type !== 'eventTask') {
- - this._isSync = false;
- - }
- - if (task.type === 'microTask' && task.data && task.data instanceof Promise) {
- - // check whether the promise is a chained promise
- - if (task.data[AsyncTestZoneSpec.symbolParentUnresolved] === true) {
- - // chained promise is being scheduled
- - this.unresolvedChainedPromiseCount--;
- - }
- - }
- - return delegate.scheduleTask(target, task);
- - };
- - AsyncTestZoneSpec.prototype.onInvokeTask = function (delegate, current, target, task, applyThis, applyArgs) {
- - if (task.type !== 'eventTask') {
- - this._isSync = false;
- - }
- - return delegate.invokeTask(target, task, applyThis, applyArgs);
- - };
- - AsyncTestZoneSpec.prototype.onCancelTask = function (delegate, current, target, task) {
- - if (task.type !== 'eventTask') {
- - this._isSync = false;
- - }
- - return delegate.cancelTask(target, task);
- - };
- - // Note - we need to use onInvoke at the moment to call finish when a test is
- - // fully synchronous. TODO(juliemr): remove this when the logic for
- - // onHasTask changes and it calls whenever the task queues are dirty.
- - // updated by(JiaLiPassion), only call finish callback when no task
- - // was scheduled/invoked/canceled.
- - AsyncTestZoneSpec.prototype.onInvoke = function (parentZoneDelegate, currentZone, targetZone, delegate, applyThis, applyArgs, source) {
- - try {
- - this._isSync = true;
- - return parentZoneDelegate.invoke(targetZone, delegate, applyThis, applyArgs, source);
- - }
- - finally {
- - var afterTaskCounts = parentZoneDelegate._taskCounts;
- - if (this._isSync) {
- - this._finishCallbackIfDone();
- - }
- - }
- - };
- - AsyncTestZoneSpec.prototype.onHandleError = function (parentZoneDelegate, currentZone, targetZone, error) {
- - // Let the parent try to handle the error.
- - var result = parentZoneDelegate.handleError(targetZone, error);
- - if (result) {
- - this.failCallback(error);
- - this._alreadyErrored = true;
- - }
- - return false;
- - };
- - AsyncTestZoneSpec.prototype.onHasTask = function (delegate, current, target, hasTaskState) {
- - delegate.hasTask(target, hasTaskState);
- - if (hasTaskState.change == 'microTask') {
- - this._pendingMicroTasks = hasTaskState.microTask;
- - this._finishCallbackIfDone();
- - }
- - else if (hasTaskState.change == 'macroTask') {
- - this._pendingMacroTasks = hasTaskState.macroTask;
- - this._finishCallbackIfDone();
- - }
- - };
- - AsyncTestZoneSpec.symbolParentUnresolved = Zone.__symbol__('parentUnresolved');
- - return AsyncTestZoneSpec;
- -}());
- -// Export the class so that new instances can be created with proper
- -// constructor params.
- -Zone['AsyncTestZoneSpec'] = AsyncTestZoneSpec;
- -
- -/**
- - * @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 __read = (undefined && undefined.__read) || function (o, n) {
- - var m = typeof Symbol === "function" && o[Symbol.iterator];
- - if (!m) return o;
- - var i = m.call(o), r, ar = [], e;
- - try {
- - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
- - }
- - catch (error) { e = { error: error }; }
- - finally {
- - try {
- - if (r && !r.done && (m = i["return"])) m.call(i);
- - }
- - finally { if (e) throw e.error; }
- - }
- - return ar;
- -};
- -var __spread = (undefined && undefined.__spread) || function () {
- - for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
- - return ar;
- -};
- -(function (global) {
- - var OriginalDate = global.Date;
- - var FakeDate = /** @class */ (function () {
- - function FakeDate() {
- - if (arguments.length === 0) {
- - var d = new OriginalDate();
- - d.setTime(FakeDate.now());
- - return d;
- - }
- - else {
- - var args = Array.prototype.slice.call(arguments);
- - return new (OriginalDate.bind.apply(OriginalDate, __spread([void 0], args)))();
- - }
- - }
- - FakeDate.now = function () {
- - var fakeAsyncTestZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');
- - if (fakeAsyncTestZoneSpec) {
- - return fakeAsyncTestZoneSpec.getCurrentRealTime() + fakeAsyncTestZoneSpec.getCurrentTime();
- - }
- - return OriginalDate.now.apply(this, arguments);
- - };
- - return FakeDate;
- - }());
- - FakeDate.UTC = OriginalDate.UTC;
- - FakeDate.parse = OriginalDate.parse;
- - // keep a reference for zone patched timer function
- - var timers = {
- - setTimeout: global.setTimeout,
- - setInterval: global.setInterval,
- - clearTimeout: global.clearTimeout,
- - clearInterval: global.clearInterval
- - };
- - var Scheduler = /** @class */ (function () {
- - function Scheduler() {
- - // Next scheduler id.
- - this.nextId = 1;
- - // Scheduler queue with the tuple of end time and callback function - sorted by end time.
- - this._schedulerQueue = [];
- - // Current simulated time in millis.
- - this._currentTime = 0;
- - // Current real time in millis.
- - this._currentRealTime = OriginalDate.now();
- - }
- - Scheduler.prototype.getCurrentTime = function () {
- - return this._currentTime;
- - };
- - Scheduler.prototype.getCurrentRealTime = function () {
- - return this._currentRealTime;
- - };
- - Scheduler.prototype.setCurrentRealTime = function (realTime) {
- - this._currentRealTime = realTime;
- - };
- - Scheduler.prototype.scheduleFunction = function (cb, delay, args, isPeriodic, isRequestAnimationFrame, id) {
- - if (args === void 0) { args = []; }
- - if (isPeriodic === void 0) { isPeriodic = false; }
- - if (isRequestAnimationFrame === void 0) { isRequestAnimationFrame = false; }
- - if (id === void 0) { id = -1; }
- - var currentId = id < 0 ? this.nextId++ : id;
- - var endTime = this._currentTime + delay;
- - // Insert so that scheduler queue remains sorted by end time.
- - var newEntry = {
- - endTime: endTime,
- - id: currentId,
- - func: cb,
- - args: args,
- - delay: delay,
- - isPeriodic: isPeriodic,
- - isRequestAnimationFrame: isRequestAnimationFrame
- - };
- - var i = 0;
- - for (; i < this._schedulerQueue.length; i++) {
- - var currentEntry = this._schedulerQueue[i];
- - if (newEntry.endTime < currentEntry.endTime) {
- - break;
- - }
- - }
- - this._schedulerQueue.splice(i, 0, newEntry);
- - return currentId;
- - };
- - Scheduler.prototype.removeScheduledFunctionWithId = function (id) {
- - for (var i = 0; i < this._schedulerQueue.length; i++) {
- - if (this._schedulerQueue[i].id == id) {
- - this._schedulerQueue.splice(i, 1);
- - break;
- - }
- - }
- - };
- - Scheduler.prototype.tick = function (millis, doTick) {
- - if (millis === void 0) { millis = 0; }
- - var finalTime = this._currentTime + millis;
- - var lastCurrentTime = 0;
- - if (this._schedulerQueue.length === 0 && doTick) {
- - doTick(millis);
- - return;
- - }
- - while (this._schedulerQueue.length > 0) {
- - var current = this._schedulerQueue[0];
- - if (finalTime < current.endTime) {
- - // Done processing the queue since it's sorted by endTime.
- - break;
- - }
- - else {
- - // Time to run scheduled function. Remove it from the head of queue.
- - var current_1 = this._schedulerQueue.shift();
- - lastCurrentTime = this._currentTime;
- - this._currentTime = current_1.endTime;
- - if (doTick) {
- - doTick(this._currentTime - lastCurrentTime);
- - }
- - var retval = current_1.func.apply(global, current_1.args);
- - if (!retval) {
- - // Uncaught exception in the current scheduled function. Stop processing the queue.
- - break;
- - }
- - }
- - }
- - this._currentTime = finalTime;
- - };
- - Scheduler.prototype.flush = function (limit, flushPeriodic, doTick) {
- - if (limit === void 0) { limit = 20; }
- - if (flushPeriodic === void 0) { flushPeriodic = false; }
- - if (flushPeriodic) {
- - return this.flushPeriodic(doTick);
- - }
- - else {
- - return this.flushNonPeriodic(limit, doTick);
- - }
- - };
- - Scheduler.prototype.flushPeriodic = function (doTick) {
- - if (this._schedulerQueue.length === 0) {
- - return 0;
- - }
- - // Find the last task currently queued in the scheduler queue and tick
- - // till that time.
- - var startTime = this._currentTime;
- - var lastTask = this._schedulerQueue[this._schedulerQueue.length - 1];
- - this.tick(lastTask.endTime - startTime, doTick);
- - return this._currentTime - startTime;
- - };
- - Scheduler.prototype.flushNonPeriodic = function (limit, doTick) {
- - var startTime = this._currentTime;
- - var lastCurrentTime = 0;
- - 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?');
- - }
- - // flush only non-periodic timers.
- - // If the only remaining tasks are periodic(or requestAnimationFrame), finish flushing.
- - if (this._schedulerQueue.filter(function (task) { return !task.isPeriodic && !task.isRequestAnimationFrame; })
- - .length === 0) {
- - break;
- - }
- - var current = this._schedulerQueue.shift();
- - lastCurrentTime = this._currentTime;
- - this._currentTime = current.endTime;
- - if (doTick) {
- - // Update any secondary schedulers like Jasmine mock Date.
- - doTick(this._currentTime - lastCurrentTime);
- - }
- - 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;
- - }());
- - var FakeAsyncTestZoneSpec = /** @class */ (function () {
- - function FakeAsyncTestZoneSpec(namePrefix, trackPendingRequestAnimationFrame, macroTaskOptions) {
- - if (trackPendingRequestAnimationFrame === void 0) { trackPendingRequestAnimationFrame = false; }
- - this.trackPendingRequestAnimationFrame = trackPendingRequestAnimationFrame;
- - this.macroTaskOptions = macroTaskOptions;
- - this._scheduler = new Scheduler();
- - this._microtasks = [];
- - this._lastError = null;
- - this._uncaughtPromiseErrors = Promise[Zone.__symbol__('uncaughtPromiseErrors')];
- - this.pendingPeriodicTimers = [];
- - this.pendingTimers = [];
- - this.patchDateLocked = false;
- - this.properties = { 'FakeAsyncTestZoneSpec': this };
- - this.name = 'fakeAsyncTestZone for ' + namePrefix;
- - // in case user can't access the construction of FakeAsyncTestSpec
- - // user can also define macroTaskOptions by define a global variable.
- - if (!this.macroTaskOptions) {
- - this.macroTaskOptions = global[Zone.__symbol__('FakeAsyncTestMacroTask')];
- - }
- - }
- - FakeAsyncTestZoneSpec.assertInZone = function () {
- - if (Zone.current.get('FakeAsyncTestZoneSpec') == null) {
- - throw new Error('The code should be running in the fakeAsync zone to call this function');
- - }
- - };
- - FakeAsyncTestZoneSpec.prototype._fnAndFlush = function (fn, completers) {
- - var _this = this;
- - return function () {
- - var args = [];
- - for (var _i = 0; _i < arguments.length; _i++) {
- - args[_i] = arguments[_i];
- - }
- - fn.apply(global, args);
- - if (_this._lastError === null) {
- - if (completers.onSuccess != null) {
- - completers.onSuccess.apply(global);
- - }
- - // Flush microtasks only on success.
- - _this.flushMicrotasks();
- - }
- - else {
- - if (completers.onError != null) {
- - completers.onError.apply(global);
- - }
- - }
- - // Return true if there were no errors, false otherwise.
- - return _this._lastError === null;
- - };
- - };
- - FakeAsyncTestZoneSpec._removeTimer = function (timers, id) {
- - var index = timers.indexOf(id);
- - if (index > -1) {
- - timers.splice(index, 1);
- - }
- - };
- - FakeAsyncTestZoneSpec.prototype._dequeueTimer = function (id) {
- - var _this = this;
- - return function () {
- - FakeAsyncTestZoneSpec._removeTimer(_this.pendingTimers, id);
- - };
- - };
- - FakeAsyncTestZoneSpec.prototype._requeuePeriodicTimer = function (fn, interval, args, id) {
- - var _this = this;
- - return function () {
- - // Requeue the timer callback if it's not been canceled.
- - if (_this.pendingPeriodicTimers.indexOf(id) !== -1) {
- - _this._scheduler.scheduleFunction(fn, interval, args, true, false, id);
- - }
- - };
- - };
- - FakeAsyncTestZoneSpec.prototype._dequeuePeriodicTimer = function (id) {
- - var _this = this;
- - return function () {
- - FakeAsyncTestZoneSpec._removeTimer(_this.pendingPeriodicTimers, id);
- - };
- - };
- - FakeAsyncTestZoneSpec.prototype._setTimeout = function (fn, delay, args, isTimer) {
- - if (isTimer === void 0) { isTimer = true; }
- - var removeTimerFn = this._dequeueTimer(this._scheduler.nextId);
- - // Queue the callback and dequeue the timer on success and error.
- - var cb = this._fnAndFlush(fn, { onSuccess: removeTimerFn, onError: removeTimerFn });
- - var id = this._scheduler.scheduleFunction(cb, delay, args, false, !isTimer);
- - if (isTimer) {
- - this.pendingTimers.push(id);
- - }
- - return id;
- - };
- - FakeAsyncTestZoneSpec.prototype._clearTimeout = function (id) {
- - FakeAsyncTestZoneSpec._removeTimer(this.pendingTimers, id);
- - this._scheduler.removeScheduledFunctionWithId(id);
- - };
- - FakeAsyncTestZoneSpec.prototype._setInterval = function (fn, interval, args) {
- - var id = this._scheduler.nextId;
- - var completers = { onSuccess: null, onError: this._dequeuePeriodicTimer(id) };
- - var cb = this._fnAndFlush(fn, completers);
- - // Use the callback created above to requeue on success.
- - completers.onSuccess = this._requeuePeriodicTimer(cb, interval, args, id);
- - // Queue the callback and dequeue the periodic timer only on error.
- - this._scheduler.scheduleFunction(cb, interval, args, true);
- - this.pendingPeriodicTimers.push(id);
- - return id;
- - };
- - FakeAsyncTestZoneSpec.prototype._clearInterval = function (id) {
- - FakeAsyncTestZoneSpec._removeTimer(this.pendingPeriodicTimers, id);
- - this._scheduler.removeScheduledFunctionWithId(id);
- - };
- - FakeAsyncTestZoneSpec.prototype._resetLastErrorAndThrow = function () {
- - var error = this._lastError || this._uncaughtPromiseErrors[0];
- - this._uncaughtPromiseErrors.length = 0;
- - this._lastError = null;
- - throw error;
- - };
- - FakeAsyncTestZoneSpec.prototype.getCurrentTime = function () {
- - return this._scheduler.getCurrentTime();
- - };
- - FakeAsyncTestZoneSpec.prototype.getCurrentRealTime = function () {
- - return this._scheduler.getCurrentRealTime();
- - };
- - FakeAsyncTestZoneSpec.prototype.setCurrentRealTime = function (realTime) {
- - this._scheduler.setCurrentRealTime(realTime);
- - };
- - FakeAsyncTestZoneSpec.patchDate = function () {
- - if (global['Date'] === FakeDate) {
- - // already patched
- - return;
- - }
- - global['Date'] = FakeDate;
- - FakeDate.prototype = OriginalDate.prototype;
- - // try check and reset timers
- - // because jasmine.clock().install() may
- - // have replaced the global timer
- - FakeAsyncTestZoneSpec.checkTimerPatch();
- - };
- - FakeAsyncTestZoneSpec.resetDate = function () {
- - if (global['Date'] === FakeDate) {
- - global['Date'] = OriginalDate;
- - }
- - };
- - FakeAsyncTestZoneSpec.checkTimerPatch = function () {
- - if (global.setTimeout !== timers.setTimeout) {
- - global.setTimeout = timers.setTimeout;
- - global.clearTimeout = timers.clearTimeout;
- - }
- - if (global.setInterval !== timers.setInterval) {
- - global.setInterval = timers.setInterval;
- - global.clearInterval = timers.clearInterval;
- - }
- - };
- - FakeAsyncTestZoneSpec.prototype.lockDatePatch = function () {
- - this.patchDateLocked = true;
- - FakeAsyncTestZoneSpec.patchDate();
- - };
- - FakeAsyncTestZoneSpec.prototype.unlockDatePatch = function () {
- - this.patchDateLocked = false;
- - FakeAsyncTestZoneSpec.resetDate();
- - };
- - FakeAsyncTestZoneSpec.prototype.tick = function (millis, doTick) {
- - if (millis === void 0) { millis = 0; }
- - FakeAsyncTestZoneSpec.assertInZone();
- - this.flushMicrotasks();
- - this._scheduler.tick(millis, doTick);
- - if (this._lastError !== null) {
- - this._resetLastErrorAndThrow();
- - }
- - };
- - FakeAsyncTestZoneSpec.prototype.flushMicrotasks = function () {
- - var _this = this;
- - FakeAsyncTestZoneSpec.assertInZone();
- - var flushErrors = function () {
- - if (_this._lastError !== null || _this._uncaughtPromiseErrors.length) {
- - // If there is an error stop processing the microtask queue and rethrow the error.
- - _this._resetLastErrorAndThrow();
- - }
- - };
- - while (this._microtasks.length > 0) {
- - var microtask = this._microtasks.shift();
- - microtask.func.apply(microtask.target, microtask.args);
- - }
- - flushErrors();
- - };
- - FakeAsyncTestZoneSpec.prototype.flush = function (limit, flushPeriodic, doTick) {
- - FakeAsyncTestZoneSpec.assertInZone();
- - this.flushMicrotasks();
- - var elapsed = this._scheduler.flush(limit, flushPeriodic, doTick);
- - if (this._lastError !== null) {
- - this._resetLastErrorAndThrow();
- - }
- - return elapsed;
- - };
- - FakeAsyncTestZoneSpec.prototype.onScheduleTask = function (delegate, current, target, task) {
- - switch (task.type) {
- - case 'microTask':
- - 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 additionalArgs = void 0;
- - if (args) {
- - var callbackIndex = task.data.cbIdx;
- - if (typeof args.length === 'number' && args.length > callbackIndex + 1) {
- - additionalArgs = Array.prototype.slice.call(args, callbackIndex + 1);
- - }
- - }
- - this._microtasks.push({
- - func: task.invoke,
- - args: additionalArgs,
- - target: task.data && task.data.target
- - });
- - break;
- - case 'macroTask':
- - switch (task.source) {
- - case 'setTimeout':
- - task.data['handleId'] = this._setTimeout(task.invoke, task.data['delay'], Array.prototype.slice.call(task.data['args'], 2));
- - break;
- - case 'setImmediate':
- - task.data['handleId'] = this._setTimeout(task.invoke, 0, Array.prototype.slice.call(task.data['args'], 1));
- - break;
- - case 'setInterval':
- - task.data['handleId'] = this._setInterval(task.invoke, task.data['delay'], Array.prototype.slice.call(task.data['args'], 2));
- - break;
- - case 'XMLHttpRequest.send':
- - throw new Error('Cannot make XHRs from within a fake async test. Request URL: ' +
- - task.data['url']);
- - case 'requestAnimationFrame':
- - case 'webkitRequestAnimationFrame':
- - case 'mozRequestAnimationFrame':
- - // Simulate a requestAnimationFrame by using a setTimeout with 16 ms.
- - // (60 frames per second)
- - task.data['handleId'] = this._setTimeout(task.invoke, 16, task.data['args'], this.trackPendingRequestAnimationFrame);
- - break;
- - default:
- - // user can define which macroTask they want to support by passing
- - // macroTaskOptions
- - var macroTaskOption = this.findMacroTaskOption(task);
- - if (macroTaskOption) {
- - var args_1 = task.data && task.data['args'];
- - var delay = args_1 && args_1.length > 1 ? args_1[1] : 0;
- - var callbackArgs = macroTaskOption.callbackArgs ? macroTaskOption.callbackArgs : args_1;
- - if (!!macroTaskOption.isPeriodic) {
- - // periodic macroTask, use setInterval to simulate
- - task.data['handleId'] = this._setInterval(task.invoke, delay, callbackArgs);
- - task.data.isPeriodic = true;
- - }
- - else {
- - // not periodic, use setTimeout to simulate
- - task.data['handleId'] = this._setTimeout(task.invoke, delay, callbackArgs);
- - }
- - break;
- - }
- - throw new Error('Unknown macroTask scheduled in fake async test: ' + task.source);
- - }
- - break;
- - case 'eventTask':
- - task = delegate.scheduleTask(target, task);
- - break;
- - }
- - return task;
- - };
- - FakeAsyncTestZoneSpec.prototype.onCancelTask = function (delegate, current, target, task) {
- - switch (task.source) {
- - case 'setTimeout':
- - case 'requestAnimationFrame':
- - case 'webkitRequestAnimationFrame':
- - case 'mozRequestAnimationFrame':
- - return this._clearTimeout(task.data['handleId']);
- - case 'setInterval':
- - return this._clearInterval(task.data['handleId']);
- - default:
- - // user can define which macroTask they want to support by passing
- - // macroTaskOptions
- - var macroTaskOption = this.findMacroTaskOption(task);
- - if (macroTaskOption) {
- - var handleId = task.data['handleId'];
- - return macroTaskOption.isPeriodic ? this._clearInterval(handleId) :
- - this._clearTimeout(handleId);
- - }
- - return delegate.cancelTask(target, task);
- - }
- - };
- - FakeAsyncTestZoneSpec.prototype.onInvoke = function (delegate, current, target, callback, applyThis, applyArgs, source) {
- - try {
- - FakeAsyncTestZoneSpec.patchDate();
- - return delegate.invoke(target, callback, applyThis, applyArgs, source);
- - }
- - finally {
- - if (!this.patchDateLocked) {
- - FakeAsyncTestZoneSpec.resetDate();
- - }
- - }
- - };
- - FakeAsyncTestZoneSpec.prototype.findMacroTaskOption = function (task) {
- - if (!this.macroTaskOptions) {
- - return null;
- - }
- - for (var i = 0; i < this.macroTaskOptions.length; i++) {
- - var macroTaskOption = this.macroTaskOptions[i];
- - if (macroTaskOption.source === task.source) {
- - return macroTaskOption;
- - }
- - }
- - return null;
- - };
- - FakeAsyncTestZoneSpec.prototype.onHandleError = function (parentZoneDelegate, currentZone, targetZone, error) {
- - this._lastError = error;
- - return false; // Don't propagate error to parent zone.
- - };
- - return FakeAsyncTestZoneSpec;
- - }());
- - // Export the class so that new instances can be created with proper
- - // constructor params.
- - Zone['FakeAsyncTestZoneSpec'] = FakeAsyncTestZoneSpec;
- -})(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
- - */
- -/**
- - * A `TaskTrackingZoneSpec` allows one to track all outstanding Tasks.
- - *
- - * This is useful in tests. For example to see which tasks are preventing a test from completing
- - * or an automated way of releasing all of the event listeners at the end of the test.
- - */
- -var TaskTrackingZoneSpec = /** @class */ (function () {
- - function TaskTrackingZoneSpec() {
- - this.name = 'TaskTrackingZone';
- - this.microTasks = [];
- - this.macroTasks = [];
- - this.eventTasks = [];
- - this.properties = { 'TaskTrackingZone': this };
- - }
- - TaskTrackingZoneSpec.get = function () {
- - return Zone.current.get('TaskTrackingZone');
- - };
- - TaskTrackingZoneSpec.prototype.getTasksFor = function (type) {
- - switch (type) {
- - case 'microTask':
- - return this.microTasks;
- - case 'macroTask':
- - return this.macroTasks;
- - case 'eventTask':
- - return this.eventTasks;
- - }
- - throw new Error('Unknown task format: ' + type);
- - };
- - TaskTrackingZoneSpec.prototype.onScheduleTask = function (parentZoneDelegate, currentZone, targetZone, task) {
- - task['creationLocation'] = new Error("Task '" + task.type + "' from '" + task.source + "'.");
- - var tasks = this.getTasksFor(task.type);
- - tasks.push(task);
- - return parentZoneDelegate.scheduleTask(targetZone, task);
- - };
- - TaskTrackingZoneSpec.prototype.onCancelTask = function (parentZoneDelegate, currentZone, targetZone, task) {
- - var tasks = this.getTasksFor(task.type);
- - for (var i = 0; i < tasks.length; i++) {
- - if (tasks[i] == task) {
- - tasks.splice(i, 1);
- - break;
- - }
- - }
- - return parentZoneDelegate.cancelTask(targetZone, task);
- - };
- - TaskTrackingZoneSpec.prototype.onInvokeTask = function (parentZoneDelegate, currentZone, targetZone, task, applyThis, applyArgs) {
- - if (task.type === 'eventTask')
- - return parentZoneDelegate.invokeTask(targetZone, task, applyThis, applyArgs);
- - var tasks = this.getTasksFor(task.type);
- - for (var i = 0; i < tasks.length; i++) {
- - if (tasks[i] == task) {
- - tasks.splice(i, 1);
- - break;
- - }
- - }
- - return parentZoneDelegate.invokeTask(targetZone, task, applyThis, applyArgs);
- - };
- - TaskTrackingZoneSpec.prototype.clearEvents = function () {
- - while (this.eventTasks.length) {
- - Zone.current.cancelTask(this.eventTasks[0]);
- - }
- - };
- - return TaskTrackingZoneSpec;
- -}());
- -// Export the class so that new instances can be created with proper
- -// constructor params.
- -Zone['TaskTrackingZoneSpec'] = TaskTrackingZoneSpec;
- -
- -/**
- - * @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
- - */
- -/**
- - * @fileoverview
- - * @suppress {missingRequire}
- - */
- -(function (global) {
- - // Detect and setup WTF.
- - var wtfTrace = null;
- - var wtfEvents = null;
- - var wtfEnabled = (function () {
- - var wtf = global['wtf'];
- - if (wtf) {
- - wtfTrace = wtf.trace;
- - if (wtfTrace) {
- - wtfEvents = wtfTrace.events;
- - return true;
- - }
- - }
- - return false;
- - })();
- - var WtfZoneSpec = /** @class */ (function () {
- - function WtfZoneSpec() {
- - this.name = 'WTF';
- - }
- - WtfZoneSpec.prototype.onFork = function (parentZoneDelegate, currentZone, targetZone, zoneSpec) {
- - var retValue = parentZoneDelegate.fork(targetZone, zoneSpec);
- - WtfZoneSpec.forkInstance(zonePathName(targetZone), retValue.name);
- - return retValue;
- - };
- - WtfZoneSpec.prototype.onInvoke = function (parentZoneDelegate, currentZone, targetZone, delegate, applyThis, applyArgs, source) {
- - var scope = WtfZoneSpec.invokeScope[source];
- - if (!scope) {
- - scope = WtfZoneSpec.invokeScope[source] =
- - wtfEvents.createScope("Zone:invoke:" + source + "(ascii zone)");
- - }
- - return wtfTrace.leaveScope(scope(zonePathName(targetZone)), parentZoneDelegate.invoke(targetZone, delegate, applyThis, applyArgs, source));
- - };
- - WtfZoneSpec.prototype.onHandleError = function (parentZoneDelegate, currentZone, targetZone, error) {
- - return parentZoneDelegate.handleError(targetZone, error);
- - };
- - WtfZoneSpec.prototype.onScheduleTask = function (parentZoneDelegate, currentZone, targetZone, task) {
- - var key = task.type + ':' + task.source;
- - var instance = WtfZoneSpec.scheduleInstance[key];
- - if (!instance) {
- - instance = WtfZoneSpec.scheduleInstance[key] =
- - wtfEvents.createInstance("Zone:schedule:" + key + "(ascii zone, any data)");
- - }
- - var retValue = parentZoneDelegate.scheduleTask(targetZone, task);
- - instance(zonePathName(targetZone), shallowObj(task.data, 2));
- - return retValue;
- - };
- - WtfZoneSpec.prototype.onInvokeTask = function (parentZoneDelegate, currentZone, targetZone, task, applyThis, applyArgs) {
- - var source = task.source;
- - var scope = WtfZoneSpec.invokeTaskScope[source];
- - if (!scope) {
- - scope = WtfZoneSpec.invokeTaskScope[source] =
- - wtfEvents.createScope("Zone:invokeTask:" + source + "(ascii zone)");
- - }
- - return wtfTrace.leaveScope(scope(zonePathName(targetZone)), parentZoneDelegate.invokeTask(targetZone, task, applyThis, applyArgs));
- - };
- - WtfZoneSpec.prototype.onCancelTask = function (parentZoneDelegate, currentZone, targetZone, task) {
- - var key = task.source;
- - var instance = WtfZoneSpec.cancelInstance[key];
- - if (!instance) {
- - instance = WtfZoneSpec.cancelInstance[key] =
- - wtfEvents.createInstance("Zone:cancel:" + key + "(ascii zone, any options)");
- - }
- - var retValue = parentZoneDelegate.cancelTask(targetZone, task);
- - instance(zonePathName(targetZone), shallowObj(task.data, 2));
- - return retValue;
- - };
- - WtfZoneSpec.forkInstance = wtfEnabled && wtfEvents.createInstance('Zone:fork(ascii zone, ascii newZone)');
- - WtfZoneSpec.scheduleInstance = {};
- - WtfZoneSpec.cancelInstance = {};
- - WtfZoneSpec.invokeScope = {};
- - WtfZoneSpec.invokeTaskScope = {};
- - return WtfZoneSpec;
- - }());
- - function shallowObj(obj, depth) {
- - if (!depth)
- - return null;
- - var out = {};
- - for (var key in obj) {
- - if (obj.hasOwnProperty(key)) {
- - var value = obj[key];
- - switch (typeof value) {
- - case 'object':
- - var name_1 = value && value.constructor && value.constructor.name;
- - value = name_1 == Object.name ? shallowObj(value, depth - 1) : name_1;
- - break;
- - case 'function':
- - value = value.name || undefined;
- - break;
- - }
- - out[key] = value;
- - }
- - }
- - return out;
- - }
- - function zonePathName(zone) {
- - var name = zone.name;
- - zone = zone.parent;
- - while (zone != null) {
- - name = zone.name + '::' + name;
- - zone = zone.parent;
- - }
- - return name;
- - }
- - Zone['wtfZoneSpec'] = !wtfEnabled ? null : new WtfZoneSpec();
- -})(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
- - */
- -(function () {
- - var __extends = function (d, b) {
- - for (var p in b)
- - if (b.hasOwnProperty(p))
- - d[p] = b[p];
- - function __() {
- - this.constructor = d;
- - }
- - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- - };
- - var _global = typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global;
- - // Patch jasmine's describe/it/beforeEach/afterEach functions so test code always runs
- - // in a testZone (ProxyZone). (See: angular/zone.js#91 & angular/angular#10503)
- - if (!Zone)
- - throw new Error('Missing: zone.js');
- - if (typeof jasmine == 'undefined')
- - throw new Error('Missing: jasmine.js');
- - if (jasmine['__zone_patch__'])
- - throw new Error("'jasmine' has already been patched with 'Zone'.");
- - jasmine['__zone_patch__'] = true;
- - var SyncTestZoneSpec = Zone['SyncTestZoneSpec'];
- - var ProxyZoneSpec = Zone['ProxyZoneSpec'];
- - if (!SyncTestZoneSpec)
- - throw new Error('Missing: SyncTestZoneSpec');
- - if (!ProxyZoneSpec)
- - throw new Error('Missing: ProxyZoneSpec');
- - var ambientZone = Zone.current;
- - // Create a synchronous-only zone in which to run `describe` blocks in order to raise an
- - // error if any asynchronous operations are attempted inside of a `describe` but outside of
- - // a `beforeEach` or `it`.
- - var syncZone = ambientZone.fork(new SyncTestZoneSpec('jasmine.describe'));
- - var symbol = Zone.__symbol__;
- - // whether patch jasmine clock when in fakeAsync
- - var enableClockPatch = _global[symbol('fakeAsyncPatchLock')] === true;
- - // Monkey patch all of the jasmine DSL so that each function runs in appropriate zone.
- - var jasmineEnv = jasmine.getEnv();
- - ['describe', 'xdescribe', 'fdescribe'].forEach(function (methodName) {
- - var originalJasmineFn = jasmineEnv[methodName];
- - jasmineEnv[methodName] = function (description, specDefinitions) {
- - return originalJasmineFn.call(this, description, wrapDescribeInZone(specDefinitions));
- - };
- - });
- - ['it', 'xit', 'fit'].forEach(function (methodName) {
- - var originalJasmineFn = jasmineEnv[methodName];
- - jasmineEnv[symbol(methodName)] = originalJasmineFn;
- - jasmineEnv[methodName] = function (description, specDefinitions, timeout) {
- - arguments[1] = wrapTestInZone(specDefinitions);
- - return originalJasmineFn.apply(this, arguments);
- - };
- - });
- - ['beforeEach', 'afterEach'].forEach(function (methodName) {
- - var originalJasmineFn = jasmineEnv[methodName];
- - jasmineEnv[symbol(methodName)] = originalJasmineFn;
- - jasmineEnv[methodName] = function (specDefinitions, timeout) {
- - arguments[0] = wrapTestInZone(specDefinitions);
- - return originalJasmineFn.apply(this, arguments);
- - };
- - });
- - // need to patch jasmine.clock().mockDate and jasmine.clock().tick() so
- - // they can work properly in FakeAsyncTest
- - var originalClockFn = (jasmine[symbol('clock')] = jasmine['clock']);
- - jasmine['clock'] = function () {
- - var clock = originalClockFn.apply(this, arguments);
- - if (!clock[symbol('patched')]) {
- - clock[symbol('patched')] = symbol('patched');
- - var originalTick_1 = (clock[symbol('tick')] = clock.tick);
- - clock.tick = function () {
- - var fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');
- - if (fakeAsyncZoneSpec) {
- - return fakeAsyncZoneSpec.tick.apply(fakeAsyncZoneSpec, arguments);
- - }
- - return originalTick_1.apply(this, arguments);
- - };
- - var originalMockDate_1 = (clock[symbol('mockDate')] = clock.mockDate);
- - clock.mockDate = function () {
- - var fakeAsyncZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');
- - if (fakeAsyncZoneSpec) {
- - var dateTime = arguments.length > 0 ? arguments[0] : new Date();
- - return fakeAsyncZoneSpec.setCurrentRealTime.apply(fakeAsyncZoneSpec, dateTime && typeof dateTime.getTime === 'function' ? [dateTime.getTime()] :
- - arguments);
- - }
- - return originalMockDate_1.apply(this, arguments);
- - };
- - // for auto go into fakeAsync feature, we need the flag to enable it
- - if (enableClockPatch) {
- - ['install', 'uninstall'].forEach(function (methodName) {
- - var originalClockFn = (clock[symbol(methodName)] = clock[methodName]);
- - clock[methodName] = function () {
- - var FakeAsyncTestZoneSpec = Zone['FakeAsyncTestZoneSpec'];
- - if (FakeAsyncTestZoneSpec) {
- - jasmine[symbol('clockInstalled')] = 'install' === methodName;
- - return;
- - }
- - return originalClockFn.apply(this, arguments);
- - };
- - });
- - }
- - }
- - return clock;
- - };
- - /**
- - * Gets a function wrapping the body of a Jasmine `describe` block to execute in a
- - * synchronous-only zone.
- - */
- - function wrapDescribeInZone(describeBody) {
- - return function () {
- - return syncZone.run(describeBody, this, arguments);
- - };
- - }
- - function runInTestZone(testBody, applyThis, queueRunner, done) {
- - var isClockInstalled = !!jasmine[symbol('clockInstalled')];
- - var testProxyZoneSpec = queueRunner.testProxyZoneSpec;
- - var testProxyZone = queueRunner.testProxyZone;
- - if (isClockInstalled && enableClockPatch) {
- - // auto run a fakeAsync
- - var fakeAsyncModule = Zone[Zone.__symbol__('fakeAsyncTest')];
- - if (fakeAsyncModule && typeof fakeAsyncModule.fakeAsync === 'function') {
- - testBody = fakeAsyncModule.fakeAsync(testBody);
- - }
- - }
- - if (done) {
- - return testProxyZone.run(testBody, applyThis, [done]);
- - }
- - else {
- - return testProxyZone.run(testBody, applyThis);
- - }
- - }
- - /**
- - * Gets a function wrapping the body of a Jasmine `it/beforeEach/afterEach` block to
- - * execute in a ProxyZone zone.
- - * This will run in `testProxyZone`. The `testProxyZone` will be reset by the `ZoneQueueRunner`
- - */
- - function wrapTestInZone(testBody) {
- - // The `done` callback is only passed through if the function expects at least one argument.
- - // Note we have to make a function with correct number of arguments, otherwise jasmine will
- - // think that all functions are sync or async.
- - return (testBody && (testBody.length ? function (done) {
- - return runInTestZone(testBody, this, this.queueRunner, done);
- - } : function () {
- - return runInTestZone(testBody, this, this.queueRunner);
- - }));
- - }
- - var QueueRunner = jasmine.QueueRunner;
- - jasmine.QueueRunner = (function (_super) {
- - __extends(ZoneQueueRunner, _super);
- - function ZoneQueueRunner(attrs) {
- - var _this = this;
- - attrs.onComplete = (function (fn) { return function () {
- - // All functions are done, clear the test zone.
- - _this.testProxyZone = null;
- - _this.testProxyZoneSpec = null;
- - ambientZone.scheduleMicroTask('jasmine.onComplete', fn);
- - }; })(attrs.onComplete);
- - var nativeSetTimeout = _global['__zone_symbol__setTimeout'];
- - var nativeClearTimeout = _global['__zone_symbol__clearTimeout'];
- - if (nativeSetTimeout) {
- - // should run setTimeout inside jasmine outside of zone
- - attrs.timeout = {
- - setTimeout: nativeSetTimeout ? nativeSetTimeout : _global.setTimeout,
- - clearTimeout: nativeClearTimeout ? nativeClearTimeout : _global.clearTimeout
- - };
- - }
- - // create a userContext to hold the queueRunner itself
- - // so we can access the testProxy in it/xit/beforeEach ...
- - if (jasmine.UserContext) {
- - if (!attrs.userContext) {
- - attrs.userContext = new jasmine.UserContext();
- - }
- - attrs.userContext.queueRunner = this;
- - }
- - else {
- - if (!attrs.userContext) {
- - attrs.userContext = {};
- - }
- - attrs.userContext.queueRunner = this;
- - }
- - // patch attrs.onException
- - var onException = attrs.onException;
- - attrs.onException = function (error) {
- - if (error &&
- - error.message ===
- - 'Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.') {
- - // jasmine timeout, we can make the error message more
- - // reasonable to tell what tasks are pending
- - var proxyZoneSpec = this && this.testProxyZoneSpec;
- - if (proxyZoneSpec) {
- - var pendingTasksInfo = proxyZoneSpec.getAndClearPendingTasksInfo();
- - error.message += pendingTasksInfo;
- - }
- - }
- - if (onException) {
- - onException.call(this, error);
- - }
- - };
- - _super.call(this, attrs);
- - }
- - ZoneQueueRunner.prototype.execute = function () {
- - var _this = this;
- - var zone = Zone.current;
- - var isChildOfAmbientZone = false;
- - while (zone) {
- - if (zone === ambientZone) {
- - isChildOfAmbientZone = true;
- - break;
- - }
- - zone = zone.parent;
- - }
- - if (!isChildOfAmbientZone)
- - throw new Error('Unexpected Zone: ' + Zone.current.name);
- - // This is the zone which will be used for running individual tests.
- - // It will be a proxy zone, so that the tests function can retroactively install
- - // different zones.
- - // Example:
- - // - In beforeEach() do childZone = Zone.current.fork(...);
- - // - In it() try to do fakeAsync(). The issue is that because the beforeEach forked the
- - // zone outside of fakeAsync it will be able to escape the fakeAsync rules.
- - // - Because ProxyZone is parent fo `childZone` fakeAsync can retroactively add
- - // fakeAsync behavior to the childZone.
- - this.testProxyZoneSpec = new ProxyZoneSpec();
- - this.testProxyZone = ambientZone.fork(this.testProxyZoneSpec);
- - if (!Zone.currentTask) {
- - // if we are not running in a task then if someone would register a
- - // element.addEventListener and then calling element.click() the
- - // addEventListener callback would think that it is the top most task and would
- - // drain the microtask queue on element.click() which would be incorrect.
- - // For this reason we always force a task when running jasmine tests.
- - Zone.current.scheduleMicroTask('jasmine.execute().forceTask', function () { return QueueRunner.prototype.execute.call(_this); });
- - }
- - else {
- - _super.prototype.execute.call(this);
- - }
- - };
- - return ZoneQueueRunner;
- - })(QueueRunner);
- -})();
- -
- -})));
- diff --git a/node_modules/@nativescript/zone-js/package/zone-nativescript.js b/node_modules/@nativescript/zone-js/package/zone-nativescript.js
- deleted file mode 100644
- index 39a5b55..0000000
- --- a/node_modules/@nativescript/zone-js/package/zone-nativescript.js
- +++ /dev/null
- @@ -1,1681 +0,0 @@
- -/**
- -* @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) {
- - var FUNCTION = 'function';
- - var performance = global['performance'];
- - function mark(name) {
- - performance && performance['mark'] && performance['mark'](name);
- - }
- - function performanceMeasure(name, label) {
- - performance && performance['measure'] && performance['measure'](name, label);
- - }
- - mark('Zone');
- - if (global['Zone']) {
- - throw new Error('Zone already loaded.');
- - }
- - var Zone = /** @class */ (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'] !== patches['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, "root", {
- - get: function () {
- - var zone = Zone.current;
- - while (zone.parent) {
- - zone = zone.parent;
- - }
- - return zone;
- - },
- - enumerable: true,
- - configurable: true
- - });
- - 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
- - });
- - Zone.__load_patch = function (name, fn) {
- - if (patches.hasOwnProperty(name)) {
- - throw Error('Already loaded patch: ' + name);
- - }
- - else if (!global['__Zone_disable_' + name]) {
- - var perfName = 'Zone:' + name;
- - mark(perfName);
- - patches[name] = fn(global, Zone, _api);
- - performanceMeasure(perfName, perfName);
- - }
- - };
- - 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 = undefined; }
- - if (applyArgs === void 0) { applyArgs = null; }
- - if (source === void 0) { source = null; }
- - _currentZoneFrame = { parent: _currentZoneFrame, zone: 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 = { parent: _currentZoneFrame, zone: 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) {
- - if (task.zone != this) {
- - throw new Error('A task can only be run in the zone of creation! (Creation: ' +
- - (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');
- - }
- - // https://github.com/angular/zone.js/issues/778, sometimes eventTask
- - // will run in notScheduled(canceled) state, we should not try to
- - // run such kind of task but just return
- - // we have to define an variable here, if not
- - // typescript compiler will complain below
- - var isNotScheduled = task.state === notScheduled;
- - if (isNotScheduled && task.type === eventTask) {
- - return;
- - }
- - var reEntryGuard = task.state != running;
- - reEntryGuard && task._transitionTo(running, scheduled);
- - task.runCount++;
- - var previousTask = _currentTask;
- - _currentTask = task;
- - _currentZoneFrame = { parent: _currentZoneFrame, zone: 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 {
- - // if the task's state is notScheduled or unknown, then it has already been cancelled
- - // we should not reset the state to scheduled
- - if (task.state !== notScheduled && task.state !== unknown) {
- - if (task.type == eventTask || (task.data && task.data.isPeriodic)) {
- - reEntryGuard && task._transitionTo(scheduled, running);
- - }
- - else {
- - task.runCount = 0;
- - this._updateTaskCount(task, -1);
- - reEntryGuard &&
- - task._transitionTo(notScheduled, running, notScheduled);
- - }
- - }
- - _currentZoneFrame = _currentZoneFrame.parent;
- - _currentTask = previousTask;
- - }
- - };
- - Zone.prototype.scheduleTask = function (task) {
- - if (task.zone && task.zone !== this) {
- - // check if the task was rescheduled, the newZone
- - // should not be the children of the original zone
- - var newZone = this;
- - while (newZone) {
- - if (newZone === task.zone) {
- - throw Error("can not reschedule task to " + this
- - .name + " which is descendants of the original zone " + task.zone.name);
- - }
- - newZone = newZone.parent;
- - }
- - }
- - task._transitionTo(scheduling, notScheduled);
- - var zoneDelegates = [];
- - task._zoneDelegates = zoneDelegates;
- - task._zone = this;
- - try {
- - task = this._zoneDelegate.scheduleTask(this, task);
- - }
- - catch (err) {
- - // should set task's state to unknown when scheduleTask throw error
- - // because the err may from reschedule, so the fromState maybe notScheduled
- - task._transitionTo(unknown, scheduling, notScheduled);
- - // TODO: @JiaLiPassion, should we check the result from handleError?
- - this._zoneDelegate.handleError(this, err);
- - throw err;
- - }
- - if (task._zoneDelegates === zoneDelegates) {
- - // we have to check because internally the delegate can reschedule the task.
- - this._updateTaskCount(task, 1);
- - }
- - if (task.state == scheduling) {
- - task._transitionTo(scheduled, scheduling);
- - }
- - return task;
- - };
- - Zone.prototype.scheduleMicroTask = function (source, callback, data, customSchedule) {
- - return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, null));
- - };
- - Zone.prototype.scheduleMacroTask = function (source, callback, data, customSchedule, customCancel) {
- - return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel));
- - };
- - Zone.prototype.scheduleEventTask = function (source, callback, data, customSchedule, customCancel) {
- - return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel));
- - };
- - Zone.prototype.cancelTask = function (task) {
- - if (task.zone != this)
- - throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' +
- - (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');
- - task._transitionTo(canceling, scheduled, running);
- - try {
- - this._zoneDelegate.cancelTask(this, task);
- - }
- - catch (err) {
- - // if error occurs when cancelTask, transit the state to unknown
- - task._transitionTo(unknown, canceling);
- - this._zoneDelegate.handleError(this, err);
- - throw err;
- - }
- - this._updateTaskCount(task, -1);
- - task._transitionTo(notScheduled, canceling);
- - task.runCount = 0;
- - return task;
- - };
- - Zone.prototype._updateTaskCount = function (task, count) {
- - var zoneDelegates = task._zoneDelegates;
- - if (count == -1) {
- - task._zoneDelegates = null;
- - }
- - for (var i = 0; i < zoneDelegates.length; i++) {
- - zoneDelegates[i]._updateTaskCount(task.type, count);
- - }
- - };
- - Zone.__symbol__ = __symbol__;
- - return Zone;
- - }());
- - var DELEGATE_ZS = {
- - name: '',
- - onHasTask: function (delegate, _, target, hasTaskState) {
- - return delegate.hasTask(target, hasTaskState);
- - },
- - onScheduleTask: function (delegate, _, target, task) {
- - return delegate.scheduleTask(target, task);
- - },
- - onInvokeTask: function (delegate, _, target, task, applyThis, applyArgs) { return delegate.invokeTask(target, task, applyThis, applyArgs); },
- - onCancelTask: function (delegate, _, target, task) {
- - return delegate.cancelTask(target, task);
- - }
- - };
- - var ZoneDelegate = /** @class */ (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 = null;
- - this._hasTaskDlgt = null;
- - this._hasTaskDlgtOwner = null;
- - this._hasTaskCurrZone = null;
- - var zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask;
- - var parentHasTask = parentDelegate && parentDelegate._hasTaskZS;
- - if (zoneSpecHasTask || parentHasTask) {
- - // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such
- - // a case all task related interceptors must go through this ZD. We can't short circuit it.
- - this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS;
- - this._hasTaskDlgt = parentDelegate;
- - this._hasTaskDlgtOwner = this;
- - this._hasTaskCurrZone = zone;
- - if (!zoneSpec.onScheduleTask) {
- - this._scheduleTaskZS = DELEGATE_ZS;
- - this._scheduleTaskDlgt = parentDelegate;
- - this._scheduleTaskCurrZone = this.zone;
- - }
- - if (!zoneSpec.onInvokeTask) {
- - this._invokeTaskZS = DELEGATE_ZS;
- - this._invokeTaskDlgt = parentDelegate;
- - this._invokeTaskCurrZone = this.zone;
- - }
- - if (!zoneSpec.onCancelTask) {
- - this._cancelTaskZS = DELEGATE_ZS;
- - this._cancelTaskDlgt = parentDelegate;
- - this._cancelTaskCurrZone = this.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) {
- - var returnTask = task;
- - if (this._scheduleTaskZS) {
- - if (this._hasTaskZS) {
- - returnTask._zoneDelegates.push(this._hasTaskDlgtOwner);
- - }
- - returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task);
- - if (!returnTask)
- - returnTask = task;
- - }
- - else {
- - if (task.scheduleFn) {
- - task.scheduleFn(task);
- - }
- - else if (task.type == microTask) {
- - scheduleMicroTask(task);
- - }
- - else {
- - throw new Error('Task is missing scheduleFn.');
- - }
- - }
- - return returnTask;
- - };
- - ZoneDelegate.prototype.invokeTask = function (targetZone, task, applyThis, applyArgs) {
- - return this._invokeTaskZS ?
- - this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) :
- - task.callback.apply(applyThis, applyArgs);
- - };
- - 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 Error('Task is not cancelable');
- - }
- - value = task.cancelFn(task);
- - }
- - return value;
- - };
- - ZoneDelegate.prototype.hasTask = function (targetZone, isEmpty) {
- - // hasTask should not throw error so other ZoneDelegate
- - // can still trigger hasTask callback
- - try {
- - return this._hasTaskZS &&
- - this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty);
- - }
- - catch (err) {
- - this.handleError(targetZone, err);
- - }
- - };
- - 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
- - };
- - this.hasTask(this.zone, isEmpty);
- - }
- - };
- - return ZoneDelegate;
- - }());
- - var ZoneTask = /** @class */ (function () {
- - function ZoneTask(type, source, callback, options, scheduleFn, cancelFn) {
- - this._zone = null;
- - this.runCount = 0;
- - this._zoneDelegates = null;
- - this._state = 'notScheduled';
- - this.type = type;
- - this.source = source;
- - this.data = options;
- - this.scheduleFn = scheduleFn;
- - this.cancelFn = cancelFn;
- - this.callback = callback;
- - var self = this;
- - // TODO: @JiaLiPassion options should have interface
- - if (type === eventTask && options && options.useG) {
- - this.invoke = ZoneTask.invokeTask;
- - }
- - else {
- - this.invoke = function () {
- - return ZoneTask.invokeTask.call(global, self, this, arguments);
- - };
- - }
- - }
- - ZoneTask.invokeTask = function (task, target, args) {
- - if (!task) {
- - task = this;
- - }
- - _numberOfNestedTaskFrames++;
- - try {
- - task.runCount++;
- - return task.zone.runTask(task, target, args);
- - }
- - finally {
- - if (_numberOfNestedTaskFrames == 1) {
- - drainMicroTaskQueue();
- - }
- - _numberOfNestedTaskFrames--;
- - }
- - };
- - Object.defineProperty(ZoneTask.prototype, "zone", {
- - get: function () {
- - return this._zone;
- - },
- - enumerable: true,
- - configurable: true
- - });
- - Object.defineProperty(ZoneTask.prototype, "state", {
- - get: function () {
- - return this._state;
- - },
- - enumerable: true,
- - configurable: true
- - });
- - ZoneTask.prototype.cancelScheduleRequest = function () {
- - this._transitionTo(notScheduled, scheduling);
- - };
- - ZoneTask.prototype._transitionTo = function (toState, fromState1, fromState2) {
- - if (this._state === fromState1 || this._state === fromState2) {
- - this._state = toState;
- - if (toState == notScheduled) {
- - this._zoneDelegates = null;
- - }
- - }
- - else {
- - throw new Error(this.type + " '" + this.source + "': can not transition to '" + toState + "', expecting state '" + fromState1 + "'" + (fromState2 ?
- - ' or \'' + fromState2 + '\'' :
- - '') + ", was '" + this._state + "'.");
- - }
- - };
- - 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,
- - state: this.state,
- - source: this.source,
- - zone: this.zone.name,
- - runCount: this.runCount
- - };
- - };
- - return ZoneTask;
- - }());
- - //////////////////////////////////////////////////////
- - //////////////////////////////////////////////////////
- - /// MICROTASK QUEUE
- - //////////////////////////////////////////////////////
- - //////////////////////////////////////////////////////
- - var symbolSetTimeout = __symbol__('setTimeout');
- - var symbolPromise = __symbol__('Promise');
- - var symbolThen = __symbol__('then');
- - var _microTaskQueue = [];
- - var _isDrainingMicrotaskQueue = false;
- - var nativeMicroTaskQueuePromise;
- - function scheduleMicroTask(task) {
- - // 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 (!nativeMicroTaskQueuePromise) {
- - if (global[symbolPromise]) {
- - nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0);
- - }
- - }
- - if (nativeMicroTaskQueuePromise) {
- - nativeMicroTaskQueuePromise[symbolThen](drainMicroTaskQueue);
- - }
- - else {
- - global[symbolSetTimeout](drainMicroTaskQueue, 0);
- - }
- - }
- - task && _microTaskQueue.push(task);
- - }
- - 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 (error) {
- - _api.onUnhandledError(error);
- - }
- - }
- - }
- - _api.microtaskDrainDone();
- - _isDrainingMicrotaskQueue = false;
- - }
- - }
- - Zone.drainMicroTaskQueue = drainMicroTaskQueue;
- - //////////////////////////////////////////////////////
- - //////////////////////////////////////////////////////
- - /// BOOTSTRAP
- - //////////////////////////////////////////////////////
- - //////////////////////////////////////////////////////
- - var NO_ZONE = { name: 'NO ZONE' };
- - var notScheduled = 'notScheduled', scheduling = 'scheduling', scheduled = 'scheduled', running = 'running', canceling = 'canceling', unknown = 'unknown';
- - var microTask = 'microTask', macroTask = 'macroTask', eventTask = 'eventTask';
- - var patches = {};
- - var _api = {
- - symbol: __symbol__,
- - currentZoneFrame: function () { return _currentZoneFrame; },
- - onUnhandledError: noop,
- - microtaskDrainDone: noop,
- - scheduleMicroTask: scheduleMicroTask,
- - showUncaughtError: function () { return !Zone[__symbol__('ignoreConsoleErrorUncaughtError')]; },
- - patchEventTarget: function () { return []; },
- - patchOnProperties: noop,
- - patchMethod: function () { return noop; },
- - bindArguments: function () { return null; },
- - setNativePromise: function (NativePromise) {
- - // sometimes NativePromise.resolve static function
- - // is not ready yet, (such as core-js/es6.promise)
- - // so we need to check here.
- - if (NativePromise && typeof NativePromise.resolve === FUNCTION) {
- - nativeMicroTaskQueuePromise = NativePromise.resolve(0);
- - }
- - },
- - };
- - var _currentZoneFrame = { parent: null, zone: new Zone(null, null) };
- - var _currentTask = null;
- - var _numberOfNestedTaskFrames = 0;
- - function noop() { }
- - function __symbol__(name) {
- - return '__zone_symbol__' + name;
- - }
- - performanceMeasure('Zone', 'Zone');
- - return global['Zone'] = Zone;
- -})(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global);
- -
- -var __values = (undefined && undefined.__values) || function (o) {
- - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
- - if (m) return m.call(o);
- - return {
- - next: function () {
- - if (o && i >= o.length) o = void 0;
- - return { value: o && o[i++], done: !o };
- - }
- - };
- -};
- -Zone.__load_patch('ZoneAwarePromise', function (global, Zone, api) {
- - var ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
- - var ObjectDefineProperty = Object.defineProperty;
- - function readableObjectToString(obj) {
- - if (obj && obj.toString === Object.prototype.toString) {
- - var className = obj.constructor && obj.constructor.name;
- - return (className ? className : '') + ': ' + JSON.stringify(obj);
- - }
- - return obj ? obj.toString() : Object.prototype.toString.call(obj);
- - }
- - var __symbol__ = api.symbol;
- - var _uncaughtPromiseErrors = [];
- - var symbolPromise = __symbol__('Promise');
- - var symbolThen = __symbol__('then');
- - var creationTrace = '__creationTrace__';
- - api.onUnhandledError = function (e) {
- - if (api.showUncaughtError()) {
- - 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);
- - }
- - else {
- - console.error(e);
- - }
- - }
- - };
- - api.microtaskDrainDone = function () {
- - while (_uncaughtPromiseErrors.length) {
- - var _loop_1 = function () {
- - var uncaughtPromiseError = _uncaughtPromiseErrors.shift();
- - try {
- - uncaughtPromiseError.zone.runGuarded(function () {
- - throw uncaughtPromiseError;
- - });
- - }
- - catch (error) {
- - handleUnhandledRejection(error);
- - }
- - };
- - while (_uncaughtPromiseErrors.length) {
- - _loop_1();
- - }
- - }
- - };
- - var UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL = __symbol__('unhandledPromiseRejectionHandler');
- - function handleUnhandledRejection(e) {
- - api.onUnhandledError(e);
- - try {
- - var handler = Zone[UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL];
- - if (handler && typeof handler === 'function') {
- - handler.call(this, e);
- - }
- - }
- - catch (err) {
- - }
- - }
- - 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 symbolFinally = __symbol__('finally');
- - var symbolParentPromiseValue = __symbol__('parentPromiseValue');
- - var symbolParentPromiseState = __symbol__('parentPromiseState');
- - 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) {
- - try {
- - resolvePromise(promise, state, v);
- - }
- - catch (err) {
- - resolvePromise(promise, false, err);
- - }
- - // Do not return value or you will break the Promise spec.
- - };
- - }
- - var once = function () {
- - var wasCalled = false;
- - return function wrapper(wrappedFunction) {
- - return function () {
- - if (wasCalled) {
- - return;
- - }
- - wasCalled = true;
- - wrappedFunction.apply(null, arguments);
- - };
- - };
- - };
- - var TYPE_ERROR = 'Promise resolved with itself';
- - var CURRENT_TASK_TRACE_SYMBOL = __symbol__('currentTaskTrace');
- - // Promise Resolution
- - function resolvePromise(promise, state, value) {
- - var onceWrapper = once();
- - if (promise === value) {
- - throw new TypeError(TYPE_ERROR);
- - }
- - if (promise[symbolState] === UNRESOLVED) {
- - // should only get value.then once based on promise spec.
- - var then = null;
- - try {
- - if (typeof value === 'object' || typeof value === 'function') {
- - then = value && value.then;
- - }
- - }
- - catch (err) {
- - onceWrapper(function () {
- - resolvePromise(promise, false, err);
- - })();
- - return promise;
- - }
- - // if (value instanceof ZoneAwarePromise) {
- - if (state !== REJECTED && value instanceof ZoneAwarePromise &&
- - value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) &&
- - value[symbolState] !== UNRESOLVED) {
- - clearRejectedNoCatch(value);
- - resolvePromise(promise, value[symbolState], value[symbolValue]);
- - }
- - else if (state !== REJECTED && typeof then === 'function') {
- - try {
- - then.call(value, onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false)));
- - }
- - catch (err) {
- - onceWrapper(function () {
- - resolvePromise(promise, false, err);
- - })();
- - }
- - }
- - else {
- - promise[symbolState] = state;
- - var queue = promise[symbolValue];
- - promise[symbolValue] = value;
- - if (promise[symbolFinally] === symbolFinally) {
- - // the promise is generated by Promise.prototype.finally
- - if (state === RESOLVED) {
- - // the state is resolved, should ignore the value
- - // and use parent promise value
- - promise[symbolState] = promise[symbolParentPromiseState];
- - promise[symbolValue] = promise[symbolParentPromiseValue];
- - }
- - }
- - // record task information in value when error occurs, so we can
- - // do some additional work such as render longStackTrace
- - if (state === REJECTED && value instanceof Error) {
- - // check if longStackTraceZone is here
- - var trace = Zone.currentTask && Zone.currentTask.data &&
- - Zone.currentTask.data[creationTrace];
- - if (trace) {
- - // only keep the long stack trace into error when in longStackTraceZone
- - ObjectDefineProperty(value, CURRENT_TASK_TRACE_SYMBOL, { configurable: true, enumerable: false, writable: true, value: trace });
- - }
- - }
- - 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 {
- - // try to print more readable error log
- - throw new Error('Uncaught (in promise): ' + readableObjectToString(value) +
- - (value && value.stack ? '\n' + value.stack : ''));
- - }
- - catch (err) {
- - var error_1 = err;
- - error_1.rejection = value;
- - error_1.promise = promise;
- - error_1.zone = Zone.current;
- - error_1.task = Zone.currentTask;
- - _uncaughtPromiseErrors.push(error_1);
- - api.scheduleMicroTask(); // to make sure that it is running
- - }
- - }
- - }
- - }
- - // Resolving an already resolved promise is a noop.
- - return promise;
- - }
- - var REJECTION_HANDLED_HANDLER = __symbol__('rejectionHandledHandler');
- - function clearRejectedNoCatch(promise) {
- - if (promise[symbolState] === REJECTED_NO_CATCH) {
- - // if the promise is rejected no catch status
- - // and queue.length > 0, means there is a error handler
- - // here to handle the rejected promise, we should trigger
- - // windows.rejectionhandled eventHandler or nodejs rejectionHandled
- - // eventHandler
- - try {
- - var handler = Zone[REJECTION_HANDLED_HANDLER];
- - if (handler && typeof handler === 'function') {
- - handler.call(this, { rejection: promise[symbolValue], promise: promise });
- - }
- - }
- - catch (err) {
- - }
- - promise[symbolState] = REJECTED;
- - for (var i = 0; i < _uncaughtPromiseErrors.length; i++) {
- - if (promise === _uncaughtPromiseErrors[i].promise) {
- - _uncaughtPromiseErrors.splice(i, 1);
- - }
- - }
- - }
- - }
- - function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) {
- - clearRejectedNoCatch(promise);
- - var promiseState = promise[symbolState];
- - var delegate = promiseState ?
- - (typeof onFulfilled === 'function') ? onFulfilled : forwardResolution :
- - (typeof onRejected === 'function') ? onRejected : forwardRejection;
- - zone.scheduleMicroTask(source, function () {
- - try {
- - var parentPromiseValue = promise[symbolValue];
- - var isFinallyPromise = chainPromise && symbolFinally === chainPromise[symbolFinally];
- - if (isFinallyPromise) {
- - // if the promise is generated from finally call, keep parent promise's state and value
- - chainPromise[symbolParentPromiseValue] = parentPromiseValue;
- - chainPromise[symbolParentPromiseState] = promiseState;
- - }
- - // should not pass value to finally callback
- - var value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ? [] : [parentPromiseValue]);
- - resolvePromise(chainPromise, true, value);
- - }
- - catch (error) {
- - // if error occurs, should always return this error
- - resolvePromise(chainPromise, false, error);
- - }
- - }, chainPromise);
- - }
- - var ZONE_AWARE_PROMISE_TO_STRING = 'function ZoneAwarePromise() { [native code] }';
- - var ZoneAwarePromise = /** @class */ (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 (error) {
- - resolvePromise(promise, false, error);
- - }
- - }
- - ZoneAwarePromise.toString = function () {
- - return ZONE_AWARE_PROMISE_TO_STRING;
- - };
- - 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) {
- - resolve = res;
- - reject = rej;
- - });
- - function onResolve(value) {
- - promise && (promise = null || resolve(value));
- - }
- - function onReject(error) {
- - promise && (promise = null || reject(error));
- - }
- - try {
- - for (var values_1 = __values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {
- - var value = values_1_1.value;
- - if (!isThenable(value)) {
- - value = this.resolve(value);
- - }
- - value.then(onResolve, onReject);
- - }
- - }
- - catch (e_1_1) { e_1 = { error: e_1_1 }; }
- - finally {
- - try {
- - if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);
- - }
- - finally { if (e_1) throw e_1.error; }
- - }
- - return promise;
- - var e_1, _a;
- - };
- - ZoneAwarePromise.all = function (values) {
- - var resolve;
- - var reject;
- - var promise = new this(function (res, rej) {
- - resolve = res;
- - reject = rej;
- - });
- - var count = 0;
- - var resolvedValues = [];
- - try {
- - for (var values_2 = __values(values), values_2_1 = values_2.next(); !values_2_1.done; values_2_1 = values_2.next()) {
- - var value = values_2_1.value;
- - 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++;
- - }
- - }
- - catch (e_2_1) { e_2 = { error: e_2_1 }; }
- - finally {
- - try {
- - if (values_2_1 && !values_2_1.done && (_a = values_2.return)) _a.call(values_2);
- - }
- - finally { if (e_2) throw e_2.error; }
- - }
- - if (!count)
- - resolve(resolvedValues);
- - return promise;
- - var e_2, _a;
- - };
- - 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);
- - };
- - ZoneAwarePromise.prototype.finally = function (onFinally) {
- - var chainPromise = new this.constructor(null);
- - chainPromise[symbolFinally] = symbolFinally;
- - var zone = Zone.current;
- - if (this[symbolState] == UNRESOLVED) {
- - this[symbolValue].push(zone, chainPromise, onFinally, onFinally);
- - }
- - else {
- - scheduleResolveOrReject(this, zone, chainPromise, onFinally, onFinally);
- - }
- - return chainPromise;
- - };
- - 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[symbolPromise] = global['Promise'];
- - var ZONE_AWARE_PROMISE = Zone.__symbol__('ZoneAwarePromise');
- - // NOTE(NativeScript): Defining the Promise property descriptor this way causes
- - // problems with V8 snapshot for Android. Just skip it.
- - // let desc = ObjectGetOwnPropertyDescriptor(global, 'Promise');
- - // if (!desc || desc.configurable) {
- - // desc && delete desc.writable;
- - // desc && delete desc.value;
- - // if (!desc) {
- - // desc = {configurable: true, enumerable: true};
- - // }
- - // desc.get = function() {
- - // // if we already set ZoneAwarePromise, use patched one
- - // // otherwise return native one.
- - // return global[ZONE_AWARE_PROMISE] ? global[ZONE_AWARE_PROMISE] : global[symbolPromise];
- - // };
- - // desc.set = function(NewNativePromise) {
- - // if (NewNativePromise === ZoneAwarePromise) {
- - // // if the NewNativePromise is ZoneAwarePromise
- - // // save to global
- - // global[ZONE_AWARE_PROMISE] = NewNativePromise;
- - // } else {
- - // // if the NewNativePromise is not ZoneAwarePromise
- - // // for example: after load zone.js, some library just
- - // // set es6-promise to global, if we set it to global
- - // // directly, assertZonePatched will fail and angular
- - // // will not loaded, so we just set the NewNativePromise
- - // // to global[symbolPromise], so the result is just like
- - // // we load ES6 Promise before zone.js
- - // global[symbolPromise] = NewNativePromise;
- - // if (!NewNativePromise.prototype[symbolThen]) {
- - // patchThen(NewNativePromise);
- - // }
- - // api.setNativePromise(NewNativePromise);
- - // }
- - // };
- - // ObjectDefineProperty(global, 'Promise', desc);
- - // }
- - global['Promise'] = ZoneAwarePromise;
- - var symbolThenPatched = __symbol__('thenPatched');
- - function patchThen(Ctor) {
- - var proto = Ctor.prototype;
- - var prop = ObjectGetOwnPropertyDescriptor(proto, 'then');
- - if (prop && (prop.writable === false || !prop.configurable)) {
- - // check Ctor.prototype.then propertyDescriptor is writable or not
- - // in meteor env, writable is false, we should ignore such case
- - return;
- - }
- - var originalThen = proto.then;
- - // Keep a reference to the original method.
- - proto[symbolThen] = originalThen;
- - Ctor.prototype.then = function (onResolve, onReject) {
- - var _this = this;
- - var wrapped = new ZoneAwarePromise(function (resolve, reject) {
- - originalThen.call(_this, resolve, reject);
- - });
- - return wrapped.then(onResolve, onReject);
- - };
- - Ctor[symbolThenPatched] = true;
- - }
- - function zoneify(fn) {
- - return function () {
- - var resultPromise = fn.apply(this, arguments);
- - if (resultPromise instanceof ZoneAwarePromise) {
- - return resultPromise;
- - }
- - var ctor = resultPromise.constructor;
- - if (!ctor[symbolThenPatched]) {
- - patchThen(ctor);
- - }
- - return resultPromise;
- - };
- - }
- - if (NativePromise) {
- - patchThen(NativePromise);
- - var fetch_1 = global['fetch'];
- - if (typeof fetch_1 == 'function') {
- - global['fetch'] = zoneify(fetch_1);
- - }
- - }
- - // This is not part of public API, but it is useful for tests, so we expose it.
- - Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors;
- - return ZoneAwarePromise;
- -});
- -
- -/**
- - * @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,globalThis,missingRequire}
- - */
- -// issue #989, to reduce bundle size, use short name
- -/** Object.getOwnPropertyDescriptor */
- -var ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
- -/** Object.defineProperty */
- -
- -/** Object.getPrototypeOf */
- -var ObjectGetPrototypeOf = Object.getPrototypeOf;
- -/** Object.create */
- -
- -/** Array.prototype.slice */
- -
- -/** addEventListener string const */
- -var ADD_EVENT_LISTENER_STR = 'addEventListener';
- -/** removeEventListener string const */
- -var REMOVE_EVENT_LISTENER_STR = 'removeEventListener';
- -/** zoneSymbol addEventListener */
- -var ZONE_SYMBOL_ADD_EVENT_LISTENER = Zone.__symbol__(ADD_EVENT_LISTENER_STR);
- -/** zoneSymbol removeEventListener */
- -var ZONE_SYMBOL_REMOVE_EVENT_LISTENER = Zone.__symbol__(REMOVE_EVENT_LISTENER_STR);
- -/** true string const */
- -
- -/** false string const */
- -
- -/** __zone_symbol__ string const */
- -
- -
- -function scheduleMacroTaskWithCurrentZone(source, callback, data, customSchedule, customCancel) {
- - return Zone.current.scheduleMacroTask(source, callback, data, customSchedule, customCancel);
- -}
- -var zoneSymbol = Zone.__symbol__;
- -var isWindowExists = typeof window !== 'undefined';
- -var internalWindow = isWindowExists ? window : undefined;
- -var _global = isWindowExists && internalWindow || typeof self === 'object' && self || global;
- -
- -
- -function isPropertyWritable(propertyDesc) {
- - if (!propertyDesc) {
- - return true;
- - }
- - if (propertyDesc.writable === false) {
- - return false;
- - }
- - return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined');
- -}
- -var isWebWorker = (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope);
- -// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify
- -// this code.
- -var isNode = (!('nw' in _global) && typeof _global.process !== 'undefined' &&
- - {}.toString.call(_global.process) === '[object process]');
- -var isBrowser = !isNode && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']);
- -// we are in electron of nw, so we are both browser and nodejs
- -// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify
- -// this code.
- -var isMix = typeof _global.process !== 'undefined' &&
- - {}.toString.call(_global.process) === '[object process]' && !isWebWorker &&
- - !!(isWindowExists && internalWindow['HTMLElement']);
- -
- -
- -var originalInstanceKey = zoneSymbol('originalInstance');
- -// wrap some native API on `window`
- -
- -function patchMethod(target, name, patchFn) {
- - var proto = target;
- - while (proto && !proto.hasOwnProperty(name)) {
- - proto = ObjectGetPrototypeOf(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];
- - // check whether proto[name] is writable
- - // some property is readonly in safari, such as HtmlCanvasElement.prototype.toBlob
- - var desc = proto && ObjectGetOwnPropertyDescriptor(proto, name);
- - if (isPropertyWritable(desc)) {
- - var patchDelegate_1 = patchFn(delegate, delegateName, name);
- - proto[name] = function () {
- - return patchDelegate_1(this, arguments);
- - };
- - attachOriginToPatched(proto[name], delegate);
- - }
- - }
- - return delegate;
- -}
- -// TODO: @JiaLiPassion, support cancel task later if necessary
- -
- -
- -function attachOriginToPatched(patched, original) {
- - patched[zoneSymbol('OriginalDelegate')] = original;
- -}
- -
- -/**
- - * @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
- - */
- -// override Function.prototype.toString to make zone.js patched function
- -// look like native function
- -Zone.__load_patch('toString', function (global) {
- - // patch Func.prototype.toString to let them look like native
- - var originalFunctionToString = Function.prototype.toString;
- - var ORIGINAL_DELEGATE_SYMBOL = zoneSymbol('OriginalDelegate');
- - var PROMISE_SYMBOL = zoneSymbol('Promise');
- - var ERROR_SYMBOL = zoneSymbol('Error');
- - var newFunctionToString = function toString() {
- - if (typeof this === 'function') {
- - var originalDelegate = this[ORIGINAL_DELEGATE_SYMBOL];
- - if (originalDelegate) {
- - if (typeof originalDelegate === 'function') {
- - return originalFunctionToString.apply(this[ORIGINAL_DELEGATE_SYMBOL], arguments);
- - }
- - else {
- - return Object.prototype.toString.call(originalDelegate);
- - }
- - }
- - if (this === Promise) {
- - var nativePromise = global[PROMISE_SYMBOL];
- - if (nativePromise) {
- - return originalFunctionToString.apply(nativePromise, arguments);
- - }
- - }
- - if (this === Error) {
- - var nativeError = global[ERROR_SYMBOL];
- - if (nativeError) {
- - return originalFunctionToString.apply(nativeError, arguments);
- - }
- - }
- - }
- - return originalFunctionToString.apply(this, arguments);
- - };
- - newFunctionToString[ORIGINAL_DELEGATE_SYMBOL] = originalFunctionToString;
- - Function.prototype.toString = newFunctionToString;
- - // patch Object.prototype.toString to let them look like native
- - var originalObjectToString = Object.prototype.toString;
- - var PROMISE_OBJECT_TO_STRING = '[object Promise]';
- - Object.prototype.toString = function () {
- - if (this instanceof Promise) {
- - return PROMISE_OBJECT_TO_STRING;
- - }
- - return originalObjectToString.apply(this, arguments);
- - };
- -});
- -
- -/**
- - * @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
- - */
- -/**
- - * @fileoverview
- - * @suppress {globalThis,undefinedVars}
- - */
- -Zone.__load_patch('Error', function (global, Zone, api) {
- - /*
- - * This code patches Error so that:
- - * - It ignores un-needed stack frames.
- - * - It Shows the associated Zone for reach frame.
- - */
- - var blacklistedStackFramesSymbol = api.symbol('blacklistedStackFrames');
- - var NativeError = global[api.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 zoneAwareFrame1;
- - var zoneAwareFrame2;
- - global['Error'] = ZoneAwareError;
- - var stackRewrite = 'stackRewrite';
- - /**
- - * This is ZoneAwareError which processes the stack frame and cleans up extra frames as well as
- - * adds zone information to it.
- - */
- - function ZoneAwareError() {
- - var _this = this;
- - // We always have to return native error otherwise the browser console will not work.
- - var error = NativeError.apply(this, arguments);
- - // Save original stack trace
- - var originalStack = error['originalStack'] = error.stack;
- - // Process the stack trace and rewrite the frames.
- - if (ZoneAwareError[stackRewrite] && originalStack) {
- - var frames_1 = originalStack.split('\n');
- - var zoneFrame = api.currentZoneFrame();
- - var i = 0;
- - // Find the first frame
- - while (!(frames_1[i] === zoneAwareFrame1 || frames_1[i] === zoneAwareFrame2) &&
- - i < frames_1.length) {
- - i++;
- - }
- - for (; i < frames_1.length && zoneFrame; i++) {
- - var frame = frames_1[i];
- - if (frame.trim()) {
- - switch (blackListedStackFrames[frame]) {
- - case 0 /* blackList */:
- - frames_1.splice(i, 1);
- - i--;
- - break;
- - case 1 /* transition */:
- - if (zoneFrame.parent) {
- - // This is the special frame where zone changed. Print and process it accordingly
- - zoneFrame = zoneFrame.parent;
- - }
- - else {
- - zoneFrame = null;
- - }
- - frames_1.splice(i, 1);
- - i--;
- - break;
- - default:
- - frames_1[i] += " [" + zoneFrame.zone.name + "]";
- - }
- - }
- - }
- - try {
- - error.stack = error.zoneAwareStack = frames_1.join('\n');
- - }
- - catch (e) {
- - // ignore as some browsers don't allow overriding of stack
- - }
- - }
- - if (this instanceof NativeError && this.constructor != NativeError) {
- - // We got called with a `new` operator AND we are subclass of ZoneAwareError
- - // in that case we have to copy all of our properties to `this`.
- - Object.keys(error).concat('stack', 'message').forEach(function (key) {
- - var value = error[key];
- - if (value !== undefined) {
- - try {
- - _this[key] = value;
- - }
- - catch (e) {
- - // ignore the assignment in case it is a setter and it throws.
- - }
- - }
- - });
- - return this;
- - }
- - return error;
- - }
- - // Copy the prototype so that instanceof operator works as expected
- - ZoneAwareError.prototype = NativeError.prototype;
- - ZoneAwareError[blacklistedStackFramesSymbol] = blackListedStackFrames;
- - ZoneAwareError[stackRewrite] = false;
- - // those properties need special handling
- - var specialPropertyNames = ['stackTraceLimit', 'captureStackTrace', 'prepareStackTrace'];
- - // those properties of NativeError should be set to ZoneAwareError
- - var nativeErrorProperties = Object.keys(NativeError);
- - if (nativeErrorProperties) {
- - nativeErrorProperties.forEach(function (prop) {
- - if (specialPropertyNames.filter(function (sp) { return sp === prop; }).length === 0) {
- - Object.defineProperty(ZoneAwareError, prop, {
- - get: function () {
- - return NativeError[prop];
- - },
- - set: function (value) {
- - NativeError[prop] = value;
- - }
- - });
- - }
- - });
- - }
- - 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);
- - }
- - });
- - }
- - var ZONE_CAPTURESTACKTRACE = 'zoneCaptureStackTrace';
- - 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() === ZONE_CAPTURESTACKTRACE) {
- - structuredStackTrace.splice(i, 1);
- - break;
- - }
- - }
- - }
- - return value.call(this, error, structuredStackTrace);
- - };
- - }
- - });
- - // Now we need to populate the `blacklistedStackFrames` as well as find the
- - // run/runGuarded/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 ZONE_AWARE_ERROR = 'ZoneAwareError';
- - var ERROR_DOT = 'Error.';
- - var EMPTY = '';
- - var RUN_GUARDED = 'runGuarded';
- - var RUN_TASK = 'runTask';
- - var RUN = 'run';
- - var BRACKETS = '(';
- - var AT = '@';
- - var detectZone = Zone.current.fork({
- - name: 'detect',
- - 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
- - // line number)
- - if (/:\d+:\d+/.test(frame)) {
- - // Get rid of the path so that we don't accidentally find function name in path.
- - // In chrome the separator 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(BRACKETS)[0].split(AT)[0];
- - var frameType = 1;
- - if (fnName.indexOf(ZONE_AWARE_ERROR) !== -1) {
- - zoneAwareFrame1 = frame;
- - zoneAwareFrame2 = frame.replace(ERROR_DOT, EMPTY);
- - blackListedStackFrames[zoneAwareFrame2] = 0 /* blackList */;
- - }
- - if (fnName.indexOf(RUN_GUARDED) !== -1) {
- - runGuardedFrame = true;
- - }
- - else if (fnName.indexOf(RUN_TASK) !== -1) {
- - runTaskFrame = true;
- - }
- - else if (fnName.indexOf(RUN) !== -1) {
- - runFrame = true;
- - }
- - else {
- - frameType = 0 /* 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 childDetectZone = detectZone.fork({
- - name: 'child',
- - onScheduleTask: function (delegate, curr, target, task) {
- - return delegate.scheduleTask(target, task);
- - },
- - onInvokeTask: function (delegate, curr, target, task, applyThis, applyArgs) {
- - return delegate.invokeTask(target, task, applyThis, applyArgs);
- - },
- - onCancelTask: function (delegate, curr, target, task) {
- - return delegate.cancelTask(target, task);
- - },
- - onInvoke: function (delegate, curr, target, callback, applyThis, applyArgs, source) {
- - return delegate.invoke(target, callback, applyThis, applyArgs, source);
- - }
- - });
- - // we need to detect all zone related frames, it will
- - // exceed default stackTraceLimit, so we set it to
- - // larger number here, and restore it after detect finish.
- - var originalStackTraceLimit = Error.stackTraceLimit;
- - Error.stackTraceLimit = 100;
- - // we schedule event/micro/macro task, and invoke them
- - // when onSchedule, so we can get all stack traces for
- - // all kinds of tasks with one error thrown.
- - childDetectZone.run(function () {
- - childDetectZone.runGuarded(function () {
- - var fakeTransitionTo = function () { };
- - childDetectZone.scheduleEventTask(blacklistedStackFramesSymbol, function () {
- - childDetectZone.scheduleMacroTask(blacklistedStackFramesSymbol, function () {
- - childDetectZone.scheduleMicroTask(blacklistedStackFramesSymbol, function () {
- - throw new ZoneAwareError(ZoneAwareError, NativeError);
- - }, null, function (t) {
- - t._transitionTo = fakeTransitionTo;
- - t.invoke();
- - });
- - }, null, function (t) {
- - t._transitionTo = fakeTransitionTo;
- - t.invoke();
- - }, function () { });
- - }, null, function (t) {
- - t._transitionTo = fakeTransitionTo;
- - t.invoke();
- - }, function () { });
- - });
- - });
- - Error.stackTraceLimit = originalStackTraceLimit;
- -});
- -
- -/**
- - * @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
- - */
- -/**
- - * @fileoverview
- - * @suppress {missingRequire}
- - */
- -var taskSymbol = zoneSymbol('zoneTask');
- -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;
- - function timer() {
- - try {
- - task.invoke.apply(this, arguments);
- - }
- - finally {
- - // issue-934, task will be cancelled
- - // even it is a periodic task such as
- - // setInterval
- - if (!(task.data && task.data.isPeriodic)) {
- - if (typeof data.handleId === 'number') {
- - // in non-nodejs env, we remove timerId
- - // from local cache
- - delete tasksByHandleId[data.handleId];
- - }
- - else if (data.handleId) {
- - // Node returns complex objects as handleIds
- - // we remove task reference from timer object
- - data.handleId[taskSymbol] = null;
- - }
- - }
- - }
- - }
- - data.args[0] = timer;
- - data.handleId = setNative.apply(window, data.args);
- - return task;
- - }
- - function clearTask(task) {
- - return clearNative(task.data.handleId);
- - }
- - setNative =
- - patchMethod(window, setName, function (delegate) { return function (self, args) {
- - if (typeof args[0] === 'function') {
- - var options = {
- - handleId: null,
- - isPeriodic: nameSuffix === 'Interval',
- - delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 : null,
- - args: args
- - };
- - var task = scheduleMacroTaskWithCurrentZone(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 (typeof handle === 'number') {
- - // for non nodejs env, we save handleId: task
- - // mapping in local cache for clearTimeout
- - tasksByHandleId[handle] = task;
- - }
- - else if (handle) {
- - // for nodejs env, we save task
- - // reference in timerId Object for clearTimeout
- - handle[taskSymbol] = task;
- - }
- - // check whether handle is null, because some polyfill or browser
- - // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame
- - if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' &&
- - typeof handle.unref === 'function') {
- - task.ref = handle.ref.bind(handle);
- - task.unref = handle.unref.bind(handle);
- - }
- - if (typeof handle === 'number' || handle) {
- - return 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 id = args[0];
- - var task;
- - if (typeof id === 'number') {
- - // non nodejs env.
- - task = tasksByHandleId[id];
- - }
- - else {
- - // nodejs env.
- - task = id && id[taskSymbol];
- - // other environments.
- - if (!task) {
- - task = id;
- - }
- - }
- - if (task && typeof task.type === 'string') {
- - if (task.state !== 'notScheduled' &&
- - (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) {
- - if (typeof id === 'number') {
- - delete tasksByHandleId[id];
- - }
- - else if (id) {
- - id[taskSymbol] = null;
- - }
- - // 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';
- -// Timers
- -patchTimer(global, set, clear, 'Timeout');
- -patchTimer(global, set, clear, 'Interval');
- -patchTimer(global, set, clear, 'Immediate');
- -
- -})));
- -export const NativeScriptZone = null;
- diff --git a/node_modules/@nativescript/zone-js/package/zone-nativescript.mocha.js b/node_modules/@nativescript/zone-js/package/zone-nativescript.mocha.js
- deleted file mode 100644
- index 0bd1cf2..0000000
- --- a/node_modules/@nativescript/zone-js/package/zone-nativescript.mocha.js
- +++ /dev/null
- @@ -1,1353 +0,0 @@
- -/**
- -* @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
- - */
- -/**
- - * @fileoverview
- - * @suppress {globalThis}
- - */
- -var NEWLINE = '\n';
- -var IGNORE_FRAMES = {};
- -var creationTrace = '__creationTrace__';
- -var ERROR_TAG = 'STACKTRACE TRACKING';
- -var SEP_TAG = '__SEP_TAG__';
- -var sepTemplate = SEP_TAG + '@[native]';
- -var LongStackTrace = /** @class */ (function () {
- - function LongStackTrace() {
- - this.error = getStacktrace();
- - this.timestamp = new Date();
- - }
- - return LongStackTrace;
- -}());
- -function getStacktraceWithUncaughtError() {
- - return new Error(ERROR_TAG);
- -}
- -function getStacktraceWithCaughtError() {
- - try {
- - throw getStacktraceWithUncaughtError();
- - }
- - catch (err) {
- - return err;
- - }
- -}
- -// Some implementations of exception handling don't create a stack trace if the exception
- -// isn't thrown, however it's faster not to actually throw the exception.
- -var error = getStacktraceWithUncaughtError();
- -var caughtError = getStacktraceWithCaughtError();
- -var getStacktrace = error.stack ?
- - getStacktraceWithUncaughtError :
- - (caughtError.stack ? getStacktraceWithCaughtError : getStacktraceWithUncaughtError);
- -function getFrames(error) {
- - return error.stack ? error.stack.split(NEWLINE) : [];
- -}
- -function addErrorStack(lines, error) {
- - var trace = getFrames(error);
- - for (var i = 0; i < trace.length; i++) {
- - var frame = trace[i];
- - // Filter out the Frames which are part of stack capturing.
- - if (!IGNORE_FRAMES.hasOwnProperty(frame)) {
- - lines.push(trace[i]);
- - }
- - }
- -}
- -function renderLongStackTrace(frames, stack) {
- - var longTrace = [stack ? stack.trim() : ''];
- - if (frames) {
- - var timestamp = new Date().getTime();
- - for (var i = 0; i < frames.length; i++) {
- - var traceFrames = frames[i];
- - var lastTime = traceFrames.timestamp;
- - var separator = "____________________Elapsed " + (timestamp - lastTime.getTime()) + " ms; At: " + lastTime;
- - separator = separator.replace(/[^\w\d]/g, '_');
- - longTrace.push(sepTemplate.replace(SEP_TAG, separator));
- - addErrorStack(longTrace, traceFrames.error);
- - timestamp = lastTime.getTime();
- - }
- - }
- - return longTrace.join(NEWLINE);
- -}
- -Zone['longStackTraceZoneSpec'] = {
- - name: 'long-stack-trace',
- - longStackTraceLimit: 10,
- - // add a getLongStackTrace method in spec to
- - // handle handled reject promise error.
- - getLongStackTrace: function (error) {
- - if (!error) {
- - return undefined;
- - }
- - var trace = error[Zone.__symbol__('currentTaskTrace')];
- - if (!trace) {
- - return error.stack;
- - }
- - return renderLongStackTrace(trace, error.stack);
- - },
- - onScheduleTask: function (parentZoneDelegate, currentZone, targetZone, task) {
- - if (Error.stackTraceLimit > 0) {
- - // if Error.stackTraceLimit is 0, means stack trace
- - // is disabled, so we don't need to generate long stack trace
- - // this will improve performance in some test(some test will
- - // set stackTraceLimit to 0, https://github.com/angular/zone.js/issues/698
- - var currentTask = Zone.currentTask;
- - var trace = currentTask && currentTask.data && currentTask.data[creationTrace] || [];
- - trace = [new LongStackTrace()].concat(trace);
- - if (trace.length > this.longStackTraceLimit) {
- - trace.length = this.longStackTraceLimit;
- - }
- - if (!task.data)
- - task.data = {};
- - task.data[creationTrace] = trace;
- - }
- - return parentZoneDelegate.scheduleTask(targetZone, task);
- - },
- - onHandleError: function (parentZoneDelegate, currentZone, targetZone, error) {
- - if (Error.stackTraceLimit > 0) {
- - // if Error.stackTraceLimit is 0, means stack trace
- - // is disabled, so we don't need to generate long stack trace
- - // this will improve performance in some test(some test will
- - // set stackTraceLimit to 0, https://github.com/angular/zone.js/issues/698
- - var parentTask = Zone.currentTask || error.task;
- - if (error instanceof Error && parentTask) {
- - var longStack = renderLongStackTrace(parentTask.data && parentTask.data[creationTrace], error.stack);
- - try {
- - error.stack = error.longStack = longStack;
- - }
- - catch (err) {
- - }
- - }
- - }
- - return parentZoneDelegate.handleError(targetZone, error);
- - }
- -};
- -function captureStackTraces(stackTraces, count) {
- - if (count > 0) {
- - stackTraces.push(getFrames((new LongStackTrace()).error));
- - captureStackTraces(stackTraces, count - 1);
- - }
- -}
- -function computeIgnoreFrames() {
- - if (Error.stackTraceLimit <= 0) {
- - return;
- - }
- - var frames = [];
- - captureStackTraces(frames, 2);
- - var frames1 = frames[0];
- - var frames2 = frames[1];
- - for (var i = 0; i < frames1.length; i++) {
- - var frame1 = frames1[i];
- - if (frame1.indexOf(ERROR_TAG) == -1) {
- - var match = frame1.match(/^\s*at\s+/);
- - if (match) {
- - sepTemplate = match[0] + SEP_TAG + ' (http://localhost)';
- - break;
- - }
- - }
- - }
- - for (var i = 0; i < frames1.length; i++) {
- - var frame1 = frames1[i];
- - var frame2 = frames2[i];
- - if (frame1 === frame2) {
- - IGNORE_FRAMES[frame1] = true;
- - }
- - else {
- - break;
- - }
- - }
- -}
- -computeIgnoreFrames();
- -
- -/**
- - * @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 ProxyZoneSpec = /** @class */ (function () {
- - function ProxyZoneSpec(defaultSpecDelegate) {
- - if (defaultSpecDelegate === void 0) { defaultSpecDelegate = null; }
- - this.defaultSpecDelegate = defaultSpecDelegate;
- - this.name = 'ProxyZone';
- - this.properties = { 'ProxyZoneSpec': this };
- - this.propertyKeys = null;
- - this.lastTaskState = null;
- - this.isNeedToTriggerHasTask = false;
- - this.tasks = [];
- - this.setDelegate(defaultSpecDelegate);
- - }
- - ProxyZoneSpec.get = function () {
- - return Zone.current.get('ProxyZoneSpec');
- - };
- - ProxyZoneSpec.isLoaded = function () {
- - return ProxyZoneSpec.get() instanceof ProxyZoneSpec;
- - };
- - ProxyZoneSpec.assertPresent = function () {
- - if (!ProxyZoneSpec.isLoaded()) {
- - throw new Error("Expected to be running in 'ProxyZone', but it was not found.");
- - }
- - return ProxyZoneSpec.get();
- - };
- - ProxyZoneSpec.prototype.setDelegate = function (delegateSpec) {
- - var _this = this;
- - var isNewDelegate = this._delegateSpec !== delegateSpec;
- - this._delegateSpec = delegateSpec;
- - this.propertyKeys && this.propertyKeys.forEach(function (key) { return delete _this.properties[key]; });
- - this.propertyKeys = null;
- - if (delegateSpec && delegateSpec.properties) {
- - this.propertyKeys = Object.keys(delegateSpec.properties);
- - this.propertyKeys.forEach(function (k) { return _this.properties[k] = delegateSpec.properties[k]; });
- - }
- - // if set a new delegateSpec, shoulde check whether need to
- - // trigger hasTask or not
- - if (isNewDelegate && this.lastTaskState &&
- - (this.lastTaskState.macroTask || this.lastTaskState.microTask)) {
- - this.isNeedToTriggerHasTask = true;
- - }
- - };
- - ProxyZoneSpec.prototype.getDelegate = function () {
- - return this._delegateSpec;
- - };
- - ProxyZoneSpec.prototype.resetDelegate = function () {
- - var delegateSpec = this.getDelegate();
- - this.setDelegate(this.defaultSpecDelegate);
- - };
- - ProxyZoneSpec.prototype.tryTriggerHasTask = function (parentZoneDelegate, currentZone, targetZone) {
- - if (this.isNeedToTriggerHasTask && this.lastTaskState) {
- - // last delegateSpec has microTask or macroTask
- - // should call onHasTask in current delegateSpec
- - this.isNeedToTriggerHasTask = false;
- - this.onHasTask(parentZoneDelegate, currentZone, targetZone, this.lastTaskState);
- - }
- - };
- - ProxyZoneSpec.prototype.removeFromTasks = function (task) {
- - if (!this.tasks) {
- - return;
- - }
- - for (var i = 0; i < this.tasks.length; i++) {
- - if (this.tasks[i] === task) {
- - this.tasks.splice(i, 1);
- - return;
- - }
- - }
- - };
- - ProxyZoneSpec.prototype.getAndClearPendingTasksInfo = function () {
- - if (this.tasks.length === 0) {
- - return '';
- - }
- - var taskInfo = this.tasks.map(function (task) {
- - var dataInfo = task.data &&
- - Object.keys(task.data)
- - .map(function (key) {
- - return key + ':' + task.data[key];
- - })
- - .join(',');
- - return "type: " + task.type + ", source: " + task.source + ", args: {" + dataInfo + "}";
- - });
- - var pendingTasksInfo = '--Pendng async tasks are: [' + taskInfo + ']';
- - // clear tasks
- - this.tasks = [];
- - return pendingTasksInfo;
- - };
- - ProxyZoneSpec.prototype.onFork = function (parentZoneDelegate, currentZone, targetZone, zoneSpec) {
- - if (this._delegateSpec && this._delegateSpec.onFork) {
- - return this._delegateSpec.onFork(parentZoneDelegate, currentZone, targetZone, zoneSpec);
- - }
- - else {
- - return parentZoneDelegate.fork(targetZone, zoneSpec);
- - }
- - };
- - ProxyZoneSpec.prototype.onIntercept = function (parentZoneDelegate, currentZone, targetZone, delegate, source) {
- - if (this._delegateSpec && this._delegateSpec.onIntercept) {
- - return this._delegateSpec.onIntercept(parentZoneDelegate, currentZone, targetZone, delegate, source);
- - }
- - else {
- - return parentZoneDelegate.intercept(targetZone, delegate, source);
- - }
- - };
- - ProxyZoneSpec.prototype.onInvoke = function (parentZoneDelegate, currentZone, targetZone, delegate, applyThis, applyArgs, source) {
- - this.tryTriggerHasTask(parentZoneDelegate, currentZone, targetZone);
- - if (this._delegateSpec && this._delegateSpec.onInvoke) {
- - return this._delegateSpec.onInvoke(parentZoneDelegate, currentZone, targetZone, delegate, applyThis, applyArgs, source);
- - }
- - else {
- - return parentZoneDelegate.invoke(targetZone, delegate, applyThis, applyArgs, source);
- - }
- - };
- - ProxyZoneSpec.prototype.onHandleError = function (parentZoneDelegate, currentZone, targetZone, error) {
- - if (this._delegateSpec && this._delegateSpec.onHandleError) {
- - return this._delegateSpec.onHandleError(parentZoneDelegate, currentZone, targetZone, error);
- - }
- - else {
- - return parentZoneDelegate.handleError(targetZone, error);
- - }
- - };
- - ProxyZoneSpec.prototype.onScheduleTask = function (parentZoneDelegate, currentZone, targetZone, task) {
- - if (task.type !== 'eventTask') {
- - this.tasks.push(task);
- - }
- - if (this._delegateSpec && this._delegateSpec.onScheduleTask) {
- - return this._delegateSpec.onScheduleTask(parentZoneDelegate, currentZone, targetZone, task);
- - }
- - else {
- - return parentZoneDelegate.scheduleTask(targetZone, task);
- - }
- - };
- - ProxyZoneSpec.prototype.onInvokeTask = function (parentZoneDelegate, currentZone, targetZone, task, applyThis, applyArgs) {
- - if (task.type !== 'eventTask') {
- - this.removeFromTasks(task);
- - }
- - this.tryTriggerHasTask(parentZoneDelegate, currentZone, targetZone);
- - if (this._delegateSpec && this._delegateSpec.onInvokeTask) {
- - return this._delegateSpec.onInvokeTask(parentZoneDelegate, currentZone, targetZone, task, applyThis, applyArgs);
- - }
- - else {
- - return parentZoneDelegate.invokeTask(targetZone, task, applyThis, applyArgs);
- - }
- - };
- - ProxyZoneSpec.prototype.onCancelTask = function (parentZoneDelegate, currentZone, targetZone, task) {
- - if (task.type !== 'eventTask') {
- - this.removeFromTasks(task);
- - }
- - this.tryTriggerHasTask(parentZoneDelegate, currentZone, targetZone);
- - if (this._delegateSpec && this._delegateSpec.onCancelTask) {
- - return this._delegateSpec.onCancelTask(parentZoneDelegate, currentZone, targetZone, task);
- - }
- - else {
- - return parentZoneDelegate.cancelTask(targetZone, task);
- - }
- - };
- - ProxyZoneSpec.prototype.onHasTask = function (delegate, current, target, hasTaskState) {
- - this.lastTaskState = hasTaskState;
- - if (this._delegateSpec && this._delegateSpec.onHasTask) {
- - this._delegateSpec.onHasTask(delegate, current, target, hasTaskState);
- - }
- - else {
- - delegate.hasTask(target, hasTaskState);
- - }
- - };
- - return ProxyZoneSpec;
- -}());
- -// Export the class so that new instances can be created with proper
- -// constructor params.
- -Zone['ProxyZoneSpec'] = ProxyZoneSpec;
- -
- -/**
- - * @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 SyncTestZoneSpec = /** @class */ (function () {
- - function SyncTestZoneSpec(namePrefix) {
- - this.runZone = Zone.current;
- - this.name = 'syncTestZone for ' + namePrefix;
- - }
- - SyncTestZoneSpec.prototype.onScheduleTask = function (delegate, current, target, task) {
- - switch (task.type) {
- - case 'microTask':
- - case 'macroTask':
- - throw new Error("Cannot call " + task.source + " from within a sync test.");
- - case 'eventTask':
- - task = delegate.scheduleTask(target, task);
- - break;
- - }
- - return task;
- - };
- - return SyncTestZoneSpec;
- -}());
- -// Export the class so that new instances can be created with proper
- -// constructor params.
- -Zone['SyncTestZoneSpec'] = SyncTestZoneSpec;
- -
- -/**
- - * @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 _global = typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global;
- -var AsyncTestZoneSpec = /** @class */ (function () {
- - function AsyncTestZoneSpec(finishCallback, failCallback, namePrefix) {
- - this.finishCallback = finishCallback;
- - this.failCallback = failCallback;
- - this._pendingMicroTasks = false;
- - this._pendingMacroTasks = false;
- - this._alreadyErrored = false;
- - this._isSync = false;
- - this.runZone = Zone.current;
- - this.unresolvedChainedPromiseCount = 0;
- - this.supportWaitUnresolvedChainedPromise = false;
- - this.name = 'asyncTestZone for ' + namePrefix;
- - this.properties = { 'AsyncTestZoneSpec': this };
- - this.supportWaitUnresolvedChainedPromise =
- - _global[Zone.__symbol__('supportWaitUnResolvedChainedPromise')] === true;
- - }
- - AsyncTestZoneSpec.prototype.isUnresolvedChainedPromisePending = function () {
- - return this.unresolvedChainedPromiseCount > 0;
- - };
- - AsyncTestZoneSpec.prototype._finishCallbackIfDone = function () {
- - var _this = this;
- - if (!(this._pendingMicroTasks || this._pendingMacroTasks ||
- - (this.supportWaitUnresolvedChainedPromise && this.isUnresolvedChainedPromisePending()))) {
- - // We do this because we would like to catch unhandled rejected promises.
- - this.runZone.run(function () {
- - setTimeout(function () {
- - if (!_this._alreadyErrored && !(_this._pendingMicroTasks || _this._pendingMacroTasks)) {
- - _this.finishCallback();
- - }
- - }, 0);
- - });
- - }
- - };
- - AsyncTestZoneSpec.prototype.patchPromiseForTest = function () {
- - if (!this.supportWaitUnresolvedChainedPromise) {
- - return;
- - }
- - var patchPromiseForTest = Promise[Zone.__symbol__('patchPromiseForTest')];
- - if (patchPromiseForTest) {
- - patchPromiseForTest();
- - }
- - };
- - AsyncTestZoneSpec.prototype.unPatchPromiseForTest = function () {
- - if (!this.supportWaitUnresolvedChainedPromise) {
- - return;
- - }
- - var unPatchPromiseForTest = Promise[Zone.__symbol__('unPatchPromiseForTest')];
- - if (unPatchPromiseForTest) {
- - unPatchPromiseForTest();
- - }
- - };
- - AsyncTestZoneSpec.prototype.onScheduleTask = function (delegate, current, target, task) {
- - if (task.type !== 'eventTask') {
- - this._isSync = false;
- - }
- - if (task.type === 'microTask' && task.data && task.data instanceof Promise) {
- - // check whether the promise is a chained promise
- - if (task.data[AsyncTestZoneSpec.symbolParentUnresolved] === true) {
- - // chained promise is being scheduled
- - this.unresolvedChainedPromiseCount--;
- - }
- - }
- - return delegate.scheduleTask(target, task);
- - };
- - AsyncTestZoneSpec.prototype.onInvokeTask = function (delegate, current, target, task, applyThis, applyArgs) {
- - if (task.type !== 'eventTask') {
- - this._isSync = false;
- - }
- - return delegate.invokeTask(target, task, applyThis, applyArgs);
- - };
- - AsyncTestZoneSpec.prototype.onCancelTask = function (delegate, current, target, task) {
- - if (task.type !== 'eventTask') {
- - this._isSync = false;
- - }
- - return delegate.cancelTask(target, task);
- - };
- - // Note - we need to use onInvoke at the moment to call finish when a test is
- - // fully synchronous. TODO(juliemr): remove this when the logic for
- - // onHasTask changes and it calls whenever the task queues are dirty.
- - // updated by(JiaLiPassion), only call finish callback when no task
- - // was scheduled/invoked/canceled.
- - AsyncTestZoneSpec.prototype.onInvoke = function (parentZoneDelegate, currentZone, targetZone, delegate, applyThis, applyArgs, source) {
- - try {
- - this._isSync = true;
- - return parentZoneDelegate.invoke(targetZone, delegate, applyThis, applyArgs, source);
- - }
- - finally {
- - var afterTaskCounts = parentZoneDelegate._taskCounts;
- - if (this._isSync) {
- - this._finishCallbackIfDone();
- - }
- - }
- - };
- - AsyncTestZoneSpec.prototype.onHandleError = function (parentZoneDelegate, currentZone, targetZone, error) {
- - // Let the parent try to handle the error.
- - var result = parentZoneDelegate.handleError(targetZone, error);
- - if (result) {
- - this.failCallback(error);
- - this._alreadyErrored = true;
- - }
- - return false;
- - };
- - AsyncTestZoneSpec.prototype.onHasTask = function (delegate, current, target, hasTaskState) {
- - delegate.hasTask(target, hasTaskState);
- - if (hasTaskState.change == 'microTask') {
- - this._pendingMicroTasks = hasTaskState.microTask;
- - this._finishCallbackIfDone();
- - }
- - else if (hasTaskState.change == 'macroTask') {
- - this._pendingMacroTasks = hasTaskState.macroTask;
- - this._finishCallbackIfDone();
- - }
- - };
- - AsyncTestZoneSpec.symbolParentUnresolved = Zone.__symbol__('parentUnresolved');
- - return AsyncTestZoneSpec;
- -}());
- -// Export the class so that new instances can be created with proper
- -// constructor params.
- -Zone['AsyncTestZoneSpec'] = AsyncTestZoneSpec;
- -
- -/**
- - * @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 __read = (undefined && undefined.__read) || function (o, n) {
- - var m = typeof Symbol === "function" && o[Symbol.iterator];
- - if (!m) return o;
- - var i = m.call(o), r, ar = [], e;
- - try {
- - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
- - }
- - catch (error) { e = { error: error }; }
- - finally {
- - try {
- - if (r && !r.done && (m = i["return"])) m.call(i);
- - }
- - finally { if (e) throw e.error; }
- - }
- - return ar;
- -};
- -var __spread = (undefined && undefined.__spread) || function () {
- - for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
- - return ar;
- -};
- -(function (global) {
- - var OriginalDate = global.Date;
- - var FakeDate = /** @class */ (function () {
- - function FakeDate() {
- - if (arguments.length === 0) {
- - var d = new OriginalDate();
- - d.setTime(FakeDate.now());
- - return d;
- - }
- - else {
- - var args = Array.prototype.slice.call(arguments);
- - return new (OriginalDate.bind.apply(OriginalDate, __spread([void 0], args)))();
- - }
- - }
- - FakeDate.now = function () {
- - var fakeAsyncTestZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');
- - if (fakeAsyncTestZoneSpec) {
- - return fakeAsyncTestZoneSpec.getCurrentRealTime() + fakeAsyncTestZoneSpec.getCurrentTime();
- - }
- - return OriginalDate.now.apply(this, arguments);
- - };
- - return FakeDate;
- - }());
- - FakeDate.UTC = OriginalDate.UTC;
- - FakeDate.parse = OriginalDate.parse;
- - // keep a reference for zone patched timer function
- - var timers = {
- - setTimeout: global.setTimeout,
- - setInterval: global.setInterval,
- - clearTimeout: global.clearTimeout,
- - clearInterval: global.clearInterval
- - };
- - var Scheduler = /** @class */ (function () {
- - function Scheduler() {
- - // Next scheduler id.
- - this.nextId = 1;
- - // Scheduler queue with the tuple of end time and callback function - sorted by end time.
- - this._schedulerQueue = [];
- - // Current simulated time in millis.
- - this._currentTime = 0;
- - // Current real time in millis.
- - this._currentRealTime = OriginalDate.now();
- - }
- - Scheduler.prototype.getCurrentTime = function () {
- - return this._currentTime;
- - };
- - Scheduler.prototype.getCurrentRealTime = function () {
- - return this._currentRealTime;
- - };
- - Scheduler.prototype.setCurrentRealTime = function (realTime) {
- - this._currentRealTime = realTime;
- - };
- - Scheduler.prototype.scheduleFunction = function (cb, delay, args, isPeriodic, isRequestAnimationFrame, id) {
- - if (args === void 0) { args = []; }
- - if (isPeriodic === void 0) { isPeriodic = false; }
- - if (isRequestAnimationFrame === void 0) { isRequestAnimationFrame = false; }
- - if (id === void 0) { id = -1; }
- - var currentId = id < 0 ? this.nextId++ : id;
- - var endTime = this._currentTime + delay;
- - // Insert so that scheduler queue remains sorted by end time.
- - var newEntry = {
- - endTime: endTime,
- - id: currentId,
- - func: cb,
- - args: args,
- - delay: delay,
- - isPeriodic: isPeriodic,
- - isRequestAnimationFrame: isRequestAnimationFrame
- - };
- - var i = 0;
- - for (; i < this._schedulerQueue.length; i++) {
- - var currentEntry = this._schedulerQueue[i];
- - if (newEntry.endTime < currentEntry.endTime) {
- - break;
- - }
- - }
- - this._schedulerQueue.splice(i, 0, newEntry);
- - return currentId;
- - };
- - Scheduler.prototype.removeScheduledFunctionWithId = function (id) {
- - for (var i = 0; i < this._schedulerQueue.length; i++) {
- - if (this._schedulerQueue[i].id == id) {
- - this._schedulerQueue.splice(i, 1);
- - break;
- - }
- - }
- - };
- - Scheduler.prototype.tick = function (millis, doTick) {
- - if (millis === void 0) { millis = 0; }
- - var finalTime = this._currentTime + millis;
- - var lastCurrentTime = 0;
- - if (this._schedulerQueue.length === 0 && doTick) {
- - doTick(millis);
- - return;
- - }
- - while (this._schedulerQueue.length > 0) {
- - var current = this._schedulerQueue[0];
- - if (finalTime < current.endTime) {
- - // Done processing the queue since it's sorted by endTime.
- - break;
- - }
- - else {
- - // Time to run scheduled function. Remove it from the head of queue.
- - var current_1 = this._schedulerQueue.shift();
- - lastCurrentTime = this._currentTime;
- - this._currentTime = current_1.endTime;
- - if (doTick) {
- - doTick(this._currentTime - lastCurrentTime);
- - }
- - var retval = current_1.func.apply(global, current_1.args);
- - if (!retval) {
- - // Uncaught exception in the current scheduled function. Stop processing the queue.
- - break;
- - }
- - }
- - }
- - this._currentTime = finalTime;
- - };
- - Scheduler.prototype.flush = function (limit, flushPeriodic, doTick) {
- - if (limit === void 0) { limit = 20; }
- - if (flushPeriodic === void 0) { flushPeriodic = false; }
- - if (flushPeriodic) {
- - return this.flushPeriodic(doTick);
- - }
- - else {
- - return this.flushNonPeriodic(limit, doTick);
- - }
- - };
- - Scheduler.prototype.flushPeriodic = function (doTick) {
- - if (this._schedulerQueue.length === 0) {
- - return 0;
- - }
- - // Find the last task currently queued in the scheduler queue and tick
- - // till that time.
- - var startTime = this._currentTime;
- - var lastTask = this._schedulerQueue[this._schedulerQueue.length - 1];
- - this.tick(lastTask.endTime - startTime, doTick);
- - return this._currentTime - startTime;
- - };
- - Scheduler.prototype.flushNonPeriodic = function (limit, doTick) {
- - var startTime = this._currentTime;
- - var lastCurrentTime = 0;
- - 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?');
- - }
- - // flush only non-periodic timers.
- - // If the only remaining tasks are periodic(or requestAnimationFrame), finish flushing.
- - if (this._schedulerQueue.filter(function (task) { return !task.isPeriodic && !task.isRequestAnimationFrame; })
- - .length === 0) {
- - break;
- - }
- - var current = this._schedulerQueue.shift();
- - lastCurrentTime = this._currentTime;
- - this._currentTime = current.endTime;
- - if (doTick) {
- - // Update any secondary schedulers like Jasmine mock Date.
- - doTick(this._currentTime - lastCurrentTime);
- - }
- - 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;
- - }());
- - var FakeAsyncTestZoneSpec = /** @class */ (function () {
- - function FakeAsyncTestZoneSpec(namePrefix, trackPendingRequestAnimationFrame, macroTaskOptions) {
- - if (trackPendingRequestAnimationFrame === void 0) { trackPendingRequestAnimationFrame = false; }
- - this.trackPendingRequestAnimationFrame = trackPendingRequestAnimationFrame;
- - this.macroTaskOptions = macroTaskOptions;
- - this._scheduler = new Scheduler();
- - this._microtasks = [];
- - this._lastError = null;
- - this._uncaughtPromiseErrors = Promise[Zone.__symbol__('uncaughtPromiseErrors')];
- - this.pendingPeriodicTimers = [];
- - this.pendingTimers = [];
- - this.patchDateLocked = false;
- - this.properties = { 'FakeAsyncTestZoneSpec': this };
- - this.name = 'fakeAsyncTestZone for ' + namePrefix;
- - // in case user can't access the construction of FakeAsyncTestSpec
- - // user can also define macroTaskOptions by define a global variable.
- - if (!this.macroTaskOptions) {
- - this.macroTaskOptions = global[Zone.__symbol__('FakeAsyncTestMacroTask')];
- - }
- - }
- - FakeAsyncTestZoneSpec.assertInZone = function () {
- - if (Zone.current.get('FakeAsyncTestZoneSpec') == null) {
- - throw new Error('The code should be running in the fakeAsync zone to call this function');
- - }
- - };
- - FakeAsyncTestZoneSpec.prototype._fnAndFlush = function (fn, completers) {
- - var _this = this;
- - return function () {
- - var args = [];
- - for (var _i = 0; _i < arguments.length; _i++) {
- - args[_i] = arguments[_i];
- - }
- - fn.apply(global, args);
- - if (_this._lastError === null) {
- - if (completers.onSuccess != null) {
- - completers.onSuccess.apply(global);
- - }
- - // Flush microtasks only on success.
- - _this.flushMicrotasks();
- - }
- - else {
- - if (completers.onError != null) {
- - completers.onError.apply(global);
- - }
- - }
- - // Return true if there were no errors, false otherwise.
- - return _this._lastError === null;
- - };
- - };
- - FakeAsyncTestZoneSpec._removeTimer = function (timers, id) {
- - var index = timers.indexOf(id);
- - if (index > -1) {
- - timers.splice(index, 1);
- - }
- - };
- - FakeAsyncTestZoneSpec.prototype._dequeueTimer = function (id) {
- - var _this = this;
- - return function () {
- - FakeAsyncTestZoneSpec._removeTimer(_this.pendingTimers, id);
- - };
- - };
- - FakeAsyncTestZoneSpec.prototype._requeuePeriodicTimer = function (fn, interval, args, id) {
- - var _this = this;
- - return function () {
- - // Requeue the timer callback if it's not been canceled.
- - if (_this.pendingPeriodicTimers.indexOf(id) !== -1) {
- - _this._scheduler.scheduleFunction(fn, interval, args, true, false, id);
- - }
- - };
- - };
- - FakeAsyncTestZoneSpec.prototype._dequeuePeriodicTimer = function (id) {
- - var _this = this;
- - return function () {
- - FakeAsyncTestZoneSpec._removeTimer(_this.pendingPeriodicTimers, id);
- - };
- - };
- - FakeAsyncTestZoneSpec.prototype._setTimeout = function (fn, delay, args, isTimer) {
- - if (isTimer === void 0) { isTimer = true; }
- - var removeTimerFn = this._dequeueTimer(this._scheduler.nextId);
- - // Queue the callback and dequeue the timer on success and error.
- - var cb = this._fnAndFlush(fn, { onSuccess: removeTimerFn, onError: removeTimerFn });
- - var id = this._scheduler.scheduleFunction(cb, delay, args, false, !isTimer);
- - if (isTimer) {
- - this.pendingTimers.push(id);
- - }
- - return id;
- - };
- - FakeAsyncTestZoneSpec.prototype._clearTimeout = function (id) {
- - FakeAsyncTestZoneSpec._removeTimer(this.pendingTimers, id);
- - this._scheduler.removeScheduledFunctionWithId(id);
- - };
- - FakeAsyncTestZoneSpec.prototype._setInterval = function (fn, interval, args) {
- - var id = this._scheduler.nextId;
- - var completers = { onSuccess: null, onError: this._dequeuePeriodicTimer(id) };
- - var cb = this._fnAndFlush(fn, completers);
- - // Use the callback created above to requeue on success.
- - completers.onSuccess = this._requeuePeriodicTimer(cb, interval, args, id);
- - // Queue the callback and dequeue the periodic timer only on error.
- - this._scheduler.scheduleFunction(cb, interval, args, true);
- - this.pendingPeriodicTimers.push(id);
- - return id;
- - };
- - FakeAsyncTestZoneSpec.prototype._clearInterval = function (id) {
- - FakeAsyncTestZoneSpec._removeTimer(this.pendingPeriodicTimers, id);
- - this._scheduler.removeScheduledFunctionWithId(id);
- - };
- - FakeAsyncTestZoneSpec.prototype._resetLastErrorAndThrow = function () {
- - var error = this._lastError || this._uncaughtPromiseErrors[0];
- - this._uncaughtPromiseErrors.length = 0;
- - this._lastError = null;
- - throw error;
- - };
- - FakeAsyncTestZoneSpec.prototype.getCurrentTime = function () {
- - return this._scheduler.getCurrentTime();
- - };
- - FakeAsyncTestZoneSpec.prototype.getCurrentRealTime = function () {
- - return this._scheduler.getCurrentRealTime();
- - };
- - FakeAsyncTestZoneSpec.prototype.setCurrentRealTime = function (realTime) {
- - this._scheduler.setCurrentRealTime(realTime);
- - };
- - FakeAsyncTestZoneSpec.patchDate = function () {
- - if (global['Date'] === FakeDate) {
- - // already patched
- - return;
- - }
- - global['Date'] = FakeDate;
- - FakeDate.prototype = OriginalDate.prototype;
- - // try check and reset timers
- - // because jasmine.clock().install() may
- - // have replaced the global timer
- - FakeAsyncTestZoneSpec.checkTimerPatch();
- - };
- - FakeAsyncTestZoneSpec.resetDate = function () {
- - if (global['Date'] === FakeDate) {
- - global['Date'] = OriginalDate;
- - }
- - };
- - FakeAsyncTestZoneSpec.checkTimerPatch = function () {
- - if (global.setTimeout !== timers.setTimeout) {
- - global.setTimeout = timers.setTimeout;
- - global.clearTimeout = timers.clearTimeout;
- - }
- - if (global.setInterval !== timers.setInterval) {
- - global.setInterval = timers.setInterval;
- - global.clearInterval = timers.clearInterval;
- - }
- - };
- - FakeAsyncTestZoneSpec.prototype.lockDatePatch = function () {
- - this.patchDateLocked = true;
- - FakeAsyncTestZoneSpec.patchDate();
- - };
- - FakeAsyncTestZoneSpec.prototype.unlockDatePatch = function () {
- - this.patchDateLocked = false;
- - FakeAsyncTestZoneSpec.resetDate();
- - };
- - FakeAsyncTestZoneSpec.prototype.tick = function (millis, doTick) {
- - if (millis === void 0) { millis = 0; }
- - FakeAsyncTestZoneSpec.assertInZone();
- - this.flushMicrotasks();
- - this._scheduler.tick(millis, doTick);
- - if (this._lastError !== null) {
- - this._resetLastErrorAndThrow();
- - }
- - };
- - FakeAsyncTestZoneSpec.prototype.flushMicrotasks = function () {
- - var _this = this;
- - FakeAsyncTestZoneSpec.assertInZone();
- - var flushErrors = function () {
- - if (_this._lastError !== null || _this._uncaughtPromiseErrors.length) {
- - // If there is an error stop processing the microtask queue and rethrow the error.
- - _this._resetLastErrorAndThrow();
- - }
- - };
- - while (this._microtasks.length > 0) {
- - var microtask = this._microtasks.shift();
- - microtask.func.apply(microtask.target, microtask.args);
- - }
- - flushErrors();
- - };
- - FakeAsyncTestZoneSpec.prototype.flush = function (limit, flushPeriodic, doTick) {
- - FakeAsyncTestZoneSpec.assertInZone();
- - this.flushMicrotasks();
- - var elapsed = this._scheduler.flush(limit, flushPeriodic, doTick);
- - if (this._lastError !== null) {
- - this._resetLastErrorAndThrow();
- - }
- - return elapsed;
- - };
- - FakeAsyncTestZoneSpec.prototype.onScheduleTask = function (delegate, current, target, task) {
- - switch (task.type) {
- - case 'microTask':
- - 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 additionalArgs = void 0;
- - if (args) {
- - var callbackIndex = task.data.cbIdx;
- - if (typeof args.length === 'number' && args.length > callbackIndex + 1) {
- - additionalArgs = Array.prototype.slice.call(args, callbackIndex + 1);
- - }
- - }
- - this._microtasks.push({
- - func: task.invoke,
- - args: additionalArgs,
- - target: task.data && task.data.target
- - });
- - break;
- - case 'macroTask':
- - switch (task.source) {
- - case 'setTimeout':
- - task.data['handleId'] = this._setTimeout(task.invoke, task.data['delay'], Array.prototype.slice.call(task.data['args'], 2));
- - break;
- - case 'setImmediate':
- - task.data['handleId'] = this._setTimeout(task.invoke, 0, Array.prototype.slice.call(task.data['args'], 1));
- - break;
- - case 'setInterval':
- - task.data['handleId'] = this._setInterval(task.invoke, task.data['delay'], Array.prototype.slice.call(task.data['args'], 2));
- - break;
- - case 'XMLHttpRequest.send':
- - throw new Error('Cannot make XHRs from within a fake async test. Request URL: ' +
- - task.data['url']);
- - case 'requestAnimationFrame':
- - case 'webkitRequestAnimationFrame':
- - case 'mozRequestAnimationFrame':
- - // Simulate a requestAnimationFrame by using a setTimeout with 16 ms.
- - // (60 frames per second)
- - task.data['handleId'] = this._setTimeout(task.invoke, 16, task.data['args'], this.trackPendingRequestAnimationFrame);
- - break;
- - default:
- - // user can define which macroTask they want to support by passing
- - // macroTaskOptions
- - var macroTaskOption = this.findMacroTaskOption(task);
- - if (macroTaskOption) {
- - var args_1 = task.data && task.data['args'];
- - var delay = args_1 && args_1.length > 1 ? args_1[1] : 0;
- - var callbackArgs = macroTaskOption.callbackArgs ? macroTaskOption.callbackArgs : args_1;
- - if (!!macroTaskOption.isPeriodic) {
- - // periodic macroTask, use setInterval to simulate
- - task.data['handleId'] = this._setInterval(task.invoke, delay, callbackArgs);
- - task.data.isPeriodic = true;
- - }
- - else {
- - // not periodic, use setTimeout to simulate
- - task.data['handleId'] = this._setTimeout(task.invoke, delay, callbackArgs);
- - }
- - break;
- - }
- - throw new Error('Unknown macroTask scheduled in fake async test: ' + task.source);
- - }
- - break;
- - case 'eventTask':
- - task = delegate.scheduleTask(target, task);
- - break;
- - }
- - return task;
- - };
- - FakeAsyncTestZoneSpec.prototype.onCancelTask = function (delegate, current, target, task) {
- - switch (task.source) {
- - case 'setTimeout':
- - case 'requestAnimationFrame':
- - case 'webkitRequestAnimationFrame':
- - case 'mozRequestAnimationFrame':
- - return this._clearTimeout(task.data['handleId']);
- - case 'setInterval':
- - return this._clearInterval(task.data['handleId']);
- - default:
- - // user can define which macroTask they want to support by passing
- - // macroTaskOptions
- - var macroTaskOption = this.findMacroTaskOption(task);
- - if (macroTaskOption) {
- - var handleId = task.data['handleId'];
- - return macroTaskOption.isPeriodic ? this._clearInterval(handleId) :
- - this._clearTimeout(handleId);
- - }
- - return delegate.cancelTask(target, task);
- - }
- - };
- - FakeAsyncTestZoneSpec.prototype.onInvoke = function (delegate, current, target, callback, applyThis, applyArgs, source) {
- - try {
- - FakeAsyncTestZoneSpec.patchDate();
- - return delegate.invoke(target, callback, applyThis, applyArgs, source);
- - }
- - finally {
- - if (!this.patchDateLocked) {
- - FakeAsyncTestZoneSpec.resetDate();
- - }
- - }
- - };
- - FakeAsyncTestZoneSpec.prototype.findMacroTaskOption = function (task) {
- - if (!this.macroTaskOptions) {
- - return null;
- - }
- - for (var i = 0; i < this.macroTaskOptions.length; i++) {
- - var macroTaskOption = this.macroTaskOptions[i];
- - if (macroTaskOption.source === task.source) {
- - return macroTaskOption;
- - }
- - }
- - return null;
- - };
- - FakeAsyncTestZoneSpec.prototype.onHandleError = function (parentZoneDelegate, currentZone, targetZone, error) {
- - this._lastError = error;
- - return false; // Don't propagate error to parent zone.
- - };
- - return FakeAsyncTestZoneSpec;
- - }());
- - // Export the class so that new instances can be created with proper
- - // constructor params.
- - Zone['FakeAsyncTestZoneSpec'] = FakeAsyncTestZoneSpec;
- -})(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
- - */
- -/**
- - * A `TaskTrackingZoneSpec` allows one to track all outstanding Tasks.
- - *
- - * This is useful in tests. For example to see which tasks are preventing a test from completing
- - * or an automated way of releasing all of the event listeners at the end of the test.
- - */
- -var TaskTrackingZoneSpec = /** @class */ (function () {
- - function TaskTrackingZoneSpec() {
- - this.name = 'TaskTrackingZone';
- - this.microTasks = [];
- - this.macroTasks = [];
- - this.eventTasks = [];
- - this.properties = { 'TaskTrackingZone': this };
- - }
- - TaskTrackingZoneSpec.get = function () {
- - return Zone.current.get('TaskTrackingZone');
- - };
- - TaskTrackingZoneSpec.prototype.getTasksFor = function (type) {
- - switch (type) {
- - case 'microTask':
- - return this.microTasks;
- - case 'macroTask':
- - return this.macroTasks;
- - case 'eventTask':
- - return this.eventTasks;
- - }
- - throw new Error('Unknown task format: ' + type);
- - };
- - TaskTrackingZoneSpec.prototype.onScheduleTask = function (parentZoneDelegate, currentZone, targetZone, task) {
- - task['creationLocation'] = new Error("Task '" + task.type + "' from '" + task.source + "'.");
- - var tasks = this.getTasksFor(task.type);
- - tasks.push(task);
- - return parentZoneDelegate.scheduleTask(targetZone, task);
- - };
- - TaskTrackingZoneSpec.prototype.onCancelTask = function (parentZoneDelegate, currentZone, targetZone, task) {
- - var tasks = this.getTasksFor(task.type);
- - for (var i = 0; i < tasks.length; i++) {
- - if (tasks[i] == task) {
- - tasks.splice(i, 1);
- - break;
- - }
- - }
- - return parentZoneDelegate.cancelTask(targetZone, task);
- - };
- - TaskTrackingZoneSpec.prototype.onInvokeTask = function (parentZoneDelegate, currentZone, targetZone, task, applyThis, applyArgs) {
- - if (task.type === 'eventTask')
- - return parentZoneDelegate.invokeTask(targetZone, task, applyThis, applyArgs);
- - var tasks = this.getTasksFor(task.type);
- - for (var i = 0; i < tasks.length; i++) {
- - if (tasks[i] == task) {
- - tasks.splice(i, 1);
- - break;
- - }
- - }
- - return parentZoneDelegate.invokeTask(targetZone, task, applyThis, applyArgs);
- - };
- - TaskTrackingZoneSpec.prototype.clearEvents = function () {
- - while (this.eventTasks.length) {
- - Zone.current.cancelTask(this.eventTasks[0]);
- - }
- - };
- - return TaskTrackingZoneSpec;
- -}());
- -// Export the class so that new instances can be created with proper
- -// constructor params.
- -Zone['TaskTrackingZoneSpec'] = TaskTrackingZoneSpec;
- -
- -/**
- - * @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
- - */
- -/**
- - * @fileoverview
- - * @suppress {missingRequire}
- - */
- -(function (global) {
- - // Detect and setup WTF.
- - var wtfTrace = null;
- - var wtfEvents = null;
- - var wtfEnabled = (function () {
- - var wtf = global['wtf'];
- - if (wtf) {
- - wtfTrace = wtf.trace;
- - if (wtfTrace) {
- - wtfEvents = wtfTrace.events;
- - return true;
- - }
- - }
- - return false;
- - })();
- - var WtfZoneSpec = /** @class */ (function () {
- - function WtfZoneSpec() {
- - this.name = 'WTF';
- - }
- - WtfZoneSpec.prototype.onFork = function (parentZoneDelegate, currentZone, targetZone, zoneSpec) {
- - var retValue = parentZoneDelegate.fork(targetZone, zoneSpec);
- - WtfZoneSpec.forkInstance(zonePathName(targetZone), retValue.name);
- - return retValue;
- - };
- - WtfZoneSpec.prototype.onInvoke = function (parentZoneDelegate, currentZone, targetZone, delegate, applyThis, applyArgs, source) {
- - var scope = WtfZoneSpec.invokeScope[source];
- - if (!scope) {
- - scope = WtfZoneSpec.invokeScope[source] =
- - wtfEvents.createScope("Zone:invoke:" + source + "(ascii zone)");
- - }
- - return wtfTrace.leaveScope(scope(zonePathName(targetZone)), parentZoneDelegate.invoke(targetZone, delegate, applyThis, applyArgs, source));
- - };
- - WtfZoneSpec.prototype.onHandleError = function (parentZoneDelegate, currentZone, targetZone, error) {
- - return parentZoneDelegate.handleError(targetZone, error);
- - };
- - WtfZoneSpec.prototype.onScheduleTask = function (parentZoneDelegate, currentZone, targetZone, task) {
- - var key = task.type + ':' + task.source;
- - var instance = WtfZoneSpec.scheduleInstance[key];
- - if (!instance) {
- - instance = WtfZoneSpec.scheduleInstance[key] =
- - wtfEvents.createInstance("Zone:schedule:" + key + "(ascii zone, any data)");
- - }
- - var retValue = parentZoneDelegate.scheduleTask(targetZone, task);
- - instance(zonePathName(targetZone), shallowObj(task.data, 2));
- - return retValue;
- - };
- - WtfZoneSpec.prototype.onInvokeTask = function (parentZoneDelegate, currentZone, targetZone, task, applyThis, applyArgs) {
- - var source = task.source;
- - var scope = WtfZoneSpec.invokeTaskScope[source];
- - if (!scope) {
- - scope = WtfZoneSpec.invokeTaskScope[source] =
- - wtfEvents.createScope("Zone:invokeTask:" + source + "(ascii zone)");
- - }
- - return wtfTrace.leaveScope(scope(zonePathName(targetZone)), parentZoneDelegate.invokeTask(targetZone, task, applyThis, applyArgs));
- - };
- - WtfZoneSpec.prototype.onCancelTask = function (parentZoneDelegate, currentZone, targetZone, task) {
- - var key = task.source;
- - var instance = WtfZoneSpec.cancelInstance[key];
- - if (!instance) {
- - instance = WtfZoneSpec.cancelInstance[key] =
- - wtfEvents.createInstance("Zone:cancel:" + key + "(ascii zone, any options)");
- - }
- - var retValue = parentZoneDelegate.cancelTask(targetZone, task);
- - instance(zonePathName(targetZone), shallowObj(task.data, 2));
- - return retValue;
- - };
- - WtfZoneSpec.forkInstance = wtfEnabled && wtfEvents.createInstance('Zone:fork(ascii zone, ascii newZone)');
- - WtfZoneSpec.scheduleInstance = {};
- - WtfZoneSpec.cancelInstance = {};
- - WtfZoneSpec.invokeScope = {};
- - WtfZoneSpec.invokeTaskScope = {};
- - return WtfZoneSpec;
- - }());
- - function shallowObj(obj, depth) {
- - if (!depth)
- - return null;
- - var out = {};
- - for (var key in obj) {
- - if (obj.hasOwnProperty(key)) {
- - var value = obj[key];
- - switch (typeof value) {
- - case 'object':
- - var name_1 = value && value.constructor && value.constructor.name;
- - value = name_1 == Object.name ? shallowObj(value, depth - 1) : name_1;
- - break;
- - case 'function':
- - value = value.name || undefined;
- - break;
- - }
- - out[key] = value;
- - }
- - }
- - return out;
- - }
- - function zonePathName(zone) {
- - var name = zone.name;
- - zone = zone.parent;
- - while (zone != null) {
- - name = zone.name + '::' + name;
- - zone = zone.parent;
- - }
- - return name;
- - }
- - Zone['wtfZoneSpec'] = !wtfEnabled ? null : new WtfZoneSpec();
- -})(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
- - */
- -(function (context) {
- - var Mocha = context.Mocha;
- - if (typeof Mocha === 'undefined') {
- - throw new Error('Missing Mocha.js');
- - }
- - if (typeof Zone === 'undefined') {
- - throw new Error('Missing Zone.js');
- - }
- - var ProxyZoneSpec = Zone['ProxyZoneSpec'];
- - var SyncTestZoneSpec = Zone['SyncTestZoneSpec'];
- - if (!ProxyZoneSpec) {
- - throw new Error('Missing ProxyZoneSpec');
- - }
- - if (Mocha['__zone_patch__']) {
- - throw new Error('"Mocha" has already been patched with "Zone".');
- - }
- - Mocha['__zone_patch__'] = true;
- - var rootZone = Zone.current;
- - var syncZone = rootZone.fork(new SyncTestZoneSpec('Mocha.describe'));
- - var testZone = null;
- - var suiteZone = rootZone.fork(new ProxyZoneSpec());
- - var mochaOriginal = {
- - after: Mocha.after,
- - afterEach: Mocha.afterEach,
- - before: Mocha.before,
- - beforeEach: Mocha.beforeEach,
- - describe: Mocha.describe,
- - it: Mocha.it
- - };
- - function modifyArguments(args, syncTest, asyncTest) {
- - var _loop_1 = function (i) {
- - var arg = args[i];
- - if (typeof arg === 'function') {
- - // The `done` callback is only passed through if the function expects at
- - // least one argument.
- - // Note we have to make a function with correct number of arguments,
- - // otherwise mocha will
- - // think that all functions are sync or async.
- - args[i] = (arg.length === 0) ? syncTest(arg) : asyncTest(arg);
- - // Mocha uses toString to view the test body in the result list, make sure we return the
- - // correct function body
- - args[i].toString = function () {
- - return arg.toString();
- - };
- - }
- - };
- - for (var i = 0; i < args.length; i++) {
- - _loop_1(i);
- - }
- - return args;
- - }
- - function wrapDescribeInZone(args) {
- - var syncTest = function (fn) {
- - return function () {
- - return syncZone.run(fn, this, arguments);
- - };
- - };
- - return modifyArguments(args, syncTest);
- - }
- - function wrapTestInZone(args) {
- - var asyncTest = function (fn) {
- - return function (done) {
- - return testZone.run(fn, this, [done]);
- - };
- - };
- - var syncTest = function (fn) {
- - return function () {
- - return testZone.run(fn, this);
- - };
- - };
- - return modifyArguments(args, syncTest, asyncTest);
- - }
- - function wrapSuiteInZone(args) {
- - var asyncTest = function (fn) {
- - return function (done) {
- - return suiteZone.run(fn, this, [done]);
- - };
- - };
- - var syncTest = function (fn) {
- - return function () {
- - return suiteZone.run(fn, this);
- - };
- - };
- - return modifyArguments(args, syncTest, asyncTest);
- - }
- - context.describe = context.suite = Mocha.describe = function () {
- - return mochaOriginal.describe.apply(this, wrapDescribeInZone(arguments));
- - };
- - context.xdescribe = context.suite.skip = Mocha.describe.skip = function () {
- - return mochaOriginal.describe.skip.apply(this, wrapDescribeInZone(arguments));
- - };
- - context.describe.only = context.suite.only = Mocha.describe.only = function () {
- - return mochaOriginal.describe.only.apply(this, wrapDescribeInZone(arguments));
- - };
- - context.it = context.specify = context.test = Mocha.it = function () {
- - return mochaOriginal.it.apply(this, wrapTestInZone(arguments));
- - };
- - context.xit = context.xspecify = Mocha.it.skip = function () {
- - return mochaOriginal.it.skip.apply(this, wrapTestInZone(arguments));
- - };
- - context.it.only = context.test.only = Mocha.it.only = function () {
- - return mochaOriginal.it.only.apply(this, wrapTestInZone(arguments));
- - };
- - context.after = context.suiteTeardown = Mocha.after = function () {
- - return mochaOriginal.after.apply(this, wrapSuiteInZone(arguments));
- - };
- - context.afterEach = context.teardown = Mocha.afterEach = function () {
- - return mochaOriginal.afterEach.apply(this, wrapTestInZone(arguments));
- - };
- - context.before = context.suiteSetup = Mocha.before = function () {
- - return mochaOriginal.before.apply(this, wrapSuiteInZone(arguments));
- - };
- - context.beforeEach = context.setup = Mocha.beforeEach = function () {
- - return mochaOriginal.beforeEach.apply(this, wrapTestInZone(arguments));
- - };
- - (function (originalRunTest, originalRun) {
- - Mocha.Runner.prototype.runTest = function (fn) {
- - var _this = this;
- - Zone.current.scheduleMicroTask('mocha.forceTask', function () {
- - originalRunTest.call(_this, fn);
- - });
- - };
- - Mocha.Runner.prototype.run = function (fn) {
- - this.on('test', function (e) {
- - testZone = rootZone.fork(new ProxyZoneSpec());
- - });
- - this.on('fail', function (test, err) {
- - var proxyZoneSpec = testZone && testZone.get('ProxyZoneSpec');
- - if (proxyZoneSpec && err) {
- - err.message += proxyZoneSpec.getAndClearPendingTasksInfo();
- - }
- - });
- - return originalRun.call(this, fn);
- - };
- - })(Mocha.Runner.prototype.runTest, Mocha.Runner.prototype.run);
- -})(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global);
- -
- -})));
- diff --git a/node_modules/@nativescript/zone-js/zone-nativescript.js b/node_modules/@nativescript/zone-js/zone-nativescript.js
- index 39a5b55..8178344 100644
- --- a/node_modules/@nativescript/zone-js/zone-nativescript.js
- +++ b/node_modules/@nativescript/zone-js/zone-nativescript.js
- @@ -5,6 +5,8 @@
- * 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
- */
- +import * as trace from '@nativescript/core/trace';
- +
- (function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? factory() :
- typeof define === 'function' && define.amd ? define(factory) :
- @@ -673,9 +675,11 @@ Zone.__load_patch('ZoneAwarePromise', function (global, Zone, api) {
- if (api.showUncaughtError()) {
- var rejection = e && e.rejection;
- if (rejection) {
- + trace.Trace.error(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);
- }
- else {
- + trace.Trace.error(e);
- console.error(e);
- }
- }
- @@ -706,8 +710,10 @@ Zone.__load_patch('ZoneAwarePromise', function (global, Zone, api) {
- if (handler && typeof handler === 'function') {
- handler.call(this, e);
- }
- + trace.Trace.error(e);
- }
- catch (err) {
- + trace.Trace.error(err);
- }
- }
- function isThenable(value) {
- @@ -855,6 +861,7 @@ Zone.__load_patch('ZoneAwarePromise', function (global, Zone, api) {
- }
- }
- catch (err) {
- + trace.Trace.error(err);
- }
- promise[symbolState] = REJECTED;
- for (var i = 0; i < _uncaughtPromiseErrors.length; i++) {
- @@ -1337,6 +1344,7 @@ Zone.__load_patch('Error', function (global, Zone, api) {
- }
- catch (e) {
- // ignore as some browsers don't allow overriding of stack
- + trace.Trace.error(e);
- }
- }
- if (this instanceof NativeError && this.constructor != NativeError) {
- @@ -1350,6 +1358,7 @@ Zone.__load_patch('Error', function (global, Zone, api) {
- }
- catch (e) {
- // ignore the assignment in case it is a setter and it throws.
- + trace.Trace.error(e);
- }
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement