diff options
| author | Oskar Nyberg <oskar@mullvad.net> | 2021-07-12 10:09:43 +0200 |
|---|---|---|
| committer | Oskar Nyberg <oskar@mullvad.net> | 2021-07-12 10:09:43 +0200 |
| commit | 51c3233e7f2f7dbf11f11345b378ff58190b72fc (patch) | |
| tree | d98f0670439d2e208028e532041635c0d862196a | |
| parent | 2f303f7158be3256f94ad437b72ab8628cfceaee (diff) | |
| parent | ffe0c6e418001f532469ce307edea7b82a663cdd (diff) | |
| download | mullvadvpn-51c3233e7f2f7dbf11f11345b378ff58190b72fc.tar.xz mullvadvpn-51c3233e7f2f7dbf11f11345b378ff58190b72fc.zip | |
Merge branch 'update-to-electron-11.4.9'
23 files changed, 92 insertions, 536 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index ebcf980a84..93bcfc5c67 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ Line wrap the file at 100 chars. Th - Change the app update notification when the suggested version is a beta, to include that it's a beta. - Upgrade OpenVPN from 2.5.1 to 2.5.3. +- Update Electron from 11.2.3 to 11.4.9. ### Fixed - Fix link to download page not always using the beta URL when it should. diff --git a/gui/package-lock.json b/gui/package-lock.json index 52b5717894..b6e09dc79b 100644 --- a/gui/package-lock.json +++ b/gui/package-lock.json @@ -56,9 +56,9 @@ "chai-as-promised": "^7.1.1", "chai-spies": "^1.0.0", "cross-env": "^5.1.3", - "electron": "^11.2.3", - "electron-builder": "^22.10.4", - "electron-devtools-installer": "^3.1.1", + "electron": "^11.4.10", + "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", @@ -73,7 +73,6 @@ "prettier": "^2.2.1", "semver": "^7.3.2", "sinon": "^7.1.1", - "spa-server": "^1.0.0", "ts-node": "^10.0.0", "tsc-watch": "^4.2.9", "typescript": "^4.3.2", @@ -3451,21 +3450,6 @@ "node": ">=8" } }, - "node_modules/connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, "node_modules/console-browserify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", @@ -4028,15 +4012,6 @@ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "optional": true }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/deps-sort": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", @@ -4062,12 +4037,6 @@ "minimalistic-assert": "^1.0.0" } }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, "node_modules/detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", @@ -4398,12 +4367,6 @@ "object.defaults": "^1.1.0" } }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, "node_modules/ejs": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", @@ -4420,9 +4383,9 @@ } }, "node_modules/electron": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/electron/-/electron-11.2.3.tgz", - "integrity": "sha512-6yxOc42nDAptHKNlUG/vcOh2GI9x2fqp2nQbZO0/3sz2CrwsJkwR3i3oMN9XhVJaqI7GK1vSCJz0verOkWlXcQ==", + "version": "11.4.10", + "resolved": "https://registry.npmjs.org/electron/-/electron-11.4.10.tgz", + "integrity": "sha512-aQTRgRdHwCW68gxz9qvGCfOUvR4NBbdecLB/mEWX8fMncDFvPMmm+dq2D6zSWWVEKywmsj3+wMMVn3UV2Cl2CQ==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -4553,13 +4516,14 @@ } }, "node_modules/electron-devtools-installer": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/electron-devtools-installer/-/electron-devtools-installer-3.1.1.tgz", - "integrity": "sha512-g2D4J6APbpsiIcnLkFMyKZ6bOpEJ0Ltcc2m66F7oKUymyGAt628OWeU9nRZoh1cNmUs/a6Cls2UfOmsZtE496Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/electron-devtools-installer/-/electron-devtools-installer-3.2.0.tgz", + "integrity": "sha512-t3UczsYugm4OAbqvdImMCImIMVdFzJAHgbwHpkl5jmfu1izVgUcP/mnrPqJIpEeCK1uZGpt+yHgWEN+9EwoYhQ==", "dev": true, "dependencies": { "rimraf": "^3.0.2", "semver": "^7.2.1", + "tslib": "^2.1.0", "unzip-crx-3": "^0.2.0" } }, @@ -4575,6 +4539,12 @@ "rimraf": "bin.js" } }, + "node_modules/electron-devtools-installer/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + }, "node_modules/electron-mocha": { "version": "9.3.3", "resolved": "https://registry.npmjs.org/electron-mocha/-/electron-mocha-9.3.3.tgz", @@ -4992,6 +4962,7 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "dev": true, + "optional": true, "engines": { "node": ">= 0.8" } @@ -5179,12 +5150,6 @@ "node": ">=8" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -5666,15 +5631,6 @@ "node": ">=0.10.0" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/event-emitter": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", @@ -6153,24 +6109,6 @@ "node": ">=0.10.0" } }, - "node_modules/finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -6316,15 +6254,6 @@ "node": ">=0.10.0" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/from": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", @@ -8814,15 +8743,6 @@ "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", "dev": true }, - "node_modules/mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true, - "bin": { - "mime": "cli.js" - } - }, "node_modules/mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", @@ -9692,9 +9612,9 @@ } }, "node_modules/normalize-url": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.3.0.tgz", - "integrity": "sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", "dev": true, "engines": { "node": ">=8" @@ -9993,18 +9913,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -10212,15 +10120,6 @@ "node": ">=0.10.0" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", @@ -10712,15 +10611,6 @@ "safe-buffer": "^5.1.0" } }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/rbush": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.2.tgz", @@ -11424,60 +11314,6 @@ "node": ">= 0.10" } }, - "node_modules/send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/send/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/send/node_modules/statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/serialize-error": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", @@ -11510,21 +11346,6 @@ "randombytes": "^2.1.0" } }, - "node_modules/serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -11918,18 +11739,6 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, - "node_modules/spa-server": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/spa-server/-/spa-server-1.0.0.tgz", - "integrity": "sha1-JTL6vI8SJKSLaFuS47HzOoYV2II=", - "dev": true, - "dependencies": { - "connect": "^3.3.5", - "mime": "^1.3.4", - "serve-static": "^1.9.2", - "xtend": "^4.0.0" - } - }, "node_modules/sparkles": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", @@ -12043,15 +11852,6 @@ "node": ">=0.10.0" } }, - "node_modules/statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/stream-browserify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", @@ -13177,15 +12977,6 @@ "node": ">= 4.0.0" } }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -13448,15 +13239,6 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", @@ -16885,18 +16667,6 @@ "xdg-basedir": "^4.0.0" } }, - "connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" - } - }, "console-browserify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", @@ -17396,12 +17166,6 @@ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "optional": true }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, "deps-sort": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", @@ -17424,12 +17188,6 @@ "minimalistic-assert": "^1.0.0" } }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, "detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", @@ -17694,12 +17452,6 @@ "object.defaults": "^1.1.0" } }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, "ejs": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", @@ -17710,9 +17462,9 @@ } }, "electron": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/electron/-/electron-11.2.3.tgz", - "integrity": "sha512-6yxOc42nDAptHKNlUG/vcOh2GI9x2fqp2nQbZO0/3sz2CrwsJkwR3i3oMN9XhVJaqI7GK1vSCJz0verOkWlXcQ==", + "version": "11.4.10", + "resolved": "https://registry.npmjs.org/electron/-/electron-11.4.10.tgz", + "integrity": "sha512-aQTRgRdHwCW68gxz9qvGCfOUvR4NBbdecLB/mEWX8fMncDFvPMmm+dq2D6zSWWVEKywmsj3+wMMVn3UV2Cl2CQ==", "dev": true, "requires": { "@electron/get": "^1.0.1", @@ -17815,13 +17567,14 @@ } }, "electron-devtools-installer": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/electron-devtools-installer/-/electron-devtools-installer-3.1.1.tgz", - "integrity": "sha512-g2D4J6APbpsiIcnLkFMyKZ6bOpEJ0Ltcc2m66F7oKUymyGAt628OWeU9nRZoh1cNmUs/a6Cls2UfOmsZtE496Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/electron-devtools-installer/-/electron-devtools-installer-3.2.0.tgz", + "integrity": "sha512-t3UczsYugm4OAbqvdImMCImIMVdFzJAHgbwHpkl5jmfu1izVgUcP/mnrPqJIpEeCK1uZGpt+yHgWEN+9EwoYhQ==", "dev": true, "requires": { "rimraf": "^3.0.2", "semver": "^7.2.1", + "tslib": "^2.1.0", "unzip-crx-3": "^0.2.0" }, "dependencies": { @@ -17833,6 +17586,12 @@ "requires": { "glob": "^7.1.3" } + }, + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true } } }, @@ -18170,7 +17929,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true + "dev": true, + "optional": true }, "encoding": { "version": "0.1.13", @@ -18329,12 +18089,6 @@ "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", "dev": true }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -18695,12 +18449,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, "event-emitter": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", @@ -19107,21 +18855,6 @@ } } }, - "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" - } - }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -19236,12 +18969,6 @@ "map-cache": "^0.2.2" } }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, "from": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", @@ -21231,12 +20958,6 @@ } } }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true - }, "mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", @@ -21942,9 +21663,9 @@ "dev": true }, "normalize-url": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.3.0.tgz", - "integrity": "sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", "dev": true }, "now-and-later": { @@ -22174,15 +21895,6 @@ "es-abstract": "^1.18.2" } }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -22353,12 +22065,6 @@ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", "dev": true }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", @@ -22743,12 +22449,6 @@ "safe-buffer": "^5.1.0" } }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, "rbush": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.2.tgz", @@ -23328,53 +23028,6 @@ "sver-compat": "^1.5.0" } }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "dependencies": { - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true - } - } - }, "serialize-error": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", @@ -23403,18 +23056,6 @@ "randombytes": "^2.1.0" } }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - } - }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -23738,18 +23379,6 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, - "spa-server": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/spa-server/-/spa-server-1.0.0.tgz", - "integrity": "sha1-JTL6vI8SJKSLaFuS47HzOoYV2II=", - "dev": true, - "requires": { - "connect": "^3.3.5", - "mime": "^1.3.4", - "serve-static": "^1.9.2", - "xtend": "^4.0.0" - } - }, "sparkles": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", @@ -23844,12 +23473,6 @@ } } }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", - "dev": true - }, "stream-browserify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", @@ -24760,12 +24383,6 @@ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -24986,12 +24603,6 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", diff --git a/gui/package.json b/gui/package.json index d786d7017d..476b460ce8 100644 --- a/gui/package.json +++ b/gui/package.json @@ -62,9 +62,9 @@ "chai-as-promised": "^7.1.1", "chai-spies": "^1.0.0", "cross-env": "^5.1.3", - "electron": "^11.2.3", + "electron": "^11.4.10", "electron-builder": "^22.11.7", - "electron-devtools-installer": "^3.1.1", + "electron-devtools-installer": "^3.2.0", "electron-mocha": "^9.3.3", "electron-notarize": "^0.1.1", "eslint": "^7.27.0", @@ -79,7 +79,6 @@ "prettier": "^2.2.1", "semver": "^7.3.2", "sinon": "^7.1.1", - "spa-server": "^1.0.0", "ts-node": "^10.0.0", "tsc-watch": "^4.2.9", "typescript": "^4.3.2", diff --git a/gui/src/main/index.ts b/gui/src/main/index.ts index 8b047cb6c3..8cacf4a7b7 100644 --- a/gui/src/main/index.ts +++ b/gui/src/main/index.ts @@ -503,13 +503,7 @@ class ApplicationMain { const filePath = path.resolve(path.join(__dirname, '../renderer/index.html')); try { - if (process.env.NODE_ENV === 'development') { - await this.windowController.window.loadURL( - 'http://localhost:8080/src/renderer/index.html', - ); - } else { - await this.windowController.window.loadFile(filePath); - } + await this.windowController.window.loadFile(filePath); } catch (error) { log.error(`Failed to load index file: ${error.message}`); } @@ -1091,8 +1085,6 @@ class ApplicationMain { guiSettings: this.guiSettings.state, wireguardPublicKey: this.wireguardPublicKey, translations: this.translations, - platform: process.platform, - runningInDevelopment: process.env.NODE_ENV === 'development', windowsSplitTunnelingApplications: this.windowsSplitTunnelingApplications, })); @@ -1588,10 +1580,8 @@ class ApplicationMain { private allowDevelopmentRequest(url: string): boolean { return ( process.env.NODE_ENV === 'development' && - // Local web server providing assests (index.html, index.js and css files) - (url.startsWith('http://localhost:8080/') || - // Downloading of React and Redux developer tools. - url.startsWith('devtools://devtools/') || + // Downloading of React and Redux developer tools. + (url.startsWith('devtools://devtools/') || url.startsWith('chrome-extension://') || url.startsWith('https://clients2.google.com') || url.startsWith('https://clients2.googleusercontent.com')) @@ -1613,7 +1603,10 @@ class ApplicationMain { const forceDownload = !!process.env.UPGRADE_EXTENSIONS; for (const name of extensions) { try { - await installer.default(installer[name], forceDownload); + await installer.default(installer[name], { + forceDownload, + loadExtensionOptions: { allowFileAccess: true }, + }); } catch (e) { log.info(`Error installing ${name} extension: ${e.message}`); } diff --git a/gui/src/renderer/app.tsx b/gui/src/renderer/app.tsx index febcaf8bc8..5b4f4be972 100644 --- a/gui/src/renderer/app.tsx +++ b/gui/src/renderer/app.tsx @@ -208,9 +208,6 @@ export default class AppRenderer { // Request the initial state from the main process const initialState = IpcRendererEventChannel.state.get(); - window.platform = initialState.platform; - window.runningInDevelopment = initialState.runningInDevelopment; - this.setLocale(initialState.locale); loadTranslations( messages, @@ -563,7 +560,7 @@ export default class AppRenderer { let expectedContentHeight = 568; // The app content is 12px taller on macOS to fit the top arrow. - if (window.platform === 'darwin' && !this.guiSettings.unpinnedWindow) { + if (window.env.platform === 'darwin' && !this.guiSettings.unpinnedWindow) { expectedContentHeight += 12; } @@ -676,7 +673,7 @@ export default class AppRenderer { } private async autoConnect() { - if (window.runningInDevelopment) { + if (window.env.development) { log.info('Skip autoconnect in development'); } else if (this.autoConnected) { log.info('Skip autoconnect because it was done before'); diff --git a/gui/src/renderer/components/AdvancedSettings.tsx b/gui/src/renderer/components/AdvancedSettings.tsx index 77c815fe61..62232b6b8c 100644 --- a/gui/src/renderer/components/AdvancedSettings.tsx +++ b/gui/src/renderer/components/AdvancedSettings.tsx @@ -441,11 +441,11 @@ export default class AdvancedSettings extends React.Component<IProps, IState> { </Cell.CellButton> </StyledButtonCellGroup> - {(window.platform === 'linux' || window.platform === 'win32') && ( + {(window.env.platform === 'linux' || window.env.platform === 'win32') && ( <StyledButtonCellGroup> <Cell.CellButton onClick={this.props.onViewSplitTunneling}> <Cell.Label> - {window.platform === 'win32' && <StyledBetaLabel />} + {window.env.platform === 'win32' && <StyledBetaLabel />} {messages.pgettext('advanced-settings-view', 'Split tunneling')} </Cell.Label> <Cell.Icon height={12} width={7} source="icon-chevron" /> diff --git a/gui/src/renderer/components/CustomScrollbars.tsx b/gui/src/renderer/components/CustomScrollbars.tsx index 2b5119839c..3dacd26626 100644 --- a/gui/src/renderer/components/CustomScrollbars.tsx +++ b/gui/src/renderer/components/CustomScrollbars.tsx @@ -47,7 +47,7 @@ interface IScrollbarUpdateContext { export default class CustomScrollbars extends React.Component<IProps, IState> { public static defaultProps: IProps = { // auto-hide on macOS by default - autoHide: window.platform === 'darwin', + autoHide: window.env.platform === 'darwin', trackPadding: { x: 2, y: 2 }, }; diff --git a/gui/src/renderer/components/HeaderBar.tsx b/gui/src/renderer/components/HeaderBar.tsx index f3a69f5af2..0dcd2e7ea9 100644 --- a/gui/src/renderer/components/HeaderBar.tsx +++ b/gui/src/renderer/components/HeaderBar.tsx @@ -31,7 +31,7 @@ interface IHeaderBarContainerProps { const HeaderBarContainer = styled.header({}, (props: IHeaderBarContainerProps) => ({ padding: '12px 16px', - paddingTop: window.platform === 'darwin' && !props.unpinnedWindow ? '24px' : '12px', + paddingTop: window.env.platform === 'darwin' && !props.unpinnedWindow ? '24px' : '12px', backgroundColor: headerBarStyleColorMap[props.barStyle ?? HeaderBarStyle.default], })); diff --git a/gui/src/renderer/components/NavigationBarStyles.tsx b/gui/src/renderer/components/NavigationBarStyles.tsx index f8ac87f3e2..52aefe323d 100644 --- a/gui/src/renderer/components/NavigationBarStyles.tsx +++ b/gui/src/renderer/components/NavigationBarStyles.tsx @@ -20,7 +20,7 @@ export const StyledNavigationItems = styled.div({ export const StyledNavigationBar = styled.nav((props: { unpinnedWindow: boolean }) => ({ flex: 0, padding: '12px', - paddingTop: window.platform === 'darwin' && !props.unpinnedWindow ? '24px' : '12px', + paddingTop: window.env.platform === 'darwin' && !props.unpinnedWindow ? '24px' : '12px', })); export const StyledNavigationBarWrapper = styled.div({ diff --git a/gui/src/renderer/components/PlatformWindow.tsx b/gui/src/renderer/components/PlatformWindow.tsx index 83aa7b3f7f..9b18f5f726 100644 --- a/gui/src/renderer/components/PlatformWindow.tsx +++ b/gui/src/renderer/components/PlatformWindow.tsx @@ -10,7 +10,7 @@ interface IPlatformWindowProps { export default styled.div({}, (props: IPlatformWindowProps) => { let mask: string | undefined; - if (window.platform === 'darwin' && !props.unpinnedWindow) { + if (window.env.platform === 'darwin' && !props.unpinnedWindow) { const arrowPositionCss = props.arrowPosition !== undefined ? `${props.arrowPosition - ARROW_WIDTH * 0.5}px` : '50%'; diff --git a/gui/src/renderer/components/Preferences.tsx b/gui/src/renderer/components/Preferences.tsx index c91330aee0..ebaa2da359 100644 --- a/gui/src/renderer/components/Preferences.tsx +++ b/gui/src/renderer/components/Preferences.tsx @@ -225,8 +225,8 @@ export default class Preferences extends React.Component<IProps> { </Cell.Footer> </AriaInputGroup> - {(window.platform === 'win32' || - (window.platform === 'darwin' && window.runningInDevelopment)) && ( + {(window.env.platform === 'win32' || + (window.env.platform === 'darwin' && window.env.development)) && ( <AriaInputGroup> <Cell.Container> <AriaLabel> diff --git a/gui/src/renderer/components/SplitTunnelingSettings.tsx b/gui/src/renderer/components/SplitTunnelingSettings.tsx index d6f2bbbdcf..30948dae35 100644 --- a/gui/src/renderer/components/SplitTunnelingSettings.tsx +++ b/gui/src/renderer/components/SplitTunnelingSettings.tsx @@ -102,13 +102,13 @@ interface IPlatformSplitTunnelingSettingsProps { } function PlatformSpecificSplitTunnelingSettings(props: IPlatformSplitTunnelingSettingsProps) { - switch (window.platform) { + switch (window.env.platform) { case 'linux': return <LinuxSplitTunnelingSettings {...props} />; case 'win32': return <WindowsSplitTunnelingSettings {...props} />; default: - throw new Error(`Split tunneling not implemented on ${window.platform}`); + throw new Error(`Split tunneling not implemented on ${window.env.platform}`); } } diff --git a/gui/src/renderer/context.tsx b/gui/src/renderer/context.tsx index d4b20daeb1..341ddda893 100644 --- a/gui/src/renderer/context.tsx +++ b/gui/src/renderer/context.tsx @@ -6,7 +6,7 @@ export interface IAppContext { } export const AppContext = React.createContext<IAppContext | undefined>(undefined); -if (window.runningInDevelopment) { +if (window.env.development) { AppContext.displayName = 'AppContext'; } @@ -34,7 +34,7 @@ export default function withAppContext<Props>(BaseComponent: React.ComponentType ); }; - if (window.runningInDevelopment) { + if (window.env.development) { wrappedComponent.displayName = 'withAppContext(' + (BaseComponent.displayName || BaseComponent.name) + ')'; } diff --git a/gui/src/renderer/preload.ts b/gui/src/renderer/preload.ts index 5c44b71eeb..4df178fcc2 100644 --- a/gui/src/renderer/preload.ts +++ b/gui/src/renderer/preload.ts @@ -2,3 +2,8 @@ import { contextBridge } from 'electron'; import { IpcRendererEventChannel } from './lib/ipc-event-channel'; contextBridge.exposeInMainWorld('ipc', IpcRendererEventChannel); + +contextBridge.exposeInMainWorld('env', { + development: process.env.NODE_ENV === 'development', + platform: process.platform, +}); diff --git a/gui/src/renderer/redux/settings/reducers.ts b/gui/src/renderer/redux/settings/reducers.ts index 1b07e805fa..8f61721a6e 100644 --- a/gui/src/renderer/redux/settings/reducers.ts +++ b/gui/src/renderer/redux/settings/reducers.ts @@ -149,7 +149,7 @@ const initialState: ISettingsReduxState = { autoConnect: true, monochromaticIcon: false, startMinimized: false, - unpinnedWindow: window.platform !== 'win32' && window.platform !== 'darwin', + unpinnedWindow: window.env.platform !== 'win32' && window.env.platform !== 'darwin', browsedForSplitTunnelingApplications: [], }, relaySettings: { diff --git a/gui/src/renderer/redux/store.ts b/gui/src/renderer/redux/store.ts index 92d85e4dbe..3579978425 100644 --- a/gui/src/renderer/redux/store.ts +++ b/gui/src/renderer/redux/store.ts @@ -32,16 +32,7 @@ export type ReduxAction = export type ReduxStore = ReturnType<typeof configureStore>; export type ReduxDispatch = Dispatch<ReduxAction>; -export default function configureStore(initialState?: IReduxState) { - const actionCreators = { - ...accountActions, - ...connectionActions, - ...settingsActions, - ...supportActions, - ...versionActions, - ...userInterfaceActions, - }; - +export default function configureStore() { const reducers = { account: accountReducer, connection: connectionReducer, @@ -51,21 +42,23 @@ export default function configureStore(initialState?: IReduxState) { userInterface: userInterfaceReducer, }; - const composeEnhancers: typeof compose = (() => { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const reduxCompose = window && (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__; - if (window.runningInDevelopment && reduxCompose) { - return reduxCompose({ actionCreators }); - } - return compose; - })(); - - const enhancer = composeEnhancers(); const rootReducer = combineReducers(reducers); - if (initialState) { - return createStore(rootReducer, initialState, enhancer); - } else { - return createStore(rootReducer, enhancer); - } + return createStore(rootReducer, composeEnhancers()); +} + +function composeEnhancers(): typeof compose { + const actionCreators = { + ...accountActions, + ...connectionActions, + ...settingsActions, + ...supportActions, + ...versionActions, + ...userInterfaceActions, + }; + + return window.env.development + ? // eslint-disable-next-line @typescript-eslint/no-explicit-any + (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({ actionCreators })() + : compose(); } diff --git a/gui/src/shared/ipc-schema.ts b/gui/src/shared/ipc-schema.ts index e2b3ebbed3..f463765a32 100644 --- a/gui/src/shared/ipc-schema.ts +++ b/gui/src/shared/ipc-schema.ts @@ -54,8 +54,6 @@ export interface IAppStateSnapshot { guiSettings: IGuiSettingsState; wireguardPublicKey?: IWireguardPublicKey; translations: ITranslations; - platform: NodeJS.Platform; - runningInDevelopment: boolean; windowsSplitTunnelingApplications?: IApplication[]; } diff --git a/gui/src/shared/notifications/error.ts b/gui/src/shared/notifications/error.ts index 97e5e2ce93..066c9c333e 100644 --- a/gui/src/shared/notifications/error.ts +++ b/gui/src/shared/notifications/error.ts @@ -66,7 +66,7 @@ export class ErrorNotificationProvider function getMessage(errorDetails: IErrorState, accountExpiry?: string): string { if (errorDetails.blockFailure) { if (errorDetails.cause.reason === 'set_firewall_policy_error') { - switch (process.platform ?? window.platform) { + switch (process.platform ?? window.env.platform) { case 'win32': return messages.pgettext( 'notifications', @@ -107,7 +107,7 @@ function getMessage(errorDetails: IErrorState, accountExpiry?: string): string { 'Could not configure IPv6. Disable it in the app or enable it on your device.', ); case 'set_firewall_policy_error': - switch (process.platform ?? window.platform) { + switch (process.platform ?? window.env.platform) { case 'win32': return messages.pgettext( 'notifications', diff --git a/gui/src/shared/notifications/no-valid-key.ts b/gui/src/shared/notifications/no-valid-key.ts index 8da145a1f0..6de28ab8df 100644 --- a/gui/src/shared/notifications/no-valid-key.ts +++ b/gui/src/shared/notifications/no-valid-key.ts @@ -14,7 +14,8 @@ export class NoValidKeyNotificationProvider implements InAppNotificationProvider public mayDisplay() { const usingWireGuard = this.context.tunnelProtocol === 'wireguard' || - (this.context.tunnelProtocol === 'any' && (process.platform ?? window.platform) !== 'win32'); + (this.context.tunnelProtocol === 'any' && + (process.platform ?? window.env.platform) !== 'win32'); const keyInvalid = this.context.wireGuardKey.type === 'key-not-set' || this.context.wireGuardKey.type === 'too-many-keys' || diff --git a/gui/tasks/dev-server.js b/gui/tasks/dev-server.js deleted file mode 100644 index 067174ab17..0000000000 --- a/gui/tasks/dev-server.js +++ /dev/null @@ -1,40 +0,0 @@ -const serverFactory = require('spa-server'); - -function startWebServer(done) { - serverFactory - .create({ - path: './build', - port: 8080, - middleware: [correctWorkingDirectory], - }) - .start(done); -} - -function correctWorkingDirectory(request, response, next) { - if (request.url === '/src/renderer/index.js') { - const write = response.write.bind(response); - response.write = (data) => { - let s = data.toString(); - - // Add code that changes to the correct working directory after `"use strict";` which is - // located on the first line of the source file. - const index = s.indexOf('\n'); - - if (index !== -1) { - const insertionIndex = index + 1; - s = - s.slice(0, insertionIndex) + - 'try{process.chdir("build/src/renderer")}catch(e){}\n' + - s.slice(insertionIndex); - } - - write(s); - }; - } - - next(); -} - -startWebServer.displayName = 'start-dev-server'; - -exports.start = startWebServer; diff --git a/gui/tasks/scripts.js b/gui/tasks/scripts.js index eda057d983..ec38c7c3fa 100644 --- a/gui/tasks/scripts.js +++ b/gui/tasks/scripts.js @@ -82,6 +82,7 @@ function makeBrowserifyPreload(debug) { let stream = browserify({ entries: './build/src/renderer/preload.js', debug, + detectGlobals: false, }) .exclude('electron') .bundle() diff --git a/gui/tasks/watch.js b/gui/tasks/watch.js index 543e5f7b08..7badef949e 100644 --- a/gui/tasks/watch.js +++ b/gui/tasks/watch.js @@ -1,6 +1,5 @@ const { parallel, series, watch } = require('gulp'); const electron = require('./electron'); -const devServer = require('./dev-server'); const assets = require('./assets'); const scripts = require('./scripts'); @@ -39,7 +38,6 @@ exports.start = series( // set up hotreload, run electron and begin watching filesystem for changes, after the first // successful build series( - devServer.start, electron.start, parallel(watchMainScripts, watchCss, watchConfig, watchHtml, watchStaticAssets), ), diff --git a/gui/types/global/index.d.ts b/gui/types/global/index.d.ts index 9065f4d8a5..fe60baf4ca 100644 --- a/gui/types/global/index.d.ts +++ b/gui/types/global/index.d.ts @@ -3,7 +3,6 @@ import { IpcRendererEventChannel } from '../../src/renderer/lib/ipc-event-channe declare global { interface Window { ipc: typeof IpcRendererEventChannel; - platform: NodeJS.Platform; - runningInDevelopment: boolean; + env: { platform: NodeJS.Platform; development: boolean }; } } |
