* Set `node-fetch` to `^2.7.0`
* Update package-lock.json
```
# root
bin/npm update node-fetch
bin/npm update cross-fetch
# in other path in docker
npm update node-fetch
```
* Update node-fetch patch
* [fetch-utils] Skip the test: destroys the request body if it doesn't get consumed
```
1) fetch-utils
fetchJson
destroys the request body if it doesn't get consumed:
FetchError: Invalid response body while trying to fetch http://example.com:30001/json/ignore-request: write EPIPE
at PassThrough.<anonymous> (/overleaf/node_modules/node-fetch/lib/index.js:400:12)
at PassThrough.emit (node:events:529:35)
at emitErrorNT (node:internal/streams/destroy:151:8)
at emitErrorCloseNT (node:internal/streams/destroy:116:3)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
```
* [fetch-utils] Delete the test: destroys the request body if it doesn't get consumed
* Remove the `setTimeout` in the node-fetch patch
Fixes a test and doesn't break filestore acceptance tests
* Update node-fetch patch again: bring changes from https://github.com/node-fetch/node-fetch/blob/e87b093/src/index.js
* Update node-fetch patch again: bring changes from https://github.com/node-fetch/node-fetch/blob/e87b093/src/index.js
* Update node-fetch patches back to single lines
Per https://github.com/overleaf/internal/pull/20165#discussion_r1739035513
GitOrigin-RevId: 945e5a12e838673b7bc87b588b7aca1bcd9109e2
* Add `LaTeX Quality Control` to the readme
* Update dependencies
* Match `web` version
* Update to modern packages
* Update to modern versions
* Import `Link` from `react-router-dom`
* Import Helmet correctly
* Remove `react-router-redux`
It seems that we're not actually getting anything from it (?)
* Update component containers/App
* Revert unecessary changes to containers/App
* Update component containers/Upload
* Revert unnecessary changes to container/Upload
* Fix links
* Add `withNavigation` HOC
* Fix link to `/upload`
* Remove unneeded `navigate` props
* SSR: Use `StaticRouterProvider`
* CSR: Use `createBrowserRouter`
* SSR: Simplify since we don't need to perform queries
* Add `data-testid`s to components
* Update tests (`enzyme` -> `@testing-library`)
* Remove unneeded "before" in tests
* Revert "Remove unneeded "before" in tests"
(actually necessary)
* Rename `devToolsExtension` to `__REDUX_DEVTOOLS_EXTENSION__`
Per https://github.com/zalmoxisus/redux-devtools-extension/issues/220
* Return 404 on invalid paths
* Remove unuseds dependencies
* Re-implement react-router `onUpdate` with `RouteChangedHandler`
It appears that `onUpdate` was removed from react-router
https://github.com/remix-run/react-router/issues/4278
* Update package-lock
* Remove debug log
GitOrigin-RevId: 3244b4266b53ac57a92ed4adc7c0e00b93a6b361
* Update `@google-cloud/storage` and remove its patches
* Re-add patch on `@google-cloud/storage/retry-request`
Replace mentions of `.pipe()` and run `patch-package @google-cloud/storage/retry-request`
It was very hard to test whether the package could still cause bugs, so I'd rather put the patch back
GitOrigin-RevId: be83b54b6d55849995ac131bfcf3c9acd9b6dd8e
* Add a tsconfig.json to the eslint-plugin folder so it can be linted too
* Create eslint rule `prefer-kebab-url`
* Add prefer-kebab-url to service/web
* Ignore lowercased strings
Prevents from trying to change `v0` to `v-0`
* Ignore parts between brackets or parenthesis
* Record in URL paths by case
lower: 241
kebab: 60
snake: 43
camel: 22
other: 5
* Revert "Record in URL paths by case"
This reverts commit 262f483aafb0daa1a01e9025488cdc33f31ef67c.
* Showcase how the autofix would change the code
* Revert "Showcase how the autofix would change the code"
This reverts commit f045292bf01623de2df5b89fc0d68737a39913dc.
* Add ignored words so we don't have to update old code
* Change the rule so it suggests instead of fixing
This prevents eslint autofix from creating bugs
* Move list of ignored words to its own file
Per https://github.com/overleaf/internal/pull/18913#discussion_r1644204034
* Add comment explaining the ignore list
GitOrigin-RevId: d13918b0bcba9d77120f1b61b354a79dc8fb4b4e