diff --git a/desktop/package-lock.json b/desktop/package-lock.json index 1e7c6149aa..6886b8db39 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -3998,18 +3998,6 @@ "electron-winstaller": "5.4.0" } }, - "node_modules/electron-devtools-installer": { - "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" - } - }, "node_modules/electron-publish": { "version": "26.15.3", "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-26.15.3.tgz", @@ -8049,21 +8037,6 @@ "node": ">=0.10.0" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/roarr": { "version": "2.15.4", "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", @@ -9755,7 +9728,7 @@ "cross-env": "^7.0.3", "electron": "42.5.1", "electron-builder": "26.15.7", - "electron-devtools-installer": "^3.2.0", + "electron-devtools-installer": "file:../../vendor/electron-devtools-installer-0.0.0-development.tgz", "eslint-plugin-react": "^7.36.1", "eslint-plugin-react-compiler": "^19.1.0-rc.2", "eslint-plugin-react-hooks": "^5.2.0", @@ -9799,6 +9772,16 @@ } } }, + "packages/mullvad-vpn/node_modules/electron-devtools-installer": { + "version": "0.0.0-development", + "resolved": "file:vendor/electron-devtools-installer-0.0.0-development.tgz", + "integrity": "sha512-I9pyvzANTUyaQ3V0KbLpxHvhsNtuG2OylHenKFDdjazXxPuD+gMjiSo6ouv6DWn+4naLI9NUUfoDaiGfhNLChA==", + "dev": true, + "license": "MIT", + "dependencies": { + "unzip-crx-3": "^0.2.0" + } + }, "packages/mullvad-vpn/node_modules/react": { "version": "19.1.1", "resolved": "https://registry.npmjs.org/react/-/react-19.1.1.tgz", @@ -12527,18 +12510,6 @@ "electron-winstaller": "5.4.0" } }, - "electron-devtools-installer": { - "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" - } - }, "electron-publish": { "version": "26.15.3", "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-26.15.3.tgz", @@ -14517,7 +14488,7 @@ "cross-env": "^7.0.3", "electron": "42.5.1", "electron-builder": "26.15.7", - "electron-devtools-installer": "^3.2.0", + "electron-devtools-installer": "file:../../vendor/electron-devtools-installer-0.0.0-development.tgz", "eslint-plugin-react": "^7.36.1", "eslint-plugin-react-compiler": "^19.1.0-rc.2", "eslint-plugin-react-hooks": "^5.2.0", @@ -14556,6 +14527,14 @@ "@rolldown/pluginutils": "^1.0.1" } }, + "electron-devtools-installer": { + "version": "file:../../vendor/electron-devtools-installer-0.0.0-development.tgz", + "integrity": "sha512-I9pyvzANTUyaQ3V0KbLpxHvhsNtuG2OylHenKFDdjazXxPuD+gMjiSo6ouv6DWn+4naLI9NUUfoDaiGfhNLChA==", + "dev": true, + "requires": { + "unzip-crx-3": "^0.2.0" + } + }, "react": { "version": "19.1.1", "resolved": "https://registry.npmjs.org/react/-/react-19.1.1.tgz", @@ -15340,15 +15319,6 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, "roarr": { "version": "2.15.4", "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", diff --git a/desktop/packages/mullvad-vpn/package.json b/desktop/packages/mullvad-vpn/package.json index 87d1621af6..c562a9fe2a 100644 --- a/desktop/packages/mullvad-vpn/package.json +++ b/desktop/packages/mullvad-vpn/package.json @@ -47,7 +47,7 @@ "cross-env": "^7.0.3", "electron": "42.5.1", "electron-builder": "26.15.7", - "electron-devtools-installer": "^3.2.0", + "electron-devtools-installer": "file:../../vendor/electron-devtools-installer-0.0.0-development.tgz", "eslint-plugin-react": "^7.36.1", "eslint-plugin-react-compiler": "^19.1.0-rc.2", "eslint-plugin-react-hooks": "^5.2.0", diff --git a/desktop/packages/mullvad-vpn/src/main/user-interface.ts b/desktop/packages/mullvad-vpn/src/main/user-interface.ts index 8069db1ac0..44f2be0821 100644 --- a/desktop/packages/mullvad-vpn/src/main/user-interface.ts +++ b/desktop/packages/mullvad-vpn/src/main/user-interface.ts @@ -458,16 +458,14 @@ export default class UserInterface implements WindowControllerDelegate { } private async installDevTools() { - const { - default: installer, - REACT_DEVELOPER_TOOLS, - REDUX_DEVTOOLS, - } = await import('electron-devtools-installer'); + const { installExtension, REACT_DEVELOPER_TOOLS, REDUX_DEVTOOLS } = await import( + 'electron-devtools-installer' + ); const forceDownload = !!process.env.UPGRADE_EXTENSIONS; const options = { forceDownload, loadExtensionOptions: { allowFileAccess: true } }; try { - await installer(REACT_DEVELOPER_TOOLS, options); - await installer(REDUX_DEVTOOLS, options); + await installExtension(REACT_DEVELOPER_TOOLS, options); + await installExtension(REDUX_DEVTOOLS, options); } catch (e) { const error = e as Error; log.info(`Error installing extension: ${error.message}`); diff --git a/desktop/packages/mullvad-vpn/vite.config.ts b/desktop/packages/mullvad-vpn/vite.config.ts index d377523279..56e5afcdf2 100644 --- a/desktop/packages/mullvad-vpn/vite.config.ts +++ b/desktop/packages/mullvad-vpn/vite.config.ts @@ -102,6 +102,7 @@ const viteConfig = defineConfig({ '@grpc/grpc-js', 'google-protobuf', 'simple-plist', + 'electron-devtools-installer', ], }, }, diff --git a/desktop/vendor/README.md b/desktop/vendor/README.md new file mode 100644 index 0000000000..5670382ba3 --- /dev/null +++ b/desktop/vendor/README.md @@ -0,0 +1,18 @@ +# Vendor npm dependency +The following instructions are based on this (blogpost)[https://stricker.digital/posts/how-to-vendor-npm-dependencies/]. + +```bash +git clone git@github.com/them/example-library.git +cd example-library +npm install +npm run build +npm pack +``` + +Move the `.tgz` file to `desktop/vendor` and install it. + +```bash +cp example-library-1-0-0.tgz desktop/vendor/example-library-1-0-0.tgz +cd desktop/ +npm install ./vendor/example-library-1-0-0.tgz +``` diff --git a/desktop/vendor/electron-devtools-installer-0.0.0-development.tgz b/desktop/vendor/electron-devtools-installer-0.0.0-development.tgz new file mode 100644 index 0000000000..fe29fc55bb Binary files /dev/null and b/desktop/vendor/electron-devtools-installer-0.0.0-development.tgz differ