diff --git a/package.json b/package.json
index 50a0a51d..212ccd43 100644
--- a/package.json
+++ b/package.json
@@ -56,12 +56,12 @@
"memoizee": "0.4.1",
"promise-worker": "^1.1.1",
"prop-types": "^15.5.10",
- "react": "^15.4.0",
+ "react": "^15.6.2",
"react-addons-perf": "^15.4.0",
"react-addons-shallow-compare": "0.14.8",
- "react-addons-test-utils": "^15.4.0",
+ "react-addons-test-utils": "^15.6.2",
"react-collapse": "2.3.1",
- "react-dom": "^15.4.0",
+ "react-dom": "^15.6.2",
"react-height": "^2.0.0",
"react-hot-loader": "1.3.1",
"react-immutable-proptypes": "2.1.0",
@@ -84,6 +84,7 @@
"whatwg-fetch": "0.11.1",
"worker-loader": "^0.7.1",
"xml": "1.0.1",
+ "xml-but-prettier": "^1.0.1",
"yaml-js": "0.2.0"
},
"devDependencies": {
diff --git a/src/core/components/response-body.jsx b/src/core/components/response-body.jsx
index c55c1d6d..e3c2aeb1 100644
--- a/src/core/components/response-body.jsx
+++ b/src/core/components/response-body.jsx
@@ -1,6 +1,6 @@
import React from "react"
import PropTypes from "prop-types"
-import { formatXml } from "core/utils"
+import formatXml from "xml-but-prettier"
import lowerCase from "lodash/lowerCase"
export default class ResponseBody extends React.Component {
@@ -31,7 +31,9 @@ export default class ResponseBody extends React.Component {
// XML
} else if (/xml/i.test(contentType)) {
- body = formatXml(content)
+ body = formatXml(content, {
+ textNodesOnSameLine: true
+ })
bodyEl =
// HTML or Plain Text
diff --git a/src/core/utils.js b/src/core/utils.js
index b1b7f9de..6ac9eb29 100644
--- a/src/core/utils.js
+++ b/src/core/utils.js
@@ -155,83 +155,6 @@ export function getList(iterable, keys) {
return Im.List.isList(val) ? val : Im.List()
}
-// Adapted from http://stackoverflow.com/a/2893259/454004
-// Note: directly ported from CoffeeScript
-export function formatXml (xml) {
- var contexp, fn, formatted, indent, l, lastType, len, lines, ln, reg, transitions, wsexp
- reg = /(>)(<)(\/*)/g
- wsexp = /[ ]*(.*)[ ]+\n/g
- contexp = /(<.+>)(.+\n)/g
- xml = xml.replace(/\r\n/g, "\n").replace(reg, "$1\n$2$3").replace(wsexp, "$1\n").replace(contexp, "$1\n$2")
- formatted = ""
- lines = xml.split("\n")
- indent = 0
- lastType = "other"
- transitions = {
- "single->single": 0,
- "single->closing": -1,
- "single->opening": 0,
- "single->other": 0,
- "closing->single": 0,
- "closing->closing": -1,
- "closing->opening": 0,
- "closing->other": 0,
- "opening->single": 1,
- "opening->closing": 0,
- "opening->opening": 1,
- "opening->other": 1,
- "other->single": 0,
- "other->closing": -1,
- "other->opening": 0,
- "other->other": 0
- }
- fn = function(ln) {
- var fromTo, key, padding, type, types, value
- types = {
- single: Boolean(ln.match(/<.+\/>/)),
- closing: Boolean(ln.match(/<\/.+>/)),
- opening: Boolean(ln.match(/<[^!?].*>/))
- }
- type = ((function() {
- var results
- results = []
- for (key in types) {
- value = types[key]
- if (value) {
- results.push(key)
- }
- }
- return results
- })())[0]
- type = type === void 0 ? "other" : type
- fromTo = lastType + "->" + type
- lastType = type
- padding = ""
- indent += transitions[fromTo]
- padding = ((function() {
- /* eslint-disable no-unused-vars */
- var m, ref1, results, j
- results = []
- for (j = m = 0, ref1 = indent; 0 <= ref1 ? m < ref1 : m > ref1; j = 0 <= ref1 ? ++m : --m) {
- results.push(" ")
- }
- /* eslint-enable no-unused-vars */
- return results
- })()).join("")
- if (fromTo === "opening->closing") {
- formatted = formatted.substr(0, formatted.length - 1) + ln + "\n"
- } else {
- formatted += padding + ln + "\n"
- }
- }
- for (l = 0, len = lines.length; l < len; l++) {
- ln = lines[l]
- fn(ln)
- }
- return formatted
-}
-
-
/**
* Adapted from http://github.com/asvd/microlight
* @copyright 2016 asvd
diff --git a/test/core/utils.js b/test/core/utils.js
index d65046cb..1068aab4 100644
--- a/test/core/utils.js
+++ b/test/core/utils.js
@@ -925,4 +925,5 @@ sbG8iKTs8L3NjcmlwdD4=`)
expect(sanitizeUrl({})).toEqual("")
})
})
+
})