diff options
| author | Oskar Nyberg <oskar@mullvad.net> | 2021-09-16 12:05:10 +0200 |
|---|---|---|
| committer | Oskar Nyberg <oskar@mullvad.net> | 2021-09-16 12:05:10 +0200 |
| commit | c5fcaaf8129325d39e5fa9a6b83984a285a03f1f (patch) | |
| tree | bfbcbd8f3bc40842fa62ac019c7517a91278ec1e /gui | |
| parent | 4b9a2c43417d4ea5284d08dc8459589a91093536 (diff) | |
| parent | 4cea60889a5a5cd9cefc76df2afc2af612021e7e (diff) | |
| download | mullvadvpn-c5fcaaf8129325d39e5fa9a6b83984a285a03f1f.tar.xz mullvadvpn-c5fcaaf8129325d39e5fa9a6b83984a285a03f1f.zip | |
Merge branch 'update-typescript'
Diffstat (limited to 'gui')
21 files changed, 375 insertions, 208 deletions
diff --git a/gui/package-lock.json b/gui/package-lock.json index b6e09dc79b..b8c1925256 100644 --- a/gui/package-lock.json +++ b/gui/package-lock.json @@ -49,8 +49,8 @@ "@types/styled-components": "^5.1.4", "@types/topojson-specification": "^1.0.1", "@types/uuid": "^3.4.4", - "@typescript-eslint/eslint-plugin": "^4.25.0", - "@typescript-eslint/parser": "^4.25.0", + "@typescript-eslint/eslint-plugin": "^4.31.0", + "@typescript-eslint/parser": "^4.31.0", "browserify": "^17.0.0", "chai": "^4.2.0", "chai-as-promised": "^7.1.1", @@ -73,9 +73,9 @@ "prettier": "^2.2.1", "semver": "^7.3.2", "sinon": "^7.1.1", - "ts-node": "^10.0.0", + "ts-node": "^10.2.1", "tsc-watch": "^4.2.9", - "typescript": "^4.3.2", + "typescript": "^4.4.3", "vinyl-buffer": "^1.0.1", "vinyl-source-stream": "^2.0.0" }, @@ -242,6 +242,27 @@ "to-fast-properties": "^2.0.0" } }, + "node_modules/@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.6.1.tgz", + "integrity": "sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-consumer": "0.8.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@develar/schema-utils": { "version": "2.6.5", "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", @@ -844,9 +865,9 @@ "dev": true }, "node_modules/@tsconfig/node16": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.1.tgz", - "integrity": "sha512-FTgBI767POY/lKNDNbIzgAX6miIDBs6NTCbdlDb8TrWovHsSvaVIZDlTqym29C6UqhzwcJx4CYr+AlrMywA0cA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", "dev": true }, "node_modules/@types/chai": { @@ -952,9 +973,9 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", - "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", "dev": true }, "node_modules/@types/minimatch": { @@ -1136,19 +1157,18 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.25.0.tgz", - "integrity": "sha512-Qfs3dWkTMKkKwt78xp2O/KZQB8MPS1UQ5D3YW2s6LQWBE1074BE+Rym+b1pXZIX3M3fSvPUDaCvZLKV2ylVYYQ==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.31.0.tgz", + "integrity": "sha512-iPKZTZNavAlOhfF4gymiSuUkgLne/nh5Oz2/mdiUmuZVD42m9PapnCnzjxuDsnpnbH3wT5s2D8bw6S39TC6GNw==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "4.25.0", - "@typescript-eslint/scope-manager": "4.25.0", - "debug": "^4.1.1", + "@typescript-eslint/experimental-utils": "4.31.0", + "@typescript-eslint/scope-manager": "4.31.0", + "debug": "^4.3.1", "functional-red-black-tree": "^1.0.1", - "lodash": "^4.17.15", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -1186,17 +1206,17 @@ "dev": true }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.25.0.tgz", - "integrity": "sha512-f0doRE76vq7NEEU0tw+ajv6CrmPelw5wLoaghEHkA2dNLFb3T/zJQqGPQ0OYt5XlZaS13MtnN+GTPCuUVg338w==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.31.0.tgz", + "integrity": "sha512-Hld+EQiKLMppgKKkdUsLeVIeEOrwKc2G983NmznY/r5/ZtZCDvIOXnXtwqJIgYz/ymsy7n7RGvMyrzf1WaSQrw==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.25.0", - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/typescript-estree": "4.25.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.31.0", + "@typescript-eslint/types": "4.31.0", + "@typescript-eslint/typescript-estree": "4.31.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -1209,16 +1229,34 @@ "eslint": "*" } }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, "node_modules/@typescript-eslint/parser": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.25.0.tgz", - "integrity": "sha512-OZFa1SKyEJpAhDx8FcbWyX+vLwh7OEtzoo2iQaeWwxucyfbi0mT4DijbOSsTgPKzGHr6GrF2V5p/CEpUH/VBxg==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.31.0.tgz", + "integrity": "sha512-oWbzvPh5amMuTmKaf1wp0ySxPt2ZXHnFQBN2Szu1O//7LmOvgaKTCIDNLK2NvzpmVd5A2M/1j/rujBqO37hj3w==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "4.25.0", - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/typescript-estree": "4.25.0", - "debug": "^4.1.1" + "@typescript-eslint/scope-manager": "4.31.0", + "@typescript-eslint/types": "4.31.0", + "@typescript-eslint/typescript-estree": "4.31.0", + "debug": "^4.3.1" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -1255,13 +1293,13 @@ "dev": true }, "node_modules/@typescript-eslint/scope-manager": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.25.0.tgz", - "integrity": "sha512-2NElKxMb/0rya+NJG1U71BuNnp1TBd1JgzYsldsdA83h/20Tvnf/HrwhiSlNmuq6Vqa0EzidsvkTArwoq+tH6w==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.31.0.tgz", + "integrity": "sha512-LJ+xtl34W76JMRLjbaQorhR0hfRAlp3Lscdiz9NeI/8i+q0hdBZ7BsiYieLoYWqy+AnRigaD3hUwPFugSzdocg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/visitor-keys": "4.25.0" + "@typescript-eslint/types": "4.31.0", + "@typescript-eslint/visitor-keys": "4.31.0" }, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" @@ -1272,9 +1310,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.25.0.tgz", - "integrity": "sha512-+CNINNvl00OkW6wEsi32wU5MhHti2J25TJsJJqgQmJu3B3dYDBcmOxcE5w9cgoM13TrdE/5ND2HoEnBohasxRQ==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.31.0.tgz", + "integrity": "sha512-9XR5q9mk7DCXgXLS7REIVs+BaAswfdHhx91XqlJklmqWpTALGjygWVIb/UnLh4NWhfwhR5wNe1yTyCInxVhLqQ==", "dev": true, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" @@ -1285,18 +1323,18 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.25.0.tgz", - "integrity": "sha512-1B8U07TGNAFMxZbSpF6jqiDs1cVGO0izVkf18Q/SPcUAc9LhHxzvSowXDTvkHMWUVuPpagupaW63gB6ahTXVlg==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.0.tgz", + "integrity": "sha512-QHl2014t3ptg+xpmOSSPn5hm4mY8D4s97ftzyk9BZ8RxYQ3j73XcwuijnJ9cMa6DO4aLXeo8XS3z1omT9LA/Eg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/visitor-keys": "4.25.0", - "debug": "^4.1.1", - "globby": "^11.0.1", + "@typescript-eslint/types": "4.31.0", + "@typescript-eslint/visitor-keys": "4.31.0", + "debug": "^4.3.1", + "globby": "^11.0.3", "is-glob": "^4.0.1", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -1312,9 +1350,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -1335,12 +1373,12 @@ "dev": true }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.25.0.tgz", - "integrity": "sha512-AmkqV9dDJVKP/TcZrbf6s6i1zYXt5Hl8qOLrRDTFfRNae4+LB8A4N3i+FLZPW85zIxRy39BgeWOfMS3HoH5ngg==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.0.tgz", + "integrity": "sha512-HUcRp2a9I+P21+O21yu3ezv3GEPGjyGiXoEUQwZXjR8UxRApGeLyWH4ZIIUSalE28aG4YsV6GjtaAVB3QKOu0w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.25.0", + "@typescript-eslint/types": "4.31.0", "eslint-visitor-keys": "^2.0.0" }, "engines": { @@ -6986,6 +7024,9 @@ }, "engines": { "node": ">= 8" + }, + "peerDependencies": { + "typescript": "~2.7.1 || >=2.8.0-dev || >=2.9.0-dev || ~3.0.0 || >=3.0.0-dev || >=3.1.0-dev || >= 3.2.0-dev || >= 3.3.0-dev" } }, "node_modules/gulp-typescript/node_modules/ansi-colors": { @@ -12583,20 +12624,22 @@ } }, "node_modules/ts-node": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.0.0.tgz", - "integrity": "sha512-ROWeOIUvfFbPZkoDis0L/55Fk+6gFQNZwwKPLinacRl6tsxstTF1DbAcLKkovwnpKMVvOMHP1TIbnwXwtLg1gg==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.2.1.tgz", + "integrity": "sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw==", "dev": true, "dependencies": { + "@cspotcode/source-map-support": "0.6.1", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.1", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", "arg": "^4.1.0", "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "source-map-support": "^0.5.17", "yn": "3.1.1" }, "bin": { @@ -12610,8 +12653,8 @@ "node": ">=12.0.0" }, "peerDependencies": { - "@swc/core": ">=1.2.45", - "@swc/wasm": ">=1.2.45", + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", "@types/node": "*", "typescript": ">=2.7" }, @@ -12624,6 +12667,27 @@ } } }, + "node_modules/ts-node/node_modules/acorn": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", + "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ts-node/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/ts-node/node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -12739,15 +12803,18 @@ "dev": true }, "node_modules/tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "dependencies": { "tslib": "^1.8.1" }, "engines": { "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, "node_modules/tty-browserify": { @@ -12821,9 +12888,9 @@ } }, "node_modules/typescript": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.2.tgz", - "integrity": "sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", + "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -14032,6 +14099,21 @@ "to-fast-properties": "^2.0.0" } }, + "@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "dev": true + }, + "@cspotcode/source-map-support": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.6.1.tgz", + "integrity": "sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg==", + "dev": true, + "requires": { + "@cspotcode/source-map-consumer": "0.8.0" + } + }, "@develar/schema-utils": { "version": "2.6.5", "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", @@ -14496,9 +14578,9 @@ "dev": true }, "@tsconfig/node16": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.1.tgz", - "integrity": "sha512-FTgBI767POY/lKNDNbIzgAX6miIDBs6NTCbdlDb8TrWovHsSvaVIZDlTqym29C6UqhzwcJx4CYr+AlrMywA0cA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", "dev": true }, "@types/chai": { @@ -14604,9 +14686,9 @@ } }, "@types/json-schema": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", - "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", "dev": true }, "@types/minimatch": { @@ -14788,19 +14870,18 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.25.0.tgz", - "integrity": "sha512-Qfs3dWkTMKkKwt78xp2O/KZQB8MPS1UQ5D3YW2s6LQWBE1074BE+Rym+b1pXZIX3M3fSvPUDaCvZLKV2ylVYYQ==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.31.0.tgz", + "integrity": "sha512-iPKZTZNavAlOhfF4gymiSuUkgLne/nh5Oz2/mdiUmuZVD42m9PapnCnzjxuDsnpnbH3wT5s2D8bw6S39TC6GNw==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.25.0", - "@typescript-eslint/scope-manager": "4.25.0", - "debug": "^4.1.1", + "@typescript-eslint/experimental-utils": "4.31.0", + "@typescript-eslint/scope-manager": "4.31.0", + "debug": "^4.3.1", "functional-red-black-tree": "^1.0.1", - "lodash": "^4.17.15", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "dependencies": { "debug": { @@ -14821,29 +14902,40 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.25.0.tgz", - "integrity": "sha512-f0doRE76vq7NEEU0tw+ajv6CrmPelw5wLoaghEHkA2dNLFb3T/zJQqGPQ0OYt5XlZaS13MtnN+GTPCuUVg338w==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.31.0.tgz", + "integrity": "sha512-Hld+EQiKLMppgKKkdUsLeVIeEOrwKc2G983NmznY/r5/ZtZCDvIOXnXtwqJIgYz/ymsy7n7RGvMyrzf1WaSQrw==", "dev": true, "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.25.0", - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/typescript-estree": "4.25.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.31.0", + "@typescript-eslint/types": "4.31.0", + "@typescript-eslint/typescript-estree": "4.31.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + } } }, "@typescript-eslint/parser": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.25.0.tgz", - "integrity": "sha512-OZFa1SKyEJpAhDx8FcbWyX+vLwh7OEtzoo2iQaeWwxucyfbi0mT4DijbOSsTgPKzGHr6GrF2V5p/CEpUH/VBxg==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.31.0.tgz", + "integrity": "sha512-oWbzvPh5amMuTmKaf1wp0ySxPt2ZXHnFQBN2Szu1O//7LmOvgaKTCIDNLK2NvzpmVd5A2M/1j/rujBqO37hj3w==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.25.0", - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/typescript-estree": "4.25.0", - "debug": "^4.1.1" + "@typescript-eslint/scope-manager": "4.31.0", + "@typescript-eslint/types": "4.31.0", + "@typescript-eslint/typescript-estree": "4.31.0", + "debug": "^4.3.1" }, "dependencies": { "debug": { @@ -14864,40 +14956,40 @@ } }, "@typescript-eslint/scope-manager": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.25.0.tgz", - "integrity": "sha512-2NElKxMb/0rya+NJG1U71BuNnp1TBd1JgzYsldsdA83h/20Tvnf/HrwhiSlNmuq6Vqa0EzidsvkTArwoq+tH6w==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.31.0.tgz", + "integrity": "sha512-LJ+xtl34W76JMRLjbaQorhR0hfRAlp3Lscdiz9NeI/8i+q0hdBZ7BsiYieLoYWqy+AnRigaD3hUwPFugSzdocg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/visitor-keys": "4.25.0" + "@typescript-eslint/types": "4.31.0", + "@typescript-eslint/visitor-keys": "4.31.0" } }, "@typescript-eslint/types": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.25.0.tgz", - "integrity": "sha512-+CNINNvl00OkW6wEsi32wU5MhHti2J25TJsJJqgQmJu3B3dYDBcmOxcE5w9cgoM13TrdE/5ND2HoEnBohasxRQ==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.31.0.tgz", + "integrity": "sha512-9XR5q9mk7DCXgXLS7REIVs+BaAswfdHhx91XqlJklmqWpTALGjygWVIb/UnLh4NWhfwhR5wNe1yTyCInxVhLqQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.25.0.tgz", - "integrity": "sha512-1B8U07TGNAFMxZbSpF6jqiDs1cVGO0izVkf18Q/SPcUAc9LhHxzvSowXDTvkHMWUVuPpagupaW63gB6ahTXVlg==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.0.tgz", + "integrity": "sha512-QHl2014t3ptg+xpmOSSPn5hm4mY8D4s97ftzyk9BZ8RxYQ3j73XcwuijnJ9cMa6DO4aLXeo8XS3z1omT9LA/Eg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/visitor-keys": "4.25.0", - "debug": "^4.1.1", - "globby": "^11.0.1", + "@typescript-eslint/types": "4.31.0", + "@typescript-eslint/visitor-keys": "4.31.0", + "debug": "^4.3.1", + "globby": "^11.0.3", "is-glob": "^4.0.1", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "dependencies": { "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -14912,12 +15004,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.25.0.tgz", - "integrity": "sha512-AmkqV9dDJVKP/TcZrbf6s6i1zYXt5Hl8qOLrRDTFfRNae4+LB8A4N3i+FLZPW85zIxRy39BgeWOfMS3HoH5ngg==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.0.tgz", + "integrity": "sha512-HUcRp2a9I+P21+O21yu3ezv3GEPGjyGiXoEUQwZXjR8UxRApGeLyWH4ZIIUSalE28aG4YsV6GjtaAVB3QKOu0w==", "dev": true, "requires": { - "@typescript-eslint/types": "4.25.0", + "@typescript-eslint/types": "4.31.0", "eslint-visitor-keys": "^2.0.0" } }, @@ -24098,23 +24190,37 @@ } }, "ts-node": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.0.0.tgz", - "integrity": "sha512-ROWeOIUvfFbPZkoDis0L/55Fk+6gFQNZwwKPLinacRl6tsxstTF1DbAcLKkovwnpKMVvOMHP1TIbnwXwtLg1gg==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.2.1.tgz", + "integrity": "sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw==", "dev": true, "requires": { + "@cspotcode/source-map-support": "0.6.1", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.1", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", "arg": "^4.1.0", "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "source-map-support": "^0.5.17", "yn": "3.1.1" }, "dependencies": { + "acorn": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", + "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "dev": true + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -24201,9 +24307,9 @@ "dev": true }, "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -24265,9 +24371,9 @@ } }, "typescript": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.2.tgz", - "integrity": "sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", + "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", "dev": true }, "uglify-js": { diff --git a/gui/package.json b/gui/package.json index 476b460ce8..98e1380903 100644 --- a/gui/package.json +++ b/gui/package.json @@ -55,8 +55,8 @@ "@types/styled-components": "^5.1.4", "@types/topojson-specification": "^1.0.1", "@types/uuid": "^3.4.4", - "@typescript-eslint/eslint-plugin": "^4.25.0", - "@typescript-eslint/parser": "^4.25.0", + "@typescript-eslint/eslint-plugin": "^4.31.0", + "@typescript-eslint/parser": "^4.31.0", "browserify": "^17.0.0", "chai": "^4.2.0", "chai-as-promised": "^7.1.1", @@ -79,9 +79,9 @@ "prettier": "^2.2.1", "semver": "^7.3.2", "sinon": "^7.1.1", - "ts-node": "^10.0.0", + "ts-node": "^10.2.1", "tsc-watch": "^4.2.9", - "typescript": "^4.3.2", + "typescript": "^4.4.3", "vinyl-buffer": "^1.0.1", "vinyl-source-stream": "^2.0.0" }, diff --git a/gui/src/main/account-data-cache.ts b/gui/src/main/account-data-cache.ts index d55b511feb..031ffb50bd 100644 --- a/gui/src/main/account-data-cache.ts +++ b/gui/src/main/account-data-cache.ts @@ -111,7 +111,8 @@ export default class AccountDataCache { this.waitStrategy.reset(); this.performingFetch = false; } - } catch (error) { + } catch (e) { + const error = e as Error; if (this.currentAccount === accountToken) { this.handleFetchError(accountToken, error); this.performingFetch = false; diff --git a/gui/src/main/autostart.ts b/gui/src/main/autostart.ts index 8c77ba3b6a..d5fdf39685 100644 --- a/gui/src/main/autostart.ts +++ b/gui/src/main/autostart.ts @@ -15,7 +15,8 @@ export function getOpenAtLogin() { fs.accessSync(autostartFilePath); return true; - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to check autostart file: ${error.message}`); return false; } @@ -37,7 +38,8 @@ export async function setOpenAtLogin(openAtLogin: boolean) { } else { await fs.promises.unlink(autostartFilePath); } - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to set auto-start: ${error.message}`); } } else { @@ -59,7 +61,7 @@ const createDirIfNecessary = async (directory: string) => { let stat; try { stat = await fs.promises.stat(directory); - } catch (error) { + } catch { // Path doesn't exist, so it has to be created return fs.promises.mkdir(directory); } @@ -69,7 +71,8 @@ const createDirIfNecessary = async (directory: string) => { // Try to remove existing file and replace it with a new directory try { await fs.promises.unlink(directory); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to remove path before creating a directory for it: ${error.message}`); } diff --git a/gui/src/main/daemon-rpc.ts b/gui/src/main/daemon-rpc.ts index 7464e0b5c9..0619e873ca 100644 --- a/gui/src/main/daemon-rpc.ts +++ b/gui/src/main/daemon-rpc.ts @@ -183,7 +183,8 @@ export class DaemonRpc { ); const expiry = response.getExpiry()!.toDate().toISOString(); return { expiry }; - } catch (error) { + } catch (e) { + const error = e as grpc.ServiceError; if (error.code) { switch (error.code) { case grpc.status.UNAUTHENTICATED: @@ -223,7 +224,8 @@ export class DaemonRpc { secondsAdded, newExpiry, }; - } catch (error) { + } catch (e) { + const error = e as grpc.ServiceError; if (error.code) { switch (error.code) { case grpc.status.NOT_FOUND: @@ -405,8 +407,9 @@ export class DaemonRpc { try { const daemonEvent = convertFromDaemonEvent(data); listener.onEvent(daemonEvent); - } catch (err) { - listener.onError(err); + } catch (e) { + const error = e as Error; + listener.onError(error); } }); @@ -557,7 +560,8 @@ export class DaemonRpc { subscription.removeAllListeners('error'); try { subscription.cancel(); - } catch (error) { + } catch (e) { + const error = e as grpc.ServiceError; if (error.code !== grpc.status.CANCELLED) { throw error; } diff --git a/gui/src/main/gui-settings.ts b/gui/src/main/gui-settings.ts index 57dc754cd8..940dd7215c 100644 --- a/gui/src/main/gui-settings.ts +++ b/gui/src/main/gui-settings.ts @@ -102,7 +102,8 @@ export default class GuiSettings { ...defaultSettings, ...this.validateSettings(rawJson), }; - } catch (error) { + } catch (e) { + const error = e as Error & { code?: string }; // Read settings if the file exists, otherwise write the default settings to it. if (error.code === 'ENOENT') { log.debug('Creating gui-settings file and writing the default settings to it'); diff --git a/gui/src/main/index.ts b/gui/src/main/index.ts index 34aa60ce6d..3421e72894 100644 --- a/gui/src/main/index.ts +++ b/gui/src/main/index.ts @@ -334,7 +334,8 @@ class ApplicationMain { log.addOutput(new FileOutput(LogLevel.debug, mainLogPath)); this.rendererLog.addOutput(new FileOutput(LogLevel.debug, rendererLogPath)); } catch (e) { - console.error('Failed to initialize logging:', e); + const error = e as Error; + console.error('Failed to initialize logging:', error); } } @@ -378,7 +379,8 @@ class ApplicationMain { await this.daemonRpc.disconnectTunnel(); log.info('Disconnected the tunnel'); } catch (e) { - log.error(`Failed to disconnect the tunnel: ${e.message}`); + const error = e as Error; + log.error(`Failed to disconnect the tunnel: ${error.message}`); } } else { log.info('Cannot close the tunnel because there is no active connection to daemon.'); @@ -392,7 +394,8 @@ class ApplicationMain { log.info('Unsubscribed from the daemon events'); } } catch (e) { - log.error(`Failed to unsubscribe from daemon events: ${e.message}`); + const error = e as Error; + log.error(`Failed to unsubscribe from daemon events: ${error.message}`); } // The window is not closable on macOS to be able to hide the titlebar and workaround @@ -410,7 +413,8 @@ class ApplicationMain { try { logger?.dispose(); } catch (e) { - console.error('Failed to dispose logger:', e); + const error = e as Error; + console.error('Failed to dispose logger:', error); } } } @@ -522,7 +526,8 @@ class ApplicationMain { const filePath = path.resolve(path.join(__dirname, '../renderer/index.html')); try { await this.windowController.window.loadFile(filePath); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to load index file: ${error.message}`); } @@ -543,7 +548,8 @@ class ApplicationMain { // subscribe to events try { this.daemonEventListener = this.subscribeEvents(); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to subscribe: ${error.message}`); return this.recoverFromBootstrapError(error); @@ -552,7 +558,8 @@ class ApplicationMain { // fetch account history try { this.setAccountHistory(await this.daemonRpc.getAccountHistory()); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to fetch the account history: ${error.message}`); return this.recoverFromBootstrapError(error); @@ -561,7 +568,8 @@ class ApplicationMain { // fetch the tunnel state try { this.setTunnelState(await this.daemonRpc.getState()); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to fetch the tunnel state: ${error.message}`); return this.recoverFromBootstrapError(error); @@ -570,7 +578,8 @@ class ApplicationMain { // fetch settings try { this.setSettings(await this.daemonRpc.getSettings()); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to fetch settings: ${error.message}`); return this.recoverFromBootstrapError(error); @@ -587,7 +596,8 @@ class ApplicationMain { this.settings.relaySettings, this.settings.bridgeState, ); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to fetch relay locations: ${error.message}`); return this.recoverFromBootstrapError(error); @@ -596,7 +606,8 @@ class ApplicationMain { // fetch the daemon's version try { this.setDaemonVersion(await this.daemonRpc.getCurrentVersion()); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to fetch the daemon's version: ${error.message}`); return this.recoverFromBootstrapError(error); @@ -1005,7 +1016,8 @@ class ApplicationMain { private async fetchLatestVersion() { try { this.setLatestVersion(await this.daemonRpc.getVersionInfo()); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to request the version info: ${error.message}`); } } @@ -1354,7 +1366,8 @@ class ApplicationMain { private async createNewAccount(): Promise<string> { try { return await this.daemonRpc.createNewAccount(); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to create account: ${error.message}`); throw error; } @@ -1378,7 +1391,8 @@ class ApplicationMain { AUTO_CONNECT_FALLBACK_DELAY, ); } - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to login: ${error.message}`); this.autoConnectOnWireguardKeyEvent = false; @@ -1411,7 +1425,8 @@ class ApplicationMain { log.info('Autoconnect the tunnel'); await this.daemonRpc.connectTunnel(); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to autoconnect the tunnel: ${error.message}`); } } else { @@ -1428,7 +1443,8 @@ class ApplicationMain { this.autoConnectFallbackScheduler.cancel(); this.accountExpiryNotificationScheduler.cancel(); - } catch (error) { + } catch (e) { + const error = e as Error; log.info(`Failed to logout: ${error.message}`); throw error; @@ -1508,7 +1524,8 @@ class ApplicationMain { private async updateAccountHistory(): Promise<void> { try { this.setAccountHistory(await this.daemonRpc.getAccountHistory()); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to fetch the account history: ${error.message}`); } } @@ -1516,7 +1533,8 @@ class ApplicationMain { private async fetchWireguardKey(): Promise<void> { try { this.setWireguardKey(await this.daemonRpc.getWireguardKey()); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to fetch wireguard key: ${error.message}`); } } @@ -1537,7 +1555,8 @@ class ApplicationMain { } this.updateDaemonsAutoConnect(); - } catch (error) { + } catch (e) { + const error = e as Error; log.error( `Failed to update the autostart to ${autoStart.toString()}. ${error.message.toString()}`, ); @@ -1647,7 +1666,8 @@ class ApplicationMain { await installer(REACT_DEVELOPER_TOOLS, options); await installer(REDUX_DEVTOOLS, options); } catch (e) { - log.info(`Error installing extension: ${e.message}`); + const error = e as Error; + log.info(`Error installing extension: ${error.message}`); } } @@ -1998,7 +2018,8 @@ class ApplicationMain { try { token = await this.daemonRpc.getWwwAuthToken(); } catch (e) { - log.error(`Failed to get the WWW auth token: ${e.message}`); + const error = e as Error; + log.error(`Failed to get the WWW auth token: ${error.message}`); } return shell.openExternal(`${url}?token=${token}`); } else { diff --git a/gui/src/main/linux-desktop-entry.ts b/gui/src/main/linux-desktop-entry.ts index 291079aea8..52ea526022 100644 --- a/gui/src/main/linux-desktop-entry.ts +++ b/gui/src/main/linux-desktop-entry.ts @@ -149,7 +149,7 @@ async function getDesktopEntriesInDirectory( ); } } - } catch (e) { + } catch { // no-op } @@ -289,7 +289,8 @@ async function findIcon( let contents: string[] | undefined; try { contents = await fs.promises.readdir(directory); - } catch (error) { + } catch (e) { + const error = e as NodeJS.ErrnoException; // Non-existent directories and files (not a directory) are expected. if (error.code !== 'ENOENT' && error.code !== 'ENOTDIR') { log.error(`Failed to open directory while searching for ${name} icon`, error); diff --git a/gui/src/main/linux-split-tunneling.ts b/gui/src/main/linux-split-tunneling.ts index 9c41740776..17f24619f4 100644 --- a/gui/src/main/linux-split-tunneling.ts +++ b/gui/src/main/linux-split-tunneling.ts @@ -37,7 +37,8 @@ export async function launchApplication( try { excludeArguments = await getLaunchCommand(app); } catch (e) { - return { error: e.message }; + const error = e as Error; + return { error: error.message }; } return new Promise((resolve, _reject) => { diff --git a/gui/src/main/load-translations.ts b/gui/src/main/load-translations.ts index 63d76f0ac6..cb597e484d 100644 --- a/gui/src/main/load-translations.ts +++ b/gui/src/main/load-translations.ts @@ -51,7 +51,8 @@ function parseTranslation( try { contents = fs.readFileSync(filename, { encoding: 'utf8' }); - } catch (error) { + } catch (e) { + const error = e as NodeJS.ErrnoException; if (error.code !== 'ENOENT') { log.error(`Cannot read the gettext file "${filename}": ${error.message}`); } @@ -61,7 +62,8 @@ function parseTranslation( let translations: GetTextTranslations; try { translations = po.parse(contents); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Cannot parse the gettext file "${filename}": ${error.message}`); return undefined; } diff --git a/gui/src/renderer/app.tsx b/gui/src/renderer/app.tsx index c888480033..296638b205 100644 --- a/gui/src/renderer/app.tsx +++ b/gui/src/renderer/app.tsx @@ -297,7 +297,8 @@ export default class AppRenderer { actions.account.updateAccountToken(accountToken); actions.account.loggedIn(); this.redirectToConnect(); - } catch (error) { + } catch (e) { + const error = e as Error; actions.account.loginFailed(error); } } @@ -306,7 +307,8 @@ export default class AppRenderer { try { await IpcRendererEventChannel.account.logout(); } catch (e) { - log.info('Failed to logout: ', e.message); + const error = e as Error; + log.info('Failed to logout: ', error.message); } } @@ -322,7 +324,8 @@ export default class AppRenderer { const accountExpiry = new Date().toISOString(); actions.account.accountCreated(accountToken, accountExpiry); this.redirectToConnect(); - } catch (error) { + } catch (e) { + const error = e as Error; actions.account.createAccountFailed(error); } } @@ -404,7 +407,8 @@ export default class AppRenderer { try { token = await IpcRendererEventChannel.account.getWwwAuthToken(); } catch (e) { - log.error(`Failed to get the WWW auth token: ${e.message}`); + const error = e as Error; + log.error(`Failed to get the WWW auth token: ${error.message}`); } void this.openUrl(`${link}?token=${token}`); }; @@ -483,7 +487,8 @@ export default class AppRenderer { try { const valid = await IpcRendererEventChannel.wireguardKeys.verifyKey(); actions.settings.completeWireguardKeyVerification(valid); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to verify WireGuard key - ${error.message}`); actions.settings.completeWireguardKeyVerification(undefined); } @@ -981,7 +986,8 @@ export default class AppRenderer { if (location && getLocationPromise === this.getLocationPromise) { return location; } - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to update the location: ${error.message}`); } } diff --git a/gui/src/renderer/components/ClipboardLabel.tsx b/gui/src/renderer/components/ClipboardLabel.tsx index 2131e884df..43b0d2c764 100644 --- a/gui/src/renderer/components/ClipboardLabel.tsx +++ b/gui/src/renderer/components/ClipboardLabel.tsx @@ -50,7 +50,8 @@ export default class ClipboardLabel extends React.Component<IProps, IState> { await navigator.clipboard.writeText(this.props.value); this.scheduler.schedule(() => this.setState({ showsMessage: false }), this.props.delay); this.setState({ showsMessage: true }); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to copy to clipboard: ${error.message}`); } }; diff --git a/gui/src/renderer/containers/AdvancedSettingsPage.tsx b/gui/src/renderer/containers/AdvancedSettingsPage.tsx index 8e8acf2ee9..51ba310aad 100644 --- a/gui/src/renderer/containers/AdvancedSettingsPage.tsx +++ b/gui/src/renderer/containers/AdvancedSettingsPage.tsx @@ -53,7 +53,8 @@ const mapDispatchToProps = (_dispatch: ReduxDispatch, props: IHistoryProps & IAp try { await props.app.updateRelaySettings(relayUpdate); } catch (e) { - log.error('Failed to update tunnel protocol constraints', e.message); + const error = e as Error; + log.error('Failed to update tunnel protocol constraints', error.message); } }, @@ -61,7 +62,8 @@ const mapDispatchToProps = (_dispatch: ReduxDispatch, props: IHistoryProps & IAp try { await props.app.setEnableIpv6(enableIpv6); } catch (e) { - log.error('Failed to update enable IPv6', e.message); + const error = e as Error; + log.error('Failed to update enable IPv6', error.message); } }, @@ -69,7 +71,8 @@ const mapDispatchToProps = (_dispatch: ReduxDispatch, props: IHistoryProps & IAp try { await props.app.setBlockWhenDisconnected(blockWhenDisconnected); } catch (e) { - log.error('Failed to update block when disconnected', e.message); + const error = e as Error; + log.error('Failed to update block when disconnected', error.message); } }, diff --git a/gui/src/renderer/containers/ConnectPage.tsx b/gui/src/renderer/containers/ConnectPage.tsx index 2069b4012b..c9ae60897b 100644 --- a/gui/src/renderer/containers/ConnectPage.tsx +++ b/gui/src/renderer/containers/ConnectPage.tsx @@ -80,21 +80,24 @@ const mapDispatchToProps = (_dispatch: ReduxDispatch, props: IHistoryProps & IAp onConnect: async () => { try { await props.app.connectTunnel(); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to connect the tunnel: ${error.message}`); } }, onDisconnect: async () => { try { await props.app.disconnectTunnel(); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to disconnect the tunnel: ${error.message}`); } }, onReconnect: async () => { try { await props.app.reconnectTunnel(); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to reconnect the tunnel: ${error.message}`); } }, diff --git a/gui/src/renderer/containers/ExpiredAccountErrorViewContainer.tsx b/gui/src/renderer/containers/ExpiredAccountErrorViewContainer.tsx index e5c56e7f28..dc5b12a40e 100644 --- a/gui/src/renderer/containers/ExpiredAccountErrorViewContainer.tsx +++ b/gui/src/renderer/containers/ExpiredAccountErrorViewContainer.tsx @@ -20,7 +20,8 @@ const mapDispatchToProps = (_dispatch: ReduxDispatch, props: IHistoryProps & IAp onDisconnect: async () => { try { await props.app.disconnectTunnel(); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Failed to disconnect the tunnel: ${error.message}`); } }, @@ -28,7 +29,8 @@ const mapDispatchToProps = (_dispatch: ReduxDispatch, props: IHistoryProps & IAp try { await props.app.setBlockWhenDisconnected(blockWhenDisconnected); } catch (e) { - log.error('Failed to update block when disconnected', e.message); + const error = e as Error; + log.error('Failed to update block when disconnected', error.message); } }, navigateToRedeemVoucher: () => { diff --git a/gui/src/renderer/containers/OpenVPNSettingsPage.tsx b/gui/src/renderer/containers/OpenVPNSettingsPage.tsx index 378dc9bb82..9212ca68ac 100644 --- a/gui/src/renderer/containers/OpenVPNSettingsPage.tsx +++ b/gui/src/renderer/containers/OpenVPNSettingsPage.tsx @@ -67,7 +67,8 @@ const mapDispatchToProps = (_dispatch: ReduxDispatch, props: IHistoryProps & IAp try { await props.app.updateRelaySettings(relayUpdate); } catch (e) { - log.error('Failed to update relay settings', e.message); + const error = e as Error; + log.error('Failed to update relay settings', error.message); } }, @@ -84,7 +85,8 @@ const mapDispatchToProps = (_dispatch: ReduxDispatch, props: IHistoryProps & IAp try { await props.app.updateRelaySettings(relayUpdate); } catch (e) { - log.error('Failed to update relay settings', e.message); + const error = e as Error; + log.error('Failed to update relay settings', error.message); } }, @@ -92,7 +94,8 @@ const mapDispatchToProps = (_dispatch: ReduxDispatch, props: IHistoryProps & IAp try { await props.app.setBridgeState(bridgeState); } catch (e) { - log.error(`Failed to update bridge state: ${e.message}`); + const error = e as Error; + log.error(`Failed to update bridge state: ${error.message}`); } }, @@ -100,7 +103,8 @@ const mapDispatchToProps = (_dispatch: ReduxDispatch, props: IHistoryProps & IAp try { await props.app.setOpenVpnMssfix(mssfix); } catch (e) { - log.error('Failed to update mssfix value', e.message); + const error = e as Error; + log.error('Failed to update mssfix value', error.message); } }, }; diff --git a/gui/src/renderer/containers/PreferencesPage.tsx b/gui/src/renderer/containers/PreferencesPage.tsx index a050afedf7..d4176d1ca2 100644 --- a/gui/src/renderer/containers/PreferencesPage.tsx +++ b/gui/src/renderer/containers/PreferencesPage.tsx @@ -30,7 +30,8 @@ const mapDispatchToProps = (_dispatch: ReduxDispatch, props: IHistoryProps & IAp setAutoStart: async (autoStart: boolean) => { try { await props.app.setAutoStart(autoStart); - } catch (error) { + } catch (e) { + const error = e as Error; log.error(`Cannot set auto-start: ${error.message}`); } }, diff --git a/gui/src/renderer/containers/SelectLocationPage.tsx b/gui/src/renderer/containers/SelectLocationPage.tsx index ea931c8ea9..cd455a01f6 100644 --- a/gui/src/renderer/containers/SelectLocationPage.tsx +++ b/gui/src/renderer/containers/SelectLocationPage.tsx @@ -65,7 +65,8 @@ const mapDispatchToProps = (dispatch: ReduxDispatch, props: IHistoryProps & IApp await props.app.updateRelaySettings(relayUpdate); await props.app.connectTunnel(); } catch (e) { - log.error(`Failed to select the exit location: ${e.message}`); + const error = e as Error; + log.error(`Failed to select the exit location: ${error.message}`); } }, onSelectBridgeLocation: async (bridgeLocation: RelayLocation) => { @@ -77,7 +78,8 @@ const mapDispatchToProps = (dispatch: ReduxDispatch, props: IHistoryProps & IApp new BridgeSettingsBuilder().location.fromRaw(bridgeLocation).build(), ); } catch (e) { - log.error(`Failed to select the bridge location: ${e.message}`); + const error = e as Error; + log.error(`Failed to select the bridge location: ${error.message}`); } }, onSelectClosestToExit: async () => { @@ -87,7 +89,8 @@ const mapDispatchToProps = (dispatch: ReduxDispatch, props: IHistoryProps & IApp try { await props.app.updateBridgeSettings(new BridgeSettingsBuilder().location.any().build()); } catch (e) { - log.error(`Failed to set the bridge location to closest to exit: ${e.message}`); + const error = e as Error; + log.error(`Failed to set the bridge location to closest to exit: ${error.message}`); } }, onClearProviders: async () => { diff --git a/gui/src/renderer/containers/WireguardSettingsPage.tsx b/gui/src/renderer/containers/WireguardSettingsPage.tsx index cf7833d116..5e6c27105e 100644 --- a/gui/src/renderer/containers/WireguardSettingsPage.tsx +++ b/gui/src/renderer/containers/WireguardSettingsPage.tsx @@ -65,7 +65,8 @@ const mapDispatchToProps = (_dispatch: ReduxDispatch, props: IHistoryProps & IAp try { await props.app.updateRelaySettings(relayUpdate); } catch (e) { - log.error('Failed to update relay settings', e.message); + const error = e as Error; + log.error('Failed to update relay settings', error.message); } }, @@ -73,7 +74,8 @@ const mapDispatchToProps = (_dispatch: ReduxDispatch, props: IHistoryProps & IAp try { await props.app.setWireguardMtu(mtu); } catch (e) { - log.error('Failed to update mtu value', e.message); + const error = e as Error; + log.error('Failed to update mtu value', error.message); } }, diff --git a/gui/src/shared/ipc-helpers.ts b/gui/src/shared/ipc-helpers.ts index 8c3c851a80..31469ce88a 100644 --- a/gui/src/shared/ipc-helpers.ts +++ b/gui/src/shared/ipc-helpers.ts @@ -180,7 +180,8 @@ function handle<T, R>(event: string, ipcMain: EIpcMain): Handler<T, Promise<R>> ipcMain.handle(event, async (_ipcEvent, arg: T) => { try { return { type: 'success', value: await fn(arg) }; - } catch (error) { + } catch (e) { + const error = e as Error; return { type: 'error', message: error.message || '' }; } }); diff --git a/gui/src/shared/logging.ts b/gui/src/shared/logging.ts index d87778bf13..bfde85a9da 100644 --- a/gui/src/shared/logging.ts +++ b/gui/src/shared/logging.ts @@ -56,8 +56,9 @@ export class Logger { try { await maybePromise; } catch (e) { + const error = e as Error; console.error( - `${output.constructor.name}.write: ${e.message}. Original message: ${message}`, + `${output.constructor.name}.write: ${error.message}. Original message: ${message}`, ); } } |
