wrolpi/app/package.json
Roland 8ba73e64cd
build: uninstall Semantic UI
`semantic-ui-react`, `react-semantic-toasts-2` and `semantic-ui-offline` are
gone from package.json, the lockfile and node_modules -- 19 MB of dependencies
that nothing had imported since the migration finished.

Four things still referenced them and would have broken on uninstall.  None was
caught by a build or by jest:

  Four test files still ran `jest.mock('react-semantic-toasts-2', ...)` for
  components that no longer use it.  A jest.mock of a module that does not exist
  throws, so the packages could not have come out without this.

  `src/components/Download.cy.js` and `cypress/support/component.js` both
  imported semantic.min.css.  The support file now loads what the app loads --
  index.css, the font and token stylesheets, and Mantine's.

The ratchet changes job rather than being deleted.  An import of a missing module
fails loudly now, but three quieter mistakes would not: a `className="ui button"`
that styles nothing, a file reaching back through Theme.tsx, and someone
reinstalling a package to "just use one Semantic component".  It asserts all
three, plus that package.json names nothing matching /semantic/i.

Two pre-existing problems in the cypress component harness surfaced while
checking the uninstall had not broken it, both fixed because that file had to be
edited anyway:

  It imported `react-router-dom`, which is not installed -- this app is on
  react-router v7.  Dates to 5621d473, so the component suite has been
  un-runnable since well before this migration.

  Its mount helper supplied no MantineProvider, so every library component threw
  -- the same gap test-utils.js had for jest.

The component specs now load and four pass; eleven assertions are still written
against markup from before they stopped running.  Repairing those is its own
piece of work, deliberately not bundled in here.  The e2e suite is unaffected:
43/43.
2026-08-08 18:04:03 -06:00

80 lines
2 KiB
JSON

{
"name": "wrolpi-app",
"version": "0.1.0",
"private": true,
"dependencies": {
"@acalcutt/maplibre-contour-pmtiles": "^0.1.2",
"@artsy/fresnel": "^8.5.0",
"@cypress/react18": "^2.0.1",
"@mantine/core": "^8.3.18",
"@mantine/hooks": "^8.3.18",
"@mantine/notifications": "^8.3.18",
"@tabler/icons-react": "^3.46.0",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"cypress": "^15.20.0",
"esptool-js": "^0.6.0",
"lodash": "^4.18.1",
"maplibre-gl": "^5.24.0",
"mathjs": "^15.2.0",
"pmtiles": "^4.4.1",
"protomaps-themes-base": "^4.5.0",
"query-string": "^9.4.1",
"react": "^18.2.0",
"react-colorful": "^5.8.0",
"react-dom": "^18.2.0",
"react-dropzone": "^14.2.3",
"react-hotkeys-hook": "^5.3.3",
"react-qr-code": "^2.2.0",
"react-router": "^7.18.2",
"react-scripts": "5.0.1",
"react-stl-viewer": "^2.5.0",
"three": "^0.185",
"web-vitals": "^5.3.0"
},
"scripts": {
"start": "react-scripts start",
"build": "BROWSERSLIST_IGNORE_OLD_DATA=true react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject",
"cy:run": "cypress run",
"cy:open": "cypress open"
},
"eslintConfig": {
"extends": [
"react-app"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"@testing-library/dom": "^10.4.1",
"@testing-library/jest-dom": "^7.0.0",
"@types/lodash": "^4.17.24",
"@types/node": "^26.1.2",
"@types/react": "^18.3.17",
"@types/react-dom": "^18.3.5",
"typescript": "^5.9.3"
},
"jest": {
"transformIgnorePatterns": [
"node_modules/(?!(react-hotkeys-hook)/)"
]
},
"overrides": {
"react-scripts": {
"typescript": "$typescript"
},
"fork-ts-checker-webpack-plugin": "^6.5.3"
}
}