{ "name": "mullvad-vpn", "version": "0.0.0", "productName": "Mullvad VPN", "private": true, "description": "Mullvad VPN client", "main": "build/main.js", "author": { "name": "Mullvad VPN", "email": "support@mullvadvpn.net" }, "repository": "https://github.com/mullvad/mullvadvpn-app", "license": "GPL-3.0", "dependencies": { "@grpc/grpc-js": "^1.12.2", "argv-split": "^2.0.1", "gettext-parser": "^6.0.0", "gl-matrix": "^3.4.3", "google-protobuf": "^3.21.0", "management-interface": "0.0.0", "motion": "^12.23.22", "node-gettext": "^3.0.0", "nseventforwarder": "0.0.0", "react": "^19.1.1", "react-dom": "^19.1.1", "react-redux": "^9.2.0", "react-router": "^5.3.4", "redux": "^4.2.0", "simple-plist": "^1.3.1", "sprintf-js": "^1.1.2", "styled-components": "^6.1.19", "windows-utils": "0.0.0" }, "devDependencies": { "@playwright/test": "^1.55.1", "@types/chai": "^4.3.3", "@types/chai-as-promised": "^7.1.5", "@types/chai-spies": "^1.0.3", "@types/gettext-parser": "^4.0.1", "@types/google-protobuf": "^3.15.6", "@types/history": "^4.7.11", "@types/mocha": "^10.0.0", "@types/node-gettext": "^3.0.3", "@types/react": "^19.1.9", "@types/react-dom": "^19.1.7", "@types/react-router": "^5.1.19", "@types/sinon": "^10.0.13", "@types/sprintf-js": "^1.1.2", "@types/topojson-specification": "^1.0.2", "@vitejs/plugin-react": "^4.7.0", "chai": "^4.3.6", "chai-as-promised": "^7.1.1", "chai-spies": "^1.0.0", "cross-env": "^7.0.3", "electron": "37.6.0", "electron-builder": "26.0.18", "electron-devtools-installer": "^3.2.0", "eslint-plugin-react": "^7.36.1", "eslint-plugin-react-compiler": "^19.1.0-rc.2", "eslint-plugin-react-hooks": "^5.2.0", "gettext-extractor": "^3.5.4", "globals": "^15.9.0", "mocha": "^10.8.2", "playwright": "^1.55.1", "postject": "^1.0.0-alpha.6", "sinon": "^14.0.1", "vite": "7.1.11", "vite-plugin-electron": "^0.29.0", "xvfb-maybe": "^0.2.1" }, "optionalDependencies": { "@rollup/rollup-darwin-arm64": "4.34.6", "@rollup/rollup-darwin-x64": "4.34.6", "@rollup/rollup-linux-arm64-gnu": "4.34.6", "@rollup/rollup-linux-x64-gnu": "4.34.6", "@rollup/rollup-win32-arm64-msvc": "4.34.6", "@rollup/rollup-win32-x64-msvc": "4.34.6" }, "scripts": { "preinstall": "test -d node_modules || mkdir node_modules", "build": "node tasks/build-production.js", "build:vite": "vite build", "build:test": "node tasks/build-test.js", "build:standalone": "node tasks/build-standalone.js", "pack-test-executable": "./scripts/build-test-executable.sh", "build-test-executable": "npm run pack-test-executable", "lint": "eslint . --max-warnings 0", "lint-fix": "eslint --fix .", "e2e": "npm run build:test && npm run e2e:no-build", "e2e:no-build": "xvfb-maybe -- playwright test mocked", "e2e:sequential": "npm run build && npm run e2e:sequential:no-build", "e2e:sequential:no-build": "xvfb-maybe -- playwright test -c test/e2e/installed/playwright.config.ts --workers 1", "e2e:update-snapshots": "npm run e2e:no-build -- --update-snapshots", "develop": "npm run develop:pre && npm run develop:vite", "develop:pre": "node tasks/pre-develop.js", "develop:vite": "vite", "test": "cross-env NODE_ENV=test mocha --reporter spec --require ts-node/register --require \"test/unit/setup.ts\" \"test/unit/*.spec.ts\"", "type-check": "tsc --noEmit", "update-translations": "node scripts/extract-translations", "pack:mac": "node tasks/pack-mac.js", "pack:win": "node tasks/pack-windows.js", "pack:linux": "node tasks/pack-linux.js" }, "volta": { "extends": "../../package.json" } }