1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
{
"name": "mullvad-vpn",
"version": "2021.6.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.3.7",
"argv-split": "^2.0.1",
"d3-geo": "^1.12.1",
"gettext-parser": "^4.0.3",
"google-protobuf": "^3.14.0",
"node-gettext": "^3.0.0",
"rbush": "^2.0.2",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-redux": "^7.2.2",
"react-router": "^5.1.2",
"react-simple-maps": "^2.1.2",
"redux": "^4.0.5",
"sprintf-js": "^1.1.2",
"styled-components": "^5.1.1"
},
"optionalDependencies": {
"grpc-tools": "^1.10.0",
"nseventmonitor": "^1.0.1"
},
"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/gettext-parser": "^4.0.0",
"@types/google-protobuf": "^3.7.2",
"@types/history": "^4.7.8",
"@types/mocha": "^5.2.6",
"@types/node": "^16.10.1",
"@types/node-gettext": "^3.0.1",
"@types/rbush": "^2.0.2",
"@types/react": "^16.9.56",
"@types/react-dom": "^16.9.9",
"@types/react-redux": "^7.1.7",
"@types/react-router": "^5.1.5",
"@types/react-simple-maps": "^1.0.3",
"@types/sinon": "^7.0.5",
"@types/sprintf-js": "^1.1.2",
"@types/styled-components": "^5.1.4",
"@types/topojson-specification": "^1.0.1",
"@typescript-eslint/eslint-plugin": "^5.7.0",
"@typescript-eslint/parser": "^5.7.0",
"browserify": "^17.0.0",
"chai": "^4.2.0",
"chai-as-promised": "^7.1.1",
"chai-spies": "^1.0.0",
"cross-env": "^5.1.3",
"electron": "^16.0.4",
"electron-builder": "^22.11.7",
"electron-devtools-installer": "^3.2.0",
"electron-mocha": "^9.3.3",
"electron-notarize": "^0.1.1",
"eslint": "^7.27.0",
"eslint-plugin-prettier": "^3.4.0",
"eslint-plugin-react": "^7.23.2",
"gettext-extractor": "^3.5.2",
"grpc_tools_node_protoc_ts": "^5.1.1",
"gulp": "^4.0.2",
"gulp-inject-string": "^1.1.2",
"gulp-sourcemaps": "^2.6.5",
"gulp-typescript": "^5.0.1",
"prettier": "^2.2.1",
"semver": "^7.3.2",
"sinon": "^7.1.1",
"ts-node": "^10.4.0",
"tsc-watch": "^4.2.9",
"typescript": "^4.5.4",
"vinyl-buffer": "^1.0.1",
"vinyl-source-stream": "^2.0.0"
},
"scripts": {
"postinstall": "cross-env ELECTRON_BUILDER_ALLOW_UNRESOLVED_DEPENDENCIES=true electron-builder install-app-deps",
"build": "gulp build",
"build-proto": "gulp build-proto",
"lint": "eslint --ext tsx,ts .",
"format": "prettier \"**/*.{js,css,ts,tsx}\" --write",
"develop": "gulp develop",
"test": "cross-env NODE_ENV=test electron-mocha --renderer --reporter spec --require ts-node/register --require \"test/setup/renderer.ts\" \"test/**/*.{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": ">=12",
"npm": ">=6.12"
}
}
|