@openui5/sap.ui.core
Version:
OpenUI5 Core Library sap.ui.core
78 lines (70 loc) • 2.05 kB
JavaScript
/*!
* OpenUI5
* (c) Copyright 2026 SAP SE or an SAP affiliate company.
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
*/
sap.ui.define([
'sap/ui/thirdparty/URI',
'sap/base/util/isPlainObject'
], function(URI, isPlainObject) {
"use strict";
function resolveStackTrace() {
var oError = new Error();
var sStack = "No stack trace available";
var oUriParams = new URI().search(true);
var bForceResolveStackTrace = ["false", undefined].indexOf(oUriParams.opaFrameIEStackTrace) < 0;
if (oError.stack) {
sStack = oError.stack;
} else if (bForceResolveStackTrace) {
// in IE11 the stack is not yet available on error construction
// error throwing is too expensive in IE11 so skip it
// unless explicitly requested with opaFrameIEStackTrace URI parameter
try {
throw oError;
} catch (err) {
sStack = err.stack;
}
}
return sStack.replace(/^Error\s/, "");
}
function functionToString(fn) {
return "'" + fn.toString().replace(/\"/g, '\'') + "'";
}
function argumentsToString(oArgs) {
try {
return Array.prototype.map.call(oArgs, argToString).join("; ");
} catch (e) {
// IE 11 TypeError workaround: some objects cannot be safely stringified
return "'" + oArgs + "'";
}
function argToString(arg) {
if (typeof arg === "function") {
return functionToString(arg);
}
if (Array.isArray(arg)) {
var aValues = Array.prototype.map.call(arg, argToString);
return "[" + aValues.join(", ") + "]";
}
if (isPlainObject(arg)) {
return JSON.stringify(arg);
}
return "'" + arg.toString() + "'";
}
}
function onElementAvailable (sSelector, fnCallback) {
var oElement = document.querySelector(sSelector);
if (oElement) {
fnCallback(oElement);
} else {
setTimeout(function () {
onElementAvailable(sSelector, fnCallback);
}, 100);
}
}
return {
resolveStackTrace: resolveStackTrace,
functionToString: functionToString,
argumentsToString: argumentsToString,
onElementAvailable: onElementAvailable
};
}, true);