WarningImHack3r / npm-update-dependencies

Update NPM dependencies from your IDE
https://plugins.jetbrains.com/plugin/21105-npm-update-dependencies
9 stars 2 forks source link

Exception during external pass in WebStorm with plugin 2.0.1 #51

Closed drnushooz closed 9 months ago

drnushooz commented 9 months ago

What is the issue?

The application crashes when closing WebStorm. The application functions in upgrading the versions but when the project is closed, below exception is produced

   ExternalToolPass: 

   com.intellij.diagnostic.PluginException: annotator: com.github.warningimhack3r.npmupdatedependencies.ui.annotation.UpdatesAnnotator@4fbd4166 (class com.github.warningimhack3r.npmupdatedependencies.ui.annotation.UpdatesAnnotator) [Plugin: com.github.warningimhack3r.npmupdatedependencies]
    at com.intellij.diagnostic.PluginProblemReporterImpl.createPluginExceptionByClass(PluginProblemReporterImpl.java:23)
    at com.intellij.diagnostic.PluginException.createByClass(PluginException.java:89)
    at com.intellij.codeInsight.daemon.impl.ExternalToolPass.processError(ExternalToolPass.java:251)
    at com.intellij.codeInsight.daemon.impl.ExternalToolPass.doAnnotate(ExternalToolPass.java:210)
    at com.intellij.codeInsight.daemon.impl.ExternalToolPass.doAnnotate(ExternalToolPass.java:201)
    at com.intellij.codeInsight.daemon.impl.ExternalToolPass$1.lambda$run$0(ExternalToolPass.java:164)
    at com.intellij.codeInsight.daemon.impl.ExternalToolPass.runChangeAware(ExternalToolPass.java:266)
    at com.intellij.codeInsight.daemon.impl.ExternalToolPass$1.lambda$run$2(ExternalToolPass.java:164)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:186)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:604)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:679)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:635)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:603)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:61)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:173)
    at com.intellij.openapi.progress.util.BackgroundTaskUtil.runUnderDisposeAwareIndicator(BackgroundTaskUtil.java:360)
    at com.intellij.codeInsight.daemon.impl.ExternalToolPass$1.run(ExternalToolPass.java:162)
    at com.intellij.util.ui.update.Update.runUpdate(Update.java:114)
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:348)
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:338)
    at com.intellij.util.ui.update.MergingUpdateQueue.doFlush(MergingUpdateQueue.java:295)
    at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:277)
    at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:246)
    at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:254)
    at com.intellij.util.Alarm$Request.runSafely(Alarm.java:373)
    at com.intellij.util.Alarm$Request.run(Alarm.java:360)
    at com.intellij.util.concurrency.Propagation.contextAwareCallable$lambda$2(propagation.kt:328)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at com.intellij.util.concurrency.SchedulingWrapper$MyScheduledFutureTask.run(SchedulingWrapper.java:272)
    at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:249)
    at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:31)
    at com.intellij.util.concurrency.BoundedTaskExecutor$1.executeFirstTaskAndHelpQueue(BoundedTaskExecutor.java:227)
    at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:218)
    at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:215)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
    at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: org.semver4j.SemverException: Version [1.x] is not valid semver.
    at org.semver4j.internal.StrictParser.parse(StrictParser.java:32)
    at org.semver4j.Semver.<init>(Semver.java:41)
    at org.semver4j.Semver.isGreaterThan(Semver.java:359)
    at com.github.warningimhack3r.npmupdatedependencies.backend.engine.PackageUpdateChecker.isVersionMoreRecentThanComparator(PackageUpdateChecker.kt:21)
    at com.github.warningimhack3r.npmupdatedependencies.backend.engine.PackageUpdateChecker.hasUpdateAvailable(PackageUpdateChecker.kt:50)
    at com.github.warningimhack3r.npmupdatedependencies.ui.annotation.UpdatesAnnotator$doAnnotate$2.invokeSuspend(UpdatesAnnotator.kt:39)
    at com.github.warningimhack3r.npmupdatedependencies.ui.annotation.UpdatesAnnotator$doAnnotate$2.invoke(UpdatesAnnotator.kt)
    at com.github.warningimhack3r.npmupdatedependencies.ui.annotation.UpdatesAnnotator$doAnnotate$2.invoke(UpdatesAnnotator.kt)
    at com.github.warningimhack3r.npmupdatedependencies.backend.extensions.ExtensionsKt$parallelMap$1$1$1$1.invokeSuspend(Extensions.kt:10)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)

What are the steps to reproduce this issue?

Simply close the project. Below is the package.json

