Update fast-xml-parser and dotnet installer scripts (#437)
* chore: update fast-xlm-parser and dotnet installer scripts * chore: update license for the fast-xml-parser
This commit is contained in:
parent
9b40770825
commit
a6be55a915
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
name: fast-xml-parser
|
name: fast-xml-parser
|
||||||
version: 4.0.10
|
version: 4.2.4
|
||||||
type: npm
|
type: npm
|
||||||
summary: Validate XML, Parse XML to JS Object, or Build XML from JS Object without C/C++ based libraries and no callback.
|
summary: Validate XML, Parse XML to JS Object, or Build XML from JS Object without C/C++ based libraries and no callback.
|
||||||
homepage: https://github.com/NaturalIntelligence/fast-xml-parser#readme
|
homepage: https://github.com/NaturalIntelligence/fast-xml-parser#readme
|
||||||
|
|
|
@ -50842,7 +50842,9 @@ const defaultOptions = {
|
||||||
],
|
],
|
||||||
processEntities: true,
|
processEntities: true,
|
||||||
stopNodes: [],
|
stopNodes: [],
|
||||||
transformTagName: false,
|
// transformTagName: false,
|
||||||
|
// transformAttributeName: false,
|
||||||
|
oneListGroup: false
|
||||||
};
|
};
|
||||||
|
|
||||||
function Builder(options) {
|
function Builder(options) {
|
||||||
|
@ -50869,20 +50871,6 @@ function Builder(options) {
|
||||||
this.tagEndChar = '>';
|
this.tagEndChar = '>';
|
||||||
this.newLine = '';
|
this.newLine = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.options.suppressEmptyNode) {
|
|
||||||
this.buildTextNode = buildEmptyTextNode;
|
|
||||||
this.buildObjNode = buildEmptyObjNode;
|
|
||||||
} else {
|
|
||||||
this.buildTextNode = buildTextValNode;
|
|
||||||
this.buildObjNode = buildObjectNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.buildTextValNode = buildTextValNode;
|
|
||||||
this.buildObjectNode = buildObjectNode;
|
|
||||||
|
|
||||||
this.replaceEntitiesValue = replaceEntitiesValue;
|
|
||||||
this.buildAttrPairStr = buildAttrPairStr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Builder.prototype.build = function(jObj) {
|
Builder.prototype.build = function(jObj) {
|
||||||
|
@ -50909,7 +50897,7 @@ Builder.prototype.j2x = function(jObj, level) {
|
||||||
else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;
|
else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;
|
||||||
// val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;
|
// val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;
|
||||||
} else if (jObj[key] instanceof Date) {
|
} else if (jObj[key] instanceof Date) {
|
||||||
val += this.buildTextNode(jObj[key], key, '', level);
|
val += this.buildTextValNode(jObj[key], key, '', level);
|
||||||
} else if (typeof jObj[key] !== 'object') {
|
} else if (typeof jObj[key] !== 'object') {
|
||||||
//premitive type
|
//premitive type
|
||||||
const attr = this.isAttribute(key);
|
const attr = this.isAttribute(key);
|
||||||
|
@ -50921,12 +50909,13 @@ Builder.prototype.j2x = function(jObj, level) {
|
||||||
let newval = this.options.tagValueProcessor(key, '' + jObj[key]);
|
let newval = this.options.tagValueProcessor(key, '' + jObj[key]);
|
||||||
val += this.replaceEntitiesValue(newval);
|
val += this.replaceEntitiesValue(newval);
|
||||||
} else {
|
} else {
|
||||||
val += this.buildTextNode(jObj[key], key, '', level);
|
val += this.buildTextValNode(jObj[key], key, '', level);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (Array.isArray(jObj[key])) {
|
} else if (Array.isArray(jObj[key])) {
|
||||||
//repeated nodes
|
//repeated nodes
|
||||||
const arrLen = jObj[key].length;
|
const arrLen = jObj[key].length;
|
||||||
|
let listTagVal = "";
|
||||||
for (let j = 0; j < arrLen; j++) {
|
for (let j = 0; j < arrLen; j++) {
|
||||||
const item = jObj[key][j];
|
const item = jObj[key][j];
|
||||||
if (typeof item === 'undefined') {
|
if (typeof item === 'undefined') {
|
||||||
|
@ -50936,11 +50925,19 @@ Builder.prototype.j2x = function(jObj, level) {
|
||||||
else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;
|
else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;
|
||||||
// val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;
|
// val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;
|
||||||
} else if (typeof item === 'object') {
|
} else if (typeof item === 'object') {
|
||||||
val += this.processTextOrObjNode(item, key, level)
|
if(this.options.oneListGroup ){
|
||||||
|
listTagVal += this.j2x(item, level + 1).val;
|
||||||
|
}else{
|
||||||
|
listTagVal += this.processTextOrObjNode(item, key, level)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
val += this.buildTextNode(item, key, '', level);
|
listTagVal += this.buildTextValNode(item, key, '', level);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(this.options.oneListGroup){
|
||||||
|
listTagVal = this.buildObjectNode(listTagVal, key, '', level);
|
||||||
|
}
|
||||||
|
val += listTagVal;
|
||||||
} else {
|
} else {
|
||||||
//nested node
|
//nested node
|
||||||
if (this.options.attributesGroupName && key === this.options.attributesGroupName) {
|
if (this.options.attributesGroupName && key === this.options.attributesGroupName) {
|
||||||
|
@ -50957,7 +50954,7 @@ Builder.prototype.j2x = function(jObj, level) {
|
||||||
return {attrStr: attrStr, val: val};
|
return {attrStr: attrStr, val: val};
|
||||||
};
|
};
|
||||||
|
|
||||||
function buildAttrPairStr(attrName, val){
|
Builder.prototype.buildAttrPairStr = function(attrName, val){
|
||||||
val = this.options.attributeValueProcessor(attrName, '' + val);
|
val = this.options.attributeValueProcessor(attrName, '' + val);
|
||||||
val = this.replaceEntitiesValue(val);
|
val = this.replaceEntitiesValue(val);
|
||||||
if (this.options.suppressBooleanAttributes && val === "true") {
|
if (this.options.suppressBooleanAttributes && val === "true") {
|
||||||
|
@ -50968,68 +50965,87 @@ function buildAttrPairStr(attrName, val){
|
||||||
function processTextOrObjNode (object, key, level) {
|
function processTextOrObjNode (object, key, level) {
|
||||||
const result = this.j2x(object, level + 1);
|
const result = this.j2x(object, level + 1);
|
||||||
if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {
|
if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {
|
||||||
return this.buildTextNode(object[this.options.textNodeName], key, result.attrStr, level);
|
return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);
|
||||||
} else {
|
} else {
|
||||||
return this.buildObjNode(result.val, key, result.attrStr, level);
|
return this.buildObjectNode(result.val, key, result.attrStr, level);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildObjectNode(val, key, attrStr, level) {
|
Builder.prototype.buildObjectNode = function(val, key, attrStr, level) {
|
||||||
let tagEndExp = '</' + key + this.tagEndChar;
|
if(val === ""){
|
||||||
let piClosingChar = "";
|
if(key[0] === "?") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;
|
||||||
|
else {
|
||||||
|
return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
|
||||||
if(key[0] === "?") {
|
let tagEndExp = '</' + key + this.tagEndChar;
|
||||||
piClosingChar = "?";
|
let piClosingChar = "";
|
||||||
tagEndExp = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (attrStr && val.indexOf('<') === -1) {
|
if(key[0] === "?") {
|
||||||
return ( this.indentate(level) + '<' + key + attrStr + piClosingChar + '>' + val + tagEndExp );
|
piClosingChar = "?";
|
||||||
} else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {
|
tagEndExp = "";
|
||||||
return this.indentate(level) + `<!--${val}-->` + this.newLine;
|
}
|
||||||
}else {
|
|
||||||
return (
|
if (attrStr && val.indexOf('<') === -1) {
|
||||||
this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +
|
return ( this.indentate(level) + '<' + key + attrStr + piClosingChar + '>' + val + tagEndExp );
|
||||||
val +
|
} else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {
|
||||||
this.indentate(level) + tagEndExp );
|
return this.indentate(level) + `<!--${val}-->` + this.newLine;
|
||||||
|
}else {
|
||||||
|
return (
|
||||||
|
this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +
|
||||||
|
val +
|
||||||
|
this.indentate(level) + tagEndExp );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Builder.prototype.closeTag = function(key){
|
||||||
|
let closeTag = "";
|
||||||
|
if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired
|
||||||
|
if(!this.options.suppressUnpairedNode) closeTag = "/"
|
||||||
|
}else if(this.options.suppressEmptyNode){ //empty
|
||||||
|
closeTag = "/";
|
||||||
|
}else{
|
||||||
|
closeTag = `></${key}`
|
||||||
|
}
|
||||||
|
return closeTag;
|
||||||
|
}
|
||||||
|
|
||||||
function buildEmptyObjNode(val, key, attrStr, level) {
|
function buildEmptyObjNode(val, key, attrStr, level) {
|
||||||
if (val !== '') {
|
if (val !== '') {
|
||||||
return this.buildObjectNode(val, key, attrStr, level);
|
return this.buildObjectNode(val, key, attrStr, level);
|
||||||
} else {
|
} else {
|
||||||
if(key[0] === "?") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;
|
if(key[0] === "?") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;
|
||||||
else return this.indentate(level) + '<' + key + attrStr + '/' + this.tagEndChar;
|
else {
|
||||||
|
return this.indentate(level) + '<' + key + attrStr + '/' + this.tagEndChar;
|
||||||
|
// return this.buildTagStr(level,key, attrStr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildTextValNode(val, key, attrStr, level) {
|
Builder.prototype.buildTextValNode = function(val, key, attrStr, level) {
|
||||||
if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {
|
if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {
|
||||||
return this.indentate(level) + `<![CDATA[${val}]]>` + this.newLine;
|
return this.indentate(level) + `<![CDATA[${val}]]>` + this.newLine;
|
||||||
}else if (this.options.commentPropName !== false && key === this.options.commentPropName) {
|
}else if (this.options.commentPropName !== false && key === this.options.commentPropName) {
|
||||||
return this.indentate(level) + `<!--${val}-->` + this.newLine;
|
return this.indentate(level) + `<!--${val}-->` + this.newLine;
|
||||||
|
}else if(key[0] === "?") {//PI tag
|
||||||
|
return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;
|
||||||
}else{
|
}else{
|
||||||
let textValue = this.options.tagValueProcessor(key, val);
|
let textValue = this.options.tagValueProcessor(key, val);
|
||||||
textValue = this.replaceEntitiesValue(textValue);
|
textValue = this.replaceEntitiesValue(textValue);
|
||||||
|
|
||||||
if( textValue === '' && this.options.unpairedTags.indexOf(key) !== -1){ //unpaired
|
if( textValue === ''){
|
||||||
if(this.options.suppressUnpairedNode){
|
return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;
|
||||||
return this.indentate(level) + '<' + key + this.tagEndChar;
|
}else{
|
||||||
}else{
|
return this.indentate(level) + '<' + key + attrStr + '>' +
|
||||||
return this.indentate(level) + '<' + key + "/" + this.tagEndChar;
|
|
||||||
}
|
|
||||||
} else{
|
|
||||||
return (
|
|
||||||
this.indentate(level) + '<' + key + attrStr + '>' +
|
|
||||||
textValue +
|
textValue +
|
||||||
'</' + key + this.tagEndChar );
|
'</' + key + this.tagEndChar;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function replaceEntitiesValue(textValue){
|
Builder.prototype.replaceEntitiesValue = function(textValue){
|
||||||
if(textValue && textValue.length > 0 && this.options.processEntities){
|
if(textValue && textValue.length > 0 && this.options.processEntities){
|
||||||
for (let i=0; i<this.options.entities.length; i++) {
|
for (let i=0; i<this.options.entities.length; i++) {
|
||||||
const entity = this.options.entities[i];
|
const entity = this.options.entities[i];
|
||||||
|
@ -51039,21 +51055,6 @@ function replaceEntitiesValue(textValue){
|
||||||
return textValue;
|
return textValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildEmptyTextNode(val, key, attrStr, level) {
|
|
||||||
if( val === '' && this.options.unpairedTags.indexOf(key) !== -1){ //unpaired
|
|
||||||
if(this.options.suppressUnpairedNode){
|
|
||||||
return this.indentate(level) + '<' + key + this.tagEndChar;
|
|
||||||
}else{
|
|
||||||
return this.indentate(level) + '<' + key + "/" + this.tagEndChar;
|
|
||||||
}
|
|
||||||
}else if (val !== '') { //empty
|
|
||||||
return this.buildTextValNode(val, key, attrStr, level);
|
|
||||||
} else {
|
|
||||||
if(key[0] === "?") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; //PI tag
|
|
||||||
else return this.indentate(level) + '<' + key + attrStr + '/' + this.tagEndChar; //normal
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function indentate(level) {
|
function indentate(level) {
|
||||||
return this.options.indentBy.repeat(level);
|
return this.options.indentBy.repeat(level);
|
||||||
}
|
}
|
||||||
|
@ -51082,108 +51083,131 @@ const EOL = "\n";
|
||||||
* @param {any} options
|
* @param {any} options
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
function toXml(jArray, options){
|
function toXml(jArray, options) {
|
||||||
return arrToStr( jArray, options, "", 0);
|
let indentation = "";
|
||||||
|
if (options.format && options.indentBy.length > 0) {
|
||||||
|
indentation = EOL;
|
||||||
|
}
|
||||||
|
return arrToStr(jArray, options, "", indentation);
|
||||||
}
|
}
|
||||||
|
|
||||||
function arrToStr(arr, options, jPath, level){
|
function arrToStr(arr, options, jPath, indentation) {
|
||||||
let xmlStr = "";
|
let xmlStr = "";
|
||||||
|
let isPreviousElementTag = false;
|
||||||
let indentation = "";
|
|
||||||
if(options.format && options.indentBy.length > 0){//TODO: this logic can be avoided for each call
|
|
||||||
indentation = EOL + "" + options.indentBy.repeat(level);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < arr.length; i++) {
|
for (let i = 0; i < arr.length; i++) {
|
||||||
const tagObj = arr[i];
|
const tagObj = arr[i];
|
||||||
const tagName = propName(tagObj);
|
const tagName = propName(tagObj);
|
||||||
let newJPath = "";
|
let newJPath = "";
|
||||||
if(jPath.length === 0) newJPath = tagName
|
if (jPath.length === 0) newJPath = tagName
|
||||||
else newJPath = `${jPath}.${tagName}`;
|
else newJPath = `${jPath}.${tagName}`;
|
||||||
|
|
||||||
if(tagName === options.textNodeName){
|
if (tagName === options.textNodeName) {
|
||||||
let tagText = tagObj[tagName];
|
let tagText = tagObj[tagName];
|
||||||
if(!isStopNode(newJPath, options)){
|
if (!isStopNode(newJPath, options)) {
|
||||||
tagText = options.tagValueProcessor( tagName, tagText);
|
tagText = options.tagValueProcessor(tagName, tagText);
|
||||||
tagText = replaceEntitiesValue(tagText, options);
|
tagText = replaceEntitiesValue(tagText, options);
|
||||||
}
|
}
|
||||||
xmlStr += indentation + tagText;
|
if (isPreviousElementTag) {
|
||||||
|
xmlStr += indentation;
|
||||||
|
}
|
||||||
|
xmlStr += tagText;
|
||||||
|
isPreviousElementTag = false;
|
||||||
continue;
|
continue;
|
||||||
}else if( tagName === options.cdataPropName){
|
} else if (tagName === options.cdataPropName) {
|
||||||
xmlStr += indentation + `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;
|
if (isPreviousElementTag) {
|
||||||
|
xmlStr += indentation;
|
||||||
|
}
|
||||||
|
xmlStr += `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;
|
||||||
|
isPreviousElementTag = false;
|
||||||
continue;
|
continue;
|
||||||
}else if( tagName === options.commentPropName){
|
} else if (tagName === options.commentPropName) {
|
||||||
xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;
|
xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;
|
||||||
|
isPreviousElementTag = true;
|
||||||
continue;
|
continue;
|
||||||
}else if( tagName[0] === "?"){
|
} else if (tagName[0] === "?") {
|
||||||
const attStr = attr_to_str(tagObj[":@"], options);
|
const attStr = attr_to_str(tagObj[":@"], options);
|
||||||
const tempInd = tagName === "?xml" ? "" : indentation;
|
const tempInd = tagName === "?xml" ? "" : indentation;
|
||||||
let piTextNodeName = tagObj[tagName][0][options.textNodeName];
|
let piTextNodeName = tagObj[tagName][0][options.textNodeName];
|
||||||
piTextNodeName = piTextNodeName.length !== 0 ? " " + piTextNodeName : ""; //remove extra spacing
|
piTextNodeName = piTextNodeName.length !== 0 ? " " + piTextNodeName : ""; //remove extra spacing
|
||||||
xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;
|
xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;
|
||||||
|
isPreviousElementTag = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const attStr = attr_to_str(tagObj[":@"], options);
|
let newIdentation = indentation;
|
||||||
let tagStart = indentation + `<${tagName}${attStr}`;
|
if (newIdentation !== "") {
|
||||||
let tagValue = arrToStr(tagObj[tagName], options, newJPath, level + 1);
|
newIdentation += options.indentBy;
|
||||||
if(options.unpairedTags.indexOf(tagName) !== -1){
|
|
||||||
if(options.suppressUnpairedNode) xmlStr += tagStart + ">";
|
|
||||||
else xmlStr += tagStart + "/>";
|
|
||||||
}else if( (!tagValue || tagValue.length === 0) && options.suppressEmptyNode){
|
|
||||||
xmlStr += tagStart + "/>";
|
|
||||||
}else{
|
|
||||||
//TODO: node with only text value should not parse the text value in next line
|
|
||||||
xmlStr += tagStart + `>${tagValue}${indentation}</${tagName}>` ;
|
|
||||||
}
|
}
|
||||||
|
const attStr = attr_to_str(tagObj[":@"], options);
|
||||||
|
const tagStart = indentation + `<${tagName}${attStr}`;
|
||||||
|
const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);
|
||||||
|
if (options.unpairedTags.indexOf(tagName) !== -1) {
|
||||||
|
if (options.suppressUnpairedNode) xmlStr += tagStart + ">";
|
||||||
|
else xmlStr += tagStart + "/>";
|
||||||
|
} else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {
|
||||||
|
xmlStr += tagStart + "/>";
|
||||||
|
} else if (tagValue && tagValue.endsWith(">")) {
|
||||||
|
xmlStr += tagStart + `>${tagValue}${indentation}</${tagName}>`;
|
||||||
|
} else {
|
||||||
|
xmlStr += tagStart + ">";
|
||||||
|
if (tagValue && indentation !== "" && (tagValue.includes("/>") || tagValue.includes("</"))) {
|
||||||
|
xmlStr += indentation + options.indentBy + tagValue + indentation;
|
||||||
|
} else {
|
||||||
|
xmlStr += tagValue;
|
||||||
|
}
|
||||||
|
xmlStr += `</${tagName}>`;
|
||||||
|
}
|
||||||
|
isPreviousElementTag = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return xmlStr;
|
return xmlStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
function propName(obj){
|
function propName(obj) {
|
||||||
const keys = Object.keys(obj);
|
const keys = Object.keys(obj);
|
||||||
for (let i = 0; i < keys.length; i++) {
|
for (let i = 0; i < keys.length; i++) {
|
||||||
const key = keys[i];
|
const key = keys[i];
|
||||||
if(key !== ":@") return key;
|
if (key !== ":@") return key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function attr_to_str(attrMap, options){
|
function attr_to_str(attrMap, options) {
|
||||||
let attrStr = "";
|
let attrStr = "";
|
||||||
if(attrMap && !options.ignoreAttributes){
|
if (attrMap && !options.ignoreAttributes) {
|
||||||
for (let attr in attrMap){
|
for (let attr in attrMap) {
|
||||||
let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);
|
let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);
|
||||||
attrVal = replaceEntitiesValue(attrVal, options);
|
attrVal = replaceEntitiesValue(attrVal, options);
|
||||||
if(attrVal === true && options.suppressBooleanAttributes){
|
if (attrVal === true && options.suppressBooleanAttributes) {
|
||||||
attrStr+= ` ${attr.substr(options.attributeNamePrefix.length)}`;
|
attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;
|
||||||
}else{
|
} else {
|
||||||
attrStr+= ` ${attr.substr(options.attributeNamePrefix.length)}="${attrVal}"`;
|
attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}="${attrVal}"`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return attrStr;
|
return attrStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
function isStopNode(jPath, options){
|
function isStopNode(jPath, options) {
|
||||||
jPath = jPath.substr(0,jPath.length - options.textNodeName.length - 1);
|
jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);
|
||||||
let tagName = jPath.substr(jPath.lastIndexOf(".") + 1);
|
let tagName = jPath.substr(jPath.lastIndexOf(".") + 1);
|
||||||
for(let index in options.stopNodes){
|
for (let index in options.stopNodes) {
|
||||||
if(options.stopNodes[index] === jPath || options.stopNodes[index] === "*."+tagName) return true;
|
if (options.stopNodes[index] === jPath || options.stopNodes[index] === "*." + tagName) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function replaceEntitiesValue(textValue, options){
|
function replaceEntitiesValue(textValue, options) {
|
||||||
if(textValue && textValue.length > 0 && options.processEntities){
|
if (textValue && textValue.length > 0 && options.processEntities) {
|
||||||
for (let i=0; i< options.entities.length; i++) {
|
for (let i = 0; i < options.entities.length; i++) {
|
||||||
const entity = options.entities[i];
|
const entity = options.entities[i];
|
||||||
textValue = textValue.replace(entity.regex, entity.val);
|
textValue = textValue.replace(entity.regex, entity.val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return textValue;
|
return textValue;
|
||||||
}
|
}
|
||||||
module.exports = toXml;
|
module.exports = toXml;
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ 6072:
|
/***/ 6072:
|
||||||
|
@ -51202,81 +51226,36 @@ function readDocType(xmlData, i){
|
||||||
{
|
{
|
||||||
i = i+9;
|
i = i+9;
|
||||||
let angleBracketsCount = 1;
|
let angleBracketsCount = 1;
|
||||||
let hasBody = false, entity = false, comment = false;
|
let hasBody = false, comment = false;
|
||||||
let exp = "";
|
let exp = "";
|
||||||
for(;i<xmlData.length;i++){
|
for(;i<xmlData.length;i++){
|
||||||
if (xmlData[i] === '<') {
|
if (xmlData[i] === '<' && !comment) { //Determine the tag type
|
||||||
if( hasBody &&
|
if( hasBody && isEntity(xmlData, i)){
|
||||||
xmlData[i+1] === '!' &&
|
|
||||||
xmlData[i+2] === 'E' &&
|
|
||||||
xmlData[i+3] === 'N' &&
|
|
||||||
xmlData[i+4] === 'T' &&
|
|
||||||
xmlData[i+5] === 'I' &&
|
|
||||||
xmlData[i+6] === 'T' &&
|
|
||||||
xmlData[i+7] === 'Y'
|
|
||||||
){
|
|
||||||
i += 7;
|
i += 7;
|
||||||
entity = true;
|
[entityName, val,i] = readEntityExp(xmlData,i+1);
|
||||||
}else if( hasBody &&
|
if(val.indexOf("&") === -1) //Parameter entities are not supported
|
||||||
xmlData[i+1] === '!' &&
|
entities[ validateEntityName(entityName) ] = {
|
||||||
xmlData[i+2] === 'E' &&
|
regx : RegExp( `&${entityName};`,"g"),
|
||||||
xmlData[i+3] === 'L' &&
|
val: val
|
||||||
xmlData[i+4] === 'E' &&
|
};
|
||||||
xmlData[i+5] === 'M' &&
|
|
||||||
xmlData[i+6] === 'E' &&
|
|
||||||
xmlData[i+7] === 'N' &&
|
|
||||||
xmlData[i+8] === 'T'
|
|
||||||
){
|
|
||||||
//Not supported
|
|
||||||
i += 8;
|
|
||||||
}else if( hasBody &&
|
|
||||||
xmlData[i+1] === '!' &&
|
|
||||||
xmlData[i+2] === 'A' &&
|
|
||||||
xmlData[i+3] === 'T' &&
|
|
||||||
xmlData[i+4] === 'T' &&
|
|
||||||
xmlData[i+5] === 'L' &&
|
|
||||||
xmlData[i+6] === 'I' &&
|
|
||||||
xmlData[i+7] === 'S' &&
|
|
||||||
xmlData[i+8] === 'T'
|
|
||||||
){
|
|
||||||
//Not supported
|
|
||||||
i += 8;
|
|
||||||
}else if( hasBody &&
|
|
||||||
xmlData[i+1] === '!' &&
|
|
||||||
xmlData[i+2] === 'N' &&
|
|
||||||
xmlData[i+3] === 'O' &&
|
|
||||||
xmlData[i+4] === 'T' &&
|
|
||||||
xmlData[i+5] === 'A' &&
|
|
||||||
xmlData[i+6] === 'T' &&
|
|
||||||
xmlData[i+7] === 'I' &&
|
|
||||||
xmlData[i+8] === 'O' &&
|
|
||||||
xmlData[i+9] === 'N'
|
|
||||||
){
|
|
||||||
//Not supported
|
|
||||||
i += 9;
|
|
||||||
}else if( //comment
|
|
||||||
xmlData[i+1] === '!' &&
|
|
||||||
xmlData[i+2] === '-' &&
|
|
||||||
xmlData[i+3] === '-'
|
|
||||||
){
|
|
||||||
comment = true;
|
|
||||||
}else{
|
|
||||||
throw new Error("Invalid DOCTYPE");
|
|
||||||
}
|
}
|
||||||
|
else if( hasBody && isElement(xmlData, i)) i += 8;//Not supported
|
||||||
|
else if( hasBody && isAttlist(xmlData, i)) i += 8;//Not supported
|
||||||
|
else if( hasBody && isNotation(xmlData, i)) i += 9;//Not supported
|
||||||
|
else if( isComment) comment = true;
|
||||||
|
else throw new Error("Invalid DOCTYPE");
|
||||||
|
|
||||||
angleBracketsCount++;
|
angleBracketsCount++;
|
||||||
exp = "";
|
exp = "";
|
||||||
} else if (xmlData[i] === '>') {
|
} else if (xmlData[i] === '>') { //Read tag content
|
||||||
if(comment){
|
if(comment){
|
||||||
if( xmlData[i - 1] === "-" && xmlData[i - 2] === "-"){
|
if( xmlData[i - 1] === "-" && xmlData[i - 2] === "-"){
|
||||||
comment = false;
|
comment = false;
|
||||||
}else{
|
angleBracketsCount--;
|
||||||
throw new Error(`Invalid XML comment in DOCTYPE`);
|
|
||||||
}
|
}
|
||||||
}else if(entity){
|
}else{
|
||||||
parseEntityExp(exp, entities);
|
angleBracketsCount--;
|
||||||
entity = false;
|
|
||||||
}
|
}
|
||||||
angleBracketsCount--;
|
|
||||||
if (angleBracketsCount === 0) {
|
if (angleBracketsCount === 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -51295,16 +51274,99 @@ function readDocType(xmlData, i){
|
||||||
return {entities, i};
|
return {entities, i};
|
||||||
}
|
}
|
||||||
|
|
||||||
const entityRegex = RegExp("^\\s([a-zA-z0-0]+)[ \t](['\"])([^&]+)\\2");
|
function readEntityExp(xmlData,i){
|
||||||
function parseEntityExp(exp, entities){
|
//External entities are not supported
|
||||||
const match = entityRegex.exec(exp);
|
// <!ENTITY ext SYSTEM "http://normal-website.com" >
|
||||||
if(match){
|
|
||||||
entities[ match[1] ] = {
|
//Parameter entities are not supported
|
||||||
regx : RegExp( `&${match[1]};`,"g"),
|
// <!ENTITY entityname "&anotherElement;">
|
||||||
val: match[3]
|
|
||||||
};
|
//Internal entities are supported
|
||||||
|
// <!ENTITY entityname "replacement text">
|
||||||
|
|
||||||
|
//read EntityName
|
||||||
|
let entityName = "";
|
||||||
|
for (; i < xmlData.length && (xmlData[i] !== "'" && xmlData[i] !== '"' ); i++) {
|
||||||
|
// if(xmlData[i] === " ") continue;
|
||||||
|
// else
|
||||||
|
entityName += xmlData[i];
|
||||||
}
|
}
|
||||||
|
entityName = entityName.trim();
|
||||||
|
if(entityName.indexOf(" ") !== -1) throw new Error("External entites are not supported");
|
||||||
|
|
||||||
|
//read Entity Value
|
||||||
|
const startChar = xmlData[i++];
|
||||||
|
let val = ""
|
||||||
|
for (; i < xmlData.length && xmlData[i] !== startChar ; i++) {
|
||||||
|
val += xmlData[i];
|
||||||
|
}
|
||||||
|
return [entityName, val, i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isComment(xmlData, i){
|
||||||
|
if(xmlData[i+1] === '!' &&
|
||||||
|
xmlData[i+2] === '-' &&
|
||||||
|
xmlData[i+3] === '-') return true
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
function isEntity(xmlData, i){
|
||||||
|
if(xmlData[i+1] === '!' &&
|
||||||
|
xmlData[i+2] === 'E' &&
|
||||||
|
xmlData[i+3] === 'N' &&
|
||||||
|
xmlData[i+4] === 'T' &&
|
||||||
|
xmlData[i+5] === 'I' &&
|
||||||
|
xmlData[i+6] === 'T' &&
|
||||||
|
xmlData[i+7] === 'Y') return true
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
function isElement(xmlData, i){
|
||||||
|
if(xmlData[i+1] === '!' &&
|
||||||
|
xmlData[i+2] === 'E' &&
|
||||||
|
xmlData[i+3] === 'L' &&
|
||||||
|
xmlData[i+4] === 'E' &&
|
||||||
|
xmlData[i+5] === 'M' &&
|
||||||
|
xmlData[i+6] === 'E' &&
|
||||||
|
xmlData[i+7] === 'N' &&
|
||||||
|
xmlData[i+8] === 'T') return true
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
function isAttlist(xmlData, i){
|
||||||
|
if(xmlData[i+1] === '!' &&
|
||||||
|
xmlData[i+2] === 'A' &&
|
||||||
|
xmlData[i+3] === 'T' &&
|
||||||
|
xmlData[i+4] === 'T' &&
|
||||||
|
xmlData[i+5] === 'L' &&
|
||||||
|
xmlData[i+6] === 'I' &&
|
||||||
|
xmlData[i+7] === 'S' &&
|
||||||
|
xmlData[i+8] === 'T') return true
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
function isNotation(xmlData, i){
|
||||||
|
if(xmlData[i+1] === '!' &&
|
||||||
|
xmlData[i+2] === 'N' &&
|
||||||
|
xmlData[i+3] === 'O' &&
|
||||||
|
xmlData[i+4] === 'T' &&
|
||||||
|
xmlData[i+5] === 'A' &&
|
||||||
|
xmlData[i+6] === 'T' &&
|
||||||
|
xmlData[i+7] === 'I' &&
|
||||||
|
xmlData[i+8] === 'O' &&
|
||||||
|
xmlData[i+9] === 'N') return true
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
//an entity name should not contains special characters that may be used in regex
|
||||||
|
//Eg !?\\\/[]$%{}^&*()<>
|
||||||
|
const specialChar = "!?\\\/[]$%{}^&*()<>|+";
|
||||||
|
|
||||||
|
function validateEntityName(name){
|
||||||
|
for (let i = 0; i < specialChar.length; i++) {
|
||||||
|
const ch = specialChar[i];
|
||||||
|
if(name.indexOf(ch) !== -1) throw new Error(`Invalid character ${ch} in entity name`);
|
||||||
|
}
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = readDocType;
|
module.exports = readDocType;
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
@ -51328,7 +51390,8 @@ const defaultOptions = {
|
||||||
cdataPropName: false,
|
cdataPropName: false,
|
||||||
numberParseOptions: {
|
numberParseOptions: {
|
||||||
hex: true,
|
hex: true,
|
||||||
leadingZeros: true
|
leadingZeros: true,
|
||||||
|
eNotation: true
|
||||||
},
|
},
|
||||||
tagValueProcessor: function(tagName, val) {
|
tagValueProcessor: function(tagName, val) {
|
||||||
return val;
|
return val;
|
||||||
|
@ -51346,6 +51409,11 @@ const defaultOptions = {
|
||||||
ignoreDeclaration: false,
|
ignoreDeclaration: false,
|
||||||
ignorePiTags: false,
|
ignorePiTags: false,
|
||||||
transformTagName: false,
|
transformTagName: false,
|
||||||
|
transformAttributeName: false,
|
||||||
|
updateTag: function(tagName, jPath, attrs){
|
||||||
|
return tagName
|
||||||
|
},
|
||||||
|
// skipEmptyListItem: false
|
||||||
};
|
};
|
||||||
|
|
||||||
const buildOptions = function(options) {
|
const buildOptions = function(options) {
|
||||||
|
@ -51383,12 +51451,12 @@ class OrderedObjParser{
|
||||||
this.tagsNodeStack = [];
|
this.tagsNodeStack = [];
|
||||||
this.docTypeEntities = {};
|
this.docTypeEntities = {};
|
||||||
this.lastEntities = {
|
this.lastEntities = {
|
||||||
"amp" : { regex: /&(amp|#38|#x26);/g, val : "&"},
|
|
||||||
"apos" : { regex: /&(apos|#39|#x27);/g, val : "'"},
|
"apos" : { regex: /&(apos|#39|#x27);/g, val : "'"},
|
||||||
"gt" : { regex: /&(gt|#62|#x3E);/g, val : ">"},
|
"gt" : { regex: /&(gt|#62|#x3E);/g, val : ">"},
|
||||||
"lt" : { regex: /&(lt|#60|#x3C);/g, val : "<"},
|
"lt" : { regex: /&(lt|#60|#x3C);/g, val : "<"},
|
||||||
"quot" : { regex: /&(quot|#34|#x22);/g, val : "\""},
|
"quot" : { regex: /&(quot|#34|#x22);/g, val : "\""},
|
||||||
};
|
};
|
||||||
|
this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : "&"};
|
||||||
this.htmlEntities = {
|
this.htmlEntities = {
|
||||||
"space": { regex: /&(nbsp|#160);/g, val: " " },
|
"space": { regex: /&(nbsp|#160);/g, val: " " },
|
||||||
// "lt" : { regex: /&(lt|#60);/g, val: "<" },
|
// "lt" : { regex: /&(lt|#60);/g, val: "<" },
|
||||||
|
@ -51413,6 +51481,7 @@ class OrderedObjParser{
|
||||||
this.replaceEntitiesValue = replaceEntitiesValue;
|
this.replaceEntitiesValue = replaceEntitiesValue;
|
||||||
this.readStopNodeData = readStopNodeData;
|
this.readStopNodeData = readStopNodeData;
|
||||||
this.saveTextToParentTag = saveTextToParentTag;
|
this.saveTextToParentTag = saveTextToParentTag;
|
||||||
|
this.addChild = addChild;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -51484,7 +51553,7 @@ function resolveNameSpace(tagname) {
|
||||||
//const attrsRegx = new RegExp("([\\w\\-\\.\\:]+)\\s*=\\s*(['\"])((.|\n)*?)\\2","gm");
|
//const attrsRegx = new RegExp("([\\w\\-\\.\\:]+)\\s*=\\s*(['\"])((.|\n)*?)\\2","gm");
|
||||||
const attrsRegx = new RegExp('([^\\s=]+)\\s*(=\\s*([\'"])([\\s\\S]*?)\\3)?', 'gm');
|
const attrsRegx = new RegExp('([^\\s=]+)\\s*(=\\s*([\'"])([\\s\\S]*?)\\3)?', 'gm');
|
||||||
|
|
||||||
function buildAttributesMap(attrStr, jPath) {
|
function buildAttributesMap(attrStr, jPath, tagName) {
|
||||||
if (!this.options.ignoreAttributes && typeof attrStr === 'string') {
|
if (!this.options.ignoreAttributes && typeof attrStr === 'string') {
|
||||||
// attrStr = attrStr.replace(/\r?\n/g, ' ');
|
// attrStr = attrStr.replace(/\r?\n/g, ' ');
|
||||||
//attrStr = attrStr || attrStr.trim();
|
//attrStr = attrStr || attrStr.trim();
|
||||||
|
@ -51495,8 +51564,12 @@ function buildAttributesMap(attrStr, jPath) {
|
||||||
for (let i = 0; i < len; i++) {
|
for (let i = 0; i < len; i++) {
|
||||||
const attrName = this.resolveNameSpace(matches[i][1]);
|
const attrName = this.resolveNameSpace(matches[i][1]);
|
||||||
let oldVal = matches[i][4];
|
let oldVal = matches[i][4];
|
||||||
const aName = this.options.attributeNamePrefix + attrName;
|
let aName = this.options.attributeNamePrefix + attrName;
|
||||||
if (attrName.length) {
|
if (attrName.length) {
|
||||||
|
if (this.options.transformAttributeName) {
|
||||||
|
aName = this.options.transformAttributeName(aName);
|
||||||
|
}
|
||||||
|
if(aName === "__proto__") aName = "#__proto__";
|
||||||
if (oldVal !== undefined) {
|
if (oldVal !== undefined) {
|
||||||
if (this.options.trimValues) {
|
if (this.options.trimValues) {
|
||||||
oldVal = oldVal.trim();
|
oldVal = oldVal.trim();
|
||||||
|
@ -51530,7 +51603,7 @@ function buildAttributesMap(attrStr, jPath) {
|
||||||
attrCollection[this.options.attributesGroupName] = attrs;
|
attrCollection[this.options.attributesGroupName] = attrs;
|
||||||
return attrCollection;
|
return attrCollection;
|
||||||
}
|
}
|
||||||
return attrs;
|
return attrs
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51564,9 +51637,21 @@ const parseXml = function(xmlData) {
|
||||||
textData = this.saveTextToParentTag(textData, currentNode, jPath);
|
textData = this.saveTextToParentTag(textData, currentNode, jPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
jPath = jPath.substr(0, jPath.lastIndexOf("."));
|
//check if last tag of nested tag was unpaired tag
|
||||||
|
const lastTagName = jPath.substring(jPath.lastIndexOf(".")+1);
|
||||||
|
if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){
|
||||||
|
throw new Error(`Unpaired tag can not be used as closing tag: </${tagName}>`);
|
||||||
|
}
|
||||||
|
let propIndex = 0
|
||||||
|
if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){
|
||||||
|
propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)
|
||||||
|
this.tagsNodeStack.pop();
|
||||||
|
}else{
|
||||||
|
propIndex = jPath.lastIndexOf(".");
|
||||||
|
}
|
||||||
|
jPath = jPath.substring(0, propIndex);
|
||||||
|
|
||||||
currentNode = this.tagsNodeStack.pop();//avoid recurssion, set the parent tag scope
|
currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope
|
||||||
textData = "";
|
textData = "";
|
||||||
i = closeIndex;
|
i = closeIndex;
|
||||||
} else if( xmlData[i+1] === '?') {
|
} else if( xmlData[i+1] === '?') {
|
||||||
|
@ -51583,9 +51668,9 @@ const parseXml = function(xmlData) {
|
||||||
childNode.add(this.options.textNodeName, "");
|
childNode.add(this.options.textNodeName, "");
|
||||||
|
|
||||||
if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){
|
if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){
|
||||||
childNode[":@"] = this.buildAttributesMap(tagData.tagExp, jPath);
|
childNode[":@"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);
|
||||||
}
|
}
|
||||||
currentNode.addChild(childNode);
|
this.addChild(currentNode, childNode, jPath)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51624,7 +51709,7 @@ const parseXml = function(xmlData) {
|
||||||
|
|
||||||
i = closeIndex + 2;
|
i = closeIndex + 2;
|
||||||
}else {//Opening tag
|
}else {//Opening tag
|
||||||
let result = readTagExp(xmlData,i, this. options.removeNSPrefix);
|
let result = readTagExp(xmlData,i, this.options.removeNSPrefix);
|
||||||
let tagName= result.tagName;
|
let tagName= result.tagName;
|
||||||
let tagExp = result.tagExp;
|
let tagExp = result.tagExp;
|
||||||
let attrExpPresent = result.attrExpPresent;
|
let attrExpPresent = result.attrExpPresent;
|
||||||
|
@ -51642,23 +51727,22 @@ const parseXml = function(xmlData) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(tagName !== xmlObj.tagname){
|
|
||||||
jPath += jPath ? "." + tagName : tagName;
|
|
||||||
}
|
|
||||||
|
|
||||||
//check if last tag was unpaired tag
|
//check if last tag was unpaired tag
|
||||||
const lastTag = currentNode;
|
const lastTag = currentNode;
|
||||||
if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){
|
if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){
|
||||||
currentNode = this.tagsNodeStack.pop();
|
currentNode = this.tagsNodeStack.pop();
|
||||||
|
jPath = jPath.substring(0, jPath.lastIndexOf("."));
|
||||||
|
}
|
||||||
|
if(tagName !== xmlObj.tagname){
|
||||||
|
jPath += jPath ? "." + tagName : tagName;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) { //TODO: namespace
|
if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) { //TODO: namespace
|
||||||
let tagContent = "";
|
let tagContent = "";
|
||||||
//self-closing tag
|
//self-closing tag
|
||||||
if(tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1){
|
if(tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1){
|
||||||
i = result.closeIndex;
|
i = result.closeIndex;
|
||||||
}
|
}
|
||||||
//boolean tag
|
//unpaired tag
|
||||||
else if(this.options.unpairedTags.indexOf(tagName) !== -1){
|
else if(this.options.unpairedTags.indexOf(tagName) !== -1){
|
||||||
i = result.closeIndex;
|
i = result.closeIndex;
|
||||||
}
|
}
|
||||||
|
@ -51673,7 +51757,7 @@ const parseXml = function(xmlData) {
|
||||||
|
|
||||||
const childNode = new xmlNode(tagName);
|
const childNode = new xmlNode(tagName);
|
||||||
if(tagName !== tagExp && attrExpPresent){
|
if(tagName !== tagExp && attrExpPresent){
|
||||||
childNode[":@"] = this.buildAttributesMap(tagExp, jPath);
|
childNode[":@"] = this.buildAttributesMap(tagExp, jPath, tagName);
|
||||||
}
|
}
|
||||||
if(tagContent) {
|
if(tagContent) {
|
||||||
tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);
|
tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);
|
||||||
|
@ -51682,7 +51766,7 @@ const parseXml = function(xmlData) {
|
||||||
jPath = jPath.substr(0, jPath.lastIndexOf("."));
|
jPath = jPath.substr(0, jPath.lastIndexOf("."));
|
||||||
childNode.add(this.options.textNodeName, tagContent);
|
childNode.add(this.options.textNodeName, tagContent);
|
||||||
|
|
||||||
currentNode.addChild(childNode);
|
this.addChild(currentNode, childNode, jPath)
|
||||||
}else{
|
}else{
|
||||||
//selfClosing tag
|
//selfClosing tag
|
||||||
if(tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1){
|
if(tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1){
|
||||||
|
@ -51699,10 +51783,10 @@ const parseXml = function(xmlData) {
|
||||||
|
|
||||||
const childNode = new xmlNode(tagName);
|
const childNode = new xmlNode(tagName);
|
||||||
if(tagName !== tagExp && attrExpPresent){
|
if(tagName !== tagExp && attrExpPresent){
|
||||||
childNode[":@"] = this.buildAttributesMap(tagExp, jPath);
|
childNode[":@"] = this.buildAttributesMap(tagExp, jPath, tagName);
|
||||||
}
|
}
|
||||||
|
this.addChild(currentNode, childNode, jPath)
|
||||||
jPath = jPath.substr(0, jPath.lastIndexOf("."));
|
jPath = jPath.substr(0, jPath.lastIndexOf("."));
|
||||||
currentNode.addChild(childNode);
|
|
||||||
}
|
}
|
||||||
//opening tag
|
//opening tag
|
||||||
else{
|
else{
|
||||||
|
@ -51710,9 +51794,9 @@ const parseXml = function(xmlData) {
|
||||||
this.tagsNodeStack.push(currentNode);
|
this.tagsNodeStack.push(currentNode);
|
||||||
|
|
||||||
if(tagName !== tagExp && attrExpPresent){
|
if(tagName !== tagExp && attrExpPresent){
|
||||||
childNode[":@"] = this.buildAttributesMap(tagExp, jPath);
|
childNode[":@"] = this.buildAttributesMap(tagExp, jPath, tagName);
|
||||||
}
|
}
|
||||||
currentNode.addChild(childNode);
|
this.addChild(currentNode, childNode, jPath)
|
||||||
currentNode = childNode;
|
currentNode = childNode;
|
||||||
}
|
}
|
||||||
textData = "";
|
textData = "";
|
||||||
|
@ -51726,7 +51810,19 @@ const parseXml = function(xmlData) {
|
||||||
return xmlObj.child;
|
return xmlObj.child;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function addChild(currentNode, childNode, jPath){
|
||||||
|
const result = this.options.updateTag(childNode.tagname, jPath, childNode[":@"])
|
||||||
|
if(result === false){
|
||||||
|
}else if(typeof result === "string"){
|
||||||
|
childNode.tagname = result
|
||||||
|
currentNode.addChild(childNode);
|
||||||
|
}else{
|
||||||
|
currentNode.addChild(childNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const replaceEntitiesValue = function(val){
|
const replaceEntitiesValue = function(val){
|
||||||
|
|
||||||
if(this.options.processEntities){
|
if(this.options.processEntities){
|
||||||
for(let entityName in this.docTypeEntities){
|
for(let entityName in this.docTypeEntities){
|
||||||
const entity = this.docTypeEntities[entityName];
|
const entity = this.docTypeEntities[entityName];
|
||||||
|
@ -51742,6 +51838,7 @@ const replaceEntitiesValue = function(val){
|
||||||
val = val.replace( entity.regex, entity.val);
|
val = val.replace( entity.regex, entity.val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
val = val.replace( this.ampEntity.regex, this.ampEntity.val);
|
||||||
}
|
}
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
@ -51780,7 +51877,7 @@ function isItStopNode(stopNodes, jPath, currentTagName){
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the tag Expression and where it is ending handling single-dobule quotes situation
|
* Returns the tag Expression and where it is ending handling single-double quotes situation
|
||||||
* @param {string} xmlData
|
* @param {string} xmlData
|
||||||
* @param {number} i starting index
|
* @param {number} i starting index
|
||||||
* @returns
|
* @returns
|
||||||
|
@ -51976,6 +52073,8 @@ class XMLParser{
|
||||||
throw new Error("Entity value can't have '&'")
|
throw new Error("Entity value can't have '&'")
|
||||||
}else if(key.indexOf("&") !== -1 || key.indexOf(";") !== -1){
|
}else if(key.indexOf("&") !== -1 || key.indexOf(";") !== -1){
|
||||||
throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'")
|
throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'")
|
||||||
|
}else if(value === "&"){
|
||||||
|
throw new Error("An entity with value '&' is not permitted");
|
||||||
}else{
|
}else{
|
||||||
this.externalEntities[key] = value;
|
this.externalEntities[key] = value;
|
||||||
}
|
}
|
||||||
|
@ -52086,8 +52185,20 @@ function assignAttributes(obj, attrMap, jpath, options){
|
||||||
}
|
}
|
||||||
|
|
||||||
function isLeafTag(obj, options){
|
function isLeafTag(obj, options){
|
||||||
|
const { textNodeName } = options;
|
||||||
const propCount = Object.keys(obj).length;
|
const propCount = Object.keys(obj).length;
|
||||||
if( propCount === 0 || (propCount === 1 && obj[options.textNodeName]) ) return true;
|
|
||||||
|
if (propCount === 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
propCount === 1 &&
|
||||||
|
(obj[textNodeName] || typeof obj[textNodeName] === "boolean" || obj[textNodeName] === 0)
|
||||||
|
) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
exports.prettify = prettify;
|
exports.prettify = prettify;
|
||||||
|
@ -52109,9 +52220,11 @@ class XmlNode{
|
||||||
}
|
}
|
||||||
add(key,val){
|
add(key,val){
|
||||||
// this.child.push( {name : key, val: val, isCdata: isCdata });
|
// this.child.push( {name : key, val: val, isCdata: isCdata });
|
||||||
|
if(key === "__proto__") key = "#__proto__";
|
||||||
this.child.push( {[key]: val });
|
this.child.push( {[key]: val });
|
||||||
}
|
}
|
||||||
addChild(node) {
|
addChild(node) {
|
||||||
|
if(node.tagname === "__proto__") node.tagname = "#__proto__";
|
||||||
if(node[":@"] && Object.keys(node[":@"]).length > 0){
|
if(node[":@"] && Object.keys(node[":@"]).length > 0){
|
||||||
this.child.push( { [node.tagname]: node.child, [":@"]: node[":@"] });
|
this.child.push( { [node.tagname]: node.child, [":@"]: node[":@"] });
|
||||||
}else{
|
}else{
|
||||||
|
|
|
@ -310,6 +310,10 @@ get_machine_architecture() {
|
||||||
echo "s390x"
|
echo "s390x"
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
|
ppc64le)
|
||||||
|
echo "ppc64le"
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -347,6 +351,10 @@ get_normalized_architecture_from_architecture() {
|
||||||
echo "s390x"
|
echo "s390x"
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
|
ppc64le)
|
||||||
|
echo "ppc64le"
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
say_err "Architecture \`$architecture\` not supported. If you think this is a bug, report it at https://github.com/dotnet/install-scripts/issues"
|
say_err "Architecture \`$architecture\` not supported. If you think this is a bug, report it at https://github.com/dotnet/install-scripts/issues"
|
||||||
|
@ -1655,7 +1663,7 @@ do
|
||||||
echo " -InstallDir"
|
echo " -InstallDir"
|
||||||
echo " --architecture <ARCHITECTURE> Architecture of dotnet binaries to be installed, Defaults to \`$architecture\`."
|
echo " --architecture <ARCHITECTURE> Architecture of dotnet binaries to be installed, Defaults to \`$architecture\`."
|
||||||
echo " --arch,-Architecture,-Arch"
|
echo " --arch,-Architecture,-Arch"
|
||||||
echo " Possible values: x64, arm, arm64 and s390x"
|
echo " Possible values: x64, arm, arm64, s390x and ppc64le"
|
||||||
echo " --os <system> Specifies operating system to be used when selecting the installer."
|
echo " --os <system> Specifies operating system to be used when selecting the installer."
|
||||||
echo " Overrides the OS determination approach used by the script. Supported values: osx, linux, linux-musl, freebsd, rhel.6."
|
echo " Overrides the OS determination approach used by the script. Supported values: osx, linux, linux-musl, freebsd, rhel.6."
|
||||||
echo " In case any other value is provided, the platform will be determined by the script based on machine configuration."
|
echo " In case any other value is provided, the platform will be determined by the script based on machine configuration."
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
"@actions/glob": "^0.3.0",
|
"@actions/glob": "^0.3.0",
|
||||||
"@actions/http-client": "^2.0.1",
|
"@actions/http-client": "^2.0.1",
|
||||||
"@actions/io": "^1.0.2",
|
"@actions/io": "^1.0.2",
|
||||||
"fast-xml-parser": "^4.0.10",
|
"fast-xml-parser": "^4.2.4",
|
||||||
"json5": "^2.2.3",
|
"json5": "^2.2.3",
|
||||||
"semver": "^6.3.0"
|
"semver": "^6.3.0"
|
||||||
},
|
},
|
||||||
|
@ -3309,18 +3309,24 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/fast-xml-parser": {
|
"node_modules/fast-xml-parser": {
|
||||||
"version": "4.0.10",
|
"version": "4.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.10.tgz",
|
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.4.tgz",
|
||||||
"integrity": "sha512-mYMMIk7Ho1QOiedyvafdyPamn1Vlda+5n95lcn0g79UiCQoLQ2xfPQ8m3pcxBMpVaftYXtoIE2wrNTjmLQnnkg==",
|
"integrity": "sha512-fbfMDvgBNIdDJLdLOwacjFAPYt67tr31H9ZhWSm45CDAxvd0I6WTlSOUo7K2P/K5sA5JgMKG64PI3DMcaFdWpQ==",
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "paypal",
|
||||||
|
"url": "https://paypal.me/naturalintelligence"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/NaturalIntelligence"
|
||||||
|
}
|
||||||
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"strnum": "^1.0.5"
|
"strnum": "^1.0.5"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"fxparser": "src/cli/cli.js"
|
"fxparser": "src/cli/cli.js"
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"type": "paypal",
|
|
||||||
"url": "https://paypal.me/naturalintelligence"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/fastq": {
|
"node_modules/fastq": {
|
||||||
|
@ -9004,9 +9010,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"fast-xml-parser": {
|
"fast-xml-parser": {
|
||||||
"version": "4.0.10",
|
"version": "4.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.10.tgz",
|
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.4.tgz",
|
||||||
"integrity": "sha512-mYMMIk7Ho1QOiedyvafdyPamn1Vlda+5n95lcn0g79UiCQoLQ2xfPQ8m3pcxBMpVaftYXtoIE2wrNTjmLQnnkg==",
|
"integrity": "sha512-fbfMDvgBNIdDJLdLOwacjFAPYt67tr31H9ZhWSm45CDAxvd0I6WTlSOUo7K2P/K5sA5JgMKG64PI3DMcaFdWpQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"strnum": "^1.0.5"
|
"strnum": "^1.0.5"
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
"@actions/glob": "^0.3.0",
|
"@actions/glob": "^0.3.0",
|
||||||
"@actions/http-client": "^2.0.1",
|
"@actions/http-client": "^2.0.1",
|
||||||
"@actions/io": "^1.0.2",
|
"@actions/io": "^1.0.2",
|
||||||
"fast-xml-parser": "^4.0.10",
|
"fast-xml-parser": "^4.2.4",
|
||||||
"json5": "^2.2.3",
|
"json5": "^2.2.3",
|
||||||
"semver": "^6.3.0"
|
"semver": "^6.3.0"
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue