lightning-terminal/app/package.json
jamaljsr 5ed07dbf71
app: patch vulnerable dev dependencies
Sweeps the build-time dependency tree, which is where most of what
`yarn audit` reports actually lives. This takes the frontend from 419
findings across 42 packages down to 16 across 9.

Most of it is lockfile-only. `yarn upgrade` does not re-resolve
transitive entries in yarn 1, so the affected entries were dropped from
yarn.lock and reinstalled, which picks the newest version each parent's
existing range already allows. That covers the four open dependabot PRs
(shell-quote, websocket-driver, @babel/core and
@babel/plugin-transform-modules-systemjs) along with @babel/helpers,
ajv, async, brace-expansion, form-data, glob, js-yaml, json5, nanoid,
terser and ws.

Re-resolving express to 4.22.2 pulls patched body-parser, cookie,
path-to-regexp and qs with it, and clears the stale minimatch 3.0.4 and
semver 7.0.0 pins at the same time.

browserslist and caniuse-lite had to move too. @babel/core 7.29 emits
'opera_mobile' as a compilation target and the pinned
@babel/helper-compilation-targets 7.17.7 rejects it, which broke the
production build until the whole toolchain was aligned.

storybook goes to 7.6.24 and webpack to 5.109.2, both direct
devDependencies pinned to vulnerable versions.

The `resolutions` additions are for packages whose parent pins a range
with no patched version in it. Each was verified against a build:

- svgo 2.8.3 removes the svgo 1.x subtree that @svgr/plugin-svgo drags
  in. react-scripts sets `svgo: false`, so that plugin never runs, and
  the production bundle is byte for byte identical with and without it.
- resolve-url-loader 5.0.0 is the only way to drop postcss 7. The
  emitted CSS is unchanged, same content hash.
- @tootallnate/once, esbuild, nth-check, serialize-javascript, tar and
  uuid are straightforward version forces.

What is left is either unfixable or would break the build:

- protoc-gen-js pulls got, http-cache-semantics, adm-zip and decompress
  through the unmaintained `download` package. decompress has no
  published fix. None of it runs outside `yarn protos`.
- webpack-dev-server 5 drops the onBeforeSetupMiddleware and
  onAfterSetupMiddleware hooks that react-scripts 5.0.1 calls directly,
  so forcing it would break `yarn start`.
- ip and lodash.pick have no patched version published.
- react-router needs v7, which is a separate migration.
2026-08-11 10:12:44 -05:00

147 lines
4.4 KiB
JSON

{
"name": "lightning-terminal",
"version": "0.0.1",
"description": "Lightning Terminal",
"repository": "https://github.com/lightninglabs/lightning-terminal",
"private": true,
"scripts": {
"start": "BROWSER=none react-scripts start",
"develop": "REACT_APP_USE_SAMPLE_DATA=true yarn start",
"build": "react-scripts build",
"postbuild": "git restore build/.gitkeep 2>/dev/null || printf '# Keep directory in git.\\n' > build/.gitkeep",
"test": "react-scripts test --env=jest-environment-jsdom --transformIgnorePatterns \"node_modules/(?!d3)/\"",
"test:ci": "cross-env CI=true yarn test --coverage",
"eject": "react-scripts eject",
"lint": "eslint --ext .ts,.tsx --ignore-path .eslintignore .",
"tsc": "tsc --noEmit",
"protos": "node ./scripts/build-protos.js",
"storybook": "storybook dev -p 9009 -s public",
"build-storybook": "storybook build -s public"
},
"dependencies": {
"@emotion/react": "11.4.0",
"@emotion/styled": "11.3.0",
"@improbable-eng/grpc-web": "0.14.0",
"@remix-run/router": "1.23.3",
"@types/react-collapse": "^5.0.1",
"big.js": "6.1.1",
"bootstrap": "4.6.1",
"buffer": "6.0.3",
"copy-to-clipboard": "3.3.1",
"d3": "7.8.5",
"date-fns": "2.14.0",
"debug": "4.3.1",
"file-saver": "2.0.2",
"http-proxy-middleware": "2.0.10",
"i18next": "19.5.1",
"i18next-browser-languagedetector": "5.0.0",
"lodash": "4.18.1",
"lottie-web": "5.7.0",
"mobx": "6.3.2",
"mobx-react-lite": "3.2.0",
"mobx-utils": "6.0.4",
"qrcode.react": "^3.1.0",
"rc-dialog": "^8.9.0",
"rc-select": "11.5.0",
"rc-switch": "^4.0.0",
"rc-tooltip": "4.2.1",
"react": "17.0.2",
"react-collapse": "^5.1.1",
"react-dom": "17.0.2",
"react-i18next": "13.5.0",
"react-router-dom": "6.30.4",
"react-toastify": "6.0.6",
"react-virtualized": "9.21.2",
"reactour": "1.18.0",
"semver": "^7.5.2",
"styled-components": "5.1.1"
},
"devDependencies": {
"@storybook/addon-actions": "7.6.24",
"@storybook/addon-docs": "7.6.24",
"@storybook/addon-links": "7.6.24",
"@storybook/addons": "7.6.24",
"@storybook/preset-create-react-app": "7.6.24",
"@storybook/react": "7.6.24",
"@storybook/react-webpack5": "7.6.24",
"@testing-library/jest-dom": "5.11.5",
"@testing-library/react": "11.1.1",
"@testing-library/user-event": "12.2.0",
"@types/big.js": "6.1.1",
"@types/d3": "7.4.3",
"@types/debug": "4.1.5",
"@types/file-saver": "2.0.1",
"@types/google-protobuf": "3.15.10",
"@types/jest": "27.4.1",
"@types/lodash": "4.14.157",
"@types/node": "14.0.14",
"@types/react": "17.0.13",
"@types/react-dom": "17.0.8",
"@types/react-virtualized": "9.21.10",
"@types/reactour": "1.17.1",
"@types/semver": "^7.3.9",
"@typescript-eslint/eslint-plugin": "5.17.0",
"@typescript-eslint/parser": "5.17.0",
"cross-env": "7.0.2",
"eslint-config-prettier": "8.5.0",
"eslint-plugin-prettier": "4.0.0",
"eslint-plugin-react": "7.29.4",
"google-protobuf": "3.14.0",
"jest-canvas-mock": "2.3.0",
"jest-environment-jsdom": "27.5.1",
"prettier": "2.1.2",
"protoc-gen-js": "3.21.2",
"react-scripts": "^5.0.1",
"sass": "1.43.4",
"storybook": "7.6.24",
"ts-protoc-gen": "0.15.0",
"typescript": "4.9.5",
"webpack": "5.109.2"
},
"resolutions": {
"@tootallnate/once": "2.0.1",
"esbuild": "0.25.12",
"http-proxy-middleware": "2.0.10",
"jackspeak": "2.1.1",
"nth-check": "2.1.1",
"resolve-url-loader": "5.0.0",
"serialize-javascript": "7.1.0",
"strip-ansi": "6.0.1",
"svgo": "2.8.3",
"tar": "7.5.22",
"uuid": "11.1.1",
"wrap-ansi": "7.0.0"
},
"eslintConfig": {
"extends": "react-app",
"ignorePatterns": [
"src/types/generated/**/*.js"
]
},
"jest": {
"globalSetup": "./src/setupTestsGlobal.ts",
"resetMocks": false,
"collectCoverageFrom": [
"src/**/*.{js,jsx,ts,tsx}",
"!src/**/*.d.ts",
"!src/__(stories|mocks)__/**/*.{ts,tsx}",
"!src/types/**/*.{js,ts}",
"!src/i18n/**/*.{js,ts}",
"!src/util/tests/**/*.{ts,tsx}",
"!src/setupProxy.js",
"!src/index.tsx"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}