/usr/share/javascript/dompurify/purify.min.js is in libjs-dompurify 0.9.0~dfsg1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 | (function(factory){"use strict";var root=typeof window==="undefined"?null:window;if(typeof define==="function"&&define.amd){define(function(){return factory(root)})}else if(typeof module!=="undefined"){module.exports=factory(root)}else{root.DOMPurify=factory(root)}})(function factory(window){"use strict";var DOMPurify=function(window){return factory(window)};DOMPurify.version="0.9.0";DOMPurify.removed=[];if(!window||!window.document||window.document.nodeType!==9){DOMPurify.isSupported=false;return DOMPurify}var document=window.document;var originalDocument=document;var DocumentFragment=window.DocumentFragment;var HTMLTemplateElement=window.HTMLTemplateElement;var Node=window.Node;var NodeFilter=window.NodeFilter;var NamedNodeMap=window.NamedNodeMap||window.MozNamedAttrMap;var Text=window.Text;var Comment=window.Comment;var DOMParser=window.DOMParser;var XMLHttpRequest=window.XMLHttpRequest;var encodeURI=window.encodeURI;var useXHR=false;var useDOMParser=false;if(typeof HTMLTemplateElement==="function"){var template=document.createElement("template");if(template.content&&template.content.ownerDocument){document=template.content.ownerDocument}}var implementation=document.implementation;var createNodeIterator=document.createNodeIterator;var getElementsByTagName=document.getElementsByTagName;var createDocumentFragment=document.createDocumentFragment;var importNode=originalDocument.importNode;var hooks={};DOMPurify.isSupported=typeof implementation.createHTMLDocument!=="undefined"&&document.documentMode!==9;var _addToSet=function(set,array){var l=array.length;while(l--){if(typeof array[l]==="string"){array[l]=array[l].toLowerCase()}set[array[l]]=true}return set};var _cloneObj=function(object){var newObject={};var property;for(property in object){if(object.hasOwnProperty(property)){newObject[property]=object[property]}}return newObject};var ALLOWED_TAGS=null;var DEFAULT_ALLOWED_TAGS=_addToSet({},["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr","svg","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","switch","symbol","text","textpath","title","tref","tspan","view","vkern","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmuliscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mpspace","msqrt","mystyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","#text"]);var ALLOWED_ATTR=null;var DEFAULT_ALLOWED_ATTR=_addToSet({},["accept","action","align","alt","autocomplete","background","bgcolor","border","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","coords","datetime","default","dir","disabled","download","enctype","face","for","headers","height","hidden","high","href","hreflang","id","ismap","label","lang","list","loop","low","max","maxlength","media","method","min","multiple","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","span","srclang","start","src","step","style","summary","tabindex","title","type","usemap","valign","value","width","xmlns","accent-height","accumulate","additivive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mode","min","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","surfacescale","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","u1","u2","unicode","values","viewbox","visibility","vert-adv-y","vert-origin-x","vert-origin-y","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","y","y1","y2","z","zoomandpan","accent","accentunder","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","display","displaystyle","fence","frame","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]);var FORBID_TAGS=null;var FORBID_ATTR=null;var ALLOW_ARIA_ATTR=true;var ALLOW_DATA_ATTR=true;var ALLOW_UNKNOWN_PROTOCOLS=false;var SAFE_FOR_JQUERY=false;var SAFE_FOR_TEMPLATES=false;var MUSTACHE_EXPR=/\{\{[\s\S]*|[\s\S]*\}\}/gm;var ERB_EXPR=/<%[\s\S]*|[\s\S]*%>/gm;var WHOLE_DOCUMENT=false;var SET_CONFIG=false;var FORCE_BODY=false;var RETURN_DOM=false;var RETURN_DOM_FRAGMENT=false;var RETURN_DOM_IMPORT=false;var SANITIZE_DOM=true;var KEEP_CONTENT=true;var FORBID_CONTENTS=_addToSet({},["audio","head","math","script","style","template","svg","video"]);var DATA_URI_TAGS=_addToSet({},["audio","video","img","source","image"]);var URI_SAFE_ATTRIBUTES=_addToSet({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]);var CONFIG=null;var formElement=document.createElement("form");var _parseConfig=function(cfg){if(typeof cfg!=="object"){cfg={}}ALLOWED_TAGS="ALLOWED_TAGS"in cfg?_addToSet({},cfg.ALLOWED_TAGS):DEFAULT_ALLOWED_TAGS;ALLOWED_ATTR="ALLOWED_ATTR"in cfg?_addToSet({},cfg.ALLOWED_ATTR):DEFAULT_ALLOWED_ATTR;FORBID_TAGS="FORBID_TAGS"in cfg?_addToSet({},cfg.FORBID_TAGS):{};FORBID_ATTR="FORBID_ATTR"in cfg?_addToSet({},cfg.FORBID_ATTR):{};ALLOW_ARIA_ATTR=cfg.ALLOW_ARIA_ATTR!==false;ALLOW_DATA_ATTR=cfg.ALLOW_DATA_ATTR!==false;ALLOW_UNKNOWN_PROTOCOLS=cfg.ALLOW_UNKNOWN_PROTOCOLS||false;SAFE_FOR_JQUERY=cfg.SAFE_FOR_JQUERY||false;SAFE_FOR_TEMPLATES=cfg.SAFE_FOR_TEMPLATES||false;WHOLE_DOCUMENT=cfg.WHOLE_DOCUMENT||false;RETURN_DOM=cfg.RETURN_DOM||false;RETURN_DOM_FRAGMENT=cfg.RETURN_DOM_FRAGMENT||false;RETURN_DOM_IMPORT=cfg.RETURN_DOM_IMPORT||false;FORCE_BODY=cfg.FORCE_BODY||false;SANITIZE_DOM=cfg.SANITIZE_DOM!==false;KEEP_CONTENT=cfg.KEEP_CONTENT!==false;if(SAFE_FOR_TEMPLATES){ALLOW_DATA_ATTR=false}if(RETURN_DOM_FRAGMENT){RETURN_DOM=true}if(cfg.ADD_TAGS){if(ALLOWED_TAGS===DEFAULT_ALLOWED_TAGS){ALLOWED_TAGS=_cloneObj(ALLOWED_TAGS)}_addToSet(ALLOWED_TAGS,cfg.ADD_TAGS)}if(cfg.ADD_ATTR){if(ALLOWED_ATTR===DEFAULT_ALLOWED_ATTR){ALLOWED_ATTR=_cloneObj(ALLOWED_ATTR)}_addToSet(ALLOWED_ATTR,cfg.ADD_ATTR)}if(cfg.ADD_URI_SAFE_ATTR){_addToSet(URI_SAFE_ATTRIBUTES,cfg.ADD_URI_SAFE_ATTR)}if(KEEP_CONTENT){ALLOWED_TAGS["#text"]=true}if(Object&&"freeze"in Object){Object.freeze(cfg)}CONFIG=cfg};var _forceRemove=function(node){DOMPurify.removed.push({element:node});try{node.parentNode.removeChild(node)}catch(e){node.outerHTML=""}};var _removeAttribute=function(name,node){DOMPurify.removed.push({attribute:node.getAttributeNode(name),from:node});node.removeAttribute(name)};var _initDocument=function(dirty){var doc,body;if(FORCE_BODY){dirty="<remove></remove>"+dirty}if(useXHR){try{dirty=encodeURI(dirty)}catch(e){}var xhr=new XMLHttpRequest;xhr.responseType="document";xhr.open("GET","data:text/html;charset=utf-8,"+dirty,false);xhr.send(null);doc=xhr.response}if(useDOMParser){try{doc=(new DOMParser).parseFromString(dirty,"text/html")}catch(e){}}if(!doc||!doc.documentElement){doc=implementation.createHTMLDocument("");body=doc.body;body.parentNode.removeChild(body.parentNode.firstElementChild);body.outerHTML=dirty}return getElementsByTagName.call(doc,WHOLE_DOCUMENT?"html":"body")[0]};if(DOMPurify.isSupported){(function(){var doc=_initDocument('<svg><g onload="this.parentNode.remove()"></g></svg>');if(!doc.querySelector("svg")){useXHR=true}doc=_initDocument('<svg><p><style><img src="</style><img src=x onerror=alert(1)//">');if(doc.querySelector("svg img")){useDOMParser=true}})()}var _createIterator=function(root){return createNodeIterator.call(root.ownerDocument||root,root,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_COMMENT|NodeFilter.SHOW_TEXT,function(){return NodeFilter.FILTER_ACCEPT},false)};var _isClobbered=function(elm){if(elm instanceof Text||elm instanceof Comment){return false}if(typeof elm.nodeName!=="string"||typeof elm.textContent!=="string"||typeof elm.removeChild!=="function"||!(elm.attributes instanceof NamedNodeMap)||typeof elm.removeAttribute!=="function"||typeof elm.setAttribute!=="function"){return true}return false};var _isNode=function(obj){return typeof Node==="object"?obj instanceof Node:obj&&typeof obj==="object"&&typeof obj.nodeType==="number"&&typeof obj.nodeName==="string"};var _sanitizeElements=function(currentNode){var tagName,content;_executeHook("beforeSanitizeElements",currentNode,null);if(_isClobbered(currentNode)){_forceRemove(currentNode);return true}tagName=currentNode.nodeName.toLowerCase();_executeHook("uponSanitizeElement",currentNode,{tagName:tagName,allowedTags:ALLOWED_TAGS});if(!ALLOWED_TAGS[tagName]||FORBID_TAGS[tagName]){if(KEEP_CONTENT&&!FORBID_CONTENTS[tagName]&&typeof currentNode.insertAdjacentHTML==="function"){try{currentNode.insertAdjacentHTML("AfterEnd",currentNode.innerHTML)}catch(e){}}_forceRemove(currentNode);return true}if(SAFE_FOR_JQUERY&&!currentNode.firstElementChild&&(!currentNode.content||!currentNode.content.firstElementChild)&&/</g.test(currentNode.textContent)){DOMPurify.removed.push({element:currentNode.cloneNode()});currentNode.innerHTML=currentNode.textContent.replace(/</g,"<")}if(SAFE_FOR_TEMPLATES&¤tNode.nodeType===3){content=currentNode.textContent;content=content.replace(MUSTACHE_EXPR," ");content=content.replace(ERB_EXPR," ");if(currentNode.textContent!==content){DOMPurify.removed.push({element:currentNode.cloneNode()});currentNode.textContent=content}}_executeHook("afterSanitizeElements",currentNode,null);return false};var DATA_ATTR=/^data-[\-\w.\u00B7-\uFFFF]/;var ARIA_ATTR=/^aria-[\-\w]+$/;var IS_ALLOWED_URI=/^(?:(?:(?:f|ht)tps?|mailto|tel):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i;var IS_SCRIPT_OR_DATA=/^(?:\w+script|data):/i;var ATTR_WHITESPACE=/[\x00-\x20\xA0\u1680\u180E\u2000-\u2029\u205f\u3000]/g;var _sanitizeAttributes=function(currentNode){var attr,name,value,lcName,idAttr,attributes,hookEvent,l;_executeHook("beforeSanitizeAttributes",currentNode,null);attributes=currentNode.attributes;if(!attributes){return}hookEvent={attrName:"",attrValue:"",keepAttr:true,allowedAttributes:ALLOWED_ATTR};l=attributes.length;while(l--){attr=attributes[l];name=attr.name;value=attr.value.trim();lcName=name.toLowerCase();hookEvent.attrName=lcName;hookEvent.attrValue=value;hookEvent.keepAttr=true;_executeHook("uponSanitizeAttribute",currentNode,hookEvent);value=hookEvent.attrValue;if(lcName==="name"&¤tNode.nodeName==="IMG"&&attributes.id){idAttr=attributes.id;attributes=Array.prototype.slice.apply(attributes);_removeAttribute("id",currentNode);_removeAttribute(name,currentNode);if(attributes.indexOf(idAttr)>l){currentNode.setAttribute("id",idAttr.value)}}else if(currentNode.nodeName==="INPUT"&&lcName==="type"&&value==="file"&&(ALLOWED_ATTR[lcName]||!FORBID_ATTR[lcName])){continue}else{if(name==="id"){currentNode.setAttribute(name,"")}_removeAttribute(name,currentNode)}if(!hookEvent.keepAttr){continue}if(SANITIZE_DOM&&(lcName==="id"||lcName==="name")&&(value in window||value in document||value in formElement)){continue}if(SAFE_FOR_TEMPLATES){value=value.replace(MUSTACHE_EXPR," ");value=value.replace(ERB_EXPR," ")}if(ALLOW_DATA_ATTR&&DATA_ATTR.test(lcName)){}else if(ALLOW_ARIA_ATTR&&ARIA_ATTR.test(lcName)){}else if(!ALLOWED_ATTR[lcName]||FORBID_ATTR[lcName]){continue}else if(URI_SAFE_ATTRIBUTES[lcName]){}else if(IS_ALLOWED_URI.test(value.replace(ATTR_WHITESPACE,""))){}else if((lcName==="src"||lcName==="xlink:href")&&value.indexOf("data:")===0&&DATA_URI_TAGS[currentNode.nodeName.toLowerCase()]){}else if(ALLOW_UNKNOWN_PROTOCOLS&&!IS_SCRIPT_OR_DATA.test(value.replace(ATTR_WHITESPACE,""))){}else if(!value){}else{continue}try{currentNode.setAttribute(name,value);DOMPurify.removed.pop()}catch(e){}}_executeHook("afterSanitizeAttributes",currentNode,null)};var _sanitizeShadowDOM=function(fragment){var shadowNode;var shadowIterator=_createIterator(fragment);_executeHook("beforeSanitizeShadowDOM",fragment,null);while(shadowNode=shadowIterator.nextNode()){_executeHook("uponSanitizeShadowNode",shadowNode,null);if(_sanitizeElements(shadowNode)){continue}if(shadowNode.content instanceof DocumentFragment){_sanitizeShadowDOM(shadowNode.content)}_sanitizeAttributes(shadowNode)}_executeHook("afterSanitizeShadowDOM",fragment,null)};var _executeHook=function(entryPoint,currentNode,data){if(!hooks[entryPoint]){return}hooks[entryPoint].forEach(function(hook){hook.call(DOMPurify,currentNode,data,CONFIG)})};DOMPurify.sanitize=function(dirty,cfg){var body,importedNode,currentNode,oldNode,nodeIterator,returnNode;if(!dirty){dirty="\x3c!--\x3e"}if(typeof dirty!=="string"&&!_isNode(dirty)){if(typeof dirty.toString!=="function"){throw new TypeError("toString is not a function")}else{dirty=dirty.toString()}}if(!DOMPurify.isSupported){if(typeof window.toStaticHTML==="object"||typeof window.toStaticHTML==="function"){if(typeof dirty==="string"){return window.toStaticHTML(dirty)}else if(_isNode(dirty)){return window.toStaticHTML(dirty.outerHTML)}}return dirty}if(!SET_CONFIG){_parseConfig(cfg)}DOMPurify.removed=[];if(dirty instanceof Node){body=_initDocument("\x3c!--\x3e");importedNode=body.ownerDocument.importNode(dirty,true);if(importedNode.nodeType===1&&importedNode.nodeName==="BODY"){body=importedNode}else{body.appendChild(importedNode)}}else{if(!RETURN_DOM&&!WHOLE_DOCUMENT&&dirty.indexOf("<")===-1){return dirty}body=_initDocument(dirty);if(!body){return RETURN_DOM?null:""}}if(FORCE_BODY){_forceRemove(body.firstChild)}nodeIterator=_createIterator(body);while(currentNode=nodeIterator.nextNode()){if(currentNode.nodeType===3&¤tNode===oldNode){continue}if(_sanitizeElements(currentNode)){continue}if(currentNode.content instanceof DocumentFragment){_sanitizeShadowDOM(currentNode.content)}_sanitizeAttributes(currentNode);oldNode=currentNode}if(RETURN_DOM){if(RETURN_DOM_FRAGMENT){returnNode=createDocumentFragment.call(body.ownerDocument);while(body.firstChild){returnNode.appendChild(body.firstChild)}}else{returnNode=body}if(RETURN_DOM_IMPORT){returnNode=importNode.call(originalDocument,returnNode,true)}return returnNode}return WHOLE_DOCUMENT?body.outerHTML:body.innerHTML};DOMPurify.setConfig=function(cfg){_parseConfig(cfg);SET_CONFIG=true};DOMPurify.clearConfig=function(){CONFIG=null;SET_CONFIG=false};DOMPurify.addHook=function(entryPoint,hookFunction){if(typeof hookFunction!=="function"){return}hooks[entryPoint]=hooks[entryPoint]||[];hooks[entryPoint].push(hookFunction)};DOMPurify.removeHook=function(entryPoint){if(hooks[entryPoint]){hooks[entryPoint].pop()}};DOMPurify.removeHooks=function(entryPoint){if(hooks[entryPoint]){hooks[entryPoint]=[]}};DOMPurify.removeAllHooks=function(){hooks={}};return DOMPurify});
|