@webex/helper-html 2.59.2 → 2.59.3-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"names":["_htmlBase","require","removeNode","node","remove","parentElement","removeChild","i","length","Error","_filter","_len","arguments","args","Array","_key","_promise","default","resolve","_filterSync","apply","filter","_curry2","exports","processCallback","allowedTags","allowedStyles","html","doc","DOMParser","parseFromString","depthFirstForEach","body","childNodes","filterNode","indexOf","concat","innerHTML","isElement","nodeName","toLowerCase","allowedTagNames","_keys","_includes2","allowedAttributes","_forEach2","listAttributeNames","attributes","attrName","removeAttribute","attrValue","getNamedItem","value","trim","reparent","styles","split","map","style","styleName","Boolean","join","setAttribute","_filterEscape","_len2","_key2","_filterEscapeSync","escapeNode","before","document","createTextNode","after","parentNode","insertBefore","trimPattern","str","replace","_reduce2","attrNames","attr","push","name","list","fn","o","ownerDocument","undefined","nodeType","filterSync","filterEscape","filterEscapeSync"],"sources":["html.shim.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-env browser */\n\nimport {curry, forEach, includes, reduce} from 'lodash';\n\nexport {escape, escapeSync} from './html-base';\n\n/**\n * Some browsers don't implement {@link Element#remove()} or\n * {@link NodeList#remove()} or {@link HTMLCollection#remove()}. This wrapper\n * calls the appropriate `#remove()` method if available, or falls back to a\n * non-global-polluting polyfill.\n * @param {Element|NodeList|HTMLCollection} node\n * @returns {undefined}\n */\nfunction removeNode(node) {\n if (node.remove) {\n node.remove();\n\n return;\n }\n\n if (node.parentElement) {\n node.parentElement.removeChild(node);\n\n return;\n }\n\n if ('length' in node) {\n for (let i = node.length - 1; i >= 0; i -= 1) {\n removeNode(node[i]);\n }\n\n return;\n }\n\n throw new Error('Could not find a way to remove node');\n}\n\n/**\n * @param {Object} allowedTags\n * @param {Array<string>} allowedStyles\n * @param {string} html\n * @private\n * @returns {string}\n */\nfunction _filter(...args) {\n return new Promise((resolve) => {\n resolve(_filterSync(...args));\n });\n}\n\n/**\n * Curried async HTML filter.\n * @param {Object} allowedTags Map of tagName -> array of allowed attributes\n * @param {Array<string>} allowedStyles Array of allowed styles\n * @param {string} html html to filter\n * @returns {string}\n */\nexport const filter = curry(_filter, 4);\n\n/**\n * @param {function} processCallback callback function to do additional\n * processing on node. of the form process(node)\n * @param {Object} allowedTags\n * @param {Array<string>} allowedStyles\n * @param {string} html\n * @private\n * @returns {string}\n */\nfunction _filterSync(processCallback, allowedTags, allowedStyles, html) {\n if (!html || !allowedStyles || !allowedTags) {\n if (html.length === 0) {\n return html;\n }\n\n throw new Error('`allowedTags`, `allowedStyles`, and `html` must be provided');\n }\n\n const doc = new DOMParser().parseFromString(html, 'text/html');\n\n depthFirstForEach(doc.body.childNodes, filterNode);\n processCallback(doc.body);\n\n if (html.indexOf('body') === 1) {\n return `<body>${doc.body.innerHTML}</body>`;\n }\n\n return doc.body.innerHTML;\n\n /**\n * @param {Node} node\n * @private\n * @returns {undefined}\n */\n function filterNode(node) {\n if (!isElement(node)) {\n return;\n }\n\n const nodeName = node.nodeName.toLowerCase();\n const allowedTagNames = Object.keys(allowedTags);\n\n depthFirstForEach(node.childNodes, filterNode);\n\n if (includes(allowedTagNames, nodeName)) {\n const allowedAttributes = allowedTags[nodeName];\n\n forEach(listAttributeNames(node.attributes), (attrName) => {\n if (!includes(allowedAttributes, attrName)) {\n node.removeAttribute(attrName);\n } else if (attrName === 'href' || attrName === 'src') {\n const attrValue = node.attributes.getNamedItem(attrName).value.trim().toLowerCase();\n\n // We're doing at runtime what the no-script-url rule does at compile\n // time\n // eslint-disable-next-line no-script-url\n if (attrValue.indexOf('javascript:') === 0 || attrValue.indexOf('vbscript:') === 0) {\n reparent(node);\n }\n } else if (attrName === 'style') {\n const styles = node.attributes\n .getNamedItem('style')\n .value.split(';')\n .map((style) => {\n const styleName = trim(style.split(':')[0]);\n\n if (includes(allowedStyles, styleName)) {\n return style;\n }\n\n return null;\n })\n .filter((style) => Boolean(style))\n .join(';');\n\n node.setAttribute('style', styles);\n }\n });\n } else {\n reparent(node);\n }\n }\n}\n\n/**\n * Same as _filter, but escapes rather than removes disallowed values\n * @param {Function} processCallback\n * @param {Object} allowedTags\n * @param {Array<string>} allowedStyles\n * @param {string} html\n * @returns {Promise<string>}\n */\nfunction _filterEscape(...args) {\n return new Promise((resolve) => {\n resolve(_filterEscapeSync(...args));\n });\n}\n\n/**\n * Same as _filterSync, but escapes rather than removes disallowed values\n * @param {Function} processCallback\n * @param {Object} allowedTags\n * @param {Array<string>} allowedStyles\n * @param {string} html\n * @returns {string}\n */\nfunction _filterEscapeSync(processCallback, allowedTags, allowedStyles, html) {\n if (!html || !allowedStyles || !allowedTags) {\n if (html.length === 0) {\n return html;\n }\n\n throw new Error('`allowedTags`, `allowedStyles`, and `html` must be provided');\n }\n\n const doc = new DOMParser().parseFromString(html, 'text/html');\n\n depthFirstForEach(doc.body.childNodes, filterNode);\n processCallback(doc.body);\n\n if (html.indexOf('body') === 1) {\n return `<body>${doc.body.innerHTML}</body>`;\n }\n\n return doc.body.innerHTML;\n\n /**\n * @param {Node} node\n * @private\n * @returns {undefined}\n */\n function filterNode(node) {\n if (!isElement(node)) {\n return;\n }\n\n depthFirstForEach(node.childNodes, filterNode);\n\n const nodeName = node.nodeName.toLowerCase();\n const allowedTagNames = Object.keys(allowedTags);\n\n if (includes(allowedTagNames, nodeName)) {\n const allowedAttributes = allowedTags[nodeName];\n\n forEach(listAttributeNames(node.attributes), (attrName) => {\n if (!includes(allowedAttributes, attrName)) {\n node.removeAttribute(attrName);\n } else if (attrName === 'href' || attrName === 'src') {\n const attrValue = node.attributes.getNamedItem(attrName).value.toLowerCase();\n\n // We're doing at runtime what the no-script-url rule does at compile\n // time\n // eslint-disable-next-line no-script-url\n if (attrValue.indexOf('javascript:') === 0 || attrValue.indexOf('vbscript:') === 0) {\n reparent(node);\n }\n } else if (attrName === 'style') {\n const styles = node.attributes\n .getNamedItem('style')\n .value.split(';')\n .map((style) => {\n const styleName = trim(style.split(':')[0]);\n\n if (includes(allowedStyles, styleName)) {\n return style;\n }\n\n return null;\n })\n .filter((style) => Boolean(style))\n .join(';');\n\n node.setAttribute('style', styles);\n }\n });\n } else {\n escapeNode(node);\n }\n }\n}\n\n/**\n * Escapes a given html node\n * @param {Node} node\n * @returns {undefined}\n */\nfunction escapeNode(node) {\n const before = document.createTextNode(`<${node.nodeName.toLowerCase()}>`);\n const after = document.createTextNode(`</${node.nodeName.toLowerCase()}>`);\n\n node.parentNode.insertBefore(before, node);\n while (node.childNodes.length > 0) {\n node.parentNode.insertBefore(node.childNodes[0], node);\n }\n node.parentNode.insertBefore(after, node);\n\n removeNode(node);\n}\n\nconst trimPattern = /^\\s|\\s$/g;\n\n/**\n * @param {string} str\n * @returns {string}\n */\nfunction trim(str) {\n return str.replace(trimPattern, '');\n}\n\n/**\n * @param {Node} node\n * @private\n * @returns {undefined}\n */\nfunction reparent(node) {\n while (node.childNodes.length > 0) {\n node.parentNode.insertBefore(node.childNodes[0], node);\n }\n removeNode(node);\n}\n\n/**\n * @param {NamedNodeMap} attributes\n * @private\n * @returns {Array<string>}\n */\nfunction listAttributeNames(attributes) {\n return reduce(\n attributes,\n (attrNames, attr) => {\n attrNames.push(attr.name);\n\n return attrNames;\n },\n []\n );\n}\n\n/**\n * @param {Array} list\n * @param {Function} fn\n * @private\n * @returns {undefined}\n */\nfunction depthFirstForEach(list, fn) {\n for (let i = list.length; i >= 0; i -= 1) {\n fn(list[i]);\n }\n}\n\n/**\n * @param {Node} o\n * @private\n * @returns {Boolean}\n */\nfunction isElement(o) {\n if (!o) {\n return false;\n }\n\n if (o.ownerDocument === undefined) {\n return false;\n }\n\n if (o.nodeType !== 1) {\n return false;\n }\n\n if (typeof o.nodeName !== 'string') {\n return false;\n }\n\n return true;\n}\n\n/**\n * Curried HTML filter.\n * @param {Object} allowedTags Map of tagName -> array of allowed attributes\n * @param {Array<string>} allowedStyles Array of allowed styles\n * @param {string} html html to filter\n * @returns {string}\n */\nexport const filterSync = curry(_filterSync, 4);\n\n/**\n * Curried HTML filter that escapes rather than removes disallowed tags\n * @param {Object} allowedTags Map of tagName -> array of allowed attributes\n * @param {Array<string>} allowedStyles Array of allowed styles\n * @param {string} html html to filter\n * @returns {Promise<string>}\n */\nexport const filterEscape = curry(_filterEscape, 4);\n\n/**\n * Curried HTML filter that escapes rather than removes disallowed tags\n * @param {Object} allowedTags Map of tagName -> array of allowed attributes\n * @param {Array<string>} allowedStyles Array of allowed styles\n * @param {string} html html to filter\n * @returns {string}\n */\nexport const filterEscapeSync = curry(_filterEscapeSync, 4);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_htmlBase","require","removeNode","node","remove","parentElement","removeChild","i","length","Error","_filter","_len","arguments","args","Array","_key","_promise","default","resolve","_filterSync","apply","filter","_curry2","exports","processCallback","allowedTags","allowedStyles","html","doc","DOMParser","parseFromString","depthFirstForEach","body","childNodes","filterNode","indexOf","concat","innerHTML","isElement","nodeName","toLowerCase","allowedTagNames","_keys","_includes2","allowedAttributes","_forEach2","listAttributeNames","attributes","attrName","removeAttribute","attrValue","getNamedItem","value","trim","reparent","styles","split","map","style","styleName","Boolean","join","setAttribute","_filterEscape","_len2","_key2","_filterEscapeSync","escapeNode","before","document","createTextNode","after","parentNode","insertBefore","trimPattern","str","replace","_reduce2","attrNames","attr","push","name","list","fn","o","ownerDocument","undefined","nodeType","filterSync","filterEscape","filterEscapeSync"],"sources":["html.shim.js"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\n\r\n/* eslint-env browser */\r\n\r\nimport {curry, forEach, includes, reduce} from 'lodash';\r\n\r\nexport {escape, escapeSync} from './html-base';\r\n\r\n/**\r\n * Some browsers don't implement {@link Element#remove()} or\r\n * {@link NodeList#remove()} or {@link HTMLCollection#remove()}. This wrapper\r\n * calls the appropriate `#remove()` method if available, or falls back to a\r\n * non-global-polluting polyfill.\r\n * @param {Element|NodeList|HTMLCollection} node\r\n * @returns {undefined}\r\n */\r\nfunction removeNode(node) {\r\n if (node.remove) {\r\n node.remove();\r\n\r\n return;\r\n }\r\n\r\n if (node.parentElement) {\r\n node.parentElement.removeChild(node);\r\n\r\n return;\r\n }\r\n\r\n if ('length' in node) {\r\n for (let i = node.length - 1; i >= 0; i -= 1) {\r\n removeNode(node[i]);\r\n }\r\n\r\n return;\r\n }\r\n\r\n throw new Error('Could not find a way to remove node');\r\n}\r\n\r\n/**\r\n * @param {Object} allowedTags\r\n * @param {Array<string>} allowedStyles\r\n * @param {string} html\r\n * @private\r\n * @returns {string}\r\n */\r\nfunction _filter(...args) {\r\n return new Promise((resolve) => {\r\n resolve(_filterSync(...args));\r\n });\r\n}\r\n\r\n/**\r\n * Curried async HTML filter.\r\n * @param {Object} allowedTags Map of tagName -> array of allowed attributes\r\n * @param {Array<string>} allowedStyles Array of allowed styles\r\n * @param {string} html html to filter\r\n * @returns {string}\r\n */\r\nexport const filter = curry(_filter, 4);\r\n\r\n/**\r\n * @param {function} processCallback callback function to do additional\r\n * processing on node. of the form process(node)\r\n * @param {Object} allowedTags\r\n * @param {Array<string>} allowedStyles\r\n * @param {string} html\r\n * @private\r\n * @returns {string}\r\n */\r\nfunction _filterSync(processCallback, allowedTags, allowedStyles, html) {\r\n if (!html || !allowedStyles || !allowedTags) {\r\n if (html.length === 0) {\r\n return html;\r\n }\r\n\r\n throw new Error('`allowedTags`, `allowedStyles`, and `html` must be provided');\r\n }\r\n\r\n const doc = new DOMParser().parseFromString(html, 'text/html');\r\n\r\n depthFirstForEach(doc.body.childNodes, filterNode);\r\n processCallback(doc.body);\r\n\r\n if (html.indexOf('body') === 1) {\r\n return `<body>${doc.body.innerHTML}</body>`;\r\n }\r\n\r\n return doc.body.innerHTML;\r\n\r\n /**\r\n * @param {Node} node\r\n * @private\r\n * @returns {undefined}\r\n */\r\n function filterNode(node) {\r\n if (!isElement(node)) {\r\n return;\r\n }\r\n\r\n const nodeName = node.nodeName.toLowerCase();\r\n const allowedTagNames = Object.keys(allowedTags);\r\n\r\n depthFirstForEach(node.childNodes, filterNode);\r\n\r\n if (includes(allowedTagNames, nodeName)) {\r\n const allowedAttributes = allowedTags[nodeName];\r\n\r\n forEach(listAttributeNames(node.attributes), (attrName) => {\r\n if (!includes(allowedAttributes, attrName)) {\r\n node.removeAttribute(attrName);\r\n } else if (attrName === 'href' || attrName === 'src') {\r\n const attrValue = node.attributes.getNamedItem(attrName).value.trim().toLowerCase();\r\n\r\n // We're doing at runtime what the no-script-url rule does at compile\r\n // time\r\n // eslint-disable-next-line no-script-url\r\n if (attrValue.indexOf('javascript:') === 0 || attrValue.indexOf('vbscript:') === 0) {\r\n reparent(node);\r\n }\r\n } else if (attrName === 'style') {\r\n const styles = node.attributes\r\n .getNamedItem('style')\r\n .value.split(';')\r\n .map((style) => {\r\n const styleName = trim(style.split(':')[0]);\r\n\r\n if (includes(allowedStyles, styleName)) {\r\n return style;\r\n }\r\n\r\n return null;\r\n })\r\n .filter((style) => Boolean(style))\r\n .join(';');\r\n\r\n node.setAttribute('style', styles);\r\n }\r\n });\r\n } else {\r\n reparent(node);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Same as _filter, but escapes rather than removes disallowed values\r\n * @param {Function} processCallback\r\n * @param {Object} allowedTags\r\n * @param {Array<string>} allowedStyles\r\n * @param {string} html\r\n * @returns {Promise<string>}\r\n */\r\nfunction _filterEscape(...args) {\r\n return new Promise((resolve) => {\r\n resolve(_filterEscapeSync(...args));\r\n });\r\n}\r\n\r\n/**\r\n * Same as _filterSync, but escapes rather than removes disallowed values\r\n * @param {Function} processCallback\r\n * @param {Object} allowedTags\r\n * @param {Array<string>} allowedStyles\r\n * @param {string} html\r\n * @returns {string}\r\n */\r\nfunction _filterEscapeSync(processCallback, allowedTags, allowedStyles, html) {\r\n if (!html || !allowedStyles || !allowedTags) {\r\n if (html.length === 0) {\r\n return html;\r\n }\r\n\r\n throw new Error('`allowedTags`, `allowedStyles`, and `html` must be provided');\r\n }\r\n\r\n const doc = new DOMParser().parseFromString(html, 'text/html');\r\n\r\n depthFirstForEach(doc.body.childNodes, filterNode);\r\n processCallback(doc.body);\r\n\r\n if (html.indexOf('body') === 1) {\r\n return `<body>${doc.body.innerHTML}</body>`;\r\n }\r\n\r\n return doc.body.innerHTML;\r\n\r\n /**\r\n * @param {Node} node\r\n * @private\r\n * @returns {undefined}\r\n */\r\n function filterNode(node) {\r\n if (!isElement(node)) {\r\n return;\r\n }\r\n\r\n depthFirstForEach(node.childNodes, filterNode);\r\n\r\n const nodeName = node.nodeName.toLowerCase();\r\n const allowedTagNames = Object.keys(allowedTags);\r\n\r\n if (includes(allowedTagNames, nodeName)) {\r\n const allowedAttributes = allowedTags[nodeName];\r\n\r\n forEach(listAttributeNames(node.attributes), (attrName) => {\r\n if (!includes(allowedAttributes, attrName)) {\r\n node.removeAttribute(attrName);\r\n } else if (attrName === 'href' || attrName === 'src') {\r\n const attrValue = node.attributes.getNamedItem(attrName).value.toLowerCase();\r\n\r\n // We're doing at runtime what the no-script-url rule does at compile\r\n // time\r\n // eslint-disable-next-line no-script-url\r\n if (attrValue.indexOf('javascript:') === 0 || attrValue.indexOf('vbscript:') === 0) {\r\n reparent(node);\r\n }\r\n } else if (attrName === 'style') {\r\n const styles = node.attributes\r\n .getNamedItem('style')\r\n .value.split(';')\r\n .map((style) => {\r\n const styleName = trim(style.split(':')[0]);\r\n\r\n if (includes(allowedStyles, styleName)) {\r\n return style;\r\n }\r\n\r\n return null;\r\n })\r\n .filter((style) => Boolean(style))\r\n .join(';');\r\n\r\n node.setAttribute('style', styles);\r\n }\r\n });\r\n } else {\r\n escapeNode(node);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Escapes a given html node\r\n * @param {Node} node\r\n * @returns {undefined}\r\n */\r\nfunction escapeNode(node) {\r\n const before = document.createTextNode(`<${node.nodeName.toLowerCase()}>`);\r\n const after = document.createTextNode(`</${node.nodeName.toLowerCase()}>`);\r\n\r\n node.parentNode.insertBefore(before, node);\r\n while (node.childNodes.length > 0) {\r\n node.parentNode.insertBefore(node.childNodes[0], node);\r\n }\r\n node.parentNode.insertBefore(after, node);\r\n\r\n removeNode(node);\r\n}\r\n\r\nconst trimPattern = /^\\s|\\s$/g;\r\n\r\n/**\r\n * @param {string} str\r\n * @returns {string}\r\n */\r\nfunction trim(str) {\r\n return str.replace(trimPattern, '');\r\n}\r\n\r\n/**\r\n * @param {Node} node\r\n * @private\r\n * @returns {undefined}\r\n */\r\nfunction reparent(node) {\r\n while (node.childNodes.length > 0) {\r\n node.parentNode.insertBefore(node.childNodes[0], node);\r\n }\r\n removeNode(node);\r\n}\r\n\r\n/**\r\n * @param {NamedNodeMap} attributes\r\n * @private\r\n * @returns {Array<string>}\r\n */\r\nfunction listAttributeNames(attributes) {\r\n return reduce(\r\n attributes,\r\n (attrNames, attr) => {\r\n attrNames.push(attr.name);\r\n\r\n return attrNames;\r\n },\r\n []\r\n );\r\n}\r\n\r\n/**\r\n * @param {Array} list\r\n * @param {Function} fn\r\n * @private\r\n * @returns {undefined}\r\n */\r\nfunction depthFirstForEach(list, fn) {\r\n for (let i = list.length; i >= 0; i -= 1) {\r\n fn(list[i]);\r\n }\r\n}\r\n\r\n/**\r\n * @param {Node} o\r\n * @private\r\n * @returns {Boolean}\r\n */\r\nfunction isElement(o) {\r\n if (!o) {\r\n return false;\r\n }\r\n\r\n if (o.ownerDocument === undefined) {\r\n return false;\r\n }\r\n\r\n if (o.nodeType !== 1) {\r\n return false;\r\n }\r\n\r\n if (typeof o.nodeName !== 'string') {\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\n/**\r\n * Curried HTML filter.\r\n * @param {Object} allowedTags Map of tagName -> array of allowed attributes\r\n * @param {Array<string>} allowedStyles Array of allowed styles\r\n * @param {string} html html to filter\r\n * @returns {string}\r\n */\r\nexport const filterSync = curry(_filterSync, 4);\r\n\r\n/**\r\n * Curried HTML filter that escapes rather than removes disallowed tags\r\n * @param {Object} allowedTags Map of tagName -> array of allowed attributes\r\n * @param {Array<string>} allowedStyles Array of allowed styles\r\n * @param {string} html html to filter\r\n * @returns {Promise<string>}\r\n */\r\nexport const filterEscape = curry(_filterEscape, 4);\r\n\r\n/**\r\n * Curried HTML filter that escapes rather than removes disallowed tags\r\n * @param {Object} allowedTags Map of tagName -> array of allowed attributes\r\n * @param {Array<string>} allowedStyles Array of allowed styles\r\n * @param {string} html html to filter\r\n * @returns {string}\r\n */\r\nexport const filterEscapeSync = curry(_filterEscapeSync, 4);\r\n"],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_html","require"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport {escape, escapeSync, filter, filterSync, filterEscape, filterEscapeSync} from './html';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAAA,KAAA,GAAAC,OAAA"}
1
+ {"version":3,"names":["_html","require"],"sources":["index.js"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\n\r\nexport {escape, escapeSync, filter, filterSync, filterEscape, filterEscapeSync} from './html';\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAAA,KAAA,GAAAC,OAAA"}
package/jest.config.js CHANGED
@@ -1,3 +1,3 @@
1
- const config = require('@webex/jest-config-legacy');
2
-
3
- module.exports = config;
1
+ const config = require('@webex/jest-config-legacy');
2
+
3
+ module.exports = config;
package/package.json CHANGED
@@ -1,6 +1,5 @@
1
1
  {
2
2
  "name": "@webex/helper-html",
3
- "version": "2.59.2",
4
3
  "description": "HTML Utiltities",
5
4
  "license": "MIT",
6
5
  "main": "dist/index.js",
@@ -25,14 +24,14 @@
25
24
  },
26
25
  "devDependencies": {
27
26
  "@babel/core": "^7.17.10",
28
- "@webex/babel-config-legacy": "2.59.2",
29
- "@webex/eslint-config-legacy": "2.59.2",
30
- "@webex/jest-config-legacy": "2.59.2",
31
- "@webex/legacy-tools": "2.59.2",
32
- "@webex/test-helper-chai": "2.59.2",
33
- "@webex/test-helper-mocha": "2.59.2",
34
- "@webex/test-helper-mock-webex": "2.59.2",
35
- "@webex/test-helper-test-users": "2.59.2",
27
+ "@webex/babel-config-legacy": "^0.0.0",
28
+ "@webex/eslint-config-legacy": "^0.0.0",
29
+ "@webex/jest-config-legacy": "^0.0.0",
30
+ "@webex/legacy-tools": "^0.0.0",
31
+ "@webex/test-helper-chai": "^2.59.3-next.1",
32
+ "@webex/test-helper-mocha": "^2.59.3-next.1",
33
+ "@webex/test-helper-mock-webex": "^2.59.3-next.1",
34
+ "@webex/test-helper-test-users": "^2.59.3-next.1",
36
35
  "eslint": "^8.24.0",
37
36
  "prettier": "^2.7.1"
38
37
  },
@@ -42,10 +41,12 @@
42
41
  "scripts": {
43
42
  "build": "yarn build:src",
44
43
  "build:src": "webex-legacy-tools build -dest \"./dist\" -src \"./src\" -js -ts -maps",
44
+ "deploy:npm": "yarn npm publish",
45
45
  "test": "yarn test:style && yarn test:unit && yarn test:integration && yarn test:browser",
46
46
  "test:browser": "webex-legacy-tools test --integration --unit --runner karma",
47
47
  "test:integration": "webex-legacy-tools test --integration --runner mocha",
48
48
  "test:style": "eslint ./src/**/*.*",
49
49
  "test:unit": "webex-legacy-tools test --unit --runner jest"
50
- }
51
- }
50
+ },
51
+ "version": "2.59.3-next.1"
52
+ }
package/process CHANGED
@@ -1 +1 @@
1
- module.exports = {browser: true};
1
+ module.exports = {browser: true};
package/src/html-base.js CHANGED
@@ -1,44 +1,44 @@
1
- /*!
2
- * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
- */
4
-
5
- const escapeMe = /(<|>|&)/g;
6
-
7
- // escape and escapeSync probably don't both need to exist, but it seemed like a
8
- // good idea in case we ever want to for the future.
9
-
10
- /**
11
- * Escapes HTML
12
- * @param {[type]} html
13
- * @returns {[type]}
14
- */
15
- export function escape(html) {
16
- return new Promise((resolve) => resolve(escapeSync(html)));
17
- }
18
-
19
- /**
20
- * Synchronously escape HTML
21
- * @param {[type]} html
22
- * @returns {[type]}
23
- */
24
- export function escapeSync(html) {
25
- return html.replace(escapeMe, entityReplacer);
26
- }
27
-
28
- /**
29
- * @param {string} char
30
- * @private
31
- * @returns {string}
32
- */
33
- function entityReplacer(char) {
34
- switch (char) {
35
- case '<':
36
- return '&lt;';
37
- case '>':
38
- return '&gt;';
39
- case '&':
40
- return '&amp;';
41
- default:
42
- return char;
43
- }
44
- }
1
+ /*!
2
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+
5
+ const escapeMe = /(<|>|&)/g;
6
+
7
+ // escape and escapeSync probably don't both need to exist, but it seemed like a
8
+ // good idea in case we ever want to for the future.
9
+
10
+ /**
11
+ * Escapes HTML
12
+ * @param {[type]} html
13
+ * @returns {[type]}
14
+ */
15
+ export function escape(html) {
16
+ return new Promise((resolve) => resolve(escapeSync(html)));
17
+ }
18
+
19
+ /**
20
+ * Synchronously escape HTML
21
+ * @param {[type]} html
22
+ * @returns {[type]}
23
+ */
24
+ export function escapeSync(html) {
25
+ return html.replace(escapeMe, entityReplacer);
26
+ }
27
+
28
+ /**
29
+ * @param {string} char
30
+ * @private
31
+ * @returns {string}
32
+ */
33
+ function entityReplacer(char) {
34
+ switch (char) {
35
+ case '<':
36
+ return '&lt;';
37
+ case '>':
38
+ return '&gt;';
39
+ case '&':
40
+ return '&amp;';
41
+ default:
42
+ return char;
43
+ }
44
+ }
package/src/html.js CHANGED
@@ -1,38 +1,38 @@
1
- /*!
2
- * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
- */
4
-
5
- import {curry} from 'lodash';
6
-
7
- export {escape, escapeSync} from './html-base';
8
-
9
- /**
10
- * @param {Object} allowedTags
11
- * @param {Array<string>} allowedStyles
12
- * @param {string} html
13
- * @private
14
- * @returns {string}
15
- */
16
- function noop(...args) {
17
- return new Promise((resolve) => {
18
- resolve(noopSync(...args));
19
- });
20
- }
21
-
22
- /**
23
- * @param {function} processCallback callback function to do additional
24
- * processing on node. of the form process(node)
25
- * @param {Object} allowedTags
26
- * @param {Array<string>} allowedStyles
27
- * @param {string} html
28
- * @private
29
- * @returns {string}
30
- */
31
- function noopSync(processCallback, allowedTags, allowedStyles, html) {
32
- return html;
33
- }
34
-
35
- export const filter = curry(noop, 4);
36
- export const filterSync = curry(noopSync, 4);
37
- export const filterEscape = curry(noop, 4);
38
- export const filterEscapeSync = curry(noopSync, 4);
1
+ /*!
2
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+
5
+ import {curry} from 'lodash';
6
+
7
+ export {escape, escapeSync} from './html-base';
8
+
9
+ /**
10
+ * @param {Object} allowedTags
11
+ * @param {Array<string>} allowedStyles
12
+ * @param {string} html
13
+ * @private
14
+ * @returns {string}
15
+ */
16
+ function noop(...args) {
17
+ return new Promise((resolve) => {
18
+ resolve(noopSync(...args));
19
+ });
20
+ }
21
+
22
+ /**
23
+ * @param {function} processCallback callback function to do additional
24
+ * processing on node. of the form process(node)
25
+ * @param {Object} allowedTags
26
+ * @param {Array<string>} allowedStyles
27
+ * @param {string} html
28
+ * @private
29
+ * @returns {string}
30
+ */
31
+ function noopSync(processCallback, allowedTags, allowedStyles, html) {
32
+ return html;
33
+ }
34
+
35
+ export const filter = curry(noop, 4);
36
+ export const filterSync = curry(noopSync, 4);
37
+ export const filterEscape = curry(noop, 4);
38
+ export const filterEscapeSync = curry(noopSync, 4);