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

477 lines
16 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.XmlProcessor = exports.DomParserProvider = exports.Utils = void 0;
const osfmos_1 = require("../lib/osfmos");
const xmldom_1 = require("@xmldom/xmldom");
var Utils;
(function (Utils) {
function validateParams(params, expectedParams, ParameterCount) {
var e, expectedLength = expectedParams.length;
ParameterCount = ParameterCount || (typeof (ParameterCount) === "undefined");
e = validateParameterCount(params, expectedParams, ParameterCount);
if (e) {
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 (!ParameterCount && (i >= expectedLength)) {
break;
}
e = validateParameter(params[i], expectedParam, paramName);
if (e) {
e.popStackFrame();
return e;
}
}
return null;
}
Utils.validateParams = validateParams;
function validateParameter(param, expectedParam, paramName) {
var e, expectedType = expectedParam.type, expectedInteger = !!expectedParam.integer, expectedDomElement = !!expectedParam.domElement, mayBeNull = !!expectedParam.mayBeNull;
e = 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 = validateParameterType(elem, expectedElementType, expectedElementInteger, expectedElementDomElement, elementMayBeNull, paramName + "[" + i + "]");
if (e) {
e.popStackFrame();
return e;
}
}
}
return null;
}
Utils.validateParameter = validateParameter;
;
function validateParameterCount(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 = osfmos_1.OfficeExt.MsAjaxError.parameterCount();
return e;
}
return null;
}
Utils.validateParameterCount = validateParameterCount;
function validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName) {
var e, i;
if (typeof (param) === "undefined") {
if (mayBeNull) {
return null;
}
else {
e = osfmos_1.OfficeExt.MsAjaxError.argumentUndefined(paramName);
e.popStackFrame();
return e;
}
}
if (param === null) {
if (mayBeNull) {
return null;
}
else {
e = osfmos_1.OfficeExt.MsAjaxError.argumentNull(paramName);
e.popStackFrame();
return e;
}
}
if (expectedType && !osfmos_1.OfficeExt.MsAjaxTypeHelper.isInstanceOfType(expectedType, param)) {
e = osfmos_1.OfficeExt.MsAjaxError.argumentType(paramName, typeof (param), expectedType);
e.popStackFrame();
return e;
}
return null;
}
Utils.validateParameterType = validateParameterType;
function getDomainForUrl(url) {
if (!url) {
return null;
}
var urlObject = osfmos_1.OSF.OUtil.parseUrl(url, true);
return urlObject.protocol + "//" + urlObject.host;
}
Utils.getDomainForUrl = getDomainForUrl;
function OverrideMethods() {
osfmos_1.OSF.XmlProcessor = XmlProcessor;
osfmos_1.OfficeExt.WACUtils.getDomainForUrl = Utils.getDomainForUrl;
}
Utils.OverrideMethods = OverrideMethods;
})(Utils || (exports.Utils = Utils = {}));
class DomParserProvider {
constructor(xml, xmlNamespaces) {
try {
this._xmldoc = new xmldom_1.DOMParser({}).parseFromString(xml, "text/xml");
}
catch (ex) {
console.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 osfmos_1.OfficeExt.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) {
if (!nodeName)
return null;
var nodeInfo = nodeName.split(':');
if (nodeInfo.length === 1) {
return nodeName;
}
else {
return nodeInfo[1];
}
}
getDocumentElement() {
return this._xmldoc.documentElement;
}
}
exports.DomParserProvider = DomParserProvider;
class XmlProcessor {
constructor(xml, xmlNamespaces) {
var e = Utils.validateParams(arguments, [
{ name: "xml", type: String, mayBeNull: false },
{ name: "xmlNamespaces", type: String, mayBeNull: false }
]);
if (e)
throw e;
this._provider = new DomParserProvider(xml, xmlNamespaces);
}
addNamespaceMapping(namespacePrefix, namespaceUri) {
var e = Utils.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 = Utils.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 = Utils.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 = Utils.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 = Utils.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 = Utils.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 = Utils.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 = Utils.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 = Utils.validateParams(arguments, [
{ name: "node", type: Object, mayBeNull: false },
{ name: "xml", type: String, mayBeNull: false }
]);
if (e)
throw e;
var processor = new osfmos_1.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 = Utils.validateParams(arguments, [
{ name: "node", type: Object, mayBeNull: false }
]);
if (e)
throw e;
return node.namespaceURI;
}
getNodePrefix(node) {
var e = Utils.validateParams(arguments, [
{ name: "node", type: Object, mayBeNull: false }
]);
if (e)
throw e;
return node.prefix;
}
getNodeBaseName(node) {
var e = Utils.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 = Utils.validateParams(arguments, [
{ name: "node", type: Object, mayBeNull: false }
]);
if (e)
throw e;
return node.nodeType;
}
appendChild(node, childXml) {
var e = Utils.validateParams(arguments, [
{ name: "node", type: Object, mayBeNull: false },
{ name: "childXml", type: String, mayBeNull: false }
]);
if (e)
throw e;
var processor = new osfmos_1.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 = Utils.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 xmldom_1.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;
}
}
exports.XmlProcessor = XmlProcessor;
//# sourceMappingURL=osfUtils.js.map