{
  "name": "some-app",
  "version": "1.0.5",
  "private": true,
  "dependencies": {
    "@emotion/react": "^11.11.1",
    "@emotion/styled": "^11.11.0",
    "@fontsource/roboto": "^5.0.8",
    "@mui/icons-material": "^5.14.19",
    "@mui/material": "^5.14.19",
    "@testing-library/jest-dom": "^6.1.5",
    "@testing-library/react": "^14.1.2",
    "@testing-library/user-event": "^14.5.1",
    "@types/jest": "^29.5.10",
    "@types/node": "^20.10.1",
    "@types/react": "^18.2.39",
    "@types/react-dom": "^18.2.17",
    "aws-sdk": "^2.1509.0",
    "axios": "^1.6.2",
    "cookie-parser": "^1.4.6",
    "cors": "^2.8.5",
    "dotenv": "^16.3.1",
    "downshift": "^8.2.3",
    "express": "^4.18.2",
    "express-basic-auth": "^1.2.1",
    "http-proxy-middleware": "^2.0.6",
    "lunr": "^2.3.9",
    "morgan": "^1.10.0",
    "node-fetch": "^3.3.2",
    "pino-http": "^8.5.1",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-scripts": "5.0.1",
    "react-tooltip": "^5.24.0",
    "socks-proxy-agent": "^8.0.2",
    "typescript": "^5.3.2",
    "web-vitals": "^3.5.0",
    "winston": "^3.11.0"
  },
  "scripts": {
    "start": "yarn start:server",
    "start:server": "node server/run.js",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "generate:types:ts": "yarn generate:unified:swagger; npx swagger-typescript-api -p src/api/open-api/spec-bundled.yaml -o src/api/open-api/ -n api-generated.ts",
    "generate:types:js": "yarn generate:unified:swagger; node yamlToJSON.js;",
    "generate:unified:swagger": "cd ./src/api/open-api; redocly bundle spec.yaml --output spec-bundled.yaml --max-problems 10",
    "lint": "eslint \"src/**/*.{js,jsx,ts,tsx}\"",
    "lint:fix": "eslint --fix \"src/**/*.{js,jsx,ts,tsx}\"",
    "format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,css,md}\" --config ./.prettierrc.json",
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "@babel/core": "^7.23.5",
    "@babel/plugin-proposal-private-property-in-object": "^7.21.11",
    "@babel/preset-env": "^7.23.5",
    "@babel/preset-react": "^7.23.3",
    "@redocly/cli": "^1.5.0",
    "@types/lunr": "^2.3.7",
    "@typescript-eslint/eslint-plugin": "^6.13.1",
    "@typescript-eslint/parser": "^6.13.1",
    "babel-loader": "^9.1.3",
    "eslint": "^8.54.0",
    "eslint-config-prettier": "^9.0.0",
    "eslint-import-resolver-typescript": "^3.6.1",
    "eslint-plugin-import": "^2.29.0",
    "eslint-plugin-jest": "^27.6.0",
    "eslint-plugin-jsx-a11y": "^6.8.0",
    "eslint-plugin-prettier": "^5.0.1",
    "eslint-plugin-react": "^7.33.2",
    "eslint-plugin-react-hooks": "^4.6.0",
    "husky": "^8.0.3",
    "lint-staged": "^15.1.0",
    "openapi-runtime-validator": "^1.2.1",
    "prettier": "^3.1.0",
    "sass": "^1.69.5",
    "swagger-typescript-api": "^13.0.3"
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "src/**/*.{js,jsx,json}": [
      "npm run format",
      "npm run lint:fix"
    ]
  }
}

What were you expecting to happen?

Close the application correctly.

Paste any relevant logs, error output, etc.

No response

What OS are you experiencing the problem on?

macOS

Additional platform information

No response

Duplicates

WarningImHack3r commented 9 months ago

Hi @drnushooz, thanks for reporting! I'm going to check this out as soon as possible. Can you please provide me with your Webstorm version so I can reliably reproduce the issue?

drnushooz commented 9 months ago

It is occurring on WebStorm 2023.2.5

WarningImHack3r commented 9 months ago

@drnushooz finally found some time to take a look at your issue. However, I cannot reproduce your issue in my regular WebStorm 2023.3. I have a mocked project with your exact package.json, package-lock.json, node_modules, and nothing else, and when I press File > Close Project I get no error whatsoever.

From what I can tell from the error log, it's the Semver dependency I use failing to parse [1.x] for some reason; however, there is no such version in your package.json.

Can you:

Thank you!

WarningImHack3r commented 9 months ago

@drnushooz I managed to reproduce your exact issue by setting a dependency's version to 1.x, which indeed crashed. I fixed that crash in my latest commit.
I will release version 2.1.0 as soon as I get feedback from both open issues. You can try out the new version here before I release it. A confirmation from you that the fix indeed works would be appreciated. You can find the installation instructions at the bottom of the README.

[!NOTE] I have no clue how the issue is triggered only at project closing nor why it's triggered by your exact package.json, however, the cause is fixed.

drnushooz commented 9 months ago

Thank you for fixing this. I checked the version you had provided and it fixed the issue. Glad you were able reproduce it.