From 2e3c89269dcc3c8af14f5852e8972ad7ed0c3524 Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Mon, 11 Apr 2022 19:53:16 +0200 Subject: [PATCH] Resolve cross-compile for rust (#1481) --- .github/workflows/build.yml | 106 +++++++++++++++++++++ desktop_native/build.js | 22 +++++ desktop_native/index.js | 114 ++++++++++++++++++++++ desktop_native/package-lock.json | 34 ++----- desktop_native/package.json | 27 ++++-- package-lock.json | 29 +++--- package.json | 4 +- src/package-lock.json | 157 ++++++++++--------------------- webpack.main.js | 2 +- 9 files changed, 343 insertions(+), 152 deletions(-) create mode 100644 desktop_native/build.js create mode 100644 desktop_native/index.js diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2ef3d73e0d..53fe40b306 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -149,6 +149,20 @@ jobs: - name: Install Node dependencies run: npm ci + - name: Cache Native Module + uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 # v3.0.2 + id: cache + with: + path: desktop_native/dist + key: rust-${{ runner.os }}-${{ hashFiles('desktop_native/**/*') }} + + - name: Build Native Module + if: steps.cache.outputs.cache-hit != 'true' + working-directory: './desktop_native' + run: | + npm ci + npm run build:cross-platform + - name: Build application run: npm run dist:lin @@ -228,11 +242,18 @@ jobs: shell: pwsh run: choco install checksum --no-progress + - name: Rust + shell: pwsh + run: | + rustup target install i686-pc-windows-msvc + rustup target install aarch64-pc-windows-msvc + - name: Print environment run: | node --version npm --version choco --version + rustup show - name: Login to Azure uses: Azure/login@1f63701bf3e6892515f1b7ce2d2bf1708b46beaf @@ -253,6 +274,20 @@ jobs: - name: Install Node dependencies run: npm ci + - name: Cache Native Module + uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 # v3.0.2 + id: cache + with: + path: desktop_native/dist + key: rust-${{ runner.os }}-${{ hashFiles('desktop_native/**/*') }} + + - name: Build Native Module + if: steps.cache.outputs.cache-hit != 'true' + working-directory: './desktop_native' + run: | + npm ci + npm run build:cross-platform + - name: Build & Sign (dev) env: ELECTRON_BUILDER_SIGN: 1 @@ -404,10 +439,15 @@ jobs: npm install -g node-gyp node-gyp install $(node -v) + - name: Rust + shell: pwsh + run: rustup target install aarch64-apple-darwin + - name: Print environment run: | node --version npm --version + rustup show echo "GitHub ref: $GITHUB_REF" echo "GitHub event: $GITHUB_EVENT" @@ -496,6 +536,20 @@ jobs: $package.build | Add-Member -MemberType NoteProperty -Name buildVersion -Value "$env:BUILD_NUMBER"; $package | ConvertTo-Json -Depth 32 | Set-Content $env:GITHUB_WORKSPACE\package.json; + - name: Cache Native Module + uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 # v3.0.2 + id: cache + with: + path: desktop_native/dist + key: rust-${{ runner.os }}-${{ hashFiles('desktop_native/**/*') }} + + - name: Build Native Module + if: steps.cache.outputs.cache-hit != 'true' + working-directory: './desktop_native' + run: | + npm ci + npm run build:cross-platform + - name: Install Node dependencies run: npm ci @@ -548,10 +602,15 @@ jobs: npm install -g node-gyp node-gyp install $(node -v) + - name: Rust + shell: pwsh + run: rustup target install aarch64-apple-darwin + - name: Print environment run: | node --version npm --version + rustup show echo "GitHub ref: $GITHUB_REF" echo "GitHub event: $GITHUB_EVENT" @@ -640,6 +699,20 @@ jobs: $package.build | Add-Member -MemberType NoteProperty -Name buildVersion -Value "$env:BUILD_NUMBER"; $package | ConvertTo-Json -Depth 32 | Set-Content $env:GITHUB_WORKSPACE\package.json; + - name: Cache Native Module + uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 # v3.0.2 + id: cache + with: + path: desktop_native/dist + key: rust-${{ runner.os }}-${{ hashFiles('desktop_native/**/*') }} + + - name: Build Native Module + if: steps.cache.outputs.cache-hit != 'true' + working-directory: './desktop_native' + run: | + npm ci + npm run build:cross-platform + - name: NPM install run: npm ci @@ -735,10 +808,15 @@ jobs: npm install -g node-gyp node-gyp install $(node -v) + - name: Rust + shell: pwsh + run: rustup target install aarch64-apple-darwin + - name: Print environment run: | node --version npm --version + rustup show echo "GitHub ref: $GITHUB_REF" echo "GitHub event: $GITHUB_EVENT" @@ -827,6 +905,20 @@ jobs: $package.build | Add-Member -MemberType NoteProperty -Name buildVersion -Value "$env:BUILD_NUMBER"; $package | ConvertTo-Json -Depth 32 | Set-Content $env:GITHUB_WORKSPACE\package.json; + - name: Cache Native Module + uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 # v3.0.2 + id: cache + with: + path: desktop_native/dist + key: rust-${{ runner.os }}-${{ hashFiles('desktop_native/**/*') }} + + - name: Build Native Module + if: steps.cache.outputs.cache-hit != 'true' + working-directory: './desktop_native' + run: | + npm ci + npm run build:cross-platform + - name: NPM install run: npm ci @@ -1006,6 +1098,20 @@ jobs: $package.build | Add-Member -MemberType NoteProperty -Name buildVersion -Value "$env:BUILD_NUMBER"; $package | ConvertTo-Json -Depth 32 | Set-Content $env:GITHUB_WORKSPACE\package.json; + - name: Cache Native Module + uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 # v3.0.2 + id: cache + with: + path: desktop_native/dist + key: rust-${{ runner.os }}-${{ hashFiles('desktop_native/**/*') }} + + - name: Build Native Module + if: steps.cache.outputs.cache-hit != 'true' + working-directory: './desktop_native' + run: | + npm ci + npm run build:cross-platform + - name: NPM install run: npm ci diff --git a/desktop_native/build.js b/desktop_native/build.js new file mode 100644 index 0000000000..ca42f7b0c2 --- /dev/null +++ b/desktop_native/build.js @@ -0,0 +1,22 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const child_process = require("child_process"); +const process = require("process"); + +let targets = []; +switch (process.platform) { + case "win32": + targets = ["i686-pc-windows-msvc", "x86_64-pc-windows-msvc", "aarch64-pc-windows-msvc"]; + break; + + case "darwin": + targets = ["x86_64-apple-darwin", "aarch64-apple-darwin"]; + break; + + default: + targets = ['x86_64-unknown-linux-gnu']; + break; +} + +targets.forEach(target => { + child_process.execSync(`npm run build -- --target ${target}`, {stdio: 'inherit'}); +}); diff --git a/desktop_native/index.js b/desktop_native/index.js new file mode 100644 index 0000000000..572f3d6013 --- /dev/null +++ b/desktop_native/index.js @@ -0,0 +1,114 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const { readFileSync } = require('fs') + +const { platform, arch } = process + +let nativeBinding = null +let isMusl = false +let loadError = null + +switch (platform) { + case 'win32': + switch (arch) { + case 'x64': + try { + nativeBinding = require('./dist/desktop_native.win32-x64-msvc') + } catch (e) { + loadError = e + } + break + case 'ia32': + try { + nativeBinding = require('./dist/desktop_native.win32-ia32-msvc') + } catch (e) { + loadError = e + } + break + case 'arm64': + try { + nativeBinding = require('./dist/desktop_native.win32-arm64-msvc') + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Windows: ${arch}`) + } + break + case 'darwin': + switch (arch) { + case 'x64': + try { + nativeBinding = require('./dist/desktop_native.darwin-x64') + } catch (e) { + loadError = e + } + break + case 'arm64': + try { + nativeBinding = require('./dist/desktop_native.darwin-arm64') + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on macOS: ${arch}`) + } + break + case 'linux': + switch (arch) { + case 'x64': + isMusl = readFileSync('/usr/bin/ldd', 'utf8').includes('musl') + if (isMusl) { + try { + nativeBinding = require('./dist/desktop_native.linux-x64-musl') + } catch (e) { + loadError = e + } + } else { + try { + nativeBinding = require('./dist/desktop_native.linux-x64-gnu') + } catch (e) { + loadError = e + } + } + break + case 'arm64': + isMusl = readFileSync('/usr/bin/ldd', 'utf8').includes('musl') + if (isMusl) { + try { + nativeBinding = require('./dist/desktop_native.linux-arm64-musl') + } catch (e) { + loadError = e + } + } else { + try { + nativeBinding = require('./dist/desktop_native.linux-arm64-gnu') + } catch (e) { + loadError = e + } + } + break + case 'arm': + try { + nativeBinding = require('./dist/desktop_native.linux-arm-gnueabihf') + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Linux: ${arch}`) + } + break + default: + throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`) +} + +if (!nativeBinding) { + if (loadError) { + throw loadError + } + throw new Error(`Failed to load native binding`) +} + +module.exports.nativeBinding diff --git a/desktop_native/package-lock.json b/desktop_native/package-lock.json index b72bb80ca7..70e590de3d 100644 --- a/desktop_native/package-lock.json +++ b/desktop_native/package-lock.json @@ -1,23 +1,22 @@ { - "name": "desktop_native", + "name": "@bitwarden/desktop_native", "version": "0.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "desktop_native", + "name": "@bitwarden/desktop_native", "version": "0.1.0", "hasInstallScript": true, "license": "GPL-3.0", "devDependencies": { - "@napi-rs/cli": "^2.4.4", - "cargo-cp-artifact": "^0.1" + "@napi-rs/cli": "^2.6.2" } }, "node_modules/@napi-rs/cli": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@napi-rs/cli/-/cli-2.4.4.tgz", - "integrity": "sha512-f+tvwCv1ka24dBqI2DgBhR7Oxl3DKHOp4onxLXwyBFt6iCADnr3YZIr1/2Iq5r3uqxFgaf01bfPsRQZPkEp0kQ==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@napi-rs/cli/-/cli-2.6.2.tgz", + "integrity": "sha512-EmH+DQDEBUIoqMim0cc+X96ImtcIZLFjgW5WWORpzYnA9Ug7zNPO7jCLMhIQRd/p5AdWaXrT4SVXc/aip09rKQ==", "dev": true, "bin": { "napi": "scripts/index.js" @@ -29,28 +28,13 @@ "type": "github", "url": "https://github.com/sponsors/Brooooooklyn" } - }, - "node_modules/cargo-cp-artifact": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/cargo-cp-artifact/-/cargo-cp-artifact-0.1.6.tgz", - "integrity": "sha512-CQw0doK/aaF7j041666XzuilHxqMxaKkn+I5vmBsd8SAwS0cO5CqVEVp0xJwOKstyqWZ6WK4Ww3O6p26x/Goyg==", - "dev": true, - "bin": { - "cargo-cp-artifact": "bin/cargo-cp-artifact.js" - } } }, "dependencies": { "@napi-rs/cli": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@napi-rs/cli/-/cli-2.4.4.tgz", - "integrity": "sha512-f+tvwCv1ka24dBqI2DgBhR7Oxl3DKHOp4onxLXwyBFt6iCADnr3YZIr1/2Iq5r3uqxFgaf01bfPsRQZPkEp0kQ==", - "dev": true - }, - "cargo-cp-artifact": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/cargo-cp-artifact/-/cargo-cp-artifact-0.1.6.tgz", - "integrity": "sha512-CQw0doK/aaF7j041666XzuilHxqMxaKkn+I5vmBsd8SAwS0cO5CqVEVp0xJwOKstyqWZ6WK4Ww3O6p26x/Goyg==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@napi-rs/cli/-/cli-2.6.2.tgz", + "integrity": "sha512-EmH+DQDEBUIoqMim0cc+X96ImtcIZLFjgW5WWORpzYnA9Ug7zNPO7jCLMhIQRd/p5AdWaXrT4SVXc/aip09rKQ==", "dev": true } } diff --git a/desktop_native/package.json b/desktop_native/package.json index 4ddb2758e1..7fe4c9708b 100644 --- a/desktop_native/package.json +++ b/desktop_native/package.json @@ -1,19 +1,32 @@ { - "name": "desktop_native", + "name": "@bitwarden/desktop_native", "version": "0.1.0", "description": "", "main": "index.node", "scripts": { - "build": "napi build --release --js true", - "build-debug": "npm run build --", - "build-release": "npm run build -- --release", - "install": "npm run build-release", + "build": "napi build dist --platform --release --js true", + "build:debug": "napi build dist --platform --js true", + "build:cross-platform": "node build.js", "test": "cargo test" }, "author": "", "license": "GPL-3.0", "devDependencies": { - "@napi-rs/cli": "^2.4.4", - "cargo-cp-artifact": "^0.1" + "@napi-rs/cli": "^2.6.2" + }, + "napi": { + "name": "desktop_native", + "triples": { + "defaults": true, + "additional": [ + "x86_64-unknown-linux-musl", + "aarch64-unknown-linux-gnu", + "i686-pc-windows-msvc", + "armv7-unknown-linux-gnueabihf", + "aarch64-apple-darwin", + "aarch64-unknown-linux-musl", + "aarch64-pc-windows-msvc" + ] + } } } diff --git a/package-lock.json b/package-lock.json index 134babd1ee..fe7887aa90 100644 --- a/package-lock.json +++ b/package-lock.json @@ -77,7 +77,7 @@ } }, "desktop_native": { - "name": "desktop_native", + "name": "@bitwarden/desktop_native", "version": "0.1.0", "hasInstallScript": true, "license": "GPL-3.0", @@ -87,6 +87,7 @@ } }, "jslib/angular": { + "name": "@bitwarden/jslib-angular", "version": "0.0.0", "license": "GPL-3.0", "dependencies": { @@ -112,6 +113,7 @@ } }, "jslib/common": { + "name": "@bitwarden/jslib-common", "version": "0.0.0", "license": "GPL-3.0", "dependencies": { @@ -138,6 +140,7 @@ } }, "jslib/electron": { + "name": "@bitwarden/jslib-electron", "version": "0.0.0", "license": "GPL-3.0", "dependencies": { @@ -2748,9 +2751,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001325", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001325.tgz", - "integrity": "sha512-sB1bZHjseSjDtijV1Hb7PB2Zd58Kyx+n/9EotvZ4Qcz2K3d0lWB8dB4nb8wN/TsOGFq3UuAm0zQZNQ4SoR7TrQ==", + "version": "1.0.30001327", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", + "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==", "dev": true, "funding": [ { @@ -9678,9 +9681,9 @@ } }, "node_modules/semver/node_modules/lru-cache": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", - "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.0.tgz", + "integrity": "sha512-AmXqneQZL3KZMIgBpaPTeI6pfwh+xQ2vutMsyqOu1TBdEXFZgpG/80wuJ531w2ZN7TI0/oc8CPxzh/DKQudZqg==", "engines": { "node": ">=12" } @@ -13422,9 +13425,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001325", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001325.tgz", - "integrity": "sha512-sB1bZHjseSjDtijV1Hb7PB2Zd58Kyx+n/9EotvZ4Qcz2K3d0lWB8dB4nb8wN/TsOGFq3UuAm0zQZNQ4SoR7TrQ==", + "version": "1.0.30001327", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", + "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==", "dev": true }, "canonical-path": { @@ -18533,9 +18536,9 @@ }, "dependencies": { "lru-cache": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", - "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==" + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.0.tgz", + "integrity": "sha512-AmXqneQZL3KZMIgBpaPTeI6pfwh+xQ2vutMsyqOu1TBdEXFZgpG/80wuJ531w2ZN7TI0/oc8CPxzh/DKQudZqg==" } } }, diff --git a/package.json b/package.json index 6c1b190939..54fa7625ff 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,9 @@ ], "files": [ "**/*", - "!**/node_modules/@bitwarden/desktop-native/**/*" + "!**/node_modules/@bitwarden/desktop-native/**/*", + "**/node_modules/@bitwarden/desktop-native/index.js", + "**/node_modules/@bitwarden/desktop-native/dist/desktop_native.${platform}-${arch}.node" ], "mac": { "electronUpdaterCompatibility": ">=0.0.1", diff --git a/src/package-lock.json b/src/package-lock.json index 3bb3927f23..a34fc70f16 100644 --- a/src/package-lock.json +++ b/src/package-lock.json @@ -1,19 +1,33 @@ { "name": "@bitwarden/desktop", - "version": "1.30.1", + "version": "1.32.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@bitwarden/desktop", - "version": "1.30.1", + "version": "1.32.2", "license": "GPL-3.0", "dependencies": { + "@bitwarden/desktop-native": "file:../desktop_native", "@nodert-win10-rs4/windows.security.credentials.ui": "^0.4.4", - "forcefocus": "^1.1.0", - "keytar": "7.7.0" + "forcefocus": "^1.1.0" } }, + "../desktop_native": { + "name": "@bitwarden/desktop_native", + "version": "0.1.0", + "hasInstallScript": true, + "license": "GPL-3.0", + "devDependencies": { + "@napi-rs/cli": "^2.4.4", + "cargo-cp-artifact": "^0.1" + } + }, + "node_modules/@bitwarden/desktop-native": { + "resolved": "../desktop_native", + "link": true + }, "node_modules/@nodert-win10-rs4/windows.security.credentials.ui": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/@nodert-win10-rs4/windows.security.credentials.ui/-/windows.security.credentials.ui-0.4.4.tgz", @@ -285,42 +299,6 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, - "node_modules/keytar": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.7.0.tgz", - "integrity": "sha512-YEY9HWqThQc5q5xbXbRwsZTh2PJ36OSYRjSv3NN2xf5s5dpLTjEZnC2YikR29OaVybf9nQ0dJ/80i40RS97t/A==", - "hasInstallScript": true, - "dependencies": { - "node-addon-api": "^3.0.0", - "prebuild-install": "^6.0.0" - } - }, - "node_modules/keytar/node_modules/prebuild-install": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz", - "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==", - "dependencies": { - "detect-libc": "^1.0.3", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^2.21.0", - "npmlog": "^4.0.1", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^3.0.3", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/mimic-response": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", @@ -333,9 +311,9 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "node_modules/mkdirp-classic": { "version": "0.5.3", @@ -360,11 +338,6 @@ "semver": "^5.4.1" } }, - "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" - }, "node_modules/noop-logger": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", @@ -494,9 +467,9 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "node_modules/signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/simple-concat": { "version": "1.0.1", @@ -518,9 +491,9 @@ ] }, "node_modules/simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", "dependencies": { "decompress-response": "^4.2.0", "once": "^1.3.1", @@ -623,9 +596,12 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "node_modules/which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "engines": { + "node": ">=4" + } }, "node_modules/wide-align": { "version": "1.1.5", @@ -642,6 +618,13 @@ } }, "dependencies": { + "@bitwarden/desktop-native": { + "version": "file:../desktop_native", + "requires": { + "@napi-rs/cli": "^2.4.4", + "cargo-cp-artifact": "^0.1" + } + }, "@nodert-win10-rs4/windows.security.credentials.ui": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/@nodert-win10-rs4/windows.security.credentials.ui/-/windows.security.credentials.ui-0.4.4.tgz", @@ -841,46 +824,15 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, - "keytar": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.7.0.tgz", - "integrity": "sha512-YEY9HWqThQc5q5xbXbRwsZTh2PJ36OSYRjSv3NN2xf5s5dpLTjEZnC2YikR29OaVybf9nQ0dJ/80i40RS97t/A==", - "requires": { - "node-addon-api": "^3.0.0", - "prebuild-install": "^6.0.0" - }, - "dependencies": { - "prebuild-install": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz", - "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==", - "requires": { - "detect-libc": "^1.0.3", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^2.21.0", - "npmlog": "^4.0.1", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^3.0.3", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - } - } - } - }, "mimic-response": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "mkdirp-classic": { "version": "0.5.3", @@ -905,11 +857,6 @@ "semver": "^5.4.1" } }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" - }, "noop-logger": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", @@ -1021,9 +968,9 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "simple-concat": { "version": "1.0.1", @@ -1031,9 +978,9 @@ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" }, "simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", "requires": { "decompress-response": "^4.2.0", "once": "^1.3.1", @@ -1120,9 +1067,9 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==" }, "wide-align": { "version": "1.1.5", diff --git a/webpack.main.js b/webpack.main.js index 85a95ad9eb..0984e77bae 100644 --- a/webpack.main.js +++ b/webpack.main.js @@ -75,7 +75,7 @@ const main = { "@nodert-win10-rs4/windows.security.credentials.ui": "commonjs2 @nodert-win10-rs4/windows.security.credentials.ui", forcefocus: "commonjs2 forcefocus", - keytar: "commonjs2 keytar", + "@bitwarden/desktop-native": "commonjs2 @bitwarden/desktop-native", }, };