test: Replace isomorphic-dompurify with custom DOMPurify wrapper
Browse filesRemoved isomorphic-dompurify in favor of a local utility that provides DOMPurify for both browser and server environments using jsdom. Updated imports in CodeBlock.svelte and MarkdownRenderer.svelte, added src/lib/utils/dompurify.ts, switched dependency from isomorphic-dompurify to jsdom, and updated Vite config to mark jsdom as external.
- package-lock.json +251 -160
- package.json +1 -1
- src/lib/components/CodeBlock.svelte +1 -1
- src/lib/components/chat/MarkdownRenderer.svelte +1 -1
- src/lib/utils/dompurify.ts +20 -0
- vite.config.ts +1 -1
package-lock.json
CHANGED
|
@@ -21,7 +21,7 @@
|
|
| 21 |
"highlight.js": "^11.7.0",
|
| 22 |
"husky": "^9.0.11",
|
| 23 |
"ip-address": "^9.0.5",
|
| 24 |
-
"
|
| 25 |
"json5": "^2.2.3",
|
| 26 |
"katex": "^0.16.21",
|
| 27 |
"lint-staged": "^15.2.7",
|
|
@@ -243,6 +243,56 @@
|
|
| 243 |
"url": "https://github.com/sponsors/antfu"
|
| 244 |
}
|
| 245 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 246 |
"node_modules/@babel/code-frame": {
|
| 247 |
"version": "7.27.1",
|
| 248 |
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
|
|
@@ -368,6 +418,28 @@
|
|
| 368 |
"@csstools/css-tokenizer": "^3.0.4"
|
| 369 |
}
|
| 370 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 371 |
"node_modules/@csstools/css-tokenizer": {
|
| 372 |
"version": "3.0.4",
|
| 373 |
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz",
|
|
@@ -2719,7 +2791,7 @@
|
|
| 2719 |
"version": "2.0.7",
|
| 2720 |
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
|
| 2721 |
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
|
| 2722 |
-
"
|
| 2723 |
"license": "MIT"
|
| 2724 |
},
|
| 2725 |
"node_modules/@types/uuid": {
|
|
@@ -3433,6 +3505,15 @@
|
|
| 3433 |
],
|
| 3434 |
"license": "MIT"
|
| 3435 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3436 |
"node_modules/binary-extensions": {
|
| 3437 |
"version": "2.3.0",
|
| 3438 |
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
|
|
@@ -3905,6 +3986,19 @@
|
|
| 3905 |
"postcss-value-parser": "^4.0.2"
|
| 3906 |
}
|
| 3907 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3908 |
"node_modules/cssesc": {
|
| 3909 |
"version": "3.0.0",
|
| 3910 |
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
|
|
@@ -3917,6 +4011,33 @@
|
|
| 3917 |
"node": ">=4"
|
| 3918 |
}
|
| 3919 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3920 |
"node_modules/date-fns": {
|
| 3921 |
"version": "2.30.0",
|
| 3922 |
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
|
|
@@ -4075,6 +4196,7 @@
|
|
| 4075 |
"version": "3.3.0",
|
| 4076 |
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.0.tgz",
|
| 4077 |
"integrity": "sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==",
|
|
|
|
| 4078 |
"license": "(MPL-2.0 OR Apache-2.0)",
|
| 4079 |
"optionalDependencies": {
|
| 4080 |
"@types/trusted-types": "^2.0.7"
|
|
@@ -5593,158 +5715,6 @@
|
|
| 5593 |
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
|
| 5594 |
"license": "ISC"
|
| 5595 |
},
|
| 5596 |
-
"node_modules/isomorphic-dompurify": {
|
| 5597 |
-
"version": "2.26.0",
|
| 5598 |
-
"resolved": "https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-2.26.0.tgz",
|
| 5599 |
-
"integrity": "sha512-nZmoK4wKdzPs5USq4JHBiimjdKSVAOm2T1KyDoadtMPNXYHxiENd19ou4iU/V4juFM6LVgYQnpxCYmxqNP4Obw==",
|
| 5600 |
-
"license": "MIT",
|
| 5601 |
-
"dependencies": {
|
| 5602 |
-
"dompurify": "^3.2.6",
|
| 5603 |
-
"jsdom": "^26.1.0"
|
| 5604 |
-
},
|
| 5605 |
-
"engines": {
|
| 5606 |
-
"node": ">=18"
|
| 5607 |
-
}
|
| 5608 |
-
},
|
| 5609 |
-
"node_modules/isomorphic-dompurify/node_modules/@asamuzakjp/css-color": {
|
| 5610 |
-
"version": "3.2.0",
|
| 5611 |
-
"resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz",
|
| 5612 |
-
"integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==",
|
| 5613 |
-
"license": "MIT",
|
| 5614 |
-
"dependencies": {
|
| 5615 |
-
"@csstools/css-calc": "^2.1.3",
|
| 5616 |
-
"@csstools/css-color-parser": "^3.0.9",
|
| 5617 |
-
"@csstools/css-parser-algorithms": "^3.0.4",
|
| 5618 |
-
"@csstools/css-tokenizer": "^3.0.3",
|
| 5619 |
-
"lru-cache": "^10.4.3"
|
| 5620 |
-
}
|
| 5621 |
-
},
|
| 5622 |
-
"node_modules/isomorphic-dompurify/node_modules/cssstyle": {
|
| 5623 |
-
"version": "4.6.0",
|
| 5624 |
-
"resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz",
|
| 5625 |
-
"integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==",
|
| 5626 |
-
"license": "MIT",
|
| 5627 |
-
"dependencies": {
|
| 5628 |
-
"@asamuzakjp/css-color": "^3.2.0",
|
| 5629 |
-
"rrweb-cssom": "^0.8.0"
|
| 5630 |
-
},
|
| 5631 |
-
"engines": {
|
| 5632 |
-
"node": ">=18"
|
| 5633 |
-
}
|
| 5634 |
-
},
|
| 5635 |
-
"node_modules/isomorphic-dompurify/node_modules/data-urls": {
|
| 5636 |
-
"version": "5.0.0",
|
| 5637 |
-
"resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz",
|
| 5638 |
-
"integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==",
|
| 5639 |
-
"license": "MIT",
|
| 5640 |
-
"dependencies": {
|
| 5641 |
-
"whatwg-mimetype": "^4.0.0",
|
| 5642 |
-
"whatwg-url": "^14.0.0"
|
| 5643 |
-
},
|
| 5644 |
-
"engines": {
|
| 5645 |
-
"node": ">=18"
|
| 5646 |
-
}
|
| 5647 |
-
},
|
| 5648 |
-
"node_modules/isomorphic-dompurify/node_modules/jsdom": {
|
| 5649 |
-
"version": "26.1.0",
|
| 5650 |
-
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz",
|
| 5651 |
-
"integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==",
|
| 5652 |
-
"license": "MIT",
|
| 5653 |
-
"dependencies": {
|
| 5654 |
-
"cssstyle": "^4.2.1",
|
| 5655 |
-
"data-urls": "^5.0.0",
|
| 5656 |
-
"decimal.js": "^10.5.0",
|
| 5657 |
-
"html-encoding-sniffer": "^4.0.0",
|
| 5658 |
-
"http-proxy-agent": "^7.0.2",
|
| 5659 |
-
"https-proxy-agent": "^7.0.6",
|
| 5660 |
-
"is-potential-custom-element-name": "^1.0.1",
|
| 5661 |
-
"nwsapi": "^2.2.16",
|
| 5662 |
-
"parse5": "^7.2.1",
|
| 5663 |
-
"rrweb-cssom": "^0.8.0",
|
| 5664 |
-
"saxes": "^6.0.0",
|
| 5665 |
-
"symbol-tree": "^3.2.4",
|
| 5666 |
-
"tough-cookie": "^5.1.1",
|
| 5667 |
-
"w3c-xmlserializer": "^5.0.0",
|
| 5668 |
-
"webidl-conversions": "^7.0.0",
|
| 5669 |
-
"whatwg-encoding": "^3.1.1",
|
| 5670 |
-
"whatwg-mimetype": "^4.0.0",
|
| 5671 |
-
"whatwg-url": "^14.1.1",
|
| 5672 |
-
"ws": "^8.18.0",
|
| 5673 |
-
"xml-name-validator": "^5.0.0"
|
| 5674 |
-
},
|
| 5675 |
-
"engines": {
|
| 5676 |
-
"node": ">=18"
|
| 5677 |
-
},
|
| 5678 |
-
"peerDependencies": {
|
| 5679 |
-
"canvas": "^3.0.0"
|
| 5680 |
-
},
|
| 5681 |
-
"peerDependenciesMeta": {
|
| 5682 |
-
"canvas": {
|
| 5683 |
-
"optional": true
|
| 5684 |
-
}
|
| 5685 |
-
}
|
| 5686 |
-
},
|
| 5687 |
-
"node_modules/isomorphic-dompurify/node_modules/lru-cache": {
|
| 5688 |
-
"version": "10.4.3",
|
| 5689 |
-
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
|
| 5690 |
-
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
|
| 5691 |
-
"license": "ISC"
|
| 5692 |
-
},
|
| 5693 |
-
"node_modules/isomorphic-dompurify/node_modules/tldts": {
|
| 5694 |
-
"version": "6.1.86",
|
| 5695 |
-
"resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz",
|
| 5696 |
-
"integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==",
|
| 5697 |
-
"license": "MIT",
|
| 5698 |
-
"dependencies": {
|
| 5699 |
-
"tldts-core": "^6.1.86"
|
| 5700 |
-
},
|
| 5701 |
-
"bin": {
|
| 5702 |
-
"tldts": "bin/cli.js"
|
| 5703 |
-
}
|
| 5704 |
-
},
|
| 5705 |
-
"node_modules/isomorphic-dompurify/node_modules/tldts-core": {
|
| 5706 |
-
"version": "6.1.86",
|
| 5707 |
-
"resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz",
|
| 5708 |
-
"integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==",
|
| 5709 |
-
"license": "MIT"
|
| 5710 |
-
},
|
| 5711 |
-
"node_modules/isomorphic-dompurify/node_modules/tough-cookie": {
|
| 5712 |
-
"version": "5.1.2",
|
| 5713 |
-
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz",
|
| 5714 |
-
"integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==",
|
| 5715 |
-
"license": "BSD-3-Clause",
|
| 5716 |
-
"dependencies": {
|
| 5717 |
-
"tldts": "^6.1.32"
|
| 5718 |
-
},
|
| 5719 |
-
"engines": {
|
| 5720 |
-
"node": ">=16"
|
| 5721 |
-
}
|
| 5722 |
-
},
|
| 5723 |
-
"node_modules/isomorphic-dompurify/node_modules/tr46": {
|
| 5724 |
-
"version": "5.1.1",
|
| 5725 |
-
"resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz",
|
| 5726 |
-
"integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==",
|
| 5727 |
-
"license": "MIT",
|
| 5728 |
-
"dependencies": {
|
| 5729 |
-
"punycode": "^2.3.1"
|
| 5730 |
-
},
|
| 5731 |
-
"engines": {
|
| 5732 |
-
"node": ">=18"
|
| 5733 |
-
}
|
| 5734 |
-
},
|
| 5735 |
-
"node_modules/isomorphic-dompurify/node_modules/whatwg-url": {
|
| 5736 |
-
"version": "14.2.0",
|
| 5737 |
-
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz",
|
| 5738 |
-
"integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==",
|
| 5739 |
-
"license": "MIT",
|
| 5740 |
-
"dependencies": {
|
| 5741 |
-
"tr46": "^5.1.0",
|
| 5742 |
-
"webidl-conversions": "^7.0.0"
|
| 5743 |
-
},
|
| 5744 |
-
"engines": {
|
| 5745 |
-
"node": ">=18"
|
| 5746 |
-
}
|
| 5747 |
-
},
|
| 5748 |
"node_modules/jackspeak": {
|
| 5749 |
"version": "3.4.3",
|
| 5750 |
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
|
|
@@ -5804,6 +5774,54 @@
|
|
| 5804 |
"integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
|
| 5805 |
"license": "MIT"
|
| 5806 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5807 |
"node_modules/json-buffer": {
|
| 5808 |
"version": "3.0.1",
|
| 5809 |
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
|
|
@@ -6243,6 +6261,12 @@
|
|
| 6243 |
"node": ">= 0.4"
|
| 6244 |
}
|
| 6245 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6246 |
"node_modules/memory-pager": {
|
| 6247 |
"version": "1.5.0",
|
| 6248 |
"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
|
|
@@ -6808,12 +6832,6 @@
|
|
| 6808 |
"url": "https://github.com/sponsors/sindresorhus"
|
| 6809 |
}
|
| 6810 |
},
|
| 6811 |
-
"node_modules/nwsapi": {
|
| 6812 |
-
"version": "2.2.22",
|
| 6813 |
-
"resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz",
|
| 6814 |
-
"integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==",
|
| 6815 |
-
"license": "MIT"
|
| 6816 |
-
},
|
| 6817 |
"node_modules/object-assign": {
|
| 6818 |
"version": "4.1.1",
|
| 6819 |
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
|
@@ -7964,6 +7982,15 @@
|
|
| 7964 |
"node": ">= 12.13.0"
|
| 7965 |
}
|
| 7966 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7967 |
"node_modules/resolve": {
|
| 7968 |
"version": "1.22.10",
|
| 7969 |
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
|
|
@@ -9178,6 +9205,24 @@
|
|
| 9178 |
"node": ">=14.0.0"
|
| 9179 |
}
|
| 9180 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9181 |
"node_modules/to-regex-range": {
|
| 9182 |
"version": "5.0.1",
|
| 9183 |
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
|
@@ -9216,6 +9261,30 @@
|
|
| 9216 |
"node": ">=6"
|
| 9217 |
}
|
| 9218 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9219 |
"node_modules/ts-api-utils": {
|
| 9220 |
"version": "1.4.3",
|
| 9221 |
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz",
|
|
@@ -9745,6 +9814,28 @@
|
|
| 9745 |
"node": ">=18"
|
| 9746 |
}
|
| 9747 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9748 |
"node_modules/which": {
|
| 9749 |
"version": "2.0.2",
|
| 9750 |
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
|
|
|
| 21 |
"highlight.js": "^11.7.0",
|
| 22 |
"husky": "^9.0.11",
|
| 23 |
"ip-address": "^9.0.5",
|
| 24 |
+
"jsdom": "^27.0.0",
|
| 25 |
"json5": "^2.2.3",
|
| 26 |
"katex": "^0.16.21",
|
| 27 |
"lint-staged": "^15.2.7",
|
|
|
|
| 243 |
"url": "https://github.com/sponsors/antfu"
|
| 244 |
}
|
| 245 |
},
|
| 246 |
+
"node_modules/@asamuzakjp/css-color": {
|
| 247 |
+
"version": "4.0.5",
|
| 248 |
+
"resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.0.5.tgz",
|
| 249 |
+
"integrity": "sha512-lMrXidNhPGsDjytDy11Vwlb6OIGrT3CmLg3VWNFyWkLWtijKl7xjvForlh8vuj0SHGjgl4qZEQzUmYTeQA2JFQ==",
|
| 250 |
+
"license": "MIT",
|
| 251 |
+
"dependencies": {
|
| 252 |
+
"@csstools/css-calc": "^2.1.4",
|
| 253 |
+
"@csstools/css-color-parser": "^3.1.0",
|
| 254 |
+
"@csstools/css-parser-algorithms": "^3.0.5",
|
| 255 |
+
"@csstools/css-tokenizer": "^3.0.4",
|
| 256 |
+
"lru-cache": "^11.2.1"
|
| 257 |
+
}
|
| 258 |
+
},
|
| 259 |
+
"node_modules/@asamuzakjp/css-color/node_modules/lru-cache": {
|
| 260 |
+
"version": "11.2.2",
|
| 261 |
+
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
|
| 262 |
+
"integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
|
| 263 |
+
"license": "ISC",
|
| 264 |
+
"engines": {
|
| 265 |
+
"node": "20 || >=22"
|
| 266 |
+
}
|
| 267 |
+
},
|
| 268 |
+
"node_modules/@asamuzakjp/dom-selector": {
|
| 269 |
+
"version": "6.6.2",
|
| 270 |
+
"resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.6.2.tgz",
|
| 271 |
+
"integrity": "sha512-+AG0jN9HTwfDLBhjhX1FKi6zlIAc/YGgEHlN/OMaHD1pOPFsC5CpYQpLkPX0aFjyaVmoq9330cQDCU4qnSL1qA==",
|
| 272 |
+
"license": "MIT",
|
| 273 |
+
"dependencies": {
|
| 274 |
+
"@asamuzakjp/nwsapi": "^2.3.9",
|
| 275 |
+
"bidi-js": "^1.0.3",
|
| 276 |
+
"css-tree": "^3.1.0",
|
| 277 |
+
"is-potential-custom-element-name": "^1.0.1",
|
| 278 |
+
"lru-cache": "^11.2.2"
|
| 279 |
+
}
|
| 280 |
+
},
|
| 281 |
+
"node_modules/@asamuzakjp/dom-selector/node_modules/lru-cache": {
|
| 282 |
+
"version": "11.2.2",
|
| 283 |
+
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
|
| 284 |
+
"integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
|
| 285 |
+
"license": "ISC",
|
| 286 |
+
"engines": {
|
| 287 |
+
"node": "20 || >=22"
|
| 288 |
+
}
|
| 289 |
+
},
|
| 290 |
+
"node_modules/@asamuzakjp/nwsapi": {
|
| 291 |
+
"version": "2.3.9",
|
| 292 |
+
"resolved": "https://registry.npmjs.org/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz",
|
| 293 |
+
"integrity": "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==",
|
| 294 |
+
"license": "MIT"
|
| 295 |
+
},
|
| 296 |
"node_modules/@babel/code-frame": {
|
| 297 |
"version": "7.27.1",
|
| 298 |
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
|
|
|
|
| 418 |
"@csstools/css-tokenizer": "^3.0.4"
|
| 419 |
}
|
| 420 |
},
|
| 421 |
+
"node_modules/@csstools/css-syntax-patches-for-csstree": {
|
| 422 |
+
"version": "1.0.14",
|
| 423 |
+
"resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.14.tgz",
|
| 424 |
+
"integrity": "sha512-zSlIxa20WvMojjpCSy8WrNpcZ61RqfTfX3XTaOeVlGJrt/8HF3YbzgFZa01yTbT4GWQLwfTcC3EB8i3XnB647Q==",
|
| 425 |
+
"funding": [
|
| 426 |
+
{
|
| 427 |
+
"type": "github",
|
| 428 |
+
"url": "https://github.com/sponsors/csstools"
|
| 429 |
+
},
|
| 430 |
+
{
|
| 431 |
+
"type": "opencollective",
|
| 432 |
+
"url": "https://opencollective.com/csstools"
|
| 433 |
+
}
|
| 434 |
+
],
|
| 435 |
+
"license": "MIT-0",
|
| 436 |
+
"engines": {
|
| 437 |
+
"node": ">=18"
|
| 438 |
+
},
|
| 439 |
+
"peerDependencies": {
|
| 440 |
+
"postcss": "^8.4"
|
| 441 |
+
}
|
| 442 |
+
},
|
| 443 |
"node_modules/@csstools/css-tokenizer": {
|
| 444 |
"version": "3.0.4",
|
| 445 |
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz",
|
|
|
|
| 2791 |
"version": "2.0.7",
|
| 2792 |
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
|
| 2793 |
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
|
| 2794 |
+
"dev": true,
|
| 2795 |
"license": "MIT"
|
| 2796 |
},
|
| 2797 |
"node_modules/@types/uuid": {
|
|
|
|
| 3505 |
],
|
| 3506 |
"license": "MIT"
|
| 3507 |
},
|
| 3508 |
+
"node_modules/bidi-js": {
|
| 3509 |
+
"version": "1.0.3",
|
| 3510 |
+
"resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz",
|
| 3511 |
+
"integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==",
|
| 3512 |
+
"license": "MIT",
|
| 3513 |
+
"dependencies": {
|
| 3514 |
+
"require-from-string": "^2.0.2"
|
| 3515 |
+
}
|
| 3516 |
+
},
|
| 3517 |
"node_modules/binary-extensions": {
|
| 3518 |
"version": "2.3.0",
|
| 3519 |
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
|
|
|
|
| 3986 |
"postcss-value-parser": "^4.0.2"
|
| 3987 |
}
|
| 3988 |
},
|
| 3989 |
+
"node_modules/css-tree": {
|
| 3990 |
+
"version": "3.1.0",
|
| 3991 |
+
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz",
|
| 3992 |
+
"integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==",
|
| 3993 |
+
"license": "MIT",
|
| 3994 |
+
"dependencies": {
|
| 3995 |
+
"mdn-data": "2.12.2",
|
| 3996 |
+
"source-map-js": "^1.0.1"
|
| 3997 |
+
},
|
| 3998 |
+
"engines": {
|
| 3999 |
+
"node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
|
| 4000 |
+
}
|
| 4001 |
+
},
|
| 4002 |
"node_modules/cssesc": {
|
| 4003 |
"version": "3.0.0",
|
| 4004 |
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
|
|
|
|
| 4011 |
"node": ">=4"
|
| 4012 |
}
|
| 4013 |
},
|
| 4014 |
+
"node_modules/cssstyle": {
|
| 4015 |
+
"version": "5.3.1",
|
| 4016 |
+
"resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.1.tgz",
|
| 4017 |
+
"integrity": "sha512-g5PC9Aiph9eiczFpcgUhd9S4UUO3F+LHGRIi5NUMZ+4xtoIYbHNZwZnWA2JsFGe8OU8nl4WyaEFiZuGuxlutJQ==",
|
| 4018 |
+
"license": "MIT",
|
| 4019 |
+
"dependencies": {
|
| 4020 |
+
"@asamuzakjp/css-color": "^4.0.3",
|
| 4021 |
+
"@csstools/css-syntax-patches-for-csstree": "^1.0.14",
|
| 4022 |
+
"css-tree": "^3.1.0"
|
| 4023 |
+
},
|
| 4024 |
+
"engines": {
|
| 4025 |
+
"node": ">=20"
|
| 4026 |
+
}
|
| 4027 |
+
},
|
| 4028 |
+
"node_modules/data-urls": {
|
| 4029 |
+
"version": "6.0.0",
|
| 4030 |
+
"resolved": "https://registry.npmjs.org/data-urls/-/data-urls-6.0.0.tgz",
|
| 4031 |
+
"integrity": "sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==",
|
| 4032 |
+
"license": "MIT",
|
| 4033 |
+
"dependencies": {
|
| 4034 |
+
"whatwg-mimetype": "^4.0.0",
|
| 4035 |
+
"whatwg-url": "^15.0.0"
|
| 4036 |
+
},
|
| 4037 |
+
"engines": {
|
| 4038 |
+
"node": ">=20"
|
| 4039 |
+
}
|
| 4040 |
+
},
|
| 4041 |
"node_modules/date-fns": {
|
| 4042 |
"version": "2.30.0",
|
| 4043 |
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
|
|
|
|
| 4196 |
"version": "3.3.0",
|
| 4197 |
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.0.tgz",
|
| 4198 |
"integrity": "sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==",
|
| 4199 |
+
"dev": true,
|
| 4200 |
"license": "(MPL-2.0 OR Apache-2.0)",
|
| 4201 |
"optionalDependencies": {
|
| 4202 |
"@types/trusted-types": "^2.0.7"
|
|
|
|
| 5715 |
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
|
| 5716 |
"license": "ISC"
|
| 5717 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5718 |
"node_modules/jackspeak": {
|
| 5719 |
"version": "3.4.3",
|
| 5720 |
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
|
|
|
|
| 5774 |
"integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
|
| 5775 |
"license": "MIT"
|
| 5776 |
},
|
| 5777 |
+
"node_modules/jsdom": {
|
| 5778 |
+
"version": "27.0.0",
|
| 5779 |
+
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.0.0.tgz",
|
| 5780 |
+
"integrity": "sha512-lIHeR1qlIRrIN5VMccd8tI2Sgw6ieYXSVktcSHaNe3Z5nE/tcPQYQWOq00wxMvYOsz+73eAkNenVvmPC6bba9A==",
|
| 5781 |
+
"license": "MIT",
|
| 5782 |
+
"dependencies": {
|
| 5783 |
+
"@asamuzakjp/dom-selector": "^6.5.4",
|
| 5784 |
+
"cssstyle": "^5.3.0",
|
| 5785 |
+
"data-urls": "^6.0.0",
|
| 5786 |
+
"decimal.js": "^10.5.0",
|
| 5787 |
+
"html-encoding-sniffer": "^4.0.0",
|
| 5788 |
+
"http-proxy-agent": "^7.0.2",
|
| 5789 |
+
"https-proxy-agent": "^7.0.6",
|
| 5790 |
+
"is-potential-custom-element-name": "^1.0.1",
|
| 5791 |
+
"parse5": "^7.3.0",
|
| 5792 |
+
"rrweb-cssom": "^0.8.0",
|
| 5793 |
+
"saxes": "^6.0.0",
|
| 5794 |
+
"symbol-tree": "^3.2.4",
|
| 5795 |
+
"tough-cookie": "^6.0.0",
|
| 5796 |
+
"w3c-xmlserializer": "^5.0.0",
|
| 5797 |
+
"webidl-conversions": "^8.0.0",
|
| 5798 |
+
"whatwg-encoding": "^3.1.1",
|
| 5799 |
+
"whatwg-mimetype": "^4.0.0",
|
| 5800 |
+
"whatwg-url": "^15.0.0",
|
| 5801 |
+
"ws": "^8.18.2",
|
| 5802 |
+
"xml-name-validator": "^5.0.0"
|
| 5803 |
+
},
|
| 5804 |
+
"engines": {
|
| 5805 |
+
"node": ">=20"
|
| 5806 |
+
},
|
| 5807 |
+
"peerDependencies": {
|
| 5808 |
+
"canvas": "^3.0.0"
|
| 5809 |
+
},
|
| 5810 |
+
"peerDependenciesMeta": {
|
| 5811 |
+
"canvas": {
|
| 5812 |
+
"optional": true
|
| 5813 |
+
}
|
| 5814 |
+
}
|
| 5815 |
+
},
|
| 5816 |
+
"node_modules/jsdom/node_modules/webidl-conversions": {
|
| 5817 |
+
"version": "8.0.0",
|
| 5818 |
+
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.0.tgz",
|
| 5819 |
+
"integrity": "sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==",
|
| 5820 |
+
"license": "BSD-2-Clause",
|
| 5821 |
+
"engines": {
|
| 5822 |
+
"node": ">=20"
|
| 5823 |
+
}
|
| 5824 |
+
},
|
| 5825 |
"node_modules/json-buffer": {
|
| 5826 |
"version": "3.0.1",
|
| 5827 |
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
|
|
|
|
| 6261 |
"node": ">= 0.4"
|
| 6262 |
}
|
| 6263 |
},
|
| 6264 |
+
"node_modules/mdn-data": {
|
| 6265 |
+
"version": "2.12.2",
|
| 6266 |
+
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz",
|
| 6267 |
+
"integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==",
|
| 6268 |
+
"license": "CC0-1.0"
|
| 6269 |
+
},
|
| 6270 |
"node_modules/memory-pager": {
|
| 6271 |
"version": "1.5.0",
|
| 6272 |
"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
|
|
|
|
| 6832 |
"url": "https://github.com/sponsors/sindresorhus"
|
| 6833 |
}
|
| 6834 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6835 |
"node_modules/object-assign": {
|
| 6836 |
"version": "4.1.1",
|
| 6837 |
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
|
|
|
| 7982 |
"node": ">= 12.13.0"
|
| 7983 |
}
|
| 7984 |
},
|
| 7985 |
+
"node_modules/require-from-string": {
|
| 7986 |
+
"version": "2.0.2",
|
| 7987 |
+
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
|
| 7988 |
+
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
|
| 7989 |
+
"license": "MIT",
|
| 7990 |
+
"engines": {
|
| 7991 |
+
"node": ">=0.10.0"
|
| 7992 |
+
}
|
| 7993 |
+
},
|
| 7994 |
"node_modules/resolve": {
|
| 7995 |
"version": "1.22.10",
|
| 7996 |
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
|
|
|
|
| 9205 |
"node": ">=14.0.0"
|
| 9206 |
}
|
| 9207 |
},
|
| 9208 |
+
"node_modules/tldts": {
|
| 9209 |
+
"version": "7.0.17",
|
| 9210 |
+
"resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.17.tgz",
|
| 9211 |
+
"integrity": "sha512-Y1KQBgDd/NUc+LfOtKS6mNsC9CCaH+m2P1RoIZy7RAPo3C3/t8X45+zgut31cRZtZ3xKPjfn3TkGTrctC2TQIQ==",
|
| 9212 |
+
"license": "MIT",
|
| 9213 |
+
"dependencies": {
|
| 9214 |
+
"tldts-core": "^7.0.17"
|
| 9215 |
+
},
|
| 9216 |
+
"bin": {
|
| 9217 |
+
"tldts": "bin/cli.js"
|
| 9218 |
+
}
|
| 9219 |
+
},
|
| 9220 |
+
"node_modules/tldts-core": {
|
| 9221 |
+
"version": "7.0.17",
|
| 9222 |
+
"resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.17.tgz",
|
| 9223 |
+
"integrity": "sha512-DieYoGrP78PWKsrXr8MZwtQ7GLCUeLxihtjC1jZsW1DnvSMdKPitJSe8OSYDM2u5H6g3kWJZpePqkp43TfLh0g==",
|
| 9224 |
+
"license": "MIT"
|
| 9225 |
+
},
|
| 9226 |
"node_modules/to-regex-range": {
|
| 9227 |
"version": "5.0.1",
|
| 9228 |
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
|
|
|
| 9261 |
"node": ">=6"
|
| 9262 |
}
|
| 9263 |
},
|
| 9264 |
+
"node_modules/tough-cookie": {
|
| 9265 |
+
"version": "6.0.0",
|
| 9266 |
+
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.0.tgz",
|
| 9267 |
+
"integrity": "sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==",
|
| 9268 |
+
"license": "BSD-3-Clause",
|
| 9269 |
+
"dependencies": {
|
| 9270 |
+
"tldts": "^7.0.5"
|
| 9271 |
+
},
|
| 9272 |
+
"engines": {
|
| 9273 |
+
"node": ">=16"
|
| 9274 |
+
}
|
| 9275 |
+
},
|
| 9276 |
+
"node_modules/tr46": {
|
| 9277 |
+
"version": "6.0.0",
|
| 9278 |
+
"resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz",
|
| 9279 |
+
"integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==",
|
| 9280 |
+
"license": "MIT",
|
| 9281 |
+
"dependencies": {
|
| 9282 |
+
"punycode": "^2.3.1"
|
| 9283 |
+
},
|
| 9284 |
+
"engines": {
|
| 9285 |
+
"node": ">=20"
|
| 9286 |
+
}
|
| 9287 |
+
},
|
| 9288 |
"node_modules/ts-api-utils": {
|
| 9289 |
"version": "1.4.3",
|
| 9290 |
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz",
|
|
|
|
| 9814 |
"node": ">=18"
|
| 9815 |
}
|
| 9816 |
},
|
| 9817 |
+
"node_modules/whatwg-url": {
|
| 9818 |
+
"version": "15.1.0",
|
| 9819 |
+
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-15.1.0.tgz",
|
| 9820 |
+
"integrity": "sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==",
|
| 9821 |
+
"license": "MIT",
|
| 9822 |
+
"dependencies": {
|
| 9823 |
+
"tr46": "^6.0.0",
|
| 9824 |
+
"webidl-conversions": "^8.0.0"
|
| 9825 |
+
},
|
| 9826 |
+
"engines": {
|
| 9827 |
+
"node": ">=20"
|
| 9828 |
+
}
|
| 9829 |
+
},
|
| 9830 |
+
"node_modules/whatwg-url/node_modules/webidl-conversions": {
|
| 9831 |
+
"version": "8.0.0",
|
| 9832 |
+
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.0.tgz",
|
| 9833 |
+
"integrity": "sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==",
|
| 9834 |
+
"license": "BSD-2-Clause",
|
| 9835 |
+
"engines": {
|
| 9836 |
+
"node": ">=20"
|
| 9837 |
+
}
|
| 9838 |
+
},
|
| 9839 |
"node_modules/which": {
|
| 9840 |
"version": "2.0.2",
|
| 9841 |
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
package.json
CHANGED
|
@@ -78,7 +78,7 @@
|
|
| 78 |
"highlight.js": "^11.7.0",
|
| 79 |
"husky": "^9.0.11",
|
| 80 |
"ip-address": "^9.0.5",
|
| 81 |
-
"
|
| 82 |
"json5": "^2.2.3",
|
| 83 |
"katex": "^0.16.21",
|
| 84 |
"lint-staged": "^15.2.7",
|
|
|
|
| 78 |
"highlight.js": "^11.7.0",
|
| 79 |
"husky": "^9.0.11",
|
| 80 |
"ip-address": "^9.0.5",
|
| 81 |
+
"jsdom": "^27.0.0",
|
| 82 |
"json5": "^2.2.3",
|
| 83 |
"katex": "^0.16.21",
|
| 84 |
"lint-staged": "^15.2.7",
|
src/lib/components/CodeBlock.svelte
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
<script lang="ts">
|
| 2 |
import CopyToClipBoardBtn from "./CopyToClipBoardBtn.svelte";
|
| 3 |
-
import DOMPurify from "
|
| 4 |
import HtmlPreviewModal from "./HtmlPreviewModal.svelte";
|
| 5 |
import PlayFilledAlt from "~icons/carbon/play-filled-alt";
|
| 6 |
import EosIconsLoading from "~icons/eos-icons/loading";
|
|
|
|
| 1 |
<script lang="ts">
|
| 2 |
import CopyToClipBoardBtn from "./CopyToClipBoardBtn.svelte";
|
| 3 |
+
import DOMPurify from "$lib/utils/dompurify";
|
| 4 |
import HtmlPreviewModal from "./HtmlPreviewModal.svelte";
|
| 5 |
import PlayFilledAlt from "~icons/carbon/play-filled-alt";
|
| 6 |
import EosIconsLoading from "~icons/eos-icons/loading";
|
src/lib/components/chat/MarkdownRenderer.svelte
CHANGED
|
@@ -5,7 +5,7 @@
|
|
| 5 |
import type { IncomingMessage, OutgoingMessage } from "$lib/workers/markdownWorker";
|
| 6 |
import { browser } from "$app/environment";
|
| 7 |
|
| 8 |
-
import DOMPurify from "
|
| 9 |
import { onMount } from "svelte";
|
| 10 |
import { updateDebouncer } from "$lib/utils/updates";
|
| 11 |
|
|
|
|
| 5 |
import type { IncomingMessage, OutgoingMessage } from "$lib/workers/markdownWorker";
|
| 6 |
import { browser } from "$app/environment";
|
| 7 |
|
| 8 |
+
import DOMPurify from "$lib/utils/dompurify";
|
| 9 |
import { onMount } from "svelte";
|
| 10 |
import { updateDebouncer } from "$lib/utils/updates";
|
| 11 |
|
src/lib/utils/dompurify.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// This file provides DOMPurify for both browser and server environments
|
| 2 |
+
// In browser: uses dompurify directly
|
| 3 |
+
// In server: creates a jsdom window and initializes dompurify with it
|
| 4 |
+
|
| 5 |
+
import { browser } from "$app/environment";
|
| 6 |
+
import dompurify from "dompurify";
|
| 7 |
+
import { JSDOM } from "jsdom";
|
| 8 |
+
|
| 9 |
+
let DOMPurifyInstance: ReturnType<typeof dompurify>;
|
| 10 |
+
|
| 11 |
+
if (browser) {
|
| 12 |
+
// Browser: use dompurify directly
|
| 13 |
+
DOMPurifyInstance = dompurify;
|
| 14 |
+
} else {
|
| 15 |
+
// Server: create jsdom window and initialize dompurify
|
| 16 |
+
const window = new JSDOM("<!DOCTYPE html>").window;
|
| 17 |
+
DOMPurifyInstance = dompurify(window as unknown as Window);
|
| 18 |
+
}
|
| 19 |
+
|
| 20 |
+
export default DOMPurifyInstance;
|
vite.config.ts
CHANGED
|
@@ -37,7 +37,7 @@ export default defineConfig({
|
|
| 37 |
},
|
| 38 |
build: {
|
| 39 |
rollupOptions: {
|
| 40 |
-
external: ["
|
| 41 |
},
|
| 42 |
},
|
| 43 |
optimizeDeps: {
|
|
|
|
| 37 |
},
|
| 38 |
build: {
|
| 39 |
rollupOptions: {
|
| 40 |
+
external: ["jsdom"],
|
| 41 |
},
|
| 42 |
},
|
| 43 |
optimizeDeps: {
|