[READ-ONLY] Mirror of https://github.com/probablykasper/ferrum. Music library app for Mac, Linux and Windows ferrum.kasper.space
electron linux macos music music-library music-player napi windows
0

Configure Feed

Select the types of activity you want to include in your feed.

Create sqlite db file

Kasper (Jun 9, 2026, 1:01 AM +0200) 7cb4f440 a3e60af2

+776 -52
+719 -31
Cargo.lock
··· 24 24 checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" 25 25 26 26 [[package]] 27 + name = "ahash" 28 + version = "0.8.12" 29 + source = "registry+https://github.com/rust-lang/crates.io-index" 30 + checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" 31 + dependencies = [ 32 + "cfg-if", 33 + "getrandom 0.3.3", 34 + "once_cell", 35 + "version_check", 36 + "zerocopy", 37 + ] 38 + 39 + [[package]] 27 40 name = "aho-corasick" 28 41 version = "1.1.4" 29 42 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 97 110 source = "registry+https://github.com/rust-lang/crates.io-index" 98 111 checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" 99 112 dependencies = [ 100 - "event-listener", 113 + "event-listener 5.4.1", 101 114 "event-listener-strategy", 102 115 "futures-core", 103 116 "pin-project-lite", ··· 153 166 source = "registry+https://github.com/rust-lang/crates.io-index" 154 167 checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" 155 168 dependencies = [ 156 - "event-listener", 169 + "event-listener 5.4.1", 157 170 "event-listener-strategy", 158 171 "pin-project-lite", 159 172 ] ··· 171 184 "async-task", 172 185 "blocking", 173 186 "cfg-if", 174 - "event-listener", 187 + "event-listener 5.4.1", 175 188 "futures-lite", 176 189 "rustix 1.1.2", 177 190 ] ··· 246 259 ] 247 260 248 261 [[package]] 262 + name = "atoi" 263 + version = "2.0.0" 264 + source = "registry+https://github.com/rust-lang/crates.io-index" 265 + checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" 266 + dependencies = [ 267 + "num-traits", 268 + ] 269 + 270 + [[package]] 249 271 name = "atomic-waker" 250 272 version = "1.1.2" 251 273 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 294 316 version = "0.22.1" 295 317 source = "registry+https://github.com/rust-lang/crates.io-index" 296 318 checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 319 + 320 + [[package]] 321 + name = "base64ct" 322 + version = "1.8.3" 323 + source = "registry+https://github.com/rust-lang/crates.io-index" 324 + checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" 297 325 298 326 [[package]] 299 327 name = "bitflags" ··· 458 486 "semver", 459 487 "serde", 460 488 "serde_json", 461 - "thiserror 2.0.16", 489 + "thiserror 2.0.18", 462 490 ] 463 491 464 492 [[package]] ··· 554 582 ] 555 583 556 584 [[package]] 585 + name = "const-oid" 586 + version = "0.9.6" 587 + source = "registry+https://github.com/rust-lang/crates.io-index" 588 + checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" 589 + 590 + [[package]] 557 591 name = "convert_case" 558 592 version = "0.4.0" 559 593 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 628 662 ] 629 663 630 664 [[package]] 665 + name = "crc" 666 + version = "3.4.0" 667 + source = "registry+https://github.com/rust-lang/crates.io-index" 668 + checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" 669 + dependencies = [ 670 + "crc-catalog", 671 + ] 672 + 673 + [[package]] 674 + name = "crc-catalog" 675 + version = "2.5.0" 676 + source = "registry+https://github.com/rust-lang/crates.io-index" 677 + checksum = "217698eaf96b4a3f0bc4f3662aaa55bdf913cd54d7204591faa790070c6d0853" 678 + 679 + [[package]] 631 680 name = "crc32fast" 632 681 version = "1.5.0" 633 682 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 660 709 version = "0.9.18" 661 710 source = "registry+https://github.com/rust-lang/crates.io-index" 662 711 checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 712 + dependencies = [ 713 + "crossbeam-utils", 714 + ] 715 + 716 + [[package]] 717 + name = "crossbeam-queue" 718 + version = "0.3.12" 719 + source = "registry+https://github.com/rust-lang/crates.io-index" 720 + checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" 663 721 dependencies = [ 664 722 "crossbeam-utils", 665 723 ] ··· 775 833 checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" 776 834 777 835 [[package]] 836 + name = "der" 837 + version = "0.7.10" 838 + source = "registry+https://github.com/rust-lang/crates.io-index" 839 + checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" 840 + dependencies = [ 841 + "const-oid", 842 + "pem-rfc7468", 843 + "zeroize", 844 + ] 845 + 846 + [[package]] 778 847 name = "deranged" 779 848 version = "0.5.3" 780 849 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 804 873 checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 805 874 dependencies = [ 806 875 "block-buffer", 876 + "const-oid", 807 877 "crypto-common", 878 + "subtle", 808 879 ] 809 880 810 881 [[package]] ··· 911 982 ] 912 983 913 984 [[package]] 985 + name = "dotenvy" 986 + version = "0.15.7" 987 + source = "registry+https://github.com/rust-lang/crates.io-index" 988 + checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" 989 + 990 + [[package]] 914 991 name = "dpi" 915 992 version = "0.1.2" 916 993 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 966 1043 version = "1.15.0" 967 1044 source = "registry+https://github.com/rust-lang/crates.io-index" 968 1045 checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" 1046 + dependencies = [ 1047 + "serde", 1048 + ] 969 1049 970 1050 [[package]] 971 1051 name = "embed-resource" ··· 1052 1132 ] 1053 1133 1054 1134 [[package]] 1135 + name = "etcetera" 1136 + version = "0.8.0" 1137 + source = "registry+https://github.com/rust-lang/crates.io-index" 1138 + checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" 1139 + dependencies = [ 1140 + "cfg-if", 1141 + "home", 1142 + "windows-sys 0.48.0", 1143 + ] 1144 + 1145 + [[package]] 1146 + name = "event-listener" 1147 + version = "2.5.3" 1148 + source = "registry+https://github.com/rust-lang/crates.io-index" 1149 + checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" 1150 + 1151 + [[package]] 1055 1152 name = "event-listener" 1056 1153 version = "5.4.1" 1057 1154 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1068 1165 source = "registry+https://github.com/rust-lang/crates.io-index" 1069 1166 checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" 1070 1167 dependencies = [ 1071 - "event-listener", 1168 + "event-listener 5.4.1", 1072 1169 "pin-project-lite", 1073 1170 ] 1074 1171 ··· 1083 1180 "document-features", 1084 1181 "image", 1085 1182 "num-traits", 1086 - "thiserror 2.0.16", 1183 + "thiserror 2.0.18", 1087 1184 ] 1088 1185 1089 1186 [[package]] ··· 1128 1225 "serde_json", 1129 1226 "simd-json", 1130 1227 "specta", 1228 + "sqlx", 1131 1229 "time", 1132 1230 "tokio", 1133 1231 "trash", ··· 1196 1294 ] 1197 1295 1198 1296 [[package]] 1297 + name = "flume" 1298 + version = "0.11.1" 1299 + source = "registry+https://github.com/rust-lang/crates.io-index" 1300 + checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" 1301 + dependencies = [ 1302 + "futures-core", 1303 + "futures-sink", 1304 + "spin", 1305 + ] 1306 + 1307 + [[package]] 1199 1308 name = "fnv" 1200 1309 version = "1.0.7" 1201 1310 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1260 1369 checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" 1261 1370 dependencies = [ 1262 1371 "futures-core", 1372 + "futures-sink", 1263 1373 ] 1264 1374 1265 1375 [[package]] ··· 1277 1387 "futures-core", 1278 1388 "futures-task", 1279 1389 "futures-util", 1390 + ] 1391 + 1392 + [[package]] 1393 + name = "futures-intrusive" 1394 + version = "0.5.0" 1395 + source = "registry+https://github.com/rust-lang/crates.io-index" 1396 + checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" 1397 + dependencies = [ 1398 + "futures-core", 1399 + "lock_api", 1400 + "parking_lot", 1280 1401 ] 1281 1402 1282 1403 [[package]] ··· 1690 1811 1691 1812 [[package]] 1692 1813 name = "hashbrown" 1814 + version = "0.14.5" 1815 + source = "registry+https://github.com/rust-lang/crates.io-index" 1816 + checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 1817 + dependencies = [ 1818 + "ahash", 1819 + "allocator-api2", 1820 + ] 1821 + 1822 + [[package]] 1823 + name = "hashbrown" 1693 1824 version = "0.15.5" 1694 1825 source = "registry+https://github.com/rust-lang/crates.io-index" 1695 1826 checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" ··· 1704 1835 version = "0.16.1" 1705 1836 source = "registry+https://github.com/rust-lang/crates.io-index" 1706 1837 checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" 1838 + 1839 + [[package]] 1840 + name = "hashlink" 1841 + version = "0.8.4" 1842 + source = "registry+https://github.com/rust-lang/crates.io-index" 1843 + checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" 1844 + dependencies = [ 1845 + "hashbrown 0.14.5", 1846 + ] 1707 1847 1708 1848 [[package]] 1709 1849 name = "heck" 1710 1850 version = "0.4.1" 1711 1851 source = "registry+https://github.com/rust-lang/crates.io-index" 1712 1852 checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 1853 + dependencies = [ 1854 + "unicode-segmentation", 1855 + ] 1713 1856 1714 1857 [[package]] 1715 1858 name = "heck" ··· 1728 1871 version = "0.4.3" 1729 1872 source = "registry+https://github.com/rust-lang/crates.io-index" 1730 1873 checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1874 + 1875 + [[package]] 1876 + name = "hkdf" 1877 + version = "0.12.4" 1878 + source = "registry+https://github.com/rust-lang/crates.io-index" 1879 + checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" 1880 + dependencies = [ 1881 + "hmac", 1882 + ] 1883 + 1884 + [[package]] 1885 + name = "hmac" 1886 + version = "0.12.1" 1887 + source = "registry+https://github.com/rust-lang/crates.io-index" 1888 + checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 1889 + dependencies = [ 1890 + "digest", 1891 + ] 1892 + 1893 + [[package]] 1894 + name = "home" 1895 + version = "0.5.12" 1896 + source = "registry+https://github.com/rust-lang/crates.io-index" 1897 + checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" 1898 + dependencies = [ 1899 + "windows-sys 0.61.0", 1900 + ] 1731 1901 1732 1902 [[package]] 1733 1903 name = "html5ever" ··· 2181 2351 version = "1.5.0" 2182 2352 source = "registry+https://github.com/rust-lang/crates.io-index" 2183 2353 checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 2354 + dependencies = [ 2355 + "spin", 2356 + ] 2184 2357 2185 2358 [[package]] 2186 2359 name = "leb128fmt" ··· 2239 2412 ] 2240 2413 2241 2414 [[package]] 2415 + name = "libm" 2416 + version = "0.2.16" 2417 + source = "registry+https://github.com/rust-lang/crates.io-index" 2418 + checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" 2419 + 2420 + [[package]] 2242 2421 name = "libmimalloc-sys" 2243 2422 version = "0.1.44" 2244 2423 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2256 2435 dependencies = [ 2257 2436 "bitflags 2.9.4", 2258 2437 "libc", 2438 + "redox_syscall", 2439 + ] 2440 + 2441 + [[package]] 2442 + name = "libsqlite3-sys" 2443 + version = "0.27.0" 2444 + source = "registry+https://github.com/rust-lang/crates.io-index" 2445 + checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716" 2446 + dependencies = [ 2447 + "cc", 2448 + "pkg-config", 2449 + "vcpkg", 2259 2450 ] 2260 2451 2261 2452 [[package]] ··· 2370 2561 checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" 2371 2562 2372 2563 [[package]] 2564 + name = "md-5" 2565 + version = "0.10.6" 2566 + source = "registry+https://github.com/rust-lang/crates.io-index" 2567 + checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" 2568 + dependencies = [ 2569 + "cfg-if", 2570 + "digest", 2571 + ] 2572 + 2573 + [[package]] 2373 2574 name = "memchr" 2374 2575 version = "2.7.5" 2375 2576 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2398 2599 version = "0.3.17" 2399 2600 source = "registry+https://github.com/rust-lang/crates.io-index" 2400 2601 checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 2602 + 2603 + [[package]] 2604 + name = "minimal-lexical" 2605 + version = "0.2.1" 2606 + source = "registry+https://github.com/rust-lang/crates.io-index" 2607 + checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 2401 2608 2402 2609 [[package]] 2403 2610 name = "miniz_oxide" ··· 2447 2654 "once_cell", 2448 2655 "png 0.17.16", 2449 2656 "serde", 2450 - "thiserror 2.0.16", 2657 + "thiserror 2.0.18", 2451 2658 "windows-sys 0.60.2", 2452 2659 ] 2453 2660 ··· 2581 2788 checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" 2582 2789 2583 2790 [[package]] 2791 + name = "nom" 2792 + version = "7.1.3" 2793 + source = "registry+https://github.com/rust-lang/crates.io-index" 2794 + checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 2795 + dependencies = [ 2796 + "memchr", 2797 + "minimal-lexical", 2798 + ] 2799 + 2800 + [[package]] 2801 + name = "num-bigint-dig" 2802 + version = "0.8.6" 2803 + source = "registry+https://github.com/rust-lang/crates.io-index" 2804 + checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" 2805 + dependencies = [ 2806 + "lazy_static", 2807 + "libm", 2808 + "num-integer", 2809 + "num-iter", 2810 + "num-traits", 2811 + "rand 0.8.5", 2812 + "smallvec", 2813 + "zeroize", 2814 + ] 2815 + 2816 + [[package]] 2584 2817 name = "num-conv" 2585 2818 version = "0.1.0" 2586 2819 source = "registry+https://github.com/rust-lang/crates.io-index" 2587 2820 checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 2588 2821 2589 2822 [[package]] 2823 + name = "num-integer" 2824 + version = "0.1.46" 2825 + source = "registry+https://github.com/rust-lang/crates.io-index" 2826 + checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 2827 + dependencies = [ 2828 + "num-traits", 2829 + ] 2830 + 2831 + [[package]] 2832 + name = "num-iter" 2833 + version = "0.1.45" 2834 + source = "registry+https://github.com/rust-lang/crates.io-index" 2835 + checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" 2836 + dependencies = [ 2837 + "autocfg", 2838 + "num-integer", 2839 + "num-traits", 2840 + ] 2841 + 2842 + [[package]] 2590 2843 name = "num-traits" 2591 2844 version = "0.2.19" 2592 2845 source = "registry+https://github.com/rust-lang/crates.io-index" 2593 2846 checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 2594 2847 dependencies = [ 2595 2848 "autocfg", 2849 + "libm", 2596 2850 ] 2597 2851 2598 2852 [[package]] ··· 3018 3272 checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" 3019 3273 3020 3274 [[package]] 3275 + name = "pem-rfc7468" 3276 + version = "0.7.0" 3277 + source = "registry+https://github.com/rust-lang/crates.io-index" 3278 + checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" 3279 + dependencies = [ 3280 + "base64ct", 3281 + ] 3282 + 3283 + [[package]] 3021 3284 name = "percent-encoding" 3022 3285 version = "2.3.2" 3023 3286 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3181 3444 ] 3182 3445 3183 3446 [[package]] 3447 + name = "pkcs1" 3448 + version = "0.7.5" 3449 + source = "registry+https://github.com/rust-lang/crates.io-index" 3450 + checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" 3451 + dependencies = [ 3452 + "der", 3453 + "pkcs8", 3454 + "spki", 3455 + ] 3456 + 3457 + [[package]] 3458 + name = "pkcs8" 3459 + version = "0.10.2" 3460 + source = "registry+https://github.com/rust-lang/crates.io-index" 3461 + checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" 3462 + dependencies = [ 3463 + "der", 3464 + "spki", 3465 + ] 3466 + 3467 + [[package]] 3184 3468 name = "pkg-config" 3185 3469 version = "0.3.32" 3186 3470 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3530 3814 dependencies = [ 3531 3815 "getrandom 0.2.16", 3532 3816 "libredox", 3533 - "thiserror 2.0.16", 3817 + "thiserror 2.0.18", 3534 3818 ] 3535 3819 3536 3820 [[package]] ··· 3641 3925 ] 3642 3926 3643 3927 [[package]] 3928 + name = "rsa" 3929 + version = "0.9.10" 3930 + source = "registry+https://github.com/rust-lang/crates.io-index" 3931 + checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" 3932 + dependencies = [ 3933 + "const-oid", 3934 + "digest", 3935 + "num-bigint-dig", 3936 + "num-integer", 3937 + "num-traits", 3938 + "pkcs1", 3939 + "pkcs8", 3940 + "rand_core 0.6.4", 3941 + "signature", 3942 + "spki", 3943 + "subtle", 3944 + "zeroize", 3945 + ] 3946 + 3947 + [[package]] 3644 3948 name = "rustc-demangle" 3645 3949 version = "0.1.26" 3646 3950 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3961 4265 ] 3962 4266 3963 4267 [[package]] 4268 + name = "sha1" 4269 + version = "0.10.6" 4270 + source = "registry+https://github.com/rust-lang/crates.io-index" 4271 + checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 4272 + dependencies = [ 4273 + "cfg-if", 4274 + "cpufeatures", 4275 + "digest", 4276 + ] 4277 + 4278 + [[package]] 3964 4279 name = "sha2" 3965 4280 version = "0.10.9" 3966 4281 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3985 4300 dependencies = [ 3986 4301 "errno", 3987 4302 "libc", 4303 + ] 4304 + 4305 + [[package]] 4306 + name = "signature" 4307 + version = "2.2.0" 4308 + source = "registry+https://github.com/rust-lang/crates.io-index" 4309 + checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" 4310 + dependencies = [ 4311 + "digest", 4312 + "rand_core 0.6.4", 3988 4313 ] 3989 4314 3990 4315 [[package]] ··· 4140 4465 ] 4141 4466 4142 4467 [[package]] 4468 + name = "spin" 4469 + version = "0.9.8" 4470 + source = "registry+https://github.com/rust-lang/crates.io-index" 4471 + checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 4472 + dependencies = [ 4473 + "lock_api", 4474 + ] 4475 + 4476 + [[package]] 4477 + name = "spki" 4478 + version = "0.7.3" 4479 + source = "registry+https://github.com/rust-lang/crates.io-index" 4480 + checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" 4481 + dependencies = [ 4482 + "base64ct", 4483 + "der", 4484 + ] 4485 + 4486 + [[package]] 4487 + name = "sqlformat" 4488 + version = "0.2.6" 4489 + source = "registry+https://github.com/rust-lang/crates.io-index" 4490 + checksum = "7bba3a93db0cc4f7bdece8bb09e77e2e785c20bfebf79eb8340ed80708048790" 4491 + dependencies = [ 4492 + "nom", 4493 + "unicode_categories", 4494 + ] 4495 + 4496 + [[package]] 4497 + name = "sqlx" 4498 + version = "0.7.4" 4499 + source = "registry+https://github.com/rust-lang/crates.io-index" 4500 + checksum = "c9a2ccff1a000a5a59cd33da541d9f2fdcd9e6e8229cc200565942bff36d0aaa" 4501 + dependencies = [ 4502 + "sqlx-core", 4503 + "sqlx-macros", 4504 + "sqlx-mysql", 4505 + "sqlx-postgres", 4506 + "sqlx-sqlite", 4507 + ] 4508 + 4509 + [[package]] 4510 + name = "sqlx-core" 4511 + version = "0.7.4" 4512 + source = "registry+https://github.com/rust-lang/crates.io-index" 4513 + checksum = "24ba59a9342a3d9bab6c56c118be528b27c9b60e490080e9711a04dccac83ef6" 4514 + dependencies = [ 4515 + "ahash", 4516 + "atoi", 4517 + "byteorder", 4518 + "bytes", 4519 + "crc", 4520 + "crossbeam-queue", 4521 + "either", 4522 + "event-listener 2.5.3", 4523 + "futures-channel", 4524 + "futures-core", 4525 + "futures-intrusive", 4526 + "futures-io", 4527 + "futures-util", 4528 + "hashlink", 4529 + "hex", 4530 + "indexmap 2.13.0", 4531 + "log", 4532 + "memchr", 4533 + "once_cell", 4534 + "paste", 4535 + "percent-encoding", 4536 + "serde", 4537 + "serde_json", 4538 + "sha2", 4539 + "smallvec", 4540 + "sqlformat", 4541 + "thiserror 1.0.69", 4542 + "tokio", 4543 + "tokio-stream", 4544 + "tracing", 4545 + "url", 4546 + ] 4547 + 4548 + [[package]] 4549 + name = "sqlx-macros" 4550 + version = "0.7.4" 4551 + source = "registry+https://github.com/rust-lang/crates.io-index" 4552 + checksum = "4ea40e2345eb2faa9e1e5e326db8c34711317d2b5e08d0d5741619048a803127" 4553 + dependencies = [ 4554 + "proc-macro2", 4555 + "quote", 4556 + "sqlx-core", 4557 + "sqlx-macros-core", 4558 + "syn 1.0.109", 4559 + ] 4560 + 4561 + [[package]] 4562 + name = "sqlx-macros-core" 4563 + version = "0.7.4" 4564 + source = "registry+https://github.com/rust-lang/crates.io-index" 4565 + checksum = "5833ef53aaa16d860e92123292f1f6a3d53c34ba8b1969f152ef1a7bb803f3c8" 4566 + dependencies = [ 4567 + "dotenvy", 4568 + "either", 4569 + "heck 0.4.1", 4570 + "hex", 4571 + "once_cell", 4572 + "proc-macro2", 4573 + "quote", 4574 + "serde", 4575 + "serde_json", 4576 + "sha2", 4577 + "sqlx-core", 4578 + "sqlx-mysql", 4579 + "sqlx-sqlite", 4580 + "syn 1.0.109", 4581 + "tempfile", 4582 + "tokio", 4583 + "url", 4584 + ] 4585 + 4586 + [[package]] 4587 + name = "sqlx-mysql" 4588 + version = "0.7.4" 4589 + source = "registry+https://github.com/rust-lang/crates.io-index" 4590 + checksum = "1ed31390216d20e538e447a7a9b959e06ed9fc51c37b514b46eb758016ecd418" 4591 + dependencies = [ 4592 + "atoi", 4593 + "base64 0.21.7", 4594 + "bitflags 2.9.4", 4595 + "byteorder", 4596 + "bytes", 4597 + "crc", 4598 + "digest", 4599 + "dotenvy", 4600 + "either", 4601 + "futures-channel", 4602 + "futures-core", 4603 + "futures-io", 4604 + "futures-util", 4605 + "generic-array", 4606 + "hex", 4607 + "hkdf", 4608 + "hmac", 4609 + "itoa", 4610 + "log", 4611 + "md-5", 4612 + "memchr", 4613 + "once_cell", 4614 + "percent-encoding", 4615 + "rand 0.8.5", 4616 + "rsa", 4617 + "serde", 4618 + "sha1", 4619 + "sha2", 4620 + "smallvec", 4621 + "sqlx-core", 4622 + "stringprep", 4623 + "thiserror 1.0.69", 4624 + "tracing", 4625 + "whoami", 4626 + ] 4627 + 4628 + [[package]] 4629 + name = "sqlx-postgres" 4630 + version = "0.7.4" 4631 + source = "registry+https://github.com/rust-lang/crates.io-index" 4632 + checksum = "7c824eb80b894f926f89a0b9da0c7f435d27cdd35b8c655b114e58223918577e" 4633 + dependencies = [ 4634 + "atoi", 4635 + "base64 0.21.7", 4636 + "bitflags 2.9.4", 4637 + "byteorder", 4638 + "crc", 4639 + "dotenvy", 4640 + "etcetera", 4641 + "futures-channel", 4642 + "futures-core", 4643 + "futures-io", 4644 + "futures-util", 4645 + "hex", 4646 + "hkdf", 4647 + "hmac", 4648 + "home", 4649 + "itoa", 4650 + "log", 4651 + "md-5", 4652 + "memchr", 4653 + "once_cell", 4654 + "rand 0.8.5", 4655 + "serde", 4656 + "serde_json", 4657 + "sha2", 4658 + "smallvec", 4659 + "sqlx-core", 4660 + "stringprep", 4661 + "thiserror 1.0.69", 4662 + "tracing", 4663 + "whoami", 4664 + ] 4665 + 4666 + [[package]] 4667 + name = "sqlx-sqlite" 4668 + version = "0.7.4" 4669 + source = "registry+https://github.com/rust-lang/crates.io-index" 4670 + checksum = "b244ef0a8414da0bed4bb1910426e890b19e5e9bccc27ada6b797d05c55ae0aa" 4671 + dependencies = [ 4672 + "atoi", 4673 + "flume", 4674 + "futures-channel", 4675 + "futures-core", 4676 + "futures-executor", 4677 + "futures-intrusive", 4678 + "futures-util", 4679 + "libsqlite3-sys", 4680 + "log", 4681 + "percent-encoding", 4682 + "serde", 4683 + "sqlx-core", 4684 + "tracing", 4685 + "url", 4686 + "urlencoding", 4687 + ] 4688 + 4689 + [[package]] 4143 4690 name = "stable_deref_trait" 4144 4691 version = "1.2.0" 4145 4692 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4171 4718 ] 4172 4719 4173 4720 [[package]] 4721 + name = "stringprep" 4722 + version = "0.1.5" 4723 + source = "registry+https://github.com/rust-lang/crates.io-index" 4724 + checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" 4725 + dependencies = [ 4726 + "unicode-bidi", 4727 + "unicode-normalization", 4728 + "unicode-properties", 4729 + ] 4730 + 4731 + [[package]] 4174 4732 name = "strsim" 4175 4733 version = "0.11.1" 4176 4734 source = "registry+https://github.com/rust-lang/crates.io-index" 4177 4735 checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 4736 + 4737 + [[package]] 4738 + name = "subtle" 4739 + version = "2.6.1" 4740 + source = "registry+https://github.com/rust-lang/crates.io-index" 4741 + checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 4178 4742 4179 4743 [[package]] 4180 4744 name = "swift-rs" ··· 4361 4925 "tauri-runtime", 4362 4926 "tauri-runtime-wry", 4363 4927 "tauri-utils", 4364 - "thiserror 2.0.16", 4928 + "thiserror 2.0.18", 4365 4929 "tokio", 4366 4930 "tray-icon", 4367 4931 "url", ··· 4413 4977 "sha2", 4414 4978 "syn 2.0.106", 4415 4979 "tauri-utils", 4416 - "thiserror 2.0.16", 4980 + "thiserror 2.0.18", 4417 4981 "time", 4418 4982 "url", 4419 4983 "uuid", ··· 4467 5031 "tauri", 4468 5032 "tauri-plugin", 4469 5033 "tauri-plugin-fs", 4470 - "thiserror 2.0.16", 5034 + "thiserror 2.0.18", 4471 5035 ] 4472 5036 4473 5037 [[package]] ··· 4484 5048 "tauri", 4485 5049 "tauri-plugin", 4486 5050 "tauri-plugin-fs", 4487 - "thiserror 2.0.16", 5051 + "thiserror 2.0.18", 4488 5052 "url", 4489 5053 ] 4490 5054 ··· 4505 5069 "tauri", 4506 5070 "tauri-plugin", 4507 5071 "tauri-utils", 4508 - "thiserror 2.0.16", 5072 + "thiserror 2.0.18", 4509 5073 "toml 0.9.12+spec-1.1.0", 4510 5074 "url", 4511 5075 ] ··· 4526 5090 "serde_json", 4527 5091 "tauri", 4528 5092 "tauri-plugin", 4529 - "thiserror 2.0.16", 5093 + "thiserror 2.0.18", 4530 5094 "url", 4531 5095 "windows 0.61.3", 4532 5096 "zbus", ··· 4547 5111 "sys-locale", 4548 5112 "tauri", 4549 5113 "tauri-plugin", 4550 - "thiserror 2.0.16", 5114 + "thiserror 2.0.18", 4551 5115 ] 4552 5116 4553 5117 [[package]] ··· 4559 5123 "serde", 4560 5124 "tauri", 4561 5125 "tauri-plugin", 4562 - "thiserror 2.0.16", 5126 + "thiserror 2.0.18", 4563 5127 ] 4564 5128 4565 5129 [[package]] ··· 4573 5137 "serde_json", 4574 5138 "tauri", 4575 5139 "tauri-plugin", 4576 - "thiserror 2.0.16", 5140 + "thiserror 2.0.18", 4577 5141 "tokio", 4578 5142 "tracing", 4579 5143 ] ··· 4596 5160 "serde", 4597 5161 "serde_json", 4598 5162 "tauri-utils", 4599 - "thiserror 2.0.16", 5163 + "thiserror 2.0.18", 4600 5164 "url", 4601 5165 "webkit2gtk", 4602 5166 "webview2-com", ··· 4643 5207 "specta-typescript", 4644 5208 "tauri", 4645 5209 "tauri-specta-macros", 4646 - "thiserror 2.0.16", 5210 + "thiserror 2.0.18", 4647 5211 ] 4648 5212 4649 5213 [[package]] ··· 4688 5252 "serde_json", 4689 5253 "serde_with", 4690 5254 "swift-rs", 4691 - "thiserror 2.0.16", 5255 + "thiserror 2.0.18", 4692 5256 "toml 0.9.12+spec-1.1.0", 4693 5257 "url", 4694 5258 "urlpattern", ··· 4742 5306 4743 5307 [[package]] 4744 5308 name = "thiserror" 4745 - version = "2.0.16" 5309 + version = "2.0.18" 4746 5310 source = "registry+https://github.com/rust-lang/crates.io-index" 4747 - checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" 5311 + checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" 4748 5312 dependencies = [ 4749 - "thiserror-impl 2.0.16", 5313 + "thiserror-impl 2.0.18", 4750 5314 ] 4751 5315 4752 5316 [[package]] ··· 4762 5326 4763 5327 [[package]] 4764 5328 name = "thiserror-impl" 4765 - version = "2.0.16" 5329 + version = "2.0.18" 4766 5330 source = "registry+https://github.com/rust-lang/crates.io-index" 4767 - checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" 5331 + checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" 4768 5332 dependencies = [ 4769 5333 "proc-macro2", 4770 5334 "quote", ··· 4856 5420 ] 4857 5421 4858 5422 [[package]] 5423 + name = "tokio-stream" 5424 + version = "0.1.18" 5425 + source = "registry+https://github.com/rust-lang/crates.io-index" 5426 + checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" 5427 + dependencies = [ 5428 + "futures-core", 5429 + "pin-project-lite", 5430 + "tokio", 5431 + ] 5432 + 5433 + [[package]] 4859 5434 name = "tokio-util" 4860 5435 version = "0.7.18" 4861 5436 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5015 5590 source = "registry+https://github.com/rust-lang/crates.io-index" 5016 5591 checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" 5017 5592 dependencies = [ 5593 + "log", 5018 5594 "pin-project-lite", 5019 5595 "tracing-attributes", 5020 5596 "tracing-core", ··· 5076 5652 "once_cell", 5077 5653 "png 0.17.16", 5078 5654 "serde", 5079 - "thiserror 2.0.16", 5655 + "thiserror 2.0.18", 5080 5656 "windows-sys 0.60.2", 5081 5657 ] 5082 5658 ··· 5094 5670 5095 5671 [[package]] 5096 5672 name = "typenum" 5097 - version = "1.19.0" 5673 + version = "1.20.1" 5098 5674 source = "registry+https://github.com/rust-lang/crates.io-index" 5099 - checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" 5675 + checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" 5100 5676 5101 5677 [[package]] 5102 5678 name = "uds_windows" ··· 5151 5727 ] 5152 5728 5153 5729 [[package]] 5730 + name = "unicode-bidi" 5731 + version = "0.3.18" 5732 + source = "registry+https://github.com/rust-lang/crates.io-index" 5733 + checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" 5734 + 5735 + [[package]] 5154 5736 name = "unicode-ident" 5155 5737 version = "1.0.19" 5156 5738 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5166 5748 ] 5167 5749 5168 5750 [[package]] 5751 + name = "unicode-properties" 5752 + version = "0.1.4" 5753 + source = "registry+https://github.com/rust-lang/crates.io-index" 5754 + checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" 5755 + 5756 + [[package]] 5169 5757 name = "unicode-segmentation" 5170 5758 version = "1.12.0" 5171 5759 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5178 5766 checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" 5179 5767 5180 5768 [[package]] 5769 + name = "unicode_categories" 5770 + version = "0.1.1" 5771 + source = "registry+https://github.com/rust-lang/crates.io-index" 5772 + checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" 5773 + 5774 + [[package]] 5181 5775 name = "url" 5182 5776 version = "2.5.7" 5183 5777 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5242 5836 "itoa", 5243 5837 "ryu", 5244 5838 ] 5839 + 5840 + [[package]] 5841 + name = "vcpkg" 5842 + version = "0.2.15" 5843 + source = "registry+https://github.com/rust-lang/crates.io-index" 5844 + checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 5245 5845 5246 5846 [[package]] 5247 5847 name = "version-compare" ··· 5334 5934 ] 5335 5935 5336 5936 [[package]] 5937 + name = "wasite" 5938 + version = "0.1.0" 5939 + source = "registry+https://github.com/rust-lang/crates.io-index" 5940 + checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" 5941 + 5942 + [[package]] 5337 5943 name = "wasm-bindgen" 5338 5944 version = "0.2.114" 5339 5945 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5524 6130 source = "registry+https://github.com/rust-lang/crates.io-index" 5525 6131 checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c" 5526 6132 dependencies = [ 5527 - "thiserror 2.0.16", 6133 + "thiserror 2.0.18", 5528 6134 "windows 0.61.3", 5529 6135 "windows-core 0.61.2", 6136 + ] 6137 + 6138 + [[package]] 6139 + name = "whoami" 6140 + version = "1.6.1" 6141 + source = "registry+https://github.com/rust-lang/crates.io-index" 6142 + checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" 6143 + dependencies = [ 6144 + "libredox", 6145 + "wasite", 5530 6146 ] 5531 6147 5532 6148 [[package]] ··· 5778 6394 5779 6395 [[package]] 5780 6396 name = "windows-sys" 6397 + version = "0.48.0" 6398 + source = "registry+https://github.com/rust-lang/crates.io-index" 6399 + checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 6400 + dependencies = [ 6401 + "windows-targets 0.48.5", 6402 + ] 6403 + 6404 + [[package]] 6405 + name = "windows-sys" 5781 6406 version = "0.52.0" 5782 6407 source = "registry+https://github.com/rust-lang/crates.io-index" 5783 6408 checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" ··· 5829 6454 5830 6455 [[package]] 5831 6456 name = "windows-targets" 6457 + version = "0.48.5" 6458 + source = "registry+https://github.com/rust-lang/crates.io-index" 6459 + checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 6460 + dependencies = [ 6461 + "windows_aarch64_gnullvm 0.48.5", 6462 + "windows_aarch64_msvc 0.48.5", 6463 + "windows_i686_gnu 0.48.5", 6464 + "windows_i686_msvc 0.48.5", 6465 + "windows_x86_64_gnu 0.48.5", 6466 + "windows_x86_64_gnullvm 0.48.5", 6467 + "windows_x86_64_msvc 0.48.5", 6468 + ] 6469 + 6470 + [[package]] 6471 + name = "windows-targets" 5832 6472 version = "0.52.6" 5833 6473 source = "registry+https://github.com/rust-lang/crates.io-index" 5834 6474 checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" ··· 5883 6523 version = "0.42.2" 5884 6524 source = "registry+https://github.com/rust-lang/crates.io-index" 5885 6525 checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 6526 + 6527 + [[package]] 6528 + name = "windows_aarch64_gnullvm" 6529 + version = "0.48.5" 6530 + source = "registry+https://github.com/rust-lang/crates.io-index" 6531 + checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 5886 6532 5887 6533 [[package]] 5888 6534 name = "windows_aarch64_gnullvm" ··· 5904 6550 5905 6551 [[package]] 5906 6552 name = "windows_aarch64_msvc" 6553 + version = "0.48.5" 6554 + source = "registry+https://github.com/rust-lang/crates.io-index" 6555 + checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 6556 + 6557 + [[package]] 6558 + name = "windows_aarch64_msvc" 5907 6559 version = "0.52.6" 5908 6560 source = "registry+https://github.com/rust-lang/crates.io-index" 5909 6561 checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" ··· 5919 6571 version = "0.42.2" 5920 6572 source = "registry+https://github.com/rust-lang/crates.io-index" 5921 6573 checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 6574 + 6575 + [[package]] 6576 + name = "windows_i686_gnu" 6577 + version = "0.48.5" 6578 + source = "registry+https://github.com/rust-lang/crates.io-index" 6579 + checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 5922 6580 5923 6581 [[package]] 5924 6582 name = "windows_i686_gnu" ··· 5952 6610 5953 6611 [[package]] 5954 6612 name = "windows_i686_msvc" 6613 + version = "0.48.5" 6614 + source = "registry+https://github.com/rust-lang/crates.io-index" 6615 + checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 6616 + 6617 + [[package]] 6618 + name = "windows_i686_msvc" 5955 6619 version = "0.52.6" 5956 6620 source = "registry+https://github.com/rust-lang/crates.io-index" 5957 6621 checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" ··· 5970 6634 5971 6635 [[package]] 5972 6636 name = "windows_x86_64_gnu" 6637 + version = "0.48.5" 6638 + source = "registry+https://github.com/rust-lang/crates.io-index" 6639 + checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 6640 + 6641 + [[package]] 6642 + name = "windows_x86_64_gnu" 5973 6643 version = "0.52.6" 5974 6644 source = "registry+https://github.com/rust-lang/crates.io-index" 5975 6645 checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" ··· 5988 6658 5989 6659 [[package]] 5990 6660 name = "windows_x86_64_gnullvm" 6661 + version = "0.48.5" 6662 + source = "registry+https://github.com/rust-lang/crates.io-index" 6663 + checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 6664 + 6665 + [[package]] 6666 + name = "windows_x86_64_gnullvm" 5991 6667 version = "0.52.6" 5992 6668 source = "registry+https://github.com/rust-lang/crates.io-index" 5993 6669 checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" ··· 6006 6682 6007 6683 [[package]] 6008 6684 name = "windows_x86_64_msvc" 6685 + version = "0.48.5" 6686 + source = "registry+https://github.com/rust-lang/crates.io-index" 6687 + checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 6688 + 6689 + [[package]] 6690 + name = "windows_x86_64_msvc" 6009 6691 version = "0.52.6" 6010 6692 source = "registry+https://github.com/rust-lang/crates.io-index" 6011 6693 checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" ··· 6178 6860 "sha2", 6179 6861 "soup3", 6180 6862 "tao-macros", 6181 - "thiserror 2.0.16", 6863 + "thiserror 2.0.18", 6182 6864 "url", 6183 6865 "webkit2gtk", 6184 6866 "webkit2gtk-sys", ··· 6250 6932 "async-trait", 6251 6933 "blocking", 6252 6934 "enumflags2", 6253 - "event-listener", 6935 + "event-listener 5.4.1", 6254 6936 "futures-core", 6255 6937 "futures-lite", 6256 6938 "hex", ··· 6335 7017 "syn 2.0.106", 6336 7018 "synstructure", 6337 7019 ] 7020 + 7021 + [[package]] 7022 + name = "zeroize" 7023 + version = "1.8.2" 7024 + source = "registry+https://github.com/rust-lang/crates.io-index" 7025 + checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" 6338 7026 6339 7027 [[package]] 6340 7028 name = "zerotrie"
+1
Cargo.toml
··· 58 58 simd-json = "0.16.0" 59 59 mimalloc = "0.1.48" 60 60 specta = { version = "=2.0.0-rc.22", features = ["derive"] } 61 + sqlx = { version = "0.7", features = ["runtime-tokio", "sqlite"] } 61 62 62 63 [target.'cfg(not(target_os = "android"))'.dependencies] 63 64 trash = "5.1"
+1
ferrum-addon/addon.d.ts
··· 106 106 pathSeparator: string 107 107 libraryDir: string 108 108 tracksDir: string 109 + librarySqlite: string 109 110 libraryJson: string 110 111 cacheDir: string 111 112 cacheDb: string
+8 -3
src-native/data.rs
··· 1 - use crate::library::{Paths, load_library}; 1 + use crate::library::{Paths, load_old_library_json, open_library}; 2 2 use crate::library_types::Library; 3 3 use crate::tracks::Tag; 4 4 use anyhow::{Context, Result}; 5 5 use atomicwrites::{AllowOverwrite, AtomicFile}; 6 6 use dirs_next; 7 7 use serde::Serialize; 8 + use sqlx::SqliteConnection; 8 9 use std::env; 9 10 use std::io::Write; 10 11 use std::path::{Path, PathBuf}; ··· 19 20 20 21 pub struct Data { 21 22 pub paths: Paths, 23 + pub library_sqlite: SqliteConnection, 22 24 pub library: Library, 23 25 /// Current tag being edited 24 26 pub current_tag: Option<Tag>, ··· 97 99 path_separator: std::path::MAIN_SEPARATOR_STR.into(), 98 100 library_dir: path_to_string(&library_dir), 99 101 tracks_dir: path_to_string(library_dir.join("Tracks")), 102 + library_sqlite: path_to_string(library_dir.join("Library.sqlite")), 100 103 library_json: path_to_string(library_dir.join("Library.json")), 101 104 cache_dir: path_to_string(&cache_dir), 102 105 cache_db: path_to_string(cache_dir.join("Cache.redb")), ··· 107 110 logs_dir: path_to_string(app_log_dir()?), 108 111 }; 109 112 110 - let loaded_library = load_library(&paths)?; 113 + let library_sqlite = open_library(&paths)?; 114 + let library_old = load_old_library_json(&paths.library_json).unwrap(); 111 115 112 116 let data = Data { 113 117 paths, 114 - library: loaded_library, 118 + library: library_old.unwrap_or(Library::new()), 119 + library_sqlite, 115 120 current_tag: None, 116 121 }; 117 122 return Ok(data);
+47 -18
src-native/library.rs
··· 8 8 #[cfg(feature = "napi-rs")] 9 9 use napi::Env; 10 10 use serde_json::{Value, json}; 11 + use sqlx::SqliteConnection; 12 + use sqlx::{ConnectOptions, sqlite::SqliteConnectOptions}; 13 + use sqlx::{Sqlite, migrate::MigrateDatabase}; 11 14 use std::fs::File; 12 - #[cfg(feature = "napi-rs")] 13 - use std::fs::create_dir_all; 14 15 use std::io::{ErrorKind, Read, Seek, SeekFrom}; 15 16 #[cfg(feature = "napi-rs")] 16 17 use std::path::PathBuf; 18 + #[cfg(feature = "napi-rs")] 17 19 use std::time::Instant; 20 + #[cfg(feature = "napi-rs")] 21 + use std::{fs::create_dir_all, path::Path}; 22 + use tokio::runtime::Runtime; 18 23 19 24 #[cfg(feature = "napi-rs")] 20 25 #[derive(Clone)] ··· 23 28 pub path_separator: String, 24 29 pub library_dir: String, 25 30 pub tracks_dir: String, 31 + pub library_sqlite: String, 26 32 pub library_json: String, 27 33 pub cache_dir: String, 28 34 pub cache_db: String, ··· 47 53 } 48 54 49 55 #[cfg(feature = "napi-rs")] 50 - pub fn load_library(paths: &Paths) -> Result<Library> { 56 + pub fn open_library(paths: &Paths) -> Result<SqliteConnection> { 57 + let now = Instant::now(); 58 + 51 59 paths 52 60 .ensure_dirs_exists() 53 61 .context("Error ensuring folder exists")?; 54 62 println!("Loading library at path: {}", paths.library_dir); 55 63 56 - load_library_from_file(&paths.library_json) 64 + let library_sqlite = &paths.library_sqlite; 65 + 66 + let rt = Runtime::new().context("Error creating tokio runtime")?; 67 + 68 + let exists = Path::new(&library_sqlite).exists(); 69 + if !exists { 70 + migrate_to_sqlite(paths); 71 + } 72 + let connection = rt 73 + .block_on( 74 + SqliteConnectOptions::new() 75 + .filename(&paths.library_sqlite) 76 + .connect(), 77 + ) 78 + .context("Error connecting to library database")?; 79 + 80 + println!("Open library: {}ms", now.elapsed().as_millis()); 81 + Ok(connection) 57 82 } 58 83 59 - pub fn load_library_from_file(library_json: &str) -> Result<Library> { 60 - let now = Instant::now(); 84 + #[cfg(feature = "napi-rs")] 85 + pub fn migrate_to_sqlite(paths: &Paths) -> Result<()> { 86 + let rt = Runtime::new().context("Error creating tokio runtime")?; 87 + let old_library = match load_old_library_json(&paths.library_json)? { 88 + None => { 89 + rt.block_on(Sqlite::create_database(&paths.library_sqlite)) 90 + .context("Could not create library database")?; 91 + return Ok(()); 92 + } 93 + Some(old_library) => old_library, 94 + }; 95 + 96 + todo!("Save database to disk after migrating"); 97 + } 61 98 99 + pub fn load_old_library_json(library_json: &str) -> Result<Option<Library>> { 62 100 let mut library_file = match File::open(&library_json) { 63 101 Ok(file) => file, 64 102 Err(err) => match err.kind() { 65 - ErrorKind::NotFound => return Ok(Library::new()), 103 + ErrorKind::NotFound => return Ok(None), 66 104 _ => return Err(err).context("Error opening library file"), 67 105 }, 68 106 }; 69 - println!("Read library: {}ms", now.elapsed().as_millis()); 70 - let now = Instant::now(); 71 107 72 108 let mut json_bytes = Vec::new(); 73 109 library_file ··· 75 111 .context("Error reading library file")?; 76 112 77 113 let versioned_library: VersionedLibrary = match simd_json::from_slice(&mut json_bytes) { 78 - Ok(lib) => { 79 - println!("Parsed library: {}ms", now.elapsed().as_millis()); 80 - lib 81 - } 114 + Ok(lib) => lib, 82 115 Err(_) => { 83 - let now = Instant::now(); 84 116 library_file 85 117 .seek(SeekFrom::Start(0)) 86 118 .context("Error seeking to start of library file")?; 87 119 let versioned_library = parse_old_versionless_library_json(&mut library_file)?; 88 - println!("Parsed v0 library: {}ms", now.elapsed().as_millis()); 89 120 versioned_library 90 121 } 91 122 }; 92 - let now = Instant::now(); 93 123 94 124 let library = versioned_library.upgrade().init_libary(); 95 - println!("Initialized library: {}ms", now.elapsed().as_millis()); 96 - Ok(library) 125 + Ok(Some(library)) 97 126 } 98 127 99 128 pub fn parse_old_versionless_library_json(library_file: &mut File) -> Result<VersionedLibrary<'_>> {