You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2022/07/14 13:29:47 UTC
[myfaces-tobago] branch tobago-5.x updated: build: npm rebuild
This is an automated email from the ASF dual-hosted git repository.
lofwyr pushed a commit to branch tobago-5.x
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git
The following commit(s) were added to refs/heads/tobago-5.x by this push:
new 6661e32f36 build: npm rebuild
6661e32f36 is described below
commit 6661e32f36a0379f952f4930c7a1cfb6f3c94c60
Author: Udo Schnurpfeil <ud...@irian.eu>
AuthorDate: Thu Jul 14 15:27:42 2022 +0200
build: npm rebuild
---
.../src/main/webapp/js/jasmine.js | 1327 ++++++++++----------
.../src/main/css/tobago.css.map | 2 +-
.../src/main/css/tobago.min.css | 2 +-
.../src/main/css/tobago.min.css.map | 2 +-
.../src/main/css/tobago.css.map | 2 +-
.../src/main/css/tobago.min.css | 2 +-
.../src/main/css/tobago.min.css.map | 2 +-
.../src/main/css/tobago.css.map | 2 +-
.../src/main/css/tobago.min.css | 2 +-
.../src/main/css/tobago.min.css.map | 2 +-
.../src/main/css/tobago.css.map | 2 +-
.../src/main/css/tobago.min.css | 2 +-
.../src/main/css/tobago.min.css.map | 2 +-
.../src/main/css/tobago.css.map | 2 +-
.../src/main/css/tobago.min.css | 2 +-
.../src/main/css/tobago.min.css.map | 2 +-
.../src/main/js/tobago.js.map | 2 +-
17 files changed, 664 insertions(+), 695 deletions(-)
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/js/jasmine.js b/tobago-example/tobago-example-demo/src/main/webapp/js/jasmine.js
index f6049e3177..e65e0e0dbe 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/js/jasmine.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/js/jasmine.js
@@ -113,6 +113,7 @@ var getJasmineRequireObj = (function(jasmineGlobal) {
j$.Falsy = jRequire.Falsy(j$);
j$.Empty = jRequire.Empty(j$);
j$.NotEmpty = jRequire.NotEmpty(j$);
+ j$.Is = jRequire.Is(j$);
j$.matchers = jRequire.requireMatchers(jRequire, j$);
j$.asyncMatchers = jRequire.requireAsyncMatchers(jRequire, j$);
@@ -453,6 +454,18 @@ getJasmineRequireObj().base = function(j$, jasmineGlobal) {
return new j$.Empty();
};
+ /**
+ * Get an {@link AsymmetricEqualityTester}, usable in any {@link matchers|matcher}
+ * that passes if the actual value is the same as the sample as determined
+ * by the `===` operator.
+ * @name jasmine.is
+ * @function
+ * @param {Object} sample - The value to compare the actual to.
+ */
+ j$.is = function(sample) {
+ return new j$.Is(sample);
+ };
+
/**
* Get an {@link AsymmetricEqualityTester}, usable in any {@link matchers|matcher} that uses Jasmine's equality (e.g. {@link matchers#toEqual|toEqual}, {@link matchers#toContain|toContain}, or {@link matchers#toHaveBeenCalledWith|toHaveBeenCalledWith}),
* that will succeed if the actual value being compared is not empty.
@@ -713,30 +726,11 @@ getJasmineRequireObj().util = function(j$) {
};
getJasmineRequireObj().Spec = function(j$) {
- /**
- * @interface Spec
- * @see Configuration#specFilter
- * @since 2.0.0
- */
function Spec(attrs) {
this.expectationFactory = attrs.expectationFactory;
this.asyncExpectationFactory = attrs.asyncExpectationFactory;
this.resultCallback = attrs.resultCallback || function() {};
- /**
- * The unique ID of this spec.
- * @name Spec#id
- * @readonly
- * @type {string}
- * @since 2.0.0
- */
this.id = attrs.id;
- /**
- * The description passed to the {@link it} that created this spec.
- * @name Spec#description
- * @readonly
- * @type {string}
- * @since 2.0.0
- */
this.description = attrs.description || '';
this.queueableFn = attrs.queueableFn;
this.beforeAndAfterFns =
@@ -757,8 +751,6 @@ getJasmineRequireObj().Spec = function(j$) {
function() {
return '';
};
- this.expectationResultFactory =
- attrs.expectationResultFactory || function() {};
this.onLateError = attrs.onLateError || function() {};
this.queueRunnerFactory = attrs.queueRunnerFactory || function() {};
this.catchingExceptions =
@@ -800,14 +792,20 @@ getJasmineRequireObj().Spec = function(j$) {
properties: null,
debugLogs: null
};
+
+ this.reportedDone = false;
}
Spec.prototype.addExpectationResult = function(passed, data, isError) {
- var expectationResult = this.expectationResultFactory(data);
+ const expectationResult = j$.buildExpectationResult(data);
if (passed) {
this.result.passedExpectations.push(expectationResult);
} else {
- this.result.failedExpectations.push(expectationResult);
+ if (this.reportedDone) {
+ this.onLateError(expectationResult);
+ } else {
+ this.result.failedExpectations.push(expectationResult);
+ }
if (this.throwOnExpectationFailure && !isError) {
throw new j$.errors.ExpectationFailed();
@@ -861,7 +859,7 @@ getJasmineRequireObj().Spec = function(j$) {
isLeaf: true,
queueableFns: [...fns.befores, this.queueableFn, ...fns.afters],
onException: function() {
- self.onException.apply(self, arguments);
+ self.handleException.apply(self, arguments);
},
onMultipleDone: function() {
// Issue a deprecation. Include the context ourselves and pass
@@ -911,9 +909,10 @@ getJasmineRequireObj().Spec = function(j$) {
debugLogs: null
};
this.markedPending = this.markedExcluding;
+ this.reportedDone = false;
};
- Spec.prototype.onException = function onException(e) {
+ Spec.prototype.handleException = function handleException(e) {
if (Spec.isPendingSpecException(e)) {
this.pend(extractCustomPendingMessage(e));
return;
@@ -987,13 +986,6 @@ getJasmineRequireObj().Spec = function(j$) {
return 'passed';
};
- /**
- * The full description including all ancestors of this spec.
- * @name Spec#getFullName
- * @function
- * @returns {string}
- * @since 2.0.0
- */
Spec.prototype.getFullName = function() {
return this.getSpecName(this);
};
@@ -1003,7 +995,7 @@ getJasmineRequireObj().Spec = function(j$) {
deprecation = { message: deprecation };
}
this.result.deprecationWarnings.push(
- this.expectationResultFactory(deprecation)
+ j$.buildExpectationResult(deprecation)
);
};
@@ -1046,6 +1038,7 @@ getJasmineRequireObj().Spec = function(j$) {
/**
* @interface Spec
* @see Configuration#specFilter
+ * @since 2.0.0
*/
Object.defineProperty(Spec.prototype, 'metadata', {
get: function() {
@@ -1056,6 +1049,7 @@ getJasmineRequireObj().Spec = function(j$) {
* @name Spec#id
* @readonly
* @type {string}
+ * @since 2.0.0
*/
id: this.id,
@@ -1064,6 +1058,7 @@ getJasmineRequireObj().Spec = function(j$) {
* @name Spec#description
* @readonly
* @type {string}
+ * @since 2.0.0
*/
description: this.description,
@@ -1072,6 +1067,7 @@ getJasmineRequireObj().Spec = function(j$) {
* @name Spec#getFullName
* @function
* @returns {string}
+ * @since 2.0.0
*/
getFullName: this.getFullName.bind(this)
};
@@ -1084,8 +1080,6 @@ getJasmineRequireObj().Spec = function(j$) {
return Spec;
};
-/*jshint bitwise: false*/
-
getJasmineRequireObj().Order = function() {
function Order(options) {
this.random = 'random' in options ? options.random : true;
@@ -1461,7 +1455,7 @@ getJasmineRequireObj().Env = function(j$) {
}
};
- var expectationFactory = function(actual, spec) {
+ const expectationFactory = function(actual, spec) {
return j$.Expectation.factory({
matchersUtil: makeMatchersUtil(),
customMatchers: runnableResources[spec.id].customMatchers,
@@ -1474,16 +1468,21 @@ getJasmineRequireObj().Env = function(j$) {
}
};
+ // TODO: Unify recordLateError with recordLateExpectation? The extra
+ // diagnostic info added by the latter is probably useful in most cases.
function recordLateError(error) {
- const result = expectationResultFactory({
- error,
- passed: false,
- matcherName: '',
- expected: '',
- actual: ''
- });
- result.globalErrorType = 'lateError';
- topSuite.result.failedExpectations.push(result);
+ const isExpectationResult =
+ error.matcherName !== undefined && error.passed !== undefined;
+ const result = isExpectationResult
+ ? error
+ : j$.buildExpectationResult({
+ error,
+ passed: false,
+ matcherName: '',
+ expected: '',
+ actual: ''
+ });
+ routeLateFailure(result);
}
function recordLateExpectation(runable, runableType, result) {
@@ -1514,7 +1513,27 @@ getJasmineRequireObj().Env = function(j$) {
topSuite.result.failedExpectations.push(delayedExpectationResult);
}
- var asyncExpectationFactory = function(actual, spec, runableType) {
+ function routeLateFailure(expectationResult) {
+ // Report the result on the nearest ancestor suite that hasn't already
+ // been reported done.
+ for (let r = currentRunnable(); r; r = r.parentSuite) {
+ if (!r.reportedDone) {
+ if (r === topSuite) {
+ expectationResult.globalErrorType = 'lateError';
+ }
+
+ r.result.failedExpectations.push(expectationResult);
+ return;
+ }
+ }
+
+ // If we get here, all results have been reported and there's nothing we
+ // can do except log the result and hope the user sees it.
+ console.error('Jasmine received a result after the suite finished:');
+ console.error(expectationResult);
+ }
+
+ const asyncExpectationFactory = function(actual, spec, runableType) {
return j$.Expectation.asyncFactory({
matchersUtil: makeMatchersUtil(),
customAsyncMatchers: runnableResources[spec.id].customAsyncMatchers,
@@ -1529,11 +1548,11 @@ getJasmineRequireObj().Env = function(j$) {
return spec.addExpectationResult(passed, result);
}
};
- var suiteAsyncExpectationFactory = function(actual, suite) {
+ const suiteAsyncExpectationFactory = function(actual, suite) {
return asyncExpectationFactory(actual, suite, 'Suite');
};
- var specAsyncExpectationFactory = function(actual, suite) {
+ const specAsyncExpectationFactory = function(actual, suite) {
return asyncExpectationFactory(actual, suite, 'Spec');
};
@@ -1606,16 +1625,6 @@ getJasmineRequireObj().Env = function(j$) {
return fullName.join(' ');
};
- // TODO: we may just be able to pass in the fn instead of wrapping here
- var buildExpectationResult = j$.buildExpectationResult,
- exceptionFormatter = new j$.ExceptionFormatter(),
- expectationResultFactory = function(attrs) {
- attrs.messageFormatter = exceptionFormatter.message;
- attrs.stackFormatter = exceptionFormatter.stack;
-
- return buildExpectationResult(attrs);
- };
-
/**
* Causes a deprecation warning to be logged to the console and reported to
* reporters.
@@ -1669,7 +1678,7 @@ getJasmineRequireObj().Env = function(j$) {
options.onException =
options.onException ||
function(e) {
- (currentRunnable() || topSuite).onException(e);
+ (currentRunnable() || topSuite).handleException(e);
};
options.deprecated = self.deprecated;
@@ -1681,7 +1690,6 @@ getJasmineRequireObj().Env = function(j$) {
description: 'Jasmine__TopLevel__Suite',
expectationFactory: expectationFactory,
asyncExpectationFactory: suiteAsyncExpectationFactory,
- expectationResultFactory: expectationResultFactory,
autoCleanClosures: config.autoCleanClosures,
onLateError: recordLateError
});
@@ -1854,10 +1862,10 @@ getJasmineRequireObj().Env = function(j$) {
if (suite.hadBeforeAllFailure) {
reportChildrenOfBeforeAllFailure(suite).then(function() {
- reporter.suiteDone(result, next);
+ reportSuiteDone(suite, result, next);
});
} else {
- reporter.suiteDone(result, next);
+ reportSuiteDone(suite, result, next);
}
},
orderChildren: function(node) {
@@ -1947,6 +1955,7 @@ getJasmineRequireObj().Env = function(j$) {
failedExpectations: topSuite.result.failedExpectations,
deprecationWarnings: topSuite.result.deprecationWarnings
};
+ topSuite.reportedDone = true;
reporter.jasmineDone(jasmineDoneInfo, function() {
done(jasmineDoneInfo);
});
@@ -1991,7 +2000,7 @@ getJasmineRequireObj().Env = function(j$) {
child.result.status = 'failed';
await new Promise(function(resolve) {
- reporter.specDone(child.result, resolve);
+ reportSpecDone(child, child.result, resolve);
});
}
}
@@ -2139,7 +2148,6 @@ getJasmineRequireObj().Env = function(j$) {
timer: new j$.Timer(),
expectationFactory: expectationFactory,
asyncExpectationFactory: suiteAsyncExpectationFactory,
- expectationResultFactory: expectationResultFactory,
throwOnExpectationFailure: config.stopSpecOnExpectationFailure,
autoCleanClosures: config.autoCleanClosures,
onLateError: recordLateError
@@ -2205,7 +2213,7 @@ getJasmineRequireObj().Env = function(j$) {
}
if (declarationError) {
- suite.onException(declarationError);
+ suite.handleException(declarationError);
}
currentDeclarationSuite = parentSuite;
@@ -2248,7 +2256,6 @@ getJasmineRequireObj().Env = function(j$) {
},
onStart: specStarted,
description: description,
- expectationResultFactory: expectationResultFactory,
queueRunnerFactory: queueRunnerFactory,
userContext: function() {
return suite.clonedSharedUserContext();
@@ -2271,7 +2278,7 @@ getJasmineRequireObj().Env = function(j$) {
hasFailures = true;
}
- reporter.specDone(result, next);
+ reportSpecDone(spec, result, next);
}
function specStarted(spec, next) {
@@ -2281,6 +2288,16 @@ getJasmineRequireObj().Env = function(j$) {
}
};
+ function reportSpecDone(spec, result, next) {
+ spec.reportedDone = true;
+ reporter.specDone(result, next);
+ }
+
+ function reportSuiteDone(suite, result, next) {
+ suite.reportedDone = true;
+ reporter.suiteDone(result, next);
+ }
+
this.it_ = function(description, fn, timeout) {
ensureIsNotNested('it');
// it() sometimes doesn't have a fn argument, so only check the type if
@@ -2668,12 +2685,9 @@ getJasmineRequireObj().Any = function(j$) {
return typeof other == 'boolean';
}
- /* jshint -W122 */
- /* global Symbol */
if (typeof Symbol != 'undefined' && this.expectedObject == Symbol) {
return typeof other == 'symbol';
}
- /* jshint +W122 */
return other instanceof this.expectedObject;
};
@@ -2814,6 +2828,24 @@ getJasmineRequireObj().Falsy = function(j$) {
return Falsy;
};
+getJasmineRequireObj().Is = function(j$) {
+ class Is {
+ constructor(expected) {
+ this.expected_ = expected;
+ }
+
+ asymmetricMatch(actual) {
+ return actual === this.expected_;
+ }
+
+ jasmineToString(pp) {
+ return `<jasmine.is(${pp(this.expected_)})>`;
+ }
+ }
+
+ return Is;
+};
+
getJasmineRequireObj().MapContaining = function(j$) {
function MapContaining(sample) {
if (!j$.isMap(sample)) {
@@ -3054,6 +3086,93 @@ getJasmineRequireObj().Truthy = function(j$) {
return Truthy;
};
+//TODO: expectation result may make more sense as a presentation of an expectation.
+getJasmineRequireObj().buildExpectationResult = function(j$) {
+ function buildExpectationResult(options) {
+ const exceptionFormatter = new j$.ExceptionFormatter();
+
+ /**
+ * @typedef Expectation
+ * @property {String} matcherName - The name of the matcher that was executed for this expectation.
+ * @property {String} message - The failure message for the expectation.
+ * @property {String} stack - The stack trace for the failure if available.
+ * @property {Boolean} passed - Whether the expectation passed or failed.
+ * @property {Object} expected - If the expectation failed, what was the expected value.
+ * @property {Object} actual - If the expectation failed, what actual value was produced.
+ * @property {String|undefined} globalErrorType - The type of an error that
+ * is reported on the top suite. Valid values are undefined, "afterAll",
+ * "load", "lateExpectation", and "lateError".
+ */
+ const result = {
+ matcherName: options.matcherName,
+ message: message(),
+ stack: options.omitStackTrace ? '' : stack(),
+ passed: options.passed
+ };
+
+ if (!result.passed) {
+ result.expected = options.expected;
+ result.actual = options.actual;
+
+ if (options.error && !j$.isString_(options.error)) {
+ if ('code' in options.error) {
+ result.code = options.error.code;
+ }
+
+ if (
+ options.error.code === 'ERR_ASSERTION' &&
+ options.expected === '' &&
+ options.actual === ''
+ ) {
+ result.expected = options.error.expected;
+ result.actual = options.error.actual;
+ result.matcherName = 'assert ' + options.error.operator;
+ }
+ }
+ }
+
+ return result;
+
+ function message() {
+ if (options.passed) {
+ return 'Passed.';
+ } else if (options.message) {
+ return options.message;
+ } else if (options.error) {
+ return exceptionFormatter.message(options.error);
+ }
+ return '';
+ }
+
+ function stack() {
+ if (options.passed) {
+ return '';
+ }
+
+ let error = options.error;
+
+ if (!error) {
+ if (options.errorForStack) {
+ error = options.errorForStack;
+ } else if (options.stack) {
+ error = options;
+ } else {
+ try {
+ throw new Error(message());
+ } catch (e) {
+ error = e;
+ }
+ }
+ }
+ // Omit the message from the stack trace because it will be
+ // included elsewhere.
+ return exceptionFormatter.stack(error, { omitMessage: true });
+ }
+ }
+
+ return buildExpectationResult;
+};
+
getJasmineRequireObj().CallTracker = function(j$) {
/**
* @namespace Spy#calls
@@ -3571,11 +3690,10 @@ getJasmineRequireObj().DelayedFunctionScheduler = function(j$) {
) {
var f;
if (typeof funcToCall === 'string') {
- /* jshint evil: true */
f = function() {
+ // eslint-disable-next-line no-eval
return eval(funcToCall);
};
- /* jshint evil: false */
} else {
f = funcToCall;
}
@@ -3831,7 +3949,7 @@ getJasmineRequireObj().errors = function() {
};
getJasmineRequireObj().ExceptionFormatter = function(j$) {
- var ignoredProperties = [
+ const ignoredProperties = [
'name',
'message',
'stack',
@@ -3845,9 +3963,10 @@ getJasmineRequireObj().ExceptionFormatter = function(j$) {
];
function ExceptionFormatter(options) {
- var jasmineFile = (options && options.jasmineFile) || j$.util.jasmineFile();
+ const jasmineFile =
+ (options && options.jasmineFile) || j$.util.jasmineFile();
this.message = function(error) {
- var message = '';
+ let message = '';
if (error.jasmineMessage) {
message += error.jasmineMessage;
@@ -3875,9 +3994,9 @@ getJasmineRequireObj().ExceptionFormatter = function(j$) {
return null;
}
- var stackTrace = new j$.StackTrace(error);
- var lines = filterJasmine(stackTrace);
- var result = '';
+ const stackTrace = new j$.StackTrace(error);
+ const lines = filterJasmine(stackTrace);
+ let result = '';
if (stackTrace.message && !omitMessage) {
lines.unshift(stackTrace.message);
@@ -3890,9 +4009,9 @@ getJasmineRequireObj().ExceptionFormatter = function(j$) {
};
function filterJasmine(stackTrace) {
- var result = [],
- jasmineMarker =
- stackTrace.style === 'webkit' ? '<Jasmine>' : ' at <Jasmine>';
+ const result = [];
+ const jasmineMarker =
+ stackTrace.style === 'webkit' ? '<Jasmine>' : ' at <Jasmine>';
stackTrace.frames.forEach(function(frame) {
if (frame.file !== jasmineFile) {
@@ -3910,10 +4029,10 @@ getJasmineRequireObj().ExceptionFormatter = function(j$) {
return;
}
- var result = {};
- var empty = true;
+ const result = {};
+ let empty = true;
- for (var prop in error) {
+ for (const prop in error) {
if (j$.util.arrayContains(ignoredProperties, prop)) {
continue;
}
@@ -3940,8 +4059,8 @@ getJasmineRequireObj().Expectation = function(j$) {
function Expectation(options) {
this.expector = new j$.Expector(options);
- var customMatchers = options.customMatchers || {};
- for (var matcherName in customMatchers) {
+ const customMatchers = options.customMatchers || {};
+ for (const matcherName in customMatchers) {
this[matcherName] = wrapSyncCompare(
matcherName,
customMatchers[matcherName]
@@ -4011,8 +4130,8 @@ getJasmineRequireObj().Expectation = function(j$) {
function AsyncExpectation(options) {
this.expector = new j$.Expector(options);
- var customAsyncMatchers = options.customAsyncMatchers || {};
- for (var matcherName in customAsyncMatchers) {
+ const customAsyncMatchers = options.customAsyncMatchers || {};
+ for (const matcherName in customAsyncMatchers) {
this[matcherName] = wrapAsyncCompare(
matcherName,
customAsyncMatchers[matcherName]
@@ -4068,36 +4187,34 @@ getJasmineRequireObj().Expectation = function(j$) {
function wrapSyncCompare(name, matcherFactory) {
return function() {
- var result = this.expector.compare(name, matcherFactory, arguments);
+ const result = this.expector.compare(name, matcherFactory, arguments);
this.expector.processResult(result);
};
}
function wrapAsyncCompare(name, matcherFactory) {
return function() {
- var self = this;
-
// Capture the call stack here, before we go async, so that it will contain
// frames that are relevant to the user instead of just parts of Jasmine.
- var errorForStack = j$.util.errorWithStack();
+ const errorForStack = j$.util.errorWithStack();
return this.expector
.compare(name, matcherFactory, arguments)
- .then(function(result) {
- self.expector.processResult(result, errorForStack);
+ .then(result => {
+ this.expector.processResult(result, errorForStack);
});
};
}
function addCoreMatchers(prototype, matchers, wrapper) {
- for (var matcherName in matchers) {
- var matcher = matchers[matcherName];
+ for (const matcherName in matchers) {
+ const matcher = matchers[matcherName];
prototype[matcherName] = wrapper(matcherName, matcher);
}
}
function addFilter(source, filter) {
- var result = Object.create(source);
+ const result = Object.create(source);
result.expector = source.expector.addFilter(filter);
return result;
}
@@ -4122,7 +4239,7 @@ getJasmineRequireObj().Expectation = function(j$) {
return result;
}
- var syncNegatingFilter = {
+ const syncNegatingFilter = {
selectComparisonFunc: function(matcher) {
function defaultNegativeCompare() {
return negate(matcher.compare.apply(null, arguments));
@@ -4133,7 +4250,7 @@ getJasmineRequireObj().Expectation = function(j$) {
buildFailureMessage: negatedFailureMessage
};
- var asyncNegatingFilter = {
+ const asyncNegatingFilter = {
selectComparisonFunc: function(matcher) {
function defaultNegativeCompare() {
return matcher.compare.apply(this, arguments).then(negate);
@@ -4144,10 +4261,10 @@ getJasmineRequireObj().Expectation = function(j$) {
buildFailureMessage: negatedFailureMessage
};
- var expectSettledPromiseFilter = {
+ const expectSettledPromiseFilter = {
selectComparisonFunc: function(matcher) {
return function(actual) {
- var matcherArgs = arguments;
+ const matcherArgs = arguments;
return j$.isPending_(actual).then(function(isPending) {
if (isPending) {
@@ -4170,9 +4287,7 @@ getJasmineRequireObj().Expectation = function(j$) {
}
ContextAddingFilter.prototype.modifyFailureMessage = function(msg) {
- var nl = msg.indexOf('\n');
-
- if (nl === -1) {
+ if (msg.indexOf('\n') === -1) {
return this.message + ': ' + msg;
} else {
return this.message + ':\n' + indent(msg);
@@ -4251,93 +4366,6 @@ getJasmineRequireObj().ExpectationFilterChain = function() {
return ExpectationFilterChain;
};
-//TODO: expectation result may make more sense as a presentation of an expectation.
-getJasmineRequireObj().buildExpectationResult = function(j$) {
- function buildExpectationResult(options) {
- var messageFormatter = options.messageFormatter || function() {},
- stackFormatter = options.stackFormatter || function() {};
-
- /**
- * @typedef Expectation
- * @property {String} matcherName - The name of the matcher that was executed for this expectation.
- * @property {String} message - The failure message for the expectation.
- * @property {String} stack - The stack trace for the failure if available.
- * @property {Boolean} passed - Whether the expectation passed or failed.
- * @property {Object} expected - If the expectation failed, what was the expected value.
- * @property {Object} actual - If the expectation failed, what actual value was produced.
- * @property {String|undefined} globalErrorType - The type of an error that
- * is reported on the top suite. Valid values are undefined, "afterAll",
- * "load", "lateExpectation", and "lateError".
- */
- var result = {
- matcherName: options.matcherName,
- message: message(),
- stack: options.omitStackTrace ? '' : stack(),
- passed: options.passed
- };
-
- if (!result.passed) {
- result.expected = options.expected;
- result.actual = options.actual;
-
- if (options.error && !j$.isString_(options.error)) {
- if ('code' in options.error) {
- result.code = options.error.code;
- }
-
- if (
- options.error.code === 'ERR_ASSERTION' &&
- options.expected === '' &&
- options.actual === ''
- ) {
- result.expected = options.error.expected;
- result.actual = options.error.actual;
- result.matcherName = 'assert ' + options.error.operator;
- }
- }
- }
-
- return result;
-
- function message() {
- if (options.passed) {
- return 'Passed.';
- } else if (options.message) {
- return options.message;
- } else if (options.error) {
- return messageFormatter(options.error);
- }
- return '';
- }
-
- function stack() {
- if (options.passed) {
- return '';
- }
-
- var error = options.error;
- if (!error) {
- if (options.errorForStack) {
- error = options.errorForStack;
- } else if (options.stack) {
- error = options;
- } else {
- try {
- throw new Error(message());
- } catch (e) {
- error = e;
- }
- }
- }
- // Omit the message from the stack trace because it will be
- // included elsewhere.
- return stackFormatter(error, { omitMessage: true });
- }
- }
-
- return buildExpectationResult;
-};
-
getJasmineRequireObj().Expector = function(j$) {
function Expector(options) {
this.matchersUtil = options.matchersUtil || {
@@ -4925,122 +4953,116 @@ getJasmineRequireObj().toBeResolvedTo = function(j$) {
};
getJasmineRequireObj().DiffBuilder = function(j$) {
- return function DiffBuilder(config) {
- var prettyPrinter = (config || {}).prettyPrinter || j$.makePrettyPrinter(),
- mismatches = new j$.MismatchTree(),
- path = new j$.ObjectPath(),
- actualRoot = undefined,
- expectedRoot = undefined;
+ class DiffBuilder {
+ constructor(config) {
+ this.prettyPrinter_ =
+ (config || {}).prettyPrinter || j$.makePrettyPrinter();
+ this.mismatches_ = new j$.MismatchTree();
+ this.path_ = new j$.ObjectPath();
+ this.actualRoot_ = undefined;
+ this.expectedRoot_ = undefined;
+ }
- return {
- setRoots: function(actual, expected) {
- actualRoot = actual;
- expectedRoot = expected;
- },
+ setRoots(actual, expected) {
+ this.actualRoot_ = actual;
+ this.expectedRoot_ = expected;
+ }
- recordMismatch: function(formatter) {
- mismatches.add(path, formatter);
- },
+ recordMismatch(formatter) {
+ this.mismatches_.add(this.path_, formatter);
+ }
- getMessage: function() {
- var messages = [];
-
- mismatches.traverse(function(path, isLeaf, formatter) {
- var actualCustom,
- expectedCustom,
- useCustom,
- derefResult = dereferencePath(
- path,
- actualRoot,
- expectedRoot,
- prettyPrinter
- ),
- actual = derefResult.actual,
- expected = derefResult.expected;
-
- if (formatter) {
- messages.push(formatter(actual, expected, path, prettyPrinter));
- return true;
- }
+ getMessage() {
+ const messages = [];
- actualCustom = prettyPrinter.customFormat_(actual);
- expectedCustom = prettyPrinter.customFormat_(expected);
- useCustom = !(
- j$.util.isUndefined(actualCustom) &&
- j$.util.isUndefined(expectedCustom)
- );
+ this.mismatches_.traverse((path, isLeaf, formatter) => {
+ const { actual, expected } = this.dereferencePath_(path);
- if (useCustom) {
- messages.push(
- wrapPrettyPrinted(actualCustom, expectedCustom, path)
- );
- return false; // don't recurse further
- }
+ if (formatter) {
+ messages.push(formatter(actual, expected, path, this.prettyPrinter_));
+ return true;
+ }
- if (isLeaf) {
- messages.push(
- defaultFormatter(actual, expected, path, prettyPrinter)
- );
- }
+ const actualCustom = this.prettyPrinter_.customFormat_(actual);
+ const expectedCustom = this.prettyPrinter_.customFormat_(expected);
+ const useCustom = !(
+ j$.util.isUndefined(actualCustom) &&
+ j$.util.isUndefined(expectedCustom)
+ );
- return true;
- });
+ if (useCustom) {
+ messages.push(wrapPrettyPrinted(actualCustom, expectedCustom, path));
+ return false; // don't recurse further
+ }
- return messages.join('\n');
- },
+ if (isLeaf) {
+ messages.push(this.defaultFormatter_(actual, expected, path));
+ }
- withPath: function(pathComponent, block) {
- var oldPath = path;
- path = path.add(pathComponent);
- block();
- path = oldPath;
- }
- };
+ return true;
+ });
- function defaultFormatter(actual, expected, path, prettyPrinter) {
- return wrapPrettyPrinted(
- prettyPrinter(actual),
- prettyPrinter(expected),
- path
- );
+ return messages.join('\n');
}
- function wrapPrettyPrinted(actual, expected, path) {
- return (
- 'Expected ' +
- path +
- (path.depth() ? ' = ' : '') +
- actual +
- ' to equal ' +
- expected +
- '.'
- );
+ withPath(pathComponent, block) {
+ const oldPath = this.path_;
+ this.path_ = this.path_.add(pathComponent);
+ block();
+ this.path_ = oldPath;
}
- };
- function dereferencePath(objectPath, actual, expected, pp) {
- function handleAsymmetricExpected() {
- if (
- j$.isAsymmetricEqualityTester_(expected) &&
- j$.isFunction_(expected.valuesForDiff_)
- ) {
- var asymmetricResult = expected.valuesForDiff_(actual, pp);
- expected = asymmetricResult.self;
- actual = asymmetricResult.other;
- }
- }
+ dereferencePath_(objectPath) {
+ let actual = this.actualRoot_;
+ let expected = this.expectedRoot_;
- var i;
- handleAsymmetricExpected();
+ const handleAsymmetricExpected = () => {
+ if (
+ j$.isAsymmetricEqualityTester_(expected) &&
+ j$.isFunction_(expected.valuesForDiff_)
+ ) {
+ const asymmetricResult = expected.valuesForDiff_(
+ actual,
+ this.prettyPrinter_
+ );
+ expected = asymmetricResult.self;
+ actual = asymmetricResult.other;
+ }
+ };
- for (i = 0; i < objectPath.components.length; i++) {
- actual = actual[objectPath.components[i]];
- expected = expected[objectPath.components[i]];
handleAsymmetricExpected();
+
+ for (const pc of objectPath.components) {
+ actual = actual[pc];
+ expected = expected[pc];
+ handleAsymmetricExpected();
+ }
+
+ return { actual: actual, expected: expected };
+ }
+
+ defaultFormatter_(actual, expected, path) {
+ return wrapPrettyPrinted(
+ this.prettyPrinter_(actual),
+ this.prettyPrinter_(expected),
+ path
+ );
}
+ }
- return { actual: actual, expected: expected };
+ function wrapPrettyPrinted(actual, expected, path) {
+ return (
+ 'Expected ' +
+ path +
+ (path.depth() ? ' = ' : '') +
+ actual +
+ ' to equal ' +
+ expected +
+ '.'
+ );
}
+
+ return DiffBuilder;
};
getJasmineRequireObj().MatchersUtil = function(j$) {
@@ -5740,56 +5762,51 @@ getJasmineRequireObj().MismatchTree = function(j$) {
the expected and actual object graphs. MismatchTree maintains that context
and provides it via the traverse method.
*/
- function MismatchTree(path) {
- this.path = path || new j$.ObjectPath([]);
- this.formatter = undefined;
- this.children = [];
- this.isMismatch = false;
- }
-
- MismatchTree.prototype.add = function(path, formatter) {
- var key, child;
+ class MismatchTree {
+ constructor(path) {
+ this.path = path || new j$.ObjectPath([]);
+ this.formatter = undefined;
+ this.children = [];
+ this.isMismatch = false;
+ }
+
+ add(path, formatter) {
+ if (path.depth() === 0) {
+ this.formatter = formatter;
+ this.isMismatch = true;
+ } else {
+ const key = path.components[0];
+ path = path.shift();
+ let child = this.child(key);
- if (path.depth() === 0) {
- this.formatter = formatter;
- this.isMismatch = true;
- } else {
- key = path.components[0];
- path = path.shift();
- child = this.child(key);
+ if (!child) {
+ child = new MismatchTree(this.path.add(key));
+ this.children.push(child);
+ }
- if (!child) {
- child = new MismatchTree(this.path.add(key));
- this.children.push(child);
+ child.add(path, formatter);
}
-
- child.add(path, formatter);
}
- };
- MismatchTree.prototype.traverse = function(visit) {
- var i,
- hasChildren = this.children.length > 0;
+ traverse(visit) {
+ const hasChildren = this.children.length > 0;
- if (this.isMismatch || hasChildren) {
- if (visit(this.path, !hasChildren, this.formatter)) {
- for (i = 0; i < this.children.length; i++) {
- this.children[i].traverse(visit);
+ if (this.isMismatch || hasChildren) {
+ if (visit(this.path, !hasChildren, this.formatter)) {
+ for (const child of this.children) {
+ child.traverse(visit);
+ }
}
}
}
- };
- MismatchTree.prototype.child = function(key) {
- var i, pathEls;
-
- for (i = 0; i < this.children.length; i++) {
- pathEls = this.children[i].path.components;
- if (pathEls[pathEls.length - 1] === key) {
- return this.children[i];
- }
+ child(key) {
+ return this.children.find(child => {
+ const pathEls = child.path.components;
+ return pathEls[pathEls.length - 1] === key;
+ });
}
- };
+ }
return MismatchTree;
};
@@ -5829,29 +5846,31 @@ getJasmineRequireObj().NullDiffBuilder = function(j$) {
};
getJasmineRequireObj().ObjectPath = function(j$) {
- function ObjectPath(components) {
- this.components = components || [];
- }
+ class ObjectPath {
+ constructor(components) {
+ this.components = components || [];
+ }
- ObjectPath.prototype.toString = function() {
- if (this.components.length) {
- return '$' + map(this.components, formatPropertyAccess).join('');
- } else {
- return '';
+ toString() {
+ if (this.components.length) {
+ return '$' + this.components.map(formatPropertyAccess).join('');
+ } else {
+ return '';
+ }
}
- };
- ObjectPath.prototype.add = function(component) {
- return new ObjectPath(this.components.concat([component]));
- };
+ add(component) {
+ return new ObjectPath(this.components.concat([component]));
+ }
- ObjectPath.prototype.shift = function() {
- return new ObjectPath(this.components.slice(1));
- };
+ shift() {
+ return new ObjectPath(this.components.slice(1));
+ }
- ObjectPath.prototype.depth = function() {
- return this.components.length;
- };
+ depth() {
+ return this.components.length;
+ }
+ }
function formatPropertyAccess(prop) {
if (typeof prop === 'number' || typeof prop === 'symbol') {
@@ -5862,15 +5881,7 @@ getJasmineRequireObj().ObjectPath = function(j$) {
return '.' + prop;
}
- return "['" + prop + "']";
- }
-
- function map(array, fn) {
- var results = [];
- for (var i = 0; i < array.length; i++) {
- results.push(fn(array[i]));
- }
- return results;
+ return `['${prop}']`;
}
function isValidIdentifier(string) {
@@ -6435,7 +6446,7 @@ getJasmineRequireObj().toEqual = function(j$) {
var result = {
pass: false
},
- diffBuilder = j$.DiffBuilder({ prettyPrinter: matchersUtil.pp });
+ diffBuilder = new j$.DiffBuilder({ prettyPrinter: matchersUtil.pp });
result.pass = matchersUtil.equals(actual, expected, diffBuilder);
@@ -7541,338 +7552,316 @@ getJasmineRequireObj().NeverSkipPolicy = function(j$) {
};
getJasmineRequireObj().makePrettyPrinter = function(j$) {
- function SinglePrettyPrintRun(customObjectFormatters, pp) {
- this.customObjectFormatters_ = customObjectFormatters;
- this.ppNestLevel_ = 0;
- this.seen = [];
- this.length = 0;
- this.stringParts = [];
- this.pp_ = pp;
- }
-
- function hasCustomToString(value) {
- // value.toString !== Object.prototype.toString if value has no custom toString but is from another context (e.g.
- // iframe, web worker)
- try {
- return (
- j$.isFunction_(value.toString) &&
- value.toString !== Object.prototype.toString &&
- value.toString() !== Object.prototype.toString.call(value)
- );
- } catch (e) {
- // The custom toString() threw.
- return true;
- }
- }
-
- SinglePrettyPrintRun.prototype.format = function(value) {
- this.ppNestLevel_++;
- try {
- var customFormatResult = this.applyCustomFormatters_(value);
-
- if (customFormatResult) {
- this.emitScalar(customFormatResult);
- } else if (j$.util.isUndefined(value)) {
- this.emitScalar('undefined');
- } else if (value === null) {
- this.emitScalar('null');
- } else if (value === 0 && 1 / value === -Infinity) {
- this.emitScalar('-0');
- } else if (value === j$.getGlobal()) {
- this.emitScalar('<global>');
- } else if (value.jasmineToString) {
- this.emitScalar(value.jasmineToString(this.pp_));
- } else if (j$.isString_(value)) {
- this.emitString(value);
- } else if (j$.isSpy(value)) {
- this.emitScalar('spy on ' + value.and.identity);
- } else if (j$.isSpy(value.toString)) {
- this.emitScalar('spy on ' + value.toString.and.identity);
- } else if (value instanceof RegExp) {
- this.emitScalar(value.toString());
- } else if (typeof value === 'function') {
- this.emitScalar('Function');
- } else if (j$.isDomNode(value)) {
- if (value.tagName) {
- this.emitDomElement(value);
+ class SinglePrettyPrintRun {
+ constructor(customObjectFormatters, pp) {
+ this.customObjectFormatters_ = customObjectFormatters;
+ this.ppNestLevel_ = 0;
+ this.seen = [];
+ this.length = 0;
+ this.stringParts = [];
+ this.pp_ = pp;
+ }
+
+ format(value) {
+ this.ppNestLevel_++;
+ try {
+ const customFormatResult = this.applyCustomFormatters_(value);
+
+ if (customFormatResult) {
+ this.emitScalar(customFormatResult);
+ } else if (j$.util.isUndefined(value)) {
+ this.emitScalar('undefined');
+ } else if (value === null) {
+ this.emitScalar('null');
+ } else if (value === 0 && 1 / value === -Infinity) {
+ this.emitScalar('-0');
+ } else if (value === j$.getGlobal()) {
+ this.emitScalar('<global>');
+ } else if (value.jasmineToString) {
+ this.emitScalar(value.jasmineToString(this.pp_));
+ } else if (j$.isString_(value)) {
+ this.emitString(value);
+ } else if (j$.isSpy(value)) {
+ this.emitScalar('spy on ' + value.and.identity);
+ } else if (j$.isSpy(value.toString)) {
+ this.emitScalar('spy on ' + value.toString.and.identity);
+ } else if (value instanceof RegExp) {
+ this.emitScalar(value.toString());
+ } else if (typeof value === 'function') {
+ this.emitScalar('Function');
+ } else if (j$.isDomNode(value)) {
+ if (value.tagName) {
+ this.emitDomElement(value);
+ } else {
+ this.emitScalar('HTMLNode');
+ }
+ } else if (value instanceof Date) {
+ this.emitScalar('Date(' + value + ')');
+ } else if (j$.isSet(value)) {
+ this.emitSet(value);
+ } else if (j$.isMap(value)) {
+ this.emitMap(value);
+ } else if (j$.isTypedArray_(value)) {
+ this.emitTypedArray(value);
+ } else if (
+ value.toString &&
+ typeof value === 'object' &&
+ !j$.isArray_(value) &&
+ hasCustomToString(value)
+ ) {
+ try {
+ this.emitScalar(value.toString());
+ } catch (e) {
+ this.emitScalar('has-invalid-toString-method');
+ }
+ } else if (j$.util.arrayContains(this.seen, value)) {
+ this.emitScalar(
+ '<circular reference: ' +
+ (j$.isArray_(value) ? 'Array' : 'Object') +
+ '>'
+ );
+ } else if (j$.isArray_(value) || j$.isA_('Object', value)) {
+ this.seen.push(value);
+ if (j$.isArray_(value)) {
+ this.emitArray(value);
+ } else {
+ this.emitObject(value);
+ }
+ this.seen.pop();
} else {
- this.emitScalar('HTMLNode');
- }
- } else if (value instanceof Date) {
- this.emitScalar('Date(' + value + ')');
- } else if (j$.isSet(value)) {
- this.emitSet(value);
- } else if (j$.isMap(value)) {
- this.emitMap(value);
- } else if (j$.isTypedArray_(value)) {
- this.emitTypedArray(value);
- } else if (
- value.toString &&
- typeof value === 'object' &&
- !j$.isArray_(value) &&
- hasCustomToString(value)
- ) {
- try {
this.emitScalar(value.toString());
- } catch (e) {
- this.emitScalar('has-invalid-toString-method');
}
- } else if (j$.util.arrayContains(this.seen, value)) {
- this.emitScalar(
- '<circular reference: ' +
- (j$.isArray_(value) ? 'Array' : 'Object') +
- '>'
- );
- } else if (j$.isArray_(value) || j$.isA_('Object', value)) {
- this.seen.push(value);
- if (j$.isArray_(value)) {
- this.emitArray(value);
- } else {
- this.emitObject(value);
+ } catch (e) {
+ if (this.ppNestLevel_ > 1 || !(e instanceof MaxCharsReachedError)) {
+ throw e;
}
- this.seen.pop();
- } else {
- this.emitScalar(value.toString());
- }
- } catch (e) {
- if (this.ppNestLevel_ > 1 || !(e instanceof MaxCharsReachedError)) {
- throw e;
+ } finally {
+ this.ppNestLevel_--;
}
- } finally {
- this.ppNestLevel_--;
}
- };
- SinglePrettyPrintRun.prototype.applyCustomFormatters_ = function(value) {
- return customFormat(value, this.customObjectFormatters_);
- };
+ applyCustomFormatters_(value) {
+ return customFormat(value, this.customObjectFormatters_);
+ }
- SinglePrettyPrintRun.prototype.iterateObject = function(obj, fn) {
- var objKeys = j$.MatchersUtil.keys(obj, j$.isArray_(obj));
- var isGetter = function isGetter(prop) {};
+ iterateObject(obj, fn) {
+ const objKeys = j$.MatchersUtil.keys(obj, j$.isArray_(obj));
+ const length = Math.min(objKeys.length, j$.MAX_PRETTY_PRINT_ARRAY_LENGTH);
- if (obj.__lookupGetter__) {
- isGetter = function isGetter(prop) {
- var getter = obj.__lookupGetter__(prop);
- return !j$.util.isUndefined(getter) && getter !== null;
- };
+ for (let i = 0; i < length; i++) {
+ fn(objKeys[i]);
+ }
+
+ return objKeys.length > length;
}
- var length = Math.min(objKeys.length, j$.MAX_PRETTY_PRINT_ARRAY_LENGTH);
- for (var i = 0; i < length; i++) {
- var property = objKeys[i];
- fn(property, isGetter(property));
+
+ emitScalar(value) {
+ this.append(value);
}
- return objKeys.length > length;
- };
+ emitString(value) {
+ this.append("'" + value + "'");
+ }
- SinglePrettyPrintRun.prototype.emitScalar = function(value) {
- this.append(value);
- };
+ emitArray(array) {
+ if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) {
+ this.append('Array');
+ return;
+ }
- SinglePrettyPrintRun.prototype.emitString = function(value) {
- this.append("'" + value + "'");
- };
+ const length = Math.min(array.length, j$.MAX_PRETTY_PRINT_ARRAY_LENGTH);
+ this.append('[ ');
- SinglePrettyPrintRun.prototype.emitArray = function(array) {
- if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) {
- this.append('Array');
- return;
- }
- var length = Math.min(array.length, j$.MAX_PRETTY_PRINT_ARRAY_LENGTH);
- this.append('[ ');
- for (var i = 0; i < length; i++) {
- if (i > 0) {
- this.append(', ');
+ for (let i = 0; i < length; i++) {
+ if (i > 0) {
+ this.append(', ');
+ }
+ this.format(array[i]);
}
- this.format(array[i]);
- }
- if (array.length > length) {
- this.append(', ...');
- }
-
- var self = this;
- var first = array.length === 0;
- var truncated = this.iterateObject(array, function(property, isGetter) {
- if (first) {
- first = false;
- } else {
- self.append(', ');
+ if (array.length > length) {
+ this.append(', ...');
}
- self.formatProperty(array, property, isGetter);
- });
+ let first = array.length === 0;
+ const wasTruncated = this.iterateObject(array, property => {
+ if (first) {
+ first = false;
+ } else {
+ this.append(', ');
+ }
- if (truncated) {
- this.append(', ...');
- }
+ this.formatProperty(array, property);
+ });
- this.append(' ]');
- };
+ if (wasTruncated) {
+ this.append(', ...');
+ }
- SinglePrettyPrintRun.prototype.emitSet = function(set) {
- if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) {
- this.append('Set');
- return;
+ this.append(' ]');
}
- this.append('Set( ');
- var size = Math.min(set.size, j$.MAX_PRETTY_PRINT_ARRAY_LENGTH);
- var i = 0;
- set.forEach(function(value, key) {
- if (i >= size) {
+
+ emitSet(set) {
+ if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) {
+ this.append('Set');
return;
}
- if (i > 0) {
- this.append(', ');
- }
- this.format(value);
+ this.append('Set( ');
+ const size = Math.min(set.size, j$.MAX_PRETTY_PRINT_ARRAY_LENGTH);
+ let i = 0;
+ set.forEach(function(value, key) {
+ if (i >= size) {
+ return;
+ }
+ if (i > 0) {
+ this.append(', ');
+ }
+ this.format(value);
- i++;
- }, this);
- if (set.size > size) {
- this.append(', ...');
+ i++;
+ }, this);
+ if (set.size > size) {
+ this.append(', ...');
+ }
+ this.append(' )');
}
- this.append(' )');
- };
- SinglePrettyPrintRun.prototype.emitMap = function(map) {
- if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) {
- this.append('Map');
- return;
- }
- this.append('Map( ');
- var size = Math.min(map.size, j$.MAX_PRETTY_PRINT_ARRAY_LENGTH);
- var i = 0;
- map.forEach(function(value, key) {
- if (i >= size) {
+ emitMap(map) {
+ if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) {
+ this.append('Map');
return;
}
- if (i > 0) {
- this.append(', ');
- }
- this.format([key, value]);
+ this.append('Map( ');
+ const size = Math.min(map.size, j$.MAX_PRETTY_PRINT_ARRAY_LENGTH);
+ let i = 0;
+ map.forEach(function(value, key) {
+ if (i >= size) {
+ return;
+ }
+ if (i > 0) {
+ this.append(', ');
+ }
+ this.format([key, value]);
- i++;
- }, this);
- if (map.size > size) {
- this.append(', ...');
+ i++;
+ }, this);
+ if (map.size > size) {
+ this.append(', ...');
+ }
+ this.append(' )');
}
- this.append(' )');
- };
- SinglePrettyPrintRun.prototype.emitObject = function(obj) {
- var ctor = obj.constructor,
- constructorName;
+ emitObject(obj) {
+ const ctor = obj.constructor;
+ const constructorName =
+ typeof ctor === 'function' && obj instanceof ctor
+ ? j$.fnNameFor(obj.constructor)
+ : 'null';
- constructorName =
- typeof ctor === 'function' && obj instanceof ctor
- ? j$.fnNameFor(obj.constructor)
- : 'null';
+ this.append(constructorName);
- this.append(constructorName);
+ if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) {
+ return;
+ }
- if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) {
- return;
- }
+ this.append('({ ');
+ let first = true;
- var self = this;
- this.append('({ ');
- var first = true;
+ const wasTruncated = this.iterateObject(obj, property => {
+ if (first) {
+ first = false;
+ } else {
+ this.append(', ');
+ }
- var truncated = this.iterateObject(obj, function(property, isGetter) {
- if (first) {
- first = false;
- } else {
- self.append(', ');
- }
+ this.formatProperty(obj, property);
+ });
- self.formatProperty(obj, property, isGetter);
- });
+ if (wasTruncated) {
+ this.append(', ...');
+ }
- if (truncated) {
- this.append(', ...');
+ this.append(' })');
}
- this.append(' })');
- };
-
- SinglePrettyPrintRun.prototype.emitTypedArray = function(arr) {
- var constructorName = j$.fnNameFor(arr.constructor),
- limitedArray = Array.prototype.slice.call(
+ emitTypedArray(arr) {
+ const constructorName = j$.fnNameFor(arr.constructor);
+ const limitedArray = Array.prototype.slice.call(
arr,
0,
j$.MAX_PRETTY_PRINT_ARRAY_LENGTH
- ),
- itemsString = Array.prototype.join.call(limitedArray, ', ');
+ );
+ let itemsString = Array.prototype.join.call(limitedArray, ', ');
- if (limitedArray.length !== arr.length) {
- itemsString += ', ...';
- }
+ if (limitedArray.length !== arr.length) {
+ itemsString += ', ...';
+ }
- this.append(constructorName + ' [ ' + itemsString + ' ]');
- };
+ this.append(constructorName + ' [ ' + itemsString + ' ]');
+ }
- SinglePrettyPrintRun.prototype.emitDomElement = function(el) {
- var tagName = el.tagName.toLowerCase(),
- attrs = el.attributes,
- i,
- len = attrs.length,
- out = '<' + tagName,
- attr;
+ emitDomElement(el) {
+ const tagName = el.tagName.toLowerCase();
+ let out = '<' + tagName;
- for (i = 0; i < len; i++) {
- attr = attrs[i];
- out += ' ' + attr.name;
+ for (const attr of el.attributes) {
+ out += ' ' + attr.name;
- if (attr.value !== '') {
- out += '="' + attr.value + '"';
+ if (attr.value !== '') {
+ out += '="' + attr.value + '"';
+ }
}
- }
- out += '>';
+ out += '>';
- if (el.childElementCount !== 0 || el.textContent !== '') {
- out += '...</' + tagName + '>';
- }
-
- this.append(out);
- };
+ if (el.childElementCount !== 0 || el.textContent !== '') {
+ out += '...</' + tagName + '>';
+ }
- SinglePrettyPrintRun.prototype.formatProperty = function(
- obj,
- property,
- isGetter
- ) {
- if (typeof property === 'symbol') {
- this.append(property.toString());
- } else {
- this.append(property);
+ this.append(out);
}
- this.append(': ');
+ formatProperty(obj, property) {
+ if (typeof property === 'symbol') {
+ this.append(property.toString());
+ } else {
+ this.append(property);
+ }
- if (isGetter) {
- this.append('<getter>');
- } else {
+ this.append(': ');
this.format(obj[property]);
}
- };
- SinglePrettyPrintRun.prototype.append = function(value) {
- // This check protects us from the rare case where an object has overriden
- // `toString()` with an invalid implementation (returning a non-string).
- if (typeof value !== 'string') {
- value = Object.prototype.toString.call(value);
- }
+ append(value) {
+ // This check protects us from the rare case where an object has overriden
+ // `toString()` with an invalid implementation (returning a non-string).
+ if (typeof value !== 'string') {
+ value = Object.prototype.toString.call(value);
+ }
- var result = truncate(value, j$.MAX_PRETTY_PRINT_CHARS - this.length);
- this.length += result.value.length;
- this.stringParts.push(result.value);
+ const result = truncate(value, j$.MAX_PRETTY_PRINT_CHARS - this.length);
+ this.length += result.value.length;
+ this.stringParts.push(result.value);
- if (result.truncated) {
- throw new MaxCharsReachedError();
+ if (result.truncated) {
+ throw new MaxCharsReachedError();
+ }
}
- };
+ }
+
+ function hasCustomToString(value) {
+ // value.toString !== Object.prototype.toString if value has no custom toString but is from another context (e.g.
+ // iframe, web worker)
+ try {
+ return (
+ j$.isFunction_(value.toString) &&
+ value.toString !== Object.prototype.toString &&
+ value.toString() !== Object.prototype.toString.call(value)
+ );
+ } catch (e) {
+ // The custom toString() threw.
+ return true;
+ }
+ }
function truncate(s, maxlen) {
if (s.length <= maxlen) {
@@ -7893,10 +7882,8 @@ getJasmineRequireObj().makePrettyPrinter = function(j$) {
MaxCharsReachedError.prototype = new Error();
function customFormat(value, customObjectFormatters) {
- var i, result;
-
- for (i = 0; i < customObjectFormatters.length; i++) {
- result = customObjectFormatters[i](value);
+ for (const formatter of customObjectFormatters) {
+ const result = formatter(value);
if (result !== undefined) {
return result;
@@ -7907,8 +7894,11 @@ getJasmineRequireObj().makePrettyPrinter = function(j$) {
return function(customObjectFormatters) {
customObjectFormatters = customObjectFormatters || [];
- var pp = function(value) {
- var prettyPrinter = new SinglePrettyPrintRun(customObjectFormatters, pp);
+ const pp = function(value) {
+ const prettyPrinter = new SinglePrettyPrintRun(
+ customObjectFormatters,
+ pp
+ );
prettyPrinter.format(value);
return prettyPrinter.stringParts.join('');
};
@@ -8176,8 +8166,6 @@ getJasmineRequireObj().QueueRunner = function(j$) {
};
QueueRunner.prototype.diagnoseConflictingAsync_ = function(fn, retval) {
- var msg;
-
if (retval && j$.isFunction_(retval.then)) {
// Issue a warning that matches the user's code.
// Omit the stack trace because there's almost certainly no user code
@@ -8197,8 +8185,6 @@ getJasmineRequireObj().QueueRunner = function(j$) {
'function to not return a promise.'
);
}
-
- this.deprecated(msg, { omitStackTrace: true });
}
};
@@ -9626,50 +9612,23 @@ getJasmineRequireObj().StackTrace = function(j$) {
};
getJasmineRequireObj().Suite = function(j$) {
- /**
- * @interface Suite
- * @see Env#topSuite
- * @since 2.0.0
- */
function Suite(attrs) {
this.env = attrs.env;
- /**
- * The unique ID of this suite.
- * @name Suite#id
- * @readonly
- * @type {string}
- * @since 2.0.0
- */
this.id = attrs.id;
this.parentSuite = attrs.parentSuite;
- /**
- * The description passed to the {@link describe} that created this suite.
- * @name Suite#description
- * @readonly
- * @type {string}
- * @since 2.0.0
- */
this.description = attrs.description;
this.expectationFactory = attrs.expectationFactory;
this.asyncExpectationFactory = attrs.asyncExpectationFactory;
- this.expectationResultFactory = attrs.expectationResultFactory;
this.throwOnExpectationFailure = !!attrs.throwOnExpectationFailure;
this.autoCleanClosures =
attrs.autoCleanClosures === undefined ? true : !!attrs.autoCleanClosures;
- this.onLateError = attrs.onLateError;
+ this.onLateError = attrs.onLateError || function() {};
this.beforeFns = [];
this.afterFns = [];
this.beforeAllFns = [];
this.afterAllFns = [];
this.timer = attrs.timer || new j$.Timer();
-
- /**
- * The suite's children.
- * @name Suite#children
- * @type {Array.<(Spec|Suite)>}
- * @since 2.0.0
- */
this.children = [];
this.reset();
@@ -9688,13 +9647,6 @@ getJasmineRequireObj().Suite = function(j$) {
return this.asyncExpectationFactory(actual, this);
};
- /**
- * The full description including all ancestors of this suite.
- * @name Suite#getFullName
- * @function
- * @returns {string}
- * @since 2.0.0
- */
Suite.prototype.getFullName = function() {
var fullName = [];
for (
@@ -9790,6 +9742,7 @@ getJasmineRequireObj().Suite = function(j$) {
this.children.forEach(function(child) {
child.reset();
});
+ this.reportedDone = false;
};
Suite.prototype.addChild = function(child) {
@@ -9831,25 +9784,29 @@ getJasmineRequireObj().Suite = function(j$) {
return j$.UserContext.fromExisting(this.sharedUserContext());
};
- Suite.prototype.onException = function() {
+ Suite.prototype.handleException = function() {
if (arguments[0] instanceof j$.errors.ExpectationFailed) {
return;
}
- var data = {
+ const data = {
matcherName: '',
passed: false,
expected: '',
actual: '',
error: arguments[0]
};
- var failedExpectation = this.expectationResultFactory(data);
+ const failedExpectation = j$.buildExpectationResult(data);
if (!this.parentSuite) {
failedExpectation.globalErrorType = 'afterAll';
}
- this.result.failedExpectations.push(failedExpectation);
+ if (this.reportedDone) {
+ this.onLateError(failedExpectation);
+ } else {
+ this.result.failedExpectations.push(failedExpectation);
+ }
};
Suite.prototype.onMultipleDone = function() {
@@ -9876,8 +9833,15 @@ getJasmineRequireObj().Suite = function(j$) {
Suite.prototype.addExpectationResult = function() {
if (isFailure(arguments)) {
- var data = arguments[1];
- this.result.failedExpectations.push(this.expectationResultFactory(data));
+ const data = arguments[1];
+ const expectationResult = j$.buildExpectationResult(data);
+
+ if (this.reportedDone) {
+ this.onLateError(expectationResult);
+ } else {
+ this.result.failedExpectations.push(expectationResult);
+ }
+
if (this.throwOnExpectationFailure) {
throw new j$.errors.ExpectationFailed();
}
@@ -9889,7 +9853,7 @@ getJasmineRequireObj().Suite = function(j$) {
deprecation = { message: deprecation };
}
this.result.deprecationWarnings.push(
- this.expectationResultFactory(deprecation)
+ j$.buildExpectationResult(deprecation)
);
};
@@ -9906,6 +9870,7 @@ getJasmineRequireObj().Suite = function(j$) {
/**
* @interface Suite
* @see Env#topSuite
+ * @since 2.0.0
*/
function SuiteMetadata(suite) {
this.suite_ = suite;
@@ -9914,6 +9879,7 @@ getJasmineRequireObj().Suite = function(j$) {
* @name Suite#id
* @readonly
* @type {string}
+ * @since 2.0.0
*/
this.id = suite.id;
@@ -9930,6 +9896,7 @@ getJasmineRequireObj().Suite = function(j$) {
* @name Suite#description
* @readonly
* @type {string}
+ * @since 2.0.0
*/
this.description = suite.description;
}
@@ -9939,6 +9906,7 @@ getJasmineRequireObj().Suite = function(j$) {
* @name Suite#getFullName
* @function
* @returns {string}
+ * @since 2.0.0
*/
SuiteMetadata.prototype.getFullName = function() {
return this.suite_.getFullName();
@@ -9948,6 +9916,7 @@ getJasmineRequireObj().Suite = function(j$) {
* The suite's children.
* @name Suite#children
* @type {Array.<(Spec|Suite)>}
+ * @since 2.0.0
*/
Object.defineProperty(SuiteMetadata.prototype, 'children', {
get: function() {
@@ -10031,7 +10000,7 @@ getJasmineRequireObj().TreeProcessor = function() {
queueableFns: childFns,
userContext: tree.sharedUserContext(),
onException: function() {
- tree.onException.apply(tree, arguments);
+ tree.handleException.apply(tree, arguments);
},
onComplete: done,
onMultipleDone: tree.onMultipleDone
@@ -10207,7 +10176,7 @@ getJasmineRequireObj().TreeProcessor = function() {
queueableFns: [onStart].concat(wrapChildren(node, segmentNumber)),
userContext: node.sharedUserContext(),
onException: function() {
- node.onException.apply(node, arguments);
+ node.handleException.apply(node, arguments);
},
onMultipleDone: node.onMultipleDone
? node.onMultipleDone.bind(node)
@@ -10268,5 +10237,5 @@ getJasmineRequireObj().UserContext = function(j$) {
};
getJasmineRequireObj().version = function() {
- return '4.1.1';
+ return '4.2.0';
};
diff --git a/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css.map b/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css.map
index bb3a00e222..98a38ed488 100644
--- a/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../scss/_custom.scss","../../../../node_modules/bootstrap/scss/bootstrap.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../../node_modules/bootstrap/scss/_type.scss", [...]
+{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../scss/_custom.scss","../../../../node_modules/bootstrap/scss/bootstrap.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../../node_modules/bootstrap/scss/_type.scss", [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.min.css b/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.min.css
index 276a1a9401..a1420d04e4 100644
--- a/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.min.css
+++ b/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.min.css
@@ -1,2 +1,2 @@
@charset "UTF-8";:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#ff00be;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#ffffff;--bs-gray:#777777;--bs-gray-dark:#323232;--bs-gray-100:#f8f9fa;--bs-gray-200:#d0d0d0;--bs-gray-300:#dee2e6;--bs-gray-400:#a0a0a0;--bs-gray-500:#adb5bd;--bs-gray-600:#777777;--bs-gray-700:#495057;--bs-gray-800:#323232;--bs-gray-900:#212529;--bs-primary:#529696;-- [...]
-/*# sourceMappingURL=tobago.min.css.map */
+/*# sourceMappingURL=tobago.min.css.map */
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.min.css.map b/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.min.css.map
index e9f0c3866f..c30d77f1bc 100644
--- a/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.min.css.map
+++ b/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago-theme-charlotteville/src/main/css/tobago.css"],"names":[],"mappings":"iBAuCA,MACE,UAAW,QACX,YAAa,QACb,YAAa,QACb,UAAW,QACX,SAAU,QACV,YAAa,QACb,YAAa,QACb,WAAY,QACZ,UAAW,QACX,UAAW,QACX,WAAY,QACZ,UAAW,QACX,eAAgB,QAChB,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,aAAc,QACd,eAAgB,QAChB,aAAc,QACd,UAAW,QACX,aAAc,QACd,YAAa,QACb,WAAY,QACZ,UAAW,QACX,iBAAkB,EAAE,CAAE,GAAG,CAAE,IAC3B,mBAAoB,GAAG,CAAE,GAAG,CAAE,IAC9B,iBAAkB,G [...]
+{"version":3,"sources":["tobago-theme-charlotteville/src/main/css/tobago.css"],"names":[],"mappings":"iBAuCA,MACE,UAAW,QACX,YAAa,QACb,YAAa,QACb,UAAW,QACX,SAAU,QACV,YAAa,QACb,YAAa,QACb,WAAY,QACZ,UAAW,QACX,UAAW,QACX,WAAY,QACZ,UAAW,QACX,eAAgB,QAChB,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,aAAc,QACd,eAAgB,QAChB,aAAc,QACd,UAAW,QACX,aAAc,QACd,YAAa,QACb,WAAY,QACZ,UAAW,QACX,iBAAkB,EAAE,CAAE,GAAG,CAAE,IAC3B,mBAAoB,GAAG,CAAE,GAAG,CAAE,IAC9B,iBAAkB,G [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css.map b/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css.map
index 76cc70dbed..224d505c64 100644
--- a/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../scss/_custom.scss","../../../../node_modules/bootstrap/scss/bootstrap.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../../node_modules/bootstrap/scss/_type.scss", [...]
+{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../scss/_custom.scss","../../../../node_modules/bootstrap/scss/bootstrap.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../../node_modules/bootstrap/scss/_type.scss", [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.min.css b/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.min.css
index e46bbeaf36..461e78526d 100644
--- a/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.min.css
+++ b/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.min.css
@@ -1,2 +1,2 @@
@charset "UTF-8";@font-face{font-family:Amaranth;font-style:normal;font-weight:400;src:url("../fonts/Amaranth-Regular.otf") format("opentype")}@font-face{font-family:Amaranth;font-style:normal;font-weight:700;src:url("../fonts/Amaranth-Bold.otf") format("opentype")}@font-face{font-family:Amaranth;font-style:italic;src:url("../fonts/Amaranth-Italic.otf") format("opentype")}@font-face{font-family:Amaranth;font-style:italic;font-weight:700;src:url("../fonts/Amaranth-BoldItalic.otf") format( [...]
-/*# sourceMappingURL=tobago.min.css.map */
+/*# sourceMappingURL=tobago.min.css.map */
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.min.css.map b/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.min.css.map
index 9284479f45..443388600f 100644
--- a/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.min.css.map
+++ b/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago-theme-roxborough/src/main/css/tobago.css"],"names":[],"mappings":"iBAiCA,WACE,YAAa,SACb,WAAY,OACZ,YAAa,IACb,IAAK,qCAAqC,mBAE5C,WACE,YAAa,SACb,WAAY,OACZ,YAAa,IACb,IAAK,kCAAkC,mBAEzC,WACE,YAAa,SACb,WAAY,OACZ,IAAK,oCAAoC,mBAE3C,WACE,YAAa,SACb,WAAY,OACZ,YAAa,IACb,IAAK,wCAAwC,mBAE/C,mBACE,YAAa,QAAQ,CAAE,KAAK,CAAE,MAShC,MACE,UAAW,QACX,YAAa,QACb,YAAa,QACb,UAAW,QACX,SAAU,QACV,YAAa,QACb,YAAa,QACb,WAAY,QACZ,UAAW,QACX,UAAW,QACX,WAAY,KACZ,UAAW,QACX,eAAgB,QAChB,cAAe,QA [...]
+{"version":3,"sources":["tobago-theme-roxborough/src/main/css/tobago.css"],"names":[],"mappings":"iBAiCA,WACE,YAAa,SACb,WAAY,OACZ,YAAa,IACb,IAAK,qCAAqC,mBAE5C,WACE,YAAa,SACb,WAAY,OACZ,YAAa,IACb,IAAK,kCAAkC,mBAEzC,WACE,YAAa,SACb,WAAY,OACZ,IAAK,oCAAoC,mBAE3C,WACE,YAAa,SACb,WAAY,OACZ,YAAa,IACb,IAAK,wCAAwC,mBAE/C,mBACE,YAAa,QAAQ,CAAE,KAAK,CAAE,MAShC,MACE,UAAW,QACX,YAAa,QACb,YAAa,QACb,UAAW,QACX,SAAU,QACV,YAAa,QACb,YAAa,QACb,WAAY,QACZ,UAAW,QACX,UAAW,QACX,WAAY,KACZ,UAAW,QACX,eAAgB,QAChB,cAAe,QA [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css.map b/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css.map
index 68760e8830..c88d479ee9 100644
--- a/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../../../../node_modules/bootstrap/scss/bootstrap.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../../node_modules/bootstrap/scss/_type.scss","../../../../node_modul [...]
+{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../../../../node_modules/bootstrap/scss/bootstrap.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../../node_modules/bootstrap/scss/_type.scss","../../../../node_modul [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.min.css b/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.min.css
index 33a2f29e63..1ee1e40c27 100644
--- a/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.min.css
+++ b/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.min.css
@@ -1,2 +1,2 @@
@charset "UTF-8";:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs- [...]
-/*# sourceMappingURL=tobago.min.css.map */
+/*# sourceMappingURL=tobago.min.css.map */
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.min.css.map b/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.min.css.map
index 5836a29199..0c4f757561 100644
--- a/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.min.css.map
+++ b/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago-theme-scarborough/src/main/css/tobago.css"],"names":[],"mappings":"iBAuBA,MACE,UAAW,QACX,YAAa,QACb,YAAa,QACb,UAAW,QACX,SAAU,QACV,YAAa,QACb,YAAa,QACb,WAAY,QACZ,UAAW,QACX,UAAW,QACX,WAAY,KACZ,UAAW,QACX,eAAgB,QAChB,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,aAAc,QACd,eAAgB,QAChB,aAAc,QACd,UAAW,QACX,aAAc,QACd,YAAa,QACb,WAAY,QACZ,UAAW,QACX,iBAAkB,EAAE,CAAE,GAAG,CAAE,IAC3B,mBAAoB,GAAG,CAAE,GAAG,CAAE,IAC9B,iBAAkB,EAAE [...]
+{"version":3,"sources":["tobago-theme-scarborough/src/main/css/tobago.css"],"names":[],"mappings":"iBAuBA,MACE,UAAW,QACX,YAAa,QACb,YAAa,QACb,UAAW,QACX,SAAU,QACV,YAAa,QACb,YAAa,QACb,WAAY,QACZ,UAAW,QACX,UAAW,QACX,WAAY,KACZ,UAAW,QACX,eAAgB,QAChB,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,aAAc,QACd,eAAgB,QAChB,aAAc,QACd,UAAW,QACX,aAAc,QACd,YAAa,QACb,WAAY,QACZ,UAAW,QACX,iBAAkB,EAAE,CAAE,GAAG,CAAE,IAC3B,mBAAoB,GAAG,CAAE,GAAG,CAAE,IAC9B,iBAAkB,EAAE [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css.map b/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css.map
index 756fd3b5f4..78e90bfea7 100644
--- a/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../scss/_custom.scss","../../../../node_modules/bootstrap/scss/bootstrap.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/_type.scss","../../../../node_modules/bootstrap/scss/mixins/_lists.scss","../../. [...]
+{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../scss/_custom.scss","../../../../node_modules/bootstrap/scss/bootstrap.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/_type.scss","../../../../node_modules/bootstrap/scss/mixins/_lists.scss","../../. [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-speyside/src/main/css/tobago.min.css b/tobago-theme/tobago-theme-speyside/src/main/css/tobago.min.css
index b6019b1f98..cffd685aee 100644
--- a/tobago-theme/tobago-theme-speyside/src/main/css/tobago.min.css
+++ b/tobago-theme/tobago-theme-speyside/src/main/css/tobago.min.css
@@ -1,2 +1,2 @@
@charset "UTF-8";:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:rgb(58, 37, 100);--bs-pink:#d63384;--bs-red:rgb(211, 0, 64);--bs-orange:#d90;--bs-yellow:#ffc107;--bs-green:rgb(29, 163, 50);--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:rgb(120, 140, 148);--bs-gray-dark:#323232;--bs-gray-100:#f7f7f7;--bs-gray-200:#e3e4e5;--bs-gray-300:#d7d7d7;--bs-gray-400:#ced4da;--bs-gray-500:#acacac;--bs-gray-600:rgb(120, 140, 148);--bs-gray-700:#55595c;--bs-gray-800:#323232;--b [...]
-/*# sourceMappingURL=tobago.min.css.map */
+/*# sourceMappingURL=tobago.min.css.map */
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-speyside/src/main/css/tobago.min.css.map b/tobago-theme/tobago-theme-speyside/src/main/css/tobago.min.css.map
index f67abe3752..0f0d93128c 100644
--- a/tobago-theme/tobago-theme-speyside/src/main/css/tobago.min.css.map
+++ b/tobago-theme/tobago-theme-speyside/src/main/css/tobago.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago-theme-speyside/src/main/css/tobago.css"],"names":[],"mappings":"iBAuCA,MACE,UAAW,QACX,YAAa,QACb,YAAa,iBACb,UAAW,QACX,SAAU,gBACV,YAAa,KACb,YAAa,QACb,WAAY,iBACZ,UAAW,QACX,UAAW,QACX,WAAY,KACZ,UAAW,mBACX,eAAgB,QAChB,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,mBACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,aAAc,gBACd,eAAgB,QAChB,aAAc,iBACd,UAAW,QACX,aAAc,QACd,YAAa,gBACb,WAAY,QACZ,UAAW,QACX,iBAAkB,EAAE,CAAE,EAAE,CAAE,GAC1B,mBAAoB,GAAG,CAAE,GAAG,CAAE,IAC9B,iBAAkB [...]
+{"version":3,"sources":["tobago-theme-speyside/src/main/css/tobago.css"],"names":[],"mappings":"iBAuCA,MACE,UAAW,QACX,YAAa,QACb,YAAa,iBACb,UAAW,QACX,SAAU,gBACV,YAAa,KACb,YAAa,QACb,WAAY,iBACZ,UAAW,QACX,UAAW,QACX,WAAY,KACZ,UAAW,mBACX,eAAgB,QAChB,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,mBACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,aAAc,gBACd,eAAgB,QAChB,aAAc,iBACd,UAAW,QACX,aAAc,QACd,YAAa,gBACb,WAAY,QACZ,UAAW,QACX,iBAAkB,EAAE,CAAE,EAAE,CAAE,GAC1B,mBAAoB,GAAG,CAAE,GAAG,CAAE,IAC9B,iBAAkB [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-standard/src/main/css/tobago.css.map b/tobago-theme/tobago-theme-standard/src/main/css/tobago.css.map
index 7ea8ed1b2d..7c7a9b8ce7 100644
--- a/tobago-theme/tobago-theme-standard/src/main/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-standard/src/main/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../../../../node_modules/bootstrap/scss/bootstrap.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../../node_modules/bootstrap/scss/_type.scss","../../../../node_modul [...]
+{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../../../../node_modules/bootstrap/scss/bootstrap.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../../node_modules/bootstrap/scss/_type.scss","../../../../node_modul [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-standard/src/main/css/tobago.min.css b/tobago-theme/tobago-theme-standard/src/main/css/tobago.min.css
index 7d983bc146..ad6966ac1d 100644
--- a/tobago-theme/tobago-theme-standard/src/main/css/tobago.min.css
+++ b/tobago-theme/tobago-theme-standard/src/main/css/tobago.min.css
@@ -1,2 +1,2 @@
@charset "UTF-8";:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs- [...]
-/*# sourceMappingURL=tobago.min.css.map */
+/*# sourceMappingURL=tobago.min.css.map */
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-standard/src/main/css/tobago.min.css.map b/tobago-theme/tobago-theme-standard/src/main/css/tobago.min.css.map
index ac9a30d67c..acca25c31a 100644
--- a/tobago-theme/tobago-theme-standard/src/main/css/tobago.min.css.map
+++ b/tobago-theme/tobago-theme-standard/src/main/css/tobago.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago-theme-standard/src/main/css/tobago.css"],"names":[],"mappings":"iBAuBA,MACE,UAAW,QACX,YAAa,QACb,YAAa,QACb,UAAW,QACX,SAAU,QACV,YAAa,QACb,YAAa,QACb,WAAY,QACZ,UAAW,QACX,UAAW,QACX,WAAY,KACZ,UAAW,QACX,eAAgB,QAChB,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,aAAc,QACd,eAAgB,QAChB,aAAc,QACd,UAAW,QACX,aAAc,QACd,YAAa,QACb,WAAY,QACZ,UAAW,QACX,iBAAkB,EAAE,CAAE,GAAG,CAAE,IAC3B,mBAAoB,GAAG,CAAE,GAAG,CAAE,IAC9B,iBAAkB,EAAE,CA [...]
+{"version":3,"sources":["tobago-theme-standard/src/main/css/tobago.css"],"names":[],"mappings":"iBAuBA,MACE,UAAW,QACX,YAAa,QACb,YAAa,QACb,UAAW,QACX,SAAU,QACV,YAAa,QACb,YAAa,QACb,WAAY,QACZ,UAAW,QACX,UAAW,QACX,WAAY,KACZ,UAAW,QACX,eAAgB,QAChB,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,aAAc,QACd,eAAgB,QAChB,aAAc,QACd,UAAW,QACX,aAAc,QACd,YAAa,QACb,WAAY,QACZ,UAAW,QACX,iBAAkB,EAAE,CAAE,GAAG,CAAE,IAC3B,mBAAoB,GAAG,CAAE,GAAG,CAAE,IAC9B,iBAAkB,EAAE,CA [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-standard/src/main/js/tobago.js.map b/tobago-theme/tobago-theme-standard/src/main/js/tobago.js.map
index c4d7010926..3b2000d3e9 100644
--- a/tobago-theme/tobago-theme-standard/src/main/js/tobago.js.map
+++ b/tobago-theme/tobago-theme-standard/src/main/js/tobago.js.map
@@ -1 +1 @@
-{"version":3,"file":"tobago.js","sources":["../ts/tobago-bar.ts","../../../../node_modules/@popperjs/core/lib/enums.js","../../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../../node_m [...]
\ No newline at end of file
+{"version":3,"file":"tobago.js","sources":["../ts/tobago-bar.ts","../../../../node_modules/@popperjs/core/lib/enums.js","../../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../../node_m [...]
\ No newline at end of file