aboutsummaryrefslogtreecommitdiff
path: root/node_modules/jest-jasmine2
diff options
context:
space:
mode:
authorJoel Kronqvist <joel.h.kronqvist@gmail.com>2022-03-05 19:02:27 +0200
committerJoel Kronqvist <joel.h.kronqvist@gmail.com>2022-03-05 19:02:27 +0200
commit5d309ff52cd399a6b71968a6b9a70c8ac0b98981 (patch)
tree360f7eb50f956e2367ef38fa1fc6ac7ac5258042 /node_modules/jest-jasmine2
parentb500a50f1b97d93c98b36ed9a980f8188d648147 (diff)
downloadLYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.tar.gz
LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.zip
Added node_modules for the updating to work properly.
Diffstat (limited to 'node_modules/jest-jasmine2')
-rw-r--r--node_modules/jest-jasmine2/LICENSE21
-rw-r--r--node_modules/jest-jasmine2/build/ExpectationFailed.d.ts8
-rw-r--r--node_modules/jest-jasmine2/build/ExpectationFailed.js16
-rw-r--r--node_modules/jest-jasmine2/build/PCancelable.d.ts17
-rw-r--r--node_modules/jest-jasmine2/build/PCancelable.js139
-rw-r--r--node_modules/jest-jasmine2/build/assertionErrorMessage.d.ts10
-rw-r--r--node_modules/jest-jasmine2/build/assertionErrorMessage.js156
-rw-r--r--node_modules/jest-jasmine2/build/each.d.ts8
-rw-r--r--node_modules/jest-jasmine2/build/each.js44
-rw-r--r--node_modules/jest-jasmine2/build/errorOnPrivate.d.ts8
-rw-r--r--node_modules/jest-jasmine2/build/errorOnPrivate.js66
-rw-r--r--node_modules/jest-jasmine2/build/expectationResultFactory.d.ts16
-rw-r--r--node_modules/jest-jasmine2/build/expectationResultFactory.js93
-rw-r--r--node_modules/jest-jasmine2/build/index.d.ts12
-rw-r--r--node_modules/jest-jasmine2/build/index.js247
-rw-r--r--node_modules/jest-jasmine2/build/isError.d.ts10
-rw-r--r--node_modules/jest-jasmine2/build/isError.js32
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/CallTracker.d.ts25
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/CallTracker.js121
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/Env.d.ts43
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/Env.js716
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/JsApiReporter.d.ts31
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/JsApiReporter.js173
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/ReportDispatcher.d.ts22
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/ReportDispatcher.js127
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/Spec.d.ts81
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/Spec.js298
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/SpyStrategy.d.ts22
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/SpyStrategy.js143
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/Suite.d.ts61
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/Suite.js235
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/Timer.d.ts14
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/Timer.js79
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/createSpy.d.ts13
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/createSpy.js88
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/jasmineLight.d.ts27
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/jasmineLight.js171
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/spyRegistry.d.ts18
-rw-r--r--node_modules/jest-jasmine2/build/jasmine/spyRegistry.js222
-rw-r--r--node_modules/jest-jasmine2/build/jasmineAsyncInstall.d.ts8
-rw-r--r--node_modules/jest-jasmine2/build/jasmineAsyncInstall.js259
-rw-r--r--node_modules/jest-jasmine2/build/jestExpect.d.ts9
-rw-r--r--node_modules/jest-jasmine2/build/jestExpect.js69
-rw-r--r--node_modules/jest-jasmine2/build/pTimeout.d.ts7
-rw-r--r--node_modules/jest-jasmine2/build/pTimeout.js78
-rw-r--r--node_modules/jest-jasmine2/build/queueRunner.d.ts29
-rw-r--r--node_modules/jest-jasmine2/build/queueRunner.js127
-rw-r--r--node_modules/jest-jasmine2/build/reporter.d.ts31
-rw-r--r--node_modules/jest-jasmine2/build/reporter.js250
-rw-r--r--node_modules/jest-jasmine2/build/setup_jest_globals.d.ts16
-rw-r--r--node_modules/jest-jasmine2/build/setup_jest_globals.js121
-rw-r--r--node_modules/jest-jasmine2/build/treeProcessor.d.ts26
-rw-r--r--node_modules/jest-jasmine2/build/treeProcessor.js82
-rw-r--r--node_modules/jest-jasmine2/build/types.d.ts82
-rw-r--r--node_modules/jest-jasmine2/build/types.js7
-rw-r--r--node_modules/jest-jasmine2/package.json48
56 files changed, 4882 insertions, 0 deletions
diff --git a/node_modules/jest-jasmine2/LICENSE b/node_modules/jest-jasmine2/LICENSE
new file mode 100644
index 0000000..b96dcb0
--- /dev/null
+++ b/node_modules/jest-jasmine2/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) Facebook, Inc. and its affiliates.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/jest-jasmine2/build/ExpectationFailed.d.ts b/node_modules/jest-jasmine2/build/ExpectationFailed.d.ts
new file mode 100644
index 0000000..657f1cc
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/ExpectationFailed.d.ts
@@ -0,0 +1,8 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+export default class ExpectationFailed extends Error {
+}
diff --git a/node_modules/jest-jasmine2/build/ExpectationFailed.js b/node_modules/jest-jasmine2/build/ExpectationFailed.js
new file mode 100644
index 0000000..cca6c96
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/ExpectationFailed.js
@@ -0,0 +1,16 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+class ExpectationFailed extends Error {}
+
+exports.default = ExpectationFailed;
diff --git a/node_modules/jest-jasmine2/build/PCancelable.d.ts b/node_modules/jest-jasmine2/build/PCancelable.d.ts
new file mode 100644
index 0000000..9645c15
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/PCancelable.d.ts
@@ -0,0 +1,17 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+export default class PCancelable<T> implements PromiseLike<T> {
+ private _pending;
+ private _canceled;
+ private _promise;
+ private _cancel?;
+ private _reject;
+ constructor(executor: (onCancel: (cancelHandler: () => void) => void, resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: unknown) => void) => void);
+ then<TResult1 = T, TResult2 = never>(onFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onRejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | undefined | null): Promise<TResult1 | TResult2>;
+ catch<TResult>(onRejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | undefined | null): Promise<T | TResult>;
+ cancel(): void;
+}
diff --git a/node_modules/jest-jasmine2/build/PCancelable.js b/node_modules/jest-jasmine2/build/PCancelable.js
new file mode 100644
index 0000000..16811a4
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/PCancelable.js
@@ -0,0 +1,139 @@
+'use strict';
+
+var global = (function () {
+ if (typeof globalThis !== 'undefined') {
+ return globalThis;
+ } else if (typeof global !== 'undefined') {
+ return global;
+ } else if (typeof self !== 'undefined') {
+ return self;
+ } else if (typeof window !== 'undefined') {
+ return window;
+ } else {
+ return Function('return this')();
+ }
+})();
+
+var Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+
+var global = (function () {
+ if (typeof globalThis !== 'undefined') {
+ return globalThis;
+ } else if (typeof global !== 'undefined') {
+ return global;
+ } else if (typeof self !== 'undefined') {
+ return self;
+ } else if (typeof window !== 'undefined') {
+ return window;
+ } else {
+ return Function('return this')();
+ }
+})();
+
+var Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;
+
+var global = (function () {
+ if (typeof globalThis !== 'undefined') {
+ return globalThis;
+ } else if (typeof global !== 'undefined') {
+ return global;
+ } else if (typeof self !== 'undefined') {
+ return self;
+ } else if (typeof window !== 'undefined') {
+ return window;
+ } else {
+ return Function('return this')();
+ }
+})();
+
+var Promise = global[Symbol.for('jest-native-promise')] || global.Promise;
+
+function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+class CancelError extends Error {
+ constructor() {
+ super('Promise was canceled');
+ this.name = 'CancelError';
+ }
+}
+
+class PCancelable {
+ constructor(executor) {
+ _defineProperty(this, '_pending', true);
+
+ _defineProperty(this, '_canceled', false);
+
+ _defineProperty(this, '_promise', void 0);
+
+ _defineProperty(this, '_cancel', void 0);
+
+ _defineProperty(this, '_reject', () => {});
+
+ this._promise = new Promise((resolve, reject) => {
+ this._reject = reject;
+ return executor(
+ fn => {
+ this._cancel = fn;
+ },
+ val => {
+ this._pending = false;
+ resolve(val);
+ },
+ err => {
+ this._pending = false;
+ reject(err);
+ }
+ );
+ });
+ }
+
+ then(onFulfilled, onRejected) {
+ return this._promise.then(onFulfilled, onRejected);
+ }
+
+ catch(onRejected) {
+ return this._promise.catch(onRejected);
+ }
+
+ cancel() {
+ if (!this._pending || this._canceled) {
+ return;
+ }
+
+ if (typeof this._cancel === 'function') {
+ try {
+ this._cancel();
+ } catch (err) {
+ this._reject(err);
+ }
+ }
+
+ this._canceled = true;
+
+ this._reject(new CancelError());
+ }
+}
+
+exports.default = PCancelable;
diff --git a/node_modules/jest-jasmine2/build/assertionErrorMessage.d.ts b/node_modules/jest-jasmine2/build/assertionErrorMessage.d.ts
new file mode 100644
index 0000000..8c00fb5
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/assertionErrorMessage.d.ts
@@ -0,0 +1,10 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+import { DiffOptions } from 'jest-matcher-utils';
+import type { AssertionErrorWithStack } from './types';
+declare function assertionErrorMessage(error: AssertionErrorWithStack, options: DiffOptions): string;
+export default assertionErrorMessage;
diff --git a/node_modules/jest-jasmine2/build/assertionErrorMessage.js b/node_modules/jest-jasmine2/build/assertionErrorMessage.js
new file mode 100644
index 0000000..9ec79ee
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/assertionErrorMessage.js
@@ -0,0 +1,156 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+
+var _chalk = _interopRequireDefault(require('chalk'));
+
+var _jestMatcherUtils = require('jest-matcher-utils');
+
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {default: obj};
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+const assertOperatorsMap = {
+ '!=': 'notEqual',
+ '!==': 'notStrictEqual',
+ '==': 'equal',
+ '===': 'strictEqual'
+};
+const humanReadableOperators = {
+ deepEqual: 'to deeply equal',
+ deepStrictEqual: 'to deeply and strictly equal',
+ equal: 'to be equal',
+ notDeepEqual: 'not to deeply equal',
+ notDeepStrictEqual: 'not to deeply and strictly equal',
+ notEqual: 'to not be equal',
+ notStrictEqual: 'not be strictly equal',
+ strictEqual: 'to strictly be equal'
+};
+
+const getOperatorName = (operator, stack) => {
+ if (typeof operator === 'string') {
+ return assertOperatorsMap[operator] || operator;
+ }
+
+ if (stack.match('.doesNotThrow')) {
+ return 'doesNotThrow';
+ }
+
+ if (stack.match('.throws')) {
+ return 'throws';
+ } // this fallback is only needed for versions older than node 10
+
+ if (stack.match('.fail')) {
+ return 'fail';
+ }
+
+ return '';
+};
+
+const operatorMessage = operator => {
+ const niceOperatorName = getOperatorName(operator, '');
+ const humanReadableOperator = humanReadableOperators[niceOperatorName];
+ return typeof operator === 'string'
+ ? `${humanReadableOperator || niceOperatorName} to:\n`
+ : '';
+};
+
+const assertThrowingMatcherHint = operatorName =>
+ operatorName
+ ? _chalk.default.dim('assert') +
+ _chalk.default.dim('.' + operatorName + '(') +
+ _chalk.default.red('function') +
+ _chalk.default.dim(')')
+ : '';
+
+const assertMatcherHint = (operator, operatorName, expected) => {
+ let message = '';
+
+ if (operator === '==' && expected === true) {
+ message =
+ _chalk.default.dim('assert') +
+ _chalk.default.dim('(') +
+ _chalk.default.red('received') +
+ _chalk.default.dim(')');
+ } else if (operatorName) {
+ message =
+ _chalk.default.dim('assert') +
+ _chalk.default.dim('.' + operatorName + '(') +
+ _chalk.default.red('received') +
+ _chalk.default.dim(', ') +
+ _chalk.default.green('expected') +
+ _chalk.default.dim(')');
+ }
+
+ return message;
+};
+
+function assertionErrorMessage(error, options) {
+ const {expected, actual, generatedMessage, message, operator, stack} = error;
+ const diffString = (0, _jestMatcherUtils.diff)(expected, actual, options);
+ const hasCustomMessage = !generatedMessage;
+ const operatorName = getOperatorName(operator, stack);
+ const trimmedStack = stack
+ .replace(message, '')
+ .replace(/AssertionError(.*)/g, '');
+
+ if (operatorName === 'doesNotThrow') {
+ return (
+ buildHintString(assertThrowingMatcherHint(operatorName)) +
+ _chalk.default.reset('Expected the function not to throw an error.\n') +
+ _chalk.default.reset('Instead, it threw:\n') +
+ ` ${(0, _jestMatcherUtils.printReceived)(actual)}` +
+ _chalk.default.reset(
+ hasCustomMessage ? '\n\nMessage:\n ' + message : ''
+ ) +
+ trimmedStack
+ );
+ }
+
+ if (operatorName === 'throws') {
+ return (
+ buildHintString(assertThrowingMatcherHint(operatorName)) +
+ _chalk.default.reset('Expected the function to throw an error.\n') +
+ _chalk.default.reset("But it didn't throw anything.") +
+ _chalk.default.reset(
+ hasCustomMessage ? '\n\nMessage:\n ' + message : ''
+ ) +
+ trimmedStack
+ );
+ }
+
+ if (operatorName === 'fail') {
+ return (
+ buildHintString(assertMatcherHint(operator, operatorName, expected)) +
+ _chalk.default.reset(hasCustomMessage ? 'Message:\n ' + message : '') +
+ trimmedStack
+ );
+ }
+
+ return (
+ buildHintString(assertMatcherHint(operator, operatorName, expected)) +
+ _chalk.default.reset(`Expected value ${operatorMessage(operator)}`) +
+ ` ${(0, _jestMatcherUtils.printExpected)(expected)}\n` +
+ _chalk.default.reset('Received:\n') +
+ ` ${(0, _jestMatcherUtils.printReceived)(actual)}` +
+ _chalk.default.reset(hasCustomMessage ? '\n\nMessage:\n ' + message : '') +
+ (diffString ? `\n\nDifference:\n\n${diffString}` : '') +
+ trimmedStack
+ );
+}
+
+function buildHintString(hint) {
+ return hint ? hint + '\n\n' : '';
+}
+
+var _default = assertionErrorMessage;
+exports.default = _default;
diff --git a/node_modules/jest-jasmine2/build/each.d.ts b/node_modules/jest-jasmine2/build/each.d.ts
new file mode 100644
index 0000000..527fb50
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/each.d.ts
@@ -0,0 +1,8 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+import type { JestEnvironment } from '@jest/environment';
+export default function each(environment: JestEnvironment): void;
diff --git a/node_modules/jest-jasmine2/build/each.js b/node_modules/jest-jasmine2/build/each.js
new file mode 100644
index 0000000..c82f5e4
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/each.js
@@ -0,0 +1,44 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = each;
+
+var _jestEach = require('jest-each');
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+function each(environment) {
+ environment.global.it.each = (0, _jestEach.bind)(environment.global.it);
+ environment.global.fit.each = (0, _jestEach.bind)(environment.global.fit);
+ environment.global.xit.each = (0, _jestEach.bind)(environment.global.xit);
+ environment.global.describe.each = (0, _jestEach.bind)(
+ environment.global.describe,
+ false
+ );
+ environment.global.xdescribe.each = (0, _jestEach.bind)(
+ environment.global.xdescribe,
+ false
+ );
+ environment.global.fdescribe.each = (0, _jestEach.bind)(
+ environment.global.fdescribe,
+ false
+ );
+ environment.global.it.concurrent.each = (0, _jestEach.bind)(
+ environment.global.it.concurrent,
+ false
+ );
+ environment.global.it.concurrent.only.each = (0, _jestEach.bind)(
+ environment.global.it.concurrent.only,
+ false
+ );
+ environment.global.it.concurrent.skip.each = (0, _jestEach.bind)(
+ environment.global.it.concurrent.skip,
+ false
+ );
+}
diff --git a/node_modules/jest-jasmine2/build/errorOnPrivate.d.ts b/node_modules/jest-jasmine2/build/errorOnPrivate.d.ts
new file mode 100644
index 0000000..081dd14
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/errorOnPrivate.d.ts
@@ -0,0 +1,8 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+import type { Global } from '@jest/types';
+export declare function installErrorOnPrivate(global: Global.Global): void;
diff --git a/node_modules/jest-jasmine2/build/errorOnPrivate.js b/node_modules/jest-jasmine2/build/errorOnPrivate.js
new file mode 100644
index 0000000..cf8d87f
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/errorOnPrivate.js
@@ -0,0 +1,66 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.installErrorOnPrivate = installErrorOnPrivate;
+
+var _jestUtil = require('jest-util');
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+// prettier-ignore
+const disabledGlobals = {
+ fail: 'Illegal usage of global `fail`, prefer throwing an error, or the `done.fail` callback.',
+ pending: 'Illegal usage of global `pending`, prefer explicitly skipping a test using `test.skip`',
+ spyOn: 'Illegal usage of global `spyOn`, prefer `jest.spyOn`.',
+ spyOnProperty: 'Illegal usage of global `spyOnProperty`, prefer `jest.spyOn`.'
+};
+// prettier-ignore
+const disabledJasmineMethods = {
+ addMatchers: 'Illegal usage of `jasmine.addMatchers`, prefer `expect.extends`.',
+ any: 'Illegal usage of `jasmine.any`, prefer `expect.any`.',
+ anything: 'Illegal usage of `jasmine.anything`, prefer `expect.anything`.',
+ arrayContaining: 'Illegal usage of `jasmine.arrayContaining`, prefer `expect.arrayContaining`.',
+ createSpy: 'Illegal usage of `jasmine.createSpy`, prefer `jest.fn`.',
+ objectContaining: 'Illegal usage of `jasmine.objectContaining`, prefer `expect.objectContaining`.',
+ stringMatching: 'Illegal usage of `jasmine.stringMatching`, prefer `expect.stringMatching`.'
+};
+
+function installErrorOnPrivate(global) {
+ const jasmine = global.jasmine;
+ Object.keys(disabledGlobals).forEach(functionName => {
+ global[functionName] = () => {
+ throwAtFunction(disabledGlobals[functionName], global[functionName]);
+ };
+ });
+ Object.keys(disabledJasmineMethods).forEach(methodName => {
+ // @ts-expect-error
+ jasmine[methodName] = () => {
+ throwAtFunction(disabledJasmineMethods[methodName], jasmine[methodName]);
+ };
+ });
+
+ function set() {
+ throwAtFunction(
+ 'Illegal usage of `jasmine.DEFAULT_TIMEOUT_INTERVAL`, prefer `jest.setTimeout`.',
+ set
+ );
+ }
+
+ const original = jasmine.DEFAULT_TIMEOUT_INTERVAL;
+ Object.defineProperty(jasmine, 'DEFAULT_TIMEOUT_INTERVAL', {
+ configurable: true,
+ enumerable: true,
+ get: () => original,
+ set
+ });
+}
+
+function throwAtFunction(message, fn) {
+ throw new _jestUtil.ErrorWithStack(message, fn);
+}
diff --git a/node_modules/jest-jasmine2/build/expectationResultFactory.d.ts b/node_modules/jest-jasmine2/build/expectationResultFactory.d.ts
new file mode 100644
index 0000000..f3101fa
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/expectationResultFactory.d.ts
@@ -0,0 +1,16 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+import type { FailedAssertion } from '@jest/test-result';
+export declare type Options = {
+ matcherName: string;
+ passed: boolean;
+ actual?: any;
+ error?: any;
+ expected?: any;
+ message?: string | null;
+};
+export default function expectationResultFactory(options: Options, initError?: Error): FailedAssertion;
diff --git a/node_modules/jest-jasmine2/build/expectationResultFactory.js b/node_modules/jest-jasmine2/build/expectationResultFactory.js
new file mode 100644
index 0000000..8686787
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/expectationResultFactory.js
@@ -0,0 +1,93 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = expectationResultFactory;
+
+var _prettyFormat = require('pretty-format');
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+function messageFormatter({error, message, passed}) {
+ if (passed) {
+ return 'Passed.';
+ }
+
+ if (message) {
+ return message;
+ }
+
+ if (typeof error === 'string') {
+ return error;
+ }
+
+ if (
+ // duck-type Error, see #2549
+ error &&
+ typeof error === 'object' &&
+ typeof error.message === 'string' &&
+ typeof error.name === 'string'
+ ) {
+ if (error.message === '') {
+ return error.name;
+ }
+
+ return `${error.name}: ${error.message}`;
+ }
+
+ return `thrown: ${(0, _prettyFormat.format)(error, {
+ maxDepth: 3
+ })}`;
+}
+
+function stackFormatter(options, initError, errorMessage) {
+ if (options.passed) {
+ return '';
+ }
+
+ if (options.error) {
+ if (typeof options.error.stack === 'string') {
+ return options.error.stack;
+ }
+
+ if (options.error === errorMessage) {
+ return errorMessage;
+ }
+ }
+
+ if (initError) {
+ return errorMessage.trimRight() + '\n\n' + initError.stack;
+ }
+
+ return new Error(errorMessage).stack;
+}
+
+function expectationResultFactory(options, initError) {
+ const message = messageFormatter(options);
+ const stack = stackFormatter(options, initError, message);
+
+ if (options.passed) {
+ return {
+ error: options.error,
+ matcherName: options.matcherName,
+ message,
+ passed: options.passed,
+ stack
+ };
+ }
+
+ return {
+ actual: options.actual,
+ error: options.error,
+ expected: options.expected,
+ matcherName: options.matcherName,
+ message,
+ passed: options.passed,
+ stack
+ };
+}
diff --git a/node_modules/jest-jasmine2/build/index.d.ts b/node_modules/jest-jasmine2/build/index.d.ts
new file mode 100644
index 0000000..e0e56a8
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/index.d.ts
@@ -0,0 +1,12 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+import type { JestEnvironment } from '@jest/environment';
+import type { TestResult } from '@jest/test-result';
+import type { Config } from '@jest/types';
+import type Runtime from 'jest-runtime';
+export type { Jasmine } from './types';
+export default function jasmine2(globalConfig: Config.GlobalConfig, config: Config.ProjectConfig, environment: JestEnvironment, runtime: Runtime, testPath: string): Promise<TestResult>;
diff --git a/node_modules/jest-jasmine2/build/index.js b/node_modules/jest-jasmine2/build/index.js
new file mode 100644
index 0000000..15b4f60
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/index.js
@@ -0,0 +1,247 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = jasmine2;
+
+var path = _interopRequireWildcard(require('path'));
+
+var _sourceMap = require('@jest/source-map');
+
+var _each = _interopRequireDefault(require('./each'));
+
+var _errorOnPrivate = require('./errorOnPrivate');
+
+var _jasmineAsyncInstall = _interopRequireDefault(
+ require('./jasmineAsyncInstall')
+);
+
+var _reporter = _interopRequireDefault(require('./reporter'));
+
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {default: obj};
+}
+
+function _getRequireWildcardCache(nodeInterop) {
+ if (typeof WeakMap !== 'function') return null;
+ var cacheBabelInterop = new WeakMap();
+ var cacheNodeInterop = new WeakMap();
+ return (_getRequireWildcardCache = function (nodeInterop) {
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
+ })(nodeInterop);
+}
+
+function _interopRequireWildcard(obj, nodeInterop) {
+ if (!nodeInterop && obj && obj.__esModule) {
+ return obj;
+ }
+ if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {
+ return {default: obj};
+ }
+ var cache = _getRequireWildcardCache(nodeInterop);
+ if (cache && cache.has(obj)) {
+ return cache.get(obj);
+ }
+ var newObj = {};
+ var hasPropertyDescriptor =
+ Object.defineProperty && Object.getOwnPropertyDescriptor;
+ for (var key in obj) {
+ if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {
+ var desc = hasPropertyDescriptor
+ ? Object.getOwnPropertyDescriptor(obj, key)
+ : null;
+ if (desc && (desc.get || desc.set)) {
+ Object.defineProperty(newObj, key, desc);
+ } else {
+ newObj[key] = obj[key];
+ }
+ }
+ }
+ newObj.default = obj;
+ if (cache) {
+ cache.set(obj, newObj);
+ }
+ return newObj;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+const JASMINE = require.resolve('./jasmine/jasmineLight');
+
+const jestEachBuildDir = path.dirname(require.resolve('jest-each'));
+
+async function jasmine2(globalConfig, config, environment, runtime, testPath) {
+ const reporter = new _reporter.default(globalConfig, config, testPath);
+ const jasmineFactory = runtime.requireInternalModule(JASMINE);
+ const jasmine = jasmineFactory.create({
+ process,
+ testPath,
+ testTimeout: globalConfig.testTimeout
+ });
+ const env = jasmine.getEnv();
+
+ const jasmineInterface = jasmineFactory._interface(jasmine, env);
+
+ Object.assign(environment.global, jasmineInterface);
+ env.addReporter(jasmineInterface.jsApiReporter); // TODO: Remove config option if V8 exposes some way of getting location of caller
+ // in a future version
+
+ if (config.testLocationInResults === true) {
+ function wrapIt(original) {
+ const wrapped = (testName, fn, timeout) => {
+ var _stack$getFileName;
+
+ const sourcemaps = runtime.getSourceMaps();
+ let stack = (0, _sourceMap.getCallsite)(1, sourcemaps);
+ const it = original(testName, fn, timeout);
+
+ if (
+ (_stack$getFileName = stack.getFileName()) !== null &&
+ _stack$getFileName !== void 0 &&
+ _stack$getFileName.startsWith(jestEachBuildDir)
+ ) {
+ stack = (0, _sourceMap.getCallsite)(4, sourcemaps);
+ } // @ts-expect-error
+
+ it.result.__callsite = stack;
+ return it;
+ };
+
+ return wrapped;
+ }
+
+ environment.global.it = wrapIt(environment.global.it);
+ environment.global.xit = wrapIt(environment.global.xit);
+ environment.global.fit = wrapIt(environment.global.fit);
+ }
+
+ (0, _jasmineAsyncInstall.default)(globalConfig, environment.global);
+ (0, _each.default)(environment);
+ environment.global.test = environment.global.it;
+ environment.global.it.only = environment.global.fit;
+ environment.global.it.todo = env.todo;
+ environment.global.it.skip = environment.global.xit;
+ environment.global.xtest = environment.global.xit;
+ environment.global.describe.skip = environment.global.xdescribe;
+ environment.global.describe.only = environment.global.fdescribe;
+
+ if (config.timers === 'fake' || config.timers === 'modern') {
+ environment.fakeTimersModern.useFakeTimers();
+ } else if (config.timers === 'legacy') {
+ environment.fakeTimers.useFakeTimers();
+ }
+
+ env.beforeEach(() => {
+ if (config.resetModules) {
+ runtime.resetModules();
+ }
+
+ if (config.clearMocks) {
+ runtime.clearAllMocks();
+ }
+
+ if (config.resetMocks) {
+ runtime.resetAllMocks();
+
+ if (config.timers === 'legacy') {
+ environment.fakeTimers.useFakeTimers();
+ }
+ }
+
+ if (config.restoreMocks) {
+ runtime.restoreAllMocks();
+ }
+ });
+ env.addReporter(reporter);
+ runtime
+ .requireInternalModule(path.resolve(__dirname, './jestExpect.js'))
+ .default({
+ expand: globalConfig.expand
+ });
+
+ if (globalConfig.errorOnDeprecated) {
+ (0, _errorOnPrivate.installErrorOnPrivate)(environment.global);
+ } else {
+ Object.defineProperty(jasmine, 'DEFAULT_TIMEOUT_INTERVAL', {
+ configurable: true,
+ enumerable: true,
+
+ get() {
+ return this._DEFAULT_TIMEOUT_INTERVAL;
+ },
+
+ set(value) {
+ this._DEFAULT_TIMEOUT_INTERVAL = value;
+ }
+ });
+ }
+
+ const snapshotState = await runtime
+ .requireInternalModule(path.resolve(__dirname, './setup_jest_globals.js'))
+ .default({
+ config,
+ globalConfig,
+ localRequire: runtime.requireModule.bind(runtime),
+ testPath
+ });
+
+ for (const path of config.setupFilesAfterEnv) {
+ const esm = runtime.unstable_shouldLoadAsEsm(path);
+
+ if (esm) {
+ await runtime.unstable_importModule(path);
+ } else {
+ runtime.requireModule(path);
+ }
+ }
+
+ if (globalConfig.testNamePattern) {
+ const testNameRegex = new RegExp(globalConfig.testNamePattern, 'i');
+
+ env.specFilter = spec => testNameRegex.test(spec.getFullName());
+ }
+
+ const esm = runtime.unstable_shouldLoadAsEsm(testPath);
+
+ if (esm) {
+ await runtime.unstable_importModule(testPath);
+ } else {
+ runtime.requireModule(testPath);
+ }
+
+ await env.execute();
+ const results = await reporter.getResults();
+ return addSnapshotData(results, snapshotState);
+}
+
+const addSnapshotData = (results, snapshotState) => {
+ results.testResults.forEach(({fullName, status}) => {
+ if (status === 'pending' || status === 'failed') {
+ // if test is skipped or failed, we don't want to mark
+ // its snapshots as obsolete.
+ snapshotState.markSnapshotsAsCheckedForTest(fullName);
+ }
+ });
+ const uncheckedCount = snapshotState.getUncheckedCount();
+ const uncheckedKeys = snapshotState.getUncheckedKeys();
+
+ if (uncheckedCount) {
+ snapshotState.removeUncheckedKeys();
+ }
+
+ const status = snapshotState.save();
+ results.snapshot.fileDeleted = status.deleted;
+ results.snapshot.added = snapshotState.added;
+ results.snapshot.matched = snapshotState.matched;
+ results.snapshot.unmatched = snapshotState.unmatched;
+ results.snapshot.updated = snapshotState.updated;
+ results.snapshot.unchecked = !status.deleted ? uncheckedCount : 0; // Copy the array to prevent memory leaks
+
+ results.snapshot.uncheckedKeys = Array.from(uncheckedKeys);
+ return results;
+};
diff --git a/node_modules/jest-jasmine2/build/isError.d.ts b/node_modules/jest-jasmine2/build/isError.d.ts
new file mode 100644
index 0000000..b21d235
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/isError.d.ts
@@ -0,0 +1,10 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+export default function isError(potentialError: any): {
+ isError: boolean;
+ message: string | null;
+};
diff --git a/node_modules/jest-jasmine2/build/isError.js b/node_modules/jest-jasmine2/build/isError.js
new file mode 100644
index 0000000..86608e0
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/isError.js
@@ -0,0 +1,32 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = isError;
+
+var _prettyFormat = require('pretty-format');
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+function isError(potentialError) { // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
+ // duck-type Error, see #2549
+ const isError =
+ potentialError !== null &&
+ typeof potentialError === 'object' &&
+ typeof potentialError.message === 'string' &&
+ typeof potentialError.name === 'string';
+ const message = isError
+ ? null
+ : `Failed: ${(0, _prettyFormat.format)(potentialError, {
+ maxDepth: 3
+ })}`;
+ return {
+ isError,
+ message
+ };
+}
diff --git a/node_modules/jest-jasmine2/build/jasmine/CallTracker.d.ts b/node_modules/jest-jasmine2/build/jasmine/CallTracker.d.ts
new file mode 100644
index 0000000..1692e9c
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/CallTracker.d.ts
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+export declare type Context = {
+ object: unknown;
+ args: Array<unknown>;
+ returnValue?: unknown;
+};
+declare class CallTracker {
+ track: (context: Context) => void;
+ any: () => boolean;
+ count: () => number;
+ argsFor: (index: number) => Array<unknown>;
+ all: () => Array<Context>;
+ allArgs: () => Array<unknown>;
+ first: () => Context;
+ mostRecent: () => Context;
+ reset: () => void;
+ constructor();
+}
+export default CallTracker;
diff --git a/node_modules/jest-jasmine2/build/jasmine/CallTracker.js b/node_modules/jest-jasmine2/build/jasmine/CallTracker.js
new file mode 100644
index 0000000..c0ce750
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/CallTracker.js
@@ -0,0 +1,121 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+
+function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+// This file is a heavily modified fork of Jasmine. Original license:
+
+/*
+Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+class CallTracker {
+ constructor() {
+ _defineProperty(this, 'track', void 0);
+
+ _defineProperty(this, 'any', void 0);
+
+ _defineProperty(this, 'count', void 0);
+
+ _defineProperty(this, 'argsFor', void 0);
+
+ _defineProperty(this, 'all', void 0);
+
+ _defineProperty(this, 'allArgs', void 0);
+
+ _defineProperty(this, 'first', void 0);
+
+ _defineProperty(this, 'mostRecent', void 0);
+
+ _defineProperty(this, 'reset', void 0);
+
+ let calls = [];
+
+ this.track = function (context) {
+ calls.push(context);
+ };
+
+ this.any = function () {
+ return !!calls.length;
+ };
+
+ this.count = function () {
+ return calls.length;
+ };
+
+ this.argsFor = function (index) {
+ const call = calls[index];
+ return call ? call.args : [];
+ };
+
+ this.all = function () {
+ return calls;
+ };
+
+ this.allArgs = function () {
+ const callArgs = [];
+
+ for (let i = 0; i < calls.length; i++) {
+ callArgs.push(calls[i].args);
+ }
+
+ return callArgs;
+ };
+
+ this.first = function () {
+ return calls[0];
+ };
+
+ this.mostRecent = function () {
+ return calls[calls.length - 1];
+ };
+
+ this.reset = function () {
+ calls = [];
+ };
+ }
+}
+
+var _default = CallTracker;
+exports.default = _default;
diff --git a/node_modules/jest-jasmine2/build/jasmine/Env.d.ts b/node_modules/jest-jasmine2/build/jasmine/Env.d.ts
new file mode 100644
index 0000000..334cd0d
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/Env.d.ts
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+import { QueueableFn } from '../queueRunner';
+import type { AssertionErrorWithStack, Jasmine, Reporter, SpecDefinitionsFn, Spy } from '../types';
+import type { default as Spec } from './Spec';
+import type Suite from './Suite';
+export default function jasmineEnv(j$: Jasmine): {
+ new (): {
+ specFilter: (spec: Spec) => boolean;
+ catchExceptions: (value: unknown) => boolean;
+ throwOnExpectationFailure: (value: unknown) => void;
+ catchingExceptions: () => boolean;
+ topSuite: () => Suite;
+ fail: (error: Error | AssertionErrorWithStack) => void;
+ pending: (message: string) => void;
+ afterAll: (afterAllFunction: QueueableFn['fn'], timeout?: number | undefined) => void;
+ fit: (description: string, fn: QueueableFn['fn'], timeout?: number | undefined) => Spec;
+ throwingExpectationFailures: () => boolean;
+ randomizeTests: (value: unknown) => void;
+ randomTests: () => boolean;
+ seed: (value: unknown) => unknown;
+ execute: (runnablesToRun?: string[] | undefined, suiteTree?: Suite | undefined) => Promise<void>;
+ fdescribe: (description: string, specDefinitions: SpecDefinitionsFn) => Suite;
+ spyOn: (obj: Record<string, Spy>, methodName: string, accessType?: "configurable" | "enumerable" | "value" | "writable" | "get" | "set" | undefined) => Spy;
+ beforeEach: (beforeEachFunction: QueueableFn['fn'], timeout?: number | undefined) => void;
+ afterEach: (afterEachFunction: QueueableFn['fn'], timeout?: number | undefined) => void;
+ clearReporters: () => void;
+ addReporter: (reporterToAdd: Reporter) => void;
+ it: (description: string, fn: QueueableFn['fn'], timeout?: number | undefined) => Spec;
+ xdescribe: (description: string, specDefinitions: SpecDefinitionsFn) => Suite;
+ xit: (description: string, fn: QueueableFn['fn'], timeout?: number | undefined) => Spec;
+ beforeAll: (beforeAllFunction: QueueableFn['fn'], timeout?: number | undefined) => void;
+ todo: () => Spec;
+ provideFallbackReporter: (reporterToAdd: Reporter) => void;
+ allowRespy: (allow: boolean) => void;
+ describe: (description: string, specDefinitions: SpecDefinitionsFn) => Suite;
+ };
+};
diff --git a/node_modules/jest-jasmine2/build/jasmine/Env.js b/node_modules/jest-jasmine2/build/jasmine/Env.js
new file mode 100644
index 0000000..382c9c2
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/Env.js
@@ -0,0 +1,716 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = jasmineEnv;
+
+var _assert = require('assert');
+
+var _jestUtil = require('jest-util');
+
+var _assertionErrorMessage = _interopRequireDefault(
+ require('../assertionErrorMessage')
+);
+
+var _isError = _interopRequireDefault(require('../isError'));
+
+var _queueRunner = _interopRequireDefault(require('../queueRunner'));
+
+var _treeProcessor = _interopRequireDefault(require('../treeProcessor'));
+
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {default: obj};
+}
+
+function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+}
+
+function jasmineEnv(j$) {
+ return class Env {
+ constructor() {
+ _defineProperty(this, 'specFilter', void 0);
+
+ _defineProperty(this, 'catchExceptions', void 0);
+
+ _defineProperty(this, 'throwOnExpectationFailure', void 0);
+
+ _defineProperty(this, 'catchingExceptions', void 0);
+
+ _defineProperty(this, 'topSuite', void 0);
+
+ _defineProperty(this, 'fail', void 0);
+
+ _defineProperty(this, 'pending', void 0);
+
+ _defineProperty(this, 'afterAll', void 0);
+
+ _defineProperty(this, 'fit', void 0);
+
+ _defineProperty(this, 'throwingExpectationFailures', void 0);
+
+ _defineProperty(this, 'randomizeTests', void 0);
+
+ _defineProperty(this, 'randomTests', void 0);
+
+ _defineProperty(this, 'seed', void 0);
+
+ _defineProperty(this, 'execute', void 0);
+
+ _defineProperty(this, 'fdescribe', void 0);
+
+ _defineProperty(this, 'spyOn', void 0);
+
+ _defineProperty(this, 'beforeEach', void 0);
+
+ _defineProperty(this, 'afterEach', void 0);
+
+ _defineProperty(this, 'clearReporters', void 0);
+
+ _defineProperty(this, 'addReporter', void 0);
+
+ _defineProperty(this, 'it', void 0);
+
+ _defineProperty(this, 'xdescribe', void 0);
+
+ _defineProperty(this, 'xit', void 0);
+
+ _defineProperty(this, 'beforeAll', void 0);
+
+ _defineProperty(this, 'todo', void 0);
+
+ _defineProperty(this, 'provideFallbackReporter', void 0);
+
+ _defineProperty(this, 'allowRespy', void 0);
+
+ _defineProperty(this, 'describe', void 0);
+
+ let totalSpecsDefined = 0;
+ let catchExceptions = true;
+ const realSetTimeout = global.setTimeout;
+ const realClearTimeout = global.clearTimeout;
+ const runnableResources = {};
+ const currentlyExecutingSuites = [];
+ let currentSpec = null;
+ let throwOnExpectationFailure = false;
+ let random = false;
+ let seed = null;
+ let nextSpecId = 0;
+ let nextSuiteId = 0;
+
+ const getNextSpecId = function () {
+ return 'spec' + nextSpecId++;
+ };
+
+ const getNextSuiteId = function () {
+ return 'suite' + nextSuiteId++;
+ };
+
+ const topSuite = new j$.Suite({
+ id: getNextSuiteId(),
+ description: '',
+
+ getTestPath() {
+ return j$.testPath;
+ }
+ });
+ let currentDeclarationSuite = topSuite;
+
+ const currentSuite = function () {
+ return currentlyExecutingSuites[currentlyExecutingSuites.length - 1];
+ };
+
+ const currentRunnable = function () {
+ return currentSpec || currentSuite();
+ };
+
+ const reporter = new j$.ReportDispatcher([
+ 'jasmineStarted',
+ 'jasmineDone',
+ 'suiteStarted',
+ 'suiteDone',
+ 'specStarted',
+ 'specDone'
+ ]);
+
+ this.specFilter = function () {
+ return true;
+ };
+
+ const defaultResourcesForRunnable = function (id, _parentRunnableId) {
+ const resources = {
+ spies: []
+ };
+ runnableResources[id] = resources;
+ };
+
+ const clearResourcesForRunnable = function (id) {
+ spyRegistry.clearSpies();
+ delete runnableResources[id];
+ };
+
+ const beforeAndAfterFns = function (suite) {
+ return function () {
+ let afters = [];
+ let befores = [];
+
+ while (suite) {
+ befores = befores.concat(suite.beforeFns);
+ afters = afters.concat(suite.afterFns);
+ suite = suite.parentSuite;
+ }
+
+ return {
+ befores: befores.reverse(),
+ afters
+ };
+ };
+ };
+
+ const getSpecName = function (spec, suite) {
+ const fullName = [spec.description];
+ const suiteFullName = suite.getFullName();
+
+ if (suiteFullName !== '') {
+ fullName.unshift(suiteFullName);
+ }
+
+ return fullName.join(' ');
+ };
+
+ this.catchExceptions = function (value) {
+ catchExceptions = !!value;
+ return catchExceptions;
+ };
+
+ this.catchingExceptions = function () {
+ return catchExceptions;
+ };
+
+ this.throwOnExpectationFailure = function (value) {
+ throwOnExpectationFailure = !!value;
+ };
+
+ this.throwingExpectationFailures = function () {
+ return throwOnExpectationFailure;
+ };
+
+ this.randomizeTests = function (value) {
+ random = !!value;
+ };
+
+ this.randomTests = function () {
+ return random;
+ };
+
+ this.seed = function (value) {
+ if (value) {
+ seed = value;
+ }
+
+ return seed;
+ };
+
+ const queueRunnerFactory = options => {
+ options.clearTimeout = realClearTimeout;
+ options.fail = this.fail;
+ options.setTimeout = realSetTimeout;
+ return (0, _queueRunner.default)(options);
+ };
+
+ this.topSuite = function () {
+ return topSuite;
+ };
+
+ const uncaught = err => {
+ if (currentSpec) {
+ currentSpec.onException(err);
+ currentSpec.cancel();
+ } else {
+ console.error('Unhandled error');
+ console.error(err.stack);
+ }
+ };
+
+ let oldListenersException;
+ let oldListenersRejection;
+
+ const executionSetup = function () {
+ // Need to ensure we are the only ones handling these exceptions.
+ oldListenersException = process.listeners('uncaughtException').slice();
+ oldListenersRejection = process.listeners('unhandledRejection').slice();
+ j$.process.removeAllListeners('uncaughtException');
+ j$.process.removeAllListeners('unhandledRejection');
+ j$.process.on('uncaughtException', uncaught);
+ j$.process.on('unhandledRejection', uncaught);
+ };
+
+ const executionTeardown = function () {
+ j$.process.removeListener('uncaughtException', uncaught);
+ j$.process.removeListener('unhandledRejection', uncaught); // restore previous exception handlers
+
+ oldListenersException.forEach(listener => {
+ j$.process.on('uncaughtException', listener);
+ });
+ oldListenersRejection.forEach(listener => {
+ j$.process.on('unhandledRejection', listener);
+ });
+ };
+
+ this.execute = async function (runnablesToRun, suiteTree = topSuite) {
+ if (!runnablesToRun) {
+ if (focusedRunnables.length) {
+ runnablesToRun = focusedRunnables;
+ } else {
+ runnablesToRun = [suiteTree.id];
+ }
+ }
+
+ if (currentlyExecutingSuites.length === 0) {
+ executionSetup();
+ }
+
+ const lastDeclarationSuite = currentDeclarationSuite;
+ await (0, _treeProcessor.default)({
+ nodeComplete(suite) {
+ if (!suite.disabled) {
+ clearResourcesForRunnable(suite.id);
+ }
+
+ currentlyExecutingSuites.pop();
+
+ if (suite === topSuite) {
+ reporter.jasmineDone({
+ failedExpectations: topSuite.result.failedExpectations
+ });
+ } else {
+ reporter.suiteDone(suite.getResult());
+ }
+ },
+
+ nodeStart(suite) {
+ currentlyExecutingSuites.push(suite);
+ defaultResourcesForRunnable(
+ suite.id,
+ suite.parentSuite && suite.parentSuite.id
+ );
+
+ if (suite === topSuite) {
+ reporter.jasmineStarted({
+ totalSpecsDefined
+ });
+ } else {
+ reporter.suiteStarted(suite.result);
+ }
+ },
+
+ queueRunnerFactory,
+ runnableIds: runnablesToRun,
+ tree: suiteTree
+ });
+ currentDeclarationSuite = lastDeclarationSuite;
+
+ if (currentlyExecutingSuites.length === 0) {
+ executionTeardown();
+ }
+ };
+
+ this.addReporter = function (reporterToAdd) {
+ reporter.addReporter(reporterToAdd);
+ };
+
+ this.provideFallbackReporter = function (reporterToAdd) {
+ reporter.provideFallbackReporter(reporterToAdd);
+ };
+
+ this.clearReporters = function () {
+ reporter.clearReporters();
+ };
+
+ const spyRegistry = new j$.SpyRegistry({
+ currentSpies() {
+ if (!currentRunnable()) {
+ throw new Error(
+ 'Spies must be created in a before function or a spec'
+ );
+ }
+
+ return runnableResources[currentRunnable().id].spies;
+ }
+ });
+
+ this.allowRespy = function (allow) {
+ spyRegistry.allowRespy(allow);
+ };
+
+ this.spyOn = function (...args) {
+ return spyRegistry.spyOn.apply(spyRegistry, args);
+ };
+
+ const suiteFactory = function (description) {
+ const suite = new j$.Suite({
+ id: getNextSuiteId(),
+ description,
+ parentSuite: currentDeclarationSuite,
+ throwOnExpectationFailure,
+
+ getTestPath() {
+ return j$.testPath;
+ }
+ });
+ return suite;
+ };
+
+ this.describe = function (description, specDefinitions) {
+ const suite = suiteFactory(description);
+
+ if (specDefinitions === undefined) {
+ throw new Error(
+ 'Missing second argument. It must be a callback function.'
+ );
+ }
+
+ if (typeof specDefinitions !== 'function') {
+ throw new Error(
+ `Invalid second argument, ${specDefinitions}. It must be a callback function.`
+ );
+ }
+
+ if (specDefinitions.length > 0) {
+ throw new Error('describe does not expect any arguments');
+ }
+
+ if (currentDeclarationSuite.markedPending) {
+ suite.pend();
+ }
+
+ if (currentDeclarationSuite.markedTodo) {
+ // @ts-expect-error TODO Possible error: Suite does not have todo method
+ suite.todo();
+ }
+
+ addSpecsToSuite(suite, specDefinitions);
+ return suite;
+ };
+
+ this.xdescribe = function (description, specDefinitions) {
+ const suite = suiteFactory(description);
+ suite.pend();
+ addSpecsToSuite(suite, specDefinitions);
+ return suite;
+ };
+
+ const focusedRunnables = [];
+
+ this.fdescribe = function (description, specDefinitions) {
+ const suite = suiteFactory(description);
+ suite.isFocused = true;
+ focusedRunnables.push(suite.id);
+ unfocusAncestor();
+ addSpecsToSuite(suite, specDefinitions);
+ return suite;
+ };
+
+ const addSpecsToSuite = (suite, specDefinitions) => {
+ const parentSuite = currentDeclarationSuite;
+ parentSuite.addChild(suite);
+ currentDeclarationSuite = suite;
+ let declarationError = undefined;
+ let describeReturnValue;
+
+ try {
+ describeReturnValue = specDefinitions.call(suite);
+ } catch (e) {
+ declarationError = e;
+ }
+
+ if ((0, _jestUtil.isPromise)(describeReturnValue)) {
+ declarationError = new Error(
+ 'Returning a Promise from "describe" is not supported. Tests must be defined synchronously.'
+ );
+ } else if (describeReturnValue !== undefined) {
+ declarationError = new Error(
+ 'A "describe" callback must not return a value.'
+ );
+ }
+
+ if (declarationError) {
+ this.it('encountered a declaration exception', () => {
+ throw declarationError;
+ });
+ }
+
+ currentDeclarationSuite = parentSuite;
+ };
+
+ function findFocusedAncestor(suite) {
+ while (suite) {
+ if (suite.isFocused) {
+ return suite.id;
+ }
+
+ suite = suite.parentSuite;
+ }
+
+ return null;
+ }
+
+ function unfocusAncestor() {
+ const focusedAncestor = findFocusedAncestor(currentDeclarationSuite);
+
+ if (focusedAncestor) {
+ for (let i = 0; i < focusedRunnables.length; i++) {
+ if (focusedRunnables[i] === focusedAncestor) {
+ focusedRunnables.splice(i, 1);
+ break;
+ }
+ }
+ }
+ }
+
+ const specFactory = (description, fn, suite, timeout) => {
+ totalSpecsDefined++;
+ const spec = new j$.Spec({
+ id: getNextSpecId(),
+ beforeAndAfterFns: beforeAndAfterFns(suite),
+ resultCallback: specResultCallback,
+
+ getSpecName(spec) {
+ return getSpecName(spec, suite);
+ },
+
+ getTestPath() {
+ return j$.testPath;
+ },
+
+ onStart: specStarted,
+ description,
+ queueRunnerFactory,
+
+ userContext() {
+ return suite.clonedSharedUserContext();
+ },
+
+ queueableFn: {
+ fn,
+
+ timeout() {
+ return timeout || j$._DEFAULT_TIMEOUT_INTERVAL;
+ }
+ },
+ throwOnExpectationFailure
+ });
+
+ if (!this.specFilter(spec)) {
+ spec.disable();
+ }
+
+ return spec;
+
+ function specResultCallback(result) {
+ clearResourcesForRunnable(spec.id);
+ currentSpec = null;
+ reporter.specDone(result);
+ }
+
+ function specStarted(spec) {
+ currentSpec = spec;
+ defaultResourcesForRunnable(spec.id, suite.id);
+ reporter.specStarted(spec.result);
+ }
+ };
+
+ this.it = function (description, fn, timeout) {
+ if (typeof description !== 'string') {
+ throw new Error(
+ `Invalid first argument, ${description}. It must be a string.`
+ );
+ }
+
+ if (fn === undefined) {
+ throw new Error(
+ 'Missing second argument. It must be a callback function. Perhaps you want to use `test.todo` for a test placeholder.'
+ );
+ }
+
+ if (typeof fn !== 'function') {
+ throw new Error(
+ `Invalid second argument, ${fn}. It must be a callback function.`
+ );
+ }
+
+ const spec = specFactory(
+ description,
+ fn,
+ currentDeclarationSuite,
+ timeout
+ );
+
+ if (currentDeclarationSuite.markedPending) {
+ spec.pend();
+ } // When a test is defined inside another, jasmine will not run it.
+ // This check throws an error to warn the user about the edge-case.
+
+ if (currentSpec !== null) {
+ throw new Error(
+ `Tests cannot be nested. Test "${spec.description}" cannot run because it is nested within "${currentSpec.description}".`
+ );
+ }
+
+ currentDeclarationSuite.addChild(spec);
+ return spec;
+ };
+
+ this.xit = function (...args) {
+ const spec = this.it.apply(this, args);
+ spec.pend('Temporarily disabled with xit');
+ return spec;
+ };
+
+ this.todo = function () {
+ const description = arguments[0];
+
+ if (arguments.length !== 1 || typeof description !== 'string') {
+ throw new _jestUtil.ErrorWithStack(
+ 'Todo must be called with only a description.',
+ this.todo
+ );
+ }
+
+ const spec = specFactory(
+ description,
+ () => {},
+ currentDeclarationSuite
+ );
+
+ if (currentDeclarationSuite.markedPending) {
+ spec.pend();
+ } else {
+ spec.todo();
+ }
+
+ currentDeclarationSuite.addChild(spec);
+ return spec;
+ };
+
+ this.fit = function (description, fn, timeout) {
+ const spec = specFactory(
+ description,
+ fn,
+ currentDeclarationSuite,
+ timeout
+ );
+ currentDeclarationSuite.addChild(spec);
+
+ if (currentDeclarationSuite.markedPending) {
+ spec.pend();
+ } else {
+ focusedRunnables.push(spec.id);
+ }
+
+ unfocusAncestor();
+ return spec;
+ };
+
+ this.beforeEach = function (beforeEachFunction, timeout) {
+ currentDeclarationSuite.beforeEach({
+ fn: beforeEachFunction,
+
+ timeout() {
+ return timeout || j$._DEFAULT_TIMEOUT_INTERVAL;
+ }
+ });
+ };
+
+ this.beforeAll = function (beforeAllFunction, timeout) {
+ currentDeclarationSuite.beforeAll({
+ fn: beforeAllFunction,
+
+ timeout() {
+ return timeout || j$._DEFAULT_TIMEOUT_INTERVAL;
+ }
+ });
+ };
+
+ this.afterEach = function (afterEachFunction, timeout) {
+ currentDeclarationSuite.afterEach({
+ fn: afterEachFunction,
+
+ timeout() {
+ return timeout || j$._DEFAULT_TIMEOUT_INTERVAL;
+ }
+ });
+ };
+
+ this.afterAll = function (afterAllFunction, timeout) {
+ currentDeclarationSuite.afterAll({
+ fn: afterAllFunction,
+
+ timeout() {
+ return timeout || j$._DEFAULT_TIMEOUT_INTERVAL;
+ }
+ });
+ };
+
+ this.pending = function (message) {
+ let fullMessage = j$.Spec.pendingSpecExceptionMessage;
+
+ if (message) {
+ fullMessage += message;
+ }
+
+ throw fullMessage;
+ };
+
+ this.fail = function (error) {
+ let checkIsError;
+ let message;
+
+ if (
+ error instanceof _assert.AssertionError ||
+ (error && error.name === _assert.AssertionError.name)
+ ) {
+ checkIsError = false; // @ts-expect-error TODO Possible error: j$.Spec does not have expand property
+
+ message = (0, _assertionErrorMessage.default)(error, {
+ expand: j$.Spec.expand
+ });
+ } else {
+ const check = (0, _isError.default)(error);
+ checkIsError = check.isError;
+ message = check.message;
+ }
+
+ const errorAsErrorObject = checkIsError ? error : new Error(message);
+ const runnable = currentRunnable();
+
+ if (!runnable) {
+ errorAsErrorObject.message =
+ 'Caught error after test environment was torn down\n\n' +
+ errorAsErrorObject.message;
+ throw errorAsErrorObject;
+ }
+
+ runnable.addExpectationResult(false, {
+ matcherName: '',
+ passed: false,
+ expected: '',
+ actual: '',
+ message,
+ error: errorAsErrorObject
+ });
+ };
+ }
+ };
+}
diff --git a/node_modules/jest-jasmine2/build/jasmine/JsApiReporter.d.ts b/node_modules/jest-jasmine2/build/jasmine/JsApiReporter.d.ts
new file mode 100644
index 0000000..ece0b73
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/JsApiReporter.d.ts
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+import type { Reporter, RunDetails } from '../types';
+import type { SpecResult } from './Spec';
+import type { SuiteResult } from './Suite';
+import type Timer from './Timer';
+export default class JsApiReporter implements Reporter {
+ started: boolean;
+ finished: boolean;
+ runDetails: RunDetails;
+ jasmineStarted: (runDetails: RunDetails) => void;
+ jasmineDone: (runDetails: RunDetails) => void;
+ status: () => unknown;
+ executionTime: () => unknown;
+ suiteStarted: (result: SuiteResult) => void;
+ suiteDone: (result: SuiteResult) => void;
+ suiteResults: (index: number, length: number) => Array<SuiteResult>;
+ suites: () => Record<string, SuiteResult>;
+ specResults: (index: number, length: number) => Array<SpecResult>;
+ specDone: (result: SpecResult) => void;
+ specs: () => Array<SpecResult>;
+ specStarted: (spec: SpecResult) => void;
+ constructor(options: {
+ timer?: Timer;
+ });
+}
diff --git a/node_modules/jest-jasmine2/build/jasmine/JsApiReporter.js b/node_modules/jest-jasmine2/build/jasmine/JsApiReporter.js
new file mode 100644
index 0000000..982f446
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/JsApiReporter.js
@@ -0,0 +1,173 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+
+function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+// This file is a heavily modified fork of Jasmine. Original license:
+
+/*
+Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+/* eslint-disable sort-keys */
+const noopTimer = {
+ start() {},
+
+ elapsed() {
+ return 0;
+ }
+};
+
+class JsApiReporter {
+ constructor(options) {
+ _defineProperty(this, 'started', void 0);
+
+ _defineProperty(this, 'finished', void 0);
+
+ _defineProperty(this, 'runDetails', void 0);
+
+ _defineProperty(this, 'jasmineStarted', void 0);
+
+ _defineProperty(this, 'jasmineDone', void 0);
+
+ _defineProperty(this, 'status', void 0);
+
+ _defineProperty(this, 'executionTime', void 0);
+
+ _defineProperty(this, 'suiteStarted', void 0);
+
+ _defineProperty(this, 'suiteDone', void 0);
+
+ _defineProperty(this, 'suiteResults', void 0);
+
+ _defineProperty(this, 'suites', void 0);
+
+ _defineProperty(this, 'specResults', void 0);
+
+ _defineProperty(this, 'specDone', void 0);
+
+ _defineProperty(this, 'specs', void 0);
+
+ _defineProperty(this, 'specStarted', void 0);
+
+ const timer = options.timer || noopTimer;
+ let status = 'loaded';
+ this.started = false;
+ this.finished = false;
+ this.runDetails = {};
+
+ this.jasmineStarted = () => {
+ this.started = true;
+ status = 'started';
+ timer.start();
+ };
+
+ let executionTime;
+
+ function validateAfterAllExceptions({failedExpectations}) {
+ if (failedExpectations && failedExpectations.length > 0) {
+ throw failedExpectations[0];
+ }
+ }
+
+ this.jasmineDone = function (runDetails) {
+ validateAfterAllExceptions(runDetails);
+ this.finished = true;
+ this.runDetails = runDetails;
+ executionTime = timer.elapsed();
+ status = 'done';
+ };
+
+ this.status = function () {
+ return status;
+ };
+
+ const suites = [];
+ const suites_hash = {};
+
+ this.specStarted = function () {};
+
+ this.suiteStarted = function (result) {
+ suites_hash[result.id] = result;
+ };
+
+ this.suiteDone = function (result) {
+ storeSuite(result);
+ };
+
+ this.suiteResults = function (index, length) {
+ return suites.slice(index, index + length);
+ };
+
+ function storeSuite(result) {
+ suites.push(result);
+ suites_hash[result.id] = result;
+ }
+
+ this.suites = function () {
+ return suites_hash;
+ };
+
+ const specs = [];
+
+ this.specDone = function (result) {
+ specs.push(result);
+ };
+
+ this.specResults = function (index, length) {
+ return specs.slice(index, index + length);
+ };
+
+ this.specs = function () {
+ return specs;
+ };
+
+ this.executionTime = function () {
+ return executionTime;
+ };
+ }
+}
+
+exports.default = JsApiReporter;
diff --git a/node_modules/jest-jasmine2/build/jasmine/ReportDispatcher.d.ts b/node_modules/jest-jasmine2/build/jasmine/ReportDispatcher.d.ts
new file mode 100644
index 0000000..9f89d05
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/ReportDispatcher.d.ts
@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+import type { Reporter, RunDetails } from '../types';
+import type { SpecResult } from './Spec';
+import type { SuiteResult } from './Suite';
+export default class ReportDispatcher implements Reporter {
+ addReporter: (reporter: Reporter) => void;
+ provideFallbackReporter: (reporter: Reporter) => void;
+ clearReporters: () => void;
+ jasmineDone: (runDetails: RunDetails) => void;
+ jasmineStarted: (runDetails: RunDetails) => void;
+ specDone: (result: SpecResult) => void;
+ specStarted: (spec: SpecResult) => void;
+ suiteDone: (result: SuiteResult) => void;
+ suiteStarted: (result: SuiteResult) => void;
+ constructor(methods: Array<keyof Reporter>);
+}
diff --git a/node_modules/jest-jasmine2/build/jasmine/ReportDispatcher.js b/node_modules/jest-jasmine2/build/jasmine/ReportDispatcher.js
new file mode 100644
index 0000000..3acead9
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/ReportDispatcher.js
@@ -0,0 +1,127 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+
+function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+// This file is a heavily modified fork of Jasmine. Original license:
+
+/*
+Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+/* eslint-disable local/prefer-spread-eventually, local/prefer-rest-params-eventually */
+class ReportDispatcher {
+ // @ts-expect-error
+ // @ts-expect-error
+ // @ts-expect-error
+ // @ts-expect-error
+ // @ts-expect-error
+ // @ts-expect-error
+ constructor(methods) {
+ _defineProperty(this, 'addReporter', void 0);
+
+ _defineProperty(this, 'provideFallbackReporter', void 0);
+
+ _defineProperty(this, 'clearReporters', void 0);
+
+ _defineProperty(this, 'jasmineDone', void 0);
+
+ _defineProperty(this, 'jasmineStarted', void 0);
+
+ _defineProperty(this, 'specDone', void 0);
+
+ _defineProperty(this, 'specStarted', void 0);
+
+ _defineProperty(this, 'suiteDone', void 0);
+
+ _defineProperty(this, 'suiteStarted', void 0);
+
+ const dispatchedMethods = methods || [];
+
+ for (let i = 0; i < dispatchedMethods.length; i++) {
+ const method = dispatchedMethods[i];
+
+ this[method] = (function (m) {
+ return function () {
+ dispatch(m, arguments);
+ };
+ })(method);
+ }
+
+ let reporters = [];
+ let fallbackReporter = null;
+
+ this.addReporter = function (reporter) {
+ reporters.push(reporter);
+ };
+
+ this.provideFallbackReporter = function (reporter) {
+ fallbackReporter = reporter;
+ };
+
+ this.clearReporters = function () {
+ reporters = [];
+ };
+
+ return this;
+
+ function dispatch(method, args) {
+ if (reporters.length === 0 && fallbackReporter !== null) {
+ reporters.push(fallbackReporter);
+ }
+
+ for (let i = 0; i < reporters.length; i++) {
+ const reporter = reporters[i];
+
+ if (reporter[method]) {
+ // @ts-expect-error
+ reporter[method].apply(reporter, args);
+ }
+ }
+ }
+ }
+}
+
+exports.default = ReportDispatcher;
diff --git a/node_modules/jest-jasmine2/build/jasmine/Spec.d.ts b/node_modules/jest-jasmine2/build/jasmine/Spec.d.ts
new file mode 100644
index 0000000..e6ba7ce
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/Spec.d.ts
@@ -0,0 +1,81 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+import type { FailedAssertion, Milliseconds, Status } from '@jest/test-result';
+import type { Config } from '@jest/types';
+import ExpectationFailed from '../ExpectationFailed';
+import expectationResultFactory, { Options as ExpectationResultFactoryOptions } from '../expectationResultFactory';
+import type { QueueableFn, default as queueRunner } from '../queueRunner';
+import type { AssertionErrorWithStack } from '../types';
+export declare type Attributes = {
+ id: string;
+ resultCallback: (result: Spec['result']) => void;
+ description: string;
+ throwOnExpectationFailure: unknown;
+ getTestPath: () => Config.Path;
+ queueableFn: QueueableFn;
+ beforeAndAfterFns: () => {
+ befores: Array<QueueableFn>;
+ afters: Array<QueueableFn>;
+ };
+ userContext: () => unknown;
+ onStart: (context: Spec) => void;
+ getSpecName: (spec: Spec) => string;
+ queueRunnerFactory: typeof queueRunner;
+};
+export declare type SpecResult = {
+ id: string;
+ description: string;
+ fullName: string;
+ duration?: Milliseconds;
+ failedExpectations: Array<FailedAssertion>;
+ testPath: Config.Path;
+ passedExpectations: Array<ReturnType<typeof expectationResultFactory>>;
+ pendingReason: string;
+ status: Status;
+ __callsite?: {
+ getColumnNumber: () => number;
+ getLineNumber: () => number;
+ };
+};
+export default class Spec {
+ id: string;
+ description: string;
+ resultCallback: (result: SpecResult) => void;
+ queueableFn: QueueableFn;
+ beforeAndAfterFns: () => {
+ befores: Array<QueueableFn>;
+ afters: Array<QueueableFn>;
+ };
+ userContext: () => unknown;
+ onStart: (spec: Spec) => void;
+ getSpecName: (spec: Spec) => string;
+ queueRunnerFactory: typeof queueRunner;
+ throwOnExpectationFailure: boolean;
+ initError: Error;
+ result: SpecResult;
+ disabled?: boolean;
+ currentRun?: ReturnType<typeof queueRunner>;
+ markedTodo?: boolean;
+ markedPending?: boolean;
+ expand?: boolean;
+ static pendingSpecExceptionMessage: string;
+ static isPendingSpecException(e: Error): boolean;
+ constructor(attrs: Attributes);
+ addExpectationResult(passed: boolean, data: ExpectationResultFactoryOptions, isError?: boolean): void;
+ execute(onComplete?: () => void, enabled?: boolean): void;
+ cancel(): void;
+ onException(error: ExpectationFailed | AssertionErrorWithStack): void;
+ disable(): void;
+ pend(message?: string): void;
+ todo(): void;
+ getResult(): SpecResult;
+ status(enabled?: boolean): "todo" | "passed" | "failed" | "pending" | "disabled";
+ isExecutable(): boolean;
+ getFullName(): string;
+ isAssertionError(error: Error): boolean;
+}
diff --git a/node_modules/jest-jasmine2/build/jasmine/Spec.js b/node_modules/jest-jasmine2/build/jasmine/Spec.js
new file mode 100644
index 0000000..32fbc49
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/Spec.js
@@ -0,0 +1,298 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+
+var _assert = require('assert');
+
+var _ExpectationFailed = _interopRequireDefault(
+ require('../ExpectationFailed')
+);
+
+var _assertionErrorMessage = _interopRequireDefault(
+ require('../assertionErrorMessage')
+);
+
+var _expectationResultFactory = _interopRequireDefault(
+ require('../expectationResultFactory')
+);
+
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {default: obj};
+}
+
+function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+}
+
+class Spec {
+ static isPendingSpecException(e) {
+ return !!(
+ e &&
+ e.toString &&
+ e.toString().indexOf(Spec.pendingSpecExceptionMessage) !== -1
+ );
+ }
+
+ constructor(attrs) {
+ _defineProperty(this, 'id', void 0);
+
+ _defineProperty(this, 'description', void 0);
+
+ _defineProperty(this, 'resultCallback', void 0);
+
+ _defineProperty(this, 'queueableFn', void 0);
+
+ _defineProperty(this, 'beforeAndAfterFns', void 0);
+
+ _defineProperty(this, 'userContext', void 0);
+
+ _defineProperty(this, 'onStart', void 0);
+
+ _defineProperty(this, 'getSpecName', void 0);
+
+ _defineProperty(this, 'queueRunnerFactory', void 0);
+
+ _defineProperty(this, 'throwOnExpectationFailure', void 0);
+
+ _defineProperty(this, 'initError', void 0);
+
+ _defineProperty(this, 'result', void 0);
+
+ _defineProperty(this, 'disabled', void 0);
+
+ _defineProperty(this, 'currentRun', void 0);
+
+ _defineProperty(this, 'markedTodo', void 0);
+
+ _defineProperty(this, 'markedPending', void 0);
+
+ _defineProperty(this, 'expand', void 0);
+
+ this.resultCallback = attrs.resultCallback || function () {};
+
+ this.id = attrs.id;
+ this.description = attrs.description || '';
+ this.queueableFn = attrs.queueableFn;
+
+ this.beforeAndAfterFns =
+ attrs.beforeAndAfterFns ||
+ function () {
+ return {
+ befores: [],
+ afters: []
+ };
+ };
+
+ this.userContext =
+ attrs.userContext ||
+ function () {
+ return {};
+ };
+
+ this.onStart = attrs.onStart || function () {};
+
+ this.getSpecName =
+ attrs.getSpecName ||
+ function () {
+ return '';
+ };
+
+ this.queueRunnerFactory = attrs.queueRunnerFactory || function () {};
+
+ this.throwOnExpectationFailure = !!attrs.throwOnExpectationFailure;
+ this.initError = new Error();
+ this.initError.name = ''; // Without this line v8 stores references to all closures
+ // in the stack in the Error object. This line stringifies the stack
+ // property to allow garbage-collecting objects on the stack
+ // https://crbug.com/v8/7142
+
+ this.initError.stack = this.initError.stack;
+ this.queueableFn.initError = this.initError; // @ts-expect-error
+
+ this.result = {
+ id: this.id,
+ description: this.description,
+ fullName: this.getFullName(),
+ failedExpectations: [],
+ passedExpectations: [],
+ pendingReason: '',
+ testPath: attrs.getTestPath()
+ };
+ }
+
+ addExpectationResult(passed, data, isError) {
+ const expectationResult = (0, _expectationResultFactory.default)(
+ data,
+ this.initError
+ );
+
+ if (passed) {
+ this.result.passedExpectations.push(expectationResult);
+ } else {
+ this.result.failedExpectations.push(expectationResult);
+
+ if (this.throwOnExpectationFailure && !isError) {
+ throw new _ExpectationFailed.default();
+ }
+ }
+ }
+
+ execute(onComplete, enabled) {
+ const self = this;
+ this.onStart(this);
+
+ if (
+ !this.isExecutable() ||
+ this.markedPending ||
+ this.markedTodo ||
+ enabled === false
+ ) {
+ complete(enabled);
+ return;
+ }
+
+ const fns = this.beforeAndAfterFns();
+ const allFns = fns.befores.concat(this.queueableFn).concat(fns.afters);
+ this.currentRun = this.queueRunnerFactory({
+ queueableFns: allFns,
+
+ onException() {
+ // @ts-expect-error
+ self.onException.apply(self, arguments);
+ },
+
+ userContext: this.userContext(),
+ setTimeout,
+ clearTimeout,
+ fail: () => {}
+ });
+ this.currentRun.then(() => complete(true));
+
+ function complete(enabledAgain) {
+ self.result.status = self.status(enabledAgain);
+ self.resultCallback(self.result);
+
+ if (onComplete) {
+ onComplete();
+ }
+ }
+ }
+
+ cancel() {
+ if (this.currentRun) {
+ this.currentRun.cancel();
+ }
+ }
+
+ onException(error) {
+ if (Spec.isPendingSpecException(error)) {
+ this.pend(extractCustomPendingMessage(error));
+ return;
+ }
+
+ if (error instanceof _ExpectationFailed.default) {
+ return;
+ }
+
+ this.addExpectationResult(
+ false,
+ {
+ matcherName: '',
+ passed: false,
+ expected: '',
+ actual: '',
+ error: this.isAssertionError(error)
+ ? (0, _assertionErrorMessage.default)(error, {
+ expand: this.expand
+ })
+ : error
+ },
+ true
+ );
+ }
+
+ disable() {
+ this.disabled = true;
+ }
+
+ pend(message) {
+ this.markedPending = true;
+
+ if (message) {
+ this.result.pendingReason = message;
+ }
+ }
+
+ todo() {
+ this.markedTodo = true;
+ }
+
+ getResult() {
+ this.result.status = this.status();
+ return this.result;
+ }
+
+ status(enabled) {
+ if (this.disabled || enabled === false) {
+ return 'disabled';
+ }
+
+ if (this.markedTodo) {
+ return 'todo';
+ }
+
+ if (this.markedPending) {
+ return 'pending';
+ }
+
+ if (this.result.failedExpectations.length > 0) {
+ return 'failed';
+ } else {
+ return 'passed';
+ }
+ }
+
+ isExecutable() {
+ return !this.disabled;
+ }
+
+ getFullName() {
+ return this.getSpecName(this);
+ }
+
+ isAssertionError(error) {
+ return (
+ error instanceof _assert.AssertionError ||
+ (error && error.name === _assert.AssertionError.name)
+ );
+ }
+}
+
+exports.default = Spec;
+
+_defineProperty(Spec, 'pendingSpecExceptionMessage', void 0);
+
+Spec.pendingSpecExceptionMessage = '=> marked Pending';
+
+const extractCustomPendingMessage = function (e) {
+ const fullMessage = e.toString();
+ const boilerplateStart = fullMessage.indexOf(
+ Spec.pendingSpecExceptionMessage
+ );
+ const boilerplateEnd =
+ boilerplateStart + Spec.pendingSpecExceptionMessage.length;
+ return fullMessage.substr(boilerplateEnd);
+};
diff --git a/node_modules/jest-jasmine2/build/jasmine/SpyStrategy.d.ts b/node_modules/jest-jasmine2/build/jasmine/SpyStrategy.d.ts
new file mode 100644
index 0000000..a54754d
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/SpyStrategy.d.ts
@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+export default class SpyStrategy {
+ identity: () => string;
+ exec: (...args: Array<any>) => unknown;
+ callThrough: () => unknown;
+ returnValue: (value: unknown) => unknown;
+ returnValues: () => unknown;
+ throwError: (something: string | Error) => unknown;
+ callFake: (fn: Function) => unknown;
+ stub: (fn: Function) => unknown;
+ constructor({ name, fn, getSpy, }?: {
+ name?: string;
+ fn?: Function;
+ getSpy?: () => unknown;
+ });
+}
diff --git a/node_modules/jest-jasmine2/build/jasmine/SpyStrategy.js b/node_modules/jest-jasmine2/build/jasmine/SpyStrategy.js
new file mode 100644
index 0000000..fc7de39
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/SpyStrategy.js
@@ -0,0 +1,143 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+
+function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+// This file is a heavily modified fork of Jasmine. Original license:
+
+/*
+Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+/* eslint-disable local/ban-types-eventually, local/prefer-rest-params-eventually */
+class SpyStrategy {
+ constructor({
+ name = 'unknown',
+ fn = function () {},
+ getSpy = function () {}
+ } = {}) {
+ _defineProperty(this, 'identity', void 0);
+
+ _defineProperty(this, 'exec', void 0);
+
+ _defineProperty(this, 'callThrough', void 0);
+
+ _defineProperty(this, 'returnValue', void 0);
+
+ _defineProperty(this, 'returnValues', void 0);
+
+ _defineProperty(this, 'throwError', void 0);
+
+ _defineProperty(this, 'callFake', void 0);
+
+ _defineProperty(this, 'stub', void 0);
+
+ const identity = name;
+ const originalFn = fn;
+
+ let plan = function () {};
+
+ this.identity = function () {
+ return identity;
+ };
+
+ this.exec = function () {
+ return plan.apply(this, arguments);
+ };
+
+ this.callThrough = function () {
+ plan = originalFn;
+ return getSpy();
+ };
+
+ this.returnValue = function (value) {
+ plan = function () {
+ return value;
+ };
+
+ return getSpy();
+ };
+
+ this.returnValues = function () {
+ const values = Array.prototype.slice.call(arguments);
+
+ plan = function () {
+ return values.shift();
+ };
+
+ return getSpy();
+ };
+
+ this.throwError = function (something) {
+ const error =
+ something instanceof Error ? something : new Error(something);
+
+ plan = function () {
+ throw error;
+ };
+
+ return getSpy();
+ };
+
+ this.callFake = function (fn) {
+ if (typeof fn !== 'function') {
+ throw new Error(
+ 'Argument passed to callFake should be a function, got ' + fn
+ );
+ }
+
+ plan = fn;
+ return getSpy();
+ };
+
+ this.stub = function (_fn) {
+ plan = function () {};
+
+ return getSpy();
+ };
+ }
+}
+
+exports.default = SpyStrategy;
diff --git a/node_modules/jest-jasmine2/build/jasmine/Suite.d.ts b/node_modules/jest-jasmine2/build/jasmine/Suite.d.ts
new file mode 100644
index 0000000..7bfd374
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/Suite.d.ts
@@ -0,0 +1,61 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+import type { Config } from '@jest/types';
+import expectationResultFactory from '../expectationResultFactory';
+import type { QueueableFn } from '../queueRunner';
+import type Spec from './Spec';
+export declare type SuiteResult = {
+ id: string;
+ description: string;
+ fullName: string;
+ failedExpectations: Array<ReturnType<typeof expectationResultFactory>>;
+ testPath: Config.Path;
+ status?: string;
+};
+export declare type Attributes = {
+ id: string;
+ parentSuite?: Suite;
+ description: string;
+ throwOnExpectationFailure?: boolean;
+ getTestPath: () => Config.Path;
+};
+export default class Suite {
+ id: string;
+ parentSuite?: Suite;
+ description: string;
+ throwOnExpectationFailure: boolean;
+ beforeFns: Array<QueueableFn>;
+ afterFns: Array<QueueableFn>;
+ beforeAllFns: Array<QueueableFn>;
+ afterAllFns: Array<QueueableFn>;
+ disabled: boolean;
+ children: Array<Suite | Spec>;
+ result: SuiteResult;
+ sharedContext?: object;
+ markedPending: boolean;
+ markedTodo: boolean;
+ isFocused: boolean;
+ constructor(attrs: Attributes);
+ getFullName(): string;
+ disable(): void;
+ pend(_message?: string): void;
+ beforeEach(fn: QueueableFn): void;
+ beforeAll(fn: QueueableFn): void;
+ afterEach(fn: QueueableFn): void;
+ afterAll(fn: QueueableFn): void;
+ addChild(child: Suite | Spec): void;
+ status(): "failed" | "pending" | "disabled" | "finished";
+ isExecutable(): boolean;
+ canBeReentered(): boolean;
+ getResult(): SuiteResult;
+ sharedUserContext(): object;
+ clonedSharedUserContext(): object;
+ onException(...args: Parameters<Spec['onException']>): void;
+ addExpectationResult(...args: Parameters<Spec['addExpectationResult']>): void;
+ execute(..._args: Array<any>): void;
+}
diff --git a/node_modules/jest-jasmine2/build/jasmine/Suite.js b/node_modules/jest-jasmine2/build/jasmine/Suite.js
new file mode 100644
index 0000000..79f9f15
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/Suite.js
@@ -0,0 +1,235 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+
+var _jestUtil = require('jest-util');
+
+var _ExpectationFailed = _interopRequireDefault(
+ require('../ExpectationFailed')
+);
+
+var _expectationResultFactory = _interopRequireDefault(
+ require('../expectationResultFactory')
+);
+
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {default: obj};
+}
+
+function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+}
+
+class Suite {
+ constructor(attrs) {
+ _defineProperty(this, 'id', void 0);
+
+ _defineProperty(this, 'parentSuite', void 0);
+
+ _defineProperty(this, 'description', void 0);
+
+ _defineProperty(this, 'throwOnExpectationFailure', void 0);
+
+ _defineProperty(this, 'beforeFns', void 0);
+
+ _defineProperty(this, 'afterFns', void 0);
+
+ _defineProperty(this, 'beforeAllFns', void 0);
+
+ _defineProperty(this, 'afterAllFns', void 0);
+
+ _defineProperty(this, 'disabled', void 0);
+
+ _defineProperty(this, 'children', void 0);
+
+ _defineProperty(this, 'result', void 0);
+
+ _defineProperty(this, 'sharedContext', void 0);
+
+ _defineProperty(this, 'markedPending', void 0);
+
+ _defineProperty(this, 'markedTodo', void 0);
+
+ _defineProperty(this, 'isFocused', void 0);
+
+ this.markedPending = false;
+ this.markedTodo = false;
+ this.isFocused = false;
+ this.id = attrs.id;
+ this.parentSuite = attrs.parentSuite;
+ this.description = (0, _jestUtil.convertDescriptorToString)(
+ attrs.description
+ );
+ this.throwOnExpectationFailure = !!attrs.throwOnExpectationFailure;
+ this.beforeFns = [];
+ this.afterFns = [];
+ this.beforeAllFns = [];
+ this.afterAllFns = [];
+ this.disabled = false;
+ this.children = [];
+ this.result = {
+ id: this.id,
+ description: this.description,
+ fullName: this.getFullName(),
+ failedExpectations: [],
+ testPath: attrs.getTestPath()
+ };
+ }
+
+ getFullName() {
+ const fullName = [];
+
+ for (
+ let parentSuite = this;
+ parentSuite;
+ parentSuite = parentSuite.parentSuite
+ ) {
+ if (parentSuite.parentSuite) {
+ fullName.unshift(parentSuite.description);
+ }
+ }
+
+ return fullName.join(' ');
+ }
+
+ disable() {
+ this.disabled = true;
+ }
+
+ pend(_message) {
+ this.markedPending = true;
+ }
+
+ beforeEach(fn) {
+ this.beforeFns.unshift(fn);
+ }
+
+ beforeAll(fn) {
+ this.beforeAllFns.push(fn);
+ }
+
+ afterEach(fn) {
+ this.afterFns.unshift(fn);
+ }
+
+ afterAll(fn) {
+ this.afterAllFns.unshift(fn);
+ }
+
+ addChild(child) {
+ this.children.push(child);
+ }
+
+ status() {
+ if (this.disabled) {
+ return 'disabled';
+ }
+
+ if (this.markedPending) {
+ return 'pending';
+ }
+
+ if (this.result.failedExpectations.length > 0) {
+ return 'failed';
+ } else {
+ return 'finished';
+ }
+ }
+
+ isExecutable() {
+ return !this.disabled;
+ }
+
+ canBeReentered() {
+ return this.beforeAllFns.length === 0 && this.afterAllFns.length === 0;
+ }
+
+ getResult() {
+ this.result.status = this.status();
+ return this.result;
+ }
+
+ sharedUserContext() {
+ if (!this.sharedContext) {
+ this.sharedContext = {};
+ }
+
+ return this.sharedContext;
+ }
+
+ clonedSharedUserContext() {
+ return this.sharedUserContext();
+ }
+
+ onException(...args) {
+ if (args[0] instanceof _ExpectationFailed.default) {
+ return;
+ }
+
+ if (isAfterAll(this.children)) {
+ const data = {
+ matcherName: '',
+ passed: false,
+ expected: '',
+ actual: '',
+ error: arguments[0]
+ };
+ this.result.failedExpectations.push(
+ (0, _expectationResultFactory.default)(data)
+ );
+ } else {
+ for (let i = 0; i < this.children.length; i++) {
+ const child = this.children[i];
+ child.onException.apply(child, args);
+ }
+ }
+ }
+
+ addExpectationResult(...args) {
+ if (isAfterAll(this.children) && isFailure(args)) {
+ const data = args[1];
+ this.result.failedExpectations.push(
+ (0, _expectationResultFactory.default)(data)
+ );
+
+ if (this.throwOnExpectationFailure) {
+ throw new _ExpectationFailed.default();
+ }
+ } else {
+ for (let i = 0; i < this.children.length; i++) {
+ const child = this.children[i];
+
+ try {
+ child.addExpectationResult.apply(child, args);
+ } catch {
+ // keep going
+ }
+ }
+ }
+ }
+
+ execute(..._args) {}
+}
+
+exports.default = Suite;
+
+function isAfterAll(children) {
+ return children && children[0] && children[0].result.status;
+}
+
+function isFailure(args) {
+ return !args[0];
+}
diff --git a/node_modules/jest-jasmine2/build/jasmine/Timer.d.ts b/node_modules/jest-jasmine2/build/jasmine/Timer.d.ts
new file mode 100644
index 0000000..17c97e6
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/Timer.d.ts
@@ -0,0 +1,14 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+export default class Timer {
+ start: () => void;
+ elapsed: () => number;
+ constructor(options?: {
+ now?: () => number;
+ });
+}
diff --git a/node_modules/jest-jasmine2/build/jasmine/Timer.js b/node_modules/jest-jasmine2/build/jasmine/Timer.js
new file mode 100644
index 0000000..6183940
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/Timer.js
@@ -0,0 +1,79 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+
+function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+// This file is a heavily modified fork of Jasmine. Original license:
+
+/*
+Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+const defaultNow = (function (Date) {
+ return function () {
+ return new Date().getTime();
+ };
+})(Date);
+
+class Timer {
+ constructor(options) {
+ _defineProperty(this, 'start', void 0);
+
+ _defineProperty(this, 'elapsed', void 0);
+
+ options = options || {};
+ const now = options.now || defaultNow;
+ let startTime;
+
+ this.start = function () {
+ startTime = now();
+ };
+
+ this.elapsed = function () {
+ return now() - startTime;
+ };
+ }
+}
+
+exports.default = Timer;
diff --git a/node_modules/jest-jasmine2/build/jasmine/createSpy.d.ts b/node_modules/jest-jasmine2/build/jasmine/createSpy.d.ts
new file mode 100644
index 0000000..f1d0173
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/createSpy.d.ts
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+import type { Spy } from '../types';
+interface Fn extends Record<string, unknown> {
+ (): unknown;
+}
+declare function createSpy(name: string, originalFn: Fn): Spy;
+export default createSpy;
diff --git a/node_modules/jest-jasmine2/build/jasmine/createSpy.js b/node_modules/jest-jasmine2/build/jasmine/createSpy.js
new file mode 100644
index 0000000..17a6728
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/createSpy.js
@@ -0,0 +1,88 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+
+var _CallTracker = _interopRequireDefault(require('./CallTracker'));
+
+var _SpyStrategy = _interopRequireDefault(require('./SpyStrategy'));
+
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {default: obj};
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+// This file is a heavily modified fork of Jasmine. Original license:
+
+/*
+Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+/* eslint-disable sort-keys, local/prefer-rest-params-eventually */
+function createSpy(name, originalFn) {
+ const spyStrategy = new _SpyStrategy.default({
+ name,
+ fn: originalFn,
+
+ getSpy() {
+ return spy;
+ }
+ });
+ const callTracker = new _CallTracker.default();
+
+ const spy = function (...args) {
+ const callData = {
+ object: this,
+ args: Array.prototype.slice.apply(arguments)
+ };
+ callTracker.track(callData);
+ const returnValue = spyStrategy.exec.apply(this, args);
+ callData.returnValue = returnValue;
+ return returnValue;
+ };
+
+ for (const prop in originalFn) {
+ if (prop === 'and' || prop === 'calls') {
+ throw new Error(
+ "Jasmine spies would overwrite the 'and' and 'calls' properties " +
+ 'on the object being spied upon'
+ );
+ }
+
+ spy[prop] = originalFn[prop];
+ }
+
+ spy.and = spyStrategy;
+ spy.calls = callTracker;
+ return spy;
+}
+
+var _default = createSpy;
+exports.default = _default;
diff --git a/node_modules/jest-jasmine2/build/jasmine/jasmineLight.d.ts b/node_modules/jest-jasmine2/build/jasmine/jasmineLight.d.ts
new file mode 100644
index 0000000..ad4fe02
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/jasmineLight.d.ts
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+import type { Jasmine, SpecDefinitionsFn } from '../types';
+import JsApiReporter from './JsApiReporter';
+export declare const create: (createOptions: Record<string, any>) => Jasmine;
+export declare const _interface: (jasmine: Jasmine, env: any) => {
+ describe(description: string, specDefinitions: SpecDefinitionsFn): any;
+ xdescribe(description: string, specDefinitions: SpecDefinitionsFn): any;
+ fdescribe(description: string, specDefinitions: SpecDefinitionsFn): any;
+ it(): any;
+ xit(): any;
+ fit(): any;
+ beforeEach(): any;
+ afterEach(): any;
+ beforeAll(): any;
+ afterAll(): any;
+ pending(): any;
+ fail(): any;
+ spyOn(obj: Record<string, any>, methodName: string, accessType?: string | undefined): any;
+ jsApiReporter: JsApiReporter;
+ jasmine: Jasmine;
+};
diff --git a/node_modules/jest-jasmine2/build/jasmine/jasmineLight.js b/node_modules/jest-jasmine2/build/jasmine/jasmineLight.js
new file mode 100644
index 0000000..0d921a0
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/jasmineLight.js
@@ -0,0 +1,171 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.create = exports._interface = void 0;
+
+var _Env = _interopRequireDefault(require('./Env'));
+
+var _JsApiReporter = _interopRequireDefault(require('./JsApiReporter'));
+
+var _ReportDispatcher = _interopRequireDefault(require('./ReportDispatcher'));
+
+var _Spec = _interopRequireDefault(require('./Spec'));
+
+var _Suite = _interopRequireDefault(require('./Suite'));
+
+var _Timer = _interopRequireDefault(require('./Timer'));
+
+var _createSpy = _interopRequireDefault(require('./createSpy'));
+
+var _spyRegistry = _interopRequireDefault(require('./spyRegistry'));
+
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {default: obj};
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+// This file is a heavily modified fork of Jasmine. Original license:
+
+/*
+Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+/* eslint-disable sort-keys, local/prefer-spread-eventually, local/prefer-rest-params-eventually */
+const create = function (createOptions) {
+ const j$ = {...createOptions};
+ j$._DEFAULT_TIMEOUT_INTERVAL = createOptions.testTimeout || 5000;
+
+ j$.getEnv = function () {
+ const env = (j$.currentEnv_ = j$.currentEnv_ || new j$.Env()); //jasmine. singletons in here (setTimeout blah blah).
+
+ return env;
+ };
+
+ j$.createSpy = _createSpy.default;
+ j$.Env = (0, _Env.default)(j$);
+ j$.JsApiReporter = _JsApiReporter.default;
+ j$.ReportDispatcher = _ReportDispatcher.default;
+ j$.Spec = _Spec.default;
+ j$.SpyRegistry = _spyRegistry.default;
+ j$.Suite = _Suite.default;
+ j$.Timer = _Timer.default;
+ j$.version = '2.5.2-light';
+ return j$;
+}; // Interface is a reserved word in strict mode, so can't export it as ESM
+
+exports.create = create;
+
+const _interface = function (jasmine, env) {
+ const jasmineInterface = {
+ describe(description, specDefinitions) {
+ return env.describe(description, specDefinitions);
+ },
+
+ xdescribe(description, specDefinitions) {
+ return env.xdescribe(description, specDefinitions);
+ },
+
+ fdescribe(description, specDefinitions) {
+ return env.fdescribe(description, specDefinitions);
+ },
+
+ it() {
+ return env.it.apply(env, arguments);
+ },
+
+ xit() {
+ return env.xit.apply(env, arguments);
+ },
+
+ fit() {
+ return env.fit.apply(env, arguments);
+ },
+
+ beforeEach() {
+ if (typeof arguments[0] !== 'function') {
+ throw new Error(
+ 'Invalid first argument. It must be a callback function.'
+ );
+ }
+
+ return env.beforeEach.apply(env, arguments);
+ },
+
+ afterEach() {
+ if (typeof arguments[0] !== 'function') {
+ throw new Error(
+ 'Invalid first argument. It must be a callback function.'
+ );
+ }
+
+ return env.afterEach.apply(env, arguments);
+ },
+
+ beforeAll() {
+ if (typeof arguments[0] !== 'function') {
+ throw new Error(
+ 'Invalid first argument. It must be a callback function.'
+ );
+ }
+
+ return env.beforeAll.apply(env, arguments);
+ },
+
+ afterAll() {
+ if (typeof arguments[0] !== 'function') {
+ throw new Error(
+ 'Invalid first argument. It must be a callback function.'
+ );
+ }
+
+ return env.afterAll.apply(env, arguments);
+ },
+
+ pending() {
+ return env.pending.apply(env, arguments);
+ },
+
+ fail() {
+ return env.fail.apply(env, arguments);
+ },
+
+ spyOn(obj, methodName, accessType) {
+ return env.spyOn(obj, methodName, accessType);
+ },
+
+ jsApiReporter: new jasmine.JsApiReporter({
+ timer: new jasmine.Timer()
+ }),
+ jasmine
+ };
+ return jasmineInterface;
+};
+
+exports._interface = _interface;
diff --git a/node_modules/jest-jasmine2/build/jasmine/spyRegistry.d.ts b/node_modules/jest-jasmine2/build/jasmine/spyRegistry.d.ts
new file mode 100644
index 0000000..c5f215c
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/spyRegistry.d.ts
@@ -0,0 +1,18 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+import type { Spy } from '../types';
+export default class SpyRegistry {
+ allowRespy: (allow: unknown) => void;
+ spyOn: (obj: Record<string, Spy>, methodName: string, accessType?: keyof PropertyDescriptor) => Spy;
+ clearSpies: () => void;
+ respy: unknown;
+ private _spyOnProperty;
+ constructor({ currentSpies, }?: {
+ currentSpies?: () => Array<Spy>;
+ });
+}
diff --git a/node_modules/jest-jasmine2/build/jasmine/spyRegistry.js b/node_modules/jest-jasmine2/build/jasmine/spyRegistry.js
new file mode 100644
index 0000000..ce200ff
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmine/spyRegistry.js
@@ -0,0 +1,222 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+
+var _CallTracker = _interopRequireDefault(require('./CallTracker'));
+
+var _SpyStrategy = _interopRequireDefault(require('./SpyStrategy'));
+
+var _createSpy = _interopRequireDefault(require('./createSpy'));
+
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {default: obj};
+}
+
+function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+}
+
+const formatErrorMsg = (domain, usage) => {
+ const usageDefinition = usage ? '\nUsage: ' + usage : '';
+ return msg => domain + ' : ' + msg + usageDefinition;
+};
+
+function isSpy(putativeSpy) {
+ if (!putativeSpy) {
+ return false;
+ }
+
+ return (
+ putativeSpy.and instanceof _SpyStrategy.default &&
+ putativeSpy.calls instanceof _CallTracker.default
+ );
+}
+
+const getErrorMsg = formatErrorMsg('<spyOn>', 'spyOn(<object>, <methodName>)');
+
+class SpyRegistry {
+ constructor({currentSpies = () => []} = {}) {
+ _defineProperty(this, 'allowRespy', void 0);
+
+ _defineProperty(this, 'spyOn', void 0);
+
+ _defineProperty(this, 'clearSpies', void 0);
+
+ _defineProperty(this, 'respy', void 0);
+
+ _defineProperty(this, '_spyOnProperty', void 0);
+
+ this.allowRespy = function (allow) {
+ this.respy = allow;
+ };
+
+ this.spyOn = (obj, methodName, accessType) => {
+ if (accessType) {
+ return this._spyOnProperty(obj, methodName, accessType);
+ }
+
+ if (obj === void 0) {
+ throw new Error(
+ getErrorMsg(
+ 'could not find an object to spy upon for ' + methodName + '()'
+ )
+ );
+ }
+
+ if (methodName === void 0) {
+ throw new Error(getErrorMsg('No method name supplied'));
+ }
+
+ if (obj[methodName] === void 0) {
+ throw new Error(getErrorMsg(methodName + '() method does not exist'));
+ }
+
+ if (obj[methodName] && isSpy(obj[methodName])) {
+ if (this.respy) {
+ return obj[methodName];
+ } else {
+ throw new Error(
+ getErrorMsg(methodName + ' has already been spied upon')
+ );
+ }
+ }
+
+ let descriptor;
+
+ try {
+ descriptor = Object.getOwnPropertyDescriptor(obj, methodName);
+ } catch {
+ // IE 8 doesn't support `definePropery` on non-DOM nodes
+ }
+
+ if (descriptor && !(descriptor.writable || descriptor.set)) {
+ throw new Error(
+ getErrorMsg(methodName + ' is not declared writable or has no setter')
+ );
+ }
+
+ const originalMethod = obj[methodName];
+ const spiedMethod = (0, _createSpy.default)(methodName, originalMethod);
+ let restoreStrategy;
+
+ if (Object.prototype.hasOwnProperty.call(obj, methodName)) {
+ restoreStrategy = function () {
+ obj[methodName] = originalMethod;
+ };
+ } else {
+ restoreStrategy = function () {
+ if (!delete obj[methodName]) {
+ obj[methodName] = originalMethod;
+ }
+ };
+ }
+
+ currentSpies().push({
+ restoreObjectToOriginalState: restoreStrategy
+ });
+ obj[methodName] = spiedMethod;
+ return spiedMethod;
+ };
+
+ this._spyOnProperty = function (obj, propertyName, accessType = 'get') {
+ if (!obj) {
+ throw new Error(
+ getErrorMsg(
+ 'could not find an object to spy upon for ' + propertyName
+ )
+ );
+ }
+
+ if (!propertyName) {
+ throw new Error(getErrorMsg('No property name supplied'));
+ }
+
+ let descriptor;
+
+ try {
+ descriptor = Object.getOwnPropertyDescriptor(obj, propertyName);
+ } catch {
+ // IE 8 doesn't support `definePropery` on non-DOM nodes
+ }
+
+ if (!descriptor) {
+ throw new Error(getErrorMsg(propertyName + ' property does not exist'));
+ }
+
+ if (!descriptor.configurable) {
+ throw new Error(
+ getErrorMsg(propertyName + ' is not declared configurable')
+ );
+ }
+
+ if (!descriptor[accessType]) {
+ throw new Error(
+ getErrorMsg(
+ 'Property ' +
+ propertyName +
+ ' does not have access type ' +
+ accessType
+ )
+ );
+ }
+
+ if (obj[propertyName] && isSpy(obj[propertyName])) {
+ if (this.respy) {
+ return obj[propertyName];
+ } else {
+ throw new Error(
+ getErrorMsg(propertyName + ' has already been spied upon')
+ );
+ }
+ }
+
+ const originalDescriptor = descriptor;
+ const spiedProperty = (0, _createSpy.default)(
+ propertyName,
+ descriptor[accessType]
+ );
+ let restoreStrategy;
+
+ if (Object.prototype.hasOwnProperty.call(obj, propertyName)) {
+ restoreStrategy = function () {
+ Object.defineProperty(obj, propertyName, originalDescriptor);
+ };
+ } else {
+ restoreStrategy = function () {
+ delete obj[propertyName];
+ };
+ }
+
+ currentSpies().push({
+ restoreObjectToOriginalState: restoreStrategy
+ });
+ const spiedDescriptor = {...descriptor, [accessType]: spiedProperty};
+ Object.defineProperty(obj, propertyName, spiedDescriptor);
+ return spiedProperty;
+ };
+
+ this.clearSpies = function () {
+ const spies = currentSpies();
+
+ for (let i = spies.length - 1; i >= 0; i--) {
+ const spyEntry = spies[i];
+ spyEntry.restoreObjectToOriginalState();
+ }
+ };
+ }
+}
+
+exports.default = SpyRegistry;
diff --git a/node_modules/jest-jasmine2/build/jasmineAsyncInstall.d.ts b/node_modules/jest-jasmine2/build/jasmineAsyncInstall.d.ts
new file mode 100644
index 0000000..34382fd
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmineAsyncInstall.d.ts
@@ -0,0 +1,8 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+import type { Config, Global } from '@jest/types';
+export default function jasmineAsyncInstall(globalConfig: Config.GlobalConfig, global: Global.Global): void;
diff --git a/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js b/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js
new file mode 100644
index 0000000..83984e8
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js
@@ -0,0 +1,259 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = jasmineAsyncInstall;
+
+var _co = _interopRequireDefault(require('co'));
+
+var _isGeneratorFn = _interopRequireDefault(require('is-generator-fn'));
+
+var _throat = _interopRequireDefault(require('throat'));
+
+var _isError = _interopRequireDefault(require('./isError'));
+
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {default: obj};
+}
+
+var global = (function () {
+ if (typeof globalThis !== 'undefined') {
+ return globalThis;
+ } else if (typeof global !== 'undefined') {
+ return global;
+ } else if (typeof self !== 'undefined') {
+ return self;
+ } else if (typeof window !== 'undefined') {
+ return window;
+ } else {
+ return Function('return this')();
+ }
+})();
+
+var Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;
+
+var global = (function () {
+ if (typeof globalThis !== 'undefined') {
+ return globalThis;
+ } else if (typeof global !== 'undefined') {
+ return global;
+ } else if (typeof self !== 'undefined') {
+ return self;
+ } else if (typeof window !== 'undefined') {
+ return window;
+ } else {
+ return Function('return this')();
+ }
+})();
+
+var Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;
+
+var global = (function () {
+ if (typeof globalThis !== 'undefined') {
+ return globalThis;
+ } else if (typeof global !== 'undefined') {
+ return global;
+ } else if (typeof self !== 'undefined') {
+ return self;
+ } else if (typeof window !== 'undefined') {
+ return window;
+ } else {
+ return Function('return this')();
+ }
+})();
+
+var Promise = global[Symbol.for('jest-native-promise')] || global.Promise;
+
+function isPromise(obj) {
+ return obj && typeof obj.then === 'function';
+}
+
+const doneFnNoop = () => {};
+
+doneFnNoop.fail = () => {};
+
+function promisifyLifeCycleFunction(originalFn, env) {
+ return function (fn, timeout) {
+ if (!fn) {
+ // @ts-expect-error: missing fn arg is handled by originalFn
+ return originalFn.call(env);
+ }
+
+ if (typeof fn !== 'function') {
+ // Pass non-functions to Jest, which throws a nice error.
+ return originalFn.call(env, fn, timeout);
+ }
+
+ const hasDoneCallback = fn.length > 0;
+
+ if (hasDoneCallback) {
+ // Give the function a name so it can be detected in call stacks, but
+ // otherwise Jasmine will handle it.
+ const asyncJestLifecycleWithCallback = function (...args) {
+ // @ts-expect-error: Support possible extra args at runtime
+ return fn.apply(this, args);
+ };
+
+ return originalFn.call(env, asyncJestLifecycleWithCallback, timeout);
+ }
+
+ const extraError = new Error(); // Without this line v8 stores references to all closures
+ // in the stack in the Error object. This line stringifies the stack
+ // property to allow garbage-collecting objects on the stack
+ // https://crbug.com/v8/7142
+
+ extraError.stack = extraError.stack; // We make *all* functions async and run `done` right away if they
+ // didn't return a promise.
+
+ const asyncJestLifecycle = function (done) {
+ const wrappedFn = (0, _isGeneratorFn.default)(fn)
+ ? _co.default.wrap(fn)
+ : fn;
+ const returnValue = wrappedFn.call({}, doneFnNoop);
+
+ if (isPromise(returnValue)) {
+ returnValue.then(done.bind(null, null), error => {
+ const {isError: checkIsError, message} = (0, _isError.default)(error);
+
+ if (message) {
+ extraError.message = message;
+ }
+
+ done.fail(checkIsError ? error : extraError);
+ });
+ } else {
+ done();
+ }
+ };
+
+ return originalFn.call(env, asyncJestLifecycle, timeout);
+ };
+} // Similar to promisifyLifeCycleFunction but throws an error
+// when the return value is neither a Promise nor `undefined`
+
+function promisifyIt(originalFn, env, jasmine) {
+ return function (specName, fn, timeout) {
+ if (!fn) {
+ // @ts-expect-error: missing fn arg is handled by originalFn
+ const spec = originalFn.call(env, specName);
+ spec.pend('not implemented');
+ return spec;
+ }
+
+ if (typeof fn !== 'function') {
+ // Pass non-functions to Jest, which throws a nice error.
+ return originalFn.call(env, specName, fn, timeout);
+ }
+
+ const hasDoneCallback = fn.length > 0;
+
+ if (hasDoneCallback) {
+ // Give the function a name so it can be detected in call stacks, but
+ // otherwise Jasmine will handle it.
+ const asyncJestTestWithCallback = function (...args) {
+ // @ts-expect-error: Support possible extra args at runtime
+ return fn.apply(this, args);
+ };
+
+ return originalFn.call(env, specName, asyncJestTestWithCallback, timeout);
+ }
+
+ const extraError = new Error(); // Without this line v8 stores references to all closures
+ // in the stack in the Error object. This line stringifies the stack
+ // property to allow garbage-collecting objects on the stack
+ // https://crbug.com/v8/7142
+
+ extraError.stack = extraError.stack;
+
+ const asyncJestTest = function (done) {
+ const wrappedFn = (0, _isGeneratorFn.default)(fn)
+ ? _co.default.wrap(fn)
+ : fn;
+ const returnValue = wrappedFn.call({}, doneFnNoop);
+
+ if (isPromise(returnValue)) {
+ returnValue.then(done.bind(null, null), error => {
+ const {isError: checkIsError, message} = (0, _isError.default)(error);
+
+ if (message) {
+ extraError.message = message;
+ }
+
+ if (jasmine.Spec.isPendingSpecException(error)) {
+ env.pending(message);
+ done();
+ } else {
+ done.fail(checkIsError ? error : extraError);
+ }
+ });
+ } else if (returnValue === undefined) {
+ done();
+ } else {
+ done.fail(
+ new Error(
+ 'Jest: `it` and `test` must return either a Promise or undefined.'
+ )
+ );
+ }
+ };
+
+ return originalFn.call(env, specName, asyncJestTest, timeout);
+ };
+}
+
+function makeConcurrent(originalFn, env, mutex) {
+ const concurrentFn = function (specName, fn, timeout) {
+ let promise = Promise.resolve();
+ const spec = originalFn.call(env, specName, () => promise, timeout);
+
+ if (env != null && !env.specFilter(spec)) {
+ return spec;
+ }
+
+ try {
+ promise = mutex(() => {
+ const promise = fn();
+
+ if (isPromise(promise)) {
+ return promise;
+ }
+
+ throw new Error(
+ `Jest: concurrent test "${spec.getFullName()}" must return a Promise.`
+ );
+ });
+ } catch (error) {
+ promise = Promise.reject(error);
+ } // Avoid triggering the uncaught promise rejection handler in case the test errors before
+ // being awaited on.
+
+ promise.catch(() => {});
+ return spec;
+ }; // each is binded after the function is made concurrent, so for now it is made noop
+
+ concurrentFn.each = () => () => {};
+
+ return concurrentFn;
+}
+
+function jasmineAsyncInstall(globalConfig, global) {
+ const jasmine = global.jasmine;
+ const mutex = (0, _throat.default)(globalConfig.maxConcurrency);
+ const env = jasmine.getEnv();
+ env.it = promisifyIt(env.it, env, jasmine);
+ env.fit = promisifyIt(env.fit, env, jasmine);
+
+ global.it.concurrent = (env => {
+ const concurrent = makeConcurrent(env.it, env, mutex);
+ concurrent.only = makeConcurrent(env.fit, env, mutex);
+ concurrent.skip = makeConcurrent(env.xit, env, mutex);
+ return concurrent;
+ })(env);
+
+ global.fit.concurrent = makeConcurrent(env.fit, env, mutex);
+ env.afterAll = promisifyLifeCycleFunction(env.afterAll, env);
+ env.afterEach = promisifyLifeCycleFunction(env.afterEach, env);
+ env.beforeAll = promisifyLifeCycleFunction(env.beforeAll, env);
+ env.beforeEach = promisifyLifeCycleFunction(env.beforeEach, env);
+}
diff --git a/node_modules/jest-jasmine2/build/jestExpect.d.ts b/node_modules/jest-jasmine2/build/jestExpect.d.ts
new file mode 100644
index 0000000..e0cf153
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jestExpect.d.ts
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+export default function jestExpect(config: {
+ expand: boolean;
+}): void;
diff --git a/node_modules/jest-jasmine2/build/jestExpect.js b/node_modules/jest-jasmine2/build/jestExpect.js
new file mode 100644
index 0000000..3b4b191
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/jestExpect.js
@@ -0,0 +1,69 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = jestExpect;
+
+var _expect = _interopRequireDefault(require('expect'));
+
+var _jestSnapshot = require('jest-snapshot');
+
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {default: obj};
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/* eslint-disable local/prefer-spread-eventually */
+function jestExpect(config) {
+ global.expect = _expect.default;
+
+ _expect.default.setState({
+ expand: config.expand
+ });
+
+ _expect.default.extend({
+ toMatchInlineSnapshot: _jestSnapshot.toMatchInlineSnapshot,
+ toMatchSnapshot: _jestSnapshot.toMatchSnapshot,
+ toThrowErrorMatchingInlineSnapshot:
+ _jestSnapshot.toThrowErrorMatchingInlineSnapshot,
+ toThrowErrorMatchingSnapshot: _jestSnapshot.toThrowErrorMatchingSnapshot
+ });
+
+ _expect.default.addSnapshotSerializer = _jestSnapshot.addSerializer;
+ const jasmine = global.jasmine;
+ jasmine.anything = _expect.default.anything;
+ jasmine.any = _expect.default.any;
+ jasmine.objectContaining = _expect.default.objectContaining;
+ jasmine.arrayContaining = _expect.default.arrayContaining;
+ jasmine.stringMatching = _expect.default.stringMatching;
+
+ jasmine.addMatchers = jasmineMatchersObject => {
+ const jestMatchersObject = Object.create(null);
+ Object.keys(jasmineMatchersObject).forEach(name => {
+ jestMatchersObject[name] = function (...args) {
+ // use "expect.extend" if you need to use equality testers (via this.equal)
+ const result = jasmineMatchersObject[name](null, null); // if there is no 'negativeCompare', both should be handled by `compare`
+
+ const negativeCompare = result.negativeCompare || result.compare;
+ return this.isNot
+ ? negativeCompare.apply(
+ null, // @ts-expect-error
+ args
+ )
+ : result.compare.apply(
+ null, // @ts-expect-error
+ args
+ );
+ };
+ });
+
+ _expect.default.extend(jestMatchersObject);
+ };
+}
diff --git a/node_modules/jest-jasmine2/build/pTimeout.d.ts b/node_modules/jest-jasmine2/build/pTimeout.d.ts
new file mode 100644
index 0000000..58bbcf8
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/pTimeout.d.ts
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+export default function pTimeout(promise: Promise<void>, ms: number, clearTimeout: typeof globalThis['clearTimeout'], setTimeout: typeof globalThis['setTimeout'], onTimeout: () => void): Promise<void>;
diff --git a/node_modules/jest-jasmine2/build/pTimeout.js b/node_modules/jest-jasmine2/build/pTimeout.js
new file mode 100644
index 0000000..94808fc
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/pTimeout.js
@@ -0,0 +1,78 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = pTimeout;
+
+var global = (function () {
+ if (typeof globalThis !== 'undefined') {
+ return globalThis;
+ } else if (typeof global !== 'undefined') {
+ return global;
+ } else if (typeof self !== 'undefined') {
+ return self;
+ } else if (typeof window !== 'undefined') {
+ return window;
+ } else {
+ return Function('return this')();
+ }
+})();
+
+var Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;
+
+var global = (function () {
+ if (typeof globalThis !== 'undefined') {
+ return globalThis;
+ } else if (typeof global !== 'undefined') {
+ return global;
+ } else if (typeof self !== 'undefined') {
+ return self;
+ } else if (typeof window !== 'undefined') {
+ return window;
+ } else {
+ return Function('return this')();
+ }
+})();
+
+var Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;
+
+var global = (function () {
+ if (typeof globalThis !== 'undefined') {
+ return globalThis;
+ } else if (typeof global !== 'undefined') {
+ return global;
+ } else if (typeof self !== 'undefined') {
+ return self;
+ } else if (typeof window !== 'undefined') {
+ return window;
+ } else {
+ return Function('return this')();
+ }
+})();
+
+var Promise = global[Symbol.for('jest-native-promise')] || global.Promise;
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+// A specialized version of `p-timeout` that does not touch globals.
+// It does not throw on timeout.
+function pTimeout(promise, ms, clearTimeout, setTimeout, onTimeout) {
+ return new Promise((resolve, reject) => {
+ const timer = setTimeout(() => resolve(onTimeout()), ms);
+ promise.then(
+ val => {
+ clearTimeout(timer);
+ resolve(val);
+ },
+ err => {
+ clearTimeout(timer);
+ reject(err);
+ }
+ );
+ });
+}
diff --git a/node_modules/jest-jasmine2/build/queueRunner.d.ts b/node_modules/jest-jasmine2/build/queueRunner.d.ts
new file mode 100644
index 0000000..613be2f
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/queueRunner.d.ts
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+export declare type Options = {
+ clearTimeout: typeof globalThis['clearTimeout'];
+ fail: (error: Error) => void;
+ onException: (error: Error) => void;
+ queueableFns: Array<QueueableFn>;
+ setTimeout: typeof globalThis['setTimeout'];
+ userContext: unknown;
+};
+export interface DoneFn {
+ (error?: any): void;
+ fail: (error: Error) => void;
+}
+export declare type QueueableFn = {
+ fn: (done: DoneFn) => void;
+ timeout?: () => number;
+ initError?: Error;
+};
+declare type PromiseCallback = (() => void | PromiseLike<void>) | undefined | null;
+export default function queueRunner(options: Options): PromiseLike<void> & {
+ cancel: () => void;
+ catch: (onRejected?: PromiseCallback) => Promise<void>;
+};
+export {};
diff --git a/node_modules/jest-jasmine2/build/queueRunner.js b/node_modules/jest-jasmine2/build/queueRunner.js
new file mode 100644
index 0000000..1580255
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/queueRunner.js
@@ -0,0 +1,127 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = queueRunner;
+
+var _jestUtil = require('jest-util');
+
+var _PCancelable = _interopRequireDefault(require('./PCancelable'));
+
+var _pTimeout = _interopRequireDefault(require('./pTimeout'));
+
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {default: obj};
+}
+
+var global = (function () {
+ if (typeof globalThis !== 'undefined') {
+ return globalThis;
+ } else if (typeof global !== 'undefined') {
+ return global;
+ } else if (typeof self !== 'undefined') {
+ return self;
+ } else if (typeof window !== 'undefined') {
+ return window;
+ } else {
+ return Function('return this')();
+ }
+})();
+
+var Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;
+
+var global = (function () {
+ if (typeof globalThis !== 'undefined') {
+ return globalThis;
+ } else if (typeof global !== 'undefined') {
+ return global;
+ } else if (typeof self !== 'undefined') {
+ return self;
+ } else if (typeof window !== 'undefined') {
+ return window;
+ } else {
+ return Function('return this')();
+ }
+})();
+
+var Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;
+
+var global = (function () {
+ if (typeof globalThis !== 'undefined') {
+ return globalThis;
+ } else if (typeof global !== 'undefined') {
+ return global;
+ } else if (typeof self !== 'undefined') {
+ return self;
+ } else if (typeof window !== 'undefined') {
+ return window;
+ } else {
+ return Function('return this')();
+ }
+})();
+
+var Promise = global[Symbol.for('jest-native-promise')] || global.Promise;
+
+function queueRunner(options) {
+ const token = new _PCancelable.default((onCancel, resolve) => {
+ onCancel(resolve);
+ });
+
+ const mapper = ({fn, timeout, initError = new Error()}) => {
+ let promise = new Promise(resolve => {
+ const next = function (...args) {
+ const err = args[0];
+
+ if (err) {
+ options.fail.apply(null, args);
+ }
+
+ resolve();
+ };
+
+ next.fail = function (...args) {
+ options.fail.apply(null, args);
+ resolve();
+ };
+
+ try {
+ fn.call(options.userContext, next);
+ } catch (e) {
+ options.onException(e);
+ resolve();
+ }
+ });
+ promise = Promise.race([promise, token]);
+
+ if (!timeout) {
+ return promise;
+ }
+
+ const timeoutMs = timeout();
+ return (0, _pTimeout.default)(
+ promise,
+ timeoutMs,
+ options.clearTimeout,
+ options.setTimeout,
+ () => {
+ initError.message =
+ 'Timeout - Async callback was not invoked within the ' +
+ (0, _jestUtil.formatTime)(timeoutMs) +
+ ' timeout specified by jest.setTimeout.';
+ initError.stack = initError.message + initError.stack;
+ options.onException(initError);
+ }
+ );
+ };
+
+ const result = options.queueableFns.reduce(
+ (promise, fn) => promise.then(() => mapper(fn)),
+ Promise.resolve()
+ );
+ return {
+ cancel: token.cancel.bind(token),
+ catch: result.catch.bind(result),
+ then: result.then.bind(result)
+ };
+}
diff --git a/node_modules/jest-jasmine2/build/reporter.d.ts b/node_modules/jest-jasmine2/build/reporter.d.ts
new file mode 100644
index 0000000..3d6ee8c
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/reporter.d.ts
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+import { TestResult } from '@jest/test-result';
+import type { Config } from '@jest/types';
+import type { SpecResult } from './jasmine/Spec';
+import type { SuiteResult } from './jasmine/Suite';
+import type { Reporter, RunDetails } from './types';
+export default class Jasmine2Reporter implements Reporter {
+ private _testResults;
+ private _globalConfig;
+ private _config;
+ private _currentSuites;
+ private _resolve;
+ private _resultsPromise;
+ private _startTimes;
+ private _testPath;
+ constructor(globalConfig: Config.GlobalConfig, config: Config.ProjectConfig, testPath: Config.Path);
+ jasmineStarted(_runDetails: RunDetails): void;
+ specStarted(spec: SpecResult): void;
+ specDone(result: SpecResult): void;
+ suiteStarted(suite: SuiteResult): void;
+ suiteDone(_result: SuiteResult): void;
+ jasmineDone(_runDetails: RunDetails): void;
+ getResults(): Promise<TestResult>;
+ private _addMissingMessageToStack;
+ private _extractSpecResults;
+}
diff --git a/node_modules/jest-jasmine2/build/reporter.js b/node_modules/jest-jasmine2/build/reporter.js
new file mode 100644
index 0000000..46ec609
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/reporter.js
@@ -0,0 +1,250 @@
+'use strict';
+
+var global = (function () {
+ if (typeof globalThis !== 'undefined') {
+ return globalThis;
+ } else if (typeof global !== 'undefined') {
+ return global;
+ } else if (typeof self !== 'undefined') {
+ return self;
+ } else if (typeof window !== 'undefined') {
+ return window;
+ } else {
+ return Function('return this')();
+ }
+})();
+
+var Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+
+var _testResult = require('@jest/test-result');
+
+var _jestMessageUtil = require('jest-message-util');
+
+var global = (function () {
+ if (typeof globalThis !== 'undefined') {
+ return globalThis;
+ } else if (typeof global !== 'undefined') {
+ return global;
+ } else if (typeof self !== 'undefined') {
+ return self;
+ } else if (typeof window !== 'undefined') {
+ return window;
+ } else {
+ return Function('return this')();
+ }
+})();
+
+var Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;
+
+var global = (function () {
+ if (typeof globalThis !== 'undefined') {
+ return globalThis;
+ } else if (typeof global !== 'undefined') {
+ return global;
+ } else if (typeof self !== 'undefined') {
+ return self;
+ } else if (typeof window !== 'undefined') {
+ return window;
+ } else {
+ return Function('return this')();
+ }
+})();
+
+var jestNow = global[Symbol.for('jest-native-now')] || global.Date.now;
+
+var global = (function () {
+ if (typeof globalThis !== 'undefined') {
+ return globalThis;
+ } else if (typeof global !== 'undefined') {
+ return global;
+ } else if (typeof self !== 'undefined') {
+ return self;
+ } else if (typeof window !== 'undefined') {
+ return window;
+ } else {
+ return Function('return this')();
+ }
+})();
+
+var Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;
+
+var global = (function () {
+ if (typeof globalThis !== 'undefined') {
+ return globalThis;
+ } else if (typeof global !== 'undefined') {
+ return global;
+ } else if (typeof self !== 'undefined') {
+ return self;
+ } else if (typeof window !== 'undefined') {
+ return window;
+ } else {
+ return Function('return this')();
+ }
+})();
+
+var Promise = global[Symbol.for('jest-native-promise')] || global.Promise;
+
+function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+}
+
+class Jasmine2Reporter {
+ constructor(globalConfig, config, testPath) {
+ _defineProperty(this, '_testResults', void 0);
+
+ _defineProperty(this, '_globalConfig', void 0);
+
+ _defineProperty(this, '_config', void 0);
+
+ _defineProperty(this, '_currentSuites', void 0);
+
+ _defineProperty(this, '_resolve', void 0);
+
+ _defineProperty(this, '_resultsPromise', void 0);
+
+ _defineProperty(this, '_startTimes', void 0);
+
+ _defineProperty(this, '_testPath', void 0);
+
+ this._globalConfig = globalConfig;
+ this._config = config;
+ this._testPath = testPath;
+ this._testResults = [];
+ this._currentSuites = [];
+ this._resolve = null;
+ this._resultsPromise = new Promise(resolve => (this._resolve = resolve));
+ this._startTimes = new Map();
+ }
+
+ jasmineStarted(_runDetails) {}
+
+ specStarted(spec) {
+ this._startTimes.set(spec.id, jestNow());
+ }
+
+ specDone(result) {
+ this._testResults.push(
+ this._extractSpecResults(result, this._currentSuites.slice(0))
+ );
+ }
+
+ suiteStarted(suite) {
+ this._currentSuites.push(suite.description);
+ }
+
+ suiteDone(_result) {
+ this._currentSuites.pop();
+ }
+
+ jasmineDone(_runDetails) {
+ let numFailingTests = 0;
+ let numPassingTests = 0;
+ let numPendingTests = 0;
+ let numTodoTests = 0;
+ const testResults = this._testResults;
+ testResults.forEach(testResult => {
+ if (testResult.status === 'failed') {
+ numFailingTests++;
+ } else if (testResult.status === 'pending') {
+ numPendingTests++;
+ } else if (testResult.status === 'todo') {
+ numTodoTests++;
+ } else {
+ numPassingTests++;
+ }
+ });
+ const testResult = {
+ ...(0, _testResult.createEmptyTestResult)(),
+ console: null,
+ failureMessage: (0, _jestMessageUtil.formatResultsErrors)(
+ testResults,
+ this._config,
+ this._globalConfig,
+ this._testPath
+ ),
+ numFailingTests,
+ numPassingTests,
+ numPendingTests,
+ numTodoTests,
+ snapshot: {
+ added: 0,
+ fileDeleted: false,
+ matched: 0,
+ unchecked: 0,
+ unmatched: 0,
+ updated: 0
+ },
+ testFilePath: this._testPath,
+ testResults
+ };
+
+ this._resolve(testResult);
+ }
+
+ getResults() {
+ return this._resultsPromise;
+ }
+
+ _addMissingMessageToStack(stack, message) {
+ // Some errors (e.g. Angular injection error) don't prepend error.message
+ // to stack, instead the first line of the stack is just plain 'Error'
+ const ERROR_REGEX = /^Error:?\s*\n/;
+
+ if (stack && message && !stack.includes(message)) {
+ return message + stack.replace(ERROR_REGEX, '\n');
+ }
+
+ return stack;
+ }
+
+ _extractSpecResults(specResult, ancestorTitles) {
+ const start = this._startTimes.get(specResult.id);
+
+ const duration = start ? jestNow() - start : undefined;
+ const status =
+ specResult.status === 'disabled' ? 'pending' : specResult.status;
+ const location = specResult.__callsite
+ ? {
+ column: specResult.__callsite.getColumnNumber(),
+ line: specResult.__callsite.getLineNumber()
+ }
+ : null;
+ const results = {
+ ancestorTitles,
+ duration,
+ failureDetails: [],
+ failureMessages: [],
+ fullName: specResult.fullName,
+ location,
+ numPassingAsserts: 0,
+ // Jasmine2 only returns an array of failed asserts.
+ status,
+ title: specResult.description
+ };
+ specResult.failedExpectations.forEach(failed => {
+ const message =
+ !failed.matcherName && typeof failed.stack === 'string'
+ ? this._addMissingMessageToStack(failed.stack, failed.message)
+ : failed.message || '';
+ results.failureMessages.push(message);
+ results.failureDetails.push(failed);
+ });
+ return results;
+ }
+}
+
+exports.default = Jasmine2Reporter;
diff --git a/node_modules/jest-jasmine2/build/setup_jest_globals.d.ts b/node_modules/jest-jasmine2/build/setup_jest_globals.d.ts
new file mode 100644
index 0000000..e8f2476
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/setup_jest_globals.d.ts
@@ -0,0 +1,16 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+import type { Config } from '@jest/types';
+import { SnapshotStateType } from 'jest-snapshot';
+import type { Plugin } from 'pretty-format';
+export declare type SetupOptions = {
+ config: Config.ProjectConfig;
+ globalConfig: Config.GlobalConfig;
+ localRequire: (moduleName: string) => Plugin;
+ testPath: Config.Path;
+};
+export default function setupJestGlobals({ config, globalConfig, localRequire, testPath, }: SetupOptions): Promise<SnapshotStateType>;
diff --git a/node_modules/jest-jasmine2/build/setup_jest_globals.js b/node_modules/jest-jasmine2/build/setup_jest_globals.js
new file mode 100644
index 0000000..04f8b5e
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/setup_jest_globals.js
@@ -0,0 +1,121 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = setupJestGlobals;
+
+var _expect = require('expect');
+
+var _jestSnapshot = require('jest-snapshot');
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+// Get suppressed errors form jest-matchers that weren't throw during
+// test execution and add them to the test result, potentially failing
+// a passing test.
+const addSuppressedErrors = result => {
+ const {suppressedErrors} = (0, _expect.getState)();
+ (0, _expect.setState)({
+ suppressedErrors: []
+ });
+
+ if (suppressedErrors.length) {
+ result.status = 'failed';
+ result.failedExpectations = suppressedErrors.map(error => ({
+ actual: '',
+ // passing error for custom test reporters
+ error,
+ expected: '',
+ matcherName: '',
+ message: error.message,
+ passed: false,
+ stack: error.stack
+ }));
+ }
+};
+
+const addAssertionErrors = result => {
+ const assertionErrors = (0, _expect.extractExpectedAssertionsErrors)();
+
+ if (assertionErrors.length) {
+ const jasmineErrors = assertionErrors.map(({actual, error, expected}) => ({
+ actual,
+ expected,
+ message: error.stack,
+ passed: false
+ }));
+ result.status = 'failed';
+ result.failedExpectations = result.failedExpectations.concat(jasmineErrors);
+ }
+};
+
+const patchJasmine = () => {
+ global.jasmine.Spec = (realSpec => {
+ class Spec extends realSpec {
+ constructor(attr) {
+ const resultCallback = attr.resultCallback;
+
+ attr.resultCallback = function (result) {
+ addSuppressedErrors(result);
+ addAssertionErrors(result);
+ resultCallback.call(attr, result);
+ };
+
+ const onStart = attr.onStart;
+
+ attr.onStart = context => {
+ (0, _expect.setState)({
+ currentTestName: context.getFullName()
+ });
+ onStart && onStart.call(attr, context);
+ };
+
+ super(attr);
+ }
+ }
+
+ return Spec;
+ })(global.jasmine.Spec);
+};
+
+async function setupJestGlobals({
+ config,
+ globalConfig,
+ localRequire,
+ testPath
+}) {
+ // Jest tests snapshotSerializers in order preceding built-in serializers.
+ // Therefore, add in reverse because the last added is the first tested.
+ config.snapshotSerializers
+ .concat()
+ .reverse()
+ .forEach(path => {
+ (0, _jestSnapshot.addSerializer)(localRequire(path));
+ });
+ patchJasmine();
+ const {expand, updateSnapshot} = globalConfig;
+ const {prettierPath, snapshotFormat} = config;
+ const snapshotResolver = await (0, _jestSnapshot.buildSnapshotResolver)(
+ config,
+ localRequire
+ );
+ const snapshotPath = snapshotResolver.resolveSnapshotPath(testPath);
+ const snapshotState = new _jestSnapshot.SnapshotState(snapshotPath, {
+ expand,
+ prettierPath,
+ snapshotFormat,
+ updateSnapshot
+ }); // @ts-expect-error: snapshotState is a jest extension of `expect`
+
+ (0, _expect.setState)({
+ snapshotState,
+ testPath
+ }); // Return it back to the outer scope (test runner outside the VM).
+
+ return snapshotState;
+}
diff --git a/node_modules/jest-jasmine2/build/treeProcessor.d.ts b/node_modules/jest-jasmine2/build/treeProcessor.d.ts
new file mode 100644
index 0000000..fdeee94
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/treeProcessor.d.ts
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+import type Suite from './jasmine/Suite';
+declare type Options = {
+ nodeComplete: (suite: TreeNode) => void;
+ nodeStart: (suite: TreeNode) => void;
+ queueRunnerFactory: any;
+ runnableIds: Array<string>;
+ tree: TreeNode;
+};
+export declare type TreeNode = {
+ afterAllFns: Array<unknown>;
+ beforeAllFns: Array<unknown>;
+ disabled?: boolean;
+ execute: (onComplete: () => void, enabled: boolean) => void;
+ id: string;
+ onException: (error: Error) => void;
+ sharedUserContext: () => unknown;
+ children?: Array<TreeNode>;
+} & Pick<Suite, 'getResult' | 'parentSuite' | 'result' | 'markedPending'>;
+export default function treeProcessor(options: Options): void;
+export {};
diff --git a/node_modules/jest-jasmine2/build/treeProcessor.js b/node_modules/jest-jasmine2/build/treeProcessor.js
new file mode 100644
index 0000000..41576a1
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/treeProcessor.js
@@ -0,0 +1,82 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = treeProcessor;
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+function treeProcessor(options) {
+ const {nodeComplete, nodeStart, queueRunnerFactory, runnableIds, tree} =
+ options;
+
+ function isEnabled(node, parentEnabled) {
+ return parentEnabled || runnableIds.indexOf(node.id) !== -1;
+ }
+
+ function getNodeHandler(node, parentEnabled) {
+ const enabled = isEnabled(node, parentEnabled);
+ return node.children
+ ? getNodeWithChildrenHandler(node, enabled)
+ : getNodeWithoutChildrenHandler(node, enabled);
+ }
+
+ function getNodeWithoutChildrenHandler(node, enabled) {
+ return function fn(done = () => {}) {
+ node.execute(done, enabled);
+ };
+ }
+
+ function getNodeWithChildrenHandler(node, enabled) {
+ return async function fn(done = () => {}) {
+ nodeStart(node);
+ await queueRunnerFactory({
+ onException: error => node.onException(error),
+ queueableFns: wrapChildren(node, enabled),
+ userContext: node.sharedUserContext()
+ });
+ nodeComplete(node);
+ done();
+ };
+ }
+
+ function hasNoEnabledTest(node) {
+ var _node$children$every, _node$children;
+
+ return (
+ node.disabled ||
+ node.markedPending ||
+ ((_node$children$every =
+ (_node$children = node.children) === null || _node$children === void 0
+ ? void 0
+ : _node$children.every(hasNoEnabledTest)) !== null &&
+ _node$children$every !== void 0
+ ? _node$children$every
+ : false)
+ );
+ }
+
+ function wrapChildren(node, enabled) {
+ if (!node.children) {
+ throw new Error('`node.children` is not defined.');
+ }
+
+ const children = node.children.map(child => ({
+ fn: getNodeHandler(child, enabled)
+ }));
+
+ if (hasNoEnabledTest(node)) {
+ return children;
+ }
+
+ return node.beforeAllFns.concat(children).concat(node.afterAllFns);
+ }
+
+ const treeHandler = getNodeHandler(tree, false);
+ return treeHandler();
+}
diff --git a/node_modules/jest-jasmine2/build/types.d.ts b/node_modules/jest-jasmine2/build/types.d.ts
new file mode 100644
index 0000000..baa4481
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/types.d.ts
@@ -0,0 +1,82 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+/// <reference types="node" />
+import type { AssertionError } from 'assert';
+import type { Config } from '@jest/types';
+import expect = require('expect');
+import type CallTracker from './jasmine/CallTracker';
+import type Env from './jasmine/Env';
+import type JsApiReporter from './jasmine/JsApiReporter';
+import type ReportDispatcher from './jasmine/ReportDispatcher';
+import type { default as Spec, SpecResult } from './jasmine/Spec';
+import type SpyStrategy from './jasmine/SpyStrategy';
+import type { default as Suite, SuiteResult } from './jasmine/Suite';
+import type Timer from './jasmine/Timer';
+import type createSpy from './jasmine/createSpy';
+import type SpyRegistry from './jasmine/spyRegistry';
+export declare type SpecDefinitionsFn = () => void;
+export interface AssertionErrorWithStack extends AssertionError {
+ stack: string;
+}
+export declare type SyncExpectationResult = {
+ pass: boolean;
+ message: () => string;
+};
+export declare type AsyncExpectationResult = Promise<SyncExpectationResult>;
+export declare type ExpectationResult = SyncExpectationResult | AsyncExpectationResult;
+export declare type RawMatcherFn = (expected: unknown, actual: unknown, options?: unknown) => ExpectationResult;
+export declare type RunDetails = {
+ totalSpecsDefined?: number;
+ failedExpectations?: SuiteResult['failedExpectations'];
+};
+export declare type Reporter = {
+ jasmineDone: (runDetails: RunDetails) => void;
+ jasmineStarted: (runDetails: RunDetails) => void;
+ specDone: (result: SpecResult) => void;
+ specStarted: (spec: SpecResult) => void;
+ suiteDone: (result: SuiteResult) => void;
+ suiteStarted: (result: SuiteResult) => void;
+};
+export interface Spy extends Record<string, any> {
+ (this: Record<string, unknown>, ...args: Array<any>): unknown;
+ and: SpyStrategy;
+ calls: CallTracker;
+ restoreObjectToOriginalState?: () => void;
+}
+declare type JasmineMatcher = {
+ (matchersUtil: unknown, context: unknown): JasmineMatcher;
+ compare: () => RawMatcherFn;
+ negativeCompare: () => RawMatcherFn;
+};
+export declare type JasmineMatchersObject = {
+ [id: string]: JasmineMatcher;
+};
+export declare type Jasmine = {
+ _DEFAULT_TIMEOUT_INTERVAL: number;
+ DEFAULT_TIMEOUT_INTERVAL: number;
+ currentEnv_: ReturnType<typeof Env>['prototype'];
+ getEnv: () => ReturnType<typeof Env>['prototype'];
+ createSpy: typeof createSpy;
+ Env: ReturnType<typeof Env>;
+ JsApiReporter: typeof JsApiReporter;
+ ReportDispatcher: typeof ReportDispatcher;
+ Spec: typeof Spec;
+ SpyRegistry: typeof SpyRegistry;
+ Suite: typeof Suite;
+ Timer: typeof Timer;
+ version: string;
+ testPath: Config.Path;
+ addMatchers: (matchers: JasmineMatchersObject) => void;
+} & typeof expect & typeof globalThis;
+declare global {
+ namespace NodeJS {
+ interface Global {
+ expect: typeof expect;
+ }
+ }
+}
+export {};
diff --git a/node_modules/jest-jasmine2/build/types.js b/node_modules/jest-jasmine2/build/types.js
new file mode 100644
index 0000000..d852d24
--- /dev/null
+++ b/node_modules/jest-jasmine2/build/types.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var _expect = _interopRequireDefault(require('expect'));
+
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {default: obj};
+}
diff --git a/node_modules/jest-jasmine2/package.json b/node_modules/jest-jasmine2/package.json
new file mode 100644
index 0000000..96533e6
--- /dev/null
+++ b/node_modules/jest-jasmine2/package.json
@@ -0,0 +1,48 @@
+{
+ "name": "jest-jasmine2",
+ "version": "27.5.1",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/facebook/jest.git",
+ "directory": "packages/jest-jasmine2"
+ },
+ "license": "MIT",
+ "main": "./build/index.js",
+ "types": "./build/index.d.ts",
+ "exports": {
+ ".": {
+ "types": "./build/index.d.ts",
+ "default": "./build/index.js"
+ },
+ "./package.json": "./package.json"
+ },
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/source-map": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "expect": "^27.5.1",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1",
+ "throat": "^6.0.1"
+ },
+ "devDependencies": {
+ "@types/co": "^4.6.2"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "67c1aa20c5fec31366d733e901fee2b981cb1850"
+}