{ "name": "mullvad-vpn", "version": "0.0.0", "productName": "Mullvad VPN", "private": true, "description": "Mullvad VPN client", "main": "init.js", "author": { "name": "Mullvad VPN", "email": "support@mullvad.net" }, "repository": "https://github.com/mullvad/mullvadvpn-app", "license": "GPL-3.0", "dependencies": { "@grpc/grpc-js": "^1.9.6", "argv-split": "^2.0.1", "d3-geo": "^1.12.1", "gettext-parser": "^6.0.0", "google-protobuf": "^3.21.0", "node-gettext": "^3.0.0", "rbush": "^3.0.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-redux": "^7.2.9", "react-router": "^5.1.2", "react-simple-maps": "^3.0.0", "redux": "^4.2.0", "sprintf-js": "^1.1.2", "styled-components": "^6.1.0" }, "optionalDependencies": { "grpc-tools": "^1.12.4", "nseventmonitor": "^1.0.3" }, "devDependencies": { "@electron/notarize": "^2.1.0", "@playwright/test": "^1.32.0", "@types/chai": "^4.3.3", "@types/chai-as-promised": "^7.1.5", "@types/chai-spies": "^1.0.3", "@types/d3-geo": "^1.11.0", "@types/gettext-parser": "^4.0.1", "@types/google-protobuf": "^3.15.6", "@types/history": "^4.7.11", "@types/mocha": "^10.0.0", "@types/node": "^18.16.1", "@types/node-gettext": "^3.0.3", "@types/rbush": "^3.0.0", "@types/react": "^18.0.21", "@types/react-dom": "^18.0.6", "@types/react-router": "^5.1.19", "@types/react-simple-maps": "^1.0.8", "@types/sinon": "^10.0.13", "@types/sprintf-js": "^1.1.2", "@types/topojson-specification": "^1.0.2", "@typescript-eslint/eslint-plugin": "^5.56.0", "@typescript-eslint/parser": "^5.56.0", "browserify": "^17.0.0", "chai": "^4.3.6", "chai-as-promised": "^7.1.1", "chai-spies": "^1.0.0", "cross-env": "^7.0.3", "electron": "^26.3.0", "electron-builder": "^23.6.0", "electron-devtools-installer": "^3.2.0", "electron-mocha": "^11.0.2", "eslint": "^8.36.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-react": "^7.32.2", "eslint-plugin-simple-import-sort": "^10.0.0", "gettext-extractor": "^3.5.4", "grpc_tools_node_protoc_ts": "^5.3.2", "gulp": "^4.0.2", "gulp-inject-string": "^1.1.2", "gulp-sourcemaps": "^3.0.0", "gulp-typescript": "^6.0.0-alpha.1", "pkg": "^5.8.0", "playwright": "^1.32.0", "prettier": "^2.2.1", "sinon": "^14.0.1", "ts-node": "^10.9.1", "tsc-watch": "^5.0.3", "typescript": "^5.0.2", "vinyl-buffer": "^1.0.1", "vinyl-source-stream": "^2.0.0", "xvfb-maybe": "^0.2.1" }, "scripts": { "postinstall": "cross-env ELECTRON_BUILDER_ALLOW_UNRESOLVED_DEPENDENCIES=true electron-builder install-app-deps", "build": "gulp build", "build-proto": "gulp build-proto", "pack-test-executable": "pkg --config standalone-tests.pkg.json --output ../dist/mullvadvpn-app-e2e-tests build/standalone-tests.js", "build-test-executable": "npm run build && npm run pack-test-executable", "lint": "eslint --ext tsx,ts .", "format": "prettier \"**/*.{js,css,ts,tsx}\" --write", "tsc": "tsc -p . --noEmit", "e2e": "npm run build && 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": "gulp develop", "test": "cross-env NODE_ENV=test electron-mocha --renderer --reporter spec --require ts-node/register --require \"test/unit/setup.ts\" \"test/unit/**/*.{ts,tsx}\"", "update-translations": "node scripts/extract-translations", "pack:mac": "gulp pack-mac", "pack:win": "gulp pack-win", "pack:linux": "gulp pack-linux" }, "engines": { "node": ">=16", "npm": ">=8.3" }, "volta": { "node": "18.16.1", "npm": "9.9.0" } }