your personal website on atproto - mirror blento.app

fix 500

Florian 0869d2d0 06a5144f

+40 -349
+1 -1
package.json
··· 71 "@types/three": "^0.176.0", 72 "bits-ui": "^2.15.4", 73 "clsx": "^2.1.1", 74 "gsap": "^3.14.2", 75 "hls.js": "^1.6.15", 76 - "isomorphic-dompurify": "^2.35.0", 77 "leaflet": "^1.9.4", 78 "link-preview-js": "^4.0.0", 79 "mapbox-gl": "^3.18.1",
··· 71 "@types/three": "^0.176.0", 72 "bits-ui": "^2.15.4", 73 "clsx": "^2.1.1", 74 + "dompurify": "^3.3.1", 75 "gsap": "^3.14.2", 76 "hls.js": "^1.6.15", 77 "leaflet": "^1.9.4", 78 "link-preview-js": "^4.0.0", 79 "mapbox-gl": "^3.18.1",
+3 -342
pnpm-lock.yaml
··· 104 clsx: 105 specifier: ^2.1.1 106 version: 2.1.1 107 gsap: 108 specifier: ^3.14.2 109 version: 3.14.2 110 hls.js: 111 specifier: ^1.6.15 112 version: 1.6.15 113 - isomorphic-dompurify: 114 - specifier: ^2.35.0 115 - version: 2.35.0 116 leaflet: 117 specifier: ^1.9.4 118 version: 1.9.4 ··· 222 223 packages: 224 225 - '@acemir/cssom@0.9.31': 226 - resolution: {integrity: sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==, tarball: https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.31.tgz} 227 - 228 - '@asamuzakjp/css-color@4.1.1': 229 - resolution: {integrity: sha512-B0Hv6G3gWGMn0xKJ0txEi/jM5iFpT3MfDxmhZFb4W047GvytCf1DHQ1D69W3zHI4yWe2aTZAA0JnbMZ7Xc8DuQ==, tarball: https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.1.1.tgz} 230 - 231 - '@asamuzakjp/dom-selector@6.7.6': 232 - resolution: {integrity: sha512-hBaJER6A9MpdG3WgdlOolHmbOYvSk46y7IQN/1+iqiCuUu6iWdQrs9DGKF8ocqsEqWujWf/V7b7vaDgiUmIvUg==, tarball: https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.7.6.tgz} 233 - 234 - '@asamuzakjp/nwsapi@2.3.9': 235 - resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==, tarball: https://registry.npmjs.org/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz} 236 - 237 '@atcute/atproto@3.1.10': 238 resolution: {integrity: sha512-+GKZpOc0PJcdWMQEkTfg/rSNDAAHxmAUGBl60g2az15etqJn5WaUPNGFE2sB7hKpwi5Ue2h/L0OacINcE/JDDQ==} 239 ··· 359 resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 360 engines: {node: '>=12'} 361 362 - '@csstools/color-helpers@5.1.0': 363 - resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==, tarball: https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz} 364 - engines: {node: '>=18'} 365 - 366 - '@csstools/css-calc@2.1.4': 367 - resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==, tarball: https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz} 368 - engines: {node: '>=18'} 369 - peerDependencies: 370 - '@csstools/css-parser-algorithms': ^3.0.5 371 - '@csstools/css-tokenizer': ^3.0.4 372 - 373 - '@csstools/css-color-parser@3.1.0': 374 - resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==, tarball: https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz} 375 - engines: {node: '>=18'} 376 - peerDependencies: 377 - '@csstools/css-parser-algorithms': ^3.0.5 378 - '@csstools/css-tokenizer': ^3.0.4 379 - 380 - '@csstools/css-parser-algorithms@3.0.5': 381 - resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==, tarball: https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz} 382 - engines: {node: '>=18'} 383 - peerDependencies: 384 - '@csstools/css-tokenizer': ^3.0.4 385 - 386 - '@csstools/css-syntax-patches-for-csstree@1.0.26': 387 - resolution: {integrity: sha512-6boXK0KkzT5u5xOgF6TKB+CLq9SOpEGmkZw0g5n9/7yg85wab3UzSxB8TxhLJ31L4SGJ6BCFRw/iftTha1CJXA==, tarball: https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.26.tgz} 388 - 389 - '@csstools/css-tokenizer@3.0.4': 390 - resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==, tarball: https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz} 391 - engines: {node: '>=18'} 392 - 393 '@dimforge/rapier3d-compat@0.12.0': 394 resolution: {integrity: sha512-uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow==} 395 ··· 763 resolution: {integrity: sha512-mMkoKWMMBXL5iAYrMZqklezZDUU7HpHd+sNsz78e4gElXFyxdOnsIFfPPXpqDcUn6orZHs5MGHvtPi5II5xNAA==} 764 peerDependencies: 765 '@sveltejs/kit': '>=2.0.0' 766 - 767 - '@exodus/bytes@1.10.0': 768 - resolution: {integrity: sha512-tf8YdcbirXdPnJ+Nd4UN1EXnz+IP2DI45YVEr3vvzcVTOyrApkmIB4zvOQVd3XPr7RXnfBtAx+PXImXOIU0Ajg==, tarball: https://registry.npmjs.org/@exodus/bytes/-/bytes-1.10.0.tgz} 769 - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} 770 - peerDependencies: 771 - '@noble/hashes': ^1.8.0 || ^2.0.0 772 - peerDependenciesMeta: 773 - '@noble/hashes': 774 - optional: true 775 776 '@floating-ui/core@1.7.3': 777 resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} ··· 1680 engines: {node: '>=0.4.0'} 1681 hasBin: true 1682 1683 - agent-base@7.1.4: 1684 - resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==, tarball: https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz} 1685 - engines: {node: '>= 14'} 1686 - 1687 ajv@6.12.6: 1688 resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 1689 ··· 1835 css-to-react-native@3.2.0: 1836 resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} 1837 1838 - css-tree@3.1.0: 1839 - resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==, tarball: https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz} 1840 - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 1841 - 1842 css-what@6.2.2: 1843 resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} 1844 engines: {node: '>= 6'} ··· 1853 resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 1854 engines: {node: '>=4'} 1855 hasBin: true 1856 - 1857 - cssstyle@5.3.7: 1858 - resolution: {integrity: sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ==, tarball: https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.7.tgz} 1859 - engines: {node: '>=20'} 1860 1861 custom-event-polyfill@1.0.7: 1862 resolution: {integrity: sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w==} 1863 1864 - data-urls@6.0.1: 1865 - resolution: {integrity: sha512-euIQENZg6x8mj3fO6o9+fOW8MimUI4PpD/fZBhJfeioZVy9TUpM4UY7KjQNVZFlqwJ0UdzRDzkycB997HEq1BQ==, tarball: https://registry.npmjs.org/data-urls/-/data-urls-6.0.1.tgz} 1866 - engines: {node: '>=20'} 1867 - 1868 debug@4.4.3: 1869 resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} 1870 engines: {node: '>=6.0'} ··· 1873 peerDependenciesMeta: 1874 supports-color: 1875 optional: true 1876 - 1877 - decimal.js@10.6.0: 1878 - resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==, tarball: https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz} 1879 1880 deep-is@0.1.4: 1881 resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} ··· 2118 hls.js@1.6.15: 2119 resolution: {integrity: sha512-E3a5VwgXimGHwpRGV+WxRTKeSp2DW5DI5MWv34ulL3t5UNmyJWCQ1KmLEHbYzcfThfXG8amBL+fCYPneGHC4VA==} 2120 2121 - html-encoding-sniffer@6.0.0: 2122 - resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==, tarball: https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-6.0.0.tgz} 2123 - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} 2124 - 2125 htmlparser2@10.1.0: 2126 resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==} 2127 2128 htmlparser2@8.0.2: 2129 resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} 2130 2131 - http-proxy-agent@7.0.2: 2132 - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==, tarball: https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz} 2133 - engines: {node: '>= 14'} 2134 - 2135 - https-proxy-agent@7.0.6: 2136 - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==, tarball: https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz} 2137 - engines: {node: '>= 14'} 2138 - 2139 iconv-lite@0.6.3: 2140 resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 2141 engines: {node: '>=0.10.0'} ··· 2170 resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 2171 engines: {node: '>=0.10.0'} 2172 2173 - is-potential-custom-element-name@1.0.1: 2174 - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==, tarball: https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz} 2175 - 2176 is-reference@3.0.3: 2177 resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} 2178 ··· 2182 iso-datestring-validator@2.2.2: 2183 resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==} 2184 2185 - isomorphic-dompurify@2.35.0: 2186 - resolution: {integrity: sha512-a9+LQqylQCU8f1zmsYmg2tfrbdY2YS/Hc+xntcq/mDI2MY3Q108nq8K23BWDIg6YGC5JsUMC15fj2ZMqCzt/+A==, tarball: https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-2.35.0.tgz} 2187 - engines: {node: '>=20.19.5'} 2188 - 2189 jiti@2.6.1: 2190 resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} 2191 hasBin: true ··· 2193 js-yaml@4.1.1: 2194 resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} 2195 hasBin: true 2196 - 2197 - jsdom@27.4.0: 2198 - resolution: {integrity: sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==, tarball: https://registry.npmjs.org/jsdom/-/jsdom-27.4.0.tgz} 2199 - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} 2200 - peerDependencies: 2201 - canvas: ^3.0.0 2202 - peerDependenciesMeta: 2203 - canvas: 2204 - optional: true 2205 2206 json-buffer@3.0.1: 2207 resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} ··· 2334 2335 lodash.merge@4.6.2: 2336 resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2337 - 2338 - lru-cache@11.2.5: 2339 - resolution: {integrity: sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz} 2340 - engines: {node: 20 || >=22} 2341 2342 lz-string@1.5.0: 2343 resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} ··· 2367 martinez-polygon-clipping@0.8.1: 2368 resolution: {integrity: sha512-9PLLMzMPI6ihHox4Ns6LpVBLpRc7sbhULybZ/wyaY8sY3ECNe2+hxm1hA2/9bEEpRrdpjoeduBuZLg2aq1cSIQ==} 2369 2370 - mdn-data@2.12.2: 2371 - resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==, tarball: https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz} 2372 - 2373 mdurl@2.0.0: 2374 resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} 2375 ··· 2479 2480 parse5@7.3.0: 2481 resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} 2482 - 2483 - parse5@8.0.0: 2484 - resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==, tarball: https://registry.npmjs.org/parse5/-/parse5-8.0.0.tgz} 2485 2486 path-exists@4.0.0: 2487 resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} ··· 2782 resolution: {integrity: sha512-abovcqmwl97WKioxpkfuMeZmndB1TuDFY/R+FymrZyiGP+pMYomvgSzVPnbNMWHHESOPosVHGL352oFbdAnJcA==} 2783 engines: {node: '>=16'} 2784 2785 - saxes@6.0.0: 2786 - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==, tarball: https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz} 2787 - engines: {node: '>=v12.22.7'} 2788 - 2789 semver@7.7.3: 2790 resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} 2791 engines: {node: '>=10'} ··· 2888 resolution: {integrity: sha512-+NUe82VoFP1RQViZI/esojx70eazGF4u0O/9ucqZ4rPcOZD+n5EVp17uYsqwdzjUjZyTpGKunHbDziW6AIAVkQ==} 2889 engines: {node: '>=18'} 2890 2891 - symbol-tree@3.2.4: 2892 - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==, tarball: https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz} 2893 - 2894 tabbable@6.4.0: 2895 resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} 2896 ··· 2960 resolution: {integrity: sha512-QXqwfEl9ddlGBaRFXIvNKK6OhipSiLXuRuLJX5DErz0o0Q0rYxulWLdFryTkV5PkdZct5iMInwYEGe/eR++1AA==} 2961 hasBin: true 2962 2963 - tldts-core@7.0.19: 2964 - resolution: {integrity: sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==, tarball: https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.19.tgz} 2965 - 2966 - tldts@7.0.19: 2967 - resolution: {integrity: sha512-8PWx8tvC4jDB39BQw1m4x8y5MH1BcQ5xHeL2n7UVFulMPH/3Q0uiamahFJ3lXA0zO2SUyRXuVVbWSDmstlt9YA==, tarball: https://registry.npmjs.org/tldts/-/tldts-7.0.19.tgz} 2968 - hasBin: true 2969 - 2970 totalist@3.0.1: 2971 resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} 2972 engines: {node: '>=6'} 2973 2974 - tough-cookie@6.0.0: 2975 - resolution: {integrity: sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==, tarball: https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.0.tgz} 2976 - engines: {node: '>=16'} 2977 - 2978 - tr46@6.0.0: 2979 - resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==, tarball: https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz} 2980 - engines: {node: '>=20'} 2981 - 2982 troika-three-text@0.52.4: 2983 resolution: {integrity: sha512-V50EwcYGruV5rUZ9F4aNsrytGdKcXKALjEtQXIOBfhVoZU9VAqZNIoGQ3TMiooVqFAbR1w15T+f+8gkzoFzawg==} 2984 peerDependencies: ··· 3118 w3c-keyname@2.2.8: 3119 resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} 3120 3121 - w3c-xmlserializer@5.0.0: 3122 - resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==, tarball: https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz} 3123 - engines: {node: '>=18'} 3124 - 3125 webgl-sdf-generator@1.1.1: 3126 resolution: {integrity: sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==} 3127 - 3128 - webidl-conversions@8.0.1: 3129 - resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==, tarball: https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz} 3130 - engines: {node: '>=20'} 3131 3132 whatwg-encoding@3.1.1: 3133 resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} ··· 3137 whatwg-mimetype@4.0.0: 3138 resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} 3139 engines: {node: '>=18'} 3140 - 3141 - whatwg-mimetype@5.0.0: 3142 - resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==, tarball: https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz} 3143 - engines: {node: '>=20'} 3144 - 3145 - whatwg-url@15.1.0: 3146 - resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==, tarball: https://registry.npmjs.org/whatwg-url/-/whatwg-url-15.1.0.tgz} 3147 - engines: {node: '>=20'} 3148 3149 which@2.0.2: 3150 resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} ··· 3186 utf-8-validate: 3187 optional: true 3188 3189 - ws@8.19.0: 3190 - resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==, tarball: https://registry.npmjs.org/ws/-/ws-8.19.0.tgz} 3191 - engines: {node: '>=10.0.0'} 3192 - peerDependencies: 3193 - bufferutil: ^4.0.1 3194 - utf-8-validate: '>=5.0.2' 3195 - peerDependenciesMeta: 3196 - bufferutil: 3197 - optional: true 3198 - utf-8-validate: 3199 - optional: true 3200 - 3201 - xml-name-validator@5.0.0: 3202 - resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==, tarball: https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz} 3203 - engines: {node: '>=18'} 3204 - 3205 - xmlchars@2.2.0: 3206 - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==, tarball: https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz} 3207 - 3208 yaml@1.10.2: 3209 resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 3210 engines: {node: '>= 6'} ··· 3230 3231 snapshots: 3232 3233 - '@acemir/cssom@0.9.31': {} 3234 - 3235 - '@asamuzakjp/css-color@4.1.1': 3236 - dependencies: 3237 - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) 3238 - '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) 3239 - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) 3240 - '@csstools/css-tokenizer': 3.0.4 3241 - lru-cache: 11.2.5 3242 - 3243 - '@asamuzakjp/dom-selector@6.7.6': 3244 - dependencies: 3245 - '@asamuzakjp/nwsapi': 2.3.9 3246 - bidi-js: 1.0.3 3247 - css-tree: 3.1.0 3248 - is-potential-custom-element-name: 1.0.1 3249 - lru-cache: 11.2.5 3250 - 3251 - '@asamuzakjp/nwsapi@2.3.9': {} 3252 - 3253 '@atcute/atproto@3.1.10': 3254 dependencies: 3255 '@atcute/lexicons': 1.2.6 ··· 3404 '@cspotcode/source-map-support@0.8.1': 3405 dependencies: 3406 '@jridgewell/trace-mapping': 0.3.9 3407 - 3408 - '@csstools/color-helpers@5.1.0': {} 3409 - 3410 - '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': 3411 - dependencies: 3412 - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) 3413 - '@csstools/css-tokenizer': 3.0.4 3414 - 3415 - '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': 3416 - dependencies: 3417 - '@csstools/color-helpers': 5.1.0 3418 - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) 3419 - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) 3420 - '@csstools/css-tokenizer': 3.0.4 3421 - 3422 - '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': 3423 - dependencies: 3424 - '@csstools/css-tokenizer': 3.0.4 3425 - 3426 - '@csstools/css-syntax-patches-for-csstree@1.0.26': {} 3427 - 3428 - '@csstools/css-tokenizer@3.0.4': {} 3429 3430 '@dimforge/rapier3d-compat@0.12.0': {} 3431 ··· 3657 satori-html: 0.3.2 3658 std-env: 3.10.0 3659 unwasm: 0.5.3 3660 - 3661 - '@exodus/bytes@1.10.0': {} 3662 3663 '@floating-ui/core@1.7.3': 3664 dependencies: ··· 4525 4526 acorn@8.15.0: {} 4527 4528 - agent-base@7.1.4: {} 4529 - 4530 ajv@6.12.6: 4531 dependencies: 4532 fast-deep-equal: 3.1.3 ··· 4699 css-color-keywords: 1.0.0 4700 postcss-value-parser: 4.2.0 4701 4702 - css-tree@3.1.0: 4703 - dependencies: 4704 - mdn-data: 2.12.2 4705 - source-map-js: 1.2.1 4706 - 4707 css-what@6.2.2: {} 4708 4709 css.escape@1.5.1: {} ··· 4712 4713 cssesc@3.0.0: {} 4714 4715 - cssstyle@5.3.7: 4716 - dependencies: 4717 - '@asamuzakjp/css-color': 4.1.1 4718 - '@csstools/css-syntax-patches-for-csstree': 1.0.26 4719 - css-tree: 3.1.0 4720 - lru-cache: 11.2.5 4721 - 4722 custom-event-polyfill@1.0.7: {} 4723 4724 - data-urls@6.0.1: 4725 - dependencies: 4726 - whatwg-mimetype: 5.0.0 4727 - whatwg-url: 15.1.0 4728 - 4729 debug@4.4.3: 4730 dependencies: 4731 ms: 2.1.3 4732 - 4733 - decimal.js@10.6.0: {} 4734 4735 deep-is@0.1.4: {} 4736 ··· 5011 5012 hls.js@1.6.15: {} 5013 5014 - html-encoding-sniffer@6.0.0: 5015 - dependencies: 5016 - '@exodus/bytes': 1.10.0 5017 - transitivePeerDependencies: 5018 - - '@noble/hashes' 5019 - 5020 htmlparser2@10.1.0: 5021 dependencies: 5022 domelementtype: 2.3.0 ··· 5031 domutils: 3.2.2 5032 entities: 4.5.0 5033 5034 - http-proxy-agent@7.0.2: 5035 - dependencies: 5036 - agent-base: 7.1.4 5037 - debug: 4.4.3 5038 - transitivePeerDependencies: 5039 - - supports-color 5040 - 5041 - https-proxy-agent@7.0.6: 5042 - dependencies: 5043 - agent-base: 7.1.4 5044 - debug: 4.4.3 5045 - transitivePeerDependencies: 5046 - - supports-color 5047 - 5048 iconv-lite@0.6.3: 5049 dependencies: 5050 safer-buffer: 2.1.2 ··· 5069 is-glob@4.0.3: 5070 dependencies: 5071 is-extglob: 2.1.1 5072 - 5073 - is-potential-custom-element-name@1.0.1: {} 5074 5075 is-reference@3.0.3: 5076 dependencies: ··· 5080 5081 iso-datestring-validator@2.2.2: {} 5082 5083 - isomorphic-dompurify@2.35.0: 5084 - dependencies: 5085 - dompurify: 3.3.1 5086 - jsdom: 27.4.0 5087 - transitivePeerDependencies: 5088 - - '@noble/hashes' 5089 - - bufferutil 5090 - - canvas 5091 - - supports-color 5092 - - utf-8-validate 5093 - 5094 jiti@2.6.1: {} 5095 5096 js-yaml@4.1.1: 5097 dependencies: 5098 argparse: 2.0.1 5099 5100 - jsdom@27.4.0: 5101 - dependencies: 5102 - '@acemir/cssom': 0.9.31 5103 - '@asamuzakjp/dom-selector': 6.7.6 5104 - '@exodus/bytes': 1.10.0 5105 - cssstyle: 5.3.7 5106 - data-urls: 6.0.1 5107 - decimal.js: 10.6.0 5108 - html-encoding-sniffer: 6.0.0 5109 - http-proxy-agent: 7.0.2 5110 - https-proxy-agent: 7.0.6 5111 - is-potential-custom-element-name: 1.0.1 5112 - parse5: 8.0.0 5113 - saxes: 6.0.0 5114 - symbol-tree: 3.2.4 5115 - tough-cookie: 6.0.0 5116 - w3c-xmlserializer: 5.0.0 5117 - webidl-conversions: 8.0.1 5118 - whatwg-mimetype: 4.0.0 5119 - whatwg-url: 15.1.0 5120 - ws: 8.19.0 5121 - xml-name-validator: 5.0.0 5122 - transitivePeerDependencies: 5123 - - '@noble/hashes' 5124 - - bufferutil 5125 - - supports-color 5126 - - utf-8-validate 5127 - 5128 json-buffer@3.0.1: {} 5129 5130 json-schema-traverse@0.4.1: {} ··· 5226 5227 lodash.merge@4.6.2: {} 5228 5229 - lru-cache@11.2.5: {} 5230 - 5231 lz-string@1.5.0: {} 5232 5233 maath@0.10.8(@types/three@0.176.0)(three@0.176.0): ··· 5284 robust-predicates: 2.0.4 5285 splaytree: 0.1.4 5286 tinyqueue: 3.0.0 5287 - 5288 - mdn-data@2.12.2: {} 5289 5290 mdurl@2.0.0: {} 5291 ··· 5400 dependencies: 5401 entities: 6.0.1 5402 5403 - parse5@8.0.0: 5404 - dependencies: 5405 - entities: 6.0.1 5406 - 5407 path-exists@4.0.0: {} 5408 5409 path-key@3.1.1: {} ··· 5705 postcss-value-parser: 4.2.0 5706 yoga-wasm-web: 0.3.3 5707 5708 - saxes@6.0.0: 5709 - dependencies: 5710 - xmlchars: 2.2.0 5711 - 5712 semver@7.7.3: {} 5713 5714 set-cookie-parser@2.7.2: {} ··· 5848 magic-string: 0.30.21 5849 zimmerframe: 1.1.4 5850 5851 - symbol-tree@3.2.4: {} 5852 - 5853 tabbable@6.4.0: {} 5854 5855 tailwind-merge@3.0.2: {} ··· 5903 5904 tlds@1.261.0: {} 5905 5906 - tldts-core@7.0.19: {} 5907 - 5908 - tldts@7.0.19: 5909 - dependencies: 5910 - tldts-core: 7.0.19 5911 - 5912 totalist@3.0.1: {} 5913 5914 - tough-cookie@6.0.0: 5915 - dependencies: 5916 - tldts: 7.0.19 5917 - 5918 - tr46@6.0.0: 5919 - dependencies: 5920 - punycode: 2.3.1 5921 - 5922 troika-three-text@0.52.4(three@0.176.0): 5923 dependencies: 5924 bidi-js: 1.0.3 ··· 6026 6027 w3c-keyname@2.2.8: {} 6028 6029 - w3c-xmlserializer@5.0.0: 6030 - dependencies: 6031 - xml-name-validator: 5.0.0 6032 - 6033 webgl-sdf-generator@1.1.1: {} 6034 6035 - webidl-conversions@8.0.1: {} 6036 - 6037 whatwg-encoding@3.1.1: 6038 dependencies: 6039 iconv-lite: 0.6.3 6040 6041 whatwg-mimetype@4.0.0: {} 6042 - 6043 - whatwg-mimetype@5.0.0: {} 6044 - 6045 - whatwg-url@15.1.0: 6046 - dependencies: 6047 - tr46: 6.0.0 6048 - webidl-conversions: 8.0.1 6049 6050 which@2.0.2: 6051 dependencies: ··· 6084 - utf-8-validate 6085 6086 ws@8.18.0: {} 6087 - 6088 - ws@8.19.0: {} 6089 - 6090 - xml-name-validator@5.0.0: {} 6091 - 6092 - xmlchars@2.2.0: {} 6093 6094 yaml@1.10.2: {} 6095
··· 104 clsx: 105 specifier: ^2.1.1 106 version: 2.1.1 107 + dompurify: 108 + specifier: ^3.3.1 109 + version: 3.3.1 110 gsap: 111 specifier: ^3.14.2 112 version: 3.14.2 113 hls.js: 114 specifier: ^1.6.15 115 version: 1.6.15 116 leaflet: 117 specifier: ^1.9.4 118 version: 1.9.4 ··· 222 223 packages: 224 225 '@atcute/atproto@3.1.10': 226 resolution: {integrity: sha512-+GKZpOc0PJcdWMQEkTfg/rSNDAAHxmAUGBl60g2az15etqJn5WaUPNGFE2sB7hKpwi5Ue2h/L0OacINcE/JDDQ==} 227 ··· 347 resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 348 engines: {node: '>=12'} 349 350 '@dimforge/rapier3d-compat@0.12.0': 351 resolution: {integrity: sha512-uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow==} 352 ··· 720 resolution: {integrity: sha512-mMkoKWMMBXL5iAYrMZqklezZDUU7HpHd+sNsz78e4gElXFyxdOnsIFfPPXpqDcUn6orZHs5MGHvtPi5II5xNAA==} 721 peerDependencies: 722 '@sveltejs/kit': '>=2.0.0' 723 724 '@floating-ui/core@1.7.3': 725 resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} ··· 1628 engines: {node: '>=0.4.0'} 1629 hasBin: true 1630 1631 ajv@6.12.6: 1632 resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 1633 ··· 1779 css-to-react-native@3.2.0: 1780 resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} 1781 1782 css-what@6.2.2: 1783 resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} 1784 engines: {node: '>= 6'} ··· 1793 resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 1794 engines: {node: '>=4'} 1795 hasBin: true 1796 1797 custom-event-polyfill@1.0.7: 1798 resolution: {integrity: sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w==} 1799 1800 debug@4.4.3: 1801 resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} 1802 engines: {node: '>=6.0'} ··· 1805 peerDependenciesMeta: 1806 supports-color: 1807 optional: true 1808 1809 deep-is@0.1.4: 1810 resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} ··· 2047 hls.js@1.6.15: 2048 resolution: {integrity: sha512-E3a5VwgXimGHwpRGV+WxRTKeSp2DW5DI5MWv34ulL3t5UNmyJWCQ1KmLEHbYzcfThfXG8amBL+fCYPneGHC4VA==} 2049 2050 htmlparser2@10.1.0: 2051 resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==} 2052 2053 htmlparser2@8.0.2: 2054 resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} 2055 2056 iconv-lite@0.6.3: 2057 resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 2058 engines: {node: '>=0.10.0'} ··· 2087 resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 2088 engines: {node: '>=0.10.0'} 2089 2090 is-reference@3.0.3: 2091 resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} 2092 ··· 2096 iso-datestring-validator@2.2.2: 2097 resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==} 2098 2099 jiti@2.6.1: 2100 resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} 2101 hasBin: true ··· 2103 js-yaml@4.1.1: 2104 resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} 2105 hasBin: true 2106 2107 json-buffer@3.0.1: 2108 resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} ··· 2235 2236 lodash.merge@4.6.2: 2237 resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2238 2239 lz-string@1.5.0: 2240 resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} ··· 2264 martinez-polygon-clipping@0.8.1: 2265 resolution: {integrity: sha512-9PLLMzMPI6ihHox4Ns6LpVBLpRc7sbhULybZ/wyaY8sY3ECNe2+hxm1hA2/9bEEpRrdpjoeduBuZLg2aq1cSIQ==} 2266 2267 mdurl@2.0.0: 2268 resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} 2269 ··· 2373 2374 parse5@7.3.0: 2375 resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} 2376 2377 path-exists@4.0.0: 2378 resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} ··· 2673 resolution: {integrity: sha512-abovcqmwl97WKioxpkfuMeZmndB1TuDFY/R+FymrZyiGP+pMYomvgSzVPnbNMWHHESOPosVHGL352oFbdAnJcA==} 2674 engines: {node: '>=16'} 2675 2676 semver@7.7.3: 2677 resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} 2678 engines: {node: '>=10'} ··· 2775 resolution: {integrity: sha512-+NUe82VoFP1RQViZI/esojx70eazGF4u0O/9ucqZ4rPcOZD+n5EVp17uYsqwdzjUjZyTpGKunHbDziW6AIAVkQ==} 2776 engines: {node: '>=18'} 2777 2778 tabbable@6.4.0: 2779 resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} 2780 ··· 2844 resolution: {integrity: sha512-QXqwfEl9ddlGBaRFXIvNKK6OhipSiLXuRuLJX5DErz0o0Q0rYxulWLdFryTkV5PkdZct5iMInwYEGe/eR++1AA==} 2845 hasBin: true 2846 2847 totalist@3.0.1: 2848 resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} 2849 engines: {node: '>=6'} 2850 2851 troika-three-text@0.52.4: 2852 resolution: {integrity: sha512-V50EwcYGruV5rUZ9F4aNsrytGdKcXKALjEtQXIOBfhVoZU9VAqZNIoGQ3TMiooVqFAbR1w15T+f+8gkzoFzawg==} 2853 peerDependencies: ··· 2987 w3c-keyname@2.2.8: 2988 resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} 2989 2990 webgl-sdf-generator@1.1.1: 2991 resolution: {integrity: sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==} 2992 2993 whatwg-encoding@3.1.1: 2994 resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} ··· 2998 whatwg-mimetype@4.0.0: 2999 resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} 3000 engines: {node: '>=18'} 3001 3002 which@2.0.2: 3003 resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} ··· 3039 utf-8-validate: 3040 optional: true 3041 3042 yaml@1.10.2: 3043 resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 3044 engines: {node: '>= 6'} ··· 3064 3065 snapshots: 3066 3067 '@atcute/atproto@3.1.10': 3068 dependencies: 3069 '@atcute/lexicons': 1.2.6 ··· 3218 '@cspotcode/source-map-support@0.8.1': 3219 dependencies: 3220 '@jridgewell/trace-mapping': 0.3.9 3221 3222 '@dimforge/rapier3d-compat@0.12.0': {} 3223 ··· 3449 satori-html: 0.3.2 3450 std-env: 3.10.0 3451 unwasm: 0.5.3 3452 3453 '@floating-ui/core@1.7.3': 3454 dependencies: ··· 4315 4316 acorn@8.15.0: {} 4317 4318 ajv@6.12.6: 4319 dependencies: 4320 fast-deep-equal: 3.1.3 ··· 4487 css-color-keywords: 1.0.0 4488 postcss-value-parser: 4.2.0 4489 4490 css-what@6.2.2: {} 4491 4492 css.escape@1.5.1: {} ··· 4495 4496 cssesc@3.0.0: {} 4497 4498 custom-event-polyfill@1.0.7: {} 4499 4500 debug@4.4.3: 4501 dependencies: 4502 ms: 2.1.3 4503 4504 deep-is@0.1.4: {} 4505 ··· 4780 4781 hls.js@1.6.15: {} 4782 4783 htmlparser2@10.1.0: 4784 dependencies: 4785 domelementtype: 2.3.0 ··· 4794 domutils: 3.2.2 4795 entities: 4.5.0 4796 4797 iconv-lite@0.6.3: 4798 dependencies: 4799 safer-buffer: 2.1.2 ··· 4818 is-glob@4.0.3: 4819 dependencies: 4820 is-extglob: 2.1.1 4821 4822 is-reference@3.0.3: 4823 dependencies: ··· 4827 4828 iso-datestring-validator@2.2.2: {} 4829 4830 jiti@2.6.1: {} 4831 4832 js-yaml@4.1.1: 4833 dependencies: 4834 argparse: 2.0.1 4835 4836 json-buffer@3.0.1: {} 4837 4838 json-schema-traverse@0.4.1: {} ··· 4934 4935 lodash.merge@4.6.2: {} 4936 4937 lz-string@1.5.0: {} 4938 4939 maath@0.10.8(@types/three@0.176.0)(three@0.176.0): ··· 4990 robust-predicates: 2.0.4 4991 splaytree: 0.1.4 4992 tinyqueue: 3.0.0 4993 4994 mdurl@2.0.0: {} 4995 ··· 5104 dependencies: 5105 entities: 6.0.1 5106 5107 path-exists@4.0.0: {} 5108 5109 path-key@3.1.1: {} ··· 5405 postcss-value-parser: 4.2.0 5406 yoga-wasm-web: 0.3.3 5407 5408 semver@7.7.3: {} 5409 5410 set-cookie-parser@2.7.2: {} ··· 5544 magic-string: 0.30.21 5545 zimmerframe: 1.1.4 5546 5547 tabbable@6.4.0: {} 5548 5549 tailwind-merge@3.0.2: {} ··· 5597 5598 tlds@1.261.0: {} 5599 5600 totalist@3.0.1: {} 5601 5602 troika-three-text@0.52.4(three@0.176.0): 5603 dependencies: 5604 bidi-js: 1.0.3 ··· 5706 5707 w3c-keyname@2.2.8: {} 5708 5709 webgl-sdf-generator@1.1.1: {} 5710 5711 whatwg-encoding@3.1.1: 5712 dependencies: 5713 iconv-lite: 0.6.3 5714 5715 whatwg-mimetype@4.0.0: {} 5716 5717 which@2.0.2: 5718 dependencies: ··· 5751 - utf-8-validate 5752 5753 ws@8.18.0: {} 5754 5755 yaml@1.10.2: {} 5756
+2 -2
src/lib/cards/TextCard/TextCard.svelte
··· 1 <script lang="ts"> 2 import { marked } from 'marked'; 3 - import DOMPurify from 'isomorphic-dompurify'; 4 import type { ContentComponentProps } from '../types'; 5 import { textAlignClasses, textSizeClasses, verticalAlignClasses } from '.'; 6 import { cn } from '@foxui/core'; ··· 21 )} 22 > 23 <span 24 - >{@html DOMPurify.sanitize(marked.parse(item.cardData.text ?? '', { renderer }) as string, { 25 ADD_ATTR: ['target'] 26 })}</span 27 >
··· 1 <script lang="ts"> 2 import { marked } from 'marked'; 3 + import { sanitize } from '$lib/sanitize'; 4 import type { ContentComponentProps } from '../types'; 5 import { textAlignClasses, textSizeClasses, verticalAlignClasses } from '.'; 6 import { cn } from '@foxui/core'; ··· 21 )} 22 > 23 <span 24 + >{@html sanitize(marked.parse(item.cardData.text ?? '', { renderer }) as string, { 25 ADD_ATTR: ['target'] 26 })}</span 27 >
+2 -2
src/lib/components/post/Post.svelte
··· 1 <script lang="ts"> 2 import Embed from './embeds/Embed.svelte'; 3 - import DOMPurify from 'isomorphic-dompurify'; 4 import { cn, Prose } from '@foxui/core'; 5 import type { WithChildren, WithElementRef } from 'bits-ui'; 6 import type { HTMLAttributes } from 'svelte/elements'; ··· 177 class="accent:prose-a:text-accent-950 accent:text-base-900 accent:prose-p:text-base-900 accent:prose-a:underline" 178 > 179 {#if data.htmlContent} 180 - {@html DOMPurify.sanitize(data.htmlContent, { ADD_ATTR: ['target'] })} 181 {:else} 182 {@render children?.()} 183 {/if}
··· 1 <script lang="ts"> 2 import Embed from './embeds/Embed.svelte'; 3 + import { sanitize } from '$lib/sanitize'; 4 import { cn, Prose } from '@foxui/core'; 5 import type { WithChildren, WithElementRef } from 'bits-ui'; 6 import type { HTMLAttributes } from 'svelte/elements'; ··· 177 class="accent:prose-a:text-accent-950 accent:text-base-900 accent:prose-p:text-base-900 accent:prose-a:underline" 178 > 179 {#if data.htmlContent} 180 + {@html sanitize(data.htmlContent, { ADD_ATTR: ['target'] })} 181 {:else} 182 {@render children?.()} 183 {/if}
+30
src/lib/sanitize.ts
···
··· 1 + import { browser } from '$app/environment'; 2 + 3 + // Lightweight regex-based sanitizer for SSR in Cloudflare Workers 4 + // where DOMPurify is not available. Strips common XSS vectors. 5 + function regexSanitize(html: string): string { 6 + return html 7 + .replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script\s*>/gi, '') 8 + .replace(/<iframe\b[^<]*(?:(?!<\/iframe>)<[^<]*)*<\/iframe\s*>/gi, '') 9 + .replace(/<object\b[^<]*(?:(?!<\/object>)<[^<]*)*<\/object\s*>/gi, '') 10 + .replace(/<embed\b[^>]*\/?>/gi, '') 11 + .replace(/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style\s*>/gi, '') 12 + .replace(/\s+on\w+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi, '') 13 + .replace(/href\s*=\s*["']?\s*javascript\s*:/gi, 'href="') 14 + .replace(/src\s*=\s*["']?\s*javascript\s*:/gi, 'src="'); 15 + } 16 + 17 + let _purify: ((html: string, config?: { ADD_ATTR?: string[] }) => string) | null = null; 18 + 19 + if (browser) { 20 + import('dompurify').then((mod) => { 21 + _purify = (html, config) => mod.default.sanitize(html, config) as string; 22 + }); 23 + } 24 + 25 + export function sanitize(dirty: string, config?: { ADD_ATTR?: string[] }): string { 26 + if (_purify) { 27 + return _purify(dirty, config); 28 + } 29 + return regexSanitize(dirty); 30 + }
+2 -2
src/lib/website/Profile.svelte
··· 1 <script lang="ts"> 2 import { marked } from 'marked'; 3 - import DOMPurify from 'isomorphic-dompurify'; 4 import type { WebsiteData } from '$lib/types'; 5 import { getDescription, getImage, getName, getProfilePosition } from '$lib/helper'; 6 import { page } from '$app/state'; ··· 65 <div 66 class="text-base-600 dark:text-base-400 prose dark:prose-invert prose-a:text-accent-500 prose-a:no-underline" 67 > 68 - {@html DOMPurify.sanitize( 69 marked.parse(getDescription(data), { 70 renderer 71 }) as string,
··· 1 <script lang="ts"> 2 import { marked } from 'marked'; 3 + import { sanitize } from '$lib/sanitize'; 4 import type { WebsiteData } from '$lib/types'; 5 import { getDescription, getImage, getName, getProfilePosition } from '$lib/helper'; 6 import { page } from '$app/state'; ··· 65 <div 66 class="text-base-600 dark:text-base-400 prose dark:prose-invert prose-a:text-accent-500 prose-a:no-underline" 67 > 68 + {@html sanitize( 69 marked.parse(getDescription(data), { 70 renderer 71 }) as string,