diff --git a/.github/whitelist-capital-letters.txt b/.github/whitelist-capital-letters.txt index 45d9df649b..3155ef348f 100644 --- a/.github/whitelist-capital-letters.txt +++ b/.github/whitelist-capital-letters.txt @@ -38,8 +38,6 @@ ./apps/desktop/resources/appx/Wide310x150Logo.png ./apps/desktop/resources/appx/Square44x44Logo.png ./apps/desktop/README.md -./apps/desktop/desktop_native/Cargo.toml -./apps/desktop/desktop_native/Cargo.lock ./apps/cli/stores/chocolatey/tools/VERIFICATION.txt ./apps/cli/README.md ./apps/browser/README.md diff --git a/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml index 71ddd8584c..9e59bc4785 100644 --- a/.github/workflows/build-desktop.yml +++ b/.github/workflows/build-desktop.yml @@ -173,14 +173,14 @@ jobs: id: cache with: path: | - apps/desktop/desktop_native/*.node + apps/desktop/desktop_native/napi/*.node ${{ env.RUNNER_TEMP }}/.cargo/registry ${{ env.RUNNER_TEMP }}/.cargo/git key: rust-${{ runner.os }}-${{ hashFiles('apps/desktop/desktop_native/**/*') }} - name: Build Native Module if: steps.cache.outputs.cache-hit != 'true' - working-directory: apps/desktop/desktop_native + working-directory: apps/desktop/desktop_native/napi env: PKG_CONFIG_ALLOW_CROSS: true PKG_CONFIG_ALL_STATIC: true @@ -301,12 +301,12 @@ jobs: uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 id: cache with: - path: apps/desktop/desktop_native/*.node + path: apps/desktop/desktop_native/napi/*.node key: rust-${{ runner.os }}-${{ hashFiles('apps/desktop/desktop_native/**/*') }} - name: Build Native Module if: steps.cache.outputs.cache-hit != 'true' - working-directory: apps/desktop/desktop_native + working-directory: apps/desktop/desktop_native/napi run: npm run build:cross-platform - name: Build & Sign (dev) @@ -584,12 +584,12 @@ jobs: uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 id: cache with: - path: apps/desktop/desktop_native/*.node + path: apps/desktop/desktop_native/napi/*.node key: rust-${{ runner.os }}-${{ hashFiles('apps/desktop/desktop_native/**/*') }} - name: Build Native Module if: steps.cache.outputs.cache-hit != 'true' - working-directory: apps/desktop/desktop_native + working-directory: apps/desktop/desktop_native/napi run: npm run build:cross-platform - name: Build application (dev) @@ -748,12 +748,12 @@ jobs: uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 id: cache with: - path: apps/desktop/desktop_native/*.node + path: apps/desktop/desktop_native/napi/*.node key: rust-${{ runner.os }}-${{ hashFiles('apps/desktop/desktop_native/**/*') }} - name: Build Native Module if: steps.cache.outputs.cache-hit != 'true' - working-directory: apps/desktop/desktop_native + working-directory: apps/desktop/desktop_native/napi run: npm run build:cross-platform - name: Build @@ -957,12 +957,12 @@ jobs: uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 id: cache with: - path: apps/desktop/desktop_native/*.node + path: apps/desktop/desktop_native/napi/*.node key: rust-${{ runner.os }}-${{ hashFiles('apps/desktop/desktop_native/**/*') }} - name: Build Native Module if: steps.cache.outputs.cache-hit != 'true' - working-directory: apps/desktop/desktop_native + working-directory: apps/desktop/desktop_native/napi run: npm run build:cross-platform - name: Build @@ -1152,12 +1152,12 @@ jobs: uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 id: cache with: - path: apps/desktop/desktop_native/*.node + path: apps/desktop/desktop_native/napi/*.node key: rust-${{ runner.os }}-${{ hashFiles('apps/desktop/desktop_native/**/*') }} - name: Build Native Module if: steps.cache.outputs.cache-hit != 'true' - working-directory: apps/desktop/desktop_native + working-directory: apps/desktop/desktop_native/napi run: npm run build:cross-platform - name: Build diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index ed5ada527c..2d881a4c30 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -35,6 +35,8 @@ jobs: ! -path "*/.DS_Store" \ ! -path "*/*locales/*" \ ! -path "./.github/*" \ + ! -path "*/Cargo.toml" \ + ! -path "*/Cargo.lock" \ > tmp.txt diff <(sort .github/whitelist-capital-letters.txt) <(sort tmp.txt) diff --git a/apps/desktop/desktop_native/.cargo/config b/apps/desktop/desktop_native/.cargo/config.toml similarity index 100% rename from apps/desktop/desktop_native/.cargo/config rename to apps/desktop/desktop_native/.cargo/config.toml diff --git a/apps/desktop/desktop_native/Cargo.lock b/apps/desktop/desktop_native/Cargo.lock index 8617553b37..0b6dc63104 100644 --- a/apps/desktop/desktop_native/Cargo.lock +++ b/apps/desktop/desktop_native/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" dependencies = [ "gimli", ] @@ -45,32 +45,31 @@ checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "arboard" -version = "3.3.2" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2041f1943049c7978768d84e6d0fd95de98b76d6c4727b09e78ec253d29fa58" +checksum = "9fb4009533e8ff8f1450a5bcbc30f4242a1d34442221f72314bea1f5dc9c7f89" dependencies = [ "clipboard-win", "log", - "objc", - "objc-foundation", - "objc_id", + "objc2", + "objc2-app-kit", + "objc2-foundation", "parking_lot", - "thiserror", "wl-clipboard-rs", "x11rb", ] [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" dependencies = [ "addr2line", "cc", @@ -87,24 +86,12 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - [[package]] name = "bitflags" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" -[[package]] -name = "block" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" - [[package]] name = "block-buffer" version = "0.10.4" @@ -123,6 +110,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2", +] + [[package]] name = "cbc" version = "0.1.2" @@ -134,15 +130,15 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.90" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" +checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" [[package]] name = "cfg-expr" -version = "0.15.7" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa50868b64a9a6fda9d593ce778849ea8715cd2a3d2cc17ffdb4a2f2f2f1961d" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" dependencies = [ "smallvec", "target-lexicon", @@ -172,9 +168,9 @@ dependencies = [ [[package]] name = "clipboard-win" -version = "5.3.0" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d517d4b86184dbb111d3556a10f1c8a04da7428d2987bf1081602bf11c3aa9ee" +checksum = "79f4473f5144e20d9aceaf2972478f06ddf687831eafeeb434fbaf0acc4144ad" dependencies = [ "error-code", ] @@ -235,9 +231,9 @@ dependencies = [ [[package]] name = "ctor" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad291aa74992b9b7a7e88c38acbbf6ad7e107f1d90ee8775b7bc1fc3394f485c" +checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" dependencies = [ "quote", "syn", @@ -245,9 +241,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.120" +version = "1.0.124" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dc7287237dd438b926a81a1a5605dad33d286870e5eee2db17bf2bcd9e92a" +checksum = "273dcfd3acd4e1e276af13ed2a43eea7001318823e7a726a6b3ed39b4acc0b82" dependencies = [ "cc", "cxxbridge-flags", @@ -257,9 +253,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.120" +version = "1.0.124" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f47c6c8ad7c1a10d3ef0fe3ff6733f4db0d78f08ef0b13121543163ef327058b" +checksum = "d8b2766fbd92be34e9ed143898fce6c572dc009de39506ed6903e5a05b68914e" dependencies = [ "cc", "codespan-reporting", @@ -272,15 +268,15 @@ dependencies = [ [[package]] name = "cxxbridge-flags" -version = "1.0.120" +version = "1.0.124" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "701a1ac7a697e249cdd8dc026d7a7dafbfd0dbcd8bd24ec55889f2bc13dd6287" +checksum = "839fcd5e43464614ffaa989eaf1c139ef1f0c51672a1ed08023307fa1b909ccd" [[package]] name = "cxxbridge-macro" -version = "1.0.120" +version = "1.0.124" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b404f596046b0bb2d903a9c786b875a126261b52b7c3a64bbb66382c41c771df" +checksum = "4b2c1c1776b986979be68bb2285da855f8d8a35851a769fca8740df7c3d07877" dependencies = [ "proc-macro2", "quote", @@ -299,7 +295,7 @@ dependencies = [ ] [[package]] -name = "desktop_native" +name = "desktop_core" version = "0.0.0" dependencies = [ "aes", @@ -311,9 +307,6 @@ dependencies = [ "gio", "keytar", "libsecret", - "napi", - "napi-build", - "napi-derive", "rand", "retry", "scopeguard", @@ -326,6 +319,17 @@ dependencies = [ "windows", ] +[[package]] +name = "desktop_napi" +version = "0.0.0" +dependencies = [ + "anyhow", + "desktop_core", + "napi", + "napi-build", + "napi-derive", +] + [[package]] name = "digest" version = "0.10.7" @@ -347,9 +351,9 @@ dependencies = [ [[package]] name = "downcast-rs" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "equivalent" @@ -359,9 +363,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys", @@ -375,9 +379,9 @@ checksum = "a0474425d51df81997e2f90a21591180b38eccf27292d755f3e30750225c175b" [[package]] name = "fastrand" -version = "2.0.2" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "fixedbitset" @@ -476,9 +480,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -487,15 +491,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "gio" -version = "0.19.2" +version = "0.19.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eae10b27b6dd27e22ed0d812c6387deba295e6fc004a8b379e459b663b05a02" +checksum = "be548be810e45dd31d3bbb89c6210980bb7af9bca3ea1292b5f16b75f8e394a7" dependencies = [ "futures-channel", "futures-core", @@ -511,9 +515,9 @@ dependencies = [ [[package]] name = "gio-sys" -version = "0.19.0" +version = "0.19.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf8e1d9219bb294636753d307b030c1e8a032062cba74f493c431a5c8b81ce4" +checksum = "2cd743ba4714d671ad6b6234e8ab2a13b42304d0e13ab7eba1dcdd78a7d6d4ef" dependencies = [ "glib-sys", "gobject-sys", @@ -524,11 +528,11 @@ dependencies = [ [[package]] name = "glib" -version = "0.19.3" +version = "0.19.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01e191cc1af1f35b9699213107068cd3fe05d9816275ac118dc785a0dd8faebf" +checksum = "b664491bc77ab55daa6714a592cdbe1a55e28abec09cb50e87689b90de456ff4" dependencies = [ - "bitflags 2.5.0", + "bitflags", "futures-channel", "futures-core", "futures-executor", @@ -546,9 +550,9 @@ dependencies = [ [[package]] name = "glib-macros" -version = "0.19.3" +version = "0.19.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9972bb91643d589c889654693a4f1d07697fdcb5d104b5c44fb68649ba1bf68d" +checksum = "1d405205a405182f95e637710850a8e82f25ba01fdd6baebc82dabeaf0883376" dependencies = [ "heck", "proc-macro-crate", @@ -559,9 +563,9 @@ dependencies = [ [[package]] name = "glib-sys" -version = "0.19.0" +version = "0.19.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630f097773d7c7a0bb3258df4e8157b47dc98bbfa0e60ad9ab56174813feced4" +checksum = "5c2dc18d3a82b0006d470b13304fbbb3e0a9bd4884cf985a60a7ed733ac2c4a5" dependencies = [ "libc", "system-deps", @@ -569,9 +573,9 @@ dependencies = [ [[package]] name = "gobject-sys" -version = "0.19.0" +version = "0.19.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e2b1080b9418dd0c58b498da3a5c826030343e0ef07bde6a955d28de54979" +checksum = "2e697e252d6e0416fd1d9e169bda51c0f1c926026c39ca21fbe8b1bb5c3b8b9e" dependencies = [ "glib-sys", "libc", @@ -580,9 +584,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "heck" @@ -648,9 +652,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.153" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libloading" @@ -659,7 +663,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" dependencies = [ "cfg-if", - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -699,15 +703,15 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -719,20 +723,11 @@ version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" -[[package]] -name = "malloc_buf" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -dependencies = [ - "libc", -] - [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "minimal-lexical" @@ -742,20 +737,20 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", ] [[package]] name = "napi" -version = "2.16.0" +version = "2.16.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a63d0570e4c3e0daf7a8d380563610e159f538e20448d6c911337246f40e84" +checksum = "dfc300228808a0e6aea5a58115c82889240bcf8dab16fc25ad675b33e454b368" dependencies = [ - "bitflags 2.5.0", + "bitflags", "ctor", "napi-derive", "napi-sys", @@ -765,15 +760,15 @@ dependencies = [ [[package]] name = "napi-build" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f9130fccc5f763cf2069b34a089a18f0d0883c66aceb81f2fad541a3d823c43" +checksum = "e1c0f5d67ee408a4685b61f5ab7e58605c8ae3f2b4189f0127d804ff13d5560a" [[package]] name = "napi-derive" -version = "2.16.0" +version = "2.16.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05bb7c37e3c1dda9312fdbe4a9fc7507fca72288ba154ec093e2d49114e727ce" +checksum = "e0e034ddf6155192cf83f267ede763fe6c164dfa9971585436b16173718d94c4" dependencies = [ "cfg-if", "convert_case", @@ -785,9 +780,9 @@ dependencies = [ [[package]] name = "napi-derive-backend" -version = "1.0.63" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce5126b64f6ad9e28e30e6d15213dd378626b38f556454afebc42f7f02a90902" +checksum = "bff2c00437f3b3266391eb5e6aa25d0029187daf5caf05b8e3271468fb5ae73e" dependencies = [ "convert_case", "once_cell", @@ -800,9 +795,9 @@ dependencies = [ [[package]] name = "napi-sys" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2503fa6af34dc83fb74888df8b22afe933b58d37daf7d80424b1c60c68196b8b" +checksum = "427802e8ec3a734331fec1035594a210ce1ff4dc5bc1950530920ab717964ea3" dependencies = [ "libloading", ] @@ -813,7 +808,7 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ - "bitflags 2.5.0", + "bitflags", "cfg-if", "cfg_aliases", "libc", @@ -840,39 +835,109 @@ dependencies = [ ] [[package]] -name = "objc" -version = "0.2.7" +name = "objc-sys" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" dependencies = [ - "malloc_buf", + "objc-sys", + "objc2-encode", ] [[package]] -name = "objc-foundation" -version = "0.1.1" +name = "objc2-app-kit" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "block", - "objc", - "objc_id", + "bitflags", + "block2", + "libc", + "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", ] [[package]] -name = "objc_id" -version = "0.1.1" +name = "objc2-core-data" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "objc", + "bitflags", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-encode" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", ] [[package]] name = "object" -version = "0.32.2" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "576dfe1fc8f9df304abb159d767a29d0476f7750fbf8aa7ad07816004a207434" dependencies = [ "memchr", ] @@ -885,9 +950,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "os_pipe" -version = "1.1.5" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57119c3b893986491ec9aa85056780d3a0f3cf4da7cc09dd3650dbd6c6738fb9" +checksum = "29d73ba8daf8fac13b0501d1abeddcfe21ba7401ada61a819144b6c2a4f32209" dependencies = [ "libc", "windows-sys", @@ -895,9 +960,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -905,22 +970,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] name = "petgraph" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", "indexmap", @@ -961,9 +1026,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.79" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" dependencies = [ "unicode-ident", ] @@ -979,9 +1044,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -1018,18 +1083,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" dependencies = [ - "bitflags 1.3.2", + "bitflags", ] [[package]] name = "regex" -version = "1.10.4" +version = "1.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" dependencies = [ "aho-corasick", "memchr", @@ -1039,9 +1104,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", @@ -1050,9 +1115,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "retry" @@ -1065,17 +1130,17 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustix" -version = "0.38.32" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.5.0", + "bitflags", "errno", "libc", "linux-raw-sys", @@ -1102,11 +1167,11 @@ checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152" [[package]] name = "security-framework" -version = "2.9.2" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" dependencies = [ - "bitflags 1.3.2", + "bitflags", "core-foundation", "core-foundation-sys", "libc", @@ -1115,9 +1180,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" dependencies = [ "core-foundation-sys", "libc", @@ -1125,24 +1190,24 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.197" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", @@ -1151,9 +1216,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" dependencies = [ "serde", ] @@ -1186,9 +1251,9 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" -version = "2.0.58" +version = "2.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" +checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" dependencies = [ "proc-macro2", "quote", @@ -1237,18 +1302,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", @@ -1257,9 +1322,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.37.0" +version = "1.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" dependencies = [ "backtrace", "num_cpus", @@ -1268,21 +1333,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.12" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" +checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.9", + "toml_edit 0.22.14", ] [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" dependencies = [ "serde", ] @@ -1300,22 +1365,22 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.9" +version = "0.22.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4" +checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.5", + "winnow 0.6.13", ] [[package]] name = "tree_magic_mini" -version = "3.1.4" +version = "3.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ee137597cdb361b55a4746983e4ac1b35ab6024396a419944ad473bb915265" +checksum = "469a727cac55b41448315cc10427c069c618ac59bb6a4480283fcd811749bdc2" dependencies = [ "fnv", "home", @@ -1345,9 +1410,9 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "version-compare" @@ -1369,9 +1434,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wayland-backend" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40" +checksum = "34e9e6b6d4a2bb4e7e69433e0b35c7923b95d4dc8503a84d25ec917a4bbfdf07" dependencies = [ "cc", "downcast-rs", @@ -1383,11 +1448,11 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.2" +version = "0.31.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" +checksum = "1e63801c85358a431f986cffa74ba9599ff571fc5774ac113ed3b490c19a1133" dependencies = [ - "bitflags 2.5.0", + "bitflags", "rustix", "wayland-backend", "wayland-scanner", @@ -1399,7 +1464,7 @@ version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" dependencies = [ - "bitflags 2.5.0", + "bitflags", "wayland-backend", "wayland-client", "wayland-scanner", @@ -1411,7 +1476,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" dependencies = [ - "bitflags 2.5.0", + "bitflags", "wayland-backend", "wayland-client", "wayland-protocols", @@ -1420,9 +1485,9 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.31.1" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283" +checksum = "67da50b9f80159dec0ea4c11c13e24ef9e7574bd6ce24b01860a175010cea565" dependencies = [ "proc-macro2", "quick-xml", @@ -1431,9 +1496,9 @@ dependencies = [ [[package]] name = "wayland-sys" -version = "0.31.1" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" +checksum = "105b1842da6554f91526c14a2a2172897b7f745a805d62af4ce698706be79c12" dependencies = [ "dlib", "log", @@ -1442,68 +1507,70 @@ dependencies = [ [[package]] name = "widestring" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "winapi", + "windows-sys", ] -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - [[package]] name = "windows" -version = "0.54.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" dependencies = [ "windows-core", - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] name = "windows-core" -version = "0.54.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" dependencies = [ + "windows-implement", + "windows-interface", "windows-result", - "windows-targets 0.52.4", + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-implement" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn", ] [[package]] name = "windows-result" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd19df78e5168dfb0aedc343d1d1b8d422ab2db6756d2dc3fef75035402a3f64" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -1512,7 +1579,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -1532,17 +1599,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" dependencies = [ - "windows_aarch64_gnullvm 0.52.4", - "windows_aarch64_msvc 0.52.4", - "windows_i686_gnu 0.52.4", - "windows_i686_msvc 0.52.4", - "windows_x86_64_gnu 0.52.4", - "windows_x86_64_gnullvm 0.52.4", - "windows_x86_64_msvc 0.52.4", + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", ] [[package]] @@ -1553,9 +1621,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" @@ -1565,9 +1633,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" @@ -1577,9 +1645,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" @@ -1589,9 +1663,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" @@ -1601,9 +1675,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" [[package]] name = "windows_x86_64_gnullvm" @@ -1613,9 +1687,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" @@ -1625,9 +1699,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "winnow" @@ -1640,9 +1714,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.5" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" +checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" dependencies = [ "memchr", ] @@ -1669,9 +1743,9 @@ dependencies = [ [[package]] name = "x11rb" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a" +checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" dependencies = [ "gethostname", "rustix", @@ -1680,6 +1754,6 @@ dependencies = [ [[package]] name = "x11rb-protocol" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34" +checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" diff --git a/apps/desktop/desktop_native/Cargo.toml b/apps/desktop/desktop_native/Cargo.toml index cded3d57ef..c6b77473b2 100644 --- a/apps/desktop/desktop_native/Cargo.toml +++ b/apps/desktop/desktop_native/Cargo.toml @@ -1,57 +1,3 @@ -[package] -edition = "2021" -exclude = ["index.node"] -license = "GPL-3.0" -name = "desktop_native" -version = "0.0.0" - -[lib] -crate-type = ["cdylib"] - -[features] -default = [] -manual_test = [] - -[dependencies] -aes = "=0.8.4" -anyhow = "=1.0.86" -arboard = { version = "=3.3.2", default-features = false, features = ["wayland-data-control"] } -base64 = "=0.22.1" -cbc = { version = "=0.1.2", features = ["alloc"] } -napi = { version = "=2.16.0", features = ["async"] } -napi-derive = "=2.16.0" -rand = "=0.8.5" -retry = "=2.0.0" -scopeguard = "=1.2.0" -sha2 = "=0.10.8" -thiserror = "=1.0.58" -typenum = "=1.17.0" - -[build-dependencies] -napi-build = "=2.1.2" - -[target.'cfg(windows)'.dependencies] -widestring = "=1.0.2" -windows = { version = "=0.54.0", features = [ - "Foundation", - "Security_Credentials_UI", - "Security_Cryptography", - "Storage_Streams", - "Win32_Foundation", - "Win32_Security_Credentials", - "Win32_System_WinRT", - "Win32_UI_Input_KeyboardAndMouse", - "Win32_UI_WindowsAndMessaging", -] } - -[target.'cfg(windows)'.dev-dependencies] -keytar = "=0.1.6" - -[target.'cfg(target_os = "macos")'.dependencies] -core-foundation = "=0.9.4" -security-framework = "=2.9.2" -security-framework-sys = "=2.9.1" - -[target.'cfg(target_os = "linux")'.dependencies] -gio = "=0.19.2" -libsecret = "=0.5.0" +[workspace] +resolver = "2" +members = ["napi", "core"] diff --git a/apps/desktop/desktop_native/core/Cargo.toml b/apps/desktop/desktop_native/core/Cargo.toml new file mode 100644 index 0000000000..1beb2ee08c --- /dev/null +++ b/apps/desktop/desktop_native/core/Cargo.toml @@ -0,0 +1,51 @@ +[package] +edition = "2021" +license = "GPL-3.0" +name = "desktop_core" +version = "0.0.0" +publish = false + +[features] +default = [] +manual_test = [] + +[dependencies] +aes = "=0.8.4" +anyhow = "=1.0.86" +arboard = { version = "=3.4.0", default-features = false, features = [ + "wayland-data-control", +] } +base64 = "=0.22.1" +cbc = { version = "=0.1.2", features = ["alloc"] } +rand = "=0.8.5" +retry = "=2.0.0" +scopeguard = "=1.2.0" +sha2 = "=0.10.8" +thiserror = "=1.0.61" +typenum = "=1.17.0" + +[target.'cfg(windows)'.dependencies] +widestring = "=1.1.0" +windows = { version = "=0.57.0", features = [ + "Foundation", + "Security_Credentials_UI", + "Security_Cryptography", + "Storage_Streams", + "Win32_Foundation", + "Win32_Security_Credentials", + "Win32_System_WinRT", + "Win32_UI_Input_KeyboardAndMouse", + "Win32_UI_WindowsAndMessaging", +] } + +[target.'cfg(windows)'.dev-dependencies] +keytar = "=0.1.6" + +[target.'cfg(target_os = "macos")'.dependencies] +core-foundation = "=0.9.4" +security-framework = "=2.11.0" +security-framework-sys = "=2.11.0" + +[target.'cfg(target_os = "linux")'.dependencies] +gio = "=0.19.5" +libsecret = "=0.5.0" diff --git a/apps/desktop/desktop_native/src/biometric/macos.rs b/apps/desktop/desktop_native/core/src/biometric/macos.rs similarity index 94% rename from apps/desktop/desktop_native/src/biometric/macos.rs rename to apps/desktop/desktop_native/core/src/biometric/macos.rs index 9f0ecf83de..858615d2e7 100644 --- a/apps/desktop/desktop_native/src/biometric/macos.rs +++ b/apps/desktop/desktop_native/core/src/biometric/macos.rs @@ -1,6 +1,6 @@ use anyhow::{bail, Result}; -use crate::biometrics::{KeyMaterial, OsDerivedKey}; +use crate::biometric::{KeyMaterial, OsDerivedKey}; /// The MacOS implementation of the biometric trait. pub struct Biometric {} diff --git a/apps/desktop/desktop_native/src/biometric/mod.rs b/apps/desktop/desktop_native/core/src/biometric/mod.rs similarity index 80% rename from apps/desktop/desktop_native/src/biometric/mod.rs rename to apps/desktop/desktop_native/core/src/biometric/mod.rs index 0280647e8e..f61c4f0444 100644 --- a/apps/desktop/desktop_native/src/biometric/mod.rs +++ b/apps/desktop/desktop_native/core/src/biometric/mod.rs @@ -7,7 +7,15 @@ mod biometric; pub use biometric::Biometric; -use crate::biometrics::{KeyMaterial, OsDerivedKey}; +pub struct KeyMaterial { + pub os_key_part_b64: String, + pub client_key_part_b64: Option, +} + +pub struct OsDerivedKey { + pub key_b64: String, + pub iv_b64: String, +} pub trait BiometricTrait { fn prompt(hwnd: Vec, message: String) -> Result; diff --git a/apps/desktop/desktop_native/src/biometric/unix.rs b/apps/desktop/desktop_native/core/src/biometric/unix.rs similarity index 94% rename from apps/desktop/desktop_native/src/biometric/unix.rs rename to apps/desktop/desktop_native/core/src/biometric/unix.rs index 8b9d1a84bb..f9fe1ba57c 100644 --- a/apps/desktop/desktop_native/src/biometric/unix.rs +++ b/apps/desktop/desktop_native/core/src/biometric/unix.rs @@ -1,6 +1,6 @@ use anyhow::{bail, Result}; -use crate::biometrics::{KeyMaterial, OsDerivedKey}; +use crate::biometric::{KeyMaterial, OsDerivedKey}; /// The Unix implementation of the biometric trait. pub struct Biometric {} diff --git a/apps/desktop/desktop_native/src/biometric/windows.rs b/apps/desktop/desktop_native/core/src/biometric/windows.rs similarity index 99% rename from apps/desktop/desktop_native/src/biometric/windows.rs rename to apps/desktop/desktop_native/core/src/biometric/windows.rs index cb3b69273d..1f5929a3ad 100644 --- a/apps/desktop/desktop_native/src/biometric/windows.rs +++ b/apps/desktop/desktop_native/core/src/biometric/windows.rs @@ -29,7 +29,7 @@ use windows::{ }; use crate::{ - biometrics::{KeyMaterial, OsDerivedKey}, + biometric::{KeyMaterial, OsDerivedKey}, crypto::{self, CipherString}, }; diff --git a/apps/desktop/desktop_native/src/clipboard.rs b/apps/desktop/desktop_native/core/src/clipboard.rs similarity index 100% rename from apps/desktop/desktop_native/src/clipboard.rs rename to apps/desktop/desktop_native/core/src/clipboard.rs diff --git a/apps/desktop/desktop_native/src/crypto/cipher_string.rs b/apps/desktop/desktop_native/core/src/crypto/cipher_string.rs similarity index 100% rename from apps/desktop/desktop_native/src/crypto/cipher_string.rs rename to apps/desktop/desktop_native/core/src/crypto/cipher_string.rs diff --git a/apps/desktop/desktop_native/src/crypto/crypto.rs b/apps/desktop/desktop_native/core/src/crypto/crypto.rs similarity index 100% rename from apps/desktop/desktop_native/src/crypto/crypto.rs rename to apps/desktop/desktop_native/core/src/crypto/crypto.rs diff --git a/apps/desktop/desktop_native/src/crypto/mod.rs b/apps/desktop/desktop_native/core/src/crypto/mod.rs similarity index 100% rename from apps/desktop/desktop_native/src/crypto/mod.rs rename to apps/desktop/desktop_native/core/src/crypto/mod.rs diff --git a/apps/desktop/desktop_native/src/error.rs b/apps/desktop/desktop_native/core/src/error.rs similarity index 100% rename from apps/desktop/desktop_native/src/error.rs rename to apps/desktop/desktop_native/core/src/error.rs diff --git a/apps/desktop/desktop_native/core/src/lib.rs b/apps/desktop/desktop_native/core/src/lib.rs new file mode 100644 index 0000000000..4593306027 --- /dev/null +++ b/apps/desktop/desktop_native/core/src/lib.rs @@ -0,0 +1,5 @@ +pub mod biometric; +pub mod clipboard; +pub mod crypto; +pub mod error; +pub mod password; diff --git a/apps/desktop/desktop_native/src/password/macos.rs b/apps/desktop/desktop_native/core/src/password/macos.rs similarity index 100% rename from apps/desktop/desktop_native/src/password/macos.rs rename to apps/desktop/desktop_native/core/src/password/macos.rs diff --git a/apps/desktop/desktop_native/src/password/mod.rs b/apps/desktop/desktop_native/core/src/password/mod.rs similarity index 100% rename from apps/desktop/desktop_native/src/password/mod.rs rename to apps/desktop/desktop_native/core/src/password/mod.rs diff --git a/apps/desktop/desktop_native/src/password/unix.rs b/apps/desktop/desktop_native/core/src/password/unix.rs similarity index 100% rename from apps/desktop/desktop_native/src/password/unix.rs rename to apps/desktop/desktop_native/core/src/password/unix.rs diff --git a/apps/desktop/desktop_native/src/password/windows.rs b/apps/desktop/desktop_native/core/src/password/windows.rs similarity index 100% rename from apps/desktop/desktop_native/src/password/windows.rs rename to apps/desktop/desktop_native/core/src/password/windows.rs diff --git a/apps/desktop/desktop_native/napi/Cargo.toml b/apps/desktop/desktop_native/napi/Cargo.toml new file mode 100644 index 0000000000..942ccdba21 --- /dev/null +++ b/apps/desktop/desktop_native/napi/Cargo.toml @@ -0,0 +1,23 @@ +[package] +edition = "2021" +exclude = ["index.node"] +license = "GPL-3.0" +name = "desktop_napi" +version = "0.0.0" +publish = false + +[lib] +crate-type = ["cdylib"] + +[features] +default = [] +manual_test = [] + +[dependencies] +anyhow = "=1.0.86" +desktop_core = { path = "../core" } +napi = { version = "=2.16.6", features = ["async"] } +napi-derive = "=2.16.5" + +[build-dependencies] +napi-build = "=2.1.3" diff --git a/apps/desktop/desktop_native/build.js b/apps/desktop/desktop_native/napi/build.js similarity index 100% rename from apps/desktop/desktop_native/build.js rename to apps/desktop/desktop_native/napi/build.js diff --git a/apps/desktop/desktop_native/build.rs b/apps/desktop/desktop_native/napi/build.rs similarity index 100% rename from apps/desktop/desktop_native/build.rs rename to apps/desktop/desktop_native/napi/build.rs diff --git a/apps/desktop/desktop_native/index.d.ts b/apps/desktop/desktop_native/napi/index.d.ts similarity index 100% rename from apps/desktop/desktop_native/index.d.ts rename to apps/desktop/desktop_native/napi/index.d.ts diff --git a/apps/desktop/desktop_native/index.js b/apps/desktop/desktop_native/napi/index.js similarity index 63% rename from apps/desktop/desktop_native/index.js rename to apps/desktop/desktop_native/napi/index.js index 1cf7ea9434..75617ee2f1 100644 --- a/apps/desktop/desktop_native/index.js +++ b/apps/desktop/desktop_native/napi/index.js @@ -25,24 +25,24 @@ switch (platform) { case 'android': switch (arch) { case 'arm64': - localFileExisted = existsSync(join(__dirname, 'desktop_native.android-arm64.node')) + localFileExisted = existsSync(join(__dirname, 'desktop_napi.android-arm64.node')) try { if (localFileExisted) { - nativeBinding = require('./desktop_native.android-arm64.node') + nativeBinding = require('./desktop_napi.android-arm64.node') } else { - nativeBinding = require('@bitwarden/desktop-native-android-arm64') + nativeBinding = require('@bitwarden/desktop-napi-android-arm64') } } catch (e) { loadError = e } break case 'arm': - localFileExisted = existsSync(join(__dirname, 'desktop_native.android-arm-eabi.node')) + localFileExisted = existsSync(join(__dirname, 'desktop_napi.android-arm-eabi.node')) try { if (localFileExisted) { - nativeBinding = require('./desktop_native.android-arm-eabi.node') + nativeBinding = require('./desktop_napi.android-arm-eabi.node') } else { - nativeBinding = require('@bitwarden/desktop-native-android-arm-eabi') + nativeBinding = require('@bitwarden/desktop-napi-android-arm-eabi') } } catch (e) { loadError = e @@ -56,13 +56,13 @@ switch (platform) { switch (arch) { case 'x64': localFileExisted = existsSync( - join(__dirname, 'desktop_native.win32-x64-msvc.node') + join(__dirname, 'desktop_napi.win32-x64-msvc.node') ) try { if (localFileExisted) { - nativeBinding = require('./desktop_native.win32-x64-msvc.node') + nativeBinding = require('./desktop_napi.win32-x64-msvc.node') } else { - nativeBinding = require('@bitwarden/desktop-native-win32-x64-msvc') + nativeBinding = require('@bitwarden/desktop-napi-win32-x64-msvc') } } catch (e) { loadError = e @@ -70,13 +70,13 @@ switch (platform) { break case 'ia32': localFileExisted = existsSync( - join(__dirname, 'desktop_native.win32-ia32-msvc.node') + join(__dirname, 'desktop_napi.win32-ia32-msvc.node') ) try { if (localFileExisted) { - nativeBinding = require('./desktop_native.win32-ia32-msvc.node') + nativeBinding = require('./desktop_napi.win32-ia32-msvc.node') } else { - nativeBinding = require('@bitwarden/desktop-native-win32-ia32-msvc') + nativeBinding = require('@bitwarden/desktop-napi-win32-ia32-msvc') } } catch (e) { loadError = e @@ -84,13 +84,13 @@ switch (platform) { break case 'arm64': localFileExisted = existsSync( - join(__dirname, 'desktop_native.win32-arm64-msvc.node') + join(__dirname, 'desktop_napi.win32-arm64-msvc.node') ) try { if (localFileExisted) { - nativeBinding = require('./desktop_native.win32-arm64-msvc.node') + nativeBinding = require('./desktop_napi.win32-arm64-msvc.node') } else { - nativeBinding = require('@bitwarden/desktop-native-win32-arm64-msvc') + nativeBinding = require('@bitwarden/desktop-napi-win32-arm64-msvc') } } catch (e) { loadError = e @@ -103,12 +103,12 @@ switch (platform) { case 'darwin': switch (arch) { case 'x64': - localFileExisted = existsSync(join(__dirname, 'desktop_native.darwin-x64.node')) + localFileExisted = existsSync(join(__dirname, 'desktop_napi.darwin-x64.node')) try { if (localFileExisted) { - nativeBinding = require('./desktop_native.darwin-x64.node') + nativeBinding = require('./desktop_napi.darwin-x64.node') } else { - nativeBinding = require('@bitwarden/desktop-native-darwin-x64') + nativeBinding = require('@bitwarden/desktop-napi-darwin-x64') } } catch (e) { loadError = e @@ -116,13 +116,13 @@ switch (platform) { break case 'arm64': localFileExisted = existsSync( - join(__dirname, 'desktop_native.darwin-arm64.node') + join(__dirname, 'desktop_napi.darwin-arm64.node') ) try { if (localFileExisted) { - nativeBinding = require('./desktop_native.darwin-arm64.node') + nativeBinding = require('./desktop_napi.darwin-arm64.node') } else { - nativeBinding = require('@bitwarden/desktop-native-darwin-arm64') + nativeBinding = require('@bitwarden/desktop-napi-darwin-arm64') } } catch (e) { loadError = e @@ -136,12 +136,12 @@ switch (platform) { if (arch !== 'x64') { throw new Error(`Unsupported architecture on FreeBSD: ${arch}`) } - localFileExisted = existsSync(join(__dirname, 'desktop_native.freebsd-x64.node')) + localFileExisted = existsSync(join(__dirname, 'desktop_napi.freebsd-x64.node')) try { if (localFileExisted) { - nativeBinding = require('./desktop_native.freebsd-x64.node') + nativeBinding = require('./desktop_napi.freebsd-x64.node') } else { - nativeBinding = require('@bitwarden/desktop-native-freebsd-x64') + nativeBinding = require('@bitwarden/desktop-napi-freebsd-x64') } } catch (e) { loadError = e @@ -151,13 +151,13 @@ switch (platform) { switch (arch) { case 'x64': localFileExisted = existsSync( - join(__dirname, 'desktop_native.linux-x64-musl.node') + join(__dirname, 'desktop_napi.linux-x64-musl.node') ) try { if (localFileExisted) { - nativeBinding = require('./desktop_native.linux-x64-musl.node') + nativeBinding = require('./desktop_napi.linux-x64-musl.node') } else { - nativeBinding = require('@bitwarden/desktop-native-linux-x64-musl') + nativeBinding = require('@bitwarden/desktop-napi-linux-x64-musl') } } catch (e) { loadError = e @@ -165,13 +165,13 @@ switch (platform) { break case 'arm64': localFileExisted = existsSync( - join(__dirname, 'desktop_native.linux-arm64-musl.node') + join(__dirname, 'desktop_napi.linux-arm64-musl.node') ) try { if (localFileExisted) { - nativeBinding = require('./desktop_native.linux-arm64-musl.node') + nativeBinding = require('./desktop_napi.linux-arm64-musl.node') } else { - nativeBinding = require('@bitwarden/desktop-native-linux-arm64-musl') + nativeBinding = require('@bitwarden/desktop-napi-linux-arm64-musl') } } catch (e) { loadError = e @@ -179,13 +179,13 @@ switch (platform) { break case 'arm': localFileExisted = existsSync( - join(__dirname, 'desktop_native.linux-arm-gnueabihf.node') + join(__dirname, 'desktop_napi.linux-arm-gnueabihf.node') ) try { if (localFileExisted) { - nativeBinding = require('./desktop_native.linux-arm-gnueabihf.node') + nativeBinding = require('./desktop_napi.linux-arm-gnueabihf.node') } else { - nativeBinding = require('@bitwarden/desktop-native-linux-arm-gnueabihf') + nativeBinding = require('@bitwarden/desktop-napi-linux-arm-gnueabihf') } } catch (e) { loadError = e diff --git a/apps/desktop/desktop_native/package.json b/apps/desktop/desktop_native/napi/package.json similarity index 90% rename from apps/desktop/desktop_native/package.json rename to apps/desktop/desktop_native/napi/package.json index 4495804370..70e472b395 100644 --- a/apps/desktop/desktop_native/package.json +++ b/apps/desktop/desktop_native/napi/package.json @@ -1,5 +1,5 @@ { - "name": "@bitwarden/desktop-native", + "name": "@bitwarden/desktop-napi", "version": "0.1.0", "description": "", "scripts": { @@ -14,7 +14,7 @@ "@napi-rs/cli": "2.16.2" }, "napi": { - "name": "desktop_native", + "name": "desktop_napi", "triples": { "defaults": true, "additional": [ diff --git a/apps/desktop/desktop_native/src/lib.rs b/apps/desktop/desktop_native/napi/src/lib.rs similarity index 67% rename from apps/desktop/desktop_native/src/lib.rs rename to apps/desktop/desktop_native/napi/src/lib.rs index d00b95c47f..e2e7eb7244 100644 --- a/apps/desktop/desktop_native/src/lib.rs +++ b/apps/desktop/desktop_native/napi/src/lib.rs @@ -1,25 +1,19 @@ #[macro_use] extern crate napi_derive; -mod biometric; -mod clipboard; -mod crypto; -mod error; -mod password; - #[napi] pub mod passwords { /// Fetch the stored password from the keychain. #[napi] pub async fn get_password(service: String, account: String) -> napi::Result { - super::password::get_password(&service, &account) + desktop_core::password::get_password(&service, &account) .map_err(|e| napi::Error::from_reason(e.to_string())) } /// Fetch the stored password from the keychain that was stored with Keytar. #[napi] pub async fn get_password_keytar(service: String, account: String) -> napi::Result { - super::password::get_password_keytar(&service, &account) + desktop_core::password::get_password_keytar(&service, &account) .map_err(|e| napi::Error::from_reason(e.to_string())) } @@ -30,21 +24,21 @@ pub mod passwords { account: String, password: String, ) -> napi::Result<()> { - super::password::set_password(&service, &account, &password) + desktop_core::password::set_password(&service, &account, &password) .map_err(|e| napi::Error::from_reason(e.to_string())) } /// Delete the stored password from the keychain. #[napi] pub async fn delete_password(service: String, account: String) -> napi::Result<()> { - super::password::delete_password(&service, &account) + desktop_core::password::delete_password(&service, &account) .map_err(|e| napi::Error::from_reason(e.to_string())) } } #[napi] pub mod biometrics { - use super::biometric::{Biometric, BiometricTrait}; + use desktop_core::biometric::{Biometric, BiometricTrait}; // Prompt for biometric confirmation #[napi] @@ -68,8 +62,14 @@ pub mod biometrics { key_material: Option, iv_b64: String, ) -> napi::Result { - Biometric::set_biometric_secret(&service, &account, &secret, key_material, &iv_b64) - .map_err(|e| napi::Error::from_reason(e.to_string())) + Biometric::set_biometric_secret( + &service, + &account, + &secret, + key_material.map(|m| m.into()), + &iv_b64, + ) + .map_err(|e| napi::Error::from_reason(e.to_string())) } #[napi] @@ -78,8 +78,9 @@ pub mod biometrics { account: String, key_material: Option, ) -> napi::Result { - let result = Biometric::get_biometric_secret(&service, &account, key_material) - .map_err(|e| napi::Error::from_reason(e.to_string())); + let result = + Biometric::get_biometric_secret(&service, &account, key_material.map(|m| m.into())) + .map_err(|e| napi::Error::from_reason(e.to_string())); result } @@ -93,6 +94,7 @@ pub mod biometrics { #[napi] pub async fn derive_key_material(iv: Option) -> napi::Result { Biometric::derive_key_material(iv.as_deref()) + .map(|k| k.into()) .map_err(|e| napi::Error::from_reason(e.to_string())) } @@ -102,23 +104,41 @@ pub mod biometrics { pub client_key_part_b64: Option, } + impl From for desktop_core::biometric::KeyMaterial { + fn from(km: KeyMaterial) -> Self { + desktop_core::biometric::KeyMaterial { + os_key_part_b64: km.os_key_part_b64, + client_key_part_b64: km.client_key_part_b64, + } + } + } + #[napi(object)] pub struct OsDerivedKey { pub key_b64: String, pub iv_b64: String, } + + impl From for OsDerivedKey { + fn from(km: desktop_core::biometric::OsDerivedKey) -> Self { + OsDerivedKey { + key_b64: km.key_b64, + iv_b64: km.iv_b64, + } + } + } } #[napi] pub mod clipboards { #[napi] pub async fn read() -> napi::Result { - super::clipboard::read().map_err(|e| napi::Error::from_reason(e.to_string())) + desktop_core::clipboard::read().map_err(|e| napi::Error::from_reason(e.to_string())) } #[napi] pub async fn write(text: String, password: bool) -> napi::Result<()> { - super::clipboard::write(&text, password) + desktop_core::clipboard::write(&text, password) .map_err(|e| napi::Error::from_reason(e.to_string())) } } diff --git a/apps/desktop/electron-builder.json b/apps/desktop/electron-builder.json index 85fd88657c..661d47a5a2 100644 --- a/apps/desktop/electron-builder.json +++ b/apps/desktop/electron-builder.json @@ -15,9 +15,9 @@ "asarUnpack": ["**/*.node"], "files": [ "**/*", - "!**/node_modules/@bitwarden/desktop-native/**/*", - "**/node_modules/@bitwarden/desktop-native/index.js", - "**/node_modules/@bitwarden/desktop-native/desktop_native.${platform}-${arch}*.node", + "!**/node_modules/@bitwarden/desktop-napi/**/*", + "**/node_modules/@bitwarden/desktop-napi/index.js", + "**/node_modules/@bitwarden/desktop-napi/desktop_napi.${platform}-${arch}*.node", "!**/node_modules/argon2/**/*", "**/node_modules/argon2/argon2.cjs", @@ -71,7 +71,7 @@ ], "CFBundleDevelopmentRegion": "en" }, - "singleArchFiles": "node_modules/@bitwarden/desktop-native/desktop_native.darwin-*.node", + "singleArchFiles": "node_modules/@bitwarden/desktop-napi/desktop_napi.darwin-*.node", "target": ["dmg", "zip"] }, "win": { diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 697ab88ae9..996ab4709a 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -18,7 +18,7 @@ "scripts": { "postinstall": "electron-rebuild", "start": "cross-env ELECTRON_IS_DEV=0 ELECTRON_NO_UPDATER=1 electron ./build", - "build-native": "cd desktop_native && npm run build", + "build-native": "cd desktop_native/napi && npm run build", "build": "concurrently -n Main,Rend,Prel -c yellow,cyan \"npm run build:main\" \"npm run build:renderer\" \"npm run build:preload\"", "build:dev": "concurrently -n Main,Rend -c yellow,cyan \"npm run build:main:dev\" \"npm run build:renderer:dev\"", "build:preload": "cross-env NODE_ENV=production webpack --config webpack.preload.js", diff --git a/apps/desktop/src/package-lock.json b/apps/desktop/src/package-lock.json index 1463087bd3..9986bd3308 100644 --- a/apps/desktop/src/package-lock.json +++ b/apps/desktop/src/package-lock.json @@ -9,7 +9,7 @@ "version": "2024.6.6", "license": "GPL-3.0", "dependencies": { - "@bitwarden/desktop-native": "file:../desktop_native", + "@bitwarden/desktop-napi": "file:../desktop_native", "argon2": "0.40.1" } }, @@ -21,7 +21,7 @@ "@napi-rs/cli": "2.16.2" } }, - "node_modules/@bitwarden/desktop-native": { + "node_modules/@bitwarden/desktop-napi": { "resolved": "../desktop_native", "link": true }, diff --git a/apps/desktop/src/package.json b/apps/desktop/src/package.json index 2030c29189..31130435e4 100644 --- a/apps/desktop/src/package.json +++ b/apps/desktop/src/package.json @@ -12,7 +12,7 @@ "url": "git+https://github.com/bitwarden/clients.git" }, "dependencies": { - "@bitwarden/desktop-native": "file:../desktop_native", + "@bitwarden/desktop-napi": "file:../desktop_native/napi", "argon2": "0.40.1" } } diff --git a/apps/desktop/src/platform/main/biometric/biometric.darwin.main.ts b/apps/desktop/src/platform/main/biometric/biometric.darwin.main.ts index 169ee871c7..e1a5c3da9a 100644 --- a/apps/desktop/src/platform/main/biometric/biometric.darwin.main.ts +++ b/apps/desktop/src/platform/main/biometric/biometric.darwin.main.ts @@ -1,7 +1,7 @@ import { systemPreferences } from "electron"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; -import { passwords } from "@bitwarden/desktop-native"; +import { passwords } from "@bitwarden/desktop-napi"; import { OsBiometricService } from "./biometrics.service.abstraction"; diff --git a/apps/desktop/src/platform/main/biometric/biometric.windows.main.ts b/apps/desktop/src/platform/main/biometric/biometric.windows.main.ts index b715e852b3..75d5bce8f5 100644 --- a/apps/desktop/src/platform/main/biometric/biometric.windows.main.ts +++ b/apps/desktop/src/platform/main/biometric/biometric.windows.main.ts @@ -2,7 +2,7 @@ import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.servic import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { EncString } from "@bitwarden/common/platform/models/domain/enc-string"; import { SymmetricCryptoKey } from "@bitwarden/common/platform/models/domain/symmetric-crypto-key"; -import { biometrics, passwords } from "@bitwarden/desktop-native"; +import { biometrics, passwords } from "@bitwarden/desktop-napi"; import { WindowMain } from "../../../main/window.main"; diff --git a/apps/desktop/src/platform/main/biometric/biometrics.service.spec.ts b/apps/desktop/src/platform/main/biometric/biometrics.service.spec.ts index ef8510dd67..cb6bb4858c 100644 --- a/apps/desktop/src/platform/main/biometric/biometrics.service.spec.ts +++ b/apps/desktop/src/platform/main/biometric/biometrics.service.spec.ts @@ -13,7 +13,7 @@ import BiometricWindowsMain from "./biometric.windows.main"; import { BiometricsService } from "./biometrics.service"; import { OsBiometricService } from "./biometrics.service.abstraction"; -jest.mock("@bitwarden/desktop-native", () => { +jest.mock("@bitwarden/desktop-napi", () => { return { biometrics: jest.fn(), passwords: jest.fn(), diff --git a/apps/desktop/src/platform/main/clipboard.main.ts b/apps/desktop/src/platform/main/clipboard.main.ts index c60932b33b..5ca6aa2952 100644 --- a/apps/desktop/src/platform/main/clipboard.main.ts +++ b/apps/desktop/src/platform/main/clipboard.main.ts @@ -1,6 +1,6 @@ import { ipcMain } from "electron"; -import { clipboards } from "@bitwarden/desktop-native"; +import { clipboards } from "@bitwarden/desktop-napi"; import { ClipboardWriteMessage } from "../types/clipboard"; diff --git a/apps/desktop/src/platform/main/desktop-credential-storage-listener.ts b/apps/desktop/src/platform/main/desktop-credential-storage-listener.ts index b0601428e0..adc7935e05 100644 --- a/apps/desktop/src/platform/main/desktop-credential-storage-listener.ts +++ b/apps/desktop/src/platform/main/desktop-credential-storage-listener.ts @@ -2,7 +2,7 @@ import { ipcMain } from "electron"; import { BiometricKey } from "@bitwarden/common/auth/types/biometric-key"; import { ConsoleLogService } from "@bitwarden/common/platform/services/console-log.service"; -import { passwords } from "@bitwarden/desktop-native"; +import { passwords } from "@bitwarden/desktop-napi"; import { BiometricMessage, BiometricAction } from "../../types/biometric-message"; diff --git a/apps/desktop/webpack.main.js b/apps/desktop/webpack.main.js index 83577fcd62..d52a947e36 100644 --- a/apps/desktop/webpack.main.js +++ b/apps/desktop/webpack.main.js @@ -80,7 +80,7 @@ const main = { ], externals: { "electron-reload": "commonjs2 electron-reload", - "@bitwarden/desktop-native": "commonjs2 @bitwarden/desktop-native", + "@bitwarden/desktop-napi": "commonjs2 @bitwarden/desktop-napi", argon2: "commonjs2 argon2", }, diff --git a/package-lock.json b/package-lock.json index d26d8d36e6..aeb2f3cd22 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "license": "GPL-3.0", "workspaces": [ "apps/*", - "apps/desktop/desktop_native", + "apps/desktop/desktop_native/napi", "libs/*" ], "dependencies": { @@ -239,8 +239,8 @@ "hasInstallScript": true, "license": "GPL-3.0" }, - "apps/desktop/desktop_native": { - "name": "@bitwarden/desktop-native", + "apps/desktop/desktop_native/napi": { + "name": "@bitwarden/desktop-napi", "version": "0.1.0", "license": "GPL-3.0", "devDependencies": { @@ -4394,8 +4394,8 @@ "resolved": "apps/desktop", "link": true }, - "node_modules/@bitwarden/desktop-native": { - "resolved": "apps/desktop/desktop_native", + "node_modules/@bitwarden/desktop-napi": { + "resolved": "apps/desktop/desktop_native/napi", "link": true }, "node_modules/@bitwarden/importer": { diff --git a/package.json b/package.json index 6c9cd1fe55..46cd02b391 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ }, "workspaces": [ "apps/*", - "apps/desktop/desktop_native", + "apps/desktop/desktop_native/napi", "libs/*" ], "devDependencies": {