diff --git a/dist/powerbi-client.d.ts b/dist/powerbi-client.d.ts index adfe29cf..baf9a5ff 100644 --- a/dist/powerbi-client.d.ts +++ b/dist/powerbi-client.d.ts @@ -1,4 +1,4 @@ -// powerbi-client v2.18.7 +// powerbi-client v2.19.1 // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. declare module "config" { @@ -190,6 +190,13 @@ declare module "embed" { * @hidden */ eventHandlers: IInternalEventHandler[]; + /** + * Gets or sets the eventHooks. + * + * @type {models.EventHooks} + * @hidden + */ + eventHooks: models.EventHooks; /** * Gets or sets the Power BI embed service. * @@ -418,6 +425,14 @@ declare module "embed" { * @returns {void} */ populateConfig(config: IBootstrapEmbedConfiguration, isBootstrap: boolean): void; + /** + * Validate EventHooks + * + * @private + * @param {models.EventHooks} eventHooks + * @hidden + */ + private validateEventHooks; /** * Adds locale parameters to embedUrl * @@ -2159,10 +2174,6 @@ declare module "service" { * @hidden */ private embedExisting; - /** - * @hidden - */ - private registerApplicationContextHook; /** * Adds an event handler for DOMContentLoaded, which searches the DOM for elements that have the 'powerbi-embed-url' attribute, * and automatically attempts to embed a powerbi component based on information from other powerbi-* attributes. @@ -2211,6 +2222,7 @@ declare module "service" { * @hidden */ handleTileEvents(event: IEvent): void; + private invokeSDKHook; /** * Given an event object, finds the embed component with the matching type and ID, and invokes its handleEvent method with the event object. * @@ -2771,6 +2783,7 @@ declare module "powerbi-client" { global { interface Window { powerbi: service.Service; + powerBISDKGlobalServiceInstanceName?: string; } } } diff --git a/dist/powerbi.js b/dist/powerbi.js index 01fdc4be..0ec81531 100644 --- a/dist/powerbi.js +++ b/dist/powerbi.js @@ -1,4 +1,4 @@ -// powerbi-client v2.18.7 +// powerbi-client v2.19.1 // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. (function webpackUniversalModuleDefinition(root, factory) { @@ -290,7 +290,7 @@ return /******/ (function(modules) { // webpackBootstrap /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -// powerbi-models v1.9.7 +// powerbi-models v1.9.8 // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. (function webpackUniversalModuleDefinition(root, factory) { @@ -6987,7 +6987,7 @@ var BookmarksManager = /** @class */ (function () { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } _a.label = 1; @@ -7021,7 +7021,7 @@ var BookmarksManager = /** @class */ (function () { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } request = { @@ -7057,7 +7057,7 @@ var BookmarksManager = /** @class */ (function () { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } playBookmarkRequest = { @@ -7092,7 +7092,7 @@ var BookmarksManager = /** @class */ (function () { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } request = { @@ -7129,7 +7129,7 @@ var BookmarksManager = /** @class */ (function () { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } request = { @@ -7167,7 +7167,7 @@ exports.BookmarksManager = BookmarksManager; Object.defineProperty(exports, "__esModule", { value: true }); /** @ignore */ /** */ var config = { - version: '2.18.7', + version: '2.19.1', type: 'js' }; exports.default = config; @@ -7271,7 +7271,7 @@ var Create = /** @class */ (function (_super) { * Validate create report configuration. */ Create.prototype.validate = function (config) { - return powerbi_models_1.validateCreateReport(config); + return (0, powerbi_models_1.validateCreateReport)(config); }; /** * Handle config changes. @@ -7438,7 +7438,7 @@ var Dashboard = /** @class */ (function (_super) { */ Dashboard.prototype.validate = function (baseConfig) { var config = baseConfig; - var error = powerbi_models_1.validateDashboardLoad(config); + var error = (0, powerbi_models_1.validateDashboardLoad)(config); return error ? error : this.validatePageView(config.pageView); }; /** @@ -7560,7 +7560,7 @@ var Embed = /** @class */ (function () { function Embed(service, element, config, iframe, phasedRender, isBootstrap) { /** @hidden */ this.allowedEvents = []; - if (util_1.autoAuthInEmbedUrl(config.embedUrl)) { + if ((0, util_1.autoAuthInEmbedUrl)(config.embedUrl)) { throw new Error(errors_1.EmbedUrlNotSupported); } Array.prototype.push.apply(this.allowedEvents, Embed.allowedEvents); @@ -7746,7 +7746,7 @@ var Embed = /** @class */ (function () { sdkVersion: sdkConfig.default.version }; timeNow = new Date(); - if (this.lastLoadRequest && util_1.getTimeDiffInMilliseconds(this.lastLoadRequest, timeNow) < 100) { + if (this.lastLoadRequest && (0, util_1.getTimeDiffInMilliseconds)(this.lastLoadRequest, timeNow) < 100) { console.debug("Power BI SDK sent more than two /report/load requests in the last 100ms interval."); return [2 /*return*/]; } @@ -7791,7 +7791,7 @@ var Embed = /** @class */ (function () { var _this = this; var fakeEvent = { name: eventName, type: null, id: null, value: null }; if (handler) { - util_1.remove(function (eventHandler) { return eventHandler.test(fakeEvent) && (eventHandler.handle === handler); }, this.eventHandlers); + (0, util_1.remove)(function (eventHandler) { return eventHandler.test(fakeEvent) && (eventHandler.handle === handler); }, this.eventHandlers); this.element.removeEventListener(eventName, handler); } else { @@ -7799,7 +7799,7 @@ var Embed = /** @class */ (function () { .filter(function (eventHandler) { return eventHandler.test(fakeEvent); }); eventHandlersToRemove .forEach(function (eventHandlerToRemove) { - util_1.remove(function (eventHandler) { return eventHandler === eventHandlerToRemove; }, _this.eventHandlers); + (0, util_1.remove)(function (eventHandler) { return eventHandler === eventHandlerToRemove; }, _this.eventHandlers); _this.element.removeEventListener(eventName, eventHandlerToRemove.handle); }); } @@ -7903,16 +7903,16 @@ var Embed = /** @class */ (function () { */ Embed.prototype.populateConfig = function (config, isBootstrap) { var _this = this; - var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; + var _a, _b, _c, _d, _e, _f, _g, _h, _j; if (this.bootstrapConfig) { - this.config = util_1.assign({}, this.bootstrapConfig, config); + this.config = (0, util_1.assign)({}, this.bootstrapConfig, config); // reset bootstrapConfig because we do not want to merge it in re-embed scenario. this.bootstrapConfig = null; } else { // Copy config - important for multiple iframe scenario. // Otherwise, if a user uses the same config twice, same unique Id which will be used in different iframes. - this.config = util_1.assign({}, config); + this.config = (0, util_1.assign)({}, config); } this.config.embedUrl = this.getEmbedUrl(isBootstrap); this.config.groupId = this.getGroupId(); @@ -7938,12 +7938,41 @@ var Embed = /** @class */ (function () { else { this.config.accessToken = this.getAccessToken(this.service.accessToken); } - var registerQueryCallback = !!((_k = this.config.eventHooks) === null || _k === void 0 ? void 0 : _k.applicationContextProvider); + this.eventHooks = this.config.eventHooks; + this.validateEventHooks(this.eventHooks); delete this.config.eventHooks; - if (registerQueryCallback && this.embedtype === "report") - this.config.embedUrl = util_1.addParamToUrl(this.config.embedUrl, "registerQueryCallback", "true"); this.configChanged(isBootstrap); }; + /** + * Validate EventHooks + * + * @private + * @param {models.EventHooks} eventHooks + * @hidden + */ + Embed.prototype.validateEventHooks = function (eventHooks) { + if (!eventHooks) { + return; + } + for (var key in eventHooks) { + if (eventHooks.hasOwnProperty(key) && typeof eventHooks[key] !== 'function') { + throw new Error(key + " must be a function"); + } + } + var applicationContextProvider = eventHooks.applicationContextProvider; + if (!!applicationContextProvider) { + if (this.embedtype.toLowerCase() !== "report") { + throw new Error("applicationContextProvider is only supported in report embed"); + } + this.config.embedUrl = (0, util_1.addParamToUrl)(this.config.embedUrl, "registerQueryCallback", "true"); + } + var accessTokenProvider = eventHooks.accessTokenProvider; + if (!!accessTokenProvider) { + if (this.embedtype.toLowerCase() !== "report" || this.config.tokenType !== models.TokenType.Aad) { + throw new Error("accessTokenProvider is only supported in report SaaS embed"); + } + } + }; /** * Adds locale parameters to embedUrl * @@ -7957,10 +7986,10 @@ var Embed = /** @class */ (function () { } var localeSettings = config.settings.localeSettings; if (localeSettings && localeSettings.language) { - this.config.embedUrl = util_1.addParamToUrl(this.config.embedUrl, 'language', localeSettings.language); + this.config.embedUrl = (0, util_1.addParamToUrl)(this.config.embedUrl, 'language', localeSettings.language); } if (localeSettings && localeSettings.formatLocale) { - this.config.embedUrl = util_1.addParamToUrl(this.config.embedUrl, 'formatLocale', localeSettings.formatLocale); + this.config.embedUrl = (0, util_1.addParamToUrl)(this.config.embedUrl, 'formatLocale', localeSettings.formatLocale); } }; /** @@ -8008,7 +8037,7 @@ var Embed = /** @class */ (function () { * @hidden */ Embed.prototype.getUniqueId = function () { - return this.config.uniqueId || this.element.getAttribute(Embed.nameAttribute) || util_1.createRandomString(); + return this.config.uniqueId || this.element.getAttribute(Embed.nameAttribute) || (0, util_1.createRandomString)(); }; /** * Gets the group ID from the first available location: options, embeddedUrl. @@ -8059,7 +8088,7 @@ var Embed = /** @class */ (function () { var _this = this; if (!this.iframe) { var iframeContent = document.createElement("iframe"); - var embedUrl = this.config.uniqueId ? util_1.addParamToUrl(this.config.embedUrl, 'uid', this.config.uniqueId) : this.config.embedUrl; + var embedUrl = this.config.uniqueId ? (0, util_1.addParamToUrl)(this.config.embedUrl, 'uid', this.config.uniqueId) : this.config.embedUrl; iframeContent.style.width = '100%'; iframeContent.style.height = '100%'; iframeContent.setAttribute("src", embedUrl); @@ -8184,7 +8213,7 @@ var Embed = /** @class */ (function () { }); }; /** @hidden */ - Embed.allowedEvents = ["loaded", "saved", "rendered", "saveAsTriggered", "error", "dataSelected", "buttonClicked"]; + Embed.allowedEvents = ["loaded", "saved", "rendered", "saveAsTriggered", "error", "dataSelected", "buttonClicked", "info"]; /** @hidden */ Embed.accessTokenAttribute = 'powerbi-access-token'; /** @hidden */ @@ -8573,7 +8602,7 @@ var Page = /** @class */ (function () { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.report.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.report.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } _a.label = 1; @@ -8611,7 +8640,7 @@ var Page = /** @class */ (function () { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.report.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.report.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } _a.label = 1; @@ -8746,7 +8775,7 @@ var Page = /** @class */ (function () { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.report.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.report.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } _a.label = 1; @@ -8782,7 +8811,7 @@ var Page = /** @class */ (function () { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.report.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.report.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } layoutTypeEnum = powerbi_models_1.LayoutType[layoutType]; @@ -8856,7 +8885,14 @@ Object.defineProperty(exports, "RelativeTimeFilterBuilder", { enumerable: true, * Note: create an instance of the class with the default configuration for normal usage, or save the class so that you can create an instance of the service. */ var powerbi = new service.Service(factories.hpmFactory, factories.wpmpFactory, factories.routerFactory); -window.powerbi = powerbi; +// powerBI SDK may use Power BI object under different key, in order to avoid name collisions +if (window.powerbi && window.powerBISDKGlobalServiceInstanceName) { + window[window.powerBISDKGlobalServiceInstanceName] = powerbi; +} +else { + // Default to Power BI. + window.powerbi = powerbi; +} /***/ }), @@ -8999,7 +9035,7 @@ var Qna = /** @class */ (function (_super) { * Validate load configuration. */ Qna.prototype.validate = function (config) { - return powerbi_models_1.validateLoadQnaConfiguration(config); + return (0, powerbi_models_1.validateLoadQnaConfiguration)(config); }; /** @hidden */ Qna.type = "Qna"; @@ -9072,10 +9108,14 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; -var __spreadArray = (this && this.__spreadArray) || function (to, from) { - for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) - to[j] = from[i]; - return to; +var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Report = void 0; @@ -9286,7 +9326,7 @@ var Report = /** @class */ (function (_super) { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } _a.label = 1; @@ -9350,7 +9390,7 @@ var Report = /** @class */ (function (_super) { Report.prototype.removeFilters = function () { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } return [2 /*return*/, this.updateFilters(powerbi_models_1.FiltersOperations.RemoveAll)]; @@ -9380,7 +9420,7 @@ var Report = /** @class */ (function (_super) { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } _a.label = 1; @@ -9428,7 +9468,7 @@ var Report = /** @class */ (function (_super) { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } _a.label = 1; @@ -9466,7 +9506,7 @@ var Report = /** @class */ (function (_super) { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } _a.label = 1; @@ -9506,7 +9546,7 @@ var Report = /** @class */ (function (_super) { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } _a.label = 1; @@ -9552,7 +9592,7 @@ var Report = /** @class */ (function (_super) { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } _a.label = 1; @@ -9587,7 +9627,7 @@ var Report = /** @class */ (function (_super) { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } page = { @@ -9635,7 +9675,7 @@ var Report = /** @class */ (function (_super) { return __generator(this, function (_c) { switch (_c.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl) && settings.customLayout != null) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl) && settings.customLayout != null) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } _c.label = 1; @@ -9669,10 +9709,10 @@ var Report = /** @class */ (function (_super) { * @hidden */ Report.prototype.validate = function (config) { - if (util_1.isRDLEmbed(this.config.embedUrl)) { - return powerbi_models_1.validatePaginatedReportLoad(config); + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { + return (0, powerbi_models_1.validatePaginatedReportLoad)(config); } - return powerbi_models_1.validateReportLoad(config); + return (0, powerbi_models_1.validateReportLoad)(config); }; /** * Handle config changes. @@ -9682,7 +9722,7 @@ var Report = /** @class */ (function (_super) { Report.prototype.configChanged = function (isBootstrap) { var config = this.config; if (this.isMobileSettings(config.settings)) { - config.embedUrl = util_1.addParamToUrl(config.embedUrl, "isMobile", "true"); + config.embedUrl = (0, util_1.addParamToUrl)(config.embedUrl, "isMobile", "true"); } // Calculate settings from HTML element attributes if available. var filterPaneEnabledAttribute = this.element.getAttribute(Report.filterPaneEnabledAttribute); @@ -9692,7 +9732,7 @@ var Report = /** @class */ (function (_super) { navContentPaneEnabled: (navContentPaneEnabledAttribute == null) ? undefined : (navContentPaneEnabledAttribute !== "false") }; // Set the settings back into the config. - this.config.settings = util_1.assign({}, elementAttrSettings, config.settings); + this.config.settings = (0, util_1.assign)({}, elementAttrSettings, config.settings); if (isBootstrap) { return; } @@ -9778,10 +9818,10 @@ var Report = /** @class */ (function (_super) { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } - return [4 /*yield*/, util_1.isSavedInternal(this.service.hpm, this.config.uniqueId, this.iframe.contentWindow)]; + return [4 /*yield*/, (0, util_1.isSavedInternal)(this.service.hpm, this.config.uniqueId, this.iframe.contentWindow)]; case 1: return [2 /*return*/, _a.sent()]; } }); @@ -9799,7 +9839,7 @@ var Report = /** @class */ (function (_super) { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } return [4 /*yield*/, this.applyThemeInternal(theme)]; @@ -9820,7 +9860,7 @@ var Report = /** @class */ (function (_super) { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } return [4 /*yield*/, this.applyThemeInternal({})]; @@ -9842,7 +9882,7 @@ var Report = /** @class */ (function (_super) { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } _a.label = 1; @@ -9957,7 +9997,7 @@ var Report = /** @class */ (function (_super) { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } commandCopy = JSON.parse(JSON.stringify(this.commands)); @@ -10008,7 +10048,7 @@ var Report = /** @class */ (function (_super) { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } newCommands = this.createMenuCommand("visualContextMenu", commandName, commandTitle, contextMenuTitle, menuLocation, visualName, visualType, groupName); @@ -10044,7 +10084,7 @@ var Report = /** @class */ (function (_super) { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } commandCopy = JSON.parse(JSON.stringify(this.commands)); @@ -10099,7 +10139,7 @@ var Report = /** @class */ (function (_super) { return __generator(this, function (_a) { switch (_a.label) { case 0: - if (util_1.isRDLEmbed(this.config.embedUrl)) { + if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) { return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)]; } newCommands = this.createMenuCommand("visualOptionsMenu", commandName, commandTitle, optionsMenuTitle, menuLocation, visualName, visualType, groupName, commandIcon); @@ -10322,7 +10362,7 @@ var Report = /** @class */ (function (_super) { visualType: visualType }; } - return __spreadArray(__spreadArray([], this.commands), [newCommandObj]); + return __spreadArray(__spreadArray([], this.commands, true), [newCommandObj], false); }; /** * @hidden @@ -10480,6 +10520,17 @@ exports.Report = Report; // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { @@ -10551,6 +10602,43 @@ var Service = /** @class */ (function () { this.hpm = hpmFactory(this.wpmp, null, config.version, config.type); this.router = routerFactory(this.wpmp); this.uniqueSessionId = utils.generateUUID(); + this.router.post('/reports/:uniqueId/eventHooks/:eventName', function (req, _res) { return __awaiter(_this, void 0, void 0, function () { + var embed, _a; + var _b, _c; + return __generator(this, function (_d) { + switch (_d.label) { + case 0: + embed = utils.find(function (embed) { + return (embed.config.uniqueId === req.params.uniqueId); + }, this.embeds); + if (!embed) { + return [2 /*return*/]; + } + _a = req.params.eventName; + switch (_a) { + case "preQuery": return [3 /*break*/, 1]; + case "newAccessToken": return [3 /*break*/, 3]; + } + return [3 /*break*/, 5]; + case 1: + req.body = req.body || {}; + req.body.report = embed; + return [4 /*yield*/, this.invokeSDKHook((_b = embed.eventHooks) === null || _b === void 0 ? void 0 : _b.applicationContextProvider, req, _res)]; + case 2: + _d.sent(); + return [3 /*break*/, 6]; + case 3: + req.body = req.body || {}; + req.body.report = embed; + return [4 /*yield*/, this.invokeSDKHook((_c = embed.eventHooks) === null || _c === void 0 ? void 0 : _c.accessTokenProvider, req, _res)]; + case 4: + _d.sent(); + return [3 /*break*/, 6]; + case 5: return [3 /*break*/, 6]; + case 6: return [2 /*return*/]; + } + }); + }); }); /** * Adds handler for report events. */ @@ -10671,7 +10759,6 @@ var Service = /** @class */ (function () { */ Service.prototype.embed = function (element, config) { if (config === void 0) { config = {}; } - this.registerApplicationContextHook(config); return this.embedInternal(element, config); }; /** @@ -10686,7 +10773,6 @@ var Service = /** @class */ (function () { */ Service.prototype.load = function (element, config) { if (config === void 0) { config = {}; } - this.registerApplicationContextHook(config); return this.embedInternal(element, config, /* phasedRender */ true, /* isBootstrap */ false); }; /** @@ -10696,7 +10782,6 @@ var Service = /** @class */ (function () { * @param {IBootstrapEmbedConfiguration} config: a bootstrap config which is an embed config without access token. */ Service.prototype.bootstrap = function (element, config) { - this.registerApplicationContextHook(config); return this.embedInternal(element, config, /* phasedRender */ false, /* isBootstrap */ true); }; /** @hidden */ @@ -10738,7 +10823,8 @@ var Service = /** @class */ (function () { Service.prototype.embedNew = function (element, config, phasedRender, isBootstrap) { var componentType = config.type || element.getAttribute(embed_1.Embed.typeAttribute); if (!componentType) { - throw new Error("Attempted to embed using config " + JSON.stringify(config) + " on element " + element.outerHTML + ", but could not determine what type of component to embed. You must specify a type in the configuration or as an attribute such as '" + embed_1.Embed.typeAttribute + "=\"" + report_1.Report.type.toLowerCase() + "\"'."); + var scrubbedConfig = __assign(__assign({}, config), { accessToken: "" }); + throw new Error("Attempted to embed using config " + JSON.stringify(scrubbedConfig) + " on element " + element.outerHTML + ", but could not determine what type of component to embed. You must specify a type in the configuration or as an attribute such as '" + embed_1.Embed.typeAttribute + "=\"" + report_1.Report.type.toLowerCase() + "\"'."); } // Saves the type as part of the configuration so that it can be referenced later at a known location. config.type = componentType; @@ -10763,7 +10849,8 @@ var Service = /** @class */ (function () { Service.prototype.embedExisting = function (element, config, phasedRender) { var component = utils.find(function (x) { return x.element === element; }, this.embeds); if (!component) { - throw new Error("Attempted to embed using config " + JSON.stringify(config) + " on element " + element.outerHTML + " which already has embedded component associated, but could not find the existing component in the list of active components. This could indicate the embeds list is out of sync with the DOM, or the component is referencing the incorrect HTML element."); + var scrubbedConfig = __assign(__assign({}, config), { accessToken: "" }); + throw new Error("Attempted to embed using config " + JSON.stringify(scrubbedConfig) + " on element " + element.outerHTML + " which already has embedded component associated, but could not find the existing component in the list of active components. This could indicate the embeds list is out of sync with the DOM, or the component is referencing the incorrect HTML element."); } // TODO: Multiple embedding to the same iframe is not supported in QnA if (config.type && config.type.toLowerCase() === "qna") { @@ -10786,49 +10873,13 @@ var Service = /** @class */ (function () { this.addOrOverwriteEmbed(component, element); return report; } - throw new Error("Embedding on an existing element with a different type than the previous embed object is not supported. Attempted to embed using config " + JSON.stringify(config) + " on element " + element.outerHTML + ", but the existing element contains an embed of type: " + this.config.type + " which does not match the new type: " + config.type); + var scrubbedConfig = __assign(__assign({}, config), { accessToken: "" }); + throw new Error("Embedding on an existing element with a different type than the previous embed object is not supported. Attempted to embed using config " + JSON.stringify(scrubbedConfig) + " on element " + element.outerHTML + ", but the existing element contains an embed of type: " + this.config.type + " which does not match the new type: " + config.type); } component.populateConfig(config, /* isBootstrap */ false); component.load(phasedRender); return component; }; - /** - * @hidden - */ - Service.prototype.registerApplicationContextHook = function (config) { - var _this = this; - var _a; - var applicationContextProvider = (_a = config === null || config === void 0 ? void 0 : config.eventHooks) === null || _a === void 0 ? void 0 : _a.applicationContextProvider; - if (!applicationContextProvider) { - return; - } - if ((config === null || config === void 0 ? void 0 : config.type.toLowerCase()) !== "report") { - throw new Error("applicationContextProvider is only supported in report embed"); - } - if (typeof applicationContextProvider !== 'function') { - throw new Error("applicationContextProvider must be a function"); - } - this.router.post("preQuery", function (req, _res) { return __awaiter(_this, void 0, void 0, function () { - var result, error_1; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - _a.trys.push([0, 2, , 3]); - return [4 /*yield*/, applicationContextProvider(req.body)]; - case 1: - result = _a.sent(); - _res.send(200, result); - return [3 /*break*/, 3]; - case 2: - error_1 = _a.sent(); - _res.send(400, null); - console.error(error_1); - return [3 /*break*/, 3]; - case 3: return [2 /*return*/]; - } - }); - }); }); - }; /** * Adds an event handler for DOMContentLoaded, which searches the DOM for elements that have the 'powerbi-embed-url' attribute, * and automatically attempts to embed a powerbi component based on information from other powerbi-* attributes. @@ -10927,6 +10978,34 @@ var Service = /** @class */ (function () { this.handleEvent(event); } }; + Service.prototype.invokeSDKHook = function (hook, req, res) { + return __awaiter(this, void 0, void 0, function () { + var result, error_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!hook) { + res.send(404, null); + return [2 /*return*/]; + } + _a.label = 1; + case 1: + _a.trys.push([1, 3, , 4]); + return [4 /*yield*/, hook(req.body)]; + case 2: + result = _a.sent(); + res.send(200, result); + return [3 /*break*/, 4]; + case 3: + error_1 = _a.sent(); + res.send(400, null); + console.error(error_1); + return [3 /*break*/, 4]; + case 4: return [2 /*return*/]; + } + }); + }); + }; /** * Given an event object, finds the embed component with the matching type and ID, and invokes its handleEvent method with the event object. * @@ -11071,7 +11150,7 @@ var Tile = /** @class */ (function (_super) { */ Tile.prototype.validate = function (config) { var embedConfig = config; - return powerbi_models_1.validateTileLoad(embedConfig); + return (0, powerbi_models_1.validateTileLoad)(embedConfig); }; /** * Handle config changes. diff --git a/dist/powerbi.min.js b/dist/powerbi.min.js index 50b9f657..5ffef31b 100644 --- a/dist/powerbi.min.js +++ b/dist/powerbi.min.js @@ -1,7 +1,7 @@ -// powerbi-client v2.18.7 +// powerbi-client v2.19.1 // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports["powerbi-client"]=e():t["powerbi-client"]=e()}(this,(function(){return function(t){var e={};function r(i){if(e[i])return e[i].exports;var a=e[i]={i:i,l:!1,exports:{}};return t[i].call(a.exports,a,a.exports,r),a.l=!0,a.exports}return r.m=t,r.c=e,r.d=function(t,e,i){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var a in t)r.d(i,a,function(e){return t[e]}.bind(null,a));return i},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=13)}([function(t,e,r){var i;i=function(){return function(t){var e={};function r(i){if(e[i])return e[i].exports;var a=e[i]={i:i,l:!1,exports:{}};return t[i].call(a.exports,a,a.exports,r),a.l=!0,a.exports}return r.m=t,r.c=e,r.d=function(t,e,i){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var a in t)r.d(i,a,function(e){return t[e]}.bind(null,a));return i},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=0)}([function(t,e,r){var i,a=this&&this.__extends||(i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,"__esModule",{value:!0}),e.validateZoomLevel=e.validateCustomTheme=e.validateCommandsSettings=e.validateVisualSettings=e.validateVisualHeader=e.validateExportDataRequest=e.validateQnaInterpretInputData=e.validateLoadQnaConfiguration=e.validateSaveAsParameters=e.validateUpdateFiltersRequest=e.validateFilter=e.validatePage=e.validateTileLoad=e.validateDashboardLoad=e.validateCreateReport=e.validatePaginatedReportLoad=e.validateReportLoad=e.validateMenuGroupExtension=e.validateExtension=e.validateCustomPageSize=e.validateVisualizationsPane=e.validateSyncSlicersPane=e.validateSelectionPane=e.validatePageNavigationPane=e.validateFieldsPane=e.validateFiltersPane=e.validateBookmarksPane=e.validatePanes=e.validateSettings=e.validateCaptureBookmarkRequest=e.validateApplyBookmarkStateRequest=e.validateApplyBookmarkByNameRequest=e.validateAddBookmarkRequest=e.validatePlayBookmarkRequest=e.validateSlicerState=e.validateSlicer=e.validateVisualSelector=e.isIExtensionArray=e.isIExtensions=e.isGroupedMenuExtension=e.isFlatMenuExtension=e.isReportFiltersArray=e.isOnLoadFilters=e.VisualDataRoleKindPreference=e.VisualDataRoleKind=e.CommandDisplayOption=e.SlicerTargetSelector=e.VisualTypeSelector=e.VisualSelector=e.PageSelector=e.Selector=e.SortDirection=e.LegendPosition=e.TextAlignment=e.CommonErrorCodes=e.BookmarksPlayMode=e.ExportDataType=e.QnaMode=e.PageNavigationPosition=e.isColumnAggr=e.isHierarchyLevelAggr=e.isHierarchyLevel=e.isColumn=e.isMeasure=e.getFilterType=e.isBasicFilterWithKeys=e.isFilterKeyColumnsTarget=e.AdvancedFilter=e.TupleFilter=e.IdentityFilter=e.BasicFilterWithKeys=e.BasicFilter=e.RelativeTimeFilter=e.RelativeDateFilter=e.TopNFilter=e.IncludeExcludeFilter=e.NotSupportedFilter=e.Filter=e.RelativeDateOperators=e.RelativeDateFilterTimeUnit=e.FilterType=e.FiltersLevel=e.FiltersOperations=e.MenuLocation=e.ContrastMode=e.TokenType=e.ViewMode=e.Permissions=e.SectionVisibility=e.ReportAlignment=e.HyperlinkClickBehavior=e.LayoutType=e.VisualContainerDisplayMode=e.BackgroundType=e.DisplayOption=e.PageSizeType=e.TraceType=void 0;var o,n=r(1);!function(t){t[t.Information=0]="Information",t[t.Verbose=1]="Verbose",t[t.Warning=2]="Warning",t[t.Error=3]="Error",t[t.ExpectedError=4]="ExpectedError",t[t.UnexpectedError=5]="UnexpectedError",t[t.Fatal=6]="Fatal"}(e.TraceType||(e.TraceType={})),function(t){t[t.Widescreen=0]="Widescreen",t[t.Standard=1]="Standard",t[t.Cortana=2]="Cortana",t[t.Letter=3]="Letter",t[t.Custom=4]="Custom",t[t.Mobile=5]="Mobile"}(e.PageSizeType||(e.PageSizeType={})),function(t){t[t.FitToPage=0]="FitToPage",t[t.FitToWidth=1]="FitToWidth",t[t.ActualSize=2]="ActualSize"}(e.DisplayOption||(e.DisplayOption={})),function(t){t[t.Default=0]="Default",t[t.Transparent=1]="Transparent"}(e.BackgroundType||(e.BackgroundType={})),function(t){t[t.Visible=0]="Visible",t[t.Hidden=1]="Hidden"}(e.VisualContainerDisplayMode||(e.VisualContainerDisplayMode={})),function(t){t[t.Master=0]="Master",t[t.Custom=1]="Custom",t[t.MobilePortrait=2]="MobilePortrait",t[t.MobileLandscape=3]="MobileLandscape"}(e.LayoutType||(e.LayoutType={})),function(t){t[t.Navigate=0]="Navigate",t[t.NavigateAndRaiseEvent=1]="NavigateAndRaiseEvent",t[t.RaiseEvent=2]="RaiseEvent"}(e.HyperlinkClickBehavior||(e.HyperlinkClickBehavior={})),function(t){t[t.Left=0]="Left",t[t.Center=1]="Center",t[t.Right=2]="Right",t[t.None=3]="None"}(e.ReportAlignment||(e.ReportAlignment={})),function(t){t[t.AlwaysVisible=0]="AlwaysVisible",t[t.HiddenInViewMode=1]="HiddenInViewMode"}(e.SectionVisibility||(e.SectionVisibility={})),function(t){t[t.Read=0]="Read",t[t.ReadWrite=1]="ReadWrite",t[t.Copy=2]="Copy",t[t.Create=4]="Create",t[t.All=7]="All"}(e.Permissions||(e.Permissions={})),function(t){t[t.View=0]="View",t[t.Edit=1]="Edit"}(e.ViewMode||(e.ViewMode={})),function(t){t[t.Aad=0]="Aad",t[t.Embed=1]="Embed"}(e.TokenType||(e.TokenType={})),function(t){t[t.None=0]="None",t[t.HighContrast1=1]="HighContrast1",t[t.HighContrast2=2]="HighContrast2",t[t.HighContrastBlack=3]="HighContrastBlack",t[t.HighContrastWhite=4]="HighContrastWhite"}(e.ContrastMode||(e.ContrastMode={})),function(t){t[t.Bottom=0]="Bottom",t[t.Top=1]="Top"}(e.MenuLocation||(e.MenuLocation={})),function(t){t[t.RemoveAll=0]="RemoveAll",t[t.ReplaceAll=1]="ReplaceAll",t[t.Add=2]="Add",t[t.Replace=3]="Replace"}(e.FiltersOperations||(e.FiltersOperations={})),function(t){t[t.Report=0]="Report",t[t.Page=1]="Page",t[t.Visual=2]="Visual"}(e.FiltersLevel||(e.FiltersLevel={})),function(t){t[t.Advanced=0]="Advanced",t[t.Basic=1]="Basic",t[t.Unknown=2]="Unknown",t[t.IncludeExclude=3]="IncludeExclude",t[t.RelativeDate=4]="RelativeDate",t[t.TopN=5]="TopN",t[t.Tuple=6]="Tuple",t[t.RelativeTime=7]="RelativeTime",t[t.Identity=8]="Identity"}(o=e.FilterType||(e.FilterType={})),function(t){t[t.Days=0]="Days",t[t.Weeks=1]="Weeks",t[t.CalendarWeeks=2]="CalendarWeeks",t[t.Months=3]="Months",t[t.CalendarMonths=4]="CalendarMonths",t[t.Years=5]="Years",t[t.CalendarYears=6]="CalendarYears",t[t.Minutes=7]="Minutes",t[t.Hours=8]="Hours"}(e.RelativeDateFilterTimeUnit||(e.RelativeDateFilterTimeUnit={})),function(t){t[t.InLast=0]="InLast",t[t.InThis=1]="InThis",t[t.InNext=2]="InNext"}(e.RelativeDateOperators||(e.RelativeDateOperators={}));var l=function(){function t(t,e){this.target=t,this.filterType=e}return t.prototype.toJSON=function(){var t={$schema:this.schemaUrl,target:this.target,filterType:this.filterType};return void 0!==this.displaySettings&&(t.displaySettings=this.displaySettings),t},t}();e.Filter=l;var s=function(t){function e(r,i,a){var n=t.call(this,r,o.Unknown)||this;return n.message=i,n.notSupportedTypeName=a,n.schemaUrl=e.schemaUrl,n}return a(e,t),e.prototype.toJSON=function(){var e=t.prototype.toJSON.call(this);return e.message=this.message,e.notSupportedTypeName=this.notSupportedTypeName,e},e.schemaUrl="http://powerbi.com/product/schema#notSupported",e}(l);e.NotSupportedFilter=s;var u=function(t){function e(r,i,a){var n=t.call(this,r,o.IncludeExclude)||this;return n.values=a,n.isExclude=i,n.schemaUrl=e.schemaUrl,n}return a(e,t),e.prototype.toJSON=function(){var e=t.prototype.toJSON.call(this);return e.isExclude=this.isExclude,e.values=this.values,e},e.schemaUrl="http://powerbi.com/product/schema#includeExclude",e}(l);e.IncludeExcludeFilter=u;var d=function(t){function e(r,i,a,n){var l=t.call(this,r,o.TopN)||this;return l.operator=i,l.itemCount=a,l.schemaUrl=e.schemaUrl,l.orderBy=n,l}return a(e,t),e.prototype.toJSON=function(){var e=t.prototype.toJSON.call(this);return e.operator=this.operator,e.itemCount=this.itemCount,e.orderBy=this.orderBy,e},e.schemaUrl="http://powerbi.com/product/schema#topN",e}(l);e.TopNFilter=d;var c=function(t){function e(r,i,a,n,l){var s=t.call(this,r,o.RelativeDate)||this;return s.operator=i,s.timeUnitsCount=a,s.timeUnitType=n,s.includeToday=l,s.schemaUrl=e.schemaUrl,s}return a(e,t),e.prototype.toJSON=function(){var e=t.prototype.toJSON.call(this);return e.operator=this.operator,e.timeUnitsCount=this.timeUnitsCount,e.timeUnitType=this.timeUnitType,e.includeToday=this.includeToday,e},e.schemaUrl="http://powerbi.com/product/schema#relativeDate",e}(l);e.RelativeDateFilter=c;var p=function(t){function e(r,i,a,n){var l=t.call(this,r,o.RelativeTime)||this;return l.operator=i,l.timeUnitsCount=a,l.timeUnitType=n,l.schemaUrl=e.schemaUrl,l}return a(e,t),e.prototype.toJSON=function(){var e=t.prototype.toJSON.call(this);return e.operator=this.operator,e.timeUnitsCount=this.timeUnitsCount,e.timeUnitType=this.timeUnitType,e},e.schemaUrl="http://powerbi.com/product/schema#relativeTime",e}(l);e.RelativeTimeFilter=p;var f=function(t){function e(r,i){for(var a=[],n=2;n0&&!a)throw new Error("You should pass the values to be filtered for each key. You passed: no values and "+n+" keys");if(0===n&&a&&a.length>0)throw new Error("You passed key values but your target object doesn't contain the keys to be filtered");for(var l=0,s=o.keyValues;l2)throw new Error("AdvancedFilters may not have more than two conditions. You passed: "+a.length);if(1===l.length&&"And"!==i)throw new Error('Logical Operator must be "And" when there is only one condition provided');return s.conditions=l,s}return a(e,t),e.prototype.toJSON=function(){var e=t.prototype.toJSON.call(this);return e.logicalOperator=this.logicalOperator,e.conditions=this.conditions,e},e.schemaUrl="http://powerbi.com/product/schema#advanced",e}(l);function V(t){if(t.filterType)return t.filterType;var e=t,r=t;return"string"==typeof e.operator&&Array.isArray(e.values)?o.Basic:"string"==typeof r.logicalOperator&&Array.isArray(r.conditions)?o.Advanced:o.Unknown}function g(t){return!(!t.table||!t.column||t.aggregationFunction)}e.AdvancedFilter=m,e.isFilterKeyColumnsTarget=function(t){return g(t)&&!!t.keys},e.isBasicFilterWithKeys=function(t){return V(t)===o.Basic&&!!t.keyValues},e.getFilterType=V,e.isMeasure=function(t){return void 0!==t.table&&void 0!==t.measure},e.isColumn=g,e.isHierarchyLevel=function(t){return!(!(t.table&&t.hierarchy&&t.hierarchyLevel)||t.aggregationFunction)},e.isHierarchyLevelAggr=function(t){return!!(t.table&&t.hierarchy&&t.hierarchyLevel&&t.aggregationFunction)},e.isColumnAggr=function(t){return!!(t.table&&t.column&&t.aggregationFunction)},function(t){t[t.Bottom=0]="Bottom",t[t.Left=1]="Left"}(e.PageNavigationPosition||(e.PageNavigationPosition={})),function(t){t[t.Interactive=0]="Interactive",t[t.ResultOnly=1]="ResultOnly"}(e.QnaMode||(e.QnaMode={})),function(t){t[t.Summarized=0]="Summarized",t[t.Underlying=1]="Underlying"}(e.ExportDataType||(e.ExportDataType={})),function(t){t[t.Off=0]="Off",t[t.Presentation=1]="Presentation"}(e.BookmarksPlayMode||(e.BookmarksPlayMode={})),e.CommonErrorCodes={TokenExpired:"TokenExpired",NotFound:"PowerBIEntityNotFound",InvalidParameters:"Invalid parameters",LoadReportFailed:"LoadReportFailed",NotAuthorized:"PowerBINotAuthorizedException",FailedToLoadModel:"ExplorationContainer_FailedToLoadModel_DefaultDetails"},e.TextAlignment={Left:"left",Center:"center",Right:"right"},e.LegendPosition={Top:"Top",Bottom:"Bottom",Right:"Right",Left:"Left",TopCenter:"TopCenter",BottomCenter:"BottomCenter",RightCenter:"RightCenter",LeftCenter:"LeftCenter"},function(t){t[t.Ascending=1]="Ascending",t[t.Descending=2]="Descending"}(e.SortDirection||(e.SortDirection={}));var b=function(){function t(t){this.$schema=t}return t.prototype.toJSON=function(){return{$schema:this.$schema}},t}();e.Selector=b;var w=function(t){function e(r){var i=t.call(this,e.schemaUrl)||this;return i.pageName=r,i}return a(e,t),e.prototype.toJSON=function(){var e=t.prototype.toJSON.call(this);return e.pageName=this.pageName,e},e.schemaUrl="http://powerbi.com/product/schema#pageSelector",e}(b);e.PageSelector=w;var P=function(t){function e(r){var i=t.call(this,e.schemaUrl)||this;return i.visualName=r,i}return a(e,t),e.prototype.toJSON=function(){var e=t.prototype.toJSON.call(this);return e.visualName=this.visualName,e},e.schemaUrl="http://powerbi.com/product/schema#visualSelector",e}(b);e.VisualSelector=P;var _=function(t){function e(e){var r=t.call(this,P.schemaUrl)||this;return r.visualType=e,r}return a(e,t),e.prototype.toJSON=function(){var e=t.prototype.toJSON.call(this);return e.visualType=this.visualType,e},e.schemaUrl="http://powerbi.com/product/schema#visualTypeSelector",e}(b);e.VisualTypeSelector=_;var O=function(t){function e(e){var r=t.call(this,P.schemaUrl)||this;return r.target=e,r}return a(e,t),e.prototype.toJSON=function(){var e=t.prototype.toJSON.call(this);return e.target=this.target,e},e.schemaUrl="http://powerbi.com/product/schema#slicerTargetSelector",e}(b);function S(t){return Array.isArray(t)}function T(t){return t&&!!t.groupName}function E(t){return Array.isArray(t)}function F(t){var e=t.message;return e||(e=t.path+" is invalid. Not meeting "+t.keyword+" constraint"),{message:e}}e.SlicerTargetSelector=O,function(t){t[t.Enabled=0]="Enabled",t[t.Disabled=1]="Disabled",t[t.Hidden=2]="Hidden"}(e.CommandDisplayOption||(e.CommandDisplayOption={})),function(t){t[t.Grouping=0]="Grouping",t[t.Measure=1]="Measure",t[t.GroupingOrMeasure=2]="GroupingOrMeasure"}(e.VisualDataRoleKind||(e.VisualDataRoleKind={})),function(t){t[t.Measure=0]="Measure",t[t.Grouping=1]="Grouping"}(e.VisualDataRoleKindPreference||(e.VisualDataRoleKindPreference={})),e.isOnLoadFilters=function(t){return t&&!S(t)},e.isReportFiltersArray=S,e.isFlatMenuExtension=function(t){return t&&!T(t)},e.isGroupedMenuExtension=T,e.isIExtensions=function(t){return t&&!E(t)},e.isIExtensionArray=E,e.validateVisualSelector=function(t){var e=n.Validators.visualSelectorValidator.validate(t);return e?e.map(F):void 0},e.validateSlicer=function(t){var e=n.Validators.slicerValidator.validate(t);return e?e.map(F):void 0},e.validateSlicerState=function(t){var e=n.Validators.slicerStateValidator.validate(t);return e?e.map(F):void 0},e.validatePlayBookmarkRequest=function(t){var e=n.Validators.playBookmarkRequestValidator.validate(t);return e?e.map(F):void 0},e.validateAddBookmarkRequest=function(t){var e=n.Validators.addBookmarkRequestValidator.validate(t);return e?e.map(F):void 0},e.validateApplyBookmarkByNameRequest=function(t){var e=n.Validators.applyBookmarkByNameRequestValidator.validate(t);return e?e.map(F):void 0},e.validateApplyBookmarkStateRequest=function(t){var e=n.Validators.applyBookmarkStateRequestValidator.validate(t);return e?e.map(F):void 0},e.validateCaptureBookmarkRequest=function(t){var e=n.Validators.captureBookmarkRequestValidator.validate(t);return e?e.map(F):void 0},e.validateSettings=function(t){var e=n.Validators.settingsValidator.validate(t);return e?e.map(F):void 0},e.validatePanes=function(t){var e=n.Validators.reportPanesValidator.validate(t);return e?e.map(F):void 0},e.validateBookmarksPane=function(t){var e=n.Validators.bookmarksPaneValidator.validate(t);return e?e.map(F):void 0},e.validateFiltersPane=function(t){var e=n.Validators.filtersPaneValidator.validate(t);return e?e.map(F):void 0},e.validateFieldsPane=function(t){var e=n.Validators.fieldsPaneValidator.validate(t);return e?e.map(F):void 0},e.validatePageNavigationPane=function(t){var e=n.Validators.pageNavigationPaneValidator.validate(t);return e?e.map(F):void 0},e.validateSelectionPane=function(t){var e=n.Validators.selectionPaneValidator.validate(t);return e?e.map(F):void 0},e.validateSyncSlicersPane=function(t){var e=n.Validators.syncSlicersPaneValidator.validate(t);return e?e.map(F):void 0},e.validateVisualizationsPane=function(t){var e=n.Validators.visualizationsPaneValidator.validate(t);return e?e.map(F):void 0},e.validateCustomPageSize=function(t){var e=n.Validators.customPageSizeValidator.validate(t);return e?e.map(F):void 0},e.validateExtension=function(t){var e=n.Validators.extensionValidator.validate(t);return e?e.map(F):void 0},e.validateMenuGroupExtension=function(t){var e=n.Validators.menuGroupExtensionValidator.validate(t);return e?e.map(F):void 0},e.validateReportLoad=function(t){var e=n.Validators.reportLoadValidator.validate(t);return e?e.map(F):void 0},e.validatePaginatedReportLoad=function(t){var e=n.Validators.paginatedReportLoadValidator.validate(t);return e?e.map(F):void 0},e.validateCreateReport=function(t){var e=n.Validators.reportCreateValidator.validate(t);return e?e.map(F):void 0},e.validateDashboardLoad=function(t){var e=n.Validators.dashboardLoadValidator.validate(t);return e?e.map(F):void 0},e.validateTileLoad=function(t){var e=n.Validators.tileLoadValidator.validate(t);return e?e.map(F):void 0},e.validatePage=function(t){var e=n.Validators.pageValidator.validate(t);return e?e.map(F):void 0},e.validateFilter=function(t){var e=n.Validators.filterValidator.validate(t);return e?e.map(F):void 0},e.validateUpdateFiltersRequest=function(t){var e=n.Validators.updateFiltersRequestValidator.validate(t);return e?e.map(F):void 0},e.validateSaveAsParameters=function(t){var e=n.Validators.saveAsParametersValidator.validate(t);return e?e.map(F):void 0},e.validateLoadQnaConfiguration=function(t){var e=n.Validators.loadQnaValidator.validate(t);return e?e.map(F):void 0},e.validateQnaInterpretInputData=function(t){var e=n.Validators.qnaInterpretInputDataValidator.validate(t);return e?e.map(F):void 0},e.validateExportDataRequest=function(t){var e=n.Validators.exportDataRequestValidator.validate(t);return e?e.map(F):void 0},e.validateVisualHeader=function(t){var e=n.Validators.visualHeaderValidator.validate(t);return e?e.map(F):void 0},e.validateVisualSettings=function(t){var e=n.Validators.visualSettingsValidator.validate(t);return e?e.map(F):void 0},e.validateCommandsSettings=function(t){var e=n.Validators.commandsSettingsValidator.validate(t);return e?e.map(F):void 0},e.validateCustomTheme=function(t){var e=n.Validators.customThemeValidator.validate(t);return e?e.map(F):void 0},e.validateZoomLevel=function(t){var e=n.Validators.zoomLevelValidator.validate(t);return e?e.map(F):void 0}},function(t,e,r){Object.defineProperty(e,"__esModule",{value:!0}),e.Validators=void 0;var i=r(2),a=r(5),o=r(6),n=r(7),l=r(8),s=r(9),u=r(10),d=r(11),c=r(12),p=r(13),f=r(14),h=r(15),v=r(16),y=r(17),m=r(18),V=r(19),g=r(20),b=r(21),w=r(22),P=r(23),_=r(24),O=r(25),S=r(26),T=r(27),E=r(28),F=r(29),R=r(4),x=r(30);e.Validators={addBookmarkRequestValidator:new a.AddBookmarkRequestValidator,advancedFilterTypeValidator:new R.EnumValidator([0]),advancedFilterValidator:new c.AdvancedFilterValidator,anyArrayValidator:new R.ArrayValidator([new S.AnyOfValidator([new R.StringValidator,new R.NumberValidator,new R.BooleanValidator])]),anyFilterValidator:new S.AnyOfValidator([new c.BasicFilterValidator,new c.AdvancedFilterValidator,new c.IncludeExcludeFilterValidator,new c.NotSupportedFilterValidator,new c.RelativeDateFilterValidator,new c.TopNFilterValidator,new c.RelativeTimeFilterValidator]),anyValueValidator:new S.AnyOfValidator([new R.StringValidator,new R.NumberValidator,new R.BooleanValidator]),actionBarValidator:new i.ActionBarValidator,applyBookmarkByNameRequestValidator:new a.ApplyBookmarkByNameRequestValidator,applyBookmarkStateRequestValidator:new a.ApplyBookmarkStateRequestValidator,applyBookmarkValidator:new S.AnyOfValidator([new a.ApplyBookmarkByNameRequestValidator,new a.ApplyBookmarkStateRequestValidator]),backgroundValidator:new R.EnumValidator([0,1]),basicFilterTypeValidator:new R.EnumValidator([1]),basicFilterValidator:new c.BasicFilterValidator,booleanArrayValidator:new R.BooleanArrayValidator,booleanValidator:new R.BooleanValidator,bookmarksPaneValidator:new h.BookmarksPaneValidator,captureBookmarkOptionsValidator:new a.CaptureBookmarkOptionsValidator,captureBookmarkRequestValidator:new a.CaptureBookmarkRequestValidator,commandDisplayOptionValidator:new R.EnumValidator([0,1,2]),commandExtensionSelectorValidator:new S.AnyOfValidator([new b.VisualSelectorValidator,new b.VisualTypeSelectorValidator]),commandExtensionArrayValidator:new R.ArrayValidator([new d.CommandExtensionValidator]),commandExtensionValidator:new d.CommandExtensionValidator,commandsSettingsArrayValidator:new R.ArrayValidator([new o.CommandsSettingsValidator]),commandsSettingsValidator:new o.CommandsSettingsValidator,conditionItemValidator:new c.ConditionItemValidator,contrastModeValidator:new R.EnumValidator([0,1,2,3,4]),customLayoutDisplayOptionValidator:new R.EnumValidator([0,1,2]),customLayoutValidator:new p.CustomLayoutValidator,customPageSizeValidator:new f.CustomPageSizeValidator,customThemeValidator:new n.CustomThemeValidator,dashboardLoadValidator:new l.DashboardLoadValidator,datasetBindingValidator:new s.DatasetBindingValidator,displayStateModeValidator:new R.EnumValidator([0,1]),displayStateValidator:new p.DisplayStateValidator,exportDataRequestValidator:new u.ExportDataRequestValidator,extensionArrayValidator:new R.ArrayValidator([new d.ExtensionValidator]),extensionsValidator:new S.AnyOfValidator([new R.ArrayValidator([new d.ExtensionValidator]),new d.ExtensionsValidator]),extensionPointsValidator:new d.ExtensionPointsValidator,extensionValidator:new d.ExtensionValidator,fieldForbiddenValidator:new T.FieldForbiddenValidator,fieldRequiredValidator:new E.FieldRequiredValidator,fieldsPaneValidator:new h.FieldsPaneValidator,filterColumnTargetValidator:new c.FilterColumnTargetValidator,filterDisplaySettingsValidator:new c.FilterDisplaySettingsValidator,filterConditionsValidator:new R.ArrayValidator([new c.ConditionItemValidator]),filterHierarchyTargetValidator:new c.FilterHierarchyTargetValidator,filterMeasureTargetValidator:new c.FilterMeasureTargetValidator,filterTargetValidator:new S.AnyOfValidator([new c.FilterColumnTargetValidator,new c.FilterHierarchyTargetValidator,new c.FilterMeasureTargetValidator]),filterValidator:new c.FilterValidator,filterTypeValidator:new R.EnumValidator([0,1,2,3,4,5,6,7]),filtersArrayValidator:new R.ArrayValidator([new c.FilterValidator]),filtersOperationsUpdateValidator:new R.EnumValidator([1,2,3]),filtersOperationsRemoveAllValidator:new R.EnumValidator([0]),filtersPaneValidator:new h.FiltersPaneValidator,hyperlinkClickBehaviorValidator:new R.EnumValidator([0,1,2]),includeExcludeFilterValidator:new c.IncludeExcludeFilterValidator,includeExludeFilterTypeValidator:new R.EnumValidator([3]),layoutTypeValidator:new R.EnumValidator([0,1,2,3]),loadQnaValidator:new v.LoadQnaValidator,menuExtensionValidator:new S.AnyOfValidator([new d.FlatMenuExtensionValidator,new d.GroupedMenuExtensionValidator]),menuGroupExtensionArrayValidator:new R.ArrayValidator([new d.MenuGroupExtensionValidator]),menuGroupExtensionValidator:new d.MenuGroupExtensionValidator,menuLocationValidator:new R.EnumValidator([0,1]),notSupportedFilterTypeValidator:new R.EnumValidator([2]),notSupportedFilterValidator:new c.NotSupportedFilterValidator,numberArrayValidator:new R.NumberArrayValidator,numberValidator:new R.NumberValidator,onLoadFiltersBaseValidator:new S.AnyOfValidator([new c.OnLoadFiltersBaseValidator,new c.OnLoadFiltersBaseRemoveOperationValidator]),pageLayoutValidator:new F.MapValidator([new R.StringValidator],[new p.VisualLayoutValidator]),pageNavigationPaneValidator:new h.PageNavigationPaneValidator,pageNavigationPositionValidator:new R.EnumValidator([0,1]),pageSizeTypeValidator:new R.EnumValidator([0,1,2,3,4,5]),pageSizeValidator:new f.PageSizeValidator,pageValidator:new f.PageValidator,pageViewFieldValidator:new f.PageViewFieldValidator,pagesLayoutValidator:new F.MapValidator([new R.StringValidator],[new p.PageLayoutValidator]),paginatedReportCommandsValidator:new o.PaginatedReportCommandsValidator,paginatedReportLoadValidator:new V.PaginatedReportLoadValidator,paginatedReportsettingsValidator:new w.PaginatedReportSettingsValidator,parametersPanelValidator:new x.ParametersPanelValidator,permissionsValidator:new R.EnumValidator([0,1,2,4,7]),playBookmarkRequestValidator:new a.PlayBookmarkRequestValidator,qnaInterpretInputDataValidator:new v.QnaInterpretInputDataValidator,qnaPanesValidator:new h.QnaPanesValidator,qnaSettingValidator:new v.QnaSettingsValidator,relativeDateFilterOperatorValidator:new R.EnumValidator([0,1,2]),relativeDateFilterTimeUnitTypeValidator:new R.EnumValidator([0,1,2,3,4,5,6]),relativeDateFilterTypeValidator:new R.EnumValidator([4]),relativeDateFilterValidator:new c.RelativeDateFilterValidator,relativeDateTimeFilterTypeValidator:new R.EnumValidator([4,7]),relativeDateTimeFilterUnitTypeValidator:new R.EnumValidator([0,1,2,3,4,5,6,7,8]),relativeTimeFilterTimeUnitTypeValidator:new R.EnumValidator([7,8]),relativeTimeFilterTypeValidator:new R.EnumValidator([7]),relativeTimeFilterValidator:new c.RelativeTimeFilterValidator,reportBarsValidator:new i.ReportBarsValidator,reportCreateValidator:new y.ReportCreateValidator,reportLoadFiltersValidator:new S.AnyOfValidator([new R.ArrayValidator([new c.FilterValidator]),new c.OnLoadFiltersValidator]),reportLoadValidator:new m.ReportLoadValidator,reportPanesValidator:new h.ReportPanesValidator,saveAsParametersValidator:new g.SaveAsParametersValidator,selectionPaneValidator:new h.SelectionPaneValidator,settingsValidator:new w.SettingsValidator,singleCommandSettingsValidator:new o.SingleCommandSettingsValidator,slicerSelectorValidator:new S.AnyOfValidator([new b.VisualSelectorValidator,new b.SlicerTargetSelectorValidator]),slicerStateValidator:new P.SlicerStateValidator,slicerTargetValidator:new S.AnyOfValidator([new c.FilterColumnTargetValidator,new c.FilterHierarchyTargetValidator,new c.FilterMeasureTargetValidator,new c.FilterKeyColumnsTargetValidator,new c.FilterKeyHierarchyTargetValidator]),slicerValidator:new P.SlicerValidator,stringArrayValidator:new R.StringArrayValidator,stringValidator:new R.StringValidator,syncSlicersPaneValidator:new h.SyncSlicersPaneValidator,tileLoadValidator:new _.TileLoadValidator,tokenTypeValidator:new R.EnumValidator([0,1]),topNFilterTypeValidator:new R.EnumValidator([5]),topNFilterValidator:new c.TopNFilterValidator,updateFiltersRequestValidator:new S.AnyOfValidator([new c.UpdateFiltersRequestValidator,new c.RemoveFiltersRequestValidator]),viewModeValidator:new R.EnumValidator([0,1]),visualCommandSelectorValidator:new S.AnyOfValidator([new b.VisualSelectorValidator,new b.VisualTypeSelectorValidator]),visualHeaderSelectorValidator:new S.AnyOfValidator([new b.VisualSelectorValidator,new b.VisualTypeSelectorValidator]),visualHeaderSettingsValidator:new O.VisualHeaderSettingsValidator,visualHeaderValidator:new O.VisualHeaderValidator,visualHeadersValidator:new R.ArrayValidator([new O.VisualHeaderValidator]),visualizationsPaneValidator:new h.VisualizationsPaneValidator,visualLayoutValidator:new p.VisualLayoutValidator,visualSelectorValidator:new b.VisualSelectorValidator,visualSettingsValidator:new O.VisualSettingsValidator,visualTypeSelectorValidator:new b.VisualTypeSelectorValidator,zoomLevelValidator:new R.RangeValidator(.25,4)}},function(t,e,r){var i,a=this&&this.__extends||(i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,"__esModule",{value:!0}),e.ActionBarValidator=e.ReportBarsValidator=void 0;var o=r(3),n=r(4),l=r(1),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.validate=function(e,r,i){if(null==e)return null;var a=t.prototype.validate.call(this,e,r,i);if(a)return a;var n=[{field:"actionBar",validators:[l.Validators.actionBarValidator]}];return new o.MultipleFieldsValidator(n).validate(e,r,i)},e}(n.ObjectValidator);e.ReportBarsValidator=s;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.validate=function(e,r,i){if(null==e)return null;var a=t.prototype.validate.call(this,e,r,i);if(a)return a;var n=[{field:"visible",validators:[l.Validators.booleanValidator]}];return new o.MultipleFieldsValidator(n).validate(e,r,i)},e}(n.ObjectValidator);e.ActionBarValidator=u},function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.MultipleFieldsValidator=void 0;var r=function(){function t(t){this.fieldValidatorsPairs=t}return t.prototype.validate=function(t,e,r){if(!this.fieldValidatorsPairs)return null;for(var i=e?e+"."+r:r,a=0,o=this.fieldValidatorsPairs;athis.maxValue||e0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]0?"&":"?";return t+=i+e+"="+r},e.isSavedInternal=function(t,e,a){return r(this,void 0,void 0,(function(){return i(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,t.get("/report/hasUnsavedChanges",{uid:e},a)];case 1:return[2,!r.sent().body];case 2:throw r.sent().body;case 3:return[2]}}))}))},e.isRDLEmbed=function(t){return t&&t.toLowerCase().indexOf("/rdlembed?")>=0},e.autoAuthInEmbedUrl=function(t){return t&&decodeURIComponent(t).toLowerCase().indexOf("autoauth=true")>=0},e.getRandomValue=o,e.getTimeDiffInMilliseconds=function(t,e){return Math.abs(t.getTime()-e.getTime())}},function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.FilterBuilder=void 0;var r=function(){function t(){}return t.prototype.withTargetObject=function(t){return this.target=t,this},t.prototype.withColumnTarget=function(t,e){return this.target={table:t,column:e},this},t.prototype.withMeasureTarget=function(t,e){return this.target={table:t,measure:e},this},t.prototype.withHierarchyLevelTarget=function(t,e,r){return this.target={table:t,hierarchy:e,hierarchyLevel:r},this},t.prototype.withColumnAggregation=function(t,e,r){return this.target={table:t,column:e,aggregationFunction:r},this},t.prototype.withHierarchyLevelAggregationTarget=function(t,e,r,i){return this.target={table:t,hierarchy:e,hierarchyLevel:r,aggregationFunction:i},this},t}();e.FilterBuilder=r},function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.EmbedUrlNotSupported=e.APINotSupportedForRDLError=void 0,e.APINotSupportedForRDLError="This API is currently not supported for RDL reports",e.EmbedUrlNotSupported="Embed URL is invalid for this scenario. Please use Power BI REST APIs to get the valid URL"},function(t,e,r){var i,a=this&&this.__extends||(i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__awaiter||function(t,e,r,i){return new(r||(r=Promise))((function(a,o){function n(t){try{s(i.next(t))}catch(t){o(t)}}function l(t){try{s(i.throw(t))}catch(t){o(t)}}function s(t){var e;t.done?a(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(n,l)}s((i=i.apply(t,e||[])).next())}))},n=this&&this.__generator||function(t,e){var r,i,a,o,n={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function l(o){return function(l){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;n;)try{if(r=1,i&&(a=2&o[0]?i.return:o[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,o[1])).done)return a;switch(i=0,a&&(o=[2&o[0],a.value]),o[0]){case 0:case 1:a=o;break;case 4:return n.label++,{value:o[1],done:!1};case 5:n.label++,i=o[1],o=[0];continue;case 7:o=n.ops.pop(),n.trys.pop();continue;default:if(!(a=n.trys,(a=a.length>0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]0&&!a)throw new Error("You should pass the values to be filtered for each key. You passed: no values and "+n+" keys");if(0===n&&a&&a.length>0)throw new Error("You passed key values but your target object doesn't contain the keys to be filtered");for(var l=0,s=o.keyValues;l2)throw new Error("AdvancedFilters may not have more than two conditions. You passed: "+a.length);if(1===l.length&&"And"!==i)throw new Error('Logical Operator must be "And" when there is only one condition provided');return s.conditions=l,s}return a(e,t),e.prototype.toJSON=function(){var e=t.prototype.toJSON.call(this);return e.logicalOperator=this.logicalOperator,e.conditions=this.conditions,e},e.schemaUrl="http://powerbi.com/product/schema#advanced",e}(l);function V(t){if(t.filterType)return t.filterType;var e=t,r=t;return"string"==typeof e.operator&&Array.isArray(e.values)?o.Basic:"string"==typeof r.logicalOperator&&Array.isArray(r.conditions)?o.Advanced:o.Unknown}function g(t){return!(!t.table||!t.column||t.aggregationFunction)}e.AdvancedFilter=m,e.isFilterKeyColumnsTarget=function(t){return g(t)&&!!t.keys},e.isBasicFilterWithKeys=function(t){return V(t)===o.Basic&&!!t.keyValues},e.getFilterType=V,e.isMeasure=function(t){return void 0!==t.table&&void 0!==t.measure},e.isColumn=g,e.isHierarchyLevel=function(t){return!(!(t.table&&t.hierarchy&&t.hierarchyLevel)||t.aggregationFunction)},e.isHierarchyLevelAggr=function(t){return!!(t.table&&t.hierarchy&&t.hierarchyLevel&&t.aggregationFunction)},e.isColumnAggr=function(t){return!!(t.table&&t.column&&t.aggregationFunction)},function(t){t[t.Bottom=0]="Bottom",t[t.Left=1]="Left"}(e.PageNavigationPosition||(e.PageNavigationPosition={})),function(t){t[t.Interactive=0]="Interactive",t[t.ResultOnly=1]="ResultOnly"}(e.QnaMode||(e.QnaMode={})),function(t){t[t.Summarized=0]="Summarized",t[t.Underlying=1]="Underlying"}(e.ExportDataType||(e.ExportDataType={})),function(t){t[t.Off=0]="Off",t[t.Presentation=1]="Presentation"}(e.BookmarksPlayMode||(e.BookmarksPlayMode={})),e.CommonErrorCodes={TokenExpired:"TokenExpired",NotFound:"PowerBIEntityNotFound",InvalidParameters:"Invalid parameters",LoadReportFailed:"LoadReportFailed",NotAuthorized:"PowerBINotAuthorizedException",FailedToLoadModel:"ExplorationContainer_FailedToLoadModel_DefaultDetails"},e.TextAlignment={Left:"left",Center:"center",Right:"right"},e.LegendPosition={Top:"Top",Bottom:"Bottom",Right:"Right",Left:"Left",TopCenter:"TopCenter",BottomCenter:"BottomCenter",RightCenter:"RightCenter",LeftCenter:"LeftCenter"},function(t){t[t.Ascending=1]="Ascending",t[t.Descending=2]="Descending"}(e.SortDirection||(e.SortDirection={}));var b=function(){function t(t){this.$schema=t}return t.prototype.toJSON=function(){return{$schema:this.$schema}},t}();e.Selector=b;var w=function(t){function e(r){var i=t.call(this,e.schemaUrl)||this;return i.pageName=r,i}return a(e,t),e.prototype.toJSON=function(){var e=t.prototype.toJSON.call(this);return e.pageName=this.pageName,e},e.schemaUrl="http://powerbi.com/product/schema#pageSelector",e}(b);e.PageSelector=w;var P=function(t){function e(r){var i=t.call(this,e.schemaUrl)||this;return i.visualName=r,i}return a(e,t),e.prototype.toJSON=function(){var e=t.prototype.toJSON.call(this);return e.visualName=this.visualName,e},e.schemaUrl="http://powerbi.com/product/schema#visualSelector",e}(b);e.VisualSelector=P;var _=function(t){function e(e){var r=t.call(this,P.schemaUrl)||this;return r.visualType=e,r}return a(e,t),e.prototype.toJSON=function(){var e=t.prototype.toJSON.call(this);return e.visualType=this.visualType,e},e.schemaUrl="http://powerbi.com/product/schema#visualTypeSelector",e}(b);e.VisualTypeSelector=_;var O=function(t){function e(e){var r=t.call(this,P.schemaUrl)||this;return r.target=e,r}return a(e,t),e.prototype.toJSON=function(){var e=t.prototype.toJSON.call(this);return e.target=this.target,e},e.schemaUrl="http://powerbi.com/product/schema#slicerTargetSelector",e}(b);function S(t){return Array.isArray(t)}function T(t){return t&&!!t.groupName}function E(t){return Array.isArray(t)}function F(t){var e=t.message;return e||(e=t.path+" is invalid. Not meeting "+t.keyword+" constraint"),{message:e}}e.SlicerTargetSelector=O,function(t){t[t.Enabled=0]="Enabled",t[t.Disabled=1]="Disabled",t[t.Hidden=2]="Hidden"}(e.CommandDisplayOption||(e.CommandDisplayOption={})),function(t){t[t.Grouping=0]="Grouping",t[t.Measure=1]="Measure",t[t.GroupingOrMeasure=2]="GroupingOrMeasure"}(e.VisualDataRoleKind||(e.VisualDataRoleKind={})),function(t){t[t.Measure=0]="Measure",t[t.Grouping=1]="Grouping"}(e.VisualDataRoleKindPreference||(e.VisualDataRoleKindPreference={})),e.isOnLoadFilters=function(t){return t&&!S(t)},e.isReportFiltersArray=S,e.isFlatMenuExtension=function(t){return t&&!T(t)},e.isGroupedMenuExtension=T,e.isIExtensions=function(t){return t&&!E(t)},e.isIExtensionArray=E,e.validateVisualSelector=function(t){var e=n.Validators.visualSelectorValidator.validate(t);return e?e.map(F):void 0},e.validateSlicer=function(t){var e=n.Validators.slicerValidator.validate(t);return e?e.map(F):void 0},e.validateSlicerState=function(t){var e=n.Validators.slicerStateValidator.validate(t);return e?e.map(F):void 0},e.validatePlayBookmarkRequest=function(t){var e=n.Validators.playBookmarkRequestValidator.validate(t);return e?e.map(F):void 0},e.validateAddBookmarkRequest=function(t){var e=n.Validators.addBookmarkRequestValidator.validate(t);return e?e.map(F):void 0},e.validateApplyBookmarkByNameRequest=function(t){var e=n.Validators.applyBookmarkByNameRequestValidator.validate(t);return e?e.map(F):void 0},e.validateApplyBookmarkStateRequest=function(t){var e=n.Validators.applyBookmarkStateRequestValidator.validate(t);return e?e.map(F):void 0},e.validateCaptureBookmarkRequest=function(t){var e=n.Validators.captureBookmarkRequestValidator.validate(t);return e?e.map(F):void 0},e.validateSettings=function(t){var e=n.Validators.settingsValidator.validate(t);return e?e.map(F):void 0},e.validatePanes=function(t){var e=n.Validators.reportPanesValidator.validate(t);return e?e.map(F):void 0},e.validateBookmarksPane=function(t){var e=n.Validators.bookmarksPaneValidator.validate(t);return e?e.map(F):void 0},e.validateFiltersPane=function(t){var e=n.Validators.filtersPaneValidator.validate(t);return e?e.map(F):void 0},e.validateFieldsPane=function(t){var e=n.Validators.fieldsPaneValidator.validate(t);return e?e.map(F):void 0},e.validatePageNavigationPane=function(t){var e=n.Validators.pageNavigationPaneValidator.validate(t);return e?e.map(F):void 0},e.validateSelectionPane=function(t){var e=n.Validators.selectionPaneValidator.validate(t);return e?e.map(F):void 0},e.validateSyncSlicersPane=function(t){var e=n.Validators.syncSlicersPaneValidator.validate(t);return e?e.map(F):void 0},e.validateVisualizationsPane=function(t){var e=n.Validators.visualizationsPaneValidator.validate(t);return e?e.map(F):void 0},e.validateCustomPageSize=function(t){var e=n.Validators.customPageSizeValidator.validate(t);return e?e.map(F):void 0},e.validateExtension=function(t){var e=n.Validators.extensionValidator.validate(t);return e?e.map(F):void 0},e.validateMenuGroupExtension=function(t){var e=n.Validators.menuGroupExtensionValidator.validate(t);return e?e.map(F):void 0},e.validateReportLoad=function(t){var e=n.Validators.reportLoadValidator.validate(t);return e?e.map(F):void 0},e.validatePaginatedReportLoad=function(t){var e=n.Validators.paginatedReportLoadValidator.validate(t);return e?e.map(F):void 0},e.validateCreateReport=function(t){var e=n.Validators.reportCreateValidator.validate(t);return e?e.map(F):void 0},e.validateDashboardLoad=function(t){var e=n.Validators.dashboardLoadValidator.validate(t);return e?e.map(F):void 0},e.validateTileLoad=function(t){var e=n.Validators.tileLoadValidator.validate(t);return e?e.map(F):void 0},e.validatePage=function(t){var e=n.Validators.pageValidator.validate(t);return e?e.map(F):void 0},e.validateFilter=function(t){var e=n.Validators.filterValidator.validate(t);return e?e.map(F):void 0},e.validateUpdateFiltersRequest=function(t){var e=n.Validators.updateFiltersRequestValidator.validate(t);return e?e.map(F):void 0},e.validateSaveAsParameters=function(t){var e=n.Validators.saveAsParametersValidator.validate(t);return e?e.map(F):void 0},e.validateLoadQnaConfiguration=function(t){var e=n.Validators.loadQnaValidator.validate(t);return e?e.map(F):void 0},e.validateQnaInterpretInputData=function(t){var e=n.Validators.qnaInterpretInputDataValidator.validate(t);return e?e.map(F):void 0},e.validateExportDataRequest=function(t){var e=n.Validators.exportDataRequestValidator.validate(t);return e?e.map(F):void 0},e.validateVisualHeader=function(t){var e=n.Validators.visualHeaderValidator.validate(t);return e?e.map(F):void 0},e.validateVisualSettings=function(t){var e=n.Validators.visualSettingsValidator.validate(t);return e?e.map(F):void 0},e.validateCommandsSettings=function(t){var e=n.Validators.commandsSettingsValidator.validate(t);return e?e.map(F):void 0},e.validateCustomTheme=function(t){var e=n.Validators.customThemeValidator.validate(t);return e?e.map(F):void 0},e.validateZoomLevel=function(t){var e=n.Validators.zoomLevelValidator.validate(t);return e?e.map(F):void 0}},function(t,e,r){Object.defineProperty(e,"__esModule",{value:!0}),e.Validators=void 0;var i=r(2),a=r(5),o=r(6),n=r(7),l=r(8),s=r(9),u=r(10),d=r(11),c=r(12),p=r(13),f=r(14),h=r(15),v=r(16),y=r(17),m=r(18),V=r(19),g=r(20),b=r(21),w=r(22),P=r(23),_=r(24),O=r(25),S=r(26),T=r(27),E=r(28),F=r(29),R=r(4),x=r(30);e.Validators={addBookmarkRequestValidator:new a.AddBookmarkRequestValidator,advancedFilterTypeValidator:new R.EnumValidator([0]),advancedFilterValidator:new c.AdvancedFilterValidator,anyArrayValidator:new R.ArrayValidator([new S.AnyOfValidator([new R.StringValidator,new R.NumberValidator,new R.BooleanValidator])]),anyFilterValidator:new S.AnyOfValidator([new c.BasicFilterValidator,new c.AdvancedFilterValidator,new c.IncludeExcludeFilterValidator,new c.NotSupportedFilterValidator,new c.RelativeDateFilterValidator,new c.TopNFilterValidator,new c.RelativeTimeFilterValidator]),anyValueValidator:new S.AnyOfValidator([new R.StringValidator,new R.NumberValidator,new R.BooleanValidator]),actionBarValidator:new i.ActionBarValidator,applyBookmarkByNameRequestValidator:new a.ApplyBookmarkByNameRequestValidator,applyBookmarkStateRequestValidator:new a.ApplyBookmarkStateRequestValidator,applyBookmarkValidator:new S.AnyOfValidator([new a.ApplyBookmarkByNameRequestValidator,new a.ApplyBookmarkStateRequestValidator]),backgroundValidator:new R.EnumValidator([0,1]),basicFilterTypeValidator:new R.EnumValidator([1]),basicFilterValidator:new c.BasicFilterValidator,booleanArrayValidator:new R.BooleanArrayValidator,booleanValidator:new R.BooleanValidator,bookmarksPaneValidator:new h.BookmarksPaneValidator,captureBookmarkOptionsValidator:new a.CaptureBookmarkOptionsValidator,captureBookmarkRequestValidator:new a.CaptureBookmarkRequestValidator,commandDisplayOptionValidator:new R.EnumValidator([0,1,2]),commandExtensionSelectorValidator:new S.AnyOfValidator([new b.VisualSelectorValidator,new b.VisualTypeSelectorValidator]),commandExtensionArrayValidator:new R.ArrayValidator([new d.CommandExtensionValidator]),commandExtensionValidator:new d.CommandExtensionValidator,commandsSettingsArrayValidator:new R.ArrayValidator([new o.CommandsSettingsValidator]),commandsSettingsValidator:new o.CommandsSettingsValidator,conditionItemValidator:new c.ConditionItemValidator,contrastModeValidator:new R.EnumValidator([0,1,2,3,4]),customLayoutDisplayOptionValidator:new R.EnumValidator([0,1,2]),customLayoutValidator:new p.CustomLayoutValidator,customPageSizeValidator:new f.CustomPageSizeValidator,customThemeValidator:new n.CustomThemeValidator,dashboardLoadValidator:new l.DashboardLoadValidator,datasetBindingValidator:new s.DatasetBindingValidator,displayStateModeValidator:new R.EnumValidator([0,1]),displayStateValidator:new p.DisplayStateValidator,exportDataRequestValidator:new u.ExportDataRequestValidator,extensionArrayValidator:new R.ArrayValidator([new d.ExtensionValidator]),extensionsValidator:new S.AnyOfValidator([new R.ArrayValidator([new d.ExtensionValidator]),new d.ExtensionsValidator]),extensionPointsValidator:new d.ExtensionPointsValidator,extensionValidator:new d.ExtensionValidator,fieldForbiddenValidator:new T.FieldForbiddenValidator,fieldRequiredValidator:new E.FieldRequiredValidator,fieldsPaneValidator:new h.FieldsPaneValidator,filterColumnTargetValidator:new c.FilterColumnTargetValidator,filterDisplaySettingsValidator:new c.FilterDisplaySettingsValidator,filterConditionsValidator:new R.ArrayValidator([new c.ConditionItemValidator]),filterHierarchyTargetValidator:new c.FilterHierarchyTargetValidator,filterMeasureTargetValidator:new c.FilterMeasureTargetValidator,filterTargetValidator:new S.AnyOfValidator([new c.FilterColumnTargetValidator,new c.FilterHierarchyTargetValidator,new c.FilterMeasureTargetValidator]),filterValidator:new c.FilterValidator,filterTypeValidator:new R.EnumValidator([0,1,2,3,4,5,6,7]),filtersArrayValidator:new R.ArrayValidator([new c.FilterValidator]),filtersOperationsUpdateValidator:new R.EnumValidator([1,2,3]),filtersOperationsRemoveAllValidator:new R.EnumValidator([0]),filtersPaneValidator:new h.FiltersPaneValidator,hyperlinkClickBehaviorValidator:new R.EnumValidator([0,1,2]),includeExcludeFilterValidator:new c.IncludeExcludeFilterValidator,includeExludeFilterTypeValidator:new R.EnumValidator([3]),layoutTypeValidator:new R.EnumValidator([0,1,2,3]),loadQnaValidator:new v.LoadQnaValidator,menuExtensionValidator:new S.AnyOfValidator([new d.FlatMenuExtensionValidator,new d.GroupedMenuExtensionValidator]),menuGroupExtensionArrayValidator:new R.ArrayValidator([new d.MenuGroupExtensionValidator]),menuGroupExtensionValidator:new d.MenuGroupExtensionValidator,menuLocationValidator:new R.EnumValidator([0,1]),notSupportedFilterTypeValidator:new R.EnumValidator([2]),notSupportedFilterValidator:new c.NotSupportedFilterValidator,numberArrayValidator:new R.NumberArrayValidator,numberValidator:new R.NumberValidator,onLoadFiltersBaseValidator:new S.AnyOfValidator([new c.OnLoadFiltersBaseValidator,new c.OnLoadFiltersBaseRemoveOperationValidator]),pageLayoutValidator:new F.MapValidator([new R.StringValidator],[new p.VisualLayoutValidator]),pageNavigationPaneValidator:new h.PageNavigationPaneValidator,pageNavigationPositionValidator:new R.EnumValidator([0,1]),pageSizeTypeValidator:new R.EnumValidator([0,1,2,3,4,5]),pageSizeValidator:new f.PageSizeValidator,pageValidator:new f.PageValidator,pageViewFieldValidator:new f.PageViewFieldValidator,pagesLayoutValidator:new F.MapValidator([new R.StringValidator],[new p.PageLayoutValidator]),paginatedReportCommandsValidator:new o.PaginatedReportCommandsValidator,paginatedReportLoadValidator:new V.PaginatedReportLoadValidator,paginatedReportsettingsValidator:new w.PaginatedReportSettingsValidator,parametersPanelValidator:new x.ParametersPanelValidator,permissionsValidator:new R.EnumValidator([0,1,2,4,7]),playBookmarkRequestValidator:new a.PlayBookmarkRequestValidator,qnaInterpretInputDataValidator:new v.QnaInterpretInputDataValidator,qnaPanesValidator:new h.QnaPanesValidator,qnaSettingValidator:new v.QnaSettingsValidator,relativeDateFilterOperatorValidator:new R.EnumValidator([0,1,2]),relativeDateFilterTimeUnitTypeValidator:new R.EnumValidator([0,1,2,3,4,5,6]),relativeDateFilterTypeValidator:new R.EnumValidator([4]),relativeDateFilterValidator:new c.RelativeDateFilterValidator,relativeDateTimeFilterTypeValidator:new R.EnumValidator([4,7]),relativeDateTimeFilterUnitTypeValidator:new R.EnumValidator([0,1,2,3,4,5,6,7,8]),relativeTimeFilterTimeUnitTypeValidator:new R.EnumValidator([7,8]),relativeTimeFilterTypeValidator:new R.EnumValidator([7]),relativeTimeFilterValidator:new c.RelativeTimeFilterValidator,reportBarsValidator:new i.ReportBarsValidator,reportCreateValidator:new y.ReportCreateValidator,reportLoadFiltersValidator:new S.AnyOfValidator([new R.ArrayValidator([new c.FilterValidator]),new c.OnLoadFiltersValidator]),reportLoadValidator:new m.ReportLoadValidator,reportPanesValidator:new h.ReportPanesValidator,saveAsParametersValidator:new g.SaveAsParametersValidator,selectionPaneValidator:new h.SelectionPaneValidator,settingsValidator:new w.SettingsValidator,singleCommandSettingsValidator:new o.SingleCommandSettingsValidator,slicerSelectorValidator:new S.AnyOfValidator([new b.VisualSelectorValidator,new b.SlicerTargetSelectorValidator]),slicerStateValidator:new P.SlicerStateValidator,slicerTargetValidator:new S.AnyOfValidator([new c.FilterColumnTargetValidator,new c.FilterHierarchyTargetValidator,new c.FilterMeasureTargetValidator,new c.FilterKeyColumnsTargetValidator,new c.FilterKeyHierarchyTargetValidator]),slicerValidator:new P.SlicerValidator,stringArrayValidator:new R.StringArrayValidator,stringValidator:new R.StringValidator,syncSlicersPaneValidator:new h.SyncSlicersPaneValidator,tileLoadValidator:new _.TileLoadValidator,tokenTypeValidator:new R.EnumValidator([0,1]),topNFilterTypeValidator:new R.EnumValidator([5]),topNFilterValidator:new c.TopNFilterValidator,updateFiltersRequestValidator:new S.AnyOfValidator([new c.UpdateFiltersRequestValidator,new c.RemoveFiltersRequestValidator]),viewModeValidator:new R.EnumValidator([0,1]),visualCommandSelectorValidator:new S.AnyOfValidator([new b.VisualSelectorValidator,new b.VisualTypeSelectorValidator]),visualHeaderSelectorValidator:new S.AnyOfValidator([new b.VisualSelectorValidator,new b.VisualTypeSelectorValidator]),visualHeaderSettingsValidator:new O.VisualHeaderSettingsValidator,visualHeaderValidator:new O.VisualHeaderValidator,visualHeadersValidator:new R.ArrayValidator([new O.VisualHeaderValidator]),visualizationsPaneValidator:new h.VisualizationsPaneValidator,visualLayoutValidator:new p.VisualLayoutValidator,visualSelectorValidator:new b.VisualSelectorValidator,visualSettingsValidator:new O.VisualSettingsValidator,visualTypeSelectorValidator:new b.VisualTypeSelectorValidator,zoomLevelValidator:new R.RangeValidator(.25,4)}},function(t,e,r){var i,a=this&&this.__extends||(i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,"__esModule",{value:!0}),e.ActionBarValidator=e.ReportBarsValidator=void 0;var o=r(3),n=r(4),l=r(1),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.validate=function(e,r,i){if(null==e)return null;var a=t.prototype.validate.call(this,e,r,i);if(a)return a;var n=[{field:"actionBar",validators:[l.Validators.actionBarValidator]}];return new o.MultipleFieldsValidator(n).validate(e,r,i)},e}(n.ObjectValidator);e.ReportBarsValidator=s;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.validate=function(e,r,i){if(null==e)return null;var a=t.prototype.validate.call(this,e,r,i);if(a)return a;var n=[{field:"visible",validators:[l.Validators.booleanValidator]}];return new o.MultipleFieldsValidator(n).validate(e,r,i)},e}(n.ObjectValidator);e.ActionBarValidator=u},function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.MultipleFieldsValidator=void 0;var r=function(){function t(t){this.fieldValidatorsPairs=t}return t.prototype.validate=function(t,e,r){if(!this.fieldValidatorsPairs)return null;for(var i=e?e+"."+r:r,a=0,o=this.fieldValidatorsPairs;athis.maxValue||e0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]0?"&":"?";return t+=i+e+"="+r},e.isSavedInternal=function(t,e,a){return r(this,void 0,void 0,(function(){return i(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,t.get("/report/hasUnsavedChanges",{uid:e},a)];case 1:return[2,!r.sent().body];case 2:throw r.sent().body;case 3:return[2]}}))}))},e.isRDLEmbed=function(t){return t&&t.toLowerCase().indexOf("/rdlembed?")>=0},e.autoAuthInEmbedUrl=function(t){return t&&decodeURIComponent(t).toLowerCase().indexOf("autoauth=true")>=0},e.getRandomValue=o,e.getTimeDiffInMilliseconds=function(t,e){return Math.abs(t.getTime()-e.getTime())}},function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.FilterBuilder=void 0;var r=function(){function t(){}return t.prototype.withTargetObject=function(t){return this.target=t,this},t.prototype.withColumnTarget=function(t,e){return this.target={table:t,column:e},this},t.prototype.withMeasureTarget=function(t,e){return this.target={table:t,measure:e},this},t.prototype.withHierarchyLevelTarget=function(t,e,r){return this.target={table:t,hierarchy:e,hierarchyLevel:r},this},t.prototype.withColumnAggregation=function(t,e,r){return this.target={table:t,column:e,aggregationFunction:r},this},t.prototype.withHierarchyLevelAggregationTarget=function(t,e,r,i){return this.target={table:t,hierarchy:e,hierarchyLevel:r,aggregationFunction:i},this},t}();e.FilterBuilder=r},function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.EmbedUrlNotSupported=e.APINotSupportedForRDLError=void 0,e.APINotSupportedForRDLError="This API is currently not supported for RDL reports",e.EmbedUrlNotSupported="Embed URL is invalid for this scenario. Please use Power BI REST APIs to get the valid URL"},function(t,e,r){var i,a=this&&this.__extends||(i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__awaiter||function(t,e,r,i){return new(r||(r=Promise))((function(a,o){function n(t){try{s(i.next(t))}catch(t){o(t)}}function l(t){try{s(i.throw(t))}catch(t){o(t)}}function s(t){var e;t.done?a(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(n,l)}s((i=i.apply(t,e||[])).next())}))},n=this&&this.__generator||function(t,e){var r,i,a,o,n={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function l(o){return function(l){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;n;)try{if(r=1,i&&(a=2&o[0]?i.return:o[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,o[1])).done)return a;switch(i=0,a&&(o=[2&o[0],a.value]),o[0]){case 0:case 1:a=o;break;case 4:return n.label++,{value:o[1],done:!1};case 5:n.label++,i=o[1],o=[0];continue;case 7:o=n.ops.pop(),n.trys.pop();continue;default:if(!(a=n.trys,(a=a.length>0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]0&&a[a.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1] { if (argv.chrome) { diff --git a/karma.conf.js b/karma.conf.js index d78bd733..a0a152a6 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -23,7 +23,7 @@ module.exports = function (config) { { pattern: './test/**/*.html', served: true, included: false } ], exclude: [], - reporters: argv.debug ? ['spec', 'kjhtml'] : ['spec', 'coverage', 'kjhtml'], + reporters: argv.chrome ? ['kjhtml'] : ['spec', 'junit'], autoWatch: true, browsers: [browserName], browserNoActivityTimeout: 300000, @@ -33,27 +33,24 @@ module.exports = function (config) { 'karma-jasmine', 'karma-spec-reporter', 'karma-phantomjs-launcher', - 'karma-coverage', - 'karma-jasmine-html-reporter' + 'karma-jasmine-html-reporter', + 'karma-junit-reporter' ], customLaunchers: { 'Chrome_headless': { - base: argv.debug ? 'Chrome' : 'ChromeHeadless', + base: 'Chrome', flags: flags.concat("--no-sandbox", "--window-size=800,800"), }, }, - preprocessors: { './tmp/**/*.js': ['coverage'] }, - coverageReporter: { - reporters: [ - { type: 'html' }, - { type: 'text-summary' } - ] + junitReporter: { + outputDir: 'tmp', + outputFile: 'testresults.xml', + useBrowserName: false }, retryLimit: 0, logLevel: argv.debug ? config.LOG_DEBUG : config.LOG_INFO, client: { clearContext: false, // leave Jasmine Spec Runner output visible in browser - args: argv.logMessages ? ['logMessages'] : [] } }); }; \ No newline at end of file diff --git a/package.json b/package.json index 5efe67df..3af94006 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "powerbi-client", - "version": "2.18.7", + "version": "2.19.1", "description": "JavaScript library for embedding Power BI into your apps. Provides service which makes it easy to embed different types of components and an object model which allows easy interaction with these components such as changing pages, applying filters, and responding to data selection.", "main": "dist/powerbi.js", "types": "dist/powerbi-client.d.ts", @@ -16,7 +16,7 @@ "prestart": "cd demo && npm install", "test": "gulp test", "gulp": "gulp", - "tests": "npm test -- --chrome --watch --debug" + "tests": "npm test -- --chrome --watch" }, "keywords": [ "microsoft", @@ -64,10 +64,10 @@ "json-loader": "^0.5.4", "karma": "6.3.5", "karma-chrome-launcher": "^3.1.0", - "karma-coverage": "^2.0.3", "karma-firefox-launcher": "^1.2.0", "karma-jasmine": "4.0.1", "karma-jasmine-html-reporter": "1.7.0", + "karma-junit-reporter": "^2.0.1", "karma-phantomjs-launcher": "^1.0.4", "karma-spec-reporter": "0.0.32", "moment": "^2.14.1", @@ -81,7 +81,7 @@ }, "dependencies": { "http-post-message": "^0.2", - "powerbi-models": "^1.9.7", + "powerbi-models": "^1.9.8", "powerbi-router": "^0.1", "window-post-message-proxy": "^0.2" }, diff --git a/src/config.ts b/src/config.ts index 3e4a525e..0761c8aa 100644 --- a/src/config.ts +++ b/src/config.ts @@ -3,7 +3,7 @@ /** @ignore *//** */ const config = { - version: '2.18.7', + version: '2.19.1', type: 'js' }; diff --git a/src/embed.ts b/src/embed.ts index d4bb84c7..3489ffd8 100644 --- a/src/embed.ts +++ b/src/embed.ts @@ -70,7 +70,7 @@ export interface IInternalEventHandler { */ export abstract class Embed { /** @hidden */ - static allowedEvents = ["loaded", "saved", "rendered", "saveAsTriggered", "error", "dataSelected", "buttonClicked"]; + static allowedEvents = ["loaded", "saved", "rendered", "saveAsTriggered", "error", "dataSelected", "buttonClicked", "info"]; /** @hidden */ static accessTokenAttribute = 'powerbi-access-token'; /** @hidden */ @@ -108,6 +108,14 @@ export abstract class Embed { */ eventHandlers: IInternalEventHandler[]; + /** + * Gets or sets the eventHooks. + * + * @type {models.EventHooks} + * @hidden + */ + eventHooks: models.EventHooks; + /** * Gets or sets the Power BI embed service. * @@ -537,14 +545,48 @@ export abstract class Embed { this.config.accessToken = this.getAccessToken(this.service.accessToken); } - const registerQueryCallback = !!(this.config).eventHooks?.applicationContextProvider; + this.eventHooks = (this.config).eventHooks; + this.validateEventHooks(this.eventHooks); delete (this.config).eventHooks; - if (registerQueryCallback && this.embedtype === "report") - this.config.embedUrl = addParamToUrl(this.config.embedUrl, "registerQueryCallback", "true"); this.configChanged(isBootstrap); } + /** + * Validate EventHooks + * + * @private + * @param {models.EventHooks} eventHooks + * @hidden + */ + private validateEventHooks(eventHooks: models.EventHooks): void { + if (!eventHooks) { + return; + } + + for (let key in eventHooks) { + if (eventHooks.hasOwnProperty(key) && typeof eventHooks[key] !== 'function') { + throw new Error(key + " must be a function"); + } + } + + const applicationContextProvider = eventHooks.applicationContextProvider; + if (!!applicationContextProvider) { + if (this.embedtype.toLowerCase() !== "report") { + throw new Error("applicationContextProvider is only supported in report embed"); + } + + this.config.embedUrl = addParamToUrl(this.config.embedUrl, "registerQueryCallback", "true"); + } + + const accessTokenProvider = eventHooks.accessTokenProvider; + if (!!accessTokenProvider) { + if (this.embedtype.toLowerCase() !== "report" || this.config.tokenType !== models.TokenType.Aad) { + throw new Error("accessTokenProvider is only supported in report SaaS embed"); + } + } + } + /** * Adds locale parameters to embedUrl * diff --git a/src/powerbi-client.ts b/src/powerbi-client.ts index bcaf2f21..4466121e 100644 --- a/src/powerbi-client.ts +++ b/src/powerbi-client.ts @@ -60,6 +60,7 @@ declare var powerbi: service.Service; declare global { interface Window { powerbi: service.Service; + powerBISDKGlobalServiceInstanceName?: string; } } @@ -69,4 +70,10 @@ declare global { * Note: create an instance of the class with the default configuration for normal usage, or save the class so that you can create an instance of the service. */ var powerbi = new service.Service(factories.hpmFactory, factories.wpmpFactory, factories.routerFactory); -window.powerbi = powerbi; +// powerBI SDK may use Power BI object under different key, in order to avoid name collisions +if (window.powerbi && window.powerBISDKGlobalServiceInstanceName) { + window[window.powerBISDKGlobalServiceInstanceName] = powerbi; +} else { + // Default to Power BI. + window.powerbi = powerbi; +} diff --git a/src/service.ts b/src/service.ts index eb2e7c4b..1cd6ab6e 100644 --- a/src/service.ts +++ b/src/service.ts @@ -6,7 +6,7 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ import { WindowPostMessageProxy } from 'window-post-message-proxy'; import { HttpPostMessage } from 'http-post-message'; -import { Router } from 'powerbi-router'; +import { Router, IExtendedRequest, Response as IExtendedResponse } from 'powerbi-router'; import { IPage, IReportCreateConfiguration } from 'powerbi-models'; import { Embed, @@ -162,6 +162,33 @@ export class Service implements IService { this.router = routerFactory(this.wpmp); this.uniqueSessionId = utils.generateUUID(); + this.router.post('/reports/:uniqueId/eventHooks/:eventName', async (req, _res) => { + let embed = utils.find(embed => { + return (embed.config.uniqueId === req.params.uniqueId); + }, this.embeds); + + if (!embed) { + return; + } + + switch (req.params.eventName) { + case "preQuery": + req.body = req.body || {}; + req.body.report = embed; + await this.invokeSDKHook(embed.eventHooks?.applicationContextProvider, req, _res); + break; + + case "newAccessToken": + req.body = req.body || {}; + req.body.report = embed; + await this.invokeSDKHook(embed.eventHooks?.accessTokenProvider, req, _res); + break; + + default: + break; + } + }); + /** * Adds handler for report events. */ @@ -300,7 +327,6 @@ export class Service implements IService { * @returns {Embed} */ embed(element: HTMLElement, config: IComponentEmbedConfiguration | IEmbedConfigurationBase = {}): Embed { - this.registerApplicationContextHook(config as IEmbedConfiguration); return this.embedInternal(element, config); } @@ -315,7 +341,6 @@ export class Service implements IService { * @returns {Embed} */ load(element: HTMLElement, config: IComponentEmbedConfiguration | IEmbedConfigurationBase = {}): Embed { - this.registerApplicationContextHook(config as IEmbedConfiguration); return this.embedInternal(element, config, /* phasedRender */ true, /* isBootstrap */ false); } @@ -326,7 +351,6 @@ export class Service implements IService { * @param {IBootstrapEmbedConfiguration} config: a bootstrap config which is an embed config without access token. */ bootstrap(element: HTMLElement, config: IComponentEmbedConfiguration | IBootstrapEmbedConfiguration): Embed { - this.registerApplicationContextHook(config as IEmbedConfiguration); return this.embedInternal(element, config, /* phasedRender */ false, /* isBootstrap */ true); } @@ -375,7 +399,8 @@ export class Service implements IService { private embedNew(element: IPowerBiElement, config: IComponentEmbedConfiguration | IEmbedConfigurationBase, phasedRender?: boolean, isBootstrap?: boolean): Embed { const componentType = config.type || element.getAttribute(Embed.typeAttribute); if (!componentType) { - throw new Error(`Attempted to embed using config ${JSON.stringify(config)} on element ${element.outerHTML}, but could not determine what type of component to embed. You must specify a type in the configuration or as an attribute such as '${Embed.typeAttribute}="${Report.type.toLowerCase()}"'.`); + const scrubbedConfig = { ...config, accessToken: "" }; + throw new Error(`Attempted to embed using config ${JSON.stringify(scrubbedConfig)} on element ${element.outerHTML}, but could not determine what type of component to embed. You must specify a type in the configuration or as an attribute such as '${Embed.typeAttribute}="${Report.type.toLowerCase()}"'.`); } // Saves the type as part of the configuration so that it can be referenced later at a known location. @@ -405,7 +430,8 @@ export class Service implements IService { private embedExisting(element: IPowerBiElement, config: IComponentEmbedConfiguration | IEmbedConfigurationBase, phasedRender?: boolean): Embed { const component = utils.find((x) => x.element === element, this.embeds); if (!component) { - throw new Error(`Attempted to embed using config ${JSON.stringify(config)} on element ${element.outerHTML} which already has embedded component associated, but could not find the existing component in the list of active components. This could indicate the embeds list is out of sync with the DOM, or the component is referencing the incorrect HTML element.`); + const scrubbedConfig = { ...config, accessToken: "" }; + throw new Error(`Attempted to embed using config ${JSON.stringify(scrubbedConfig)} on element ${element.outerHTML} which already has embedded component associated, but could not find the existing component in the list of active components. This could indicate the embeds list is out of sync with the DOM, or the component is referencing the incorrect HTML element.`); } // TODO: Multiple embedding to the same iframe is not supported in QnA @@ -433,8 +459,8 @@ export class Service implements IService { return report; } - - throw new Error(`Embedding on an existing element with a different type than the previous embed object is not supported. Attempted to embed using config ${JSON.stringify(config)} on element ${element.outerHTML}, but the existing element contains an embed of type: ${this.config.type} which does not match the new type: ${config.type}`); + const scrubbedConfig = { ...config, accessToken: "" }; + throw new Error(`Embedding on an existing element with a different type than the previous embed object is not supported. Attempted to embed using config ${JSON.stringify(scrubbedConfig)} on element ${element.outerHTML}, but the existing element contains an embed of type: ${this.config.type} which does not match the new type: ${config.type}`); } component.populateConfig(config, /* isBootstrap */ false); @@ -443,34 +469,6 @@ export class Service implements IService { return component; } - /** - * @hidden - */ - private registerApplicationContextHook(config: IEmbedConfiguration): void { - const applicationContextProvider = config?.eventHooks?.applicationContextProvider; - if (!applicationContextProvider) { - return; - } - - if (config?.type.toLowerCase() !== "report") { - throw new Error("applicationContextProvider is only supported in report embed"); - } - - if (typeof applicationContextProvider !== 'function') { - throw new Error("applicationContextProvider must be a function"); - } - - this.router.post(`preQuery`, async (req, _res) => { - try { - const result = await applicationContextProvider(req.body); - _res.send(200, result); - } catch (error) { - _res.send(400, null); - console.error(error); - } - }); - } - /** * Adds an event handler for DOMContentLoaded, which searches the DOM for elements that have the 'powerbi-embed-url' attribute, * and automatically attempts to embed a powerbi component based on information from other powerbi-* attributes. @@ -581,6 +579,21 @@ export class Service implements IService { } } + private async invokeSDKHook(hook: Function, req: IExtendedRequest, res: IExtendedResponse): Promise { + if (!hook) { + res.send(404, null); + return; + } + + try { + let result = await hook(req.body); + res.send(200, result); + } catch (error) { + res.send(400, null); + console.error(error); + } + } + /** * Given an event object, finds the embed component with the matching type and ID, and invokes its handleEvent method with the event object. * diff --git a/test/SDK-to-HPM.spec.ts b/test/SDK-to-HPM.spec.ts index 591fbd3b..47b2bcd9 100644 --- a/test/SDK-to-HPM.spec.ts +++ b/test/SDK-to-HPM.spec.ts @@ -2072,7 +2072,7 @@ describe('SDK-to-HPM', function () { spyHpm.get.and.returnValue(Promise.resolve(testData.response)); try { await report.getTheme(); - expect(spyHpm.put).toHaveBeenCalledWith('/report/theme', expectedHeaders, jasmine.any(Object)); + expect(spyHpm.get).toHaveBeenCalledWith('/report/theme', expectedHeaders, jasmine.any(Object)); } catch (error) { console.log("getTheme failed with", error); fail("getTheme failed"); diff --git a/test/SDK-to-MockApp.spec.ts b/test/SDK-to-MockApp.spec.ts index 604896ed..2753f656 100644 --- a/test/SDK-to-MockApp.spec.ts +++ b/test/SDK-to-MockApp.spec.ts @@ -11,7 +11,7 @@ import * as models from 'powerbi-models'; import * as factories from '../src/factories'; import * as util from '../src/util'; import { spyApp, setupEmbedMockApp } from './utility/mockEmbed'; -import { logMessages, iframeSrc } from './constsants'; +import { iframeSrc } from './constsants'; describe('SDK-to-MockApp', function () { let element: HTMLDivElement; @@ -29,8 +29,7 @@ describe('SDK-to-MockApp', function () { beforeEach(async function () { powerbi = new service.Service(factories.hpmFactory, factories.wpmpFactory, factories.routerFactory, { - wpmpName: 'SDK-to-MockApp HostWpmp', - logMessages + wpmpName: 'SDK-to-MockApp HostWpmp' }); element = document.createElement('div'); element.id = "reportContainer1"; @@ -49,7 +48,7 @@ describe('SDK-to-MockApp', function () { (powerbi.wpmp).eventSourceOverrideWindow = iframe.contentWindow; // Register Iframe side let hpmPostSpy = spyOn(powerbi.hpm, "post").and.returnValue(Promise.resolve({})); - iframeHpm = setupEmbedMockApp(iframe.contentWindow, window, logMessages, 'SDK-to-MockApp IframeWpmp'); + iframeHpm = setupEmbedMockApp(iframe.contentWindow, window, 'SDK-to-MockApp IframeWpmp'); await new Promise((resolve, _reject) => { iframe.addEventListener('load', () => { @@ -542,7 +541,7 @@ describe('SDK-to-MockApp', function () { document.body.appendChild(element2); const report2 = powerbi.embed(element2, embedConfiguration); const iframe2 = element2.getElementsByTagName('iframe')[0]; - setupEmbedMockApp(iframe2.contentWindow, window, logMessages, 'SDK-to-MockApp IframeWpmp2'); + setupEmbedMockApp(iframe2.contentWindow, window, 'SDK-to-MockApp IframeWpmp2'); await new Promise((resolve, _reject) => { iframe2.addEventListener('load', () => { resolve(null); diff --git a/test/constsants.ts b/test/constsants.ts index f944a5ea..8102d64d 100644 --- a/test/constsants.ts +++ b/test/constsants.ts @@ -7,8 +7,6 @@ declare global { } } -export const logMessages = (window.__karma__.config.args[0] === 'logMessages'); - export const iframeSrc = "base/test/utility/noop.html"; window.onbeforeunload = null; diff --git a/test/protocol.spec.ts b/test/protocol.spec.ts index 9bf8e476..65bb72d8 100644 --- a/test/protocol.spec.ts +++ b/test/protocol.spec.ts @@ -4,7 +4,7 @@ import { WindowPostMessageProxy } from 'window-post-message-proxy'; import { HttpPostMessage } from 'http-post-message'; import { spyApp, setupEmbedMockApp } from './utility/mockEmbed'; import { hpmFactory, routerFactory, wpmpFactory } from '../src/factories'; -import { iframeSrc, logMessages } from './constsants'; +import { iframeSrc } from './constsants'; import * as models from 'powerbi-models'; describe('Protocol', function () { @@ -27,10 +27,10 @@ describe('Protocol', function () { await new Promise(resolve => iframe.addEventListener('load', () => resolve(null))); // Register Iframe side - iframeHpm = setupEmbedMockApp(iframe.contentWindow, window, logMessages, 'ProtocolMockAppWpmp'); + iframeHpm = setupEmbedMockApp(iframe.contentWindow, window, 'ProtocolMockAppWpmp'); // Register SDK side WPMP - wpmp = wpmpFactory('HostProxyDefaultNoHandlers', logMessages, iframe.contentWindow); + wpmp = wpmpFactory('HostProxyDefaultNoHandlers',false, iframe.contentWindow); hpm = hpmFactory(wpmp, iframe.contentWindow, 'testVersion'); const router = routerFactory(wpmp); diff --git a/test/utility/mockEmbed.ts b/test/utility/mockEmbed.ts index 737a6e62..4d2773c8 100644 --- a/test/utility/mockEmbed.ts +++ b/test/utility/mockEmbed.ts @@ -9,7 +9,7 @@ import * as models from 'powerbi-models'; export const spyApp = mockAppSpyObj; -export function setupEmbedMockApp(iframeContentWindow: Window, parentWindow: Window, logMessages: boolean, name: string = 'MockAppWindowPostMessageProxy'): HttpPostMessage { +export function setupEmbedMockApp(iframeContentWindow: Window, parentWindow: Window, name: string = 'MockAppWindowPostMessageProxy'): HttpPostMessage { const parent = parentWindow || iframeContentWindow.parent; const wpmp = new WindowPostMessageProxy({ processTrackingProperties: { @@ -19,7 +19,6 @@ export function setupEmbedMockApp(iframeContentWindow: Window, parentWindow: Win isErrorMessage: HttpPostMessage.isErrorMessage, receiveWindow: iframeContentWindow, name, - logMessages }); const hpm = new HttpPostMessage(wpmp, { 'origin': 'reportEmbedMock',