UNPKG

@microsoft/office-js

Version:
1,276 lines (1,208 loc) • 492 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define("Implicit", [], factory); else if(typeof exports === 'object') exports["Implicit"] = factory(); else root["Implicit"] = factory(); })(window, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 0); /******/ }) /************************************************************************/ /******/ ({ /***/ "./packages/Microsoft.Office.WebAuth.Implicit/lib/api.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.logUserAction = logUserAction; exports.logActivity = logActivity; exports.sendTelemetryEvent = sendTelemetryEvent; exports.sendActivityEvent = sendActivityEvent; exports.sendOtelEvent = sendOtelEvent; exports.sendUserActionEvent = sendUserActionEvent; exports.addNamespaceMapping = addNamespaceMapping; exports.setEnabledState = setEnabledState; exports.shutdown = shutdown; exports.registerEventHandler = registerEventHandler; // Assume that telemetry is disabled and simply drop events on the floor unless the developer called initialize(true /*enabled*/). // This should work well for component / unittest environments since nobody will end up listening to the events. // The alternative is to cache them, but given that nobody will ever process them it might cause issues since the events would be cached forever. var telemetryEnabled = false; var events = []; var eventHandler; var numberOfDroppedEvents = 0; var maxQueueSize = 20000; var unknownStr = 'Unknown'; // Primary consumer public API // ======================================================================================================================== // Call LogUserAction for logging a user action to Otel. // This is similar to the bSqm actions that used to be logged earlier (deprecated now). // Make sure you read the documentation below for userActionName and the Kusto table name implications. // userActionName: Name of the user action, this should come from your app's commands, // for example: OneNoteCommands in office-online-ui\packages\onenote-online-ux\src\store\OneNoteCommands.ts (https://office.visualstudio.com/OC/_git/office-online-ui?path=%2Fpackages%2Fonenote-online-ux%2Fsrc%2Fstore%2FOneNoteCommands.ts&version=GBmaster) // Note that the userActionName will be the name of your table in Aria Kusto. So if 'ABC' is passed in for userActionName, the table in Kusto will be called Office_OneNote_Online_UserAction_ABC (or generically speaking Office_{AppName}_Online_UserAction_ABC ) // Look at Kusto connection https://kusto.aria.microsoft.com and databases Office Word Online or Office OneNote Online, etc. and look at *UserAction* tables. // success: Status of the user action (success is true, failure is false). // parentNameStr: parent surface of the user action (example, tabView, tabHelp, Layout, etc). // inputMethod: how the user action was performed (for example, via keyboard, or mouse, touch, etc.) // See the enum in /packages/app-commanding-ui/src/UISurfaces/controls/InputMethod.ts // Pass in this param as: InputMethod.Keyboard.toString() instead of passing in "Keyboard" // uiLocation: the surface where the user action was initiated from (example, ribbon, FileMenu, TellMe, etc). // See enum in /packages/app-commanding-ui/src/UISurfaces/controls/UILocation.ts // Pass in this param as: UILocation.SingleLineRibbon.toString() instead of passing in "SingleLineRibbon" // durationMsec: the time taken by the action (if relevant to the action) // dataFieldArr: These are custom fields that you may want to add for your user action. // Example: InsertTable action may log custom data fields such as rowSize and colSize of the table inserted. // Or in Excel, a cell related action may log the x and y coordinates of the cell. // Note that things such as sessionID, data center, etc will be added to all user action logs. function logUserAction(userActionName, success, parentNameStr, inputMethod, uiLocation, durationMsec, dataFieldArr) { if (success === void 0) { success = true; } if (parentNameStr === void 0) { parentNameStr = unknownStr; } if (inputMethod === void 0) { inputMethod = unknownStr; } if (uiLocation === void 0) { uiLocation = unknownStr; } if (durationMsec === void 0) { durationMsec = 0; } if (dataFieldArr === void 0) { dataFieldArr = []; } // passing null for 'name' field, which is the event table name. We will determine that in sendUserAction in full\api.ts as there we know what app we are, and hence what the event table name is sendUserActionEvent({ name: null, actionName: userActionName, commandSurface: uiLocation, parentName: parentNameStr, triggerMethod: inputMethod, durationMs: durationMsec, succeeded: success, dataFields: dataFieldArr }); } ////////////////////////////////////////////////////////////////////////////////////////////////// // Call logActivity for logging an activity to Otel. // This will be logged under Office {App} Online Data tenant // For example, if your activity name is "ABC", // it will go to a table called "Office_Word_Online_Data_Activity_ABC" for Word or "Office_OneNote_Online_Data_Activity_ABC" for OneNote. // activityName: name of activity being logged // success: Status of the activity (success is true, failure is false). // durationMsec: the time taken by the action (if relevant to the action) // dataFieldArr: These are custom fields that you may want to add for your activity, and will be added as columns to the activity table. // Example: dataFields has typingSpeedPerSec (integer) and dayOfWeek (string) in it, the activity table for this particular activity will contain these two custom fields. // Note that things such as sessionID, data center, etc will be added to all user action logs. function logActivity(activityName, success, durationMsec, dataFieldArr) { if (success === void 0) { success = true; } if (durationMsec === void 0) { durationMsec = 0; } if (dataFieldArr === void 0) { dataFieldArr = []; } sendActivityEvent({ name: activityName, succeeded: success, durationMs: durationMsec, dataFields: dataFieldArr }); } // Call LogNonUserAction for logging a non user action to Otel. // This is // activityName: Name of the action (non user) // Note that the userActionName will be what your table will be named in Aria Kusto. So if 'ABC' is passed in for non user action, the table in Kusto will be called Office_OneNote_Online_NonUser_ABC // Look at Kusto connection https://kusto.aria.microsoft.com and databases Office Word Online or Office OneNote Online, etc. and look at *NonUser* tables. // succeeded: Status of the user action (success is true, failure is false). // parentName: parent surface of the user action (example, tabView, tabHelp, Layout, etc). // inputMethod: how the user action was performed (for example, via keyboard, or mouse, touch, etc.) // uiLocation: the surface where the user action was initiated from (example, ribbon, FileMenu, TellMe, etc) // startTime: start time of the activity // endTime: end time of the activity // dataFields: These are custom fields that you may want to add for your user action. // Example: InsertTable action may log custom data fields such as rowSize and colSize of the table inserted. // Or in Excel, a cell related action may log the x and y coordinates of the cell. // Note that things such as sessionID, data center, etc will be added to all user action logs. /* Being commented out as we dont think we should expose this API. But code is here in case someone educates us on why this should be exposed (it is being used historically in scriptsharp in OtelActionListener.cs (WsaListener.cs)) export const nonUserActionPrefix = 'non_user_action_'; // used in full\api.ts sendActivityEvent to determine if an activity is non user action or a regular activity If this code is reinstated, then we need to add the following in full\api.ts: import { nonUserActionPrefix } from '../core'; nonUserActionEventName = 'Office.Online.NonUserAction'; nonUserActionEventName = `Office.${settings.alwaysOnMetadata.name}.Online.NonUser.`; function ContainsNonUserActionPrefix(eventName: string): boolean { return eventName.indexOf(nonUserActionPrefix) == 0; } And these lines in sendActivity function in full\api.ts if (event.name != null) { if (ContainsNonUserActionPrefix(event.name)) { event.name = nonUserActionEventName + event.name.substring(nonUserActionPrefix.length); } } export function LogNonUserAction( activityName: string, succeeded: boolean = true, parentName: string = unknownStr, inputMethod: InputMethod = InputMethod.Unknown, uiLocation: UILocation | null = null, startTime: number = 0, endTime: number = 0, dataFields: DataField[] = [] ) { let durationMs: number = Math.max(endTime - startTime, 0); dataFields!.push({ name: 'ParentName', string: parentName != null ? parentName : unknownStr }); dataFields!.push({ name: 'TriggerMethod', string: inputMethod != null ? inputMethod.toString() : unknownStr }); dataFields!.push({ name: 'CommandSurface', string: uiLocation != null ? uiLocation.toString() : unknownStr }); dataFields!.push({ name: 'ActionName', string: activityName }); dataFields!.push({ name: 'StartTime', double: startTime }); dataFields!.push({ name: 'EndTime', double: endTime }); dataFields!.push({ name: 'Succeeded', bool: succeeded }); // add a sentinel prefix to activity name such that we know we need to add the non user activity event table name (instead of a regular activity event table name) in sendActivityEvent in full\api.ts as there we know what app we are, and hence what the event table name is let activityNameWithPrefix = nonUserActionPrefix; if (activityName != null) { activityNameWithPrefix = activityNameWithPrefix.concat(activityName); } sendActivityEvent({ name: activityNameWithPrefix, dataFields: dataFields, durationMs: durationMs, succeeded: succeeded }); } */ function sendTelemetryEvent(event) { raiseEvent({ kind: 'event', event: event, timestamp: new Date().getTime() }); } function sendActivityEvent(event) { raiseEvent({ kind: 'activity', event: event, timestamp: new Date().getTime() }); } function sendOtelEvent(event) { raiseEvent({ kind: 'otel', event: event }); } function sendUserActionEvent(event) { raiseEvent({ kind: 'action', event: event, timestamp: new Date().getTime() }); } function addNamespaceMapping(namespace, ariaTenantToken) { raiseEvent({ kind: 'addNamespaceMapping', namespace: namespace, ariaTenantToken: ariaTenantToken }); } // Initialization / Shutdown // ======================================================================================================================== function setEnabledState(enabled) { telemetryEnabled = enabled; // If the caller disables the queue, be sure to drop all of the outstanding events. // This can happen in cases where the slice with event processor functionality failed to load. if (!telemetryEnabled) { events = []; } } function shutdown() { raiseEvent({ kind: 'shutdown' }); return events.length + numberOfDroppedEvents; } function registerEventHandler(handler) { eventHandler = handler; // Then go through the queue and process the events in the order in which they were received // VSO.2533164: Push batch event processing to otelFull and add a lightweight queue events.forEach(function (event) { return raiseEvent(event); }); events = []; } function raiseEvent(event) { if (!telemetryEnabled) { return; } if (eventHandler) { eventHandler(event); } else { if (events.length <= maxQueueSize) { events.push(event); } else { numberOfDroppedEvents += 1; } } } /***/ }), /***/ "./packages/Microsoft.Office.WebAuth.Implicit/lib/msal.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; /*! msal v1.3.3 2020-07-14 */ (function webpackUniversalModuleDefinition(root, factory) { if(true) module.exports = factory(); else {} })(window, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 29); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /*! ***************************************************************************** Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ /* global Reflect, Promise */ Object.defineProperty(exports, "__esModule", { value: true }); var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; function __extends(d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } exports.__extends = __extends; exports.__assign = function () { exports.__assign = Object.assign || function __assign(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 exports.__assign.apply(this, arguments); }; function __rest(s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; } exports.__rest = __rest; function __decorate(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; } exports.__decorate = __decorate; function __param(paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); }; } exports.__param = __param; function __metadata(metadataKey, metadataValue) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); } exports.__metadata = __metadata; function __awaiter(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } exports.__awaiter = __awaiter; function __generator(thisArg, body) { var _ = { label: 0, sent: function () { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } exports.__generator = __generator; function __exportStar(m, exports) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } exports.__exportStar = __exportStar; function __values(o) { var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; if (m) return m.call(o); return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; } exports.__values = __values; function __read(o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; } exports.__read = __read; function __spread() { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; } exports.__spread = __spread; function __spreadArrays() { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; } exports.__spreadArrays = __spreadArrays; ; function __await(v) { return this instanceof __await ? (this.v = v, this) : new __await(v); } exports.__await = __await; function __asyncGenerator(thisArg, _arguments, generator) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var g = generator.apply(thisArg, _arguments || []), i, q = []; return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } } exports.__asyncGenerator = __asyncGenerator; function __asyncDelegator(o) { var i, p; return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } } exports.__asyncDelegator = __asyncDelegator; function __asyncValues(o) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var m = o[Symbol.asyncIterator], i; return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); } } exports.__asyncValues = __asyncValues; function __makeTemplateObject(cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; } exports.__makeTemplateObject = __makeTemplateObject; ; function __importStar(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result.default = mod; return result; } exports.__importStar = __importStar; function __importDefault(mod) { return (mod && mod.__esModule) ? mod : { default: mod }; } exports.__importDefault = __importDefault; /***/ }), /* 1 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ Object.defineProperty(exports, "__esModule", { value: true }); /** * @hidden * Constants */ var Constants = /** @class */ (function () { function Constants() { } Object.defineProperty(Constants, "libraryName", { get: function () { return "Msal.js"; } // used in telemetry sdkName , enumerable: true, configurable: true }); Object.defineProperty(Constants, "claims", { get: function () { return "claims"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "clientId", { get: function () { return "clientId"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "adalIdToken", { get: function () { return "adal.idtoken"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "cachePrefix", { get: function () { return "msal"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "scopes", { get: function () { return "scopes"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "no_account", { get: function () { return "NO_ACCOUNT"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "upn", { get: function () { return "upn"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "domain_hint", { get: function () { return "domain_hint"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "prompt_select_account", { get: function () { return "&prompt=select_account"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "prompt_none", { get: function () { return "&prompt=none"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "prompt", { get: function () { return "prompt"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "response_mode_fragment", { get: function () { return "&response_mode=fragment"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "resourceDelimiter", { get: function () { return "|"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "cacheDelimiter", { get: function () { return "."; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "popUpWidth", { get: function () { return this._popUpWidth; }, set: function (width) { this._popUpWidth = width; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "popUpHeight", { get: function () { return this._popUpHeight; }, set: function (height) { this._popUpHeight = height; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "login", { get: function () { return "LOGIN"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "renewToken", { get: function () { return "RENEW_TOKEN"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "unknown", { get: function () { return "UNKNOWN"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "ADFS", { get: function () { return "adfs"; }, enumerable: true, configurable: true }); ; Object.defineProperty(Constants, "homeAccountIdentifier", { get: function () { return "homeAccountIdentifier"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "common", { get: function () { return "common"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "openidScope", { get: function () { return "openid"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "profileScope", { get: function () { return "profile"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "interactionTypeRedirect", { get: function () { return "redirectInteraction"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "interactionTypePopup", { get: function () { return "popupInteraction"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "interactionTypeSilent", { get: function () { return "silentInteraction"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "inProgress", { get: function () { return "inProgress"; }, enumerable: true, configurable: true }); Constants._popUpWidth = 483; Constants._popUpHeight = 600; return Constants; }()); exports.Constants = Constants; /** * Keys in the hashParams */ var ServerHashParamKeys; (function (ServerHashParamKeys) { ServerHashParamKeys["SCOPE"] = "scope"; ServerHashParamKeys["STATE"] = "state"; ServerHashParamKeys["ERROR"] = "error"; ServerHashParamKeys["ERROR_DESCRIPTION"] = "error_description"; ServerHashParamKeys["ACCESS_TOKEN"] = "access_token"; ServerHashParamKeys["ID_TOKEN"] = "id_token"; ServerHashParamKeys["EXPIRES_IN"] = "expires_in"; ServerHashParamKeys["SESSION_STATE"] = "session_state"; ServerHashParamKeys["CLIENT_INFO"] = "client_info"; })(ServerHashParamKeys = exports.ServerHashParamKeys || (exports.ServerHashParamKeys = {})); ; /** * @hidden * CacheKeys for MSAL */ var TemporaryCacheKeys; (function (TemporaryCacheKeys) { TemporaryCacheKeys["AUTHORITY"] = "authority"; TemporaryCacheKeys["ACQUIRE_TOKEN_ACCOUNT"] = "acquireTokenAccount"; TemporaryCacheKeys["SESSION_STATE"] = "session.state"; TemporaryCacheKeys["STATE_LOGIN"] = "state.login"; TemporaryCacheKeys["STATE_ACQ_TOKEN"] = "state.acquireToken"; TemporaryCacheKeys["STATE_RENEW"] = "state.renew"; TemporaryCacheKeys["NONCE_IDTOKEN"] = "nonce.idtoken"; TemporaryCacheKeys["LOGIN_REQUEST"] = "login.request"; TemporaryCacheKeys["RENEW_STATUS"] = "token.renew.status"; TemporaryCacheKeys["URL_HASH"] = "urlHash"; TemporaryCacheKeys["INTERACTION_STATUS"] = "interaction_status"; TemporaryCacheKeys["REDIRECT_REQUEST"] = "redirect_request"; })(TemporaryCacheKeys = exports.TemporaryCacheKeys || (exports.TemporaryCacheKeys = {})); var PersistentCacheKeys; (function (PersistentCacheKeys) { PersistentCacheKeys["IDTOKEN"] = "idtoken"; PersistentCacheKeys["CLIENT_INFO"] = "client.info"; })(PersistentCacheKeys = exports.PersistentCacheKeys || (exports.PersistentCacheKeys = {})); var ErrorCacheKeys; (function (ErrorCacheKeys) { ErrorCacheKeys["LOGIN_ERROR"] = "login.error"; ErrorCacheKeys["ERROR"] = "error"; ErrorCacheKeys["ERROR_DESC"] = "error.description"; })(ErrorCacheKeys = exports.ErrorCacheKeys || (exports.ErrorCacheKeys = {})); exports.DEFAULT_AUTHORITY = "https://login.microsoftonline.com/common/"; exports.AAD_INSTANCE_DISCOVERY_ENDPOINT = exports.DEFAULT_AUTHORITY + "/discovery/instance?api-version=1.1&authorization_endpoint="; /** * @hidden * SSO Types - generated to populate hints */ var SSOTypes; (function (SSOTypes) { SSOTypes["ACCOUNT"] = "account"; SSOTypes["SID"] = "sid"; SSOTypes["LOGIN_HINT"] = "login_hint"; SSOTypes["ID_TOKEN"] = "id_token"; SSOTypes["ACCOUNT_ID"] = "accountIdentifier"; SSOTypes["HOMEACCOUNT_ID"] = "homeAccountIdentifier"; })(SSOTypes = exports.SSOTypes || (exports.SSOTypes = {})); ; /** * @hidden */ exports.BlacklistedEQParams = [ SSOTypes.SID, SSOTypes.LOGIN_HINT ]; exports.NetworkRequestType = { GET: "GET", POST: "POST" }; /** * we considered making this "enum" in the request instead of string, however it looks like the allowed list of * prompt values kept changing over past couple of years. There are some undocumented prompt values for some * internal partners too, hence the choice of generic "string" type instead of the "enum" * @hidden */ exports.PromptState = { LOGIN: "login", SELECT_ACCOUNT: "select_account", CONSENT: "consent", NONE: "none" }; /** * Frame name prefixes for the hidden iframe created in silent frames */ exports.FramePrefix = { ID_TOKEN_FRAME: "msalIdTokenFrame", TOKEN_FRAME: "msalRenewFrame" }; /** * MSAL JS Library Version */ function libraryVersion() { return "1.3.3"; } exports.libraryVersion = libraryVersion; /***/ }), /* 2 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ Object.defineProperty(exports, "__esModule", { value: true }); /** * @hidden */ var CryptoUtils = /** @class */ (function () { function CryptoUtils() { } /** * Creates a new random GUID * @returns string (GUID) */ CryptoUtils.createNewGuid = function () { /* * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or * pseudo-random numbers. * The algorithm is as follows: * Set the two most significant bits (bits 6 and 7) of the * clock_seq_hi_and_reserved to zero and one, respectively. * Set the four most significant bits (bits 12 through 15) of the * time_hi_and_version field to the 4-bit version number from * Section 4.1.3. Version4 * Set all the other bits to randomly (or pseudo-randomly) chosen * values. * UUID = time-low "-" time-mid "-"time-high-and-version "-"clock-seq-reserved and low(2hexOctet)"-" node * time-low = 4hexOctet * time-mid = 2hexOctet * time-high-and-version = 2hexOctet * clock-seq-and-reserved = hexOctet: * clock-seq-low = hexOctet * node = 6hexOctet * Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx * y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10 * y values are 8, 9, A, B */ var cryptoObj = window.crypto; // for IE 11 if (cryptoObj && cryptoObj.getRandomValues) { var buffer = new Uint8Array(16); cryptoObj.getRandomValues(buffer); // buffer[6] and buffer[7] represents the time_hi_and_version field. We will set the four most significant bits (4 through 7) of buffer[6] to represent decimal number 4 (UUID version number). buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1. buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = "4". // buffer[8] represents the clock_seq_hi_and_reserved field. We will set the two most significant bits (6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively. buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1. buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0. return CryptoUtils.decimalToHex(buffer[0]) + CryptoUtils.decimalToHex(buffer[1]) + CryptoUtils.decimalToHex(buffer[2]) + CryptoUtils.decimalToHex(buffer[3]) + "-" + CryptoUtils.decimalToHex(buffer[4]) + CryptoUtils.decimalToHex(buffer[5]) + "-" + CryptoUtils.decimalToHex(buffer[6]) + CryptoUtils.decimalToHex(buffer[7]) + "-" + CryptoUtils.decimalToHex(buffer[8]) + CryptoUtils.decimalToHex(buffer[9]) + "-" + CryptoUtils.decimalToHex(buffer[10]) + CryptoUtils.decimalToHex(buffer[11]) + CryptoUtils.decimalToHex(buffer[12]) + CryptoUtils.decimalToHex(buffer[13]) + CryptoUtils.decimalToHex(buffer[14]) + CryptoUtils.decimalToHex(buffer[15]); } else { var guidHolder = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"; var hex = "0123456789abcdef"; var r = 0; var guidResponse = ""; for (var i = 0; i < 36; i++) { if (guidHolder[i] !== "-" && guidHolder[i] !== "4") { // each x and y needs to be random r = Math.random() * 16 | 0; } if (guidHolder[i] === "x") { guidResponse += hex[r]; } else if (guidHolder[i] === "y") { // clock-seq-and-reserved first hex is filtered and remaining hex values are random r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0?? r |= 0x8; // set pos 3 to 1 as 1??? guidResponse += hex[r]; } else { guidResponse += guidHolder[i]; } } return guidResponse; } }; /** * verifies if a string is GUID * @param guid */ CryptoUtils.isGuid = function (guid) { var regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; return regexGuid.test(guid); }; /** * Decimal to Hex * * @param num */ CryptoUtils.decimalToHex = function (num) { var hex = num.toString(16); while (hex.length < 2) { hex = "0" + hex; } return hex; }; // See: https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_4_%E2%80%93_escaping_the_string_before_encoding_it /** * encoding string to base64 - platform specific check * * @param input */ CryptoUtils.base64Encode = function (input) { return btoa(encodeURIComponent(input).replace(/%([0-9A-F]{2})/g, function toSolidBytes(match, p1) { return String.fromCharCode(Number("0x" + p1)); })); }; /** * Decodes a base64 encoded string. * * @param input */ CryptoUtils.base64Decode = function (input) { var encodedString = input.replace(/-/g, "+").replace(/_/g, "/"); switch (encodedString.length % 4) { case 0: break; case 2: encodedString += "=="; break; case 3: encodedString += "="; break; default: throw new Error("Invalid base64 string"); } return decodeURIComponent(atob(encodedString).split("").map(function (c) { return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2); }).join("")); }; /** * deserialize a string * * @param query */ CryptoUtils.deserialize = function (query) { var match; // Regex for replacing addition symbol with a space var pl = /\+/g; var search = /([^&=]+)=([^&]*)/g; var decode = function (s) { return decodeURIComponent(decodeURIComponent(s.replace(pl, " "))); }; // Some values (e.g. state) may need to be decoded twice var obj = {}; match = search.exec(query); while (match) { obj[decode(match[1])] = decode(match[2]); match = search.exec(query); } return obj; }; return CryptoUtils; }()); exports.CryptoUtils = CryptoUtils; /***/ }), /* 3 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ Object.defineProperty(exports, "__esModule", { value: true }); /** * @hidden */ var StringUtils = /** @class */ (function () { function StringUtils() { } /** * Check if a string is empty * * @param str */ StringUtils.isEmpty = function (str) { return (typeof str === "undefined" || !str || 0 === str.length); }; return StringUtils; }()); exports.StringUtils = StringUtils; /***/ }), /* 4 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ Object.defineProperty(exports, "__esModule", { value: true }); var Constants_1 = __webpack_require__(1); var ScopeSet_1 = __webpack_require__(9); var StringUtils_1 = __webpack_require__(3); var CryptoUtils_1 = __webpack_require__(2); /** * @hidden */ var UrlUtils = /** @class */ (function () { function UrlUtils() { } /** * generates the URL with QueryString Parameters * @param scopes */ UrlUtils.createNavigateUrl = function (serverRequestParams) { var str = this.createNavigationUrlString(serverRequestParams); var authEndpoint = serverRequestParams.authorityInstance.AuthorizationEndpoint; // if the endpoint already has queryparams, lets add to it, otherwise add the first one if (authEndpoint.indexOf("?") < 0) { authEndpoint += "?";