Files
compiler-explorer/package.json
Matt Godbolt 861bbde8ca 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>
2026-06-01 18:50:47 -05:00

175 lines
5.9 KiB
JSON

{
"name": "compiler-explorer",
"description": "Interactively investigate compiler output",
"type": "module",
"private": true,
"author": {
"name": "Matt Godbolt",
"email": "matt@godbolt.org",
"url": "https://xania.org"
},
"repository": {
"type": "git",
"url": "compiler-explorer/compiler-explorer"
},
"version": "0.0.3",
"engines": {
"node": ">=22.12.0"
},
"main": "./app.ts",
"dependencies": {
"@aws-sdk/client-dynamodb": "^3.1057.0",
"@aws-sdk/client-ec2": "^3.1057.0",
"@aws-sdk/client-s3": "^3.1057.0",
"@aws-sdk/client-sqs": "^3.1057.0",
"@aws-sdk/client-ssm": "^3.1057.0",
"@aws-sdk/credential-providers": "^3.1057.0",
"@flatten-js/interval-tree": "^2.0.3",
"@fortawesome/fontawesome-free": "^7.2.0",
"@modelcontextprotocol/sdk": "^1.29.0",
"@orchidjs/sifter": "^1.1.0",
"@popperjs/core": "^2.11.8",
"@sentry/browser": "^10.55.0",
"@sentry/node": "^10.55.0",
"@types/semver": "^7.7.1",
"big-integer": "^1.6.52",
"bootstrap": "^5.3.8",
"buffer": "^6.0.3",
"chart.js": "^4.5.1",
"clipboard": "^2.0.11",
"commander": "^15.0.0",
"compression": "^1.8.1",
"copy-webpack-plugin": "^14.0.0",
"cross-env": "^10.1.0",
"enhanced-ms": "^5.0.0",
"events": "^3.3.0",
"express": "^5.2.1",
"file-saver": "^2.0.5",
"golden-layout": "^1.5.9",
"http-proxy": "^1.18.1",
"jquery": "^4.0.0",
"js-cookie": "^3.0.8",
"jszip": "^3.10.1",
"lodash.clonedeep": "^4.5.0",
"lru-cache": "^11.5.1",
"lz-string": "^1.5.0",
"marked": "^18.0.4",
"monaco-editor": "^0.55.1",
"monaco-vim": "^0.4.4",
"morgan": "^1.10.1",
"node-targz": "^0.2.0",
"p-queue": "^9.3.0",
"path-browserify": "^1.0.1",
"profanities": "^3.0.1",
"prom-client": "^15.1.3",
"pug": "^3.0.4",
"response-time": "^2.3.4",
"sanitize-filename": "^1.6.4",
"scroll-into-view-if-needed": "^3.1.0",
"semver": "^7.8.1",
"systemd-socket": "0.0.0",
"tar-stream": "^3.2.0",
"tom-select": "^2.6.1",
"tree-kill": "^1.2.2",
"triple-beam": "^1.4.1",
"tsx": "^4.22.4",
"underscore": "^1.13.8",
"url-join": "^5.0.0",
"whatwg-fetch": "^3.6.20",
"which": "^6.0.1",
"winston": "^3.19.0",
"winston-loki": "^6.1.4",
"winston-papertrail": "^1.0.5",
"winston-transport": "^4.9.0",
"ws": "^8.21.0",
"yaml": "^2.9.0",
"zod": "^4.4.3"
},
"devDependencies": {
"@biomejs/biome": "^2.4.16",
"@sentry/types": "^10.55.0",
"@smithy/util-stream": "^4.6.5",
"@types/bootstrap": "^5.2.10",
"@types/chai": "^5.2.3",
"@types/compression": "^1.8.1",
"@types/express": "^5.0.6",
"@types/file-saver": "^2.0.7",
"@types/http-proxy": "^1.17.17",
"@types/jquery": "^4.0.0",
"@types/js-cookie": "^3.0.6",
"@types/node-targz": "^0.2.4",
"@types/request": "^2.48.13",
"@types/response-time": "^2.3.9",
"@types/supertest": "^7.2.0",
"@types/temp": "^0.9.4",
"@types/underscore": "^1.13.0",
"@types/webpack-env": "^1.18.8",
"@types/which": "^3.0.4",
"@types/ws": "^8.18.1",
"@vitest/coverage-v8": "^4.1.2",
"aws-sdk-client-mock": "^4.1.0",
"cheerio": "^1.2.0",
"css-loader": "^7.1.4",
"css-minimizer-webpack-plugin": "^8.0.0",
"cypress": "^15.16.0",
"file-loader": "^6.2.0",
"happy-dom": "^20.9.0",
"husky": "^9.1.7",
"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": "^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": "^6.0.3",
"vitest": "^4.0.1",
"vitest-fetch-mock": "^0.4.5",
"webpack": "^5.107.2",
"webpack-cli": "^7.0.3",
"webpack-dev-middleware": "^8.0.3",
"webpack-manifest-plugin": "^6.0.1"
},
"optionalDependencies": {
"@rollup/rollup-darwin-arm64": "^4.61.0",
"@rollup/rollup-darwin-x64": "^4.61.0",
"@rollup/rollup-linux-x64-gnu": "^4.61.0",
"@rollup/rollup-linux-x64-musl": "^4.61.0",
"@rollup/rollup-win32-x64-msvc": "^4.61.0"
},
"scripts": {
"cypress": "cypress run",
"lint": "biome check . --write",
"lint-check": "biome check .",
"test-coverage": "vitest run --coverage",
"test": "vitest run",
"test:watch": "vitest",
"test-min": "cross-env SKIP_EXPENSIVE_TESTS=true vitest run",
"test:props": "vitest run --reporter=dot properties-validation-tests.ts",
"check": "npm run ts-check && npm run lint-check && npm run check-frontend-imports && npm run test-min -- --reporter dot",
"check-frontend-imports": "node ./etc/scripts/check-frontend-imports.js",
"dev": "cross-env NODE_ENV=DEV node --no-warnings=ExperimentalWarning --import=tsx app.ts",
"debugger": "cross-env NODE_ENV=DEV node --import=tsx --inspect-brk app.ts",
"debug": "cross-env NODE_ENV=DEV node --no-warnings=ExperimentalWarning --import=tsx app.ts --debug",
"start": "npm run webpack && cross-env NODE_ENV=LOCAL node --no-warnings=ExperimentalWarning --import=tsx app.ts",
"sentry": "npx -p @sentry/cli sentry-cli",
"update-browserslist": "npx update-browserslist-db@latest",
"prepare": "husky",
"ts-compile": "tsc",
"ts-check": "npm-run-all ts-check:*",
"ts-check:backend": "tsc -p ./tsconfig.backend.json --noEmit",
"ts-check:frontend": "tsc -p ./tsconfig.frontend.json --noEmit",
"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 --config-node-env=production --config webpack.config.esm.ts"
},
"license": "BSD-2-Clause",
"packageManager": "npm@11.2.0"
}