dompurify 3.4.6 → 3.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE-MPL +373 -0
- package/README.md +19 -2
- package/dist/purify.cjs.d.ts +2 -2
- package/dist/purify.cjs.js +116 -69
- package/dist/purify.cjs.js.map +1 -1
- package/dist/purify.es.d.mts +2 -2
- package/dist/purify.es.mjs +116 -69
- package/dist/purify.es.mjs.map +1 -1
- package/dist/purify.js +116 -69
- package/dist/purify.js.map +1 -1
- package/dist/purify.min.js +2 -2
- package/dist/purify.min.js.map +1 -1
- package/package.json +15 -14
- package/src/config.ts +1 -1
- package/src/purify.ts +141 -66
package/dist/purify.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purify.min.js","sources":["../src/utils.ts","../src/tags.ts","../src/attrs.ts","../src/regexp.ts","../src/purify.ts"],"sourcesContent":[null,null,null,null,null],"names":["entries","Object","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","create","_ref","Reflect","apply","construct","x","func","thisArg","_len","arguments","length","args","Array","_key","Func","_len2","_key2","arrayForEach","unapply","prototype","forEach","arrayLastIndexOf","lastIndexOf","arrayPop","pop","arrayPush","push","arraySplice","splice","arrayIsArray","isArray","stringToLowerCase","String","toLowerCase","stringToString","toString","stringMatch","match","stringReplace","replace","stringIndexOf","indexOf","stringTrim","trim","numberToString","Number","booleanToString","Boolean","bigintToString","BigInt","symbolToString","Symbol","objectHasOwnProperty","hasOwnProperty","objectToString","regExpTest","RegExp","test","typeErrorCreate","TypeError","_len4","_key4","lastIndex","_len3","_key3","addToSet","set","array","transformCaseFunc","l","element","lcElement","cleanArray","index","clone","object","newObject","_ref2","_ref3","_slicedToArray","property","value","constructor","lookupGetter","prop","desc","get","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","NODE_TYPE","getGlobal","window","purify","createDOMPurify","undefined","DOMPurify","root","version","VERSION","removed","document","nodeType","Element","isSupported","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","DOMParser","trustedTypes","ElementPrototype","cloneNode","remove","getNextSibling","getChildNodes","getParentNode","getShadowRoot","getAttributes","getNodeType","getNodeName","template","createElement","content","ownerDocument","trustedTypesPolicy","emptyHTML","_document","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","hooks","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","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","EXTRA_ELEMENT_HANDLING","tagCheck","attributeCheck","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","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","CONFIG","formElement","isRegexOrFunction","testValue","Function","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","_unused","isRegex","ALLOWED_URI_REGEXP","customElementHandling","ADD_TAGS","ADD_ATTR","ADD_FORBID_CONTENTS","table","tbody","TRUSTED_TYPES_POLICY","createHTML","createScriptURL","purifyHostElement","createPolicy","suffix","ATTR_NAME","hasAttribute","getAttribute","policyName","scriptUrl","_","console","warn","_createTrustedTypesPolicy","ALL_SVG_TAGS","ALL_MATHML_TAGS","_forceRemove","node","removeChild","_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","_scrubTemplateExpressions","normalize","walker","currentNode","nextNode","data","expr","_isClobbered","realTagName","nodeName","textContent","attributes","namespaceURI","hasChildNodes","_isDocumentFragment","_isNode","_executeHooks","hook","_sanitizeElements","tagName","allowedTags","firstElementChild","_isBasicCustomElement","parentNode","i","childClone","parent","parentTagName","_checkValidNamespace","_isValidAttribute","lcTag","lcName","nameIsPermitted","RESERVED_CUSTOM_ELEMENT_NAMES","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","forceKeepAttr","attr","initValue","getAttributeType","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","_sanitizeAttachedShadowRoots","sr","shadowRoot","snapshot","child","sanitize","importedNode","returnNode","valueAsRecord","valueToString","stringified","stringifyValue","nn","appendChild","firstChild","nodeIterator","shadowroot","shadowrootmode","serializedHTML","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","tag","addHook","entryPoint","hookFunction","removeHook","removeHooks","removeAllHooks"],"mappings":";4sCAAA,MACEA,EAKEC,OALFD,QACAE,EAIED,OAJFC,eACAC,EAGEF,OAHFE,SACAC,EAEEH,OAFFG,eACAC,EACEJ,OADFI,yBAGF,IAAMC,EAAyBL,OAAzBK,OAAQC,EAAiBN,OAAjBM,KAAMC,EAAWP,OAAXO,OACpBC,EAA8C,oBAAZC,SAA2BA,QAAvDC,EAAKF,EAALE,MAAOC,EAASH,EAATG,UAERN,IACHA,EAAS,SAAaO,GACpB,OAAOA,CACT,GAGGN,IACHA,EAAO,SAAaM,GAClB,OAAOA,CACT,GAGGF,IACHA,EAAQ,SACNG,EACAC,GACc,IAAA,IAAAC,EAAAC,UAAAC,OAAXC,MAAWC,MAAAJ,EAAA,EAAAA,OAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAXF,EAAWE,EAAA,GAAAJ,UAAAI,GAEd,OAAOP,EAAKH,MAAMI,EAASI,EAC7B,GAGGP,IACHA,EAAY,SAAaU,GAA+C,IAAA,IAAAC,EAAAN,UAAAC,OAAXC,MAAWC,MAAAG,EAAA,EAAAA,OAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAXL,EAAWK,EAAA,GAAAP,UAAAO,GACtE,OAAO,IAAIF,KAAQH,EACrB,GAGF,MAAMM,EAAeC,EAAQN,MAAMO,UAAUC,SAEvCC,EAAmBH,EAAQN,MAAMO,UAAUG,aAC3CC,EAAWL,EAAQN,MAAMO,UAAUK,KACnCC,EAAYP,EAAQN,MAAMO,UAAUO,MAEpCC,EAAcT,EAAQN,MAAMO,UAAUS,QACtCC,EAAejB,MAAMkB,QAErBC,EAAoBb,EAAQc,OAAOb,UAAUc,aAC7CC,EAAiBhB,EAAQc,OAAOb,UAAUgB,UAC1CC,EAAclB,EAAQc,OAAOb,UAAUkB,OACvCC,EAAgBpB,EAAQc,OAAOb,UAAUoB,SACzCC,EAAgBtB,EAAQc,OAAOb,UAAUsB,SACzCC,EAAaxB,EAAQc,OAAOb,UAAUwB,MAEtCC,EAAiB1B,EAAQ2B,OAAO1B,UAAUgB,UAC1CW,EAAkB5B,EAAQ6B,QAAQ5B,UAAUgB,UAC5Ca,EACc,oBAAXC,OAAyB,KAAO/B,EAAQ+B,OAAO9B,UAAUgB,UAC5De,EACc,oBAAXC,OAAyB,KAAOjC,EAAQiC,OAAOhC,UAAUgB,UAE5DiB,EAAuBlC,EAAQzB,OAAO0B,UAAUkC,gBAChDC,EAAiBpC,EAAQzB,OAAO0B,UAAUgB,UAE1CoB,EAAarC,EAAQsC,OAAOrC,UAAUsC,MAEtCC,GA2BJ5C,EA3BkC6C,UA6B3B,WAAA,IAAA,IAAAC,EAAAnD,UAAAC,OAAIC,EAAW,IAAAC,MAAAgD,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAXlD,EAAWkD,GAAApD,UAAAoD,GAAA,OAAQzD,EAAUU,EAAMH,EAAK,GAHrD,IACEG,EAnBF,SAASI,EACPZ,GAEA,OAAO,SAACC,GACFA,aAAmBiD,SACrBjD,EAAQuD,UAAY,GACrB,IAAA,IAAAC,EAAAtD,UAAAC,OAHsBC,MAAWC,MAAAmD,EAAA,EAAAA,OAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAXrD,EAAWqD,EAAA,GAAAvD,UAAAuD,GAKlC,OAAO7D,EAAMG,EAAMC,EAASI,EAC9B,CACF,CAsBA,SAASsD,EACPC,EACAC,GACyE,IAAzEC,yDAAwDrC,EASxD,GAPIrC,GAIFA,EAAewE,EAAK,OAGjBrC,EAAasC,GAChB,OAAOD,EAGT,IAAIG,EAAIF,EAAMzD,OACd,KAAO2D,KAAK,CACV,IAAIC,EAAUH,EAAME,GAEpB,GAAuB,iBAAZC,EAAsB,CAC/B,MAAMC,EAAYH,EAAkBE,GAEhCC,IAAcD,IAEX3E,EAASwE,KACXA,EAAoBE,GAAKE,GAG5BD,EAAUC,EAEd,CAEAL,EAAII,IAAqB,CAC3B,CAEA,OAAOJ,CACT,CAQA,SAASM,EAAcL,GACrB,IAAK,IAAIM,EAAQ,EAAGA,EAAQN,EAAMzD,OAAQ+D,IAAS,CACzBrB,EAAqBe,EAAOM,KAGlDN,EAAMM,GAAS,KAEnB,CAEA,OAAON,CACT,CAQA,SAASO,EAAqCC,GAC5C,MAAMC,EAAY5E,EAAO,MAEzB,IAAA,MAAA6E,KAAgCrF,EAAQmF,GAAS,CAAA,IAAAG,EAAAC,EAAAF,EAAA,GAAA,MAArCG,EAAQF,EAAA,GAAEG,EAAKH,EAAA,GACD1B,EAAqBuB,EAAQK,KAG/CnD,EAAaoD,GACfL,EAAUI,GAAYR,EAAWS,GAEjCA,GACiB,iBAAVA,GACPA,EAAMC,cAAgBzF,OAEtBmF,EAAUI,GAAYN,EAAMO,GAE5BL,EAAUI,GAAYC,EAG5B,CAEA,OAAOL,CACT,CAmEA,SAASO,EACPR,EACAS,GAEA,KAAkB,OAAXT,GAAiB,CACtB,MAAMU,EAAOxF,EAAyB8E,EAAQS,GAE9C,GAAIC,EAAM,CACR,GAAIA,EAAKC,IACP,OAAOpE,EAAQmE,EAAKC,KAGtB,GAA0B,mBAAfD,EAAKJ,MACd,OAAO/D,EAAQmE,EAAKJ,MAExB,CAEAN,EAAS/E,EAAe+E,EAC1B,CAMA,OAJA,WACE,OAAO,IACT,CAGF,CC1RO,MAAMY,EAAOzF,EAAO,CACzB,IACA,OACA,UACA,UACA,OACA,UACA,QACA,QACA,IACA,MACA,MACA,MACA,QACA,aACA,OACA,KACA,SACA,SACA,UACA,SACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,QAGW0F,EAAM1F,EAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,eACA,cACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,YACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,UAGW2F,EAAa3F,EAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,iBAOW4F,EAAgB5F,EAAO,CAClC,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,QAGW6F,EAAS7F,EAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,gBAKW8F,EAAmB9F,EAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,SAGW+F,EAAO/F,EAAO,CAAC,UC1RfyF,EAAOzF,EAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,UACA,aACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,cACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,QACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,OACA,UACA,cACA,cACA,UACA,gBACA,sBACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,OACA,UAGW0F,EAAM1F,EAAO,CACxB,gBACA,aACA,WACA,qBACA,YACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,WACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,YACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,YACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,QACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,cACA,UACA,UACA,YACA,mBACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,eAGW6F,EAAS7F,EAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,cACA,cACA,gBACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SACA,gBACA,SACA,SACA,iBACA,YACA,WACA,cACA,UACA,UACA,gBACA,WACA,WACA,OACA,WACA,WACA,aACA,UACA,SACA,SACA,cACA,gBACA,uBACA,YACA,YACA,aACA,WACA,iBACA,iBACA,YACA,UACA,QACA,UAGWgG,EAAMhG,EAAO,CACxB,aACA,SACA,cACA,YACA,gBCtXWiG,EAAgBhG,EAAK,yBACrBiG,EAAWjG,EAAK,yBAChBkG,EAAclG,EAAK,eACnBmG,EAAYnG,EAAK,gCACjBoG,GAAYpG,EAAK,kBACjBqG,GAAiBrG,EAC5B,oGAEWsG,GAAoBtG,EAAK,yBACzBuG,GAAkBvG,EAC7B,+DAEWwG,GAAexG,EAAK,WACpByG,GAAiBzG,EAAK,4BC0B7B0G,GACK,EADLA,GAGE,EAHFA,GAOoB,EAPpBA,GAQK,EARLA,GASM,EATNA,GAWc,GAIdC,GAAY,WAChB,MAAyB,oBAAXC,OAAyB,KAAOA,MAChD,EAogEA,IAAAC,GAl8DA,SAASC,IAAgD,IAAhCF,EAAAlG,UAAAC,OAAA,QAAAoG,IAAArG,UAAA,GAAAA,UAAA,GAAqBiG,KAC5C,MAAMK,EAAwBC,GAAqBH,EAAgBG,GAMnE,GAJAD,EAAUE,QAAUC,QAEpBH,EAAUI,QAAU,IAGjBR,IACAA,EAAOS,UACRT,EAAOS,SAASC,WAAaZ,KAC5BE,EAAOW,QAMR,OAFAP,EAAUQ,aAAc,EAEjBR,EAGT,IAAMK,EAAaT,EAAbS,SAEN,MAAMI,EAAmBJ,EACnBK,EACJD,EAAiBC,cAWfd,EATFe,uBACAC,EAQEhB,EARFgB,oBACAC,EAOEjB,EAPFiB,KACAN,EAMEX,EANFW,QACAO,EAKElB,EALFkB,WAAUC,EAKRnB,EAJFoB,kBAAY,IAAAD,IAAGnB,EAAOoB,cAAiBpB,EAAeqB,iBAIpDrB,EAHFsB,sBACAC,EAEEvB,EAFFuB,UACAC,EACExB,EADFwB,aAGIC,GAAmBd,EAAQnG,UAE3BkH,GAAYlD,EAAaiD,GAAkB,aAC3CE,GAASnD,EAAaiD,GAAkB,UACxCG,GAAiBpD,EAAaiD,GAAkB,eAChDI,GAAgBrD,EAAaiD,GAAkB,cAC/CK,GAAgBtD,EAAaiD,GAAkB,cAC/CM,GAAgBvD,EAAaiD,GAAkB,cAC/CO,GAAgBxD,EAAaiD,GAAkB,cAC/CQ,GACJhB,GAAQA,EAAKzG,UAAYgE,EAAayC,EAAKzG,UAAW,YAAc,KAChE0H,GACJjB,GAAQA,EAAKzG,UAAYgE,EAAayC,EAAKzG,UAAW,YAAc,KAQtE,GAAmC,mBAAxBwG,EAAoC,CAC7C,MAAMmB,EAAW1B,EAAS2B,cAAc,YACpCD,EAASE,SAAWF,EAASE,QAAQC,gBACvC7B,EAAW0B,EAASE,QAAQC,cAEhC,CAEA,IAAIC,GACAC,GAAY,GAEhB,MAAAC,GAKIhC,EAJFiC,GAAcD,GAAdC,eACAC,GAAkBF,GAAlBE,mBACAC,GAAsBH,GAAtBG,uBACAC,GAAoBJ,GAApBI,qBAEMC,GAAejC,EAAfiC,WAER,IAAIC,GAxFG,CACLC,wBAAyB,GACzBC,sBAAuB,GACvBC,uBAAwB,GACxBC,yBAA0B,GAC1BC,uBAAwB,GACxBC,wBAAyB,GACzBC,sBAAuB,GACvBC,oBAAqB,GACrBC,uBAAwB,IAoF1BpD,EAAUQ,YACW,mBAAZ/H,GACkB,mBAAlBiJ,IACPY,SACsCvC,IAAtCuC,GAAee,mBAEjB,MACErE,GAQEsE,EAPFrE,GAOEqE,EANFpE,GAMEoE,EALFnE,GAKEmE,EAJFlE,GAIEkE,GAHFhE,GAGEgE,GAFF/D,GAEE+D,GADF7D,GACE6D,GAEJ,IAAMjE,GAAmBiE,GAQrBC,GAAe,KACnB,MAAMC,GAAuBtG,EAAS,CAAA,EAAI,IACrCuG,KACAA,KACAA,KACAA,KACAA,IAIL,IAAIC,GAAe,KACnB,MAAMC,GAAuBzG,EAAS,CAAA,EAAI,IACrC0G,KACAA,KACAA,KACAA,IASL,IAAIC,GAA0BnL,OAAOM,KACnCC,EAAO,KAAM,CACX6K,aAAc,CACZC,UAAU,EACVC,cAAc,EACdC,YAAY,EACZ/F,MAAO,MAETgG,mBAAoB,CAClBH,UAAU,EACVC,cAAc,EACdC,YAAY,EACZ/F,MAAO,MAETiG,+BAAgC,CAC9BJ,UAAU,EACVC,cAAc,EACdC,YAAY,EACZ/F,OAAO,MAMTkG,GAAc,KAGdC,GAAc,KAGlB,MAAMC,GAAyB5L,OAAOM,KACpCC,EAAO,KAAM,CACXsL,SAAU,CACRR,UAAU,EACVC,cAAc,EACdC,YAAY,EACZ/F,MAAO,MAETsG,eAAgB,CACdT,UAAU,EACVC,cAAc,EACdC,YAAY,EACZ/F,MAAO,SAMb,IAAIuG,IAAkB,EAGlBC,IAAkB,EAGlBC,IAA0B,EAI1BC,IAA2B,EAK3BC,IAAqB,EAKrBC,IAAe,EAGfC,IAAiB,EAGjBC,IAAa,EAIbC,IAAa,EAMbC,IAAa,EAIbC,IAAsB,EAItBC,IAAsB,EAKtBC,IAAe,EAefC,IAAuB,EAC3B,MAAMC,GAA8B,gBAGpC,IAAIC,IAAe,EAIfC,IAAW,EAGXC,GAA0C,CAAA,EAG1CC,GAAkB,KACtB,MAAMC,GAA0B1I,EAAS,CAAA,EAAI,CAC3C,iBACA,QACA,WACA,OACA,gBACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,QACA,UACA,WACA,WACA,YACA,SACA,QACA,MACA,WACA,QACA,QACA,QACA,QAIF,IAAI2I,GAAgB,KACpB,MAAMC,GAAwB5I,EAAS,CAAA,EAAI,CACzC,QACA,QACA,MACA,SACA,QACA,UAIF,IAAI6I,GAAsB,KAC1B,MAAMC,GAA8B9I,EAAS,GAAI,CAC/C,MACA,QACA,MACA,KACA,QACA,OACA,UACA,cACA,OACA,UACA,QACA,QACA,QACA,UAGI+I,GAAmB,qCACnBC,GAAgB,6BAChBC,GAAiB,+BAEvB,IAAIC,GAAYD,GACZE,IAAiB,EAGjBC,GAAqB,KACzB,MAAMC,GAA6BrJ,EACjC,GACA,CAAC+I,GAAkBC,GAAeC,IAClChL,GAGF,IAAIqL,GAAiCtJ,EAAS,CAAA,EAAI,CAChD,KACA,KACA,KACA,KACA,UAGEuJ,GAA0BvJ,EAAS,GAAI,CAAC,mBAM5C,MAAMwJ,GAA+BxJ,EAAS,CAAA,EAAI,CAChD,QACA,QACA,OACA,IACA,WAIF,IAAIyJ,GAAmD,KACvD,MAAMC,GAA+B,CAAC,wBAAyB,aAE/D,IAAIvJ,GAA2D,KAG3DwJ,GAAwB,KAK5B,MAAMC,GAAczG,EAAS2B,cAAc,QAErC+E,GAAoB,SACxBC,GAEA,OAAOA,aAAqBvK,QAAUuK,aAAqBC,QAC7D,EAQMC,GAAe,WAA0B,IAAhBC,EAAAzN,UAAAC,OAAA,QAAAoG,IAAArG,UAAA,GAAAA,UAAA,GAAc,CAAA,EAC3C,GAAImN,IAAUA,KAAWM,EACvB,OAIGA,GAAsB,iBAARA,IACjBA,EAAM,CAAA,GAIRA,EAAMxJ,EAAMwJ,GAEZR,QAEEC,GAA6BlL,QAAQyL,EAAIR,mBAtCX,YAwC1BQ,EAAIR,kBAGVtJ,GACwB,0BAAtBsJ,GACIxL,EACAH,EAGNuI,GACElH,EAAqB8K,EAAK,iBAC1BrM,EAAaqM,EAAI5D,cACbrG,EAAS,CAAA,EAAIiK,EAAI5D,aAAclG,IAC/BmG,GACNE,GACErH,EAAqB8K,EAAK,iBAC1BrM,EAAaqM,EAAIzD,cACbxG,EAAS,CAAA,EAAIiK,EAAIzD,aAAcrG,IAC/BsG,GACN2C,GACEjK,EAAqB8K,EAAK,uBAC1BrM,EAAaqM,EAAIb,oBACbpJ,EAAS,CAAA,EAAIiK,EAAIb,mBAAoBnL,GACrCoL,GACNR,GACE1J,EAAqB8K,EAAK,sBAC1BrM,EAAaqM,EAAIC,mBACblK,EACES,EAAMqI,IACNmB,EAAIC,kBACJ/J,IAEF2I,GACNH,GACExJ,EAAqB8K,EAAK,sBAC1BrM,EAAaqM,EAAIE,mBACbnK,EACES,EAAMmI,IACNqB,EAAIE,kBACJhK,IAEFyI,GACNH,GACEtJ,EAAqB8K,EAAK,oBAC1BrM,EAAaqM,EAAIxB,iBACbzI,EAAS,CAAA,EAAIiK,EAAIxB,gBAAiBtI,IAClCuI,GACNxB,GACE/H,EAAqB8K,EAAK,gBAAkBrM,EAAaqM,EAAI/C,aACzDlH,EAAS,CAAA,EAAIiK,EAAI/C,YAAa/G,IAC9BM,EAAM,IACZ0G,GACEhI,EAAqB8K,EAAK,gBAAkBrM,EAAaqM,EAAI9C,aACzDnH,EAAS,CAAA,EAAIiK,EAAI9C,YAAahH,IAC9BM,EAAM,IACZ+H,KAAerJ,EAAqB8K,EAAK,kBACrCA,EAAIzB,cAA4C,iBAArByB,EAAIzB,aAC7B/H,EAAMwJ,EAAIzB,cACVyB,EAAIzB,cAGVjB,IAA0C,IAAxB0C,EAAI1C,gBACtBC,IAA0C,IAAxByC,EAAIzC,gBACtBC,GAA0BwC,EAAIxC,0BAA2B,EACzDC,IAA4D,IAAjCuC,EAAIvC,yBAC/BC,GAAqBsC,EAAItC,qBAAsB,EAC/CC,IAAoC,IAArBqC,EAAIrC,aACnBC,GAAiBoC,EAAIpC,iBAAkB,EACvCG,GAAaiC,EAAIjC,aAAc,EAC/BC,GAAsBgC,EAAIhC,sBAAuB,EACjDC,GAAsB+B,EAAI/B,sBAAuB,EACjDH,GAAakC,EAAIlC,aAAc,EAC/BI,IAAoC,IAArB8B,EAAI9B,aACnBC,GAAuB6B,EAAI7B,uBAAwB,EACnDE,IAAoC,IAArB2B,EAAI3B,aACnBC,GAAW0B,EAAI1B,WAAY,EAC3BpG,GJpTJ,SAAiBnB,GACf,IAEE,OADA1B,EAAW0B,EAAiB,KACrB,CACT,CAAE,MAAAoJ,GACA,OAAO,CACT,CACF,CI6SqBC,CAAQJ,EAAIK,oBACzBL,EAAIK,mBACJlE,GAEJ8C,GAC2B,iBAAlBe,EAAIf,UAAyBe,EAAIf,UAAYD,GAEtDK,GACEnK,EAAqB8K,EAAK,mCAC1BA,EAAIX,gCAC0C,iBAAvCW,EAAIX,+BACP7I,EAAMwJ,EAAIX,gCACVtJ,EAAS,CAAA,EAAI,CAAC,KAAM,KAAM,KAAM,KAAM,UAE5CuJ,GACEpK,EAAqB8K,EAAK,4BAC1BA,EAAIV,yBACmC,iBAAhCU,EAAIV,wBACP9I,EAAMwJ,EAAIV,yBACVvJ,EAAS,GAAI,CAAC,mBAEpB,MAAMuK,EACJpL,EAAqB8K,EAAK,4BAC1BA,EAAItD,yBACmC,iBAAhCsD,EAAItD,wBACPlG,EAAMwJ,EAAItD,yBACV5K,EAAO,MA6Ib,GA3IA4K,GAA0B5K,EAAO,MAG/BoD,EAAqBoL,EAAuB,iBAC5CV,GAAkBU,EAAsB3D,gBAExCD,GAAwBC,aAAe2D,EAAsB3D,cAI7DzH,EAAqBoL,EAAuB,uBAC5CV,GAAkBU,EAAsBvD,sBAExCL,GAAwBK,mBACtBuD,EAAsBvD,oBAIxB7H,EACEoL,EACA,mCAE8D,kBAAzDA,EAAsBtD,iCAE7BN,GAAwBM,+BACtBsD,EAAsBtD,gCAGtBU,KACFH,IAAkB,GAGhBS,KACFD,IAAa,GAIXQ,KACFnC,GAAerG,EAAS,CAAA,EAAIuG,GAC5BC,GAAezK,EAAO,OACI,IAAtByM,GAAalH,OACftB,EAASqG,GAAcE,GACvBvG,EAASwG,GAAcE,KAGA,IAArB8B,GAAajH,MACfvB,EAASqG,GAAcE,GACvBvG,EAASwG,GAAcE,GACvB1G,EAASwG,GAAcE,KAGO,IAA5B8B,GAAahH,aACfxB,EAASqG,GAAcE,GACvBvG,EAASwG,GAAcE,GACvB1G,EAASwG,GAAcE,KAGG,IAAxB8B,GAAa9G,SACf1B,EAASqG,GAAcE,GACvBvG,EAASwG,GAAcE,GACvB1G,EAASwG,GAAcE,KAM3BU,GAAuBC,SAAW,KAClCD,GAAuBE,eAAiB,KAGpCnI,EAAqB8K,EAAK,cACA,mBAAjBA,EAAIO,SACbpD,GAAuBC,SAAW4C,EAAIO,SAC7B5M,EAAaqM,EAAIO,YACtBnE,KAAiBC,KACnBD,GAAe5F,EAAM4F,KAGvBrG,EAASqG,GAAc4D,EAAIO,SAAUrK,MAIrChB,EAAqB8K,EAAK,cACA,mBAAjBA,EAAIQ,SACbrD,GAAuBE,eAAiB2C,EAAIQ,SACnC7M,EAAaqM,EAAIQ,YACtBjE,KAAiBC,KACnBD,GAAe/F,EAAM+F,KAGvBxG,EAASwG,GAAcyD,EAAIQ,SAAUtK,MAKvChB,EAAqB8K,EAAK,sBAC1BrM,EAAaqM,EAAIC,oBAEjBlK,EAAS6I,GAAqBoB,EAAIC,kBAAmB/J,IAIrDhB,EAAqB8K,EAAK,oBAC1BrM,EAAaqM,EAAIxB,mBAEbA,KAAoBC,KACtBD,GAAkBhI,EAAMgI,KAG1BzI,EAASyI,GAAiBwB,EAAIxB,gBAAiBtI,KAI/ChB,EAAqB8K,EAAK,wBAC1BrM,EAAaqM,EAAIS,uBAEbjC,KAAoBC,KACtBD,GAAkBhI,EAAMgI,KAG1BzI,EAASyI,GAAiBwB,EAAIS,oBAAqBvK,KAIjDmI,KACFjC,GAAa,UAAW,GAItBwB,IACF7H,EAASqG,GAAc,CAAC,OAAQ,OAAQ,SAItCA,GAAasE,QACf3K,EAASqG,GAAc,CAAC,iBACjBa,GAAY0D,OAGjBX,EAAIY,qBAAsB,CAC5B,GAAmD,mBAAxCZ,EAAIY,qBAAqBC,WAClC,MAAMrL,EACJ,+EAIJ,GAAwD,mBAA7CwK,EAAIY,qBAAqBE,gBAClC,MAAMtL,EACJ,oFAKJwF,GAAqBgF,EAAIY,qBAGzB3F,GAAYD,GAAmB6F,WAAW,GAC5C,WAE6BjI,IAAvBoC,KACFA,GA1sB0B,SAChCf,EACA8G,GAEA,GAC0B,iBAAjB9G,GAC8B,mBAA9BA,EAAa+G,aAEpB,OAAO,KAMT,IAAIC,EAAS,KACb,MAAMC,EAAY,wBACdH,GAAqBA,EAAkBI,aAAaD,KACtDD,EAASF,EAAkBK,aAAaF,IAG1C,MAAMG,EAAa,aAAeJ,EAAS,IAAMA,EAAS,IAE1D,IACE,OAAOhH,EAAa+G,aAAaK,EAAY,CAC3CR,WAAWxJ,GACFA,EAETyJ,gBAAgBQ,GACPA,GAGb,CAAE,MAAOC,GAOP,OAHAC,QAAQC,KACN,uBAAyBJ,EAAa,0BAEjC,IACT,CACF,CAkqB6BK,CACnBzH,EACAV,IAKuB,OAAvByB,IAAoD,iBAAdC,KACxCA,GAAYD,GAAmB6F,WAAW,KAM1CjP,GACFA,EAAOoO,GAGTN,GAASM,CACX,EAKM2B,GAAe5L,EAAS,GAAI,IAC7BuG,KACAA,KACAA,IAECsF,GAAkB7L,EAAS,CAAA,EAAI,IAChCuG,KACAA,IAqHCuF,GAAe,SAAUC,GAC7BvO,EAAUsF,EAAUI,QAAS,CAAE7C,QAAS0L,IAExC,IAEEvH,GAAcuH,GAAMC,YAAYD,EAClC,CAAE,MAAOP,GACPnH,GAAO0H,EACT,CACF,EAQME,GAAmB,SAAUC,EAAc7L,GAC/C,IACE7C,EAAUsF,EAAUI,QAAS,CAC3BiJ,UAAW9L,EAAQ+L,iBAAiBF,GACpCG,KAAMhM,GAEV,CAAE,MAAOmL,GACPhO,EAAUsF,EAAUI,QAAS,CAC3BiJ,UAAW,KACXE,KAAMhM,GAEV,CAKA,GAHAA,EAAQiM,gBAAgBJ,GAGX,OAATA,EACF,GAAIlE,IAAcC,GAChB,IACE6D,GAAazL,EACf,CAAE,MAAOmL,GAAI,MAEb,IACEnL,EAAQkM,aAAaL,EAAM,GAC7B,CAAE,MAAOV,GAAI,CAGnB,EAQMgB,GAAgB,SAAUC,GAE9B,IAAIC,EAAM,KACNC,EAAoB,KAExB,GAAI5E,GACF0E,EAAQ,oBAAsBA,MACzB,CAEL,MAAMG,EAAUzO,EAAYsO,EAAO,eACnCE,EAAoBC,GAAWA,EAAQ,EACzC,CAGwB,0BAAtBnD,IACAP,KAAcD,KAGdwD,EACE,iEACAA,EACA,kBAGJ,MAAMI,EAAe5H,GACjBA,GAAmB6F,WAAW2B,GAC9BA,EAKJ,GAAIvD,KAAcD,GAChB,IACEyD,GAAM,IAAIzI,GAAY6I,gBAAgBD,EAAcpD,GACtD,CAAE,MAAO+B,GAAI,CAIf,IAAKkB,IAAQA,EAAIK,gBAAiB,CAChCL,EAAMtH,GAAe4H,eAAe9D,GAAW,WAAY,MAC3D,IACEwD,EAAIK,gBAAgBE,UAAY9D,GAC5BjE,GACA2H,CACN,CAAE,MAAOrB,GACP,CAEJ,CAEA,MAAM0B,EAAOR,EAAIQ,MAAQR,EAAIK,gBAU7B,OARIN,GAASE,GACXO,EAAKC,aACHhK,EAASiK,eAAeT,GACxBO,EAAKG,WAAW,IAAM,MAKtBnE,KAAcD,GACT1D,GAAqB+H,KAC1BZ,EACA7E,GAAiB,OAAS,QAC1B,GAGGA,GAAiB6E,EAAIK,gBAAkBG,CAChD,EAQMK,GAAsB,SAAUxK,GACpC,OAAOsC,GAAmBiI,KACxBvK,EAAKiC,eAAiBjC,EACtBA,EAEAa,EAAW4J,aACT5J,EAAW6J,aACX7J,EAAW8J,UACX9J,EAAW+J,4BACX/J,EAAWgK,mBACb,KAEJ,EAqBMC,GAA4B,SAAU9B,GAC1CA,EAAK+B,YACL,MAAMC,EAAS1I,GAAmBiI,KAChCvB,EAAK/G,eAAiB+G,EACtBA,EAEAnI,EAAW8J,UACT9J,EAAW6J,aACX7J,EAAWgK,mBACXhK,EAAW+J,4BACb,MAGF,IAAIK,EAAcD,EAAOE,WACzB,KAAOD,GAAa,CAClB,IAAIE,EAAOF,EAAYE,KACvBlR,EAAa,CAAC8E,GAAeC,GAAUC,IAAemM,IACpDD,EAAO7P,EAAc6P,EAAMC,EAAM,OAEnCH,EAAYE,KAAOA,EACnBF,EAAcD,EAAOE,UACvB,CACF,EAwCMG,GAAe,SAAU/N,GAI7B,MAAMgO,EAAczJ,GAAcA,GAAYvE,GAAW,KACzD,MAA2B,iBAAhBgO,IAI4B,SAAnClO,GAAkBkO,KAKQ,iBAArBhO,EAAQiO,UACgB,iBAAxBjO,EAAQkO,aACgB,mBAAxBlO,EAAQ2L,aAMf3L,EAAQmO,aAAe9J,GAAcrE,IACF,mBAA5BA,EAAQiM,iBACiB,mBAAzBjM,EAAQkM,cACiB,iBAAzBlM,EAAQoO,cACiB,mBAAzBpO,EAAQ8M,cACkB,mBAA1B9M,EAAQqO,eAYfrO,EAAQgN,aAAe9I,GAAclE,IAEzC,EAqBMsO,GAAsB,SAAU3N,GACpC,IAAK2D,IAAgC,iBAAV3D,GAAgC,OAAVA,EAC/C,OAAO,EAGT,IACE,OAAO2D,GAAY3D,KAAmBwB,EACxC,CAAE,MAAOgJ,GACP,OAAO,CACT,CACF,EAmBMoD,GAAU,SAAU5N,GACxB,IAAK2D,IAAgC,iBAAV3D,GAAgC,OAAVA,EAC/C,OAAO,EAGT,IACE,MAAqC,iBAAvB2D,GAAY3D,EAC5B,CAAE,MAAOwK,GACP,OAAO,CACT,CACF,EAEA,SAASqD,GACPpJ,EACAuI,EACAE,GAEAlR,EAAayI,EAAQqJ,IACnBA,EAAKxB,KAAKxK,EAAWkL,EAAaE,EAAMvE,KAE5C,CAWA,MAAMoF,GAAoB,SAAUf,GAClC,IAAIjJ,EAAU,KAMd,GAHA8J,GAAcpJ,GAAMK,uBAAwBkI,EAAa,MAGrDI,GAAaJ,GAEf,OADAlC,GAAakC,IACN,EAIT,MAAMgB,EAAU7O,GAAkB6N,EAAYM,UAS9C,GANAO,GAAcpJ,GAAMQ,oBAAqB+H,EAAa,CACpDgB,UACAC,YAAa5I,KAKbuB,IACAoG,EAAYU,kBACXE,GAAQZ,EAAYkB,oBACrB5P,EAAW,WAAY0O,EAAYf,YACnC3N,EAAW,WAAY0O,EAAYO,aAGnC,OADAzC,GAAakC,IACN,EAIT,GACEpG,IACAoG,EAAYS,eAAiBxF,IACjB,UAAZ+F,GACAJ,GAAQZ,EAAYkB,mBAGpB,OADApD,GAAakC,IACN,EAIT,GAAIA,EAAY5K,WAAaZ,GAE3B,OADAsJ,GAAakC,IACN,EAIT,GACEpG,IACAoG,EAAY5K,WAAaZ,IACzBlD,EAAW,UAAW0O,EAAYE,MAGlC,OADApC,GAAakC,IACN,EAIT,GACE9G,GAAY8H,MAEV5H,GAAuBC,oBAAoB0C,UAC3C3C,GAAuBC,SAAS2H,MAE/B3I,GAAa2I,GAChB,CAEA,IAAK9H,GAAY8H,IAAYG,GAAsBH,GAAU,CAC3D,GACErI,GAAwBC,wBAAwBrH,QAChDD,EAAWqH,GAAwBC,aAAcoI,GAEjD,OAAO,EAGT,GACErI,GAAwBC,wBAAwBmD,UAChDpD,GAAwBC,aAAaoI,GAErC,OAAO,CAEX,CAGA,GAAI1G,KAAiBG,GAAgBuG,GAAU,CAC7C,MAAMI,EAAa5K,GAAcwJ,IAAgBA,EAAYoB,WACvD/B,EAAa9I,GAAcyJ,IAAgBA,EAAYX,WAE7D,GAAIA,GAAc+B,EAAY,CAG5B,IAAK,IAAIC,EAFUhC,EAAW5Q,OAEJ,EAAG4S,GAAK,IAAKA,EAAG,CACxC,MAAMC,EAAalL,GAAUiJ,EAAWgC,IAAI,GAC5CD,EAAWjC,aAAamC,EAAYhL,GAAe0J,GACrD,CACF,CACF,CAGA,OADAlC,GAAakC,IACN,CACT,CASA,QADWrJ,GAAcA,GAAYqJ,GAAeA,EAAY5K,YACrDZ,IApjBgB,SAAUnC,GACrC,IAAIkP,EAAS/K,GAAcnE,GAItBkP,GAAWA,EAAOP,UACrBO,EAAS,CACPd,aAAcvF,GACd8F,QAAS,aAIb,MAAMA,EAAUlR,EAAkBuC,EAAQ2O,SACpCQ,EAAgB1R,EAAkByR,EAAOP,SAE/C,QAAK5F,GAAmB/I,EAAQoO,gBAI5BpO,EAAQoO,eAAiBzF,GAIvBuG,EAAOd,eAAiBxF,GACP,QAAZ+F,EAMLO,EAAOd,eAAiB1F,GAEZ,QAAZiG,IACmB,mBAAlBQ,GACClG,GAA+BkG,IAM9B1Q,QAAQ8M,GAAaoD,IAG1B3O,EAAQoO,eAAiB1F,GAIvBwG,EAAOd,eAAiBxF,GACP,SAAZ+F,EAKLO,EAAOd,eAAiBzF,GACP,SAAZgG,GAAsBzF,GAAwBiG,GAKhD1Q,QAAQ+M,GAAgBmD,IAG7B3O,EAAQoO,eAAiBxF,KAKzBsG,EAAOd,eAAiBzF,KACvBO,GAAwBiG,OAMzBD,EAAOd,eAAiB1F,KACvBO,GAA+BkG,MAQ/B3D,GAAgBmD,KAChBxF,GAA6BwF,KAAapD,GAAaoD,MAMpC,0BAAtBvF,KACAL,GAAmB/I,EAAQoO,eAU/B,CA+cmCgB,CAAqBzB,MAOvC,aAAZgB,GACa,YAAZA,GACY,aAAZA,IACF1P,EAAW,8BAA+B0O,EAAYf,aAOpDtF,IAAsBqG,EAAY5K,WAAaZ,KAEjDuC,EAAUiJ,EAAYO,YAEtBvR,EAAa,CAAC8E,GAAeC,GAAUC,IAAemM,IACpDpJ,EAAU1G,EAAc0G,EAASoJ,EAAM,OAGrCH,EAAYO,cAAgBxJ,IAC9BvH,EAAUsF,EAAUI,QAAS,CAAE7C,QAAS2N,EAAY5J,cACpD4J,EAAYO,YAAcxJ,IAK9B8J,GAAcpJ,GAAME,sBAAuBqI,EAAa,OAEjD,IAjCLlC,GAAakC,IACN,EAiCX,EAWM0B,GAAoB,SACxBC,EACAC,EACA5O,GAGA,GAAImG,GAAYyI,GACd,OAAO,EAIT,GACEzH,KACY,OAAXyH,GAA8B,SAAXA,KACnB5O,KAASmC,GAAYnC,KAAS4I,IAE/B,OAAO,EAGT,MAAMiG,EACJrJ,GAAaoJ,IACZxI,GAAuBE,0BAA0ByC,UAChD3C,GAAuBE,eAAesI,EAAQD,GAMlD,GACEnI,KACCL,GAAYyI,IACbtQ,EAAW2C,GAAW2N,SAGjB,GAAIrI,IAAmBjI,EAAW4C,GAAW0N,SAG7C,IAAKC,GAAmB1I,GAAYyI,IACzC,KAIGT,GAAsBQ,KACnBhJ,GAAwBC,wBAAwBrH,QAChDD,EAAWqH,GAAwBC,aAAc+I,IAChDhJ,GAAwBC,wBAAwBmD,UAC/CpD,GAAwBC,aAAa+I,MACvChJ,GAAwBK,8BAA8BzH,QACtDD,EAAWqH,GAAwBK,mBAAoB4I,IACtDjJ,GAAwBK,8BAA8B+C,UACrDpD,GAAwBK,mBAAmB4I,EAAQD,KAG7C,OAAXC,GACCjJ,GAAwBM,iCACtBN,GAAwBC,wBAAwBrH,QAChDD,EAAWqH,GAAwBC,aAAc5F,IAChD2F,GAAwBC,wBAAwBmD,UAC/CpD,GAAwBC,aAAa5F,KAK3C,OAAO,OAGJ,GAAI6H,GAAoB+G,SAIxB,GACLtQ,EAAW6C,GAAgB9D,EAAc2C,EAAOqB,GAAiB,WAK5D,GACO,QAAXuN,GAA+B,eAAXA,GAAsC,SAAXA,GACtC,WAAVD,GACkC,IAAlCpR,EAAcyC,EAAO,WACrB2H,GAAcgH,IAMT,GACLlI,KACCnI,EAAW8C,GAAmB/D,EAAc2C,EAAOqB,GAAiB,WAIhE,GAAIrB,EACT,OAAO,OAMT,OAAO,CACT,EAKM8O,GAAgC9P,EAAS,GAAI,CACjD,iBACA,gBACA,YACA,mBACA,iBACA,gBACA,gBACA,kBAWImP,GAAwB,SAAUH,GACtC,OACGc,GAA8BhS,EAAkBkR,KACjD1P,EAAWiD,GAAgByM,EAE/B,EAYMe,GAAsB,SAAU/B,GAEpCa,GAAcpJ,GAAMI,yBAA0BmI,EAAa,MAE3D,MAAQQ,EAAeR,EAAfQ,WAGR,IAAKA,GAAcJ,GAAaJ,GAC9B,OAGF,MAAMgC,EAAY,CAChBC,SAAU,GACVC,UAAW,GACXC,UAAU,EACVC,kBAAmB5J,GACnB6J,mBAAexN,GAEjB,IAAIzC,EAAIoO,EAAW/R,OAGnB,KAAO2D,KAAK,CACV,MAAMkQ,EAAO9B,EAAWpO,GAChB8L,EAAyCoE,EAAzCpE,KAAMuC,EAAmC6B,EAAnC7B,aAAqByB,EAAcI,EAArBtP,MACtB4O,EAASzP,GAAkB+L,GAE3BqE,EAAYL,EAClB,IAAIlP,EAAiB,UAATkL,EAAmBqE,EAAY9R,EAAW8R,GA2BtD,GAxBAP,EAAUC,SAAWL,EACrBI,EAAUE,UAAYlP,EACtBgP,EAAUG,UAAW,EACrBH,EAAUK,mBAAgBxN,EAC1BgM,GAAcpJ,GAAMO,sBAAuBgI,EAAagC,GACxDhP,EAAQgP,EAAUE,WAMhB9H,IACY,OAAXwH,GAA8B,SAAXA,GACkC,IAAtDrR,EAAcyC,EAAOqH,MAGrB4D,GAAiBC,EAAM8B,GAEvBhN,EAAQqH,GAA8BrH,GAOtC4G,IACAtI,EACE,qFACA0B,GAEF,CACAiL,GAAiBC,EAAM8B,GACvB,QACF,CAGA,GAAe,kBAAX4B,GAA8BzR,EAAY6C,EAAO,QAAS,CAC5DiL,GAAiBC,EAAM8B,GACvB,QACF,CAGA,GAAIgC,EAAUK,cACZ,SAIF,IAAKL,EAAUG,SAAU,CACvBlE,GAAiBC,EAAM8B,GACvB,QACF,CAGA,IAAKtG,IAA4BpI,EAAW,OAAQ0B,GAAQ,CAC1DiL,GAAiBC,EAAM8B,GACvB,QACF,CAGIrG,IACF3K,EAAa,CAAC8E,GAAeC,GAAUC,IAAemM,IACpDnN,EAAQ3C,EAAc2C,EAAOmN,EAAM,OAKvC,MAAMwB,EAAQxP,GAAkB6N,EAAYM,UAC5C,GAAKoB,GAAkBC,EAAOC,EAAQ5O,GAAtC,CAMA,GACEiE,IACwB,iBAAjBf,GACkC,mBAAlCA,EAAasM,iBAEpB,GAAI/B,QAGF,OAAQvK,EAAasM,iBAAiBb,EAAOC,IAC3C,IAAK,cACH5O,EAAQiE,GAAmB6F,WAAW9J,GACtC,MAGF,IAAK,mBACHA,EAAQiE,GAAmB8F,gBAAgB/J,GAYnD,GAAIA,IAAUuP,EACZ,IACM9B,EACFT,EAAYyC,eAAehC,EAAcvC,EAAMlL,GAG/CgN,EAAYzB,aAAaL,EAAMlL,GAG7BoN,GAAaJ,GACflC,GAAakC,GAEb1Q,EAASwF,EAAUI,QAEvB,CAAE,MAAOsI,GACPS,GAAiBC,EAAM8B,EACzB,CA9CF,MAFE/B,GAAiBC,EAAM8B,EAkD3B,CAGAa,GAAcpJ,GAAMC,wBAAyBsI,EAAa,KAC5D,EAOM0C,GAAqB,SAAUC,GACnC,IAAIC,EAAa,KACjB,MAAMC,EAAiBtD,GAAoBoD,GAK3C,IAFA9B,GAAcpJ,GAAMM,wBAAyB4K,EAAU,MAE/CC,EAAaC,EAAe5C,YAElCY,GAAcpJ,GAAMS,uBAAwB0K,EAAY,MAGxD7B,GAAkB6B,GAGlBb,GAAoBa,GAMhBjC,GAAoBiC,EAAW7L,UACjC2L,GAAmBE,EAAW7L,SAKlC8J,GAAcpJ,GAAMG,uBAAwB+K,EAAU,KACxD,EAgCMG,GAA+B,SAAU/N,GAG7C,IAFiB4B,GAAcA,GAAY5B,GAASA,EAAaK,YAEhDZ,GAAmB,CAClC,MAAMuO,EAAKtM,GACPA,GAAc1B,GACbA,EAAiBiO,WAQlBrC,GAAoBoC,KAGtBD,GAA6BC,GAC7BL,GAAmBK,GAEvB,CAMA,MAAM1D,EAAa9I,GACfA,GAAcxB,GACbA,EAAiBsK,WACtB,IAAKA,EACH,OAGF,MAAM4D,EAAmB,GACzBjU,EAAaqQ,EAAa6D,IACxB1T,EAAUyT,EAAUC,KAGtB,IAAK,MAAMA,KAASD,EAClBH,GAA6BI,EAEjC,EAkRA,OA/QApO,EAAUqO,SAAW,SAAU1E,GAAe,IAARxC,EAAGzN,UAAAC,OAAA,QAAAoG,IAAArG,UAAA,GAAAA,UAAA,GAAG,CAAA,EACtC0Q,EAAO,KACPkE,EAAe,KACfpD,EAAc,KACdqD,EAAa,KAUjB,GANAlI,IAAkBsD,EACdtD,KACFsD,EAAQ,eAIW,iBAAVA,IAAuBmC,GAAQnC,IAGnB,iBAFrBA,EJnnDN,SAAwBzL,GACtB,cAAeA,GACb,IAAK,SACH,OAAOA,EAGT,IAAK,SACH,OAAOrC,EAAeqC,GAGxB,IAAK,UACH,OAAOnC,EAAgBmC,GAGzB,IAAK,SACH,OAAOjC,EAAiBA,EAAeiC,GAAS,IAGlD,IAAK,SACH,OAAO/B,EAAiBA,EAAe+B,GAAS,WAGlD,IAAK,YAwBL,QACE,OAAO3B,EAAe2B,GArBxB,IAAK,WACL,IAAK,SAAU,CACb,GAAc,OAAVA,EACF,OAAO3B,EAAe2B,GAGxB,MAAMsQ,EAAgBtQ,EAChBuQ,EAAgBrQ,EAAaoQ,EAAe,YAElD,GAA6B,mBAAlBC,EAA8B,CACvC,MAAMC,EAAcD,EAAcD,GAElC,MAA8B,iBAAhBE,EACVA,EACAnS,EAAemS,EACrB,CAEA,OAAOnS,EAAe2B,EACxB,EAMJ,CIikDcyQ,CAAehF,IAGrB,MAAMhN,EAAgB,mCAK1B,IAAKqD,EAAUQ,YACb,OAAOmJ,EAgBT,GAZK3E,IACHkC,GAAaC,GAIfnH,EAAUI,QAAU,GAGC,iBAAVuJ,IACTlE,IAAW,GAGTA,GAAU,CAMZ,MAAMmJ,EAAK9M,GACPA,GAAY6H,GACXA,EAAe6B,SACpB,GAAkB,iBAAPoD,EAAiB,CAC1B,MAAM1C,EAAU7O,GAAkBuR,GAClC,IAAKrL,GAAa2I,IAAY9H,GAAY8H,GACxC,MAAMvP,EACJ,0DAGN,CAYA,GAAI2O,GAAa3B,GACf,MAAMhN,EACJ,2DAMJqR,GAA6BrE,EAC/B,MAAO,GAAImC,GAAQnC,GAGjBS,EAAOV,GAAc,iBACrB4E,EAAelE,EAAKlI,cAAcQ,WAAWiH,GAAO,GAElD2E,EAAahO,WAAaZ,IACA,SAA1B4O,EAAa9C,UAIsB,SAA1B8C,EAAa9C,SADtBpB,EAAOkE,EAKPlE,EAAKyE,YAAYP,GAQnBN,GAA6BM,OACxB,CAEL,IACGpJ,KACAL,KACAE,SAED4E,EAAMjO,QAAQ,KAEd,OAAOyG,IAAsBiD,GACzBjD,GAAmB6F,WAAW2B,GAC9BA,EAON,GAHAS,EAAOV,GAAcC,IAGhBS,EACH,OAAOlF,GAAa,KAAOE,GAAsBhD,GAAY,EAEjE,CAGIgI,GAAQnF,IACV+D,GAAaoB,EAAK0E,YAIpB,MAAMC,EAAetE,GAAoBhF,GAAWkE,EAAQS,GAG5D,KAAQc,EAAc6D,EAAa5D,YAEjCc,GAAkBf,GAGlB+B,GAAoB/B,GAMhBW,GAAoBX,EAAYjJ,UAClC2L,GAAmB1C,EAAYjJ,SAKnC,GAAIwD,GAKF,OAJIZ,IACFkG,GAA0BpB,GAGrBA,EAIT,GAAIzE,GAAY,CAKd,GAJIL,IACFkG,GAA0BX,GAGxBjF,GAGF,IAFAoJ,EAAa/L,GAAuBgI,KAAKJ,EAAKlI,eAEvCkI,EAAK0E,YAEVP,EAAWM,YAAYzE,EAAK0E,iBAG9BP,EAAanE,EAcf,OAXI1G,GAAasL,YAActL,GAAauL,kBAQ1CV,EAAa7L,GAAW8H,KAAK/J,EAAkB8N,GAAY,IAGtDA,CACT,CAEA,IAAIW,EAAiBnK,GAAiBqF,EAAK+E,UAAY/E,EAAKD,UAsB5D,OAlBEpF,IACAxB,GAAa,aACb6G,EAAKlI,eACLkI,EAAKlI,cAAckN,SACnBhF,EAAKlI,cAAckN,QAAQhG,MAC3B5M,EAAW8G,GAA0B8G,EAAKlI,cAAckN,QAAQhG,QAEhE8F,EACE,aAAe9E,EAAKlI,cAAckN,QAAQhG,KAAO,MAAQ8F,GAIzDrK,IACF3K,EAAa,CAAC8E,GAAeC,GAAUC,IAAemM,IACpD6D,EAAiB3T,EAAc2T,EAAgB7D,EAAM,OAIlDlJ,IAAsBiD,GACzBjD,GAAmB6F,WAAWkH,GAC9BA,CACN,EAEAlP,EAAUqP,UAAY,WACpBnI,GADiCxN,UAAAC,OAAA,QAAAoG,IAAArG,UAAA,GAAAA,UAAA,GAAG,CAAA,GAEpCsL,IAAa,CACf,EAEAhF,EAAUsP,YAAc,WACtBzI,GAAS,KACT7B,IAAa,CACf,EAEAhF,EAAUuP,iBAAmB,SAAUC,EAAKhC,EAAMtP,GAE3C2I,IACHK,GAAa,CAAA,GAGf,MAAM2F,EAAQxP,GAAkBmS,GAC1B1C,EAASzP,GAAkBmQ,GACjC,OAAOZ,GAAkBC,EAAOC,EAAQ5O,EAC1C,EAEA8B,EAAUyP,QAAU,SAClBC,EACAC,GAE4B,mBAAjBA,GAIXjV,EAAUiI,GAAM+M,GAAaC,EAC/B,EAEA3P,EAAU4P,WAAa,SACrBF,EACAC,GAEA,QAAqB5P,IAAjB4P,EAA4B,CAC9B,MAAMjS,EAAQpD,EAAiBqI,GAAM+M,GAAaC,GAElD,OAAiB,IAAVjS,OACHqC,EACAnF,EAAY+H,GAAM+M,GAAahS,EAAO,GAAG,EAC/C,CAEA,OAAOlD,EAASmI,GAAM+M,GACxB,EAEA1P,EAAU6P,YAAc,SAAUH,GAChC/M,GAAM+M,GAAc,EACtB,EAEA1P,EAAU8P,eAAiB,WACzBnN,GAz8DK,CACLC,wBAAyB,GACzBC,sBAAuB,GACvBC,uBAAwB,GACxBC,yBAA0B,GAC1BC,uBAAwB,GACxBC,wBAAyB,GACzBC,sBAAuB,GACvBC,oBAAqB,GACrBC,uBAAwB,GAi8D1B,EAEOpD,CACT,CAEeF"}
|
|
1
|
+
{"version":3,"file":"purify.min.js","sources":["../src/utils.ts","../src/tags.ts","../src/attrs.ts","../src/regexp.ts","../src/purify.ts"],"sourcesContent":[null,null,null,null,null],"names":["entries","Object","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","create","_ref","Reflect","apply","construct","x","func","thisArg","_len","arguments","length","args","Array","_key","Func","_len2","_key2","arrayForEach","unapply","prototype","forEach","arrayLastIndexOf","lastIndexOf","arrayPop","pop","arrayPush","push","arraySplice","splice","arrayIsArray","isArray","stringToLowerCase","String","toLowerCase","stringToString","toString","stringMatch","match","stringReplace","replace","stringIndexOf","indexOf","stringTrim","trim","numberToString","Number","booleanToString","Boolean","bigintToString","BigInt","symbolToString","Symbol","objectHasOwnProperty","hasOwnProperty","objectToString","regExpTest","RegExp","test","typeErrorCreate","TypeError","_len4","_key4","lastIndex","_len3","_key3","addToSet","set","array","transformCaseFunc","l","element","lcElement","cleanArray","index","clone","object","newObject","_ref2","_ref3","_slicedToArray","property","value","constructor","lookupGetter","prop","desc","get","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","NODE_TYPE","getGlobal","window","purify","createDOMPurify","undefined","DOMPurify","root","version","VERSION","removed","document","nodeType","Element","isSupported","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","DOMParser","trustedTypes","ElementPrototype","cloneNode","remove","getNextSibling","getChildNodes","getParentNode","getShadowRoot","getAttributes","getNodeType","getNodeName","template","createElement","content","ownerDocument","trustedTypesPolicy","emptyHTML","IN_POLICY_CREATE_HTML","_createTrustedHTML","createHTML","_document","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","hooks","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","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","EXTRA_ELEMENT_HANDLING","tagCheck","attributeCheck","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","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","CONFIG","formElement","isRegexOrFunction","testValue","Function","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","_unused","isRegex","ALLOWED_URI_REGEXP","customElementHandling","ADD_TAGS","ADD_ATTR","ADD_FORBID_CONTENTS","table","tbody","TRUSTED_TYPES_POLICY","createScriptURL","previousTrustedTypesPolicy","error","purifyHostElement","createPolicy","suffix","ATTR_NAME","hasAttribute","getAttribute","policyName","scriptUrl","_","console","warn","_createTrustedTypesPolicy","ALL_SVG_TAGS","ALL_MATHML_TAGS","_forceRemove","node","removeChild","_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","_scrubTemplateExpressions","_node$querySelectorAl","_node$querySelectorAl2","normalize","walker","currentNode","nextNode","data","expr","templates","querySelectorAll","tmpl","_isDocumentFragment","_isClobbered","realTagName","nodeName","textContent","attributes","namespaceURI","hasChildNodes","_isNode","_executeHooks","hook","_sanitizeElements","tagName","allowedTags","firstElementChild","_isBasicCustomElement","parentNode","i","childClone","parent","parentTagName","_checkValidNamespace","_isValidAttribute","lcTag","lcName","nameIsPermitted","RESERVED_CUSTOM_ELEMENT_NAMES","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","forceKeepAttr","attr","initValue","getAttributeType","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","innerSr","shadowRoot","_sanitizeAttachedShadowRoots","sr","snapshot","child","rootName","sanitize","importedNode","returnNode","valueAsRecord","valueToString","stringified","stringifyValue","nn","appendChild","firstChild","nodeIterator","shadowroot","shadowrootmode","serializedHTML","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","tag","addHook","entryPoint","hookFunction","removeHook","removeHooks","removeAllHooks"],"mappings":"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AEjCA,GACiB,iBAAVA,GACPA,EAAMC,cAAgBzF,OAEtBmF,EAAUI,GAAYN,EAAMO,GAE5BL,EAAUI,GAAYC,EAG5B,CAEA,OAAOL,CACT,CAmEA,SAASO,EACPR,EACAS,GAEA,KAAkB,OAAXT,GAAiB,CACtB,MAAMU,EAAOxF,EAAyB8E,EAAQS,GAE9C,GAAIC,EAAM,CACR,GAAIA,EAAKC,IACP,OAAOpE,EAAQmE,EAAKC,KAGtB,GAA0B,mBAAfD,EAAKJ,MACd,OAAO/D,EAAQmE,EAAKJ,MAExB,CAEAN,EAAS/E,EAAe+E,EAC1B,CAMA,OAJA,WACE,OAAO,IACT,CAGF,CC1RO,MAAMY,EAAOzF,EAAO,CACzB,IACA,OACA,UACA,UACA,OACA,UACA,QACA,QACA,IACA,MACA,MACA,MACA,QACA,aACA,OACA,KACA,SACA,SACA,UACA,SACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,QAGW0F,EAAM1F,EAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,eACA,cACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,YACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,UAGW2F,EAAa3F,EAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,iBAOW4F,EAAgB5F,EAAO,CAClC,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,QAGW6F,EAAS7F,EAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,gBAKW8F,EAAmB9F,EAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,SAGW+F,EAAO/F,EAAO,CAAC,UC1RfyF,EAAOzF,EAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,UACA,aACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,cACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,QACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,OACA,UACA,cACA,cACA,UACA,gBACA,sBACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,OACA,UAGW0F,EAAM1F,EAAO,CACxB,gBACA,aACA,WACA,qBACA,YACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,WACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,YACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,YACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,QACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,cACA,UACA,UACA,YACA,mBACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,eAGW6F,EAAS7F,EAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,cACA,cACA,gBACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SACA,gBACA,SACA,SACA,iBACA,Y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"}
|
package/package.json
CHANGED
|
@@ -7,19 +7,19 @@
|
|
|
7
7
|
"format:js": "prettier --write '{src,demos,scripts,test,website}/*.{js,ts}'",
|
|
8
8
|
"commit-amend-build": "scripts/commit-amend-build.sh",
|
|
9
9
|
"prebuild": "rimraf dist",
|
|
10
|
-
"dev": "cross-env NODE_ENV=development BABEL_ENV=rollup rollup -w -c -o dist/purify.js",
|
|
10
|
+
"dev": "cross-env NODE_ENV=development BABEL_ENV=rollup rollup -w -c config/rollup.config.js -o dist/purify.js",
|
|
11
11
|
"build": "npm run build:types && npm run build:rollup && npm run build:fix-types && npm run build:cleanup",
|
|
12
|
-
"build:types": "tsc --outDir dist/types --declaration --emitDeclarationOnly",
|
|
13
|
-
"build:rollup": "rollup -c",
|
|
12
|
+
"build:types": "tsc -p config/tsconfig.json --outDir dist/types --declaration --emitDeclarationOnly",
|
|
13
|
+
"build:rollup": "rollup -c config/rollup.config.js",
|
|
14
14
|
"build:fix-types": "node ./scripts/fix-types.js",
|
|
15
|
-
"build:umd": "rollup -c -f umd -o dist/purify.js",
|
|
16
|
-
"build:umd:min": "rollup -c -f umd -o dist/purify.min.js -p terser",
|
|
17
|
-
"build:es": "rollup -c -f es -o dist/purify.es.mjs",
|
|
18
|
-
"build:cjs": "rollup -c -f cjs -o dist/purify.cjs.js",
|
|
15
|
+
"build:umd": "rollup -c config/rollup.config.js -f umd -o dist/purify.js",
|
|
16
|
+
"build:umd:min": "rollup -c config/rollup.config.js -f umd -o dist/purify.min.js -p terser",
|
|
17
|
+
"build:es": "rollup -c config/rollup.config.js -f es -o dist/purify.es.mjs",
|
|
18
|
+
"build:cjs": "rollup -c config/rollup.config.js -f cjs -o dist/purify.cjs.js",
|
|
19
19
|
"build:cleanup": "rimraf dist/types",
|
|
20
20
|
"test": "cross-env NODE_ENV=test BABEL_ENV=rollup npm run lint && npm run test:jsdom && npm run test:browser -- --project=chromium",
|
|
21
21
|
"test:jsdom": "cross-env NODE_ENV=test BABEL_ENV=rollup node test/jsdom-node-runner --dot",
|
|
22
|
-
"test:browser": "playwright test",
|
|
22
|
+
"test:browser": "playwright test --config config/playwright.config.js",
|
|
23
23
|
"test:browser:install": "playwright install",
|
|
24
24
|
"test:ci": "cross-env NODE_ENV=test BABEL_ENV=rollup npm run test:jsdom && npm run test:browser",
|
|
25
25
|
"test:fuzz": "cross-env NODE_ENV=test BABEL_ENV=rollup node test/fuzz/sanitize.fast-check.js",
|
|
@@ -48,7 +48,8 @@
|
|
|
48
48
|
},
|
|
49
49
|
"files": [
|
|
50
50
|
"dist",
|
|
51
|
-
"src"
|
|
51
|
+
"src",
|
|
52
|
+
"LICENSE-MPL"
|
|
52
53
|
],
|
|
53
54
|
"xo": {
|
|
54
55
|
"semicolon": true,
|
|
@@ -107,10 +108,10 @@
|
|
|
107
108
|
"@types/trusted-types": "^2.0.7"
|
|
108
109
|
},
|
|
109
110
|
"devDependencies": {
|
|
110
|
-
"@babel/core": "^7.
|
|
111
|
-
"@babel/preset-env": "^7.29.
|
|
111
|
+
"@babel/core": "^7.29.7",
|
|
112
|
+
"@babel/preset-env": "^7.29.7",
|
|
112
113
|
"@playwright/test": "^1.60.0",
|
|
113
|
-
"@rollup/plugin-babel": "^7.
|
|
114
|
+
"@rollup/plugin-babel": "^7.1.0",
|
|
114
115
|
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
115
116
|
"@rollup/plugin-replace": "^6.0.1",
|
|
116
117
|
"@rollup/plugin-terser": "^1.0.0",
|
|
@@ -119,7 +120,7 @@
|
|
|
119
120
|
"@types/node": "^25.9.1",
|
|
120
121
|
"cross-env": "^10.1.0",
|
|
121
122
|
"eslint-config-prettier": "^10.1.8",
|
|
122
|
-
"eslint-plugin-prettier": "^5.
|
|
123
|
+
"eslint-plugin-prettier": "^5.5.6",
|
|
123
124
|
"fast-check": "^4.8.0",
|
|
124
125
|
"husky": "^9.1.0",
|
|
125
126
|
"jquery": "^3.6.0",
|
|
@@ -139,7 +140,7 @@
|
|
|
139
140
|
},
|
|
140
141
|
"name": "dompurify",
|
|
141
142
|
"description": "DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. It's written in JavaScript and works in all modern browsers (Safari, Opera (15+), Internet Explorer (10+), Firefox and Chrome - as well as almost anything else using Blink or WebKit). DOMPurify is written by security people who have vast background in web attacks and XSS. Fear not.",
|
|
142
|
-
"version": "3.4.
|
|
143
|
+
"version": "3.4.8",
|
|
143
144
|
"directories": {
|
|
144
145
|
"test": "test"
|
|
145
146
|
},
|
package/src/config.ts
CHANGED
|
@@ -217,7 +217,7 @@ export interface Config {
|
|
|
217
217
|
/**
|
|
218
218
|
* Supplied policy must define `createHTML` and `createScriptURL`.
|
|
219
219
|
*/
|
|
220
|
-
TRUSTED_TYPES_POLICY?: TrustedTypePolicy | undefined;
|
|
220
|
+
TRUSTED_TYPES_POLICY?: TrustedTypePolicy | null | undefined;
|
|
221
221
|
|
|
222
222
|
/**
|
|
223
223
|
* Controls categories of allowed elements.
|
package/src/purify.ts
CHANGED
|
@@ -189,6 +189,30 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
189
189
|
let trustedTypesPolicy;
|
|
190
190
|
let emptyHTML = '';
|
|
191
191
|
|
|
192
|
+
// Tracks whether we are already inside a call to the configured Trusted Types
|
|
193
|
+
// policy's `createHTML`. If the supplied `TRUSTED_TYPES_POLICY.createHTML`
|
|
194
|
+
// itself calls `DOMPurify.sanitize` (the cause of #1422), `sanitize` would
|
|
195
|
+
// re-enter the policy and recurse until the stack overflows. We detect that
|
|
196
|
+
// re-entry and throw a clear, actionable error instead.
|
|
197
|
+
let IN_POLICY_CREATE_HTML = 0;
|
|
198
|
+
const _createTrustedHTML = function (html: string): string {
|
|
199
|
+
if (IN_POLICY_CREATE_HTML > 0) {
|
|
200
|
+
throw typeErrorCreate(
|
|
201
|
+
'The configured TRUSTED_TYPES_POLICY.createHTML must not call ' +
|
|
202
|
+
'DOMPurify.sanitize, as that causes infinite recursion. Do not pass ' +
|
|
203
|
+
'a policy whose createHTML wraps DOMPurify as TRUSTED_TYPES_POLICY; ' +
|
|
204
|
+
'see the "DOMPurify and Trusted Types" section of the README.'
|
|
205
|
+
);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
IN_POLICY_CREATE_HTML++;
|
|
209
|
+
try {
|
|
210
|
+
return trustedTypesPolicy.createHTML(html);
|
|
211
|
+
} finally {
|
|
212
|
+
IN_POLICY_CREATE_HTML--;
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
|
|
192
216
|
const {
|
|
193
217
|
implementation,
|
|
194
218
|
createNodeIterator,
|
|
@@ -773,13 +797,25 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
773
797
|
}
|
|
774
798
|
|
|
775
799
|
// Overwrite existing TrustedTypes policy.
|
|
800
|
+
const previousTrustedTypesPolicy = trustedTypesPolicy;
|
|
776
801
|
trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;
|
|
777
802
|
|
|
778
|
-
// Sign local variables required by `sanitize`.
|
|
779
|
-
|
|
803
|
+
// Sign local variables required by `sanitize`. If the supplied policy's
|
|
804
|
+
// `createHTML` is circular (i.e. it calls `DOMPurify.sanitize`), this
|
|
805
|
+
// throws via the re-entrancy guard. Restore the previous policy first so
|
|
806
|
+
// the instance is not left in a poisoned state. See #1422.
|
|
807
|
+
try {
|
|
808
|
+
emptyHTML = _createTrustedHTML('');
|
|
809
|
+
} catch (error) {
|
|
810
|
+
trustedTypesPolicy = previousTrustedTypesPolicy;
|
|
811
|
+
throw error;
|
|
812
|
+
}
|
|
780
813
|
} else {
|
|
781
814
|
// Uninitialized policy, attempt to initialize the internal dompurify policy.
|
|
782
|
-
if (
|
|
815
|
+
if (
|
|
816
|
+
trustedTypesPolicy === undefined &&
|
|
817
|
+
cfg.TRUSTED_TYPES_POLICY !== null
|
|
818
|
+
) {
|
|
783
819
|
trustedTypesPolicy = _createTrustedTypesPolicy(
|
|
784
820
|
trustedTypes,
|
|
785
821
|
currentScript
|
|
@@ -787,11 +823,39 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
787
823
|
}
|
|
788
824
|
|
|
789
825
|
// If creating the internal policy succeeded sign internal variables.
|
|
790
|
-
|
|
791
|
-
|
|
826
|
+
// Note: a falsy `trustedTypesPolicy` (null when policy creation failed or
|
|
827
|
+
// was skipped via `TRUSTED_TYPES_POLICY: null`, or undefined when no
|
|
828
|
+
// policy has been initialized yet) must be excluded here, otherwise we
|
|
829
|
+
// would call `.createHTML` on a non-policy and throw. See #1422.
|
|
830
|
+
if (trustedTypesPolicy && typeof emptyHTML === 'string') {
|
|
831
|
+
emptyHTML = _createTrustedHTML('');
|
|
792
832
|
}
|
|
793
833
|
}
|
|
794
834
|
|
|
835
|
+
/*
|
|
836
|
+
* Mirror the clone-before-mutate pattern already applied above for
|
|
837
|
+
* cfg.ADD_TAGS / cfg.ADD_ATTR: if any uponSanitize* hook is
|
|
838
|
+
* registered AND the set still points at the default constant,
|
|
839
|
+
* clone it. The hook then mutates the clone (in-call widening
|
|
840
|
+
* still works exactly as documented) and the next default-cfg
|
|
841
|
+
* call rebinds to the untouched original via the reassignment at
|
|
842
|
+
* the top of this function.
|
|
843
|
+
*/
|
|
844
|
+
if (
|
|
845
|
+
(hooks.uponSanitizeElement.length > 0 ||
|
|
846
|
+
hooks.uponSanitizeAttribute.length > 0) &&
|
|
847
|
+
ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS
|
|
848
|
+
) {
|
|
849
|
+
ALLOWED_TAGS = clone(ALLOWED_TAGS);
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
if (
|
|
853
|
+
hooks.uponSanitizeAttribute.length > 0 &&
|
|
854
|
+
ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR
|
|
855
|
+
) {
|
|
856
|
+
ALLOWED_ATTR = clone(ALLOWED_ATTR);
|
|
857
|
+
}
|
|
858
|
+
|
|
795
859
|
// Prevent further manipulation of configuration.
|
|
796
860
|
// Not available in IE8, Safari 5, etc.
|
|
797
861
|
if (freeze) {
|
|
@@ -1004,9 +1068,7 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
1004
1068
|
'</body></html>';
|
|
1005
1069
|
}
|
|
1006
1070
|
|
|
1007
|
-
const dirtyPayload = trustedTypesPolicy
|
|
1008
|
-
? trustedTypesPolicy.createHTML(dirty)
|
|
1009
|
-
: dirty;
|
|
1071
|
+
const dirtyPayload = trustedTypesPolicy ? _createTrustedHTML(dirty) : dirty;
|
|
1010
1072
|
/*
|
|
1011
1073
|
* Use the DOMParser API by default, fallback later if needs be
|
|
1012
1074
|
* DOMParser not work for svg when has multiple root element.
|
|
@@ -1110,6 +1172,16 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
1110
1172
|
currentNode.data = data;
|
|
1111
1173
|
currentNode = walker.nextNode() as CharacterData | null;
|
|
1112
1174
|
}
|
|
1175
|
+
|
|
1176
|
+
// NodeIterator does not descend into <template>.content per the DOM spec,
|
|
1177
|
+
// so we must explicitly recurse into each template's content fragment,
|
|
1178
|
+
// mirroring the approach used by _sanitizeShadowDOM.
|
|
1179
|
+
const templates = node.querySelectorAll?.('template') ?? [];
|
|
1180
|
+
arrayForEach(Array.from(templates), (tmpl: HTMLTemplateElement) => {
|
|
1181
|
+
if (_isDocumentFragment(tmpl.content)) {
|
|
1182
|
+
_scrubTemplateExpressions(tmpl.content as unknown as Element);
|
|
1183
|
+
}
|
|
1184
|
+
});
|
|
1113
1185
|
};
|
|
1114
1186
|
|
|
1115
1187
|
/**
|
|
@@ -1121,32 +1193,6 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
1121
1193
|
* on direct reads. We use this check at the IN_PLACE entry-point and
|
|
1122
1194
|
* during attribute sanitization to refuse clobbered forms.
|
|
1123
1195
|
*
|
|
1124
|
-
* Realm safety (GHSA-hpcv-96wg-7vj8): every check in this function must
|
|
1125
|
-
* work for foreign-realm forms — e.g. a <form> created inside a same-
|
|
1126
|
-
* origin iframe and then handed to a parent-realm DOMPurify instance
|
|
1127
|
-
* with IN_PLACE: true. The original implementation used
|
|
1128
|
-
* `element instanceof HTMLFormElement` and `element.attributes
|
|
1129
|
-
* instanceof NamedNodeMap`, both of which are realm-bound: a foreign-
|
|
1130
|
-
* realm form is an instance of the *foreign* realm's HTMLFormElement,
|
|
1131
|
-
* not the parent realm's. The instanceof short-circuited to false and
|
|
1132
|
-
* the function returned false (= not clobbered) regardless of how
|
|
1133
|
-
* thoroughly the form was clobbered. Sanitize then walked a clobbered
|
|
1134
|
-
* .attributes and missed every attribute on the form root, leaving
|
|
1135
|
-
* onmouseover / onclick / formaction / etc. intact.
|
|
1136
|
-
*
|
|
1137
|
-
* The realm-independent replacements:
|
|
1138
|
-
* - HTMLFormElement detection — read the tag name through the cached
|
|
1139
|
-
* Node.prototype.nodeName getter. WebIDL getters operate on internal
|
|
1140
|
-
* slots that exist on every real Node regardless of which realm
|
|
1141
|
-
* minted the JS wrapper, so getNodeName(foreignForm) === "FORM".
|
|
1142
|
-
* - NamedNodeMap detection — compare the direct .attributes read
|
|
1143
|
-
* against the cached Element.prototype.attributes getter. Same
|
|
1144
|
-
* equality-probe pattern we use for .childNodes: if a clobbering
|
|
1145
|
-
* child shadows the named property, the two reads diverge; if not,
|
|
1146
|
-
* both return the same NamedNodeMap (same-realm OR foreign-realm —
|
|
1147
|
-
* doesn't matter, both are the canonical attributes object for the
|
|
1148
|
-
* node).
|
|
1149
|
-
*
|
|
1150
1196
|
* @param element element to check for clobbering attacks
|
|
1151
1197
|
* @return true if clobbered, false if safe
|
|
1152
1198
|
*/
|
|
@@ -1178,6 +1224,14 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
1178
1224
|
typeof element.namespaceURI !== 'string' ||
|
|
1179
1225
|
typeof element.insertBefore !== 'function' ||
|
|
1180
1226
|
typeof element.hasChildNodes !== 'function' ||
|
|
1227
|
+
// NodeType clobbering probe. Cached Node.prototype.nodeType getter
|
|
1228
|
+
// returns the integer 1 for any Element regardless of realm; direct
|
|
1229
|
+
// read on a clobbered form (e.g. <input name="nodeType">) returns
|
|
1230
|
+
// the named child element. Cheap addition — nodeType is read from
|
|
1231
|
+
// an internal slot, no serialization cost — and removes a residual
|
|
1232
|
+
// clobbering surface used by several mXSS / PI / comment branches
|
|
1233
|
+
// in _sanitizeElements that compare currentNode.nodeType directly.
|
|
1234
|
+
element.nodeType !== getNodeType(element) ||
|
|
1181
1235
|
// HTMLFormElement has [LegacyOverrideBuiltIns]: a descendant named
|
|
1182
1236
|
// "childNodes" shadows the prototype getter. Direct reads of
|
|
1183
1237
|
// form.childNodes from a clobbered form return the named child
|
|
@@ -1196,14 +1250,6 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
1196
1250
|
/**
|
|
1197
1251
|
* Checks whether the given value is a DocumentFragment from any realm.
|
|
1198
1252
|
*
|
|
1199
|
-
* Realm safety (GHSA-hpcv-96wg-7vj8): the original sites used
|
|
1200
|
-
* `value instanceof DocumentFragment`, which is realm-bound — a fragment
|
|
1201
|
-
* from a foreign realm (template content or shadow root from an iframe
|
|
1202
|
-
* document) is an instance of the foreign realm's DocumentFragment, not
|
|
1203
|
-
* the parent realm's, so the check returned false and the template-
|
|
1204
|
-
* content / shadow-root recursion was silently skipped. The attacker
|
|
1205
|
-
* payload inside survived untouched.
|
|
1206
|
-
*
|
|
1207
1253
|
* The realm-independent replacement reads `nodeType` through the cached
|
|
1208
1254
|
* Node.prototype getter and compares to the DOCUMENT_FRAGMENT_NODE
|
|
1209
1255
|
* constant (11). nodeType is a numeric value resolved from the node's
|
|
@@ -1232,12 +1278,6 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
1232
1278
|
* sanitize() to silently stringify them and reset IN_PLACE to false,
|
|
1233
1279
|
* returning the original node unsanitized. See GHSA-4w3q-35jp-p934.
|
|
1234
1280
|
*
|
|
1235
|
-
* Implementation: call the cached `nodeType` getter from Node.prototype
|
|
1236
|
-
* directly on the value. This bypasses any clobbered instance property
|
|
1237
|
-
* (e.g. a child element named "nodeType") and works across realms
|
|
1238
|
-
* because the WebIDL `nodeType` getter reads an internal slot that
|
|
1239
|
-
* every real Node has, regardless of which window minted it.
|
|
1240
|
-
*
|
|
1241
1281
|
* @param value object to check whether it's a DOM node
|
|
1242
1282
|
* @return true if value is a DOM node from any realm
|
|
1243
1283
|
*/
|
|
@@ -1285,7 +1325,9 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
1285
1325
|
}
|
|
1286
1326
|
|
|
1287
1327
|
/* Now let's check the element's type and name */
|
|
1288
|
-
const tagName = transformCaseFunc(
|
|
1328
|
+
const tagName = transformCaseFunc(
|
|
1329
|
+
getNodeName ? getNodeName(currentNode) : currentNode.nodeName
|
|
1330
|
+
);
|
|
1289
1331
|
|
|
1290
1332
|
/* Execute a hook if present */
|
|
1291
1333
|
_executeHooks(hooks.uponSanitizeElement, currentNode, {
|
|
@@ -1358,10 +1400,17 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
1358
1400
|
}
|
|
1359
1401
|
}
|
|
1360
1402
|
|
|
1361
|
-
/* Keep content except for bad-listed elements
|
|
1403
|
+
/* Keep content except for bad-listed elements.
|
|
1404
|
+
Use the cached prototype getters exclusively — the previous code
|
|
1405
|
+
had `|| currentNode.parentNode` / `|| currentNode.childNodes`
|
|
1406
|
+
fallbacks, but the cached getters always return the canonical
|
|
1407
|
+
value (or null for a real parent-less node), so the fallback
|
|
1408
|
+
path was dead in safe cases and a clobbering surface in unsafe
|
|
1409
|
+
ones. Falsy cached results stay falsy; the `if (childNodes &&
|
|
1410
|
+
parentNode)` check already gates correctly. */
|
|
1362
1411
|
if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {
|
|
1363
|
-
const parentNode = getParentNode(currentNode)
|
|
1364
|
-
const childNodes = getChildNodes(currentNode)
|
|
1412
|
+
const parentNode = getParentNode(currentNode);
|
|
1413
|
+
const childNodes = getChildNodes(currentNode);
|
|
1365
1414
|
|
|
1366
1415
|
if (childNodes && parentNode) {
|
|
1367
1416
|
const childCount = childNodes.length;
|
|
@@ -1684,7 +1733,7 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
1684
1733
|
} else {
|
|
1685
1734
|
switch (trustedTypes.getAttributeType(lcTag, lcName)) {
|
|
1686
1735
|
case 'TrustedHTML': {
|
|
1687
|
-
value =
|
|
1736
|
+
value = _createTrustedHTML(value);
|
|
1688
1737
|
break;
|
|
1689
1738
|
}
|
|
1690
1739
|
|
|
@@ -1754,6 +1803,29 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
1754
1803
|
if (_isDocumentFragment(shadowNode.content)) {
|
|
1755
1804
|
_sanitizeShadowDOM(shadowNode.content);
|
|
1756
1805
|
}
|
|
1806
|
+
|
|
1807
|
+
/* An element iterated here may itself host an attached
|
|
1808
|
+
shadow root. The default NodeIterator does not enter shadow
|
|
1809
|
+
trees, so a shadow root nested inside template.content was
|
|
1810
|
+
previously reached by no walk at all (the pre-pass at
|
|
1811
|
+
_sanitizeAttachedShadowRoots descends via childNodes, which
|
|
1812
|
+
doesn't enter template.content; the template-content recursion
|
|
1813
|
+
above iterates the content but never inspected shadowRoot).
|
|
1814
|
+
Walk it explicitly. The nodeType guard avoids reading
|
|
1815
|
+
shadowRoot off text / comment / CDATA / PI nodes that the
|
|
1816
|
+
iterator also surfaces. */
|
|
1817
|
+
const shadowNodeType = getNodeType
|
|
1818
|
+
? getNodeType(shadowNode)
|
|
1819
|
+
: shadowNode.nodeType;
|
|
1820
|
+
if (shadowNodeType === NODE_TYPE.element) {
|
|
1821
|
+
const innerSr = getShadowRoot
|
|
1822
|
+
? getShadowRoot(shadowNode)
|
|
1823
|
+
: (shadowNode as Element).shadowRoot;
|
|
1824
|
+
if (_isDocumentFragment(innerSr)) {
|
|
1825
|
+
_sanitizeAttachedShadowRoots(innerSr);
|
|
1826
|
+
_sanitizeShadowDOM(innerSr);
|
|
1827
|
+
}
|
|
1828
|
+
}
|
|
1757
1829
|
}
|
|
1758
1830
|
|
|
1759
1831
|
/* Execute a hook if present */
|
|
@@ -1777,17 +1849,6 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
1777
1849
|
* existing _sanitizeShadowDOM template-content recursion) stay
|
|
1778
1850
|
* untouched — string-input paths are not affected.
|
|
1779
1851
|
*
|
|
1780
|
-
* DOM-Clobbering hardening: HTMLFormElement carries the WebIDL
|
|
1781
|
-
* [LegacyOverrideBuiltIns] extended attribute, so a descendant element
|
|
1782
|
-
* named `nodeType`, `shadowRoot`, or `childNodes` shadows the matching
|
|
1783
|
-
* prototype getter on the form. Reading those properties directly off
|
|
1784
|
-
* the node would let an attacker steer this walk past shadow hosts
|
|
1785
|
-
* (e.g. <input name="childNodes"> collapses the form's child list to
|
|
1786
|
-
* the input itself, so descent stops dead and any shadow root deeper
|
|
1787
|
-
* in the subtree is never sanitized). Every property access here is
|
|
1788
|
-
* therefore routed through the cached prototype getter; the form's
|
|
1789
|
-
* named-property getter cannot intercept those reads.
|
|
1790
|
-
*
|
|
1791
1852
|
* @param root the subtree root to walk for attached shadow roots
|
|
1792
1853
|
*/
|
|
1793
1854
|
const _sanitizeAttachedShadowRoots = function (root: Node): void {
|
|
@@ -1831,6 +1892,20 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
1831
1892
|
for (const child of snapshot) {
|
|
1832
1893
|
_sanitizeAttachedShadowRoots(child);
|
|
1833
1894
|
}
|
|
1895
|
+
|
|
1896
|
+
/* When the root is a <template>, also descend into root.content */
|
|
1897
|
+
if (nodeType === NODE_TYPE.element) {
|
|
1898
|
+
const rootName = getNodeName ? getNodeName(root) : null;
|
|
1899
|
+
if (
|
|
1900
|
+
typeof rootName === 'string' &&
|
|
1901
|
+
transformCaseFunc(rootName) === 'template'
|
|
1902
|
+
) {
|
|
1903
|
+
const content = (root as HTMLTemplateElement).content;
|
|
1904
|
+
if (_isDocumentFragment(content)) {
|
|
1905
|
+
_sanitizeAttachedShadowRoots(content);
|
|
1906
|
+
}
|
|
1907
|
+
}
|
|
1908
|
+
}
|
|
1834
1909
|
};
|
|
1835
1910
|
|
|
1836
1911
|
// eslint-disable-next-line complexity
|
|
@@ -1945,7 +2020,7 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
1945
2020
|
dirty.indexOf('<') === -1
|
|
1946
2021
|
) {
|
|
1947
2022
|
return trustedTypesPolicy && RETURN_TRUSTED_TYPE
|
|
1948
|
-
?
|
|
2023
|
+
? _createTrustedHTML(dirty)
|
|
1949
2024
|
: dirty;
|
|
1950
2025
|
}
|
|
1951
2026
|
|
|
@@ -2046,7 +2121,7 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
2046
2121
|
}
|
|
2047
2122
|
|
|
2048
2123
|
return trustedTypesPolicy && RETURN_TRUSTED_TYPE
|
|
2049
|
-
?
|
|
2124
|
+
? _createTrustedHTML(serializedHTML)
|
|
2050
2125
|
: serializedHTML;
|
|
2051
2126
|
};
|
|
2052
2127
|
|