url-sanitizer 2.0.13 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../bundle_wo_dompurify/mjs/dompurify.js", "../bundle_wo_dompurify/mjs/constant.js", "../bundle_wo_dompurify/mjs/common.js", "../bundle_wo_dompurify/mjs/file-reader.js", "../bundle_wo_dompurify/lib/file/text-chars.json", "../bundle_wo_dompurify/lib/iana/uri-schemes.json", "../bundle_wo_dompurify/mjs/uri-util.js", "../bundle_wo_dompurify/mjs/sanitizer.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * dompurify.js\n */\n\nconst { DOMPurify } = globalThis;\n\nexport {\n DOMPurify as domPurify\n};\n", "/**\n * constant.js\n */\n\n/* numeric */\nexport const HEX = 16;\nexport const TYPE_FROM = 8;\nexport const TYPE_TO = -1;\n\n/* regexp */\nexport const REG_B64 = /^[\\w+/=-]+$/;\nexport const REG_CHARSET = /^charset=([\\w#&.;-]+)$/;\nexport const REG_DATA_URL = /data:[\\w#&+./;=-]*,/;\nexport const REG_DATA_URL_B64 = /data:[\\w#&+./;=^]*base64,[\\w+/=-]+/i;\nexport const REG_DATA_URL_G = /data:[\\w#&+./;=-]*,[^\\x22]+/g;\nexport const REG_NUM_REF = /&#(x(?:00)?[\\dA-F]{2}|0?\\d{1,3});?/gi;\nexport const REG_MIME_DOM =\n /^(?:application\\/(?:[\\w#&.;-]+\\+)?x|image\\/svg\\+x|text\\/(?:ht|x))ml;?/;\nexport const REG_MIME_TEXT = /^text\\/[\\w#&.;-]+/;\nexport const REG_SCHEME = /^[a-z][\\da-z+.-]*$/;\nexport const REG_SCHEME_EXT = /^(?:ext|web)\\+[a-z]+$/;\nexport const REG_SCRIPT = /(?:java|vb)script/;\nexport const REG_SCRIPT_BLOB = /(?:java|vb)script|blob/;\nexport const REG_TAG_QUOT = /%(?:22|27|3C|3E)|[\\x22\\x27<>]/;\nexport const REG_URL_ENC = /^%[\\dA-F]{2}$/i;\n", "/**\n * common.js\n */\n\n/* shared */\nimport { TYPE_FROM, TYPE_TO } from './constant.js';\n\n/**\n * get type\n * @param {object} o - object to check\n * @returns {string} - type of object\n */\nexport const getType = o =>\n Object.prototype.toString.call(o).slice(TYPE_FROM, TYPE_TO);\n\n/**\n * is string\n * @param {object} o - object to check\n * @returns {boolean} - result\n */\nexport const isString = o => typeof o === 'string' || o instanceof String;\n", "/**\n * file-reader.js\n */\n\nconst { FileReader } = globalThis;\n\nexport {\n FileReader\n};\n", "[7,8,9,10,11,12,13,27,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255]\n", "[\"aaa\",\"aaas\",\"about\",\"acap\",\"acct\",\"acd\",\"acr\",\"adiumxtra\",\"adt\",\"afp\",\"afs\",\"agtp\",\"aim\",\"amss\",\"android\",\"appdata\",\"apt\",\"ar\",\"ari\",\"ark\",\"at\",\"attachment\",\"aw\",\"barion\",\"beshare\",\"bitcoin\",\"bitcoincash\",\"bl\",\"blob\",\"bluetooth\",\"bolo\",\"brid\",\"browserext\",\"cabal\",\"caip\",\"calculator\",\"callto\",\"cap\",\"cast\",\"casts\",\"chrome\",\"chrome-extension\",\"cid\",\"coap\",\"coaps\",\"com-eventbrite-attendee\",\"content\",\"content-type\",\"crid\",\"cstr\",\"cvs\",\"dab\",\"dat\",\"data\",\"dav\",\"dhttp\",\"diaspora\",\"dict\",\"did\",\"dilithium3\",\"dis\",\"dlna-playcontainer\",\"dlna-playsingle\",\"dnp\",\"dns\",\"dntp\",\"doi\",\"donau\",\"dpp\",\"drm\",\"dtmi\",\"dtn\",\"dvb\",\"dvx\",\"dweb\",\"ed2k\",\"eid\",\"elsi\",\"embedded\",\"ens\",\"esim\",\"ethereum\",\"example\",\"facetime\",\"feed\",\"feedready\",\"fido\",\"file\",\"finger\",\"first-run-pen-experience\",\"fish\",\"fm\",\"ftp\",\"fuchsia-pkg\",\"geo\",\"gg\",\"git\",\"gitoid\",\"gizmoproject\",\"go\",\"gopher\",\"graph\",\"gtalk\",\"h323\",\"ham\",\"hcap\",\"hcp\",\"hs20\",\"http\",\"https\",\"hxxp\",\"hxxps\",\"hydrazone\",\"hyper\",\"i0\",\"iax\",\"ibi\",\"ibi-\",\"icap\",\"icon\",\"ilstring\",\"im\",\"imap\",\"info\",\"iotdisco\",\"ipfs\",\"ipn\",\"ipns\",\"ipp\",\"ipps\",\"irc\",\"irc6\",\"ircs\",\"iris\",\"iris.beep\",\"iris.lwz\",\"iris.xpc\",\"iris.xpcs\",\"isostore\",\"itms\",\"jabber\",\"jar\",\"jms\",\"keyparc\",\"lastfm\",\"lbry\",\"ldap\",\"ldaps\",\"leaptofrogans\",\"lid\",\"linkid\",\"lorawan\",\"lpa\",\"lvlt\",\"machineProvisioningProgressReporter\",\"magnet\",\"mailto\",\"maps\",\"market\",\"matrix\",\"message\",\"microsoft.windows.camera\",\"microsoft.windows.camera.multipicker\",\"microsoft.windows.camera.picker\",\"mid\",\"mms\",\"mongodb\",\"moz\",\"moz-extension\",\"mqtt\",\"mqtts\",\"ms-access\",\"ms-appinstaller\",\"ms-browser-extension\",\"ms-calculator\",\"ms-drive-to\",\"ms-enrollment\",\"ms-excel\",\"ms-eyecontrolspeech\",\"ms-gamebarservices\",\"ms-gamingoverlay\",\"ms-getoffice\",\"ms-help\",\"ms-infopath\",\"ms-inputapp\",\"ms-launchremotedesktop\",\"ms-lockscreencomponent-config\",\"ms-media-stream-id\",\"ms-meetnow\",\"ms-mixedrealitycapture\",\"ms-mobileplans\",\"ms-newsandinterests\",\"ms-officeapp\",\"ms-people\",\"ms-personacard\",\"ms-powerpoint\",\"ms-project\",\"ms-publisher\",\"ms-recall\",\"ms-remotedesktop\",\"ms-remotedesktop-launch\",\"ms-restoretabcompanion\",\"ms-screenclip\",\"ms-screensketch\",\"ms-search\",\"ms-search-repair\",\"ms-secondary-screen-controller\",\"ms-secondary-screen-setup\",\"ms-settings\",\"ms-settings-airplanemode\",\"ms-settings-bluetooth\",\"ms-settings-camera\",\"ms-settings-cellular\",\"ms-settings-cloudstorage\",\"ms-settings-connectabledevices\",\"ms-settings-displays-topology\",\"ms-settings-emailandaccounts\",\"ms-settings-language\",\"ms-settings-location\",\"ms-settings-lock\",\"ms-settings-nfctransactions\",\"ms-settings-notifications\",\"ms-settings-power\",\"ms-settings-privacy\",\"ms-settings-proximity\",\"ms-settings-screenrotation\",\"ms-settings-wifi\",\"ms-settings-workplace\",\"ms-spd\",\"ms-stickers\",\"ms-sttoverlay\",\"ms-transit-to\",\"ms-useractivityset\",\"ms-uup\",\"ms-virtualtouchpad\",\"ms-visio\",\"ms-walk-to\",\"ms-whiteboard\",\"ms-whiteboard-cmd\",\"ms-widgetboard\",\"ms-widgets\",\"ms-word\",\"msnim\",\"msrp\",\"msrps\",\"mss\",\"mt\",\"mtqp\",\"mtrust\",\"mumble\",\"mupdate\",\"mvn\",\"mvrp\",\"mvrps\",\"news\",\"nfs\",\"ni\",\"nih\",\"nntp\",\"notes\",\"num\",\"ocf\",\"oid\",\"onenote\",\"onenote-cmd\",\"opaquelocktoken\",\"openid\",\"openpgp4fpr\",\"otpauth\",\"palm\",\"paparazzi\",\"payto\",\"pkcs11\",\"platform\",\"pop\",\"pres\",\"proxy\",\"psyc\",\"pttp\",\"pwid\",\"qb\",\"query\",\"quic-transport\",\"redis\",\"rediss\",\"reload\",\"res\",\"resource\",\"rmi\",\"rsync\",\"rtmfp\",\"rtmp\",\"rtsp\",\"rtsps\",\"rtspu\",\"sarif\",\"secondlife\",\"secret-token\",\"service\",\"session\",\"sftp\",\"sgn\",\"shc\",\"shelter\",\"sieve\",\"simpleledger\",\"simplex\",\"sip\",\"sips\",\"skype\",\"smb\",\"smp\",\"sms\",\"smtp\",\"snmp\",\"soap.beep\",\"soap.beeps\",\"soldat\",\"spacify\",\"spiffe\",\"spotify\",\"ssb\",\"ssh\",\"starknet\",\"steam\",\"stun\",\"stuns\",\"submit\",\"svn\",\"swh\",\"swid\",\"swidpath\",\"tag\",\"taler\",\"teamspeak\",\"teapot\",\"teapots\",\"tel\",\"teliaeid\",\"telnet\",\"tftp\",\"things\",\"thismessage\",\"tip\",\"tn3270\",\"tool\",\"turn\",\"turns\",\"tv\",\"udp\",\"unreal\",\"upn\",\"urn\",\"ut2004\",\"uuid-in-package\",\"v-event\",\"vemmi\",\"ventrilo\",\"ves\",\"view-source\",\"vnc\",\"vscode\",\"vscode-insiders\",\"vsls\",\"w3\",\"wasm\",\"wasm-js\",\"wcr\",\"web3\",\"webcal\",\"wifi\",\"ws\",\"wss\",\"wtai\",\"wyciwyg\",\"xcompute\",\"xcon\",\"xcon-userid\",\"xfire\",\"xftp\",\"xmlrpc.beep\",\"xmlrpc.beeps\",\"xmpp\",\"xrcp\",\"xri\",\"ymsgr\",\"z39.50r\",\"z39.50s\"]\n", "/**\n * uri-util.js\n */\n\n/* shared */\nimport { getType, isString } from './common.js';\nimport { FileReader } from './file-reader.js';\nimport { textChars, uriSchemes } from './lib-util.js';\n\nimport {\n HEX, REG_B64, REG_NUM_REF, REG_SCHEME, REG_SCHEME_EXT, REG_SCRIPT, REG_URL_ENC\n} from './constant.js';\n\n/**\n * get URL encoded string\n * @param {string} str - string\n * @returns {string} - URL encoded string\n */\nexport const getURLEncodedString = str => {\n if (!isString(str)) {\n throw new TypeError(`Expected String but got ${getType(str)}.`);\n }\n const chars = [];\n for (const ch of str) {\n chars.push(`%${ch.charCodeAt(0).toString(HEX).toUpperCase()}`);\n }\n return chars.join('');\n};\n\n/**\n * escape URL encoded HTML special chars\n * @param {string} ch - URL encoded (percent encoded) char\n * @returns {string} - escaped URL encoded HTML special char / URL encoded char\n */\nexport const escapeURLEncodedHTMLChars = ch => {\n if (isString(ch) && REG_URL_ENC.test(ch)) {\n ch = ch.toUpperCase();\n }\n const [amp, num, lt, gt, quot, apos] =\n ['&', '#', '<', '>', '\"', \"'\"].map(getURLEncodedString);\n let escapedChar;\n if (ch === amp) {\n escapedChar = `${amp}amp;`;\n } else if (ch === lt) {\n escapedChar = `${amp}lt;`;\n } else if (ch === gt) {\n escapedChar = `${amp}gt;`;\n } else if (ch === quot) {\n escapedChar = `${amp}quot;`;\n } else if (ch === apos) {\n escapedChar = `${amp}${num}39;`;\n } else {\n escapedChar = ch;\n }\n return escapedChar;\n};\n\n/**\n * parse base64 encoded data\n * @param {string} data - base64 encoded data\n * @returns {string} - parsed text data / base64 encoded data if binary\n */\nexport const parseBase64 = data => {\n if (!isString(data)) {\n throw new TypeError(`Expected String but got ${getType(data)}.`);\n } else if (!REG_B64.test(data)) {\n throw new Error(`Invalid base64 data: ${data}`);\n }\n const bin = atob(data);\n const uint8arr = Uint8Array.from([...bin].map(c => c.charCodeAt(0)));\n const textCharCodes = new Set(textChars);\n let parsedData;\n if (uint8arr.every(c => textCharCodes.has(c))) {\n parsedData = bin.replace(/\\s/g, getURLEncodedString);\n } else {\n parsedData = data;\n }\n return parsedData;\n};\n\n/**\n * parse URL encoded numeric character references in the range 0x00 to 0xFF\n * @param {string} str - string\n * @param {number} [nest] - nest level\n * @returns {string} - parsed string\n */\nexport const parseURLEncodedNumCharRef = (str, nest = 0) => {\n if (!isString(str)) {\n throw new TypeError(`Expected String but got ${getType(str)}.`);\n }\n if (!Number.isInteger(nest)) {\n throw new TypeError(`Expected Number but got ${getType(nest)}.`);\n } else if (nest > HEX) {\n throw new Error('Character references nested too deeply.');\n }\n let res = decodeURIComponent(str);\n if (/&#/.test(res)) {\n const textCharCodes = new Set(textChars);\n const items = [...res.matchAll(REG_NUM_REF)].reverse();\n for (const item of items) {\n const [numCharRef, value] = item;\n let num;\n if (/^x[\\dA-F]+/i.test(value)) {\n num = parseInt(`0${value}`, HEX);\n } else if (/^\\d+/.test(value)) {\n num = parseInt(value);\n }\n if (Number.isInteger(num)) {\n const { index } = item;\n const [preNum, postNum] = [\n res.substring(0, index),\n res.substring(index + numCharRef.length)\n ];\n if (textCharCodes.has(num)) {\n res = `${preNum}${String.fromCharCode(num)}${postNum}`;\n if (/#x?$/.test(preNum) || /^#(?:x(?:00)?[2-7]|\\d)/.test(postNum)) {\n res = parseURLEncodedNumCharRef(res, ++nest);\n }\n } else if (num < HEX * HEX) {\n res = `${preNum}${postNum}`;\n }\n }\n }\n }\n return res;\n};\n\n/**\n * create data URL from blob\n * @param {object} blob - blob\n * @returns {Promise.<?string>} - data URL\n */\nexport const createDataURLFromBlob = blob => new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.addEventListener('error', () => reject(reader.error));\n reader.addEventListener('abort', () => resolve(reader.result));\n reader.addEventListener('load', () => resolve(reader.result));\n reader.readAsDataURL(blob);\n});\n\n/**\n * URI schemes\n */\nexport class URISchemes {\n /* private fields */\n #schemes;\n\n /**\n * construct\n */\n constructor() {\n this.#schemes = new Set(uriSchemes);\n }\n\n /**\n * get schemes\n * @see {@link https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml}\n * - Historical schemes omitted\n * - 'moz-extension' scheme added\n * @returns {Array.<string>} - array of schemes\n */\n get() {\n return [...this.#schemes];\n }\n\n /**\n * has scheme\n * @param {string} scheme - scheme\n * @returns {boolean} - result\n */\n has(scheme) {\n return this.#schemes.has(scheme);\n }\n\n /**\n * add scheme\n * NOTE: `javascript` and/or `vbscript` schemes can not be registered\n * @param {string} scheme - scheme\n * @returns {Array.<string>} - array of schemes\n */\n add(scheme) {\n if (!isString(scheme)) {\n throw new TypeError(`Expected String but got ${getType(scheme)}.`);\n } else if (REG_SCRIPT.test(scheme) || !REG_SCHEME.test(scheme)) {\n throw new Error(`Invalid scheme: ${scheme}`);\n }\n this.#schemes.add(scheme);\n return [...this.#schemes];\n }\n\n /**\n * remove scheme\n * @param {string} scheme - scheme\n * @returns {boolean} - result\n */\n remove(scheme) {\n return this.#schemes.delete(scheme);\n }\n\n /**\n * verify URI\n * @param {string} uri - URI\n * @returns {boolean} - result\n */\n verify(uri) {\n let res;\n if (isString(uri)) {\n try {\n const { protocol } = new URL(uri);\n const scheme = protocol.replace(/:$/, '');\n const schemeParts = scheme.split('+');\n res = (!REG_SCRIPT.test(scheme) && REG_SCHEME_EXT.test(scheme)) ||\n schemeParts.every(s => this.#schemes.has(s));\n } catch (e) {\n res = false;\n }\n }\n return !!res;\n }\n\n /**\n * reset schemes\n * @returns {void}\n */\n reset() {\n this.#schemes.clear();\n for (const scheme of uriSchemes) {\n this.#schemes.add(scheme);\n }\n }\n}\n", "/**\n * sanitizer.js\n */\n\n/* shared */\nimport { domPurify } from './dompurify.js';\nimport { getType, isString } from './common.js';\nimport {\n createDataURLFromBlob, escapeURLEncodedHTMLChars, parseBase64,\n parseURLEncodedNumCharRef, URISchemes\n} from './uri-util.js';\nimport {\n HEX, REG_DATA_URL, REG_DATA_URL_B64, REG_DATA_URL_G, REG_MIME_DOM,\n REG_SCRIPT_BLOB, REG_TAG_QUOT\n} from './constant.js';\n\n/* typedef */\n/**\n * @typedef {object} ParsedURL - object with additional props based on URL API\n * @property {string} input - URL input\n * @property {boolean} valid - is valid URI\n * @property {object} [data] - parsed result of data URL, `null`able\n * @property {string} [data.mime] - MIME type\n * @property {boolean} [data.base64] - is base64 encoded\n * @property {string} [data.data] - data part of the data URL\n * @property {string} [href] - sanitized URL input\n * @property {string} [origin] - scheme, domain and port of the sanitized URL\n * @property {string} [protocol] - protocol scheme of the sanitized URL\n * @property {string} [username] - username specified before the domain name\n * @property {string} [password] - password specified before the domain name\n * @property {string} [host] - domain and port of the sanitized URL\n * @property {string} [hostname] - domain of the sanitized URL\n * @property {string} [port] - port number of the sanitized URL\n * @property {string} [pathname] - path of the sanitized URL\n * @property {string} [search] - query string of the sanitized URL\n * @property {string} [hash] - fragment identifier of the sanitized URL\n */\n\n/**\n * URL sanitizer\n */\nclass URLSanitizer extends URISchemes {\n /* private fields */\n #nest;\n #recurse = new Set();\n\n /**\n * construct\n */\n constructor() {\n super();\n this.#nest = 0;\n }\n\n /**\n * replace matched data URLs\n * @param {string} data - data URL\n * @returns {string} - replaced data URL\n */\n replace(data) {\n if (!isString(data)) {\n throw new TypeError(`Expected String but got ${getType(data)}.`);\n }\n let replacedData = data;\n if (REG_DATA_URL.test(replacedData)) {\n const matchedDataUrls = replacedData.matchAll(REG_DATA_URL_G);\n const items = [...matchedDataUrls].reverse();\n for (const item of items) {\n let [dataUrl] = item;\n if (REG_DATA_URL_B64.test(dataUrl)) {\n [dataUrl] = REG_DATA_URL_B64.exec(dataUrl);\n }\n this.#nest++;\n this.#recurse.add(dataUrl);\n const parsedDataUrl = this.sanitize(dataUrl, {\n allow: ['data']\n });\n const { index } = item;\n const [preDataUrl, postDataUrl] = [\n replacedData.substring(0, index),\n replacedData.substring(index + dataUrl.length)\n ];\n if (parsedDataUrl) {\n replacedData = `${preDataUrl}${parsedDataUrl}${postDataUrl}`;\n } else {\n replacedData = `${preDataUrl}${postDataUrl}`;\n }\n }\n }\n return replacedData;\n }\n\n /**\n * purify URL encoded DOM\n * @param {string} dom - DOM string\n * @returns {string} - purified DOM string\n */\n purify(dom) {\n if (!isString(dom)) {\n throw new TypeError(`Expected String but got ${getType(dom)}.`);\n }\n let purifiedDom = domPurify.sanitize(decodeURIComponent(dom));\n if (purifiedDom && REG_DATA_URL.test(purifiedDom)) {\n purifiedDom = this.replace(purifiedDom);\n }\n purifiedDom = purifiedDom.replace(/(?:#|%23)$/, '')\n .replace(/(?<!(?:#|%23).*)(?:\\?|%3F)$/, '');\n return encodeURI(purifiedDom);\n }\n\n /**\n * sanitize URL\n * NOTE: `data` and `file` schemes must be explicitly allowed\n * `blob` URLs should be converted to `data` URLs\n * `javascript` and `vbscript` schemes can not be allowed\n * @param {string} url - URL\n * @param {object} [opt] - options\n * @param {Array.<string>} [opt.allow] - array of allowed schemes\n * @param {Array.<string>} [opt.deny] - array of denied schemes\n * @param {Array.<string>} [opt.only] - array of specific schemes to allow\n * @returns {?string} - sanitized URL\n */\n sanitize(url, opt) {\n if (this.#nest > HEX) {\n this.#nest = 0;\n throw new Error('Data URLs nested too deeply.');\n }\n const { allow, deny, only } = opt ?? {};\n const schemeMap = new Map([\n ['blob', false],\n ['data', false],\n ['file', false],\n ['javascrpt', false],\n ['vbscript', false]\n ]);\n const tempScheme = new Set();\n let restrictScheme = false;\n if (Array.isArray(only) && only.length) {\n const schemes = super.get();\n for (const item of schemes) {\n schemeMap.set(item, false);\n }\n const items = Object.values(only);\n for (let item of items) {\n if (isString(item)) {\n item = item.trim();\n if (!REG_SCRIPT_BLOB.test(item)) {\n if (super.has(item)) {\n schemeMap.set(item, true);\n } else {\n try {\n super.add(item);\n } catch (e) {\n // fall through\n }\n if (super.has(item)) {\n schemeMap.set(item, true);\n tempScheme.add(item);\n }\n }\n if (!restrictScheme && schemeMap.has(item)) {\n restrictScheme = schemeMap.get(item);\n }\n }\n }\n }\n } else {\n if (Array.isArray(allow) && allow.length) {\n const items = Object.values(allow);\n for (let item of items) {\n if (isString(item)) {\n item = item.trim();\n if (!REG_SCRIPT_BLOB.test(item)) {\n if (super.has(item)) {\n schemeMap.set(item, true);\n } else {\n try {\n super.add(item);\n } catch (e) {\n // fall through\n }\n if (super.has(item)) {\n schemeMap.set(item, true);\n tempScheme.add(item);\n }\n }\n }\n }\n }\n }\n if (Array.isArray(deny) && deny.length) {\n const items = Object.values(deny);\n for (let item of items) {\n if (isString(item)) {\n item = item.trim();\n if (item) {\n schemeMap.set(item, false);\n }\n }\n }\n }\n }\n let sanitizedUrl;\n if (super.verify(url)) {\n const { hash, href, pathname, protocol, search } = new URL(url);\n const scheme = protocol.replace(/:$/, '');\n const schemeParts = scheme.split('+');\n let bool;\n if (restrictScheme) {\n bool = schemeParts.every(s => schemeMap.get(s));\n } else {\n for (const [key, value] of schemeMap.entries()) {\n bool = value || (scheme !== key && schemeParts.every(s => s !== key));\n if (!bool) {\n break;\n }\n }\n }\n if (bool) {\n const isDataUrl = schemeParts.includes('data');\n let finalize;\n let urlToSanitize = href;\n if (isDataUrl) {\n const [mediaType, ...dataParts] = pathname.split(',');\n const data = `${dataParts.join(',')}${search}${hash}`;\n const mediaTypes = mediaType.split(';');\n const isBase64 = mediaTypes[mediaTypes.length - 1] === 'base64';\n let parsedData = data;\n if (isBase64) {\n parsedData = parseBase64(data);\n }\n try {\n const decodedData = parseURLEncodedNumCharRef(parsedData).trim();\n const { protocol: dataScheme } = new URL(decodedData);\n const dataSchemeParts = dataScheme.replace(/:$/, '').split('+');\n if (dataSchemeParts.some(s => REG_SCRIPT_BLOB.test(s))) {\n urlToSanitize = '';\n }\n } catch (e) {\n // fall through\n }\n const containsDataUrl = REG_DATA_URL.test(parsedData);\n if (parsedData !== data || containsDataUrl) {\n if (containsDataUrl) {\n parsedData = this.replace(parsedData);\n } else if (this.#recurse.has(url)) {\n this.#recurse.delete(url);\n } else {\n finalize = true;\n }\n } else if (this.#recurse.has(url)) {\n this.#recurse.delete(url);\n } else {\n finalize = true;\n }\n if (!mediaType || REG_MIME_DOM.test(mediaType)) {\n parsedData = this.purify(parsedData);\n }\n if (urlToSanitize && parsedData) {\n if (isBase64 && parsedData !== data) {\n mediaTypes.pop();\n }\n urlToSanitize = `${scheme}:${mediaTypes.join(';')},${parsedData}`;\n } else {\n urlToSanitize = '';\n }\n } else {\n finalize = true;\n }\n if (!isDataUrl && REG_TAG_QUOT.test(urlToSanitize)) {\n const item = REG_TAG_QUOT.exec(urlToSanitize);\n const { index } = item;\n urlToSanitize =\n urlToSanitize.substring(0, index).replace(/[?&]$/, '');\n }\n if (urlToSanitize) {\n sanitizedUrl =\n urlToSanitize.replace(/%26/g, escapeURLEncodedHTMLChars);\n if (finalize) {\n this.#nest = 0;\n }\n } else {\n this.#nest = 0;\n }\n }\n if (tempScheme.size) {\n tempScheme.forEach(item => {\n super.remove(item);\n });\n }\n }\n return sanitizedUrl || null;\n }\n\n /**\n * parse sanitized URL\n * @param {string} url - URL\n * @param {object} [opt] - options\n * @param {Array.<string>} [opt.allow] - array of allowed schemes\n * @param {Array.<string>} [opt.deny] - array of denied schemes\n * @param {Array.<string>} [opt.only] - array of specific schemes to allow\n * @returns {ParsedURL} - result with additional props based on URL API\n */\n parse(url, opt) {\n if (!isString(url)) {\n throw new TypeError(`Expected String but got ${getType(url)}.`);\n }\n const parsedUrl = new Map([\n ['input', url]\n ]);\n let sanitizedUrl;\n if (this.verify(url)) {\n const { protocol } = new URL(url);\n if (protocol === 'blob:') {\n sanitizedUrl = url;\n } else {\n sanitizedUrl = this.sanitize(url, opt ?? {\n allow: ['data', 'file']\n });\n }\n }\n if (sanitizedUrl) {\n const urlObj = new URL(sanitizedUrl);\n const { pathname, protocol } = urlObj;\n const schemeParts = protocol.replace(/:$/, '').split('+');\n const isDataUrl = schemeParts.includes('data');\n parsedUrl.set('valid', true);\n if (isDataUrl) {\n const dataUrl = new Map();\n const [mediaType, ...dataParts] = pathname.split(',');\n const data = `${dataParts.join(',')}`;\n const mediaTypes = mediaType.split(';');\n const isBase64 = mediaTypes[mediaTypes.length - 1] === 'base64';\n if (isBase64) {\n mediaTypes.pop();\n }\n dataUrl.set('mime', mediaTypes.join(';'));\n dataUrl.set('base64', isBase64);\n dataUrl.set('data', data);\n parsedUrl.set('data', Object.fromEntries(dataUrl));\n } else {\n parsedUrl.set('data', null);\n }\n for (const key in urlObj) {\n const value = urlObj[key];\n if (isString(value)) {\n parsedUrl.set(key, value);\n }\n }\n } else {\n parsedUrl.set('valid', false);\n }\n return Object.fromEntries(parsedUrl);\n }\n\n /**\n * reset sanitizer\n * @returns {void}\n */\n reset() {\n super.reset();\n this.#nest = 0;\n this.#recurse.clear();\n }\n}\nexport { URLSanitizer };\n\n/* aliases and async wrappers */\n/* instance */\nconst urlSanitizer = new URLSanitizer();\n\n/**\n * sanitize URL async\n * NOTE: `blob`, `data` and `file` schemes must be explicitly allowed\n * given a `blob` URL, returns a sanitized `data` URL\n * @param {string} url - URL\n * @param {object} [opt] - options\n * @param {Array.<string>} [opt.allow] - array of allowed schemes\n * @param {Array.<string>} [opt.deny] - array of denied schemes\n * @param {Array.<string>} [opt.only] - array of specific schemes to allow\n * @returns {Promise.<?string>} - sanitized URL\n */\nexport const sanitizeURL = async (url, opt = {\n allow: [],\n deny: [],\n only: []\n}) => {\n let res;\n if (url && isString(url)) {\n let scheme;\n try {\n const { protocol } = new URL(url);\n scheme = protocol.replace(/:$/, '');\n } catch (e) {\n // fall through;\n }\n if (scheme === 'blob') {\n const { allow, deny, only } = opt;\n if ((Array.isArray(allow) && allow.includes('blob') &&\n !(Array.isArray(deny) && deny.includes('blob'))) ||\n (Array.isArray(only) && only.includes('blob'))) {\n let data;\n try {\n data =\n await fetch(url).then(r => r.blob()).then(createDataURLFromBlob);\n } catch (e) {\n // fall through\n }\n if (data) {\n if (Array.isArray(only)) {\n if (!only.includes('data')) {\n only.push('data');\n }\n } else if (Array.isArray(allow)) {\n if (!allow.includes('data')) {\n allow.push('data');\n }\n if (Array.isArray(deny) && deny.includes('data')) {\n const i = deny.indexOf('data');\n deny.splice(i, 1);\n }\n }\n res = urlSanitizer.sanitize(data, opt);\n }\n }\n URL.revokeObjectURL(url);\n } else if (scheme) {\n res = urlSanitizer.sanitize(url, opt);\n }\n }\n return res || null;\n};\n\n/**\n * sanitize URL sync\n * NOTE: `data` and `file` schemes must be explicitly allowed\n * `blob` scheme returns `null`\n * @param {string} url - URL\n * @param {object} [opt] - options\n * @param {Array.<string>} [opt.allow] - array of allowed schemes\n * @param {Array.<string>} [opt.deny] - array of denied schemes\n * @param {Array.<string>} [opt.only] - array of specific schemes to allow\n * @returns {?string} - sanitized URL\n */\nexport const sanitizeURLSync = (url, opt) => {\n let res;\n if (url && isString(url)) {\n let scheme;\n try {\n const { protocol } = new URL(url);\n scheme = protocol.replace(/:$/, '');\n } catch (e) {\n // fall through;\n }\n if (scheme === 'blob') {\n URL.revokeObjectURL(url);\n } else if (scheme) {\n res = urlSanitizer.sanitize(url, opt);\n }\n }\n return res || null;\n};\n\n/**\n * parse URL async\n * @param {string} url - URL\n * @returns {Promise.<ParsedURL>} - result\n */\nexport const parseURL = async url => {\n const res = urlSanitizer.parse(url);\n return res;\n};\n\n/**\n * parse URL sync\n * @param {string} url - URL\n * @returns {ParsedURL} - result\n */\nexport const parseURLSync = url => urlSanitizer.parse(url);\n\n/**\n * is URI async\n * @param {string} uri - URI\n * @returns {Promise.<boolean>} - result\n */\nexport const isURI = async uri => {\n const res = urlSanitizer.verify(uri);\n return res;\n};\n\n/**\n * is URI sync\n * @param {string} uri - URI\n * @returns {boolean} - result\n */\nexport const isURISync = uri => urlSanitizer.verify(uri);\n\n/* export instance */\nexport default urlSanitizer;\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["
|
|
4
|
+
"sourcesContent": ["/**\n * dompurify.js\n */\n\nconst domPurify = {\n sanitize: (...args) => {\n if (globalThis?.DOMPurify) {\n return globalThis.DOMPurify.sanitize(...args);\n }\n\n const msg = [\n 'DOMPurify is not available.',\n 'Ensure DOMPurify is exposed globally (e.g., window.DOMPurify).'\n ];\n throw new Error(msg.join(' '));\n }\n};\n\nexport {\n domPurify\n};\n", "/**\n * constant.js\n */\n\n/* numeric */\nexport const HEX = 16;\nexport const TYPE_FROM = 8;\nexport const TYPE_TO = -1;\n\n/* regexp */\nexport const REG_B64 = /^[\\w+/=-]+$/;\nexport const REG_CHARSET = /^charset=([\\w#&.;-]+)$/;\nexport const REG_DATA_URL = /data:[\\w#&+./;=-]*,/;\nexport const REG_DATA_URL_B64 = /data:[\\w#&+./;=^]*base64,[\\w+/=-]+/i;\nexport const REG_DATA_URL_G = /data:[\\w#&+./;=-]*,[^\\x22]+/g;\nexport const REG_NUM_REF = /&#(x(?:00)?[\\dA-F]{2}|0?\\d{1,3});?/gi;\nexport const REG_MIME_DOM =\n /^(?:application\\/(?:[\\w#&.;-]+\\+)?x|image\\/svg\\+x|text\\/(?:ht|x))ml;?/;\nexport const REG_MIME_TEXT = /^text\\/[\\w#&.;-]+/;\nexport const REG_SCHEME = /^[a-z][\\da-z+.-]*$/;\nexport const REG_SCHEME_EXT = /^(?:ext|web)\\+[a-z]+$/;\nexport const REG_SCRIPT = /(?:java|vb)script/;\nexport const REG_SCRIPT_BLOB = /(?:java|vb)script|blob/;\nexport const REG_TAG_QUOT = /%(?:22|27|3C|3E)|[\\x22\\x27<>]/;\nexport const REG_URL_ENC = /^%[\\dA-F]{2}$/i;\n", "/**\n * common.js\n */\n\n/* shared */\nimport { TYPE_FROM, TYPE_TO } from './constant.js';\n\n/**\n * get type\n * @param {object} o - object to check\n * @returns {string} - type of object\n */\nexport const getType = o =>\n Object.prototype.toString.call(o).slice(TYPE_FROM, TYPE_TO);\n\n/**\n * is string\n * @param {object} o - object to check\n * @returns {boolean} - result\n */\nexport const isString = o => typeof o === 'string' || o instanceof String;\n", "/**\n * file-reader.js\n */\n\nconst { FileReader } = globalThis;\n\nexport {\n FileReader\n};\n", "[7,8,9,10,11,12,13,27,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255]\n", "[\"aaa\",\"aaas\",\"about\",\"acap\",\"acct\",\"acd\",\"acr\",\"adiumxtra\",\"adt\",\"afp\",\"afs\",\"agtp\",\"aim\",\"amss\",\"android\",\"appdata\",\"apt\",\"ar\",\"ari\",\"ark\",\"at\",\"attachment\",\"aw\",\"barion\",\"beshare\",\"bitcoin\",\"bitcoincash\",\"bl\",\"blob\",\"bluetooth\",\"bolo\",\"brid\",\"browserext\",\"cabal\",\"caip\",\"calculator\",\"callto\",\"cap\",\"cast\",\"casts\",\"chrome\",\"chrome-extension\",\"cid\",\"coap\",\"coaps\",\"com-eventbrite-attendee\",\"content\",\"content-type\",\"crid\",\"cstr\",\"cttps\",\"cvs\",\"dab\",\"dat\",\"data\",\"dav\",\"dhttp\",\"diaspora\",\"dict\",\"did\",\"dilithium3\",\"dis\",\"dlna-playcontainer\",\"dlna-playsingle\",\"dnp\",\"dns\",\"dntp\",\"doi\",\"donau\",\"dpp\",\"drm\",\"dtmi\",\"dtn\",\"dvb\",\"dvx\",\"dweb\",\"ed2k\",\"eid\",\"elsi\",\"embedded\",\"ens\",\"esim\",\"ethereum\",\"example\",\"facetime\",\"feed\",\"feedready\",\"fido\",\"file\",\"finger\",\"first-run-pen-experience\",\"fish\",\"fm\",\"ftp\",\"fuchsia-pkg\",\"geo\",\"gg\",\"git\",\"gitoid\",\"gizmoproject\",\"go\",\"gopher\",\"graph\",\"gtalk\",\"h323\",\"ham\",\"hcap\",\"hcp\",\"hs20\",\"http\",\"https\",\"hxxp\",\"hxxps\",\"hydrazone\",\"hyper\",\"i0\",\"iax\",\"ibi\",\"ibi-\",\"icap\",\"icon\",\"ilstring\",\"im\",\"imap\",\"info\",\"iotdisco\",\"ipfs\",\"ipn\",\"ipns\",\"ipp\",\"ipps\",\"irc\",\"irc6\",\"ircs\",\"iris\",\"iris.beep\",\"iris.lwz\",\"iris.xpc\",\"iris.xpcs\",\"isostore\",\"itms\",\"jabber\",\"jar\",\"jms\",\"keyparc\",\"lastfm\",\"lbry\",\"ldap\",\"ldaps\",\"leaptofrogans\",\"lid\",\"linkid\",\"lorawan\",\"lpa\",\"lvlt\",\"machineProvisioningProgressReporter\",\"magnet\",\"mailto\",\"maps\",\"market\",\"matrix\",\"message\",\"microsoft.windows.camera\",\"microsoft.windows.camera.multipicker\",\"microsoft.windows.camera.picker\",\"mid\",\"mms\",\"mongodb\",\"moz\",\"moz-extension\",\"mqtt\",\"mqtts\",\"ms-access\",\"ms-appinstaller\",\"ms-browser-extension\",\"ms-calculator\",\"ms-drive-to\",\"ms-enrollment\",\"ms-excel\",\"ms-eyecontrolspeech\",\"ms-gamebarservices\",\"ms-gamingoverlay\",\"ms-getoffice\",\"ms-help\",\"ms-infopath\",\"ms-inputapp\",\"ms-launchremotedesktop\",\"ms-lockscreencomponent-config\",\"ms-media-stream-id\",\"ms-meetnow\",\"ms-mixedrealitycapture\",\"ms-mobileplans\",\"ms-newsandinterests\",\"ms-officeapp\",\"ms-people\",\"ms-personacard\",\"ms-powerpoint\",\"ms-project\",\"ms-publisher\",\"ms-recall\",\"ms-remotedesktop\",\"ms-remotedesktop-launch\",\"ms-restoretabcompanion\",\"ms-screenclip\",\"ms-screensketch\",\"ms-search\",\"ms-search-repair\",\"ms-secondary-screen-controller\",\"ms-secondary-screen-setup\",\"ms-settings\",\"ms-settings-airplanemode\",\"ms-settings-bluetooth\",\"ms-settings-camera\",\"ms-settings-cellular\",\"ms-settings-cloudstorage\",\"ms-settings-connectabledevices\",\"ms-settings-displays-topology\",\"ms-settings-emailandaccounts\",\"ms-settings-language\",\"ms-settings-location\",\"ms-settings-lock\",\"ms-settings-nfctransactions\",\"ms-settings-notifications\",\"ms-settings-power\",\"ms-settings-privacy\",\"ms-settings-proximity\",\"ms-settings-screenrotation\",\"ms-settings-wifi\",\"ms-settings-workplace\",\"ms-spd\",\"ms-stickers\",\"ms-sttoverlay\",\"ms-transit-to\",\"ms-useractivityset\",\"ms-uup\",\"ms-virtualtouchpad\",\"ms-visio\",\"ms-walk-to\",\"ms-whiteboard\",\"ms-whiteboard-cmd\",\"ms-widgetboard\",\"ms-widgets\",\"ms-word\",\"msnim\",\"msrp\",\"msrps\",\"mss\",\"mt\",\"mtqp\",\"mtrust\",\"mumble\",\"mupdate\",\"mvn\",\"mvrp\",\"mvrps\",\"news\",\"nfs\",\"ni\",\"nih\",\"nntp\",\"notes\",\"num\",\"ocf\",\"oid\",\"onenote\",\"onenote-cmd\",\"opaquelocktoken\",\"openid\",\"openpgp4fpr\",\"otpauth\",\"palm\",\"paparazzi\",\"payto\",\"pkcs11\",\"platform\",\"pop\",\"pres\",\"proxy\",\"psyc\",\"pttp\",\"pwid\",\"qb\",\"query\",\"quic-transport\",\"redis\",\"rediss\",\"reload\",\"res\",\"resource\",\"rmi\",\"rsync\",\"rtmfp\",\"rtmp\",\"rtsp\",\"rtsps\",\"rtspu\",\"sarif\",\"secondlife\",\"secret-token\",\"service\",\"session\",\"sftp\",\"sgn\",\"shc\",\"shelter\",\"sieve\",\"simpleledger\",\"simplex\",\"sip\",\"sips\",\"skype\",\"smb\",\"smp\",\"sms\",\"smtp\",\"snmp\",\"soap.beep\",\"soap.beeps\",\"soldat\",\"spacify\",\"spiffe\",\"spotify\",\"ssb\",\"ssh\",\"starknet\",\"steam\",\"stun\",\"stuns\",\"submit\",\"svn\",\"swh\",\"swid\",\"swidpath\",\"tag\",\"taler\",\"teamspeak\",\"teapot\",\"teapots\",\"tel\",\"teliaeid\",\"telnet\",\"tftp\",\"things\",\"thismessage\",\"tip\",\"tn3270\",\"tool\",\"turn\",\"turns\",\"tv\",\"udp\",\"unreal\",\"upn\",\"urn\",\"ut2004\",\"uuid-in-package\",\"v-event\",\"vemmi\",\"ventrilo\",\"ves\",\"view-source\",\"vnc\",\"vscode\",\"vscode-insiders\",\"vsls\",\"w3\",\"wasm\",\"wasm-js\",\"wcr\",\"web3\",\"webcal\",\"wifi\",\"ws\",\"wss\",\"wtai\",\"wyciwyg\",\"xcompute\",\"xcon\",\"xcon-userid\",\"xfire\",\"xftp\",\"xmlrpc.beep\",\"xmlrpc.beeps\",\"xmpp\",\"xrcp\",\"xri\",\"ymsgr\",\"z39.50r\",\"z39.50s\"]\n", "/**\n * uri-util.js\n */\n\n/* shared */\nimport { getType, isString } from './common.js';\nimport { FileReader } from './file-reader.js';\nimport { textChars, uriSchemes } from './lib-util.js';\n\nimport {\n HEX, REG_B64, REG_NUM_REF, REG_SCHEME, REG_SCHEME_EXT, REG_SCRIPT, REG_URL_ENC\n} from './constant.js';\n\n/**\n * get URL encoded string\n * @param {string} str - string\n * @returns {string} - URL encoded string\n */\nexport const getURLEncodedString = str => {\n if (!isString(str)) {\n throw new TypeError(`Expected String but got ${getType(str)}.`);\n }\n const chars = [];\n for (const ch of str) {\n chars.push(`%${ch.charCodeAt(0).toString(HEX).toUpperCase()}`);\n }\n return chars.join('');\n};\n\n/**\n * escape URL encoded HTML special chars\n * @param {string} ch - URL encoded (percent encoded) char\n * @returns {string} - escaped URL encoded HTML special char / URL encoded char\n */\nexport const escapeURLEncodedHTMLChars = ch => {\n if (isString(ch) && REG_URL_ENC.test(ch)) {\n ch = ch.toUpperCase();\n }\n const [amp, num, lt, gt, quot, apos] =\n ['&', '#', '<', '>', '\"', \"'\"].map(getURLEncodedString);\n let escapedChar;\n if (ch === amp) {\n escapedChar = `${amp}amp;`;\n } else if (ch === lt) {\n escapedChar = `${amp}lt;`;\n } else if (ch === gt) {\n escapedChar = `${amp}gt;`;\n } else if (ch === quot) {\n escapedChar = `${amp}quot;`;\n } else if (ch === apos) {\n escapedChar = `${amp}${num}39;`;\n } else {\n escapedChar = ch;\n }\n return escapedChar;\n};\n\n/**\n * parse base64 encoded data\n * @param {string} data - base64 encoded data\n * @returns {string} - parsed text data / base64 encoded data if binary\n */\nexport const parseBase64 = data => {\n if (!isString(data)) {\n throw new TypeError(`Expected String but got ${getType(data)}.`);\n } else if (!REG_B64.test(data)) {\n throw new Error(`Invalid base64 data: ${data}`);\n }\n const bin = atob(data);\n const uint8arr = Uint8Array.from([...bin].map(c => c.charCodeAt(0)));\n const textCharCodes = new Set(textChars);\n let parsedData;\n if (uint8arr.every(c => textCharCodes.has(c))) {\n parsedData = bin.replace(/\\s/g, getURLEncodedString);\n } else {\n parsedData = data;\n }\n return parsedData;\n};\n\n/**\n * parse URL encoded numeric character references in the range 0x00 to 0xFF\n * @param {string} str - string\n * @param {number} [nest] - nest level\n * @returns {string} - parsed string\n */\nexport const parseURLEncodedNumCharRef = (str, nest = 0) => {\n if (!isString(str)) {\n throw new TypeError(`Expected String but got ${getType(str)}.`);\n }\n if (!Number.isInteger(nest)) {\n throw new TypeError(`Expected Number but got ${getType(nest)}.`);\n } else if (nest > HEX) {\n throw new Error('Character references nested too deeply.');\n }\n let res = decodeURIComponent(str);\n if (/&#/.test(res)) {\n const textCharCodes = new Set(textChars);\n const items = [...res.matchAll(REG_NUM_REF)].reverse();\n for (const item of items) {\n const [numCharRef, value] = item;\n let num;\n if (/^x[\\dA-F]+/i.test(value)) {\n num = parseInt(`0${value}`, HEX);\n } else if (/^\\d+/.test(value)) {\n num = parseInt(value);\n }\n if (Number.isInteger(num)) {\n const { index } = item;\n const [preNum, postNum] = [\n res.substring(0, index),\n res.substring(index + numCharRef.length)\n ];\n if (textCharCodes.has(num)) {\n res = `${preNum}${String.fromCharCode(num)}${postNum}`;\n if (/#x?$/.test(preNum) || /^#(?:x(?:00)?[2-7]|\\d)/.test(postNum)) {\n res = parseURLEncodedNumCharRef(res, ++nest);\n }\n } else if (num < HEX * HEX) {\n res = `${preNum}${postNum}`;\n }\n }\n }\n }\n return res;\n};\n\n/**\n * create data URL from blob\n * @param {object} blob - blob\n * @returns {Promise.<?string>} - data URL\n */\nexport const createDataURLFromBlob = blob => new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.addEventListener('error', () => reject(reader.error));\n reader.addEventListener('abort', () => resolve(reader.result));\n reader.addEventListener('load', () => resolve(reader.result));\n reader.readAsDataURL(blob);\n});\n\n/**\n * URI schemes\n */\nexport class URISchemes {\n /* private fields */\n #schemes;\n\n /**\n * construct\n */\n constructor() {\n this.#schemes = new Set(uriSchemes);\n }\n\n /**\n * get schemes\n * @see {@link https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml}\n * - Historical schemes omitted\n * - 'moz-extension' scheme added\n * @returns {Array.<string>} - array of schemes\n */\n get() {\n return [...this.#schemes];\n }\n\n /**\n * has scheme\n * @param {string} scheme - scheme\n * @returns {boolean} - result\n */\n has(scheme) {\n return this.#schemes.has(scheme);\n }\n\n /**\n * add scheme\n * NOTE: `javascript` and/or `vbscript` schemes can not be registered\n * @param {string} scheme - scheme\n * @returns {Array.<string>} - array of schemes\n */\n add(scheme) {\n if (!isString(scheme)) {\n throw new TypeError(`Expected String but got ${getType(scheme)}.`);\n } else if (REG_SCRIPT.test(scheme) || !REG_SCHEME.test(scheme)) {\n throw new Error(`Invalid scheme: ${scheme}`);\n }\n this.#schemes.add(scheme);\n return [...this.#schemes];\n }\n\n /**\n * remove scheme\n * @param {string} scheme - scheme\n * @returns {boolean} - result\n */\n remove(scheme) {\n return this.#schemes.delete(scheme);\n }\n\n /**\n * verify URI\n * @param {string} uri - URI\n * @returns {boolean} - result\n */\n verify(uri) {\n let res;\n if (isString(uri)) {\n try {\n const { protocol } = new URL(uri);\n const scheme = protocol.replace(/:$/, '');\n const schemeParts = scheme.split('+');\n res = (!REG_SCRIPT.test(scheme) && REG_SCHEME_EXT.test(scheme)) ||\n schemeParts.every(s => this.#schemes.has(s));\n } catch (e) {\n res = false;\n }\n }\n return !!res;\n }\n\n /**\n * reset schemes\n * @returns {void}\n */\n reset() {\n this.#schemes.clear();\n for (const scheme of uriSchemes) {\n this.#schemes.add(scheme);\n }\n }\n}\n", "/**\n * sanitizer.js\n */\n\n/* shared */\nimport { domPurify } from './dompurify.js';\nimport { getType, isString } from './common.js';\nimport {\n createDataURLFromBlob, escapeURLEncodedHTMLChars, parseBase64,\n parseURLEncodedNumCharRef, URISchemes\n} from './uri-util.js';\nimport {\n HEX, REG_DATA_URL, REG_DATA_URL_B64, REG_DATA_URL_G, REG_MIME_DOM,\n REG_SCRIPT_BLOB, REG_TAG_QUOT\n} from './constant.js';\n\n/* typedef */\n/**\n * @typedef {object} ParsedURL - object with additional props based on URL API\n * @property {string} input - URL input\n * @property {boolean} valid - is valid URI\n * @property {object} [data] - parsed result of data URL, `null`able\n * @property {string} [data.mime] - MIME type\n * @property {boolean} [data.base64] - is base64 encoded\n * @property {string} [data.data] - data part of the data URL\n * @property {string} [href] - sanitized URL input\n * @property {string} [origin] - scheme, domain and port of the sanitized URL\n * @property {string} [protocol] - protocol scheme of the sanitized URL\n * @property {string} [username] - username specified before the domain name\n * @property {string} [password] - password specified before the domain name\n * @property {string} [host] - domain and port of the sanitized URL\n * @property {string} [hostname] - domain of the sanitized URL\n * @property {string} [port] - port number of the sanitized URL\n * @property {string} [pathname] - path of the sanitized URL\n * @property {string} [search] - query string of the sanitized URL\n * @property {string} [hash] - fragment identifier of the sanitized URL\n */\n\n/**\n * URL sanitizer\n */\nclass URLSanitizer extends URISchemes {\n /* private fields */\n #nest;\n #recurse = new Set();\n\n /**\n * construct\n */\n constructor() {\n super();\n this.#nest = 0;\n }\n\n /**\n * replace matched data URLs\n * @param {string} data - data URL\n * @returns {string} - replaced data URL\n */\n replace(data) {\n if (!isString(data)) {\n throw new TypeError(`Expected String but got ${getType(data)}.`);\n }\n let replacedData = data;\n if (REG_DATA_URL.test(replacedData)) {\n const matchedDataUrls = replacedData.matchAll(REG_DATA_URL_G);\n const items = [...matchedDataUrls].reverse();\n for (const item of items) {\n let [dataUrl] = item;\n if (REG_DATA_URL_B64.test(dataUrl)) {\n [dataUrl] = REG_DATA_URL_B64.exec(dataUrl);\n }\n this.#nest++;\n this.#recurse.add(dataUrl);\n const parsedDataUrl = this.sanitize(dataUrl, {\n allow: ['data']\n });\n const { index } = item;\n const [preDataUrl, postDataUrl] = [\n replacedData.substring(0, index),\n replacedData.substring(index + dataUrl.length)\n ];\n if (parsedDataUrl) {\n replacedData = `${preDataUrl}${parsedDataUrl}${postDataUrl}`;\n } else {\n replacedData = `${preDataUrl}${postDataUrl}`;\n }\n }\n }\n return replacedData;\n }\n\n /**\n * purify URL encoded DOM\n * @param {string} dom - DOM string\n * @returns {string} - purified DOM string\n */\n purify(dom) {\n if (!isString(dom)) {\n throw new TypeError(`Expected String but got ${getType(dom)}.`);\n }\n let purifiedDom = domPurify.sanitize(decodeURIComponent(dom));\n if (purifiedDom && REG_DATA_URL.test(purifiedDom)) {\n purifiedDom = this.replace(purifiedDom);\n }\n purifiedDom = purifiedDom.replace(/(?:#|%23)$/, '')\n .replace(/(?<!(?:#|%23).*)(?:\\?|%3F)$/, '');\n return encodeURI(purifiedDom);\n }\n\n /**\n * sanitize URL\n * NOTE: `data` and `file` schemes must be explicitly allowed\n * `blob` URLs should be converted to `data` URLs\n * `javascript` and `vbscript` schemes can not be allowed\n * @param {string} url - URL\n * @param {object} [opt] - options\n * @param {Array.<string>} [opt.allow] - array of allowed schemes\n * @param {Array.<string>} [opt.deny] - array of denied schemes\n * @param {Array.<string>} [opt.only] - array of specific schemes to allow\n * @returns {?string} - sanitized URL\n */\n sanitize(url, opt) {\n if (this.#nest > HEX) {\n this.#nest = 0;\n throw new Error('Data URLs nested too deeply.');\n }\n const { allow, deny, only } = opt ?? {};\n const schemeMap = new Map([\n ['blob', false],\n ['data', false],\n ['file', false],\n ['javascrpt', false],\n ['vbscript', false]\n ]);\n const tempScheme = new Set();\n let restrictScheme = false;\n if (Array.isArray(only) && only.length) {\n const schemes = super.get();\n for (const item of schemes) {\n schemeMap.set(item, false);\n }\n const items = Object.values(only);\n for (let item of items) {\n if (isString(item)) {\n item = item.trim();\n if (!REG_SCRIPT_BLOB.test(item)) {\n if (super.has(item)) {\n schemeMap.set(item, true);\n } else {\n try {\n super.add(item);\n } catch (e) {\n // fall through\n }\n if (super.has(item)) {\n schemeMap.set(item, true);\n tempScheme.add(item);\n }\n }\n if (!restrictScheme && schemeMap.has(item)) {\n restrictScheme = schemeMap.get(item);\n }\n }\n }\n }\n } else {\n if (Array.isArray(allow) && allow.length) {\n const items = Object.values(allow);\n for (let item of items) {\n if (isString(item)) {\n item = item.trim();\n if (!REG_SCRIPT_BLOB.test(item)) {\n if (super.has(item)) {\n schemeMap.set(item, true);\n } else {\n try {\n super.add(item);\n } catch (e) {\n // fall through\n }\n if (super.has(item)) {\n schemeMap.set(item, true);\n tempScheme.add(item);\n }\n }\n }\n }\n }\n }\n if (Array.isArray(deny) && deny.length) {\n const items = Object.values(deny);\n for (let item of items) {\n if (isString(item)) {\n item = item.trim();\n if (item) {\n schemeMap.set(item, false);\n }\n }\n }\n }\n }\n let sanitizedUrl;\n if (super.verify(url)) {\n const { hash, href, pathname, protocol, search } = new URL(url);\n const scheme = protocol.replace(/:$/, '');\n const schemeParts = scheme.split('+');\n let bool;\n if (restrictScheme) {\n bool = schemeParts.every(s => schemeMap.get(s));\n } else {\n for (const [key, value] of schemeMap.entries()) {\n bool = value || (scheme !== key && schemeParts.every(s => s !== key));\n if (!bool) {\n break;\n }\n }\n }\n if (bool) {\n const isDataUrl = schemeParts.includes('data');\n let finalize;\n let urlToSanitize = href;\n if (isDataUrl) {\n const [mediaType, ...dataParts] = pathname.split(',');\n const data = `${dataParts.join(',')}${search}${hash}`;\n const mediaTypes = mediaType.split(';');\n const isBase64 = mediaTypes[mediaTypes.length - 1] === 'base64';\n let parsedData = data;\n if (isBase64) {\n parsedData = parseBase64(data);\n }\n try {\n const decodedData = parseURLEncodedNumCharRef(parsedData).trim();\n const { protocol: dataScheme } = new URL(decodedData);\n const dataSchemeParts = dataScheme.replace(/:$/, '').split('+');\n if (dataSchemeParts.some(s => REG_SCRIPT_BLOB.test(s))) {\n urlToSanitize = '';\n }\n } catch (e) {\n // fall through\n }\n const containsDataUrl = REG_DATA_URL.test(parsedData);\n if (parsedData !== data || containsDataUrl) {\n if (containsDataUrl) {\n parsedData = this.replace(parsedData);\n } else if (this.#recurse.has(url)) {\n this.#recurse.delete(url);\n } else {\n finalize = true;\n }\n } else if (this.#recurse.has(url)) {\n this.#recurse.delete(url);\n } else {\n finalize = true;\n }\n if (!mediaType || REG_MIME_DOM.test(mediaType)) {\n parsedData = this.purify(parsedData);\n }\n if (urlToSanitize && parsedData) {\n if (isBase64 && parsedData !== data) {\n mediaTypes.pop();\n }\n urlToSanitize = `${scheme}:${mediaTypes.join(';')},${parsedData}`;\n } else {\n urlToSanitize = '';\n }\n } else {\n finalize = true;\n }\n if (!isDataUrl && REG_TAG_QUOT.test(urlToSanitize)) {\n const item = REG_TAG_QUOT.exec(urlToSanitize);\n const { index } = item;\n urlToSanitize =\n urlToSanitize.substring(0, index).replace(/[?&]$/, '');\n }\n if (urlToSanitize) {\n sanitizedUrl =\n urlToSanitize.replace(/%26/g, escapeURLEncodedHTMLChars);\n if (finalize) {\n this.#nest = 0;\n }\n } else {\n this.#nest = 0;\n }\n }\n if (tempScheme.size) {\n tempScheme.forEach(item => {\n super.remove(item);\n });\n }\n }\n return sanitizedUrl || null;\n }\n\n /**\n * parse sanitized URL\n * @param {string} url - URL\n * @param {object} [opt] - options\n * @param {Array.<string>} [opt.allow] - array of allowed schemes\n * @param {Array.<string>} [opt.deny] - array of denied schemes\n * @param {Array.<string>} [opt.only] - array of specific schemes to allow\n * @returns {ParsedURL} - result with additional props based on URL API\n */\n parse(url, opt) {\n if (!isString(url)) {\n throw new TypeError(`Expected String but got ${getType(url)}.`);\n }\n const parsedUrl = new Map([\n ['input', url]\n ]);\n let sanitizedUrl;\n if (this.verify(url)) {\n const { protocol } = new URL(url);\n if (protocol === 'blob:') {\n sanitizedUrl = url;\n } else {\n sanitizedUrl = this.sanitize(url, opt ?? {\n allow: ['data', 'file']\n });\n }\n }\n if (sanitizedUrl) {\n const urlObj = new URL(sanitizedUrl);\n const { pathname, protocol } = urlObj;\n const schemeParts = protocol.replace(/:$/, '').split('+');\n const isDataUrl = schemeParts.includes('data');\n parsedUrl.set('valid', true);\n if (isDataUrl) {\n const dataUrl = new Map();\n const [mediaType, ...dataParts] = pathname.split(',');\n const data = `${dataParts.join(',')}`;\n const mediaTypes = mediaType.split(';');\n const isBase64 = mediaTypes[mediaTypes.length - 1] === 'base64';\n if (isBase64) {\n mediaTypes.pop();\n }\n dataUrl.set('mime', mediaTypes.join(';'));\n dataUrl.set('base64', isBase64);\n dataUrl.set('data', data);\n parsedUrl.set('data', Object.fromEntries(dataUrl));\n } else {\n parsedUrl.set('data', null);\n }\n for (const key in urlObj) {\n const value = urlObj[key];\n if (isString(value)) {\n parsedUrl.set(key, value);\n }\n }\n } else {\n parsedUrl.set('valid', false);\n }\n return Object.fromEntries(parsedUrl);\n }\n\n /**\n * reset sanitizer\n * @returns {void}\n */\n reset() {\n super.reset();\n this.#nest = 0;\n this.#recurse.clear();\n }\n}\nexport { URLSanitizer };\n\n/* aliases and async wrappers */\n/* instance */\nconst urlSanitizer = new URLSanitizer();\n\n/**\n * sanitize URL async\n * NOTE: `blob`, `data` and `file` schemes must be explicitly allowed\n * given a `blob` URL, returns a sanitized `data` URL\n * @param {string} url - URL\n * @param {object} [opt] - options\n * @param {Array.<string>} [opt.allow] - array of allowed schemes\n * @param {Array.<string>} [opt.deny] - array of denied schemes\n * @param {Array.<string>} [opt.only] - array of specific schemes to allow\n * @returns {Promise.<?string>} - sanitized URL\n */\nexport const sanitizeURL = async (url, opt = {\n allow: [],\n deny: [],\n only: []\n}) => {\n let res;\n if (url && isString(url)) {\n let scheme;\n try {\n const { protocol } = new URL(url);\n scheme = protocol.replace(/:$/, '');\n } catch (e) {\n // fall through;\n }\n if (scheme === 'blob') {\n const { allow, deny, only } = opt;\n if ((Array.isArray(allow) && allow.includes('blob') &&\n !(Array.isArray(deny) && deny.includes('blob'))) ||\n (Array.isArray(only) && only.includes('blob'))) {\n let data;\n try {\n data =\n await fetch(url).then(r => r.blob()).then(createDataURLFromBlob);\n } catch (e) {\n // fall through\n }\n if (data) {\n if (Array.isArray(only)) {\n if (!only.includes('data')) {\n only.push('data');\n }\n } else if (Array.isArray(allow)) {\n if (!allow.includes('data')) {\n allow.push('data');\n }\n if (Array.isArray(deny) && deny.includes('data')) {\n const i = deny.indexOf('data');\n deny.splice(i, 1);\n }\n }\n res = urlSanitizer.sanitize(data, opt);\n }\n }\n URL.revokeObjectURL(url);\n } else if (scheme) {\n res = urlSanitizer.sanitize(url, opt);\n }\n }\n return res || null;\n};\n\n/**\n * sanitize URL sync\n * NOTE: `data` and `file` schemes must be explicitly allowed\n * `blob` scheme returns `null`\n * @param {string} url - URL\n * @param {object} [opt] - options\n * @param {Array.<string>} [opt.allow] - array of allowed schemes\n * @param {Array.<string>} [opt.deny] - array of denied schemes\n * @param {Array.<string>} [opt.only] - array of specific schemes to allow\n * @returns {?string} - sanitized URL\n */\nexport const sanitizeURLSync = (url, opt) => {\n let res;\n if (url && isString(url)) {\n let scheme;\n try {\n const { protocol } = new URL(url);\n scheme = protocol.replace(/:$/, '');\n } catch (e) {\n // fall through;\n }\n if (scheme === 'blob') {\n URL.revokeObjectURL(url);\n } else if (scheme) {\n res = urlSanitizer.sanitize(url, opt);\n }\n }\n return res || null;\n};\n\n/**\n * parse URL async\n * @param {string} url - URL\n * @returns {Promise.<ParsedURL>} - result\n */\nexport const parseURL = async url => {\n const res = urlSanitizer.parse(url);\n return res;\n};\n\n/**\n * parse URL sync\n * @param {string} url - URL\n * @returns {ParsedURL} - result\n */\nexport const parseURLSync = url => urlSanitizer.parse(url);\n\n/**\n * is URI async\n * @param {string} uri - URI\n * @returns {Promise.<boolean>} - result\n */\nexport const isURI = async uri => {\n const res = urlSanitizer.verify(uri);\n return res;\n};\n\n/**\n * is URI sync\n * @param {string} uri - URI\n * @returns {boolean} - result\n */\nexport const isURISync = uri => urlSanitizer.verify(uri);\n\n/* export instance */\nexport default urlSanitizer;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["domPurify", "args", "msg", "REG_B64", "REG_DATA_URL", "REG_DATA_URL_B64", "REG_DATA_URL_G", "REG_NUM_REF", "REG_MIME_DOM", "REG_SCHEME", "REG_SCHEME_EXT", "REG_SCRIPT", "REG_SCRIPT_BLOB", "REG_TAG_QUOT", "REG_URL_ENC", "getType", "o", "isString", "FileReader", "text_chars_default", "uri_schemes_default", "getURLEncodedString", "str", "isString", "getType", "chars", "ch", "escapeURLEncodedHTMLChars", "REG_URL_ENC", "amp", "num", "lt", "gt", "quot", "apos", "escapedChar", "parseBase64", "data", "REG_B64", "bin", "uint8arr", "c", "textCharCodes", "text_chars_default", "parsedData", "parseURLEncodedNumCharRef", "nest", "res", "items", "REG_NUM_REF", "item", "numCharRef", "value", "index", "preNum", "postNum", "createDataURLFromBlob", "blob", "resolve", "reject", "reader", "FileReader", "URISchemes", "#schemes", "uri_schemes_default", "scheme", "REG_SCRIPT", "REG_SCHEME", "uri", "protocol", "schemeParts", "REG_SCHEME_EXT", "s", "URLSanitizer", "URISchemes", "#nest", "#recurse", "data", "isString", "getType", "replacedData", "REG_DATA_URL", "items", "REG_DATA_URL_G", "item", "dataUrl", "REG_DATA_URL_B64", "parsedDataUrl", "index", "preDataUrl", "postDataUrl", "dom", "purifiedDom", "domPurify", "url", "opt", "allow", "deny", "only", "schemeMap", "tempScheme", "restrictScheme", "schemes", "REG_SCRIPT_BLOB", "sanitizedUrl", "hash", "href", "pathname", "protocol", "search", "scheme", "schemeParts", "bool", "s", "key", "value", "isDataUrl", "finalize", "urlToSanitize", "mediaType", "dataParts", "mediaTypes", "isBase64", "parsedData", "parseBase64", "decodedData", "parseURLEncodedNumCharRef", "dataScheme", "containsDataUrl", "REG_MIME_DOM", "REG_TAG_QUOT", "escapeURLEncodedHTMLChars", "parsedUrl", "urlObj", "urlSanitizer", "URLSanitizer", "sanitizeURL", "url", "opt", "res", "isString", "scheme", "protocol", "allow", "deny", "only", "data", "r", "createDataURLFromBlob", "i", "sanitizeURLSync", "parseURL", "parseURLSync", "isURI", "uri", "isURISync", "sanitizer_default"]
|
|
7
7
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
var{entries:Zt,setPrototypeOf:zt,isFrozen:Sn,getPrototypeOf:wn,getOwnPropertyDescriptor:xn}=Object,{freeze:M,seal:z,create:de}=Object,{apply:it,construct:at}=typeof Reflect<"u"&&Reflect;M||(M=function(t){return t});z||(z=function(t){return t});it||(it=function(t,o){for(var r=arguments.length,a=new Array(r>2?r-2:0),c=2;c<r;c++)a[c-2]=arguments[c];return t.apply(o,a)});at||(at=function(t){for(var o=arguments.length,r=new Array(o>1?o-1:0),a=1;a<o;a++)r[a-1]=arguments[a];return new t(...r)});var Re=R(Array.prototype.forEach),Ln=R(Array.prototype.lastIndexOf),Gt=R(Array.prototype.pop),be=R(Array.prototype.push),On=R(Array.prototype.splice),N=Array.isArray,xe=R(String.prototype.toLowerCase),tt=R(String.prototype.toString),Ht=R(String.prototype.match),ue=R(String.prototype.replace),Bt=R(String.prototype.indexOf),Dn=R(String.prototype.trim),In=R(Number.prototype.toString),Cn=R(Boolean.prototype.toString),$t=typeof BigInt>"u"?null:R(BigInt.prototype.toString),Wt=typeof Symbol>"u"?null:R(Symbol.prototype.toString),E=R(Object.prototype.hasOwnProperty),Se=R(Object.prototype.toString),O=R(RegExp.prototype.test),Me=Nn(TypeError);function R(n){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var o=arguments.length,r=new Array(o>1?o-1:0),a=1;a<o;a++)r[a-1]=arguments[a];return it(n,t,r)}}function Nn(n){return function(){for(var t=arguments.length,o=new Array(t),r=0;r<t;r++)o[r]=arguments[r];return at(n,o)}}function p(n,t){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:xe;if(zt&&zt(n,null),!N(t))return n;let r=t.length;for(;r--;){let a=t[r];if(typeof a=="string"){let c=o(a);c!==a&&(Sn(t)||(t[r]=c),a=c)}n[a]=!0}return n}function Mn(n){for(let t=0;t<n.length;t++)E(n,t)||(n[t]=null);return n}function U(n){let t=de(null);for(let[o,r]of Zt(n))E(n,o)&&(N(r)?t[o]=Mn(r):r&&typeof r=="object"&&r.constructor===Object?t[o]=U(r):t[o]=r);return t}function vn(n){switch(typeof n){case"string":return n;case"number":return In(n);case"boolean":return Cn(n);case"bigint":return $t?$t(n):"0";case"symbol":return Wt?Wt(n):"Symbol()";case"undefined":return Se(n);case"function":case"object":{if(n===null)return Se(n);let t=n,o=he(t,"toString");if(typeof o=="function"){let r=o(t);return typeof r=="string"?r:Se(r)}return Se(n)}default:return Se(n)}}function he(n,t){for(;n!==null;){let r=xn(n,t);if(r){if(r.get)return R(r.get);if(typeof r.value=="function")return R(r.value)}n=wn(n)}function o(){return null}return o}function Un(n){try{return O(n,""),!0}catch{return!1}}var jt=M(["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","dialog","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","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","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"]),nt=M(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),st=M(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Pn=M(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),ot=M(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),kn=M(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Yt=M(["#text"]),Xt=M(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),rt=M(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","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","exponent","fill","fill-opacity","fill-rule","filter","filterunits","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","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),qt=M(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","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","width","xmlns"]),ve=M(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Fn=z(/\{\{[\w\W]*|[\w\W]*\}\}/gm),zn=z(/<%[\w\W]*|[\w\W]*%>/gm),Gn=z(/\$\{[\w\W]*/gm),Hn=z(/^data-[\-\w.\u00B7-\uFFFF]+$/),Bn=z(/^aria-[\-\w]+$/),Qt=z(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),$n=z(/^(?:\w+script|data):/i),Wn=z(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Jt=z(/^html$/i),jn=z(/^[a-z][.\w]*(-[.\w]+)+$/i),Vt=Object.freeze({__proto__:null,ARIA_ATTR:Bn,ATTR_WHITESPACE:Wn,CUSTOM_ELEMENT:jn,DATA_ATTR:Hn,DOCTYPE_NAME:Jt,ERB_EXPR:zn,IS_ALLOWED_URI:Qt,IS_SCRIPT_OR_DATA:$n,MUSTACHE_EXPR:Fn,TMPLIT_EXPR:Gn}),we={element:1,text:3,progressingInstruction:7,comment:8,document:9},Yn=function(){return typeof window>"u"?null:window},Xn=function(t,o){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let r=null,a="data-tt-policy-suffix";o&&o.hasAttribute(a)&&(r=o.getAttribute(a));let c="dompurify"+(r?"#"+r:"");try{return t.createPolicy(c,{createHTML(f){return f},createScriptURL(f){return f}})}catch{return console.warn("TrustedTypes policy "+c+" could not be created."),null}},Kt=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function en(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Yn(),t=l=>en(l);if(t.version="3.4.2",t.removed=[],!n||!n.document||n.document.nodeType!==we.document||!n.Element)return t.isSupported=!1,t;let{document:o}=n,r=o,a=r.currentScript,{DocumentFragment:c,HTMLTemplateElement:f,Node:u,Element:T,NodeFilter:I,NamedNodeMap:g=n.NamedNodeMap||n.MozNamedAttrMap,HTMLFormElement:m,DOMParser:_,trustedTypes:q}=n,k=T.prototype,K=he(k,"cloneNode"),ge=he(k,"remove"),re=he(k,"nextSibling"),G=he(k,"childNodes"),H=he(k,"parentNode");if(typeof f=="function"){let l=o.createElement("template");l.content&&l.content.ownerDocument&&(o=l.content.ownerDocument)}let d,B="",{implementation:J,createNodeIterator:ie,createDocumentFragment:ae,getElementsByTagName:Le}=o,{importNode:P}=r,S=Kt();t.isSupported=typeof Zt=="function"&&typeof H=="function"&&J&&J.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:ee,ERB_EXPR:le,TMPLIT_EXPR:Te,DATA_ATTR:Ge,ARIA_ATTR:dn,IS_SCRIPT_OR_DATA:hn,ATTR_WHITESPACE:dt,CUSTOM_ELEMENT:gn}=Vt,{IS_ALLOWED_URI:ht}=Vt,w=null,gt=p({},[...jt,...nt,...st,...ot,...Yt]),L=null,Tt=p({},[...Xt,...rt,...qt,...ve]),A=Object.seal(de(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ee=null,Oe=null,Z=Object.seal(de(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Et=!0,He=!0,_t=!1,At=!0,te=!1,_e=!0,ne=!1,Be=!1,$e=!1,ce=!1,De=!1,Ie=!1,yt=!0,Rt=!1,bt="user-content-",We=!0,Ae=!1,pe={},j=null,je=p({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),St=null,wt=p({},["audio","video","img","source","image","track"]),Ye=null,xt=p({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ce="http://www.w3.org/1998/Math/MathML",Ne="http://www.w3.org/2000/svg",Y="http://www.w3.org/1999/xhtml",fe=Y,Xe=!1,qe=null,Tn=p({},[Ce,Ne,Y],tt),Ve=p({},["mi","mo","mn","ms","mtext"]),Ke=p({},["annotation-xml"]),En=p({},["title","style","font","a","script"]),ye=null,_n=["application/xhtml+xml","text/html"],An="text/html",b=null,me=null,yn=o.createElement("form"),Lt=function(e){return e instanceof RegExp||e instanceof Function},Ze=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(me&&me===e)return;(!e||typeof e!="object")&&(e={}),e=U(e),ye=_n.indexOf(e.PARSER_MEDIA_TYPE)===-1?An:e.PARSER_MEDIA_TYPE,b=ye==="application/xhtml+xml"?tt:xe,w=E(e,"ALLOWED_TAGS")&&N(e.ALLOWED_TAGS)?p({},e.ALLOWED_TAGS,b):gt,L=E(e,"ALLOWED_ATTR")&&N(e.ALLOWED_ATTR)?p({},e.ALLOWED_ATTR,b):Tt,qe=E(e,"ALLOWED_NAMESPACES")&&N(e.ALLOWED_NAMESPACES)?p({},e.ALLOWED_NAMESPACES,tt):Tn,Ye=E(e,"ADD_URI_SAFE_ATTR")&&N(e.ADD_URI_SAFE_ATTR)?p(U(xt),e.ADD_URI_SAFE_ATTR,b):xt,St=E(e,"ADD_DATA_URI_TAGS")&&N(e.ADD_DATA_URI_TAGS)?p(U(wt),e.ADD_DATA_URI_TAGS,b):wt,j=E(e,"FORBID_CONTENTS")&&N(e.FORBID_CONTENTS)?p({},e.FORBID_CONTENTS,b):je,Ee=E(e,"FORBID_TAGS")&&N(e.FORBID_TAGS)?p({},e.FORBID_TAGS,b):U({}),Oe=E(e,"FORBID_ATTR")&&N(e.FORBID_ATTR)?p({},e.FORBID_ATTR,b):U({}),pe=E(e,"USE_PROFILES")?e.USE_PROFILES&&typeof e.USE_PROFILES=="object"?U(e.USE_PROFILES):e.USE_PROFILES:!1,Et=e.ALLOW_ARIA_ATTR!==!1,He=e.ALLOW_DATA_ATTR!==!1,_t=e.ALLOW_UNKNOWN_PROTOCOLS||!1,At=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,te=e.SAFE_FOR_TEMPLATES||!1,_e=e.SAFE_FOR_XML!==!1,ne=e.WHOLE_DOCUMENT||!1,ce=e.RETURN_DOM||!1,De=e.RETURN_DOM_FRAGMENT||!1,Ie=e.RETURN_TRUSTED_TYPE||!1,$e=e.FORCE_BODY||!1,yt=e.SANITIZE_DOM!==!1,Rt=e.SANITIZE_NAMED_PROPS||!1,We=e.KEEP_CONTENT!==!1,Ae=e.IN_PLACE||!1,ht=Un(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:Qt,fe=typeof e.NAMESPACE=="string"?e.NAMESPACE:Y,Ve=E(e,"MATHML_TEXT_INTEGRATION_POINTS")&&e.MATHML_TEXT_INTEGRATION_POINTS&&typeof e.MATHML_TEXT_INTEGRATION_POINTS=="object"?U(e.MATHML_TEXT_INTEGRATION_POINTS):p({},["mi","mo","mn","ms","mtext"]),Ke=E(e,"HTML_INTEGRATION_POINTS")&&e.HTML_INTEGRATION_POINTS&&typeof e.HTML_INTEGRATION_POINTS=="object"?U(e.HTML_INTEGRATION_POINTS):p({},["annotation-xml"]);let s=E(e,"CUSTOM_ELEMENT_HANDLING")&&e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING=="object"?U(e.CUSTOM_ELEMENT_HANDLING):de(null);if(A=de(null),E(s,"tagNameCheck")&&Lt(s.tagNameCheck)&&(A.tagNameCheck=s.tagNameCheck),E(s,"attributeNameCheck")&&Lt(s.attributeNameCheck)&&(A.attributeNameCheck=s.attributeNameCheck),E(s,"allowCustomizedBuiltInElements")&&typeof s.allowCustomizedBuiltInElements=="boolean"&&(A.allowCustomizedBuiltInElements=s.allowCustomizedBuiltInElements),te&&(He=!1),De&&(ce=!0),pe&&(w=p({},Yt),L=de(null),pe.html===!0&&(p(w,jt),p(L,Xt)),pe.svg===!0&&(p(w,nt),p(L,rt),p(L,ve)),pe.svgFilters===!0&&(p(w,st),p(L,rt),p(L,ve)),pe.mathMl===!0&&(p(w,ot),p(L,qt),p(L,ve))),Z.tagCheck=null,Z.attributeCheck=null,E(e,"ADD_TAGS")&&(typeof e.ADD_TAGS=="function"?Z.tagCheck=e.ADD_TAGS:N(e.ADD_TAGS)&&(w===gt&&(w=U(w)),p(w,e.ADD_TAGS,b))),E(e,"ADD_ATTR")&&(typeof e.ADD_ATTR=="function"?Z.attributeCheck=e.ADD_ATTR:N(e.ADD_ATTR)&&(L===Tt&&(L=U(L)),p(L,e.ADD_ATTR,b))),E(e,"ADD_URI_SAFE_ATTR")&&N(e.ADD_URI_SAFE_ATTR)&&p(Ye,e.ADD_URI_SAFE_ATTR,b),E(e,"FORBID_CONTENTS")&&N(e.FORBID_CONTENTS)&&(j===je&&(j=U(j)),p(j,e.FORBID_CONTENTS,b)),E(e,"ADD_FORBID_CONTENTS")&&N(e.ADD_FORBID_CONTENTS)&&(j===je&&(j=U(j)),p(j,e.ADD_FORBID_CONTENTS,b)),We&&(w["#text"]=!0),ne&&p(w,["html","head","body"]),w.table&&(p(w,["tbody"]),delete Ee.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!="function")throw Me('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Me('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');d=e.TRUSTED_TYPES_POLICY,B=d.createHTML("")}else d===void 0&&(d=Xn(q,a)),d!==null&&typeof B=="string"&&(B=d.createHTML(""));M&&M(e),me=e},Ot=p({},[...nt,...st,...Pn]),Dt=p({},[...ot,...kn]),Rn=function(e){let s=H(e);(!s||!s.tagName)&&(s={namespaceURI:fe,tagName:"template"});let i=xe(e.tagName),h=xe(s.tagName);return qe[e.namespaceURI]?e.namespaceURI===Ne?s.namespaceURI===Y?i==="svg":s.namespaceURI===Ce?i==="svg"&&(h==="annotation-xml"||Ve[h]):!!Ot[i]:e.namespaceURI===Ce?s.namespaceURI===Y?i==="math":s.namespaceURI===Ne?i==="math"&&Ke[h]:!!Dt[i]:e.namespaceURI===Y?s.namespaceURI===Ne&&!Ke[h]||s.namespaceURI===Ce&&!Ve[h]?!1:!Dt[i]&&(En[i]||!Ot[i]):!!(ye==="application/xhtml+xml"&&qe[e.namespaceURI]):!1},$=function(e){be(t.removed,{element:e});try{H(e).removeChild(e)}catch{ge(e)}},se=function(e,s){try{be(t.removed,{attribute:s.getAttributeNode(e),from:s})}catch{be(t.removed,{attribute:null,from:s})}if(s.removeAttribute(e),e==="is")if(ce||De)try{$(s)}catch{}else try{s.setAttribute(e,"")}catch{}},It=function(e){let s=null,i=null;if($e)e="<remove></remove>"+e;else{let y=Ht(e,/^[\r\n\t ]+/);i=y&&y[0]}ye==="application/xhtml+xml"&&fe===Y&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");let h=d?d.createHTML(e):e;if(fe===Y)try{s=new _().parseFromString(h,ye)}catch{}if(!s||!s.documentElement){s=J.createDocument(fe,"template",null);try{s.documentElement.innerHTML=Xe?B:h}catch{}}let C=s.body||s.documentElement;return e&&i&&C.insertBefore(o.createTextNode(i),C.childNodes[0]||null),fe===Y?Le.call(s,ne?"html":"body")[0]:ne?s.documentElement:C},Ct=function(e){return ie.call(e.ownerDocument||e,e,I.SHOW_ELEMENT|I.SHOW_COMMENT|I.SHOW_TEXT|I.SHOW_PROCESSING_INSTRUCTION|I.SHOW_CDATA_SECTION,null)},Qe=function(e){return e instanceof m&&(typeof e.nodeName!="string"||typeof e.textContent!="string"||typeof e.removeChild!="function"||!(e.attributes instanceof g)||typeof e.removeAttribute!="function"||typeof e.setAttribute!="function"||typeof e.namespaceURI!="string"||typeof e.insertBefore!="function"||typeof e.hasChildNodes!="function")},Je=function(e){return typeof u=="function"&&e instanceof u};function V(l,e,s){Re(l,i=>{i.call(t,e,s,me)})}let Nt=function(e){let s=null;if(V(S.beforeSanitizeElements,e,null),Qe(e))return $(e),!0;let i=b(e.nodeName);if(V(S.uponSanitizeElement,e,{tagName:i,allowedTags:w}),_e&&e.hasChildNodes()&&!Je(e.firstElementChild)&&O(/<[/\w!]/g,e.innerHTML)&&O(/<[/\w!]/g,e.textContent)||_e&&e.namespaceURI===Y&&i==="style"&&Je(e.firstElementChild)||e.nodeType===we.progressingInstruction||_e&&e.nodeType===we.comment&&O(/<[/\w]/g,e.data))return $(e),!0;if(Ee[i]||!(Z.tagCheck instanceof Function&&Z.tagCheck(i))&&!w[i]){if(!Ee[i]&&vt(i)&&(A.tagNameCheck instanceof RegExp&&O(A.tagNameCheck,i)||A.tagNameCheck instanceof Function&&A.tagNameCheck(i)))return!1;if(We&&!j[i]){let h=H(e)||e.parentNode,C=G(e)||e.childNodes;if(C&&h){let y=C.length;for(let v=y-1;v>=0;--v){let F=K(C[v],!0);h.insertBefore(F,re(e))}}}return $(e),!0}return e instanceof T&&!Rn(e)||(i==="noscript"||i==="noembed"||i==="noframes")&&O(/<\/no(script|embed|frames)/i,e.innerHTML)?($(e),!0):(te&&e.nodeType===we.text&&(s=e.textContent,Re([ee,le,Te],h=>{s=ue(s,h," ")}),e.textContent!==s&&(be(t.removed,{element:e.cloneNode()}),e.textContent=s)),V(S.afterSanitizeElements,e,null),!1)},Mt=function(e,s,i){if(Oe[s]||yt&&(s==="id"||s==="name")&&(i in o||i in yn))return!1;let h=L[s]||Z.attributeCheck instanceof Function&&Z.attributeCheck(s,e);if(!(He&&!Oe[s]&&O(Ge,s))){if(!(Et&&O(dn,s))){if(!h||Oe[s]){if(!(vt(e)&&(A.tagNameCheck instanceof RegExp&&O(A.tagNameCheck,e)||A.tagNameCheck instanceof Function&&A.tagNameCheck(e))&&(A.attributeNameCheck instanceof RegExp&&O(A.attributeNameCheck,s)||A.attributeNameCheck instanceof Function&&A.attributeNameCheck(s,e))||s==="is"&&A.allowCustomizedBuiltInElements&&(A.tagNameCheck instanceof RegExp&&O(A.tagNameCheck,i)||A.tagNameCheck instanceof Function&&A.tagNameCheck(i))))return!1}else if(!Ye[s]){if(!O(ht,ue(i,dt,""))){if(!((s==="src"||s==="xlink:href"||s==="href")&&e!=="script"&&Bt(i,"data:")===0&&St[e])){if(!(_t&&!O(hn,ue(i,dt,"")))){if(i)return!1}}}}}}return!0},bn=p({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),vt=function(e){return!bn[xe(e)]&&O(gn,e)},Ut=function(e){V(S.beforeSanitizeAttributes,e,null);let{attributes:s}=e;if(!s||Qe(e))return;let i={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:L,forceKeepAttr:void 0},h=s.length;for(;h--;){let C=s[h],{name:y,namespaceURI:v,value:F}=C,W=b(y),et=F,x=y==="value"?et:Dn(et);if(i.attrName=W,i.attrValue=x,i.keepAttr=!0,i.forceKeepAttr=void 0,V(S.uponSanitizeAttribute,e,i),x=i.attrValue,Rt&&(W==="id"||W==="name")&&Bt(x,bt)!==0&&(se(y,e),x=bt+x),_e&&O(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,x)){se(y,e);continue}if(W==="attributename"&&Ht(x,"href")){se(y,e);continue}if(i.forceKeepAttr)continue;if(!i.keepAttr){se(y,e);continue}if(!At&&O(/\/>/i,x)){se(y,e);continue}te&&Re([ee,le,Te],Ft=>{x=ue(x,Ft," ")});let kt=b(e.nodeName);if(!Mt(kt,W,x)){se(y,e);continue}if(d&&typeof q=="object"&&typeof q.getAttributeType=="function"&&!v)switch(q.getAttributeType(kt,W)){case"TrustedHTML":{x=d.createHTML(x);break}case"TrustedScriptURL":{x=d.createScriptURL(x);break}}if(x!==et)try{v?e.setAttributeNS(v,y,x):e.setAttribute(y,x),Qe(e)?$(e):Gt(t.removed)}catch{se(y,e)}}V(S.afterSanitizeAttributes,e,null)},Pt=function(e){let s=null,i=Ct(e);for(V(S.beforeSanitizeShadowDOM,e,null);s=i.nextNode();)V(S.uponSanitizeShadowNode,s,null),Nt(s),Ut(s),s.content instanceof c&&Pt(s.content);V(S.afterSanitizeShadowDOM,e,null)};return t.sanitize=function(l){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=null,i=null,h=null,C=null;if(Xe=!l,Xe&&(l="<!-->"),typeof l!="string"&&!Je(l)&&(l=vn(l),typeof l!="string"))throw Me("dirty is not a string, aborting");if(!t.isSupported)return l;if(Be||Ze(e),t.removed=[],typeof l=="string"&&(Ae=!1),Ae){let F=l.nodeName;if(typeof F=="string"){let W=b(F);if(!w[W]||Ee[W])throw Me("root node is forbidden and cannot be sanitized in-place")}}else if(l instanceof u)s=It("<!---->"),i=s.ownerDocument.importNode(l,!0),i.nodeType===we.element&&i.nodeName==="BODY"||i.nodeName==="HTML"?s=i:s.appendChild(i);else{if(!ce&&!te&&!ne&&l.indexOf("<")===-1)return d&&Ie?d.createHTML(l):l;if(s=It(l),!s)return ce?null:Ie?B:""}s&&$e&&$(s.firstChild);let y=Ct(Ae?l:s);for(;h=y.nextNode();)Nt(h),Ut(h),h.content instanceof c&&Pt(h.content);if(Ae)return l;if(ce){if(te){s.normalize();let F=s.innerHTML;Re([ee,le,Te],W=>{F=ue(F,W," ")}),s.innerHTML=F}if(De)for(C=ae.call(s.ownerDocument);s.firstChild;)C.appendChild(s.firstChild);else C=s;return(L.shadowroot||L.shadowrootmode)&&(C=P.call(r,C,!0)),C}let v=ne?s.outerHTML:s.innerHTML;return ne&&w["!doctype"]&&s.ownerDocument&&s.ownerDocument.doctype&&s.ownerDocument.doctype.name&&O(Jt,s.ownerDocument.doctype.name)&&(v="<!DOCTYPE "+s.ownerDocument.doctype.name+`>
|
|
2
|
-
`+v),te&&Re([ee,le,Te],F=>{v=ue(v,F," ")}),d&&Ie?d.createHTML(v):v},t.setConfig=function(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ze(l),Be=!0},t.clearConfig=function(){me=null,Be=!1},t.isValidAttribute=function(l,e,s){me||Ze({});let i=b(l),h=b(e);return Mt(i,h,s)},t.addHook=function(l,e){typeof e=="function"&&be(S[l],e)},t.removeHook=function(l,e){if(e!==void 0){let s=Ln(S[l],e);return s===-1?void 0:On(S[l],s,1)[0]}return Gt(S[l])},t.removeHooks=function(l){S[l]=[]},t.removeAllHooks=function(){S=Kt()},t}var lt=en();var tn=/^[\w+/=-]+$/;var Ue=/data:[\w#&+./;=-]*,/,ct=/data:[\w#&+./;=^]*base64,[\w+/=-]+/i,nn=/data:[\w#&+./;=-]*,[^\x22]+/g,sn=/&#(x(?:00)?[\dA-F]{2}|0?\d{1,3});?/gi,on=/^(?:application\/(?:[\w#&.;-]+\+)?x|image\/svg\+x|text\/(?:ht|x))ml;?/;var rn=/^[a-z][\da-z+.-]*$/,an=/^(?:ext|web)\+[a-z]+$/,pt=/(?:java|vb)script/,Pe=/(?:java|vb)script|blob/,ft=/%(?:22|27|3C|3E)|[\x22\x27<>]/,ln=/^%[\dA-F]{2}$/i;var X=n=>Object.prototype.toString.call(n).slice(8,-1),D=n=>typeof n=="string"||n instanceof String;var{FileReader:cn}=globalThis;var ke=[7,8,9,10,11,12,13,27,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255];var Fe=["aaa","aaas","about","acap","acct","acd","acr","adiumxtra","adt","afp","afs","agtp","aim","amss","android","appdata","apt","ar","ari","ark","at","attachment","aw","barion","beshare","bitcoin","bitcoincash","bl","blob","bluetooth","bolo","brid","browserext","cabal","caip","calculator","callto","cap","cast","casts","chrome","chrome-extension","cid","coap","coaps","com-eventbrite-attendee","content","content-type","crid","cstr","cvs","dab","dat","data","dav","dhttp","diaspora","dict","did","dilithium3","dis","dlna-playcontainer","dlna-playsingle","dnp","dns","dntp","doi","donau","dpp","drm","dtmi","dtn","dvb","dvx","dweb","ed2k","eid","elsi","embedded","ens","esim","ethereum","example","facetime","feed","feedready","fido","file","finger","first-run-pen-experience","fish","fm","ftp","fuchsia-pkg","geo","gg","git","gitoid","gizmoproject","go","gopher","graph","gtalk","h323","ham","hcap","hcp","hs20","http","https","hxxp","hxxps","hydrazone","hyper","i0","iax","ibi","ibi-","icap","icon","ilstring","im","imap","info","iotdisco","ipfs","ipn","ipns","ipp","ipps","irc","irc6","ircs","iris","iris.beep","iris.lwz","iris.xpc","iris.xpcs","isostore","itms","jabber","jar","jms","keyparc","lastfm","lbry","ldap","ldaps","leaptofrogans","lid","linkid","lorawan","lpa","lvlt","machineProvisioningProgressReporter","magnet","mailto","maps","market","matrix","message","microsoft.windows.camera","microsoft.windows.camera.multipicker","microsoft.windows.camera.picker","mid","mms","mongodb","moz","moz-extension","mqtt","mqtts","ms-access","ms-appinstaller","ms-browser-extension","ms-calculator","ms-drive-to","ms-enrollment","ms-excel","ms-eyecontrolspeech","ms-gamebarservices","ms-gamingoverlay","ms-getoffice","ms-help","ms-infopath","ms-inputapp","ms-launchremotedesktop","ms-lockscreencomponent-config","ms-media-stream-id","ms-meetnow","ms-mixedrealitycapture","ms-mobileplans","ms-newsandinterests","ms-officeapp","ms-people","ms-personacard","ms-powerpoint","ms-project","ms-publisher","ms-recall","ms-remotedesktop","ms-remotedesktop-launch","ms-restoretabcompanion","ms-screenclip","ms-screensketch","ms-search","ms-search-repair","ms-secondary-screen-controller","ms-secondary-screen-setup","ms-settings","ms-settings-airplanemode","ms-settings-bluetooth","ms-settings-camera","ms-settings-cellular","ms-settings-cloudstorage","ms-settings-connectabledevices","ms-settings-displays-topology","ms-settings-emailandaccounts","ms-settings-language","ms-settings-location","ms-settings-lock","ms-settings-nfctransactions","ms-settings-notifications","ms-settings-power","ms-settings-privacy","ms-settings-proximity","ms-settings-screenrotation","ms-settings-wifi","ms-settings-workplace","ms-spd","ms-stickers","ms-sttoverlay","ms-transit-to","ms-useractivityset","ms-uup","ms-virtualtouchpad","ms-visio","ms-walk-to","ms-whiteboard","ms-whiteboard-cmd","ms-widgetboard","ms-widgets","ms-word","msnim","msrp","msrps","mss","mt","mtqp","mtrust","mumble","mupdate","mvn","mvrp","mvrps","news","nfs","ni","nih","nntp","notes","num","ocf","oid","onenote","onenote-cmd","opaquelocktoken","openid","openpgp4fpr","otpauth","palm","paparazzi","payto","pkcs11","platform","pop","pres","proxy","psyc","pttp","pwid","qb","query","quic-transport","redis","rediss","reload","res","resource","rmi","rsync","rtmfp","rtmp","rtsp","rtsps","rtspu","sarif","secondlife","secret-token","service","session","sftp","sgn","shc","shelter","sieve","simpleledger","simplex","sip","sips","skype","smb","smp","sms","smtp","snmp","soap.beep","soap.beeps","soldat","spacify","spiffe","spotify","ssb","ssh","starknet","steam","stun","stuns","submit","svn","swh","swid","swidpath","tag","taler","teamspeak","teapot","teapots","tel","teliaeid","telnet","tftp","things","thismessage","tip","tn3270","tool","turn","turns","tv","udp","unreal","upn","urn","ut2004","uuid-in-package","v-event","vemmi","ventrilo","ves","view-source","vnc","vscode","vscode-insiders","vsls","w3","wasm","wasm-js","wcr","web3","webcal","wifi","ws","wss","wtai","wyciwyg","xcompute","xcon","xcon-userid","xfire","xftp","xmlrpc.beep","xmlrpc.beeps","xmpp","xrcp","xri","ymsgr","z39.50r","z39.50s"];var pn=n=>{if(!D(n))throw new TypeError(`Expected String but got ${X(n)}.`);let t=[];for(let o of n)t.push(`%${o.charCodeAt(0).toString(16).toUpperCase()}`);return t.join("")},fn=n=>{D(n)&&ln.test(n)&&(n=n.toUpperCase());let[t,o,r,a,c,f]=["&","#","<",">",'"',"'"].map(pn),u;return n===t?u=`${t}amp;`:n===r?u=`${t}lt;`:n===a?u=`${t}gt;`:n===c?u=`${t}quot;`:n===f?u=`${t}${o}39;`:u=n,u},mn=n=>{if(D(n)){if(!tn.test(n))throw new Error(`Invalid base64 data: ${n}`)}else throw new TypeError(`Expected String but got ${X(n)}.`);let t=atob(n),o=Uint8Array.from([...t].map(c=>c.charCodeAt(0))),r=new Set(ke),a;return o.every(c=>r.has(c))?a=t.replace(/\s/g,pn):a=n,a},mt=(n,t=0)=>{if(!D(n))throw new TypeError(`Expected String but got ${X(n)}.`);if(Number.isInteger(t)){if(t>16)throw new Error("Character references nested too deeply.")}else throw new TypeError(`Expected Number but got ${X(t)}.`);let o=decodeURIComponent(n);if(/&#/.test(o)){let r=new Set(ke),a=[...o.matchAll(sn)].reverse();for(let c of a){let[f,u]=c,T;if(/^x[\dA-F]+/i.test(u)?T=parseInt(`0${u}`,16):/^\d+/.test(u)&&(T=parseInt(u)),Number.isInteger(T)){let{index:I}=c,[g,m]=[o.substring(0,I),o.substring(I+f.length)];r.has(T)?(o=`${g}${String.fromCharCode(T)}${m}`,(/#x?$/.test(g)||/^#(?:x(?:00)?[2-7]|\d)/.test(m))&&(o=mt(o,++t))):T<256&&(o=`${g}${m}`)}}}return o},un=n=>new Promise((t,o)=>{let r=new cn;r.addEventListener("error",()=>o(r.error)),r.addEventListener("abort",()=>t(r.result)),r.addEventListener("load",()=>t(r.result)),r.readAsDataURL(n)}),ze=class{#e;constructor(){this.#e=new Set(Fe)}get(){return[...this.#e]}has(t){return this.#e.has(t)}add(t){if(D(t)){if(pt.test(t)||!rn.test(t))throw new Error(`Invalid scheme: ${t}`)}else throw new TypeError(`Expected String but got ${X(t)}.`);return this.#e.add(t),[...this.#e]}remove(t){return this.#e.delete(t)}verify(t){let o;if(D(t))try{let{protocol:r}=new URL(t),a=r.replace(/:$/,""),c=a.split("+");o=!pt.test(a)&&an.test(a)||c.every(f=>this.#e.has(f))}catch{o=!1}return!!o}reset(){this.#e.clear();for(let t of Fe)this.#e.add(t)}};var ut=class extends ze{#e;#t=new Set;constructor(){super(),this.#e=0}replace(t){if(!D(t))throw new TypeError(`Expected String but got ${X(t)}.`);let o=t;if(Ue.test(o)){let a=[...o.matchAll(nn)].reverse();for(let c of a){let[f]=c;ct.test(f)&&([f]=ct.exec(f)),this.#e++,this.#t.add(f);let u=this.sanitize(f,{allow:["data"]}),{index:T}=c,[I,g]=[o.substring(0,T),o.substring(T+f.length)];u?o=`${I}${u}${g}`:o=`${I}${g}`}}return o}purify(t){if(!D(t))throw new TypeError(`Expected String but got ${X(t)}.`);let o=lt.sanitize(decodeURIComponent(t));return o&&Ue.test(o)&&(o=this.replace(o)),o=o.replace(/(?:#|%23)$/,"").replace(/(?<!(?:#|%23).*)(?:\?|%3F)$/,""),encodeURI(o)}sanitize(t,o){if(this.#e>16)throw this.#e=0,new Error("Data URLs nested too deeply.");let{allow:r,deny:a,only:c}=o??{},f=new Map([["blob",!1],["data",!1],["file",!1],["javascrpt",!1],["vbscript",!1]]),u=new Set,T=!1;if(Array.isArray(c)&&c.length){let g=super.get();for(let _ of g)f.set(_,!1);let m=Object.values(c);for(let _ of m)if(D(_)&&(_=_.trim(),!Pe.test(_))){if(super.has(_))f.set(_,!0);else{try{super.add(_)}catch{}super.has(_)&&(f.set(_,!0),u.add(_))}!T&&f.has(_)&&(T=f.get(_))}}else{if(Array.isArray(r)&&r.length){let g=Object.values(r);for(let m of g)if(D(m)&&(m=m.trim(),!Pe.test(m)))if(super.has(m))f.set(m,!0);else{try{super.add(m)}catch{}super.has(m)&&(f.set(m,!0),u.add(m))}}if(Array.isArray(a)&&a.length){let g=Object.values(a);for(let m of g)D(m)&&(m=m.trim(),m&&f.set(m,!1))}}let I;if(super.verify(t)){let{hash:g,href:m,pathname:_,protocol:q,search:k}=new URL(t),K=q.replace(/:$/,""),ge=K.split("+"),re;if(T)re=ge.every(G=>f.get(G));else for(let[G,H]of f.entries())if(re=H||K!==G&&ge.every(d=>d!==G),!re)break;if(re){let G=ge.includes("data"),H,d=m;if(G){let[B,...J]=_.split(","),ie=`${J.join(",")}${k}${g}`,ae=B.split(";"),Le=ae[ae.length-1]==="base64",P=ie;Le&&(P=mn(ie));try{let ee=mt(P).trim(),{protocol:le}=new URL(ee);le.replace(/:$/,"").split("+").some(Ge=>Pe.test(Ge))&&(d="")}catch{}let S=Ue.test(P);P!==ie||S?S?P=this.replace(P):this.#t.has(t)?this.#t.delete(t):H=!0:this.#t.has(t)?this.#t.delete(t):H=!0,(!B||on.test(B))&&(P=this.purify(P)),d&&P?(Le&&P!==ie&&ae.pop(),d=`${K}:${ae.join(";")},${P}`):d=""}else H=!0;if(!G&&ft.test(d)){let B=ft.exec(d),{index:J}=B;d=d.substring(0,J).replace(/[?&]$/,"")}d?(I=d.replace(/%26/g,fn),H&&(this.#e=0)):this.#e=0}u.size&&u.forEach(G=>{super.remove(G)})}return I||null}parse(t,o){if(!D(t))throw new TypeError(`Expected String but got ${X(t)}.`);let r=new Map([["input",t]]),a;if(this.verify(t)){let{protocol:c}=new URL(t);c==="blob:"?a=t:a=this.sanitize(t,o??{allow:["data","file"]})}if(a){let c=new URL(a),{pathname:f,protocol:u}=c,I=u.replace(/:$/,"").split("+").includes("data");if(r.set("valid",!0),I){let g=new Map,[m,..._]=f.split(","),q=`${_.join(",")}`,k=m.split(";"),K=k[k.length-1]==="base64";K&&k.pop(),g.set("mime",k.join(";")),g.set("base64",K),g.set("data",q),r.set("data",Object.fromEntries(g))}else r.set("data",null);for(let g in c){let m=c[g];D(m)&&r.set(g,m)}}else r.set("valid",!1);return Object.fromEntries(r)}reset(){super.reset(),this.#e=0,this.#t.clear()}};var Q=new ut,Qn=async(n,t={allow:[],deny:[],only:[]})=>{let o;if(n&&D(n)){let r;try{let{protocol:a}=new URL(n);r=a.replace(/:$/,"")}catch{}if(r==="blob"){let{allow:a,deny:c,only:f}=t;if(Array.isArray(a)&&a.includes("blob")&&!(Array.isArray(c)&&c.includes("blob"))||Array.isArray(f)&&f.includes("blob")){let u;try{u=await fetch(n).then(T=>T.blob()).then(un)}catch{}if(u){if(Array.isArray(f))f.includes("data")||f.push("data");else if(Array.isArray(a)&&(a.includes("data")||a.push("data"),Array.isArray(c)&&c.includes("data"))){let T=c.indexOf("data");c.splice(T,1)}o=Q.sanitize(u,t)}}URL.revokeObjectURL(n)}else r&&(o=Q.sanitize(n,t))}return o||null},Jn=(n,t)=>{let o;if(n&&D(n)){let r;try{let{protocol:a}=new URL(n);r=a.replace(/:$/,"")}catch{}r==="blob"?URL.revokeObjectURL(n):r&&(o=Q.sanitize(n,t))}return o||null},es=async n=>Q.parse(n),ts=n=>Q.parse(n),ns=async n=>Q.verify(n),ss=n=>Q.verify(n),os=Q;export{os as default,ns as isURI,ss as isURISync,es as parseURL,ts as parseURLSync,Qn as sanitizeURL,Jn as sanitizeURLSync};
|
|
1
|
+
function Ht(n,t){(t==null||t>n.length)&&(t=n.length);for(var o=0,s=Array(t);o<t;o++)s[o]=n[o];return s}function On(n){if(Array.isArray(n))return n}function Ln(n,t){var o=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(o!=null){var s,i,l,p,m=[],g=!0,R=!1;try{if(l=(o=o.call(n)).next,t!==0)for(;!(g=(s=l.call(o)).done)&&(m.push(s.value),m.length!==t);g=!0);}catch(h){R=!0,i=h}finally{try{if(!g&&o.return!=null&&(p=o.return(),Object(p)!==p))return}finally{if(R)throw i}}return m}}function Dn(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
2
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function In(n,t){return On(n)||Ln(n,t)||Nn(n,t)||Dn()}function Nn(n,t){if(n){if(typeof n=="string")return Ht(n,t);var o={}.toString.call(n).slice(8,-1);return o==="Object"&&n.constructor&&(o=n.constructor.name),o==="Map"||o==="Set"?Array.from(n):o==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?Ht(n,t):void 0}}var en=Object.entries,$t=Object.setPrototypeOf,Cn=Object.isFrozen,Mn=Object.getPrototypeOf,vn=Object.getOwnPropertyDescriptor,v=Object.freeze,G=Object.seal,ge=Object.create,tn=typeof Reflect<"u"&&Reflect,ct=tn.apply,pt=tn.construct;v||(v=function(t){return t});G||(G=function(t){return t});ct||(ct=function(t,o){for(var s=arguments.length,i=new Array(s>2?s-2:0),l=2;l<s;l++)i[l-2]=arguments[l];return t.apply(o,i)});pt||(pt=function(t){for(var o=arguments.length,s=new Array(o>1?o-1:0),i=1;i<o;i++)s[i-1]=arguments[i];return new t(...s)});var me=b(Array.prototype.forEach),Un=b(Array.prototype.lastIndexOf),Bt=b(Array.prototype.pop),ue=b(Array.prototype.push),Pn=b(Array.prototype.splice),M=Array.isArray,we=b(String.prototype.toLowerCase),ot=b(String.prototype.toString),jt=b(String.prototype.match),de=b(String.prototype.replace),Wt=b(String.prototype.indexOf),kn=b(String.prototype.trim),Fn=b(Number.prototype.toString),zn=b(Boolean.prototype.toString),Yt=typeof BigInt>"u"?null:b(BigInt.prototype.toString),Xt=typeof Symbol>"u"?null:b(Symbol.prototype.toString),T=b(Object.prototype.hasOwnProperty),Se=b(Object.prototype.toString),N=b(RegExp.prototype.test),Pe=Gn(TypeError);function b(n){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var o=arguments.length,s=new Array(o>1?o-1:0),i=1;i<o;i++)s[i-1]=arguments[i];return ct(n,t,s)}}function Gn(n){return function(){for(var t=arguments.length,o=new Array(t),s=0;s<t;s++)o[s]=arguments[s];return pt(n,o)}}function f(n,t){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:we;if($t&&$t(n,null),!M(t))return n;let s=t.length;for(;s--;){let i=t[s];if(typeof i=="string"){let l=o(i);l!==i&&(Cn(t)||(t[s]=l),i=l)}n[i]=!0}return n}function Hn(n){for(let t=0;t<n.length;t++)T(n,t)||(n[t]=null);return n}function P(n){let t=ge(null);for(let s of en(n)){var o=In(s,2);let i=o[0],l=o[1];T(n,i)&&(M(l)?t[i]=Hn(l):l&&typeof l=="object"&&l.constructor===Object?t[i]=P(l):t[i]=l)}return t}function $n(n){switch(typeof n){case"string":return n;case"number":return Fn(n);case"boolean":return zn(n);case"bigint":return Yt?Yt(n):"0";case"symbol":return Xt?Xt(n):"Symbol()";case"undefined":return Se(n);case"function":case"object":{if(n===null)return Se(n);let t=n,o=Te(t,"toString");if(typeof o=="function"){let s=o(t);return typeof s=="string"?s:Se(s)}return Se(n)}default:return Se(n)}}function Te(n,t){for(;n!==null;){let s=vn(n,t);if(s){if(s.get)return b(s.get);if(typeof s.value=="function")return b(s.value)}n=Mn(n)}function o(){return null}return o}function Bn(n){try{return N(n,""),!0}catch{return!1}}var qt=v(["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","dialog","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","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","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"]),st=v(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),it=v(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),jn=v(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),at=v(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),Wn=v(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Vt=v(["#text"]),Kt=v(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),lt=v(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","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","exponent","fill","fill-opacity","fill-rule","filter","filterunits","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","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Zt=v(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","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","width","xmlns"]),ke=v(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Yn=G(/{{[\w\W]*|^[\w\W]*}}/g),Xn=G(/<%[\w\W]*|^[\w\W]*%>/g),qn=G(/\${[\w\W]*/g),Vn=G(/^data-[\-\w.\u00B7-\uFFFF]+$/),Kn=G(/^aria-[\-\w]+$/),Qt=G(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Zn=G(/^(?:\w+script|data):/i),Qn=G(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Jn=G(/^html$/i),er=G(/^[a-z][.\w]*(-[.\w]+)+$/i),he={element:1,text:3,progressingInstruction:7,comment:8,document:9},tr=function(){return typeof window>"u"?null:window},nr=function(t,o){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let s=null,i="data-tt-policy-suffix";o&&o.hasAttribute(i)&&(s=o.getAttribute(i));let l="dompurify"+(s?"#"+s:"");try{return t.createPolicy(l,{createHTML(p){return p},createScriptURL(p){return p}})}catch{return console.warn("TrustedTypes policy "+l+" could not be created."),null}},Jt=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function nn(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:tr(),t=c=>nn(c);if(t.version="3.4.3",t.removed=[],!n||!n.document||n.document.nodeType!==he.document||!n.Element)return t.isSupported=!1,t;let o=n.document,s=o,i=s.currentScript,l=n.DocumentFragment,p=n.HTMLTemplateElement,m=n.Node,g=n.Element,R=n.NodeFilter,h=n.NamedNodeMap,d=h===void 0?n.NamedNodeMap||n.MozNamedAttrMap:h,E=n.HTMLFormElement,se=n.DOMParser,H=n.trustedTypes,F=g.prototype,Ee=Te(F,"cloneNode"),ie=Te(F,"remove"),$=Te(F,"nextSibling"),Z=Te(F,"childNodes"),L=Te(F,"parentNode");if(typeof p=="function"){let c=o.createElement("template");c.content&&c.content.ownerDocument&&(o=c.content.ownerDocument)}let _,q="",V=o,Q=V.implementation,xe=V.createNodeIterator,k=V.createDocumentFragment,Oe=V.getElementsByTagName,Le=s.importNode,D=Jt();t.isSupported=typeof en=="function"&&typeof L=="function"&&Q&&Q.createHTMLDocument!==void 0;let _e=Yn,ae=Xn,De=qn,gn=Vn,Tn=Kn,En=Zn,Tt=Qn,_n=er,Et=Qt,w=null,_t=f({},[...qt,...st,...it,...at,...Vt]),I=null,At=f({},[...Kt,...lt,...Zt,...ke]),A=Object.seal(ge(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ae=null,Ie=null,J=Object.seal(ge(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),yt=!0,Be=!0,bt=!1,Rt=!0,te=!1,ye=!0,ne=!1,je=!1,We=!1,le=!1,Ne=!1,Ce=!1,St=!0,wt=!1,xt="user-content-",Ye=!0,be=!1,ce={},W=null,Xe=f({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Ot=null,Lt=f({},["audio","video","img","source","image","track"]),qe=null,Dt=f({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Me="http://www.w3.org/1998/Math/MathML",ve="http://www.w3.org/2000/svg",Y="http://www.w3.org/1999/xhtml",pe=Y,Ve=!1,Ke=null,An=f({},[Me,ve,Y],ot),Ze=f({},["mi","mo","mn","ms","mtext"]),Qe=f({},["annotation-xml"]),yn=f({},["title","style","font","a","script"]),Re=null,bn=["application/xhtml+xml","text/html"],Rn="text/html",S=null,fe=null,Sn=o.createElement("form"),It=function(e){return e instanceof RegExp||e instanceof Function},Je=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(fe&&fe===e)return;(!e||typeof e!="object")&&(e={}),e=P(e),Re=bn.indexOf(e.PARSER_MEDIA_TYPE)===-1?Rn:e.PARSER_MEDIA_TYPE,S=Re==="application/xhtml+xml"?ot:we,w=T(e,"ALLOWED_TAGS")&&M(e.ALLOWED_TAGS)?f({},e.ALLOWED_TAGS,S):_t,I=T(e,"ALLOWED_ATTR")&&M(e.ALLOWED_ATTR)?f({},e.ALLOWED_ATTR,S):At,Ke=T(e,"ALLOWED_NAMESPACES")&&M(e.ALLOWED_NAMESPACES)?f({},e.ALLOWED_NAMESPACES,ot):An,qe=T(e,"ADD_URI_SAFE_ATTR")&&M(e.ADD_URI_SAFE_ATTR)?f(P(Dt),e.ADD_URI_SAFE_ATTR,S):Dt,Ot=T(e,"ADD_DATA_URI_TAGS")&&M(e.ADD_DATA_URI_TAGS)?f(P(Lt),e.ADD_DATA_URI_TAGS,S):Lt,W=T(e,"FORBID_CONTENTS")&&M(e.FORBID_CONTENTS)?f({},e.FORBID_CONTENTS,S):Xe,Ae=T(e,"FORBID_TAGS")&&M(e.FORBID_TAGS)?f({},e.FORBID_TAGS,S):P({}),Ie=T(e,"FORBID_ATTR")&&M(e.FORBID_ATTR)?f({},e.FORBID_ATTR,S):P({}),ce=T(e,"USE_PROFILES")?e.USE_PROFILES&&typeof e.USE_PROFILES=="object"?P(e.USE_PROFILES):e.USE_PROFILES:!1,yt=e.ALLOW_ARIA_ATTR!==!1,Be=e.ALLOW_DATA_ATTR!==!1,bt=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Rt=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,te=e.SAFE_FOR_TEMPLATES||!1,ye=e.SAFE_FOR_XML!==!1,ne=e.WHOLE_DOCUMENT||!1,le=e.RETURN_DOM||!1,Ne=e.RETURN_DOM_FRAGMENT||!1,Ce=e.RETURN_TRUSTED_TYPE||!1,We=e.FORCE_BODY||!1,St=e.SANITIZE_DOM!==!1,wt=e.SANITIZE_NAMED_PROPS||!1,Ye=e.KEEP_CONTENT!==!1,be=e.IN_PLACE||!1,Et=Bn(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:Qt,pe=typeof e.NAMESPACE=="string"?e.NAMESPACE:Y,Ze=T(e,"MATHML_TEXT_INTEGRATION_POINTS")&&e.MATHML_TEXT_INTEGRATION_POINTS&&typeof e.MATHML_TEXT_INTEGRATION_POINTS=="object"?P(e.MATHML_TEXT_INTEGRATION_POINTS):f({},["mi","mo","mn","ms","mtext"]),Qe=T(e,"HTML_INTEGRATION_POINTS")&&e.HTML_INTEGRATION_POINTS&&typeof e.HTML_INTEGRATION_POINTS=="object"?P(e.HTML_INTEGRATION_POINTS):f({},["annotation-xml"]);let r=T(e,"CUSTOM_ELEMENT_HANDLING")&&e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING=="object"?P(e.CUSTOM_ELEMENT_HANDLING):ge(null);if(A=ge(null),T(r,"tagNameCheck")&&It(r.tagNameCheck)&&(A.tagNameCheck=r.tagNameCheck),T(r,"attributeNameCheck")&&It(r.attributeNameCheck)&&(A.attributeNameCheck=r.attributeNameCheck),T(r,"allowCustomizedBuiltInElements")&&typeof r.allowCustomizedBuiltInElements=="boolean"&&(A.allowCustomizedBuiltInElements=r.allowCustomizedBuiltInElements),te&&(Be=!1),Ne&&(le=!0),ce&&(w=f({},Vt),I=ge(null),ce.html===!0&&(f(w,qt),f(I,Kt)),ce.svg===!0&&(f(w,st),f(I,lt),f(I,ke)),ce.svgFilters===!0&&(f(w,it),f(I,lt),f(I,ke)),ce.mathMl===!0&&(f(w,at),f(I,Zt),f(I,ke))),J.tagCheck=null,J.attributeCheck=null,T(e,"ADD_TAGS")&&(typeof e.ADD_TAGS=="function"?J.tagCheck=e.ADD_TAGS:M(e.ADD_TAGS)&&(w===_t&&(w=P(w)),f(w,e.ADD_TAGS,S))),T(e,"ADD_ATTR")&&(typeof e.ADD_ATTR=="function"?J.attributeCheck=e.ADD_ATTR:M(e.ADD_ATTR)&&(I===At&&(I=P(I)),f(I,e.ADD_ATTR,S))),T(e,"ADD_URI_SAFE_ATTR")&&M(e.ADD_URI_SAFE_ATTR)&&f(qe,e.ADD_URI_SAFE_ATTR,S),T(e,"FORBID_CONTENTS")&&M(e.FORBID_CONTENTS)&&(W===Xe&&(W=P(W)),f(W,e.FORBID_CONTENTS,S)),T(e,"ADD_FORBID_CONTENTS")&&M(e.ADD_FORBID_CONTENTS)&&(W===Xe&&(W=P(W)),f(W,e.ADD_FORBID_CONTENTS,S)),Ye&&(w["#text"]=!0),ne&&f(w,["html","head","body"]),w.table&&(f(w,["tbody"]),delete Ae.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!="function")throw Pe('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Pe('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');_=e.TRUSTED_TYPES_POLICY,q=_.createHTML("")}else _===void 0&&(_=nr(H,i)),_!==null&&typeof q=="string"&&(q=_.createHTML(""));v&&v(e),fe=e},Nt=f({},[...st,...it,...jn]),Ct=f({},[...at,...Wn]),wn=function(e){let r=L(e);(!r||!r.tagName)&&(r={namespaceURI:pe,tagName:"template"});let a=we(e.tagName),u=we(r.tagName);return Ke[e.namespaceURI]?e.namespaceURI===ve?r.namespaceURI===Y?a==="svg":r.namespaceURI===Me?a==="svg"&&(u==="annotation-xml"||Ze[u]):!!Nt[a]:e.namespaceURI===Me?r.namespaceURI===Y?a==="math":r.namespaceURI===ve?a==="math"&&Qe[u]:!!Ct[a]:e.namespaceURI===Y?r.namespaceURI===ve&&!Qe[u]||r.namespaceURI===Me&&!Ze[u]?!1:!Ct[a]&&(yn[a]||!Nt[a]):!!(Re==="application/xhtml+xml"&&Ke[e.namespaceURI]):!1},B=function(e){ue(t.removed,{element:e});try{L(e).removeChild(e)}catch{ie(e)}},re=function(e,r){try{ue(t.removed,{attribute:r.getAttributeNode(e),from:r})}catch{ue(t.removed,{attribute:null,from:r})}if(r.removeAttribute(e),e==="is")if(le||Ne)try{B(r)}catch{}else try{r.setAttribute(e,"")}catch{}},Mt=function(e){let r=null,a=null;if(We)e="<remove></remove>"+e;else{let y=jt(e,/^[\r\n\t ]+/);a=y&&y[0]}Re==="application/xhtml+xml"&&pe===Y&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");let u=_?_.createHTML(e):e;if(pe===Y)try{r=new se().parseFromString(u,Re)}catch{}if(!r||!r.documentElement){r=Q.createDocument(pe,"template",null);try{r.documentElement.innerHTML=Ve?q:u}catch{}}let x=r.body||r.documentElement;return e&&a&&x.insertBefore(o.createTextNode(a),x.childNodes[0]||null),pe===Y?Oe.call(r,ne?"html":"body")[0]:ne?r.documentElement:x},vt=function(e){return xe.call(e.ownerDocument||e,e,R.SHOW_ELEMENT|R.SHOW_COMMENT|R.SHOW_TEXT|R.SHOW_PROCESSING_INSTRUCTION|R.SHOW_CDATA_SECTION,null)},et=function(e){return e instanceof E&&(typeof e.nodeName!="string"||typeof e.textContent!="string"||typeof e.removeChild!="function"||!(e.attributes instanceof d)||typeof e.removeAttribute!="function"||typeof e.setAttribute!="function"||typeof e.namespaceURI!="string"||typeof e.insertBefore!="function"||typeof e.hasChildNodes!="function")},tt=function(e){return typeof m=="function"&&e instanceof m};function K(c,e,r){me(c,a=>{a.call(t,e,r,fe)})}let Ut=function(e){let r=null;if(K(D.beforeSanitizeElements,e,null),et(e))return B(e),!0;let a=S(e.nodeName);if(K(D.uponSanitizeElement,e,{tagName:a,allowedTags:w}),ye&&e.hasChildNodes()&&!tt(e.firstElementChild)&&N(/<[/\w!]/g,e.innerHTML)&&N(/<[/\w!]/g,e.textContent)||ye&&e.namespaceURI===Y&&a==="style"&&tt(e.firstElementChild)||e.nodeType===he.progressingInstruction||ye&&e.nodeType===he.comment&&N(/<[/\w]/g,e.data))return B(e),!0;if(Ae[a]||!(J.tagCheck instanceof Function&&J.tagCheck(a))&&!w[a]){if(!Ae[a]&&kt(a)&&(A.tagNameCheck instanceof RegExp&&N(A.tagNameCheck,a)||A.tagNameCheck instanceof Function&&A.tagNameCheck(a)))return!1;if(Ye&&!W[a]){let u=L(e)||e.parentNode,x=Z(e)||e.childNodes;if(x&&u){let y=x.length;for(let U=y-1;U>=0;--U){let z=Ee(x[U],!0);u.insertBefore(z,$(e))}}}return B(e),!0}return e instanceof g&&!wn(e)||(a==="noscript"||a==="noembed"||a==="noframes")&&N(/<\/no(script|embed|frames)/i,e.innerHTML)?(B(e),!0):(te&&e.nodeType===he.text&&(r=e.textContent,me([_e,ae,De],u=>{r=de(r,u," ")}),e.textContent!==r&&(ue(t.removed,{element:e.cloneNode()}),e.textContent=r)),K(D.afterSanitizeElements,e,null),!1)},Pt=function(e,r,a){if(Ie[r]||St&&(r==="id"||r==="name")&&(a in o||a in Sn))return!1;let u=I[r]||J.attributeCheck instanceof Function&&J.attributeCheck(r,e);if(!(Be&&!Ie[r]&&N(gn,r))){if(!(yt&&N(Tn,r))){if(!u||Ie[r]){if(!(kt(e)&&(A.tagNameCheck instanceof RegExp&&N(A.tagNameCheck,e)||A.tagNameCheck instanceof Function&&A.tagNameCheck(e))&&(A.attributeNameCheck instanceof RegExp&&N(A.attributeNameCheck,r)||A.attributeNameCheck instanceof Function&&A.attributeNameCheck(r,e))||r==="is"&&A.allowCustomizedBuiltInElements&&(A.tagNameCheck instanceof RegExp&&N(A.tagNameCheck,a)||A.tagNameCheck instanceof Function&&A.tagNameCheck(a))))return!1}else if(!qe[r]){if(!N(Et,de(a,Tt,""))){if(!((r==="src"||r==="xlink:href"||r==="href")&&e!=="script"&&Wt(a,"data:")===0&&Ot[e])){if(!(bt&&!N(En,de(a,Tt,"")))){if(a)return!1}}}}}}return!0},xn=f({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),kt=function(e){return!xn[we(e)]&&N(_n,e)},Ft=function(e){K(D.beforeSanitizeAttributes,e,null);let r=e.attributes;if(!r||et(e))return;let a={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:I,forceKeepAttr:void 0},u=r.length;for(;u--;){let x=r[u],y=x.name,U=x.namespaceURI,z=x.value,j=S(y),rt=z,O=y==="value"?rt:kn(rt);if(a.attrName=j,a.attrValue=O,a.keepAttr=!0,a.forceKeepAttr=void 0,K(D.uponSanitizeAttribute,e,a),O=a.attrValue,wt&&(j==="id"||j==="name")&&Wt(O,xt)!==0&&(re(y,e),O=xt+O),ye&&N(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,O)){re(y,e);continue}if(j==="attributename"&&jt(O,"href")){re(y,e);continue}if(a.forceKeepAttr)continue;if(!a.keepAttr){re(y,e);continue}if(!Rt&&N(/\/>/i,O)){re(y,e);continue}te&&me([_e,ae,De],Gt=>{O=de(O,Gt," ")});let zt=S(e.nodeName);if(!Pt(zt,j,O)){re(y,e);continue}if(_&&typeof H=="object"&&typeof H.getAttributeType=="function"&&!U)switch(H.getAttributeType(zt,j)){case"TrustedHTML":{O=_.createHTML(O);break}case"TrustedScriptURL":{O=_.createScriptURL(O);break}}if(O!==rt)try{U?e.setAttributeNS(U,y,O):e.setAttribute(y,O),et(e)?B(e):Bt(t.removed)}catch{re(y,e)}}K(D.afterSanitizeAttributes,e,null)},nt=function(e){let r=null,a=vt(e);for(K(D.beforeSanitizeShadowDOM,e,null);r=a.nextNode();)K(D.uponSanitizeShadowNode,r,null),Ut(r),Ft(r),r.content instanceof l&&nt(r.content);K(D.afterSanitizeShadowDOM,e,null)},Ue=function(e){if(e.nodeType===he.element&&e.shadowRoot instanceof l){let u=e.shadowRoot;Ue(u),nt(u)}let r=e.childNodes;if(!r)return;let a=[];me(r,u=>{ue(a,u)});for(let u of a)Ue(u)};return t.sanitize=function(c){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=null,a=null,u=null,x=null;if(Ve=!c,Ve&&(c="<!-->"),typeof c!="string"&&!tt(c)&&(c=$n(c),typeof c!="string"))throw Pe("dirty is not a string, aborting");if(!t.isSupported)return c;if(je||Je(e),t.removed=[],typeof c=="string"&&(be=!1),be){let z=c.nodeName;if(typeof z=="string"){let j=S(z);if(!w[j]||Ae[j])throw Pe("root node is forbidden and cannot be sanitized in-place")}Ue(c)}else if(c instanceof m)r=Mt("<!---->"),a=r.ownerDocument.importNode(c,!0),a.nodeType===he.element&&a.nodeName==="BODY"||a.nodeName==="HTML"?r=a:r.appendChild(a),Ue(a);else{if(!le&&!te&&!ne&&c.indexOf("<")===-1)return _&&Ce?_.createHTML(c):c;if(r=Mt(c),!r)return le?null:Ce?q:""}r&&We&&B(r.firstChild);let y=vt(be?c:r);for(;u=y.nextNode();)Ut(u),Ft(u),u.content instanceof l&&nt(u.content);if(be)return c;if(le){if(te){r.normalize();let z=r.innerHTML;me([_e,ae,De],j=>{z=de(z,j," ")}),r.innerHTML=z}if(Ne)for(x=k.call(r.ownerDocument);r.firstChild;)x.appendChild(r.firstChild);else x=r;return(I.shadowroot||I.shadowrootmode)&&(x=Le.call(s,x,!0)),x}let U=ne?r.outerHTML:r.innerHTML;return ne&&w["!doctype"]&&r.ownerDocument&&r.ownerDocument.doctype&&r.ownerDocument.doctype.name&&N(Jn,r.ownerDocument.doctype.name)&&(U="<!DOCTYPE "+r.ownerDocument.doctype.name+`>
|
|
3
|
+
`+U),te&&me([_e,ae,De],z=>{U=de(U,z," ")}),_&&Ce?_.createHTML(U):U},t.setConfig=function(){let c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Je(c),je=!0},t.clearConfig=function(){fe=null,je=!1},t.isValidAttribute=function(c,e,r){fe||Je({});let a=S(c),u=S(e);return Pt(a,u,r)},t.addHook=function(c,e){typeof e=="function"&&ue(D[c],e)},t.removeHook=function(c,e){if(e!==void 0){let r=Un(D[c],e);return r===-1?void 0:Pn(D[c],r,1)[0]}return Bt(D[c])},t.removeHooks=function(c){D[c]=[]},t.removeAllHooks=function(){D=Jt()},t}var ft=nn();var rn=/^[\w+/=-]+$/;var Fe=/data:[\w#&+./;=-]*,/,mt=/data:[\w#&+./;=^]*base64,[\w+/=-]+/i,on=/data:[\w#&+./;=-]*,[^\x22]+/g,sn=/&#(x(?:00)?[\dA-F]{2}|0?\d{1,3});?/gi,an=/^(?:application\/(?:[\w#&.;-]+\+)?x|image\/svg\+x|text\/(?:ht|x))ml;?/;var ln=/^[a-z][\da-z+.-]*$/,cn=/^(?:ext|web)\+[a-z]+$/,ut=/(?:java|vb)script/,ze=/(?:java|vb)script|blob/,dt=/%(?:22|27|3C|3E)|[\x22\x27<>]/,pn=/^%[\dA-F]{2}$/i;var X=n=>Object.prototype.toString.call(n).slice(8,-1),C=n=>typeof n=="string"||n instanceof String;var{FileReader:fn}=globalThis;var Ge=[7,8,9,10,11,12,13,27,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255];var He=["aaa","aaas","about","acap","acct","acd","acr","adiumxtra","adt","afp","afs","agtp","aim","amss","android","appdata","apt","ar","ari","ark","at","attachment","aw","barion","beshare","bitcoin","bitcoincash","bl","blob","bluetooth","bolo","brid","browserext","cabal","caip","calculator","callto","cap","cast","casts","chrome","chrome-extension","cid","coap","coaps","com-eventbrite-attendee","content","content-type","crid","cstr","cttps","cvs","dab","dat","data","dav","dhttp","diaspora","dict","did","dilithium3","dis","dlna-playcontainer","dlna-playsingle","dnp","dns","dntp","doi","donau","dpp","drm","dtmi","dtn","dvb","dvx","dweb","ed2k","eid","elsi","embedded","ens","esim","ethereum","example","facetime","feed","feedready","fido","file","finger","first-run-pen-experience","fish","fm","ftp","fuchsia-pkg","geo","gg","git","gitoid","gizmoproject","go","gopher","graph","gtalk","h323","ham","hcap","hcp","hs20","http","https","hxxp","hxxps","hydrazone","hyper","i0","iax","ibi","ibi-","icap","icon","ilstring","im","imap","info","iotdisco","ipfs","ipn","ipns","ipp","ipps","irc","irc6","ircs","iris","iris.beep","iris.lwz","iris.xpc","iris.xpcs","isostore","itms","jabber","jar","jms","keyparc","lastfm","lbry","ldap","ldaps","leaptofrogans","lid","linkid","lorawan","lpa","lvlt","machineProvisioningProgressReporter","magnet","mailto","maps","market","matrix","message","microsoft.windows.camera","microsoft.windows.camera.multipicker","microsoft.windows.camera.picker","mid","mms","mongodb","moz","moz-extension","mqtt","mqtts","ms-access","ms-appinstaller","ms-browser-extension","ms-calculator","ms-drive-to","ms-enrollment","ms-excel","ms-eyecontrolspeech","ms-gamebarservices","ms-gamingoverlay","ms-getoffice","ms-help","ms-infopath","ms-inputapp","ms-launchremotedesktop","ms-lockscreencomponent-config","ms-media-stream-id","ms-meetnow","ms-mixedrealitycapture","ms-mobileplans","ms-newsandinterests","ms-officeapp","ms-people","ms-personacard","ms-powerpoint","ms-project","ms-publisher","ms-recall","ms-remotedesktop","ms-remotedesktop-launch","ms-restoretabcompanion","ms-screenclip","ms-screensketch","ms-search","ms-search-repair","ms-secondary-screen-controller","ms-secondary-screen-setup","ms-settings","ms-settings-airplanemode","ms-settings-bluetooth","ms-settings-camera","ms-settings-cellular","ms-settings-cloudstorage","ms-settings-connectabledevices","ms-settings-displays-topology","ms-settings-emailandaccounts","ms-settings-language","ms-settings-location","ms-settings-lock","ms-settings-nfctransactions","ms-settings-notifications","ms-settings-power","ms-settings-privacy","ms-settings-proximity","ms-settings-screenrotation","ms-settings-wifi","ms-settings-workplace","ms-spd","ms-stickers","ms-sttoverlay","ms-transit-to","ms-useractivityset","ms-uup","ms-virtualtouchpad","ms-visio","ms-walk-to","ms-whiteboard","ms-whiteboard-cmd","ms-widgetboard","ms-widgets","ms-word","msnim","msrp","msrps","mss","mt","mtqp","mtrust","mumble","mupdate","mvn","mvrp","mvrps","news","nfs","ni","nih","nntp","notes","num","ocf","oid","onenote","onenote-cmd","opaquelocktoken","openid","openpgp4fpr","otpauth","palm","paparazzi","payto","pkcs11","platform","pop","pres","proxy","psyc","pttp","pwid","qb","query","quic-transport","redis","rediss","reload","res","resource","rmi","rsync","rtmfp","rtmp","rtsp","rtsps","rtspu","sarif","secondlife","secret-token","service","session","sftp","sgn","shc","shelter","sieve","simpleledger","simplex","sip","sips","skype","smb","smp","sms","smtp","snmp","soap.beep","soap.beeps","soldat","spacify","spiffe","spotify","ssb","ssh","starknet","steam","stun","stuns","submit","svn","swh","swid","swidpath","tag","taler","teamspeak","teapot","teapots","tel","teliaeid","telnet","tftp","things","thismessage","tip","tn3270","tool","turn","turns","tv","udp","unreal","upn","urn","ut2004","uuid-in-package","v-event","vemmi","ventrilo","ves","view-source","vnc","vscode","vscode-insiders","vsls","w3","wasm","wasm-js","wcr","web3","webcal","wifi","ws","wss","wtai","wyciwyg","xcompute","xcon","xcon-userid","xfire","xftp","xmlrpc.beep","xmlrpc.beeps","xmpp","xrcp","xri","ymsgr","z39.50r","z39.50s"];var mn=n=>{if(!C(n))throw new TypeError(`Expected String but got ${X(n)}.`);let t=[];for(let o of n)t.push(`%${o.charCodeAt(0).toString(16).toUpperCase()}`);return t.join("")},un=n=>{C(n)&&pn.test(n)&&(n=n.toUpperCase());let[t,o,s,i,l,p]=["&","#","<",">",'"',"'"].map(mn),m;return n===t?m=`${t}amp;`:n===s?m=`${t}lt;`:n===i?m=`${t}gt;`:n===l?m=`${t}quot;`:n===p?m=`${t}${o}39;`:m=n,m},dn=n=>{if(C(n)){if(!rn.test(n))throw new Error(`Invalid base64 data: ${n}`)}else throw new TypeError(`Expected String but got ${X(n)}.`);let t=atob(n),o=Uint8Array.from([...t].map(l=>l.charCodeAt(0))),s=new Set(Ge),i;return o.every(l=>s.has(l))?i=t.replace(/\s/g,mn):i=n,i},ht=(n,t=0)=>{if(!C(n))throw new TypeError(`Expected String but got ${X(n)}.`);if(Number.isInteger(t)){if(t>16)throw new Error("Character references nested too deeply.")}else throw new TypeError(`Expected Number but got ${X(t)}.`);let o=decodeURIComponent(n);if(/&#/.test(o)){let s=new Set(Ge),i=[...o.matchAll(sn)].reverse();for(let l of i){let[p,m]=l,g;if(/^x[\dA-F]+/i.test(m)?g=parseInt(`0${m}`,16):/^\d+/.test(m)&&(g=parseInt(m)),Number.isInteger(g)){let{index:R}=l,[h,d]=[o.substring(0,R),o.substring(R+p.length)];s.has(g)?(o=`${h}${String.fromCharCode(g)}${d}`,(/#x?$/.test(h)||/^#(?:x(?:00)?[2-7]|\d)/.test(d))&&(o=ht(o,++t))):g<256&&(o=`${h}${d}`)}}}return o},hn=n=>new Promise((t,o)=>{let s=new fn;s.addEventListener("error",()=>o(s.error)),s.addEventListener("abort",()=>t(s.result)),s.addEventListener("load",()=>t(s.result)),s.readAsDataURL(n)}),$e=class{#e;constructor(){this.#e=new Set(He)}get(){return[...this.#e]}has(t){return this.#e.has(t)}add(t){if(C(t)){if(ut.test(t)||!ln.test(t))throw new Error(`Invalid scheme: ${t}`)}else throw new TypeError(`Expected String but got ${X(t)}.`);return this.#e.add(t),[...this.#e]}remove(t){return this.#e.delete(t)}verify(t){let o;if(C(t))try{let{protocol:s}=new URL(t),i=s.replace(/:$/,""),l=i.split("+");o=!ut.test(i)&&cn.test(i)||l.every(p=>this.#e.has(p))}catch{o=!1}return!!o}reset(){this.#e.clear();for(let t of He)this.#e.add(t)}};var gt=class extends $e{#e;#t=new Set;constructor(){super(),this.#e=0}replace(t){if(!C(t))throw new TypeError(`Expected String but got ${X(t)}.`);let o=t;if(Fe.test(o)){let i=[...o.matchAll(on)].reverse();for(let l of i){let[p]=l;mt.test(p)&&([p]=mt.exec(p)),this.#e++,this.#t.add(p);let m=this.sanitize(p,{allow:["data"]}),{index:g}=l,[R,h]=[o.substring(0,g),o.substring(g+p.length)];m?o=`${R}${m}${h}`:o=`${R}${h}`}}return o}purify(t){if(!C(t))throw new TypeError(`Expected String but got ${X(t)}.`);let o=ft.sanitize(decodeURIComponent(t));return o&&Fe.test(o)&&(o=this.replace(o)),o=o.replace(/(?:#|%23)$/,"").replace(/(?<!(?:#|%23).*)(?:\?|%3F)$/,""),encodeURI(o)}sanitize(t,o){if(this.#e>16)throw this.#e=0,new Error("Data URLs nested too deeply.");let{allow:s,deny:i,only:l}=o??{},p=new Map([["blob",!1],["data",!1],["file",!1],["javascrpt",!1],["vbscript",!1]]),m=new Set,g=!1;if(Array.isArray(l)&&l.length){let h=super.get();for(let E of h)p.set(E,!1);let d=Object.values(l);for(let E of d)if(C(E)&&(E=E.trim(),!ze.test(E))){if(super.has(E))p.set(E,!0);else{try{super.add(E)}catch{}super.has(E)&&(p.set(E,!0),m.add(E))}!g&&p.has(E)&&(g=p.get(E))}}else{if(Array.isArray(s)&&s.length){let h=Object.values(s);for(let d of h)if(C(d)&&(d=d.trim(),!ze.test(d)))if(super.has(d))p.set(d,!0);else{try{super.add(d)}catch{}super.has(d)&&(p.set(d,!0),m.add(d))}}if(Array.isArray(i)&&i.length){let h=Object.values(i);for(let d of h)C(d)&&(d=d.trim(),d&&p.set(d,!1))}}let R;if(super.verify(t)){let{hash:h,href:d,pathname:E,protocol:se,search:H}=new URL(t),F=se.replace(/:$/,""),Ee=F.split("+"),ie;if(g)ie=Ee.every($=>p.get($));else for(let[$,Z]of p.entries())if(ie=Z||F!==$&&Ee.every(L=>L!==$),!ie)break;if(ie){let $=Ee.includes("data"),Z,L=d;if($){let[_,...q]=E.split(","),V=`${q.join(",")}${H}${h}`,Q=_.split(";"),xe=Q[Q.length-1]==="base64",k=V;xe&&(k=dn(V));try{let Le=ht(k).trim(),{protocol:D}=new URL(Le);D.replace(/:$/,"").split("+").some(ae=>ze.test(ae))&&(L="")}catch{}let Oe=Fe.test(k);k!==V||Oe?Oe?k=this.replace(k):this.#t.has(t)?this.#t.delete(t):Z=!0:this.#t.has(t)?this.#t.delete(t):Z=!0,(!_||an.test(_))&&(k=this.purify(k)),L&&k?(xe&&k!==V&&Q.pop(),L=`${F}:${Q.join(";")},${k}`):L=""}else Z=!0;if(!$&&dt.test(L)){let _=dt.exec(L),{index:q}=_;L=L.substring(0,q).replace(/[?&]$/,"")}L?(R=L.replace(/%26/g,un),Z&&(this.#e=0)):this.#e=0}m.size&&m.forEach($=>{super.remove($)})}return R||null}parse(t,o){if(!C(t))throw new TypeError(`Expected String but got ${X(t)}.`);let s=new Map([["input",t]]),i;if(this.verify(t)){let{protocol:l}=new URL(t);l==="blob:"?i=t:i=this.sanitize(t,o??{allow:["data","file"]})}if(i){let l=new URL(i),{pathname:p,protocol:m}=l,R=m.replace(/:$/,"").split("+").includes("data");if(s.set("valid",!0),R){let h=new Map,[d,...E]=p.split(","),se=`${E.join(",")}`,H=d.split(";"),F=H[H.length-1]==="base64";F&&H.pop(),h.set("mime",H.join(";")),h.set("base64",F),h.set("data",se),s.set("data",Object.fromEntries(h))}else s.set("data",null);for(let h in l){let d=l[h];C(d)&&s.set(h,d)}}else s.set("valid",!1);return Object.fromEntries(s)}reset(){super.reset(),this.#e=0,this.#t.clear()}};var ee=new gt,ar=async(n,t={allow:[],deny:[],only:[]})=>{let o;if(n&&C(n)){let s;try{let{protocol:i}=new URL(n);s=i.replace(/:$/,"")}catch{}if(s==="blob"){let{allow:i,deny:l,only:p}=t;if(Array.isArray(i)&&i.includes("blob")&&!(Array.isArray(l)&&l.includes("blob"))||Array.isArray(p)&&p.includes("blob")){let m;try{m=await fetch(n).then(g=>g.blob()).then(hn)}catch{}if(m){if(Array.isArray(p))p.includes("data")||p.push("data");else if(Array.isArray(i)&&(i.includes("data")||i.push("data"),Array.isArray(l)&&l.includes("data"))){let g=l.indexOf("data");l.splice(g,1)}o=ee.sanitize(m,t)}}URL.revokeObjectURL(n)}else s&&(o=ee.sanitize(n,t))}return o||null},lr=(n,t)=>{let o;if(n&&C(n)){let s;try{let{protocol:i}=new URL(n);s=i.replace(/:$/,"")}catch{}s==="blob"?URL.revokeObjectURL(n):s&&(o=ee.sanitize(n,t))}return o||null},cr=async n=>ee.parse(n),pr=n=>ee.parse(n),fr=async n=>ee.verify(n),mr=n=>ee.verify(n),ur=ee;export{ur as default,fr as isURI,mr as isURISync,cr as parseURL,pr as parseURLSync,ar as sanitizeURL,lr as sanitizeURLSync};
|
|
3
4
|
/*!
|
|
4
5
|
* URL Sanitizer
|
|
5
6
|
*
|
|
@@ -10,6 +11,6 @@ var{entries:Zt,setPrototypeOf:zt,isFrozen:Sn,getPrototypeOf:wn,getOwnPropertyDes
|
|
|
10
11
|
/*! Bundled license information:
|
|
11
12
|
|
|
12
13
|
dompurify/dist/purify.es.mjs:
|
|
13
|
-
(*! @license DOMPurify 3.4.
|
|
14
|
+
(*! @license DOMPurify 3.4.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.3/LICENSE *)
|
|
14
15
|
*/
|
|
15
16
|
//# sourceMappingURL=url-sanitizer.min.js.map
|