| 
								
							 | 
							
								(function (global, factory) {
							 | 
						
						
						
							| 
								
							 | 
							
								  if (typeof define === "function" && define.amd) {
							 | 
						
						
						
							| 
								
							 | 
							
								    define(["exports"], factory);
							 | 
						
						
						
							| 
								
							 | 
							
								  } else if (typeof exports !== "undefined") {
							 | 
						
						
						
							| 
								
							 | 
							
								    factory(exports);
							 | 
						
						
						
							| 
								
							 | 
							
								  } else {
							 | 
						
						
						
							| 
								
							 | 
							
								    var mod = {
							 | 
						
						
						
							| 
								
							 | 
							
								      exports: {}
							 | 
						
						
						
							| 
								
							 | 
							
								    };
							 | 
						
						
						
							| 
								
							 | 
							
								    factory(mod.exports);
							 | 
						
						
						
							| 
								
							 | 
							
								    global.jstoxml = mod.exports;
							 | 
						
						
						
							| 
								
							 | 
							
								  }
							 | 
						
						
						
							| 
								
							 | 
							
								})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports) {
							 | 
						
						
						
							| 
								
							 | 
							
								  "use strict";
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  Object.defineProperty(_exports, "__esModule", {
							 | 
						
						
						
							| 
								
							 | 
							
								    value: true
							 | 
						
						
						
							| 
								
							 | 
							
								  });
							 | 
						
						
						
							| 
								
							 | 
							
								  _exports.toXML = _exports.default = void 0;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  var ARRAY = "array";
							 | 
						
						
						
							| 
								
							 | 
							
								  var BOOLEAN = "boolean";
							 | 
						
						
						
							| 
								
							 | 
							
								  var DATE = "date";
							 | 
						
						
						
							| 
								
							 | 
							
								  var NULL = "null";
							 | 
						
						
						
							| 
								
							 | 
							
								  var NUMBER = "number";
							 | 
						
						
						
							| 
								
							 | 
							
								  var OBJECT = "object";
							 | 
						
						
						
							| 
								
							 | 
							
								  var SPECIAL_OBJECT = "special-object";
							 | 
						
						
						
							| 
								
							 | 
							
								  var STRING = "string";
							 | 
						
						
						
							| 
								
							 | 
							
								  var PRIVATE_VARS = ["_selfCloseTag", "_attrs"];
							 | 
						
						
						
							| 
								
							 | 
							
								  var PRIVATE_VARS_REGEXP = new RegExp(PRIVATE_VARS.join("|"), "g");
							 | 
						
						
						
							| 
								
							 | 
							
								  /**
							 | 
						
						
						
							| 
								
							 | 
							
								   * Determines the indent string based on current tree depth.
							 | 
						
						
						
							| 
								
							 | 
							
								   */
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  var getIndentStr = function getIndentStr() {
							 | 
						
						
						
							| 
								
							 | 
							
								    var indent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
							 | 
						
						
						
							| 
								
							 | 
							
								    var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
							 | 
						
						
						
							| 
								
							 | 
							
								    return indent.repeat(depth);
							 | 
						
						
						
							| 
								
							 | 
							
								  };
							 | 
						
						
						
							| 
								
							 | 
							
								  /**
							 | 
						
						
						
							| 
								
							 | 
							
								   * Sugar function supplementing JS's quirky typeof operator, plus some extra help to detect
							 | 
						
						
						
							| 
								
							 | 
							
								   * "special objects" expected by jstoxml.
							 | 
						
						
						
							| 
								
							 | 
							
								   * Example:
							 | 
						
						
						
							| 
								
							 | 
							
								   * getType(new Date());
							 | 
						
						
						
							| 
								
							 | 
							
								   * -> 'date'
							 | 
						
						
						
							| 
								
							 | 
							
								   */
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  var getType = function getType(val) {
							 | 
						
						
						
							| 
								
							 | 
							
								    return Array.isArray(val) && ARRAY || _typeof(val) === OBJECT && val !== null && val._name && SPECIAL_OBJECT || val instanceof Date && DATE || val === null && NULL || _typeof(val);
							 | 
						
						
						
							| 
								
							 | 
							
								  };
							 | 
						
						
						
							| 
								
							 | 
							
								  /**
							 | 
						
						
						
							| 
								
							 | 
							
								   * Replaces matching values in a string with a new value.
							 | 
						
						
						
							| 
								
							 | 
							
								   * Example:
							 | 
						
						
						
							| 
								
							 | 
							
								   * filterStr('foo&bar', { '&': '&' });
							 | 
						
						
						
							| 
								
							 | 
							
								   * -> 'foo&bar'
							 | 
						
						
						
							| 
								
							 | 
							
								   */
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  var filterStr = function filterStr() {
							 | 
						
						
						
							| 
								
							 | 
							
								    var inputStr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
							 | 
						
						
						
							| 
								
							 | 
							
								    var filter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    // Passthrough/no-op for nonstrings (e.g. number, boolean).
							 | 
						
						
						
							| 
								
							 | 
							
								    if (typeof inputStr !== "string") {
							 | 
						
						
						
							| 
								
							 | 
							
								      return inputStr;
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    var regexp = new RegExp("(".concat(Object.keys(filter).join("|"), ")(?!(\\w|#)*;)"), "g");
							 | 
						
						
						
							| 
								
							 | 
							
								    return String(inputStr).replace(regexp, function (str, entity) {
							 | 
						
						
						
							| 
								
							 | 
							
								      return filter[entity] || "";
							 | 
						
						
						
							| 
								
							 | 
							
								    });
							 | 
						
						
						
							| 
								
							 | 
							
								  };
							 | 
						
						
						
							| 
								
							 | 
							
								  /**
							 | 
						
						
						
							| 
								
							 | 
							
								   * Maps an object or array of arribute keyval pairs to a string.
							 | 
						
						
						
							| 
								
							 | 
							
								   * Examples:
							 | 
						
						
						
							| 
								
							 | 
							
								   * { foo: 'bar', baz: 'g' } -> 'foo="bar" baz="g"'
							 | 
						
						
						
							| 
								
							 | 
							
								   * [ { ⚡: true }, { foo: 'bar' } ] -> '⚡ foo="bar"'
							 | 
						
						
						
							| 
								
							 | 
							
								   */
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  var getAttributeKeyVals = function getAttributeKeyVals() {
							 | 
						
						
						
							| 
								
							 | 
							
								    var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
							 | 
						
						
						
							| 
								
							 | 
							
								    var filter = arguments.length > 1 ? arguments[1] : undefined;
							 | 
						
						
						
							| 
								
							 | 
							
								    var keyVals = [];
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    if (Array.isArray(attributes)) {
							 | 
						
						
						
							| 
								
							 | 
							
								      // Array containing complex objects and potentially duplicate attributes.
							 | 
						
						
						
							| 
								
							 | 
							
								      keyVals = attributes.map(function (attr) {
							 | 
						
						
						
							| 
								
							 | 
							
								        var key = Object.keys(attr)[0];
							 | 
						
						
						
							| 
								
							 | 
							
								        var val = attr[key];
							 | 
						
						
						
							| 
								
							 | 
							
								        var filteredVal = filter ? filterStr(val, filter) : val;
							 | 
						
						
						
							| 
								
							 | 
							
								        var valStr = filteredVal === true ? "" : "=\"".concat(filteredVal, "\"");
							 | 
						
						
						
							| 
								
							 | 
							
								        return "".concat(key).concat(valStr);
							 | 
						
						
						
							| 
								
							 | 
							
								      });
							 | 
						
						
						
							| 
								
							 | 
							
								    } else {
							 | 
						
						
						
							| 
								
							 | 
							
								      var keys = Object.keys(attributes);
							 | 
						
						
						
							| 
								
							 | 
							
								      keyVals = keys.map(function (key) {
							 | 
						
						
						
							| 
								
							 | 
							
								        // Simple object - keyval pairs.
							 | 
						
						
						
							| 
								
							 | 
							
								        // For boolean true, simply output the key.
							 | 
						
						
						
							| 
								
							 | 
							
								        var filteredVal = filter ? filterStr(attributes[key], filter) : attributes[key];
							 | 
						
						
						
							| 
								
							 | 
							
								        var valStr = attributes[key] === true ? "" : "=\"".concat(filteredVal, "\"");
							 | 
						
						
						
							| 
								
							 | 
							
								        return "".concat(key).concat(valStr);
							 | 
						
						
						
							| 
								
							 | 
							
								      });
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    return keyVals;
							 | 
						
						
						
							| 
								
							 | 
							
								  };
							 | 
						
						
						
							| 
								
							 | 
							
								  /**
							 | 
						
						
						
							| 
								
							 | 
							
								   * Converts an attributes object/array to a string of keyval pairs.
							 | 
						
						
						
							| 
								
							 | 
							
								   * Example:
							 | 
						
						
						
							| 
								
							 | 
							
								   * formatAttributes({ a: 1, b: 2 })
							 | 
						
						
						
							| 
								
							 | 
							
								   * -> 'a="1" b="2"'
							 | 
						
						
						
							| 
								
							 | 
							
								   */
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  var formatAttributes = function formatAttributes() {
							 | 
						
						
						
							| 
								
							 | 
							
								    var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
							 | 
						
						
						
							| 
								
							 | 
							
								    var filter = arguments.length > 1 ? arguments[1] : undefined;
							 | 
						
						
						
							| 
								
							 | 
							
								    var keyVals = getAttributeKeyVals(attributes, filter);
							 | 
						
						
						
							| 
								
							 | 
							
								    if (keyVals.length === 0) return "";
							 | 
						
						
						
							| 
								
							 | 
							
								    var keysValsJoined = keyVals.join(" ");
							 | 
						
						
						
							| 
								
							 | 
							
								    return " ".concat(keysValsJoined);
							 | 
						
						
						
							| 
								
							 | 
							
								  };
							 | 
						
						
						
							| 
								
							 | 
							
								  /**
							 | 
						
						
						
							| 
								
							 | 
							
								   * Converts an object to a jstoxml array.
							 | 
						
						
						
							| 
								
							 | 
							
								   * Example:
							 | 
						
						
						
							| 
								
							 | 
							
								   * objToArray({ foo: 'bar', baz: 2 });
							 | 
						
						
						
							| 
								
							 | 
							
								   * ->
							 | 
						
						
						
							| 
								
							 | 
							
								   * [
							 | 
						
						
						
							| 
								
							 | 
							
								   *   {
							 | 
						
						
						
							| 
								
							 | 
							
								   *     _name: 'foo',
							 | 
						
						
						
							| 
								
							 | 
							
								   *     _content: 'bar'
							 | 
						
						
						
							| 
								
							 | 
							
								   *   },
							 | 
						
						
						
							| 
								
							 | 
							
								   *   {
							 | 
						
						
						
							| 
								
							 | 
							
								   *     _name: 'baz',
							 | 
						
						
						
							| 
								
							 | 
							
								   *     _content: 2
							 | 
						
						
						
							| 
								
							 | 
							
								   *   }
							 | 
						
						
						
							| 
								
							 | 
							
								   * ]
							 | 
						
						
						
							| 
								
							 | 
							
								   */
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  var objToArray = function objToArray() {
							 | 
						
						
						
							| 
								
							 | 
							
								    var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
							 | 
						
						
						
							| 
								
							 | 
							
								    return Object.keys(obj).map(function (key) {
							 | 
						
						
						
							| 
								
							 | 
							
								      return {
							 | 
						
						
						
							| 
								
							 | 
							
								        _name: key,
							 | 
						
						
						
							| 
								
							 | 
							
								        _content: obj[key]
							 | 
						
						
						
							| 
								
							 | 
							
								      };
							 | 
						
						
						
							| 
								
							 | 
							
								    });
							 | 
						
						
						
							| 
								
							 | 
							
								  };
							 | 
						
						
						
							| 
								
							 | 
							
								  /**
							 | 
						
						
						
							| 
								
							 | 
							
								   * Determines if a value is a primitive JavaScript value (not including Symbol).
							 | 
						
						
						
							| 
								
							 | 
							
								   * Example:
							 | 
						
						
						
							| 
								
							 | 
							
								   * isPrimitive(4);
							 | 
						
						
						
							| 
								
							 | 
							
								   * -> true
							 | 
						
						
						
							| 
								
							 | 
							
								   */
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  var PRIMITIVE_TYPES = [STRING, NUMBER, BOOLEAN];
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  var isPrimitive = function isPrimitive(val) {
							 | 
						
						
						
							| 
								
							 | 
							
								    return PRIMITIVE_TYPES.includes(getType(val));
							 | 
						
						
						
							| 
								
							 | 
							
								  };
							 | 
						
						
						
							| 
								
							 | 
							
								  /**
							 | 
						
						
						
							| 
								
							 | 
							
								   * Determines if a value is a simple primitive type that can fit onto one line.  Needed for
							 | 
						
						
						
							| 
								
							 | 
							
								   * determining any needed indenting and line breaks.
							 | 
						
						
						
							| 
								
							 | 
							
								   * Example:
							 | 
						
						
						
							| 
								
							 | 
							
								   * isSimpleType(new Date());
							 | 
						
						
						
							| 
								
							 | 
							
								   * -> true
							 | 
						
						
						
							| 
								
							 | 
							
								   */
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  var SIMPLE_TYPES = [].concat(PRIMITIVE_TYPES, [DATE, SPECIAL_OBJECT]);
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  var isSimpleType = function isSimpleType(val) {
							 | 
						
						
						
							| 
								
							 | 
							
								    return SIMPLE_TYPES.includes(getType(val));
							 | 
						
						
						
							| 
								
							 | 
							
								  };
							 | 
						
						
						
							| 
								
							 | 
							
								  /**
							 | 
						
						
						
							| 
								
							 | 
							
								   * Determines if an XML string is a simple primitive, or contains nested data.
							 | 
						
						
						
							| 
								
							 | 
							
								   * Example:
							 | 
						
						
						
							| 
								
							 | 
							
								   * isSimpleXML('<foo />');
							 | 
						
						
						
							| 
								
							 | 
							
								   * -> false
							 | 
						
						
						
							| 
								
							 | 
							
								   */
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  var isSimpleXML = function isSimpleXML(xmlStr) {
							 | 
						
						
						
							| 
								
							 | 
							
								    return !xmlStr.match("<");
							 | 
						
						
						
							| 
								
							 | 
							
								  };
							 | 
						
						
						
							| 
								
							 | 
							
								  /**
							 | 
						
						
						
							| 
								
							 | 
							
								   * Assembles an XML header as defined by the config.
							 | 
						
						
						
							| 
								
							 | 
							
								   */
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  var DEFAULT_XML_HEADER = '<?xml version="1.0" encoding="UTF-8"?>';
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  var getHeaderString = function getHeaderString(_ref) {
							 | 
						
						
						
							| 
								
							 | 
							
								    var header = _ref.header,
							 | 
						
						
						
							| 
								
							 | 
							
								        indent = _ref.indent,
							 | 
						
						
						
							| 
								
							 | 
							
								        isOutputStart = _ref.isOutputStart;
							 | 
						
						
						
							| 
								
							 | 
							
								    var shouldOutputHeader = header && isOutputStart;
							 | 
						
						
						
							| 
								
							 | 
							
								    if (!shouldOutputHeader) return "";
							 | 
						
						
						
							| 
								
							 | 
							
								    var shouldUseDefaultHeader = _typeof(header) === BOOLEAN; // return `${shouldUseDefaultHeader ? DEFAULT_XML_HEADER : header}${indent ? "\n" : ""
							 | 
						
						
						
							| 
								
							 | 
							
								    //   }`;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    return shouldUseDefaultHeader ? DEFAULT_XML_HEADER : header;
							 | 
						
						
						
							| 
								
							 | 
							
								  };
							 | 
						
						
						
							| 
								
							 | 
							
								  /**
							 | 
						
						
						
							| 
								
							 | 
							
								   * Recursively traverses an object tree and converts the output to an XML string.
							 | 
						
						
						
							| 
								
							 | 
							
								   * Example:
							 | 
						
						
						
							| 
								
							 | 
							
								   * toXML({ foo: 'bar' });
							 | 
						
						
						
							| 
								
							 | 
							
								   * -> <foo>bar</foo>
							 | 
						
						
						
							| 
								
							 | 
							
								   */
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  var defaultEntityFilter = {
							 | 
						
						
						
							| 
								
							 | 
							
								    "<": "<",
							 | 
						
						
						
							| 
								
							 | 
							
								    ">": ">",
							 | 
						
						
						
							| 
								
							 | 
							
								    "&": "&"
							 | 
						
						
						
							| 
								
							 | 
							
								  };
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  var toXML = function toXML() {
							 | 
						
						
						
							| 
								
							 | 
							
								    var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
							 | 
						
						
						
							| 
								
							 | 
							
								    var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    var _config$depth = config.depth,
							 | 
						
						
						
							| 
								
							 | 
							
								        depth = _config$depth === void 0 ? 0 : _config$depth,
							 | 
						
						
						
							| 
								
							 | 
							
								        indent = config.indent,
							 | 
						
						
						
							| 
								
							 | 
							
								        _isFirstItem = config._isFirstItem,
							 | 
						
						
						
							| 
								
							 | 
							
								        _config$_isOutputStar = config._isOutputStart,
							 | 
						
						
						
							| 
								
							 | 
							
								        _isOutputStart = _config$_isOutputStar === void 0 ? true : _config$_isOutputStar,
							 | 
						
						
						
							| 
								
							 | 
							
								        header = config.header,
							 | 
						
						
						
							| 
								
							 | 
							
								        _config$attributesFil = config.attributesFilter,
							 | 
						
						
						
							| 
								
							 | 
							
								        rawAttributesFilter = _config$attributesFil === void 0 ? {} : _config$attributesFil,
							 | 
						
						
						
							| 
								
							 | 
							
								        _config$filter = config.filter,
							 | 
						
						
						
							| 
								
							 | 
							
								        rawFilter = _config$filter === void 0 ? {} : _config$filter;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    var shouldTurnOffAttributesFilter = typeof rawAttributesFilter === 'boolean' && !rawAttributesFilter;
							 | 
						
						
						
							| 
								
							 | 
							
								    var attributesFilter = shouldTurnOffAttributesFilter ? {} : _objectSpread(_objectSpread(_objectSpread({}, defaultEntityFilter), {
							 | 
						
						
						
							| 
								
							 | 
							
								      '"': """
							 | 
						
						
						
							| 
								
							 | 
							
								    }), rawAttributesFilter);
							 | 
						
						
						
							| 
								
							 | 
							
								    var shouldTurnOffFilter = typeof rawFilter === 'boolean' && !rawFilter;
							 | 
						
						
						
							| 
								
							 | 
							
								    var filter = shouldTurnOffFilter ? {} : _objectSpread(_objectSpread({}, defaultEntityFilter), rawFilter); // Determine indent string based on depth.
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    var indentStr = getIndentStr(indent, depth); // For branching based on value type.
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    var valType = getType(obj);
							 | 
						
						
						
							| 
								
							 | 
							
								    var headerStr = getHeaderString({
							 | 
						
						
						
							| 
								
							 | 
							
								      header: header,
							 | 
						
						
						
							| 
								
							 | 
							
								      indent: indent,
							 | 
						
						
						
							| 
								
							 | 
							
								      depth: depth,
							 | 
						
						
						
							| 
								
							 | 
							
								      isOutputStart: _isOutputStart
							 | 
						
						
						
							| 
								
							 | 
							
								    });
							 | 
						
						
						
							| 
								
							 | 
							
								    var isOutputStart = _isOutputStart && !headerStr && _isFirstItem && depth === 0;
							 | 
						
						
						
							| 
								
							 | 
							
								    var outputStr = "";
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    switch (valType) {
							 | 
						
						
						
							| 
								
							 | 
							
								      case "special-object":
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								          // Processes a specially-formatted object used by jstoxml.
							 | 
						
						
						
							| 
								
							 | 
							
								          var _name = obj._name,
							 | 
						
						
						
							| 
								
							 | 
							
								              _content = obj._content; // Output text content without a tag wrapper.
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								          if (_content === null) {
							 | 
						
						
						
							| 
								
							 | 
							
								            outputStr = _name;
							 | 
						
						
						
							| 
								
							 | 
							
								            break;
							 | 
						
						
						
							| 
								
							 | 
							
								          } // Handles arrays of primitive values. (#33)
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								          var isArrayOfPrimitives = Array.isArray(_content) && _content.every(isPrimitive);
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								          if (isArrayOfPrimitives) {
							 | 
						
						
						
							| 
								
							 | 
							
								            var primitives = _content.map(function (a) {
							 | 
						
						
						
							| 
								
							 | 
							
								              return toXML({
							 | 
						
						
						
							| 
								
							 | 
							
								                _name: _name,
							 | 
						
						
						
							| 
								
							 | 
							
								                _content: a
							 | 
						
						
						
							| 
								
							 | 
							
								              }, _objectSpread(_objectSpread({}, config), {}, {
							 | 
						
						
						
							| 
								
							 | 
							
								                depth: depth,
							 | 
						
						
						
							| 
								
							 | 
							
								                _isOutputStart: false
							 | 
						
						
						
							| 
								
							 | 
							
								              }));
							 | 
						
						
						
							| 
								
							 | 
							
								            });
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								            return primitives.join('');
							 | 
						
						
						
							| 
								
							 | 
							
								          } // Don't output private vars (such as _attrs).
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								          if (_name.match(PRIVATE_VARS_REGEXP)) break; // Process the nested new value and create new config.
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								          var newVal = toXML(_content, _objectSpread(_objectSpread({}, config), {}, {
							 | 
						
						
						
							| 
								
							 | 
							
								            depth: depth + 1,
							 | 
						
						
						
							| 
								
							 | 
							
								            _isOutputStart: isOutputStart
							 | 
						
						
						
							| 
								
							 | 
							
								          }));
							 | 
						
						
						
							| 
								
							 | 
							
								          var newValType = getType(newVal);
							 | 
						
						
						
							| 
								
							 | 
							
								          var isNewValSimple = isSimpleXML(newVal); // Pre-tag output (indent and line breaks).
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								          var preIndentStr = indent && !isOutputStart ? "\n" : "";
							 | 
						
						
						
							| 
								
							 | 
							
								          var preTag = "".concat(preIndentStr).concat(indentStr); // Special handling for comments, preserving preceding line breaks/indents.
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								          if (_name === '_comment') {
							 | 
						
						
						
							| 
								
							 | 
							
								            outputStr += "".concat(preTag, "<!-- ").concat(_content, " -->");
							 | 
						
						
						
							| 
								
							 | 
							
								            break;
							 | 
						
						
						
							| 
								
							 | 
							
								          } // Tag output.
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								          var valIsEmpty = newValType === "undefined" || newVal === "";
							 | 
						
						
						
							| 
								
							 | 
							
								          var shouldSelfClose = _typeof(obj._selfCloseTag) === BOOLEAN ? valIsEmpty && obj._selfCloseTag : valIsEmpty;
							 | 
						
						
						
							| 
								
							 | 
							
								          var selfCloseStr = shouldSelfClose ? "/" : "";
							 | 
						
						
						
							| 
								
							 | 
							
								          var attributesString = formatAttributes(obj._attrs, attributesFilter);
							 | 
						
						
						
							| 
								
							 | 
							
								          var tag = "<".concat(_name).concat(attributesString).concat(selfCloseStr, ">"); // Post-tag output (closing tag, indent, line breaks).
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								          var preTagCloseStr = indent && !isNewValSimple ? "\n".concat(indentStr) : "";
							 | 
						
						
						
							| 
								
							 | 
							
								          var postTag = !shouldSelfClose ? "".concat(newVal).concat(preTagCloseStr, "</").concat(_name, ">") : "";
							 | 
						
						
						
							| 
								
							 | 
							
								          outputStr += "".concat(preTag).concat(tag).concat(postTag);
							 | 
						
						
						
							| 
								
							 | 
							
								          break;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								      case "object":
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								          // Iterates over keyval pairs in an object, converting each item to a special-object.
							 | 
						
						
						
							| 
								
							 | 
							
								          var keys = Object.keys(obj);
							 | 
						
						
						
							| 
								
							 | 
							
								          var outputArr = keys.map(function (key, index) {
							 | 
						
						
						
							| 
								
							 | 
							
								            var newConfig = _objectSpread(_objectSpread({}, config), {}, {
							 | 
						
						
						
							| 
								
							 | 
							
								              _isFirstItem: index === 0,
							 | 
						
						
						
							| 
								
							 | 
							
								              _isLastItem: index + 1 === keys.length,
							 | 
						
						
						
							| 
								
							 | 
							
								              _isOutputStart: isOutputStart
							 | 
						
						
						
							| 
								
							 | 
							
								            });
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								            var outputObj = {
							 | 
						
						
						
							| 
								
							 | 
							
								              _name: key
							 | 
						
						
						
							| 
								
							 | 
							
								            };
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								            if (getType(obj[key]) === "object") {
							 | 
						
						
						
							| 
								
							 | 
							
								              // Sub-object contains an object.
							 | 
						
						
						
							| 
								
							 | 
							
								              // Move private vars up as needed.  Needed to support certain types of objects
							 | 
						
						
						
							| 
								
							 | 
							
								              // E.g. { foo: { _attrs: { a: 1 } } } -> <foo a="1"/>
							 | 
						
						
						
							| 
								
							 | 
							
								              PRIVATE_VARS.forEach(function (privateVar) {
							 | 
						
						
						
							| 
								
							 | 
							
								                var val = obj[key][privateVar];
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								                if (typeof val !== "undefined") {
							 | 
						
						
						
							| 
								
							 | 
							
								                  outputObj[privateVar] = val;
							 | 
						
						
						
							| 
								
							 | 
							
								                  delete obj[key][privateVar];
							 | 
						
						
						
							| 
								
							 | 
							
								                }
							 | 
						
						
						
							| 
								
							 | 
							
								              });
							 | 
						
						
						
							| 
								
							 | 
							
								              var hasContent = typeof obj[key]._content !== "undefined";
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								              if (hasContent) {
							 | 
						
						
						
							| 
								
							 | 
							
								                // _content has sibling keys, so pass as an array (edge case).
							 | 
						
						
						
							| 
								
							 | 
							
								                // E.g. { foo: 'bar', _content: { baz: 2 } } -> <foo>bar</foo><baz>2</baz>
							 | 
						
						
						
							| 
								
							 | 
							
								                if (Object.keys(obj[key]).length > 1) {
							 | 
						
						
						
							| 
								
							 | 
							
								                  var newContentObj = Object.assign({}, obj[key]);
							 | 
						
						
						
							| 
								
							 | 
							
								                  delete newContentObj._content;
							 | 
						
						
						
							| 
								
							 | 
							
								                  outputObj._content = [].concat(_toConsumableArray(objToArray(newContentObj)), [obj[key]._content]);
							 | 
						
						
						
							| 
								
							 | 
							
								                }
							 | 
						
						
						
							| 
								
							 | 
							
								              }
							 | 
						
						
						
							| 
								
							 | 
							
								            } // Fallthrough: just pass the key as the content for the new special-object.
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								            if (typeof outputObj._content === "undefined") outputObj._content = obj[key];
							 | 
						
						
						
							| 
								
							 | 
							
								            var xml = toXML(outputObj, newConfig, key);
							 | 
						
						
						
							| 
								
							 | 
							
								            return xml;
							 | 
						
						
						
							| 
								
							 | 
							
								          }, config);
							 | 
						
						
						
							| 
								
							 | 
							
								          outputStr = outputArr.join('');
							 | 
						
						
						
							| 
								
							 | 
							
								          break;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								      case "function":
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								          // Executes a user-defined function and returns output.
							 | 
						
						
						
							| 
								
							 | 
							
								          var fnResult = obj(config);
							 | 
						
						
						
							| 
								
							 | 
							
								          outputStr = toXML(fnResult, config);
							 | 
						
						
						
							| 
								
							 | 
							
								          break;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								      case "array":
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								          // Iterates and converts each value in an array.
							 | 
						
						
						
							| 
								
							 | 
							
								          var _outputArr = obj.map(function (singleVal, index) {
							 | 
						
						
						
							| 
								
							 | 
							
								            var newConfig = _objectSpread(_objectSpread({}, config), {}, {
							 | 
						
						
						
							| 
								
							 | 
							
								              _isFirstItem: index === 0,
							 | 
						
						
						
							| 
								
							 | 
							
								              _isLastItem: index + 1 === obj.length,
							 | 
						
						
						
							| 
								
							 | 
							
								              _isOutputStart: isOutputStart
							 | 
						
						
						
							| 
								
							 | 
							
								            });
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								            return toXML(singleVal, newConfig);
							 | 
						
						
						
							| 
								
							 | 
							
								          });
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								          outputStr = _outputArr.join('');
							 | 
						
						
						
							| 
								
							 | 
							
								          break;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								      // number, string, boolean, date, null, etc
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								      default:
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								          outputStr = filterStr(obj, filter);
							 | 
						
						
						
							| 
								
							 | 
							
								          break;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    return "".concat(headerStr).concat(outputStr);
							 | 
						
						
						
							| 
								
							 | 
							
								  };
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  _exports.toXML = toXML;
							 | 
						
						
						
							| 
								
							 | 
							
								  var _default = {
							 | 
						
						
						
							| 
								
							 | 
							
								    toXML: toXML
							 | 
						
						
						
							| 
								
							 | 
							
								  };
							 | 
						
						
						
							| 
								
							 | 
							
								  _exports.default = _default;
							 | 
						
						
						
							| 
								
							 | 
							
								});
							 |