wonder-image 2.1.2-alpha.2 → 2.1.2-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/backend/body-end.js +1 -2
- package/dist/backend/body-end.js.map +1 -1
- package/dist/backend/head.css +1 -1
- package/dist/backend/head.css.map +1 -1
- package/dist/backend/head.js +1 -1
- package/dist/backend/head.js.LICENSE.txt +0 -1015
- package/dist/backend/head.js.map +1 -1
- package/dist/backend/lib.js +0 -1
- package/dist/frontend/body-end.js +0 -1
- package/dist/frontend/body-end.js.map +1 -1
- package/dist/frontend/head.css +1 -1
- package/dist/frontend/head.css.map +1 -1
- package/dist/frontend/head.js +1 -2
- package/dist/frontend/head.js.map +1 -1
- package/dist/frontend/lib.js +0 -1
- package/dist/frontend/lib.js.map +1 -1
- package/dist/images/flags/1x1/cn.svg +11 -0
- package/dist/images/flags/1x1/cu.svg +13 -0
- package/dist/images/flags/1x1/cv.svg +13 -0
- package/dist/images/flags/1x1/cw.svg +14 -0
- package/dist/images/flags/1x1/de.svg +5 -0
- package/dist/images/flags/1x1/dk.svg +5 -0
- package/dist/images/flags/1x1/do.svg +122 -0
- package/dist/images/flags/1x1/ee.svg +5 -0
- package/dist/images/flags/1x1/eh.svg +11 -0
- package/dist/images/flags/1x1/er.svg +13 -0
- package/dist/images/flags/1x1/eu.svg +28 -0
- package/dist/images/flags/1x1/fi.svg +5 -0
- package/dist/images/flags/1x1/fj.svg +123 -0
- package/dist/images/flags/1x1/fr.svg +5 -0
- package/dist/images/flags/1x1/gb.svg +7 -0
- package/dist/images/flags/1x1/gf.svg +5 -0
- package/dist/images/flags/1x1/gh.svg +6 -0
- package/dist/images/flags/1x1/gn.svg +7 -0
- package/dist/images/flags/1x1/gp.svg +5 -0
- package/dist/images/flags/1x1/gq.svg +23 -0
- package/dist/images/flags/1x1/gr.svg +16 -0
- package/dist/images/flags/1x1/gs.svg +132 -0
- package/dist/images/flags/1x1/gt.svg +204 -0
- package/dist/images/flags/1x1/gu.svg +19 -0
- package/dist/images/flags/1x1/gw.svg +15 -0
- package/dist/images/flags/1x1/gy.svg +9 -0
- package/dist/images/flags/1x1/hm.svg +8 -0
- package/dist/images/flags/1x1/hn.svg +18 -0
- package/dist/images/flags/1x1/ht.svg +116 -0
- package/dist/images/flags/1x1/hu.svg +7 -0
- package/dist/images/flags/1x1/id.svg +4 -0
- package/dist/images/flags/1x1/im.svg +36 -0
- package/dist/images/flags/1x1/in.svg +25 -0
- package/dist/images/flags/1x1/iq.svg +10 -0
- package/dist/images/flags/1x1/ir.svg +219 -0
- package/dist/images/flags/1x1/is.svg +12 -0
- package/dist/images/flags/1x1/it.svg +7 -0
- package/dist/images/flags/1x1/jm.svg +8 -0
- package/dist/images/flags/1x1/kh.svg +61 -0
- package/dist/images/flags/1x1/km.svg +16 -0
- package/dist/images/flags/1x1/kw.svg +13 -0
- package/dist/images/flags/1x1/lb.svg +15 -0
- package/dist/images/flags/1x1/ls.svg +8 -0
- package/dist/images/flags/1x1/ma.svg +4 -0
- package/dist/images/flags/1x1/mc.svg +6 -0
- package/dist/images/flags/1x1/mg.svg +7 -0
- package/dist/images/flags/1x1/mm.svg +10 -0
- package/dist/images/flags/1x1/mo.svg +9 -0
- package/dist/images/flags/1x1/mp.svg +86 -0
- package/dist/images/flags/1x1/ms.svg +25 -0
- package/dist/images/flags/1x1/mw.svg +15 -0
- package/dist/images/flags/1x1/mx.svg +377 -0
- package/dist/images/flags/1x1/ni.svg +129 -0
- package/dist/images/flags/1x1/nu.svg +10 -0
- package/dist/images/flags/1x1/om.svg +115 -0
- package/dist/images/flags/1x1/pa.svg +13 -0
- package/dist/images/flags/1x1/pc.svg +33 -0
- package/dist/images/flags/1x1/pf.svg +18 -0
- package/dist/images/flags/1x1/pk.svg +15 -0
- package/dist/images/flags/1x1/pl.svg +6 -0
- package/dist/images/flags/1x1/pr.svg +13 -0
- package/dist/images/flags/1x1/pt.svg +57 -0
- package/dist/images/flags/1x1/pw.svg +11 -0
- package/dist/images/flags/1x1/ru.svg +5 -0
- package/dist/images/flags/1x1/sb.svg +13 -0
- package/dist/images/flags/1x1/sh.svg +7 -0
- package/dist/images/flags/1x1/sj.svg +7 -0
- package/dist/images/flags/1x1/sk.svg +9 -0
- package/dist/images/flags/1x1/sn.svg +8 -0
- package/dist/images/flags/1x1/ss.svg +8 -0
- package/dist/images/flags/1x1/sx.svg +56 -0
- package/dist/images/flags/1x1/sz.svg +34 -0
- package/dist/images/flags/1x1/tc.svg +50 -0
- package/dist/images/flags/1x1/tf.svg +15 -0
- package/dist/images/flags/1x1/tj.svg +26 -0
- package/dist/images/flags/1x1/tk.svg +5 -0
- package/dist/images/flags/1x1/tl.svg +13 -0
- package/dist/images/flags/1x1/tm.svg +205 -0
- package/dist/images/flags/1x1/to.svg +10 -0
- package/dist/images/flags/1x1/tt.svg +7 -0
- package/dist/images/flags/1x1/tw.svg +32 -0
- package/dist/images/flags/1x1/ug.svg +30 -0
- package/dist/images/flags/1x1/us.svg +9 -0
- package/dist/images/flags/1x1/uy.svg +28 -0
- package/dist/images/flags/1x1/uz.svg +30 -0
- package/dist/images/flags/1x1/vi.svg +28 -0
- package/dist/images/flags/1x1/vn.svg +11 -0
- package/dist/images/flags/1x1/vu.svg +21 -0
- package/dist/images/flags/1x1/xk.svg +5 -0
- package/dist/images/flags/1x1/zw.svg +21 -0
- package/dist/images/flags/4x3/ad.svg +150 -0
- package/dist/images/flags/4x3/ae.svg +6 -0
- package/dist/images/flags/4x3/af.svg +81 -0
- package/dist/images/flags/4x3/ag.svg +14 -0
- package/dist/images/flags/4x3/ai.svg +29 -0
- package/dist/images/flags/4x3/al.svg +5 -0
- package/dist/images/flags/4x3/am.svg +5 -0
- package/dist/images/flags/4x3/ao.svg +13 -0
- package/dist/images/flags/4x3/aq.svg +5 -0
- package/dist/images/flags/4x3/ar.svg +32 -0
- package/dist/images/flags/4x3/arab.svg +109 -0
- package/dist/images/flags/4x3/as.svg +72 -0
- package/dist/images/flags/4x3/asean.svg +13 -0
- package/dist/images/flags/4x3/at.svg +4 -0
- package/dist/images/flags/4x3/au.svg +8 -0
- package/dist/images/flags/4x3/aw.svg +186 -0
- package/dist/images/flags/4x3/ax.svg +18 -0
- package/dist/images/flags/4x3/az.svg +8 -0
- package/dist/images/flags/4x3/ba.svg +12 -0
- package/dist/images/flags/4x3/bb.svg +6 -0
- package/dist/images/flags/4x3/bd.svg +4 -0
- package/dist/images/flags/4x3/be.svg +7 -0
- package/dist/images/flags/4x3/bf.svg +7 -0
- package/dist/images/flags/4x3/bg.svg +5 -0
- package/dist/images/flags/4x3/bh.svg +4 -0
- package/dist/images/flags/4x3/bi.svg +15 -0
- package/dist/images/flags/4x3/bj.svg +14 -0
- package/dist/images/flags/4x3/bl.svg +5 -0
- package/dist/images/flags/4x3/bm.svg +97 -0
- package/dist/images/flags/4x3/bn.svg +36 -0
- package/dist/images/flags/4x3/bo.svg +673 -0
- package/dist/images/flags/4x3/bq.svg +5 -0
- package/dist/images/flags/4x3/br.svg +45 -0
- package/dist/images/flags/4x3/bs.svg +13 -0
- package/dist/images/flags/4x3/bt.svg +89 -0
- package/dist/images/flags/4x3/bv.svg +13 -0
- package/dist/images/flags/4x3/bw.svg +7 -0
- package/dist/images/flags/4x3/by.svg +18 -0
- package/dist/images/flags/4x3/bz.svg +145 -0
- package/dist/images/flags/4x3/ca.svg +4 -0
- package/dist/images/flags/4x3/cc.svg +19 -0
- package/dist/images/flags/4x3/cd.svg +5 -0
- package/dist/images/flags/4x3/cefta.svg +13 -0
- package/dist/images/flags/4x3/cf.svg +15 -0
- package/dist/images/flags/4x3/cg.svg +12 -0
- package/dist/images/flags/4x3/ch.svg +9 -0
- package/dist/images/flags/4x3/ci.svg +7 -0
- package/dist/images/flags/4x3/ck.svg +9 -0
- package/dist/images/flags/4x3/cl.svg +13 -0
- package/dist/images/flags/4x3/cm.svg +15 -0
- package/dist/images/flags/4x3/co.svg +7 -0
- package/dist/images/flags/4x3/cp.svg +7 -0
- package/dist/images/flags/4x3/cr.svg +7 -0
- package/dist/images/flags/4x3/cx.svg +15 -0
- package/dist/images/flags/4x3/cy.svg +6 -0
- package/dist/images/flags/4x3/cz.svg +5 -0
- package/dist/images/flags/4x3/dg.svg +130 -0
- package/dist/images/flags/4x3/dj.svg +13 -0
- package/dist/images/flags/4x3/dm.svg +152 -0
- package/dist/images/flags/4x3/dz.svg +5 -0
- package/dist/images/flags/4x3/eac.svg +48 -0
- package/dist/images/flags/4x3/ec.svg +138 -0
- package/dist/images/flags/4x3/eg.svg +38 -0
- package/dist/images/flags/4x3/es-ct.svg +4 -0
- package/dist/images/flags/4x3/es-ga.svg +187 -0
- package/dist/images/flags/4x3/es-pv.svg +5 -0
- package/dist/images/flags/4x3/es.svg +544 -0
- package/dist/images/flags/4x3/et.svg +14 -0
- package/dist/images/flags/4x3/fk.svg +90 -0
- package/dist/images/flags/4x3/fm.svg +11 -0
- package/dist/images/flags/4x3/fo.svg +12 -0
- package/dist/images/flags/4x3/ga.svg +7 -0
- package/dist/images/flags/4x3/gb-eng.svg +5 -0
- package/dist/images/flags/4x3/gb-nir.svg +132 -0
- package/dist/images/flags/4x3/gb-sct.svg +4 -0
- package/dist/images/flags/4x3/gb-wls.svg +9 -0
- package/dist/images/flags/4x3/gd.svg +27 -0
- package/dist/images/flags/4x3/ge.svg +6 -0
- package/dist/images/flags/4x3/gg.svg +9 -0
- package/dist/images/flags/4x3/gi.svg +32 -0
- package/dist/images/flags/4x3/gl.svg +4 -0
- package/dist/images/flags/4x3/gm.svg +14 -0
- package/dist/images/flags/4x3/hk.svg +8 -0
- package/dist/images/flags/4x3/hr.svg +58 -0
- package/dist/images/flags/4x3/ic.svg +7 -0
- package/dist/images/flags/4x3/ie.svg +7 -0
- package/dist/images/flags/4x3/il.svg +14 -0
- package/dist/images/flags/4x3/io.svg +130 -0
- package/dist/images/flags/4x3/je.svg +62 -0
- package/dist/images/flags/4x3/jo.svg +16 -0
- package/dist/images/flags/4x3/jp.svg +11 -0
- package/dist/images/flags/4x3/ke.svg +23 -0
- package/dist/images/flags/4x3/kg.svg +4 -0
- package/dist/images/flags/4x3/ki.svg +36 -0
- package/dist/images/flags/4x3/kn.svg +14 -0
- package/dist/images/flags/4x3/kp.svg +15 -0
- package/dist/images/flags/4x3/kr.svg +24 -0
- package/dist/images/flags/4x3/ky.svg +103 -0
- package/dist/images/flags/4x3/kz.svg +36 -0
- package/dist/images/flags/4x3/la.svg +12 -0
- package/dist/images/flags/4x3/lc.svg +8 -0
- package/dist/images/flags/4x3/li.svg +43 -0
- package/dist/images/flags/4x3/lk.svg +22 -0
- package/dist/images/flags/4x3/lr.svg +14 -0
- package/dist/images/flags/4x3/lt.svg +7 -0
- package/dist/images/flags/4x3/lu.svg +5 -0
- package/dist/images/flags/4x3/lv.svg +6 -0
- package/dist/images/flags/4x3/ly.svg +13 -0
- package/dist/images/flags/4x3/md.svg +70 -0
- package/dist/images/flags/4x3/me.svg +116 -0
- package/dist/images/flags/4x3/mf.svg +5 -0
- package/dist/images/flags/4x3/mh.svg +7 -0
- package/dist/images/flags/4x3/mk.svg +5 -0
- package/dist/images/flags/4x3/ml.svg +7 -0
- package/dist/images/flags/4x3/mn.svg +14 -0
- package/dist/images/flags/4x3/mq.svg +5 -0
- package/dist/images/flags/4x3/mr.svg +6 -0
- package/dist/images/flags/4x3/mt.svg +58 -0
- package/dist/images/flags/4x3/mu.svg +8 -0
- package/dist/images/flags/4x3/mv.svg +6 -0
- package/dist/images/flags/4x3/my.svg +26 -0
- package/dist/images/flags/4x3/mz.svg +21 -0
- package/dist/images/flags/4x3/na.svg +16 -0
- package/dist/images/flags/4x3/nc.svg +13 -0
- package/dist/images/flags/4x3/ne.svg +6 -0
- package/dist/images/flags/4x3/nf.svg +9 -0
- package/dist/images/flags/4x3/ng.svg +6 -0
- package/dist/images/flags/4x3/nl.svg +5 -0
- package/dist/images/flags/4x3/no.svg +7 -0
- package/dist/images/flags/4x3/np.svg +13 -0
- package/dist/images/flags/4x3/nr.svg +12 -0
- package/dist/images/flags/4x3/nz.svg +36 -0
- package/dist/images/flags/4x3/pe.svg +4 -0
- package/dist/images/flags/4x3/pg.svg +9 -0
- package/dist/images/flags/4x3/ph.svg +6 -0
- package/dist/images/flags/4x3/pm.svg +5 -0
- package/dist/images/flags/4x3/pn.svg +53 -0
- package/dist/images/flags/4x3/ps.svg +6 -0
- package/dist/images/flags/4x3/py.svg +157 -0
- package/dist/images/flags/4x3/qa.svg +4 -0
- package/dist/images/flags/4x3/re.svg +5 -0
- package/dist/images/flags/4x3/ro.svg +7 -0
- package/dist/images/flags/4x3/rs.svg +292 -0
- package/dist/images/flags/4x3/rw.svg +13 -0
- package/dist/images/flags/4x3/sa.svg +25 -0
- package/dist/images/flags/4x3/sc.svg +7 -0
- package/dist/images/flags/4x3/sd.svg +13 -0
- package/dist/images/flags/4x3/se.svg +4 -0
- package/dist/images/flags/4x3/sg.svg +13 -0
- package/dist/images/flags/4x3/sh-ac.svg +689 -0
- package/dist/images/flags/4x3/sh-hl.svg +164 -0
- package/dist/images/flags/4x3/sh-ta.svg +76 -0
- package/dist/images/flags/4x3/si.svg +18 -0
- package/dist/images/flags/4x3/sl.svg +7 -0
- package/dist/images/flags/4x3/sm.svg +75 -0
- package/dist/images/flags/4x3/so.svg +11 -0
- package/dist/images/flags/4x3/sr.svg +6 -0
- package/dist/images/flags/4x3/st.svg +16 -0
- package/dist/images/flags/4x3/sv.svg +593 -0
- package/dist/images/flags/4x3/sy.svg +6 -0
- package/dist/images/flags/4x3/td.svg +7 -0
- package/dist/images/flags/4x3/tg.svg +14 -0
- package/dist/images/flags/4x3/th.svg +7 -0
- package/dist/images/flags/4x3/tn.svg +4 -0
- package/dist/images/flags/4x3/tr.svg +8 -0
- package/dist/images/flags/4x3/tv.svg +9 -0
- package/dist/images/flags/4x3/tz.svg +13 -0
- package/dist/images/flags/4x3/ua.svg +6 -0
- package/dist/images/flags/4x3/um.svg +9 -0
- package/dist/images/flags/4x3/un.svg +16 -0
- package/dist/images/flags/4x3/va.svg +190 -0
- package/dist/images/flags/4x3/vc.svg +8 -0
- package/dist/images/flags/4x3/ve.svg +26 -0
- package/dist/images/flags/4x3/vg.svg +59 -0
- package/dist/images/flags/4x3/wf.svg +5 -0
- package/dist/images/flags/4x3/ws.svg +7 -0
- package/dist/images/flags/4x3/xx.svg +4 -0
- package/dist/images/flags/4x3/ye.svg +7 -0
- package/dist/images/flags/4x3/yt.svg +5 -0
- package/dist/images/flags/4x3/za.svg +17 -0
- package/dist/images/flags/4x3/zm.svg +27 -0
- package/dist/lib/autonumeric/autonumeric.js +0 -1
- package/dist/lib/autonumeric/autonumeric.js.map +1 -1
- package/dist/lib/bootstrap/bootstrap-datepicker.js +0 -1
- package/dist/lib/bootstrap/bootstrap-datepicker.js.map +1 -1
- package/dist/lib/bootstrap/bootstrap-icons.css +1 -1
- package/dist/lib/bootstrap/bootstrap-icons.css.map +1 -1
- package/dist/lib/bootstrap/bootstrap-icons.js +0 -1
- package/dist/lib/bootstrap/bootstrap.js +0 -1
- package/dist/lib/bootstrap/bootstrap.js.map +1 -1
- package/dist/lib/chartjs/chart.js.LICENSE.txt +1 -1281
- package/dist/lib/colorjs/color.js +0 -1
- package/dist/lib/colorjs/color.js.map +1 -1
- package/dist/lib/datatables/datatables.js.LICENSE.txt +0 -9853
- package/dist/lib/dompurify/dompurify.js.LICENSE.txt +0 -908
- package/dist/lib/editorjs/editor.js.LICENSE.txt +41 -5629
- package/dist/lib/fancyapps/fancyapps.js +0 -1
- package/dist/lib/fancyapps/fancyapps.js.map +1 -1
- package/dist/lib/filepond/filepond.js.LICENSE.txt +0 -2728
- package/dist/lib/fullcalendar/fullcalendar.js +1 -1
- package/dist/lib/fullcalendar/fullcalendar.js.LICENSE.txt +0 -3686
- package/dist/lib/fullcalendar/fullcalendar.js.map +1 -1
- package/dist/lib/image-compare-viewer.js +0 -1
- package/dist/lib/jquery/jquery-plugin.js +1 -2
- package/dist/lib/jquery/jquery-plugin.js.map +1 -1
- package/dist/lib/jquery/jquery.js.LICENSE.txt +0 -3232
- package/dist/lib/jstree/jstree.js +0 -1
- package/dist/lib/jstree/jstree.js.map +1 -1
- package/dist/lib/jszip/jszip.js.LICENSE.txt +0 -42
- package/dist/lib/lipis/flag-icons.css +1 -1
- package/dist/lib/lipis/flag-icons.css.map +1 -1
- package/dist/lib/lipis/flag-icons.js +0 -1
- package/dist/lib/moment/moment.js.LICENSE.txt +0 -619
- package/dist/lib/quilljs/quill.js +0 -1
- package/dist/lib/quilljs/quill.js.map +1 -1
- package/dist/lib/rellax/rellax.js +0 -1
- package/dist/lib/rellax/rellax.js.map +1 -1
- package/dist/lib/select2/select2.js +1 -2
- package/dist/lib/select2/select2.js.map +1 -1
- package/dist/lib/swiperjs/swiper-plugin.js +0 -1
- package/dist/lib/swiperjs/swiper-plugin.js.map +1 -1
- package/dist/lib/swiperjs/swiper.js +0 -1
- package/dist/lib/swiperjs/swiper.js.map +1 -1
- package/dist/lib/videojs/video.js.LICENSE.txt +6 -27809
- package/dist/lib/vivus/vivus.js.LICENSE.txt +0 -518
- package/index.js +2 -1
- package/package.json +23 -21
- package/src/class/DeferredContent.js +110 -0
- package/dist/backend/body-end.js.LICENSE.txt +0 -44
- package/dist/backend/lib.js.LICENSE.txt +0 -1
- package/dist/frontend/body-end.js.LICENSE.txt +0 -44
- package/dist/frontend/head.js.LICENSE.txt +0 -98
- package/dist/frontend/lib.js.LICENSE.txt +0 -239
- package/dist/lib/autonumeric/autonumeric.js.LICENSE.txt +0 -49
- package/dist/lib/bootstrap/bootstrap-datepicker.js.LICENSE.txt +0 -44
- package/dist/lib/bootstrap/bootstrap-icons.js.LICENSE.txt +0 -1
- package/dist/lib/bootstrap/bootstrap.js.LICENSE.txt +0 -44
- package/dist/lib/colorjs/color.js.LICENSE.txt +0 -7
- package/dist/lib/fancyapps/fancyapps.js.LICENSE.txt +0 -9
- package/dist/lib/image-compare-viewer.js.LICENSE.txt +0 -3
- package/dist/lib/jquery/jquery-plugin.js.LICENSE.txt +0 -1200
- package/dist/lib/jstree/jstree.js.LICENSE.txt +0 -44
- package/dist/lib/lipis/flag-icons.js.LICENSE.txt +0 -1
- package/dist/lib/pdfmake/pdfmake.js +0 -3
- package/dist/lib/pdfmake/pdfmake.js.LICENSE.txt +0 -13375
- package/dist/lib/pdfmake/pdfmake.js.map +0 -1
- package/dist/lib/quilljs/quill.js.LICENSE.txt +0 -3068
- package/dist/lib/rellax/rellax.js.LICENSE.txt +0 -143
- package/dist/lib/select2/select2.js.LICENSE.txt +0 -3761
- package/dist/lib/swiperjs/swiper-plugin.js.LICENSE.txt +0 -1174
- package/dist/lib/swiperjs/swiper.js.LICENSE.txt +0 -673
- /package/dist/images/{ad.svg → flags/1x1/ad.svg} +0 -0
- /package/dist/images/{ae.svg → flags/1x1/ae.svg} +0 -0
- /package/dist/images/{af.svg → flags/1x1/af.svg} +0 -0
- /package/dist/images/{ag.svg → flags/1x1/ag.svg} +0 -0
- /package/dist/images/{ai.svg → flags/1x1/ai.svg} +0 -0
- /package/dist/images/{al.svg → flags/1x1/al.svg} +0 -0
- /package/dist/images/{am.svg → flags/1x1/am.svg} +0 -0
- /package/dist/images/{ao.svg → flags/1x1/ao.svg} +0 -0
- /package/dist/images/{aq.svg → flags/1x1/aq.svg} +0 -0
- /package/dist/images/{ar.svg → flags/1x1/ar.svg} +0 -0
- /package/dist/images/{arab.svg → flags/1x1/arab.svg} +0 -0
- /package/dist/images/{as.svg → flags/1x1/as.svg} +0 -0
- /package/dist/images/{asean.svg → flags/1x1/asean.svg} +0 -0
- /package/dist/images/{at.svg → flags/1x1/at.svg} +0 -0
- /package/dist/images/{au.svg → flags/1x1/au.svg} +0 -0
- /package/dist/images/{aw.svg → flags/1x1/aw.svg} +0 -0
- /package/dist/images/{ax.svg → flags/1x1/ax.svg} +0 -0
- /package/dist/images/{az.svg → flags/1x1/az.svg} +0 -0
- /package/dist/images/{ba.svg → flags/1x1/ba.svg} +0 -0
- /package/dist/images/{bb.svg → flags/1x1/bb.svg} +0 -0
- /package/dist/images/{bd.svg → flags/1x1/bd.svg} +0 -0
- /package/dist/images/{be.svg → flags/1x1/be.svg} +0 -0
- /package/dist/images/{bf.svg → flags/1x1/bf.svg} +0 -0
- /package/dist/images/{bg.svg → flags/1x1/bg.svg} +0 -0
- /package/dist/images/{bh.svg → flags/1x1/bh.svg} +0 -0
- /package/dist/images/{bi.svg → flags/1x1/bi.svg} +0 -0
- /package/dist/images/{bj.svg → flags/1x1/bj.svg} +0 -0
- /package/dist/images/{bl.svg → flags/1x1/bl.svg} +0 -0
- /package/dist/images/{bm.svg → flags/1x1/bm.svg} +0 -0
- /package/dist/images/{bn.svg → flags/1x1/bn.svg} +0 -0
- /package/dist/images/{bo.svg → flags/1x1/bo.svg} +0 -0
- /package/dist/images/{bq.svg → flags/1x1/bq.svg} +0 -0
- /package/dist/images/{br.svg → flags/1x1/br.svg} +0 -0
- /package/dist/images/{bs.svg → flags/1x1/bs.svg} +0 -0
- /package/dist/images/{bt.svg → flags/1x1/bt.svg} +0 -0
- /package/dist/images/{bv.svg → flags/1x1/bv.svg} +0 -0
- /package/dist/images/{bw.svg → flags/1x1/bw.svg} +0 -0
- /package/dist/images/{by.svg → flags/1x1/by.svg} +0 -0
- /package/dist/images/{bz.svg → flags/1x1/bz.svg} +0 -0
- /package/dist/images/{ca.svg → flags/1x1/ca.svg} +0 -0
- /package/dist/images/{cc.svg → flags/1x1/cc.svg} +0 -0
- /package/dist/images/{cd.svg → flags/1x1/cd.svg} +0 -0
- /package/dist/images/{cefta.svg → flags/1x1/cefta.svg} +0 -0
- /package/dist/images/{cf.svg → flags/1x1/cf.svg} +0 -0
- /package/dist/images/{cg.svg → flags/1x1/cg.svg} +0 -0
- /package/dist/images/{ch.svg → flags/1x1/ch.svg} +0 -0
- /package/dist/images/{ci.svg → flags/1x1/ci.svg} +0 -0
- /package/dist/images/{ck.svg → flags/1x1/ck.svg} +0 -0
- /package/dist/images/{cl.svg → flags/1x1/cl.svg} +0 -0
- /package/dist/images/{cm.svg → flags/1x1/cm.svg} +0 -0
- /package/dist/images/{co.svg → flags/1x1/co.svg} +0 -0
- /package/dist/images/{cp.svg → flags/1x1/cp.svg} +0 -0
- /package/dist/images/{cr.svg → flags/1x1/cr.svg} +0 -0
- /package/dist/images/{cx.svg → flags/1x1/cx.svg} +0 -0
- /package/dist/images/{cy.svg → flags/1x1/cy.svg} +0 -0
- /package/dist/images/{cz.svg → flags/1x1/cz.svg} +0 -0
- /package/dist/images/{dg.svg → flags/1x1/dg.svg} +0 -0
- /package/dist/images/{dj.svg → flags/1x1/dj.svg} +0 -0
- /package/dist/images/{dm.svg → flags/1x1/dm.svg} +0 -0
- /package/dist/images/{dz.svg → flags/1x1/dz.svg} +0 -0
- /package/dist/images/{eac.svg → flags/1x1/eac.svg} +0 -0
- /package/dist/images/{ec.svg → flags/1x1/ec.svg} +0 -0
- /package/dist/images/{eg.svg → flags/1x1/eg.svg} +0 -0
- /package/dist/images/{es-ct.svg → flags/1x1/es-ct.svg} +0 -0
- /package/dist/images/{es-ga.svg → flags/1x1/es-ga.svg} +0 -0
- /package/dist/images/{es-pv.svg → flags/1x1/es-pv.svg} +0 -0
- /package/dist/images/{es.svg → flags/1x1/es.svg} +0 -0
- /package/dist/images/{et.svg → flags/1x1/et.svg} +0 -0
- /package/dist/images/{fk.svg → flags/1x1/fk.svg} +0 -0
- /package/dist/images/{fm.svg → flags/1x1/fm.svg} +0 -0
- /package/dist/images/{fo.svg → flags/1x1/fo.svg} +0 -0
- /package/dist/images/{ga.svg → flags/1x1/ga.svg} +0 -0
- /package/dist/images/{gb-eng.svg → flags/1x1/gb-eng.svg} +0 -0
- /package/dist/images/{gb-nir.svg → flags/1x1/gb-nir.svg} +0 -0
- /package/dist/images/{gb-sct.svg → flags/1x1/gb-sct.svg} +0 -0
- /package/dist/images/{gb-wls.svg → flags/1x1/gb-wls.svg} +0 -0
- /package/dist/images/{gd.svg → flags/1x1/gd.svg} +0 -0
- /package/dist/images/{ge.svg → flags/1x1/ge.svg} +0 -0
- /package/dist/images/{gg.svg → flags/1x1/gg.svg} +0 -0
- /package/dist/images/{gi.svg → flags/1x1/gi.svg} +0 -0
- /package/dist/images/{gl.svg → flags/1x1/gl.svg} +0 -0
- /package/dist/images/{gm.svg → flags/1x1/gm.svg} +0 -0
- /package/dist/images/{hk.svg → flags/1x1/hk.svg} +0 -0
- /package/dist/images/{hr.svg → flags/1x1/hr.svg} +0 -0
- /package/dist/images/{ic.svg → flags/1x1/ic.svg} +0 -0
- /package/dist/images/{ie.svg → flags/1x1/ie.svg} +0 -0
- /package/dist/images/{il.svg → flags/1x1/il.svg} +0 -0
- /package/dist/images/{io.svg → flags/1x1/io.svg} +0 -0
- /package/dist/images/{je.svg → flags/1x1/je.svg} +0 -0
- /package/dist/images/{jo.svg → flags/1x1/jo.svg} +0 -0
- /package/dist/images/{jp.svg → flags/1x1/jp.svg} +0 -0
- /package/dist/images/{ke.svg → flags/1x1/ke.svg} +0 -0
- /package/dist/images/{kg.svg → flags/1x1/kg.svg} +0 -0
- /package/dist/images/{ki.svg → flags/1x1/ki.svg} +0 -0
- /package/dist/images/{kn.svg → flags/1x1/kn.svg} +0 -0
- /package/dist/images/{kp.svg → flags/1x1/kp.svg} +0 -0
- /package/dist/images/{kr.svg → flags/1x1/kr.svg} +0 -0
- /package/dist/images/{ky.svg → flags/1x1/ky.svg} +0 -0
- /package/dist/images/{kz.svg → flags/1x1/kz.svg} +0 -0
- /package/dist/images/{la.svg → flags/1x1/la.svg} +0 -0
- /package/dist/images/{lc.svg → flags/1x1/lc.svg} +0 -0
- /package/dist/images/{li.svg → flags/1x1/li.svg} +0 -0
- /package/dist/images/{lk.svg → flags/1x1/lk.svg} +0 -0
- /package/dist/images/{lr.svg → flags/1x1/lr.svg} +0 -0
- /package/dist/images/{lt.svg → flags/1x1/lt.svg} +0 -0
- /package/dist/images/{lu.svg → flags/1x1/lu.svg} +0 -0
- /package/dist/images/{lv.svg → flags/1x1/lv.svg} +0 -0
- /package/dist/images/{ly.svg → flags/1x1/ly.svg} +0 -0
- /package/dist/images/{md.svg → flags/1x1/md.svg} +0 -0
- /package/dist/images/{me.svg → flags/1x1/me.svg} +0 -0
- /package/dist/images/{mf.svg → flags/1x1/mf.svg} +0 -0
- /package/dist/images/{mh.svg → flags/1x1/mh.svg} +0 -0
- /package/dist/images/{mk.svg → flags/1x1/mk.svg} +0 -0
- /package/dist/images/{ml.svg → flags/1x1/ml.svg} +0 -0
- /package/dist/images/{mn.svg → flags/1x1/mn.svg} +0 -0
- /package/dist/images/{mq.svg → flags/1x1/mq.svg} +0 -0
- /package/dist/images/{mr.svg → flags/1x1/mr.svg} +0 -0
- /package/dist/images/{mt.svg → flags/1x1/mt.svg} +0 -0
- /package/dist/images/{mu.svg → flags/1x1/mu.svg} +0 -0
- /package/dist/images/{mv.svg → flags/1x1/mv.svg} +0 -0
- /package/dist/images/{my.svg → flags/1x1/my.svg} +0 -0
- /package/dist/images/{mz.svg → flags/1x1/mz.svg} +0 -0
- /package/dist/images/{na.svg → flags/1x1/na.svg} +0 -0
- /package/dist/images/{nc.svg → flags/1x1/nc.svg} +0 -0
- /package/dist/images/{ne.svg → flags/1x1/ne.svg} +0 -0
- /package/dist/images/{nf.svg → flags/1x1/nf.svg} +0 -0
- /package/dist/images/{ng.svg → flags/1x1/ng.svg} +0 -0
- /package/dist/images/{nl.svg → flags/1x1/nl.svg} +0 -0
- /package/dist/images/{no.svg → flags/1x1/no.svg} +0 -0
- /package/dist/images/{np.svg → flags/1x1/np.svg} +0 -0
- /package/dist/images/{nr.svg → flags/1x1/nr.svg} +0 -0
- /package/dist/images/{nz.svg → flags/1x1/nz.svg} +0 -0
- /package/dist/images/{pe.svg → flags/1x1/pe.svg} +0 -0
- /package/dist/images/{pg.svg → flags/1x1/pg.svg} +0 -0
- /package/dist/images/{ph.svg → flags/1x1/ph.svg} +0 -0
- /package/dist/images/{pm.svg → flags/1x1/pm.svg} +0 -0
- /package/dist/images/{pn.svg → flags/1x1/pn.svg} +0 -0
- /package/dist/images/{ps.svg → flags/1x1/ps.svg} +0 -0
- /package/dist/images/{py.svg → flags/1x1/py.svg} +0 -0
- /package/dist/images/{qa.svg → flags/1x1/qa.svg} +0 -0
- /package/dist/images/{re.svg → flags/1x1/re.svg} +0 -0
- /package/dist/images/{ro.svg → flags/1x1/ro.svg} +0 -0
- /package/dist/images/{rs.svg → flags/1x1/rs.svg} +0 -0
- /package/dist/images/{rw.svg → flags/1x1/rw.svg} +0 -0
- /package/dist/images/{sa.svg → flags/1x1/sa.svg} +0 -0
- /package/dist/images/{sc.svg → flags/1x1/sc.svg} +0 -0
- /package/dist/images/{sd.svg → flags/1x1/sd.svg} +0 -0
- /package/dist/images/{se.svg → flags/1x1/se.svg} +0 -0
- /package/dist/images/{sg.svg → flags/1x1/sg.svg} +0 -0
- /package/dist/images/{sh-ac.svg → flags/1x1/sh-ac.svg} +0 -0
- /package/dist/images/{sh-hl.svg → flags/1x1/sh-hl.svg} +0 -0
- /package/dist/images/{sh-ta.svg → flags/1x1/sh-ta.svg} +0 -0
- /package/dist/images/{si.svg → flags/1x1/si.svg} +0 -0
- /package/dist/images/{sl.svg → flags/1x1/sl.svg} +0 -0
- /package/dist/images/{sm.svg → flags/1x1/sm.svg} +0 -0
- /package/dist/images/{so.svg → flags/1x1/so.svg} +0 -0
- /package/dist/images/{sr.svg → flags/1x1/sr.svg} +0 -0
- /package/dist/images/{st.svg → flags/1x1/st.svg} +0 -0
- /package/dist/images/{sv.svg → flags/1x1/sv.svg} +0 -0
- /package/dist/images/{sy.svg → flags/1x1/sy.svg} +0 -0
- /package/dist/images/{td.svg → flags/1x1/td.svg} +0 -0
- /package/dist/images/{tg.svg → flags/1x1/tg.svg} +0 -0
- /package/dist/images/{th.svg → flags/1x1/th.svg} +0 -0
- /package/dist/images/{tn.svg → flags/1x1/tn.svg} +0 -0
- /package/dist/images/{tr.svg → flags/1x1/tr.svg} +0 -0
- /package/dist/images/{tv.svg → flags/1x1/tv.svg} +0 -0
- /package/dist/images/{tz.svg → flags/1x1/tz.svg} +0 -0
- /package/dist/images/{ua.svg → flags/1x1/ua.svg} +0 -0
- /package/dist/images/{um.svg → flags/1x1/um.svg} +0 -0
- /package/dist/images/{un.svg → flags/1x1/un.svg} +0 -0
- /package/dist/images/{va.svg → flags/1x1/va.svg} +0 -0
- /package/dist/images/{vc.svg → flags/1x1/vc.svg} +0 -0
- /package/dist/images/{ve.svg → flags/1x1/ve.svg} +0 -0
- /package/dist/images/{vg.svg → flags/1x1/vg.svg} +0 -0
- /package/dist/images/{wf.svg → flags/1x1/wf.svg} +0 -0
- /package/dist/images/{ws.svg → flags/1x1/ws.svg} +0 -0
- /package/dist/images/{xx.svg → flags/1x1/xx.svg} +0 -0
- /package/dist/images/{ye.svg → flags/1x1/ye.svg} +0 -0
- /package/dist/images/{yt.svg → flags/1x1/yt.svg} +0 -0
- /package/dist/images/{za.svg → flags/1x1/za.svg} +0 -0
- /package/dist/images/{zm.svg → flags/1x1/zm.svg} +0 -0
- /package/dist/images/{cn.svg → flags/4x3/cn.svg} +0 -0
- /package/dist/images/{cu.svg → flags/4x3/cu.svg} +0 -0
- /package/dist/images/{cv.svg → flags/4x3/cv.svg} +0 -0
- /package/dist/images/{cw.svg → flags/4x3/cw.svg} +0 -0
- /package/dist/images/{de.svg → flags/4x3/de.svg} +0 -0
- /package/dist/images/{dk.svg → flags/4x3/dk.svg} +0 -0
- /package/dist/images/{do.svg → flags/4x3/do.svg} +0 -0
- /package/dist/images/{ee.svg → flags/4x3/ee.svg} +0 -0
- /package/dist/images/{eh.svg → flags/4x3/eh.svg} +0 -0
- /package/dist/images/{er.svg → flags/4x3/er.svg} +0 -0
- /package/dist/images/{eu.svg → flags/4x3/eu.svg} +0 -0
- /package/dist/images/{fi.svg → flags/4x3/fi.svg} +0 -0
- /package/dist/images/{fj.svg → flags/4x3/fj.svg} +0 -0
- /package/dist/images/{fr.svg → flags/4x3/fr.svg} +0 -0
- /package/dist/images/{gb.svg → flags/4x3/gb.svg} +0 -0
- /package/dist/images/{gf.svg → flags/4x3/gf.svg} +0 -0
- /package/dist/images/{gh.svg → flags/4x3/gh.svg} +0 -0
- /package/dist/images/{gn.svg → flags/4x3/gn.svg} +0 -0
- /package/dist/images/{gp.svg → flags/4x3/gp.svg} +0 -0
- /package/dist/images/{gq.svg → flags/4x3/gq.svg} +0 -0
- /package/dist/images/{gr.svg → flags/4x3/gr.svg} +0 -0
- /package/dist/images/{gs.svg → flags/4x3/gs.svg} +0 -0
- /package/dist/images/{gt.svg → flags/4x3/gt.svg} +0 -0
- /package/dist/images/{gu.svg → flags/4x3/gu.svg} +0 -0
- /package/dist/images/{gw.svg → flags/4x3/gw.svg} +0 -0
- /package/dist/images/{gy.svg → flags/4x3/gy.svg} +0 -0
- /package/dist/images/{hm.svg → flags/4x3/hm.svg} +0 -0
- /package/dist/images/{hn.svg → flags/4x3/hn.svg} +0 -0
- /package/dist/images/{ht.svg → flags/4x3/ht.svg} +0 -0
- /package/dist/images/{hu.svg → flags/4x3/hu.svg} +0 -0
- /package/dist/images/{id.svg → flags/4x3/id.svg} +0 -0
- /package/dist/images/{im.svg → flags/4x3/im.svg} +0 -0
- /package/dist/images/{in.svg → flags/4x3/in.svg} +0 -0
- /package/dist/images/{iq.svg → flags/4x3/iq.svg} +0 -0
- /package/dist/images/{ir.svg → flags/4x3/ir.svg} +0 -0
- /package/dist/images/{is.svg → flags/4x3/is.svg} +0 -0
- /package/dist/images/{it.svg → flags/4x3/it.svg} +0 -0
- /package/dist/images/{jm.svg → flags/4x3/jm.svg} +0 -0
- /package/dist/images/{kh.svg → flags/4x3/kh.svg} +0 -0
- /package/dist/images/{km.svg → flags/4x3/km.svg} +0 -0
- /package/dist/images/{kw.svg → flags/4x3/kw.svg} +0 -0
- /package/dist/images/{lb.svg → flags/4x3/lb.svg} +0 -0
- /package/dist/images/{ls.svg → flags/4x3/ls.svg} +0 -0
- /package/dist/images/{ma.svg → flags/4x3/ma.svg} +0 -0
- /package/dist/images/{mc.svg → flags/4x3/mc.svg} +0 -0
- /package/dist/images/{mg.svg → flags/4x3/mg.svg} +0 -0
- /package/dist/images/{mm.svg → flags/4x3/mm.svg} +0 -0
- /package/dist/images/{mo.svg → flags/4x3/mo.svg} +0 -0
- /package/dist/images/{mp.svg → flags/4x3/mp.svg} +0 -0
- /package/dist/images/{ms.svg → flags/4x3/ms.svg} +0 -0
- /package/dist/images/{mw.svg → flags/4x3/mw.svg} +0 -0
- /package/dist/images/{mx.svg → flags/4x3/mx.svg} +0 -0
- /package/dist/images/{ni.svg → flags/4x3/ni.svg} +0 -0
- /package/dist/images/{nu.svg → flags/4x3/nu.svg} +0 -0
- /package/dist/images/{om.svg → flags/4x3/om.svg} +0 -0
- /package/dist/images/{pa.svg → flags/4x3/pa.svg} +0 -0
- /package/dist/images/{pc.svg → flags/4x3/pc.svg} +0 -0
- /package/dist/images/{pf.svg → flags/4x3/pf.svg} +0 -0
- /package/dist/images/{pk.svg → flags/4x3/pk.svg} +0 -0
- /package/dist/images/{pl.svg → flags/4x3/pl.svg} +0 -0
- /package/dist/images/{pr.svg → flags/4x3/pr.svg} +0 -0
- /package/dist/images/{pt.svg → flags/4x3/pt.svg} +0 -0
- /package/dist/images/{pw.svg → flags/4x3/pw.svg} +0 -0
- /package/dist/images/{ru.svg → flags/4x3/ru.svg} +0 -0
- /package/dist/images/{sb.svg → flags/4x3/sb.svg} +0 -0
- /package/dist/images/{sh.svg → flags/4x3/sh.svg} +0 -0
- /package/dist/images/{sj.svg → flags/4x3/sj.svg} +0 -0
- /package/dist/images/{sk.svg → flags/4x3/sk.svg} +0 -0
- /package/dist/images/{sn.svg → flags/4x3/sn.svg} +0 -0
- /package/dist/images/{ss.svg → flags/4x3/ss.svg} +0 -0
- /package/dist/images/{sx.svg → flags/4x3/sx.svg} +0 -0
- /package/dist/images/{sz.svg → flags/4x3/sz.svg} +0 -0
- /package/dist/images/{tc.svg → flags/4x3/tc.svg} +0 -0
- /package/dist/images/{tf.svg → flags/4x3/tf.svg} +0 -0
- /package/dist/images/{tj.svg → flags/4x3/tj.svg} +0 -0
- /package/dist/images/{tk.svg → flags/4x3/tk.svg} +0 -0
- /package/dist/images/{tl.svg → flags/4x3/tl.svg} +0 -0
- /package/dist/images/{tm.svg → flags/4x3/tm.svg} +0 -0
- /package/dist/images/{to.svg → flags/4x3/to.svg} +0 -0
- /package/dist/images/{tt.svg → flags/4x3/tt.svg} +0 -0
- /package/dist/images/{tw.svg → flags/4x3/tw.svg} +0 -0
- /package/dist/images/{ug.svg → flags/4x3/ug.svg} +0 -0
- /package/dist/images/{us.svg → flags/4x3/us.svg} +0 -0
- /package/dist/images/{uy.svg → flags/4x3/uy.svg} +0 -0
- /package/dist/images/{uz.svg → flags/4x3/uz.svg} +0 -0
- /package/dist/images/{vi.svg → flags/4x3/vi.svg} +0 -0
- /package/dist/images/{vn.svg → flags/4x3/vn.svg} +0 -0
- /package/dist/images/{vu.svg → flags/4x3/vu.svg} +0 -0
- /package/dist/images/{xk.svg → flags/4x3/xk.svg} +0 -0
- /package/dist/images/{zw.svg → flags/4x3/zw.svg} +0 -0
|
@@ -1,1016 +1 @@
|
|
|
1
|
-
/*
|
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
-
Author Tobias Koppers @sokra
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
/*
|
|
7
|
-
AdoptNode() is not used because internal state is not reset
|
|
8
|
-
(e.g. the past names map of a HTMLFormElement), this is safe
|
|
9
|
-
in theory but we would rather not risk another attack vector.
|
|
10
|
-
The state that is cloned by importNode() is explicitly defined
|
|
11
|
-
by the specs.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/*
|
|
15
|
-
* Use the DOMParser API by default, fallback later if needs be
|
|
16
|
-
* DOMParser not work for svg when has multiple root element.
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
/*
|
|
20
|
-
* Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.
|
|
21
|
-
* @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)
|
|
22
|
-
* @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)
|
|
23
|
-
* @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.
|
|
24
|
-
*/
|
|
25
|
-
|
|
26
|
-
/* (pushed before children → processed after them, matching the old
|
|
27
|
-
"template content last" order) When the node is a <template>,
|
|
28
|
-
descend into its content. */
|
|
29
|
-
|
|
30
|
-
/* A false return means the node is a custom element kept via
|
|
31
|
-
CUSTOM_ELEMENT_HANDLING - the only keep path through
|
|
32
|
-
_sanitizeDisallowedNode. Run afterSanitizeElements on it so the
|
|
33
|
-
element-hook lifecycle matches normal allowlisted elements: a
|
|
34
|
-
security policy applied in this hook (e.g. stripping an attribute
|
|
35
|
-
from every surviving element) must not silently skip kept custom
|
|
36
|
-
elements (GHSA-c2j3-45gr-mqc4). This mirrors the normal-element
|
|
37
|
-
tail below - the hook runs, then the walker's subsequent
|
|
38
|
-
_sanitizeAttributes pass sanitizes the element's attributes. The
|
|
39
|
-
deliberately skipped namespace and fallback-tag removal checks stay
|
|
40
|
-
skipped; they are removal decisions, not the hook contract. */
|
|
41
|
-
|
|
42
|
-
/* A hook may have detached the node - treat it as removed (see
|
|
43
|
-
_handleHookDetachedNode for the full rationale). */
|
|
44
|
-
|
|
45
|
-
/* A name outside the allowlist is acceptable on custom-element terms
|
|
46
|
-
only. The value checks below are intentionally skipped in that case:
|
|
47
|
-
if the user supplied a tagNameCheck we also allow derived custom
|
|
48
|
-
elements using the same test, and attributes passing the configured
|
|
49
|
-
attributeNameCheck are allowed as custom elements define these at
|
|
50
|
-
their own discretion. */
|
|
51
|
-
|
|
52
|
-
/* Add #text in case KEEP_CONTENT is set to true */
|
|
53
|
-
|
|
54
|
-
/* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */
|
|
55
|
-
|
|
56
|
-
/* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */
|
|
57
|
-
|
|
58
|
-
/* Allow unknown protocols: This provides support for links that
|
|
59
|
-
are handled by protocol handlers which may be unknown ahead of
|
|
60
|
-
time, e.g. fb:, spotify: */
|
|
61
|
-
|
|
62
|
-
/* Allow valid aria-* attributes, the value is always URI safe */
|
|
63
|
-
|
|
64
|
-
/* Allow valid data-* attributes: At least one character after "-"
|
|
65
|
-
(https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)
|
|
66
|
-
XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)
|
|
67
|
-
We don't need to check the value; it's always URI safe. */
|
|
68
|
-
|
|
69
|
-
/* Allowed attribute names */
|
|
70
|
-
|
|
71
|
-
/* Always reset function-based ADD_TAGS / ADD_ATTR checks to prevent
|
|
72
|
-
* leaking across calls when switching from function to array config */
|
|
73
|
-
|
|
74
|
-
/* An element iterated here may itself host an attached
|
|
75
|
-
shadow root. The default NodeIterator does not enter shadow
|
|
76
|
-
trees, so a shadow root nested inside template.content was
|
|
77
|
-
previously reached by no walk at all (the pre-pass at
|
|
78
|
-
_sanitizeAttachedShadowRoots descends via childNodes, which
|
|
79
|
-
doesn't enter template.content; the template-content recursion
|
|
80
|
-
above iterates the content but never inspected shadowRoot).
|
|
81
|
-
Walk it explicitly. The nodeType guard avoids reading
|
|
82
|
-
shadowRoot off text / comment / CDATA / PI nodes that the
|
|
83
|
-
iterator also surfaces. */
|
|
84
|
-
|
|
85
|
-
/* Assign config vars */
|
|
86
|
-
|
|
87
|
-
/* Attributes safe for values like "javascript:" */
|
|
88
|
-
|
|
89
|
-
/* Best-effort */
|
|
90
|
-
|
|
91
|
-
/* Best-effort teardown; a still-attached child is handled below */
|
|
92
|
-
|
|
93
|
-
/* Check attributes next */
|
|
94
|
-
|
|
95
|
-
/* Check if element is clobbered or can clobber */
|
|
96
|
-
|
|
97
|
-
/* Check if we have a custom element to handle */
|
|
98
|
-
|
|
99
|
-
/* Check if we have attributes; if not we might have a text node */
|
|
100
|
-
|
|
101
|
-
/* Check no script, data or unknown possibly unsafe URI
|
|
102
|
-
unless we know URI values are safe for that attribute */
|
|
103
|
-
|
|
104
|
-
/* Check value is safe. First, is attr inert? If so, is safe */
|
|
105
|
-
|
|
106
|
-
/* Check we have a DOM node from the data */
|
|
107
|
-
|
|
108
|
-
/* Check whether element has a valid namespace.
|
|
109
|
-
Realm-safe check (GHSA-hpcv-96wg-7vj8): use the cached Node.prototype
|
|
110
|
-
nodeType getter rather than `instanceof Element`, which is realm-
|
|
111
|
-
bound and short-circuits to false for any node minted in a different
|
|
112
|
-
realm — letting a foreign-realm element with a forbidden namespace
|
|
113
|
-
slip past the namespace check entirely. */
|
|
114
|
-
|
|
115
|
-
/* Clean up removed elements */
|
|
116
|
-
|
|
117
|
-
/* Clobber-safe ownerDocument read, same reasoning as _createNodeIterator:
|
|
118
|
-
under SAFE_FOR_TEMPLATES this runs on the live IN_PLACE root, which may
|
|
119
|
-
carry a form-named-getter override of ownerDocument. */
|
|
120
|
-
|
|
121
|
-
/* Clobbered or already-detached node - best-effort fall back to a
|
|
122
|
-
name-based removal so the "is" handling below still runs. Note this
|
|
123
|
-
fallback ASCII-lowercases its lookup key in an HTML document and so
|
|
124
|
-
cannot reach a case-preserved attribute name; the cached
|
|
125
|
-
removeAttributeNode() above is what removes those, and a clobbered
|
|
126
|
-
form is already removed wholesale by _isClobbered() before reaching
|
|
127
|
-
here. */
|
|
128
|
-
|
|
129
|
-
/* Clobbered removeAttribute/hasAttribute on a doomed node — ignore */
|
|
130
|
-
|
|
131
|
-
/* Clonable shadow roots are deep-cloned by importNode(); sanitize
|
|
132
|
-
them before the main iterator runs, since the iterator does not
|
|
133
|
-
descend into shadow trees. The walk routes every read through a
|
|
134
|
-
cached prototype getter so clobbering descendants on a form root
|
|
135
|
-
cannot hide a shadow host from this pass.
|
|
136
|
-
Traverse from `body`, not `importedNode`: when importedNode is a
|
|
137
|
-
DocumentFragment, the appendChild() above moves its children into
|
|
138
|
-
`body` and leaves the fragment empty, so walking importedNode would
|
|
139
|
-
scan nothing and miss every attached shadow host now under `body`
|
|
140
|
-
(SO-003). In the BODY/HTML branches `body === importedNode`, so this
|
|
141
|
-
is equivalent there; in the element branch `body` contains the
|
|
142
|
-
appended element and its descendants. `body` covers all three. */
|
|
143
|
-
|
|
144
|
-
/* Clone the hook-mutable allowlists before the walk whenever an
|
|
145
|
-
* uponSanitize* hook is registered. The hook event exposes ALLOWED_TAGS
|
|
146
|
-
* and ALLOWED_ATTR by reference (as allowedTags / allowedAttributes), so
|
|
147
|
-
* a hook that widens them would otherwise mutate the shared set
|
|
148
|
-
* permanently: across later calls and across every element. Cloning per
|
|
149
|
-
* walk keeps documented in-call widening working while scoping it to the
|
|
150
|
-
* call. A single guard for both config paths - the per-call path rebinds
|
|
151
|
-
* the sets in _parseConfig each call, the persistent path restores them
|
|
152
|
-
* from the captured bindings just above - so the two cannot diverge. */
|
|
153
|
-
|
|
154
|
-
/* Close the pre-walk clone-guard's timing gap: an uponSanitizeElement
|
|
155
|
-
hook may have been installed after that guard sampled the hook arrays
|
|
156
|
-
(e.g. lazily from beforeSanitizeElements), leaving ALLOWED_TAGS still
|
|
157
|
-
aliasing a shared binding that a widening hook would mutate by
|
|
158
|
-
reference. Fork it before exposing it to the hook. */
|
|
159
|
-
|
|
160
|
-
/* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */
|
|
161
|
-
|
|
162
|
-
/* Create a HTML document */
|
|
163
|
-
|
|
164
|
-
/* Decide if ARIA attributes are okay */
|
|
165
|
-
|
|
166
|
-
/* Decide if custom data attributes are okay */
|
|
167
|
-
|
|
168
|
-
/* Declarative-partial-updates / streaming pre-pass: sever every patch
|
|
169
|
-
linkage across the live tree BEFORE the walk, so no patch can fire
|
|
170
|
-
mid-walk and inject into an already-processed region. Runs first, so
|
|
171
|
-
it also covers the forbidden/clobbered roots that throw below. */
|
|
172
|
-
|
|
173
|
-
/* Deep shadow DOM detected.
|
|
174
|
-
Realm-safe check (GHSA-hpcv-96wg-7vj8): use nodeType against the
|
|
175
|
-
DOCUMENT_FRAGMENT_NODE constant rather than instanceof, so we
|
|
176
|
-
recurse into <template>.content from foreign realms too. */
|
|
177
|
-
|
|
178
|
-
/* Deferred shadow-DOM sanitisation: runs after its subtree was walked. */
|
|
179
|
-
|
|
180
|
-
/* Detect mXSS attempts abusing namespace confusion */
|
|
181
|
-
|
|
182
|
-
/* Did the hooks approve of the attribute? */
|
|
183
|
-
|
|
184
|
-
/* Did the hooks force-keep the attribute? */
|
|
185
|
-
|
|
186
|
-
/* Do some early pre-sanitization to avoid unsafe root nodes.
|
|
187
|
-
Read nodeName through the cached prototype getter — a clobbering
|
|
188
|
-
child named "nodeName" on the form root would otherwise shadow
|
|
189
|
-
the property and let this check skip the root-allowlist
|
|
190
|
-
validation entirely. */
|
|
191
|
-
|
|
192
|
-
/* Document namespace */
|
|
193
|
-
|
|
194
|
-
/* Execute a hook if present */
|
|
195
|
-
|
|
196
|
-
/* Exit directly if we have nothing to do */
|
|
197
|
-
|
|
198
|
-
/* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */
|
|
199
|
-
|
|
200
|
-
/* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it */
|
|
201
|
-
|
|
202
|
-
/* Fail closed on a live clobbered root before throwing.
|
|
203
|
-
_neutralizeRoot's reads are clobber-safe (cached getters); the
|
|
204
|
-
form's non-clobbered descendants, e.g. an armed <img>, are scrubbed. */
|
|
205
|
-
|
|
206
|
-
/* Fail closed on a live root: neutralize handlers/children before
|
|
207
|
-
throwing, exactly as the mid-walk abort path does. */
|
|
208
|
-
|
|
209
|
-
/* Fail-closed completion of the audit-5 F1 fix: every node removed from
|
|
210
|
-
the caller's live tree is detached but may still hold a queued
|
|
211
|
-
resource-event handler that fires in page scope after we return. The
|
|
212
|
-
move-hoist covers only disallowed-tag KEEP_CONTENT removals; strip the
|
|
213
|
-
non-allow-listed attributes off every other removed subtree (clobber,
|
|
214
|
-
mXSS, namespace, comments, KEEP_CONTENT:false, …) so those handlers are
|
|
215
|
-
cancelled before any event can fire. Runs synchronously, pre-return. */
|
|
216
|
-
|
|
217
|
-
/* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */
|
|
218
|
-
|
|
219
|
-
/* Full DOM Clobbering protection via namespace isolation,
|
|
220
|
-
* Prefix id and name attributes with `user-content-`
|
|
221
|
-
*/
|
|
222
|
-
|
|
223
|
-
/* Further prevent gadget XSS for dynamically built script tags */
|
|
224
|
-
|
|
225
|
-
/* Get node iterator */
|
|
226
|
-
|
|
227
|
-
/* Get the element's text content */
|
|
228
|
-
|
|
229
|
-
/* Go backwards over all attributes; safely remove bad ones */
|
|
230
|
-
|
|
231
|
-
/* Handle attributes that require Trusted Types */
|
|
232
|
-
|
|
233
|
-
/* Handle invalid data-* attribute set by try-catching it */
|
|
234
|
-
|
|
235
|
-
/* Hoist by moving each child up one level rather than deep-cloning
|
|
236
|
-
it. Moving transfers every descendant exactly once, so a chain of
|
|
237
|
-
nested disallowed elements costs O(n) instead of the O(n^2) that
|
|
238
|
-
re-cloning the shrinking subtree at each level produced; it also
|
|
239
|
-
empties the removed original, so `DOMPurify.removed` no longer
|
|
240
|
-
pins whole subtrees. Moving preserves the in-place guarantee too:
|
|
241
|
-
an original carrying already-queued resource events (`<img
|
|
242
|
-
onerror>`, `<video>`/`<audio>` error, lazy/`onload`, …) is
|
|
243
|
-
relocated and sanitised rather than left detached but still armed.
|
|
244
|
-
The sole case that must clone is removing the walk root itself.
|
|
245
|
-
The result is serialised from the root's subtree, so a restrictive
|
|
246
|
-
ALLOWED_TAGS that strips the root (`body` on the string path) must
|
|
247
|
-
leave the content inside it, which only cloning does. In IN_PLACE
|
|
248
|
-
the root is pre-validated as an allowed tag and so is never removed
|
|
249
|
-
here, so that path always takes the move branch.
|
|
250
|
-
`childNodes` is live; a tail-to-head walk keeps `childNodes[i]`
|
|
251
|
-
valid whether we move (drops the trailing entry) or clone (leaves
|
|
252
|
-
the list intact). */
|
|
253
|
-
|
|
254
|
-
/* Ideally, do not touch anything below this line */
|
|
255
|
-
|
|
256
|
-
/* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */
|
|
257
|
-
|
|
258
|
-
/* If a `Node` is passed to sanitize(), then performs sanitization in-place instead
|
|
259
|
-
* of importing it into a new Document and returning a sanitized copy */
|
|
260
|
-
|
|
261
|
-
/* If dirty is a DOM element, append to an empty document to avoid
|
|
262
|
-
elements being stripped by the parser */
|
|
263
|
-
|
|
264
|
-
/* If we sanitized `dirty` in-place, return it. */
|
|
265
|
-
|
|
266
|
-
/* Initialize shared config vars if necessary. */
|
|
267
|
-
|
|
268
|
-
/* Initialize the document to work on */
|
|
269
|
-
|
|
270
|
-
/* Is `value` valid for this attribute? */
|
|
271
|
-
|
|
272
|
-
/* Iterative (explicit stack) rather than per-child recursion. DOM APIs
|
|
273
|
-
impose no depth cap, so an attacker-shaped tree (JSON/CRDT/editor data
|
|
274
|
-
built straight into the DOM — the IN_PLACE surface) deeper than the JS
|
|
275
|
-
call-stack budget would otherwise overflow native recursion here and
|
|
276
|
-
throw at the IN_PLACE entry pre-pass, before a single node is
|
|
277
|
-
sanitized, leaving the caller's live tree untouched (fail-open). See
|
|
278
|
-
campaign-3 F4. A heap stack keeps depth off the call stack.
|
|
279
|
-
Each work item is either a node to descend into, or a deferred
|
|
280
|
-
`_sanitizeShadowDOM` for an already-walked shadow root. The deferred
|
|
281
|
-
form preserves the original post-order discipline: a shadow root's
|
|
282
|
-
nested shadow roots are discovered before the outer shadow is
|
|
283
|
-
sanitized (which may remove hosts). Pushes are in reverse of the
|
|
284
|
-
desired processing order (LIFO): template content, then children, then
|
|
285
|
-
the shadow-sanitize, then the shadow walk — so the order matches the
|
|
286
|
-
previous recursion exactly. */
|
|
287
|
-
|
|
288
|
-
/* Keep a reference to config to pass to hooks */
|
|
289
|
-
|
|
290
|
-
/* Keep content except for bad-listed elements.
|
|
291
|
-
Use the cached prototype getters exclusively — the previous code
|
|
292
|
-
had `|| currentNode.parentNode` / `|| currentNode.childNodes`
|
|
293
|
-
fallbacks, but the cached getters always return the canonical
|
|
294
|
-
value (or null for a real parent-less node), so the fallback
|
|
295
|
-
path was dead in safe cases and a clobbering surface in unsafe
|
|
296
|
-
ones. Falsy cached results stay falsy; the `if (childNodes &&
|
|
297
|
-
parentNode)` check already gates correctly. */
|
|
298
|
-
|
|
299
|
-
/* Keep element content when removing element? */
|
|
300
|
-
|
|
301
|
-
/* Keep image data URIs alive if src/xlink:href is allowed */
|
|
302
|
-
|
|
303
|
-
/* Make sure attribute cannot clobber */
|
|
304
|
-
|
|
305
|
-
/* Make sure that older browsers don't get fallback-tag mXSS */
|
|
306
|
-
|
|
307
|
-
/* Make sure we cannot easily use animated hrefs, even if animations are allowed */
|
|
308
|
-
|
|
309
|
-
/* Make sure we have a string to sanitize.
|
|
310
|
-
DO NOT return early, as this will return the wrong type if
|
|
311
|
-
the user has requested a DOM object rather than a string */
|
|
312
|
-
|
|
313
|
-
/* Merge configuration parameters */
|
|
314
|
-
|
|
315
|
-
/* Node is already a body, use as is */
|
|
316
|
-
|
|
317
|
-
/* Nodes _forceRemove'd earlier in the aborted walk are already
|
|
318
|
-
detached from the root, so _neutralizeRoot's subtree pass does not
|
|
319
|
-
reach them. Defuse them too, mirroring the success-path loop below. */
|
|
320
|
-
|
|
321
|
-
/* Now let's check the element's type and name */
|
|
322
|
-
|
|
323
|
-
/* Now start iterating over the created document.
|
|
324
|
-
The walk runs inside an exception barrier (campaign-3 F2): a re-entrant
|
|
325
|
-
engine/custom-element mutation can detach a node mid-walk so
|
|
326
|
-
`_forceRemove`'s parentless guard throws, aborting the loop. Without the
|
|
327
|
-
barrier the caller's in-place tree would be left half-sanitized with the
|
|
328
|
-
unvisited tail still armed. _createNodeIterator itself is inside the
|
|
329
|
-
barrier too: constructing the iterator dereferences the root's document,
|
|
330
|
-
and any failure there (e.g. an exotic/clobbered root) must still fail
|
|
331
|
-
closed rather than skip the neutralize. On any throw we fail closed -
|
|
332
|
-
strip the in-place root bare - then rethrow so the existing throw
|
|
333
|
-
contract is preserved. (String/DOM-copy paths never return the partial
|
|
334
|
-
body, so the propagating throw is already fail-closed there.) */
|
|
335
|
-
|
|
336
|
-
/* Only an empty (binary) value remains safe at this point;
|
|
337
|
-
anything else is presumed unsafe, do not add it back */
|
|
338
|
-
|
|
339
|
-
/* Only the named-prop remove-and-recreate owns a DOMPurify.removed
|
|
340
|
-
record to pop; a plain trim/template/Trusted-Types writeback owns
|
|
341
|
-
none, so popping here would drop an unrelated subtree's cleanup
|
|
342
|
-
record (SO-001). */
|
|
343
|
-
|
|
344
|
-
/* Parse profile info */
|
|
345
|
-
|
|
346
|
-
/* Parsing of strict XHTML documents */
|
|
347
|
-
|
|
348
|
-
/* Persistent setConfig() path: _parseConfig is skipped, so the sets are
|
|
349
|
-
* not re-derived per call. Restore them from the pristine bindings
|
|
350
|
-
* captured at setConfig() time so a previous call's hook clone (mutated
|
|
351
|
-
* below) does not carry over. */
|
|
352
|
-
|
|
353
|
-
/* Pre-flight the root through _isClobbered. The iterator-driven
|
|
354
|
-
removal path can not detach a parent-less root: _forceRemove
|
|
355
|
-
falls through to Element.prototype.remove(), which per spec
|
|
356
|
-
is a no-op on a node with no parent. A clobbered root would
|
|
357
|
-
then survive the main loop with its attributes uninspected,
|
|
358
|
-
because _sanitizeAttributes early-returns on _isClobbered. The
|
|
359
|
-
result would be an attacker-controlled form, complete with any
|
|
360
|
-
event-handler attributes the caller passed in, handed back to
|
|
361
|
-
the application unsanitized. Refuse to sanitize such a root
|
|
362
|
-
the same way we refuse a forbidden tag. GHSA-r47g-fvhr-h676. */
|
|
363
|
-
|
|
364
|
-
/* Push the deferred sanitise first so it pops after the shadow
|
|
365
|
-
walk we push next, i.e. nested shadow roots are discovered
|
|
366
|
-
before this one is sanitised. */
|
|
367
|
-
|
|
368
|
-
/* Read ownerDocument through the cached Node.prototype getter, never the
|
|
369
|
-
direct property. HTMLFormElement has [LegacyOverrideBuiltIns], so a
|
|
370
|
-
clobbering child (<input name="ownerDocument"> or a form-associated
|
|
371
|
-
external input) shadows the prototype getter and makes a direct read
|
|
372
|
-
return that <input>. createNodeIterator.call(<input>, ...) then throws
|
|
373
|
-
"Illegal invocation", and on the IN_PLACE path that throw lands before
|
|
374
|
-
the walk's fail-closed barrier - leaving the caller's live tree, with
|
|
375
|
-
any already-armed handler in it, un-neutralized. The cached getter
|
|
376
|
-
returns the real Document regardless of the clobber. */
|
|
377
|
-
|
|
378
|
-
/* Reject declarative-partial-updates patch-linkage attributes
|
|
379
|
-
(https://github.com/WICG/declarative-partial-updates).
|
|
380
|
-
Empirical note (Chrome 150, verified — see
|
|
381
|
-
test/declarative-patch-probe-v3.html): expansion is NOT applied after
|
|
382
|
-
sanitization. For the string path it fires during sanitize()'s own
|
|
383
|
-
parse, so the walk sees and sanitizes the fully materialized expanded
|
|
384
|
-
tree — teleports into MathML/SVG integration points included; a
|
|
385
|
-
weaponized `<template for>`->`<img onerror>` comes back with the handler
|
|
386
|
-
stripped. For the IN_PLACE path it fires on connection, before the walk.
|
|
387
|
-
Either way DOMPurify is NOT blind to the patch.
|
|
388
|
-
This removal is therefore defense-in-depth rather than the sole barrier:
|
|
389
|
-
it prevents live linkage from surviving into the OUTPUT and re-expanding
|
|
390
|
-
in the caller's context, and keeps behaviour deterministic if a future
|
|
391
|
-
engine defers expansion. `for` is legitimate only on <label>/<output>;
|
|
392
|
-
anywhere else (notably <template for>) it links the element to a patch
|
|
393
|
-
target and teleports or removes an arbitrary DOM range by id/marker name.
|
|
394
|
-
`patchsrc` fetches remote markup and is treated as a script-loading
|
|
395
|
-
mechanism (CSP). Gated on SAFE_FOR_XML so the removal groups with the
|
|
396
|
-
other structural-threat checks and stays overridable, consistent with
|
|
397
|
-
the rest of the codebase. PI range markers are already removed by
|
|
398
|
-
_isUnsafeNode. */
|
|
399
|
-
|
|
400
|
-
/* Reject unknown entry points. Without this, a non-hook key (e.g.
|
|
401
|
-
* '__proto__') indexes off the prototype chain rather than a real
|
|
402
|
-
* hook array, and arrayPush then writes to Object.prototype. Guard
|
|
403
|
-
* with an own-property check against the known hook names. */
|
|
404
|
-
|
|
405
|
-
/* Remove element if anything forbids its presence */
|
|
406
|
-
|
|
407
|
-
/* Remove first element node (ours) if FORCE_BODY is set */
|
|
408
|
-
|
|
409
|
-
/* Remove mXSS vectors, processing instructions and risky comments */
|
|
410
|
-
|
|
411
|
-
/* Remove range markers (the target side of a patch linkage): every
|
|
412
|
-
processing instruction, and any markup-bearing comment. */
|
|
413
|
-
|
|
414
|
-
/* Remove rawtext/literal-text elements whose literal serialization
|
|
415
|
-
re-opens markup on an HTML reparse - shapes (a) and (b) documented at
|
|
416
|
-
LITERAL_TEXT_ELEMENTS. Both are invisible to rule 1 above (which
|
|
417
|
-
self-disables once there is an element child, and whose second probe
|
|
418
|
-
reads the innerHTML an XML/XHTML document serializes escaped), which
|
|
419
|
-
is why both probes here read textContent instead. Previously only
|
|
420
|
-
`style`-with-element-child was covered; every element in
|
|
421
|
-
LITERAL_TEXT_ELEMENTS shares this literal serialization and is
|
|
422
|
-
equally affected. */
|
|
423
|
-
|
|
424
|
-
/* Resolve IN_PLACE for this call without mutating persistent config.
|
|
425
|
-
Writing the IN_PLACE closure variable here leaks under setConfig(),
|
|
426
|
-
where _parseConfig is skipped on later calls: a single string call would
|
|
427
|
-
disable in-place mode for every subsequent node call, returning a
|
|
428
|
-
sanitized copy while leaving the caller's node — which in-place callers
|
|
429
|
-
keep using and whose return value they ignore — unsanitized. REPORT-2. */
|
|
430
|
-
|
|
431
|
-
/* Return dirty HTML if DOMPurify cannot run */
|
|
432
|
-
|
|
433
|
-
/* Return sanitized string or DOM */
|
|
434
|
-
|
|
435
|
-
/* Same lazy-install guard as uponSanitizeElement (see there): fork the
|
|
436
|
-
attribute allowlist off its shared binding before a hook can see it. */
|
|
437
|
-
|
|
438
|
-
/* Sanitize attached shadow roots before the main iterator runs.
|
|
439
|
-
The iterator does not descend into shadow trees. Same fail-closed
|
|
440
|
-
barrier as the main walk (campaign-3 F2): a custom-element reaction
|
|
441
|
-
inside a shadow root could abort this pre-pass before the walk runs,
|
|
442
|
-
which would otherwise leave the entire live tree unsanitized. */
|
|
443
|
-
|
|
444
|
-
/* Sanitize attribute content to be template-safe */
|
|
445
|
-
|
|
446
|
-
/* Sanitize element content to be template-safe */
|
|
447
|
-
|
|
448
|
-
/* Sanitize final string template-safe */
|
|
449
|
-
|
|
450
|
-
/* Sanitize tags and elements */
|
|
451
|
-
|
|
452
|
-
/* Serialize doctype if allowed */
|
|
453
|
-
|
|
454
|
-
/* Set configuration parameters */
|
|
455
|
-
|
|
456
|
-
/* Shadow DOM detected, sanitize it.
|
|
457
|
-
Realm-safe check (GHSA-hpcv-96wg-7vj8): nodeType-based detection
|
|
458
|
-
instead of instanceof, so foreign-realm <template>.content is
|
|
459
|
-
walked correctly. */
|
|
460
|
-
|
|
461
|
-
/* Shadow root (processed first): walk its subtree, then sanitise it.
|
|
462
|
-
Realm-safe check (GHSA-hpcv-96wg-7vj8): nodeType-based detection
|
|
463
|
-
rather than `instanceof DocumentFragment`, which is realm-bound and
|
|
464
|
-
silently skipped foreign-realm shadow roots (e.g.
|
|
465
|
-
iframe.contentDocument attachShadow). */
|
|
466
|
-
|
|
467
|
-
/* Shield configuration object from prototype pollution */
|
|
468
|
-
|
|
469
|
-
/* Shield configuration object from tampering */
|
|
470
|
-
|
|
471
|
-
/* Stringify, in case dirty is an object */
|
|
472
|
-
|
|
473
|
-
/* Strip every disallowed attribute (on* handlers included) off the whole
|
|
474
|
-
subtree BEFORE detaching anything. Detaching first would hand back
|
|
475
|
-
handler-bearing originals (e.g. an already-loading `<img onerror>`)
|
|
476
|
-
whose queued resource event still fires in page scope after we throw.
|
|
477
|
-
Clobber-safe reads; a doomed clobbered node's own attributes are
|
|
478
|
-
irrelevant while its non-clobbered descendants are reached and scrubbed. */
|
|
479
|
-
|
|
480
|
-
/* Strip patch-source attributes (the source side) off elements. */
|
|
481
|
-
|
|
482
|
-
/* Tags that are safe for data: URIs */
|
|
483
|
-
|
|
484
|
-
/* The normal detach failed — this is reached for a parentless node
|
|
485
|
-
(getParentNode() is null, so .removeChild throws). Element.prototype
|
|
486
|
-
.remove() is itself a spec no-op on a parentless node, so a recorded
|
|
487
|
-
"removal" would otherwise hand the caller back an intact,
|
|
488
|
-
payload-bearing node (e.g. a detached IN_PLACE root the mXSS canary or
|
|
489
|
-
the style-with-element-child rule decided to kill). Fail closed by
|
|
490
|
-
throwing — exactly as a clobbered root does at the IN_PLACE entry —
|
|
491
|
-
rather than trying to "neutralize" the node via its own methods.
|
|
492
|
-
Neutralizing would mean calling getAttributeNames()/removeAttribute()
|
|
493
|
-
on the node, both of which a <form> root can clobber via a named child
|
|
494
|
-
(and _isClobbered does not even probe getAttributeNames), so the
|
|
495
|
-
neutralize step could itself be silently defeated, leaving the payload
|
|
496
|
-
intact. A throw touches only the cached, clobber-safe remove() and
|
|
497
|
-
getParentNode(). Generalizes GHSA-r47g-fvhr-h676 (clobbered-form root)
|
|
498
|
-
to every root-kill reason. REPORT-3.
|
|
499
|
-
This lives inside the catch, so it never fires for a normally-removed
|
|
500
|
-
in-tree node: those have a parent, removeChild() succeeds, and the
|
|
501
|
-
catch is not entered. Only a kept (parentless) root reaches here. */
|
|
502
|
-
|
|
503
|
-
/* The uponSanitizeElement hook may have detached the node, exactly as
|
|
504
|
-
above (see _handleHookDetachedNode for the full rationale). */
|
|
505
|
-
|
|
506
|
-
/* Tracks whether this specific attribute pushed a DOMPurify.removed
|
|
507
|
-
record that a later _setAttributeValue() writeback is expected to pop
|
|
508
|
-
back off (the SANITIZE_NAMED_PROPS remove-and-recreate below is the
|
|
509
|
-
only path that does). A value that merely changed via trim, template
|
|
510
|
-
scrubbing, or Trusted Types pushes no such record, so its writeback
|
|
511
|
-
must NOT pop — otherwise it consumes an unrelated _forceRemove subtree
|
|
512
|
-
record and that detached subtree escapes the IN_PLACE handler-
|
|
513
|
-
neutralization pass (SO-001). */
|
|
514
|
-
|
|
515
|
-
/* Use createHTMLDocument in case DOMParser is not available */
|
|
516
|
-
|
|
517
|
-
/* Work around a security issue in jQuery 3.0 */
|
|
518
|
-
|
|
519
|
-
/* Work around a security issue with comments inside attributes */
|
|
520
|
-
|
|
521
|
-
/* Work on whole document or just its body */
|
|
522
|
-
|
|
523
|
-
/* ______________________________________________ */
|
|
524
|
-
|
|
525
|
-
/* allowed element names */
|
|
526
|
-
|
|
527
1
|
/*! @license DOMPurify 3.4.15 | (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.15/LICENSE */
|
|
528
|
-
|
|
529
|
-
/**
|
|
530
|
-
* Evaluate a CUSTOM_ELEMENT_HANDLING check (a RegExp or a predicate
|
|
531
|
-
* function, per the validation in _parseConfig) against a name.
|
|
532
|
-
* Additional arguments are forwarded to predicate functions - the
|
|
533
|
-
* attributeNameCheck predicate receives the tag name as its second
|
|
534
|
-
* argument. A null/absent check never matches.
|
|
535
|
-
*
|
|
536
|
-
* @param check the configured tagNameCheck / attributeNameCheck value
|
|
537
|
-
* @param name the name to test
|
|
538
|
-
* @param args extra arguments forwarded to a predicate function
|
|
539
|
-
* @return true if the check matches the name
|
|
540
|
-
*/
|
|
541
|
-
|
|
542
|
-
/**
|
|
543
|
-
* Expose whether this browser supports running the full DOMPurify.
|
|
544
|
-
*/
|
|
545
|
-
|
|
546
|
-
/**
|
|
547
|
-
* Structural-threat checks that condemn a node regardless of the
|
|
548
|
-
* allowlists: mXSS via namespace confusion, risky CSS construction,
|
|
549
|
-
* processing instructions, markup-bearing comments. Pure predicate;
|
|
550
|
-
* the caller removes. Check order is load-bearing.
|
|
551
|
-
*
|
|
552
|
-
* @param currentNode the node to inspect
|
|
553
|
-
* @param tagName the node's transformCaseFunc'd tag name
|
|
554
|
-
* @return true if the node must be removed
|
|
555
|
-
*/
|
|
556
|
-
|
|
557
|
-
/**
|
|
558
|
-
* We consider the elements and attributes below to be safe. Ideally
|
|
559
|
-
* don't add any new ones but feel free to remove unwanted ones.
|
|
560
|
-
*/
|
|
561
|
-
|
|
562
|
-
/**
|
|
563
|
-
* Add properties to a lookup table
|
|
564
|
-
*
|
|
565
|
-
* @param set - The set to which elements will be added.
|
|
566
|
-
* @param array - The array containing elements to be added to the set.
|
|
567
|
-
* @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.
|
|
568
|
-
* @returns The modified set with added elements.
|
|
569
|
-
*/
|
|
570
|
-
|
|
571
|
-
/**
|
|
572
|
-
* Clean up an array to harden against CSPP
|
|
573
|
-
*
|
|
574
|
-
* @param array - The array to be cleaned.
|
|
575
|
-
* @returns The cleaned version of the array
|
|
576
|
-
*/
|
|
577
|
-
|
|
578
|
-
/**
|
|
579
|
-
* Convert non-node values into strings without depending on direct property access.
|
|
580
|
-
*
|
|
581
|
-
* @param value - The value to stringify.
|
|
582
|
-
* @returns A string representation of the provided value.
|
|
583
|
-
*/
|
|
584
|
-
|
|
585
|
-
/**
|
|
586
|
-
* Creates a new function that calls the given function with a specified thisArg and arguments.
|
|
587
|
-
*
|
|
588
|
-
* @param func - The function to be wrapped and called.
|
|
589
|
-
* @returns A new function that calls the given function with a specified thisArg and arguments.
|
|
590
|
-
*/
|
|
591
|
-
|
|
592
|
-
/**
|
|
593
|
-
* Creates a new function that constructs an instance of the given constructor function with the provided arguments.
|
|
594
|
-
*
|
|
595
|
-
* @param func - The constructor function to be wrapped and called.
|
|
596
|
-
* @returns A new function that constructs an instance of the given constructor function with the provided arguments.
|
|
597
|
-
*/
|
|
598
|
-
|
|
599
|
-
/**
|
|
600
|
-
* Shallow clone an object
|
|
601
|
-
*
|
|
602
|
-
* @param object - The object to be cloned.
|
|
603
|
-
* @returns A new object that copies the original.
|
|
604
|
-
*/
|
|
605
|
-
|
|
606
|
-
/**
|
|
607
|
-
* This method automatically checks if the prop is function or getter and behaves accordingly.
|
|
608
|
-
*
|
|
609
|
-
* @param object - The object to look up the getter function in its prototype chain.
|
|
610
|
-
* @param prop - The property name for which to find the getter function.
|
|
611
|
-
* @returns The getter function found in the prototype chain or a fallback function.
|
|
612
|
-
*/
|
|
613
|
-
|
|
614
|
-
/************************************************************************/
|
|
615
|
-
|
|
616
|
-
/******/
|
|
617
|
-
|
|
618
|
-
/***/
|
|
619
|
-
|
|
620
|
-
// "childNodes" shadows the prototype getter. Direct reads of
|
|
621
|
-
|
|
622
|
-
// (Trusted Types unsupported, creation failed, or an explicit opt-out)
|
|
623
|
-
|
|
624
|
-
// (e.g. HTMLSelectElement.length is a defined unsigned-long).
|
|
625
|
-
|
|
626
|
-
// (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)
|
|
627
|
-
|
|
628
|
-
// (rather than hoisting) breaks that cascade; the content is a duplicate
|
|
629
|
-
|
|
630
|
-
// (same-realm OR foreign-realm) has both reads pointing at the same
|
|
631
|
-
|
|
632
|
-
// (the caller's other defences still apply).
|
|
633
|
-
|
|
634
|
-
// ./node_modules/dompurify/dist/purify.es.mjs
|
|
635
|
-
|
|
636
|
-
// ./src/build/backend/js/plugin/address.js
|
|
637
|
-
|
|
638
|
-
// ./src/build/backend/js/plugin/billing.js
|
|
639
|
-
|
|
640
|
-
// ./src/build/global/js/helper.js
|
|
641
|
-
|
|
642
|
-
// ./src/class/ApiClient.js
|
|
643
|
-
|
|
644
|
-
// ./src/class/Google/MapManager.js
|
|
645
|
-
|
|
646
|
-
// ./src/class/Google/MapNavigator.js
|
|
647
|
-
|
|
648
|
-
// ./src/class/TranslationProvider.js
|
|
649
|
-
|
|
650
|
-
// ./src/export/backend/head.js
|
|
651
|
-
|
|
652
|
-
// ./src/export/lib/dompurify/dompurify.js
|
|
653
|
-
|
|
654
|
-
// 1. Prova lingua corrente
|
|
655
|
-
|
|
656
|
-
// 2. Se non trovato, prova default
|
|
657
|
-
|
|
658
|
-
// 3. Se ancora null → errore
|
|
659
|
-
|
|
660
|
-
// 4. Sostituzione placeholder
|
|
661
|
-
|
|
662
|
-
// <math> and HTML integration points
|
|
663
|
-
|
|
664
|
-
// <selectedcontent> mirrors the selected <option>'s subtree, cloned by
|
|
665
|
-
|
|
666
|
-
// A caller-supplied policy applies to this configuration only.
|
|
667
|
-
|
|
668
|
-
// A form descendant named "removeAttributeNode" or "getAttributeNode"
|
|
669
|
-
|
|
670
|
-
// ASCII-lowercases its lookup key in an HTML document, silently missing
|
|
671
|
-
|
|
672
|
-
// Abilita il rendering del percorso (Directions API)
|
|
673
|
-
|
|
674
|
-
// Abilita l'editing: click sulla mappa aggiunge un marker trascinabile
|
|
675
|
-
|
|
676
|
-
// Adatta lo zoom per includere percorso e marker
|
|
677
|
-
|
|
678
|
-
// Aggiorna il marker utente e ruota la freccia secondo la direzione
|
|
679
|
-
|
|
680
|
-
// Allow the callers to control the unique policy name
|
|
681
|
-
|
|
682
|
-
// Allows developers to see this is a property they can set
|
|
683
|
-
|
|
684
|
-
// Apre Google Maps con il percorso attuale, col travelMode del MapManager
|
|
685
|
-
|
|
686
|
-
// As per issue #47, the web-components registry is inherited by a
|
|
687
|
-
|
|
688
|
-
// Autocomplete Places su un input: il luogo scelto diventa un marker
|
|
689
|
-
|
|
690
|
-
// Avvia il tracciamento GPS continuo con watchPosition
|
|
691
|
-
|
|
692
|
-
// Bearing tra due coordinate, per orientare la freccia
|
|
693
|
-
|
|
694
|
-
// Calcola il percorso tra i marker con le Directions API e lo disegna
|
|
695
|
-
|
|
696
|
-
// Certain elements are allowed in both SVG and HTML
|
|
697
|
-
|
|
698
|
-
// Check for IE =< 8
|
|
699
|
-
|
|
700
|
-
// Check if module is in cache
|
|
701
|
-
|
|
702
|
-
// Con mapId lo stile arriva dal cloud styling: setOptions({ styles }) verrebbe ignorato con warning
|
|
703
|
-
|
|
704
|
-
// Condition a) covers a basically valid custom element tag name whose
|
|
705
|
-
|
|
706
|
-
// Condition b) covers an `is` attribute whose value passes the
|
|
707
|
-
|
|
708
|
-
// Config presets (e.g. tags.js, attrs.js) are immutable.
|
|
709
|
-
|
|
710
|
-
// Create a new module (and put it into the cache)
|
|
711
|
-
|
|
712
|
-
// DOMParser document. Hoisting its children on removal re-inserts a fresh
|
|
713
|
-
|
|
714
|
-
// Default HTML namespace
|
|
715
|
-
|
|
716
|
-
// Default false
|
|
717
|
-
|
|
718
|
-
// Default regexp
|
|
719
|
-
|
|
720
|
-
// Default true
|
|
721
|
-
|
|
722
|
-
// Drop any caller-supplied Trusted Types policy so it cannot poison later
|
|
723
|
-
|
|
724
|
-
// EXTERNAL MODULE: ./node_modules/script-loader/index.js!./src/build/global/js/form/autonumeric.js
|
|
725
|
-
|
|
726
|
-
// EXTERNAL MODULE: ./src/export/lib/dompurify/dompurify.js + 1 modules
|
|
727
|
-
|
|
728
|
-
// Else: already prefixed, leave the attribute alone — the prefix is
|
|
729
|
-
|
|
730
|
-
// Execute the module function
|
|
731
|
-
|
|
732
|
-
// Explicit opt-out for this call: perform no Trusted Types signing and
|
|
733
|
-
|
|
734
|
-
// File .js
|
|
735
|
-
|
|
736
|
-
// HTML integration points, and from MathML to HTML
|
|
737
|
-
|
|
738
|
-
// HTML namespace.
|
|
739
|
-
|
|
740
|
-
// HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.
|
|
741
|
-
|
|
742
|
-
// HTMLFormElement has [LegacyOverrideBuiltIns]: a descendant named
|
|
743
|
-
|
|
744
|
-
// In JSDOM, if we're inside shadow DOM, then parentNode
|
|
745
|
-
|
|
746
|
-
// Inizializza solo la mappa base, senza editing o percorso
|
|
747
|
-
|
|
748
|
-
// Make 'in' and truthy checks like Boolean(set.constructor)
|
|
749
|
-
|
|
750
|
-
// Mappa in sola lettura con un percorso esistente (array di {lat, lng})
|
|
751
|
-
|
|
752
|
-
// Marker trascinabile: dragend aggiorna il percorso, doppio click lo rimuove
|
|
753
|
-
|
|
754
|
-
// Navigazione live con geolocalizzazione su una mappa gestita da MapManager
|
|
755
|
-
|
|
756
|
-
// No policy supplied: keep the currently active policy if one is set — a
|
|
757
|
-
|
|
758
|
-
// NodeIterator does not descend into <template>.content per the DOM spec,
|
|
759
|
-
|
|
760
|
-
// NodeType clobbering probe. Cached Node.prototype.nodeType getter
|
|
761
|
-
|
|
762
|
-
// Not available in IE8, Safari 5, etc.
|
|
763
|
-
|
|
764
|
-
// Not running in a browser, provide a factory function
|
|
765
|
-
|
|
766
|
-
// Policy creation failed (most likely another DOMPurify script has
|
|
767
|
-
|
|
768
|
-
// Policy creation with duplicate names throws in Trusted Types.
|
|
769
|
-
|
|
770
|
-
// Prefix the value and later re-create the attribute with the sanitized value
|
|
771
|
-
|
|
772
|
-
// Prevent further manipulation of configuration.
|
|
773
|
-
|
|
774
|
-
// Prevent prototype setters from intercepting set as a this value.
|
|
775
|
-
|
|
776
|
-
// Re-derive the active Trusted Types policy from this configuration on
|
|
777
|
-
|
|
778
|
-
// Realm-independent tag-name probe. If we can't determine the tag
|
|
779
|
-
|
|
780
|
-
// Realm-safe NamedNodeMap detection: equality against the cached
|
|
781
|
-
|
|
782
|
-
// Remove the attribute with this value
|
|
783
|
-
|
|
784
|
-
// Return the exports of the module
|
|
785
|
-
|
|
786
|
-
// Risolve la stringa travelMode ('DRIVING' | 'BICYCLING' | 'WALKING' | 'TRANSIT')
|
|
787
|
-
|
|
788
|
-
// Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)
|
|
789
|
-
|
|
790
|
-
// Sanitizzazione HTML (XSS) — deve essere disponibile come global prima degli editor
|
|
791
|
-
|
|
792
|
-
// Se non è FormData, impostiamo JSON
|
|
793
|
-
|
|
794
|
-
// Secondi -> "2h 10min" oppure "15min"
|
|
795
|
-
|
|
796
|
-
// See GHSA-vxr8-fq34-vvx9.
|
|
797
|
-
|
|
798
|
-
// Serializza i marker come JSON [{lat, lng}] nell'exportElement
|
|
799
|
-
|
|
800
|
-
// Sign internal variables only when a policy is active. A falsy policy
|
|
801
|
-
|
|
802
|
-
// Sign local variables required by `sanitize`. If the supplied policy's
|
|
803
|
-
|
|
804
|
-
// Syntax error if dirtyPayload is invalid xml
|
|
805
|
-
|
|
806
|
-
// The module cache
|
|
807
|
-
|
|
808
|
-
// The only way to switch from HTML namespace to MathML
|
|
809
|
-
|
|
810
|
-
// The only way to switch from HTML namespace to SVG
|
|
811
|
-
|
|
812
|
-
// The only way to switch from MathML to SVG is via <svg>
|
|
813
|
-
|
|
814
|
-
// The only way to switch from SVG to HTML is via
|
|
815
|
-
|
|
816
|
-
// The only way to switch from SVG to MathML is via
|
|
817
|
-
|
|
818
|
-
// The require function
|
|
819
|
-
|
|
820
|
-
// This attribute owns the record just pushed; its recreate writeback
|
|
821
|
-
|
|
822
|
-
// This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
|
|
823
|
-
|
|
824
|
-
// We void attribute values for unremovable "is" attributes
|
|
825
|
-
|
|
826
|
-
// Wrapper Google Maps: mappa base, editing marker, percorso (Directions),
|
|
827
|
-
|
|
828
|
-
// _removeAttribute() / _stripAttributeNode() reach for
|
|
829
|
-
|
|
830
|
-
// `RETURN_TRUSTED_TYPE` output. The internal default policy (cached, and
|
|
831
|
-
|
|
832
|
-
// `RETURN_TRUSTED_TYPE` result with a foreign, possibly unsafe policy.
|
|
833
|
-
|
|
834
|
-
// `TRUSTED_TYPES_POLICY: null` — could sign a subsequent "default"
|
|
835
|
-
|
|
836
|
-
// `createHTML` is circular (i.e. it calls `DOMPurify.sanitize`), this
|
|
837
|
-
|
|
838
|
-
// `dompurify` policy can still call `sanitize` from inside its own
|
|
839
|
-
|
|
840
|
-
// `null` also drops any previously retained caller policy, so it cannot
|
|
841
|
-
|
|
842
|
-
// a case-preserved event-handler attribute (e.g. an ONANIMATIONSTART
|
|
843
|
-
|
|
844
|
-
// a new empty registry is used when creating a template contents owner
|
|
845
|
-
|
|
846
|
-
// a non-policy and throw. See #1422.
|
|
847
|
-
|
|
848
|
-
// after `clearConfig()` — or after a later call that supplied none, or
|
|
849
|
-
|
|
850
|
-
// allowed.
|
|
851
|
-
|
|
852
|
-
// already run). Skip creating the policy, as this will only cause errors
|
|
853
|
-
|
|
854
|
-
// an internal slot, no serialization cost — and removes a residual
|
|
855
|
-
|
|
856
|
-
// autocomplete, import/export JSON. Richiede l'API caricata (vedi requireGoogleMaps).
|
|
857
|
-
|
|
858
|
-
// by adding a data-tt-policy-suffix to the script element with the DOMPurify.
|
|
859
|
-
|
|
860
|
-
// cached Node.prototype getter — when the form's named-property
|
|
861
|
-
|
|
862
|
-
// call to restore the internal default policy. See GHSA-vxr8-fq34-vvx9.
|
|
863
|
-
|
|
864
|
-
// calls — otherwise fall back to the instance's own internal policy,
|
|
865
|
-
|
|
866
|
-
// can be null. We just simulate parent in this case.
|
|
867
|
-
|
|
868
|
-
// canonical NamedNodeMap.
|
|
869
|
-
|
|
870
|
-
// carry a numeric .length, which a typeof-based probe would miss
|
|
871
|
-
|
|
872
|
-
// clobbering surface used by several mXSS / PI / comment branches
|
|
873
|
-
|
|
874
|
-
// configured tagNameCheck while customized built-in elements are
|
|
875
|
-
|
|
876
|
-
// create nothing (so a strict `trusted-types` CSP that disallows a
|
|
877
|
-
|
|
878
|
-
// created at most once. (A policy supplied for a *single* call still
|
|
879
|
-
|
|
880
|
-
// customContent: (properties) => HTMLElement, es. il global gmapMarkerConstructor
|
|
881
|
-
|
|
882
|
-
// document, so we use that as our parent document to ensure nothing
|
|
883
|
-
|
|
884
|
-
// element.removeAttributeNode(attr) first; when it is shadowed the call
|
|
885
|
-
|
|
886
|
-
// engine re-mirrors synchronously whenever a removal changes which
|
|
887
|
-
|
|
888
|
-
// eslint-disable-line import/no-mutable-exports
|
|
889
|
-
|
|
890
|
-
// eslint-disable-next-line complexity
|
|
891
|
-
|
|
892
|
-
// eslint-disable-next-line no-bitwise
|
|
893
|
-
|
|
894
|
-
// eslint-disable-next-line unicorn/prefer-dom-node-append
|
|
895
|
-
|
|
896
|
-
// eslint-disable-next-line unicorn/prefer-dom-node-remove
|
|
897
|
-
|
|
898
|
-
// eslint-disable-next-line unicorn/prefer-includes
|
|
899
|
-
|
|
900
|
-
// every parse. The active policy must never be sticky closure state that
|
|
901
|
-
|
|
902
|
-
// forever (DoS) and amplifying output. Dropping its content on removal
|
|
903
|
-
|
|
904
|
-
// form.childNodes from a clobbered form return the named child
|
|
905
|
-
|
|
906
|
-
// getter intercepts the read, the two values differ and we flag
|
|
907
|
-
|
|
908
|
-
// has been torn down via `clearConfig()`, which restores the default.)
|
|
909
|
-
|
|
910
|
-
// if TT are enforced.
|
|
911
|
-
|
|
912
|
-
// if the parent is either <annotation-xml> or a MathML
|
|
913
|
-
|
|
914
|
-
// in _sanitizeElements that compare currentNode.nodeType directly.
|
|
915
|
-
|
|
916
|
-
// independent of any properties defined on Object.prototype.
|
|
917
|
-
|
|
918
|
-
// instead of the real NodeList, so any walk that reads it directly
|
|
919
|
-
|
|
920
|
-
// is inherited.
|
|
921
|
-
|
|
922
|
-
// is the one allowed to pop it back off.
|
|
923
|
-
|
|
924
|
-
// is via <math>. If it happens via any other tag, then
|
|
925
|
-
|
|
926
|
-
// is via <svg>. If it happens via any other tag, then
|
|
927
|
-
|
|
928
|
-
// is via MathML text integration points
|
|
929
|
-
|
|
930
|
-
// it should be killed.
|
|
931
|
-
|
|
932
|
-
// itself the clobbering protection, and re-applying it is incorrect.
|
|
933
|
-
|
|
934
|
-
// leaves `emptyHTML` as a plain string, so we never call `.createHTML` on
|
|
935
|
-
|
|
936
|
-
// lingers by design; what must not linger is a policy whose configuration
|
|
937
|
-
|
|
938
|
-
// makes the direct read diverge from the cached read; a clean form
|
|
939
|
-
|
|
940
|
-
// mirror target ahead of the walk, which the engine refills, looping
|
|
941
|
-
|
|
942
|
-
// mirroring the approach used by _sanitizeShadowDOM.
|
|
943
|
-
|
|
944
|
-
// name at all, we can't reason about clobbering — return false
|
|
945
|
-
|
|
946
|
-
// namespace. We need to specify them explicitly
|
|
947
|
-
|
|
948
|
-
// never recreated — Trusted Types throws on duplicate names) is restored by
|
|
949
|
-
|
|
950
|
-
// new document created via createHTMLDocument. As per the spec
|
|
951
|
-
|
|
952
|
-
// no module.id needed
|
|
953
|
-
|
|
954
|
-
// no module.loaded needed
|
|
955
|
-
|
|
956
|
-
// of the option, which is sanitized on its own. See campaign-3 F1/F6.
|
|
957
|
-
|
|
958
|
-
// option/selectedcontent is current, even inside DOMPurify's inert
|
|
959
|
-
|
|
960
|
-
// outlives the config that set it: a caller-supplied policy left in place
|
|
961
|
-
|
|
962
|
-
// passes the configured attributeNameCheck ...
|
|
963
|
-
|
|
964
|
-
// policy — see #1422). Resetting to `undefined` rather than a sticky
|
|
965
|
-
|
|
966
|
-
// previously supplied policy is intentionally sticky across config-less
|
|
967
|
-
|
|
968
|
-
// prototype getter. Clobbered .attributes (e.g. <input name="attributes">)
|
|
969
|
-
|
|
970
|
-
// read on a clobbered form (e.g. <input name="nodeType">) returns
|
|
971
|
-
|
|
972
|
-
// resurface on a later call, while still allowing the next config-less
|
|
973
|
-
|
|
974
|
-
// returns the integer 1 for any Element regardless of realm; direct
|
|
975
|
-
|
|
976
|
-
// select, etc.) regardless of whether the named child happens to
|
|
977
|
-
|
|
978
|
-
// select2 element
|
|
979
|
-
|
|
980
|
-
// shadows these Attr-node methods via [LegacyOverrideBuiltIns].
|
|
981
|
-
|
|
982
|
-
// skips the form's real children. Compare the direct read to the
|
|
983
|
-
|
|
984
|
-
// so it is removed wholesale, exactly as for the other shadowed methods.
|
|
985
|
-
|
|
986
|
-
// so that they don't get erroneously deleted from
|
|
987
|
-
|
|
988
|
-
// so that you can pass your own Window
|
|
989
|
-
|
|
990
|
-
// so we must explicitly recurse into each template's content fragment,
|
|
991
|
-
|
|
992
|
-
// tag passes the configured tagNameCheck and whose attribute name
|
|
993
|
-
|
|
994
|
-
// text integration point.
|
|
995
|
-
|
|
996
|
-
// that reached the sanitizer through an XML/XHTML parse). Flag the form
|
|
997
|
-
|
|
998
|
-
// the UA (customizable <select>) — including any on* handlers — and the
|
|
999
|
-
|
|
1000
|
-
// the form. This catches every clobbering child type (input,
|
|
1001
|
-
|
|
1002
|
-
// the instance is not left in a poisoned state. See #1422.
|
|
1003
|
-
|
|
1004
|
-
// the named child element. Cheap addition — nodeType is read from
|
|
1005
|
-
|
|
1006
|
-
// the next `_parseConfig`. See GHSA-vxr8-fq34-vvx9.
|
|
1007
|
-
|
|
1008
|
-
// throws and the name-based fallback element.removeAttribute(name)
|
|
1009
|
-
|
|
1010
|
-
// throws via the re-entrancy guard. Restore the previous policy first so
|
|
1011
|
-
|
|
1012
|
-
// type: 'roadmap' | 'satellite' | 'hybrid' | 'terrain'
|
|
1013
|
-
|
|
1014
|
-
// webpackBootstrap
|
|
1015
|
-
|
|
1016
|
-
//# sourceMappingURL=purify.es.mjs.map
|