chore(deps): update frontend security dependencies

This commit is contained in:
Darkatse 2026-09-19 02:48:01 -04:00
parent 1dbfa66ca7
commit 296d580d05
4 changed files with 39 additions and 26 deletions

View file

@ -85,9 +85,9 @@
"chevrotain": "^11.2.0",
"codemirror": "6.0.2",
"diff-match-patch": "^1.0.5",
"dompurify": "^3.4.2",
"dompurify": "^3.4.15",
"droll": "^0.2.1",
"fflate": "^0.8.2",
"fflate": "^0.8.3",
"fuse.js": "^7.1.0",
"handlebars": "^4.7.9",
"highlight.js": "^11.11.1",

File diff suppressed because one or more lines are too long

28
pnpm-lock.yaml generated
View file

@ -54,14 +54,14 @@ importers:
specifier: ^1.0.5
version: 1.0.5
dompurify:
specifier: ^3.4.2
version: 3.4.3
specifier: ^3.4.15
version: 3.4.15
droll:
specifier: ^0.2.1
version: 0.2.1
fflate:
specifier: ^0.8.2
version: 0.8.2
specifier: ^0.8.3
version: 0.8.3
fuse.js:
specifier: ^7.1.0
version: 7.1.0
@ -1071,8 +1071,8 @@ packages:
dom-accessibility-api@0.5.16:
resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==}
dompurify@3.4.3:
resolution: {integrity: sha512-VVwJidIJcp1hpg2OMXML3ZVRPYSZiq4aX7qBh83BSIpOaRDqI+qxhXjjIWnpzkOXhmp0L81lnoME1mnCc9H48A==}
dompurify@3.4.15:
resolution: {integrity: sha512-EUBjM+B+lkDE41iE82DDSCfkoPGfXx8IxFxPMjNzm/Uk4xDet77rTN9wqlxlVg71kK7XGuUMv6wUxJUwwv+Xyw==}
droll@0.2.1:
resolution: {integrity: sha512-fXxtxZSwGK6afeG18Vk6q/8LQDAnIylsvk/2tQhHwDOJmdB/x+YL9GLoSZUZXJkQ8LrBcyU/1EoIL1eSlpDMsg==}
@ -1212,8 +1212,8 @@ packages:
picomatch:
optional: true
fflate@0.8.2:
resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==}
fflate@0.8.3:
resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==}
file-entry-cache@8.0.0:
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
@ -1461,8 +1461,8 @@ packages:
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
js-yaml@4.3.1:
resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==}
js-yaml@4.3.2:
resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==}
hasBin: true
jsesc@3.1.0:
@ -2124,7 +2124,7 @@ snapshots:
globals: 14.0.0
ignore: 5.3.2
import-fresh: 3.3.1
js-yaml: 4.3.1
js-yaml: 4.3.2
minimatch: 3.1.5
strip-json-comments: 3.1.1
transitivePeerDependencies:
@ -2808,7 +2808,7 @@ snapshots:
dom-accessibility-api@0.5.16: {}
dompurify@3.4.3:
dompurify@3.4.15:
optionalDependencies:
'@types/trusted-types': 2.0.7
@ -3032,7 +3032,7 @@ snapshots:
optionalDependencies:
picomatch: 4.0.5
fflate@0.8.2: {}
fflate@0.8.3: {}
file-entry-cache@8.0.0:
dependencies:
@ -3298,7 +3298,7 @@ snapshots:
js-tokens@4.0.0: {}
js-yaml@4.3.1:
js-yaml@4.3.2:
dependencies:
argparse: 2.0.1

View file

@ -24,6 +24,19 @@ export function createBrowserRuntime() {
url: 'http://localhost/',
settings: { disableCSSFileLoading: true, disableJavaScriptFileLoading: true },
});
// happy-dom #2182: Node's getter must work on subclasses, as it does in browsers.
// DOMPurify reads this getter directly to avoid DOM clobbering.
const nodeName = Object.getOwnPropertyDescriptor(window.Node.prototype, 'nodeName');
Object.defineProperty(window.Node.prototype, 'nodeName', {
...nodeName,
get() {
for (let proto = Object.getPrototypeOf(this); proto !== window.Node.prototype; proto = Object.getPrototypeOf(proto)) {
const getter = Object.getOwnPropertyDescriptor(proto, 'nodeName')?.get;
if (getter) return getter.call(this);
}
return nodeName.get.call(this);
},
});
window.document.write(readFileSync(path.join(root, 'index.html'), 'utf8')
.replace(/<script\b[^>]*>[\s\S]*?<\/script>/g, ''));
for (const file of ['jquery-3.5.1.min.js', 'jquery-ui.min.js', 'jquery.transit.min.js',