{ "name": "mullvad-vpn", "version": "2019.4.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": { "connected-react-router": "^5.0.1", "d3-geo-projection": "^2.6.0", "electron-log": "^3.0.5", "gettext-parser": "^3.1.0", "history": "^4.6.1", "jsonrpc-lite": "^2.0.6", "mkdirp": "^0.5.1", "moment": "^2.24.0", "node-gettext": "^2.0.0", "rbush": "^2.0.2", "react": "^16.5.0", "react-dom": "^16.5.0", "react-redux": "^5.1.0", "react-router": "^4.3.1", "react-simple-maps": "^0.12.1", "reactxp": "^1.6.1", "redux": "^4.0.1", "sprintf-js": "^1.1.2", "stream-json": "^1.2.1", "uuid": "^3.0.1", "validated": "^2.0.1" }, "optionalDependencies": { "nseventmonitor": "https://github.com/mullvad/NSEventMonitor.git#0.0.14" }, "devDependencies": { "@types/chai": "^4.1.7", "@types/chai-as-promised": "^7.1.0", "@types/chai-spies": "^1.0.0", "@types/d3-geo": "^1.11.0", "@types/enzyme": "^3.1.15", "@types/enzyme-adapter-react-16": "^1.0.3", "@types/geojson": "^7946.0.7", "@types/mkdirp": "^0.5.2", "@types/mocha": "^5.2.6", "@types/node": "^10.12.3", "@types/node-gettext": "^2.0.0", "@types/rbush": "^2.0.2", "@types/react": "^16.8.8", "@types/react-dom": "^16.8.2", "@types/react-redux": "^7.0.6", "@types/react-router": "^4.4.3", "@types/sinon": "^7.0.5", "@types/sprintf-js": "^1.1.2", "@types/stream-json": "^1.0.0", "@types/topojson-specification": "^1.0.1", "@types/uuid": "^3.4.4", "browser-sync": "^2.26.3", "chai": "^4.2.0", "chai-as-promised": "^7.1.1", "chai-spies": "^1.0.0", "cross-env": "^5.1.3", "electron": "^4.1.4", "electron-builder": "^20.40.2", "electron-devtools-installer": "^2.2.1", "electron-mocha": "^6.0.4", "enzyme": "^3.7.0", "enzyme-adapter-react-16": "^1.7.0", "gettext-extractor": "^3.4.2", "npm-run-all": "^4.0.1", "prettier": "1.16.4", "rimraf": "^2.5.4", "sinon": "^7.1.1", "ts-node": "^8.0.3", "tsc-watch": "^2.1.1", "tslint": "^5.15.0", "tslint-config-prettier": "^1.18.0", "tslint-react": "^4.0.0", "typescript": "^3.4.5" }, "scripts": { "postinstall": "cross-env ELECTRON_BUILDER_ALLOW_UNRESOLVED_DEPENDENCIES=true electron-builder install-app-deps", "build": "run-s private:clean private:copy-assets private:compile", "lint": "tslint -t stylish -p .", "format": "npm run private:format -- --write", "check-format": "npm run private:format -- --list-different", "develop": "cross-env run-s private:copy-assets private:watch", "test": "cross-env NODE_ENV=test electron-mocha --renderer --reporter spec --require-main \"test/setup/main.js\" --require ts-node/register --require \"test/setup/renderer.ts\" \"test/**/*.{ts,tsx}\"", "update-translations": "node scripts/extract-translations", "pack:mac": "run-s build private:pack:mac private:postbuild:mac", "pack:win": "run-s build private:pack:win", "pack:linux": "run-s build private:pack:linux", "private:format": "prettier \"**/*.{js,css,ts,tsx}\"", "private:pack:mac": "npm run private:pack -- --mac", "private:postbuild:mac": "rimraf ../dist/mac", "private:pack:win": "npm run private:pack -- --win", "private:pack:linux": "npm run private:pack -- --linux", "private:pack": "cross-env ELECTRON_BUILDER_ALLOW_UNRESOLVED_DEPENDENCIES=true electron-builder", "private:copy-assets": "run-s private:assets:main private:assets:html private:assets:css private:assets:locales", "private:assets:main": "cross-env mkdir -p ./build/assets && cp -R ./assets ./build", "private:assets:html": "cross-env mkdir -p ./build/src/renderer && cp ./src/renderer/index.html ./build/src/renderer", "private:assets:css": "cross-env mkdir -p ./build/src/renderer/components && cp ./src/renderer/components/*.css ./build/src/renderer/components", "private:assets:locales": "cross-env mkdir -p ./build/locales && cp -R ./locales ./build", "private:watch": "cross-env node \"scripts/serve.js\"", "private:compile": "tsc", "private:clean": "rimraf build" } }