Outlook_Addin_LLM/node_modules/office-addin-manifest-converter/lib/osfmos.js

11669 lines
562 KiB
JavaScript
Raw Permalink Normal View History

var OSF;
(function (OSF) {
let XmlConstants;
(function (XmlConstants) {
XmlConstants[XmlConstants["MaxXmlSize"] = 1048576] = "MaxXmlSize";
XmlConstants[XmlConstants["MaxElementDepth"] = 64] = "MaxElementDepth";
})(XmlConstants = OSF.XmlConstants || (OSF.XmlConstants = {}));
class Xpath3Provider {
constructor(xml, xmlNamespaces) {
this._xmldoc = new DOMParser().parseFromString(xml, "text/xml");
this._evaluator = new XPathEvaluator();
this._namespaceMapping = {};
this._defaultNamespace = null;
var namespaces = xmlNamespaces.split(' ');
var matches;
for (var i = 0; i < namespaces.length; ++i) {
matches = /xmlns="([^"]*)"/g.exec(namespaces[i]);
if (matches) {
this._defaultNamespace = matches[1];
continue;
}
matches = /xmlns:([^=]*)="([^"]*)"/g.exec(namespaces[i]);
if (matches) {
this._namespaceMapping[matches[1]] = matches[2];
continue;
}
}
this._resolver = this;
}
lookupNamespaceURI(prefix) {
var ns = this._namespaceMapping[prefix];
return ns || this._defaultNamespace;
}
addNamespaceMapping(namespacePrefix, namespaceUri) {
var ns = this._namespaceMapping[namespacePrefix];
if (ns) {
return false;
}
else {
this._namespaceMapping[namespacePrefix] = namespaceUri;
return true;
}
}
getNamespaceMapping() {
return this._namespaceMapping;
}
selectSingleNode(name, contextNode) {
var xpath = (contextNode ? "./" : "/") + name;
contextNode = contextNode || this.getDocumentElement();
var result = this._evaluator.evaluate(xpath, contextNode, this._resolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
if (result) {
return result.singleNodeValue;
}
else {
return null;
}
}
selectNodes(name, contextNode) {
var xpath = (contextNode ? "./" : "/") + name;
contextNode = contextNode || this.getDocumentElement();
var result = this._evaluator.evaluate(xpath, contextNode, this._resolver, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
var nodes = [];
if (result) {
var node = result.iterateNext();
while (node) {
nodes.push(node);
node = result.iterateNext();
}
}
return nodes;
}
selectNodesByXPath(xpath, contextNode) {
var result = this._evaluator.evaluate(xpath, contextNode, this._resolver, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
var nodes = [];
if (result) {
var node = result.iterateNext();
while (node) {
nodes.push(node);
node = result.iterateNext();
}
}
return nodes;
}
getDocumentElement() {
return this._xmldoc.documentElement;
}
}
OSF.Xpath3Provider = Xpath3Provider;
class IEXpathProvider {
constructor(xml, xmlNamespaces) {
var xmldoc = null;
var msxmlVersions = ['MSXML2.DOMDocument.6.0'];
for (var i = 0; i < msxmlVersions.length; i++) {
try {
xmldoc = new ActiveXObject(msxmlVersions[i]);
xmldoc.setProperty('ResolveExternals', false);
xmldoc.setProperty('ValidateOnParse', false);
xmldoc.setProperty('ProhibitDTD', true);
xmldoc.setProperty('MaxXMLSize', OSF.XmlConstants.MaxXmlSize);
xmldoc.setProperty('MaxElementDepth', OSF.XmlConstants.MaxElementDepth);
xmldoc.async = false;
xmldoc.loadXML(xml);
xmldoc.setProperty("SelectionLanguage", "XPath");
xmldoc.setProperty("SelectionNamespaces", xmlNamespaces);
break;
}
catch (ex) {
OsfMsAjaxFactory.msAjaxDebug.trace("xml doc creating error:" + ex);
}
}
this._xmldoc = xmldoc;
}
selectSingleNode(name, contextNode) {
var xpath = (contextNode ? "./" : "/") + name;
contextNode = contextNode || this.getDocumentElement();
return contextNode.selectSingleNode(xpath);
}
addNamespaceMapping(namespacePrefix, namespaceUri) {
var existingNamespaces = this._xmldoc.getProperty("SelectionNamespaces");
var newNamespacePrefix = "xmlns:" + namespacePrefix + "=";
var newNamespaceMappingString = "xmlns:" + namespacePrefix + "=\"" + namespaceUri + "\"";
if (existingNamespaces.indexOf(newNamespacePrefix) != -1) {
return false;
}
existingNamespaces = existingNamespaces + " " + newNamespaceMappingString;
this._xmldoc.setProperty("SelectionNamespaces", existingNamespaces);
return true;
}
getNamespaceMapping() {
return null;
}
selectNodes(name, contextNode) {
var xpath = (contextNode ? "./" : "/") + name;
contextNode = contextNode || this.getDocumentElement();
return contextNode.selectNodes(xpath);
}
selectNodesByXPath(xpath, contextNode) {
return contextNode.selectNodes(xpath);
}
getDocumentElement() {
return this._xmldoc.documentElement;
}
getActiveXObject() {
return this._xmldoc;
}
}
OSF.IEXpathProvider = IEXpathProvider;
class DomParserProvider {
constructor(xml, xmlNamespaces) {
try {
this._xmldoc = new DOMParser().parseFromString(xml, "text/xml");
}
catch (ex) {
Sys.Debug.trace("xml doc creating error:" + ex);
}
this._namespaceMapping = {};
this._defaultNamespace = null;
var namespaces = xmlNamespaces.split(' ');
var matches;
for (var i = 0; i < namespaces.length; ++i) {
matches = /xmlns="([^"]*)"/g.exec(namespaces[i]);
if (matches) {
this._defaultNamespace = matches[1];
continue;
}
matches = /xmlns:([^=]*)="([^"]*)"/g.exec(namespaces[i]);
if (matches) {
this._namespaceMapping[matches[1]] = matches[2];
continue;
}
}
}
addNamespaceMapping(namespacePrefix, namespaceUri) {
var ns = this._namespaceMapping[namespacePrefix];
if (ns) {
return false;
}
else {
this._namespaceMapping[namespacePrefix] = namespaceUri;
return true;
}
}
getNamespaceMapping() {
return this._namespaceMapping;
}
selectSingleNode(name, contextNode) {
var selectedNode = contextNode || this._xmldoc;
var nodes = this._selectNodes(name, selectedNode);
if (nodes.length === 0)
return null;
return nodes[0];
}
selectNodes(name, contextNode) {
var selectedNode = contextNode || this._xmldoc;
return this._selectNodes(name, selectedNode);
}
selectNodesByXPath(xpath, contextNode) {
return null;
}
_selectNodes(name, contextNode) {
var nodes = [];
if (!name)
return nodes;
var nameInfo = name.split(":");
var ns, nodeName;
if (nameInfo.length === 1) {
ns = null;
nodeName = nameInfo[0];
}
else if (nameInfo.length === 2) {
ns = this._namespaceMapping[nameInfo[0]];
nodeName = nameInfo[1];
}
else {
throw OsfMsAjaxFactory.msAjaxError.argument("name");
}
if (!contextNode.hasChildNodes)
return nodes;
var childs = contextNode.childNodes;
for (var i = 0; i < childs.length; i++) {
if (nodeName === this._removeNodePrefix(childs[i].nodeName) && (ns === childs[i].namespaceURI)) {
nodes.push(childs[i]);
}
}
return nodes;
}
_removeNodePrefix(nodeName) {
var nodeInfo = nodeName.split(':');
if (nodeInfo.length === 1) {
return nodeName;
}
else {
return nodeInfo[1];
}
}
getDocumentElement() {
return this._xmldoc.documentElement;
}
}
OSF.DomParserProvider = DomParserProvider;
class XmlProcessor {
constructor(xml, xmlNamespaces) {
var e = Function._validateParams(arguments, [
{ name: "xml", type: String, mayBeNull: false },
{ name: "xmlNamespaces", type: String, mayBeNull: false }
]);
if (e)
throw e;
if (document.implementation && document.implementation.hasFeature("XPath", "3.0")) {
this._provider = new OSF.Xpath3Provider(xml, xmlNamespaces);
}
else {
this._provider = new OSF.IEXpathProvider(xml, xmlNamespaces);
if (!this._provider.getActiveXObject()) {
this._provider = new OSF.DomParserProvider(xml, xmlNamespaces);
}
}
}
addNamespaceMapping(namespacePrefix, namespaceUri) {
var e = Function._validateParams(arguments, [
{ name: "namespacePrefix", type: String, mayBeNull: false },
{ name: "namespaceUri", type: String, mayBeNull: false }
]);
if (e)
throw e;
return this._provider.addNamespaceMapping(namespacePrefix, namespaceUri);
}
getNamespaceMapping() {
var _a;
return (_a = this._provider) === null || _a === void 0 ? void 0 : _a.getNamespaceMapping();
}
selectSingleNode(name, contextNode) {
var e = Function._validateParams(arguments, [
{ name: "name", type: String, mayBeNull: false },
{ name: "contextNode", mayBeNull: true, optional: true }
]);
if (e)
throw e;
return this._provider.selectSingleNode(name, contextNode);
}
selectNodes(name, contextNode) {
var e = Function._validateParams(arguments, [
{ name: "name", type: String, mayBeNull: false },
{ name: "contextNode", mayBeNull: true, optional: true }
]);
if (e)
throw e;
return this._provider.selectNodes(name, contextNode);
}
selectNodesByXPath(xpath, contextNode) {
var e = Function._validateParams(arguments, [
{ name: "xpath", type: String, mayBeNull: false },
{ name: "contextNode", mayBeNull: true, optional: true }
]);
if (e)
throw e;
contextNode = contextNode || this._provider.getDocumentElement();
return this._provider.selectNodesByXPath(xpath, contextNode);
}
getDocumentElement() {
return this._provider.getDocumentElement();
}
getNodeValue(node) {
var e = Function._validateParams(arguments, [
{ name: "node", type: Object, mayBeNull: false }
]);
if (e)
throw e;
var nodeValue;
if (node.text) {
nodeValue = node.text;
}
else {
nodeValue = node.textContent;
}
return nodeValue;
}
getNodeText(node) {
var e = Function._validateParams(arguments, [
{ name: "node", type: Object, mayBeNull: false }
]);
if (e)
throw e;
if (this.getNodeType(node) == 9) {
return this.getNodeText(this.getDocumentElement());
}
var nodeText;
if (node.text) {
nodeText = node.text;
}
else {
nodeText = node.textContent;
}
return nodeText;
}
setNodeText(node, text) {
var e = Function._validateParams(arguments, [
{ name: "node", type: Object, mayBeNull: false },
{ name: "text", type: String, mayBeNull: false }
]);
if (e)
throw e;
if (this.getNodeType(node) == 9) {
return false;
}
try {
if (node.text) {
node.text = text;
}
else {
node.textContent = text;
}
}
catch (ex) {
return false;
}
return true;
}
getNodeXml(node) {
var e = Function._validateParams(arguments, [
{ name: "node", type: Object, mayBeNull: false }
]);
if (e)
throw e;
var nodeXml;
if (node.xml) {
nodeXml = node.xml;
}
else {
nodeXml = new XMLSerializer().serializeToString(node);
if (this.getNodeType(node) == 2) {
nodeXml = this.getNodeBaseName(node) + "=\"" + nodeXml + "\"";
}
}
return nodeXml;
}
setNodeXml(node, xml) {
var e = Function._validateParams(arguments, [
{ name: "node", type: Object, mayBeNull: false },
{ name: "xml", type: String, mayBeNull: false }
]);
if (e)
throw e;
var processor = new OSF.XmlProcessor(xml, "");
if (!processor.isValidXml()) {
return null;
}
var newNode = processor.getDocumentElement();
try {
node.parentNode.replaceChild(newNode, node);
}
catch (ex) {
return null;
}
return newNode;
}
getNodeNamespaceURI(node) {
var e = Function._validateParams(arguments, [
{ name: "node", type: Object, mayBeNull: false }
]);
if (e)
throw e;
return node.namespaceURI;
}
getNodePrefix(node) {
var e = Function._validateParams(arguments, [
{ name: "node", type: Object, mayBeNull: false }
]);
if (e)
throw e;
return node.prefix;
}
getNodeBaseName(node) {
var e = Function._validateParams(arguments, [
{ name: "node", type: Object, mayBeNull: false }
]);
if (e)
throw e;
var nodeBaseName;
if (node.nodeType && (node.nodeType == 1 || node.nodeType == 2)) {
if (node.baseName) {
nodeBaseName = node.baseName;
}
else {
nodeBaseName = node.localName;
}
}
else {
nodeBaseName = node.nodeName;
}
return nodeBaseName;
}
getNodeType(node) {
var e = Function._validateParams(arguments, [
{ name: "node", type: Object, mayBeNull: false }
]);
if (e)
throw e;
return node.nodeType;
}
appendChild(node, childXml) {
var e = Function._validateParams(arguments, [
{ name: "node", type: Object, mayBeNull: false },
{ name: "childXml", type: String, mayBeNull: false }
]);
if (e)
throw e;
var processor = new OSF.XmlProcessor(childXml, "");
if (!processor.isValidXml()) {
return null;
}
var childNode = processor.getDocumentElement();
node.appendChild(childNode);
return childNode;
}
_getAttributeLocalName(attribute) {
var localName;
if (attribute.localName) {
localName = attribute.localName;
}
else {
localName = attribute.baseName;
}
return localName;
}
readAttributes(node, attributesToRead, objectToFill) {
var e = Function._validateParams(arguments, [
{ name: "node", type: Object, mayBeNull: false },
{ name: "attributesToRead", type: Object, mayBeNull: false },
{ name: "objectToFill", type: Object, mayBeNull: false }
]);
if (e)
throw e;
var attribute;
var localName;
for (var i = 0; i < node.attributes.length; i++) {
attribute = node.attributes[i];
localName = this._getAttributeLocalName(attribute);
for (var p in attributesToRead) {
if (localName === p) {
objectToFill[attributesToRead[p]] = attribute.value;
}
}
}
}
isValidXml() {
var documentElement = this.getDocumentElement();
if (documentElement == null) {
return false;
}
else if (this._provider._xmldoc.getElementsByTagName("parsererror").length > 0) {
var parser = new DOMParser();
var errorParse = parser.parseFromString('<', 'text/xml');
var parseErrorNS = errorParse.getElementsByTagName("parsererror")[0].namespaceURI;
return this._provider._xmldoc.getElementsByTagNameNS(parseErrorNS, 'parsererror').length <= 0;
}
return true;
}
}
OSF.XmlProcessor = XmlProcessor;
})(OSF || (OSF = {}));
var OSF;
(function (OSF) {
let AppName;
(function (AppName) {
AppName[AppName["Unsupported"] = 0] = "Unsupported";
AppName[AppName["Excel"] = 1] = "Excel";
AppName[AppName["Word"] = 2] = "Word";
AppName[AppName["PowerPoint"] = 4] = "PowerPoint";
AppName[AppName["Outlook"] = 8] = "Outlook";
AppName[AppName["ExcelWebApp"] = 16] = "ExcelWebApp";
AppName[AppName["WordWebApp"] = 32] = "WordWebApp";
AppName[AppName["OutlookWebApp"] = 64] = "OutlookWebApp";
AppName[AppName["Project"] = 128] = "Project";
AppName[AppName["AccessWebApp"] = 256] = "AccessWebApp";
AppName[AppName["PowerpointWebApp"] = 512] = "PowerpointWebApp";
AppName[AppName["ExcelIOS"] = 1024] = "ExcelIOS";
AppName[AppName["Sway"] = 2048] = "Sway";
AppName[AppName["WordIOS"] = 4096] = "WordIOS";
AppName[AppName["PowerPointIOS"] = 8192] = "PowerPointIOS";
AppName[AppName["Access"] = 16384] = "Access";
AppName[AppName["Lync"] = 32768] = "Lync";
AppName[AppName["OutlookIOS"] = 65536] = "OutlookIOS";
AppName[AppName["OneNoteWebApp"] = 131072] = "OneNoteWebApp";
AppName[AppName["OneNote"] = 262144] = "OneNote";
AppName[AppName["ExcelWinRT"] = 524288] = "ExcelWinRT";
AppName[AppName["WordWinRT"] = 1048576] = "WordWinRT";
AppName[AppName["PowerpointWinRT"] = 2097152] = "PowerpointWinRT";
AppName[AppName["OutlookAndroid"] = 4194304] = "OutlookAndroid";
AppName[AppName["OneNoteWinRT"] = 8388608] = "OneNoteWinRT";
AppName[AppName["ExcelAndroid"] = 8388609] = "ExcelAndroid";
AppName[AppName["VisioWebApp"] = 8388610] = "VisioWebApp";
AppName[AppName["OneNoteIOS"] = 8388611] = "OneNoteIOS";
AppName[AppName["WordAndroid"] = 8388613] = "WordAndroid";
AppName[AppName["PowerpointAndroid"] = 8388614] = "PowerpointAndroid";
AppName[AppName["Visio"] = 8388615] = "Visio";
AppName[AppName["OneNoteAndroid"] = 4194305] = "OneNoteAndroid";
})(AppName = OSF.AppName || (OSF.AppName = {}));
})(OSF || (OSF = {}));
var DEBUG = true;
var OSF;
(function (OSF) {
let OsfNavigationMode;
(function (OsfNavigationMode) {
OsfNavigationMode[OsfNavigationMode["DefaultMode"] = 0] = "DefaultMode";
OsfNavigationMode[OsfNavigationMode["CategoryMode"] = 1] = "CategoryMode";
OsfNavigationMode[OsfNavigationMode["TrustPageMode"] = 2] = "TrustPageMode";
OsfNavigationMode[OsfNavigationMode["QueryResultMode"] = 3] = "QueryResultMode";
})(OsfNavigationMode = OSF.OsfNavigationMode || (OSF.OsfNavigationMode = {}));
OSF.ManifestNamespaces = {
"1.0": 'xmlns="http://schemas.microsoft.com/office/appforoffice/1.0" xmlns:o="http://schemas.microsoft.com/office/appforoffice/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
"1.1": 'xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:o="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0" xmlns:ov="http://schemas.microsoft.com/office/taskpaneappversionoverrides" xmlns:c="http://schemas.microsoft.com/office/contentappversionoverrides" xmlns:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides"'
};
OSF.ManifestSchemaVersion = {
"1.0": "1.0",
"1.1": "1.1"
};
class RequirementsChecker {
constructor(supportedCapabilities, supportedHosts, supportedRequirements, supportedControlTargets, supportedOmexAppVersions) {
this.defaultMinMaxVersion = "1.1";
this.setCapabilities(supportedCapabilities);
this.setHosts(supportedHosts);
this.setRequirements(supportedRequirements);
this.setSupportedControlTargets(supportedControlTargets);
this.setSupportedOmexAppVersions(supportedOmexAppVersions);
this.setFilteringEnabled(false);
}
isManifestSupported(manifest) {
if (!this.isFilteringEnabled()) {
return true;
}
if (!manifest) {
return false;
}
var manifestSchemaVersion = manifest.getManifestSchemaVersion() || OSF.ManifestSchemaVersion["1.0"];
switch (manifestSchemaVersion) {
case OSF.ManifestSchemaVersion["1.0"]:
return this._checkManifest1_0(manifest);
case OSF.ManifestSchemaVersion["1.1"]:
return this._checkManifest1_1(manifest);
default:
return false;
}
}
isEntitlementFromOmexSupported(entitlement) {
if (!this.isFilteringEnabled()) {
return true;
}
if (!entitlement) {
return false;
}
var targetType;
switch (entitlement.appSubType) {
case "1":
targetType = OSF.OsfControlTarget.TaskPane;
break;
case "2":
targetType = OSF.OsfControlTarget.InContent;
break;
case "3":
targetType = OSF.OsfControlTarget.Contextual;
break;
case "4":
targetType = OSF.OsfControlTarget.TaskPane;
break;
default:
return false;
}
if (!this._checkControlTarget(targetType)) {
return false;
}
if (!entitlement.requirements && !entitlement.hosts) {
if (!entitlement.hasOwnProperty("appVersions") || entitlement.appVersions === undefined) {
return true;
}
return this._checkOmexAppVersions(entitlement.appVersions);
}
var pseudoParser = new OSF.Manifest.Manifest(function () { });
var requirements, requirementsNode, hosts, hostsNode;
if (entitlement.requirements) {
pseudoParser._xmlProcessor = new OSF.XmlProcessor(entitlement.requirements, OSF.ManifestNamespaces["1.1"]);
requirementsNode = pseudoParser._xmlProcessor.getDocumentElement();
}
requirements = pseudoParser._parseRequirements(requirementsNode);
if (entitlement.hosts) {
pseudoParser._xmlProcessor = new OSF.XmlProcessor(entitlement.hosts, OSF.ManifestNamespaces["1.1"]);
hostsNode = pseudoParser._xmlProcessor.getDocumentElement();
}
hosts = pseudoParser._parseHosts(hostsNode);
return this._checkHosts(hosts) &&
this._checkSets(requirements.sets) &&
this._checkMethods(requirements.methods);
}
isEntitlementFromCorpCatalogSupported(entitlement) {
if (!this.isFilteringEnabled()) {
return true;
}
if (!entitlement) {
return false;
}
var targetType = OSF.OfficeAppType[entitlement.OEType];
if (!this._checkControlTarget(targetType)) {
return false;
}
var pseudoParser = new OSF.Manifest.Manifest(function () {
});
var hosts, sets, methods;
if (entitlement.OfficeExtensionCapabilitiesXML) {
pseudoParser._xmlProcessor = new OSF.XmlProcessor(entitlement.OfficeExtensionCapabilitiesXML, OSF.ManifestNamespaces["1.1"]);
var xmlNode, requirements;
xmlNode = pseudoParser._xmlProcessor.getDocumentElement();
requirements = pseudoParser._parseRequirements(xmlNode);
sets = requirements.sets;
methods = requirements.methods;
hosts = pseudoParser._parseHosts(xmlNode);
}
return this._checkHosts(hosts) && this._checkSets(sets) && this._checkMethods(methods);
}
setCapabilities(capabilities) {
this._supportedCapabilities = this._scalarArrayToObject(capabilities);
}
setHosts(hosts) {
this._supportedHosts = this._scalarArrayToObject(hosts);
}
setRequirements(requirements) {
this._supportedSets = requirements && this._arrayToSetsObject(requirements.sets) || {};
this._supportedMethods = requirements && this._scalarArrayToObject(requirements.methods) || {};
}
setSupportedControlTargets(controlTargets) {
this._supportedControlTargets = this._scalarArrayToObject(controlTargets);
}
setSupportedOmexAppVersions(appVersions) {
this._supportedOmexAppVersions = appVersions && appVersions.slice ? appVersions.slice(0) : [];
}
setFilteringEnabled(filteringEnabled) {
this._filteringEnabled = filteringEnabled ? true : false;
}
isFilteringEnabled() {
return this._filteringEnabled;
}
_checkManifest1_0(manifest) {
return this._checkCapabilities(manifest.getCapabilities());
}
_checkCapabilities(askedCapabilities) {
if (!askedCapabilities || askedCapabilities.length === 0) {
return true;
}
for (var i = 0; i < askedCapabilities.length; i++) {
if (this._supportedCapabilities[askedCapabilities[i]]) {
return true;
}
}
return false;
}
_checkManifest1_1(manifest) {
var askedRequirements = manifest.getRequirements() || {};
return this._checkHosts(manifest.getHosts()) &&
this._checkSets(askedRequirements.sets) &&
this._checkMethods(askedRequirements.methods);
}
_checkHosts(askedHosts) {
if (!askedHosts || askedHosts.length === 0) {
return true;
}
for (var i = 0; i < askedHosts.length; i++) {
if (this._supportedHosts[askedHosts[i]]) {
return true;
}
}
return false;
}
_checkSets(askedSets) {
if (!askedSets || askedSets.length === 0) {
return true;
}
for (var i = 0; i < askedSets.length; i++) {
var askedSet = askedSets[i];
var supportedSet = this._supportedSets[askedSet.name.toLowerCase()];
if (!supportedSet) {
return false;
}
if (askedSet.version) {
if (this._compareVersionStrings(supportedSet.minVersion || this.defaultMinMaxVersion, askedSet.version) > 0 ||
this._compareVersionStrings(supportedSet.maxVersion || this.defaultMinMaxVersion, askedSet.version) < 0) {
return false;
}
}
}
return true;
}
_checkMethods(askedMethods) {
if (!askedMethods || askedMethods.length === 0) {
return true;
}
for (var i = 0; i < askedMethods.length; i++) {
if (!this._supportedMethods[askedMethods[i]]) {
return false;
}
}
return true;
}
_checkControlTarget(askedControlTarget) {
return askedControlTarget != undefined && this._supportedControlTargets[askedControlTarget];
}
_checkOmexAppVersions(askedAppVersions) {
if (!askedAppVersions) {
return false;
}
for (var i = 0; i < this._supportedOmexAppVersions.length; i++) {
if (askedAppVersions.indexOf(this._supportedOmexAppVersions[i]) >= 0) {
return true;
}
}
return false;
}
_scalarArrayToObject(array) {
var obj = {};
if (array && array.length) {
for (var i = 0; i < array.length; i++) {
if (array[i] != undefined) {
obj[array[i]] = true;
}
}
}
return obj;
}
_arrayToSetsObject(array) {
var obj = {};
if (array && array.length) {
for (var i = 0; i < array.length; i++) {
var set = array[i];
if (set && set.name != undefined) {
obj[set.name.toLowerCase()] = set;
}
}
}
return obj;
}
_getSupportedSet() {
var obj = {};
var supportSetNames = Object.getOwnPropertyNames(this._supportedSets);
for (var i = 0; i < supportSetNames.length; i++) {
var supportedSet = this._supportedSets[supportSetNames[i]];
obj[supportedSet.name.toLowerCase()] = supportedSet.maxVersion || this.defaultMinMaxVersion;
}
if (typeof (JSON) !== "undefined") {
return JSON.stringify(obj);
}
return obj;
}
_getSupportedSetAsCapabilities() {
return Object.getOwnPropertyNames(this._supportedSets).map(name => {
const supportedSet = this._supportedSets[name];
return ({ Name: supportedSet.name.toLowerCase(), Version: supportedSet.maxVersion || this.defaultMinMaxVersion });
});
}
_compareVersionStrings(leftVersion, rightVersion) {
leftVersion = leftVersion.split('.');
rightVersion = rightVersion.split('.');
var maxComponentCount = Math.max(leftVersion.length, rightVersion.length);
for (var i = 0; i < maxComponentCount; i++) {
var leftInt = parseInt(leftVersion[i], 10) || 0, rightInt = parseInt(rightVersion[i], 10) || 0;
if (leftInt === rightInt) {
continue;
}
return leftInt - rightInt;
}
return 0;
}
}
OSF.RequirementsChecker = RequirementsChecker;
})(OSF || (OSF = {}));
var Telemetry;
(function (Telemetry) {
"use strict";
let ULSTraceLevel;
(function (ULSTraceLevel) {
ULSTraceLevel[ULSTraceLevel["unexpected"] = 10] = "unexpected";
ULSTraceLevel[ULSTraceLevel["warning"] = 15] = "warning";
ULSTraceLevel[ULSTraceLevel["info"] = 50] = "info";
ULSTraceLevel[ULSTraceLevel["verbose"] = 100] = "verbose";
ULSTraceLevel[ULSTraceLevel["verboseEx"] = 200] = "verboseEx";
})(ULSTraceLevel = Telemetry.ULSTraceLevel || (Telemetry.ULSTraceLevel = {}));
let ULSCat;
(function (ULSCat) {
ULSCat[ULSCat["msoulscat_Osf_Latency"] = 1401] = "msoulscat_Osf_Latency";
ULSCat[ULSCat["msoulscat_Osf_Notification"] = 1402] = "msoulscat_Osf_Notification";
ULSCat[ULSCat["msoulscat_Osf_Runtime"] = 1403] = "msoulscat_Osf_Runtime";
ULSCat[ULSCat["msoulscat_Osf_AppManagementMenu"] = 1404] = "msoulscat_Osf_AppManagementMenu";
ULSCat[ULSCat["msoulscat_Osf_InsertionDialogSession"] = 1405] = "msoulscat_Osf_InsertionDialogSession";
ULSCat[ULSCat["msoulscat_Osf_UploadFileDevCatelog"] = 1406] = "msoulscat_Osf_UploadFileDevCatelog";
ULSCat[ULSCat["msoulscat_Osf_UploadFileDevCatalogUsage"] = 1411] = "msoulscat_Osf_UploadFileDevCatalogUsage";
})(ULSCat = Telemetry.ULSCat || (Telemetry.ULSCat = {}));
let AppManagementMenuFlags;
(function (AppManagementMenuFlags) {
AppManagementMenuFlags[AppManagementMenuFlags["ConfirmationDialogCancel"] = 256] = "ConfirmationDialogCancel";
AppManagementMenuFlags[AppManagementMenuFlags["InsertionDialogClosed"] = 512] = "InsertionDialogClosed";
AppManagementMenuFlags[AppManagementMenuFlags["IsAnonymous"] = 1024] = "IsAnonymous";
})(AppManagementMenuFlags || (AppManagementMenuFlags = {}));
let InsertionDialogStateFlags;
(function (InsertionDialogStateFlags) {
InsertionDialogStateFlags[InsertionDialogStateFlags["Undefined"] = 0] = "Undefined";
InsertionDialogStateFlags[InsertionDialogStateFlags["Inserted"] = 1] = "Inserted";
InsertionDialogStateFlags[InsertionDialogStateFlags["Canceled"] = 2] = "Canceled";
InsertionDialogStateFlags[InsertionDialogStateFlags["Closed"] = 3] = "Closed";
InsertionDialogStateFlags[InsertionDialogStateFlags["TrustPageVisited"] = 8] = "TrustPageVisited";
})(InsertionDialogStateFlags || (InsertionDialogStateFlags = {}));
class LatencyStopwatch {
constructor() {
this.timeValue = 0;
}
Start() {
this.timeValue = -(new Date().getTime());
this.finishedMeasurement = false;
}
Stop() {
if (this.timeValue < 0) {
this.timeValue += (new Date().getTime());
this.finishedMeasurement = true;
}
}
get Finished() {
return this.finishedMeasurement;
}
get ElapsedTime() {
var elapsedTime = this.timeValue;
if (!this.Finished && elapsedTime < 0) {
elapsedTime = Math.abs(elapsedTime) - (new Date().getTime());
}
return elapsedTime;
}
}
Telemetry.LatencyStopwatch = LatencyStopwatch;
class Context {
}
Telemetry.Context = Context;
class Logger {
static SetExternalLogger(extLogger) {
Logger.s_externalLogger = extLogger;
}
static SendULSTraceTag(category, level, data, tagId) {
if (!Microsoft.Office.WebExtension.FULSSupported) {
return;
}
if (window.Diag && Diag.UULS && Diag.UULS.trace) {
Diag.UULS.trace(tagId, category, level, data);
}
else if (Logger.s_externalLogger && Logger.s_externalLogger.sendTraceTag) {
Logger.s_externalLogger.sendTraceTag(tagId, category, level, data);
}
}
}
Logger.s_externalLogger = null;
Telemetry.Logger = Logger;
class NotificationLogger {
constructor() {
}
static Instance() {
if (!NotificationLogger.instance) {
NotificationLogger.instance = new NotificationLogger();
}
return NotificationLogger.instance;
}
LogData(data) {
Logger.SendULSTraceTag(NotificationLogger.category, NotificationLogger.level, data.SerializeRow(), 0x005c815f);
}
}
NotificationLogger.category = ULSCat.msoulscat_Osf_Notification;
NotificationLogger.level = ULSTraceLevel.info;
Telemetry.NotificationLogger = NotificationLogger;
class AppManagementMenuLogger {
constructor() {
}
static Instance() {
if (!AppManagementMenuLogger.instance) {
AppManagementMenuLogger.instance = new AppManagementMenuLogger();
}
return AppManagementMenuLogger.instance;
}
LogData(data) {
Logger.SendULSTraceTag(AppManagementMenuLogger.category, AppManagementMenuLogger.level, data.SerializeRow(), 0x1f31d7e1);
}
}
AppManagementMenuLogger.category = ULSCat.msoulscat_Osf_AppManagementMenu;
AppManagementMenuLogger.level = ULSTraceLevel.info;
Telemetry.AppManagementMenuLogger = AppManagementMenuLogger;
class UploadFileDevCatelogLogger {
constructor() {
}
static Instance() {
if (!UploadFileDevCatelogLogger.instance) {
UploadFileDevCatelogLogger.instance = new UploadFileDevCatelogLogger();
}
return UploadFileDevCatelogLogger.instance;
}
LogData(data) {
Logger.SendULSTraceTag(UploadFileDevCatelogLogger.category, UploadFileDevCatelogLogger.level, data.SerializeRow(), 0x1f31d7e2);
}
}
UploadFileDevCatelogLogger.category = ULSCat.msoulscat_Osf_UploadFileDevCatelog;
UploadFileDevCatelogLogger.level = ULSTraceLevel.info;
Telemetry.UploadFileDevCatelogLogger = UploadFileDevCatelogLogger;
class UploadFileDevCatalogUsageLogger {
constructor() {
}
static Instance() {
if (!UploadFileDevCatalogUsageLogger.instance) {
UploadFileDevCatalogUsageLogger.instance = new UploadFileDevCatalogUsageLogger();
}
return UploadFileDevCatalogUsageLogger.instance;
}
LogData(data) {
Logger.SendULSTraceTag(UploadFileDevCatalogUsageLogger.category, UploadFileDevCatalogUsageLogger.level, data.SerializeRow(), 0x1f31d7e3);
}
}
UploadFileDevCatalogUsageLogger.category = ULSCat.msoulscat_Osf_UploadFileDevCatalogUsage;
UploadFileDevCatalogUsageLogger.level = ULSTraceLevel.info;
Telemetry.UploadFileDevCatalogUsageLogger = UploadFileDevCatalogUsageLogger;
class LatencyLogger {
constructor() {
}
static Instance() {
if (!LatencyLogger.instance) {
LatencyLogger.instance = new LatencyLogger();
}
return LatencyLogger.instance;
}
LogData(data) {
Logger.SendULSTraceTag(LatencyLogger.category, LatencyLogger.level, data.SerializeRow(), 0x00487317);
}
}
LatencyLogger.category = ULSCat.msoulscat_Osf_Latency;
LatencyLogger.level = ULSTraceLevel.info;
Telemetry.LatencyLogger = LatencyLogger;
class InsertionDialogSessionLogger {
constructor() {
}
static Instance() {
if (!InsertionDialogSessionLogger.instance) {
InsertionDialogSessionLogger.instance = new InsertionDialogSessionLogger();
}
return InsertionDialogSessionLogger.instance;
}
LogData(data) {
Logger.SendULSTraceTag(InsertionDialogSessionLogger.category, InsertionDialogSessionLogger.level, data.SerializeRow(), 0x1f31d800);
}
}
InsertionDialogSessionLogger.category = ULSCat.msoulscat_Osf_InsertionDialogSession;
InsertionDialogSessionLogger.level = ULSTraceLevel.info;
Telemetry.InsertionDialogSessionLogger = InsertionDialogSessionLogger;
class AppNotificationHelper {
static LogNotification(correlationId, errorResult, notificationClickInfo) {
var notificationData = new OSFLog.AppNotificationUsageData();
notificationData.CorrelationId = correlationId;
notificationData.ErrorResult = errorResult;
notificationData.NotificationClickInfo = notificationClickInfo;
NotificationLogger.Instance().LogData(notificationData);
}
}
Telemetry.AppNotificationHelper = AppNotificationHelper;
class AppManagementMenuHelper {
static LogAppManagementMenuAction(assetId, operationMetadata, untrustedCount, isDialogClosed, isAnonymous, hrStatus) {
var appManagementMenuData = new OSFLog.AppManagementMenuUsageData();
var assetIdNumber = assetId.toLowerCase().indexOf("wa") === 0 ? parseInt(assetId.substring(2), 10) : parseInt(assetId, 10);
if (isDialogClosed) {
operationMetadata |= AppManagementMenuFlags.InsertionDialogClosed;
}
if (isAnonymous) {
operationMetadata |= AppManagementMenuFlags.IsAnonymous;
}
appManagementMenuData.AssetId = assetIdNumber;
appManagementMenuData.OperationMetadata = operationMetadata;
appManagementMenuData.ErrorResult = hrStatus;
AppManagementMenuLogger.Instance().LogData(appManagementMenuData);
}
}
Telemetry.AppManagementMenuHelper = AppManagementMenuHelper;
class UploadFileDevCatelogHelper {
static LogUploadFileDevCatelogAction(correlationId, operationMetadata, untrustedCount, isDialogClosed, isAnonymous, hrStatus) {
var uploadFileDevCatelogData = new OSFLog.UploadFileDevCatelogUsageData();
uploadFileDevCatelogData.CorrelationId = correlationId;
uploadFileDevCatelogData.OperationMetadata = operationMetadata;
uploadFileDevCatelogData.ErrorResult = hrStatus;
UploadFileDevCatelogLogger.Instance().LogData(uploadFileDevCatelogData);
}
}
Telemetry.UploadFileDevCatelogHelper = UploadFileDevCatelogHelper;
class UploadFileDevCatalogUsageHelper {
static LogUploadFileDevCatalogUsageAction(correlationId, storeType, id, appVersion, appTargetType, isAppCommand, appSizeWidth, appSizeHeight) {
var uploadFileDevCatalogUsageData = new OSFLog.UploadFileDevCatalogUsageUsageData();
uploadFileDevCatalogUsageData.CorrelationId = correlationId;
uploadFileDevCatalogUsageData.StoreType = storeType;
uploadFileDevCatalogUsageData.AppId = id;
uploadFileDevCatalogUsageData.AppVersion = appVersion;
uploadFileDevCatalogUsageData.AppTargetType = appTargetType;
uploadFileDevCatalogUsageData.IsAppCommand = isAppCommand;
uploadFileDevCatalogUsageData.AppSizeWidth = appSizeWidth;
uploadFileDevCatalogUsageData.AppSizeHeight = appSizeHeight;
UploadFileDevCatalogUsageLogger.Instance().LogData(uploadFileDevCatalogUsageData);
}
}
Telemetry.UploadFileDevCatalogUsageHelper = UploadFileDevCatalogUsageHelper;
class AppLoadTimeHelper {
static GenerateActivationMessage(activationRuntimeType, correlationId) {
var message = "";
if (activationRuntimeType != null) {
message += "ActivationRuntimeType: " + activationRuntimeType.toString() + "|";
}
if (correlationId != null) {
message += "CorrelationId: " + correlationId;
}
return message;
}
static ActivationStart(context, appInfo, assetId, correlationId, instanceId, runtimeType) {
AppLoadTimeHelper.activatingNumber++;
context.LoadTime = new OSFLog.AppLoadTimeUsageData();
context.Timers = {};
context.LoadTime.CorrelationId = correlationId;
context.LoadTime.AppInfo = appInfo;
context.LoadTime.ActivationInfo = 0;
context.LoadTime.InstanceId = instanceId;
context.LoadTime.AssetId = assetId;
context.LoadTime.Stage1Time = 0;
context.Timers["Stage1Time"] = new LatencyStopwatch();
context.LoadTime.Stage2Time = 0;
context.Timers["Stage2Time"] = new LatencyStopwatch();
context.LoadTime.Stage3Time = 0;
context.LoadTime.Stage4Time = 0;
context.Timers["Stage4Time"] = new LatencyStopwatch();
context.LoadTime.Stage5Time = 0;
context.Timers["Stage5Time"] = new LatencyStopwatch();
context.LoadTime.Stage6Time = AppLoadTimeHelper.activatingNumber;
context.LoadTime.Stage7Time = 0;
context.Timers["Stage7Time"] = new LatencyStopwatch();
context.LoadTime.Stage8Time = 0;
context.Timers["Stage8Time"] = new LatencyStopwatch();
context.LoadTime.Stage9Time = 0;
context.Timers["Stage9Time"] = new LatencyStopwatch();
context.LoadTime.Stage10Time = 0;
context.Timers["Stage10Time"] = new LatencyStopwatch();
context.LoadTime.Stage11Time = 0;
context.Timers["Stage11Time"] = new LatencyStopwatch();
context.LoadTime.ErrorResult = 0;
context.ActivationRuntimeType = runtimeType;
AppLoadTimeHelper.StartStopwatch(context, "Stage1Time");
Logger.SendULSTraceTag(ULSCat.msoulscat_Osf_Runtime, ULSTraceLevel.info, AppLoadTimeHelper.GenerateActivationMessage(runtimeType, correlationId), 0x1f31d801);
}
static ActivationEnd(context) {
AppLoadTimeHelper.ActivateEndInternal(context);
}
static PageStart(context) {
AppLoadTimeHelper.StartStopwatch(context, "Stage2Time");
}
static PageLoaded(context) {
AppLoadTimeHelper.StopStopwatch(context, "Stage2Time");
}
static ServerCallStart(context) {
AppLoadTimeHelper.StartStopwatch(context, "Stage4Time");
}
static ServerCallEnd(context) {
AppLoadTimeHelper.StopStopwatch(context, "Stage4Time");
}
static AuthenticationStart(context) {
AppLoadTimeHelper.StartStopwatch(context, "Stage5Time");
}
static AuthenticationEnd(context) {
AppLoadTimeHelper.StopStopwatch(context, "Stage5Time");
}
static EntitlementCheckStart(context) {
AppLoadTimeHelper.StartStopwatch(context, "Stage7Time");
}
static EntitlementCheckEnd(context) {
AppLoadTimeHelper.StopStopwatch(context, "Stage7Time");
}
static KilledAppsCheckStart(context) {
AppLoadTimeHelper.StartStopwatch(context, "Stage8Time");
}
static KilledAppsCheckEnd(context) {
AppLoadTimeHelper.StopStopwatch(context, "Stage8Time");
}
static AppStateCheckStart(context) {
AppLoadTimeHelper.StartStopwatch(context, "Stage9Time");
}
static AppStateCheckEnd(context) {
AppLoadTimeHelper.StopStopwatch(context, "Stage9Time");
}
static ManifestRequestStart(context) {
AppLoadTimeHelper.StartStopwatch(context, "Stage10Time");
}
static ManifestRequestEnd(context) {
AppLoadTimeHelper.StopStopwatch(context, "Stage10Time");
}
static OfficeJSStartToLoad(context) {
AppLoadTimeHelper.StartStopwatch(context, "Stage11Time");
}
static OfficeJSLoaded(context) {
AppLoadTimeHelper.StopStopwatch(context, "Stage11Time");
}
static SetAnonymousFlag(context, anonymousFlag) {
AppLoadTimeHelper.SetActivationInfoField(context, AppLoadTimeHelper.ConvertFlagToBit(anonymousFlag), 2, 0);
}
static SetRetryCount(context, retryCount) {
AppLoadTimeHelper.SetActivationInfoField(context, retryCount, 3, 2);
}
static SetManifestTrustCachedFlag(context, manifestTrustCachedFlag) {
AppLoadTimeHelper.SetActivationInfoField(context, AppLoadTimeHelper.ConvertFlagToBit(manifestTrustCachedFlag), 2, 5);
}
static SetManifestDataCachedFlag(context, manifestDataCachedFlag) {
AppLoadTimeHelper.SetActivationInfoField(context, AppLoadTimeHelper.ConvertFlagToBit(manifestDataCachedFlag), 2, 7);
}
static SetOmexHasEntitlementFlag(context, omexHasEntitlementFlag) {
AppLoadTimeHelper.SetActivationInfoField(context, AppLoadTimeHelper.ConvertFlagToBit(omexHasEntitlementFlag), 2, 9);
}
static SetManifestDataInvalidFlag(context, manifestDataInvalidFlag) {
AppLoadTimeHelper.SetActivationInfoField(context, AppLoadTimeHelper.ConvertFlagToBit(manifestDataInvalidFlag), 2, 11);
}
static SetAppStateDataCachedFlag(context, appStateDataCachedFlag) {
AppLoadTimeHelper.SetActivationInfoField(context, AppLoadTimeHelper.ConvertFlagToBit(appStateDataCachedFlag), 2, 13);
}
static SetAppStateDataInvalidFlag(context, appStateDataInvalidFlag) {
AppLoadTimeHelper.SetActivationInfoField(context, AppLoadTimeHelper.ConvertFlagToBit(appStateDataInvalidFlag), 2, 15);
}
static SetActivationRuntimeType(context, activationRuntimeType) {
AppLoadTimeHelper.SetActivationInfoField(context, activationRuntimeType, 2, 17);
}
static SetErrorResult(context, result) {
if (context.LoadTime) {
context.LoadTime.ErrorResult = result;
AppLoadTimeHelper.ActivateEndInternal(context);
}
}
static SetBit(context, value, offset, length) {
AppLoadTimeHelper.SetActivationInfoField(context, value, length || 2, offset);
}
static StartStopwatch(context, name) {
if (context.LoadTime && context.Timers && context.Timers[name]) {
context.Timers[name].Start();
AppLoadTimeHelper.UpdateActivatingNumber(context);
}
}
static StopStopwatch(context, name) {
if (context.LoadTime && context.Timers && context.Timers[name]) {
context.Timers[name].Stop();
AppLoadTimeHelper.UpdateActivatingNumber(context);
}
}
static ConvertFlagToBit(flag) {
if (flag) {
return 2;
}
else {
return 1;
}
}
static SetActivationInfoField(context, value, length, offset) {
if (context.LoadTime) {
AppLoadTimeHelper.UpdateActivatingNumber(context);
context.LoadTime.ActivationInfo = AppLoadTimeHelper.SetBitField(context.LoadTime.ActivationInfo, value, length, offset);
}
}
static SetBitField(field, value, length, offset) {
var mask = (Math.pow(2, length) - 1) << offset;
var cleanField = field & ~mask;
return cleanField | (value << offset);
}
static UpdateActivatingNumber(context) {
if (context.LoadTime) {
context.LoadTime.Stage6Time = (context.LoadTime.Stage6Time > AppLoadTimeHelper.activatingNumber) ? context.LoadTime.Stage6Time : AppLoadTimeHelper.activatingNumber;
}
}
static ActivateEndInternal(context) {
if (context.LoadTime) {
AppLoadTimeHelper.StopStopwatch(context, "Stage1Time");
if (context.Timers) {
for (var key in context.Timers) {
if (context.Timers[key].ElapsedTime != null) {
context.LoadTime[key] = context.Timers[key].ElapsedTime;
}
}
}
Logger.SendULSTraceTag(ULSCat.msoulscat_Osf_Runtime, ULSTraceLevel.info, AppLoadTimeHelper.GenerateActivationMessage(context.ActivationRuntimeType, context.LoadTime.CorrelationId), 0x1f31d802);
LatencyLogger.Instance().LogData(context.LoadTime);
context.LoadTime = null;
AppLoadTimeHelper.activatingNumber--;
}
}
}
AppLoadTimeHelper.activatingNumber = 0;
Telemetry.AppLoadTimeHelper = AppLoadTimeHelper;
class RuntimeTelemetryHelper {
static LogProxyFailure(appCorrelationId, methodName, errorInfo) {
var constructedMessage;
if (appCorrelationId == null) {
appCorrelationId = "";
}
constructedMessage = OSF.OUtil.formatString("appCorrelationId:{0}, methodName:{1}", appCorrelationId, methodName);
Object.keys(errorInfo).forEach(function (key) {
var value = errorInfo[key];
if (value != null) {
value = value.toString();
}
constructedMessage += ", " + key + ":" + value;
});
let logWarning = true;
const statusCodePattern = new RegExp("statusCode:(\\d+)");
let match = constructedMessage.match(statusCodePattern);
if (match) {
switch (match[1]) {
case "404":
logWarning = false;
Logger.SendULSTraceTag(RuntimeTelemetryHelper.category, ULSTraceLevel.info, constructedMessage, 0x1e420558);
break;
default:
logWarning = true;
break;
}
}
if (logWarning) {
Logger.SendULSTraceTag(RuntimeTelemetryHelper.category, ULSTraceLevel.warning, constructedMessage, 0x005c8160);
}
}
static LogExceptionTag(message, exception, appCorrelationId, tagId) {
var constructedMessage = message;
if (exception) {
if (exception.name) {
constructedMessage += " Exception name:" + exception.name + ".";
}
if (exception.paramName) {
constructedMessage += " Param name:" + exception.paramName + ".";
}
if (exception.message) {
constructedMessage += " Message:" + exception.message + ".";
}
if (exception.stack) {
constructedMessage += " [Stack:" + exception.stack + "]";
}
}
if (appCorrelationId != null) {
constructedMessage += " AppCorrelationId:" + appCorrelationId + ".";
}
Logger.SendULSTraceTag(RuntimeTelemetryHelper.category, ULSTraceLevel.warning, constructedMessage, tagId);
}
static LogCommonMessageTag(message, appCorrelationId, tagId) {
if (appCorrelationId != null) {
message += " AppCorrelationId:" + appCorrelationId + ".";
}
Logger.SendULSTraceTag(RuntimeTelemetryHelper.category, ULSTraceLevel.info, message, tagId);
}
}
RuntimeTelemetryHelper.category = ULSCat.msoulscat_Osf_Runtime;
Telemetry.RuntimeTelemetryHelper = RuntimeTelemetryHelper;
class InsertionDialogSessionHelper {
static LogInsertionDialogSession(assetId, totalSessionTime, trustPageSessionTime, appInserted, lastActiveTab, lastActiveTabCount) {
var insertionDialogSessionData = new OSFLog.InsertionDialogSessionUsageData();
var assetIdNumber = assetId.toLowerCase().indexOf("wa") === 0 ? parseInt(assetId.substring(2), 10) : parseInt(assetId, 10);
var dialogState = InsertionDialogStateFlags.Undefined;
if (appInserted) {
dialogState |= InsertionDialogStateFlags.Inserted;
}
else {
dialogState |= InsertionDialogStateFlags.Canceled;
}
if (trustPageSessionTime > 0) {
dialogState |= InsertionDialogStateFlags.TrustPageVisited;
}
insertionDialogSessionData.AssetId = assetIdNumber;
insertionDialogSessionData.TotalSessionTime = totalSessionTime;
insertionDialogSessionData.TrustPageSessionTime = trustPageSessionTime;
insertionDialogSessionData.DialogState = dialogState;
insertionDialogSessionData.LastActiveTab = lastActiveTab;
insertionDialogSessionData.LastActiveTabCount = lastActiveTabCount;
InsertionDialogSessionLogger.Instance().LogData(insertionDialogSessionData);
}
}
Telemetry.InsertionDialogSessionHelper = InsertionDialogSessionHelper;
class PrivacyRules {
static IsPrivateAddin(storeType, assetId, exchangeExtensionProviderName, exchangeExtensionType, storeId) {
switch ((storeType || "").toLowerCase()) {
case OSF.StoreType.OMEX:
case OSF.StoreType.HardCodedPreinstall:
case OSF.StoreType.FirstParty:
case OSF.StoreType.Sdx:
case OSF.StoreType.WopiCatalog:
return false;
case OSF.StoreType.SPCatalog:
case OSF.StoreType.SPApp:
case OSF.StoreType.FileSystem:
case OSF.StoreType.Registry:
case OSF.StoreType.UploadFileDevCatalog:
return true;
case OSF.StoreType.PrivateCatalog:
{
if (assetId && assetId.toLowerCase().indexOf("wa") === 0) {
return false;
}
return true;
}
case OSF.StoreType.Exchange:
{
var extensionTypeLowerCase = exchangeExtensionType != null ? exchangeExtensionType.toLowerCase() : null;
if (extensionTypeLowerCase &&
extensionTypeLowerCase === "default" ||
extensionTypeLowerCase === "marketplace" ||
extensionTypeLowerCase === "preinstalled" ||
extensionTypeLowerCase === "marketplaceprivatecatalog") {
return false;
}
var providerNameLowercase = exchangeExtensionProviderName != null ? exchangeExtensionProviderName.toLowerCase() : null;
if (providerNameLowercase &&
providerNameLowercase === "microsoft" ||
providerNameLowercase === "microsoft corp" ||
providerNameLowercase === "microsoft corp." ||
providerNameLowercase === "microsoft corporation") {
return false;
}
return true;
}
case OSF.StoreType.InMemory:
default:
Logger.SendULSTraceTag(ULSCat.msoulscat_Osf_Notification, ULSTraceLevel.warning, "Unknown StoreType: " + storeType + " in function IsPrivateAddin.", 0x1f31d803);
return true;
}
}
static GetAssetId(storeType, storeId, assetId, exchangeExtensionProviderName, exchangeExtensionType) {
Telemetry.RuntimeTelemetryHelper.LogExceptionTag("PrivacyRules GetAssetId is deprecated", null, null, 0x1e60e595);
return (PrivacyRules.IsPrivateAddin(storeType, assetId, exchangeExtensionProviderName, exchangeExtensionType, storeId) ? PrivacyRules.privateCompliantId : assetId);
}
static GetPrivacyCompliantId(solutionId, storeType, assetId, exchangeExtensionProviderName, exchangeExtensionType, storeId) {
return (PrivacyRules.IsPrivateAddin(storeType, assetId, exchangeExtensionProviderName, exchangeExtensionType, storeId)
? PrivacyRules.privateCompliantId : solutionId);
}
}
PrivacyRules.privateCompliantId = "PRIVATE";
Telemetry.PrivacyRules = PrivacyRules;
})(Telemetry || (Telemetry = {}));
var OSFLog;
(function (OSFLog) {
class BaseUsageData {
constructor(table) {
this._table = table;
this._fields = {};
}
get Fields() {
return this._fields;
}
get Table() {
return this._table;
}
SerializeFields() {
}
SetSerializedField(key, value) {
if (typeof (value) !== "undefined" && value !== null) {
this._serializedFields[key] = value.toString();
}
}
SerializeRow() {
this._serializedFields = {};
this.SetSerializedField("Table", this._table);
this.SerializeFields();
return JSON.stringify(this._serializedFields);
}
}
OSFLog.BaseUsageData = BaseUsageData;
class AppLoadTimeUsageData extends BaseUsageData {
constructor() { super("AppLoadTime"); }
get CorrelationId() { return this.Fields["CorrelationId"]; }
set CorrelationId(value) { this.Fields["CorrelationId"] = value; }
get AppInfo() { return this.Fields["AppInfo"]; }
set AppInfo(value) { this.Fields["AppInfo"] = value; }
get ActivationInfo() { return this.Fields["ActivationInfo"]; }
set ActivationInfo(value) { this.Fields["ActivationInfo"] = value; }
get InstanceId() { return this.Fields["InstanceId"]; }
set InstanceId(value) { this.Fields["InstanceId"] = value; }
get AssetId() { return this.Fields["AssetId"]; }
set AssetId(value) { this.Fields["AssetId"] = value; }
get Stage1Time() { return this.Fields["Stage1Time"]; }
set Stage1Time(value) { this.Fields["Stage1Time"] = value; }
get Stage2Time() { return this.Fields["Stage2Time"]; }
set Stage2Time(value) { this.Fields["Stage2Time"] = value; }
get Stage3Time() { return this.Fields["Stage3Time"]; }
set Stage3Time(value) { this.Fields["Stage3Time"] = value; }
get Stage4Time() { return this.Fields["Stage4Time"]; }
set Stage4Time(value) { this.Fields["Stage4Time"] = value; }
get Stage5Time() { return this.Fields["Stage5Time"]; }
set Stage5Time(value) { this.Fields["Stage5Time"] = value; }
get Stage6Time() { return this.Fields["Stage6Time"]; }
set Stage6Time(value) { this.Fields["Stage6Time"] = value; }
get Stage7Time() { return this.Fields["Stage7Time"]; }
set Stage7Time(value) { this.Fields["Stage7Time"] = value; }
get Stage8Time() { return this.Fields["Stage8Time"]; }
set Stage8Time(value) { this.Fields["Stage8Time"] = value; }
get Stage9Time() { return this.Fields["Stage9Time"]; }
set Stage9Time(value) { this.Fields["Stage9Time"] = value; }
get Stage10Time() { return this.Fields["Stage10Time"]; }
set Stage10Time(value) { this.Fields["Stage10Time"] = value; }
get Stage11Time() { return this.Fields["Stage11Time"]; }
set Stage11Time(value) { this.Fields["Stage11Time"] = value; }
get ErrorResult() { return this.Fields["ErrorResult"]; }
set ErrorResult(value) { this.Fields["ErrorResult"] = value; }
SerializeFields() {
this.SetSerializedField("CorrelationId", this.CorrelationId);
this.SetSerializedField("AppInfo", this.AppInfo);
this.SetSerializedField("ActivationInfo", this.ActivationInfo);
this.SetSerializedField("InstanceId", this.InstanceId);
this.SetSerializedField("AssetId", this.AssetId);
this.SetSerializedField("Stage1Time", this.Stage1Time);
this.SetSerializedField("Stage2Time", this.Stage2Time);
this.SetSerializedField("Stage3Time", this.Stage3Time);
this.SetSerializedField("Stage4Time", this.Stage4Time);
this.SetSerializedField("Stage5Time", this.Stage5Time);
this.SetSerializedField("Stage6Time", this.Stage6Time);
this.SetSerializedField("Stage7Time", this.Stage7Time);
this.SetSerializedField("Stage8Time", this.Stage8Time);
this.SetSerializedField("Stage9Time", this.Stage9Time);
this.SetSerializedField("Stage10Time", this.Stage10Time);
this.SetSerializedField("Stage11Time", this.Stage11Time);
this.SetSerializedField("ErrorResult", this.ErrorResult);
}
}
OSFLog.AppLoadTimeUsageData = AppLoadTimeUsageData;
class AppNotificationUsageData extends BaseUsageData {
constructor() { super("AppNotification"); }
get CorrelationId() { return this.Fields["CorrelationId"]; }
set CorrelationId(value) { this.Fields["CorrelationId"] = value; }
get ErrorResult() { return this.Fields["ErrorResult"]; }
set ErrorResult(value) { this.Fields["ErrorResult"] = value; }
get NotificationClickInfo() { return this.Fields["NotificationClickInfo"]; }
set NotificationClickInfo(value) { this.Fields["NotificationClickInfo"] = value; }
SerializeFields() {
this.SetSerializedField("CorrelationId", this.CorrelationId);
this.SetSerializedField("ErrorResult", this.ErrorResult);
this.SetSerializedField("NotificationClickInfo", this.NotificationClickInfo);
}
}
OSFLog.AppNotificationUsageData = AppNotificationUsageData;
class AppManagementMenuUsageData extends BaseUsageData {
constructor() { super("AppManagementMenu"); }
get AssetId() { return this.Fields["AssetId"]; }
set AssetId(value) { this.Fields["AssetId"] = value; }
get OperationMetadata() { return this.Fields["OperationMetadata"]; }
set OperationMetadata(value) { this.Fields["OperationMetadata"] = value; }
get ErrorResult() { return this.Fields["ErrorResult"]; }
set ErrorResult(value) { this.Fields["ErrorResult"] = value; }
SerializeFields() {
this.SetSerializedField("AssetId", this.AssetId);
this.SetSerializedField("OperationMetadata", this.OperationMetadata);
this.SetSerializedField("ErrorResult", this.ErrorResult);
}
}
OSFLog.AppManagementMenuUsageData = AppManagementMenuUsageData;
class InsertionDialogSessionUsageData extends BaseUsageData {
constructor() { super("InsertionDialogSession"); }
get AssetId() { return this.Fields["AssetId"]; }
set AssetId(value) { this.Fields["AssetId"] = value; }
get TotalSessionTime() { return this.Fields["TotalSessionTime"]; }
set TotalSessionTime(value) { this.Fields["TotalSessionTime"] = value; }
get TrustPageSessionTime() { return this.Fields["TrustPageSessionTime"]; }
set TrustPageSessionTime(value) { this.Fields["TrustPageSessionTime"] = value; }
get DialogState() { return this.Fields["DialogState"]; }
set DialogState(value) { this.Fields["DialogState"] = value; }
get LastActiveTab() { return this.Fields["LastActiveTab"]; }
set LastActiveTab(value) { this.Fields["LastActiveTab"] = value; }
get LastActiveTabCount() { return this.Fields["LastActiveTabCount"]; }
set LastActiveTabCount(value) { this.Fields["LastActiveTabCount"] = value; }
SerializeFields() {
this.SetSerializedField("AssetId", this.AssetId);
this.SetSerializedField("TotalSessionTime", this.TotalSessionTime);
this.SetSerializedField("TrustPageSessionTime", this.TrustPageSessionTime);
this.SetSerializedField("DialogState", this.DialogState);
this.SetSerializedField("LastActiveTab", this.LastActiveTab);
this.SetSerializedField("LastActiveTabCount", this.LastActiveTabCount);
}
}
OSFLog.InsertionDialogSessionUsageData = InsertionDialogSessionUsageData;
class UploadFileDevCatelogUsageData extends BaseUsageData {
constructor() { super("UploadFileDevCatelog"); }
get CorrelationId() { return this.Fields["CorrelationId"]; }
set CorrelationId(value) { this.Fields["CorrelationId"] = value; }
get OperationMetadata() { return this.Fields["OperationMetadata"]; }
set OperationMetadata(value) { this.Fields["OperationMetadata"] = value; }
get ErrorResult() { return this.Fields["ErrorResult"]; }
set ErrorResult(value) { this.Fields["ErrorResult"] = value; }
SerializeFields() {
this.SetSerializedField("CorrelationId", this.CorrelationId);
this.SetSerializedField("OperationMetadata", this.OperationMetadata);
this.SetSerializedField("ErrorResult", this.ErrorResult);
}
}
OSFLog.UploadFileDevCatelogUsageData = UploadFileDevCatelogUsageData;
class UploadFileDevCatalogUsageUsageData extends BaseUsageData {
constructor() { super("UploadFileDevCatalogUsage"); }
get CorrelationId() { return this.Fields["CorrelationId"]; }
set CorrelationId(value) { this.Fields["CorrelationId"] = value; }
get StoreType() { return this.Fields["StoreType"]; }
set StoreType(value) { this.Fields["StoreType"] = value; }
get AppId() { return this.Fields["AppId"]; }
set AppId(value) { this.Fields["AppId"] = value; }
get AppVersion() { return this.Fields["AppVersion"]; }
set AppVersion(value) { this.Fields["AppVersion"] = value; }
get AppTargetType() { return this.Fields["AppTargetType"]; }
set AppTargetType(value) { this.Fields["AppTargetType"] = value; }
get IsAppCommand() { return this.Fields["IsAppCommand"]; }
set IsAppCommand(value) { this.Fields["IsAppCommand"] = value; }
get AppSizeWidth() { return this.Fields["AppSizeWidth"]; }
set AppSizeWidth(value) { this.Fields["AppSizeWidth"] = value; }
get AppSizeHeight() { return this.Fields["AppSizeHeight"]; }
set AppSizeHeight(value) { this.Fields["AppSizeHeight"] = value; }
SerializeFields() {
this.SetSerializedField("CorrelationId", this.CorrelationId);
this.SetSerializedField("StoreType", this.StoreType);
this.SetSerializedField("AppId", this.AppId);
this.SetSerializedField("AppVersion", this.AppVersion);
this.SetSerializedField("AppTargetType", this.AppTargetType);
this.SetSerializedField("IsAppCommand", this.IsAppCommand);
this.SetSerializedField("AppSizeWidth", this.AppSizeWidth);
this.SetSerializedField("AppSizeHeight", this.AppSizeHeight);
}
}
OSFLog.UploadFileDevCatalogUsageUsageData = UploadFileDevCatalogUsageUsageData;
})(OSFLog || (OSFLog = {}));
var OfficeExt;
(function (OfficeExt) {
let DataServiceResultCode;
(function (DataServiceResultCode) {
DataServiceResultCode[DataServiceResultCode["Succeeded"] = 1] = "Succeeded";
DataServiceResultCode[DataServiceResultCode["Failed"] = 0] = "Failed";
DataServiceResultCode[DataServiceResultCode["ProxyNotReady"] = -1] = "ProxyNotReady";
DataServiceResultCode[DataServiceResultCode["PrxoyUrlEmpty"] = -2] = "PrxoyUrlEmpty";
DataServiceResultCode[DataServiceResultCode["ProxyUrlNotTrusted"] = -3] = "ProxyUrlNotTrusted";
DataServiceResultCode[DataServiceResultCode["UnknownUserType"] = 2] = "UnknownUserType";
DataServiceResultCode[DataServiceResultCode["Unauthenticated"] = 3] = "Unauthenticated";
DataServiceResultCode[DataServiceResultCode["UserResolutionNoMailbox"] = 4] = "UserResolutionNoMailbox";
DataServiceResultCode[DataServiceResultCode["ServerBusy"] = 5] = "ServerBusy";
})(DataServiceResultCode = OfficeExt.DataServiceResultCode || (OfficeExt.DataServiceResultCode = {}));
})(OfficeExt || (OfficeExt = {}));
var _omexXmlNamespaces = 'xmlns="urn:schemas-microsoft-com:office:office" xmlns:o="urn:schemas-microsoft-com:office:office"';
function _getAppSubType(officeExtentionTarget) {
var appSubType;
if (officeExtentionTarget === 0) {
appSubType = OSF.AppSubType.Content;
}
else if (officeExtentionTarget === 1) {
appSubType = OSF.AppSubType.Taskpane;
}
else {
throw OsfMsAjaxFactory.msAjaxError.argument("officeExtentionTarget");
}
return appSubType;
}
;
function _getAppVersion(applicationName) {
var appVersion = OSF.AppVersion[applicationName.toLowerCase()];
if (typeof appVersion == "undefined") {
throw OsfMsAjaxFactory.msAjaxError.argument("applicationName");
}
return appVersion;
}
;
function _invokeCallbackTag(callback, status, result, errorMessage, executor, tagId) {
var constructedMessage = errorMessage;
if (callback) {
try {
var response = { "status": status, "result": result, "failureInfo": null };
var setFailureInfoProperty = function _invokeCallbackTag$setFailureInfoProperty(response, name, value) {
if (response.failureInfo === null) {
response.failureInfo = {};
}
response.failureInfo[name] = value;
};
if (executor) {
var httpStatusCode = -1;
if (executor.get_statusCode) {
httpStatusCode = executor.get_statusCode();
}
if (!constructedMessage) {
if (executor.get_timedOut && executor.get_timedOut()) {
constructedMessage = "Request timed out.";
}
else if (executor.get_aborted && executor.get_aborted()) {
constructedMessage = "Request aborted.";
}
}
if (httpStatusCode >= 400 || status === statusCode.Failed || constructedMessage) {
setFailureInfoProperty(response, "statusCode", httpStatusCode);
setFailureInfoProperty(response, "tagId", tagId);
var webRequest = executor.get_webRequest();
if (webRequest) {
if (webRequest.getResolvedUrl) {
setFailureInfoProperty(response, "url", webRequest.getResolvedUrl());
}
if (executor.getResponseHeader && webRequest.get_userContext && webRequest.get_userContext() && !webRequest.get_userContext().correlationId) {
var correlationId = executor.getResponseHeader("X-CorrelationId");
setFailureInfoProperty(response, "correlationId", correlationId);
}
}
}
}
if (constructedMessage) {
setFailureInfoProperty(response, "message", constructedMessage);
OsfMsAjaxFactory.msAjaxDebug.trace(constructedMessage);
}
}
catch (ex) {
OsfMsAjaxFactory.msAjaxDebug.trace("Encountered exception with logging: " + ex);
}
callback(response);
}
}
;
var OSF;
(function (OSF) {
let AppSubType;
(function (AppSubType) {
AppSubType[AppSubType["Taskpane"] = 1] = "Taskpane";
AppSubType[AppSubType["Content"] = 2] = "Content";
AppSubType[AppSubType["Contextual"] = 3] = "Contextual";
AppSubType[AppSubType["Dictionary"] = 4] = "Dictionary";
})(AppSubType = OSF.AppSubType || (OSF.AppSubType = {}));
let AppVersion;
(function (AppVersion) {
AppVersion["access"] = "ZAC150";
AppVersion["excel"] = "ZXL150";
AppVersion["excelwebapp"] = "WAE160";
AppVersion["outlook"] = "ZOL150";
AppVersion["outlookwebapp"] = "MOW150";
AppVersion["powerpoint"] = "ZPP151";
AppVersion["powerpointwebapp"] = "WAP160";
AppVersion["project"] = "ZPJ150";
AppVersion["word"] = "ZWD150";
AppVersion["wordwebapp"] = "WAW160";
AppVersion["onenotewebapp"] = "WAO160";
AppVersion["visio"] = "ZVO161";
AppVersion["visiowebapp"] = "WAV161";
})(AppVersion = OSF.AppVersion || (OSF.AppVersion = {}));
})(OSF || (OSF = {}));
var OfficeExt;
(function (OfficeExt) {
class MicrosoftAjaxFactory {
isMsAjaxLoaded() {
if (typeof (Sys) !== 'undefined' && typeof (Type) !== 'undefined' &&
Sys.StringBuilder && typeof (Sys.StringBuilder) === "function" &&
Type.registerNamespace && typeof (Type.registerNamespace) === "function" &&
Type.registerClass && typeof (Type.registerClass) === "function" &&
typeof (Function._validateParams) === "function" &&
Sys.Serialization && Sys.Serialization.JavaScriptSerializer && typeof (Sys.Serialization.JavaScriptSerializer.serialize) === "function") {
return true;
}
else {
return false;
}
}
loadMsAjaxFull(callback) {
var msAjaxCDNPath = (window.location.protocol.toLowerCase() === 'https:' ? 'https:' : 'http:') + '//ajax.aspnetcdn.com/ajax/3.5/MicrosoftAjax.js';
OSF.OUtil.loadScript(msAjaxCDNPath, callback);
}
get msAjaxError() {
if (this._msAjaxError == null && this.isMsAjaxLoaded()) {
this._msAjaxError = Error;
}
return this._msAjaxError;
}
set msAjaxError(errorClass) {
this._msAjaxError = errorClass;
}
get msAjaxString() {
if (this._msAjaxString == null && this.isMsAjaxLoaded()) {
this._msAjaxString = String;
}
return this._msAjaxString;
}
set msAjaxString(stringClass) {
this._msAjaxString = stringClass;
}
get msAjaxDebug() {
if (this._msAjaxDebug == null && this.isMsAjaxLoaded()) {
this._msAjaxDebug = Sys.Debug;
}
return this._msAjaxDebug;
}
set msAjaxDebug(debugClass) {
this._msAjaxDebug = debugClass;
}
}
OfficeExt.MicrosoftAjaxFactory = MicrosoftAjaxFactory;
})(OfficeExt || (OfficeExt = {}));
var OsfMsAjaxFactory = new OfficeExt.MicrosoftAjaxFactory();
var OfficeExt;
(function (OfficeExt) {
class MsAjaxTypeHelper {
static isInstanceOfType(type, instance) {
if (typeof (instance) === "undefined" || instance === null)
return false;
if (instance instanceof type)
return true;
var instanceType = instance.constructor;
if (!instanceType || (typeof (instanceType) !== "function") || !instanceType.__typeName || instanceType.__typeName === 'Object') {
instanceType = Object;
}
return !!(instanceType === type) ||
(instanceType.__typeName && type.__typeName && instanceType.__typeName === type.__typeName);
}
}
OfficeExt.MsAjaxTypeHelper = MsAjaxTypeHelper;
class MsAjaxError {
static create(message, errorInfo) {
var err = new Error(message);
err.message = message;
if (errorInfo) {
for (var v in errorInfo) {
err[v] = errorInfo[v];
}
}
err.popStackFrame();
return err;
}
static parameterCount(message) {
var displayMessage = "Sys.ParameterCountException: " + (message ? message : "Parameter count mismatch.");
var err = MsAjaxError.create(displayMessage, { name: 'Sys.ParameterCountException' });
err.popStackFrame();
return err;
}
static argument(paramName, message) {
var displayMessage = "Sys.ArgumentException: " + (message ? message : "Value does not fall within the expected range.");
if (paramName) {
displayMessage += "\n" + MsAjaxString.format("Parameter name: {0}", paramName);
}
var err = MsAjaxError.create(displayMessage, { name: "Sys.ArgumentException", paramName: paramName });
err.popStackFrame();
return err;
}
static argumentNull(paramName, message) {
var displayMessage = "Sys.ArgumentNullException: " + (message ? message : "Value cannot be null.");
if (paramName) {
displayMessage += "\n" + MsAjaxString.format("Parameter name: {0}", paramName);
}
var err = MsAjaxError.create(displayMessage, { name: "Sys.ArgumentNullException", paramName: paramName });
err.popStackFrame();
return err;
}
static argumentOutOfRange(paramName, actualValue, message) {
var displayMessage = "Sys.ArgumentOutOfRangeException: " + (message ? message : "Specified argument was out of the range of valid values.");
if (paramName) {
displayMessage += "\n" + MsAjaxString.format("Parameter name: {0}", paramName);
}
if (typeof (actualValue) !== "undefined" && actualValue !== null) {
displayMessage += "\n" + MsAjaxString.format("Actual value was {0}.", actualValue);
}
var err = MsAjaxError.create(displayMessage, {
name: "Sys.ArgumentOutOfRangeException",
paramName: paramName,
actualValue: actualValue
});
err.popStackFrame();
return err;
}
static argumentType(paramName, actualType, expectedType, message) {
var displayMessage = "Sys.ArgumentTypeException: ";
if (message) {
displayMessage += message;
}
else if (actualType && expectedType) {
displayMessage +=
MsAjaxString.format("Object of type '{0}' cannot be converted to type '{1}'.", actualType.getName ? actualType.getName() : actualType, expectedType.getName ? expectedType.getName() : expectedType);
}
else {
displayMessage += "Object cannot be converted to the required type.";
}
if (paramName) {
displayMessage += "\n" + MsAjaxString.format("Parameter name: {0}", paramName);
}
var err = MsAjaxError.create(displayMessage, {
name: "Sys.ArgumentTypeException",
paramName: paramName,
actualType: actualType,
expectedType: expectedType
});
err.popStackFrame();
return err;
}
static argumentUndefined(paramName, message) {
var displayMessage = "Sys.ArgumentUndefinedException: " + (message ? message : "Value cannot be undefined.");
if (paramName) {
displayMessage += "\n" + MsAjaxString.format("Parameter name: {0}", paramName);
}
var err = MsAjaxError.create(displayMessage, { name: "Sys.ArgumentUndefinedException", paramName: paramName });
err.popStackFrame();
return err;
}
static invalidOperation(message) {
var displayMessage = "Sys.InvalidOperationException: " + (message ? message : "Operation is not valid due to the current state of the object.");
var err = MsAjaxError.create(displayMessage, { name: 'Sys.InvalidOperationException' });
err.popStackFrame();
return err;
}
}
OfficeExt.MsAjaxError = MsAjaxError;
class MsAjaxString {
static format(format, ...args) {
var source = format;
return source.replace(/{(\d+)}/gm, function (match, number) {
var index = parseInt(number, 10);
return args[index] === undefined ? '{' + number + '}' : args[index];
});
}
static startsWith(str, prefix) {
return (str.substr(0, prefix.length) === prefix);
}
}
OfficeExt.MsAjaxString = MsAjaxString;
class MsAjaxDebug {
static trace(text) {
if (DEBUG) {
if (typeof Debug !== "undefined" && Debug.writeln)
Debug.writeln(text);
if (window.console && window.console.log)
window.console.log(text);
if (window.opera && window.opera.postError)
window.opera.postError(text);
if (window.debugService && window.debugService.trace)
window.debugService.trace(text);
var a = document.getElementById("TraceConsole");
if (a && a.tagName.toUpperCase() === "TEXTAREA") {
a.appendChild(document.createTextNode(text + "\n"));
}
}
}
}
OfficeExt.MsAjaxDebug = MsAjaxDebug;
if (!OsfMsAjaxFactory.isMsAjaxLoaded()) {
var registerTypeInternal = function registerTypeInternal(type, name, isClass) {
if (type.__typeName === undefined || type.__typeName === null) {
type.__typeName = name;
}
if (type.__class === undefined || type.__class === null) {
type.__class = isClass;
}
};
registerTypeInternal(Function, "Function", true);
registerTypeInternal(Error, "Error", true);
registerTypeInternal(Object, "Object", true);
registerTypeInternal(String, "String", true);
registerTypeInternal(Boolean, "Boolean", true);
registerTypeInternal(Date, "Date", true);
registerTypeInternal(Number, "Number", true);
registerTypeInternal(RegExp, "RegExp", true);
registerTypeInternal(Array, "Array", true);
if (!Function.createCallback) {
Function.createCallback = function Function$createCallback(method, context) {
var e = Function._validateParams(arguments, [
{ name: "method", type: Function },
{ name: "context", mayBeNull: true }
]);
if (e)
throw e;
return function () {
var l = arguments.length;
if (l > 0) {
var args = [];
for (var i = 0; i < l; i++) {
args[i] = arguments[i];
}
args[l] = context;
return method.apply(this, args);
}
return method.call(this, context);
};
};
}
if (!Function.createDelegate) {
Function.createDelegate = function Function$createDelegate(instance, method) {
var e = Function._validateParams(arguments, [
{ name: "instance", mayBeNull: true },
{ name: "method", type: Function }
]);
if (e)
throw e;
return function () {
return method.apply(instance, arguments);
};
};
}
if (!Function._validateParams) {
Function._validateParams = function (params, expectedParams, validateParameterCount) {
var e, expectedLength = expectedParams.length;
validateParameterCount = validateParameterCount || (typeof (validateParameterCount) === "undefined");
e = Function._validateParameterCount(params, expectedParams, validateParameterCount);
if (e) {
e.popStackFrame();
return e;
}
for (var i = 0, l = params.length; i < l; i++) {
var expectedParam = expectedParams[Math.min(i, expectedLength - 1)], paramName = expectedParam.name;
if (expectedParam.parameterArray) {
paramName += "[" + (i - expectedLength + 1) + "]";
}
else if (!validateParameterCount && (i >= expectedLength)) {
break;
}
e = Function._validateParameter(params[i], expectedParam, paramName);
if (e) {
e.popStackFrame();
return e;
}
}
return null;
};
}
if (!Function._validateParameterCount) {
Function._validateParameterCount = function (params, expectedParams, validateParameterCount) {
var i, error, expectedLen = expectedParams.length, actualLen = params.length;
if (actualLen < expectedLen) {
var minParams = expectedLen;
for (i = 0; i < expectedLen; i++) {
var param = expectedParams[i];
if (param.optional || param.parameterArray) {
minParams--;
}
}
if (actualLen < minParams) {
error = true;
}
}
else if (validateParameterCount && (actualLen > expectedLen)) {
error = true;
for (i = 0; i < expectedLen; i++) {
if (expectedParams[i].parameterArray) {
error = false;
break;
}
}
}
if (error) {
var e = MsAjaxError.parameterCount();
e.popStackFrame();
return e;
}
return null;
};
}
if (!Function._validateParameter) {
Function._validateParameter = function (param, expectedParam, paramName) {
var e, expectedType = expectedParam.type, expectedInteger = !!expectedParam.integer, expectedDomElement = !!expectedParam.domElement, mayBeNull = !!expectedParam.mayBeNull;
e = Function._validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName);
if (e) {
e.popStackFrame();
return e;
}
var expectedElementType = expectedParam.elementType, elementMayBeNull = !!expectedParam.elementMayBeNull;
if (expectedType === Array && typeof (param) !== "undefined" && param !== null &&
(expectedElementType || !elementMayBeNull)) {
var expectedElementInteger = !!expectedParam.elementInteger, expectedElementDomElement = !!expectedParam.elementDomElement;
for (var i = 0; i < param.length; i++) {
var elem = param[i];
e = Function._validateParameterType(elem, expectedElementType, expectedElementInteger, expectedElementDomElement, elementMayBeNull, paramName + "[" + i + "]");
if (e) {
e.popStackFrame();
return e;
}
}
}
return null;
};
}
if (!Function._validateParameterType) {
Function._validateParameterType = function (param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName) {
var e, i;
if (typeof (param) === "undefined") {
if (mayBeNull) {
return null;
}
else {
e = OfficeExt.MsAjaxError.argumentUndefined(paramName);
e.popStackFrame();
return e;
}
}
if (param === null) {
if (mayBeNull) {
return null;
}
else {
e = OfficeExt.MsAjaxError.argumentNull(paramName);
e.popStackFrame();
return e;
}
}
if (expectedType && !OfficeExt.MsAjaxTypeHelper.isInstanceOfType(expectedType, param)) {
e = OfficeExt.MsAjaxError.argumentType(paramName, typeof (param), expectedType);
e.popStackFrame();
return e;
}
return null;
};
}
if (typeof (window) !== "undefined" && !window.Type) {
window.Type = Function;
}
if (typeof (Type) !== "undefined" && !Type.registerNamespace) {
Type.registerNamespace = function (ns) {
var namespaceParts = ns.split('.');
var currentNamespace = window;
for (var i = 0; i < namespaceParts.length; i++) {
currentNamespace[namespaceParts[i]] = currentNamespace[namespaceParts[i]] || {};
currentNamespace = currentNamespace[namespaceParts[i]];
}
};
}
if (typeof (Type) !== "undefined" && !Type.prototype.registerClass) {
Type.prototype.registerClass = function (cls) { cls = {}; };
}
if (typeof (Sys) === "undefined" && typeof (Type) !== "undefined") {
Type.registerNamespace('Sys');
}
if (!Error.prototype.popStackFrame) {
Error.prototype.popStackFrame = function () {
if (arguments.length !== 0)
throw MsAjaxError.parameterCount();
if (typeof (this.stack) === "undefined" || this.stack === null ||
typeof (this.fileName) === "undefined" || this.fileName === null ||
typeof (this.lineNumber) === "undefined" || this.lineNumber === null) {
return;
}
var stackFrames = this.stack.split("\n");
var currentFrame = stackFrames[0];
var pattern = this.fileName + ":" + this.lineNumber;
while (typeof (currentFrame) !== "undefined" &&
currentFrame !== null &&
currentFrame.indexOf(pattern) === -1) {
stackFrames.shift();
currentFrame = stackFrames[0];
}
var nextFrame = stackFrames[1];
if (typeof (nextFrame) === "undefined" || nextFrame === null) {
return;
}
var nextFrameParts = nextFrame.match(/@(.*):(\d+)$/);
if (typeof (nextFrameParts) === "undefined" || nextFrameParts === null) {
return;
}
this.fileName = nextFrameParts[1];
this.lineNumber = parseInt(nextFrameParts[2]);
stackFrames.shift();
this.stack = stackFrames.join("\n");
};
}
OsfMsAjaxFactory.msAjaxError = MsAjaxError;
OsfMsAjaxFactory.msAjaxString = MsAjaxString;
OsfMsAjaxFactory.msAjaxDebug = MsAjaxDebug;
}
})(OfficeExt || (OfficeExt = {}));
function XDM_DEBUG(x) {
OsfMsAjaxFactory.msAjaxDebug.trace(x);
}
const URL_DELIM = "$";
var OfficeExt;
(function (OfficeExt) {
class SafeStorage {
constructor(_internalStorage) {
this._internalStorage = _internalStorage;
}
getItem(key) {
try {
return this._internalStorage && this._internalStorage.getItem(key);
}
catch (e) {
return null;
}
}
setItem(key, data) {
try {
this._internalStorage && this._internalStorage.setItem(key, data);
}
catch (e) {
}
}
clear() {
try {
this._internalStorage && this._internalStorage.clear();
}
catch (e) {
}
}
removeItem(key) {
try {
this._internalStorage && this._internalStorage.removeItem(key);
}
catch (e) {
}
}
getKeysWithPrefix(keyPrefix) {
var keyList = [];
try {
var len = this._internalStorage && this._internalStorage.length || 0;
for (var i = 0; i < len; i++) {
var key = this._internalStorage.key(i);
if (key.indexOf(keyPrefix) === 0) {
keyList.push(key);
}
}
}
catch (e) {
}
return keyList;
}
isLocalStorageAvailable() {
return (this._internalStorage != null);
}
}
OfficeExt.SafeStorage = SafeStorage;
})(OfficeExt || (OfficeExt = {}));
try {
(function () {
OSF.Flights = OSF.OUtil.parseFlights(true);
OSF.DisabledChangeGates = OSF.OUtil.parseDisabledChangeGates(true);
})();
}
catch (ex) { }
var OSF;
(function (OSF) {
let WindowNameItemKeys;
(function (WindowNameItemKeys) {
WindowNameItemKeys["BaseFrameName"] = "baseFrameName";
WindowNameItemKeys["HostInfo"] = "hostInfo";
WindowNameItemKeys["XdmInfo"] = "xdmInfo";
WindowNameItemKeys["AppContext"] = "appContext";
WindowNameItemKeys["Flights"] = "flights";
WindowNameItemKeys["DisabledChangeGates"] = "disabledChangeGates";
WindowNameItemKeys["OfficeJsUrl"] = "officeJsUrl";
})(WindowNameItemKeys = OSF.WindowNameItemKeys || (OSF.WindowNameItemKeys = {}));
let XdmFieldName;
(function (XdmFieldName) {
XdmFieldName["ConversationUrl"] = "ConversationUrl";
XdmFieldName["AppId"] = "AppId";
})(XdmFieldName = OSF.XdmFieldName || (OSF.XdmFieldName = {}));
let Settings;
(function (Settings) {
})(Settings = OSF.Settings || (OSF.Settings = {}));
let FlightNames;
(function (FlightNames) {
FlightNames[FlightNames["AddinEnforceHttps"] = 2] = "AddinEnforceHttps";
FlightNames[FlightNames["AddinRibbonIdAllowUnknown"] = 9] = "AddinRibbonIdAllowUnknown";
FlightNames[FlightNames["ManifestParserDevConsoleLog"] = 15] = "ManifestParserDevConsoleLog";
FlightNames[FlightNames["AddinActionDefinitionHybridMode"] = 18] = "AddinActionDefinitionHybridMode";
FlightNames[FlightNames["UseActionIdForUILessCommand"] = 20] = "UseActionIdForUILessCommand";
FlightNames[FlightNames["SetFocusToTaskpaneIsEnabled"] = 22] = "SetFocusToTaskpaneIsEnabled";
})(FlightNames = OSF.FlightNames || (OSF.FlightNames = {}));
let FlightTreatmentNames;
(function (FlightTreatmentNames) {
FlightTreatmentNames["InsertionDialogFixesEnabled"] = "Microsoft.Office.SharedOnline.InsertionDialogFixesEnabled";
FlightTreatmentNames["EnsureStringsBeforeTrustErrorKill"] = "Microsoft.Office.SharedOnline.EnsureStringsBeforeTrustErrorKill";
FlightTreatmentNames["MosManifestEnabled"] = "Microsoft.Office.SharedOnline.OEP.MosManifest";
FlightTreatmentNames["MosForOmexEnabled"] = "Microsoft.Office.SharedOnline.MosForOmexEnabled";
FlightTreatmentNames["MosForPrivateCatalogEnabled"] = "Microsoft.Office.SharedOnline.MosForPrivateCatalogEnabled";
FlightTreatmentNames["ContextSlideShowEnvironmentEnabled"] = "Microsoft.Office.SharedOnline.ContextSlideShowEnvironmentEnabled";
FlightTreatmentNames["HostTrustDialog"] = "Microsoft.Office.SharedOnline.HostTrustDialog";
FlightTreatmentNames["BackstageEnabled"] = "Microsoft.Office.SharedOnline.NewBackstageEnabled";
FlightTreatmentNames["ProcessMultipleCommandsInDequeInvoker"] = "Microsoft.Office.SharedOnline.ProcessMultipleCommandsInDequeInvoker";
FlightTreatmentNames["EnablingWindowOpenUsageLogging"] = "Microsoft.Office.SharedOnline.EnablingWindowOpenUsageLogging";
FlightTreatmentNames["ExcelApiUndo25"] = "Microsoft.Office.SharedOnline.ExcelApiUndo25Bump";
FlightTreatmentNames["BrowserPermissionsEnabled"] = "Microsoft.Office.SharedOnline.BrowserPermissionsEnabled";
FlightTreatmentNames["SDXManifestTokenResolution"] = "Microsoft.Office.SharedOnline.SDXManifestTokenResolution";
FlightTreatmentNames["AgaveAuthContextApiEnabled"] = "Microsoft.Office.SharedOnline.AgaveAuthContextApiEnabled";
})(FlightTreatmentNames = OSF.FlightTreatmentNames || (OSF.FlightTreatmentNames = {}));
OSF.Flights = [];
OSF.DisabledChangeGates = [];
class GuidClass {
generateNewGuid() {
var result = "";
var tick = new Date().getTime();
var index = 0;
for (; index < 32 && tick > 0; index++) {
if (index == 8 || index == 12 || index == 16 || index == 20) {
result += "-";
}
result += GuidClass.HEX_CODE[tick % 16];
tick = Math.floor(tick / 16);
}
for (; index < 32; index++) {
if (index == 8 || index == 12 || index == 16 || index == 20) {
result += "-";
}
result += GuidClass.HEX_CODE[Math.floor(Math.random() * 16)];
}
return result;
}
}
GuidClass.HEX_CODE = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
class OUtilClass {
constructor() {
this._uniqueId = -1;
this._xdmInfoKey = "&_xdm_Info=";
this._flightsKey = "&_flights=";
this._disabledChangeGatesKey = "&_disabledChangeGates=";
this._xdmSessionKeyPrefix = "_xdm_";
this._flightsKeyPrefix = "_flights=";
this._disabledChangeGatesKeyPrefix = "_disabledChangeGates=";
this._fragmentSeparator = "#";
this._fragmentInfoDelimiter = "&";
this._classN = "class";
this._loadedScripts = {};
this._defaultScriptLoadingTimeout = 30000;
this._safeSessionStorage = null;
this._safeLocalStorage = null;
this.Guid = new GuidClass();
}
_getSessionStorage() {
if (!this._safeSessionStorage) {
try {
var sessionStorage = window.sessionStorage;
}
catch (ex) {
sessionStorage = null;
}
this._safeSessionStorage = new OfficeExt.SafeStorage(sessionStorage);
}
return this._safeSessionStorage;
}
_reOrderTabbableElements(elements) {
var bucket0 = [];
var bucketPositive = [];
var i;
var len = elements.length;
var ele;
for (i = 0; i < len; i++) {
ele = elements[i];
if (ele.tabIndex) {
if (ele.tabIndex > 0) {
bucketPositive.push(ele);
}
else if (ele.tabIndex === 0) {
bucket0.push(ele);
}
}
else {
bucket0.push(ele);
}
}
bucketPositive = bucketPositive.sort(function (left, right) {
var diff = left.tabIndex - right.tabIndex;
if (diff === 0) {
diff = bucketPositive.indexOf(left) - bucketPositive.indexOf(right);
}
return diff;
});
return [].concat(bucketPositive, bucket0);
}
isChangeGateEnabled(name) {
return OSF.DisabledChangeGates.indexOf(name) === -1;
}
serializeSettings(settingsCollection) {
var ret = {};
for (var key in settingsCollection) {
var value = settingsCollection[key];
try {
if (JSON) {
value = JSON.stringify(value, function dateReplacer(k, v) {
return OSF.OUtil.isDate(this[k])
? OSF.DDA.SettingsManager.DateJSONPrefix +
this[k].getTime() +
OSF.DDA.SettingsManager.DataJSONSuffix
: v;
});
}
else {
value = Sys.Serialization.JavaScriptSerializer.serialize(value);
}
ret[key] = value;
}
catch (ex) {
}
}
return ret;
}
deserializeSettings(serializedSettings) {
var ret = {};
serializedSettings = serializedSettings || {};
for (var key in serializedSettings) {
var value = serializedSettings[key];
try {
if (JSON) {
value = JSON.parse(value, function dateReviver(k, v) {
var d;
if (typeof v === "string" &&
v &&
v.length > 6 &&
v.slice(0, 5) === OSF.DDA.SettingsManager.DateJSONPrefix &&
v.slice(-1) === OSF.DDA.SettingsManager.DataJSONSuffix) {
d = new Date(parseInt(v.slice(5, -1)));
if (d) {
return d;
}
}
return v;
});
}
else {
value = Sys.Serialization.JavaScriptSerializer.deserialize(value, true);
}
ret[key] = value;
}
catch (ex) {
}
}
return ret;
}
loadScript(url, callback, timeoutInMs) {
if (url && callback) {
var doc = window.document;
var _loadedScriptEntry = this._loadedScripts[url];
if (!_loadedScriptEntry) {
var script = doc.createElement("script");
script.type = "text/javascript";
_loadedScriptEntry = { loaded: false, pendingCallbacks: [callback], timer: null };
this._loadedScripts[url] = _loadedScriptEntry;
var onLoadCallback = function OSF_OUtil_loadScript$onLoadCallback() {
if (_loadedScriptEntry.timer != null) {
clearTimeout(_loadedScriptEntry.timer);
delete _loadedScriptEntry.timer;
}
_loadedScriptEntry.loaded = true;
var pendingCallbackCount = _loadedScriptEntry.pendingCallbacks.length;
for (var i = 0; i < pendingCallbackCount; i++) {
var currentCallback = _loadedScriptEntry.pendingCallbacks.shift();
currentCallback();
}
};
var onLoadTimeOut = function OSF_OUtil_loadScript$onLoadTimeOut(oUtil) {
if (window.navigator.userAgent.indexOf("Trident") > 0) {
onLoadError(oUtil, null);
}
else {
onLoadError(oUtil, new Event("Script load timed out"));
}
};
var onLoadError = function OSF_OUtil_loadScript$onLoadError(oUtil, errorEvent) {
delete oUtil._loadedScripts[url];
if (_loadedScriptEntry.timer != null) {
clearTimeout(_loadedScriptEntry.timer);
delete _loadedScriptEntry.timer;
}
var pendingCallbackCount = _loadedScriptEntry.pendingCallbacks.length;
for (var i = 0; i < pendingCallbackCount; i++) {
var currentCallback = _loadedScriptEntry.pendingCallbacks.shift();
currentCallback();
}
};
if (script.readyState) {
script.onreadystatechange = function () {
if (script.readyState == "loaded" || script.readyState == "complete") {
script.onreadystatechange = null;
onLoadCallback();
}
};
}
else {
script.onload = onLoadCallback;
}
script.onerror = () => { onLoadError(this, new Event("Script load timed out")); };
timeoutInMs = timeoutInMs || this._defaultScriptLoadingTimeout;
_loadedScriptEntry.timer = setTimeout(() => { onLoadTimeOut(this); }, timeoutInMs);
script.setAttribute("crossOrigin", "anonymous");
script.src = url;
doc.head.appendChild(script);
}
else if (_loadedScriptEntry.loaded) {
callback();
}
else {
_loadedScriptEntry.pendingCallbacks.push(callback);
}
}
}
loadCSS(url) {
if (url) {
var doc = window.document;
var link = doc.createElement("link");
link.type = "text/css";
link.rel = "stylesheet";
link.href = url;
doc.head.appendChild(link);
}
}
parseEnum(str, enumObject) {
var parsed = enumObject[str.trim()];
if (typeof parsed == "undefined") {
OsfMsAjaxFactory.msAjaxDebug.trace("invalid enumeration string:" + str);
throw OsfMsAjaxFactory.msAjaxError.argument("str");
}
return parsed;
}
getUniqueId() {
this._uniqueId = this._uniqueId + 1;
return this._uniqueId.toString();
}
formatString(...args) {
var source = args[0];
return source.replace(/{(\d+)}/gm, function (match, number) {
var index = parseInt(number, 10) + 1;
return args[index] === undefined ? "{" + number + "}" : args[index];
});
}
generateConversationId() {
const randNums = crypto.getRandomValues(new Uint32Array([0, 0]));
return [randNums[0].toString(16), randNums[1].toString(16), new Date().getTime().toString()].join("_");
}
getFrameName(cacheKey) {
return this._xdmSessionKeyPrefix + cacheKey + this.generateConversationId();
}
addXdmInfoAsHash(url, xdmInfoValue) {
return OSF.OUtil.addInfoAsHash(url, this._xdmInfoKey, xdmInfoValue, false);
}
addFlightsAsHash(url, flights) {
return OSF.OUtil.addInfoAsHash(url, this._flightsKey, flights, true);
}
addDisabledChangeGatesAsHash(url, disabledChangeGates) {
return OSF.OUtil.addInfoAsHash(url, this._disabledChangeGatesKey, disabledChangeGates, true);
}
addInfoAsHash(url, keyName, infoValue, encodeInfo) {
url = url.trim() || "";
var urlParts = url.split(this._fragmentSeparator);
var urlWithoutFragment = urlParts.shift();
var fragment = urlParts.join(this._fragmentSeparator);
var newFragment;
if (encodeInfo) {
newFragment = [keyName, encodeURIComponent(infoValue), fragment].join("");
}
else {
newFragment = [fragment, keyName, infoValue].join("");
}
return [urlWithoutFragment, this._fragmentSeparator, newFragment].join("");
}
parseHostInfoFromWindowName(skipSessionStorage, windowName) {
return OSF.OUtil.parseInfoFromWindowName(skipSessionStorage, windowName, OSF.WindowNameItemKeys.HostInfo);
}
parseXdmInfo(skipSessionStorage) {
var xdmInfoValue = OSF.OUtil.parseXdmInfoWithGivenFragment(skipSessionStorage, window.location.hash);
if (!xdmInfoValue) {
xdmInfoValue = OSF.OUtil.parseXdmInfoFromWindowName(skipSessionStorage, window.name);
}
return xdmInfoValue;
}
parseXdmInfoFromWindowName(skipSessionStorage, windowName) {
return OSF.OUtil.parseInfoFromWindowName(skipSessionStorage, windowName, OSF.WindowNameItemKeys.XdmInfo);
}
parseXdmInfoWithGivenFragment(skipSessionStorage, fragment) {
return OSF.OUtil.parseInfoWithGivenFragment(this._xdmInfoKey, this._xdmSessionKeyPrefix, false, skipSessionStorage, fragment);
}
parseFlights(skipSessionStorage) {
var flights = OSF.OUtil.parseFlightsWithGivenFragment(skipSessionStorage, window.location.hash);
if (flights.length == 0) {
flights = OSF.OUtil.parseFlightsFromWindowName(skipSessionStorage, window.name);
}
return flights;
}
parseDisabledChangeGates(skipSessionStorage) {
var disabledChangeGates = OSF.OUtil.parseDisabledChangeGatesWithGivenFragment(skipSessionStorage, window.location.hash);
if (disabledChangeGates.length == 0) {
disabledChangeGates = OSF.OUtil.parseDisabledChangeGatesFromWindowName(skipSessionStorage, window.name);
}
return disabledChangeGates;
}
checkFlight(flight) {
return OSF.Flights && OSF.Flights.indexOf(flight) >= 0;
}
pushFlight(flight) {
if (OSF.Flights.indexOf(flight) < 0) {
OSF.Flights.push(flight);
return true;
}
return false;
}
getBooleanSetting(settingName) {
return OSF.OUtil.getBooleanFromDictionary(OSF.Settings, settingName);
}
getBooleanFromDictionary(settings, settingName) {
var result = settings &&
settingName &&
settings[settingName] !== undefined &&
settings[settingName] &&
((typeof settings[settingName] === "string" && settings[settingName].toUpperCase() === "TRUE") ||
(typeof settings[settingName] === "boolean" && settings[settingName]));
return result !== undefined ? result : false;
}
parseFlightsFromWindowName(skipSessionStorage, windowName) {
return OSF.OUtil.parseArrayWithDefault(OSF.OUtil.parseInfoFromWindowName(skipSessionStorage, windowName, OSF.WindowNameItemKeys.Flights));
}
parseFlightsWithGivenFragment(skipSessionStorage, fragment) {
return OSF.OUtil.parseArrayWithDefault(OSF.OUtil.parseInfoWithGivenFragment(this._flightsKey, this._flightsKeyPrefix, true, skipSessionStorage, fragment));
}
parseDisabledChangeGatesFromWindowName(skipSessionStorage, windowName) {
return OSF.OUtil.parseArrayWithDefault(OSF.OUtil.parseInfoFromWindowName(skipSessionStorage, windowName, OSF.WindowNameItemKeys.DisabledChangeGates));
}
parseDisabledChangeGatesWithGivenFragment(skipSessionStorage, fragment) {
return OSF.OUtil.parseArrayWithDefault(OSF.OUtil.parseInfoWithGivenFragment(this._disabledChangeGatesKey, this._disabledChangeGatesKeyPrefix, true, skipSessionStorage, fragment));
}
parseArrayWithDefault(jsonString) {
var array = [];
try {
array = JSON.parse(jsonString);
}
catch (ex) { }
if (!Array.isArray(array)) {
array = [];
}
return array;
}
parseInfoFromWindowName(skipSessionStorage, windowName, infoKey) {
try {
var windowNameObj = JSON.parse(windowName);
var infoValue = windowNameObj != null ? windowNameObj[infoKey] : null;
var osfSessionStorage = this._getSessionStorage();
if (!skipSessionStorage && osfSessionStorage && windowNameObj != null) {
var sessionKey = windowNameObj[OSF.WindowNameItemKeys.BaseFrameName] + infoKey;
if (infoValue) {
osfSessionStorage.setItem(sessionKey, infoValue);
}
else {
infoValue = osfSessionStorage.getItem(sessionKey);
}
}
return infoValue;
}
catch (Exception) {
return null;
}
}
parseInfoWithGivenFragment(infoKey, infoKeyPrefix, decodeInfo, skipSessionStorage, fragment) {
var fragmentParts = fragment.split(infoKey);
var infoValue = fragmentParts.length > 1 ? fragmentParts[fragmentParts.length - 1] : null;
if (decodeInfo && infoValue != null) {
if (infoValue.indexOf(this._fragmentInfoDelimiter) >= 0) {
infoValue = infoValue.split(this._fragmentInfoDelimiter)[0];
}
infoValue = decodeURIComponent(infoValue);
}
var osfSessionStorage = this._getSessionStorage();
if (!skipSessionStorage && osfSessionStorage) {
var sessionKeyStart = window.name.indexOf(infoKeyPrefix);
if (sessionKeyStart > -1) {
var sessionKeyEnd = window.name.indexOf(";", sessionKeyStart);
if (sessionKeyEnd == -1) {
sessionKeyEnd = window.name.length;
}
var sessionKey = window.name.substring(sessionKeyStart, sessionKeyEnd);
if (infoValue) {
osfSessionStorage.setItem(sessionKey, infoValue);
}
else {
infoValue = osfSessionStorage.getItem(sessionKey);
}
}
}
return infoValue;
}
getConversationId() {
var searchString = window.location.search;
var conversationId = null;
if (searchString) {
var index = searchString.indexOf("&");
conversationId = index > 0 ? searchString.substring(1, index) : searchString.substr(1);
if (conversationId && conversationId.charAt(conversationId.length - 1) === "=") {
conversationId = conversationId.substring(0, conversationId.length - 1);
if (conversationId) {
conversationId = decodeURIComponent(conversationId);
}
}
}
return conversationId;
}
getInfoItems(strInfo) {
var items = strInfo.split(URL_DELIM);
if (typeof items[1] == "undefined") {
items = strInfo.split("|");
}
if (typeof items[1] == "undefined") {
items = strInfo.split("%7C");
}
return items;
}
getXdmFieldValue(xdmFieldName, skipSessionStorage) {
var fieldValue = "";
var xdmInfoValue = OSF.OUtil.parseXdmInfo(skipSessionStorage);
if (xdmInfoValue) {
var items = OSF.OUtil.getInfoItems(xdmInfoValue);
if (items != undefined && items.length >= 3) {
switch (xdmFieldName) {
case OSF.XdmFieldName.ConversationUrl:
fieldValue = items[2];
break;
case OSF.XdmFieldName.AppId:
fieldValue = items[1];
break;
}
}
}
return fieldValue;
}
validateParamObject(params, expectedProperties, callback) {
var e = Function._validateParams(arguments, [
{ name: "params", type: Object, mayBeNull: false },
{ name: "expectedProperties", type: Object, mayBeNull: false },
{ name: "callback", type: Function, mayBeNull: true },
]);
if (e)
throw e;
for (var p in expectedProperties) {
e = Function._validateParameter(params[p], expectedProperties[p], p);
if (e)
throw e;
}
}
finalizeProperties(obj, descriptor) {
descriptor = descriptor || {};
var props = Object.getOwnPropertyNames(obj);
var propsLength = props.length;
for (var i = 0; i < propsLength; i++) {
var prop = props[i];
var desc = Object.getOwnPropertyDescriptor(obj, prop);
if (!desc.get && !desc.set) {
desc.writable = descriptor.writable || false;
}
desc.configurable = descriptor.configurable || false;
desc.enumerable = descriptor.enumerable || true;
Object.defineProperty(obj, prop, desc);
}
return obj;
}
isDate(obj) {
return Object.prototype.toString.apply(obj) === "[object Date]";
}
xhrGet(url, onSuccess, onError) {
var xmlhttp;
try {
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
onSuccess(xmlhttp.responseText);
}
else {
onError(xmlhttp.status);
}
}
};
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
catch (ex) {
onError(ex);
}
}
encodeBase64Utf16(input) {
if (!input)
return input;
const stringCodeU16 = new Uint16Array(input.length).map((_, i) => input.charCodeAt(i));
const stringCodeU8 = new Uint8Array(stringCodeU16.buffer);
const encodedString = String.fromCharCode.apply(null, stringCodeU8);
return btoa(encodedString);
}
getLocalStorage() {
if (!this._safeLocalStorage) {
try {
var localStorage = window.localStorage;
}
catch (ex) {
localStorage = null;
}
this._safeLocalStorage = new OfficeExt.SafeStorage(localStorage);
}
return this._safeLocalStorage;
}
convertIntToCssHexColor(val) {
var hex = "#" + (Number(val) + 0x1000000).toString(16).slice(-6);
return hex;
}
attachClickHandler(element, handler) {
element.onclick = function (e) {
handler();
};
element.ontouchend = function (e) {
handler();
e.preventDefault();
};
}
getQueryStringParamValue(queryString, paramName) {
var e = Function._validateParams(arguments, [
{ name: "queryString", type: String, mayBeNull: false },
{ name: "paramName", type: String, mayBeNull: false },
]);
if (e) {
OsfMsAjaxFactory.msAjaxDebug.trace("OSF_Outil_getQueryStringParamValue: Parameters cannot be null.");
return "";
}
var queryExp = new RegExp("[\\?&]" + paramName + "=([^&#]*)", "i");
if (!queryExp.test(queryString)) {
OsfMsAjaxFactory.msAjaxDebug.trace("OSF_Outil_getQueryStringParamValue: The parameter is not found.");
return "";
}
return queryExp.exec(queryString)[1];
}
getHostnamePortionForLogging(hostname) {
var e = Function._validateParams(arguments, [{ name: "hostname", type: String, mayBeNull: false }]);
if (e) {
return "";
}
var hostnameSubstrings = hostname.split(".");
var len = hostnameSubstrings.length;
if (len >= 2) {
return hostnameSubstrings[len - 2] + "." + hostnameSubstrings[len - 1];
}
else if (len == 1) {
return hostnameSubstrings[0];
}
}
isiOS() {
return window.navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ? true : false;
}
doesUrlHaveSupportedProtocol(url) {
var isValid = false;
if (url) {
try {
var parsedUrl = OSF.OUtil.parseUrl(url, false);
isValid = parsedUrl.protocol === 'https:' || parsedUrl.protocol === 'http:';
}
catch (ex) {
this.sendTelemetryEvent("Office.Extensibility.UrlParsingForProtocolCheck", [{ name: "errorMessage", string: "Fix for bug 7142881 exception hit in officeutils.ts function doesUrlHaveSupportedProtocol." },
{ name: "tag", string: '0x1e88019a' }
]);
var decodedUrl = decodeURIComponent(url);
var matches = decodedUrl.match(/^https?:\/\/.+$/ig);
isValid = (matches != null);
}
}
return isValid;
}
containsPort(url, protocol, hostname, portNumber) {
return (url.startsWith(protocol + "//" + hostname + ":" + portNumber) ||
url.startsWith(hostname + ":" + portNumber));
}
getRedundandPortString(url, parser) {
if (!url || !parser)
return "";
if (parser.protocol == "https:" && this.containsPort(url, "https:", parser.hostname, "443"))
return ":443";
else if (parser.protocol == "http:" && this.containsPort(url, "http:", parser.hostname, "80"))
return ":80";
return "";
}
removeChar(url, indexOfCharToRemove) {
if (indexOfCharToRemove < url.length - 1)
return url.substring(0, indexOfCharToRemove) + url.substring(indexOfCharToRemove + 1);
else if (indexOfCharToRemove == url.length - 1)
return url.substring(0, url.length - 1);
else
return url;
}
cleanUrlOfChar(url, charToClean) {
let i;
for (i = 0; i < url.length; i++) {
if (url.charAt(i) === charToClean) {
if (i + 1 >= url.length) {
return this.removeChar(url, i);
}
else if (charToClean === "/") {
if (url.charAt(i + 1) === "?" || url.charAt(i + 1) === "#") {
return this.removeChar(url, i);
}
}
else if (charToClean === "?") {
if (url.charAt(i + 1) === "#") {
return this.removeChar(url, i);
}
}
}
}
return url;
}
cleanUrl(url) {
url = this.cleanUrlOfChar(url, "/");
url = this.cleanUrlOfChar(url, "?");
url = this.cleanUrlOfChar(url, "#");
if (url.substr(0, 8) == "https://") {
let portIndex = url.indexOf(":443");
if (portIndex != -1) {
if (portIndex == url.length - 4 ||
url.charAt(portIndex + 4) == "/" ||
url.charAt(portIndex + 4) == "?" ||
url.charAt(portIndex + 4) == "#") {
url = url.substring(0, portIndex) + url.substring(portIndex + 4);
}
}
}
else if (url.substr(0, 7) == "http://") {
let portIndex = url.indexOf(":80");
if (portIndex != -1) {
if (portIndex == url.length - 3 ||
url.charAt(portIndex + 3) == "/" ||
url.charAt(portIndex + 3) == "?" ||
url.charAt(portIndex + 3) == "#") {
url = url.substring(0, portIndex) + url.substring(portIndex + 3);
}
}
}
return url;
}
isPortPartOfUrl(urlObj) {
return urlObj.host.lastIndexOf(":" + urlObj.port) == urlObj.host.length - urlObj.port.length - 1;
}
parseUrl(url, enforceHttps = false) {
if (!url) {
return undefined;
}
const notHttpsErrorMessage = "NotHttps";
try {
const urlObj = new URL(url);
if (urlObj && urlObj.protocol && urlObj.host && urlObj.hostname) {
if (OSF.OUtil.checkFlight(OSF.FlightNames.AddinEnforceHttps)) {
if (enforceHttps && urlObj.protocol != "https:")
throw new Error(notHttpsErrorMessage);
}
return urlObj;
}
}
catch (err) {
if (err.message === notHttpsErrorMessage)
throw err;
}
return {};
}
focusToFirstTabbable(all, backward) {
var next;
var focused = false;
var candidate;
var setFlag = function (e) {
focused = true;
};
var findNextPos = function (allLen, currPos, backward) {
if (currPos < 0 || currPos > allLen) {
return -1;
}
else if (currPos === 0 && backward) {
return -1;
}
else if (currPos === allLen - 1 && !backward) {
return -1;
}
if (backward) {
return currPos - 1;
}
else {
return currPos + 1;
}
};
all = this._reOrderTabbableElements(all);
next = backward ? all.length - 1 : 0;
if (all.length === 0) {
return null;
}
while (!focused && next >= 0 && next < all.length) {
candidate = all[next];
window.focus();
candidate.addEventListener("focus", setFlag);
candidate.focus();
candidate.removeEventListener("focus", setFlag);
next = findNextPos(all.length, next, backward);
if (!focused && candidate === document.activeElement) {
focused = true;
}
}
if (focused) {
return candidate;
}
else {
return null;
}
}
focusToNextTabbable(all, curr, shift) {
var currPos;
var next;
var focused = false;
var candidate;
var setFlag = function (e) {
focused = true;
};
var findCurrPos = function (all, curr) {
var i = 0;
for (; i < all.length; i++) {
if (all[i] === curr) {
return i;
}
}
return -1;
};
var findNextPos = function (allLen, currPos, shift) {
if (currPos < 0 || currPos > allLen) {
return -1;
}
else if (currPos === 0 && shift) {
return -1;
}
else if (currPos === allLen - 1 && !shift) {
return -1;
}
if (shift) {
return currPos - 1;
}
else {
return currPos + 1;
}
};
all = this._reOrderTabbableElements(all);
currPos = findCurrPos(all, curr);
next = findNextPos(all.length, currPos, shift);
if (next < 0) {
return null;
}
while (!focused && next >= 0 && next < all.length) {
candidate = all[next];
candidate.addEventListener("focus", setFlag);
candidate.focus();
candidate.removeEventListener("focus", setFlag);
next = findNextPos(all.length, next, shift);
if (!focused && candidate === document.activeElement) {
focused = true;
}
}
if (focused) {
return candidate;
}
else {
return null;
}
}
hashCode(str) {
let hash = 0;
if (str != null) {
let i = 0;
const len = str.length;
while (i < len) {
hash = ((hash << 5) - hash + str.charCodeAt(i++)) | 0;
}
}
return hash;
}
getBOMCodepointLength(data) {
if (data.charCodeAt(0) === 0xFEFF) {
return 1;
}
else if (data.length >= 3 &&
(data.charCodeAt(0) === 0xEF &&
data.charCodeAt(1) === 0xBB &&
data.charCodeAt(2) === 0xBF)) {
return 3;
}
return 0;
}
sendTelemetryEvent(eventName, dataFieldsValue) {
if (typeof (otel) !== 'undefined' && typeof (otel.sendTelemetryEvent) !== 'undefined') {
otel.sendTelemetryEvent({
name: eventName,
dataFields: dataFieldsValue
});
return true;
}
return false;
}
sendActivityEvent(eventName, eventDuration, eventSucceeded, dataFieldsValue) {
if (typeof (otel) !== 'undefined' && typeof (otel.sendActivityEvent) !== 'undefined') {
otel.sendActivityEvent({
name: eventName,
durationMs: eventDuration,
succeeded: eventSucceeded,
dataFields: dataFieldsValue
});
return true;
}
return false;
}
}
OSF.OUtilClass = OUtilClass;
OSF.OUtil = new OUtilClass();
})(OSF || (OSF = {}));
var OfficeExt;
(function (OfficeExt) {
function appSpecificCheckOriginFunction(allowed_domains, eventObj, origin, checkOriginFunction) {
return false;
}
;
OfficeExt.appSpecificCheckOrigin = appSpecificCheckOriginFunction;
})(OfficeExt || (OfficeExt = {}));
var Microsoft;
(function (Microsoft) {
let Office;
(function (Office) {
let Common;
(function (Common) {
class ResponseSender {
constructor(requesterWindow, requesterUrl, actionName, conversationId, correlationId, responseType) {
var e = Function._validateParams(arguments, [
{ name: "requesterWindow", mayBeNull: false },
{ name: "requesterUrl", type: String, mayBeNull: false },
{ name: "actionName", type: String, mayBeNull: false },
{ name: "conversationId", type: String, mayBeNull: false },
{ name: "correlationId", mayBeNull: false },
{ name: "responsetype", type: Number, maybeNull: false }
]);
if (e)
throw e;
this._requesterWindow = requesterWindow;
this._requesterUrl = requesterUrl;
this._actionName = actionName;
this._conversationId = conversationId;
this._correlationId = correlationId;
this._invokeResultCode = Microsoft.Office.Common.InvokeResultCode.noError;
this._responseType = responseType;
var me = this;
this._send = function (result) {
var validateTargetMatchesRequester = function (targetOrigin, requesterUrl) {
var parsedTargetOrigin = OSF.OUtil.parseUrl(targetOrigin);
var parsedRequesterUrl = OSF.OUtil.parseUrl(requesterUrl);
if (!parsedTargetOrigin || !parsedTargetOrigin.hostname || !parsedRequesterUrl || !parsedRequesterUrl.hostname) {
var errorMessage = "Failed to execute 'postMessage' on 'DOMWindow': The target origin provided or the recipient window's origin are undefined.";
XDM_DEBUG(errorMessage);
return false;
}
else if (!Microsoft.Office.Common.XdmCommunicationManager.urlCompare(parsedTargetOrigin, parsedRequesterUrl)) {
var targetOriginToConsoleLog = parsedTargetOrigin ? (parsedTargetOrigin.protocol + "//" + parsedTargetOrigin.hostname + (parsedTargetOrigin.port ? (":" + parsedTargetOrigin.port) : "")) : 'undefined';
var requesterUrlToConsoleLog = parsedRequesterUrl ? (parsedRequesterUrl.protocol + "//" + parsedRequesterUrl.hostname + (parsedRequesterUrl.port ? (":" + parsedRequesterUrl.port) : "")) : 'undefined';
var errorMessage = "Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('" + targetOriginToConsoleLog + "') does not match the recipient window's origin ('" + requesterUrlToConsoleLog + "').";
XDM_DEBUG(errorMessage);
return false;
}
return true;
};
try {
if (me._actionName === "dialogMessageReceived" && result.targetOrigin !== "*") {
if (result.targetOrigin) {
if (!validateTargetMatchesRequester(result.targetOrigin, me._requesterUrl)) {
return;
}
}
}
else if (me._actionName === "dialogParentMessageReceived" && result.targetOrigin && result.targetOrigin !== "*") {
if (!validateTargetMatchesRequester(result.targetOrigin, me._requesterUrl)) {
return;
}
}
var response = new Microsoft.Office.Common.Response(me._actionName, me._conversationId, me._correlationId, me._invokeResultCode, me._responseType, result);
var envelopedResult = Microsoft.Office.Common.MessagePackager.envelope(response);
me._requesterWindow.postMessage(envelopedResult, me._requesterUrl);
}
catch (ex) {
OsfMsAjaxFactory.msAjaxDebug.trace("ResponseSender._send error:" + ex.message);
}
};
}
getRequesterWindow() {
return this._requesterWindow;
}
getRequesterUrl() {
return this._requesterUrl;
}
getActionName() {
return this._actionName;
}
getConversationId() {
return this._conversationId;
}
getCorrelationId() {
return this._correlationId;
}
getSend() {
return this._send;
}
setResultCode(resultCode) {
this._invokeResultCode = resultCode;
}
}
Common.ResponseSender = ResponseSender;
class InvokeCompleteCallback extends ResponseSender {
constructor(requesterWindow, requesterUrl, actionName, conversationId, correlationId, postCallbackHandler) {
super(requesterWindow, requesterUrl, actionName, conversationId, correlationId, Microsoft.Office.Common.ResponseType.forCalling);
this._postCallbackHandler = postCallbackHandler;
var me = this;
this._send = function (result, responseCode) {
if (responseCode != undefined) {
me._invokeResultCode = responseCode;
}
try {
var response = new Microsoft.Office.Common.Response(me._actionName, me._conversationId, me._correlationId, me._invokeResultCode, me._responseType, result);
var envelopedResult = Microsoft.Office.Common.MessagePackager.envelope(response);
me._requesterWindow.postMessage(envelopedResult, me._requesterUrl);
me._postCallbackHandler();
}
catch (ex) {
OsfMsAjaxFactory.msAjaxDebug.trace("InvokeCompleteCallback._send error:" + ex.message);
}
};
}
}
Common.InvokeCompleteCallback = InvokeCompleteCallback;
class MessagePackager {
static envelope(messageObject) {
return JSON.stringify(messageObject);
}
;
static unenvelope(messageObject) {
return JSON.parse(messageObject);
}
}
Common.MessagePackager = MessagePackager;
let HostTrustStatus;
(function (HostTrustStatus) {
HostTrustStatus[HostTrustStatus["unknown"] = 0] = "unknown";
HostTrustStatus[HostTrustStatus["untrusted"] = 1] = "untrusted";
HostTrustStatus[HostTrustStatus["nothttps"] = 2] = "nothttps";
HostTrustStatus[HostTrustStatus["trusted"] = 3] = "trusted";
})(HostTrustStatus = Common.HostTrustStatus || (Common.HostTrustStatus = {}));
let ResponseType;
(function (ResponseType) {
ResponseType[ResponseType["forCalling"] = 0] = "forCalling";
ResponseType[ResponseType["forEventing"] = 1] = "forEventing";
})(ResponseType = Common.ResponseType || (Common.ResponseType = {}));
let ActionType;
(function (ActionType) {
ActionType[ActionType["invoke"] = 0] = "invoke";
ActionType[ActionType["registerEvent"] = 1] = "registerEvent";
ActionType[ActionType["unregisterEvent"] = 2] = "unregisterEvent";
})(ActionType = Common.ActionType || (Common.ActionType = {}));
let MessageType;
(function (MessageType) {
MessageType[MessageType["request"] = 0] = "request";
MessageType[MessageType["response"] = 1] = "response";
})(MessageType = Common.MessageType || (Common.MessageType = {}));
let InvokeResultCode;
(function (InvokeResultCode) {
InvokeResultCode[InvokeResultCode["noError"] = 0] = "noError";
InvokeResultCode[InvokeResultCode["errorInRequest"] = -1] = "errorInRequest";
InvokeResultCode[InvokeResultCode["errorHandlingRequest"] = -2] = "errorHandlingRequest";
InvokeResultCode[InvokeResultCode["errorInResponse"] = -3] = "errorInResponse";
InvokeResultCode[InvokeResultCode["errorHandlingResponse"] = -4] = "errorHandlingResponse";
InvokeResultCode[InvokeResultCode["errorHandlingRequestAccessDenied"] = -5] = "errorHandlingRequestAccessDenied";
InvokeResultCode[InvokeResultCode["errorHandlingMethodCallTimedout"] = -6] = "errorHandlingMethodCallTimedout";
})(InvokeResultCode = Common.InvokeResultCode || (Common.InvokeResultCode = {}));
let InvokeType;
(function (InvokeType) {
InvokeType[InvokeType["async"] = 0] = "async";
InvokeType[InvokeType["sync"] = 1] = "sync";
InvokeType[InvokeType["asyncRegisterEvent"] = 2] = "asyncRegisterEvent";
InvokeType[InvokeType["asyncUnregisterEvent"] = 3] = "asyncUnregisterEvent";
InvokeType[InvokeType["syncRegisterEvent"] = 4] = "syncRegisterEvent";
InvokeType[InvokeType["syncUnregisterEvent"] = 5] = "syncUnregisterEvent";
})(InvokeType = Common.InvokeType || (Common.InvokeType = {}));
Common.XdmCommunicationManager = (function () {
var _invokerQueue = [];
var _lastMessageProcessTime = null;
var _messageProcessingTimer = null;
var _processInterval = 10;
var _blockingFlag = false;
var _methodTimeoutTimer = null;
var _methodTimeoutProcessInterval = 2000;
var _methodTimeoutDefault = 65000;
var _methodTimeout = _methodTimeoutDefault;
var _serviceEndPoints = {};
var _clientEndPoints = {};
var _initialized = false;
function _getControlIdFromMessageObject(messageObject) {
if (!messageObject)
return null;
const actionName = messageObject._actionName;
try {
if (!actionName)
throw new Error('actionName not found in messageObject');
let controlId;
switch (actionName) {
case 'executeMethod':
controlId = messageObject._data.DdaMethod.ControlId;
break;
default:
return null;
}
if (typeof controlId !== "string") {
throw new Error('Failed to extract controlId from messageObject');
}
return controlId;
}
catch (ex) {
OsfMsAjaxFactory.msAjaxDebug.trace(`XdmCommunicationManager._getControlIdFromMessageObject (actionName: ${actionName}) error: ${ex.message}`);
return null;
}
}
function _lookupServiceEndPoint(conversationId) {
for (var id in _serviceEndPoints) {
if (_serviceEndPoints[id]._conversations[conversationId]) {
return _serviceEndPoints[id];
}
}
OsfMsAjaxFactory.msAjaxDebug.trace("Unknown conversation Id.");
throw OsfMsAjaxFactory.msAjaxError.argument("conversationId");
}
;
function _lookupClientEndPoint(conversationId) {
var clientEndPoint = _clientEndPoints[conversationId];
if (!clientEndPoint) {
OsfMsAjaxFactory.msAjaxDebug.trace("Unknown conversation Id.");
}
return clientEndPoint;
}
;
function _lookupMethodObject(serviceEndPoint, messageObject) {
var methodOrEventMethodObject = serviceEndPoint._methodObjectList[messageObject._actionName];
if (!methodOrEventMethodObject) {
OsfMsAjaxFactory.msAjaxDebug.trace("The specified method is not registered on service endpoint:" + messageObject._actionName);
throw OsfMsAjaxFactory.msAjaxError.argument("messageObject");
}
var methodObject = null;
if (messageObject._actionType === Microsoft.Office.Common.ActionType.invoke) {
methodObject = methodOrEventMethodObject;
}
else if (messageObject._actionType === Microsoft.Office.Common.ActionType.registerEvent) {
methodObject = methodOrEventMethodObject.getRegisterMethodObject();
}
else {
methodObject = methodOrEventMethodObject.getUnregisterMethodObject();
}
return methodObject;
}
;
function _enqueInvoker(invoker) {
_invokerQueue.push(invoker);
}
;
function _dequeInvoker() {
if (_messageProcessingTimer !== null) {
if (OSF.OUtil.checkFlight(OSF.FlightTreatmentNames.ProcessMultipleCommandsInDequeInvoker)) {
while (!_blockingFlag && _invokerQueue.length > 0) {
var invoker = _invokerQueue.shift();
_executeCommand(invoker);
}
if (_invokerQueue.length == 0) {
clearInterval(_messageProcessingTimer);
_messageProcessingTimer = null;
}
}
else {
if (!_blockingFlag) {
if (_invokerQueue.length > 0) {
var invoker = _invokerQueue.shift();
_executeCommand(invoker);
}
else {
clearInterval(_messageProcessingTimer);
_messageProcessingTimer = null;
}
}
}
}
else {
OsfMsAjaxFactory.msAjaxDebug.trace("channel is not ready.");
}
}
;
function _executeCommand(invoker) {
_blockingFlag = invoker.getInvokeBlockingFlag();
invoker.invoke();
_lastMessageProcessTime = (new Date()).getTime();
}
;
function _checkMethodTimeout() {
if (_methodTimeoutTimer) {
var clientEndPoint;
var methodCallsNotTimedout = 0;
var now = new Date();
var timeoutValue;
for (var conversationId in _clientEndPoints) {
clientEndPoint = _clientEndPoints[conversationId];
for (var correlationId in clientEndPoint._callbackList) {
var callbackEntry = clientEndPoint._callbackList[correlationId];
timeoutValue = callbackEntry.timeout ? callbackEntry.timeout : _methodTimeout;
if (timeoutValue >= 0 && Math.abs(now.getTime() - callbackEntry.createdOn) >= timeoutValue) {
try {
if (callbackEntry.callback) {
callbackEntry.callback(Microsoft.Office.Common.InvokeResultCode.errorHandlingMethodCallTimedout, null);
}
}
finally {
delete clientEndPoint._callbackList[correlationId];
}
}
else {
methodCallsNotTimedout++;
}
;
}
}
if (methodCallsNotTimedout === 0) {
clearInterval(_methodTimeoutTimer);
_methodTimeoutTimer = null;
}
}
else {
OsfMsAjaxFactory.msAjaxDebug.trace("channel is not ready.");
}
}
;
function _postCallbackHandler() {
_blockingFlag = false;
}
;
function _registerListener(listener) {
if (window.addEventListener) {
window.addEventListener("message", listener);
}
else if ((navigator.userAgent.indexOf("MSIE") > -1) && window.attachEvent) {
window.attachEvent("onmessage", listener);
}
else {
OsfMsAjaxFactory.msAjaxDebug.trace("Browser doesn't support the required API.");
throw OsfMsAjaxFactory.msAjaxError.argument("Browser");
}
}
;
function _checkOrigin(url, origin) {
var res = false;
if (!url || !origin || url === "null" || origin === "null" || !url.length || !origin.length) {
return res;
}
const url_parser = OSF.OUtil.parseUrl(url, true);
const org_parser = OSF.OUtil.parseUrl(origin, true);
return _urlCompare(url_parser, org_parser);
}
function _checkOriginWithAppDomains(allowed_domains, origin) {
var res = false;
if (!origin || origin === "null" || !origin.length || !(allowed_domains) || !(allowed_domains instanceof Array) || !allowed_domains.length) {
return res;
}
const org_parser = OSF.OUtil.parseUrl(origin);
return allowed_domains.some(domain => domain.indexOf("://") !== -1 && _urlCompare(org_parser, OSF.OUtil.parseUrl(domain)));
}
function _isHostNameValidWacDomain(hostName) {
if (!hostName || hostName === "null") {
return false;
}
var regexHostNameStringArray = new Array("^office-int\\.com$", "^officeapps\\.live-int\\.com$", "^.*\\.dod\\.online\\.office365\\.us$", "^.*\\.gov\\.online\\.office365\\.us$", "^.*\\.officeapps\\.live\\.com$", "^.*\\.officeapps\\.live-int\\.com$", "^.*\\.officeapps-df\\.live\\.com$", "^.*\\.online\\.office\\.de$", "^.*\\.partner\\.officewebapps\\.cn$", "^.*\\.office\\.net$", "^" + document.domain.replace(new RegExp("\\.", "g"), "\\.") + "$");
var regexHostName = new RegExp(regexHostNameStringArray.join("|"));
return regexHostName.test(hostName);
}
function _isTargetSubdomainOfSourceLocation(sourceLocation, messageOrigin) {
if (!sourceLocation || !messageOrigin || sourceLocation === "null" || messageOrigin === "null") {
return false;
}
const sourceLocationParser = OSF.OUtil.parseUrl(sourceLocation, true);
const messageOriginParser = OSF.OUtil.parseUrl(messageOrigin, true);
if (sourceLocationParser == null || messageOriginParser == null) {
return false;
}
let isSameProtocol = sourceLocationParser.protocol === messageOriginParser.protocol;
let isSamePort = sourceLocationParser.port === messageOriginParser.port;
let originHostName = messageOriginParser.hostname;
let sourceLocationHostName = sourceLocationParser.hostname;
let isSameDomain = originHostName === sourceLocationHostName;
let isSubDomain = false;
if (!isSameDomain) {
isSubDomain = sourceLocationHostName && originHostName.endsWith('.' + sourceLocationHostName);
}
let isSameDomainOrSubdomain = isSameDomain || isSubDomain;
return isSamePort && isSameProtocol && isSameDomainOrSubdomain;
}
function _urlCompare(url_parser1, url_parser2) {
if (!url_parser1 || !url_parser2 || !url_parser1.protocol || !url_parser2.protocol || !url_parser1.hostname || !url_parser2.hostname) {
return false;
}
return ((url_parser1.hostname === url_parser2.hostname) &&
(url_parser1.protocol === url_parser2.protocol) &&
(url_parser1.port === url_parser2.port));
}
function _receive(e) {
if (!OSF) {
return;
}
if (e.data != '') {
var messageObject;
var serializedMessage = e.data;
try {
messageObject = Microsoft.Office.Common.MessagePackager.unenvelope(serializedMessage);
}
catch (ex) {
return;
}
if (messageObject._messageType === Microsoft.Office.Common.MessageType.request) {
var requesterUrl = (e.origin == null || e.origin === "null") ? messageObject._origin : e.origin;
try {
var serviceEndPoint = _lookupServiceEndPoint(messageObject._conversationId);
var conversation = serviceEndPoint._conversations[messageObject._conversationId];
var allowedDomains = [conversation.url].concat(serviceEndPoint._appDomains[messageObject._conversationId]);
if (!_checkOriginWithAppDomains(allowedDomains, e.origin)) {
if (!OfficeExt.appSpecificCheckOrigin(allowedDomains, e, messageObject._origin, _checkOriginWithAppDomains)) {
let isOriginSubdomain = _isTargetSubdomainOfSourceLocation(conversation.url, e.origin);
if (!isOriginSubdomain) {
throw "Failed origin check";
}
}
}
var dataWithOrigin = (messageObject._data != null) ? messageObject._data : {};
if (typeof dataWithOrigin == 'object') {
dataWithOrigin.SecurityOrigin = e.origin;
}
var trustedParams = {
controlId: conversation.controlId,
securityOrigin: e.origin,
};
var policyManager = serviceEndPoint.getPolicyManager();
if (policyManager && !policyManager.checkPermission(messageObject._conversationId, messageObject._actionName, dataWithOrigin)) {
throw "Access Denied";
}
var controlIdTrusted = conversation.controlId;
if (controlIdTrusted) {
var controlIdToVerify = _getControlIdFromMessageObject(messageObject);
if (controlIdToVerify && controlIdToVerify !== controlIdTrusted) {
throw "Access Denied";
}
}
var methodObject = _lookupMethodObject(serviceEndPoint, messageObject);
var invokeCompleteCallback = new Microsoft.Office.Common.InvokeCompleteCallback(e.source, requesterUrl, messageObject._actionName, messageObject._conversationId, messageObject._correlationId, _postCallbackHandler);
var invoker = new Microsoft.Office.Common.Invoker(methodObject, dataWithOrigin, invokeCompleteCallback, serviceEndPoint._eventHandlerProxyList, messageObject._conversationId, messageObject._actionName, trustedParams);
var shouldEnque = true;
if (_messageProcessingTimer == null) {
if ((_lastMessageProcessTime == null || (new Date()).getTime() - _lastMessageProcessTime > _processInterval) && !_blockingFlag) {
_executeCommand(invoker);
shouldEnque = false;
}
else {
_messageProcessingTimer = setInterval(_dequeInvoker, _processInterval);
}
}
if (shouldEnque) {
_enqueInvoker(invoker);
}
}
catch (ex) {
if (serviceEndPoint && serviceEndPoint._onHandleRequestError) {
serviceEndPoint._onHandleRequestError(messageObject, ex);
}
var errorCode = Microsoft.Office.Common.InvokeResultCode.errorHandlingRequest;
if (ex == "Access Denied") {
errorCode = Microsoft.Office.Common.InvokeResultCode.errorHandlingRequestAccessDenied;
}
var callResponse = new Microsoft.Office.Common.Response(messageObject._actionName, messageObject._conversationId, messageObject._correlationId, errorCode, Microsoft.Office.Common.ResponseType.forCalling, ex);
var envelopedResult = Microsoft.Office.Common.MessagePackager.envelope(callResponse);
var canPostMessage = false;
try {
canPostMessage = !!(e.source && e.source.postMessage);
}
catch (ex) {
}
var isOriginValid = false;
if (window.location.href && e.origin && e.origin !== "null" && _isTargetSubdomainOfSourceLocation(window.location.href, e.origin)) {
isOriginValid = true;
}
else {
if (e.origin && e.origin !== "null") {
const hostname = OSF.OUtil.parseUrl(e.origin, true).hostname;
isOriginValid = _isHostNameValidWacDomain(hostname);
}
}
if (canPostMessage && isOriginValid) {
e.source.postMessage(envelopedResult, requesterUrl);
}
}
}
else if (messageObject._messageType === Microsoft.Office.Common.MessageType.response) {
var clientEndPoint = _lookupClientEndPoint(messageObject._conversationId);
if (!clientEndPoint) {
return;
}
if (!_checkOrigin(clientEndPoint._targetUrl, e.origin)) {
throw "Failed orgin check";
}
if (messageObject._responseType === Microsoft.Office.Common.ResponseType.forCalling) {
var callbackEntry = clientEndPoint._callbackList[messageObject._correlationId];
if (callbackEntry) {
try {
if (callbackEntry.callback)
callbackEntry.callback(messageObject._errorCode, messageObject._data);
}
finally {
delete clientEndPoint._callbackList[messageObject._correlationId];
}
}
}
else {
var eventhandler = clientEndPoint._eventHandlerList[messageObject._actionName];
if (eventhandler !== undefined && eventhandler !== null) {
eventhandler(messageObject._data);
}
}
}
else {
return;
}
}
}
;
function _initialize() {
if (!_initialized) {
_registerListener(_receive);
_initialized = true;
}
}
;
return {
connect: function Microsoft_Office_Common_XdmCommunicationManager$connect(conversationId, targetWindow, targetUrl) {
var clientEndPoint = _clientEndPoints[conversationId];
if (!clientEndPoint) {
_initialize();
clientEndPoint = new Microsoft.Office.Common.ClientEndPoint(conversationId, targetWindow, targetUrl);
_clientEndPoints[conversationId] = clientEndPoint;
}
return clientEndPoint;
},
getClientEndPoint: function Microsoft_Office_Common_XdmCommunicationManager$getClientEndPoint(conversationId) {
var e = Function._validateParams(arguments, [
{ name: "conversationId", type: String, mayBeNull: false }
]);
if (e)
throw e;
return _clientEndPoints[conversationId];
},
createServiceEndPoint: function Microsoft_Office_Common_XdmCommunicationManager$createServiceEndPoint(serviceEndPointId) {
_initialize();
var serviceEndPoint = new Microsoft.Office.Common.ServiceEndPoint(serviceEndPointId);
_serviceEndPoints[serviceEndPointId] = serviceEndPoint;
return serviceEndPoint;
},
getServiceEndPoint: function Microsoft_Office_Common_XdmCommunicationManager$getServiceEndPoint(serviceEndPointId) {
var e = Function._validateParams(arguments, [
{ name: "serviceEndPointId", type: String, mayBeNull: false }
]);
if (e)
throw e;
return _serviceEndPoints[serviceEndPointId];
},
deleteClientEndPoint: function Microsoft_Office_Common_XdmCommunicationManager$deleteClientEndPoint(conversationId) {
var e = Function._validateParams(arguments, [
{ name: "conversationId", type: String, mayBeNull: false }
]);
if (e)
throw e;
delete _clientEndPoints[conversationId];
},
deleteServiceEndPoint: function Microsoft_Office_Common_XdmCommunicationManager$deleteServiceEndPoint(serviceEndPointId) {
var e = Function._validateParams(arguments, [
{ name: "serviceEndPointId", type: String, mayBeNull: false }
]);
if (e)
throw e;
delete _serviceEndPoints[serviceEndPointId];
},
urlCompare: function Microsoft_Office_Common_XdmCommunicationManager$_urlCompare(url_parser1, url_parser2) {
return _urlCompare(url_parser1, url_parser2);
},
checkUrlWithAppDomains: function Microsoft_Office_Common_XdmCommunicationManager$_checkUrlWithAppDomains(appDomains, origin) {
return _checkOriginWithAppDomains(appDomains, origin);
},
isTargetSubdomainOfSourceLocation: function Microsoft_Office_Common_XdmCommunicationManager$_isTargetSubdomainOfSourceLocation(sourceLocation, messageOrigin) {
return _isTargetSubdomainOfSourceLocation(sourceLocation, messageOrigin);
},
_setMethodTimeout: function Microsoft_Office_Common_XdmCommunicationManager$_setMethodTimeout(methodTimeout) {
var e = Function._validateParams(arguments, [
{ name: "methodTimeout", type: Number, mayBeNull: false }
]);
if (e)
throw e;
_methodTimeout = (methodTimeout <= 0) ? _methodTimeoutDefault : methodTimeout;
},
_startMethodTimeoutTimer: function Microsoft_Office_Common_XdmCommunicationManager$_startMethodTimeoutTimer() {
if (!_methodTimeoutTimer) {
_methodTimeoutTimer = setInterval(_checkMethodTimeout, _methodTimeoutProcessInterval);
}
},
isHostNameValidWacDomain: function Microsoft_Office_Common_XdmCommunicationManager$_isHostNameValidWacDomain(hostName) {
return _isHostNameValidWacDomain(hostName);
},
_hasSamePort: function Microsoft_Office_Common_XdmCommunicationManager$_hasSamePort(url_parser1, url_parser2) {
return url_parser1.port == url_parser2.port;
},
receiveFromClient: function Microsoft_Office_Common_XdmCommunicationManager$_receiveFromClient(e) {
_receive(e);
}
};
})();
class MethodObject {
constructor(method, invokeType, blockingOthers) {
this._method = method;
this._invokeType = invokeType;
this._blockingOthers = blockingOthers;
}
getMethod() {
return this._method;
}
getInvokeType() {
return this._invokeType;
}
getBlockingFlag() {
return this._blockingOthers;
}
}
Common.MethodObject = MethodObject;
class EventMethodObject {
constructor(registerMethodObject, unregisterMethodObject) {
this._registerMethodObject = registerMethodObject;
this._unregisterMethodObject = unregisterMethodObject;
}
getRegisterMethodObject() {
return this._registerMethodObject;
}
getUnregisterMethodObject() {
return this._unregisterMethodObject;
}
}
Common.EventMethodObject = EventMethodObject;
class ServiceEndPoint {
constructor(serviceEndPointId) {
var e = Function._validateParams(arguments, [
{ name: "serviceEndPointId", type: String, mayBeNull: false }
]);
if (e)
throw e;
this._methodObjectList = {};
this._eventHandlerProxyList = {};
this._Id = serviceEndPointId;
this._conversations = {};
this._policyManager = null;
this._appDomains = {};
this._onHandleRequestError = null;
}
registerMethod(methodName, method, invokeType, blockingOthers) {
var e = Function._validateParams(arguments, [
{ name: "methodName", type: String, mayBeNull: false },
{ name: "method", type: Function, mayBeNull: false },
{ name: "invokeType", type: Number, mayBeNull: false },
{ name: "blockingOthers", type: Boolean, mayBeNull: false }
]);
if (e)
throw e;
if (invokeType !== Microsoft.Office.Common.InvokeType.async
&& invokeType !== Microsoft.Office.Common.InvokeType.sync) {
throw OsfMsAjaxFactory.msAjaxError.argument("invokeType");
}
var methodObject = new Microsoft.Office.Common.MethodObject(method, invokeType, blockingOthers);
this._methodObjectList[methodName] = methodObject;
}
unregisterMethod(methodName) {
var e = Function._validateParams(arguments, [
{ name: "methodName", type: String, mayBeNull: false }
]);
if (e)
throw e;
delete this._methodObjectList[methodName];
}
registerEvent(eventName, registerMethod, unregisterMethod) {
var e = Function._validateParams(arguments, [
{ name: "eventName", type: String, mayBeNull: false },
{ name: "registerMethod", type: Function, mayBeNull: false },
{ name: "unregisterMethod", type: Function, mayBeNull: false }
]);
if (e)
throw e;
var methodObject = new Microsoft.Office.Common.EventMethodObject(new Microsoft.Office.Common.MethodObject(registerMethod, Microsoft.Office.Common.InvokeType.syncRegisterEvent, false), new Microsoft.Office.Common.MethodObject(unregisterMethod, Microsoft.Office.Common.InvokeType.syncUnregisterEvent, false));
this._methodObjectList[eventName] = methodObject;
}
registerEventEx(eventName, registerMethod, registerMethodInvokeType, unregisterMethod, unregisterMethodInvokeType) {
var e = Function._validateParams(arguments, [
{ name: "eventName", type: String, mayBeNull: false },
{ name: "registerMethod", type: Function, mayBeNull: false },
{ name: "registerMethodInvokeType", type: Number, mayBeNull: false },
{ name: "unregisterMethod", type: Function, mayBeNull: false },
{ name: "unregisterMethodInvokeType", type: Number, mayBeNull: false }
]);
if (e)
throw e;
var methodObject = new Microsoft.Office.Common.EventMethodObject(new Microsoft.Office.Common.MethodObject(registerMethod, registerMethodInvokeType, false), new Microsoft.Office.Common.MethodObject(unregisterMethod, unregisterMethodInvokeType, false));
this._methodObjectList[eventName] = methodObject;
}
unregisterEvent(eventName) {
var e = Function._validateParams(arguments, [
{ name: "eventName", type: String, mayBeNull: false }
]);
if (e)
throw e;
this.unregisterMethod(eventName);
}
registerConversation(conversationId, conversationUrl, appDomains, controlId) {
var e = Function._validateParams(arguments, [
{ name: "conversationId", type: String, mayBeNull: false },
{ name: "conversationUrl", type: String, mayBeNull: false, optional: true },
{ name: "appDomains", type: Object, mayBeNull: true, optional: true },
{ name: "controlId", type: String, mayBeNull: true, optional: true },
]);
if (e)
throw e;
if (appDomains) {
if (!(appDomains instanceof Array)) {
throw OsfMsAjaxFactory.msAjaxError.argument("appDomains");
}
this._appDomains[conversationId] = appDomains;
}
this._conversations[conversationId] = { url: conversationUrl, controlId: controlId };
}
unregisterConversation(conversationId) {
var e = Function._validateParams(arguments, [
{ name: "conversationId", type: String, mayBeNull: false }
]);
if (e)
throw e;
delete this._conversations[conversationId];
}
setPolicyManager(policyManager) {
var e = Function._validateParams(arguments, [
{ name: "policyManager", type: Object, mayBeNull: false }
]);
if (e)
throw e;
if (!policyManager.checkPermission) {
throw OsfMsAjaxFactory.msAjaxError.argument("policyManager");
}
this._policyManager = policyManager;
}
getPolicyManager() {
return this._policyManager;
}
dispose() {
this._methodObjectList = null;
this._eventHandlerProxyList = null;
this._Id = null;
this._conversations = null;
this._policyManager = null;
this._appDomains = null;
this._onHandleRequestError = null;
}
}
Common.ServiceEndPoint = ServiceEndPoint;
class ClientEndPoint {
constructor(conversationId, targetWindow, targetUrl) {
var e = Function._validateParams(arguments, [
{ name: "conversationId", type: String, mayBeNull: false },
{ name: "targetWindow", mayBeNull: false },
{ name: "targetUrl", type: String, mayBeNull: false }
]);
if (e)
throw e;
try {
if (!targetWindow.postMessage) {
throw OsfMsAjaxFactory.msAjaxError.argument("targetWindow");
}
}
catch (ex) {
if (!Object.prototype.hasOwnProperty.call(targetWindow, "postMessage")) {
throw OsfMsAjaxFactory.msAjaxError.argument("targetWindow");
}
}
this._conversationId = conversationId;
this._targetWindow = targetWindow;
this._targetUrl = targetUrl;
this._callingIndex = 0;
this._callbackList = {};
this._eventHandlerList = {};
this._checkReceiverOriginAndRun = null;
this._hostTrustCheckStatus = Microsoft.Office.Common.HostTrustStatus.unknown;
this._checkStatusLogged = false;
}
invoke(targetMethodName, callback, param, trustedParams = null) {
var e = Function._validateParams(arguments, [
{ name: "targetMethodName", type: String, mayBeNull: false },
{ name: "callback", type: Function, mayBeNull: true },
{ name: "param", mayBeNull: true },
{ name: "trustedParams", mayBeNull: true, optional: true }
]);
if (e)
throw e;
var me = this;
var funcToRun = function () {
var correlationId = me._callingIndex++;
var now = new Date();
var callbackEntry = { "callback": callback, "createdOn": now.getTime() };
if (param && typeof param === "object" && typeof param.__timeout__ === "number") {
callbackEntry.timeout = param.__timeout__;
delete param.__timeout__;
}
me._callbackList[correlationId] = callbackEntry;
try {
if (me._hostTrustCheckStatus !== Microsoft.Office.Common.HostTrustStatus.trusted) {
if (targetMethodName !== "ContextActivationManager_getAppContextAsync") {
throw "Access Denied";
}
}
var callRequest = new Microsoft.Office.Common.Request(targetMethodName, Microsoft.Office.Common.ActionType.invoke, me._conversationId, correlationId, param);
var msg = Microsoft.Office.Common.MessagePackager.envelope(callRequest);
me._targetWindow.postMessage(msg, me._targetUrl);
Microsoft.Office.Common.XdmCommunicationManager._startMethodTimeoutTimer();
}
catch (ex) {
try {
if (callback !== null)
callback(Microsoft.Office.Common.InvokeResultCode.errorInRequest, ex);
}
finally {
delete me._callbackList[correlationId];
}
}
};
if (me._checkReceiverOriginAndRun) {
me._checkReceiverOriginAndRun(funcToRun);
}
else {
me._hostTrustCheckStatus = Microsoft.Office.Common.HostTrustStatus.trusted;
funcToRun();
}
}
registerForEvent(targetEventName, eventHandler, callback, data) {
var e = Function._validateParams(arguments, [
{ name: "targetEventName", type: String, mayBeNull: false },
{ name: "eventHandler", type: Function, mayBeNull: false },
{ name: "callback", type: Function, mayBeNull: true },
{ name: "data", mayBeNull: true, optional: true }
]);
if (e)
throw e;
var correlationId = this._callingIndex++;
var now = new Date();
this._callbackList[correlationId] = { "callback": callback, "createdOn": now.getTime() };
try {
var callRequest = new Microsoft.Office.Common.Request(targetEventName, Microsoft.Office.Common.ActionType.registerEvent, this._conversationId, correlationId, data);
var msg = Microsoft.Office.Common.MessagePackager.envelope(callRequest);
this._targetWindow.postMessage(msg, this._targetUrl);
Microsoft.Office.Common.XdmCommunicationManager._startMethodTimeoutTimer();
this._eventHandlerList[targetEventName] = eventHandler;
}
catch (ex) {
try {
if (callback !== null) {
callback(Microsoft.Office.Common.InvokeResultCode.errorInRequest, ex);
}
}
finally {
delete this._callbackList[correlationId];
}
}
}
unregisterForEvent(targetEventName, callback, data) {
var e = Function._validateParams(arguments, [
{ name: "targetEventName", type: String, mayBeNull: false },
{ name: "callback", type: Function, mayBeNull: true },
{ name: "data", mayBeNull: true, optional: true }
]);
if (e)
throw e;
var correlationId = this._callingIndex++;
var now = new Date();
this._callbackList[correlationId] = { "callback": callback, "createdOn": now.getTime() };
try {
var callRequest = new Microsoft.Office.Common.Request(targetEventName, Microsoft.Office.Common.ActionType.unregisterEvent, this._conversationId, correlationId, data);
var msg = Microsoft.Office.Common.MessagePackager.envelope(callRequest);
this._targetWindow.postMessage(msg, this._targetUrl);
Microsoft.Office.Common.XdmCommunicationManager._startMethodTimeoutTimer();
}
catch (ex) {
try {
if (callback !== null) {
callback(Microsoft.Office.Common.InvokeResultCode.errorInRequest, ex);
}
}
finally {
delete this._callbackList[correlationId];
}
}
finally {
delete this._eventHandlerList[targetEventName];
}
}
}
Common.ClientEndPoint = ClientEndPoint;
class Message {
constructor(messageType, actionName, conversationId, correlationId, data) {
var e = Function._validateParams(arguments, [
{ name: "messageType", type: Number, mayBeNull: false },
{ name: "actionName", type: String, mayBeNull: false },
{ name: "conversationId", type: String, mayBeNull: false },
{ name: "correlationId", mayBeNull: false },
{ name: "data", mayBeNull: true, optional: true }
]);
if (e)
throw e;
this._messageType = messageType;
this._actionName = actionName;
this._conversationId = conversationId;
this._correlationId = correlationId;
this._origin = window.location.origin;
if (typeof data == "undefined") {
this._data = null;
}
else {
this._data = data;
}
}
getActionName() {
return this._actionName;
}
getConversationId() {
return this._conversationId;
}
getCorrelationId() {
return this._correlationId;
}
getOrigin() {
return this._origin;
}
getData() {
return this._data;
}
getMessageType() {
return this._messageType;
}
}
Common.Message = Message;
class Request extends Message {
constructor(actionName, actionType, conversationId, correlationId, data) {
super(Microsoft.Office.Common.MessageType.request, actionName, conversationId, correlationId, data);
this._actionType = actionType;
}
getActionType() {
return this._actionType;
}
}
Common.Request = Request;
class Response extends Message {
constructor(actionName, conversationId, correlationId, errorCode, responseType, data) {
super(Microsoft.Office.Common.MessageType.response, actionName, conversationId, correlationId, data);
this._errorCode = errorCode;
this._responseType = responseType;
}
getErrorCode() {
return this._errorCode;
}
getResponseType() {
return this._responseType;
}
}
Common.Response = Response;
class Invoker {
constructor(methodObject, paramValue, invokeCompleteCallback, eventHandlerProxyList, conversationId, eventName, trustedParams = null) {
var e = Function._validateParams(arguments, [
{ name: "methodObject", mayBeNull: false },
{ name: "paramValue", mayBeNull: true },
{ name: "invokeCompleteCallback", mayBeNull: false },
{ name: "eventHandlerProxyList", mayBeNull: true },
{ name: "conversationId", type: String, mayBeNull: false },
{ name: "eventName", type: String, mayBeNull: false },
{ name: "trustedParams", type: Object, mayBeNull: true, optional: true }
]);
if (e)
throw e;
this._methodObject = methodObject;
this._param = paramValue;
this._trustedParams = trustedParams;
this._invokeCompleteCallback = invokeCompleteCallback;
this._eventHandlerProxyList = eventHandlerProxyList;
this._conversationId = conversationId;
this._eventName = eventName;
}
invoke() {
try {
var result;
switch (this._methodObject.getInvokeType()) {
case Microsoft.Office.Common.InvokeType.async:
this._methodObject.getMethod()(this._param, this._invokeCompleteCallback.getSend(), this._trustedParams);
break;
case Microsoft.Office.Common.InvokeType.sync:
result = this._methodObject.getMethod()(this._param, this._trustedParams);
this._invokeCompleteCallback.getSend()(result);
break;
case Microsoft.Office.Common.InvokeType.syncRegisterEvent:
var eventHandlerProxy = this._createEventHandlerProxyObject(this._invokeCompleteCallback);
result = this._methodObject.getMethod()(eventHandlerProxy.getSend(), this._param, this._trustedParams);
this._eventHandlerProxyList[this._conversationId + this._eventName] = eventHandlerProxy.getSend();
this._invokeCompleteCallback.getSend()(result);
break;
case Microsoft.Office.Common.InvokeType.syncUnregisterEvent:
var eventHandler = this._eventHandlerProxyList[this._conversationId + this._eventName];
result = this._methodObject.getMethod()(eventHandler, this._param, this._trustedParams);
delete this._eventHandlerProxyList[this._conversationId + this._eventName];
this._invokeCompleteCallback.getSend()(result);
break;
case Microsoft.Office.Common.InvokeType.asyncRegisterEvent:
var eventHandlerProxyAsync = this._createEventHandlerProxyObject(this._invokeCompleteCallback);
this._methodObject.getMethod()(eventHandlerProxyAsync.getSend(), this._invokeCompleteCallback.getSend(), this._param, this._trustedParams);
this._eventHandlerProxyList[this._callerId + this._eventName] = eventHandlerProxyAsync.getSend();
break;
case Microsoft.Office.Common.InvokeType.asyncUnregisterEvent:
var eventHandlerAsync = this._eventHandlerProxyList[this._callerId + this._eventName];
this._methodObject.getMethod()(eventHandlerAsync, this._invokeCompleteCallback.getSend(), this._param, this._trustedParams);
delete this._eventHandlerProxyList[this._callerId + this._eventName];
break;
default:
break;
}
}
catch (ex) {
this._invokeCompleteCallback.setResultCode(Microsoft.Office.Common.InvokeResultCode.errorInResponse);
this._invokeCompleteCallback.getSend()(ex);
}
}
getInvokeBlockingFlag() {
return this._methodObject.getBlockingFlag();
}
_createEventHandlerProxyObject(invokeCompleteObject) {
return new Microsoft.Office.Common.ResponseSender(invokeCompleteObject.getRequesterWindow(), invokeCompleteObject.getRequesterUrl(), invokeCompleteObject.getActionName(), invokeCompleteObject.getConversationId(), invokeCompleteObject.getCorrelationId(), Microsoft.Office.Common.ResponseType.forEventing);
}
}
Common.Invoker = Invoker;
})(Common = Office.Common || (Office.Common = {}));
})(Office = Microsoft.Office || (Microsoft.Office = {}));
})(Microsoft || (Microsoft = {}));
var OfficeExt;
(function (OfficeExt) {
var WACUtils;
(function (WACUtils) {
var _trustedDomain = "^https:\/\/[a-z0-9-]+\.(officeapps\.live|officeapps-df\.live|partner\.officewebapps)\.com\/?$";
function parseAppContextFromWindowName(skipSessionStorage, windowName) {
return OSF.OUtil.parseInfoFromWindowName(skipSessionStorage, windowName, OSF.WindowNameItemKeys.AppContext);
}
WACUtils.parseAppContextFromWindowName = parseAppContextFromWindowName;
function serializeObjectToString(obj) {
if (typeof (JSON) !== "undefined") {
try {
return JSON.stringify(obj);
}
catch (ex) {
}
}
return "";
}
WACUtils.serializeObjectToString = serializeObjectToString;
function isHostTrusted() {
const domain = getDomainForUrl(OSF.getClientEndPoint()._targetUrl.toLowerCase());
return (new RegExp(_trustedDomain)).test(domain);
}
WACUtils.isHostTrusted = isHostTrusted;
function addHostInfoAsQueryParam(url, hostInfoValue) {
if (!url) {
return null;
}
url = url.trim() || '';
var questionMark = "?";
var hostInfo = "_host_Info=";
var ampHostInfo = "&_host_Info=";
var fragmentSeparator = "#";
var urlParts = url.split(fragmentSeparator);
var urlWithoutFragment = urlParts.shift();
var fragment = urlParts.join(fragmentSeparator);
var querySplits = urlWithoutFragment.split(questionMark);
var urlWithoutFragmentWithHostInfo;
if (querySplits.length > 1) {
urlWithoutFragmentWithHostInfo = urlWithoutFragment + ampHostInfo + hostInfoValue;
}
else if (querySplits.length > 0) {
urlWithoutFragmentWithHostInfo = urlWithoutFragment + questionMark + hostInfo + hostInfoValue;
}
if (fragment) {
return [urlWithoutFragmentWithHostInfo, fragmentSeparator, fragment].join('');
}
else {
return urlWithoutFragmentWithHostInfo;
}
}
WACUtils.addHostInfoAsQueryParam = addHostInfoAsQueryParam;
function getDomainForUrl(url) {
if (!url) {
return null;
}
var url_parser = OSF.OUtil.parseUrl(url, true);
return url_parser.protocol + "//" + url_parser.host;
}
WACUtils.getDomainForUrl = getDomainForUrl;
function shouldUseLocalStorageToPassMessage() {
try {
var osList = [
"Windows NT 6.1",
"Windows NT 6.2",
"Windows NT 6.3",
"Windows NT 10.0"
];
var userAgent = window.navigator.userAgent;
for (var i = 0, len = osList.length; i < len; i++) {
if (userAgent.indexOf(osList[i]) > -1) {
return isInternetExplorer();
}
}
return false;
}
catch (e) {
logExceptionToBrowserConsole("Error happens in shouldUseLocalStorageToPassMessage.", e);
return false;
}
}
WACUtils.shouldUseLocalStorageToPassMessage = shouldUseLocalStorageToPassMessage;
function isInternetExplorer() {
try {
var userAgent = window.navigator.userAgent;
return userAgent.indexOf("MSIE ") > -1 || userAgent.indexOf("Trident/") > -1 || userAgent.indexOf("Edge/") > -1;
}
catch (e) {
logExceptionToBrowserConsole("Error happens in isInternetExplorer.", e);
return false;
}
}
WACUtils.isInternetExplorer = isInternetExplorer;
function removeMatchesFromLocalStorage(regexPatterns) {
var _localStorage = OSF.OUtil.getLocalStorage();
var keys = _localStorage.getKeysWithPrefix("");
for (var i = 0, len = keys.length; i < len; i++) {
var key = keys[i];
for (var j = 0, lenRegex = regexPatterns.length; j < lenRegex; j++) {
if (regexPatterns[j].test(key)) {
_localStorage.removeItem(key);
break;
}
}
}
}
WACUtils.removeMatchesFromLocalStorage = removeMatchesFromLocalStorage;
function logExceptionToBrowserConsole(message, exception) {
OsfMsAjaxFactory.msAjaxDebug.trace(message + " Exception details: " + serializeObjectToString(exception));
}
WACUtils.logExceptionToBrowserConsole = logExceptionToBrowserConsole;
function isTeamsWebView() {
const ua = navigator.userAgent;
return /Teams\/((?:(\d+)\.)?(?:(\d+)\.)?(?:(\d+)\.\d+)).* Electron\/((?:(\d+)\.)?(?:(\d+)\.)?(?:(\d+)\.\d+))/.test(ua);
}
WACUtils.isTeamsWebView = isTeamsWebView;
function getHostSecure(url) {
if (typeof url === "undefined" || !url) {
return undefined;
}
let host = undefined;
const httpsProtocol = "https:";
try {
let urlObj = new URL(url);
if (urlObj) {
host = urlObj.host;
}
if (!urlObj.protocol) {
throw "fallback";
}
else if (urlObj.protocol !== httpsProtocol) {
return undefined;
}
}
catch (ex) {
try {
let parser = document.createElement("a");
parser.href = url;
if (parser.protocol !== httpsProtocol) {
return undefined;
}
let match = url.match(new RegExp("^https://[^/?#]+", "i"));
let naiveMatch = (match && match.length == 1) ? match[0].toLowerCase() : "";
let parsedUrlWithoutPort = (parser.protocol + "//" + parser.hostname).toLowerCase();
let parsedUrlWithPort = (parser.protocol + "//" + parser.host).toLowerCase();
if (parsedUrlWithPort === naiveMatch || parsedUrlWithoutPort == naiveMatch) {
host = parser.port == "443" ? parser.hostname : parser.host;
}
}
catch (ex) {
return undefined;
}
}
return host ? host.toLowerCase() : undefined;
}
WACUtils.getHostSecure = getHostSecure;
class CacheConstants {
}
CacheConstants.GatedCacheKeyPrefix = "__OSF_GATED_OMEX.";
CacheConstants.AnonymousCacheKeyPrefix = "__OSF_ANONYMOUS_OMEX.";
CacheConstants.UngatedCacheKeyPrefix = "__OSF_OMEX.";
CacheConstants.ActivatedCacheKeyPrefix = "__OSF_RUNTIME_.Activated.";
CacheConstants.AppinstallAuthenticated = "appinstall_authenticated.";
CacheConstants.Entitlement = "entitle.";
CacheConstants.AppState = "appState.";
CacheConstants.AppDetails = "appDetails.";
CacheConstants.AppInstallInfo = "appInstallInfo.";
CacheConstants.AuthenticatedAppInstallInfoCacheKey = CacheConstants.GatedCacheKeyPrefix + CacheConstants.AppinstallAuthenticated + "{0}.{1}.{2}.{3}";
CacheConstants.EntitlementsKey = CacheConstants.Entitlement + "{0}.{1}";
CacheConstants.AppStateCacheKey = "{0}" + CacheConstants.AppState + "{1}.{2}";
CacheConstants.AppDetailKey = "{0}" + CacheConstants.AppDetails + "{1}.{2}";
CacheConstants.AppInstallInfoKey = "{0}" + CacheConstants.AppInstallInfo + "{1}.{2}";
CacheConstants.ActivatedCacheKey = CacheConstants.ActivatedCacheKeyPrefix + "{0}.{1}.{2}";
WACUtils.CacheConstants = CacheConstants;
})(WACUtils = OfficeExt.WACUtils || (OfficeExt.WACUtils = {}));
})(OfficeExt || (OfficeExt = {}));
var OSF;
(function (OSF) {
let OmexRemoveAddinResultCode;
(function (OmexRemoveAddinResultCode) {
OmexRemoveAddinResultCode[OmexRemoveAddinResultCode["Success"] = 0] = "Success";
OmexRemoveAddinResultCode[OmexRemoveAddinResultCode["ClientError"] = 400] = "ClientError";
OmexRemoveAddinResultCode[OmexRemoveAddinResultCode["ServerError"] = 500] = "ServerError";
OmexRemoveAddinResultCode[OmexRemoveAddinResultCode["UnknownError"] = 600] = "UnknownError";
})(OmexRemoveAddinResultCode = OSF.OmexRemoveAddinResultCode || (OSF.OmexRemoveAddinResultCode = {}));
let OmexRemoveAddinMessageKeys;
(function (OmexRemoveAddinMessageKeys) {
OmexRemoveAddinMessageKeys["RemoveAddinResultCode"] = "resultCode";
OmexRemoveAddinMessageKeys["RemoveAddinResultValue"] = "resultValue";
})(OmexRemoveAddinMessageKeys = OSF.OmexRemoveAddinMessageKeys || (OSF.OmexRemoveAddinMessageKeys = {}));
let OmexMessageKeys;
(function (OmexMessageKeys) {
OmexMessageKeys["MessageType"] = "messageType";
OmexMessageKeys["MessageValue"] = "messageValue";
})(OmexMessageKeys = OSF.OmexMessageKeys || (OSF.OmexMessageKeys = {}));
let AuthType;
(function (AuthType) {
AuthType[AuthType["Anonymous"] = 0] = "Anonymous";
AuthType[AuthType["MSA"] = 1] = "MSA";
AuthType[AuthType["OrgId"] = 2] = "OrgId";
AuthType[AuthType["ADAL"] = 3] = "ADAL";
})(AuthType = OSF.AuthType || (OSF.AuthType = {}));
let OmexPageParameterKeys;
(function (OmexPageParameterKeys) {
OmexPageParameterKeys["AppName"] = "client";
OmexPageParameterKeys["AppVersion"] = "cv";
OmexPageParameterKeys["AppUILocale"] = "ui";
OmexPageParameterKeys["AppDomain"] = "appDomain";
OmexPageParameterKeys["StoreLocator"] = "rs";
OmexPageParameterKeys["AssetId"] = "assetid";
OmexPageParameterKeys["NotificationType"] = "notificationType";
OmexPageParameterKeys["AppCorrelationId"] = "corr";
OmexPageParameterKeys["AuthType"] = "authType";
OmexPageParameterKeys["AppId"] = "appid";
OmexPageParameterKeys["Scopes"] = "scopes";
})(OmexPageParameterKeys = OSF.OmexPageParameterKeys || (OSF.OmexPageParameterKeys = {}));
let HostThemeButtonStyleKeys;
(function (HostThemeButtonStyleKeys) {
HostThemeButtonStyleKeys["ButtonBorderColor"] = "buttonBorderColor";
HostThemeButtonStyleKeys["ButtonBackgroundColor"] = "buttonBackgroundColor";
})(HostThemeButtonStyleKeys = OSF.HostThemeButtonStyleKeys || (OSF.HostThemeButtonStyleKeys = {}));
let ShowWindowDialogParameterKeys;
(function (ShowWindowDialogParameterKeys) {
ShowWindowDialogParameterKeys["Url"] = "url";
ShowWindowDialogParameterKeys["Width"] = "width";
ShowWindowDialogParameterKeys["Height"] = "height";
ShowWindowDialogParameterKeys["DisplayInIframe"] = "displayInIframe";
ShowWindowDialogParameterKeys["HideTitle"] = "hideTitle";
ShowWindowDialogParameterKeys["UseDeviceIndependentPixels"] = "useDeviceIndependentPixels";
ShowWindowDialogParameterKeys["PromptBeforeOpen"] = "promptBeforeOpen";
ShowWindowDialogParameterKeys["EnforceAppDomain"] = "enforceAppDomain";
ShowWindowDialogParameterKeys["UrlNoHostInfo"] = "urlNoHostInfo";
})(ShowWindowDialogParameterKeys = OSF.ShowWindowDialogParameterKeys || (OSF.ShowWindowDialogParameterKeys = {}));
})(OSF || (OSF = {}));
let stringResourceFileValue = 'osfruntime_strings.js';
if (DEBUG) {
stringResourceFileValue = 'osfruntime_strings.debug.js';
}
var OSF;
(function (OSF) {
OSF.Constants = {
FileVersion: '0.0.0.0',
ThreePartsFileVersion: '0.0.0',
OmexAnonymousServiceName: "__omexExtensionAnonymousProxy",
OmexAnonymousServiceExtension: "/anonymousserviceextension.aspx",
OmexGatedServiceName: "__omexExtensionGatedProxy",
OmexGatedServiceExtension: "/gatedserviceextension.aspx",
OmexUnGatedServiceName: "__omexExtensionProxy",
OmexUnGatedServiceExtension: "/ungatedserviceextension.aspx",
OmexConsentNotificationPage: "/client/consentnotification.aspx",
Http: "http",
Https: "https",
ProtocolSeparator: "://",
SignInRedirectUrl: "/logontoliveforwac.aspx?returnurl=",
ETokenParameterName: "et",
ActivatedCacheKey: "__OSF_RUNTIME_.Activated.{0}.{1}.{2}",
ConsentedCacheKey: "__OSF_RUNTIME_.Consented.{0}.{1}.{2}",
AuthenticatedConnectMaxTries: 3,
IgnoreSandBoxSupport: "Ignore_SandBox_Support",
IEUpgradeUrl: "https://office.microsoft.com/redir/HA102789344.aspx",
OmexForceAnonymousParamName: "SKAV",
OmexForceAnonymousParamValue: "274AE4CD-E50B-4342-970E-1E7F36C70037",
EndPointInternalSuffix: "_internal",
SPCatalogTrustedLocationsCacheKey: "__OSF_RUNTIME_.SPCatalog_TrustedLocations",
AddinPermissionsTable: "OSF.ADDINS.AddinPermissions",
StringResourceFile: stringResourceFileValue
};
})(OSF || (OSF = {}));
var OSF;
(function (OSF) {
let ClientMode;
(function (ClientMode) {
ClientMode[ClientMode["ReadOnly"] = 0] = "ReadOnly";
ClientMode[ClientMode["ReadWrite"] = 1] = "ReadWrite";
})(ClientMode = OSF.ClientMode || (OSF.ClientMode = {}));
let OsfControlType;
(function (OsfControlType) {
OsfControlType[OsfControlType["DocumentLevel"] = 0] = "DocumentLevel";
OsfControlType[OsfControlType["ContainerLevel"] = 1] = "ContainerLevel";
})(OsfControlType = OSF.OsfControlType || (OSF.OsfControlType = {}));
OSF.OfficeAppContext = function OSF_OfficeAppContext(id, appName, appVersion, appUILocale, dataLocale, docUrl, clientMode, settings, reason, osfControlType, eToken, correlationId, appInstanceId, touchEnabled, commerceAllowed, appMinorVersion, requirementMatrix, hostCustomMessage, hostFullVersion, clientWindowHeight, clientWindowWidth, addinName, appDomains, dialogRequirementMatrix, featureGates, officeTheme, initialDisplayMode, hostSettings) {
this._id = id;
this._appName = appName;
this._appVersion = appVersion;
this._appUILocale = appUILocale;
this._dataLocale = dataLocale;
this._docUrl = docUrl;
this._clientMode = clientMode;
this._settings = settings;
this._reason = reason;
this._osfControlType = osfControlType;
this._eToken = eToken;
this._correlationId = correlationId;
this._appInstanceId = appInstanceId;
this._touchEnabled = touchEnabled;
this._commerceAllowed = commerceAllowed;
this._appMinorVersion = appMinorVersion;
this._requirementMatrix = requirementMatrix;
this._hostCustomMessage = hostCustomMessage;
this._hostFullVersion = hostFullVersion;
this._isDialog = false;
this._clientWindowHeight = clientWindowHeight;
this._clientWindowWidth = clientWindowWidth;
this._addinName = addinName;
this._appDomains = appDomains;
this._dialogRequirementMatrix = dialogRequirementMatrix;
this._featureGates = featureGates;
this._officeTheme = officeTheme;
this._initialDisplayMode = initialDisplayMode;
this._hostSettings = hostSettings;
this.get_id = function get_id() { return this._id; };
this.get_appName = function get_appName() { return this._appName; };
this.get_appVersion = function get_appVersion() { return this._appVersion; };
this.get_appUILocale = function get_appUILocale() { return this._appUILocale; };
this.get_dataLocale = function get_dataLocale() { return this._dataLocale; };
this.get_docUrl = function get_docUrl() { return this._docUrl; };
this.get_clientMode = function get_clientMode() { return this._clientMode; };
this.get_bindings = function get_bindings() { return this._bindings; };
this.get_settings = function get_settings() { return this._settings; };
this.get_reason = function get_reason() { return this._reason; };
this.get_osfControlType = function get_osfControlType() { return this._osfControlType; };
this.get_eToken = function get_eToken() { return this._eToken; };
this.get_correlationId = function get_correlationId() { return this._correlationId; };
this.get_appInstanceId = function get_appInstanceId() { return this._appInstanceId; };
this.get_touchEnabled = function get_touchEnabled() { return this._touchEnabled; };
this.get_commerceAllowed = function get_commerceAllowed() { return this._commerceAllowed; };
this.get_appMinorVersion = function get_appMinorVersion() { return this._appMinorVersion; };
this.get_requirementMatrix = function get_requirementMatrix() { return this._requirementMatrix; };
this.get_dialogRequirementMatrix = function get_dialogRequirementMatrix() { return this._dialogRequirementMatrix; };
this.get_hostCustomMessage = function get_hostCustomMessage() { return this._hostCustomMessage; };
this.get_hostFullVersion = function get_hostFullVersion() { return this._hostFullVersion; };
this.get_isDialog = function get_isDialog() { return this._isDialog; };
this.get_clientWindowHeight = function get_clientWindowHeight() { return this._clientWindowHeight; };
this.get_clientWindowWidth = function get_clientWindowWidth() { return this._clientWindowWidth; };
this.get_addinName = function get_addinName() { return this._addinName; };
this.get_appDomains = function get_appDomains() { return this._appDomains; };
this.get_featureGates = function get_featureGates() { return this._featureGates; };
this.get_officeTheme = function get_officeTheme() { return this._officeTheme; };
this.get_initialDisplayMode = function get_initialDisplayMode() { return this._initialDisplayMode ? this._initialDisplayMode : 0; };
this.get_hostSettings = function get_hostSettings() { return this._hostSettings; };
};
let DialogMessageType;
(function (DialogMessageType) {
DialogMessageType[DialogMessageType["DialogMessageReceived"] = 0] = "DialogMessageReceived";
DialogMessageType[DialogMessageType["DialogParentMessageReceived"] = 1] = "DialogParentMessageReceived";
DialogMessageType[DialogMessageType["DialogClosed"] = 12006] = "DialogClosed";
})(DialogMessageType = OSF.DialogMessageType || (OSF.DialogMessageType = {}));
let SharedConstants;
(function (SharedConstants) {
SharedConstants["NotificationConversationIdSuffix"] = "_ntf";
})(SharedConstants = OSF.SharedConstants || (OSF.SharedConstants = {}));
let AgaveHostAction;
(function (AgaveHostAction) {
AgaveHostAction[AgaveHostAction["Select"] = 0] = "Select";
AgaveHostAction[AgaveHostAction["UnSelect"] = 1] = "UnSelect";
AgaveHostAction[AgaveHostAction["CancelDialog"] = 2] = "CancelDialog";
AgaveHostAction[AgaveHostAction["InsertAgave"] = 3] = "InsertAgave";
AgaveHostAction[AgaveHostAction["CtrlF6In"] = 4] = "CtrlF6In";
AgaveHostAction[AgaveHostAction["CtrlF6Exit"] = 5] = "CtrlF6Exit";
AgaveHostAction[AgaveHostAction["CtrlF6ExitShift"] = 6] = "CtrlF6ExitShift";
AgaveHostAction[AgaveHostAction["SelectWithError"] = 7] = "SelectWithError";
AgaveHostAction[AgaveHostAction["NotifyHostError"] = 8] = "NotifyHostError";
AgaveHostAction[AgaveHostAction["RefreshAddinCommands"] = 9] = "RefreshAddinCommands";
AgaveHostAction[AgaveHostAction["PageIsReady"] = 10] = "PageIsReady";
AgaveHostAction[AgaveHostAction["TabIn"] = 11] = "TabIn";
AgaveHostAction[AgaveHostAction["TabInShift"] = 12] = "TabInShift";
AgaveHostAction[AgaveHostAction["TabExit"] = 13] = "TabExit";
AgaveHostAction[AgaveHostAction["TabExitShift"] = 14] = "TabExitShift";
AgaveHostAction[AgaveHostAction["EscExit"] = 15] = "EscExit";
AgaveHostAction[AgaveHostAction["F2Exit"] = 16] = "F2Exit";
AgaveHostAction[AgaveHostAction["ExitNoFocusable"] = 17] = "ExitNoFocusable";
AgaveHostAction[AgaveHostAction["ExitNoFocusableShift"] = 18] = "ExitNoFocusableShift";
AgaveHostAction[AgaveHostAction["MouseEnter"] = 19] = "MouseEnter";
AgaveHostAction[AgaveHostAction["MouseLeave"] = 20] = "MouseLeave";
AgaveHostAction[AgaveHostAction["UpdateTargetUrl"] = 21] = "UpdateTargetUrl";
AgaveHostAction[AgaveHostAction["InstallCustomFunctions"] = 22] = "InstallCustomFunctions";
AgaveHostAction[AgaveHostAction["SendTelemetryEvent"] = 23] = "SendTelemetryEvent";
AgaveHostAction[AgaveHostAction["UninstallCustomFunctions"] = 24] = "UninstallCustomFunctions";
AgaveHostAction[AgaveHostAction["SendMessage"] = 25] = "SendMessage";
AgaveHostAction[AgaveHostAction["LaunchExtensionComponent"] = 26] = "LaunchExtensionComponent";
AgaveHostAction[AgaveHostAction["StopExtensionComponent"] = 27] = "StopExtensionComponent";
AgaveHostAction[AgaveHostAction["RestartExtensionComponent"] = 28] = "RestartExtensionComponent";
AgaveHostAction[AgaveHostAction["EnableTaskPaneHeaderButton"] = 29] = "EnableTaskPaneHeaderButton";
AgaveHostAction[AgaveHostAction["DisableTaskPaneHeaderButton"] = 30] = "DisableTaskPaneHeaderButton";
AgaveHostAction[AgaveHostAction["TaskPaneHeaderButtonClicked"] = 31] = "TaskPaneHeaderButtonClicked";
AgaveHostAction[AgaveHostAction["RemoveAppCommandsAddin"] = 32] = "RemoveAppCommandsAddin";
AgaveHostAction[AgaveHostAction["RefreshRibbonGallery"] = 33] = "RefreshRibbonGallery";
AgaveHostAction[AgaveHostAction["GetOriginalControlId"] = 34] = "GetOriginalControlId";
AgaveHostAction[AgaveHostAction["OfficeJsReady"] = 35] = "OfficeJsReady";
AgaveHostAction[AgaveHostAction["InsertDevManifest"] = 36] = "InsertDevManifest";
AgaveHostAction[AgaveHostAction["InsertDevManifestError"] = 37] = "InsertDevManifestError";
AgaveHostAction[AgaveHostAction["SendCustomerContent"] = 38] = "SendCustomerContent";
AgaveHostAction[AgaveHostAction["KeyboardShortcuts"] = 39] = "KeyboardShortcuts";
AgaveHostAction[AgaveHostAction["OsfControlLoad"] = 40] = "OsfControlLoad";
AgaveHostAction[AgaveHostAction["ClickTrust"] = 41] = "ClickTrust";
AgaveHostAction[AgaveHostAction["CloseSDXDialog"] = 42] = "CloseSDXDialog";
AgaveHostAction[AgaveHostAction["ResizeSDXDialog"] = 43] = "ResizeSDXDialog";
AgaveHostAction[AgaveHostAction["SendNonStandardEvent"] = 44] = "SendNonStandardEvent";
})(AgaveHostAction = OSF.AgaveHostAction || (OSF.AgaveHostAction = {}));
let HostCallPerfMarker;
(function (HostCallPerfMarker) {
HostCallPerfMarker["IssueCall"] = "Agave.HostCall.IssueCall";
HostCallPerfMarker["ReceiveResponse"] = "Agave.HostCall.ReceiveResponse";
HostCallPerfMarker["RuntimeExceptionRaised"] = "Agave.HostCall.RuntimeExecptionRaised";
})(HostCallPerfMarker = OSF.HostCallPerfMarker || (OSF.HostCallPerfMarker = {}));
let InternalPerfMarker;
(function (InternalPerfMarker) {
InternalPerfMarker["DataCoercionBegin"] = "Agave.HostCall.CoerceDataStart";
InternalPerfMarker["DataCoercionEnd"] = "Agave.HostCall.CoerceDataEnd";
})(InternalPerfMarker = OSF.InternalPerfMarker || (OSF.InternalPerfMarker = {}));
let NestedAppAuthBridgeType;
(function (NestedAppAuthBridgeType) {
NestedAppAuthBridgeType[NestedAppAuthBridgeType["None"] = 0] = "None";
NestedAppAuthBridgeType[NestedAppAuthBridgeType["ExecuteApi"] = 1] = "ExecuteApi";
NestedAppAuthBridgeType[NestedAppAuthBridgeType["PostMessage"] = 2] = "PostMessage";
})(NestedAppAuthBridgeType = OSF.NestedAppAuthBridgeType || (OSF.NestedAppAuthBridgeType = {}));
let DDA;
(function (DDA) {
let EventDispId;
(function (EventDispId) {
EventDispId[EventDispId["dispidEventMin"] = 0] = "dispidEventMin";
EventDispId[EventDispId["dispidInitializeEvent"] = 0] = "dispidInitializeEvent";
EventDispId[EventDispId["dispidSettingsChangedEvent"] = 1] = "dispidSettingsChangedEvent";
EventDispId[EventDispId["dispidDocumentSelectionChangedEvent"] = 2] = "dispidDocumentSelectionChangedEvent";
EventDispId[EventDispId["dispidBindingSelectionChangedEvent"] = 3] = "dispidBindingSelectionChangedEvent";
EventDispId[EventDispId["dispidBindingDataChangedEvent"] = 4] = "dispidBindingDataChangedEvent";
EventDispId[EventDispId["dispidDocumentOpenEvent"] = 5] = "dispidDocumentOpenEvent";
EventDispId[EventDispId["dispidDocumentCloseEvent"] = 6] = "dispidDocumentCloseEvent";
EventDispId[EventDispId["dispidActiveViewChangedEvent"] = 7] = "dispidActiveViewChangedEvent";
EventDispId[EventDispId["dispidDocumentThemeChangedEvent"] = 8] = "dispidDocumentThemeChangedEvent";
EventDispId[EventDispId["dispidOfficeThemeChangedEvent"] = 9] = "dispidOfficeThemeChangedEvent";
EventDispId[EventDispId["dispidDialogMessageReceivedEvent"] = 10] = "dispidDialogMessageReceivedEvent";
EventDispId[EventDispId["dispidDialogNotificationShownInAddinEvent"] = 11] = "dispidDialogNotificationShownInAddinEvent";
EventDispId[EventDispId["dispidDialogParentMessageReceivedEvent"] = 12] = "dispidDialogParentMessageReceivedEvent";
EventDispId[EventDispId["dispidObjectDeletedEvent"] = 13] = "dispidObjectDeletedEvent";
EventDispId[EventDispId["dispidObjectSelectionChangedEvent"] = 14] = "dispidObjectSelectionChangedEvent";
EventDispId[EventDispId["dispidObjectDataChangedEvent"] = 15] = "dispidObjectDataChangedEvent";
EventDispId[EventDispId["dispidContentControlAddedEvent"] = 16] = "dispidContentControlAddedEvent";
EventDispId[EventDispId["dispidLiveShareStateChangedEvent"] = 17] = "dispidLiveShareStateChangedEvent";
EventDispId[EventDispId["dispidSuspend"] = 19] = "dispidSuspend";
EventDispId[EventDispId["dispidResume"] = 20] = "dispidResume";
EventDispId[EventDispId["dispidActivationStatusChangedEvent"] = 32] = "dispidActivationStatusChangedEvent";
EventDispId[EventDispId["dispidRichApiMessageEvent"] = 33] = "dispidRichApiMessageEvent";
EventDispId[EventDispId["dispidAppCommandInvokedEvent"] = 39] = "dispidAppCommandInvokedEvent";
EventDispId[EventDispId["dispidOlkItemSelectedChangedEvent"] = 46] = "dispidOlkItemSelectedChangedEvent";
EventDispId[EventDispId["dispidOlkRecipientsChangedEvent"] = 47] = "dispidOlkRecipientsChangedEvent";
EventDispId[EventDispId["dispidOlkAppointmentTimeChangedEvent"] = 48] = "dispidOlkAppointmentTimeChangedEvent";
EventDispId[EventDispId["dispidOlkRecurrenceChangedEvent"] = 49] = "dispidOlkRecurrenceChangedEvent";
EventDispId[EventDispId["dispidOlkAttachmentsChangedEvent"] = 50] = "dispidOlkAttachmentsChangedEvent";
EventDispId[EventDispId["dispidOlkEnhancedLocationsChangedEvent"] = 51] = "dispidOlkEnhancedLocationsChangedEvent";
EventDispId[EventDispId["dispidOlkInfobarClickedEvent"] = 52] = "dispidOlkInfobarClickedEvent";
EventDispId[EventDispId["dispidTaskSelectionChangedEvent"] = 56] = "dispidTaskSelectionChangedEvent";
EventDispId[EventDispId["dispidResourceSelectionChangedEvent"] = 57] = "dispidResourceSelectionChangedEvent";
EventDispId[EventDispId["dispidViewSelectionChangedEvent"] = 58] = "dispidViewSelectionChangedEvent";
EventDispId[EventDispId["dispidDataNodeAddedEvent"] = 60] = "dispidDataNodeAddedEvent";
EventDispId[EventDispId["dispidDataNodeReplacedEvent"] = 61] = "dispidDataNodeReplacedEvent";
EventDispId[EventDispId["dispidDataNodeDeletedEvent"] = 62] = "dispidDataNodeDeletedEvent";
EventDispId[EventDispId["dispidEventMax"] = 63] = "dispidEventMax";
})(EventDispId = DDA.EventDispId || (DDA.EventDispId = {}));
let MethodDispId;
(function (MethodDispId) {
MethodDispId[MethodDispId["dispidMethodMin"] = 64] = "dispidMethodMin";
MethodDispId[MethodDispId["dispidGetSelectedDataMethod"] = 64] = "dispidGetSelectedDataMethod";
MethodDispId[MethodDispId["dispidSetSelectedDataMethod"] = 65] = "dispidSetSelectedDataMethod";
MethodDispId[MethodDispId["dispidAddBindingFromSelectionMethod"] = 66] = "dispidAddBindingFromSelectionMethod";
MethodDispId[MethodDispId["dispidAddBindingFromPromptMethod"] = 67] = "dispidAddBindingFromPromptMethod";
MethodDispId[MethodDispId["dispidGetBindingMethod"] = 68] = "dispidGetBindingMethod";
MethodDispId[MethodDispId["dispidReleaseBindingMethod"] = 69] = "dispidReleaseBindingMethod";
MethodDispId[MethodDispId["dispidGetBindingDataMethod"] = 70] = "dispidGetBindingDataMethod";
MethodDispId[MethodDispId["dispidSetBindingDataMethod"] = 71] = "dispidSetBindingDataMethod";
MethodDispId[MethodDispId["dispidAddRowsMethod"] = 72] = "dispidAddRowsMethod";
MethodDispId[MethodDispId["dispidClearAllRowsMethod"] = 73] = "dispidClearAllRowsMethod";
MethodDispId[MethodDispId["dispidGetAllBindingsMethod"] = 74] = "dispidGetAllBindingsMethod";
MethodDispId[MethodDispId["dispidLoadSettingsMethod"] = 75] = "dispidLoadSettingsMethod";
MethodDispId[MethodDispId["dispidSaveSettingsMethod"] = 76] = "dispidSaveSettingsMethod";
MethodDispId[MethodDispId["dispidGetDocumentCopyMethod"] = 77] = "dispidGetDocumentCopyMethod";
MethodDispId[MethodDispId["dispidAddBindingFromNamedItemMethod"] = 78] = "dispidAddBindingFromNamedItemMethod";
MethodDispId[MethodDispId["dispidAddColumnsMethod"] = 79] = "dispidAddColumnsMethod";
MethodDispId[MethodDispId["dispidGetDocumentCopyChunkMethod"] = 80] = "dispidGetDocumentCopyChunkMethod";
MethodDispId[MethodDispId["dispidReleaseDocumentCopyMethod"] = 81] = "dispidReleaseDocumentCopyMethod";
MethodDispId[MethodDispId["dispidNavigateToMethod"] = 82] = "dispidNavigateToMethod";
MethodDispId[MethodDispId["dispidGetActiveViewMethod"] = 83] = "dispidGetActiveViewMethod";
MethodDispId[MethodDispId["dispidGetDocumentThemeMethod"] = 84] = "dispidGetDocumentThemeMethod";
MethodDispId[MethodDispId["dispidGetOfficeThemeMethod"] = 85] = "dispidGetOfficeThemeMethod";
MethodDispId[MethodDispId["dispidGetFilePropertiesMethod"] = 86] = "dispidGetFilePropertiesMethod";
MethodDispId[MethodDispId["dispidClearFormatsMethod"] = 87] = "dispidClearFormatsMethod";
MethodDispId[MethodDispId["dispidSetTableOptionsMethod"] = 88] = "dispidSetTableOptionsMethod";
MethodDispId[MethodDispId["dispidSetFormatsMethod"] = 89] = "dispidSetFormatsMethod";
MethodDispId[MethodDispId["dispidGetUserIdentityInfoMethod"] = 92] = "dispidGetUserIdentityInfoMethod";
MethodDispId[MethodDispId["dispidExecuteRichApiRequestMethod"] = 93] = "dispidExecuteRichApiRequestMethod";
MethodDispId[MethodDispId["dispidAppCommandInvocationCompletedMethod"] = 94] = "dispidAppCommandInvocationCompletedMethod";
MethodDispId[MethodDispId["dispidCloseContainerMethod"] = 97] = "dispidCloseContainerMethod";
MethodDispId[MethodDispId["dispidGetAccessTokenMethod"] = 98] = "dispidGetAccessTokenMethod";
MethodDispId[MethodDispId["dispidGetAuthContextMethod"] = 99] = "dispidGetAuthContextMethod";
MethodDispId[MethodDispId["dispidGetLiveShareStateMethod"] = 100] = "dispidGetLiveShareStateMethod";
MethodDispId[MethodDispId["dispidSetLiveShareStateMethod"] = 101] = "dispidSetLiveShareStateMethod";
MethodDispId[MethodDispId["dispidOpenBrowserWindow"] = 102] = "dispidOpenBrowserWindow";
MethodDispId[MethodDispId["dispidCreateDocumentMethod"] = 105] = "dispidCreateDocumentMethod";
MethodDispId[MethodDispId["dispidInsertFormMethod"] = 106] = "dispidInsertFormMethod";
MethodDispId[MethodDispId["dispidDisplayRibbonCalloutAsyncMethod"] = 109] = "dispidDisplayRibbonCalloutAsyncMethod";
MethodDispId[MethodDispId["dispidGetSelectedTaskMethod"] = 110] = "dispidGetSelectedTaskMethod";
MethodDispId[MethodDispId["dispidGetSelectedResourceMethod"] = 111] = "dispidGetSelectedResourceMethod";
MethodDispId[MethodDispId["dispidGetTaskMethod"] = 112] = "dispidGetTaskMethod";
MethodDispId[MethodDispId["dispidGetResourceFieldMethod"] = 113] = "dispidGetResourceFieldMethod";
MethodDispId[MethodDispId["dispidGetWSSUrlMethod"] = 114] = "dispidGetWSSUrlMethod";
MethodDispId[MethodDispId["dispidGetTaskFieldMethod"] = 115] = "dispidGetTaskFieldMethod";
MethodDispId[MethodDispId["dispidGetProjectFieldMethod"] = 116] = "dispidGetProjectFieldMethod";
MethodDispId[MethodDispId["dispidGetSelectedViewMethod"] = 117] = "dispidGetSelectedViewMethod";
MethodDispId[MethodDispId["dispidGetTaskByIndexMethod"] = 118] = "dispidGetTaskByIndexMethod";
MethodDispId[MethodDispId["dispidGetResourceByIndexMethod"] = 119] = "dispidGetResourceByIndexMethod";
MethodDispId[MethodDispId["dispidSetTaskFieldMethod"] = 120] = "dispidSetTaskFieldMethod";
MethodDispId[MethodDispId["dispidSetResourceFieldMethod"] = 121] = "dispidSetResourceFieldMethod";
MethodDispId[MethodDispId["dispidGetMaxTaskIndexMethod"] = 122] = "dispidGetMaxTaskIndexMethod";
MethodDispId[MethodDispId["dispidGetMaxResourceIndexMethod"] = 123] = "dispidGetMaxResourceIndexMethod";
MethodDispId[MethodDispId["dispidCreateTaskMethod"] = 124] = "dispidCreateTaskMethod";
MethodDispId[MethodDispId["dispidAddDataPartMethod"] = 128] = "dispidAddDataPartMethod";
MethodDispId[MethodDispId["dispidGetDataPartByIdMethod"] = 129] = "dispidGetDataPartByIdMethod";
MethodDispId[MethodDispId["dispidGetDataPartsByNamespaceMethod"] = 130] = "dispidGetDataPartsByNamespaceMethod";
MethodDispId[MethodDispId["dispidGetDataPartXmlMethod"] = 131] = "dispidGetDataPartXmlMethod";
MethodDispId[MethodDispId["dispidGetDataPartNodesMethod"] = 132] = "dispidGetDataPartNodesMethod";
MethodDispId[MethodDispId["dispidDeleteDataPartMethod"] = 133] = "dispidDeleteDataPartMethod";
MethodDispId[MethodDispId["dispidGetDataNodeValueMethod"] = 134] = "dispidGetDataNodeValueMethod";
MethodDispId[MethodDispId["dispidGetDataNodeXmlMethod"] = 135] = "dispidGetDataNodeXmlMethod";
MethodDispId[MethodDispId["dispidGetDataNodesMethod"] = 136] = "dispidGetDataNodesMethod";
MethodDispId[MethodDispId["dispidSetDataNodeValueMethod"] = 137] = "dispidSetDataNodeValueMethod";
MethodDispId[MethodDispId["dispidSetDataNodeXmlMethod"] = 138] = "dispidSetDataNodeXmlMethod";
MethodDispId[MethodDispId["dispidAddDataNamespaceMethod"] = 139] = "dispidAddDataNamespaceMethod";
MethodDispId[MethodDispId["dispidGetDataUriByPrefixMethod"] = 140] = "dispidGetDataUriByPrefixMethod";
MethodDispId[MethodDispId["dispidGetDataPrefixByUriMethod"] = 141] = "dispidGetDataPrefixByUriMethod";
MethodDispId[MethodDispId["dispidGetDataNodeTextMethod"] = 142] = "dispidGetDataNodeTextMethod";
MethodDispId[MethodDispId["dispidSetDataNodeTextMethod"] = 143] = "dispidSetDataNodeTextMethod";
MethodDispId[MethodDispId["dispidMessageParentMethod"] = 144] = "dispidMessageParentMethod";
MethodDispId[MethodDispId["dispidSendMessageMethod"] = 145] = "dispidSendMessageMethod";
MethodDispId[MethodDispId["dispidExecuteFeature"] = 146] = "dispidExecuteFeature";
MethodDispId[MethodDispId["dispidQueryFeature"] = 147] = "dispidQueryFeature";
MethodDispId[MethodDispId["dispidMethodMax"] = 147] = "dispidMethodMax";
MethodDispId[MethodDispId["dispidGetNestedAppAuthContextMethod"] = 205] = "dispidGetNestedAppAuthContextMethod";
})(MethodDispId = DDA.MethodDispId || (DDA.MethodDispId = {}));
DDA.getXdmEventName = function OSF_DDA$GetXdmEventName(id, eventType) {
if (eventType == Microsoft.Office.WebExtension.EventType.BindingSelectionChanged ||
eventType == Microsoft.Office.WebExtension.EventType.BindingDataChanged ||
eventType == Microsoft.Office.WebExtension.EventType.DataNodeDeleted ||
eventType == Microsoft.Office.WebExtension.EventType.DataNodeInserted ||
eventType == Microsoft.Office.WebExtension.EventType.DataNodeReplaced) {
return id + "_" + eventType;
}
else {
return eventType;
}
};
let UI;
(function (UI) {
})(UI = DDA.UI || (DDA.UI = {}));
let ListDescriptors;
(function (ListDescriptors) {
})(ListDescriptors = DDA.ListDescriptors || (DDA.ListDescriptors = {}));
let EventDescriptors;
(function (EventDescriptors) {
})(EventDescriptors = DDA.EventDescriptors || (DDA.EventDescriptors = {}));
let PropertyDescriptors;
(function (PropertyDescriptors) {
PropertyDescriptors["AsyncResultStatus"] = "AsyncResultStatus";
})(PropertyDescriptors = DDA.PropertyDescriptors || (DDA.PropertyDescriptors = {}));
let DocumentMode;
(function (DocumentMode) {
DocumentMode[DocumentMode["ReadOnly"] = 1] = "ReadOnly";
DocumentMode[DocumentMode["ReadWrite"] = 0] = "ReadWrite";
})(DocumentMode = DDA.DocumentMode || (DDA.DocumentMode = {}));
})(DDA = OSF.DDA || (OSF.DDA = {}));
})(OSF || (OSF = {}));
var Microsoft;
(function (Microsoft) {
let Office;
(function (Office) {
let WebExtension;
(function (WebExtension) {
let Parameters;
(function (Parameters) {
Parameters["BindingType"] = "bindingType";
Parameters["CoercionType"] = "coercionType";
Parameters["ValueFormat"] = "valueFormat";
Parameters["FilterType"] = "filterType";
Parameters["Columns"] = "columns";
Parameters["SampleData"] = "sampleData";
Parameters["GoToType"] = "goToType";
Parameters["SelectionMode"] = "selectionMode";
Parameters["Id"] = "id";
Parameters["PromptText"] = "promptText";
Parameters["ItemName"] = "itemName";
Parameters["FailOnCollision"] = "failOnCollision";
Parameters["StartRow"] = "startRow";
Parameters["StartColumn"] = "startColumn";
Parameters["RowCount"] = "rowCount";
Parameters["ColumnCount"] = "columnCount";
Parameters["Callback"] = "callback";
Parameters["AsyncContext"] = "asyncContext";
Parameters["Data"] = "data";
Parameters["Rows"] = "rows";
Parameters["OverwriteIfStale"] = "overwriteIfStale";
Parameters["FileType"] = "fileType";
Parameters["EventType"] = "eventType";
Parameters["Handler"] = "handler";
Parameters["SliceSize"] = "sliceSize";
Parameters["SliceIndex"] = "sliceIndex";
Parameters["ActiveView"] = "activeView";
Parameters["Status"] = "status";
Parameters["PlatformType"] = "platformType";
Parameters["HostType"] = "hostType";
Parameters["Email"] = "email";
Parameters["ForceConsent"] = "forceConsent";
Parameters["ForceAddAccount"] = "forceAddAccount";
Parameters["AuthChallenge"] = "authChallenge";
Parameters["AllowConsentPrompt"] = "allowConsentPrompt";
Parameters["ForMSGraphAccess"] = "forMSGraphAccess";
Parameters["AllowSignInPrompt"] = "allowSignInPrompt";
Parameters["JsonPayload"] = "jsonPayload";
Parameters["EnableNewHosts"] = "enableNewHosts";
Parameters["AccountTypeFilter"] = "accountTypeFilter";
Parameters["AddinTrustId"] = "addinTrustId";
Parameters["Reserved"] = "reserved";
Parameters["Tcid"] = "tcid";
Parameters["Xml"] = "xml";
Parameters["Namespace"] = "namespace";
Parameters["Prefix"] = "prefix";
Parameters["XPath"] = "xPath";
Parameters["Text"] = "text";
Parameters["ImageLeft"] = "imageLeft";
Parameters["ImageTop"] = "imageTop";
Parameters["ImageWidth"] = "imageWidth";
Parameters["ImageHeight"] = "imageHeight";
Parameters["TaskId"] = "taskId";
Parameters["FieldId"] = "fieldId";
Parameters["FieldValue"] = "fieldValue";
Parameters["ServerUrl"] = "serverUrl";
Parameters["ListName"] = "listName";
Parameters["ResourceId"] = "resourceId";
Parameters["ViewType"] = "viewType";
Parameters["ViewName"] = "viewName";
Parameters["GetRawValue"] = "getRawValue";
Parameters["CellFormat"] = "cellFormat";
Parameters["TableOptions"] = "tableOptions";
Parameters["TaskIndex"] = "taskIndex";
Parameters["ResourceIndex"] = "resourceIndex";
Parameters["CustomFieldId"] = "customFieldId";
Parameters["Url"] = "url";
Parameters["MessageHandler"] = "messageHandler";
Parameters["Width"] = "width";
Parameters["Height"] = "height";
Parameters["RequireHTTPs"] = "requireHTTPS";
Parameters["MessageToParent"] = "messageToParent";
Parameters["DisplayInIframe"] = "displayInIframe";
Parameters["MessageContent"] = "messageContent";
Parameters["TargetOrigin"] = "targetOrigin";
Parameters["HideTitle"] = "hideTitle";
Parameters["UseDeviceIndependentPixels"] = "useDeviceIndependentPixels";
Parameters["PromptBeforeOpen"] = "promptBeforeOpen";
Parameters["EnforceAppDomain"] = "enforceAppDomain";
Parameters["UrlNoHostInfo"] = "urlNoHostInfo";
Parameters["Targetorigin"] = "targetOrigin";
Parameters["AppCommandInvocationCompletedData"] = "appCommandInvocationCompletedData";
Parameters["Base64"] = "base64";
Parameters["FormId"] = "formId";
})(Parameters = WebExtension.Parameters || (WebExtension.Parameters = {}));
let FilterType;
(function (FilterType) {
FilterType["All"] = "all";
})(FilterType = WebExtension.FilterType || (WebExtension.FilterType = {}));
let ValueFormat;
(function (ValueFormat) {
ValueFormat["Unformatted"] = "unformatted";
ValueFormat["Formatted"] = "formatted";
})(ValueFormat = WebExtension.ValueFormat || (WebExtension.ValueFormat = {}));
let InitializationReason;
(function (InitializationReason) {
InitializationReason["Inserted"] = "inserted";
InitializationReason["DocumentOpened"] = "documentOpened";
InitializationReason["ControlActivation"] = "controlActivation";
})(InitializationReason = WebExtension.InitializationReason || (WebExtension.InitializationReason = {}));
})(WebExtension = Office.WebExtension || (Office.WebExtension = {}));
})(Office = Microsoft.Office || (Microsoft.Office = {}));
})(Microsoft || (Microsoft = {}));
var _serviceEndPoint = null;
var _defaultRefreshRate = 3;
var _msPerDay = 86400000;
var _defaultTimeout = 60000;
var _officeVersionHeader = "X-Office-Version";
var _hourToDayConversionFactor = 24;
var _buildParameter = "&build=";
var _expectedVersionParameter = "&expver=";
var _queryStringParameters = {
clientName: "client",
clientVersion: "cv"
};
var statusCode = {
Succeeded: 1,
Failed: 0
};
var _spUpn = null;
function _sendWebRequest(url, verb, headers, onCompleted, context, body) {
context = context || {};
var webRequest = new Sys.Net.WebRequest();
for (var p in headers) {
webRequest.get_headers()[p] = headers[p];
}
if (context) {
if (context.officeVersion) {
webRequest.get_headers()[_officeVersionHeader] = context.officeVersion;
}
if (context.correlationId && url.indexOf('?') > -1) {
url += "&corr=" + context.correlationId;
}
}
if (body) {
webRequest.set_body(body);
}
webRequest.set_url(url);
webRequest.set_httpVerb(verb);
webRequest.set_timeout(_defaultTimeout);
webRequest.set_userContext(context);
webRequest.add_completed(onCompleted);
webRequest.invoke();
}
;
function _onCompleted(executor, eventArgs) {
var context = executor.get_webRequest().get_userContext();
var url = executor.get_webRequest().get_url();
if (executor.get_timedOut()) {
OsfMsAjaxFactory.msAjaxDebug.trace("Request timed out: " + url);
_invokeCallbackTag(context.callback, statusCode.Failed, null, null, executor, 0x0085a2c3);
}
else if (executor.get_aborted()) {
OsfMsAjaxFactory.msAjaxDebug.trace("Request aborted: " + url);
_invokeCallbackTag(context.callback, statusCode.Failed, null, null, executor, 0x0085a2c4);
}
else if (executor.get_responseAvailable()) {
if (executor.get_statusCode() == 200) {
try {
context._onCompleteHandler(executor, eventArgs);
}
catch (ex) {
OsfMsAjaxFactory.msAjaxDebug.trace("Request failed with exception " + ex + ": " + url);
_invokeCallbackTag(context.callback, statusCode.Failed, ex, null, executor, 0x0085a2c5);
}
}
else {
var statusText = executor.get_statusText();
OsfMsAjaxFactory.msAjaxDebug.trace("Request failed with status code " + statusText + ": " + url);
_invokeCallbackTag(context.callback, statusCode.Failed, statusText, null, executor, 0x0085a2c6);
}
}
else {
OsfMsAjaxFactory.msAjaxDebug.trace("Request failed: " + url);
_invokeCallbackTag(context.callback, statusCode.Failed, statusText, null, executor, 0x0085a2c7);
}
}
;
function _isProxyReady(params, callback) {
if (callback) {
callback({ "status": statusCode.Succeeded, "result": true });
}
}
;
function _createQueryStringFragment(paramDictionary) {
var queryString = "";
for (var param in paramDictionary) {
var value = paramDictionary[param];
if (value === null || value === undefined || value === "") {
continue;
}
queryString += '&' + encodeURIComponent(param) + '=' + encodeURIComponent(value);
}
return queryString;
}
;
var Mos;
(function (Mos) {
class AcquisitionList {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
if (!data) {
this.acquisitions = [];
}
}
init(_data) {
if (_data) {
if (Array.isArray(_data["acquisitions"])) {
this.acquisitions = [];
for (let item of _data["acquisitions"])
this.acquisitions.push(Acquisition.fromJS(item));
}
this.syncKey = _data["syncKey"];
this.nextInterval = _data["nextInterval"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new AcquisitionList();
result.init(data);
return result;
}
push(data) {
this.acquisitions.push(...data.acquisitions);
this.syncKey = data.syncKey;
this.nextInterval = data.nextInterval;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
if (Array.isArray(this.acquisitions)) {
data["acquisitions"] = [];
for (let item of this.acquisitions)
data["acquisitions"].push(item.toJSON());
}
data["syncKey"] = this.syncKey;
data["nextInterval"] = this.nextInterval;
return data;
}
}
Mos.AcquisitionList = AcquisitionList;
class Acquisition {
static getStoreType(acquisition) {
var _a;
if ((acquisition === null || acquisition === void 0 ? void 0 : acquisition.acquisitionContext) && ((_a = acquisition === null || acquisition === void 0 ? void 0 : acquisition.titleDefinition) === null || _a === void 0 ? void 0 : _a.scope)) {
const scope = acquisition.titleDefinition.scope.toLowerCase();
const context = acquisition.acquisitionContext.toLowerCase();
if (context === "user" && scope === "public") {
return OSF.StoreType.OMEX;
}
else if (context === "tenant") {
return OSF.StoreType.PrivateCatalog;
}
else if (context === "user") {
return OSF.StoreType.UploadFileDevCatalog;
}
}
return undefined;
}
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
if (!data) {
this.titleDefinition = new TitleDefinition();
}
}
init(_data) {
if (_data) {
this.titleId = _data["titleId"];
this.assetId = _data["assetId"];
this.manifestId = _data["manifestId"];
this.titleDefinition = _data["titleDefinition"] ? TitleDefinition.fromJS(_data["titleDefinition"]) : new TitleDefinition();
this.acquisitionState = _data["acquisitionState"];
this.acquisitionContext = _data["acquisitionContext"];
this.canBeUnacquired = _data["canBeUnacquired"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Acquisition();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["titleId"] = this.titleId;
data["assetId"] = this.assetId;
data["manifestId"] = this.manifestId;
data["titleDefinition"] = this.titleDefinition ? this.titleDefinition.toJSON() : undefined;
data["acquisitionState"] = this.acquisitionState;
data["acquisitionContext"] = this.acquisitionContext;
data["canBeUnacquired"] = this.canBeUnacquired;
return data;
}
}
Mos.Acquisition = Acquisition;
class TitleDefinition {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
if (!data) {
this.iconSmall = new IconSmall();
this.elementDefinitions = new ElementDefinitions();
}
}
init(_data) {
if (_data) {
this.name = _data["name"];
this.iconSmall = _data["iconSmall"] ? IconSmall.fromJS(_data["iconSmall"]) : new IconSmall();
this.version = _data["version"];
this.elementDefinitions = _data["elementDefinitions"] ? ElementDefinitions.fromJS(_data["elementDefinitions"]) : new ElementDefinitions();
this.ingestionSource = _data["ingestionSource"];
this.scope = _data["scope"];
this.developerName = _data["developerName"];
this.shortDescription = _data["shortDescription"];
if (Array.isArray(_data["validDomains"])) {
this.validDomains = [];
for (let item of _data["validDomains"])
this.validDomains.push(item);
}
this.webApplicationInfo = _data["webApplicationInfo"] ? WebApplicationInfo.fromJS(_data["webApplicationInfo"]) : undefined;
this.authorization = _data["authorization"] ? Authorization.fromJS(_data["authorization"]) : undefined;
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new TitleDefinition();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["name"] = this.name;
data["iconSmall"] = this.iconSmall ? this.iconSmall.toJSON() : undefined;
data["version"] = this.version;
data["elementDefinitions"] = this.elementDefinitions ? this.elementDefinitions.toJSON() : undefined;
data["ingestionSource"] = this.ingestionSource;
data["scope"] = this.scope;
data["developerName"] = this.developerName;
data["shortDescription"] = this.shortDescription;
if (Array.isArray(this.validDomains)) {
data["validDomains"] = [];
for (let item of this.validDomains)
data["validDomains"].push(item);
}
data["webApplicationInfo"] = this.webApplicationInfo ? this.webApplicationInfo.toJSON() : undefined;
data["authorization"] = this.authorization ? this.authorization.toJSON() : undefined;
return data;
}
}
Mos.TitleDefinition = TitleDefinition;
class IconSmall {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.uri = _data["uri"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new IconSmall();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["uri"] = this.uri;
return data;
}
}
Mos.IconSmall = IconSmall;
class ElementDefinitions {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
if (Array.isArray(_data["officeAddIns"])) {
this.officeAddIns = [];
for (let item of _data["officeAddIns"])
this.officeAddIns.push(OfficeAddIn.fromJS(item));
}
if (Array.isArray(_data["extensions"])) {
this.extensions = [];
for (let item of _data["extensions"])
this.extensions.push(Extension.fromJS(item));
}
if (Array.isArray(_data["firstPartyPages"])) {
this.firstPartyPages = [];
for (let item of _data["firstPartyPages"])
this.firstPartyPages.push(FirstPartyPages.fromJS(item));
}
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new ElementDefinitions();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
if (Array.isArray(this.officeAddIns)) {
data["officeAddIns"] = [];
for (let item of this.officeAddIns)
data["officeAddIns"].push(item.toJSON());
}
if (Array.isArray(this.extensions)) {
data["extensions"] = [];
for (let item of this.extensions)
data["extensions"].push(item.toJSON());
}
if (Array.isArray(this.firstPartyPages)) {
data["firstPartyPages"] = [];
for (let item of this.firstPartyPages)
data["firstPartyPages"].push(item.toJSON());
}
return data;
}
}
Mos.ElementDefinitions = ElementDefinitions;
class WebApplicationInfo {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.id = _data["id"];
this.resource = _data["resource"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new WebApplicationInfo();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["id"] = this.id;
data["resource"] = this.resource;
return data;
}
}
Mos.WebApplicationInfo = WebApplicationInfo;
class Authorization {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.permissions = _data["permissions"] ? Permissions.fromJS(_data["permissions"]) : undefined;
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Authorization();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["permissions"] = this.permissions ? this.permissions.toJSON() : undefined;
return data;
}
}
Mos.Authorization = Authorization;
class OfficeAddIn {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.xmlDefinition = _data["xmlDefinition"];
this.name = _data["name"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new OfficeAddIn();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["xmlDefinition"] = this.xmlDefinition;
data["name"] = this.name;
return data;
}
}
Mos.OfficeAddIn = OfficeAddIn;
class Extension {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
if (!data) {
this.getStartedMessages = [];
this.runtimes = [];
this.shortcuts = [];
this.autoRunEvents = [];
}
}
init(_data) {
if (_data) {
this.requirements = _data["requirements"] ? Requirements.fromJS(_data["requirements"]) : undefined;
if (Array.isArray(_data["getStartedMessages"])) {
this.getStartedMessages = [];
for (let item of _data["getStartedMessages"])
this.getStartedMessages.push(GetStartedMessages.fromJS(item));
}
if (Array.isArray(_data["runtimes"])) {
this.runtimes = [];
for (let item of _data["runtimes"])
this.runtimes.push(Runtimes.fromJS(item));
}
if (Array.isArray(_data["ribbons"])) {
this.ribbons = [];
for (let item of _data["ribbons"])
this.ribbons.push(Ribbons.fromJS(item));
}
if (Array.isArray(_data["shortcuts"])) {
this.shortcuts = [];
for (let item of _data["shortcuts"])
this.shortcuts.push(Shortcuts.fromJS(item));
}
if (Array.isArray(_data["autoRunEvents"])) {
this.autoRunEvents = [];
for (let item of _data["autoRunEvents"])
this.autoRunEvents.push(AutoRunEvents.fromJS(item));
}
if (Array.isArray(_data["contextMenus"])) {
this.contextMenus = [];
for (let item of _data["contextMenus"])
this.contextMenus.push(ContextMenus.fromJS(item));
}
if (Array.isArray(_data["alternatives"])) {
this.alternatives = [];
for (let item of _data["alternatives"])
this.alternatives.push(Alternatives.fromJS(item));
}
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Extension();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["requirements"] = this.requirements ? this.requirements.toJSON() : undefined;
if (Array.isArray(this.getStartedMessages)) {
data["getStartedMessages"] = [];
for (let item of this.getStartedMessages)
data["getStartedMessages"].push(item.toJSON());
}
if (Array.isArray(this.runtimes)) {
data["runtimes"] = [];
for (let item of this.runtimes)
data["runtimes"].push(item.toJSON());
}
if (Array.isArray(this.ribbons)) {
data["ribbons"] = [];
for (let item of this.ribbons)
data["ribbons"].push(item.toJSON());
}
if (Array.isArray(this.shortcuts)) {
data["shortcuts"] = [];
for (let item of this.shortcuts)
data["shortcuts"].push(item.toJSON());
}
if (Array.isArray(this.autoRunEvents)) {
data["autoRunEvents"] = [];
for (let item of this.autoRunEvents)
data["autoRunEvents"].push(item.toJSON());
}
if (Array.isArray(this.contextMenus)) {
data["contextMenus"] = [];
for (let item of this.contextMenus)
data["contextMenus"].push(item.toJSON());
}
if (Array.isArray(this.alternatives)) {
data["alternatives"] = [];
for (let item of this.alternatives)
data["alternatives"].push(item.toJSON());
}
return data;
}
}
Mos.Extension = Extension;
class FirstPartyPages {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.id = _data["Id"];
this.title = _data["Title"];
this.subtitle = _data["Subtitle"];
this.alternateNames = _data["AlternateNames"];
this.brandBarText = _data["BrandBarText"];
this.ariaLabel = _data["AriaLabel"];
this.publisher = _data["Publisher"];
this.iconAnonymousUrl = _data["IconAnonymousUrl"];
this.targetWindow = _data["TargetWindow"];
this.backgroundColor = _data["BackgroundColor"];
this.launchFullUrl = _data["LaunchFullUrl"];
this.name = _data["name"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new FirstPartyPages();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["Id"] = this.id;
data["Title"] = this.title;
data["Subtitle"] = this.subtitle;
data["AlternateNames"] = this.alternateNames;
data["BrandBarText"] = this.brandBarText;
data["AriaLabel"] = this.ariaLabel;
data["Publisher"] = this.publisher;
data["IconAnonymousUrl"] = this.iconAnonymousUrl;
data["TargetWindow"] = this.targetWindow;
data["BackgroundColor"] = this.backgroundColor;
data["LaunchFullUrl"] = this.launchFullUrl;
data["name"] = this.name;
return data;
}
}
Mos.FirstPartyPages = FirstPartyPages;
class Permissions {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
if (Array.isArray(_data["orgWide"])) {
this.orgWide = [];
for (let item of _data["orgWide"])
this.orgWide.push(OrgWide.fromJS(item));
}
if (Array.isArray(_data["resourceSpecific"])) {
this.resourceSpecific = [];
for (let item of _data["resourceSpecific"])
this.resourceSpecific.push(ResourceSpecific.fromJS(item));
}
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Permissions();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
if (Array.isArray(this.orgWide)) {
data["orgWide"] = [];
for (let item of this.orgWide)
data["orgWide"].push(item.toJSON());
}
if (Array.isArray(this.resourceSpecific)) {
data["resourceSpecific"] = [];
for (let item of this.resourceSpecific)
data["resourceSpecific"].push(item.toJSON());
}
return data;
}
}
Mos.Permissions = Permissions;
class Requirements {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
if (Array.isArray(_data["scopes"])) {
this.scopes = [];
for (let item of _data["scopes"])
this.scopes.push(item);
}
if (Array.isArray(_data["capabilities"])) {
this.capabilities = [];
for (let item of _data["capabilities"])
this.capabilities.push(Capabilities.fromJS(item));
}
if (Array.isArray(_data["platforms"])) {
this.platforms = [];
for (let item of _data["platforms"])
this.platforms.push(item);
}
if (Array.isArray(_data["formFactors"])) {
this.formFactors = [];
for (let item of _data["formFactors"])
this.formFactors.push(item);
}
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Requirements();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
if (Array.isArray(this.scopes)) {
data["scopes"] = [];
for (let item of this.scopes)
data["scopes"].push(item);
}
if (Array.isArray(this.capabilities)) {
data["capabilities"] = [];
for (let item of this.capabilities)
data["capabilities"].push(item.toJSON());
}
if (Array.isArray(this.platforms)) {
data["platforms"] = [];
for (let item of this.platforms)
data["platforms"].push(item);
}
if (Array.isArray(this.formFactors)) {
data["formFactors"] = [];
for (let item of this.formFactors)
data["formFactors"].push(item);
}
return data;
}
}
Mos.Requirements = Requirements;
class GetStartedMessages {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.requirements = _data["requirements"] ? Requirements.fromJS(_data["requirements"]) : undefined;
this.title = _data["title"];
this.description = _data["description"];
this.learnMoreUrl = _data["learnMoreUrl"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new GetStartedMessages();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["requirements"] = this.requirements ? this.requirements.toJSON() : undefined;
data["title"] = this.title;
data["description"] = this.description;
data["learnMoreUrl"] = this.learnMoreUrl;
return data;
}
}
Mos.GetStartedMessages = GetStartedMessages;
class Runtimes {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
if (!data) {
this.code = new Code();
this.actions = [];
this.functions = [];
this.functionSettings = new FunctionSettings();
}
}
init(_data) {
if (_data) {
this.requirements = _data["requirements"] ? Requirements.fromJS(_data["requirements"]) : undefined;
this.id = _data["id"];
this.type = _data["type"];
this.code = _data["code"] ? Code.fromJS(_data["code"]) : new Code();
this.lifetime = _data["lifetime"];
if (Array.isArray(_data["actions"])) {
this.actions = [];
for (let action of _data["actions"])
this.actions.push(Actions.fromJS(action));
}
if (Array.isArray(_data["functions"])) {
this.functions = [];
for (let item of _data["functions"])
this.functions.push(item);
}
this.functionSettings = _data["functionSettings"] ? FunctionSettings.fromJS(_data["functionSettings"]) : new FunctionSettings();
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Runtimes();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["requirements"] = this.requirements ? this.requirements.toJSON() : undefined;
data["id"] = this.id;
data["type"] = this.type;
data["code"] = this.code ? this.code.toJSON() : undefined;
data["lifetime"] = this.lifetime;
if (Array.isArray(this.actions)) {
data["actions"] = [];
for (let action of this.actions)
data["actions"].push(action.toJSON());
}
if (Array.isArray(this.functions)) {
data["functions"] = [];
for (let item of this.functions)
data["functions"].push(item.toJSON());
}
data["functionSettings"] = this.functionSettings ? this.functionSettings.toJSON() : undefined;
return data;
}
}
Mos.Runtimes = Runtimes;
class Ribbons {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
if (!data) {
this.tabs = [];
}
}
init(_data) {
if (_data) {
this.requirements = _data["requirements"] ? Requirements.fromJS(_data["requirements"]) : undefined;
if (Array.isArray(_data["contexts"])) {
this.contexts = [];
for (let item of _data["contexts"])
this.contexts.push(item);
}
if (Array.isArray(_data["tabs"])) {
this.tabs = [];
for (let item of _data["tabs"])
this.tabs.push(Tabs.fromJS(item));
}
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Ribbons();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["requirements"] = this.requirements ? this.requirements.toJSON() : undefined;
if (Array.isArray(this.contexts)) {
data["contexts"] = [];
for (let item of this.contexts)
data["contexts"].push(item);
}
if (Array.isArray(this.tabs)) {
data["tabs"] = [];
for (let item of this.tabs)
data["tabs"].push(item.toJSON());
}
return data;
}
}
Mos.Ribbons = Ribbons;
class Shortcuts {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
if (!data) {
this.keys = [];
}
}
init(_data) {
if (_data) {
this.requirements = _data["requirements"] ? Requirements.fromJS(_data["requirements"]) : undefined;
if (Array.isArray(_data["keys"])) {
this.keys = [];
for (let item of _data["keys"])
this.keys.push(Keys.fromJS(item));
}
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Shortcuts();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["requirements"] = this.requirements ? this.requirements.toJSON() : undefined;
if (Array.isArray(this.keys)) {
data["shortcuts"] = [];
for (let item of this.keys)
data["shortcuts"].push(item.toJSON());
}
return data;
}
}
Mos.Shortcuts = Shortcuts;
class AutoRunEvents {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
if (!data) {
this.events = [];
}
}
init(_data) {
if (_data) {
this.requirements = _data["requirements"] ? Requirements.fromJS(_data["requirements"]) : undefined;
if (Array.isArray(_data["events"])) {
this.events = [];
for (let item of _data["events"])
this.events.push(Events.fromJS(item));
}
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new AutoRunEvents();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["requirements"] = this.requirements ? this.requirements.toJSON() : undefined;
if (Array.isArray(this.events)) {
data["events"] = [];
for (let item of this.events)
data["events"].push(item.toJSON());
}
return data;
}
}
Mos.AutoRunEvents = AutoRunEvents;
class ContextMenus {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
if (!data) {
this.menus = [];
}
}
init(_data) {
if (_data) {
this.requirements = _data["requirements"] ? Requirements.fromJS(_data["requirements"]) : undefined;
if (Array.isArray(_data["menus"])) {
this.menus = [];
for (let item of _data["menus"])
this.menus.push(Menus.fromJS(item));
}
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new ContextMenus();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["requirements"] = this.requirements ? this.requirements.toJSON() : undefined;
if (Array.isArray(this.menus)) {
data["menus"] = [];
for (let item of this.menus)
data["menus"].push(item.toJSON());
}
return data;
}
}
Mos.ContextMenus = ContextMenus;
class Alternatives {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.requirements = _data["requirements"] ? Requirements.fromJS(_data["requirements"]) : undefined;
this.prefer = _data["prefer"];
this.hide = _data["hide"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Alternatives();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["requirements"] = this.requirements ? this.requirements.toJSON() : undefined;
data["prefer"] = this.prefer;
data["hide"] = this.hide;
return data;
}
}
Mos.Alternatives = Alternatives;
class Subtitle {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Subtitle();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
return data;
}
}
Mos.Subtitle = Subtitle;
class AlternateNames {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new AlternateNames();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
return data;
}
}
Mos.AlternateNames = AlternateNames;
class BrandBarText {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new BrandBarText();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
return data;
}
}
Mos.BrandBarText = BrandBarText;
class TargetWindow {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new TargetWindow();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
return data;
}
}
Mos.TargetWindow = TargetWindow;
class OrgWide {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.name = _data["name"];
this.type = _data["type"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new OrgWide();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["name"] = this.name;
data["type"] = this.type;
return data;
}
}
Mos.OrgWide = OrgWide;
class ResourceSpecific {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.name = _data["name"];
this.type = _data["type"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new ResourceSpecific();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["name"] = this.name;
data["type"] = this.type;
return data;
}
}
Mos.ResourceSpecific = ResourceSpecific;
let Scopes;
(function (Scopes) {
Scopes["Mail"] = "mail";
Scopes["Workbook"] = "workbook";
Scopes["Document"] = "document";
Scopes["Presentation"] = "presentation";
})(Scopes = Mos.Scopes || (Mos.Scopes = {}));
class Capabilities {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.name = _data["name"];
this.minVersion = _data["minVersion"];
this.maxVersion = _data["maxVersion"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Capabilities();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["name"] = this.name;
data["minVersion"] = this.minVersion;
data["maxVersion"] = this.maxVersion;
return data;
}
}
Mos.Capabilities = Capabilities;
let Platforms;
(function (Platforms) {
Platforms["Windows"] = "windows";
Platforms["Mac"] = "mac";
Platforms["Web"] = "web";
Platforms["Ios"] = "ios";
Platforms["Android"] = "android";
})(Platforms = Mos.Platforms || (Mos.Platforms = {}));
let FormFactors;
(function (FormFactors) {
FormFactors["Desktop"] = "desktop";
FormFactors["Tablet"] = "tablet";
FormFactors["Phone"] = "phone";
})(FormFactors = Mos.FormFactors || (Mos.FormFactors = {}));
class Code {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.page = _data["page"];
this.script = _data["script"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Code();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["page"] = this.page;
data["script"] = this.script;
return data;
}
}
Mos.Code = Code;
class Actions {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.id = _data["id"];
this.type = _data["type"];
this.displayName = _data["displayName"];
this.view = _data["view"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Actions();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["id"] = this.id;
data["type"] = this.type;
data["displayName"] = this.displayName;
data["view"] = this.view;
return data;
}
}
Mos.Actions = Actions;
class Functions {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
if (!data) {
this.result = new Result();
this.parameters = [];
}
}
init(_data) {
if (_data) {
this.id = _data["id"];
this.name = _data["name"];
this.description = _data["description"];
if (Array.isArray(_data["parameters"])) {
this.parameters = [];
for (let item of _data["parameters"])
this.parameters.push(Parameters.fromJS(item));
}
this.result = _data["result"] ? Result.fromJS(_data["result"]) : new Result();
this.stream = _data["stream"];
this.volatile = _data["volatile"];
this.cancelable = _data["cancelable"];
this.requiresAddress = _data["requiresAddress"];
this.requiresParameterAddress = _data["requiresParameterAddress"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Functions();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["id"] = this.id;
data["name"] = this.name;
data["description"] = this.description;
if (Array.isArray(this.parameters)) {
data["parameters"] = [];
for (let item of this.parameters)
data["parameters"].push(item.toJSON());
}
data["result"] = this.result ? this.result.toJSON() : undefined;
data["stream"] = this.stream;
data["volatile"] = this.volatile;
data["cancelable"] = this.cancelable;
data["requiresAddress"] = this.requiresAddress;
data["requiresParameterAddress"] = this.requiresParameterAddress;
return data;
}
}
Mos.Functions = Functions;
class FunctionSettings {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
if (!data) {
this.namespace = new Namespace();
}
}
init(_data) {
if (_data) {
this.namespace = _data["namespace"] ? Namespace.fromJS(_data["namespace"]) : new Namespace();
this.allowErrorForDataTypeAny = _data["allowErrorForDataTypeAny"];
this.allowRichDataForDataTypeAny = _data["allowRichDataForDataTypeAny"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new FunctionSettings();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["namespace"] = this.namespace ? this.namespace.toJSON() : undefined;
data["allowErrorForDataTypeAny"] = this.allowErrorForDataTypeAny;
data["allowRichDataForDataTypeAny"] = this.allowRichDataForDataTypeAny;
return data;
}
}
Mos.FunctionSettings = FunctionSettings;
let Contexts;
(function (Contexts) {
Contexts["Default"] = "default";
Contexts["ReadMail"] = "readMail";
Contexts["ComposeMail"] = "composeMail";
Contexts["AppointmentOrganizer"] = "appointmentOrganizer";
Contexts["AppointmentAttendee"] = "appointmentAttendee";
})(Contexts = Mos.Contexts || (Mos.Contexts = {}));
class Tabs {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
if (!data) {
this.groups = [];
}
}
init(_data) {
if (_data) {
this.builtInTabId = _data["builtInTabId"];
this.id = _data["id"];
this.label = _data["label"];
this.position = _data["position"] ? Position.fromJS(_data["position"]) : undefined;
if (Array.isArray(_data["groups"])) {
this.groups = [];
for (let item of _data["groups"])
this.groups.push(Groups.fromJS(item));
}
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Tabs();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["builtInTabId"] = this.builtInTabId;
data["id"] = this.id;
data["label"] = this.label;
data["position"] = this.position ? this.position.toJSON() : undefined;
if (Array.isArray(this.groups)) {
data["groups"] = [];
for (let item of this.groups)
data["groups"].push(item.toJSON());
}
return data;
}
}
Mos.Tabs = Tabs;
class Keys {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.requirements = _data["requirements"] ? Requirements.fromJS(_data["requirements"]) : undefined;
this.key = _data["key"] ? Key.fromJS(_data["key"]) : undefined;
this.actionId = _data["actionId"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Keys();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["requirements"] = this.requirements ? this.requirements.toJSON() : undefined;
data["key"] = this.key ? this.key.toJSON() : undefined;
data["actionId"] = this.actionId;
return data;
}
}
Mos.Keys = Keys;
class Key {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.defaultKey = _data["default"];
this.windows = _data["windows"];
this.mac = _data["mac"];
this.web = _data["web"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Key();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["default"] = this.defaultKey;
data["windows"] = this.windows;
data["mac"] = this.mac;
data["web"] = this.web;
return data;
}
}
Mos.Key = Key;
class Events {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
if (!data) {
this.options = new Options();
}
}
init(_data) {
if (_data) {
this.requirements = _data["requirements"] ? Requirements.fromJS(_data["requirements"]) : undefined;
this.id = _data["id"];
this.actionId = _data["actionId"];
this.options = _data["options"] ? Options.fromJS(_data["options"]) : new Options();
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Events();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["requirements"] = this.requirements ? this.requirements.toJSON() : undefined;
data["id"] = this.id;
data["actionId"] = this.actionId;
data["options"] = this.options ? this.options.toJSON() : undefined;
return data;
}
}
Mos.Events = Events;
class Menus {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
if (!data) {
this.controls = [];
}
}
init(_data) {
if (_data) {
this.type = _data["type"];
if (Array.isArray(_data["controls"])) {
this.controls = [];
for (let item of _data["controls"])
this.controls.push(item);
}
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Menus();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["type"] = this.type;
if (Array.isArray(this.controls)) {
data["controls"] = [];
for (let item of this.controls)
data["controls"].push(item);
}
return data;
}
}
Mos.Menus = Menus;
let OrgWideType;
(function (OrgWideType) {
OrgWideType["Application"] = "Application";
OrgWideType["Delegated"] = "Delegated";
})(OrgWideType = Mos.OrgWideType || (Mos.OrgWideType = {}));
let ResourceSpecificType;
(function (ResourceSpecificType) {
ResourceSpecificType["Application"] = "Application";
ResourceSpecificType["Delegated"] = "Delegated";
})(ResourceSpecificType = Mos.ResourceSpecificType || (Mos.ResourceSpecificType = {}));
class Namespace {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.id = _data["id"];
this.name = _data["name"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Namespace();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["id"] = this.id;
data["name"] = this.name;
return data;
}
}
Mos.Namespace = Namespace;
class Position {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.builtInTabId = _data["builtInTabId"];
this.align = _data["align"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Position();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["builtInTabId"] = this.builtInTabId;
data["align"] = this.align;
return data;
}
}
Mos.Position = Position;
class Groups {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
if (!data) {
this.overriddenByRibbonApi = false;
this.controls = [];
}
}
init(_data) {
if (_data) {
this.overriddenByRibbonApi = _data["overriddenByRibbonApi"] !== undefined ? _data["overriddenByRibbonApi"] : false;
this.builtInGroupId = _data["builtInGroupId"];
this.id = _data["id"];
this.label = _data["label"];
if (Array.isArray(_data["icons"])) {
this.icons = [];
for (let item of _data["icons"])
this.icons.push(Icons.fromJS(item));
}
if (Array.isArray(_data["controls"])) {
this.controls = [];
for (let item of _data["controls"])
this.controls.push(Controls.fromJS(item));
}
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Groups();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["overriddenByRibbonApi"] = this.overriddenByRibbonApi;
data["builtInGroupId"] = this.builtInGroupId;
data["id"] = this.id;
data["label"] = this.label;
if (Array.isArray(this.icons)) {
data["icons"] = [];
for (let item of this.icons)
data["icons"].push(item.toJSON());
}
if (Array.isArray(this.controls)) {
data["controls"] = [];
for (let item of this.controls)
data["controls"].push(item.toJSON());
}
return data;
}
}
Mos.Groups = Groups;
class Options {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.sendMode = _data["sendMode"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Options();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["sendMode"] = this.sendMode;
return data;
}
}
Mos.Options = Options;
let MenusType;
(function (MenusType) {
MenusType["Cell"] = "cell";
MenusType["Text"] = "text";
})(MenusType = Mos.MenusType || (Mos.MenusType = {}));
class Parameters {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.name = _data["name"];
this.description = _data["description"];
this.type = _data["type"];
this.dimensionality = _data["dimensionality"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Parameters();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["name"] = this.name;
data["description"] = this.description;
data["type"] = this.type;
data["dimensionality"] = this.dimensionality;
return data;
}
}
Mos.Parameters = Parameters;
class Result {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.dimensionality = _data["dimensionality"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Result();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["dimensionality"] = this.dimensionality;
return data;
}
}
Mos.Result = Result;
let PositionAlign;
(function (PositionAlign) {
PositionAlign["After"] = "after";
PositionAlign["Before"] = "before";
})(PositionAlign = Mos.PositionAlign || (Mos.PositionAlign = {}));
class Icons {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.size = _data["size"];
this.file = _data["file"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Icons();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["size"] = this.size;
data["file"] = this.file;
return data;
}
}
Mos.Icons = Icons;
class Controls {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
if (!data) {
this.overriddenByRibbonApi = false;
this.enabled = true;
this.icons = [];
this.supertip = new Supertip();
}
}
init(_data) {
if (_data) {
this.overriddenByRibbonApi = _data["overriddenByRibbonApi"] !== undefined ? _data["overriddenByRibbonApi"] : false;
this.builtInControlId = _data["builtInControlId"];
this.id = _data["id"];
this.type = _data["type"];
this.label = _data["label"];
this.enabled = _data["enabled"] !== undefined ? _data["enabled"] : true;
if (Array.isArray(_data["icons"])) {
this.icons = [];
for (let item of _data["icons"])
this.icons.push(Icons.fromJS(item));
}
this.supertip = _data["supertip"] ? Supertip.fromJS(_data["supertip"]) : new Supertip();
this.actionId = _data["actionId"];
if (Array.isArray(_data["items"])) {
this.items = [];
for (let item of _data["items"])
this.items.push(Controls.fromJS((item)));
}
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Controls();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["overriddenByRibbonApi"] = this.overriddenByRibbonApi;
data["builtInControlId"] = this.builtInControlId;
data["id"] = this.id;
data["type"] = this.type;
data["label"] = this.label;
data["enabled"] = this.enabled;
if (Array.isArray(this.icons)) {
data["icons"] = [];
for (let item of this.icons)
data["icons"].push(item.toJSON());
}
data["supertip"] = this.supertip ? this.supertip.toJSON() : undefined;
data["actionId"] = this.actionId;
if (Array.isArray(this.items)) {
data["items"] = [];
for (let item of this.items)
data["items"].push(item.toJSON());
}
return data;
}
}
Mos.Controls = Controls;
let ControlsType;
(function (ControlsType) {
ControlsType["Button"] = "button";
ControlsType["Menu"] = "menu";
})(ControlsType = Mos.ControlsType || (Mos.ControlsType = {}));
class Supertip {
constructor(data) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
this[property] = data[property];
}
}
}
init(_data) {
if (_data) {
this.title = _data["title"];
this.description = _data["description"];
}
}
static fromJS(data) {
data = typeof data === 'object' ? data : {};
let result = new Supertip();
result.init(data);
return result;
}
toJSON(data) {
data = typeof data === 'object' ? data : {};
data["title"] = this.title;
data["description"] = this.description;
return data;
}
}
Mos.Supertip = Supertip;
})(Mos || (Mos = {}));
var OSF;
(function (OSF) {
let ExtendedManifestSupportTokens;
(function (ExtendedManifestSupportTokens) {
ExtendedManifestSupportTokens["Requirements"] = "RequirementsToken";
ExtendedManifestSupportTokens["Locale"] = "LocaleToken";
ExtendedManifestSupportTokens["TokenReplaceRegex"] = "\\$\\{token\\.(\\w+)\\}";
ExtendedManifestSupportTokens["ResourceTokenRegEx"] = "^\\$\\{resource\\.([A-Za-z0-9_-]+)\\}$";
ExtendedManifestSupportTokens["ExtendedManifestLoggingPrefix"] = "Extended Manifest";
ExtendedManifestSupportTokens["ExtendedManifestResourcesLoggingPrefix"] = "Extended Manifest Resources";
ExtendedManifestSupportTokens[ExtendedManifestSupportTokens["ActionIdMaxLength"] = 32] = "ActionIdMaxLength";
ExtendedManifestSupportTokens[ExtendedManifestSupportTokens["ActionNameMaxLength"] = 125] = "ActionNameMaxLength";
})(ExtendedManifestSupportTokens = OSF.ExtendedManifestSupportTokens || (OSF.ExtendedManifestSupportTokens = {}));
let SdxAssetIds;
(function (SdxAssetIds) {
SdxAssetIds["Ideas"] = "fa000000029";
SdxAssetIds["ExperimentationSdx"] = "fa000000059";
SdxAssetIds["CopilotChatExcel"] = "fa000000124";
SdxAssetIds["CopilotChatWord"] = "fa000000125";
SdxAssetIds["CopilotChatOneNote"] = "fa000000128";
SdxAssetIds["CopilotChatPpt"] = "fa000000129";
})(SdxAssetIds = OSF.SdxAssetIds || (OSF.SdxAssetIds = {}));
OSF.DefaultAllowDisplayCaptureSdxIds = [
SdxAssetIds.CopilotChatExcel,
SdxAssetIds.CopilotChatWord,
SdxAssetIds.CopilotChatOneNote,
SdxAssetIds.CopilotChatPpt,
].join(';');
let HostFeatureGateFlags;
(function (HostFeatureGateFlags) {
HostFeatureGateFlags[HostFeatureGateFlags["None"] = 0] = "None";
HostFeatureGateFlags[HostFeatureGateFlags["Enable3rdPartySetAppContextInIFrameName"] = 2] = "Enable3rdPartySetAppContextInIFrameName";
})(HostFeatureGateFlags = OSF.HostFeatureGateFlags || (OSF.HostFeatureGateFlags = {}));
OSF.MaxAppContextLength = 10240;
let HostInfoFlags;
(function (HostInfoFlags) {
HostInfoFlags[HostInfoFlags["None"] = 0] = "None";
HostInfoFlags[HostInfoFlags["SharedApp"] = 1] = "SharedApp";
HostInfoFlags[HostInfoFlags["CustomFunction"] = 2] = "CustomFunction";
HostInfoFlags[HostInfoFlags["ProtectedDocDisable"] = 4] = "ProtectedDocDisable";
HostInfoFlags[HostInfoFlags["ExperimentJsEnabled"] = 8] = "ExperimentJsEnabled";
HostInfoFlags[HostInfoFlags["PublicAddin"] = 16] = "PublicAddin";
HostInfoFlags[HostInfoFlags["IsMos"] = 64] = "IsMos";
HostInfoFlags[HostInfoFlags["IsMonarch"] = 128] = "IsMonarch";
})(HostInfoFlags = OSF.HostInfoFlags || (OSF.HostInfoFlags = {}));
let ManifestRequestTypes;
(function (ManifestRequestTypes) {
ManifestRequestTypes[ManifestRequestTypes["Manifest"] = 1] = "Manifest";
ManifestRequestTypes[ManifestRequestTypes["Etoken"] = 2] = "Etoken";
ManifestRequestTypes[ManifestRequestTypes["Both"] = 3] = "Both";
})(ManifestRequestTypes = OSF.ManifestRequestTypes || (OSF.ManifestRequestTypes = {}));
let ActivationTypes;
(function (ActivationTypes) {
ActivationTypes[ActivationTypes["V1Enabled"] = 0] = "V1Enabled";
ActivationTypes[ActivationTypes["V1S2SEnabled"] = 1] = "V1S2SEnabled";
ActivationTypes[ActivationTypes["V2Enabled"] = 2] = "V2Enabled";
ActivationTypes[ActivationTypes["V2S2SEnabled"] = 3] = "V2S2SEnabled";
})(ActivationTypes = OSF.ActivationTypes || (OSF.ActivationTypes = {}));
let InvokeResultCode;
(function (InvokeResultCode) {
InvokeResultCode[InvokeResultCode["S_OK"] = 0] = "S_OK";
InvokeResultCode[InvokeResultCode["E_REQUEST_TIME_OUT"] = -2147471590] = "E_REQUEST_TIME_OUT";
InvokeResultCode[InvokeResultCode["E_USER_NOT_SIGNED_IN"] = -2147208619] = "E_USER_NOT_SIGNED_IN";
InvokeResultCode[InvokeResultCode["E_CATALOG_ACCESS_DENIED"] = -2147471591] = "E_CATALOG_ACCESS_DENIED";
InvokeResultCode[InvokeResultCode["E_CATALOG_REQUEST_FAILED"] = -2147471589] = "E_CATALOG_REQUEST_FAILED";
InvokeResultCode[InvokeResultCode["E_OEM_NO_NETWORK_CONNECTION"] = -2147208640] = "E_OEM_NO_NETWORK_CONNECTION";
InvokeResultCode[InvokeResultCode["E_PROVIDER_NOT_REGISTERED"] = -2147208617] = "E_PROVIDER_NOT_REGISTERED";
InvokeResultCode[InvokeResultCode["E_OEM_CACHE_SHUTDOWN"] = -2147208637] = "E_OEM_CACHE_SHUTDOWN";
InvokeResultCode[InvokeResultCode["E_OEM_REMOVED_FAILED"] = -2147209421] = "E_OEM_REMOVED_FAILED";
InvokeResultCode[InvokeResultCode["E_CATALOG_NO_APPS"] = -1] = "E_CATALOG_NO_APPS";
InvokeResultCode[InvokeResultCode["E_USER_NO_MAILBOX"] = -2] = "E_USER_NO_MAILBOX";
InvokeResultCode[InvokeResultCode["E_GENERIC_ERROR"] = -1000] = "E_GENERIC_ERROR";
InvokeResultCode[InvokeResultCode["S_HIDE_PROVIDER"] = 10] = "S_HIDE_PROVIDER";
})(InvokeResultCode = OSF.InvokeResultCode || (OSF.InvokeResultCode = {}));
let ErrorStatusCodes;
(function (ErrorStatusCodes) {
ErrorStatusCodes[ErrorStatusCodes["E_OEM_EXTENSION_NOT_ENTITLED"] = 2147758662] = "E_OEM_EXTENSION_NOT_ENTITLED";
ErrorStatusCodes[ErrorStatusCodes["E_MANIFEST_SERVER_UNAVAILABLE"] = 2147758672] = "E_MANIFEST_SERVER_UNAVAILABLE";
ErrorStatusCodes[ErrorStatusCodes["E_USER_NOT_SIGNED_IN"] = 2147758677] = "E_USER_NOT_SIGNED_IN";
ErrorStatusCodes[ErrorStatusCodes["E_MANIFEST_DOES_NOT_EXIST"] = 2147758673] = "E_MANIFEST_DOES_NOT_EXIST";
ErrorStatusCodes[ErrorStatusCodes["E_OEM_EXTENSION_KILLED"] = 2147758660] = "E_OEM_EXTENSION_KILLED";
ErrorStatusCodes[ErrorStatusCodes["E_OEM_OMEX_EXTENSION_KILLED"] = 2147758686] = "E_OEM_OMEX_EXTENSION_KILLED";
ErrorStatusCodes[ErrorStatusCodes["E_MANIFEST_UPDATE_AVAILABLE"] = 2147758681] = "E_MANIFEST_UPDATE_AVAILABLE";
ErrorStatusCodes[ErrorStatusCodes["S_OEM_EXTENSION_TRIAL_MODE"] = 275013] = "S_OEM_EXTENSION_TRIAL_MODE";
ErrorStatusCodes[ErrorStatusCodes["E_OEM_EXTENSION_WITHDRAWN_FROM_SALE"] = 2147758690] = "E_OEM_EXTENSION_WITHDRAWN_FROM_SALE";
ErrorStatusCodes[ErrorStatusCodes["E_TOKEN_EXPIRED"] = 2147758675] = "E_TOKEN_EXPIRED";
ErrorStatusCodes[ErrorStatusCodes["E_TRUSTCENTER_CATALOG_UNTRUSTED_ADMIN_CONTROLLED"] = 2147757992] = "E_TRUSTCENTER_CATALOG_UNTRUSTED_ADMIN_CONTROLLED";
ErrorStatusCodes[ErrorStatusCodes["E_MANIFEST_REFERENCE_INVALID"] = 2147758678] = "E_MANIFEST_REFERENCE_INVALID";
ErrorStatusCodes[ErrorStatusCodes["S_USER_CLICKED_BUY"] = 274205] = "S_USER_CLICKED_BUY";
ErrorStatusCodes[ErrorStatusCodes["E_MANIFEST_INVALID_VALUE_FORMAT"] = 2147758654] = "E_MANIFEST_INVALID_VALUE_FORMAT";
ErrorStatusCodes[ErrorStatusCodes["E_TRUSTCENTER_MOE_UNACTIVATED"] = 2147757996] = "E_TRUSTCENTER_MOE_UNACTIVATED";
ErrorStatusCodes[ErrorStatusCodes["S_OEM_EXTENSION_FLAGGED"] = 275040] = "S_OEM_EXTENSION_FLAGGED";
ErrorStatusCodes[ErrorStatusCodes["S_OEM_EXTENSION_DEVELOPER_WITHDRAWN_FROM_SALE"] = 275041] = "S_OEM_EXTENSION_DEVELOPER_WITHDRAWN_FROM_SALE";
ErrorStatusCodes[ErrorStatusCodes["E_BROWSER_VERSION"] = 2147758194] = "E_BROWSER_VERSION";
ErrorStatusCodes[ErrorStatusCodes["E_TRUSTCENTER_APP_BLOCKED_FOR_MINOR"] = -2147209295] = "E_TRUSTCENTER_APP_BLOCKED_FOR_MINOR";
ErrorStatusCodes[ErrorStatusCodes["E_PRIVACY_SERVICE_DISABLED_ADMIN"] = 2147758792] = "E_PRIVACY_SERVICE_DISABLED_ADMIN";
ErrorStatusCodes[ErrorStatusCodes["WAC_AgaveUnsupportedStoreType"] = 1041] = "WAC_AgaveUnsupportedStoreType";
ErrorStatusCodes[ErrorStatusCodes["WAC_AgaveActivationError"] = 1042] = "WAC_AgaveActivationError";
ErrorStatusCodes[ErrorStatusCodes["WAC_ActivateAttempLoading"] = 1043] = "WAC_ActivateAttempLoading";
ErrorStatusCodes[ErrorStatusCodes["WAC_HTML5IframeSandboxNotSupport"] = 1044] = "WAC_HTML5IframeSandboxNotSupport";
ErrorStatusCodes[ErrorStatusCodes["WAC_AgaveRequirementsErrorOmex"] = 1045] = "WAC_AgaveRequirementsErrorOmex";
ErrorStatusCodes[ErrorStatusCodes["WAC_AgaveRequirementsError"] = 1046] = "WAC_AgaveRequirementsError";
ErrorStatusCodes[ErrorStatusCodes["WAC_AgaveOriginCheckError"] = 1047] = "WAC_AgaveOriginCheckError";
ErrorStatusCodes[ErrorStatusCodes["WAC_AgavePermissionCheckError"] = 1048] = "WAC_AgavePermissionCheckError";
ErrorStatusCodes[ErrorStatusCodes["WAC_AgaveHostHandleRequestError"] = 1049] = "WAC_AgaveHostHandleRequestError";
ErrorStatusCodes[ErrorStatusCodes["WAC_AgaveUnknownClientAppStatus"] = 1050] = "WAC_AgaveUnknownClientAppStatus";
ErrorStatusCodes[ErrorStatusCodes["WAC_AgaveAnonymousProxyCreationError"] = 1051] = "WAC_AgaveAnonymousProxyCreationError";
ErrorStatusCodes[ErrorStatusCodes["WAC_AgaveOsfControlActivationError"] = 1052] = "WAC_AgaveOsfControlActivationError";
ErrorStatusCodes[ErrorStatusCodes["WAC_AgaveEntitlementRequestFailure"] = 1053] = "WAC_AgaveEntitlementRequestFailure";
ErrorStatusCodes[ErrorStatusCodes["WAC_AgaveManifestRequestFailure"] = 1054] = "WAC_AgaveManifestRequestFailure";
ErrorStatusCodes[ErrorStatusCodes["WAC_AgaveManifestAndEtokenRequestFailure"] = 1055] = "WAC_AgaveManifestAndEtokenRequestFailure";
ErrorStatusCodes[ErrorStatusCodes["WAC_FirstPartyAddInListRequestFailure"] = 1056] = "WAC_FirstPartyAddInListRequestFailure";
ErrorStatusCodes[ErrorStatusCodes["WAC_SDX_DMSRequestFailed"] = 1058] = "WAC_SDX_DMSRequestFailed";
ErrorStatusCodes[ErrorStatusCodes["WAC_SDX_AssetIdNotInDMSResponse"] = 1059] = "WAC_SDX_AssetIdNotInDMSResponse";
ErrorStatusCodes[ErrorStatusCodes["WAC_CustomFunctionsRegistrationError"] = 1060] = "WAC_CustomFunctionsRegistrationError";
ErrorStatusCodes[ErrorStatusCodes["WAC_WopiHostCheckStatusNotTrusted"] = 1061] = "WAC_WopiHostCheckStatusNotTrusted";
ErrorStatusCodes[ErrorStatusCodes["WAC_WopiHostCheckStatusNotReady"] = 1062] = "WAC_WopiHostCheckStatusNotReady";
ErrorStatusCodes[ErrorStatusCodes["WAC_AgaveIRMBlockError"] = 1063] = "WAC_AgaveIRMBlockError";
})(ErrorStatusCodes = OSF.ErrorStatusCodes || (OSF.ErrorStatusCodes = {}));
let BWsaConfig;
(function (BWsaConfig) {
BWsaConfig[BWsaConfig["defaultMaxStreamRows"] = 1000] = "defaultMaxStreamRows";
})(BWsaConfig = OSF.BWsaConfig || (OSF.BWsaConfig = {}));
let BWsaStreamTypes;
(function (BWsaStreamTypes) {
BWsaStreamTypes[BWsaStreamTypes["Static"] = 1] = "Static";
})(BWsaStreamTypes = OSF.BWsaStreamTypes || (OSF.BWsaStreamTypes = {}));
let SQMDataPoints;
(function (SQMDataPoints) {
SQMDataPoints[SQMDataPoints["DATAID_APPSFOROFFICEUSAGE"] = 10595] = "DATAID_APPSFOROFFICEUSAGE";
SQMDataPoints[SQMDataPoints["DATAID_APPSFOROFFICENOTIFICATIONS"] = 10942] = "DATAID_APPSFOROFFICENOTIFICATIONS";
})(SQMDataPoints = OSF.SQMDataPoints || (OSF.SQMDataPoints = {}));
let ClientAppInfoReturnType;
(function (ClientAppInfoReturnType) {
ClientAppInfoReturnType[ClientAppInfoReturnType["urlOnly"] = 0] = "urlOnly";
ClientAppInfoReturnType[ClientAppInfoReturnType["etokenOnly"] = 1] = "etokenOnly";
ClientAppInfoReturnType[ClientAppInfoReturnType["both"] = 2] = "both";
})(ClientAppInfoReturnType = OSF.ClientAppInfoReturnType || (OSF.ClientAppInfoReturnType = {}));
let HostFrameTrustState;
(function (HostFrameTrustState) {
HostFrameTrustState[HostFrameTrustState["NotInitialized"] = 0] = "NotInitialized";
HostFrameTrustState[HostFrameTrustState["NotImplemented"] = 1] = "NotImplemented";
HostFrameTrustState[HostFrameTrustState["NotReady"] = 2] = "NotReady";
HostFrameTrustState[HostFrameTrustState["Exempted"] = 3] = "Exempted";
HostFrameTrustState[HostFrameTrustState["NotTrusted"] = 4] = "NotTrusted";
HostFrameTrustState[HostFrameTrustState["Trusted"] = 5] = "Trusted";
})(HostFrameTrustState = OSF.HostFrameTrustState || (OSF.HostFrameTrustState = {}));
let UpnCheckCode;
(function (UpnCheckCode) {
UpnCheckCode[UpnCheckCode["NotSet"] = 0] = "NotSet";
UpnCheckCode[UpnCheckCode["Match"] = 1] = "Match";
UpnCheckCode[UpnCheckCode["NotMatch"] = 2] = "NotMatch";
})(UpnCheckCode = OSF.UpnCheckCode || (OSF.UpnCheckCode = {}));
let ProxyCallStatusCode;
(function (ProxyCallStatusCode) {
ProxyCallStatusCode[ProxyCallStatusCode["Succeeded"] = 1] = "Succeeded";
ProxyCallStatusCode[ProxyCallStatusCode["Failed"] = 0] = "Failed";
ProxyCallStatusCode[ProxyCallStatusCode["ProxyNotReady"] = -1] = "ProxyNotReady";
})(ProxyCallStatusCode = OSF.ProxyCallStatusCode || (OSF.ProxyCallStatusCode = {}));
let FormFactor;
(function (FormFactor) {
FormFactor["Default"] = "DefaultSettings";
FormFactor["Desktop"] = "DesktopSettings";
FormFactor["Tablet"] = "TabletSettings";
FormFactor["Phone"] = "PhoneSettings";
})(FormFactor = OSF.FormFactor || (OSF.FormFactor = {}));
let OsfControlTarget;
(function (OsfControlTarget) {
OsfControlTarget[OsfControlTarget["Undefined"] = -1] = "Undefined";
OsfControlTarget[OsfControlTarget["InContent"] = 0] = "InContent";
OsfControlTarget[OsfControlTarget["TaskPane"] = 1] = "TaskPane";
OsfControlTarget[OsfControlTarget["Contextual"] = 2] = "Contextual";
OsfControlTarget[OsfControlTarget["SDXDialog"] = 3] = "SDXDialog";
})(OsfControlTarget = OSF.OsfControlTarget || (OSF.OsfControlTarget = {}));
let OfficeAppType;
(function (OfficeAppType) {
OfficeAppType[OfficeAppType["ContentApp"] = 0] = "ContentApp";
OfficeAppType[OfficeAppType["TaskPaneApp"] = 1] = "TaskPaneApp";
OfficeAppType[OfficeAppType["MailApp"] = 2] = "MailApp";
OfficeAppType[OfficeAppType["SDXDialogApp"] = 3] = "SDXDialogApp";
})(OfficeAppType = OSF.OfficeAppType || (OSF.OfficeAppType = {}));
let OmexRemoveAppStatus;
(function (OmexRemoveAppStatus) {
OmexRemoveAppStatus[OmexRemoveAppStatus["Failed"] = 0] = "Failed";
OmexRemoveAppStatus[OmexRemoveAppStatus["Success"] = 1] = "Success";
})(OmexRemoveAppStatus = OSF.OmexRemoveAppStatus || (OSF.OmexRemoveAppStatus = {}));
let OmexAuthNStatus;
(function (OmexAuthNStatus) {
OmexAuthNStatus[OmexAuthNStatus["NotAttempted"] = -1] = "NotAttempted";
OmexAuthNStatus[OmexAuthNStatus["CheckFailed"] = 0] = "CheckFailed";
OmexAuthNStatus[OmexAuthNStatus["Authenticated"] = 1] = "Authenticated";
OmexAuthNStatus[OmexAuthNStatus["Anonymous"] = 2] = "Anonymous";
OmexAuthNStatus[OmexAuthNStatus["Unknown"] = 3] = "Unknown";
})(OmexAuthNStatus = OSF.OmexAuthNStatus || (OSF.OmexAuthNStatus = {}));
let OmexEntitlementType;
(function (OmexEntitlementType) {
OmexEntitlementType["Free"] = "free";
OmexEntitlementType["Trial"] = "trial";
OmexEntitlementType["Paid"] = "paid";
})(OmexEntitlementType = OSF.OmexEntitlementType || (OSF.OmexEntitlementType = {}));
let OmexTrialType;
(function (OmexTrialType) {
OmexTrialType[OmexTrialType["None"] = 0] = "None";
OmexTrialType[OmexTrialType["Office"] = 1] = "Office";
OmexTrialType[OmexTrialType["External"] = 2] = "External";
})(OmexTrialType = OSF.OmexTrialType || (OSF.OmexTrialType = {}));
let OmexState;
(function (OmexState) {
OmexState[OmexState["Killed"] = 0] = "Killed";
OmexState[OmexState["OK"] = 1] = "OK";
OmexState[OmexState["Withdrawn"] = 2] = "Withdrawn";
OmexState[OmexState["Flagged"] = 3] = "Flagged";
OmexState[OmexState["DeveloperWithdrawn"] = 4] = "DeveloperWithdrawn";
})(OmexState = OSF.OmexState || (OSF.OmexState = {}));
let OmexClientAppStatus;
(function (OmexClientAppStatus) {
OmexClientAppStatus[OmexClientAppStatus["OK"] = 1] = "OK";
OmexClientAppStatus[OmexClientAppStatus["UnknownAssetId"] = 2] = "UnknownAssetId";
OmexClientAppStatus[OmexClientAppStatus["KilledAsset"] = 3] = "KilledAsset";
OmexClientAppStatus[OmexClientAppStatus["NoEntitlement"] = 4] = "NoEntitlement";
OmexClientAppStatus[OmexClientAppStatus["DownloadsExceeded"] = 5] = "DownloadsExceeded";
OmexClientAppStatus[OmexClientAppStatus["Expired"] = 6] = "Expired";
OmexClientAppStatus[OmexClientAppStatus["Invalid"] = 7] = "Invalid";
OmexClientAppStatus[OmexClientAppStatus["Revoked"] = 8] = "Revoked";
OmexClientAppStatus[OmexClientAppStatus["ServerError"] = 9] = "ServerError";
OmexClientAppStatus[OmexClientAppStatus["BadRequest"] = 10] = "BadRequest";
OmexClientAppStatus[OmexClientAppStatus["LimitedTrial"] = 11] = "LimitedTrial";
OmexClientAppStatus[OmexClientAppStatus["TrialNotSupported"] = 12] = "TrialNotSupported";
OmexClientAppStatus[OmexClientAppStatus["EntitlementDeactivated"] = 13] = "EntitlementDeactivated";
OmexClientAppStatus[OmexClientAppStatus["VersionMismatch"] = 14] = "VersionMismatch";
OmexClientAppStatus[OmexClientAppStatus["VersionNotSupported"] = 15] = "VersionNotSupported";
OmexClientAppStatus[OmexClientAppStatus["UserIsMinor"] = 16] = "UserIsMinor";
})(OmexClientAppStatus = OSF.OmexClientAppStatus || (OSF.OmexClientAppStatus = {}));
let ManifestIdIssuer;
(function (ManifestIdIssuer) {
ManifestIdIssuer["Microsoft"] = "Microsoft";
ManifestIdIssuer["Custom"] = "Custom";
})(ManifestIdIssuer = OSF.ManifestIdIssuer || (OSF.ManifestIdIssuer = {}));
let StoreTypeEnum;
(function (StoreTypeEnum) {
StoreTypeEnum[StoreTypeEnum["MarketPlace"] = 0] = "MarketPlace";
StoreTypeEnum[StoreTypeEnum["Catalog"] = 1] = "Catalog";
StoreTypeEnum[StoreTypeEnum["SPApp"] = 2] = "SPApp";
StoreTypeEnum[StoreTypeEnum["Exchange"] = 3] = "Exchange";
StoreTypeEnum[StoreTypeEnum["FileSystem"] = 4] = "FileSystem";
StoreTypeEnum[StoreTypeEnum["Registry"] = 5] = "Registry";
StoreTypeEnum[StoreTypeEnum["PrivateCatalog"] = 10] = "PrivateCatalog";
StoreTypeEnum[StoreTypeEnum["HardCodedPreinstall"] = 11] = "HardCodedPreinstall";
StoreTypeEnum[StoreTypeEnum["FirstParty"] = 12] = "FirstParty";
StoreTypeEnum[StoreTypeEnum["Sdx"] = 14] = "Sdx";
StoreTypeEnum[StoreTypeEnum["UploadFileDevCatalog"] = 15] = "UploadFileDevCatalog";
StoreTypeEnum[StoreTypeEnum["WopiCatalog"] = 16] = "WopiCatalog";
})(StoreTypeEnum = OSF.StoreTypeEnum || (OSF.StoreTypeEnum = {}));
let StoreType;
(function (StoreType) {
StoreType["OMEX"] = "omex";
StoreType["SPCatalog"] = "spcatalog";
StoreType["SPApp"] = "spapp";
StoreType["Exchange"] = "exchange";
StoreType["FileSystem"] = "filesystem";
StoreType["Registry"] = "registry";
StoreType["InMemory"] = "inmemory";
StoreType["PrivateCatalog"] = "excatalog";
StoreType["HardCodedPreinstall"] = "hardcodedpreinstall";
StoreType["FirstParty"] = "firstparty";
StoreType["UploadFileDevCatalog"] = "uploadfiledevcatalog";
StoreType["Sdx"] = "sdxcatalog";
StoreType["WopiCatalog"] = "wopicatalog";
})(StoreType = OSF.StoreType || (OSF.StoreType = {}));
let OsfControlPageStatus;
(function (OsfControlPageStatus) {
OsfControlPageStatus[OsfControlPageStatus["NotStarted"] = 1] = "NotStarted";
OsfControlPageStatus[OsfControlPageStatus["Loading"] = 2] = "Loading";
OsfControlPageStatus[OsfControlPageStatus["Ready"] = 3] = "Ready";
OsfControlPageStatus[OsfControlPageStatus["FailedHandleRequest"] = 4] = "FailedHandleRequest";
OsfControlPageStatus[OsfControlPageStatus["FailedOriginCheck"] = 5] = "FailedOriginCheck";
OsfControlPageStatus[OsfControlPageStatus["FailedPermissionCheck"] = 6] = "FailedPermissionCheck";
})(OsfControlPageStatus = OSF.OsfControlPageStatus || (OSF.OsfControlPageStatus = {}));
let OsfControlStatus;
(function (OsfControlStatus) {
OsfControlStatus[OsfControlStatus["NotActivated"] = 1] = "NotActivated";
OsfControlStatus[OsfControlStatus["Activated"] = 2] = "Activated";
OsfControlStatus[OsfControlStatus["AppStoreNotReachable"] = 3] = "AppStoreNotReachable";
OsfControlStatus[OsfControlStatus["InvalidOsfControl"] = 4] = "InvalidOsfControl";
OsfControlStatus[OsfControlStatus["UnsupportedStore"] = 5] = "UnsupportedStore";
OsfControlStatus[OsfControlStatus["UnknownStore"] = 6] = "UnknownStore";
OsfControlStatus[OsfControlStatus["ActivationFailed"] = 7] = "ActivationFailed";
OsfControlStatus[OsfControlStatus["NotSandBoxSupported"] = 8] = "NotSandBoxSupported";
})(OsfControlStatus = OSF.OsfControlStatus || (OSF.OsfControlStatus = {}));
let OsfControlPermission;
(function (OsfControlPermission) {
OsfControlPermission[OsfControlPermission["Restricted"] = 1] = "Restricted";
OsfControlPermission[OsfControlPermission["ReadDocument"] = 2] = "ReadDocument";
OsfControlPermission[OsfControlPermission["WriteDocument"] = 4] = "WriteDocument";
OsfControlPermission[OsfControlPermission["ReadItem"] = 32] = "ReadItem";
OsfControlPermission[OsfControlPermission["ReadWriteMailbox"] = 64] = "ReadWriteMailbox";
OsfControlPermission[OsfControlPermission["ReadAllDocument"] = 131] = "ReadAllDocument";
OsfControlPermission[OsfControlPermission["ReadWriteDocument"] = 135] = "ReadWriteDocument";
OsfControlPermission[OsfControlPermission["ReadWriteItem"] = 256] = "ReadWriteItem";
})(OsfControlPermission = OSF.OsfControlPermission || (OSF.OsfControlPermission = {}));
let Capability;
(function (Capability) {
Capability["Mailbox"] = "Mailbox";
Capability["Document"] = "Document";
Capability["Workbook"] = "Workbook";
Capability["Project"] = "Project";
Capability["Presentation"] = "Presentation";
Capability["Database"] = "Database";
Capability["Sway"] = "Sway";
Capability["Notebook"] = "Notebook";
Capability["Drawing"] = "Drawing";
})(Capability = OSF.Capability || (OSF.Capability = {}));
let HostCapability;
(function (HostCapability) {
HostCapability["Excel"] = "Workbook";
HostCapability["Outlook"] = "Mailbox";
HostCapability["Access"] = "Database";
HostCapability["PowerPoint"] = "Presentation";
HostCapability["Word"] = "Document";
HostCapability["Sway"] = "Sway";
HostCapability["OneNote"] = "Notebook";
HostCapability["Visio"] = "Drawing";
})(HostCapability = OSF.HostCapability || (OSF.HostCapability = {}));
OSF.getManifestHostType = function OSF$getManifestHostType(hostType) {
var manifestHostType;
switch (hostType) {
case OSF.HostType.Excel:
manifestHostType = OSF.ManifestHostType.Workbook;
break;
case OSF.HostType.Word:
manifestHostType = OSF.ManifestHostType.Document;
break;
case OSF.HostType.PowerPoint:
manifestHostType = OSF.ManifestHostType.Presentation;
break;
case OSF.HostType.OneNote:
manifestHostType = OSF.ManifestHostType.Notebook;
break;
case OSF.HostType.Outlook:
manifestHostType = OSF.ManifestHostType.Mailbox;
break;
case OSF.HostType.Visio:
manifestHostType = OSF.ManifestHostType.Drawing;
break;
default:
OsfMsAjaxFactory.msAjaxDebug.trace("Invalid host type.");
throw "Invalid hostType.";
}
return manifestHostType;
};
OSF.getManifestHostTypeFromAppName = function OSF$getModernAppVerCode(appName) {
var manifestHostType;
switch (appName) {
case OSF.AppName.ExcelWebApp:
manifestHostType = OSF.ManifestHostType.Workbook;
break;
case OSF.AppName.PowerpointWebApp:
manifestHostType = OSF.ManifestHostType.Presentation;
break;
case OSF.AppName.WordWebApp:
manifestHostType = OSF.ManifestHostType.Document;
break;
case OSF.AppName.OneNoteWebApp:
manifestHostType = OSF.ManifestHostType.Notebook;
break;
case OSF.AppName.OutlookWebApp:
manifestHostType = OSF.ManifestHostType.Mailbox;
break;
case OSF.AppName.VisioWebApp:
manifestHostType = OSF.ManifestHostType.Drawing;
break;
default:
OsfMsAjaxFactory.msAjaxDebug.trace("Invalid appName.");
throw "Invalid appName.";
}
return manifestHostType;
};
OSF.getModernAppVerCode = function OSF$getModernAppVerCode(appName) {
var appModernVerCode;
switch (appName) {
case OSF.AppName.ExcelWebApp:
appModernVerCode = "WAC_Excel";
break;
case OSF.AppName.PowerpointWebApp:
appModernVerCode = "WAC_PowerPoint";
break;
case OSF.AppName.WordWebApp:
appModernVerCode = "WAC_Word";
break;
case OSF.AppName.OneNoteWebApp:
appModernVerCode = "WAC_OneNote";
break;
case OSF.AppName.OutlookWebApp:
appModernVerCode = "WAC_Outlook";
break;
case OSF.AppName.VisioWebApp:
appModernVerCode = "WAC_Visio";
break;
default:
OsfMsAjaxFactory.msAjaxDebug.trace("Invalid appName.");
throw "Invalid appName.";
}
return appModernVerCode;
};
OSF.getAppVerCode = function OSF$getAppVerCode(appName) {
var appVerCode;
switch (appName) {
case OSF.AppName.ExcelWebApp:
appVerCode = "excel.exe";
break;
case OSF.AppName.AccessWebApp:
appVerCode = "ZAC";
break;
case OSF.AppName.PowerpointWebApp:
appVerCode = "WAP";
break;
case OSF.AppName.WordWebApp:
appVerCode = "WAW";
break;
case OSF.AppName.OneNoteWebApp:
appVerCode = "WAO";
break;
case OSF.AppName.VisioWebApp:
appVerCode = "WAV";
break;
default:
OsfMsAjaxFactory.msAjaxDebug.trace("Invalid appName.");
throw "Invalid appName.";
}
return appVerCode;
};
let HostPlatform;
(function (HostPlatform) {
HostPlatform["Web"] = "Web";
})(HostPlatform = OSF.HostPlatform || (OSF.HostPlatform = {}));
let ManifestHostType;
(function (ManifestHostType) {
ManifestHostType["Workbook"] = "Workbook";
ManifestHostType["Document"] = "Document";
ManifestHostType["Presentation"] = "Presentation";
ManifestHostType["Notebook"] = "Notebook";
ManifestHostType["Mailbox"] = "Mailbox";
ManifestHostType["Drawing"] = "Drawing";
})(ManifestHostType = OSF.ManifestHostType || (OSF.ManifestHostType = {}));
let HostType;
(function (HostType) {
HostType["Excel"] = "Excel";
HostType["Outlook"] = "Outlook";
HostType["Access"] = "Access";
HostType["PowerPoint"] = "PowerPoint";
HostType["Word"] = "Word";
HostType["Sway"] = "Sway";
HostType["OneNote"] = "OneNote";
HostType["Visio"] = "Visio";
})(HostType = OSF.HostType || (OSF.HostType = {}));
OSF.OmexAppVersions = (function OSF_OmexAppVersions() {
var nameMap = {}, appNameList = OSF.AppName;
nameMap[appNameList.ExcelWebApp] = OSF.AppVersion.excelwebapp;
nameMap[appNameList.WordWebApp] = OSF.AppVersion.wordwebapp;
nameMap[appNameList.OutlookWebApp] = OSF.AppVersion.outlookwebapp;
nameMap[appNameList.AccessWebApp] = OSF.AppVersion.access;
nameMap[appNameList.PowerpointWebApp] = OSF.AppVersion.powerpointwebapp;
nameMap[appNameList.OneNoteWebApp] = OSF.AppVersion.onenotewebapp;
nameMap[appNameList.VisioWebApp] = OSF.AppVersion.visiowebapp;
return nameMap;
})();
OSF.OmexClientNames = (function OSF_OmexClientNames() {
var nameMap = {}, appNameList = OSF.AppName;
nameMap[appNameList.ExcelWebApp] = "WAC_Excel";
nameMap[appNameList.WordWebApp] = "WAC_Word";
nameMap[appNameList.OutlookWebApp] = "WAC_Outlook";
nameMap[appNameList.AccessWebApp] = "WAC_Access";
nameMap[appNameList.PowerpointWebApp] = "WAC_Powerpoint";
nameMap[appNameList.OneNoteWebApp] = "WAC_OneNote";
nameMap[appNameList.VisioWebApp] = "WAC_Visio";
return nameMap;
})();
let HttpVerb;
(function (HttpVerb) {
HttpVerb["GET"] = "GET";
HttpVerb["POST"] = "POST";
HttpVerb["DELETE"] = "DELETE";
HttpVerb["PUT"] = "PUT";
})(HttpVerb = OSF.HttpVerb || (OSF.HttpVerb = {}));
let PayloadType;
(function (PayloadType) {
PayloadType[PayloadType["OfficeAddin"] = 1] = "OfficeAddin";
PayloadType[PayloadType["MosAcquisition"] = 2] = "MosAcquisition";
})(PayloadType = OSF.PayloadType || (OSF.PayloadType = {}));
let TitleScope;
(function (TitleScope) {
TitleScope["Public"] = "Public";
TitleScope["Tenant"] = "Tenant";
TitleScope["User"] = "User";
})(TitleScope = OSF.TitleScope || (OSF.TitleScope = {}));
let AcquisitionAcquiredState;
(function (AcquisitionAcquiredState) {
AcquisitionAcquiredState["Acquired"] = "acquired";
AcquisitionAcquiredState["Unacquired"] = "unacquired";
AcquisitionAcquiredState["NeedsConsentForUpgrade"] = "needsconsentforupgrade";
})(AcquisitionAcquiredState = OSF.AcquisitionAcquiredState || (OSF.AcquisitionAcquiredState = {}));
let VersionOverridesNumber;
(function (VersionOverridesNumber) {
VersionOverridesNumber[VersionOverridesNumber["V1_0"] = 100] = "V1_0";
VersionOverridesNumber[VersionOverridesNumber["V1_1"] = 101] = "V1_1";
VersionOverridesNumber[VersionOverridesNumber["Max"] = 102] = "Max";
})(VersionOverridesNumber = OSF.VersionOverridesNumber || (OSF.VersionOverridesNumber = {}));
let VersionOverridesNamespace;
(function (VersionOverridesNamespace) {
VersionOverridesNamespace["V1_0"] = "http://schemas.microsoft.com/office/mailappversionoverrides";
VersionOverridesNamespace["V1_1"] = "http://schemas.microsoft.com/office/mailappversionoverrides/1.1";
})(VersionOverridesNamespace = OSF.VersionOverridesNamespace || (OSF.VersionOverridesNamespace = {}));
let ParserStrings;
(function (ParserStrings) {
ParserStrings["DesktopFormFactor"] = "DesktopFormFactor";
ParserStrings["Form"] = "Form";
ParserStrings["FormSettings"] = "FormSettings";
ParserStrings["MobileFormFactor"] = "MobileFormFactor";
ParserStrings["OOfficeApp"] = "o:OfficeApp";
ParserStrings["RequestedHeight"] = "RequestedHeight";
ParserStrings["Resources"] = "Resources";
ParserStrings["SourceLocation"] = "SourceLocation";
ParserStrings["VersionOverrides"] = "VersionOverrides";
ParserStrings["Mailappor"] = "mailappor:";
})(ParserStrings = OSF.ParserStrings || (OSF.ParserStrings = {}));
let PowerPointSlideShowRole;
(function (PowerPointSlideShowRole) {
PowerPointSlideShowRole[PowerPointSlideShowRole["Attendee"] = 0] = "Attendee";
PowerPointSlideShowRole[PowerPointSlideShowRole["Presenter"] = 1] = "Presenter";
PowerPointSlideShowRole[PowerPointSlideShowRole["PrivateViewing"] = 2] = "PrivateViewing";
})(PowerPointSlideShowRole = OSF.PowerPointSlideShowRole || (OSF.PowerPointSlideShowRole = {}));
let PowerPointSlideShowUIHostType;
(function (PowerPointSlideShowUIHostType) {
PowerPointSlideShowUIHostType[PowerPointSlideShowUIHostType["UnifiedApp"] = 0] = "UnifiedApp";
PowerPointSlideShowUIHostType[PowerPointSlideShowUIHostType["MSTeams"] = 1] = "MSTeams";
PowerPointSlideShowUIHostType[PowerPointSlideShowUIHostType["TeamsiOS"] = 2] = "TeamsiOS";
PowerPointSlideShowUIHostType[PowerPointSlideShowUIHostType["TeamsAndroid"] = 3] = "TeamsAndroid";
PowerPointSlideShowUIHostType[PowerPointSlideShowUIHostType["Unknown"] = 4] = "Unknown";
})(PowerPointSlideShowUIHostType = OSF.PowerPointSlideShowUIHostType || (OSF.PowerPointSlideShowUIHostType = {}));
})(OSF || (OSF = {}));
var OfficeExt;
(function (OfficeExt) {
class ManifestUtil {
static versionLessThan(version1, version2) {
return OSF.OsfManifestManager.versionLessThan(version1, version2);
}
static ParseManifest(para, uiLocale, correlation) {
try {
return new OSF.Manifest.Manifest(para, uiLocale);
}
catch (ex) {
Telemetry.RuntimeTelemetryHelper.LogExceptionTag("Invalid manifest:", ex, correlation, 0x1f01139f);
return null;
}
}
static constructAddInId(solutionId, version, storeTypeName, storeLocation) {
const addinIdFormat = "{0}|{1}|{2}|{3}|{4}|||";
const addinIdFormatVersion = "2";
return OfficeExt.MsAjaxString.format(addinIdFormat, addinIdFormatVersion, solutionId, version, this.GetStoreTypeId(storeTypeName).toString(), storeLocation);
}
static GetStoreTypeId(storeTypeName) {
if (storeTypeName == OSF.StoreType.OMEX) {
return OSF.StoreTypeEnum.MarketPlace;
}
else if (storeTypeName == OSF.StoreType.SPCatalog) {
return OSF.StoreTypeEnum.Catalog;
}
else if (storeTypeName == OSF.StoreType.SPApp) {
return OSF.StoreTypeEnum.SPApp;
}
else if (storeTypeName == OSF.StoreType.Exchange) {
return OSF.StoreTypeEnum.Exchange;
}
else if (storeTypeName == OSF.StoreType.FileSystem) {
return OSF.StoreTypeEnum.FileSystem;
}
else if (storeTypeName == OSF.StoreType.Registry) {
return OSF.StoreTypeEnum.Registry;
}
else if (storeTypeName == OSF.StoreType.PrivateCatalog) {
return OSF.StoreTypeEnum.PrivateCatalog;
}
else if (storeTypeName == OSF.StoreType.HardCodedPreinstall) {
return OSF.StoreTypeEnum.HardCodedPreinstall;
}
else if (storeTypeName == OSF.StoreType.FirstParty) {
return OSF.StoreTypeEnum.FirstParty;
}
else if (storeTypeName == OSF.StoreType.UploadFileDevCatalog) {
return OSF.StoreTypeEnum.UploadFileDevCatalog;
}
else if (storeTypeName == OSF.StoreType.WopiCatalog) {
return OSF.StoreTypeEnum.WopiCatalog;
}
return -1;
}
static GetStoreTypeName(storeType) {
var storeTypeId = parseInt(storeType);
if (storeTypeId == OSF.StoreTypeEnum.MarketPlace) {
return OSF.StoreType.OMEX;
}
else if (storeTypeId == OSF.StoreTypeEnum.Catalog) {
return OSF.StoreType.SPCatalog;
}
else if (storeTypeId == OSF.StoreTypeEnum.SPApp) {
return OSF.StoreType.SPApp;
}
else if (storeTypeId == OSF.StoreTypeEnum.Exchange) {
return OSF.StoreType.Exchange;
}
else if (storeTypeId == OSF.StoreTypeEnum.FileSystem) {
return OSF.StoreType.FileSystem;
}
else if (storeTypeId == OSF.StoreTypeEnum.Registry) {
return OSF.StoreType.Registry;
}
else if (storeTypeId == OSF.StoreTypeEnum.PrivateCatalog) {
return OSF.StoreType.PrivateCatalog;
}
else if (storeTypeId == OSF.StoreTypeEnum.HardCodedPreinstall) {
return OSF.StoreType.HardCodedPreinstall;
}
else if (storeTypeId == OSF.StoreTypeEnum.FirstParty) {
return OSF.StoreType.FirstParty;
}
else if (storeTypeId == OSF.StoreTypeEnum.UploadFileDevCatalog) {
return OSF.StoreType.UploadFileDevCatalog;
}
else if (storeTypeId == OSF.StoreTypeEnum.WopiCatalog) {
return OSF.StoreType.WopiCatalog;
}
return null;
}
}
OfficeExt.ManifestUtil = ManifestUtil;
class AsyncUtil {
static failed(result, onComplete, value) {
if (result.status != OfficeExt.DataServiceResultCode.Succeeded) {
var r = { status: result.status, httpStatus: result.httpStatus };
if (value != null) {
r.value = value;
}
onComplete(r);
return true;
}
return false;
}
static retry(operation, options = {}) {
const { retries = 3, factor = 2, minTimeout = 300, maxTimeout = Infinity } = options;
return new Promise((resolve, reject) => {
const attempt = (count) => {
operation().then(resolve, err => {
if (count >= retries) {
reject(err);
return;
}
setTimeout(() => attempt(count + 1), Math.min(minTimeout * Math.pow(factor, count), maxTimeout));
});
};
attempt(0);
});
}
static limitRate(func, wait) {
const taskQueue = [];
let lastRunTask = -Infinity;
const runTaskQueue = () => {
const args = taskQueue.shift();
if (taskQueue.length > 0) {
setTimeout(runTaskQueue, wait);
}
lastRunTask = performance.now();
func(...args);
};
return (...args) => {
if (taskQueue.length === 0) {
setTimeout(runTaskQueue, Math.max(0, wait - (performance.now() - lastRunTask)));
}
taskQueue.push(args);
};
}
static withCache(cacheKey, options, operation) {
const { forceUpdateCache = false, maxAgeInSecs = 60 * 60 * 24 * 3, useStaleCache = false } = options;
if (!forceUpdateCache && AsyncUtil.Cache.hasOwnProperty(cacheKey)) {
return Promise.resolve({
cacheType: 'memory',
value: AsyncUtil.Cache[cacheKey]
});
}
const cacheKeyWithPrefix = `__OSF_AsyncCache_${cacheKey}`;
const cacheKeyWithPrefixStale = `__OSF_AsyncCache_${cacheKey}_stale`;
const expiriesKey = `__OSF_AsyncCacheExpiry`;
const now = Date.now();
if (OSF.OUtil.getLocalStorage().isLocalStorageAvailable()) {
try {
if (now >= AsyncUtil.NextCheckExpiry) {
const expiries = JSON.parse(localStorage.getItem(expiriesKey)) || {};
let needUpdateExpiries = false;
AsyncUtil.NextCheckExpiry = Infinity;
for (const key in expiries) {
if (now > expiries[key]) {
localStorage.removeItem(`__OSF_AsyncCache_${key}`);
delete expiries[key];
needUpdateExpiries = true;
}
else {
AsyncUtil.NextCheckExpiry = Math.min(AsyncUtil.NextCheckExpiry, expiries[key]);
}
}
if (needUpdateExpiries) {
localStorage.setItem(expiriesKey, JSON.stringify(expiries));
}
}
if (!forceUpdateCache && localStorage.hasOwnProperty(cacheKeyWithPrefix)) {
return Promise.resolve({
cacheType: 'localStorage',
value: localStorage.getItem(cacheKeyWithPrefix)
});
}
}
catch (e) {
Telemetry.RuntimeTelemetryHelper.LogExceptionTag(`failed to get key ${cacheKeyWithPrefix}`, e, null, 0x1f01139e);
}
}
return operation().then(result => {
AsyncUtil.Cache[cacheKey] = result;
try {
const expiries = JSON.parse(localStorage.getItem(expiriesKey)) || {};
expiries[cacheKey] = now + maxAgeInSecs * 1000;
AsyncUtil.NextCheckExpiry = Math.min(AsyncUtil.NextCheckExpiry, expiries[cacheKey]);
localStorage.setItem(expiriesKey, JSON.stringify(expiries));
localStorage.setItem(cacheKeyWithPrefix, result);
localStorage.setItem(cacheKeyWithPrefixStale, result);
}
catch (e) {
}
return {
cacheType: 'none',
value: result
};
}, ex => {
if (useStaleCache && OSF.OUtil.getLocalStorage().isLocalStorageAvailable()) {
if (localStorage.hasOwnProperty(cacheKeyWithPrefixStale)) {
Telemetry.RuntimeTelemetryHelper.LogCommonMessageTag(`stale cache used for ${cacheKeyWithPrefixStale}`, null, 0x1f01139d);
return Promise.resolve({
cacheType: 'localStorage',
value: localStorage.getItem(cacheKeyWithPrefixStale)
});
}
}
throw ex;
});
}
}
AsyncUtil.Cache = {};
AsyncUtil.NextCheckExpiry = 0;
OfficeExt.AsyncUtil = AsyncUtil;
class CatalogFactoryImp {
static register(storeType, creator) {
this._registry[storeType] = creator;
}
static resolve(storeType, hostInfo) {
var catalog = this._resolved[storeType];
if (catalog != null) {
return catalog;
}
hostInfo = hostInfo || this._hostInfo;
if (hostInfo != null) {
var creator = this._registry[storeType];
if (creator == null) {
return null;
}
this._resolved[storeType] = catalog = creator(hostInfo);
}
return catalog;
}
static setHostContext(hostInfo) {
this._hostInfo = hostInfo;
}
static getHostContext() {
return this._hostInfo;
}
}
CatalogFactoryImp._registry = {};
CatalogFactoryImp._resolved = {};
OfficeExt.CatalogFactory = CatalogFactoryImp;
})(OfficeExt || (OfficeExt = {}));
var OSF;
(function (OSF) {
OSF.RibbonControlIdMap = {};
OSF.RibbonGroupIdMap = {};
OSF.RibbonGroupIdMapMLR = {};
OSF.RibbonGroupIdMapCommonMLR = {};
OSF.RibbonGroupIdMapCommonSLR = {};
})(OSF || (OSF = {}));
OSF.RibbonControlIdMap = {};
OSF.RibbonGroupIdMap = {};
OSF.RibbonGroupIdMapMLR = {};
OSF.RibbonGroupIdMapCommonMLR = {};
OSF.RibbonGroupIdMapCommonSLR = {};
var OSF;
(function (OSF) {
function SelectSingleNode(xmlProcessor, node, path, isStrictPath) {
if (path == null)
return node;
let currentNode = node;
for (let i = 0; i < path.length; i++) {
currentNode = xmlProcessor.selectSingleNode(path[i], currentNode);
if (currentNode == null) {
if (isStrictPath) {
return null;
}
break;
}
}
return currentNode;
}
OSF.SelectSingleNode = SelectSingleNode;
function SelectChildNodes(xmlProcessor, name, node, path, isStrictPath) {
let currentNode = SelectSingleNode(xmlProcessor, node, path, isStrictPath);
if (currentNode == null) {
return [];
}
return xmlProcessor.selectNodes(name, currentNode);
}
OSF.SelectChildNodes = SelectChildNodes;
function GetVersionOverridesString(versionOverridesNumber) {
let versionString = "";
if (versionOverridesNumber >= OSF.VersionOverridesNumber.V1_0 && versionOverridesNumber < OSF.VersionOverridesNumber.Max) {
versionString = "VersionOverridesV" + Math.floor(versionOverridesNumber / 100) + "_" + (versionOverridesNumber % 100);
}
return versionString;
}
OSF.GetVersionOverridesString = GetVersionOverridesString;
function GetVersionOverridesPath(xmlProcessor, namespace, versionOverridesNumber) {
let path = [];
if (versionOverridesNumber >= OSF.VersionOverridesNumber.V1_0 && versionOverridesNumber < OSF.VersionOverridesNumber.Max) {
for (const v in OSF.VersionOverridesNumber) {
let versionNumber = Number(v);
if (!isNaN(versionNumber) && versionNumber <= versionOverridesNumber) {
let ns = namespace;
if (versionNumber > OSF.VersionOverridesNumber.V1_0) {
ns = GetVersionOverridesNamespace(ns, versionNumber);
xmlProcessor.addNamespaceMapping(ns.slice(0, -1), OSF.VersionOverridesNamespace[OSF.VersionOverridesNumber[versionNumber]]);
}
path.push(ns + OSF.ParserStrings.VersionOverrides);
}
}
}
return path;
}
OSF.GetVersionOverridesPath = GetVersionOverridesPath;
function GetVersionOverridesNamespace(namespace, versionOverridesNumber) {
let ns = namespace;
if (versionOverridesNumber != null && versionOverridesNumber > OSF.VersionOverridesNumber.V1_0 && ns === OSF.ParserStrings.Mailappor) {
ns = OSF.ParserStrings.Mailappor.replace(":", OSF.VersionOverridesNumber[versionOverridesNumber] + ":");
}
return ns;
}
OSF.GetVersionOverridesNamespace = GetVersionOverridesNamespace;
function GetNamespaceOrDefault(namespace) {
if (namespace && namespace.length > 0) {
return namespace;
}
return "ov:";
}
OSF.GetNamespaceOrDefault = GetNamespaceOrDefault;
})(OSF || (OSF = {}));
var OfficeExt;
(function (OfficeExt) {
let Parser;
(function (Parser) {
const OfficeControlNodeName = "OfficeControl";
class AddInManifestException {
constructor(message) {
this.name = 'AddinManifestError';
this.message = this.name + ": " + message;
console.error(this.message);
}
}
class AddInInternalException {
constructor(message) {
this.name = 'AddinInternalError';
this.message = message;
}
}
function CheckValueNotNullNorUndefined(objectValue, errorMessage) {
if (objectValue == null) {
throw new AddInManifestException(errorMessage);
}
}
function CheckValueNotContainsInvalidCharacters(stringValue, errorMessage) {
const invalidChars = '\r\n\f\b\v\u0007\t';
for (let i = 0; i < invalidChars.length; ++i) {
if (stringValue.indexOf(invalidChars[i]) >= 0) {
throw new AddInManifestException(errorMessage);
}
}
}
function GetActionType(action) {
const type = action.type;
return type === "openPage" ? "ShowTaskpane" : (type === "executeFunction" ? "ExecuteFunction" : type);
}
let resIdCounter = 0;
class ManifestResourceManager {
constructor(context, namespace, versionOverridesNumber) {
this.Images = {};
this.Urls = {};
this.LongStrings = {};
this.ShortStrings = {};
this.namespace = OSF.GetNamespaceOrDefault(namespace);
if (context.manifest.getPayloadType() === OSF.PayloadType.OfficeAddin) {
let xmlProcessor = context.manifest._xmlProcessor;
var officeAppNode = xmlProcessor.selectSingleNode("o:OfficeApp");
var resourcesNode;
if (context.manifest.isForOfficeAppManifest()) {
this.AllLocaleImages = {};
this.AllLocaleUrls = {};
this.AllLocaleLongStrings = {};
this.AllLocaleShortStrings = {};
if (versionOverridesNumber == null) {
versionOverridesNumber = OSF.VersionOverridesNumber.V1_0;
}
let resourcesNodePath = OSF.GetVersionOverridesPath(xmlProcessor, this.namespace, versionOverridesNumber);
resourcesNodePath.push(OSF.GetVersionOverridesNamespace(this.namespace, versionOverridesNumber) + OSF.ParserStrings.Resources);
resourcesNode = OSF.SelectSingleNode(xmlProcessor, officeAppNode, resourcesNodePath, true);
this.parseCollection(context, OSF.SelectChildNodes(xmlProcessor, "bt:Image", resourcesNode, ["bt:Images"]), this.Images, this.AllLocaleImages);
this.parseCollection(context, OSF.SelectChildNodes(xmlProcessor, "bt:Url", resourcesNode, ["bt:Urls"]), this.Urls, this.AllLocaleUrls);
this.parseCollection(context, OSF.SelectChildNodes(xmlProcessor, "bt:String", resourcesNode, ["bt:LongStrings"]), this.LongStrings, this.AllLocaleLongStrings);
this.parseCollection(context, OSF.SelectChildNodes(xmlProcessor, "bt:String", resourcesNode, ["bt:ShortStrings"]), this.ShortStrings, this.AllLocaleShortStrings);
}
else {
resourcesNode = OSF.SelectSingleNode(xmlProcessor, officeAppNode, [this.namespace + "VersionOverrides", this.namespace + "Resources"]);
this.parseCollection(context, OSF.SelectChildNodes(xmlProcessor, "bt:Image", resourcesNode, ["bt:Images"]), this.Images);
this.parseCollection(context, OSF.SelectChildNodes(xmlProcessor, "bt:Url", resourcesNode, ["bt:Urls"]), this.Urls);
this.parseCollection(context, OSF.SelectChildNodes(xmlProcessor, "bt:String", resourcesNode, ["bt:LongStrings"]), this.LongStrings);
this.parseCollection(context, OSF.SelectChildNodes(xmlProcessor, "bt:String", resourcesNode, ["bt:ShortStrings"]), this.ShortStrings);
}
}
}
parseCollection(context, nodes, map, allLocaleMaps) {
var len = nodes.length;
for (var i = 0; i < len; i++) {
var node = nodes[i];
var id = node.getAttribute("id");
if (allLocaleMaps != null) {
allLocaleMaps[id] = {};
map[id] = context.parseLocaleAwareSettingsAndGetValue(node, allLocaleMaps[id]);
}
else {
map[id] = context.parseLocaleAwareSettingsAndGetValue(node);
}
}
}
}
Parser.ManifestResourceManager = ManifestResourceManager;
class ParsingContext {
constructor(hostType, formFactor, entitlement, manifest, namespace, versionOverridesNumber) {
this.hostType = hostType;
this.formFactor = formFactor;
this.entitlement = entitlement;
this.manifest = manifest;
this.namespace = OSF.GetNamespaceOrDefault(namespace);
this.resources = new ManifestResourceManager(this, this.namespace, versionOverridesNumber);
this.officeGroupCount = 0;
this.officeControlCount = 0;
}
shouldParseNode(node) {
var overriddenByRibbonApi = this.manifest._xmlProcessor.selectSingleNode(this.namespace + "OverriddenByRibbonApi", node);
if ((overriddenByRibbonApi != null && this.manifest._parseBooleanNode(overriddenByRibbonApi)) && !this.manifest.isForOfficeAppManifest()) {
return false;
}
return true;
}
shouldParseNodeFromMos(node) {
return !node.overriddenByRibbonApi;
}
parseIdRequired(node) {
var id = node.getAttribute("id");
CheckValueNotNullNorUndefined(id, "Id required");
return id;
}
parseIdRequiredFromMos(node) {
let id = node.id;
CheckValueNotNullNorUndefined(id, "Id required");
return id;
}
parseLabel(node) {
var child = this.manifest._xmlProcessor.selectSingleNode(this.namespace + "Label", node);
if (child != null) {
return this.getShortString(child);
}
return null;
}
parseLabelRequired(node) {
var label = this.parseLabel(node);
CheckValueNotNullNorUndefined(label, "Label required");
return label;
}
parseLabelRequiredFromMos(node) {
let label = node.label;
CheckValueNotNullNorUndefined(label, "Label required");
return label;
}
parseResId(node) {
if (node != null) {
return node.getAttribute("resid");
}
return null;
}
parseType(node) {
if (node != null) {
return node.getAttribute("type");
}
return null;
}
parseRequiredSuperTip(node) {
var superTip = this.parseSuperTip(node);
CheckValueNotNullNorUndefined(superTip, "SuperTip required");
return superTip;
}
parseRequiredSupertipFromMos(node) {
const supertip = this.parseSupertipFromMos(node);
CheckValueNotNullNorUndefined(supertip, "supertip required");
return supertip;
}
parseSuperTip(node) {
var superTip = null;
var child = this.manifest._xmlProcessor.selectSingleNode(this.namespace + "Supertip", node);
if (child != null) {
var tipNode = child;
var title, description, titleResId, descriptionResId;
child = this.manifest._xmlProcessor.selectSingleNode(this.namespace + "Title", tipNode);
CheckValueNotNullNorUndefined(child, "Title is necessary for SuperTip.");
title = this.getShortString(child);
child = this.manifest._xmlProcessor.selectSingleNode(this.namespace + "Description", tipNode);
CheckValueNotNullNorUndefined(child, "Description is necessary for SuperTip.");
description = this.getLongString(child);
superTip = {
title: title,
description: description
};
if (this.manifest.isForOfficeAppManifest()) {
child = this.manifest._xmlProcessor.selectSingleNode(this.namespace + "Title", tipNode);
superTip.titleResId = this.parseResId(child);
child = this.manifest._xmlProcessor.selectSingleNode(this.namespace + "Description", tipNode);
superTip.descriptionResId = this.parseResId(child);
}
}
return superTip;
}
parseSupertipFromMos(control) {
let supertip = null;
const child = control.supertip;
if (child != null) {
const title = child.title;
CheckValueNotNullNorUndefined(title, "Title is necessary for Supertip.");
CheckValueNotContainsInvalidCharacters(title, "Invalid characters in text value: " + title);
const description = child.description;
CheckValueNotNullNorUndefined(description, "Description is necessary for Supertip.");
CheckValueNotContainsInvalidCharacters(description, "Invalid characters in text value: " + description);
supertip = {
title: title,
description: description
};
}
return supertip;
}
parseRequiredIcon(node) {
var icon = this.parseIcon(node);
CheckValueNotNullNorUndefined(icon, "Icon required");
return icon;
}
parseRequiredIconFromMos(node) {
let icon = this.parseIconFromMos(node);
CheckValueNotNullNorUndefined(icon, "Icon required");
return icon;
}
parseOptionalIcon(node) {
return this.parseIcon(node);
}
parseOptionalIconFromMos(node) {
return this.parseIcon(node);
}
parseIcon(node) {
var iconNodes = OSF.SelectChildNodes(this.manifest._xmlProcessor, "bt:Image", node, [this.namespace + "Icon"]);
var len = iconNodes.length;
if (len == 0) {
return null;
}
var icon = {};
for (var i = 0; i < len; i++) {
var iconNode = iconNodes[i];
var size = iconNode.getAttribute("size");
icon[size] = this.getImageResource(iconNode);
}
return icon;
}
parseIconFromMos(node) {
const iconNodes = node.icons;
const len = iconNodes === null || iconNodes === void 0 ? void 0 : iconNodes.length;
if (!len || len == 0) {
return null;
}
let icons = {};
for (const icon of iconNodes) {
this.AddResourceMapAndGetIdHelper(icon.file, this.resources.Images);
const size = icon.size;
icons[size] = icon.file;
}
return icons;
}
parseIconResId(node) {
var iconNodes = OSF.SelectChildNodes(this.manifest._xmlProcessor, "bt:Image", node, [this.namespace + "Icon"]);
var len = iconNodes.length;
if (len == 0) {
return null;
}
var iconResId = {};
for (var i = 0; i < len; i++) {
var iconNode = iconNodes[i];
var size = iconNode.getAttribute("size");
if (size != null) {
iconResId[size] = iconNode.getAttribute("resid");
}
}
return iconResId;
}
AddResourceMapAndGetIdHelper(resourceValue, resourceMap) {
CheckValueNotNullNorUndefined(resourceMap, "resourceMap is not found.");
resIdCounter++;
resourceMap[resIdCounter] = resourceValue;
}
checkRequiredGroupIcons(icons) {
CheckValueNotNullNorUndefined(icons[16], "Icons are missing required size 16");
CheckValueNotNullNorUndefined(icons[32], "Icons are missing required size 32");
CheckValueNotNullNorUndefined(icons[80], "Icons are missing required size 80");
}
parseMultipleChildControls(childNodeNames, node, parser) {
var controls = [];
for (var idx = 0; idx < node.childNodes.length; idx++) {
if (childNodeNames.indexOf(node.childNodes[idx].nodeName) !== -1) {
controls.push(node.childNodes[idx]);
}
}
return this.parseControls(controls, parser);
}
parseMultipleChildControlsFromMos(childNodeNames, node, parseControlFromMos) {
let controls = [];
if (childNodeNames[0] == "Group") {
for (const group of node.groups) {
controls.push(group);
}
}
else {
for (const control of node.controls) {
controls.push(control);
}
}
return this.parseControlsFromMos(controls, parseControlFromMos);
}
parseChildControls(childNodeName, node, parser) {
var controls = this.manifest._xmlProcessor.selectNodes(childNodeName, node);
return this.parseControls(controls, parser);
}
parseChildControlsFromMos(childNodeName, contextMenu, parser) {
let controls = contextMenu.menus;
return this.parseControlsFromMos(controls, parser);
}
parseControls(nodes, parser) {
var controls = [];
var len = nodes.length;
for (var i = 0; i < len; i++) {
var e = nodes[i];
if (this.shouldParseNode(e)) {
var control = parser(this, e);
CheckValueNotNullNorUndefined(control, "parser must return a control.");
controls.push(control);
}
}
return controls;
}
parseControlsFromMos(nodes, parseControlFromMos) {
let controls = [];
for (const e of nodes) {
if (this.shouldParseNodeFromMos(e)) {
const control = parseControlFromMos(this, e);
CheckValueNotNullNorUndefined(control, "parseControlFromMos must return a control.");
controls.push(control);
}
}
return controls;
}
parseGroupUnderTab(node) {
let group;
switch (node.nodeName) {
case "OfficeGroup":
group = new OfficeGroup(this.hostType);
this.officeGroupCount++;
break;
default:
group = new RibbonGroup(this.hostType);
}
group.parse(this, node);
return group;
}
parseGroupUnderTabFromMos(group) {
let newGroup;
if (group.id == null) {
newGroup = new OfficeGroup(this.hostType);
this.officeGroupCount++;
}
else {
newGroup = new RibbonGroup(this.hostType);
}
newGroup.parseFromMos(this, group);
return newGroup;
}
parseControlInGroup(node) {
var controlType = this.manifest.getNodeXsiType(node);
var control;
if (!controlType && node.nodeName === OfficeControlNodeName) {
controlType = 'OfficeControl';
}
switch (controlType) {
case "Menu":
control = new MenuControl(controlType, this.namespace);
break;
case "Button":
control = new Button(controlType, this.namespace);
break;
case "OfficeControl":
control = new OfficeControl();
this.officeControlCount++;
break;
default:
throw new AddInManifestException("Unsupported control type.");
}
control.parse(this, node);
return control;
}
parseControlInGroupFromMos(control) {
let controlType = control.type;
let newControl;
if (controlType == null) {
controlType = 'OfficeControl';
}
switch (controlType) {
case "menu":
newControl = new MenuControl("Menu");
break;
case "button":
newControl = new Button("Button");
break;
case "OfficeControl":
newControl = new OfficeControl();
this.officeControlCount++;
break;
default:
throw new AddInManifestException("Unsupported control type.");
}
newControl.parseFromMos(this, control);
return newControl;
}
parseMenuItem(node) {
var item = new MenuItem(this.namespace);
item.parse(this, node);
return item;
}
parseMenuItemFromMos(node) {
let item = new MenuItem();
item.parseFromMos(this, node);
return item;
}
parseLocaleAwareSettingsAndGetValue(node, allLocaleMap) {
const forAllLocales = allLocaleMap != null;
let values = forAllLocales ? allLocaleMap : {};
var defaultValue = node.getAttribute("DefaultValue");
values[this.manifest._defaultLocale] = defaultValue;
values[this.manifest._defaultLocale.toLocaleLowerCase()] = defaultValue;
var overrideNodes = this.manifest._xmlProcessor.selectNodes("bt:Override", node);
if (overrideNodes) {
var len = overrideNodes.length;
for (var i = 0; i < len; i++) {
var node = overrideNodes[i];
var locale = node.getAttribute("Locale");
var value = node.getAttribute("Value");
if (!forAllLocales) {
values[locale] = value;
}
values[locale.toLocaleLowerCase()] = value;
if (this.manifest.isForOfficeAppManifest()) {
this.manifest.addLocaleSeen(locale);
}
}
}
return this.manifest._getDefaultValue(values);
}
selectSingleNode(node, path) {
if (path == null)
return node;
for (var i = 0; i < path.length; i++) {
node = this.manifest._xmlProcessor.selectSingleNode(path[i], node);
if (node == null) {
break;
}
}
return node;
}
selectChildNodes(name, node, path) {
node = this.selectSingleNode(node, path);
if (node == null) {
return [];
}
return this.manifest._xmlProcessor.selectNodes(name, node);
}
getSingleNodeValue(nodeName, parentNode) {
let node = this.manifest._xmlProcessor.selectSingleNode(nodeName, parentNode);
if (node) {
return this.manifest._xmlProcessor.getNodeValue(node);
}
return '';
}
getResourceByNode(resources, resourceNode) {
var resid = resourceNode.getAttribute("resid");
var res = resources[resid];
if (this.manifest.isForOfficeAppManifest() && res == null) {
if (this.manifest.converterLogging()) {
console.error('\x1b[31m%s\x1b[0m', "WARNING: resid: " + resid + " is not defined.");
}
res = "";
}
else {
CheckValueNotNullNorUndefined(res, "resid: " + resid + " not found");
}
return res;
}
getImageResource(resourceNode) {
return this.getResourceByNode(this.resources.Images, resourceNode);
}
getUrlResource(resourceNode) {
return this.getResourceByNode(this.resources.Urls, resourceNode);
}
getLongString(resourceNode) {
const longString = this.getResourceByNode(this.resources.LongStrings, resourceNode);
CheckValueNotContainsInvalidCharacters(longString, "Invalid characters in text value: " + longString);
return longString;
}
getShortString(resourceNode) {
const shortString = this.getResourceByNode(this.resources.ShortStrings, resourceNode);
CheckValueNotContainsInvalidCharacters(shortString, "Invalid characters in text value: " + shortString);
return shortString;
}
getContextMenuType(menu) {
switch (menu === null || menu === void 0 ? void 0 : menu.type) {
case "cell":
return "ContextMenuCell";
case "text":
return "ContextMenuText";
default:
throw new AddInManifestException("Unsupported context menu type.");
}
}
getLabelChildNode(node, namespace) {
var labelNode = this.manifest._xmlProcessor.selectSingleNode(namespace + "Label", node);
return labelNode;
}
}
Parser.ParsingContext = ParsingContext;
class BuildHelpers {
static buildControls(context, controls) {
var len = controls.length;
for (var i = 0; i < len; i++) {
var child = controls[i];
child.apply(context);
}
}
}
class AddinBuildingContext {
constructor(functionFile, builder, multipleCustomTabsEnabled = false) {
this.multipleCustomTabsEnabled = false;
this.functionFile = functionFile;
this.builder = builder;
this.multipleCustomTabsEnabled = multipleCustomTabsEnabled;
}
}
class GetStartedNode {
constructor(namespace) {
this.namespace = OSF.GetNamespaceOrDefault(namespace);
}
parse(context, node) {
var xmlProcessor = context.manifest._xmlProcessor;
var titleNode = xmlProcessor.selectSingleNode(this.namespace + "Title", node);
CheckValueNotNullNorUndefined(titleNode, "Title is necessary for GetStarted.");
this.title = context.getShortString(titleNode);
var descriptionNode = xmlProcessor.selectSingleNode(this.namespace + "Description", node);
CheckValueNotNullNorUndefined(descriptionNode, "Description is necessary for GetStarted.");
this.description = context.getLongString(descriptionNode);
var learnMoreNode = xmlProcessor.selectSingleNode(this.namespace + "LearnMoreUrl", node);
this.learnMoreUrl = context.getUrlResource(learnMoreNode);
}
parseFromMos(context, getStartedMessage) {
this.title = getStartedMessage.title;
this.description = getStartedMessage.description;
this.learnMoreUrl = getStartedMessage.learnMoreUrl;
}
}
class ActionBase {
constructor(type, namespace) {
this.type = type;
this.namespace = OSF.GetNamespaceOrDefault(namespace);
}
buildAction(context) {
}
parse(context, node) {
}
parseFromMos(context, node) {
}
}
class ShowUIAction extends ActionBase {
constructor() {
super(...arguments);
this.title = null;
}
parse(context, node) {
var child = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "SourceLocation", node);
CheckValueNotNullNorUndefined(child, "SourceLocation is necessary for ShowTaskpane action");
this.sourceLocation = context.getUrlResource(child);
context.manifest.addManifestUrl(this.sourceLocation);
}
parseFromMos(context, node) {
const runtime = context.manifest.getExtensionRuntimeByActionId(node.id);
this.sourceLocation = runtime.code.page;
context.manifest.addManifestUrl(this.sourceLocation);
}
}
class ShowTaskPaneAction extends ShowUIAction {
constructor() {
super(...arguments);
this.pinnable = false;
}
buildAction(context) {
return context.actionBuilder.buildShowTaskpane(this.sourceLocation, this.title, this.taskpaneId, this.sourceLocationResid);
}
parse(context, node) {
super.parse(context, node);
var child = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "TaskpaneId", node);
if (child != null) {
this.taskpaneId = child.firstChild.nodeValue;
}
if (context.manifest.isForOfficeAppManifest()) {
child = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "SourceLocation", node);
}
else {
child = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "SourceLocation ", node);
}
if (child != null) {
this.sourceLocationResid = child.getAttribute("resid");
}
child = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "Title", node);
if (child != null) {
this.title = context.getShortString(child);
}
if (context.manifest.isForOfficeAppManifest()) {
var supportsPinningNode = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "SupportsPinning", node);
if (supportsPinningNode != null) {
this.pinnable = context.manifest._parseBooleanNode(supportsPinningNode);
}
}
}
parseFromMos(context, node) {
super.parseFromMos(context, node);
const runtime = context.manifest.getExtensionRuntimeByActionId(node.id);
if (runtime != null) {
this.sourceLocationResid = runtime.id;
this.taskpaneId = null;
const action = context.manifest.getExtensionActionById(node.id);
if (action != null && action.view != null) {
this.taskpaneId = action.view;
}
if (action.displayName != null) {
this.title = action.displayName;
}
}
}
}
class ExecuteFunctionAction extends ActionBase {
buildAction(context) {
CheckValueNotNullNorUndefined(context.functionFile, "Valid FunctionFile source url is necessary for ExecuteFunctionAction.");
return context.actionBuilder.buildCallFunction(context.functionFile, this.functionName, this.controlId);
}
parse(context, node) {
var child = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "FunctionName", node);
CheckValueNotNullNorUndefined(child, "FunctionName is necessary for ExecuteFunctionAction.");
this.functionName = context.manifest._xmlProcessor.getNodeValue(child);
}
parseFromMos(conext, node) {
const functionName = node.displayName;
CheckValueNotNullNorUndefined(functionName, "Parsing from Mos: FunctionName is necessary for ExecuteFunctionAction.");
this.functionName = functionName;
}
}
class UIEntityBase {
parse(context, node) {
this.id = context.parseIdRequired(node);
this.label = context.parseLabelRequired(node);
}
parseFromMos(context, node) {
this.id = context.parseIdRequiredFromMos(node);
this.label = context.parseLabelRequiredFromMos(node);
}
}
class MenuControl extends UIEntityBase {
constructor(controlType, namespace) {
super();
this.controlType = controlType;
this.namespace = OSF.GetNamespaceOrDefault(namespace);
}
apply(context) {
context.controlBuilder.startBuildMenu(this);
BuildHelpers.buildControls(context, this.children);
context.controlBuilder.endBuildMenu();
}
parse(context, node) {
if (!context.shouldParseNode(node)) {
return;
}
super.parse(context, node);
this.icon = context.parseRequiredIcon(node);
if (context.manifest.isForOfficeAppManifest()) {
this.iconResId = context.parseIconResId(node);
}
this.superTip = context.parseRequiredSuperTip(node);
var controls = OSF.SelectChildNodes(context.manifest._xmlProcessor, this.namespace + "Item", node, [this.namespace + "Items"]);
if (context.manifest.isForOfficeAppManifest()) {
let labelChild = null;
labelChild = context.manifest._xmlProcessor.selectSingleNode(context.namespace + "Label", node);
this.labelResId = context.parseResId(labelChild);
}
this.children = context.parseControls(controls, (context, node) => {
return context.parseMenuItem(node);
});
}
parseFromMos(context, node) {
if (!context.shouldParseNodeFromMos(node)) {
return;
}
super.parseFromMos(context, node);
this.icon = context.parseRequiredIconFromMos(node);
this.superTip = context.parseRequiredSupertipFromMos(node);
const controls = node.items;
this.children = context.parseControlsFromMos(controls, (context, item) => {
return context.parseMenuItemFromMos(item);
});
}
}
Parser.MenuControl = MenuControl;
class ItemControl extends UIEntityBase {
constructor(controlType, namespace) {
super();
this.enabled = true;
this.controlType = controlType;
this.namespace = OSF.GetNamespaceOrDefault(namespace);
}
apply(context) {
var action = this.action.buildAction(context);
var control = {
id: this.id,
label: this.label,
icon: this.icon,
superTip: this.superTip,
actionType: this.actionType,
action: action,
enabled: this.enabled
};
this.applyControl(context, control);
}
parse(context, node) {
super.parse(context, node);
this.icon = this.parseIcon(context, node);
if (context.manifest.isForOfficeAppManifest()) {
this.iconResId = context.parseIconResId(node);
}
this.superTip = context.parseRequiredSuperTip(node);
var child = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "Action", node);
CheckValueNotNullNorUndefined(child, "Action is necessary for itemControl.");
var actionType = context.manifest.getNodeXsiType(child);
var action;
switch (actionType) {
case "ShowTaskpane":
action = new ShowTaskPaneAction(actionType, this.namespace);
break;
case "ExecuteFunction":
var execAction = action = new ExecuteFunctionAction(actionType, this.namespace);
execAction.controlId = this.id;
break;
default:
throw new AddInManifestException("Unsupported action type.");
}
action.parse(context, child);
this.actionType = actionType;
this.action = action;
var enabledNode = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "Enabled", node);
if (enabledNode != null) {
this.enabled = context.manifest._parseBooleanNode(enabledNode);
}
if (context.manifest.isForOfficeAppManifest()) {
let labelChild = null;
labelChild = context.manifest._xmlProcessor.selectSingleNode(context.namespace + "Label", node);
this.labelResId = context.parseResId(labelChild);
}
}
parseFromMos(context, control) {
super.parseFromMos(context, control);
this.icon = this.parseIconFromMos(context, control);
this.superTip = context.parseRequiredSupertipFromMos(control);
const child = context.manifest.getExtensionActionById(control.actionId);
CheckValueNotNullNorUndefined(child, "Parsing from Mos: Action is necessary for itemControl.");
const actionType = GetActionType(child);
let action;
switch (actionType) {
case "ShowTaskpane":
action = new ShowTaskPaneAction(actionType, this.namespace);
break;
case "ExecuteFunction":
let execAction = action = new ExecuteFunctionAction(actionType, this.namespace);
execAction.controlId = this.id;
break;
default:
throw new AddInManifestException("Parsing from Mos: Unsupported action type.");
}
action.parseFromMos(context, child);
this.actionType = actionType;
this.action = action;
this.enabled = control.enabled ? control.enabled : true;
}
applyControl(context, control) {
throw new AddInInternalException("Not implemented method applyControl for ItemControl.");
}
parseIcon(context, node) {
return context.parseIcon(node);
}
parseIconFromMos(context, node) {
return context.parseIconFromMos(node);
}
}
class Button extends ItemControl {
applyControl(context, control) {
context.controlBuilder.addButton(control);
}
parseIcon(context, node) {
return context.parseRequiredIcon(node);
}
}
class MenuItem extends ItemControl {
constructor(namespace) {
super("MenuItem", namespace);
}
applyControl(context, control) {
context.controlBuilder.addMenuItem(control);
}
}
class OfficeControl extends ItemControl {
constructor() {
super('OfficeControl');
this.label = null;
this.icon = null;
this.superTip = null;
this.actionType = null;
this.action = null;
this.enabled = true;
}
apply(context) {
var control = {
id: this.id,
label: this.label,
icon: this.icon,
superTip: this.superTip,
actionType: this.actionType,
action: this.action,
enabled: this.enabled
};
this.applyControl(context, control);
}
parse(context, node) {
try {
this.id = context.parseIdRequired(node);
}
catch (ex) {
throw new AddInManifestException("Required id attribute missing for OfficeControl.");
}
if (OSF.RibbonControlIdMap && OSF.RibbonControlIdMap[this.id]) {
this.id = OSF.RibbonControlIdMap[this.id];
}
else if (!OSF.OUtil.checkFlight(OSF.FlightNames.AddinRibbonIdAllowUnknown)) {
throw new AddInManifestException("Unsupported control id for OfficeControl.");
}
}
parseFromMos(context, control) {
this.id = control.builtInControlId;
CheckValueNotNullNorUndefined(this.id, "Built in control id is required.");
if (OSF.RibbonControlIdMap && OSF.RibbonControlIdMap[this.id]) {
this.id = OSF.RibbonControlIdMap[this.id];
}
else if (!OSF.OUtil.checkFlight(OSF.FlightNames.AddinRibbonIdAllowUnknown)) {
throw new AddInManifestException("Unsupported control id for OfficeControl.");
}
}
applyControl(context, control) {
context.controlBuilder.addNativeControl(control);
}
}
class RibbonTab {
constructor(isOfficeTab, namespace) {
this.label = null;
this.isOfficeTab = false;
this.visible = true;
this.children = [];
this.tabType = 'default';
this.insertBefore = '';
this.insertAfter = '';
this.autoFocus = false;
this.isOfficeTab = isOfficeTab;
this.namespace = OSF.GetNamespaceOrDefault(namespace);
}
apply(context) {
context.builder.ribbonBuilder.startBuildTab(this);
var len = this.children.length;
for (var i = 0; i < len; i++) {
var child = this.children[i];
child.apply(context);
}
context.builder.ribbonBuilder.endBuildTab();
}
parse(context, node) {
this.id = context.parseIdRequired(node);
if (!this.isOfficeTab) {
this.label = context.parseLabelRequired(node);
if (OSF.Settings["IsReactRibbonEnabled"]) {
this.insertBefore = context.getSingleNodeValue(this.namespace + "InsertBefore", node);
this.insertAfter = context.getSingleNodeValue(this.namespace + "InsertAfter", node);
if (this.insertBefore) {
if (this.insertBefore === 'TabHome') {
this.autoFocus = true;
}
context.insertBefore = this.insertBefore;
}
if (this.insertAfter) {
context.insertAfter = this.insertAfter;
}
}
}
if (OSF.Settings["IsReactRibbonEnabled"]) {
this.children = context.parseMultipleChildControls(["Group", "OfficeGroup"], node, (context, node) => {
return context.parseGroupUnderTab(node);
});
}
else {
this.children = context.parseMultipleChildControls(["Group"], node, (context, node) => {
return context.parseGroupUnderTab(node);
});
}
}
parseFromMos(context, tab) {
if (!this.isOfficeTab) {
this.id = context.parseIdRequiredFromMos(tab);
this.label = context.parseLabelRequiredFromMos(tab);
if (OSF.Settings["IsReactRibbonEnabled"]) {
const insertPosition = tab.position.align;
if (insertPosition === "before") {
this.insertBefore = tab.position.builtInTabId;
if (this.insertBefore != null) {
if (this.insertBefore === 'TabHome') {
this.autoFocus = true;
}
context.insertBefore = this.insertBefore;
}
}
else if (insertPosition === "after") {
this.insertAfter = tab.position.builtInTabId;
if (this.insertAfter != null) {
context.insertAfter = this.insertAfter;
}
}
else {
throw new AddInManifestException("Unsupported insert position");
}
}
}
else {
this.id = tab.builtInTabId;
CheckValueNotNullNorUndefined(this.id, "Built in tab id is required.");
}
if (OSF.Settings["IsReactRibbonEnabled"]) {
this.children = context.parseMultipleChildControlsFromMos(["Group", "OfficeGroup"], tab, (context, group) => {
return context.parseGroupUnderTabFromMos(group);
});
}
else {
this.children = context.parseMultipleChildControlsFromMos(["Group"], tab, (context, group) => {
return context.parseGroupUnderTabFromMos(group);
});
}
}
}
class RibbonGroup extends UIEntityBase {
constructor(hostType) {
super();
this.groupType = 'Custom';
this.labelResId = null;
this.hostType = hostType;
}
parse(context, node) {
if (!context.shouldParseNode(node)) {
return;
}
super.parse(context, node);
if (context.manifest.isForOfficeAppManifest()) {
let labelChild = null;
labelChild = context.manifest._xmlProcessor.selectSingleNode(context.namespace + "Label", node);
this.labelResId = context.parseResId(labelChild);
}
if (this.hostType === "MailHost") {
this.icon = context.parseOptionalIcon(node);
}
else {
this.icon = context.parseRequiredIcon(node);
context.checkRequiredGroupIcons(this.icon);
}
if (context.manifest.isForOfficeAppManifest()) {
this.iconResId = context.parseIconResId(node);
}
if (OSF.Settings["IsReactRibbonEnabled"]) {
this.children = context.parseMultipleChildControls(["Control", "OfficeControl"], node, (context, node) => {
return context.parseControlInGroup(node);
});
}
else {
this.children = context.parseMultipleChildControls(["Control"], node, (context, node) => {
return context.parseControlInGroup(node);
});
}
}
parseFromMos(context, group) {
if (!context.shouldParseNodeFromMos(group)) {
return;
}
super.parseFromMos(context, group);
if (this.hostType === "MailHost") {
this.icon = context.parseOptionalIconFromMos(group);
}
else {
this.icon = context.parseRequiredIconFromMos(group);
context.checkRequiredGroupIcons(this.icon);
}
if (OSF.Settings["IsReactRibbonEnabled"]) {
this.children = context.parseMultipleChildControlsFromMos(["Control", "OfficeControl"], group, (context, control) => {
return context.parseControlInGroupFromMos(control);
});
}
else {
this.children = context.parseMultipleChildControlsFromMos(["Control"], group, (context, control) => {
return context.parseControlInGroupFromMos(control);
});
}
}
apply(context) {
context.builder.ribbonBuilder.startBuildGroup(this);
BuildHelpers.buildControls({
functionFile: context.functionFile,
actionBuilder: context.builder.actionBuilder,
controlBuilder: context.builder.ribbonBuilder
}, this.children);
context.builder.ribbonBuilder.endBuildGroup();
}
}
class OfficeGroup extends RibbonGroup {
constructor(hostType) {
super(hostType);
this.mlrId = "";
this.children = null;
this.label = null;
this.icon = null;
this.groupType = 'OfficeGroup';
}
parse(context, node) {
try {
this.id = context.parseIdRequired(node);
}
catch (ex) {
throw new AddInManifestException("Required id attribute missing for OfficeGroup.");
}
if (OSF.RibbonGroupIdMap && OSF.RibbonGroupIdMap[this.id]) {
if (OSF.RibbonGroupIdMapCommonMLR && OSF.RibbonGroupIdMapCommonMLR[this.id]) {
this.mlrId = OSF.RibbonGroupIdMapCommonMLR[this.id];
}
this.id = OSF.RibbonGroupIdMap[this.id];
}
else if (!OSF.OUtil.checkFlight(OSF.FlightNames.AddinRibbonIdAllowUnknown)) {
throw new AddInManifestException("Unsupported id for OfficeGroup.");
}
}
parseFromMos(context, group) {
this.id = group.builtInGroupId;
CheckValueNotNullNorUndefined(this.id, "Built in group id is required.");
if (OSF.RibbonGroupIdMap && OSF.RibbonGroupIdMap[this.id]) {
if (OSF.RibbonGroupIdMapCommonMLR && OSF.RibbonGroupIdMapCommonMLR[this.id]) {
this.mlrId = OSF.RibbonGroupIdMapCommonMLR[this.id];
}
this.id = OSF.RibbonGroupIdMap[this.id];
}
else if (!OSF.OUtil.checkFlight(OSF.FlightNames.AddinRibbonIdAllowUnknown)) {
throw new AddInManifestException("Unsupported id for OfficeGroup.");
}
}
apply(context) {
context.builder.ribbonBuilder.addNativeGroup(this);
}
}
class MobileExtensionPoint {
constructor(type, namespace) {
this.type = type;
this.namespace = OSF.GetNamespaceOrDefault(namespace);
}
parse(context, node) {
switch (this.type) {
case "MobileMessageReadCommandSurface":
let mobileGroupNode = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "Group", node);
if (mobileGroupNode != null) {
let mobileGroup = new MobileGroup(this.namespace);
mobileGroup.parse(context, mobileGroupNode);
this.group = mobileGroup;
}
break;
case "MobileMessageComposeCommandSurface":
case "MobileAppointmentOrganizerCommandSurface":
case "MobileAppointmentAttendeeCommandSurface":
break;
case "MobileOnlineMeetingCommandSurface":
case "MobileLogEventAppointmentAttendee":
let mobileControlNode = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "Control", node);
if (mobileControlNode != null) {
let mobileControl = new MobileControl(this.namespace);
mobileControl.parse(context, mobileControlNode);
this.control = mobileControl;
}
break;
default:
throw new AddInManifestException("Unsupported Mobile extension type.");
}
}
apply(context) {
}
parseFromMos(context) {
}
}
class MobileGroup {
constructor(namespace) {
this.namespace = OSF.GetNamespaceOrDefault(namespace);
}
parse(context, node) {
var labelNode = context.getLabelChildNode(node, this.namespace);
if (labelNode) {
this.labelResId = context.parseResId(labelNode);
if (this.labelResId) {
this.label = context.getShortString(labelNode);
}
}
var controlNode = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "Control", node);
if (controlNode) {
this.control = new MobileControl(this.namespace);
this.control.parse(context, controlNode);
}
}
apply(context) {
}
parseFromMos(context) {
}
}
class MobileControl {
constructor(namespace) {
this.namespace = OSF.GetNamespaceOrDefault(namespace);
}
parse(context, node) {
var labelNode = context.getLabelChildNode(node, this.namespace);
if (labelNode) {
this.labelResId = context.parseResId(labelNode);
if (this.labelResId) {
this.label = context.getShortString(labelNode);
}
}
var iconNode = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "Icon", node);
if (iconNode) {
this.icon = new MobileIcon(this.namespace);
this.icon.parse(context, iconNode);
}
var child = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "Action", node);
var actionType = context.manifest.getNodeXsiType(child);
var action;
switch (actionType) {
case "ShowTaskpane":
action = new ShowTaskPaneAction(actionType, this.namespace);
break;
case "ExecuteFunction":
var execAction = action = new ExecuteFunctionAction(actionType, this.namespace);
break;
default:
throw new AddInManifestException("Unsupported action type.");
}
if (action) {
action.parse(context, child);
this.actionType = actionType;
this.action = action;
}
}
apply(context) {
}
parseFromMos(context) {
}
}
class MobileIcon {
constructor(namespace) {
this.namespace = OSF.GetNamespaceOrDefault(namespace);
this.images = [];
}
parse(context, node) {
let imageNodes = context.manifest._xmlProcessor.selectNodes("bt:Image", node);
if (imageNodes) {
let len = imageNodes.length;
for (let i = 0; i < len; i++) {
let imageNode = imageNodes[i];
if (imageNode != null) {
let image = new MobileImage(this.namespace);
image.parse(context, imageNode);
this.images.push(image);
}
}
}
}
apply(context) {
}
parseFromMos(context) {
}
}
class MobileImage {
constructor(namespace) {
this.namespace = OSF.GetNamespaceOrDefault(namespace);
}
parse(context, node) {
if (node) {
this.size = node.getAttribute("size");
this.scale = node.getAttribute("scale");
this.resid = node.getAttribute("resid");
}
}
apply(context) {
}
parseFromMos(context) {
}
}
class RibbonExtensionPoint {
constructor(type, namespace) {
this.type = type;
this.tabs = [];
this.namespace = OSF.GetNamespaceOrDefault(namespace);
}
apply(context) {
if (this.type == context.builder.commandSurface) {
var len = this.tabs.length;
var officeTabCount = 0;
var customTabCount = 0;
for (var i = 0; i < len; i++) {
var tab = this.tabs[i];
if (tab.isOfficeTab && officeTabCount < 1) {
officeTabCount++;
}
else if (!tab.isOfficeTab
&& (customTabCount < 1 || context.multipleCustomTabsEnabled)) {
customTabCount++;
}
else {
break;
}
tab.apply(context);
}
}
}
parse(context, node) {
let tabNode = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "OfficeTab", node);
if (tabNode != null) {
let tab = new RibbonTab(true, this.namespace);
tab.parse(context, tabNode);
this.tabs.push(tab);
}
let tabNodes = context.manifest._xmlProcessor.selectNodes(this.namespace + "CustomTab", node);
if (tabNodes) {
let len = tabNodes.length;
for (let i = 0; i < len; i++) {
tabNode = tabNodes[i];
if (tabNode != null) {
let tab = new RibbonTab(false, this.namespace);
tab.parse(context, tabNode);
this.tabs.push(tab);
}
}
}
if (typeof (otel) !== 'undefined' && typeof (otel.sendTelemetryEvent) !== 'undefined') {
if (!OSF.OUtil.sendTelemetryEvent("Office.Online.Extensibility.Ribbon.OfficeGroupControlCount", [{ name: "OfficeControlCount", int64: context.officeControlCount },
{ name: "OfficeGroupCount", int64: context.officeGroupCount },
{ name: "InsertBefore", string: JSON.stringify(context.insertBefore) },
{ name: "InsertAfter", string: JSON.stringify(context.insertAfter) }])) {
otel.sendTelemetryEvent({
name: "Office.Online.Extensibility.Ribbon.OfficeGroupControlCount",
dataFields: [
{ name: "OfficeControlCount", int64: context.officeControlCount },
{ name: "OfficeGroupCount", int64: context.officeGroupCount },
{ name: "InsertBefore", string: JSON.stringify(context.insertBefore) },
{ name: "InsertAfter", string: JSON.stringify(context.insertAfter) }
]
});
}
}
}
parseFromMos(context, tabs) {
if (tabs != null) {
for (const tab of tabs) {
let newTab;
if (tab.builtInTabId != null) {
newTab = new RibbonTab(true);
}
else {
newTab = new RibbonTab(false);
}
newTab.parseFromMos(context, tab);
this.tabs.push(newTab);
}
}
if (typeof (otel) !== 'undefined' && typeof (otel.sendTelemetryEvent) !== 'undefined') {
if (!OSF.OUtil.sendTelemetryEvent("Office.Online.Extensibility.Ribbon.OfficeGroupControlCount", [{ name: "OfficeControlCount", int64: context.officeControlCount },
{ name: "OfficeGroupCount", int64: context.officeGroupCount },
{ name: "InsertBefore", string: JSON.stringify(context.insertBefore) },
{ name: "InsertAfter", string: JSON.stringify(context.insertAfter) }])) {
otel.sendTelemetryEvent({
name: "Office.Online.Extensibility.Ribbon.OfficeGroupControlCount",
dataFields: [
{ name: "OfficeControlCount", int64: context.officeControlCount },
{ name: "OfficeGroupCount", int64: context.officeGroupCount },
{ name: "InsertBefore", string: JSON.stringify(context.insertBefore) },
{ name: "InsertAfter", string: JSON.stringify(context.insertAfter) }
]
});
}
}
}
}
class OfficeMenuNode {
constructor(namespace) {
this.namespace = OSF.GetNamespaceOrDefault(namespace);
}
parse(context, node) {
if (!context.shouldParseNode(node)) {
return;
}
this.id = context.parseIdRequired(node);
if (context.manifest.isForOfficeAppManifest()) {
this.type = context.parseType(node);
}
this.children = context.parseChildControls(this.namespace + "Control", node, (context, node) => {
return context.parseControlInGroup(node);
});
}
parseFromMos(context, menu) {
if (!context.shouldParseNodeFromMos(menu)) {
return;
}
this.id = context.getContextMenuType(menu);
this.children = context.parseControlsFromMos(menu.controls, (context, control) => {
return context.parseControlInGroupFromMos(control);
});
}
apply(context) {
context.controlBuilder.startBuildMenu({
id: this.id,
label: null,
superTip: null
});
BuildHelpers.buildControls(context, this.children);
context.controlBuilder.endBuildMenu();
}
}
class ContextMenuExtensionPoint {
constructor(type, namespace) {
this.type = type;
this.namespace = OSF.GetNamespaceOrDefault(namespace);
}
apply(context) {
if (this.type == context.builder.commandSurface) {
BuildHelpers.buildControls({
functionFile: context.functionFile,
actionBuilder: context.builder.actionBuilder,
controlBuilder: context.builder.contextMenuBuilder
}, this.children);
}
}
parse(context, node) {
this.children = context.parseChildControls(this.namespace + "OfficeMenu", node, (context, node) => {
var menu = new OfficeMenuNode(this.namespace);
menu.parse(context, node);
return menu;
});
}
parseFromMos(context, contextMenu) {
this.children = context.parseChildControlsFromMos("OfficeMenu", contextMenu, (context, menu) => {
let newMenu = new OfficeMenuNode();
newMenu.parseFromMos(context, menu);
return newMenu;
});
}
}
class CustomFunctionsExtensionPoint {
constructor(type) {
this.type = type;
}
apply(context) {
}
parse(context, node) {
var namespaceNode = context.manifest._xmlProcessor.selectSingleNode("ov:Namespace", node);
if (namespaceNode) {
this.namespaceResId = namespaceNode.getAttribute("resid");
}
var scriptNode = context.manifest._xmlProcessor.selectSingleNode("ov:Script", node);
if (scriptNode) {
this.scriptResId = this._parseSourceLocationResId(context, scriptNode);
}
if (!this.scriptResId) {
throw new AddInManifestException("Missing required <Script> element under element <ExtensionPoint xsi:type='CustomFunctions'>.");
}
var pageNode = context.manifest._xmlProcessor.selectSingleNode("ov:Page", node);
if (pageNode) {
this.pageResId = this._parseSourceLocationResId(context, pageNode);
}
if (!this.pageResId) {
throw new AddInManifestException("Missing required <Page> element under element <ExtensionPoint xsi:type='CustomFunctions'>.");
}
var metadataNode = context.manifest._xmlProcessor.selectSingleNode("ov:Metadata", node);
if (metadataNode) {
this.metadataResId = this._parseSourceLocationResId(context, metadataNode);
}
if (!this.metadataResId) {
throw new AddInManifestException("Missing required <Metadata> element under element <ExtensionPoint xsi:type='CustomFunctions'>.");
}
}
parseFromMos(context, node) {
}
_parseSourceLocationResId(context, node) {
var sourceLocationNode = context.manifest._xmlProcessor.selectSingleNode("ov:SourceLocation", node);
if (sourceLocationNode) {
return sourceLocationNode.getAttribute("resid");
}
return undefined;
}
}
Parser.CustomFunctionsExtensionPoint = CustomFunctionsExtensionPoint;
class AutoRunEvent {
parse(context, node) {
this.type = node.getAttribute("Type");
this.functionName = node.getAttribute("FunctionName");
this.sendMode = node.getAttribute("SendMode");
}
parseFromMos(context, node) {
}
}
class AutoRunExtensionPoint {
constructor(type, namespace) {
this.type = type;
this.events = [];
this.namespace = OSF.GetNamespaceOrDefault(namespace);
}
apply(context) {
}
parse(context, node) {
let launchEventsNode = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "LaunchEvents", node);
if (launchEventsNode == null) {
throw new AddInManifestException("Missing required <LaunchEvents> element under element <ExtensionPoint xsi:type='LaunchEvent'>.");
}
let launchEventNodes = context.manifest._xmlProcessor.selectNodes(this.namespace + "LaunchEvent", launchEventsNode);
if (launchEventNodes.length == 0) {
throw new AddInManifestException("Missing required <LaunchEvent> element under element <LaunchEvents>.");
}
for (let i = 0; i < launchEventNodes.length; i++) {
let event = new AutoRunEvent();
event.parse(context, launchEventNodes[i]);
this.events.push(event);
}
let sourceLocationNode = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "SourceLocation", node);
if (sourceLocationNode == null) {
throw new AddInManifestException("Missing required <SourceLocation> element under element <ExtensionPoint xsi:type='LaunchEvent'>.");
}
this.resid = sourceLocationNode.getAttribute("resid");
}
parseFromMos(context, node) {
}
}
class VersionOverrides {
constructor(namespace) {
this.getStartedNode = null;
this.functionFile = null;
this.functionFileResid = null;
this.supportsSharedFolders = false;
this.cacheableUrls = [];
this.ExtensionPoints = [];
this.namespace = OSF.GetNamespaceOrDefault(namespace);
}
cacheableResources() {
return this.cacheableUrls;
}
apply(builder, errorManager, multipleCustomTabsEnabled = false) {
try {
builder.startApplyAddin({
entitlement: this.extensionEntitlement,
manifest: this.extensionManifest,
startedNode: this.getStartedNode,
overrides: {
type: this.type,
description: this.description
}
});
var context = new AddinBuildingContext(this.functionFile, builder, multipleCustomTabsEnabled);
var len = this.ExtensionPoints.length;
for (var i = 0; i < len; i++) {
var ext = this.ExtensionPoints[i];
ext.apply(context);
}
builder.endApplyAddin();
}
catch (ex) {
if (ex instanceof AddInManifestException) {
errorManager.setErrorMessageForAddin(Telemetry.PrivacyRules.GetPrivacyCompliantId(this.extensionEntitlement.solutionId, this.extensionEntitlement.storeType, this.extensionEntitlement.assetId, null, null, this.extensionEntitlement.storeId), Strings.OsfRuntime.L_AddinCommands_AddinNotSupported_Message);
}
if (OSF.OUtil.checkFlight(OSF.FlightNames.ManifestParserDevConsoleLog)) {
DevConsole.log(ex);
}
throw ex;
}
}
parse(context, overridesNode) {
var _a, _b;
this.type = context.manifest.getNodeXsiType(overridesNode);
var node = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "Description", overridesNode);
if (node != null) {
this.description = context.getLongString(node);
}
var hostNodes = OSF.SelectChildNodes(context.manifest._xmlProcessor, this.namespace + "Host", overridesNode, [this.namespace + "Hosts"]);
var formFactorNode = null;
var len = hostNodes.length;
for (var i = 0; i < len; i++) {
var hostNode = hostNodes[i];
var hostType = context.manifest.getNodeXsiType(hostNode);
if (hostType == context.hostType) {
formFactorNode = context.manifest._xmlProcessor.selectSingleNode(this.namespace + context.formFactor, hostNode);
if (formFactorNode == null) {
formFactorNode = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "AllFormFactors", hostNode);
}
break;
}
}
var startedNode = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "GetStarted", formFactorNode);
if (startedNode != null) {
this.getStartedNode = new GetStartedNode(this.namespace);
this.getStartedNode.parse(context, startedNode);
}
node = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "FunctionFile", formFactorNode);
if (node != null) {
this.functionFileResid = node.getAttribute("resid");
if (OSF.OUtil.isChangeGateEnabled("VSO8544149_ManifestNotValidInWacSideload")) {
try {
this.functionFile = context.getUrlResource(node);
context.manifest.addManifestUrl(this.functionFile);
}
catch (ex) {
this.functionFile = null;
}
}
else {
this.functionFile = context.getUrlResource(node);
context.manifest.addManifestUrl(this.functionFile);
}
}
if (context.manifest.isForOfficeAppManifest()) {
node = context.manifest._xmlProcessor.selectSingleNode(this.namespace + "SupportsSharedFolders", formFactorNode);
if (node != null) {
this.supportsSharedFolders = context.manifest._parseBooleanNode(node);
}
}
var extNodes = context.manifest._xmlProcessor.selectNodes(this.namespace + "ExtensionPoint", formFactorNode);
len = extNodes.length;
for (var i = 0; i < len; i++) {
var extNode = extNodes[i];
var extType = context.manifest.getNodeXsiType(extNode);
let ext = null;
switch (extType) {
case "Events":
if (context.manifest.isForOfficeAppManifest()) {
console.error('\x1b[31m%s\x1b[0m', 'ExtensionPoint type "Events" in the XML manifest "' + context.manifest.getDefaultDisplayName() +
'" is not supported. Please change the type to "LaunchEvent" and then convert it to metaOS manifest.');
continue;
}
throw "Not Implemented";
case "PrimaryCommandSurface":
ext = new RibbonExtensionPoint(extType, this.namespace);
break;
case "ContextMenu":
ext = new ContextMenuExtensionPoint(extType, this.namespace);
break;
case "CustomFunctions":
ext = new CustomFunctionsExtensionPoint(extType);
break;
case "LaunchEvent":
ext = new AutoRunExtensionPoint(extType, this.namespace);
break;
default:
if (context.manifest.isForOfficeAppManifest()) {
switch (extType) {
case "MessageReadCommandSurface":
case "MessageComposeCommandSurface":
case "AppointmentOrganizerCommandSurface":
case "AppointmentAttendeeCommandSurface":
ext = new RibbonExtensionPoint(extType, this.namespace);
break;
case "MobileMessageReadCommandSurface":
case "MobileMessageComposeCommandSurface":
case "MobileAppointmentOrganizerCommandSurface":
case "MobileAppointmentAttendeeCommandSurface":
case "MobileOnlineMeetingCommandSurface":
case "MobileLogEventAppointmentAttendee":
if (context.manifest.isForOfficeAppManifest()) {
ext = new MobileExtensionPoint(extType, this.namespace);
}
else {
ext = new RibbonExtensionPoint(extType, this.namespace);
}
break;
default:
(_b = (_a = OSF["AppTelemetry"]) === null || _a === void 0 ? void 0 : _a.logAppCommonMessage) === null || _b === void 0 ? void 0 : _b.call(_a, "Ignoring unsupported extension point type: " + extType);
continue;
}
}
else {
throw new AddInManifestException("Unsupported extension type.");
}
}
ext.parse(context, extNode);
this.ExtensionPoints.push(ext);
}
var images = context.resources.Images;
for (var e in images) {
this.cacheableUrls.push(images[e]);
}
this.extensionEntitlement = context.entitlement;
this.extensionManifest = context.manifest;
this.resources = context.resources;
}
parseFromMos(context) {
let description = context.manifest.getDescription();
if (description != null) {
this.description = description;
}
const getStartedMessage = context.manifest.getExtensionGetStartedMessage();
if (getStartedMessage != null) {
this.getStartedNode = new GetStartedNode(this.namespace);
this.getStartedNode.parseFromMos(context, getStartedMessage);
}
const runtimes = context.manifest.getExtensionRuntimes();
for (const runtime of runtimes) {
if (!Mos.AppMetadata.isLegacyRuntime(runtime)) {
this.functionFile = runtime.code.page;
this.functionFileResid = runtime.id;
break;
}
}
const ribbon = context.manifest.getExtensionRibbon();
if (ribbon != null) {
let primaryExtension = new RibbonExtensionPoint("PrimaryCommandSurface");
primaryExtension.parseFromMos(context, ribbon.tabs);
this.ExtensionPoints.push(primaryExtension);
}
const contextMenu = context.manifest.getExtensionContextMenu();
if (contextMenu != null) {
let contextMenuExtension = new ContextMenuExtensionPoint("ContextMenu");
contextMenuExtension.parseFromMos(context, contextMenu);
this.ExtensionPoints.push(contextMenuExtension);
}
let images = context.resources.Images;
for (let e in images) {
this.cacheableUrls.push(images[e]);
}
this.extensionEntitlement = context.entitlement;
this.extensionManifest = context.manifest;
}
}
Parser.VersionOverrides = VersionOverrides;
class emptyAddin {
cacheableResources() {
return [];
}
apply(builder, errorManager) {
}
}
class AddinCommandsManifestParser {
constructor(hostType, formFactor, namespace) {
this.hostType = hostType;
this.formFactor = formFactor;
this.namespace = OSF.GetNamespaceOrDefault(namespace);
}
parseExtensions(entitlement, manifest, errorManager, versionOverridesNumber) {
try {
if (manifest.getPayloadType() === OSF.PayloadType.MosAcquisition) {
let versionOverrides = new VersionOverrides();
versionOverrides.parseFromMos(new ParsingContext(this.hostType, this.formFactor, entitlement, manifest));
return versionOverrides;
}
else {
var officeAppNode = manifest._xmlProcessor.selectSingleNode("o:OfficeApp");
var overridesNode = manifest._xmlProcessor.selectSingleNode(this.namespace + "VersionOverrides", officeAppNode);
if (overridesNode == null) {
return new emptyAddin();
}
if (manifest.isForOfficeAppManifest()) {
if (this.hostType === "MailHost" && versionOverridesNumber) {
let versionOverridesNodePath = OSF.GetVersionOverridesPath(manifest._xmlProcessor, this.namespace, versionOverridesNumber);
let versionOverridesNodeTemp = OSF.SelectSingleNode(manifest._xmlProcessor, officeAppNode, versionOverridesNodePath, true);
let versionOverridesType = manifest.getNodeXsiType(versionOverridesNodeTemp);
let versionOverridesString = OSF.GetVersionOverridesString(versionOverridesNumber);
if (versionOverridesType === versionOverridesString) {
overridesNode = versionOverridesNodeTemp;
}
}
}
let context = new ParsingContext(this.hostType, this.formFactor, entitlement, manifest, this.namespace, versionOverridesNumber);
let ns = OSF.GetVersionOverridesNamespace(this.namespace, versionOverridesNumber);
var versionOverrides = new VersionOverrides(ns);
context.namespace = ns;
versionOverrides.parse(context, overridesNode);
return versionOverrides;
}
}
catch (ex) {
if (ex instanceof AddInManifestException) {
errorManager.setErrorMessageForAddin(Telemetry.PrivacyRules.GetPrivacyCompliantId(entitlement.solutionId, entitlement.storeType, entitlement.assetId, null, null, entitlement.storeId), Strings.OsfRuntime.L_AddinCommands_AddinNotSupported_Message);
}
if (OSF.OUtil.checkFlight(OSF.FlightNames.ManifestParserDevConsoleLog)) {
DevConsole.log(ex);
}
throw ex;
}
}
}
Parser.AddinCommandsManifestParser = AddinCommandsManifestParser;
})(Parser = OfficeExt.Parser || (OfficeExt.Parser = {}));
})(OfficeExt || (OfficeExt = {}));
var RuntimeLifeTime;
(function (RuntimeLifeTime) {
RuntimeLifeTime[RuntimeLifeTime["Short"] = 0] = "Short";
RuntimeLifeTime[RuntimeLifeTime["Long"] = 1] = "Long";
})(RuntimeLifeTime || (RuntimeLifeTime = {}));
var OSF;
(function (OSF) {
let Manifest;
(function (Manifest_1) {
class RuntimeOverride {
}
Manifest_1.RuntimeOverride = RuntimeOverride;
Manifest_1.Runtime = function OSF_Manifest_Runtime() {
this.Resid = null;
this.LifeTime = RuntimeLifeTime.Short;
this.Overrides = [];
};
class HostApp {
constructor(appName) {
this._appName = appName;
this._minVersion = null;
}
getAppName() {
return this._appName;
}
getMinVersion() {
return this._minVersion;
}
_setMinVersion(minVersion) {
this._minVersion = minVersion;
}
}
Manifest_1.HostApp = HostApp;
class ExtensionSettings {
constructor() {
this._sourceLocations = {};
this._defaultHeight = null;
this._defaultWidth = null;
}
getDefaultHeight() {
return this._defaultHeight;
}
getDefaultWidth() {
return this._defaultWidth;
}
getSourceLocations() {
return this._sourceLocations;
}
_addSourceLocation(locale, value) {
this._sourceLocations[locale.toLocaleLowerCase()] = value;
}
_setDefaultWidth(defaultWidth) {
this._defaultWidth = defaultWidth;
}
_setDefaultHeight(defaultHeight) {
this._defaultHeight = defaultHeight;
}
}
Manifest_1.ExtensionSettings = ExtensionSettings;
class WebAppInfoAuthorization {
constructor() {
this._resource = null;
this._scopes = null;
}
getResource() {
return this._resource;
}
getScopes() {
return this._scopes;
}
}
Manifest_1.WebAppInfoAuthorization = WebAppInfoAuthorization;
class EquivalentAddins {
constructor() { this._equivalentAddins = []; }
isXLLCompatible() {
for (var i = 0; i < this._equivalentAddins.length; i++) {
if ((this._equivalentAddins[i]).isXLLCompatible()) {
return true;
}
}
return false;
}
add(equivalentAddin) {
this._equivalentAddins.push(equivalentAddin);
}
getEquivalentAddins() {
return this._equivalentAddins;
}
}
Manifest_1.EquivalentAddins = EquivalentAddins;
class EquivalentAddin {
constructor() {
this._progId = null;
this._displayName = null;
this._fileName = null;
this._type = null;
}
getProgId() {
return this._progId;
}
getDisplayName() {
return this._displayName;
}
getFileName() {
return this._fileName;
}
getType() {
return this._type;
}
isXLLCompatible() {
return this._type == "XLL";
}
isComAddin() {
return this._type == "COM";
}
}
Manifest_1.EquivalentAddin = EquivalentAddin;
class Runtimes {
constructor() { this._runtimes = []; }
getSharedRuntime(resid) {
if (resid == null || this._runtimes == null) {
return null;
}
for (var i = 0; i < this._runtimes.length; i++) {
if (this._runtimes[i] != null && this._runtimes[i].Resid === resid) {
return this._runtimes[i];
}
}
return null;
}
add(runtime) {
if (runtime == null || this._runtimes == null) {
return;
}
if (this.getSharedRuntime(runtime.Resid) != null) {
throw OsfMsAjaxFactory.msAjaxError.argument("Manifest parser failure: cannot have same Resid for different runtime.");
}
this._runtimes.push(runtime);
}
getRuntimes() {
return this._runtimes;
}
}
Manifest_1.Runtimes = Runtimes;
let ResourceType;
(function (ResourceType) {
ResourceType[ResourceType["Image"] = 1] = "Image";
ResourceType[ResourceType["Url"] = 2] = "Url";
ResourceType[ResourceType["ShortString"] = 3] = "ShortString";
ResourceType[ResourceType["LongString"] = 4] = "LongString";
})(ResourceType = Manifest_1.ResourceType || (Manifest_1.ResourceType = {}));
class Manifest {
constructor(para, uiLocale, payloadType, solutionReference) {
this._UILocale = uiLocale || "en-us";
if (solutionReference != null) {
this._solutionRef = solutionReference;
}
if (payloadType && payloadType === OSF.PayloadType.MosAcquisition) {
this._payloadType = OSF.PayloadType.MosAcquisition;
}
else {
this._payloadType = OSF.PayloadType.OfficeAddin;
if (typeof (para) !== 'string') {
para(this);
return;
}
this._displayNames = {};
this._descriptions = {};
this._iconUrls = {};
this._supportUrls = {};
this._extensionSettings = {};
this._highResolutionIconUrls = {};
this._versionOverrides = {};
this._ribbonExtensionControls = {};
this._localesSeen = {};
var versionSpecificDelegate;
this._xmlProcessor = new OSF.XmlProcessor(para, OSF.ManifestNamespaces["1.1"]);
if (this._xmlProcessor.selectSingleNode("o:OfficeApp")) {
versionSpecificDelegate = OSF_Manifest_Manifest_Manifest1_1;
this._manifestSchemaVersion = OSF.ManifestSchemaVersion["1.1"];
}
else {
this._xmlProcessor = new OSF.XmlProcessor(para, OSF.ManifestNamespaces["1.0"]);
versionSpecificDelegate = OSF_Manifest_Manifest_Manifest1_0;
this._manifestSchemaVersion = OSF.ManifestSchemaVersion["1.0"];
}
var node = this._xmlProcessor.getDocumentElement();
this._target = OSF.OUtil.parseEnum(this.getNodeXsiType(node), OSF.OfficeAppType);
var officeAppNode = this._xmlProcessor.selectSingleNode("o:OfficeApp");
node = this._xmlProcessor.selectSingleNode("o:Id", officeAppNode);
this._id = this._xmlProcessor.getNodeValue(node);
if (this.isForOfficeAppManifest()) {
this._id = this._id.replace(/\{|\}/gi, '');
}
var guidRegex = new RegExp('^[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}$', 'i');
if (!guidRegex.test(this._id)) {
throw OsfMsAjaxFactory.msAjaxError.argument("Manifest");
}
node = this._xmlProcessor.selectSingleNode("o:Version", officeAppNode);
try {
this._version = this.complementVersion(this._xmlProcessor.getNodeValue(node));
}
catch (_a) {
this._version = this._xmlProcessor.getNodeValue(node);
}
node = this._xmlProcessor.selectSingleNode("o:ProviderName", officeAppNode);
this._providerName = this._xmlProcessor.getNodeValue(node);
node = this._xmlProcessor.selectSingleNode("o:IdIssuer", officeAppNode);
this._idIssuer = this._parseIdIssuer(node);
node = this._xmlProcessor.selectSingleNode("o:AlternateId", officeAppNode);
if (node) {
this._alternateId = this._xmlProcessor.getNodeValue(node);
}
node = this._xmlProcessor.selectSingleNode("o:DefaultLocale", officeAppNode);
this._defaultLocale = this._xmlProcessor.getNodeValue(node);
node = this._xmlProcessor.selectSingleNode("o:DisplayName", officeAppNode);
this._parseLocaleAwareSettings(node, (locale, value) => this._addDisplayName(locale, value));
node = this._xmlProcessor.selectSingleNode("o:Description", officeAppNode);
this._parseLocaleAwareSettings(node, (locale, value) => this._addDescription(locale, value));
node = this._xmlProcessor.selectSingleNode("o:AppDomains", officeAppNode);
this._appDomains = this._parseAppDomains(node);
node = this._xmlProcessor.selectSingleNode("o:IconUrl", officeAppNode);
if (node) {
this._parseLocaleAwareSettings(node, (locale, value) => this._addIconUrl(locale, value));
}
if (this.isForOfficeAppManifest()) {
node = this._xmlProcessor.selectSingleNode("o:SupportUrl", officeAppNode);
if (node) {
this._parseLocaleAwareSettings(node, (locale, value) => this._addSupportUrl(locale, value));
}
}
node = this._xmlProcessor.selectSingleNode("o:Signature", officeAppNode);
if (node) {
this._signature = this._xmlProcessor.getNodeValue(node);
}
this._parseExtensionSettings();
node = this._xmlProcessor.selectSingleNode("o:Permissions", officeAppNode);
this._permissions = this._parsePermission(node);
this._allowSnapshot = true;
node = this._xmlProcessor.selectSingleNode("o:AllowSnapshot", officeAppNode);
if (node) {
this._allowSnapshot = this._parseBooleanNode(node);
}
if (this._manifestSchemaVersion === OSF.ManifestSchemaVersion["1.1"] && this._target !== OSF.OfficeAppType.MailApp) {
var nodeNamespace = "ov:";
if (this._target == OSF.OfficeAppType.ContentApp) {
nodeNamespace = "c:";
}
node = this._xmlProcessor.selectSingleNode(nodeNamespace + "VersionOverrides", officeAppNode);
if (node) {
this._parseWebApplicationInfo(this, node, nodeNamespace);
}
}
if (this._manifestSchemaVersion === OSF.ManifestSchemaVersion["1.1"] && this._target == OSF.OfficeAppType.TaskPaneApp) {
var nodeNamespace = "ov:";
node = this._xmlProcessor.selectSingleNode(nodeNamespace + "VersionOverrides", officeAppNode);
if (node) {
var equivalentAddinsNode = this._xmlProcessor.selectSingleNode(nodeNamespace + "EquivalentAddins", node);
this._equivalentAddins = this._parseEquivalentAddins(equivalentAddinsNode, nodeNamespace);
}
}
if (this._manifestSchemaVersion === OSF.ManifestSchemaVersion["1.1"]) {
var versionOverridesNode = this._xmlProcessor.selectSingleNode("ov:VersionOverrides", officeAppNode);
if (versionOverridesNode) {
this._manifestSourceLocationOverrides = this._parseSourceLocationOverrides(versionOverridesNode);
}
}
if (this._manifestSchemaVersion === OSF.ManifestSchemaVersion["1.1"] && this._target == OSF.OfficeAppType.TaskPaneApp) {
var extendedOverridesNode = this._xmlProcessor.selectSingleNode("o:ExtendedOverrides", officeAppNode);
if (extendedOverridesNode != null) {
this._parseExtendedOverrides(extendedOverridesNode);
}
var versionOverridesNode = this._xmlProcessor.selectSingleNode("ov:VersionOverrides", officeAppNode);
if (versionOverridesNode !== null) {
var hostsNode = this._xmlProcessor.selectSingleNode("ov:Hosts", versionOverridesNode);
if (hostsNode !== null) {
var hostNodes = this._xmlProcessor.selectNodes("ov:Host", hostsNode);
if (hostNodes !== null) {
var len = hostNodes.length;
for (var i = 0; i < len; i++) {
var hostType = this.getNodeXsiType(hostNodes[i]);
if (hostType !== "Document" && hostType !== "Workbook" && hostType !== "Presentation") {
continue;
}
this._versionOverrides[hostType] = {};
var runtimesNode = this._xmlProcessor.selectSingleNode("ov:Runtimes", hostNodes[i]);
if (runtimesNode) {
this._versionOverrides[hostType]._runtimes = this._parseRuntimes(runtimesNode);
}
var addinCommandsParser = new OfficeExt.Parser.AddinCommandsManifestParser(hostType, "DesktopFormFactor");
var customFunctionParser = new OfficeExt.Parser.AddinCommandsManifestParser(hostType, "AllFormFactors");
var errorManager = {
"setErrorMessageForAddin": (errorMessage) => {
OsfMsAjaxFactory.msAjaxDebug.trace("Error parsing app manifest: " + errorMessage);
}
};
let entitlement = this._getEntitlement(this._solutionRef);
var addinCommands = (addinCommandsParser.parseExtensions(entitlement, this, errorManager));
var customFunction = (customFunctionParser.parseExtensions(entitlement, this, errorManager));
this._versionOverrides[hostType]._addinCommandsExtensionPoints = addinCommands.ExtensionPoints;
this._versionOverrides[hostType]._functionFileResid = addinCommands.functionFileResid;
this._versionOverrides[hostType]._customFunctionExtensionPoint = customFunction.ExtensionPoints[0];
this._versionOverrides[hostType]._showTaskpaneControls = this._retrieveAppCommandShowTaskpaneControls(hostType);
if (this.isForOfficeAppManifest()) {
this._versionOverrides[hostType]._getStartedNode = addinCommands.getStartedNode;
this._versionOverrides[hostType]._resources = addinCommands.resources;
}
if (!this._resources) {
this._resources = addinCommands.resources;
}
this._validateShowTaskpaneSharedRuntime(hostType);
this._generateRibbonExtensionControlMap(hostType);
}
}
}
}
}
versionSpecificDelegate.apply(this);
}
function OSF_Manifest_Manifest_Manifest1_0() {
var node = this._xmlProcessor.selectSingleNode("o:Capabilities", officeAppNode);
var nodes = this._xmlProcessor.selectNodes("o:Capability", node);
this._capabilities = this._parseCapabilities(nodes);
}
function OSF_Manifest_Manifest_Manifest1_1() {
var node = this._xmlProcessor.selectSingleNode("o:Hosts", officeAppNode);
this._hosts = this._parseHosts(node);
if (node) {
this._hostsXml = node.xml || node.outerHTML;
}
node = this._xmlProcessor.selectSingleNode("o:Requirements", officeAppNode);
this._requirements = this._parseRequirements(node);
if (node) {
this._requirementsXml = node.xml || node.outerHTML;
}
node = this._xmlProcessor.selectSingleNode("o:HighResolutionIconUrl", officeAppNode);
if (node) {
this._parseLocaleAwareSettings(node, (locale, url) => this._addHighResolutionIconUrl(locale, url));
}
}
}
getNodeXsiType(node) {
let nsMapping = this._xmlProcessor.getNamespaceMapping();
let ns = nsMapping == null ? null : nsMapping["xsi"];
if (ns != null) {
return node.getAttributeNS(ns, "type");
}
return node.getAttribute("xsi:type");
}
getSourceLocationOverrideByResourceId(resourceId) {
if (resourceId && this._manifestSourceLocationOverrides) {
return this._manifestSourceLocationOverrides[resourceId];
}
return null;
}
getManifestSchemaVersion() {
return this._manifestSchemaVersion;
}
getMarketplaceID() {
return this._id;
}
getMarketplaceVersion() {
return this._version;
}
getDefaultLocale() {
return this._defaultLocale;
}
getLocale() {
return this._UILocale;
}
getProviderName() {
return this._providerName;
}
getIdIssuer() {
return this._idIssuer;
}
getAlternateId() {
return this._alternateId;
}
getSignature() {
return this._signature;
}
getCapabilities() {
return this._capabilities;
}
getDisplayName(locale) {
return this._displayNames[locale.toLocaleLowerCase()];
}
getDefaultDisplayName() {
return this._getDefaultValue(this._displayNames);
}
getDescription(locale) {
locale = this._fixLocaleCasing(locale);
return this._descriptions[locale];
}
getDefaultDescription() {
return this._getDefaultValue(this._descriptions);
}
getIconUrl(locale) {
locale = this._fixLocaleCasing(locale);
return this._iconUrls[locale];
}
getDefaultIconUrl() {
return this._getDefaultValue(this._iconUrls);
}
getSupportUrl(locale) {
locale = this._fixLocaleCasing(locale);
return this._supportUrls[locale];
}
getDefaultSupportUrl() {
return this._getDefaultValue(this._supportUrls);
}
getSourceLocation(locale, formFactor) {
var extensionSetting = this._getExtensionSetting(formFactor);
var sourceLocations = extensionSetting.getSourceLocations();
return sourceLocations[locale.toLocaleLowerCase()];
}
getDefaultSourceLocation(formFactor) {
var extensionSetting = this._getExtensionSetting(formFactor);
var sourceLocations = extensionSetting.getSourceLocations();
return this._getDefaultValue(sourceLocations);
}
getDefaultWidth(formFactor) {
var extensionSetting = this._getExtensionSetting(formFactor);
return extensionSetting.getDefaultWidth();
}
getDefaultHeight(formFactor) {
var extensionSetting = this._getExtensionSetting(formFactor);
return extensionSetting.getDefaultHeight();
}
getTarget() {
return this._target;
}
getOmexTargetCode() {
switch (this._target) {
case OSF.OfficeAppType.ContentApp:
return 2;
case OSF.OfficeAppType.TaskPaneApp:
return 1;
case OSF.OfficeAppType.MailApp:
return 3;
default:
return 0;
}
}
getPermission() {
return this._permissions;
}
hasPermission(permissionNeeded) {
return (this._permissions & permissionNeeded) === permissionNeeded;
}
getHosts() {
return this._hosts;
}
getHostsXml() {
return this._hostsXml;
}
getPayloadType() {
return this._payloadType;
}
getRequirements() {
return this._requirements;
}
getRequirementsXml() {
return this._requirementsXml;
}
getHighResolutionIconUrl(locale) {
locale = this._fixLocaleCasing(locale);
return this._highResolutionIconUrls[locale];
}
getDefaultHighResolutionIconUrl() {
return this._getDefaultValue(this._highResolutionIconUrls);
}
getAppDomains() {
return this._appDomains;
}
getInMemoryEToken() {
return this._inMemoryEToken;
}
isAllowSnapshot() {
return this._allowSnapshot;
}
addManifestUrl(manifestUrl) {
var urlDomain = OfficeExt.WACUtils.getDomainForUrl(manifestUrl);
if (this._appDomains.indexOf(urlDomain) === -1) {
this._appDomains.push(urlDomain);
}
}
getWebApplicationResource() {
return this._webApplicationResource;
}
getWebApplicationId() {
return this._webApplicationId;
}
getWebApplicationMsaId() {
return this._webApplicationMsaId;
}
getWebApplicationScopes() {
return this._webApplicationScopes;
}
getWebApplicationAuthorizations() {
return this._webApplicationAuthorizations;
}
getEquivalentAddins() {
if (this._equivalentAddins) {
return this._equivalentAddins.getEquivalentAddins();
}
return [];
}
isXLLCompatible() {
if (this._equivalentAddins) {
return this._equivalentAddins.isXLLCompatible();
}
return false;
}
isSSOAddin() {
return !!this._webApplicationResource && !!this._webApplicationId;
}
containsAddinCommands(manifestHostType) {
var hostNode = this._getCurrentHostTypeNode(manifestHostType);
if (hostNode !== null) {
var formFactorNode = this._xmlProcessor.selectSingleNode("ov:DesktopFormFactor", hostNode);
if (formFactorNode != null) {
return true;
}
}
return false;
}
getRibbonExtensionControlMap() {
return this._ribbonExtensionControls;
}
getExtendedOverrides() {
return this._extendedOverrides;
}
getExtendedOverridesTokens() {
if (this._extendedOverridesTokens) {
return this._extendedOverridesTokens;
}
return [];
}
containsCustomFunctions(manifestHostType) {
var hostNode = this._getCurrentHostTypeNode(manifestHostType);
if (hostNode !== null) {
var formFactorNode = this._xmlProcessor.selectSingleNode("ov:AllFormFactors", hostNode);
if (formFactorNode !== null) {
var extensionPointNodes = this._xmlProcessor.selectNodes("ov:ExtensionPoint", formFactorNode);
if (extensionPointNodes !== null) {
var len = extensionPointNodes.length;
for (var i = 0; i < len; i++) {
var extensionPointType = this.getNodeXsiType(extensionPointNodes[i]);
if (extensionPointType === "CustomFunctions") {
return true;
}
}
}
}
}
return false;
}
containsCustomFunctionsForAppHost(appHostType) {
var manifestHostType = OSF.getManifestHostType(appHostType);
return appHostType != OSF.HostType.Outlook && this.containsCustomFunctions(manifestHostType);
}
getSharedRuntimeForCustomFunctions(manifestHostType) {
if (manifestHostType == null || this._versionOverrides == null) {
return null;
}
var host = this._versionOverrides[manifestHostType];
if (host == null || host._customFunctionExtensionPoint == null || host._runtimes == null) {
return null;
}
else {
return host._runtimes.getSharedRuntime(host._customFunctionExtensionPoint.pageResId);
}
}
getSharedRuntimeForTaskpane(manifestHostType, controlId) {
if (manifestHostType == null || controlId == null || this._versionOverrides == null) {
return null;
}
var host = this._versionOverrides[manifestHostType];
if (host == null || host._showTaskpaneControls == null || host._runtimes == null) {
return null;
}
var showTaskpaneResid = null;
this._iterateAppCommandShowTaskpaneControls(host._showTaskpaneControls, (control) => {
if (control == null || control.action == null) {
return false;
}
if (control.action.taskpaneId === controlId || control.id === controlId) {
showTaskpaneResid = control.action.sourceLocationResid;
return true;
}
return false;
});
return showTaskpaneResid == null ? null : host._runtimes.getSharedRuntime(showTaskpaneResid);
}
getTaskpaneIdByRuntimeId(manifestHostType, runtimeId) {
if (manifestHostType == null || runtimeId == null || this._versionOverrides == null) {
return null;
}
var host = this._versionOverrides[manifestHostType];
if (host == null || host._showTaskpaneControls == null || host._runtimes == null) {
return null;
}
var taskpaneId = null;
this._iterateAppCommandShowTaskpaneControls(host._showTaskpaneControls, (control) => {
if (control == null || control.action == null) {
return false;
}
if (control.action.sourceLocationResid === runtimeId) {
taskpaneId = control.action.taskpaneId;
return true;
}
return false;
});
return taskpaneId;
}
getSharedRuntimeById(manifestHostType, runtimeId) {
if (this._versionOverrides == null) {
return null;
}
var host = this._versionOverrides[manifestHostType];
if (host == null || host._runtimes == null) {
return null;
}
return host._runtimes.getSharedRuntime(runtimeId);
}
getSharedRuntimeForAppCmdsExecuteFunction(manifestHostType) {
if (manifestHostType == null || this._versionOverrides == null) {
return null;
}
var host = this._versionOverrides[manifestHostType];
if (host == null || host._runtimes == null) {
return null;
}
else {
return host._runtimes.getSharedRuntime(host._functionFileResid);
}
}
getSharedRuntimeId(manifestHostType, isForUiLess, controlId) {
let runtime = isForUiLess ? this.getSharedRuntimeForAppCmdsExecuteFunction(manifestHostType) : this.getSharedRuntimeForTaskpane(manifestHostType, controlId);
return (runtime !== null) ? runtime.Resid : null;
}
getResourceValue(resourceType, resourceId) {
if (resourceId == null || this._resources == null) {
return null;
}
const resources = this._resources;
const resourcesMapping = {
[ResourceType.Image]: resources.Images,
[ResourceType.Url]: resources.Urls,
[ResourceType.ShortString]: resources.ShortStrings,
[ResourceType.LongString]: resources.LongStrings
};
const resourcesOfChosenType = resourcesMapping[resourceType];
if (resourcesOfChosenType == null) {
return null;
}
return resourcesOfChosenType[resourceId];
}
sharedRuntimeHasShortLifeTime(manifestHostType, resid) {
if (manifestHostType === null || resid === null || this._versionOverrides === null) {
return false;
}
var host = this._versionOverrides[manifestHostType];
if (host === null || host._runtimes === null) {
return false;
}
let runtime = host._runtimes.getSharedRuntime(resid);
return (runtime === null) ? false : (runtime.LifeTime === RuntimeLifeTime.Short);
}
complementVersion(version) {
if (RegExp("^[0-9]{1,5}(\\.[0-9]{1,5}){3}$").test(version)) {
}
else if (RegExp("^[0-9]{1,5}(\\.[0-9]{1,5}){2}$").test(version)) {
version = version + ".0";
}
else if (RegExp("^[0-9]{1,5}\\.[0-9]{1,5}$").test(version)) {
version = version + ".0.0";
}
else if (RegExp("^[0-9]{1,5}$").test(version)) {
version = version + ".0.0.0";
}
else {
}
return version;
}
isForOfficeAppManifest() {
return false;
}
converterLogging() {
return false;
}
getSolutionReference() {
return this._solutionRef;
}
addLocaleSeen(locale) {
if (locale != null) {
this._localesSeen[locale.toLowerCase()] = true;
}
}
_iterateAppCommandShowTaskpaneControls(showTaskpaneControls, callback) {
if (showTaskpaneControls == null || callback == null) {
return;
}
for (var i = 0; i < showTaskpaneControls.length; i++) {
if (callback(showTaskpaneControls[i])) {
break;
}
}
}
_generateRibbonExtensionControlMap(manifestHostType) {
if (manifestHostType == null || this._versionOverrides == null) {
return null;
}
var host = this._versionOverrides[manifestHostType];
var ribbonExtensionControls = [];
if (host != null && host._addinCommandsExtensionPoints != null) {
var len = host._addinCommandsExtensionPoints.length;
for (var i = 0; i < len; i++) {
var extPoint = host._addinCommandsExtensionPoints[i];
if (extPoint.type === "PrimaryCommandSurface") {
if (extPoint.tabs) {
for (var tabIdx = 0; tabIdx < extPoint.tabs.length; tabIdx++) {
var tab = extPoint.tabs[tabIdx];
this._ribbonExtensionControls[tab.id] = tab;
this._addRibbonControlsToMap(tab);
}
}
}
}
}
}
_addRibbonControlsToMap(parentControl) {
if (parentControl && parentControl.children) {
for (var idx = 0; idx < parentControl.children.length; idx++) {
var control = parentControl.children[idx];
if (control && !(control instanceof OfficeExt.Parser.MenuControl)) {
this._ribbonExtensionControls[control.id] = control;
}
this._addRibbonControlsToMap(control);
}
}
}
_retrieveAppCommandShowTaskpaneControls(manifestHostType) {
if (manifestHostType == null || this._versionOverrides == null) {
return null;
}
var host = this._versionOverrides[manifestHostType];
var appCommandShowTaskpaneControls = [];
if (host != null && host._addinCommandsExtensionPoints != null) {
var len = host._addinCommandsExtensionPoints.length;
for (var i = 0; i < len; i++) {
var extPoint = host._addinCommandsExtensionPoints[i];
if (extPoint == null) {
continue;
}
if (extPoint.type === "PrimaryCommandSurface") {
if (extPoint.tabs == null) {
continue;
}
for (var j = 0; j < extPoint.tabs.length; j++) {
var tab = extPoint.tabs[j];
if (tab == null || tab.children == null) {
continue;
}
for (var groupIndex = 0; groupIndex < tab.children.length; groupIndex++) {
var group = tab.children[groupIndex];
if (group == null || group.children == null) {
continue;
}
this._getShowTaskpaneControlsFromControlsParent(group, appCommandShowTaskpaneControls);
}
}
}
else if (extPoint.type === "ContextMenu") {
if (extPoint.children == null) {
continue;
}
var officeMenuNode = extPoint.children[0];
if (officeMenuNode == null || officeMenuNode.children == null) {
continue;
}
this._getShowTaskpaneControlsFromControlsParent(officeMenuNode, appCommandShowTaskpaneControls);
}
}
}
return appCommandShowTaskpaneControls;
}
_getShowTaskpaneControlsFromControlsParent(controlsParent, appCommandShowTaskpaneControls) {
if (controlsParent == null || controlsParent.children == null || appCommandShowTaskpaneControls == null) {
return;
}
for (var controlIndex = 0; controlIndex < controlsParent.children.length; controlIndex++) {
var control = controlsParent.children[controlIndex];
if (control != null) {
if (control.controlType === "Button") {
if (control.action != null && control.actionType === "ShowTaskpane") {
appCommandShowTaskpaneControls.push(control);
}
}
else {
if (control.children == null) {
continue;
}
for (var itemIndex = 0; itemIndex < control.children.length; itemIndex++) {
var menuItem = control.children[itemIndex];
if (menuItem != null && menuItem.action != null && menuItem.actionType === "ShowTaskpane") {
appCommandShowTaskpaneControls.push(menuItem);
}
}
}
}
}
}
_validateShowTaskpaneSharedRuntime(manifestHostType) {
if (manifestHostType == null || this._versionOverrides == null) {
return;
}
var host = this._versionOverrides[manifestHostType];
if (host == null || host._runtimes == null || host._showTaskpaneControls == null) {
return;
}
var validsharedTaskPaneRuntimes = [];
this._iterateAppCommandShowTaskpaneControls(host._showTaskpaneControls, (control) => {
if (control == null || control.action == null) {
return false;
}
var sharedRuntime = host._runtimes.getSharedRuntime(control.action.sourceLocationResid);
var sharedRuntimeId = null;
if (sharedRuntime == null || sharedRuntime.LifeTime != RuntimeLifeTime.Long) {
if (control.action.taskpaneId == null) {
return false;
}
}
else {
sharedRuntimeId = sharedRuntime.Resid;
}
var taskpaneIdAndResIdPair = new Array(control.action.taskpaneId, sharedRuntimeId);
var needToAddActionToSharedRuntimeSet = true;
for (var i = 0; i < validsharedTaskPaneRuntimes.length; i++) {
if (validsharedTaskPaneRuntimes[i][0] == taskpaneIdAndResIdPair[0] && validsharedTaskPaneRuntimes[i][1] == taskpaneIdAndResIdPair[1]) {
if (taskpaneIdAndResIdPair[0] == null) {
throw OsfMsAjaxFactory.msAjaxError.argument("Manifest parser failure: resid and taskpaneid not correct");
}
else {
needToAddActionToSharedRuntimeSet = false;
break;
}
}
else if ((validsharedTaskPaneRuntimes[i][1] == taskpaneIdAndResIdPair[1] && validsharedTaskPaneRuntimes[i][1] != null)
|| (validsharedTaskPaneRuntimes[i][0] == taskpaneIdAndResIdPair[0] && validsharedTaskPaneRuntimes[i][0] != null)) {
needToAddActionToSharedRuntimeSet = false;
throw OsfMsAjaxFactory.msAjaxError.argument("Manifest parser failure: resid and taskpaneid not correct");
}
}
if (needToAddActionToSharedRuntimeSet) {
validsharedTaskPaneRuntimes.push(taskpaneIdAndResIdPair);
}
return false;
});
}
_getDefaultValue(obj) {
var localeValue;
if (this._UILocale) {
localeValue = obj[this._UILocale] || obj[this._UILocale.toLocaleLowerCase()] || undefined;
}
if (!localeValue && this._defaultLocale) {
localeValue = obj[this._defaultLocale] || obj[this._defaultLocale.toLocaleLowerCase()] || undefined;
}
if (!localeValue) {
var locale;
for (var p in obj) {
locale = p;
break;
}
localeValue = obj[locale];
}
return localeValue;
}
_getExtensionSetting(formFactor) {
var extensionSetting;
if (typeof this._extensionSettings[formFactor] != "undefined") {
extensionSetting = this._extensionSettings[formFactor];
}
else {
for (var p in this._extensionSettings) {
extensionSetting = this._extensionSettings[p];
break;
}
}
return extensionSetting;
}
_addDisplayName(locale, value) {
this._displayNames[locale.toLocaleLowerCase()] = value;
}
_addDescription(locale, value) {
locale = this._fixLocaleCasing(locale);
this._descriptions[locale] = value;
}
_addIconUrl(locale, value) {
locale = this._fixLocaleCasing(locale);
this._iconUrls[locale] = value;
}
_addSupportUrl(locale, value) {
locale = this._fixLocaleCasing(locale);
this._supportUrls[locale] = value;
}
_fixLocaleCasing(locale) {
if (this.isForOfficeAppManifest() && locale != null) {
return locale.toLowerCase();
}
return locale;
}
_parseLocaleAwareSettings(localeAwareNode, addCallback) {
if (!localeAwareNode) {
throw OsfMsAjaxFactory.msAjaxError.argument("Manifest");
}
var defaultValue = localeAwareNode.getAttribute("DefaultValue");
addCallback(this._defaultLocale, defaultValue);
var overrideNodes = this._xmlProcessor.selectNodes("o:Override", localeAwareNode);
if (overrideNodes) {
var len = overrideNodes.length;
for (var i = 0; i < len; i++) {
var node = overrideNodes[i];
var locale = node.getAttribute("Locale");
this.addLocaleSeen(locale);
var value = node.getAttribute("Value");
addCallback(locale, value);
}
}
}
_parseBooleanNode(node) {
if (!node) {
return false;
}
else {
var value = this._xmlProcessor.getNodeValue(node).toLowerCase();
return value === "true" || value === "1";
}
}
_parseIdIssuer(node) {
if (!node) {
return OSF.ManifestIdIssuer.Custom;
}
else {
var value = this._xmlProcessor.getNodeValue(node);
return OSF.OUtil.parseEnum(value, OSF.ManifestIdIssuer);
}
}
_parseCapabilities(nodes) {
var capabilities = [];
var capability;
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
capability = node.getAttribute("Name");
capability = OSF.OUtil.parseEnum(capability, OSF.Capability);
capabilities.push(capability);
}
return capabilities;
}
_parsePermission(capabilityNode) {
if (!capabilityNode) {
throw OsfMsAjaxFactory.msAjaxError.argument("Manifest");
}
var value = this._xmlProcessor.getNodeValue(capabilityNode);
return OSF.OUtil.parseEnum(value, OSF.OsfControlPermission);
}
_parseExtensionSettings() {
var settings;
var settingNode;
var node;
for (var formFactor in OSF.FormFactor) {
var officeAppNode = this._xmlProcessor.selectSingleNode("o:OfficeApp");
settingNode = this._xmlProcessor.selectSingleNode("o:" + OSF.FormFactor[formFactor], officeAppNode);
if (settingNode) {
settings = new OSF.Manifest.ExtensionSettings();
node = this._xmlProcessor.selectSingleNode("o:SourceLocation", settingNode);
var addSourceLocation = (locale, value) => {
settings._addSourceLocation(locale, value);
this.addManifestUrl(value);
};
this._parseLocaleAwareSettings(node, addSourceLocation);
node = this._xmlProcessor.selectSingleNode("o:RequestedWidth", settingNode);
if (node) {
settings._setDefaultWidth(this._xmlProcessor.getNodeValue(node));
}
node = this._xmlProcessor.selectSingleNode("o:RequestedHeight", settingNode);
if (node) {
settings._setDefaultHeight(this._xmlProcessor.getNodeValue(node));
}
this._extensionSettings[formFactor] = settings;
}
}
if (!settings) {
throw OsfMsAjaxFactory.msAjaxError.argument("Manifest");
}
}
_parseHosts(hostsNode) {
var targetHosts = [];
if (hostsNode) {
var hostNodes = this._xmlProcessor.selectNodes("o:Host", hostsNode);
for (var i = 0; i < hostNodes.length; i++) {
targetHosts.push(hostNodes[i].getAttribute("Name"));
}
}
return targetHosts;
}
_parseWebApplicationInfo(obj, parentNode, nodeNamespace) {
var webApplicationInfoNode = this._xmlProcessor.selectSingleNode(nodeNamespace + "WebApplicationInfo", parentNode);
if (webApplicationInfoNode) {
var webApplicationResourceNode = this._xmlProcessor.selectSingleNode(nodeNamespace + "Resource", webApplicationInfoNode);
if (webApplicationResourceNode) {
obj._webApplicationResource = this._xmlProcessor.getNodeValue(webApplicationResourceNode);
}
var webApplicationIdNode = this._xmlProcessor.selectSingleNode(nodeNamespace + "Id", webApplicationInfoNode);
obj._webApplicationId = this._xmlProcessor.getNodeValue(webApplicationIdNode);
var webApplicationMsaIdNode = this._xmlProcessor.selectSingleNode(nodeNamespace + "MsaId", webApplicationInfoNode);
if (webApplicationMsaIdNode) {
obj._webApplicationMsaId = this._xmlProcessor.getNodeValue(webApplicationMsaIdNode);
}
else {
obj._webApplicationMsaId = this._webApplicationId;
}
var webApplicationScopesNode = this._xmlProcessor.selectSingleNode(nodeNamespace + "Scopes", webApplicationInfoNode);
obj._webApplicationScopes = this._parseWebApplicationScopes(webApplicationScopesNode, nodeNamespace);
obj._webApplicationAuthorizations = this._parseWebAppInfoAuthorizations(webApplicationInfoNode, nodeNamespace);
}
}
_parseWebApplicationScopes(webApplicationScopesNode, nodeNamespace) {
var scopes = [];
if (webApplicationScopesNode) {
var scopeNodes = this._xmlProcessor.selectNodes(nodeNamespace + "Scope", webApplicationScopesNode);
for (var i = 0; i < scopeNodes.length; i++) {
scopes.push(this._xmlProcessor.getNodeValue(scopeNodes[i]));
}
}
return scopes;
}
_parseWebAppInfoAuthorizations(webAppInfoAuthsNode, nodeNamespace) {
var authorizations = [];
var authorizationsNode = this._xmlProcessor.selectSingleNode(nodeNamespace + "Authorizations", webAppInfoAuthsNode);
if (authorizationsNode) {
var authorizationNodes = this._xmlProcessor.selectNodes(nodeNamespace + "Authorization", authorizationsNode);
if (authorizationNodes) {
for (var authNodeIndex = 0; authNodeIndex < authorizationNodes.length; authNodeIndex++) {
var authNode = authorizationNodes[authNodeIndex];
var authorization = new OSF.Manifest.WebAppInfoAuthorization();
var resourceNode = this._xmlProcessor.selectSingleNode(nodeNamespace + "Resource", authNode);
if (resourceNode) {
authorization._resource = this._xmlProcessor.getNodeValue(resourceNode);
}
var scopesNode = this._xmlProcessor.selectSingleNode(nodeNamespace + "Scopes", authNode);
if (scopesNode) {
var scopeNodes = this._xmlProcessor.selectNodes(nodeNamespace + "Scope", scopesNode);
if (scopeNodes) {
var scopes = [];
for (var scopeNodeIndex = 0; scopeNodeIndex < scopeNodes.length; scopeNodeIndex++) {
var scopeNode = scopeNodes[scopeNodeIndex];
scopes.push(this._xmlProcessor.getNodeValue(scopeNode));
}
authorization._scopes = scopes;
}
}
authorizations.push(authorization);
}
}
}
return authorizations;
}
_parseRequirements(requirementsNode, nodeNamespace) {
var requirements = {
sets: [],
methods: []
};
if (requirementsNode) {
let ns = nodeNamespace == null ? "o:" : nodeNamespace;
var setsNode = this._xmlProcessor.selectSingleNode(ns + "Sets", requirementsNode);
requirements.sets = this._parseSets(setsNode, ns);
var methodsNode = this._xmlProcessor.selectSingleNode(ns + "Methods", requirementsNode);
requirements.methods = this._parseMethods(methodsNode, ns);
}
return requirements;
}
_parseSets(setsNode, nodeNamespace) {
var sets = [];
if (setsNode) {
let ns = nodeNamespace == null ? "o:" : nodeNamespace;
var defaultVersion = setsNode.getAttribute("DefaultMinVersion");
var setNodes = this._xmlProcessor.selectNodes(ns + "Set", setsNode);
for (var i = 0; i < setNodes.length; i++) {
var setNode = setNodes[i];
var overrideVersion = setNode.getAttribute("MinVersion");
sets.push({
name: setNode.getAttribute("Name"),
version: overrideVersion || defaultVersion
});
}
}
return sets;
}
_parseMethods(methodsNode, nodeNamespace) {
var methods = [];
if (methodsNode) {
let ns = nodeNamespace == null ? "o:" : nodeNamespace;
var methodNodes = this._xmlProcessor.selectNodes(ns + "Method", methodsNode);
for (var i = 0; i < methodNodes.length; i++) {
methods.push(methodNodes[i].getAttribute("Name"));
}
}
return methods;
}
_parseSourceLocationOverrides(versionOverridesNode) {
var idToSouceLocationOverrideMapping = {};
if (versionOverridesNode) {
var resourcesNode = this._xmlProcessor.selectSingleNode("ov:Resources", versionOverridesNode);
if (resourcesNode) {
var btUrlsNode = this._xmlProcessor.selectSingleNode("bt:Urls", resourcesNode);
if (btUrlsNode) {
var urlList = this._xmlProcessor.selectNodes("bt:Url", btUrlsNode);
if (urlList) {
for (var x = 0; x < urlList.length; x++) {
var node = urlList[x];
var id = node.getAttribute("id");
var sourceLocationOverride = node.getAttribute("DefaultValue");
if (id && sourceLocationOverride) {
idToSouceLocationOverrideMapping[id] = sourceLocationOverride;
}
}
}
}
}
}
return idToSouceLocationOverrideMapping;
}
_parseAppDomains(appDomainsNode) {
var appDomains = [];
if (appDomainsNode) {
var appDomainNodes = this._xmlProcessor.selectNodes("o:AppDomain", appDomainsNode);
for (var i = 0; i < appDomainNodes.length; i++) {
var url = this._xmlProcessor.getNodeValue(appDomainNodes[i]);
if (OSF.OUtil.doesUrlHaveSupportedProtocol(url)) {
var appDomain = OfficeExt.WACUtils.getDomainForUrl(url);
if (appDomains.indexOf(appDomain) === -1) {
appDomains.push(appDomain);
}
}
}
}
return appDomains;
}
_parseRuntimes(runtimesNode) {
if (runtimesNode == null) {
return null;
}
var runtimes = new OSF.Manifest.Runtimes();
var runtimeNodes = this._xmlProcessor.selectNodes("ov:Runtime", runtimesNode);
if (runtimeNodes == null) {
return null;
}
for (var i = 0; i < runtimeNodes.length; i++) {
var runtime = this._parseRuntime(runtimeNodes[i]);
runtimes.add(runtime);
}
return runtimes;
}
_parseRuntime(runtimeNode) {
if (runtimeNode == null) {
return null;
}
var runtime = new OSF.Manifest.Runtime();
runtime.Resid = runtimeNode.getAttribute("resid");
if (runtimeNode.getAttribute("lifetime") === "long") {
runtime.LifeTime = RuntimeLifeTime.Long;
}
else {
runtime.LifeTime = RuntimeLifeTime.Short;
}
if (this.isForOfficeAppManifest()) {
var runtimeOverrides = this._xmlProcessor.selectNodes("ov:Override", runtimeNode);
if (runtimeOverrides != null && Array.isArray(runtimeOverrides)) {
for (var i = 0; i < runtimeOverrides.length; i++) {
let runtimeOverride = new RuntimeOverride();
runtimeOverride.Type = runtimeNode.getAttribute("type");
runtimeOverride.Resid = runtimeNode.getAttribute("resid");
runtime.Overrides.add(runtimeOverride);
}
}
}
return runtime;
}
_parseEquivalentAddins(equivalentAddinsNode, nodeNamespace) {
var equivalentAddins = new OSF.Manifest.EquivalentAddins();
if (equivalentAddinsNode) {
var equivalentAddinNodes = this._xmlProcessor.selectNodes(nodeNamespace + "EquivalentAddin", equivalentAddinsNode);
for (var i = 0; i < equivalentAddinNodes.length; i++) {
var equivalentAddin = this._parseEquivalentAddin(equivalentAddinNodes[i], nodeNamespace);
equivalentAddins.add(equivalentAddin);
}
}
return equivalentAddins;
}
_parseEquivalentAddin(equivalentAddinNode, nodeNamespace) {
var equivalentAddin = new OSF.Manifest.EquivalentAddin();
if (equivalentAddinNode) {
var progIdNode = this._xmlProcessor.selectSingleNode(nodeNamespace + "ProgId", equivalentAddinNode);
if (progIdNode) {
equivalentAddin._progId = this._xmlProcessor.getNodeValue(progIdNode);
}
var displayNameNode = this._xmlProcessor.selectSingleNode(nodeNamespace + "DisplayName", equivalentAddinNode);
if (displayNameNode) {
equivalentAddin._displayName = this._xmlProcessor.getNodeValue(displayNameNode);
}
var fileNameNode = this._xmlProcessor.selectSingleNode(nodeNamespace + "FileName", equivalentAddinNode);
if (fileNameNode) {
equivalentAddin._fileName = this._xmlProcessor.getNodeValue(fileNameNode);
}
var typeNode = this._xmlProcessor.selectSingleNode(nodeNamespace + "Type", equivalentAddinNode);
if (typeNode) {
var type = "" + this._xmlProcessor.getNodeValue(typeNode);
equivalentAddin._type = type.toUpperCase();
}
else {
throw OsfMsAjaxFactory.msAjaxError.argument("Manifest");
}
}
return equivalentAddin;
}
_parseExtendedOverrides(extendedOverridesNode) {
this._extendedOverrides = {
url: extendedOverridesNode.getAttribute("Url"),
resourcesUrl: extendedOverridesNode.getAttribute("ResourcesUrl"),
hasFinalUrls: false
};
var extendedOverridesTokensNode = this._xmlProcessor.selectSingleNode("o:Tokens", extendedOverridesNode);
if (extendedOverridesTokensNode != null) {
var extendedOverridesTokenNodes = this._xmlProcessor.selectNodes("o:Token", extendedOverridesTokensNode);
if (extendedOverridesTokenNodes != null) {
var extendedOverridesTokens = [];
for (var i = 0; i < extendedOverridesTokenNodes.length; i++) {
var curExtendedOverridesTokenNode = extendedOverridesTokenNodes[i];
var overridesNode = this._xmlProcessor.selectNodes("o:Override", curExtendedOverridesTokenNode);
var overrides = [];
var curExtendedOverridesNodeType = this.getNodeXsiType(curExtendedOverridesTokenNode);
if (curExtendedOverridesNodeType == OSF.ExtendedManifestSupportTokens.Requirements) {
for (var j = 0; j < overridesNode.length; j++) {
var requirements = this._xmlProcessor.selectSingleNode("o:Requirements", overridesNode[j]);
var override = {
value: overridesNode[j].getAttribute("Value"),
data: this._parseRequirements(requirements)
};
overrides.push(override);
}
}
else if (curExtendedOverridesNodeType == OSF.ExtendedManifestSupportTokens.Locale) {
for (var j = 0; j < overridesNode.length; j++) {
var override = {
value: overridesNode[j].getAttribute("Value"),
data: overridesNode[j].getAttribute("Locale").toLowerCase()
};
overrides.push(override);
}
}
var extendedOverridesToken = {
name: curExtendedOverridesTokenNode.getAttribute("Name"),
defaultValue: curExtendedOverridesTokenNode.getAttribute("DefaultValue"),
type: this.getNodeXsiType(curExtendedOverridesTokenNode),
overrides: overrides
};
extendedOverridesTokens.push(extendedOverridesToken);
}
this._extendedOverridesTokens = extendedOverridesTokens;
}
}
}
_addHighResolutionIconUrl(locale, url) {
locale = this._fixLocaleCasing(locale);
this._highResolutionIconUrls[locale] = url;
}
_isAddinCommandsManifest(manifestHostType) {
return this.containsAddinCommands(manifestHostType)
|| this.containsCustomFunctions(manifestHostType);
}
_getCurrentHostTypeNode(manifestHostType) {
if (this._xmlProcessor) {
var officeAppNode = this._xmlProcessor.selectSingleNode("o:OfficeApp");
if (officeAppNode !== null && this.getManifestSchemaVersion() === OSF.ManifestSchemaVersion["1.1"]) {
var overridesNode = this._xmlProcessor.selectSingleNode("ov:VersionOverrides", officeAppNode);
if (overridesNode !== null) {
var hostsNode = this._xmlProcessor.selectSingleNode("ov:Hosts", overridesNode);
if (hostsNode !== null) {
var hostNodes = this._xmlProcessor.selectNodes("ov:Host", hostsNode);
if (hostNodes !== null) {
var len = hostNodes.length;
for (var i = 0; i < len; i++) {
var hostType = this.getNodeXsiType(hostNodes[i]);
if (hostType === manifestHostType) {
return hostNodes[i];
}
}
}
}
}
}
}
return null;
}
_getEntitlement(solRef) {
if (solRef == null) {
var solRef = {
solutionId: this._id,
version: this._version,
storeType: OSF.StoreType.FileSystem,
storeId: this._UILocale,
assetId: this._id,
assetStoreId: null
};
this._solutionRef = solRef;
}
let entitlement = {
solutionId: this._solutionRef.solutionId,
version: this._solutionRef.version,
storeType: this._solutionRef.storeType,
storeId: this._solutionRef.storeId,
assetId: this._solutionRef.assetId,
assetStoreId: this._solutionRef.assetStoreId,
targetType: this._target,
};
return entitlement;
}
}
Manifest_1.Manifest = Manifest;
})(Manifest = OSF.Manifest || (OSF.Manifest = {}));
})(OSF || (OSF = {}));
var OSF;
(function (OSF) {
let Manifest;
(function (Manifest) {
class FormSetting {
}
Manifest.FormSetting = FormSetting;
class OfficeAppManifest extends OSF.Manifest.Manifest {
constructor(payload, uiLocale, converterLogging, solRef) {
super(payload, uiLocale, OSF.PayloadType.OfficeAddin, solRef);
this._converterLogging = converterLogging;
if (this._target === OSF.OfficeAppType.MailApp) {
this._namespace = OSF.ParserStrings.Mailappor;
}
else if (this._target == OSF.OfficeAppType.TaskPaneApp) {
this._namespace = "ov:";
}
else if (this._target == OSF.OfficeAppType.ContentApp) {
this._namespace = "c:";
}
if (this._target === OSF.OfficeAppType.MailApp || this._target === OSF.OfficeAppType.TaskPaneApp) {
this._parseOverrideCore();
}
}
isForOfficeAppManifest() {
return true;
}
converterLogging() {
return (this._converterLogging == true);
}
_parseExtensionSettings() {
if (this._target == OSF.OfficeAppType.MailApp) {
this._parseFormSettings();
this._parseDisableEntityHighlighting();
}
else {
super._parseExtensionSettings();
}
}
_parseFormSettings() {
const formFactorSettings = ["DesktopSettings", "TabletSettings", "PhoneSettings"];
let officeAppNode = this._xmlProcessor.selectSingleNode(OSF.ParserStrings.OOfficeApp);
let formNodes = OSF.SelectChildNodes(this._xmlProcessor, "o:" + OSF.ParserStrings.Form, officeAppNode, ["o:" + OSF.ParserStrings.FormSettings]);
this._formSettings = [];
for (const formNode of formNodes) {
const formType = this.getNodeXsiType(formNode);
if (formType == null) {
throw OsfMsAjaxFactory.msAjaxError.argument("Form node without a type.");
}
this._formSettings[formType] = {};
for (let ff of formFactorSettings) {
let settingsNode = this._xmlProcessor.selectSingleNode("o:" + ff, formNode);
if (settingsNode != null) {
this._formSettings[formType][ff] = {};
let sourceLocationNode = this._xmlProcessor.selectSingleNode("o:" + OSF.ParserStrings.SourceLocation, settingsNode);
if (sourceLocationNode != null) {
this._formSettings[formType][ff].SourceLocation = {};
let addSourceLocationCallback = (locale, value) => {
this._formSettings[formType][ff].SourceLocation[locale] = value;
};
this._parseLocaleAwareSettings(sourceLocationNode, addSourceLocationCallback);
}
let requestedHeightNode = this._xmlProcessor.selectSingleNode("o:" + OSF.ParserStrings.RequestedHeight, settingsNode);
if (requestedHeightNode != null) {
this._formSettings[formType][ff].RequestedHeight = this._xmlProcessor.getNodeValue(requestedHeightNode);
}
}
}
}
}
_parseDisableEntityHighlighting() {
let officeAppNode = this._xmlProcessor.selectSingleNode(OSF.ParserStrings.OOfficeApp);
let disableEntityHighlightingNode = this._xmlProcessor.selectSingleNode("o:DisableEntityHighlighting", officeAppNode);
if (disableEntityHighlightingNode != null) {
let value = this._xmlProcessor.getNodeValue(disableEntityHighlightingNode).toLowerCase();
this._disableEntityHighlighting = (value === "true" || value === "1");
}
}
_parseOverrideCore() {
let officeAppNode = this._xmlProcessor.selectSingleNode("o:OfficeApp");
let node;
if (this._manifestSchemaVersion === OSF.ManifestSchemaVersion["1.1"]) {
let ns = this._namespace;
node = this._xmlProcessor.selectSingleNode(this._namespace + "VersionOverrides", officeAppNode);
if (this._target === OSF.OfficeAppType.MailApp) {
let versionOverridesNodePath = OSF.GetVersionOverridesPath(this._xmlProcessor, ns, OSF.VersionOverridesNumber.V1_1);
node = OSF.SelectSingleNode(this._xmlProcessor, officeAppNode, versionOverridesNodePath, true);
ns = OSF.GetVersionOverridesNamespace(ns, OSF.VersionOverridesNumber.V1_1);
}
if (node != null) {
let equivalentAddinsNode = this._xmlProcessor.selectSingleNode(ns + "EquivalentAddins", node);
this._equivalentAddins = this._parseEquivalentAddins(equivalentAddinsNode, ns);
}
}
if (this._manifestSchemaVersion === OSF.ManifestSchemaVersion["1.1"]) {
for (const v in OSF.VersionOverridesNumber) {
let versionOverridesNumber = Number(v);
if (isNaN(versionOverridesNumber) || versionOverridesNumber == OSF.VersionOverridesNumber.Max) {
continue;
}
let versionOverridesNodePath = OSF.GetVersionOverridesPath(this._xmlProcessor, this._namespace, versionOverridesNumber);
let versionOverridesNode = OSF.SelectSingleNode(this._xmlProcessor, officeAppNode, versionOverridesNodePath, true);
if (versionOverridesNode == null) {
break;
}
this._parseRuntimesAndVersionOverrides(versionOverridesNode, versionOverridesNumber);
}
}
}
_parseRuntimesAndVersionOverrides(versionOverridesNode, versionOverridesNumber) {
let versionOverridesString = this.getNodeXsiType(versionOverridesNode);
if (versionOverridesString === OSF.GetVersionOverridesString(versionOverridesNumber)) {
let ns = OSF.GetVersionOverridesNamespace(this._namespace, versionOverridesNumber);
let hostsNode = this._xmlProcessor.selectSingleNode(ns + "Hosts", versionOverridesNode);
if (hostsNode != null) {
let hostNodes = this._xmlProcessor.selectNodes(ns + "Host", hostsNode);
let len = hostNodes == null ? 0 : hostNodes.length;
for (let i = 0; i < len; i++) {
this._hostType = this.getNodeXsiType(hostNodes[i]);
let versionOverrides;
if (this._hostType !== "MailHost") {
versionOverrides = this._versionOverrides[this._hostType];
}
if (this._versionOverrides[this._hostType] == null) {
this._versionOverrides[this._hostType] = {};
}
if (this._versionOverrides[this._hostType][versionOverridesNumber] == null) {
versionOverrides = {};
versionOverrides["_addinCommandsExtensionPoints"] = {};
versionOverrides["_functionFileResid"] = {};
versionOverrides["_supportsSharedFolders"] = {};
}
versionOverrides["_webApplicationInfo"] = {};
this._parseWebApplicationInfo(versionOverrides["_webApplicationInfo"], versionOverridesNode, ns);
let connectedServiceControlsScopesNode = OSF.SelectSingleNode(this._xmlProcessor, versionOverridesNode, [ns + "ConnectedServiceControls", ns + "Scopes"], true);
versionOverrides["_connectedServiceControlsScopes"] = this._parseWebApplicationScopes(connectedServiceControlsScopesNode, ns);
let extendedPermissionsNode = this._xmlProcessor.selectSingleNode(ns + "ExtendedPermissions", versionOverridesNode);
versionOverrides["_extendedPermissions"] = this._parseExtendedPermissions(extendedPermissionsNode, ns);
let requirementsNode = this._xmlProcessor.selectSingleNode(ns + "Requirements", versionOverridesNode);
if (requirementsNode != null) {
versionOverrides["_requirements"] = this._parseRequirements(requirementsNode, "bt:");
}
let runtimesNode = this._xmlProcessor.selectSingleNode(ns + "Runtimes", hostNodes[i]);
if (runtimesNode) {
versionOverrides["_runtimes"] = this._parseRuntimes(runtimesNode, ns);
}
let formFactors = ["DesktopFormFactor", "MobileFormFactor"];
let formFactorIrrelevantPropertiesObtained = false;
for (const formFactor of formFactors) {
let addinCommandVersion = this._parseVersionOverridesFormFactor(this._hostType, versionOverridesNumber, formFactor);
versionOverrides["_addinCommandsExtensionPoints"][formFactor] = addinCommandVersion.ExtensionPoints;
versionOverrides["_functionFileResid"][formFactor] = addinCommandVersion.functionFileResid;
versionOverrides["_supportsSharedFolders"][formFactor] = addinCommandVersion.supportsSharedFolders;
if (!formFactorIrrelevantPropertiesObtained) {
versionOverrides["_description"] = addinCommandVersion.description;
versionOverrides["_resources"] = addinCommandVersion.resources;
formFactorIrrelevantPropertiesObtained = true;
}
}
if (this._hostType === "MailHost") {
this._versionOverrides[this._hostType][versionOverridesNumber] = versionOverrides;
}
else {
versionOverrides["_getStartedNode"] = this._versionOverrides[this._hostType]["_getStartedNode"];
versionOverrides["_customFunctionExtensionPoint"] = this._versionOverrides[this._hostType]["_customFunctionExtensionPoint"];
this._versionOverrides[this._hostType] = versionOverrides;
}
break;
}
}
}
}
_parseExtendedPermissions(extendedPermissionsNode, nodeNamespace) {
let extendedPermissions = [];
if (extendedPermissionsNode != null) {
let extendedPermissionNodes = this._xmlProcessor.selectNodes(nodeNamespace + "ExtendedPermission", extendedPermissionsNode);
for (const extendedPermissionNode of extendedPermissionNodes) {
extendedPermissions.push(this._xmlProcessor.getNodeValue(extendedPermissionNode));
}
}
return extendedPermissions;
}
_parseRuntimes(runtimesNode, nodeNamespace) {
let runtimes = new OSF.Manifest.Runtimes();
let ns = nodeNamespace == null ? this._namespace : nodeNamespace;
if (runtimesNode != null) {
let runtimeNodes = this._xmlProcessor.selectNodes(ns + "Runtime", runtimesNode);
if (runtimeNodes != null) {
for (let i = 0; i < runtimeNodes.length; i++) {
let runtime = this._parseRuntime(runtimeNodes[i], ns);
runtimes.add(runtime);
}
}
}
return runtimes;
}
_parseRuntime(runtimeNode, nodeNamespace) {
if (runtimeNode == null) {
return null;
}
let runtime = new OSF.Manifest.Runtime();
runtime.Resid = runtimeNode.getAttribute("resid");
if (runtimeNode.getAttribute("lifetime") == "long") {
runtime.LifeTime = RuntimeLifeTime.Long;
}
else {
runtime.LifeTime = RuntimeLifeTime.Short;
}
let ns = nodeNamespace == null ? this._namespace : nodeNamespace;
let overrideNodes = this._xmlProcessor.selectNodes(ns + "Override", runtimeNode);
if (overrideNodes != null) {
for (let i = 0; i < overrideNodes.length; i++) {
let override = new Manifest.RuntimeOverride();
override.Resid = overrideNodes[i].getAttribute("resid");
override.Type = overrideNodes[i].getAttribute("type");
runtime.Overrides.push(override);
}
}
return runtime;
}
_parseVersionOverridesFormFactor(hostType, versionOverridesNumber, formFactor) {
let addinCommandsParser = new OfficeExt.Parser.AddinCommandsManifestParser(hostType, formFactor, this._namespace);
let errorManager = {
"setErrorMessageForAddin": (errorMessage) => {
OsfMsAjaxFactory.msAjaxDebug.trace("Error parsing app manifest: " + errorMessage);
}
};
let entitlement = this._getEntitlement(this._solutionRef);
const addinCommands = (addinCommandsParser.parseExtensions(entitlement, this, errorManager, versionOverridesNumber));
return addinCommands;
}
_getVersionOverrides(versionOverridesNumber) {
if (this._versionOverrides[this._hostType] != null && versionOverridesNumber == null) {
return this._versionOverrides[this._hostType];
}
else if (this._versionOverrides[this._hostType] != null) {
return this._versionOverrides[this._hostType][versionOverridesNumber];
}
else {
return null;
}
}
getLocalesSeen() {
return this._localesSeen;
}
getFormSettings() {
return this._formSettings;
}
getDisableEntityHighlighting() {
return this._disableEntityHighlighting;
}
getVersionOverridesDescription(versionOverridesNumber) {
var _a;
return (_a = this._getVersionOverrides(versionOverridesNumber)) === null || _a === void 0 ? void 0 : _a._description;
}
getVersionOverridesRequirements(versionOverridesNumber) {
var _a;
return (_a = this._getVersionOverrides(versionOverridesNumber)) === null || _a === void 0 ? void 0 : _a._requirements;
}
getWebApplicationInfo(versionOverridesNumber) {
var _a;
return (_a = this._getVersionOverrides(versionOverridesNumber)) === null || _a === void 0 ? void 0 : _a._webApplicationInfo;
}
getConnectedServiceControlsScopes(versionOverridesNumber) {
var _a;
return (_a = this._getVersionOverrides(versionOverridesNumber)) === null || _a === void 0 ? void 0 : _a._connectedServiceControlsScopes;
}
getExtendedPermissions(versionOverridesNumber) {
var _a;
return (_a = this._getVersionOverrides(versionOverridesNumber)) === null || _a === void 0 ? void 0 : _a._extendedPermissions;
}
getRuntimes(versionOverridesNumber) {
var _a, _b;
return (_b = (_a = this._getVersionOverrides(versionOverridesNumber)) === null || _a === void 0 ? void 0 : _a._runtimes) === null || _b === void 0 ? void 0 : _b.getRuntimes();
}
getExtensionPoints(versionOverridesNumber, formFactor) {
var _a;
return (_a = this._getVersionOverrides(versionOverridesNumber)) === null || _a === void 0 ? void 0 : _a._addinCommandsExtensionPoints[formFactor];
}
getFunctionFileResid(versionOverridesNumber, formFactor) {
var _a;
return ((_a = this._getVersionOverrides(versionOverridesNumber)) === null || _a === void 0 ? void 0 : _a._functionFileResid[formFactor]) || "";
}
getResources(versionOverridesNumber) {
var _a;
return (_a = this._getVersionOverrides(versionOverridesNumber)) === null || _a === void 0 ? void 0 : _a._resources;
}
getSupportsSharedFolders(versionOverridesNumber, formFactor) {
var _a;
return ((_a = this._getVersionOverrides(versionOverridesNumber)) === null || _a === void 0 ? void 0 : _a._supportsSharedFolders[formFactor]) || false;
}
}
Manifest.OfficeAppManifest = OfficeAppManifest;
})(Manifest = OSF.Manifest || (OSF.Manifest = {}));
})(OSF || (OSF = {}));
var Mos;
(function (Mos) {
class AppMetadata extends OSF.Manifest.Manifest {
static fromString(payload, payloadType, locale, solutionRef) {
let acquisition = new Mos.Acquisition();
acquisition.init(JSON.parse(payload));
return new this(acquisition, payloadType, locale, solutionRef);
}
static fromAcquisition(acquisition, locale, solutionRef) {
return new this(acquisition, OSF.PayloadType.MosAcquisition, locale, solutionRef);
}
constructor(acquisition, payloadType, locale, solutionRef) {
var _a, _b;
if (((_a = acquisition.titleDefinition.elementDefinitions.officeAddIns) === null || _a === void 0 ? void 0 : _a.length) > 0) {
let xmlPayload = acquisition.titleDefinition.elementDefinitions.officeAddIns[0].xmlDefinition;
let codepointLength = OSF.OUtil.getBOMCodepointLength(xmlPayload);
if (codepointLength > 0) {
xmlPayload = xmlPayload.substring(codepointLength);
}
super(xmlPayload, locale, OSF.PayloadType.OfficeAddin, solutionRef);
this._acquisition = acquisition;
}
else {
super("", locale, OSF.PayloadType.MosAcquisition, solutionRef);
this._acquisition = acquisition;
this._hostInfo = null;
this._hostInfo = OfficeExt.CatalogFactory.getHostContext();
if (this._hostInfo != null) {
this._hostType = OSF.getManifestHostType(this._hostInfo.hostType);
}
if (((_b = acquisition.titleDefinition.elementDefinitions.extensions) === null || _b === void 0 ? void 0 : _b.length) > 0) {
this._populateManifest();
}
}
this._actualPayload = payloadType;
}
_populateManifest() {
this._initPopulator();
this._populateBaseProperties();
this._populateExtensionSettings();
this._populateAddinCommands();
this._populateWebApplicationInfo();
}
_initPopulator() {
this._displayNames = {};
this._descriptions = {};
this._iconUrls = {};
this._extensionSettings = {};
this._highResolutionIconUrls = {};
this._ribbonExtensionControls = {};
this._versionOverrides = {};
this._versionOverrides[this._hostType] = {};
}
_populateBaseProperties() {
this._manifestSchemaVersion = "1.1";
this._id = this._acquisition.assetId;
this._providerName = "Microsoft";
this._defaultLocale = this._UILocale;
this._allowSnapshot = true;
this._idIssuer = OSF.ManifestIdIssuer.Custom;
this._addDisplayName(this._UILocale, this._acquisition.titleDefinition.name);
this._addDescription(this._UILocale, "Acquisition Sample");
this._populateBaseOfficeAppType();
this._populateBaseVersion();
this._populateBaseDomains();
this._populateBasePermissions();
this._populateRuntimes();
}
_populateBaseOfficeAppType() {
this._target = OSF.OfficeAppType.TaskPaneApp;
}
_populateBaseVersion() {
try {
this._version = this.complementVersion(this._acquisition.titleDefinition.version);
}
catch (_a) {
this._version = this._acquisition.titleDefinition.version;
}
}
_populateBasePermissions() {
this._permissions = OSF.OsfControlPermission.Restricted;
this.getControlPermissionsFromMosPermissions();
}
getControlPermissionsFromMosPermissions() {
let permissions = this.getExtensionPermissions();
if (permissions != null) {
for (let i = 0; i < permissions.resourceSpecific.length; i++) {
const resourceSpecific = permissions.resourceSpecific[i];
if (resourceSpecific.type === Mos.ResourceSpecificType.Delegated) {
switch (resourceSpecific.name) {
case "Document.Restricted.User":
if (this._permissions < OSF.OsfControlPermission.Restricted) {
this._permissions = OSF.OsfControlPermission.Restricted;
}
break;
case "Document.Read.User":
if (this._permissions < OSF.OsfControlPermission.ReadDocument) {
this._permissions = OSF.OsfControlPermission.ReadDocument;
}
break;
case "Document.Read.All.User":
if (this._permissions < OSF.OsfControlPermission.ReadAllDocument) {
this._permissions = OSF.OsfControlPermission.ReadAllDocument;
}
break;
case "Document.Write.User":
if (this._permissions < OSF.OsfControlPermission.WriteDocument) {
this._permissions = OSF.OsfControlPermission.WriteDocument;
}
break;
case "Document.ReadWrite.User":
if (this._permissions < OSF.OsfControlPermission.ReadWriteDocument) {
this._permissions = OSF.OsfControlPermission.ReadWriteDocument;
}
break;
}
}
}
}
}
_populateBaseDomains() {
this._appDomains = [];
}
_populateExtensionSettings() {
let settings;
for (let formFactor in OSF.FormFactor) {
settings = new OSF.Manifest.ExtensionSettings();
settings._addSourceLocation(this._UILocale, this._acquisition.titleDefinition.elementDefinitions.extensions[0].runtimes[0].code.page);
this.addManifestUrl(this._acquisition.titleDefinition.elementDefinitions.extensions[0].runtimes[0].code.page);
this._extensionSettings[formFactor] = settings;
}
if (!settings) {
throw OsfMsAjaxFactory.msAjaxError.argument("Manifest");
}
}
_populateAddinCommands() {
let addinCommandsParser = new OfficeExt.Parser.AddinCommandsManifestParser(this._hostType, "DesktopFormFactor");
let errorManager = {
"setErrorMessageForAddin": (errorMessage) => {
OsfMsAjaxFactory.msAjaxDebug.trace("Error parsing app manifest: " + errorMessage);
}
};
let entitlement = this._getEntitlement(this._solutionRef);
let addinCommands = (addinCommandsParser.parseExtensions(entitlement, this, errorManager));
this._versionOverrides[this._hostType]._addinCommandsExtensionPoints = addinCommands.ExtensionPoints;
this._versionOverrides[this._hostType]._functionFileResid = addinCommands.functionFileResid;
this._versionOverrides[this._hostType]._showTaskpaneControls = this._retrieveAppCommandShowTaskpaneControls(this._hostType);
this._validateShowTaskpaneSharedRuntime(this._hostType);
this._generateRibbonExtensionControlMap(this._hostType);
}
_populateWebApplicationInfo() {
const webApplicationInfo = this.getWebApplicationInfo();
if (webApplicationInfo != null) {
this._webApplicationResource = webApplicationInfo.resource;
this._webApplicationId = webApplicationInfo.id;
}
}
_populateRuntimes() {
let mosRuntimes = this.getExtensionRuntimes();
let runtimes = new OSF.Manifest.Runtimes();
mosRuntimes.forEach(function (mosRuntime) {
let runtime = new OSF.Manifest.Runtime();
runtime.Resid = mosRuntime.id;
runtime.LifeTime = mosRuntime.lifetime === "long" ? RuntimeLifeTime.Long : RuntimeLifeTime.Short;
if (runtime.LifeTime === RuntimeLifeTime.Long) {
runtimes.add(runtime);
}
});
this._versionOverrides[this._hostType]._runtimes = runtimes;
}
containsAddinCommands(manifestHostType) {
if (this.containsExtension()) {
return this.getExtensionShortcut() != null ||
this.getExtensionRibbon() != null ||
this.getExtensionContextMenu() != null ||
this.getAddinCommandRuntimes().length > 0;
}
else if (this.containsOfficeAddin()) {
return super.containsAddinCommands(manifestHostType);
}
return false;
}
containsCustomFunctions(manifestHostType) {
return false;
}
getAcquisition() {
return this._acquisition;
}
getExtensionRuntimes() {
let runtimes = [];
if (this.containsExtension() && this._acquisition.titleDefinition.elementDefinitions.extensions[0].runtimes != null) {
for (const runtime of this._acquisition.titleDefinition.elementDefinitions.extensions[0].runtimes) {
if (Mos.AppMetadata.checkRequirements(runtime.requirements)) {
runtimes.push(runtime);
}
}
}
return runtimes;
}
getLegacyExtensionRuntime() {
let legacyRuntime;
if (this.containsExtension()) {
for (const runtime of this.getExtensionRuntimes()) {
legacyRuntime = runtime;
if (Mos.AppMetadata.isLegacyRuntime(runtime)) {
return runtime;
}
}
}
return legacyRuntime;
}
getAddinCommandRuntimes() {
let runtimes = [];
if (this.containsExtension() && this._acquisition.titleDefinition.elementDefinitions.extensions[0].runtimes != null) {
for (const runtime of this._acquisition.titleDefinition.elementDefinitions.extensions[0].runtimes) {
if (Mos.AppMetadata.checkRequirements(runtime.requirements) &&
!Mos.AppMetadata.isLegacyRuntime(runtime)) {
runtimes.push(runtime);
}
}
}
return runtimes;
}
getExtensionGetStartedMessage() {
if (this.containsExtension() && this._acquisition.titleDefinition.elementDefinitions.extensions[0].getStartedMessages != null) {
for (const getStartedMessage of this._acquisition.titleDefinition.elementDefinitions.extensions[0].getStartedMessages) {
if (Mos.AppMetadata.checkRequirements(getStartedMessage.requirements)) {
return getStartedMessage;
}
}
}
return null;
}
getExtensionShortcut() {
if (this.containsExtension() && this._acquisition.titleDefinition.elementDefinitions.extensions[0].shortcuts != null) {
for (const shortcut of this._acquisition.titleDefinition.elementDefinitions.extensions[0].shortcuts) {
if (Mos.AppMetadata.checkRequirements(shortcut.requirements)) {
return shortcut;
}
}
}
return null;
}
getExtensionRibbon() {
if (this.containsExtension() && this._acquisition.titleDefinition.elementDefinitions.extensions[0].ribbons != null) {
for (const ribbon of this._acquisition.titleDefinition.elementDefinitions.extensions[0].ribbons) {
if (Mos.AppMetadata.checkRequirements(ribbon.requirements)) {
return ribbon;
}
}
}
return null;
}
getExtensionContextMenu() {
if (this.containsExtension() && this._acquisition.titleDefinition.elementDefinitions.extensions[0].contextMenus != null) {
for (const contextMenu of this._acquisition.titleDefinition.elementDefinitions.extensions[0].contextMenus) {
if (Mos.AppMetadata.checkRequirements(contextMenu.requirements)) {
return contextMenu;
}
}
}
return null;
}
getExtensionAlternatives() {
if (this.containsExtension() && this._acquisition.titleDefinition.elementDefinitions.extensions[0].alternatives != null) {
for (const alternative of this._acquisition.titleDefinition.elementDefinitions.extensions[0].alternatives) {
if (Mos.AppMetadata.checkRequirements(alternative.requirements)) {
return alternative;
}
}
}
return null;
}
getExtensionPermissions() {
var _a, _b;
return (_b = (_a = this._acquisition.titleDefinition) === null || _a === void 0 ? void 0 : _a.authorization) === null || _b === void 0 ? void 0 : _b.permissions;
}
getExtensionActionById(id) {
const runtimes = this.getExtensionRuntimes();
for (let i = 0; i < runtimes.length; i++) {
for (let j = 0; j < runtimes[i].actions.length; j++) {
if (runtimes[i].actions[j].id === id) {
return runtimes[i].actions[j];
}
}
}
;
return null;
}
getExtensionRuntimeByActionId(id) {
const runtimes = this.getExtensionRuntimes();
for (const runtime of runtimes) {
for (const action of runtime.actions) {
if (action.id === id) {
return runtime;
}
}
}
return null;
}
getSource() {
return this._acquisition.titleDefinition.ingestionSource;
}
getState() {
return this._acquisition.acquisitionState;
}
getTitleId() {
return this._acquisition.titleId;
}
getAssetId() {
return this._acquisition.assetId;
}
getManifestId() {
return this._acquisition.manifestId;
}
getScope() {
return this._acquisition.titleDefinition.scope;
}
getVersion() {
return this._version;
}
toJSON() {
return this._acquisition.toJSON();
}
getWebApplicationInfo() {
var _a, _b;
return (_b = (_a = this._acquisition) === null || _a === void 0 ? void 0 : _a.titleDefinition) === null || _b === void 0 ? void 0 : _b.webApplicationInfo;
}
static checkRequirements(requirements) {
return true;
}
static isLegacyRuntime(runtime) {
var _a, _b;
return !(((_a = runtime.actions) === null || _a === void 0 ? void 0 : _a.length) > 0) &&
!(((_b = runtime.functions) === null || _b === void 0 ? void 0 : _b.length) > 0);
}
containsExtension() {
var _a, _b, _c;
return ((_c = (_b = (_a = this._acquisition) === null || _a === void 0 ? void 0 : _a.titleDefinition) === null || _b === void 0 ? void 0 : _b.elementDefinitions.extensions) === null || _c === void 0 ? void 0 : _c.length) > 0;
}
containsOfficeAddin() {
var _a, _b, _c;
return ((_c = (_b = (_a = this._acquisition) === null || _a === void 0 ? void 0 : _a.titleDefinition) === null || _b === void 0 ? void 0 : _b.elementDefinitions.officeAddIns) === null || _c === void 0 ? void 0 : _c.length) > 0;
}
}
Mos.AppMetadata = AppMetadata;
})(Mos || (Mos = {}));
var OSF;
(function (OSF) {
OSF.AddinIdInfo = (function (addinIdString) {
var addinIdItemSeparator = "|";
var tokens = addinIdString.split(addinIdItemSeparator);
var addinIdFormatVersion = "2";
var formatVersionIndex = 0;
var solutionIdIndex = 1;
var solutionVersionIndex = 2;
var storeTypeIdIndex = 3;
var storeLocationIndex = 4;
if (tokens.length != 8) {
Telemetry.RuntimeTelemetryHelper.LogCommonMessageTag("OSF.AddinIdInfo.constructor: Unexpected format of the addinId", null, 0x1f31c5c8);
}
var _formatVersion = tokens[formatVersionIndex];
var _solutionId = tokens[solutionIdIndex];
var _solutionVersion = tokens[solutionVersionIndex];
var _storeTypeId = tokens[storeTypeIdIndex];
var _storeLocation = tokens[storeLocationIndex];
var _compliantSolutionId = null;
if (_formatVersion != addinIdFormatVersion) {
Telemetry.RuntimeTelemetryHelper.LogCommonMessageTag(`OSF.AddinIdInfo.constructor: Unexpected format version: ${_formatVersion}.`, null, 0x1f31c5c9);
}
return {
getSolutionId: function OSF_AddinIdInfo$getSolutionId() {
return _solutionId;
},
getSolutionVersion: function OSF_AddinIdInfo$getSolutionVersion() {
return _solutionVersion;
},
getFormatVersion: function OSF_AddinIdInfo$getFormatVersion() {
return _formatVersion;
},
getStoreTypeId: function OSF_AddinIdInfo$getStoreTypeId() {
return _storeTypeId;
},
getStoreLocation: function OSF_AddinIdInfo$getStoreLocation() {
return _storeLocation;
},
getPrivacyCompliantSolutionId: function OSF_AddinIdInfo$getPrivacyCompliantSolutionId() {
if (_compliantSolutionId == null) {
_compliantSolutionId = Telemetry.PrivacyRules.GetPrivacyCompliantId(_solutionId, OfficeExt.ManifestUtil.GetStoreTypeName(_storeTypeId), null, null, null, _storeLocation);
}
return _compliantSolutionId == null ? _solutionId : _compliantSolutionId;
},
needToRestoreManifest: function OSF_AddinIdInfo$needToRestoreManifest() {
return _storeTypeId == OSF.StoreTypeEnum.Registry.toString();
}
};
});
OSF.OsfManifestManager = (function () {
var _cachedManifests = {};
var _UILocale = "en-us";
var _pendingRequests = {};
function _generateKey(marketplaceID, marketplaceVersion) {
return marketplaceID + "_" + marketplaceVersion;
}
return {
getManifestAsync: function OSF_OsfManifestManager$getManifestAsync(context, onCompleted) {
OSF.OUtil.validateParamObject(context, {
"osfControl": { type: Object, mayBeNull: false },
"referenceInUse": { type: Object, mayBeNull: false }
}, onCompleted);
var me = this;
var reference = context.referenceInUse;
var cacheManifestKey = reference.solutionId;
if (context.osfControl != null && context.osfControl._sharedRuntimeId != null && context.osfControl._sharedRuntimeId.length > 0) {
cacheManifestKey = OSF.OsfManifestManager.getSharedRuntimeManifestCacheKey(reference.solutionId, context.osfControl._sharedRuntimeId);
}
var cacheKey = _generateKey(cacheManifestKey, reference.version);
var manifest = _cachedManifests[cacheKey];
context.manifestCached = false;
if (manifest) {
context.manifestCached = true;
if (me.manifestContainsDownloadResources(manifest)) {
me.downloadResourcesAsync(context, onCompleted, manifest, cacheKey);
}
else {
onCompleted({ "statusCode": OSF.ProxyCallStatusCode.Succeeded, "value": manifest, "context": context });
}
}
else if (context.clientEndPoint && context.manifestUrl) {
Telemetry.AppLoadTimeHelper.ManifestRequestStart(context.osfControl._telemetryContext);
var onRetrieveManifestCompleted = function (asyncResult) {
if (asyncResult.statusCode === OSF.ProxyCallStatusCode.Succeeded && asyncResult.value) {
var osfControl;
try {
osfControl = asyncResult.context.osfControl;
var manifestString;
if (typeof (asyncResult.value) === "string") {
asyncResult.context.manifestCached = true;
manifestString = asyncResult.value;
}
else {
asyncResult.context.manifestCached = asyncResult.value.cached;
manifestString = asyncResult.value.manifest;
}
Telemetry.AppLoadTimeHelper.SetManifestDataCachedFlag(osfControl._telemetryContext, asyncResult.value.cached);
asyncResult.value = new OSF.Manifest.Manifest(manifestString, osfControl._contextActivationMgr.getAppUILocale());
OSF.OsfManifestManager.cacheManifest(reference.solutionId, reference.version, asyncResult.value);
}
catch (ex) {
asyncResult.value = null;
var appCorrelationId;
if (osfControl) {
appCorrelationId = osfControl._appCorrelationId;
}
var message = "Invalid manifest in getManifestAsync.";
OfficeExt.WACUtils.logExceptionToBrowserConsole(message, ex);
Telemetry.RuntimeTelemetryHelper.LogExceptionTag(message, ex, appCorrelationId, 0x1f31c5ca);
}
}
else {
Telemetry.RuntimeTelemetryHelper.LogExceptionTag("getManifestAsync failed:" + OfficeExt.WACUtils.serializeObjectToString(asyncResult), null, null, 0x1f31c5cb);
}
if (me.manifestContainsDownloadResources(manifest)) {
me.downloadResourcesAsync(context, onCompleted, asyncResult.value, cacheKey);
}
else {
onCompleted(asyncResult);
}
};
var params = {
"manifestUrl": context.manifestUrl,
"id": reference.solutionId,
"version": reference.version,
"clearCache": context.clearCache || false
};
this._invokeProxyMethodAsync(context, "OEM_getManifestAsync", onRetrieveManifestCompleted, params);
}
else {
onCompleted({ "statusCode": OSF.ProxyCallStatusCode.Failed, "value": null, "context": context });
}
},
manifestContainsDownloadResources: function OSF_OsfManifestManager$manifestContainsDownloadResources(manifest) {
return this.manifestContainsExtendedOverrides(manifest);
},
manifestContainsExtendedOverrides: function OSF_OsfManifestManager$manifestContainsExtendedOverrides(manifest) {
return typeof manifest === "object" && typeof manifest.getExtendedOverrides === "function" && typeof manifest.getExtendedOverrides() === "object";
},
downloadResourcesAsync: function OSF_OsfManifestManager$downloadResourcesAsync(context, onCompleted, manifest, cacheKey) {
if (this.manifestContainsExtendedOverrides(manifest)) {
this.downloadExtendedOverridesAsync(context, onCompleted, manifest, cacheKey);
}
},
downloadExtendedOverridesAsync: function OSF_OsfManifestManager$downloadExtendedOverridesAsync(context, onCompleted, manifest, cacheKey) {
var me = this;
const completeWithSuccess = (context, onCompleted, manifest) => {
onCompleted({ "statusCode": OSF.ProxyCallStatusCode.Succeeded, "value": manifest, "context": context });
};
const completeWithError = (context, onCompleted, ex, message) => {
const appCorrelationId = context.osfControl._appCorrelationId;
OfficeExt.WACUtils.logExceptionToBrowserConsole(message, ex);
Telemetry.RuntimeTelemetryHelper.LogExceptionTag(message, ex, appCorrelationId, 0x1f31c5cc);
if (me._cachedManifests && me._cachedManifests[cacheKey]) {
me._cachedManifests[cacheKey] = undefined;
}
onCompleted({ "statusCode": OSF.ProxyCallStatusCode.Failed, "value": null, "context": context });
};
if (!this.manifestContainsExtendedOverrides(manifest)) {
completeWithError(context, onCompleted, "Unreachable", "Unreachable code path executed!");
}
try {
let isInserted = context.osfControl.getInitializationReason() == Microsoft.Office.WebExtension.InitializationReason.Inserted;
context.osfControl.processManifestForExtendedOverrides(manifest, isInserted)
.then(() => completeWithSuccess(context, onCompleted, manifest)).catch((ex) => completeWithError(context, onCompleted, ex, "Invalid ExtendedOverrides content."));
}
catch (ex) {
completeWithError(context, onCompleted, ex, "Unexpected exception from OsfControlV2.processManifestForExtendedOverrides()");
}
},
getAppInstanceInfoByIdAsync: function OSF_OsfManifestManager$getAppInstanceInfoByIdAsync(context, onCompleted) {
OSF.OUtil.validateParamObject(context, {
"webUrl": { type: String, mayBeNull: false },
"appInstanceId": { type: String, mayBeNull: false },
"clientEndPoint": { type: Object, mayBeNull: false }
}, onCompleted);
var params = { "webUrl": context.webUrl, "appInstanceId": context.appInstanceId, "clearCache": context.clearCache || false };
this._invokeProxyMethodAsync(context, "OEM_getSPAppInstanceInfoByIdAsync", onCompleted, params);
},
getSPTokenByProductIdAsync: function OSF_OsfManifestManager$getSPTokenByProductIdAsync(context, onCompleted) {
OSF.OUtil.validateParamObject(context, {
"appWebUrl": { type: String, mayBeNull: false },
"productId": { type: String, mayBeNull: false }
}, onCompleted);
var me = this;
var createSharePointProxyCompleted = function (clientEndPoint) {
if (clientEndPoint) {
var params = { "webUrl": context.appWebUrl, "productId": context.productId, "clearCache": context.clearCache || false, "clientEndPoint": clientEndPoint };
me._invokeProxyMethodAsync(context, "OEM_getSPTokenByProductIdAsync", onCompleted, params);
}
else {
onCompleted({ "statusCode": OSF.ProxyCallStatusCode.ProxyNotReady, "value": null, "context": context });
}
};
context.osfControl._contextActivationMgr._createSharePointIFrameProxy(context.appWebUrl, createSharePointProxyCompleted);
},
getSPAppEntitlementsAsync: function OSF_OsfManifestManager$getSPAppEntitlementsAsync(context, onCompleted) {
OSF.OUtil.validateParamObject(context, {
"osfControl": { type: Object, mayBeNull: false },
"referenceInUse": { type: Object, mayBeNull: false },
"baseUrl": { type: String, mayBeNull: false },
"pageUrl": { type: String, mayBeNull: false },
"webUrl": { type: String, mayBeNull: true }
}, onCompleted);
if (!context.webUrl) {
var aElement = document.createElement('a');
aElement.href = context.pageUrl;
var pathName = aElement.pathname;
var subPaths = pathName.split("/");
var subPathCount = subPaths.length - 1;
var path = aElement.href.substring(0, aElement.href.length - pathName.length);
if (path && path.charAt(path.length - 1) !== '/') {
path += '/';
}
var paths = [path];
for (var i = 0; i < subPathCount; i++) {
if (subPaths[i]) {
path = path + subPaths[i] + "/";
paths.push(path);
}
}
aElement = null;
var me = this;
var contextActivationMgr = context.osfControl._contextActivationMgr;
var baseUrl = paths.pop();
var onResolvePageUrlCompleted = function (asyncResult) {
if (asyncResult.statusCode === OSF.ProxyCallStatusCode.Succeeded) {
var resolvedUrl = asyncResult.value;
if (resolvedUrl && resolvedUrl.charAt(resolvedUrl.length - 1) !== '/') {
resolvedUrl += '/';
}
contextActivationMgr._webUrl = resolvedUrl;
asyncResult.context.webUrl = resolvedUrl;
asyncResult.context.appWebUrl = resolvedUrl;
me.getCorporateCatalogEntitlementsAsync(asyncResult.context, onCompleted);
}
else {
onCompleted(asyncResult);
}
};
var createSPAppProxyCompleted = function (clientEndPoint) {
if (clientEndPoint) {
context.clientEndPoint = clientEndPoint;
var params = { "pageUrl": context.pageUrl, "baseUrl": baseUrl, "clearCache": context.clearCache || false };
me._invokeProxyMethodAsync(context, "OEM_getSPAppWebUrlFromPageUrlAsync", onResolvePageUrlCompleted, params);
}
else if (paths.length > 0) {
baseUrl = paths.pop();
contextActivationMgr._createSharePointIFrameProxy(baseUrl, createSPAppProxyCompleted);
}
else {
onCompleted({ "statusCode": OSF.ProxyCallStatusCode.Failed, "value": null, "context": context });
}
};
contextActivationMgr._createSharePointIFrameProxy(baseUrl, createSPAppProxyCompleted);
}
else {
this.getCorporateCatalogEntitlementsAsync(context, onCompleted);
}
},
getCorporateCatalogEntitlementsAsync: function OSF_OsfManifestManager$getCorporateCatalogEntitlementsAsync(context, onCompleted) {
OSF.OUtil.validateParamObject(context, {
"osfControl": { type: Object, mayBeNull: false },
"referenceInUse": { type: Object, mayBeNull: false },
"webUrl": { type: String, mayBeNull: false }
}, onCompleted);
Telemetry.AppLoadTimeHelper.AuthenticationStart(context.osfControl._telemetryContext);
var me = this;
var retries = 0;
var createSharePointProxyCompleted = function (clientEndPoint) {
if (clientEndPoint) {
Telemetry.AppLoadTimeHelper.AuthenticationEnd(context.osfControl._telemetryContext);
context.clientEndPoint = clientEndPoint;
var params = {
"webUrl": context.webUrl,
"applicationName": OSF.HostCapability[context.hostType],
"officeExtentionTarget": (context.noTargetType || context.osfControl.getOsfControlType() === OSF.OsfControlTarget.TaskPane) ? null : context.osfControl.getOsfControlType(),
"clearCache": context.clearCache || false,
"supportedManifestVersions": {
"1.0": true,
"1.1": true
}
};
me._invokeProxyMethodAsync(context, "OEM_getEntitlementSummaryAsync", onCompleted, params);
}
else {
if (retries < OSF.Constants.AuthenticatedConnectMaxTries) {
retries++;
setTimeout(function () {
context.osfControl._contextActivationMgr._createSharePointIFrameProxy(context.webUrl, createSharePointProxyCompleted);
}, 500);
}
else {
onCompleted({
"statusCode": OSF.ProxyCallStatusCode.ProxyNotReady,
"value": null,
"context": context
});
}
}
};
context.osfControl._contextActivationMgr._createSharePointIFrameProxy(context.webUrl, createSharePointProxyCompleted);
},
_invokeProxyMethodAsync: function OSF_OsfManifestManager$_invokeProxyMethodAsync(context, methodName, onCompleted, params) {
var clientEndPointUrl = params.clientEndPoint ? params.clientEndPoint._targetUrl : context.clientEndPoint._targetUrl;
var requestKeyParts = [clientEndPointUrl, methodName];
var runtimeType;
for (var p in params) {
runtimeType = typeof params[p];
if (runtimeType === "string" || runtimeType === "number" || runtimeType === "boolean") {
requestKeyParts.push(params[p]);
}
}
var requestKey = requestKeyParts.join(".");
var myPendingRequests = _pendingRequests;
var newRequestHandler = { "onCompleted": onCompleted, "context": context, "methodName": methodName };
var pendingRequestHandlers = myPendingRequests[requestKey];
if (!pendingRequestHandlers) {
myPendingRequests[requestKey] = [newRequestHandler];
var onMethodCallCompleted = function (errorCode, response) {
var value = null;
var statusCode = OSF.ProxyCallStatusCode.Failed;
if (errorCode === 0 && response.status) {
value = response.result;
statusCode = OSF.ProxyCallStatusCode.Succeeded;
}
var currentPendingRequests = myPendingRequests[requestKey];
delete myPendingRequests[requestKey];
var pendingRequestHandlerCount = currentPendingRequests.length;
for (var i = 0; i < pendingRequestHandlerCount; i++) {
var currentRequestHandler = currentPendingRequests.shift();
var appCorrelationId;
try {
if (currentRequestHandler.context && currentRequestHandler.context.osfControl) {
appCorrelationId = currentRequestHandler.context.osfControl._appCorrelationId;
}
if (response && response.failureInfo) {
Telemetry.RuntimeTelemetryHelper.LogProxyFailure(appCorrelationId, currentRequestHandler.methodName, response.failureInfo);
}
currentRequestHandler.onCompleted({ "statusCode": statusCode, "value": value, "context": currentRequestHandler.context });
}
catch (ex) {
var message = "_invokeProxyMethodAsync failed.";
OfficeExt.WACUtils.logExceptionToBrowserConsole(message, ex);
Telemetry.RuntimeTelemetryHelper.LogExceptionTag(message, ex, appCorrelationId, 0x1f31c5cd);
}
}
};
var clientEndPoint = context.clientEndPoint;
if (params.clientEndPoint) {
clientEndPoint = params.clientEndPoint;
delete params.clientEndPoint;
}
if (context.referenceInUse && context.referenceInUse.storeType === OSF.StoreType.OMEX) {
params.officeVersion = OSF.Constants.ThreePartsFileVersion;
}
clientEndPoint.invoke(methodName, onMethodCallCompleted, params);
}
else {
pendingRequestHandlers.push(newRequestHandler);
}
},
removeOmexCacheAsync: function OSF_OsfManifestManager$removeOmexCacheAsync(context, onCompleted) {
OSF.OUtil.validateParamObject(context, {
"osfControl": { type: Object, mayBeNull: false },
"referenceInUse": { type: Object, mayBeNull: false },
"clientEndPoint": { type: Object, mayBeNull: false }
}, onCompleted);
var reference = context.referenceInUse;
var params = {
"applicationName": context.hostType,
"assetID": reference.solutionId,
"officeExtentionTarget": context.osfControl.getOsfControlType(),
"clearEntitlement": context.clearEntitlement || false,
"clearToken": context.clearToken || false,
"clearAppState": context.clearAppState || false,
"clearManifest": context.clearManifest || false,
"appVersion": context.appVersion
};
if (context.anonymous) {
params.contentMarket = reference.storeId;
}
else {
params.assetContentMarket = context.osfControl._omexEntitlement.contentMarket;
params.userContentMarket = reference.storeId;
}
this._invokeProxyMethodAsync(context, "OMEX_removeCacheAsync", onCompleted, params);
},
purgeManifest: function OSF_OsfManifestManager$purgeManifest(marketplaceID, marketplaceVersion) {
var e = Function._validateParams(arguments, [
{ name: "marketplaceID", type: String, mayBeNull: false },
{ name: "marketplaceVersion", type: String, mayBeNull: false }
]);
if (e)
throw e;
var cacheKey = _generateKey(marketplaceID, marketplaceVersion);
if (typeof _cachedManifests[cacheKey] != "undefined") {
delete _cachedManifests[cacheKey];
}
},
cacheManifestFromXml: function OSF_OsfManifestManager$cacheManifestFromXml(marketplaceID, marketplaceVersion, manifestXml, uiLocale) {
var e = Function._validateParams(arguments, [
{ name: "marketplaceID", type: String, mayBeNull: false },
{ name: "marketplaceVersion", type: String, mayBeNull: false },
{ name: "manifestXml", type: String, mayBeNull: false },
{ name: "uiLocale", type: String, mayBeNull: false }
]);
if (e)
throw e;
this.cacheManifest(marketplaceID, marketplaceVersion, new OSF.Manifest.Manifest(manifestXml, uiLocale));
},
cacheManifest: function OSF_OsfManifestManager$cacheManifest(marketplaceID, marketplaceVersion, manifest) {
var e = Function._validateParams(arguments, [
{ name: "marketplaceID", type: String, mayBeNull: false },
{ name: "marketplaceVersion", type: String, mayBeNull: false },
{ name: "manifest", type: Object, mayBeNull: false }
]);
if (e)
throw e;
var cacheKey = _generateKey(marketplaceID, marketplaceVersion);
manifest._UILocale = manifest._UILocale || _UILocale;
_cachedManifests[cacheKey] = manifest;
},
hasManifest: function OSF_OsfManifestManager$hasManifest(marketplaceID, marketplaceVersion) {
var e = Function._validateParams(arguments, [
{ name: "marketplaceID", type: String, mayBeNull: false },
{ name: "marketplaceVersion", type: String, mayBeNull: false }
]);
if (e)
throw e;
var cacheKey = _generateKey(marketplaceID, marketplaceVersion);
if (typeof _cachedManifests[cacheKey] != "undefined")
return true;
return false;
},
hasManifestForControl: function OSF_OsfManifestManager$hasManifestForControl(context) {
OSF.OUtil.validateParamObject(context, {
"referenceInUse": { type: Object, mayBeNull: false }
}, null);
return this.hasManifest(context.referenceInUse.solutionId, context.referenceInUse.version);
},
getCachedManifest: function OSF_OsfManifestManager$getCachedManifest(marketplaceID, marketplaceVersion) {
var e = Function._validateParams(arguments, [
{ name: "marketplaceID", type: String, mayBeNull: false },
{ name: "marketplaceVersion", type: String, mayBeNull: false }
]);
if (e)
throw e;
var cacheKey = _generateKey(marketplaceID, marketplaceVersion);
return _cachedManifests[cacheKey];
},
getSharedRuntimeManifestCacheKey: function OSF_OsfManifestManager$getSharedRuntimeManifestCacheKey(marketplaceID, sharedRuntimeId) {
var e = Function._validateParams(arguments, [
{ name: "marketplaceID", type: String, mayBeNull: false },
{ name: "sharedRuntimeId", type: String, mayBeNull: false }
]);
if (e)
throw e;
return marketplaceID + sharedRuntimeId;
},
versionLessThan: function OSF_OsfManifestManager$versionLessThan(version1, version2) {
var version1Parts = version1.split(".");
var version2Parts = version2.split(".");
var len = Math.min(version1Parts.length, version2Parts.length);
var version1Part, version2Part, i;
for (i = 0; i < len; i++) {
try {
version1Part = parseFloat(version1Parts[i]);
version2Part = parseFloat(version2Parts[i]);
if (version1Part != version2Part) {
return version1Part < version2Part;
}
}
catch (ex) { }
}
if (version1Parts.length >= version2Parts.length) {
return false;
}
else {
len = version2Parts.length;
var remainingSum = 0;
for (i = version1Parts.length; i < len; i++) {
try {
version2Part = parseFloat(version2Parts[i]);
}
catch (ex) {
version2Part = 0;
}
remainingSum += version2Part;
}
return remainingSum > 0;
}
},
_setUILocale: function (UILocale) { _UILocale = UILocale; }
};
})();
})(OSF || (OSF = {}));
//# sourceMappingURL=osfmos.js.map
exports.OSF = OSF;
exports.OfficeExt = OfficeExt;