-
-
Notifications
You must be signed in to change notification settings - Fork 679
/
purify.js.map
1 lines (1 loc) · 127 KB
/
purify.js.map
1
{"version":3,"file":"purify.js","sources":["../src/utils.js","../src/tags.js","../src/attrs.js","../src/regexp.js","../src/purify.js"],"sourcesContent":["const {\r\n entries,\r\n setPrototypeOf,\r\n isFrozen,\r\n getPrototypeOf,\r\n getOwnPropertyDescriptor,\r\n} = Object;\r\n\r\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\r\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\r\n\r\nif (!freeze) {\r\n freeze = function (x) {\r\n return x;\r\n };\r\n}\r\n\r\nif (!seal) {\r\n seal = function (x) {\r\n return x;\r\n };\r\n}\r\n\r\nif (!apply) {\r\n apply = function (fun, thisValue, args) {\r\n return fun.apply(thisValue, args);\r\n };\r\n}\r\n\r\nif (!construct) {\r\n construct = function (Func, args) {\r\n return new Func(...args);\r\n };\r\n}\r\n\r\nconst arrayForEach = unapply(Array.prototype.forEach);\r\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\r\nconst arrayPop = unapply(Array.prototype.pop);\r\nconst arrayPush = unapply(Array.prototype.push);\r\nconst arraySlice = unapply(Array.prototype.slice);\r\n\r\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\r\nconst stringToString = unapply(String.prototype.toString);\r\nconst stringMatch = unapply(String.prototype.match);\r\nconst stringReplace = unapply(String.prototype.replace);\r\nconst stringIndexOf = unapply(String.prototype.indexOf);\r\nconst stringTrim = unapply(String.prototype.trim);\r\n\r\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\r\n\r\nconst regExpTest = unapply(RegExp.prototype.test);\r\n\r\nconst typeErrorCreate = unconstruct(TypeError);\r\n\r\n/**\r\n * Creates a new function that calls the given function with a specified thisArg and arguments.\r\n *\r\n * @param {Function} func - The function to be wrapped and called.\r\n * @returns {Function} A new function that calls the given function with a specified thisArg and arguments.\r\n */\r\nfunction unapply(func) {\r\n return (thisArg, ...args) => apply(func, thisArg, args);\r\n}\r\n\r\n/**\r\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\r\n *\r\n * @param {Function} func - The constructor function to be wrapped and called.\r\n * @returns {Function} A new function that constructs an instance of the given constructor function with the provided arguments.\r\n */\r\nfunction unconstruct(func) {\r\n return (...args) => construct(func, args);\r\n}\r\n\r\n/**\r\n * Add properties to a lookup table\r\n *\r\n * @param {Object} set - The set to which elements will be added.\r\n * @param {Array} array - The array containing elements to be added to the set.\r\n * @param {Function} transformCaseFunc - An optional function to transform the case of each element before adding to the set.\r\n * @returns {Object} The modified set with added elements.\r\n */\r\nfunction addToSet(set, array, transformCaseFunc = stringToLowerCase) {\r\n if (setPrototypeOf) {\r\n // Make 'in' and truthy checks like Boolean(set.constructor)\r\n // independent of any properties defined on Object.prototype.\r\n // Prevent prototype setters from intercepting set as a this value.\r\n setPrototypeOf(set, null);\r\n }\r\n\r\n let l = array.length;\r\n while (l--) {\r\n let element = array[l];\r\n if (typeof element === 'string') {\r\n const lcElement = transformCaseFunc(element);\r\n if (lcElement !== element) {\r\n // Config presets (e.g. tags.js, attrs.js) are immutable.\r\n if (!isFrozen(array)) {\r\n array[l] = lcElement;\r\n }\r\n\r\n element = lcElement;\r\n }\r\n }\r\n\r\n set[element] = true;\r\n }\r\n\r\n return set;\r\n}\r\n\r\n/**\r\n * Clean up an array to harden against CSPP\r\n *\r\n * @param {Array} array - The array to be cleaned.\r\n * @returns {Array} The cleaned version of the array\r\n */\r\nfunction cleanArray(array) {\r\n for (let index = 0; index < array.length; index++) {\r\n const isPropertyExist = objectHasOwnProperty(array, index);\r\n\r\n if (!isPropertyExist) {\r\n array[index] = null;\r\n }\r\n }\r\n\r\n return array;\r\n}\r\n\r\n/**\r\n * Shallow clone an object\r\n *\r\n * @param {Object} object - The object to be cloned.\r\n * @returns {Object} A new object that copies the original.\r\n */\r\nfunction clone(object) {\r\n const newObject = create(null);\r\n\r\n for (const [property, value] of entries(object)) {\r\n const isPropertyExist = objectHasOwnProperty(object, property);\r\n\r\n if (isPropertyExist) {\r\n if (Array.isArray(value)) {\r\n newObject[property] = cleanArray(value);\r\n } else if (\r\n value &&\r\n typeof value === 'object' &&\r\n value.constructor === Object\r\n ) {\r\n newObject[property] = clone(value);\r\n } else {\r\n newObject[property] = value;\r\n }\r\n }\r\n }\r\n\r\n return newObject;\r\n}\r\n\r\n/**\r\n * This method automatically checks if the prop is function or getter and behaves accordingly.\r\n *\r\n * @param {Object} object - The object to look up the getter function in its prototype chain.\r\n * @param {String} prop - The property name for which to find the getter function.\r\n * @returns {Function} The getter function found in the prototype chain or a fallback function.\r\n */\r\nfunction lookupGetter(object, prop) {\r\n while (object !== null) {\r\n const desc = getOwnPropertyDescriptor(object, prop);\r\n\r\n if (desc) {\r\n if (desc.get) {\r\n return unapply(desc.get);\r\n }\r\n\r\n if (typeof desc.value === 'function') {\r\n return unapply(desc.value);\r\n }\r\n }\r\n\r\n object = getPrototypeOf(object);\r\n }\r\n\r\n function fallbackValue() {\r\n return null;\r\n }\r\n\r\n return fallbackValue;\r\n}\r\n\r\nexport {\r\n // Array\r\n arrayForEach,\r\n arrayIndexOf,\r\n arrayPop,\r\n arrayPush,\r\n arraySlice,\r\n // Object\r\n entries,\r\n freeze,\r\n getPrototypeOf,\r\n getOwnPropertyDescriptor,\r\n isFrozen,\r\n setPrototypeOf,\r\n seal,\r\n clone,\r\n create,\r\n objectHasOwnProperty,\r\n // RegExp\r\n regExpTest,\r\n // String\r\n stringIndexOf,\r\n stringMatch,\r\n stringReplace,\r\n stringToLowerCase,\r\n stringToString,\r\n stringTrim,\r\n // Errors\r\n typeErrorCreate,\r\n // Other\r\n lookupGetter,\r\n addToSet,\r\n // Reflect\r\n unapply,\r\n unconstruct,\r\n};\r\n","import { freeze } from './utils.js';\r\n\r\nexport const html = freeze([\r\n 'a',\r\n 'abbr',\r\n 'acronym',\r\n 'address',\r\n 'area',\r\n 'article',\r\n 'aside',\r\n 'audio',\r\n 'b',\r\n 'bdi',\r\n 'bdo',\r\n 'big',\r\n 'blink',\r\n 'blockquote',\r\n 'body',\r\n 'br',\r\n 'button',\r\n 'canvas',\r\n 'caption',\r\n 'center',\r\n 'cite',\r\n 'code',\r\n 'col',\r\n 'colgroup',\r\n 'content',\r\n 'data',\r\n 'datalist',\r\n 'dd',\r\n 'decorator',\r\n 'del',\r\n 'details',\r\n 'dfn',\r\n 'dialog',\r\n 'dir',\r\n 'div',\r\n 'dl',\r\n 'dt',\r\n 'element',\r\n 'em',\r\n 'fieldset',\r\n 'figcaption',\r\n 'figure',\r\n 'font',\r\n 'footer',\r\n 'form',\r\n 'h1',\r\n 'h2',\r\n 'h3',\r\n 'h4',\r\n 'h5',\r\n 'h6',\r\n 'head',\r\n 'header',\r\n 'hgroup',\r\n 'hr',\r\n 'html',\r\n 'i',\r\n 'img',\r\n 'input',\r\n 'ins',\r\n 'kbd',\r\n 'label',\r\n 'legend',\r\n 'li',\r\n 'main',\r\n 'map',\r\n 'mark',\r\n 'marquee',\r\n 'menu',\r\n 'menuitem',\r\n 'meter',\r\n 'nav',\r\n 'nobr',\r\n 'ol',\r\n 'optgroup',\r\n 'option',\r\n 'output',\r\n 'p',\r\n 'picture',\r\n 'pre',\r\n 'progress',\r\n 'q',\r\n 'rp',\r\n 'rt',\r\n 'ruby',\r\n 's',\r\n 'samp',\r\n 'section',\r\n 'select',\r\n 'shadow',\r\n 'small',\r\n 'source',\r\n 'spacer',\r\n 'span',\r\n 'strike',\r\n 'strong',\r\n 'style',\r\n 'sub',\r\n 'summary',\r\n 'sup',\r\n 'table',\r\n 'tbody',\r\n 'td',\r\n 'template',\r\n 'textarea',\r\n 'tfoot',\r\n 'th',\r\n 'thead',\r\n 'time',\r\n 'tr',\r\n 'track',\r\n 'tt',\r\n 'u',\r\n 'ul',\r\n 'var',\r\n 'video',\r\n 'wbr',\r\n]);\r\n\r\n// SVG\r\nexport const svg = freeze([\r\n 'svg',\r\n 'a',\r\n 'altglyph',\r\n 'altglyphdef',\r\n 'altglyphitem',\r\n 'animatecolor',\r\n 'animatemotion',\r\n 'animatetransform',\r\n 'circle',\r\n 'clippath',\r\n 'defs',\r\n 'desc',\r\n 'ellipse',\r\n 'filter',\r\n 'font',\r\n 'g',\r\n 'glyph',\r\n 'glyphref',\r\n 'hkern',\r\n 'image',\r\n 'line',\r\n 'lineargradient',\r\n 'marker',\r\n 'mask',\r\n 'metadata',\r\n 'mpath',\r\n 'path',\r\n 'pattern',\r\n 'polygon',\r\n 'polyline',\r\n 'radialgradient',\r\n 'rect',\r\n 'stop',\r\n 'style',\r\n 'switch',\r\n 'symbol',\r\n 'text',\r\n 'textpath',\r\n 'title',\r\n 'tref',\r\n 'tspan',\r\n 'view',\r\n 'vkern',\r\n]);\r\n\r\nexport const svgFilters = freeze([\r\n 'feBlend',\r\n 'feColorMatrix',\r\n 'feComponentTransfer',\r\n 'feComposite',\r\n 'feConvolveMatrix',\r\n 'feDiffuseLighting',\r\n 'feDisplacementMap',\r\n 'feDistantLight',\r\n 'feDropShadow',\r\n 'feFlood',\r\n 'feFuncA',\r\n 'feFuncB',\r\n 'feFuncG',\r\n 'feFuncR',\r\n 'feGaussianBlur',\r\n 'feImage',\r\n 'feMerge',\r\n 'feMergeNode',\r\n 'feMorphology',\r\n 'feOffset',\r\n 'fePointLight',\r\n 'feSpecularLighting',\r\n 'feSpotLight',\r\n 'feTile',\r\n 'feTurbulence',\r\n]);\r\n\r\n// List of SVG elements that are disallowed by default.\r\n// We still need to know them so that we can do namespace\r\n// checks properly in case one wants to add them to\r\n// allow-list.\r\nexport const svgDisallowed = freeze([\r\n 'animate',\r\n 'color-profile',\r\n 'cursor',\r\n 'discard',\r\n 'font-face',\r\n 'font-face-format',\r\n 'font-face-name',\r\n 'font-face-src',\r\n 'font-face-uri',\r\n 'foreignobject',\r\n 'hatch',\r\n 'hatchpath',\r\n 'mesh',\r\n 'meshgradient',\r\n 'meshpatch',\r\n 'meshrow',\r\n 'missing-glyph',\r\n 'script',\r\n 'set',\r\n 'solidcolor',\r\n 'unknown',\r\n 'use',\r\n]);\r\n\r\nexport const mathMl = freeze([\r\n 'math',\r\n 'menclose',\r\n 'merror',\r\n 'mfenced',\r\n 'mfrac',\r\n 'mglyph',\r\n 'mi',\r\n 'mlabeledtr',\r\n 'mmultiscripts',\r\n 'mn',\r\n 'mo',\r\n 'mover',\r\n 'mpadded',\r\n 'mphantom',\r\n 'mroot',\r\n 'mrow',\r\n 'ms',\r\n 'mspace',\r\n 'msqrt',\r\n 'mstyle',\r\n 'msub',\r\n 'msup',\r\n 'msubsup',\r\n 'mtable',\r\n 'mtd',\r\n 'mtext',\r\n 'mtr',\r\n 'munder',\r\n 'munderover',\r\n 'mprescripts',\r\n]);\r\n\r\n// Similarly to SVG, we want to know all MathML elements,\r\n// even those that we disallow by default.\r\nexport const mathMlDisallowed = freeze([\r\n 'maction',\r\n 'maligngroup',\r\n 'malignmark',\r\n 'mlongdiv',\r\n 'mscarries',\r\n 'mscarry',\r\n 'msgroup',\r\n 'mstack',\r\n 'msline',\r\n 'msrow',\r\n 'semantics',\r\n 'annotation',\r\n 'annotation-xml',\r\n 'mprescripts',\r\n 'none',\r\n]);\r\n\r\nexport const text = freeze(['#text']);\r\n","import { freeze } from './utils.js';\r\n\r\nexport const html = freeze([\r\n 'accept',\r\n 'action',\r\n 'align',\r\n 'alt',\r\n 'autocapitalize',\r\n 'autocomplete',\r\n 'autopictureinpicture',\r\n 'autoplay',\r\n 'background',\r\n 'bgcolor',\r\n 'border',\r\n 'capture',\r\n 'cellpadding',\r\n 'cellspacing',\r\n 'checked',\r\n 'cite',\r\n 'class',\r\n 'clear',\r\n 'color',\r\n 'cols',\r\n 'colspan',\r\n 'controls',\r\n 'controlslist',\r\n 'coords',\r\n 'crossorigin',\r\n 'datetime',\r\n 'decoding',\r\n 'default',\r\n 'dir',\r\n 'disabled',\r\n 'disablepictureinpicture',\r\n 'disableremoteplayback',\r\n 'download',\r\n 'draggable',\r\n 'enctype',\r\n 'enterkeyhint',\r\n 'face',\r\n 'for',\r\n 'headers',\r\n 'height',\r\n 'hidden',\r\n 'high',\r\n 'href',\r\n 'hreflang',\r\n 'id',\r\n 'inputmode',\r\n 'integrity',\r\n 'ismap',\r\n 'kind',\r\n 'label',\r\n 'lang',\r\n 'list',\r\n 'loading',\r\n 'loop',\r\n 'low',\r\n 'max',\r\n 'maxlength',\r\n 'media',\r\n 'method',\r\n 'min',\r\n 'minlength',\r\n 'multiple',\r\n 'muted',\r\n 'name',\r\n 'nonce',\r\n 'noshade',\r\n 'novalidate',\r\n 'nowrap',\r\n 'open',\r\n 'optimum',\r\n 'pattern',\r\n 'placeholder',\r\n 'playsinline',\r\n 'poster',\r\n 'preload',\r\n 'pubdate',\r\n 'radiogroup',\r\n 'readonly',\r\n 'rel',\r\n 'required',\r\n 'rev',\r\n 'reversed',\r\n 'role',\r\n 'rows',\r\n 'rowspan',\r\n 'spellcheck',\r\n 'scope',\r\n 'selected',\r\n 'shape',\r\n 'size',\r\n 'sizes',\r\n 'span',\r\n 'srclang',\r\n 'start',\r\n 'src',\r\n 'srcset',\r\n 'step',\r\n 'style',\r\n 'summary',\r\n 'tabindex',\r\n 'title',\r\n 'translate',\r\n 'type',\r\n 'usemap',\r\n 'valign',\r\n 'value',\r\n 'width',\r\n 'wrap',\r\n 'xmlns',\r\n 'slot',\r\n]);\r\n\r\nexport const svg = freeze([\r\n 'accent-height',\r\n 'accumulate',\r\n 'additive',\r\n 'alignment-baseline',\r\n 'ascent',\r\n 'attributename',\r\n 'attributetype',\r\n 'azimuth',\r\n 'basefrequency',\r\n 'baseline-shift',\r\n 'begin',\r\n 'bias',\r\n 'by',\r\n 'class',\r\n 'clip',\r\n 'clippathunits',\r\n 'clip-path',\r\n 'clip-rule',\r\n 'color',\r\n 'color-interpolation',\r\n 'color-interpolation-filters',\r\n 'color-profile',\r\n 'color-rendering',\r\n 'cx',\r\n 'cy',\r\n 'd',\r\n 'dx',\r\n 'dy',\r\n 'diffuseconstant',\r\n 'direction',\r\n 'display',\r\n 'divisor',\r\n 'dur',\r\n 'edgemode',\r\n 'elevation',\r\n 'end',\r\n 'fill',\r\n 'fill-opacity',\r\n 'fill-rule',\r\n 'filter',\r\n 'filterunits',\r\n 'flood-color',\r\n 'flood-opacity',\r\n 'font-family',\r\n 'font-size',\r\n 'font-size-adjust',\r\n 'font-stretch',\r\n 'font-style',\r\n 'font-variant',\r\n 'font-weight',\r\n 'fx',\r\n 'fy',\r\n 'g1',\r\n 'g2',\r\n 'glyph-name',\r\n 'glyphref',\r\n 'gradientunits',\r\n 'gradienttransform',\r\n 'height',\r\n 'href',\r\n 'id',\r\n 'image-rendering',\r\n 'in',\r\n 'in2',\r\n 'k',\r\n 'k1',\r\n 'k2',\r\n 'k3',\r\n 'k4',\r\n 'kerning',\r\n 'keypoints',\r\n 'keysplines',\r\n 'keytimes',\r\n 'lang',\r\n 'lengthadjust',\r\n 'letter-spacing',\r\n 'kernelmatrix',\r\n 'kernelunitlength',\r\n 'lighting-color',\r\n 'local',\r\n 'marker-end',\r\n 'marker-mid',\r\n 'marker-start',\r\n 'markerheight',\r\n 'markerunits',\r\n 'markerwidth',\r\n 'maskcontentunits',\r\n 'maskunits',\r\n 'max',\r\n 'mask',\r\n 'media',\r\n 'method',\r\n 'mode',\r\n 'min',\r\n 'name',\r\n 'numoctaves',\r\n 'offset',\r\n 'operator',\r\n 'opacity',\r\n 'order',\r\n 'orient',\r\n 'orientation',\r\n 'origin',\r\n 'overflow',\r\n 'paint-order',\r\n 'path',\r\n 'pathlength',\r\n 'patterncontentunits',\r\n 'patterntransform',\r\n 'patternunits',\r\n 'points',\r\n 'preservealpha',\r\n 'preserveaspectratio',\r\n 'primitiveunits',\r\n 'r',\r\n 'rx',\r\n 'ry',\r\n 'radius',\r\n 'refx',\r\n 'refy',\r\n 'repeatcount',\r\n 'repeatdur',\r\n 'restart',\r\n 'result',\r\n 'rotate',\r\n 'scale',\r\n 'seed',\r\n 'shape-rendering',\r\n 'specularconstant',\r\n 'specularexponent',\r\n 'spreadmethod',\r\n 'startoffset',\r\n 'stddeviation',\r\n 'stitchtiles',\r\n 'stop-color',\r\n 'stop-opacity',\r\n 'stroke-dasharray',\r\n 'stroke-dashoffset',\r\n 'stroke-linecap',\r\n 'stroke-linejoin',\r\n 'stroke-miterlimit',\r\n 'stroke-opacity',\r\n 'stroke',\r\n 'stroke-width',\r\n 'style',\r\n 'surfacescale',\r\n 'systemlanguage',\r\n 'tabindex',\r\n 'targetx',\r\n 'targety',\r\n 'transform',\r\n 'transform-origin',\r\n 'text-anchor',\r\n 'text-decoration',\r\n 'text-rendering',\r\n 'textlength',\r\n 'type',\r\n 'u1',\r\n 'u2',\r\n 'unicode',\r\n 'values',\r\n 'viewbox',\r\n 'visibility',\r\n 'version',\r\n 'vert-adv-y',\r\n 'vert-origin-x',\r\n 'vert-origin-y',\r\n 'width',\r\n 'word-spacing',\r\n 'wrap',\r\n 'writing-mode',\r\n 'xchannelselector',\r\n 'ychannelselector',\r\n 'x',\r\n 'x1',\r\n 'x2',\r\n 'xmlns',\r\n 'y',\r\n 'y1',\r\n 'y2',\r\n 'z',\r\n 'zoomandpan',\r\n]);\r\n\r\nexport const mathMl = freeze([\r\n 'accent',\r\n 'accentunder',\r\n 'align',\r\n 'bevelled',\r\n 'close',\r\n 'columnsalign',\r\n 'columnlines',\r\n 'columnspan',\r\n 'denomalign',\r\n 'depth',\r\n 'dir',\r\n 'display',\r\n 'displaystyle',\r\n 'encoding',\r\n 'fence',\r\n 'frame',\r\n 'height',\r\n 'href',\r\n 'id',\r\n 'largeop',\r\n 'length',\r\n 'linethickness',\r\n 'lspace',\r\n 'lquote',\r\n 'mathbackground',\r\n 'mathcolor',\r\n 'mathsize',\r\n 'mathvariant',\r\n 'maxsize',\r\n 'minsize',\r\n 'movablelimits',\r\n 'notation',\r\n 'numalign',\r\n 'open',\r\n 'rowalign',\r\n 'rowlines',\r\n 'rowspacing',\r\n 'rowspan',\r\n 'rspace',\r\n 'rquote',\r\n 'scriptlevel',\r\n 'scriptminsize',\r\n 'scriptsizemultiplier',\r\n 'selection',\r\n 'separator',\r\n 'separators',\r\n 'stretchy',\r\n 'subscriptshift',\r\n 'supscriptshift',\r\n 'symmetric',\r\n 'voffset',\r\n 'width',\r\n 'xmlns',\r\n]);\r\n\r\nexport const xml = freeze([\r\n 'xlink:href',\r\n 'xml:id',\r\n 'xlink:title',\r\n 'xml:space',\r\n 'xmlns:xlink',\r\n]);\r\n","import { seal } from './utils.js';\r\n\r\n// eslint-disable-next-line unicorn/better-regex\r\nexport const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\r\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\r\nexport const TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\r\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\r\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\r\nexport const IS_ALLOWED_URI = seal(\r\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\r\n);\r\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\r\nexport const ATTR_WHITESPACE = seal(\r\n /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\r\n);\r\nexport const DOCTYPE_NAME = seal(/^html$/i);\r\nexport const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\r\n","import * as TAGS from './tags.js';\r\nimport * as ATTRS from './attrs.js';\r\nimport * as EXPRESSIONS from './regexp.js';\r\nimport {\r\n addToSet,\r\n clone,\r\n entries,\r\n freeze,\r\n arrayForEach,\r\n arrayPop,\r\n arrayPush,\r\n stringMatch,\r\n stringReplace,\r\n stringToLowerCase,\r\n stringToString,\r\n stringIndexOf,\r\n stringTrim,\r\n regExpTest,\r\n typeErrorCreate,\r\n lookupGetter,\r\n create,\r\n objectHasOwnProperty,\r\n} from './utils.js';\r\n\r\nconst getGlobal = function () {\r\n return typeof window === 'undefined' ? null : window;\r\n};\r\n\r\n/**\r\n * Creates a no-op policy for internal use only.\r\n * Don't export this function outside this module!\r\n * @param {TrustedTypePolicyFactory} trustedTypes The policy factory.\r\n * @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\r\n * @return {TrustedTypePolicy} The policy created (or null, if Trusted Types\r\n * are not supported or creating the policy failed).\r\n */\r\nconst _createTrustedTypesPolicy = function (trustedTypes, purifyHostElement) {\r\n if (\r\n typeof trustedTypes !== 'object' ||\r\n typeof trustedTypes.createPolicy !== 'function'\r\n ) {\r\n return null;\r\n }\r\n\r\n // Allow the callers to control the unique policy name\r\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\r\n // Policy creation with duplicate names throws in Trusted Types.\r\n let suffix = null;\r\n const ATTR_NAME = 'data-tt-policy-suffix';\r\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\r\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\r\n }\r\n\r\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\r\n\r\n try {\r\n return trustedTypes.createPolicy(policyName, {\r\n createHTML(html) {\r\n return html;\r\n },\r\n createScriptURL(scriptUrl) {\r\n return scriptUrl;\r\n },\r\n });\r\n } catch (_) {\r\n // Policy creation failed (most likely another DOMPurify script has\r\n // already run). Skip creating the policy, as this will only cause errors\r\n // if TT are enforced.\r\n console.warn(\r\n 'TrustedTypes policy ' + policyName + ' could not be created.'\r\n );\r\n return null;\r\n }\r\n};\r\n\r\nfunction createDOMPurify(window = getGlobal()) {\r\n const DOMPurify = (root) => createDOMPurify(root);\r\n\r\n /**\r\n * Version label, exposed for easier checks\r\n * if DOMPurify is up to date or not\r\n */\r\n DOMPurify.version = VERSION;\r\n\r\n /**\r\n * Array of elements that DOMPurify removed during sanitation.\r\n * Empty if nothing was removed.\r\n */\r\n DOMPurify.removed = [];\r\n\r\n if (!window || !window.document || window.document.nodeType !== 9) {\r\n // Not running in a browser, provide a factory function\r\n // so that you can pass your own Window\r\n DOMPurify.isSupported = false;\r\n\r\n return DOMPurify;\r\n }\r\n\r\n let { document } = window;\r\n\r\n const originalDocument = document;\r\n const currentScript = originalDocument.currentScript;\r\n const {\r\n DocumentFragment,\r\n HTMLTemplateElement,\r\n Node,\r\n Element,\r\n NodeFilter,\r\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\r\n HTMLFormElement,\r\n DOMParser,\r\n trustedTypes,\r\n } = window;\r\n\r\n const ElementPrototype = Element.prototype;\r\n\r\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\r\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\r\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\r\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\r\n\r\n // As per issue #47, the web-components registry is inherited by a\r\n // new document created via createHTMLDocument. As per the spec\r\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\r\n // a new empty registry is used when creating a template contents owner\r\n // document, so we use that as our parent document to ensure nothing\r\n // is inherited.\r\n if (typeof HTMLTemplateElement === 'function') {\r\n const template = document.createElement('template');\r\n if (template.content && template.content.ownerDocument) {\r\n document = template.content.ownerDocument;\r\n }\r\n }\r\n\r\n let trustedTypesPolicy;\r\n let emptyHTML = '';\r\n\r\n const {\r\n implementation,\r\n createNodeIterator,\r\n createDocumentFragment,\r\n getElementsByTagName,\r\n } = document;\r\n const { importNode } = originalDocument;\r\n\r\n let hooks = {};\r\n\r\n /**\r\n * Expose whether this browser supports running the full DOMPurify.\r\n */\r\n DOMPurify.isSupported =\r\n typeof entries === 'function' &&\r\n typeof getParentNode === 'function' &&\r\n implementation &&\r\n implementation.createHTMLDocument !== undefined;\r\n\r\n const {\r\n MUSTACHE_EXPR,\r\n ERB_EXPR,\r\n TMPLIT_EXPR,\r\n DATA_ATTR,\r\n ARIA_ATTR,\r\n IS_SCRIPT_OR_DATA,\r\n ATTR_WHITESPACE,\r\n CUSTOM_ELEMENT,\r\n } = EXPRESSIONS;\r\n\r\n let { IS_ALLOWED_URI } = EXPRESSIONS;\r\n\r\n /**\r\n * We consider the elements and attributes below to be safe. Ideally\r\n * don't add any new ones but feel free to remove unwanted ones.\r\n */\r\n\r\n /* allowed element names */\r\n let ALLOWED_TAGS = null;\r\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [\r\n ...TAGS.html,\r\n ...TAGS.svg,\r\n ...TAGS.svgFilters,\r\n ...TAGS.mathMl,\r\n ...TAGS.text,\r\n ]);\r\n\r\n /* Allowed attribute names */\r\n let ALLOWED_ATTR = null;\r\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [\r\n ...ATTRS.html,\r\n ...ATTRS.svg,\r\n ...ATTRS.mathMl,\r\n ...ATTRS.xml,\r\n ]);\r\n\r\n /*\r\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\r\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\r\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\r\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\r\n */\r\n let CUSTOM_ELEMENT_HANDLING = Object.seal(\r\n create(null, {\r\n tagNameCheck: {\r\n writable: true,\r\n configurable: false,\r\n enumerable: true,\r\n value: null,\r\n },\r\n attributeNameCheck: {\r\n writable: true,\r\n configurable: false,\r\n enumerable: true,\r\n value: null,\r\n },\r\n allowCustomizedBuiltInElements: {\r\n writable: true,\r\n configurable: false,\r\n enumerable: true,\r\n value: false,\r\n },\r\n })\r\n );\r\n\r\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\r\n let FORBID_TAGS = null;\r\n\r\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\r\n let FORBID_ATTR = null;\r\n\r\n /* Decide if ARIA attributes are okay */\r\n let ALLOW_ARIA_ATTR = true;\r\n\r\n /* Decide if custom data attributes are okay */\r\n let ALLOW_DATA_ATTR = true;\r\n\r\n /* Decide if unknown protocols are okay */\r\n let ALLOW_UNKNOWN_PROTOCOLS = false;\r\n\r\n /* Decide if self-closing tags in attributes are allowed.\r\n * Usually removed due to a mXSS issue in jQuery 3.0 */\r\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\r\n\r\n /* Output should be safe for common template engines.\r\n * This means, DOMPurify removes data attributes, mustaches and ERB\r\n */\r\n let SAFE_FOR_TEMPLATES = false;\r\n\r\n /* Output should be safe even for XML used within HTML and alike.\r\n * This means, DOMPurify removes comments when containing risky content.\r\n */\r\n let SAFE_FOR_XML = true;\r\n\r\n /* Decide if document with <html>... should be returned */\r\n let WHOLE_DOCUMENT = false;\r\n\r\n /* Track whether config is already set on this instance of DOMPurify. */\r\n let SET_CONFIG = false;\r\n\r\n /* Decide if all elements (e.g. style, script) must be children of\r\n * document.body. By default, browsers might move them to document.head */\r\n let FORCE_BODY = false;\r\n\r\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\r\n * string (or a TrustedHTML object if Trusted Types are supported).\r\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\r\n */\r\n let RETURN_DOM = false;\r\n\r\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\r\n * string (or a TrustedHTML object if Trusted Types are supported) */\r\n let RETURN_DOM_FRAGMENT = false;\r\n\r\n /* Try to return a Trusted Type object instead of a string, return a string in\r\n * case Trusted Types are not supported */\r\n let RETURN_TRUSTED_TYPE = false;\r\n\r\n /* Output should be free from DOM clobbering attacks?\r\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\r\n */\r\n let SANITIZE_DOM = true;\r\n\r\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\r\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\r\n *\r\n * HTML/DOM spec rules that enable DOM Clobbering:\r\n * - Named Access on Window (§7.3.3)\r\n * - DOM Tree Accessors (§3.1.5)\r\n * - Form Element Parent-Child Relations (§4.10.3)\r\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\r\n * - HTMLCollection (§4.2.10.2)\r\n *\r\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\r\n * with a constant string, i.e., `user-content-`\r\n */\r\n let SANITIZE_NAMED_PROPS = false;\r\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\r\n\r\n /* Keep element content when removing element? */\r\n let KEEP_CONTENT = true;\r\n\r\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\r\n * of importing it into a new Document and returning a sanitized copy */\r\n let IN_PLACE = false;\r\n\r\n /* Allow usage of profiles like html, svg and mathMl */\r\n let USE_PROFILES = {};\r\n\r\n /* Tags to ignore content of when KEEP_CONTENT is true */\r\n let FORBID_CONTENTS = null;\r\n const DEFAULT_FORBID_CONTENTS = addToSet({}, [\r\n 'annotation-xml',\r\n 'audio',\r\n 'colgroup',\r\n 'desc',\r\n 'foreignobject',\r\n 'head',\r\n 'iframe',\r\n 'math',\r\n 'mi',\r\n 'mn',\r\n 'mo',\r\n 'ms',\r\n 'mtext',\r\n 'noembed',\r\n 'noframes',\r\n 'noscript',\r\n 'plaintext',\r\n 'script',\r\n 'style',\r\n 'svg',\r\n 'template',\r\n 'thead',\r\n 'title',\r\n 'video',\r\n 'xmp',\r\n ]);\r\n\r\n /* Tags that are safe for data: URIs */\r\n let DATA_URI_TAGS = null;\r\n const DEFAULT_DATA_URI_TAGS = addToSet({}, [\r\n 'audio',\r\n 'video',\r\n 'img',\r\n 'source',\r\n 'image',\r\n 'track',\r\n ]);\r\n\r\n /* Attributes safe for values like \"javascript:\" */\r\n let URI_SAFE_ATTRIBUTES = null;\r\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\r\n 'alt',\r\n 'class',\r\n 'for',\r\n 'id',\r\n 'label',\r\n 'name',\r\n 'pattern',\r\n 'placeholder',\r\n 'role',\r\n 'summary',\r\n 'title',\r\n 'value',\r\n 'style',\r\n 'xmlns',\r\n ]);\r\n\r\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\r\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\r\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\r\n /* Document namespace */\r\n let NAMESPACE = HTML_NAMESPACE;\r\n let IS_EMPTY_INPUT = false;\r\n\r\n /* Allowed XHTML+XML namespaces */\r\n let ALLOWED_NAMESPACES = null;\r\n const DEFAULT_ALLOWED_NAMESPACES = addToSet(\r\n {},\r\n [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\r\n stringToString\r\n );\r\n\r\n /* Parsing of strict XHTML documents */\r\n let PARSER_MEDIA_TYPE = null;\r\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\r\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\r\n let transformCaseFunc = null;\r\n\r\n /* Keep a reference to config to pass to hooks */\r\n let CONFIG = null;\r\n\r\n /* Specify the maximum element nesting depth to prevent mXSS */\r\n const MAX_NESTING_DEPTH = 500;\r\n\r\n /* Ideally, do not touch anything below this line */\r\n /* ______________________________________________ */\r\n\r\n const formElement = document.createElement('form');\r\n\r\n const isRegexOrFunction = function (testValue) {\r\n return testValue instanceof RegExp || testValue instanceof Function;\r\n };\r\n\r\n /**\r\n * _parseConfig\r\n *\r\n * @param {Object} cfg optional config literal\r\n */\r\n // eslint-disable-next-line complexity\r\n const _parseConfig = function (cfg = {}) {\r\n if (CONFIG && CONFIG === cfg) {\r\n return;\r\n }\r\n\r\n /* Shield configuration object from tampering */\r\n if (!cfg || typeof cfg !== 'object') {\r\n cfg = {};\r\n }\r\n\r\n /* Shield configuration object from prototype pollution */\r\n cfg = clone(cfg);\r\n\r\n PARSER_MEDIA_TYPE =\r\n // eslint-disable-next-line unicorn/prefer-includes\r\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\r\n ? DEFAULT_PARSER_MEDIA_TYPE\r\n : cfg.PARSER_MEDIA_TYPE;\r\n\r\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\r\n transformCaseFunc =\r\n PARSER_MEDIA_TYPE === 'application/xhtml+xml'\r\n ? stringToString\r\n : stringToLowerCase;\r\n\r\n /* Set configuration parameters */\r\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS')\r\n ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\r\n : DEFAULT_ALLOWED_TAGS;\r\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR')\r\n ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)\r\n : DEFAULT_ALLOWED_ATTR;\r\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES')\r\n ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)\r\n : DEFAULT_ALLOWED_NAMESPACES;\r\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR')\r\n ? addToSet(\r\n clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\r\n cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\r\n transformCaseFunc // eslint-disable-line indent\r\n ) // eslint-disable-line indent\r\n : DEFAULT_URI_SAFE_ATTRIBUTES;\r\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS')\r\n ? addToSet(\r\n clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\r\n cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\r\n transformCaseFunc // eslint-disable-line indent\r\n ) // eslint-disable-line indent\r\n : DEFAULT_DATA_URI_TAGS;\r\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS')\r\n ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)\r\n : DEFAULT_FORBID_CONTENTS;\r\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS')\r\n ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)\r\n : {};\r\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR')\r\n ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)\r\n : {};\r\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES')\r\n ? cfg.USE_PROFILES\r\n : false;\r\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\r\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\r\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\r\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\r\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\r\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\r\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\r\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\r\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\r\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\r\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\r\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\r\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\r\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\r\n IN_PLACE = cfg.IN_PLACE || false; // Default false\r\n IS_ALLOWED_URI = cfg.ALLOWED_URI_REGEXP || EXPRESSIONS.IS_ALLOWED_URI;\r\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\r\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\r\n if (\r\n cfg.CUSTOM_ELEMENT_HANDLING &&\r\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)\r\n ) {\r\n CUSTOM_ELEMENT_HANDLING.tagNameCheck =\r\n cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\r\n }\r\n\r\n if (\r\n cfg.CUSTOM_ELEMENT_HANDLING &&\r\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)\r\n ) {\r\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\r\n cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\r\n }\r\n\r\n if (\r\n cfg.CUSTOM_ELEMENT_HANDLING &&\r\n typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements ===\r\n 'boolean'\r\n ) {\r\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\r\n cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\r\n }\r\n\r\n if (SAFE_FOR_TEMPLATES) {\r\n ALLOW_DATA_ATTR = false;\r\n }\r\n\r\n if (RETURN_DOM_FRAGMENT) {\r\n RETURN_DOM = true;\r\n }\r\n\r\n /* Parse profile info */\r\n if (USE_PROFILES) {\r\n ALLOWED_TAGS = addToSet({}, TAGS.text);\r\n ALLOWED_ATTR = [];\r\n if (USE_PROFILES.html === true) {\r\n addToSet(ALLOWED_TAGS, TAGS.html);\r\n addToSet(ALLOWED_ATTR, ATTRS.html);\r\n }\r\n\r\n if (USE_PROFILES.svg === true) {\r\n addToSet(ALLOWED_TAGS, TAGS.svg);\r\n addToSet(ALLOWED_ATTR, ATTRS.svg);\r\n addToSet(ALLOWED_ATTR, ATTRS.xml);\r\n }\r\n\r\n if (USE_PROFILES.svgFilters === true) {\r\n addToSet(ALLOWED_TAGS, TAGS.svgFilters);\r\n addToSet(ALLOWED_ATTR, ATTRS.svg);\r\n addToSet(ALLOWED_ATTR, ATTRS.xml);\r\n }\r\n\r\n if (USE_PROFILES.mathMl === true) {\r\n addToSet(ALLOWED_TAGS, TAGS.mathMl);\r\n addToSet(ALLOWED_ATTR, ATTRS.mathMl);\r\n addToSet(ALLOWED_ATTR, ATTRS.xml);\r\n }\r\n }\r\n\r\n /* Merge configuration parameters */\r\n if (cfg.ADD_TAGS) {\r\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\r\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\r\n }\r\n\r\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\r\n }\r\n\r\n if (cfg.ADD_ATTR) {\r\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\r\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\r\n }\r\n\r\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\r\n }\r\n\r\n if (cfg.ADD_URI_SAFE_ATTR) {\r\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\r\n }\r\n\r\n if (cfg.FORBID_CONTENTS) {\r\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\r\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\r\n }\r\n\r\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\r\n }\r\n\r\n /* Add #text in case KEEP_CONTENT is set to true */\r\n if (KEEP_CONTENT) {\r\n ALLOWED_TAGS['#text'] = true;\r\n }\r\n\r\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\r\n if (WHOLE_DOCUMENT) {\r\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\r\n }\r\n\r\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\r\n if (ALLOWED_TAGS.table) {\r\n addToSet(ALLOWED_TAGS, ['tbody']);\r\n delete FORBID_TAGS.tbody;\r\n }\r\n\r\n if (cfg.TRUSTED_TYPES_POLICY) {\r\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\r\n throw typeErrorCreate(\r\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.'\r\n );\r\n }\r\n\r\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\r\n throw typeErrorCreate(\r\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.'\r\n );\r\n }\r\n\r\n // Overwrite existing TrustedTypes policy.\r\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\r\n\r\n // Sign local variables required by `sanitize`.\r\n emptyHTML = trustedTypesPolicy.createHTML('');\r\n } else {\r\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\r\n if (trustedTypesPolicy === undefined) {\r\n trustedTypesPolicy = _createTrustedTypesPolicy(\r\n trustedTypes,\r\n currentScript\r\n );\r\n }\r\n\r\n // If creating the internal policy succeeded sign internal variables.\r\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\r\n emptyHTML = trustedTypesPolicy.createHTML('');\r\n }\r\n }\r\n\r\n // Prevent further manipulation of configuration.\r\n // Not available in IE8, Safari 5, etc.\r\n if (freeze) {\r\n freeze(cfg);\r\n }\r\n\r\n CONFIG = cfg;\r\n };\r\n\r\n const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\r\n 'mi',\r\n 'mo',\r\n 'mn',\r\n 'ms',\r\n 'mtext',\r\n ]);\r\n\r\n const HTML_INTEGRATION_POINTS = addToSet({}, [\r\n 'foreignobject',\r\n 'desc',\r\n 'title',\r\n 'annotation-xml',\r\n ]);\r\n\r\n // Certain elements are allowed in both SVG and HTML\r\n // namespace. We need to specify them explicitly\r\n // so that they don't get erroneously deleted from\r\n // HTML namespace.\r\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\r\n 'title',\r\n 'style',\r\n 'font',\r\n 'a',\r\n 'script',\r\n ]);\r\n\r\n /* Keep track of all possible SVG and MathML tags\r\n * so that we can perform the namespace checks\r\n * correctly. */\r\n const ALL_SVG_TAGS = addToSet({}, [\r\n ...TAGS.svg,\r\n ...TAGS.svgFilters,\r\n ...TAGS.svgDisallowed,\r\n ]);\r\n const ALL_MATHML_TAGS = addToSet({}, [\r\n ...TAGS.mathMl,\r\n ...TAGS.mathMlDisallowed,\r\n ]);\r\n\r\n /**\r\n * @param {Element} element a DOM element whose namespace is being checked\r\n * @returns {boolean} Return false if the element has a\r\n * namespace that a spec-compliant parser would never\r\n * return. Return true otherwise.\r\n */\r\n const _checkValidNamespace = function (element) {\r\n let parent = getParentNode(element);\r\n\r\n // In JSDOM, if we're inside shadow DOM, then parentNode\r\n // can be null. We just simulate parent in this case.\r\n if (!parent || !parent.tagName) {\r\n parent = {\r\n namespaceURI: NAMESPACE,\r\n tagName: 'template',\r\n };\r\n }\r\n\r\n const tagName = stringToLowerCase(element.tagName);\r\n const parentTagName = stringToLowerCase(parent.tagName);\r\n\r\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\r\n return false;\r\n }\r\n\r\n if (element.namespaceURI === SVG_NAMESPACE) {\r\n // The only way to switch from HTML namespace to SVG\r\n // is via <svg>. If it happens via any other tag, then\r\n // it should be killed.\r\n if (parent.namespaceURI === HTML_NAMESPACE) {\r\n return tagName === 'svg';\r\n }\r\n\r\n // The only way to switch from MathML to SVG is via`\r\n // svg if parent is either <annotation-xml> or MathML\r\n // text integration points.\r\n if (parent.namespaceURI === MATHML_NAMESPACE) {\r\n return (\r\n tagName === 'svg' &&\r\n (parentTagName === 'annotation-xml' ||\r\n MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\r\n );\r\n }\r\n\r\n // We only allow elements that are defined in SVG\r\n // spec. All others are disallowed in SVG namespace.\r\n return Boolean(ALL_SVG_TAGS[tagName]);\r\n }\r\n\r\n if (element.namespaceURI === MATHML_NAMESPACE) {\r\n // The only way to switch from HTML namespace to MathML\r\n // is via <math>. If it happens via any other tag, then\r\n // it should be killed.\r\n if (parent.namespaceURI === HTML_NAMESPACE) {\r\n return tagName === 'math';\r\n }\r\n\r\n // The only way to switch from SVG to MathML is via\r\n // <math> and HTML integration points\r\n if (parent.namespaceURI === SVG_NAMESPACE) {\r\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\r\n }\r\n\r\n // We only allow elements that are defined in MathML\r\n // spec. All others are disallowed in MathML namespace.\r\n return Boolean(ALL_MATHML_TAGS[tagName]);\r\n }\r\n\r\n if (element.namespaceURI === HTML_NAMESPACE) {\r\n // The only way to switch from SVG to HTML is via\r\n // HTML integration points, and from MathML to HTML\r\n // is via MathML text integration points\r\n if (\r\n parent.namespaceURI === SVG_NAMESPACE &&\r\n !HTML_INTEGRATION_POINTS[parentTagName]\r\n ) {\r\n return false;\r\n }\r\n\r\n if (\r\n parent.namespaceURI === MATHML_NAMESPACE &&\r\n !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\r\n ) {\r\n return false;\r\n }\r\n\r\n // We disallow tags that are specific for MathML\r\n // or SVG and should never appear in HTML namespace\r\n return (\r\n !ALL_MATHML_TAGS[tagName] &&\r\n (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\r\n );\r\n }\r\n\r\n // For XHTML and XML documents that support custom namespaces\r\n if (\r\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\r\n ALLOWED_NAMESPACES[element.namespaceURI]\r\n ) {\r\n return true;\r\n }\r\n\r\n // The code should never reach this place (this means\r\n // that the element somehow got namespace that is not\r\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\r\n // Return false just in case.\r\n return false;\r\n };\r\n\r\n /**\r\n * _forceRemove\r\n *\r\n * @param {Node} node a DOM node\r\n */\r\n const _forceRemove = function (node) {\r\n arrayPush(DOMPurify.removed, { element: node });\r\n\r\n try {\r\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\r\n node.parentNode.removeChild(node);\r\n } catch (_) {\r\n node.remove();\r\n }\r\n };\r\n\r\n /**\r\n * _removeAttribute\r\n *\r\n * @param {String} name an Attribute name\r\n * @param {Node} node a DOM node\r\n */\r\n const _removeAttribute = function (name, node) {\r\n try {\r\n arrayPush(DOMPurify.removed, {\r\n attribute: node.getAttributeNode(name),\r\n from: node,\r\n });\r\n } catch (_) {\r\n arrayPush(DOMPurify.removed, {\r\n attribute: null,\r\n from: node,\r\n });\r\n }\r\n\r\n node.removeAttribute(name);\r\n\r\n // We void attribute values for unremovable \"is\"\" attributes\r\n if (name === 'is' && !ALLOWED_ATTR[name]) {\r\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\r\n try {\r\n _forceRemove(node);\r\n } catch (_) {}\r\n } else {\r\n try {\r\n node.setAttribute(name, '');\r\n } catch (_) {}\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * _initDocument\r\n *\r\n * @param {String} dirty a string of dirty markup\r\n * @return {Document} a DOM, filled with the dirty markup\r\n */\r\n const _initDocument = function (dirty) {\r\n /* Create a HTML document */\r\n let doc = null;\r\n let leadingWhitespace = null;\r\n\r\n if (FORCE_BODY) {\r\n dirty = '<remove></remove>' + dirty;\r\n } else {\r\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\r\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\r\n leadingWhitespace = matches && matches[0];\r\n }\r\n\r\n if (\r\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\r\n NAMESPACE === HTML_NAMESPACE\r\n ) {\r\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\r\n dirty =\r\n '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' +\r\n dirty +\r\n '</body></html>';\r\n }\r\n\r\n const dirtyPayload = trustedTypesPolicy\r\n ? trustedTypesPolicy.createHTML(dirty)\r\n : dirty;\r\n /*\r\n * Use the DOMParser API by default, fallback later if needs be\r\n * DOMParser not work for svg when has multiple root element.\r\n */\r\n if (NAMESPACE === HTML_NAMESPACE) {\r\n try {\r\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\r\n } catch (_) {}\r\n }\r\n\r\n /* Use createHTMLDocument in case DOMParser is not available */\r\n if (!doc || !doc.documentElement) {\r\n doc = implementation.createDocument(NAMESPACE, 'template', null);\r\n try {\r\n doc.documentElement.innerHTML = IS_EMPTY_INPUT\r\n ? emptyHTML\r\n : dirtyPayload;\r\n } catch (_) {\r\n // Syntax error if dirtyPayload is invalid xml\r\n }\r\n }\r\n\r\n const body = doc.body || doc.documentElement;\r\n\r\n if (dirty && leadingWhitespace) {\r\n body.insertBefore(\r\n document.createTextNode(leadingWhitespace),\r\n body.childNodes[0] || null\r\n );\r\n }\r\n\r\n /* Work on whole document or just its body */\r\n if (NAMESPACE === HTML_NAMESPACE) {\r\n return getElementsByTagName.call(\r\n doc,\r\n WHOLE_DOCUMENT ? 'html' : 'body'\r\n )[0];\r\n }\r\n\r\n return WHOLE_DOCUMENT ? doc.documentElement : body;\r\n };\r\n\r\n /**\r\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\r\n *\r\n * @param {Node} root The root element or node to start traversing on.\r\n * @return {NodeIterator} The created NodeIterator\r\n */\r\n const _createNodeIterator = function (root) {\r\n return createNodeIterator.call(\r\n root.ownerDocument || root,\r\n root,\r\n // eslint-disable-next-line no-bitwise\r\n NodeFilter.SHOW_ELEMENT |\r\n NodeFilter.SHOW_COMMENT |\r\n NodeFilter.SHOW_TEXT |\r\n NodeFilter.SHOW_PROCESSING_INSTRUCTION |\r\n NodeFilter.SHOW_CDATA_SECTION,\r\n null\r\n );\r\n };\r\n\r\n /**\r\n * _isClobbered\r\n *\r\n * @param {Node} elm element to check for clobbering attacks\r\n * @return {Boolean} true if clobbered, false if safe\r\n */\r\n const _isClobbered = function (elm) {\r\n return (\r\n elm instanceof HTMLFormElement &&\r\n // eslint-disable-next-line unicorn/no-typeof-undefined\r\n ((typeof elm.__depth !== 'undefined' &&\r\n typeof elm.__depth !== 'number') ||\r\n // eslint-disable-next-line unicorn/no-typeof-undefined\r\n (typeof elm.__removalCount !== 'undefined' &&\r\n typeof elm.__removalCount !== 'number') ||\r\n typeof elm.nodeName !== 'string' ||\r\n typeof elm.textContent !== 'string' ||\r\n typeof elm.removeChild !== 'function' ||\r\n !(elm.attributes instanceof NamedNodeMap) ||\r\n typeof elm.removeAttribute !== 'function' ||\r\n typeof elm.setAttribute !== 'function' ||\r\n typeof elm.namespaceURI !== 'string' ||\r\n typeof elm.insertBefore !== 'function' ||\r\n typeof elm.hasChildNodes !== 'function')\r\n );\r\n };\r\n\r\n /**\r\n * Checks whether the given object is a DOM node.\r\n *\r\n * @param {Node} object object to check whether it's a DOM node\r\n * @return {Boolean} true is object is a DOM node\r\n */\r\n const _isNode = function (object) {\r\n return typeof Node === 'function' && object instanceof Node;\r\n };\r\n\r\n /**\r\n * _executeHook\r\n * Execute user configurable hooks\r\n *\r\n * @param {String} entryPoint Name of the hook's entry point\r\n * @param {Node} currentNode node to work on with the hook\r\n * @param {Object} data additional hook parameters\r\n */\r\n const _executeHook = function (entryPoint, currentNode, data) {\r\n if (!hooks[entryPoint]) {\r\n return;\r\n }\r\n\r\n arrayForEach(hooks[entryPoint], (hook) => {\r\n hook.call(DOMPurify, currentNode, data, CONFIG);\r\n });\r\n };\r\n\r\n /**\r\n * _sanitizeElements\r\n *\r\n * @protect nodeName\r\n * @protect textContent\r\n * @protect removeChild\r\n *\r\n * @param {Node} currentNode to check for permission to exist\r\n * @return {Boolean} true if node was killed, false if left alive\r\n */\r\n const _sanitizeElements = function (currentNode) {\r\n let content = null;\r\n\r\n /* Execute a hook if present */\r\n _executeHook('beforeSanitizeElements', currentNode, null);\r\n\r\n /* Check if element is clobbered or can clobber */\r\n if (_isClobbered(currentNode)) {\r\n _forceRemove(currentNode);\r\n return true;\r\n }\r\n\r\n /* Now let's check the element's type and name */\r\n const tagName = transformCaseFunc(currentNode.nodeName);\r\n\r\n /* Execute a hook if present */\r\n _executeHook('uponSanitizeElement', currentNode, {\r\n tagName,\r\n allowedTags: ALLOWED_TAGS,\r\n });\r\n\r\n /* Detect mXSS attempts abusing namespace confusion */\r\n if (\r\n currentNode.hasChildNodes() &&\r\n !_isNode(currentNode.firstElementChild) &&\r\n regExpTest(/<[/\\w]/g, currentNode.innerHTML) &&\r\n regExpTest(/<[/\\w]/g, currentNode.textContent)\r\n ) {\r\n _forceRemove(currentNode);\r\n return true;\r\n }\r\n\r\n /* Remove any ocurrence of processing instructions */\r\n if (currentNode.nodeType === 7) {\r\n _forceRemove(currentNode);\r\n return true;\r\n }\r\n\r\n /* Remove any kind of possibly harmful comments */\r\n if (\r\n SAFE_FOR_XML &&\r\n currentNode.nodeType === 8 &&\r\n regExpTest(/<[/\\w]/g, currentNode.data)\r\n ) {\r\n _forceRemove(currentNode);\r\n return true;\r\n }\r\n\r\n /* Remove element if anything forbids its presence */\r\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\r\n /* Check if we have a custom element to handle */\r\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\r\n if (\r\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\r\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\r\n ) {\r\n return false;\r\n }\r\n\r\n if (\r\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\r\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)\r\n ) {\r\n return false;\r\n }\r\n }\r\n\r\n /* Keep content except for bad-listed elements */\r\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\r\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\r\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\r\n\r\n if (childNodes && parentNode) {\r\n const childCount = childNodes.length;\r\n\r\n for (let i = childCount - 1; i >= 0; --i) {\r\n const childClone = cloneNode(childNodes[i], true);\r\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\r\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\r\n }\r\n }\r\n }\r\n\r\n _forceRemove(currentNode);\r\n return true;\r\n }\r\n\r\n /* Check whether element has a valid namespace */\r\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\r\n _forceRemove(currentNode);\r\n return true;\r\n }\r\n\r\n /* Make sure that older browsers don't get fallback-tag mXSS */\r\n if (\r\n (tagName === 'noscript' ||\r\n tagName === 'noembed' ||\r\n tagName === 'noframes') &&\r\n regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)\r\n ) {\r\n _forceRemove(currentNode);\r\n return true;\r\n }\r\n\r\n /* Sanitize element content to be template-safe */\r\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\r\n /* Get the element's text content */\r\n content = currentNode.textContent;\r\n\r\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\r\n content = stringReplace(content, expr, ' ');\r\n });\r\n\r\n if (currentNode.textContent !== content) {\r\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\r\n currentNode.textContent = content;\r\n }\r\n }\r\n\r\n /* Execute a hook if present */\r\n _executeHook('afterSanitizeElements', currentNode, null);\r\n\r\n return false;\r\n };\r\n\r\n /**\r\n * _isValidAttribute\r\n *\r\n * @param {string} lcTag Lowercase tag name of containing element.\r\n * @param {string} lcName Lowercase attribute name.\r\n * @param {string} value Attribute value.\r\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\r\n */\r\n // eslint-disable-next-line complexity\r\n const _isValidAttribute = function (lcTag, lcName, value) {\r\n /* Make sure attribute cannot clobber */\r\n if (\r\n SANITIZE_DOM &&\r\n (lcName === 'id' || lcName === 'name') &&\r\n (value in document || value in formElement)\r\n ) {\r\n return false;\r\n }\r\n\r\n /* Allow valid data-* attributes: At least one character after \"-\"\r\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\r\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\r\n We don't need to check the value; it's always URI safe. */\r\n if (\r\n ALLOW_DATA_ATTR &&\r\n !FORBID_ATTR[lcName] &&\r\n regExpTest(DATA_ATTR, lcName)\r\n ) {\r\n // This attribute is safe\r\n } else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\r\n // This attribute is safe\r\n /* Otherwise, check the name is permitted */\r\n } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\r\n if (\r\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\r\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\r\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\r\n (_isBasicCustomElement(lcTag) &&\r\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\r\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag)) ||\r\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\r\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag))) &&\r\n ((CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp &&\r\n regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName)) ||\r\n (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function &&\r\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)))) ||\r\n // Alternative, second condition checks if it's an `is`-attribute, AND\r\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\r\n (lcName === 'is' &&\r\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\r\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\r\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)) ||\r\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\r\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))))\r\n ) {\r\n // If user has supplied a regexp or function in CUSTOM_ELEMENT_HANDLING.tagNameCheck, we need to also allow derived custom elements using the same tagName test.\r\n // Additionally, we need to allow attributes passing the CUSTOM_ELEMENT_HANDLING.attributeNameCheck user has configured, as custom elements can define these at their own discretion.\r\n } else {\r\n return false;\r\n }\r\n /* Check value is safe. First, is attr inert? If so, is safe */\r\n } else if (URI_SAFE_ATTRIBUTES[lcName]) {\r\n // This attribute is safe\r\n /* Check no script, data or unknown possibly unsafe URI\r\n unless we know URI values are safe for that attribute */\r\n } else if (\r\n regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))\r\n ) {\r\n // This attribute is safe\r\n /* Keep image data URIs alive if src/xlink:href is allowed */\r\n /* Further prevent gadget XSS for dynamically built script tags */\r\n } else if (\r\n (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\r\n lcTag !== 'script' &&\r\n stringIndexOf(value, 'data:') === 0 &&\r\n DATA_URI_TAGS[lcTag]\r\n ) {\r\n // This attribute is safe\r\n /* Allow unknown protocols: This provides support for links that\r\n are handled by protocol handlers which may be unknown ahead of\r\n time, e.g. fb:, spotify: */\r\n } else if (\r\n ALLOW_UNKNOWN_PROTOCOLS &&\r\n !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\r\n ) {\r\n // This attribute is safe\r\n /* Check for binary attributes */\r\n } else if (value) {\r\n return false;\r\n } else {\r\n // Binary attributes are safe at this point\r\n /* Anything else, presume unsafe, do not add it back */\r\n }\r\n\r\n return true;\r\n };\r\n\r\n /**\r\n * _isBasicCustomElement\r\n * checks if at least one dash is included in tagName, and it's not the first char\r\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\r\n *\r\n * @param {string} tagName name of the tag of the node to sanitize\r\n * @returns {boolean} Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\r\n */\r\n const _isBasicCustomElement = function (tagName) {\r\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\r\n };\r\n\r\n /**\r\n * _sanitizeAttributes\r\n *\r\n * @protect attributes\r\n * @protect nodeName\r\n * @protect removeAttribute\r\n * @protect setAttribute\r\n *\r\n * @param {Node} currentNode to sanitize\r\n */\r\n const _sanitizeAttributes = function (currentNode) {\r\n /* Execute a hook if present */\r\n _executeHook('beforeSanitizeAttributes', currentNode, null);\r\n\r\n const { attributes } = currentNode;\r\n\r\n /* Check if we have attributes; if not we might have a text node */\r\n if (!attributes) {\r\n return;\r\n }\r\n\r\n const hookEvent = {\r\n attrName: '',\r\n attrValue: '',\r\n keepAttr: true,\r\n allowedAttributes: ALLOWED_ATTR,\r\n };\r\n let l = attributes.length;\r\n\r\n /* Go backwards over all attributes; safely remove bad ones */\r\n while (l--) {\r\n const attr = attributes[l];\r\n const { name, namespaceURI, value: attrValue } = attr;\r\n const lcName = transformCaseFunc(name);\r\n\r\n let value = name === 'value' ? attrValue : stringTrim(attrValue);\r\n\r\n /* Execute a hook if present */\r\n hookEvent.attrName = lcName;\r\n hookEvent.attrValue = value;\r\n hookEvent.keepAttr = true;\r\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\r\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\r\n value = hookEvent.attrValue;\r\n /* Did the hooks approve of the attribute? */\r\n if (hookEvent.forceKeepAttr) {\r\n continue;\r\n }\r\n\r\n /* Remove attribute */\r\n _removeAttribute(name, currentNode);\r\n\r\n /* Did the hooks approve of the attribute? */\r\n if (!hookEvent.keepAttr) {\r\n continue;\r\n }\r\n\r\n /* Work around a security issue in jQuery 3.0 */\r\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\r\n _removeAttribute(name, currentNode);\r\n continue;\r\n }\r\n\r\n /* Sanitize attribute content to be template-safe */\r\n if (SAFE_FOR_TEMPLATES) {\r\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\r\n value = stringReplace(value, expr, ' ');\r\n });\r\n }\r\n\r\n /* Is `value` valid for this attribute? */\r\n const lcTag = transformCaseFunc(currentNode.nodeName);\r\n if (!_isValidAttribute(lcTag, lcName, value)) {\r\n continue;\r\n }\r\n\r\n /* Full DOM Clobbering protection via namespace isolation,\r\n * Prefix id and name attributes with `user-content-`\r\n */\r\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\r\n // Remove the attribute with this value\r\n _removeAttribute(name, currentNode);\r\n\r\n // Prefix the value and later re-create the attribute with the sanitized value\r\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\r\n }\r\n\r\n /* Handle attributes that require Trusted Types */\r\n if (\r\n trustedTypesPolicy &&\r\n typeof trustedTypes === 'object' &&\r\n typeof trustedTypes.getAttributeType === 'function'\r\n ) {\r\n if (namespaceURI) {\r\n /* Namespaces are not yet supported, see https://bugs.chromium.org/p/chromium/issues/detail?id=1305293 */\r\n } else {\r\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\r\n case 'TrustedHTML': {\r\n value = trustedTypesPolicy.createHTML(value);\r\n break;\r\n }\r\n\r\n case 'TrustedScriptURL': {\r\n value = trustedTypesPolicy.createScriptURL(value);\r\n break;\r\n }\r\n\r\n default: {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /* Handle invalid data-* attribute set by try-catching it */\r\n try {\r\n if (namespaceURI) {\r\n currentNode.setAttributeNS(namespaceURI, name, value);\r\n } else {\r\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\r\n currentNode.setAttribute(name, value);\r\n }\r\n\r\n arrayPop(DOMPurify.removed);\r\n } catch (_) {}\r\n }\r\n\r\n /* Execute a hook if present */\r\n _executeHook('afterSanitizeAttributes', currentNode, null);\r\n };\r\n\r\n /**\r\n * _sanitizeShadowDOM\r\n *\r\n * @param {DocumentFragment} fragment to iterate over recursively\r\n */\r\n const _sanitizeShadowDOM = function (fragment) {\r\n let shadowNode = null;\r\n const shadowIterator = _createNodeIterator(fragment);\r\n\r\n /* Execute a hook if present */\r\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\r\n\r\n while ((shadowNode = shadowIterator.nextNode())) {\r\n /* Execute a hook if present */\r\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\r\n\r\n /* Sanitize tags and elements */\r\n if (_sanitizeElements(shadowNode)) {\r\n continue;\r\n }\r\n\r\n /* Set the nesting depth of an element */\r\n if (shadowNode.nodeType === 1) {\r\n if (shadowNode.parentNode && shadowNode.parentNode.__depth) {\r\n /*\r\n We want the depth of the node in the original tree, which can\r\n change when it's removed from its parent.\r\n */\r\n shadowNode.__depth =\r\n (shadowNode.__removalCount || 0) +\r\n shadowNode.parentNode.__depth +\r\n 1;\r\n } else {\r\n shadowNode.__depth = 1;\r\n }\r\n }\r\n\r\n /* Remove an element if nested too deeply to avoid mXSS */\r\n if (shadowNode.__depth >= MAX_NESTING_DEPTH) {\r\n _forceRemove(shadowNode);\r\n }\r\n\r\n /* Deep shadow DOM detected */\r\n if (shadowNode.content instanceof DocumentFragment) {\r\n shadowNode.content.__depth = shadowNode.__depth;\r\n _sanitizeShadowDOM(shadowNode.content);\r\n }\r\n\r\n /* Check attributes, sanitize if necessary */\r\n _sanitizeAttributes(shadowNode);\r\n }\r\n\r\n /* Execute a hook if present */\r\n _executeHook('afterSanitizeShadowDOM', fragment, null);\r\n };\r\n\r\n /**\r\n * Sanitize\r\n * Public method providing core sanitation functionality\r\n *\r\n * @param {String|Node} dirty string or DOM node\r\n * @param {Object} cfg object\r\n */\r\n // eslint-disable-next-line complexity\r\n DOMPurify.sanitize = function (dirty, cfg = {}) {\r\n let body = null;\r\n let importedNode = null;\r\n let currentNode = null;\r\n let returnNode = null;\r\n /* Make sure we have a string to sanitize.\r\n DO NOT return early, as this will return the wrong type if\r\n the user has requested a DOM object rather than a string */\r\n IS_EMPTY_INPUT = !dirty;\r\n if (IS_EMPTY_INPUT) {\r\n dirty = '<!-->';\r\n }\r\n\r\n /* Stringify, in case dirty is an object */\r\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\r\n if (typeof dirty.toString === 'function') {\r\n dirty = dirty.toString();\r\n if (typeof dirty !== 'string') {\r\n throw typeErrorCreate('dirty is not a string, aborting');\r\n }\r\n } else {\r\n throw typeErrorCreate('toString is not a function');\r\n }\r\n }\r\n\r\n /* Return dirty HTML if DOMPurify cannot run */\r\n if (!DOMPurify.isSupported) {\r\n return dirty;\r\n }\r\n\r\n /* Assign config vars */\r\n if (!SET_CONFIG) {\r\n _parseConfig(cfg);\r\n }\r\n\r\n /* Clean up removed elements */\r\n DOMPurify.removed = [];\r\n\r\n /* Check if dirty is correctly typed for IN_PLACE */\r\n if (typeof dirty === 'string') {\r\n IN_PLACE = false;\r\n }\r\n\r\n if (IN_PLACE) {\r\n /* Do some early pre-sanitization to avoid unsafe root nodes */\r\n if (dirty.nodeName) {\r\n const tagName = transformCaseFunc(dirty.nodeName);\r\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\r\n throw typeErrorCreate(\r\n 'root node is forbidden and cannot be sanitized in-place'\r\n );\r\n }\r\n }\r\n } else if (dirty instanceof Node) {\r\n /* If dirty is a DOM element, append to an empty document to avoid\r\n elements being stripped by the parser */\r\n body = _initDocument('<!---->');\r\n importedNode = body.ownerDocument.importNode(dirty, true);\r\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\r\n /* Node is already a body, use as is */\r\n body = importedNode;\r\n } else if (importedNode.nodeName === 'HTML') {\r\n body = importedNode;\r\n } else {\r\n // eslint-disable-next-line unicorn/prefer-dom-node-append\r\n body.appendChild(importedNode);\r\n }\r\n } else {\r\n /* Exit directly if we have nothing to do */\r\n if (\r\n !RETURN_DOM &&\r\n !SAFE_FOR_TEMPLATES &&\r\n !WHOLE_DOCUMENT &&\r\n // eslint-disable-next-line unicorn/prefer-includes\r\n dirty.indexOf('<') === -1\r\n ) {\r\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\r\n ? trustedTypesPolicy.createHTML(dirty)\r\n : dirty;\r\n }\r\n\r\n /* Initialize the document to work on */\r\n body = _initDocument(dirty);\r\n\r\n /* Check we have a DOM node from the data */\r\n if (!body) {\r\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\r\n }\r\n }\r\n\r\n /* Remove first element node (ours) if FORCE_BODY is set */\r\n if (body && FORCE_BODY) {\r\n _forceRemove(body.firstChild);\r\n }\r\n\r\n /* Get node iterator */\r\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\r\n\r\n /* Now start iterating over the created document */\r\n while ((currentNode = nodeIterator.nextNode())) {\r\n /* Sanitize tags and elements */\r\n if (_sanitizeElements(currentNode)) {\r\n continue;\r\n }\r\n\r\n /* Set the nesting depth of an element */\r\n if (currentNode.nodeType === 1) {\r\n if (currentNode.parentNode && currentNode.parentNode.__depth) {\r\n /*\r\n We want the depth of the node in the original tree, which can\r\n change when it's removed from its parent.\r\n */\r\n currentNode.__depth =\r\n (currentNode.__removalCount || 0) +\r\n currentNode.parentNode.__depth +\r\n 1;\r\n } else {\r\n currentNode.__depth = 1;\r\n }\r\n }\r\n\r\n /* Remove an element if nested too deeply to avoid mXSS */\r\n if (currentNode.__depth >= MAX_NESTING_DEPTH) {\r\n _forceRemove(currentNode);\r\n }\r\n\r\n /* Shadow DOM detected, sanitize it */\r\n if (currentNode.content instanceof DocumentFragment) {\r\n currentNode.content.__depth = currentNode.__depth;\r\n _sanitizeShadowDOM(currentNode.content);\r\n }\r\n\r\n /* Check attributes, sanitize if necessary */\r\n _sanitizeAttributes(currentNode);\r\n }\r\n\r\n /* If we sanitized `dirty` in-place, return it. */\r\n if (IN_PLACE) {\r\n return dirty;\r\n }\r\n\r\n /* Return sanitized string or DOM */\r\n if (RETURN_DOM) {\r\n if (RETURN_DOM_FRAGMENT) {\r\n returnNode = createDocumentFragment.call(body.ownerDocument);\r\n\r\n while (body.firstChild) {\r\n // eslint-disable-next-line unicorn/prefer-dom-node-append\r\n returnNode.appendChild(body.firstChild);\r\n }\r\n } else {\r\n returnNode = body;\r\n }\r\n\r\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\r\n /*\r\n AdoptNode() is not used because internal state is not reset\r\n (e.g. the past names map of a HTMLFormElement), this is safe\r\n in theory but we would rather not risk another attack vector.\r\n The state that is cloned by importNode() is explicitly defined\r\n by the specs.\r\n */\r\n returnNode = importNode.call(originalDocument, returnNode, true);\r\n }\r\n\r\n return returnNode;\r\n }\r\n\r\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\r\n\r\n /* Serialize doctype if allowed */\r\n if (\r\n WHOLE_DOCUMENT &&\r\n ALLOWED_TAGS['!doctype'] &&\r\n body.ownerDocument &&\r\n body.ownerDocument.doctype &&\r\n body.ownerDocument.doctype.name &&\r\n regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\r\n ) {\r\n serializedHTML =\r\n '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\r\n }\r\n\r\n /* Sanitize final string template-safe */\r\n if (SAFE_FOR_TEMPLATES) {\r\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\r\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\r\n });\r\n }\r\n\r\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\r\n ? trustedTypesPolicy.createHTML(serializedHTML)\r\n : serializedHTML;\r\n };\r\n\r\n /**\r\n * Public method to set the configuration once\r\n * setConfig\r\n *\r\n * @param {Object} cfg configuration object\r\n */\r\n DOMPurify.setConfig = function (cfg = {}) {\r\n _parseConfig(cfg);\r\n SET_CONFIG = true;\r\n };\r\n\r\n /**\r\n * Public method to remove the configuration\r\n * clearConfig\r\n *\r\n */\r\n DOMPurify.clearConfig = function () {\r\n CONFIG = null;\r\n SET_CONFIG = false;\r\n };\r\n\r\n /**\r\n * Public method to check if an attribute value is valid.\r\n * Uses last set config, if any. Otherwise, uses config defaults.\r\n * isValidAttribute\r\n *\r\n * @param {String} tag Tag name of containing element.\r\n * @param {String} attr Attribute name.\r\n * @param {String} value Attribute value.\r\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\r\n */\r\n DOMPurify.isValidAttribute = function (tag, attr, value) {\r\n /* Initialize shared config vars if necessary. */\r\n if (!CONFIG) {\r\n _parseConfig({});\r\n }\r\n\r\n const lcTag = transformCaseFunc(tag);\r\n const lcName = transformCaseFunc(attr);\r\n return _isValidAttribute(lcTag, lcName, value);\r\n };\r\n\r\n /**\r\n * AddHook\r\n * Public method to add DOMPurify hooks\r\n *\r\n * @param {String} entryPoint entry point for the hook to add\r\n * @param {Function} hookFunction function to execute\r\n */\r\n DOMPurify.addHook = function (entryPoint, hookFunction) {\r\n if (typeof hookFunction !== 'function') {\r\n return;\r\n }\r\n\r\n hooks[entryPoint] = hooks[entryPoint] || [];\r\n arrayPush(hooks[entryPoint], hookFunction);\r\n };\r\n\r\n /**\r\n * RemoveHook\r\n * Public method to remove a DOMPurify hook at a given entryPoint\r\n * (pops it from the stack of hooks if more are present)\r\n *\r\n * @param {String} entryPoint entry point for the hook to remove\r\n * @return {Function} removed(popped) hook\r\n */\r\n DOMPurify.removeHook = function (entryPoint) {\r\n if (hooks[entryPoint]) {\r\n return arrayPop(hooks[entryPoint]);\r\n }\r\n };\r\n\r\n /**\r\n * RemoveHooks\r\n * Public method to remove all DOMPurify hooks at a given entryPoint\r\n *\r\n * @param {String} entryPoint entry point for the hooks to remove\r\n */\r\n DOMPurify.removeHooks = function (entryPoint) {\r\n if (hooks[entryPoint]) {\r\n hooks[entryPoint] = [];\r\n }\r\n };\r\n\r\n /**\r\n * RemoveAllHooks\r\n * Public method to remove all DOMPurify hooks\r\n */\r\n DOMPurify.removeAllHooks = function () {\r\n hooks = {};\r\n };\r\n\r\n return DOMPurify;\r\n}\r\n\r\nexport default createDOMPurify();\r\n"],"names":["entries","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","Object","freeze","seal","create","apply","construct","Reflect","x","fun","thisValue","args","Func","arrayForEach","unapply","Array","prototype","forEach","arrayPop","pop","arrayPush","push","stringToLowerCase","String","toLowerCase","stringToString","toString","stringMatch","match","stringReplace","replace","stringIndexOf","indexOf","stringTrim","trim","objectHasOwnProperty","hasOwnProperty","regExpTest","RegExp","test","typeErrorCreate","unconstruct","TypeError","func","thisArg","_len","arguments","length","_key","_len2","_key2","addToSet","set","array","transformCaseFunc","undefined","l","element","lcElement","cleanArray","index","isPropertyExist","clone","object","newObject","property","value","isArray","constructor","lookupGetter","prop","desc","get","fallbackValue","html","svg","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","text","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","getGlobal","window","_createTrustedTypesPolicy","trustedTypes","purifyHostElement","createPolicy","suffix","ATTR_NAME","hasAttribute","getAttribute","policyName","createHTML","createScriptURL","scriptUrl","_","console","warn","createDOMPurify","DOMPurify","root","version","VERSION","removed","document","nodeType","isSupported","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","Element","NodeFilter","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","DOMParser","ElementPrototype","cloneNode","getNextSibling","getChildNodes","getParentNode","template","createElement","content","ownerDocument","trustedTypesPolicy","emptyHTML","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","hooks","createHTMLDocument","EXPRESSIONS","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","ATTRS","CUSTOM_ELEMENT_HANDLING","tagNameCheck","writable","configurable","enumerable","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","MAX_NESTING_DEPTH","formElement","isRegexOrFunction","testValue","Function","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","table","tbody","TRUSTED_TYPES_POLICY","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","parent","tagName","namespaceURI","parentTagName","Boolean","_forceRemove","node","parentNode","removeChild","remove","_removeAttribute","name","attribute","getAttributeNode","from","removeAttribute","setAttribute","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","parseFromString","documentElement","createDocument","innerHTML","body","insertBefore","createTextNode","childNodes","call","_createNodeIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_isClobbered","elm","__depth","__removalCount","nodeName","textContent","attributes","hasChildNodes","_isNode","_executeHook","entryPoint","currentNode","data","hook","_sanitizeElements","allowedTags","firstElementChild","_isBasicCustomElement","childCount","i","childClone","expr","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","attr","forceKeepAttr","getAttributeType","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","nextNode","sanitize","importedNode","returnNode","appendChild","firstChild","nodeIterator","shadowroot","shadowrootmode","serializedHTML","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","tag","addHook","hookFunction","removeHook","removeHooks","removeAllHooks"],"mappings":"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"}