Update major dependencies (TypeScript 6, zod 4, webpack-cli 7, commander 15, …) (#8761)

Bumps the remaining major-version dependencies. **golden-layout is
deliberately excluded** (we depend on its internals too heavily for the
1.x → 2.x jump).

Each bump is its own commit, verified independently (ts-check, lint,
unit tests, and where relevant the webpack build + cypress).

## Included
- **TypeScript 6.0** — pin `ignoreDeprecations: "6.0"`
(downlevelIteration + the frontend's `es5` target are
deprecated-but-functional until TS7), pin the frontend to
`module=commonjs`/`moduleResolution=node` (TS6's new esnext/bundler
defaults break deep monaco esm imports), and declare `*.css`/`*.scss`
side-effect modules (`noUncheckedSideEffectImports` now defaults true).
- **marked 18** — no code changes; only use is the Claude-explain view.
- **Build chain**: webpack-cli 7 (renamed `--node-env` →
`--config-node-env` in the `webpack` script), webpack-dev-middleware 8,
sass-loader 17.
- **zod 4** — only used by the MCP tool schemas via stable primitives;
MCP SDK already supports `^3.25 || ^4.0`.
- **lint-staged 17** — dev tooling; pre-commit pipeline exercised.
- **commander 15** — both CLI entrypoints use options only; v15's
stricter excess-args default only tightens rejection of stray
positionals. Requires Node ≥22.12.
- **enhanced-ms 5**, **which 7** — small utilities, APIs unchanged.

## Node floor bump — split into its own PR
The first commit (`Bump Node floor to v22`: `engines >=22` + `find-node`
`NODE_MIN_VERSION=22`) is **isolated and intended to be cherry-picked
into a separate PR**. It aligns the declared floor with production (Node
22.13.1) and is a prerequisite for commander 15 (needs ≥22.12).

## Follow-ups (not in this PR)
- The `es5 → es2015` frontend migration, required before TS7 (currently
bridged by `ignoreDeprecations`).

## Testing
- Local: ts-check, lint, full unit suite, production webpack build, and
cypress (81 specs) all pass.
- Pre-existing: 13 `dontMaskFilenames` filter snapshots fail **locally
only** (a local /tmp path leaks into output where the snapshot expects a
clean `example.cpp`); they fail identically on `main` and pass in CI.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Matt Godbolt
2026-06-01 18:50:47 -05:00
committed by GitHub
parent 49b126cffa
commit 861bbde8ca
5 changed files with 161 additions and 143 deletions

269
package-lock.json generated
View File

@@ -28,11 +28,11 @@
"buffer": "^6.0.3",
"chart.js": "^4.5.1",
"clipboard": "^2.0.11",
"commander": "^14.0.3",
"commander": "^15.0.0",
"compression": "^1.8.1",
"copy-webpack-plugin": "^14.0.0",
"cross-env": "^10.1.0",
"enhanced-ms": "^4.3.0",
"enhanced-ms": "^5.0.0",
"events": "^3.3.0",
"express": "^5.2.1",
"file-saver": "^2.0.5",
@@ -44,7 +44,7 @@
"lodash.clonedeep": "^4.5.0",
"lru-cache": "^11.5.1",
"lz-string": "^1.5.0",
"marked": "^17.0.6",
"marked": "^18.0.4",
"monaco-editor": "^0.55.1",
"monaco-vim": "^0.4.4",
"morgan": "^1.10.1",
@@ -74,7 +74,7 @@
"winston-transport": "^4.9.0",
"ws": "^8.21.0",
"yaml": "^2.9.0",
"zod": "^3.25.76"
"zod": "^4.4.3"
},
"devDependencies": {
"@biomejs/biome": "^2.4.16",
@@ -106,28 +106,28 @@
"file-loader": "^6.2.0",
"happy-dom": "^20.9.0",
"husky": "^9.1.7",
"lint-staged": "^16.4.0",
"lint-staged": "^17.0.7",
"mini-css-extract-plugin": "^2.10.2",
"mock-fs": "^5.5.0",
"monaco-editor-webpack-plugin": "^7.1.1",
"nock": "^14.0.15",
"npm-run-all": "^4.1.5",
"sass": "^1.100.0",
"sass-loader": "^16.0.8",
"sass-loader": "^17.0.0",
"source-map-loader": "^5.0.0",
"supertest": "^7.2.2",
"terser-webpack-plugin": "^5.6.1",
"ts-loader": "^9.6.0",
"typescript": "^5.9.3",
"typescript": "^6.0.3",
"vitest": "^4.0.1",
"vitest-fetch-mock": "^0.4.5",
"webpack": "^5.107.2",
"webpack-cli": "^6.0.1",
"webpack-dev-middleware": "^7.4.5",
"webpack-cli": "^7.0.3",
"webpack-dev-middleware": "^8.0.3",
"webpack-manifest-plugin": "^6.0.1"
},
"engines": {
"node": ">=20.0.0"
"node": ">=22.0.0"
},
"optionalDependencies": {
"@rollup/rollup-darwin-arm64": "^4.61.0",
@@ -1181,9 +1181,9 @@
}
},
"node_modules/@discoveryjs/json-ext": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz",
"integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==",
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-1.1.0.tgz",
"integrity": "sha512-Xc3VhU02wqZ1HvHRJUwL09HkZSTvidqY5Ya0NXBSYOxAp+Ln9dcJr9fySI+CkONzP3PekQo9WdzCv0PGER/mOA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4582,53 +4582,6 @@
"@xtuc/long": "4.2.2"
}
},
"node_modules/@webpack-cli/configtest": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz",
"integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=18.12.0"
},
"peerDependencies": {
"webpack": "^5.82.0",
"webpack-cli": "6.x.x"
}
},
"node_modules/@webpack-cli/info": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz",
"integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=18.12.0"
},
"peerDependencies": {
"webpack": "^5.82.0",
"webpack-cli": "6.x.x"
}
},
"node_modules/@webpack-cli/serve": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz",
"integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=18.12.0"
},
"peerDependencies": {
"webpack": "^5.82.0",
"webpack-cli": "6.x.x"
},
"peerDependenciesMeta": {
"webpack-dev-server": {
"optional": true
}
}
},
"node_modules/@xtuc/ieee754": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
@@ -5914,12 +5867,12 @@
}
},
"node_modules/commander": {
"version": "14.0.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz",
"integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==",
"version": "15.0.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz",
"integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==",
"license": "MIT",
"engines": {
"node": ">=20"
"node": ">=22.12.0"
}
},
"node_modules/common-tags": {
@@ -6883,9 +6836,9 @@
}
},
"node_modules/enhanced-ms": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/enhanced-ms/-/enhanced-ms-4.3.0.tgz",
"integrity": "sha512-mMl+aCNSDcVf7Q0KKkp600JFoK9eimXgmdrN8wHNyyKeZbOr88XJw1m8qOIAknuAAPfxxVZMwrU77YG8ol9Oxw==",
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/enhanced-ms/-/enhanced-ms-5.0.0.tgz",
"integrity": "sha512-7G13wh93e2KQsJ6SK5m9RjmmDkFynZArSxv+8RSXIl4U9cwn0E5A3ZiLZlRDiUGosHT8mEHXMazFtp5Dt0dLVQ==",
"license": "MIT"
},
"node_modules/enhanced-resolve": {
@@ -7512,16 +7465,6 @@
"fxparser": "src/cli/cli.js"
}
},
"node_modules/fastest-levenshtein": {
"version": "1.0.16",
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
"integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 4.9.1"
}
},
"node_modules/fdir": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
@@ -9634,27 +9577,100 @@
}
},
"node_modules/lint-staged": {
"version": "16.4.0",
"resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-16.4.0.tgz",
"integrity": "sha512-lBWt8hujh/Cjysw5GYVmZpFHXDCgZzhrOm8vbcUdobADZNOK/bRshr2kM3DfgrrtR1DQhfupW9gnIXOfiFi+bw==",
"version": "17.0.7",
"resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-17.0.7.tgz",
"integrity": "sha512-JrSobt+tW3rH8IOMi8tDZd3foorM5yPEkLD/V2NxobgHrFfHWGee4MOLVuZeScgxftEwbHrPHIFA/ZL+nUJeuA==",
"dev": true,
"license": "MIT",
"dependencies": {
"commander": "^14.0.3",
"listr2": "^9.0.5",
"picomatch": "^4.0.3",
"listr2": "^10.2.1",
"picomatch": "^4.0.4",
"string-argv": "^0.3.2",
"tinyexec": "^1.0.4",
"yaml": "^2.8.2"
"tinyexec": "^1.2.4"
},
"bin": {
"lint-staged": "bin/lint-staged.js"
},
"engines": {
"node": ">=20.17"
"node": ">=22.22.1"
},
"funding": {
"url": "https://opencollective.com/lint-staged"
},
"optionalDependencies": {
"yaml": "^2.9.0"
}
},
"node_modules/lint-staged/node_modules/ansi-styles": {
"version": "6.2.3",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
"integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/lint-staged/node_modules/eventemitter3": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz",
"integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==",
"dev": true,
"license": "MIT"
},
"node_modules/lint-staged/node_modules/listr2": {
"version": "10.2.1",
"resolved": "https://registry.npmjs.org/listr2/-/listr2-10.2.1.tgz",
"integrity": "sha512-7I5knELsJKTUjXG+A6BkKAiGkW1i25fNa/xlUl9hFtk15WbE9jndA89xu5FzQKrY5llajE1hfZZFMILXkDHk/Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"cli-truncate": "^5.2.0",
"eventemitter3": "^5.0.4",
"log-update": "^6.1.0",
"rfdc": "^1.4.1",
"wrap-ansi": "^10.0.0"
},
"engines": {
"node": ">=22.13.0"
}
},
"node_modules/lint-staged/node_modules/string-width": {
"version": "8.2.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz",
"integrity": "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==",
"dev": true,
"license": "MIT",
"dependencies": {
"get-east-asian-width": "^1.5.0",
"strip-ansi": "^7.1.2"
},
"engines": {
"node": ">=20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/lint-staged/node_modules/wrap-ansi": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-10.0.0.tgz",
"integrity": "sha512-SGcvg80f0wUy2/fXES19feHMz8E0JoXv2uNgHOu4Dgi2OrCy1lqwFYEJz1BLbDI0exjPMe/ZdzZ/YpGECBG/aQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^6.2.3",
"string-width": "^8.2.0",
"strip-ansi": "^7.1.2"
},
"engines": {
"node": ">=20"
},
"funding": {
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/listr2": {
@@ -9936,9 +9952,9 @@
}
},
"node_modules/marked": {
"version": "17.0.6",
"resolved": "https://registry.npmjs.org/marked/-/marked-17.0.6.tgz",
"integrity": "sha512-gB0gkNafnonOw0obSTEGZTT86IuhILt2Wfx0mWH/1Au83kybTayroZ/V6nS25mN7u8ASy+5fMhgB3XPNrOZdmA==",
"version": "18.0.4",
"resolved": "https://registry.npmjs.org/marked/-/marked-18.0.4.tgz",
"integrity": "sha512-c/BTaKzg0G6ezQx97DAkYU7k0HM6ys0FqYeKBL6hlBByZwy+ycA1+f0vDdjMHKKeEjdgkx0GOv9Il6D+85cOqA==",
"license": "MIT",
"bin": {
"marked": "bin/marked.js"
@@ -12476,16 +12492,13 @@
}
},
"node_modules/sass-loader": {
"version": "16.0.8",
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.8.tgz",
"integrity": "sha512-hcov4ZwZJIGbEuyNr9EmiTmZueyrxSToE6GOzoZnq5JM7ecRO7ttyvilPn+VmRsqiP16+VYZzVnGZj/hzZgKBA==",
"version": "17.0.0",
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-17.0.0.tgz",
"integrity": "sha512-0Ybm8ohBQ9LcrycVrFQp/KQBNX5a3Wda9/smS0mE/xLffzEnwvV8nykOzrbiSWNzTE3IB/jiXx8O4QmDPG2+Gw==",
"dev": true,
"license": "MIT",
"dependencies": {
"neo-async": "^2.6.2"
},
"engines": {
"node": ">= 18.12.0"
"node": ">= 22.11.0"
},
"funding": {
"type": "opencollective",
@@ -12493,7 +12506,6 @@
},
"peerDependencies": {
"@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0",
"node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0",
"sass": "^1.3.0",
"sass-embedded": "*",
"webpack": "^5.0.0"
@@ -12502,9 +12514,6 @@
"@rspack/core": {
"optional": true
},
"node-sass": {
"optional": true
},
"sass": {
"optional": true
},
@@ -14187,9 +14196,9 @@
}
},
"node_modules/typescript": {
"version": "5.9.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
"integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -14629,21 +14638,16 @@
}
},
"node_modules/webpack-cli": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz",
"integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==",
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-7.0.3.tgz",
"integrity": "sha512-2E2C6A1e2El7791zQgTH7LPIuwLjRliow9OHS/qlJc9pwhZlCoL/uiwqd/1WSlXT83wJfmfDbkcqHXuXoPJZ3g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@discoveryjs/json-ext": "^0.6.1",
"@webpack-cli/configtest": "^3.0.1",
"@webpack-cli/info": "^3.0.1",
"@webpack-cli/serve": "^3.0.1",
"colorette": "^2.0.14",
"commander": "^12.1.0",
"cross-spawn": "^7.0.3",
"@discoveryjs/json-ext": "^1.1.0",
"commander": "^14.0.3",
"cross-spawn": "^7.0.6",
"envinfo": "^7.14.0",
"fastest-levenshtein": "^1.0.12",
"import-local": "^3.0.2",
"interpret": "^3.1.1",
"rechoir": "^0.8.0",
@@ -14653,14 +14657,16 @@
"webpack-cli": "bin/cli.js"
},
"engines": {
"node": ">=18.12.0"
"node": ">=20.9.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
},
"peerDependencies": {
"webpack": "^5.82.0"
"webpack": "^5.101.0",
"webpack-bundle-analyzer": "^4.0.0 || ^5.0.0",
"webpack-dev-server": "^5.0.0"
},
"peerDependenciesMeta": {
"webpack-bundle-analyzer": {
@@ -14672,38 +14678,37 @@
}
},
"node_modules/webpack-cli/node_modules/commander": {
"version": "12.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
"integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
"version": "14.0.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz",
"integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=18"
"node": ">=20"
}
},
"node_modules/webpack-dev-middleware": {
"version": "7.4.5",
"resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz",
"integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==",
"version": "8.0.3",
"resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-8.0.3.tgz",
"integrity": "sha512-zWrde9VZDiRaFuWsjHO40wm9LxxtXEk8DdzFXdU7eU5ZpiANnZZDBbZgN3guxbEoKqUHd9YupBmynyioz42nkA==",
"dev": true,
"license": "MIT",
"dependencies": {
"colorette": "^2.0.10",
"memfs": "^4.43.1",
"mime-types": "^3.0.1",
"memfs": "^4.56.10",
"mime-types": "^3.0.2",
"on-finished": "^2.4.1",
"range-parser": "^1.2.1",
"schema-utils": "^4.0.0"
"schema-utils": "^4.3.3"
},
"engines": {
"node": ">= 18.12.0"
"node": ">= 20.9.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
},
"peerDependencies": {
"webpack": "^5.0.0"
"webpack": "^5.101.0"
},
"peerDependenciesMeta": {
"webpack": {
@@ -15178,9 +15183,9 @@
}
},
"node_modules/zod": {
"version": "3.25.76",
"resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
"integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
"version": "4.4.3",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz",
"integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"

View File

@@ -14,7 +14,7 @@
},
"version": "0.0.3",
"engines": {
"node": ">=22.0.0"
"node": ">=22.12.0"
},
"main": "./app.ts",
"dependencies": {
@@ -37,11 +37,11 @@
"buffer": "^6.0.3",
"chart.js": "^4.5.1",
"clipboard": "^2.0.11",
"commander": "^14.0.3",
"commander": "^15.0.0",
"compression": "^1.8.1",
"copy-webpack-plugin": "^14.0.0",
"cross-env": "^10.1.0",
"enhanced-ms": "^4.3.0",
"enhanced-ms": "^5.0.0",
"events": "^3.3.0",
"express": "^5.2.1",
"file-saver": "^2.0.5",
@@ -53,7 +53,7 @@
"lodash.clonedeep": "^4.5.0",
"lru-cache": "^11.5.1",
"lz-string": "^1.5.0",
"marked": "^17.0.6",
"marked": "^18.0.4",
"monaco-editor": "^0.55.1",
"monaco-vim": "^0.4.4",
"morgan": "^1.10.1",
@@ -83,7 +83,7 @@
"winston-transport": "^4.9.0",
"ws": "^8.21.0",
"yaml": "^2.9.0",
"zod": "^3.25.76"
"zod": "^4.4.3"
},
"devDependencies": {
"@biomejs/biome": "^2.4.16",
@@ -115,24 +115,24 @@
"file-loader": "^6.2.0",
"happy-dom": "^20.9.0",
"husky": "^9.1.7",
"lint-staged": "^16.4.0",
"lint-staged": "^17.0.7",
"mini-css-extract-plugin": "^2.10.2",
"mock-fs": "^5.5.0",
"monaco-editor-webpack-plugin": "^7.1.1",
"nock": "^14.0.15",
"npm-run-all": "^4.1.5",
"sass": "^1.100.0",
"sass-loader": "^16.0.8",
"sass-loader": "^17.0.0",
"source-map-loader": "^5.0.0",
"supertest": "^7.2.2",
"terser-webpack-plugin": "^5.6.1",
"ts-loader": "^9.6.0",
"typescript": "^5.9.3",
"typescript": "^6.0.3",
"vitest": "^4.0.1",
"vitest-fetch-mock": "^0.4.5",
"webpack": "^5.107.2",
"webpack-cli": "^6.0.1",
"webpack-dev-middleware": "^7.4.5",
"webpack-cli": "^7.0.3",
"webpack-dev-middleware": "^8.0.3",
"webpack-manifest-plugin": "^6.0.1"
},
"optionalDependencies": {
@@ -167,7 +167,7 @@
"ts-check:tests": "tsc -p ./tsconfig.tests.json --noEmit",
"ts-check:frontend-tests": "tsc -p ./tsconfig.frontend.tests.json --noEmit",
"ts-check:cypress": "tsc -p ./cypress/tsconfig.json --noEmit",
"webpack": "node --no-warnings=ExperimentalWarning --import=tsx ./node_modules/webpack-cli/bin/cli.js --node-env=production --config webpack.config.esm.ts"
"webpack": "node --no-warnings=ExperimentalWarning --import=tsx ./node_modules/webpack-cli/bin/cli.js --config-node-env=production --config webpack.config.esm.ts"
},
"license": "BSD-2-Clause",
"packageManager": "npm@11.2.0"

5
static/client.d.ts vendored
View File

@@ -36,6 +36,11 @@ declare module '*.pug' {
export default content;
}
// Side-effect CSS/SCSS imports; webpack handles the actual bundling. TS6 defaults
// noUncheckedSideEffectImports to true, so these need ambient declarations.
declare module '*.css';
declare module '*.scss';
declare module '*.svg' {
const src: string;
export default src;

View File

@@ -4,6 +4,10 @@
"sourceMap": true,
"downlevelIteration": true,
"importHelpers": true,
/* TS6 deprecates downlevelIteration and the frontend's es5 target; both still
function until TS7. Silence the deprecation errors until the es5->es2015
migration is tackled separately. */
"ignoreDeprecations": "6.0",
/* Module resolution */
"esModuleInterop": true,
/* Other options */

View File

@@ -3,6 +3,10 @@
"compilerOptions": {
/* Module resolution */
"target": "es5",
/* Pin to the pre-TS6 inferred defaults (TS6 would otherwise default these to
esnext/bundler, which breaks deep monaco esm imports and CSS side-effects). */
"module": "commonjs",
"moduleResolution": "node",
/* Code generation */
"inlineSources": true,
"strictPropertyInitialization": false,