@sapui5/sap.fe.test 1.112.0 → 1.114.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/test/.library +1 -1
- package/src/sap/fe/test/JestTemplatingHelper.js +62 -7
- package/src/sap/fe/test/JestTemplatingHelper.ts +62 -10
- package/src/sap/fe/test/api/FormAPI.js +5 -12
- package/src/sap/fe/test/api/HeaderAssertions.js +18 -0
- package/src/sap/fe/test/api/TableAssertions.js +1 -4
- package/src/sap/fe/test/builder/MdcTableBuilder.js +2 -2
- package/src/sap/fe/test/internal/ConsoleErrorChecker.js +2 -4
- package/src/sap/fe/test/internal/ConsoleErrorChecker.ts +1 -2
- package/src/sap/fe/test/library-preload.js +90 -29
- package/src/sap/fe/test/library-preload.js.map +1 -1
- package/src/sap/fe/test/library.js +1 -1
- package/src/sap/fe/test/manifest.json +1 -1
|
@@ -16,9 +16,7 @@ sap.ui.define([], function () {
|
|
|
16
16
|
/**
|
|
17
17
|
* List of error message patterns that are always accepted.
|
|
18
18
|
*/
|
|
19
|
-
const GLOBALLY_ACCEPTED_ERRORS = ["failed to load JavaScript resource: sap/esh/search/ui/i18n.js"
|
|
20
|
-
// shell
|
|
21
|
-
"Custom attributes are not exist" // accept console error temporarily - remove as soon as unified shell ticket is resolved
|
|
19
|
+
const GLOBALLY_ACCEPTED_ERRORS = ["failed to load JavaScript resource: sap/esh/search/ui/i18n.js" // shell
|
|
22
20
|
].map(wrapPatterns);
|
|
23
21
|
let ConsoleErrorChecker = /*#__PURE__*/function () {
|
|
24
22
|
function ConsoleErrorChecker(window) {
|
|
@@ -193,4 +191,4 @@ sap.ui.define([], function () {
|
|
|
193
191
|
}();
|
|
194
192
|
return ConsoleErrorChecker.getInstance(window);
|
|
195
193
|
}, false);
|
|
196
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3cmFwUGF0dGVybnMiLCJwYXR0ZXJuIiwiUmVnRXhwIiwibWVzc2FnZSIsIm1hdGNoIiwiaW5jbHVkZXMiLCJHTE9CQUxMWV9BQ0NFUFRFRF9FUlJPUlMiLCJtYXAiLCJDb25zb2xlRXJyb3JDaGVja2VyIiwid2luZG93IiwibWF0Y2hlcnMiLCJtZXNzYWdlcyIsIm9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9ucyIsIm9wYUZyYW1lIiwicmVkdWNlIiwiaUZyYW1lIiwibXV0YXRpb24iLCJub2RlIiwiQXJyYXkiLCJmcm9tIiwiYWRkZWROb2RlcyIsIkVsZW1lbnQiLCJlbGVtZW50IiwicXVlcnlTZWxlY3RvciIsIkhUTUxJRnJhbWVFbGVtZW50IiwiY29udGVudFdpbmRvdyIsInByZXBhcmVXaW5kb3ciLCJRVW5pdCIsIm1vZHVsZVN0YXJ0Iiwib2JzZXJ2ZSIsImRvY3VtZW50IiwiYm9keSIsImNoaWxkTGlzdCIsIm1vZHVsZURvbmUiLCJkaXNjb25uZWN0IiwidGVzdFN0YXJ0IiwicmVzZXQiLCJsb2ciLCJoYW5kbGVGYWlsZWRNZXNzYWdlcyIsImthcm1hIiwiX19rYXJtYV9fIiwic2VhcmNoIiwiVVJMU2VhcmNoUGFyYW1zIiwibG9jYXRpb24iLCJ1cmxQYXJhbSIsImdldCIsImlzU3RyaWN0IiwiY29uZmlnIiwidWk1Iiwic3RyaWN0Y29uc29sZWVycm9ycyIsImZhaWxlZE1lc3NhZ2VzIiwibGVuZ3RoIiwiYXNzZXJ0IiwicHVzaFJlc3VsdCIsInJlc3VsdCIsInNvdXJjZSIsImFjdHVhbCIsImV4cGVjdGVkIiwic2V0QWNjZXB0ZWRFcnJvclBhdHRlcm5zIiwicGF0dGVybnMiLCJjb25jYXQiLCJjaGVja0FuZExvZyIsInR5cGUiLCJkYXRhIiwibWVzc2FnZVRleHQiLCJpc0FsbG93ZWQiLCJzb21lIiwibWF0Y2hlciIsInB1c2giLCJ3cmFwcGVkRGF0YSIsImQiLCJjb25zb2xlIiwicGF0Y2hDb25zb2xlTWV0aG9kIiwibWV0aG9kIiwiZm5PcmlnaW5hbCIsImFwcGx5IiwiY29uZGl0aW9uIiwiZmlyc3QiLCJ1bnNoaWZ0IiwiZXJyb3IiLCJvblByb21pc2VSZWplY3Rpb24iLCJldmVudCIsInJlYXNvbiIsInN0YWNrIiwib25FcnJvciIsImZpbGVuYW1lIiwiYWRkRXZlbnRMaXN0ZW5lciIsImJpbmQiLCJwYXNzaXZlIiwiZ2V0SW5zdGFuY2UiLCJzYXBGRUNvbnNvbGVFcnJvckNoZWNrZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkNvbnNvbGVFcnJvckNoZWNrZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCcm93c2VyQ29uc29sZUxvZ09wdGlvbnMgfSBmcm9tIFwia2FybWFcIjtcblxudHlwZSBNZXNzYWdlTWF0Y2hlckZ1bmN0aW9uID0gKG1lc3NhZ2U6IHN0cmluZykgPT4gYm9vbGVhbjtcbnR5cGUgS2FybWEgPSB7XG5cdGxvZzogKGxldmVsOiBCcm93c2VyQ29uc29sZUxvZ09wdGlvbnNbXCJsZXZlbFwiXSwgLi4uZGF0YTogYW55W10pID0+IHZvaWQ7XG5cdGNvbmZpZzoge1xuXHRcdHVpNT86IHtcblx0XHRcdGNvbmZpZzoge1xuXHRcdFx0XHRzdHJpY3Rjb25zb2xlZXJyb3JzPzogYm9vbGVhbjsgLy8gS2FybWEgb3B0aW9ucyBhcmUgYWxsIGxvd2VyY2FzZSBhdCBydW50aW1lIVxuXHRcdFx0fTtcblx0XHR9O1xuXHR9O1xufTtcblxuZnVuY3Rpb24gd3JhcFBhdHRlcm5zKHBhdHRlcm46IFJlZ0V4cCB8IHN0cmluZyk6IE1lc3NhZ2VNYXRjaGVyRnVuY3Rpb24ge1xuXHRpZiAocGF0dGVybiBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuXHRcdHJldHVybiAobWVzc2FnZSkgPT4gbWVzc2FnZS5tYXRjaChwYXR0ZXJuKSAhPT0gbnVsbDtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gKG1lc3NhZ2UpID0+IG1lc3NhZ2UuaW5jbHVkZXMocGF0dGVybik7XG5cdH1cbn1cblxuLyoqXG4gKiBMaXN0IG9mIGVycm9yIG1lc3NhZ2UgcGF0dGVybnMgdGhhdCBhcmUgYWx3YXlzIGFjY2VwdGVkLlxuICovXG5jb25zdCBHTE9CQUxMWV9BQ0NFUFRFRF9FUlJPUlMgPSBbXG5cdFwiZmFpbGVkIHRvIGxvYWQgSmF2YVNjcmlwdCByZXNvdXJjZTogc2FwL2VzaC9zZWFyY2gvdWkvaTE4bi5qc1wiLCAvLyBzaGVsbFxuXHRcIkN1c3RvbSBhdHRyaWJ1dGVzIGFyZSBub3QgZXhpc3RcIiAvLyBhY2NlcHQgY29uc29sZSBlcnJvciB0ZW1wb3JhcmlseSAtIHJlbW92ZSBhcyBzb29uIGFzIHVuaWZpZWQgc2hlbGwgdGlja2V0IGlzIHJlc29sdmVkXG5dLm1hcCh3cmFwUGF0dGVybnMpO1xuXG5jbGFzcyBDb25zb2xlRXJyb3JDaGVja2VyIHtcblx0cHJpdmF0ZSBtYXRjaGVyczogTWVzc2FnZU1hdGNoZXJGdW5jdGlvbltdID0gW107XG5cblx0cHJpdmF0ZSBtZXNzYWdlczogc3RyaW5nW10gPSBbXTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IGthcm1hOiBLYXJtYSB8IHVuZGVmaW5lZDtcblxuXHRwcml2YXRlIHJlYWRvbmx5IGlzU3RyaWN0OiBib29sZWFuO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG5cdFx0Y29uc3Qgb3BhRnJhbWUgPSBtdXRhdGlvbnMucmVkdWNlKChpRnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50IHwgbnVsbCwgbXV0YXRpb246IE11dGF0aW9uUmVjb3JkKSA9PiB7XG5cdFx0XHRpZiAoaUZyYW1lICE9PSBudWxsKSB7XG5cdFx0XHRcdHJldHVybiBpRnJhbWU7XG5cdFx0XHR9XG5cblx0XHRcdGZvciAoY29uc3Qgbm9kZSBvZiBBcnJheS5mcm9tKG11dGF0aW9uLmFkZGVkTm9kZXMpKSB7XG5cdFx0XHRcdGlmIChub2RlIGluc3RhbmNlb2YgRWxlbWVudCkge1xuXHRcdFx0XHRcdGNvbnN0IGVsZW1lbnQgPSBub2RlLnF1ZXJ5U2VsZWN0b3IoXCIjT3BhRnJhbWVcIik7XG5cdFx0XHRcdFx0aWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MSUZyYW1lRWxlbWVudCAmJiBlbGVtZW50LmNvbnRlbnRXaW5kb3cpIHtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtZW50O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gaUZyYW1lO1xuXHRcdH0sIG51bGwpO1xuXG5cdFx0aWYgKG9wYUZyYW1lICYmIG9wYUZyYW1lLmNvbnRlbnRXaW5kb3cpIHtcblx0XHRcdHRoaXMucHJlcGFyZVdpbmRvdyhvcGFGcmFtZS5jb250ZW50V2luZG93KTtcblx0XHR9XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKHdpbmRvdzogV2luZG93ICYgeyBfX2thcm1hX18/OiBLYXJtYSB9KSB7XG5cdFx0UVVuaXQubW9kdWxlU3RhcnQoKCkgPT4ge1xuXHRcdFx0dGhpcy5vYnNlcnZlci5vYnNlcnZlKHdpbmRvdy5kb2N1bWVudC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTtcblx0XHR9KTtcblxuXHRcdFFVbml0Lm1vZHVsZURvbmUoKCkgPT4ge1xuXHRcdFx0dGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCk7XG5cdFx0fSk7XG5cblx0XHRRVW5pdC50ZXN0U3RhcnQoKCkgPT4ge1xuXHRcdFx0dGhpcy5yZXNldCgpO1xuXHRcdH0pO1xuXG5cdFx0UVVuaXQubG9nKCgpID0+IHtcblx0XHRcdHRoaXMuaGFuZGxlRmFpbGVkTWVzc2FnZXMoKTtcblx0XHR9KTtcblxuXHRcdHRoaXMua2FybWEgPSB3aW5kb3cuX19rYXJtYV9fO1xuXG5cdFx0Ly8gZWl0aGVyIGdvIGZvciBLYXJtYSBjb25maWcgb3B0aW9uIFwidWk1LmNvbmZpZy5zdHJpY3RDb25zb2xlRXJyb3JzXCIgb3IgdXNlIFVSTCBxdWVyeSBwYXJhbWV0ZXIgXCJzdHJpY3RcIlxuXHRcdGNvbnN0IHNlYXJjaCA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG5cdFx0Y29uc3QgdXJsUGFyYW0gPSBzZWFyY2guZ2V0KFwic3RyaWN0Q29uc29sZUVycm9yc1wiKTtcblx0XHRpZiAodXJsUGFyYW0gIT09IG51bGwpIHtcblx0XHRcdHRoaXMuaXNTdHJpY3QgPSB1cmxQYXJhbSA9PT0gXCJ0cnVlXCI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuaXNTdHJpY3QgPSB0aGlzLmthcm1hPy5jb25maWcudWk1Py5jb25maWcuc3RyaWN0Y29uc29sZWVycm9ycyA/PyBmYWxzZTtcblx0XHR9XG5cblx0XHR0aGlzLnJlc2V0KCk7XG5cdH1cblxuXHRwcml2YXRlIGhhbmRsZUZhaWxlZE1lc3NhZ2VzKCkge1xuXHRcdGNvbnN0IGZhaWxlZE1lc3NhZ2VzID0gdGhpcy5tZXNzYWdlcztcblx0XHR0aGlzLm1lc3NhZ2VzID0gW107XG5cblx0XHRpZiAoZmFpbGVkTWVzc2FnZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0UVVuaXQuYXNzZXJ0LnB1c2hSZXN1bHQoe1xuXHRcdFx0XHRyZXN1bHQ6IGZhbHNlLFxuXHRcdFx0XHRzb3VyY2U6IFwiRkUgQ29uc29sZSBMb2cgQ2hlY2tcIixcblx0XHRcdFx0bWVzc2FnZTogYFRoZXJlIHdlcmUgJHtmYWlsZWRNZXNzYWdlcy5sZW5ndGh9IHVuZXhwZWN0ZWQgY29uc29sZSBlcnJvcnNgLFxuXHRcdFx0XHRhY3R1YWw6IGZhaWxlZE1lc3NhZ2VzLFxuXHRcdFx0XHRleHBlY3RlZDogW11cblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgcmVzZXQoKSB7XG5cdFx0dGhpcy5tZXNzYWdlcyA9IFtdO1xuXG5cdFx0Ly8gdGhpcyBzZXRzIHRoZSBkZWZhdWx0IHRvIGFwcGx5IGlmIG5vIGFsbG93ZWQgcGF0dGVybnMgYXJlIHNldCB2aWEgc2V0QWNjZXB0ZWRFcnJvclBhdHRlcm5zKCkuXG5cdFx0aWYgKHRoaXMuaXNTdHJpY3QpIHtcblx0XHRcdHRoaXMubWF0Y2hlcnMgPSBHTE9CQUxMWV9BQ0NFUFRFRF9FUlJPUlM7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMubWF0Y2hlcnMgPSBbKCkgPT4gdHJ1ZV07XG5cdFx0fVxuXHR9XG5cblx0c2V0QWNjZXB0ZWRFcnJvclBhdHRlcm5zKHBhdHRlcm5zPzogKFJlZ0V4cCB8IHN0cmluZylbXSkge1xuXHRcdGlmICghcGF0dGVybnMgfHwgcGF0dGVybnMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHR0aGlzLm1hdGNoZXJzID0gR0xPQkFMTFlfQUNDRVBURURfRVJST1JTO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm1hdGNoZXJzID0gcGF0dGVybnMubWFwKHdyYXBQYXR0ZXJucykuY29uY2F0KEdMT0JBTExZX0FDQ0VQVEVEX0VSUk9SUyk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBjaGVja0FuZExvZyh0eXBlOiBCcm93c2VyQ29uc29sZUxvZ09wdGlvbnNbXCJsZXZlbFwiXSwgLi4uZGF0YTogYW55W10pIHtcblx0XHQvLyBvbmx5IGNoZWNrIHRoZSBlcnJvciBtZXNzYWdlc1xuXHRcdGlmICh0eXBlID09PSBcImVycm9yXCIpIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2VUZXh0ID0gZGF0YVswXTtcblx0XHRcdGNvbnN0IGlzQWxsb3dlZCA9IHRoaXMubWF0Y2hlcnMuc29tZSgobWF0Y2hlcikgPT4gbWF0Y2hlcihtZXNzYWdlVGV4dCkpO1xuXHRcdFx0aWYgKCFpc0FsbG93ZWQpIHtcblx0XHRcdFx0dGhpcy5tZXNzYWdlcy5wdXNoKG1lc3NhZ2VUZXh0KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAodGhpcy5rYXJtYSkge1xuXHRcdFx0Ly8gd3JhcCB0aGUgZGF0YSB0byBmYWNpbGl0YXRlIHBhcnNpbmcgaW4gdGhlIGJhY2tlbmRcblx0XHRcdGNvbnN0IHdyYXBwZWREYXRhID0gZGF0YS5tYXAoKGQpID0+IFtkXSk7XG5cdFx0XHR0aGlzLmthcm1hLmxvZyh0eXBlLCB3cmFwcGVkRGF0YSk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBwcmVwYXJlV2luZG93KHdpbmRvdzogV2luZG93KSB7XG5cdFx0Y29uc3QgY29uc29sZTogQ29uc29sZSA9ICh3aW5kb3cgYXMgYW55KS5jb25zb2xlO1xuXG5cdFx0Ly8gY2FwdHVyZSBjb25zb2xlLmxvZygpLCBjb25zb2xlLmRlYnVnKCksIGV0Yy5cblx0XHRjb25zdCBwYXRjaENvbnNvbGVNZXRob2QgPSAobWV0aG9kOiBcImxvZ1wiIHwgXCJpbmZvXCIgfCBcIndhcm5cIiB8IFwiZXJyb3JcIiB8IFwiZGVidWdcIikgPT4ge1xuXHRcdFx0Y29uc3QgZm5PcmlnaW5hbCA9IGNvbnNvbGVbbWV0aG9kXTtcblx0XHRcdGNvbnNvbGVbbWV0aG9kXSA9ICguLi5kYXRhOiBhbnlbXSk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLmNoZWNrQW5kTG9nKG1ldGhvZCwgLi4uZGF0YSk7XG5cdFx0XHRcdHJldHVybiBmbk9yaWdpbmFsLmFwcGx5KGNvbnNvbGUsIGRhdGEpO1xuXHRcdFx0fTtcblx0XHR9O1xuXG5cdFx0cGF0Y2hDb25zb2xlTWV0aG9kKFwibG9nXCIpO1xuXHRcdHBhdGNoQ29uc29sZU1ldGhvZChcImRlYnVnXCIpO1xuXHRcdHBhdGNoQ29uc29sZU1ldGhvZChcImluZm9cIik7XG5cdFx0cGF0Y2hDb25zb2xlTWV0aG9kKFwid2FyblwiKTtcblx0XHRwYXRjaENvbnNvbGVNZXRob2QoXCJlcnJvclwiKTtcblxuXHRcdC8vIGNhcHR1cmUgY29uc29sZS5hc3NlcnQoKVxuXHRcdC8vIHNlZSBodHRwczovL2NvbnNvbGUuc3BlYy53aGF0d2cub3JnLyNhc3NlcnRcblx0XHRjb25zb2xlLmFzc2VydCA9IGZ1bmN0aW9uIChjb25kaXRpb24gPSBmYWxzZSwgLi4uZGF0YTogYW55W10pIHtcblx0XHRcdGlmIChjb25kaXRpb24pIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBtZXNzYWdlID0gXCJBc3NlcnRpb24gZmFpbGVkXCI7XG5cdFx0XHRpZiAoZGF0YS5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0ZGF0YS5wdXNoKG1lc3NhZ2UpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bGV0IGZpcnN0ID0gZGF0YVswXTtcblx0XHRcdFx0aWYgKHR5cGVvZiBmaXJzdCAhPT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdGRhdGEudW5zaGlmdChtZXNzYWdlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRmaXJzdCA9IGAke21lc3NhZ2V9OiAke2ZpcnN0fWA7XG5cdFx0XHRcdFx0ZGF0YVswXSA9IGZpcnN0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGNvbnNvbGUuZXJyb3IoLi4uZGF0YSk7XG5cdFx0fTtcblxuXHRcdC8vIGNhcHR1cmUgZXJyb3JzXG5cdFx0ZnVuY3Rpb24gb25Qcm9taXNlUmVqZWN0aW9uKHRoaXM6IENvbnNvbGVFcnJvckNoZWNrZXIsIGV2ZW50OiBQcm9taXNlUmVqZWN0aW9uRXZlbnQpIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBgVU5IQU5ETEVEIFBST01JU0UgUkVKRUNUSU9OOiAke2V2ZW50LnJlYXNvbn1gO1xuXHRcdFx0dGhpcy5jaGVja0FuZExvZyhcImVycm9yXCIsIG1lc3NhZ2UsIGV2ZW50LnJlYXNvbj8uc3RhY2spO1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIG9uRXJyb3IodGhpczogQ29uc29sZUVycm9yQ2hlY2tlciwgZXZlbnQ6IEVycm9yRXZlbnQpIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBldmVudC5tZXNzYWdlO1xuXHRcdFx0dGhpcy5jaGVja0FuZExvZyhcImVycm9yXCIsIG1lc3NhZ2UsIGV2ZW50LmZpbGVuYW1lKTtcblx0XHR9XG5cblx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIG9uRXJyb3IuYmluZCh0aGlzKSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidW5oYW5kbGVkcmVqZWN0aW9uXCIsIG9uUHJvbWlzZVJlamVjdGlvbi5iaW5kKHRoaXMpLCB7IHBhc3NpdmU6IHRydWUgfSk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0SW5zdGFuY2Uod2luZG93OiBXaW5kb3cgJiB7IHNhcEZFQ29uc29sZUVycm9yQ2hlY2tlcj86IENvbnNvbGVFcnJvckNoZWNrZXIgfSk6IENvbnNvbGVFcnJvckNoZWNrZXIge1xuXHRcdC8vIHRoZSBnbG9iYWwgaW5zdGFuY2UgaXMgbmVlZGVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgdGVzdHMgaW4gYSByb3cgKGluIEthcm1hKVxuXHRcdGlmICghd2luZG93LnNhcEZFQ29uc29sZUVycm9yQ2hlY2tlcikge1xuXHRcdFx0d2luZG93LnNhcEZFQ29uc29sZUVycm9yQ2hlY2tlciA9IG5ldyBDb25zb2xlRXJyb3JDaGVja2VyKHdpbmRvdyk7XG5cdFx0fVxuXHRcdHJldHVybiB3aW5kb3cuc2FwRkVDb25zb2xlRXJyb3JDaGVja2VyO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbnNvbGVFcnJvckNoZWNrZXIuZ2V0SW5zdGFuY2Uod2luZG93KTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7OztFQWNBLFNBQVNBLFlBQVksQ0FBQ0MsT0FBd0IsRUFBMEI7SUFDdkUsSUFBSUEsT0FBTyxZQUFZQyxNQUFNLEVBQUU7TUFDOUIsT0FBUUMsT0FBTyxJQUFLQSxPQUFPLENBQUNDLEtBQUssQ0FBQ0gsT0FBTyxDQUFDLEtBQUssSUFBSTtJQUNwRCxDQUFDLE1BQU07TUFDTixPQUFRRSxPQUFPLElBQUtBLE9BQU8sQ0FBQ0UsUUFBUSxDQUFDSixPQUFPLENBQUM7SUFDOUM7RUFDRDs7RUFFQTtBQUNBO0FBQ0E7RUFDQSxNQUFNSyx3QkFBd0IsR0FBRyxDQUNoQywrREFBK0Q7RUFBRTtFQUNqRSxpQ0FBaUMsQ0FBQztFQUFBLENBQ2xDLENBQUNDLEdBQUcsQ0FBQ1AsWUFBWSxDQUFDO0VBQUMsSUFFZFEsbUJBQW1CO0lBZ0N4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
|
|
194
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3cmFwUGF0dGVybnMiLCJwYXR0ZXJuIiwiUmVnRXhwIiwibWVzc2FnZSIsIm1hdGNoIiwiaW5jbHVkZXMiLCJHTE9CQUxMWV9BQ0NFUFRFRF9FUlJPUlMiLCJtYXAiLCJDb25zb2xlRXJyb3JDaGVja2VyIiwid2luZG93IiwibWF0Y2hlcnMiLCJtZXNzYWdlcyIsIm9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9ucyIsIm9wYUZyYW1lIiwicmVkdWNlIiwiaUZyYW1lIiwibXV0YXRpb24iLCJub2RlIiwiQXJyYXkiLCJmcm9tIiwiYWRkZWROb2RlcyIsIkVsZW1lbnQiLCJlbGVtZW50IiwicXVlcnlTZWxlY3RvciIsIkhUTUxJRnJhbWVFbGVtZW50IiwiY29udGVudFdpbmRvdyIsInByZXBhcmVXaW5kb3ciLCJRVW5pdCIsIm1vZHVsZVN0YXJ0Iiwib2JzZXJ2ZSIsImRvY3VtZW50IiwiYm9keSIsImNoaWxkTGlzdCIsIm1vZHVsZURvbmUiLCJkaXNjb25uZWN0IiwidGVzdFN0YXJ0IiwicmVzZXQiLCJsb2ciLCJoYW5kbGVGYWlsZWRNZXNzYWdlcyIsImthcm1hIiwiX19rYXJtYV9fIiwic2VhcmNoIiwiVVJMU2VhcmNoUGFyYW1zIiwibG9jYXRpb24iLCJ1cmxQYXJhbSIsImdldCIsImlzU3RyaWN0IiwiY29uZmlnIiwidWk1Iiwic3RyaWN0Y29uc29sZWVycm9ycyIsImZhaWxlZE1lc3NhZ2VzIiwibGVuZ3RoIiwiYXNzZXJ0IiwicHVzaFJlc3VsdCIsInJlc3VsdCIsInNvdXJjZSIsImFjdHVhbCIsImV4cGVjdGVkIiwic2V0QWNjZXB0ZWRFcnJvclBhdHRlcm5zIiwicGF0dGVybnMiLCJjb25jYXQiLCJjaGVja0FuZExvZyIsInR5cGUiLCJkYXRhIiwibWVzc2FnZVRleHQiLCJpc0FsbG93ZWQiLCJzb21lIiwibWF0Y2hlciIsInB1c2giLCJ3cmFwcGVkRGF0YSIsImQiLCJjb25zb2xlIiwicGF0Y2hDb25zb2xlTWV0aG9kIiwibWV0aG9kIiwiZm5PcmlnaW5hbCIsImFwcGx5IiwiY29uZGl0aW9uIiwiZmlyc3QiLCJ1bnNoaWZ0IiwiZXJyb3IiLCJvblByb21pc2VSZWplY3Rpb24iLCJldmVudCIsInJlYXNvbiIsInN0YWNrIiwib25FcnJvciIsImZpbGVuYW1lIiwiYWRkRXZlbnRMaXN0ZW5lciIsImJpbmQiLCJwYXNzaXZlIiwiZ2V0SW5zdGFuY2UiLCJzYXBGRUNvbnNvbGVFcnJvckNoZWNrZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkNvbnNvbGVFcnJvckNoZWNrZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCcm93c2VyQ29uc29sZUxvZ09wdGlvbnMgfSBmcm9tIFwia2FybWFcIjtcblxudHlwZSBNZXNzYWdlTWF0Y2hlckZ1bmN0aW9uID0gKG1lc3NhZ2U6IHN0cmluZykgPT4gYm9vbGVhbjtcbnR5cGUgS2FybWEgPSB7XG5cdGxvZzogKGxldmVsOiBCcm93c2VyQ29uc29sZUxvZ09wdGlvbnNbXCJsZXZlbFwiXSwgLi4uZGF0YTogYW55W10pID0+IHZvaWQ7XG5cdGNvbmZpZzoge1xuXHRcdHVpNT86IHtcblx0XHRcdGNvbmZpZzoge1xuXHRcdFx0XHRzdHJpY3Rjb25zb2xlZXJyb3JzPzogYm9vbGVhbjsgLy8gS2FybWEgb3B0aW9ucyBhcmUgYWxsIGxvd2VyY2FzZSBhdCBydW50aW1lIVxuXHRcdFx0fTtcblx0XHR9O1xuXHR9O1xufTtcblxuZnVuY3Rpb24gd3JhcFBhdHRlcm5zKHBhdHRlcm46IFJlZ0V4cCB8IHN0cmluZyk6IE1lc3NhZ2VNYXRjaGVyRnVuY3Rpb24ge1xuXHRpZiAocGF0dGVybiBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuXHRcdHJldHVybiAobWVzc2FnZSkgPT4gbWVzc2FnZS5tYXRjaChwYXR0ZXJuKSAhPT0gbnVsbDtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gKG1lc3NhZ2UpID0+IG1lc3NhZ2UuaW5jbHVkZXMocGF0dGVybik7XG5cdH1cbn1cblxuLyoqXG4gKiBMaXN0IG9mIGVycm9yIG1lc3NhZ2UgcGF0dGVybnMgdGhhdCBhcmUgYWx3YXlzIGFjY2VwdGVkLlxuICovXG5jb25zdCBHTE9CQUxMWV9BQ0NFUFRFRF9FUlJPUlMgPSBbXG5cdFwiZmFpbGVkIHRvIGxvYWQgSmF2YVNjcmlwdCByZXNvdXJjZTogc2FwL2VzaC9zZWFyY2gvdWkvaTE4bi5qc1wiIC8vIHNoZWxsXG5dLm1hcCh3cmFwUGF0dGVybnMpO1xuXG5jbGFzcyBDb25zb2xlRXJyb3JDaGVja2VyIHtcblx0cHJpdmF0ZSBtYXRjaGVyczogTWVzc2FnZU1hdGNoZXJGdW5jdGlvbltdID0gW107XG5cblx0cHJpdmF0ZSBtZXNzYWdlczogc3RyaW5nW10gPSBbXTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IGthcm1hOiBLYXJtYSB8IHVuZGVmaW5lZDtcblxuXHRwcml2YXRlIHJlYWRvbmx5IGlzU3RyaWN0OiBib29sZWFuO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG5cdFx0Y29uc3Qgb3BhRnJhbWUgPSBtdXRhdGlvbnMucmVkdWNlKChpRnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50IHwgbnVsbCwgbXV0YXRpb246IE11dGF0aW9uUmVjb3JkKSA9PiB7XG5cdFx0XHRpZiAoaUZyYW1lICE9PSBudWxsKSB7XG5cdFx0XHRcdHJldHVybiBpRnJhbWU7XG5cdFx0XHR9XG5cblx0XHRcdGZvciAoY29uc3Qgbm9kZSBvZiBBcnJheS5mcm9tKG11dGF0aW9uLmFkZGVkTm9kZXMpKSB7XG5cdFx0XHRcdGlmIChub2RlIGluc3RhbmNlb2YgRWxlbWVudCkge1xuXHRcdFx0XHRcdGNvbnN0IGVsZW1lbnQgPSBub2RlLnF1ZXJ5U2VsZWN0b3IoXCIjT3BhRnJhbWVcIik7XG5cdFx0XHRcdFx0aWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MSUZyYW1lRWxlbWVudCAmJiBlbGVtZW50LmNvbnRlbnRXaW5kb3cpIHtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtZW50O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gaUZyYW1lO1xuXHRcdH0sIG51bGwpO1xuXG5cdFx0aWYgKG9wYUZyYW1lICYmIG9wYUZyYW1lLmNvbnRlbnRXaW5kb3cpIHtcblx0XHRcdHRoaXMucHJlcGFyZVdpbmRvdyhvcGFGcmFtZS5jb250ZW50V2luZG93KTtcblx0XHR9XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKHdpbmRvdzogV2luZG93ICYgeyBfX2thcm1hX18/OiBLYXJtYSB9KSB7XG5cdFx0UVVuaXQubW9kdWxlU3RhcnQoKCkgPT4ge1xuXHRcdFx0dGhpcy5vYnNlcnZlci5vYnNlcnZlKHdpbmRvdy5kb2N1bWVudC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTtcblx0XHR9KTtcblxuXHRcdFFVbml0Lm1vZHVsZURvbmUoKCkgPT4ge1xuXHRcdFx0dGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCk7XG5cdFx0fSk7XG5cblx0XHRRVW5pdC50ZXN0U3RhcnQoKCkgPT4ge1xuXHRcdFx0dGhpcy5yZXNldCgpO1xuXHRcdH0pO1xuXG5cdFx0UVVuaXQubG9nKCgpID0+IHtcblx0XHRcdHRoaXMuaGFuZGxlRmFpbGVkTWVzc2FnZXMoKTtcblx0XHR9KTtcblxuXHRcdHRoaXMua2FybWEgPSB3aW5kb3cuX19rYXJtYV9fO1xuXG5cdFx0Ly8gZWl0aGVyIGdvIGZvciBLYXJtYSBjb25maWcgb3B0aW9uIFwidWk1LmNvbmZpZy5zdHJpY3RDb25zb2xlRXJyb3JzXCIgb3IgdXNlIFVSTCBxdWVyeSBwYXJhbWV0ZXIgXCJzdHJpY3RcIlxuXHRcdGNvbnN0IHNlYXJjaCA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG5cdFx0Y29uc3QgdXJsUGFyYW0gPSBzZWFyY2guZ2V0KFwic3RyaWN0Q29uc29sZUVycm9yc1wiKTtcblx0XHRpZiAodXJsUGFyYW0gIT09IG51bGwpIHtcblx0XHRcdHRoaXMuaXNTdHJpY3QgPSB1cmxQYXJhbSA9PT0gXCJ0cnVlXCI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuaXNTdHJpY3QgPSB0aGlzLmthcm1hPy5jb25maWcudWk1Py5jb25maWcuc3RyaWN0Y29uc29sZWVycm9ycyA/PyBmYWxzZTtcblx0XHR9XG5cblx0XHR0aGlzLnJlc2V0KCk7XG5cdH1cblxuXHRwcml2YXRlIGhhbmRsZUZhaWxlZE1lc3NhZ2VzKCkge1xuXHRcdGNvbnN0IGZhaWxlZE1lc3NhZ2VzID0gdGhpcy5tZXNzYWdlcztcblx0XHR0aGlzLm1lc3NhZ2VzID0gW107XG5cblx0XHRpZiAoZmFpbGVkTWVzc2FnZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0UVVuaXQuYXNzZXJ0LnB1c2hSZXN1bHQoe1xuXHRcdFx0XHRyZXN1bHQ6IGZhbHNlLFxuXHRcdFx0XHRzb3VyY2U6IFwiRkUgQ29uc29sZSBMb2cgQ2hlY2tcIixcblx0XHRcdFx0bWVzc2FnZTogYFRoZXJlIHdlcmUgJHtmYWlsZWRNZXNzYWdlcy5sZW5ndGh9IHVuZXhwZWN0ZWQgY29uc29sZSBlcnJvcnNgLFxuXHRcdFx0XHRhY3R1YWw6IGZhaWxlZE1lc3NhZ2VzLFxuXHRcdFx0XHRleHBlY3RlZDogW11cblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgcmVzZXQoKSB7XG5cdFx0dGhpcy5tZXNzYWdlcyA9IFtdO1xuXG5cdFx0Ly8gdGhpcyBzZXRzIHRoZSBkZWZhdWx0IHRvIGFwcGx5IGlmIG5vIGFsbG93ZWQgcGF0dGVybnMgYXJlIHNldCB2aWEgc2V0QWNjZXB0ZWRFcnJvclBhdHRlcm5zKCkuXG5cdFx0aWYgKHRoaXMuaXNTdHJpY3QpIHtcblx0XHRcdHRoaXMubWF0Y2hlcnMgPSBHTE9CQUxMWV9BQ0NFUFRFRF9FUlJPUlM7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMubWF0Y2hlcnMgPSBbKCkgPT4gdHJ1ZV07XG5cdFx0fVxuXHR9XG5cblx0c2V0QWNjZXB0ZWRFcnJvclBhdHRlcm5zKHBhdHRlcm5zPzogKFJlZ0V4cCB8IHN0cmluZylbXSkge1xuXHRcdGlmICghcGF0dGVybnMgfHwgcGF0dGVybnMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHR0aGlzLm1hdGNoZXJzID0gR0xPQkFMTFlfQUNDRVBURURfRVJST1JTO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm1hdGNoZXJzID0gcGF0dGVybnMubWFwKHdyYXBQYXR0ZXJucykuY29uY2F0KEdMT0JBTExZX0FDQ0VQVEVEX0VSUk9SUyk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBjaGVja0FuZExvZyh0eXBlOiBCcm93c2VyQ29uc29sZUxvZ09wdGlvbnNbXCJsZXZlbFwiXSwgLi4uZGF0YTogYW55W10pIHtcblx0XHQvLyBvbmx5IGNoZWNrIHRoZSBlcnJvciBtZXNzYWdlc1xuXHRcdGlmICh0eXBlID09PSBcImVycm9yXCIpIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2VUZXh0ID0gZGF0YVswXTtcblx0XHRcdGNvbnN0IGlzQWxsb3dlZCA9IHRoaXMubWF0Y2hlcnMuc29tZSgobWF0Y2hlcikgPT4gbWF0Y2hlcihtZXNzYWdlVGV4dCkpO1xuXHRcdFx0aWYgKCFpc0FsbG93ZWQpIHtcblx0XHRcdFx0dGhpcy5tZXNzYWdlcy5wdXNoKG1lc3NhZ2VUZXh0KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAodGhpcy5rYXJtYSkge1xuXHRcdFx0Ly8gd3JhcCB0aGUgZGF0YSB0byBmYWNpbGl0YXRlIHBhcnNpbmcgaW4gdGhlIGJhY2tlbmRcblx0XHRcdGNvbnN0IHdyYXBwZWREYXRhID0gZGF0YS5tYXAoKGQpID0+IFtkXSk7XG5cdFx0XHR0aGlzLmthcm1hLmxvZyh0eXBlLCB3cmFwcGVkRGF0YSk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBwcmVwYXJlV2luZG93KHdpbmRvdzogV2luZG93KSB7XG5cdFx0Y29uc3QgY29uc29sZTogQ29uc29sZSA9ICh3aW5kb3cgYXMgYW55KS5jb25zb2xlO1xuXG5cdFx0Ly8gY2FwdHVyZSBjb25zb2xlLmxvZygpLCBjb25zb2xlLmRlYnVnKCksIGV0Yy5cblx0XHRjb25zdCBwYXRjaENvbnNvbGVNZXRob2QgPSAobWV0aG9kOiBcImxvZ1wiIHwgXCJpbmZvXCIgfCBcIndhcm5cIiB8IFwiZXJyb3JcIiB8IFwiZGVidWdcIikgPT4ge1xuXHRcdFx0Y29uc3QgZm5PcmlnaW5hbCA9IGNvbnNvbGVbbWV0aG9kXTtcblx0XHRcdGNvbnNvbGVbbWV0aG9kXSA9ICguLi5kYXRhOiBhbnlbXSk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLmNoZWNrQW5kTG9nKG1ldGhvZCwgLi4uZGF0YSk7XG5cdFx0XHRcdHJldHVybiBmbk9yaWdpbmFsLmFwcGx5KGNvbnNvbGUsIGRhdGEpO1xuXHRcdFx0fTtcblx0XHR9O1xuXG5cdFx0cGF0Y2hDb25zb2xlTWV0aG9kKFwibG9nXCIpO1xuXHRcdHBhdGNoQ29uc29sZU1ldGhvZChcImRlYnVnXCIpO1xuXHRcdHBhdGNoQ29uc29sZU1ldGhvZChcImluZm9cIik7XG5cdFx0cGF0Y2hDb25zb2xlTWV0aG9kKFwid2FyblwiKTtcblx0XHRwYXRjaENvbnNvbGVNZXRob2QoXCJlcnJvclwiKTtcblxuXHRcdC8vIGNhcHR1cmUgY29uc29sZS5hc3NlcnQoKVxuXHRcdC8vIHNlZSBodHRwczovL2NvbnNvbGUuc3BlYy53aGF0d2cub3JnLyNhc3NlcnRcblx0XHRjb25zb2xlLmFzc2VydCA9IGZ1bmN0aW9uIChjb25kaXRpb24gPSBmYWxzZSwgLi4uZGF0YTogYW55W10pIHtcblx0XHRcdGlmIChjb25kaXRpb24pIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBtZXNzYWdlID0gXCJBc3NlcnRpb24gZmFpbGVkXCI7XG5cdFx0XHRpZiAoZGF0YS5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0ZGF0YS5wdXNoKG1lc3NhZ2UpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bGV0IGZpcnN0ID0gZGF0YVswXTtcblx0XHRcdFx0aWYgKHR5cGVvZiBmaXJzdCAhPT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdGRhdGEudW5zaGlmdChtZXNzYWdlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRmaXJzdCA9IGAke21lc3NhZ2V9OiAke2ZpcnN0fWA7XG5cdFx0XHRcdFx0ZGF0YVswXSA9IGZpcnN0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGNvbnNvbGUuZXJyb3IoLi4uZGF0YSk7XG5cdFx0fTtcblxuXHRcdC8vIGNhcHR1cmUgZXJyb3JzXG5cdFx0ZnVuY3Rpb24gb25Qcm9taXNlUmVqZWN0aW9uKHRoaXM6IENvbnNvbGVFcnJvckNoZWNrZXIsIGV2ZW50OiBQcm9taXNlUmVqZWN0aW9uRXZlbnQpIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBgVU5IQU5ETEVEIFBST01JU0UgUkVKRUNUSU9OOiAke2V2ZW50LnJlYXNvbn1gO1xuXHRcdFx0dGhpcy5jaGVja0FuZExvZyhcImVycm9yXCIsIG1lc3NhZ2UsIGV2ZW50LnJlYXNvbj8uc3RhY2spO1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIG9uRXJyb3IodGhpczogQ29uc29sZUVycm9yQ2hlY2tlciwgZXZlbnQ6IEVycm9yRXZlbnQpIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBldmVudC5tZXNzYWdlO1xuXHRcdFx0dGhpcy5jaGVja0FuZExvZyhcImVycm9yXCIsIG1lc3NhZ2UsIGV2ZW50LmZpbGVuYW1lKTtcblx0XHR9XG5cblx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIG9uRXJyb3IuYmluZCh0aGlzKSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidW5oYW5kbGVkcmVqZWN0aW9uXCIsIG9uUHJvbWlzZVJlamVjdGlvbi5iaW5kKHRoaXMpLCB7IHBhc3NpdmU6IHRydWUgfSk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0SW5zdGFuY2Uod2luZG93OiBXaW5kb3cgJiB7IHNhcEZFQ29uc29sZUVycm9yQ2hlY2tlcj86IENvbnNvbGVFcnJvckNoZWNrZXIgfSk6IENvbnNvbGVFcnJvckNoZWNrZXIge1xuXHRcdC8vIHRoZSBnbG9iYWwgaW5zdGFuY2UgaXMgbmVlZGVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgdGVzdHMgaW4gYSByb3cgKGluIEthcm1hKVxuXHRcdGlmICghd2luZG93LnNhcEZFQ29uc29sZUVycm9yQ2hlY2tlcikge1xuXHRcdFx0d2luZG93LnNhcEZFQ29uc29sZUVycm9yQ2hlY2tlciA9IG5ldyBDb25zb2xlRXJyb3JDaGVja2VyKHdpbmRvdyk7XG5cdFx0fVxuXHRcdHJldHVybiB3aW5kb3cuc2FwRkVDb25zb2xlRXJyb3JDaGVja2VyO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbnNvbGVFcnJvckNoZWNrZXIuZ2V0SW5zdGFuY2Uod2luZG93KTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7OztFQWNBLFNBQVNBLFlBQVksQ0FBQ0MsT0FBd0IsRUFBMEI7SUFDdkUsSUFBSUEsT0FBTyxZQUFZQyxNQUFNLEVBQUU7TUFDOUIsT0FBUUMsT0FBTyxJQUFLQSxPQUFPLENBQUNDLEtBQUssQ0FBQ0gsT0FBTyxDQUFDLEtBQUssSUFBSTtJQUNwRCxDQUFDLE1BQU07TUFDTixPQUFRRSxPQUFPLElBQUtBLE9BQU8sQ0FBQ0UsUUFBUSxDQUFDSixPQUFPLENBQUM7SUFDOUM7RUFDRDs7RUFFQTtBQUNBO0FBQ0E7RUFDQSxNQUFNSyx3QkFBd0IsR0FBRyxDQUNoQywrREFBK0QsQ0FBQztFQUFBLENBQ2hFLENBQUNDLEdBQUcsQ0FBQ1AsWUFBWSxDQUFDO0VBQUMsSUFFZFEsbUJBQW1CO0lBZ0N4Qiw2QkFBWUMsTUFBc0MsRUFBRTtNQUFBLEtBL0I1Q0MsUUFBUSxHQUE2QixFQUFFO01BQUEsS0FFdkNDLFFBQVEsR0FBYSxFQUFFO01BQUEsS0FNZEMsUUFBUSxHQUFHLElBQUlDLGdCQUFnQixDQUFFQyxTQUFTLElBQUs7UUFDL0QsTUFBTUMsUUFBUSxHQUFH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
|
|
@@ -24,8 +24,7 @@ function wrapPatterns(pattern: RegExp | string): MessageMatcherFunction {
|
|
|
24
24
|
* List of error message patterns that are always accepted.
|
|
25
25
|
*/
|
|
26
26
|
const GLOBALLY_ACCEPTED_ERRORS = [
|
|
27
|
-
"failed to load JavaScript resource: sap/esh/search/ui/i18n.js"
|
|
28
|
-
"Custom attributes are not exist" // accept console error temporarily - remove as soon as unified shell ticket is resolved
|
|
27
|
+
"failed to load JavaScript resource: sap/esh/search/ui/i18n.js" // shell
|
|
29
28
|
].map(wrapPatterns);
|
|
30
29
|
|
|
31
30
|
class ConsoleErrorChecker {
|
|
@@ -1904,6 +1904,38 @@ sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs",
|
|
|
1904
1904
|
},
|
|
1905
1905
|
pass: nodes && nodes.length === 0
|
|
1906
1906
|
};
|
|
1907
|
+
},
|
|
1908
|
+
/**
|
|
1909
|
+
* Checks for errors in `xml` created during templating of an XML string or
|
|
1910
|
+
* an XML node.
|
|
1911
|
+
*
|
|
1912
|
+
* This function checkes for the xml errors created by the
|
|
1913
|
+
* function [BuildingBlockTemplateProcessor.createErrorXML]{@link sap.fe.core.buildingBlocks.BuildingBlockTemplateProcessor#createErrorXML}.
|
|
1914
|
+
*
|
|
1915
|
+
* @param xml XML String or XML Node to be tested for errors
|
|
1916
|
+
* @returns Jest Matcher result object
|
|
1917
|
+
*/
|
|
1918
|
+
toHaveTemplatingErrors(xml) {
|
|
1919
|
+
const xmlText = typeof xml === "string" ? xml : serializeXML(xml);
|
|
1920
|
+
const base64Entries = xmlText.match(/BBF\.base64Decode\('([^']*)'\)/gm) || [];
|
|
1921
|
+
const errorMessages = base64Entries.map(message => {
|
|
1922
|
+
if (message && message.length > 0) {
|
|
1923
|
+
var _message$match, _message$match$;
|
|
1924
|
+
return atob(((_message$match = message.match(/('[^']*)/)) === null || _message$match === void 0 ? void 0 : (_message$match$ = _message$match[0]) === null || _message$match$ === void 0 ? void 0 : _message$match$.slice(1)) || "");
|
|
1925
|
+
}
|
|
1926
|
+
return "";
|
|
1927
|
+
});
|
|
1928
|
+
if (errorMessages.length <= 0) {
|
|
1929
|
+
return {
|
|
1930
|
+
message: () => `XML Templating without errors`,
|
|
1931
|
+
pass: false
|
|
1932
|
+
};
|
|
1933
|
+
} else {
|
|
1934
|
+
return {
|
|
1935
|
+
message: () => errorMessages.join("\n"),
|
|
1936
|
+
pass: true
|
|
1937
|
+
};
|
|
1938
|
+
}
|
|
1907
1939
|
}
|
|
1908
1940
|
});
|
|
1909
1941
|
_exports.runXPathQuery = runXPathQuery;
|
|
@@ -1920,10 +1952,24 @@ sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs",
|
|
|
1920
1952
|
const selector = `string(${_getTemplatedSelector(xmlDom, controlSelector)}/@${attributeName})`;
|
|
1921
1953
|
return runXPathQuery(selector, xmlDom);
|
|
1922
1954
|
};
|
|
1955
|
+
|
|
1956
|
+
/**
|
|
1957
|
+
* Serialize the parts or the complete given XML DOM to string.
|
|
1958
|
+
*
|
|
1959
|
+
* @param xmlDom DOM node that is to be serialized.
|
|
1960
|
+
* @param selector Optional selector of sub nodes
|
|
1961
|
+
* @returns XML string
|
|
1962
|
+
*/
|
|
1923
1963
|
_exports.getControlAttribute = getControlAttribute;
|
|
1924
|
-
const serializeXML = function (xmlDom) {
|
|
1964
|
+
const serializeXML = function (xmlDom, selector) {
|
|
1925
1965
|
const serializer = new window.XMLSerializer();
|
|
1926
|
-
|
|
1966
|
+
let xmlString;
|
|
1967
|
+
if (selector) {
|
|
1968
|
+
const nodes = runXPathQuery(selector, xmlDom);
|
|
1969
|
+
xmlString = nodes.map(node => serializer.serializeToString(node)).join("\n");
|
|
1970
|
+
} else {
|
|
1971
|
+
xmlString = serializer.serializeToString(xmlDom);
|
|
1972
|
+
}
|
|
1927
1973
|
return formatXML(xmlString);
|
|
1928
1974
|
};
|
|
1929
1975
|
_exports.serializeXML = serializeXML;
|
|
@@ -1941,16 +1987,23 @@ sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs",
|
|
|
1941
1987
|
* @param cdsUrl The path to the file containing the CDS definition. This file must declare the namespace
|
|
1942
1988
|
* sap.fe.test and a service JestService
|
|
1943
1989
|
* @param options Options for creating the EDMX output
|
|
1944
|
-
* @param edmxFileName Allows you to override the name of the compiled EDMX metadata file
|
|
1945
1990
|
* @returns The path of the generated EDMX
|
|
1946
1991
|
*/
|
|
1947
1992
|
_exports.formatXML = formatXML;
|
|
1948
1993
|
const compileCDS = function (cdsUrl) {
|
|
1949
1994
|
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1950
|
-
let edmxFileName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : path.basename(cdsUrl).replace(".cds", ".xml");
|
|
1951
1995
|
const cdsString = fs.readFileSync(cdsUrl, "utf-8");
|
|
1952
1996
|
const edmxContent = cds2edmx(cdsString, "sap.fe.test.JestService", options);
|
|
1953
1997
|
const dir = path.resolve(cdsUrl, "..", "gen");
|
|
1998
|
+
|
|
1999
|
+
// If the caller provided CDS compiler options: Include them in the filename. This prevents unpredictable results if the same CDS source
|
|
2000
|
+
// file is used simultaneously with a different set of options (e.g. in a test running in parallel)
|
|
2001
|
+
const allOptions = Object.entries(options);
|
|
2002
|
+
allOptions.sort((a, b) => b[0].localeCompare(a[0]));
|
|
2003
|
+
const edmxFileName = allOptions.reduce((filename, _ref) => {
|
|
2004
|
+
let [optionKey, optionValue] = _ref;
|
|
2005
|
+
return `${filename}#${optionKey}=${optionValue.toString()}#`;
|
|
2006
|
+
}, path.basename(cdsUrl).replace(".cds", "")) + ".xml";
|
|
1954
2007
|
const edmxFilePath = path.resolve(dir, edmxFileName);
|
|
1955
2008
|
fs.mkdirSync(dir, {
|
|
1956
2009
|
recursive: true
|
|
@@ -1983,7 +2036,7 @@ sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs",
|
|
|
1983
2036
|
const edmxOptions = {
|
|
1984
2037
|
odataForeignKeys: true,
|
|
1985
2038
|
odataFormat: "structured",
|
|
1986
|
-
odataContainment:
|
|
2039
|
+
odataContainment: true,
|
|
1987
2040
|
...options,
|
|
1988
2041
|
service: service
|
|
1989
2042
|
};
|
|
@@ -2183,7 +2236,9 @@ sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs",
|
|
|
2183
2236
|
_exports.getTemplatingResult = getTemplatingResult;
|
|
2184
2237
|
const getTemplatedXML = async function (xmlInput, sMetadataUrl, mBindingContexts, mModels, flexChanges, fakeSideEffectService) {
|
|
2185
2238
|
const templatedXML = await getTemplatingResult(xmlInput, sMetadataUrl, mBindingContexts, mModels, flexChanges, fakeSideEffectService);
|
|
2186
|
-
|
|
2239
|
+
const serialiedXML = serializeXML(templatedXML);
|
|
2240
|
+
expect(serialiedXML).not.toHaveTemplatingErrors();
|
|
2241
|
+
return serialiedXML;
|
|
2187
2242
|
};
|
|
2188
2243
|
|
|
2189
2244
|
/**
|
|
@@ -10341,18 +10396,11 @@ sap.ui.predefine(
|
|
|
10341
10396
|
if (vFieldIdentifier.fieldGroup) {
|
|
10342
10397
|
oBuilder.has(OpaBuilder.Matchers.children(this._getBuilderForFieldGroup(vFieldIdentifier)));
|
|
10343
10398
|
}
|
|
10344
|
-
|
|
10345
|
-
|
|
10346
|
-
|
|
10347
|
-
|
|
10348
|
-
|
|
10349
|
-
} else {
|
|
10350
|
-
return oBuilder
|
|
10351
|
-
.has(OpaBuilder.Matchers.children(this._getBuilderForFormElement(vFieldIdentifier)))
|
|
10352
|
-
.has(FEBuilder.Matchers.singleElement())
|
|
10353
|
-
.has(OpaBuilder.Matchers.children(this.createFieldMatcher(vFieldIdentifier)))
|
|
10354
|
-
.has(FEBuilder.Matchers.singleElement());
|
|
10355
|
-
}
|
|
10399
|
+
return oBuilder
|
|
10400
|
+
.has(OpaBuilder.Matchers.children(this._getBuilderForFormElement(vFieldIdentifier)))
|
|
10401
|
+
.has(FEBuilder.Matchers.singleElement())
|
|
10402
|
+
.has(OpaBuilder.Matchers.children(this.createFieldMatcher(vFieldIdentifier)))
|
|
10403
|
+
.has(FEBuilder.Matchers.singleElement());
|
|
10356
10404
|
};
|
|
10357
10405
|
|
|
10358
10406
|
FormAPI.prototype._getBuilderForFormElement = function (vFieldIdentifier) {
|
|
@@ -11346,6 +11394,24 @@ sap.ui.predefine(
|
|
|
11346
11394
|
return this.iCheckAction({ service: "StandardAction", action: "Edit", unbound: true }, mState);
|
|
11347
11395
|
};
|
|
11348
11396
|
|
|
11397
|
+
/**
|
|
11398
|
+
* Checks if a specific header action is in focus.
|
|
11399
|
+
*
|
|
11400
|
+
* @param {string | sap.fe.test.api.ActionIdentifier} vActionIdentifier The identifier of the action
|
|
11401
|
+
* @returns {object} The result of the {@link sap.ui.test.Opa5#waitFor} function, to be used for chained statements
|
|
11402
|
+
* @ui5-restricted
|
|
11403
|
+
*/
|
|
11404
|
+
HeaderAssertions.prototype.iCheckActionHasFocus = function (vActionIdentifier) {
|
|
11405
|
+
var oFEBuilder = FEBuilder.create(this.getOpaInstance());
|
|
11406
|
+
return this.prepareResult(
|
|
11407
|
+
oFEBuilder
|
|
11408
|
+
.hasId(this.createActionMatcher(vActionIdentifier))
|
|
11409
|
+
.hasState({ focused: true })
|
|
11410
|
+
.description(Utils.formatMessage("Checking focus on header action '{0}'", vActionIdentifier))
|
|
11411
|
+
.execute()
|
|
11412
|
+
);
|
|
11413
|
+
};
|
|
11414
|
+
|
|
11349
11415
|
/**
|
|
11350
11416
|
* Checks the <code>Delete</code> action in the header toolbar.
|
|
11351
11417
|
*
|
|
@@ -14264,12 +14330,9 @@ sap.ui.predefine(
|
|
|
14264
14330
|
*/
|
|
14265
14331
|
TableAssertions.prototype.iCheckQuickFilter = function (mState) {
|
|
14266
14332
|
var oTableBuilder = this.getBuilder();
|
|
14267
|
-
var vAggregationMatcher = FEBuilder.Matchers.deepAggregationMatcher("quickFilter/selector", [
|
|
14268
|
-
[FEBuilder.Matchers.states(mState)]
|
|
14269
|
-
]);
|
|
14270
14333
|
return this.prepareResult(
|
|
14271
14334
|
oTableBuilder
|
|
14272
|
-
.
|
|
14335
|
+
.hasAggregation("quickFilter", [FEBuilder.Matchers.states(mState)])
|
|
14273
14336
|
.description(
|
|
14274
14337
|
Utils.formatMessage(
|
|
14275
14338
|
"Checking that table '{0}' has a QuickFilter Control with state='{1}'",
|
|
@@ -16716,7 +16779,7 @@ sap.ui.predefine(
|
|
|
16716
16779
|
return this.has(function (oTable) {
|
|
16717
16780
|
var oQuickFilter = oTable.getQuickFilter();
|
|
16718
16781
|
if (oQuickFilter) {
|
|
16719
|
-
var aItems = oQuickFilter.
|
|
16782
|
+
var aItems = oQuickFilter.getItems();
|
|
16720
16783
|
if (Utils.isOfType(aItems, Array)) {
|
|
16721
16784
|
return aItems.length === iNumberOfItems;
|
|
16722
16785
|
}
|
|
@@ -16728,7 +16791,7 @@ sap.ui.predefine(
|
|
|
16728
16791
|
|
|
16729
16792
|
TableBuilder.prototype.doSelectQuickFilter = function (oItemMatcher) {
|
|
16730
16793
|
return this.has(function (oTable) {
|
|
16731
|
-
return oTable.getQuickFilter()
|
|
16794
|
+
return oTable.getQuickFilter();
|
|
16732
16795
|
})
|
|
16733
16796
|
.doConditional(FEBuilder.Matchers.state("controlType", "sap.m.Select"), OpaBuilder.Actions.press())
|
|
16734
16797
|
.success(
|
|
@@ -17708,9 +17771,7 @@ sap.ui.predefine("sap/fe/test/internal/ConsoleErrorChecker", [], function () {
|
|
|
17708
17771
|
/**
|
|
17709
17772
|
* List of error message patterns that are always accepted.
|
|
17710
17773
|
*/
|
|
17711
|
-
const GLOBALLY_ACCEPTED_ERRORS = ["failed to load JavaScript resource: sap/esh/search/ui/i18n.js"
|
|
17712
|
-
// shell
|
|
17713
|
-
"Custom attributes are not exist" // accept console error temporarily - remove as soon as unified shell ticket is resolved
|
|
17774
|
+
const GLOBALLY_ACCEPTED_ERRORS = ["failed to load JavaScript resource: sap/esh/search/ui/i18n.js" // shell
|
|
17714
17775
|
].map(wrapPatterns);
|
|
17715
17776
|
let ConsoleErrorChecker = /*#__PURE__*/function () {
|
|
17716
17777
|
function ConsoleErrorChecker(window) {
|
|
@@ -18069,12 +18130,12 @@ sap.ui.predefine("sap/fe/test/library", ["sap/ui/core/Core", "sap/ui/core/librar
|
|
|
18069
18130
|
controls: [],
|
|
18070
18131
|
elements: [],
|
|
18071
18132
|
// eslint-disable-next-line no-template-curly-in-string
|
|
18072
|
-
version: "1.
|
|
18133
|
+
version: "1.114.0",
|
|
18073
18134
|
noLibraryCSS: true
|
|
18074
18135
|
});
|
|
18075
18136
|
return thisLib;
|
|
18076
18137
|
}, false);
|
|
18077
18138
|
sap.ui.require.preload({
|
|
18078
|
-
"sap/fe/test/manifest.json":'{"_version":"1.21.0","sap.app":{"id":"sap.fe.test","type":"library","embeds":[],"applicationVersion":{"version":"1.
|
|
18139
|
+
"sap/fe/test/manifest.json":'{"_version":"1.21.0","sap.app":{"id":"sap.fe.test","type":"library","embeds":[],"applicationVersion":{"version":"1.114.0"},"title":"UI5 library: sap.fe.test","description":"UI5 library: sap.fe.test","resources":"resources.json","offline":true},"sap.ui":{"technology":"UI5","supportedThemes":[]},"sap.ui5":{"dependencies":{"libs":{"sap.ui.core":{}}},"library":{"i18n":false,"content":{"controls":[],"elements":[],"types":[],"interfaces":[]}}}}'
|
|
18079
18140
|
});
|
|
18080
18141
|
//# sourceMappingURL=library-preload.js.map
|