diff --git a/Cargo.lock b/Cargo.lock index d01dd99..cf8440d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -68,7 +68,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd" dependencies = [ "android-properties", - "bitflags 2.13.0", + "bitflags 2.13.1", "cc", "jni", "libc", @@ -77,7 +77,7 @@ dependencies = [ "ndk-context", "ndk-sys", "num_enum", - "thiserror 2.0.18", + "thiserror 2.0.19", ] [[package]] @@ -106,9 +106,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.103" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" [[package]] name = "arboard" @@ -257,7 +257,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -286,13 +286,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.89" +version = "0.1.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +checksum = "ae36dc4177970ef04fde5178d3e2429882def40e57a451f919c098f72baa6cec" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.2", ] [[package]] @@ -334,7 +334,7 @@ version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "cexpr", "clang-sys", "itertools 0.13.0", @@ -345,7 +345,7 @@ dependencies = [ "regex", "rustc-hash 2.1.3", "shlex 1.3.0", - "syn", + "syn 2.0.119", ] [[package]] @@ -371,9 +371,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" [[package]] name = "bitpacking" @@ -446,7 +446,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn", + "syn 2.0.119", ] [[package]] @@ -457,9 +457,9 @@ checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" -version = "1.25.1" +version = "1.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6aedf8ae72766347502cf3cb4f41cf5e9cc37d28bee90f1fdaaae15f9cf9424" +checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797" dependencies = [ "bytemuck_derive", ] @@ -472,7 +472,7 @@ checksum = "f65693059b6b9c588b9f62fed1cedbf0a8b805631457ea162d68f0de186f3de5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -493,7 +493,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "log", "polling", "rustix 0.38.44", @@ -515,9 +515,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.67" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17dd265a7d0f31ef544e1b20e03add05d3b45b491b633b10d67145d2acc1a38" +checksum = "c89588d05638b5b4594a3348a2d6c20277e43a7f5c5202b05cc56888475a47b8" dependencies = [ "find-msvc-tools", "jobserver", @@ -548,9 +548,9 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" [[package]] name = "clang-sys" @@ -684,7 +684,7 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be17b688510d934ce13f48a2beba700e11583e281e0fda99c22bb256a14eda73" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "fontdb", "harfrust", "linebender_resource_handle", @@ -838,7 +838,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn", + "syn 2.0.119", ] [[package]] @@ -849,7 +849,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -903,7 +903,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "block2 0.6.2", "libc", "objc2 0.6.4", @@ -917,7 +917,7 @@ checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -991,7 +991,7 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -1085,9 +1085,9 @@ checksum = "9afc2bd4d5a73106dd53d10d73d3401c2f32730ba2c0b93ddb888a8983680471" [[package]] name = "fastrand" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" [[package]] name = "filetime" @@ -1138,6 +1138,15 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "font-types" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad67eced03f5504d9cbd3a879b5958b5c54d4e5fd794361c6eb21b05fb703411" +dependencies = [ + "bytemuck", +] + [[package]] name = "fontconfig-parser" version = "0.5.8" @@ -1179,7 +1188,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -1209,9 +1218,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" +checksum = "a88cf1f829d945f548cf8fec32c61b1f202b6d93b45848602fc02af4b12ad218" dependencies = [ "futures-channel", "futures-core", @@ -1224,9 +1233,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +checksum = "262590f4fe6afeb0bc83be1daa64e52657fe185690a958af7f3ad0e92085c5ae" dependencies = [ "futures-core", "futures-sink", @@ -1234,15 +1243,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" +checksum = "2cd50c473c80f6d7c3670a752354b8e569b1a7cbfdc0419ec88e5edad85e0dc7" [[package]] name = "futures-executor" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +checksum = "6754879cc9f2c66f88c6e5c35344bb0bdb0708b0352b1201815667c7eabc7458" dependencies = [ "futures-core", "futures-task", @@ -1251,9 +1260,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" +checksum = "4577ecaa3c4f96589d473f679a71b596316f6641bc350038b962a5daf0085d7a" [[package]] name = "futures-lite" @@ -1270,32 +1279,32 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +checksum = "2d6d3cde68c518367be28956066ddfef33813991b77a55005a69dae04bf3b10b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "futures-sink" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" +checksum = "e34418ac499d6305c2fb5ad0ed2f6ac998c5f8ca209b4510f7f94242c647e307" [[package]] name = "futures-task" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" +checksum = "b231ed28831efb4a61a08580c4bc233ec56bc009f4cd8f52da2c3cb97df0c109" [[package]] name = "futures-util" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +checksum = "a77a90a256fce34da66415271e30f94ee91c57b04b8a2c042d9cf3220179deaa" dependencies = [ "futures-channel", "futures-core", @@ -1371,10 +1380,11 @@ dependencies = [ "oxilangtag", "rfd", "tar", - "thiserror 2.0.18", + "thiserror 2.0.19", "tokio", "tracing", "tracing-appender", + "tracing-futures", "tracing-subscriber", ] @@ -1382,8 +1392,9 @@ dependencies = [ name = "gl-search" version = "0.1.0" dependencies = [ + "futures", "tantivy", - "thiserror 2.0.18", + "thiserror 2.0.19", "tracing", ] @@ -1441,7 +1452,7 @@ dependencies = [ "hashbrown 0.16.1", "log", "presser", - "thiserror 2.0.18", + "thiserror 2.0.19", "windows", ] @@ -1451,7 +1462,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "gpu-descriptor-types", "hashbrown 0.15.5", ] @@ -1462,7 +1473,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", ] [[package]] @@ -1483,7 +1494,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9da2e5ae821f6e96664977bf974d6d6a2d6682f9ccee23e62ec1d134246845f9" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "bytemuck", "core_maths", "read-fonts 0.37.0", @@ -1558,9 +1569,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c" dependencies = [ "bytes", "http", @@ -1568,9 +1579,9 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +checksum = "e9f41fd6a08e4d4ec69df65976da761afd5ad5e58a9d4acb46bd1c953a9e3ff2" dependencies = [ "bytes", "futures-core", @@ -1587,9 +1598,9 @@ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "hyper" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" +checksum = "d22053281f852e11534f5198498373cbb59295120a20771d90f7ed1897490a72" dependencies = [ "atomic-waker", "bytes", @@ -1631,7 +1642,7 @@ dependencies = [ [[package]] name = "iced" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#56b706fcd35aa881baede77a696bbb842773fdc6" +source = "git+https://github.com/iced-rs/iced.git?branch=master#9854bd32b5039a92549c7fe73509eb66a003e3bc" dependencies = [ "iced_core", "iced_debug", @@ -1640,15 +1651,15 @@ dependencies = [ "iced_runtime", "iced_widget", "iced_winit", - "thiserror 2.0.18", + "thiserror 2.0.19", ] [[package]] name = "iced_core" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#56b706fcd35aa881baede77a696bbb842773fdc6" +source = "git+https://github.com/iced-rs/iced.git?branch=master#9854bd32b5039a92549c7fe73509eb66a003e3bc" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "bytes", "glam", "lilt", @@ -1657,14 +1668,14 @@ dependencies = [ "raw-window-handle", "rustc-hash 2.1.3", "smol_str 0.2.2", - "thiserror 2.0.18", + "thiserror 2.0.19", "web-time", ] [[package]] name = "iced_debug" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#56b706fcd35aa881baede77a696bbb842773fdc6" +source = "git+https://github.com/iced-rs/iced.git?branch=master#9854bd32b5039a92549c7fe73509eb66a003e3bc" dependencies = [ "iced_core", "iced_futures", @@ -1674,7 +1685,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#56b706fcd35aa881baede77a696bbb842773fdc6" +source = "git+https://github.com/iced-rs/iced.git?branch=master#9854bd32b5039a92549c7fe73509eb66a003e3bc" dependencies = [ "futures", "iced_core", @@ -1688,9 +1699,9 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#56b706fcd35aa881baede77a696bbb842773fdc6" +source = "git+https://github.com/iced-rs/iced.git?branch=master#9854bd32b5039a92549c7fe73509eb66a003e3bc" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "bytemuck", "cosmic-text", "half", @@ -1699,14 +1710,14 @@ dependencies = [ "log", "raw-window-handle", "rustc-hash 2.1.3", - "thiserror 2.0.18", + "thiserror 2.0.19", "unicode-segmentation", ] [[package]] name = "iced_program" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#56b706fcd35aa881baede77a696bbb842773fdc6" +source = "git+https://github.com/iced-rs/iced.git?branch=master#9854bd32b5039a92549c7fe73509eb66a003e3bc" dependencies = [ "iced_graphics", "iced_runtime", @@ -1715,30 +1726,30 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#56b706fcd35aa881baede77a696bbb842773fdc6" +source = "git+https://github.com/iced-rs/iced.git?branch=master#9854bd32b5039a92549c7fe73509eb66a003e3bc" dependencies = [ "iced_graphics", "iced_tiny_skia", "iced_wgpu", "log", - "thiserror 2.0.18", + "thiserror 2.0.19", ] [[package]] name = "iced_runtime" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#56b706fcd35aa881baede77a696bbb842773fdc6" +source = "git+https://github.com/iced-rs/iced.git?branch=master#9854bd32b5039a92549c7fe73509eb66a003e3bc" dependencies = [ "bytes", "iced_core", "iced_futures", - "thiserror 2.0.18", + "thiserror 2.0.19", ] [[package]] name = "iced_tiny_skia" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#56b706fcd35aa881baede77a696bbb842773fdc6" +source = "git+https://github.com/iced-rs/iced.git?branch=master#9854bd32b5039a92549c7fe73509eb66a003e3bc" dependencies = [ "bytemuck", "cosmic-text", @@ -1754,9 +1765,9 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#56b706fcd35aa881baede77a696bbb842773fdc6" +source = "git+https://github.com/iced-rs/iced.git?branch=master#9854bd32b5039a92549c7fe73509eb66a003e3bc" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "bytemuck", "cryoglyph", "futures", @@ -1764,28 +1775,28 @@ dependencies = [ "iced_graphics", "log", "rustc-hash 2.1.3", - "thiserror 2.0.18", + "thiserror 2.0.19", "wgpu", ] [[package]] name = "iced_widget" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#56b706fcd35aa881baede77a696bbb842773fdc6" +source = "git+https://github.com/iced-rs/iced.git?branch=master#9854bd32b5039a92549c7fe73509eb66a003e3bc" dependencies = [ "iced_renderer", "iced_runtime", "log", "num-traits", "rustc-hash 2.1.3", - "thiserror 2.0.18", + "thiserror 2.0.19", "unicode-segmentation", ] [[package]] name = "iced_winit" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#56b706fcd35aa881baede77a696bbb842773fdc6" +source = "git+https://github.com/iced-rs/iced.git?branch=master#9854bd32b5039a92549c7fe73509eb66a003e3bc" dependencies = [ "arboard", "iced_debug", @@ -1795,7 +1806,7 @@ dependencies = [ "mundy", "objc2 0.5.2", "rustc-hash 2.1.3", - "thiserror 2.0.18", + "thiserror 2.0.19", "tracing", "wasm-bindgen-futures", "web-sys", @@ -1978,7 +1989,7 @@ dependencies = [ "jni-sys 0.4.1", "log", "simd_cesu8", - "thiserror 2.0.18", + "thiserror 2.0.19", "walkdir", "windows-link", ] @@ -1993,7 +2004,7 @@ dependencies = [ "quote", "rustc_version", "simd_cesu8", - "syn", + "syn 2.0.119", ] [[package]] @@ -2021,7 +2032,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" dependencies = [ "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -2096,7 +2107,7 @@ dependencies = [ "parse_link_header", "reqwest-middleware", "slotmap", - "thiserror 2.0.18", + "thiserror 2.0.19", "tracing", ] @@ -2108,9 +2119,9 @@ checksum = "0c2cdeb66e45e9f36bfad5bbdb4d2384e70936afbee843c6f6543f0c551ebb25" [[package]] name = "libc" -version = "0.2.186" +version = "0.2.187" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +checksum = "a7743783ea728ef5c31194c6590797eed286449b4a4e87d626d8a51f0a94e732" [[package]] name = "libloading" @@ -2134,7 +2145,7 @@ version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "libc", "plain", "redox_syscall 0.9.0", @@ -2278,9 +2289,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" +checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427" dependencies = [ "libc", "wasi", @@ -2326,7 +2337,7 @@ checksum = "b2bf919621e7975acb27d881bae2fb993e0d45c8e0446e85e6272971e00dc8df" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.13.0", + "bitflags 2.13.1", "cfg-if", "cfg_aliases", "codespan-reporting", @@ -2340,7 +2351,7 @@ dependencies = [ "once_cell", "rustc-hash 1.1.0", "spirv", - "thiserror 2.0.18", + "thiserror 2.0.19", "unicode-ident", ] @@ -2350,7 +2361,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "jni-sys 0.3.1", "log", "ndk-sys", @@ -2437,7 +2448,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -2471,7 +2482,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -2487,7 +2498,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "block2 0.6.2", "libc", "objc2 0.6.4", @@ -2508,7 +2519,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-core-location", @@ -2521,7 +2532,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "objc2 0.6.4", "objc2-foundation 0.3.2", ] @@ -2543,7 +2554,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2555,7 +2566,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "objc2 0.6.4", "objc2-foundation 0.3.2", ] @@ -2566,7 +2577,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "dispatch2", "objc2 0.6.4", ] @@ -2577,7 +2588,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "dispatch2", "objc2 0.6.4", "objc2-core-foundation", @@ -2624,7 +2635,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "objc2 0.6.4", "objc2-core-foundation", "objc2-core-graphics", @@ -2636,7 +2647,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "objc2 0.6.4", "objc2-core-foundation", "objc2-core-graphics", @@ -2655,7 +2666,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "block2 0.5.1", "dispatch", "libc", @@ -2668,7 +2679,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "block2 0.6.2", "libc", "objc2 0.6.4", @@ -2681,7 +2692,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "objc2 0.6.4", "objc2-core-foundation", ] @@ -2704,7 +2715,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2716,7 +2727,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "block2 0.6.2", "objc2 0.6.4", "objc2-foundation 0.3.2", @@ -2728,7 +2739,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2741,7 +2752,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "objc2 0.6.4", "objc2-core-foundation", "objc2-foundation 0.3.2", @@ -2764,7 +2775,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-cloud-kit 0.2.2", @@ -2796,7 +2807,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-core-location", @@ -2907,7 +2918,7 @@ dependencies = [ "sparesults", "spareval", "spargebra", - "thiserror 2.0.18", + "thiserror 2.0.19", ] [[package]] @@ -2935,7 +2946,7 @@ dependencies = [ "oxiri", "oxrdf", "ryu-js", - "thiserror 2.0.18", + "thiserror 2.0.19", ] [[package]] @@ -2950,7 +2961,7 @@ dependencies = [ "oxsdatatypes", "rand", "sha2", - "thiserror 2.0.18", + "thiserror 2.0.19", ] [[package]] @@ -2963,7 +2974,7 @@ dependencies = [ "oxrdf", "oxrdfxml", "oxttl", - "thiserror 2.0.18", + "thiserror 2.0.19", ] [[package]] @@ -2976,7 +2987,7 @@ dependencies = [ "oxiri", "oxrdf", "quick-xml 0.37.5", - "thiserror 2.0.18", + "thiserror 2.0.19", ] [[package]] @@ -2995,7 +3006,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06fa874d87eae638daae9b4e3198864fe2cce68589f227c0b2cf5b62b1530516" dependencies = [ - "thiserror 2.0.18", + "thiserror 2.0.19", ] [[package]] @@ -3008,7 +3019,7 @@ dependencies = [ "oxilangtag", "oxiri", "oxrdf", - "thiserror 2.0.18", + "thiserror 2.0.19", ] [[package]] @@ -3112,7 +3123,7 @@ checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -3172,9 +3183,9 @@ checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" [[package]] name = "portable-atomic" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" +checksum = "3d20d5497ef88037a52ff98267d066e7f11fcc5e99bbfbd58a42336193aacec3" [[package]] name = "portable-atomic-util" @@ -3222,7 +3233,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn", + "syn 2.0.119", ] [[package]] @@ -3236,9 +3247,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.106" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] @@ -3269,9 +3280,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.46" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ "proc-macro2", ] @@ -3375,17 +3386,18 @@ checksum = "7b634fabf032fab15307ffd272149b622260f55974d9fad689292a5d33df02e5" dependencies = [ "bytemuck", "core_maths", - "font-types", + "font-types 0.11.3", ] [[package]] name = "read-fonts" -version = "0.39.2" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4ed38b89c2c77ff968c524145ad65fb010f38af5c7a224b53b81d47ac2daa81" +checksum = "046a7d674daf459825b32f5062056d6882db0d2f5a479fbd76ccfc870ac18709" dependencies = [ "bytemuck", - "font-types", + "font-types 0.12.1", + "once_cell", ] [[package]] @@ -3403,7 +3415,7 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", ] [[package]] @@ -3412,14 +3424,14 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5102a6aaa05aa011a238e178e6bca86d2cb56fc9f586d37cb80f5bca6e07759" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", ] [[package]] name = "regex" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" dependencies = [ "aho-corasick", "memchr", @@ -3429,9 +3441,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.15" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" +checksum = "8fcfdb36bda0c880c5931cdc7a2bcdc8ba4556847b9d912bca70bc94708711ad" dependencies = [ "aho-corasick", "memchr", @@ -3492,7 +3504,7 @@ dependencies = [ "async-trait", "http", "reqwest", - "thiserror 2.0.18", + "thiserror 2.0.19", "tower-service", ] @@ -3572,7 +3584,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "errno", "libc", "linux-raw-sys 0.4.15", @@ -3585,7 +3597,7 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "errno", "libc", "linux-raw-sys 0.12.1", @@ -3646,9 +3658,9 @@ dependencies = [ [[package]] name = "self_cell" -version = "1.2.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89" +checksum = "2ab42ca02749e120097e328d91d415325bdf43b1c72c4c8badf37375fe40a813" [[package]] name = "semver" @@ -3658,9 +3670,9 @@ checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" [[package]] name = "serde" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" dependencies = [ "serde_core", "serde_derive", @@ -3668,29 +3680,29 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.2", ] [[package]] name = "serde_json" -version = "1.0.150" +version = "1.0.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" dependencies = [ "itoa", "memchr", @@ -3701,13 +3713,13 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.20" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +checksum = "8d3b1629de253c70a0508c3899572da79ca359fdab27c7920ff00406df418906" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.2", ] [[package]] @@ -3765,9 +3777,9 @@ dependencies = [ [[package]] name = "simd_cesu8" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +checksum = "11031e251abf8611c80f460e19dbdeb54a66db918e49c65a7065b46ac7aec520" dependencies = [ "rustc_version", "simdutf8", @@ -3806,12 +3818,12 @@ dependencies = [ [[package]] name = "skrifa" -version = "0.42.1" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c34617370ae968efb7161bb2beb517d9084659aae19e24b89e3db25b46e4564" +checksum = "819ab7d62b1d3e72d9d9dea5650bac30424f9111364bb94928dbf5ecad1baa68" dependencies = [ "bytemuck", - "read-fonts 0.39.2", + "read-fonts 0.41.0", ] [[package]] @@ -3841,7 +3853,7 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "calloop", "calloop-wayland-source", "cursor-icon", @@ -3877,9 +3889,9 @@ checksum = "4aaa7368fcf4852a4c2dd92df0cace6a71f2091ca0a23391ce7f3a31833f1523" [[package]] name = "socket2" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" dependencies = [ "libc", "windows-sys 0.61.2", @@ -3926,7 +3938,7 @@ dependencies = [ "memchr", "oxrdf", "quick-xml 0.37.5", - "thiserror 2.0.18", + "thiserror 2.0.19", ] [[package]] @@ -3949,7 +3961,7 @@ dependencies = [ "sparesults", "spargebra", "sparopt", - "thiserror 2.0.18", + "thiserror 2.0.19", ] [[package]] @@ -3963,7 +3975,7 @@ dependencies = [ "oxrdf", "peg", "rand", - "thiserror 2.0.18", + "thiserror 2.0.19", ] [[package]] @@ -3983,7 +3995,7 @@ version = "0.4.0+sdk-1.4.341.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9571ea910ebd84c86af4b3ed27f9dbdc6ad06f17c5f96146b2b671e2976744f" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", ] [[package]] @@ -4018,11 +4030,11 @@ checksum = "0193cc4331cfd2f3d2011ef287590868599a2f33c3e69bc22c1a3d3acf9e02fb" [[package]] name = "swash" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0811b01ca2c4e8718760713911feaf4675c24f94e50530a015ec646cfb622f7c" +checksum = "6c2499c2d826531388872b2268718aed907a39bd785ab0dcfe57fab26283f92e" dependencies = [ - "skrifa 0.42.1", + "skrifa 0.44.0", "yazi", "zeno", ] @@ -4035,9 +4047,20 @@ checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" [[package]] name = "syn" -version = "2.0.118" +version = "2.0.119" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a207d6d6a2b7fc470b80443726053f18a2481b7e1eee970597051596567987a3" dependencies = [ "proc-macro2", "quote", @@ -4061,7 +4084,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -4119,7 +4142,7 @@ dependencies = [ "tantivy-stacker", "tantivy-tokenizer-api", "tempfile", - "thiserror 2.0.18", + "thiserror 2.0.19", "time", "typetag", "uuid", @@ -4265,11 +4288,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.18" +version = "2.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9" dependencies = [ - "thiserror-impl 2.0.18", + "thiserror-impl 2.0.19", ] [[package]] @@ -4280,18 +4303,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "thiserror-impl" -version = "2.0.18" +version = "2.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.2", ] [[package]] @@ -4305,9 +4328,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.53" +version = "0.3.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18dfaaeddcb932337b5e7866ee7d0ce9b76d2fd092997146f187ec09b4558a50" +checksum = "3e1d5e639ff6bab73cb6885cc7e7b1de96c3f32c68ec55f3952614bec1092244" dependencies = [ "deranged", "num-conv", @@ -4325,9 +4348,9 @@ checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" [[package]] name = "time-macros" -version = "0.2.31" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c431b87111666e491a90baa837f914fb45cd5dc3c268591b0220ff5057f2085f" +checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" dependencies = [ "num-conv", "time-core", @@ -4398,9 +4421,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.52.3" +version = "1.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" +checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" dependencies = [ "libc", "mio", @@ -4412,13 +4435,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.7.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" +checksum = "6328af13490e73a9b4694030fafd93f8c8c6a9dede33e821c3fc63eddf8042ba" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -4445,9 +4468,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.25.12+spec-1.1.0" +version = "0.25.13+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7" +checksum = "6975367e4d2ef766d86af01ffad14b622fecc8d4357a998fbc4deb6e9bacaf9b" dependencies = [ "indexmap", "toml_datetime", @@ -4485,7 +4508,7 @@ version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "bytes", "futures-util", "http", @@ -4528,7 +4551,7 @@ checksum = "050686193eb999b4bb3bc2acfa891a13da00f79734704c4b8b4ef1a10b368a3c" dependencies = [ "crossbeam-channel", "symlink", - "thiserror 2.0.18", + "thiserror 2.0.19", "time", "tracing-subscriber", ] @@ -4541,7 +4564,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -4564,6 +4587,16 @@ dependencies = [ "tracing-subscriber", ] +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + [[package]] name = "tracing-log" version = "0.2.0" @@ -4633,9 +4666,9 @@ checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "typetag" -version = "0.2.22" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5a897b12c6c1151ad0b138b8db50252dc301f93bc3b027db05eec82aeed298c" +checksum = "c90e86058a30d42a1a928dfb4b49bb33c98c3a2b4909492e6b0881cd94798ec2" dependencies = [ "erased-serde", "inventory", @@ -4646,13 +4679,13 @@ dependencies = [ [[package]] name = "typetag-impl" -version = "0.2.22" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf808357c6ed7e13ba0f3277ec8d8f21b2d501274895104263985330c726c1c5" +checksum = "f153acc4e99a5f2a5aefa09fb078be54e26271b2813f6041200b224c098d8328" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.2", ] [[package]] @@ -4728,9 +4761,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "uuid" -version = "1.23.4" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" +checksum = "bf3923a6f5c4c6382e0b653c4117f48d631ea17f38ed86e2a828e6f7412f5239" dependencies = [ "getrandom 0.4.3", "js-sys", @@ -4830,7 +4863,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.119", "wasm-bindgen-shared", ] @@ -4890,7 +4923,7 @@ version = "0.31.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "rustix 1.1.4", "wayland-backend", "wayland-scanner", @@ -4902,7 +4935,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "cursor-icon", "wayland-backend", ] @@ -4924,7 +4957,7 @@ version = "0.32.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-scanner", @@ -4936,7 +4969,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -4949,7 +4982,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -5006,7 +5039,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76e8840e1ba2881d4cbb18d2147627a56af426ff064c0401eb0c8410c6325d07" dependencies = [ "arrayvec", - "bitflags 2.13.0", + "bitflags 2.13.1", "bytemuck", "cfg-if", "cfg_aliases", @@ -5038,7 +5071,7 @@ dependencies = [ "arrayvec", "bit-set", "bit-vec", - "bitflags 2.13.0", + "bitflags 2.13.1", "bytemuck", "cfg_aliases", "document-features", @@ -5053,7 +5086,7 @@ dependencies = [ "raw-window-handle", "rustc-hash 1.1.0", "smallvec", - "thiserror 2.0.18", + "thiserror 2.0.19", "wgpu-core-deps-apple", "wgpu-core-deps-emscripten", "wgpu-core-deps-windows-linux-android", @@ -5099,7 +5132,7 @@ dependencies = [ "arrayvec", "ash", "bit-set", - "bitflags 2.13.0", + "bitflags 2.13.1", "block2 0.6.2", "bytemuck", "cfg-if", @@ -5132,7 +5165,7 @@ dependencies = [ "raw-window-metal", "renderdoc-sys", "smallvec", - "thiserror 2.0.18", + "thiserror 2.0.19", "wasm-bindgen", "wayland-sys", "web-sys", @@ -5159,7 +5192,7 @@ version = "29.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84bf84cd9ca8ca45e2b223a3868f1adf9bfc0c66aeac212e76ee7e40fdadf8f5" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "bytemuck", "js-sys", "log", @@ -5251,7 +5284,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -5262,7 +5295,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -5481,7 +5514,7 @@ dependencies = [ "ahash", "android-activity", "atomic-waker", - "bitflags 2.13.0", + "bitflags 2.13.1", "block2 0.5.1", "bytemuck", "calloop", @@ -5526,9 +5559,9 @@ dependencies = [ [[package]] name = "winnow" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" dependencies = [ "memchr", ] @@ -5549,7 +5582,7 @@ dependencies = [ "log", "os_pipe", "rustix 1.1.4", - "thiserror 2.0.18", + "thiserror 2.0.19", "tree_magic_mini", "wayland-backend", "wayland-client", @@ -5617,7 +5650,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "dlib", "log", "once_cell", @@ -5661,15 +5694,15 @@ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", "synstructure", ] [[package]] name = "zbus" -version = "5.17.0" +version = "5.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28b97f866896a4be7aefd2b5a8e01bb6773d19a775d54ab28b4d094b9a4480e" +checksum = "fe18fb60dc696039e738717b76eaea21e7a4489bbb1885020b43c94236d7e98a" dependencies = [ "async-broadcast", "async-executor", @@ -5702,14 +5735,14 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.17.0" +version = "5.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e05ad887425eecf5e8384dc2406a4a9313eb73468712fc1cdea362eb4fe0469" +checksum = "fe96480bed92df2b442a1a30df364e12d08eed03aeb061f2b8dc6afb2be91119" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 2.0.119", "zbus_names", "zvariant", "zvariant_utils", @@ -5717,9 +5750,9 @@ dependencies = [ [[package]] name = "zbus_names" -version = "4.3.3" +version = "4.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039ca249fee9559680f3a9f05b55e0761fee51af4f6c1e7d8c1f31e549721d2" +checksum = "d8bf88b4a3ff53e883001e0e0115b297a9d53c31b9c1edd2bfdd853e3428624e" dependencies = [ "serde", "winnow", @@ -5734,22 +5767,22 @@ checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" [[package]] name = "zerocopy" -version = "0.8.54" +version = "0.8.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" +checksum = "b5a105cd7b140f6eeec8acff2ea38135d3cab283ada58540f629fe51e46696eb" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.54" +version = "0.8.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" +checksum = "0fe976fb70c78cd64cccfe3a6fc142244e8a77b70959b30faf9d0ac37ee228eb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -5769,7 +5802,7 @@ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", "synstructure", ] @@ -5803,14 +5836,14 @@ checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "zmij" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" [[package]] name = "zstd" @@ -5842,9 +5875,9 @@ dependencies = [ [[package]] name = "zvariant" -version = "5.13.0" +version = "5.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cf057bb00bf5c9ad77abb6147b0ca4818236a1858416e9d988e40d6322fefa7" +checksum = "bee2a0bcd2a907786a456fff45aaaaf54c9ba5f50b71ae9ec1a4edd200c94911" dependencies = [ "endi", "enumflags2", @@ -5856,14 +5889,14 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "5.13.0" +version = "5.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8118ca6bda77bfc0ab51d660db0c955f2505eef854c9a449435bccb616933b31" +checksum = "38a708216a18780796770bfe3f4739c7c83a3e8f789b755534bbbc06e4e23e12" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 2.0.119", "zvariant_utils", ] @@ -5876,6 +5909,6 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn", + "syn 2.0.119", "winnow", ] diff --git a/Cargo.toml b/Cargo.toml index 00db5c4..f187ae4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,12 +19,14 @@ iced = { git = "https://github.com/iced-rs/iced.git", branch = "master", feature oxigraph = { version = "0.5", features = ["rdf-12"] } oxilangtag = "0.1" parse_link_header = "0.4" +pin-project-lite = "0.2" rfd = "0.17" slotmap = "1.1" tantivy = "0.26" tar = "0.4" thiserror = "2.0" -tokio = { version = "1.52", features = ["rt", "rt-multi-thread", "macros", "fs"] } +tokio = { version = "1.53", features = ["rt", "rt-multi-thread", "macros", "fs"] } tracing = "0.1" tracing-appender = "0.2" +tracing-futures = "0.2" tracing-subscriber = { version = "0.3", features = ["env-filter"] } \ No newline at end of file diff --git a/ontology/graphofliberty.ttl b/ontology/graphofliberty.ttl index 9786f29..a6d7f12 100644 --- a/ontology/graphofliberty.ttl +++ b/ontology/graphofliberty.ttl @@ -17,6 +17,9 @@ @prefix rdfs: . @prefix skos: . @prefix fedora: . +@prefix premis: . +@prefix ebucore: . +@prefix premis3: . @base . rdf:type owl:Ontology . @@ -84,10 +87,6 @@ xsd:unsignedShort rdf:type rdfs:Datatype ; # Object Properties ################################################################# -### http://fedora.info/definitions/v4/repository#hasParent -fedora:hasParent rdf:type owl:ObjectProperty . - - ### https://graphofliberty.org/2026/04/ont/associatedProperty :associatedProperty rdf:type owl:ObjectProperty ; rdfs:label "associated property"@en . @@ -110,35 +109,12 @@ fedora:hasParent rdf:type owl:ObjectProperty . # Data properties ################################################################# -### http://fedora.info/definitions/v4/repository#created -fedora:created rdf:type owl:DatatypeProperty ; - rdfs:subPropertyOf owl:topDataProperty . - - -### http://fedora.info/definitions/v4/repository#createdBy -fedora:createdBy rdf:type owl:DatatypeProperty ; - rdfs:subPropertyOf owl:topDataProperty . - - -### http://fedora.info/definitions/v4/repository#lastModified -fedora:lastModified rdf:type owl:DatatypeProperty . - - -### http://fedora.info/definitions/v4/repository#lastModifiedBy -fedora:lastModifiedBy rdf:type owl:DatatypeProperty . - - -### http://www.w3.org/ns/ldp#contains -ldp:contains rdf:type owl:DatatypeProperty ; - rdfs:subPropertyOf owl:topDataProperty . - - -### https://graphofliberty.org/2026/04/ont/catalogId -:catalogId rdf:type owl:DatatypeProperty ; - rdfs:domain :SearchableClass ; - rdfs:range xsd:nonNegativeInteger ; - rdfs:comment "An integer associated with the class for fast lookup in a database."@en ; - rdfs:label "catalog id" . +### https://graphofliberty.org/2026/04/ont/categoryId +:categoryId rdf:type owl:DatatypeProperty ; + rdfs:domain :SearchableClass ; + rdfs:range xsd:nonNegativeInteger ; + rdfs:comment "An integer associated with the class for fast lookup in a database."@en ; + rdfs:label "category id" . ### https://graphofliberty.org/2026/04/ont/fieldLabel @@ -191,6 +167,11 @@ ldp:contains rdf:type owl:DatatypeProperty ; # Individuals ################################################################# +### http://fedora.info/definitions/v4/repository#Binary +fedora:Binary rdf:type owl:NamedIndividual ; + :readOnly "true"^^xsd:boolean . + + ### http://fedora.info/definitions/v4/repository#Container fedora:Container rdf:type owl:NamedIndividual ; :readOnly "true"^^xsd:boolean . @@ -211,6 +192,11 @@ fedora:createdBy rdf:type owl:NamedIndividual ; :readOnly "true"^^xsd:boolean . +### http://fedora.info/definitions/v4/repository#hasFixityService +fedora:hasFixityService rdf:type owl:NamedIndividual ; + :readOnly "true"^^xsd:boolean . + + ### http://fedora.info/definitions/v4/repository#hasParent fedora:hasParent rdf:type owl:NamedIndividual ; :readOnly "true"^^xsd:boolean . @@ -241,7 +227,27 @@ rdac:C10004 rdf:type owl:NamedIndividual , :SearchableClass ; :associatedProperty , ; - :catalogId "2"^^xsd:nonNegativeInteger . + :categoryId "2"^^xsd:nonNegativeInteger . + + +### http://www.loc.gov/premis/rdf/v1#hasMessageDigest +premis:hasMessageDigest rdf:type owl:NamedIndividual ; + :readOnly "true"^^xsd:boolean . + + +### http://www.loc.gov/premis/rdf/v1#hasSize +premis:hasSize rdf:type owl:NamedIndividual ; + :readOnly "true"^^xsd:boolean . + + +### http://www.loc.gov/premis/rdf/v3/File +premis3:File rdf:type owl:NamedIndividual ; + :readOnly "true"^^xsd:boolean . + + +### http://www.loc.gov/premis/rdf/v3/size +premis3:size rdf:type owl:NamedIndividual ; + :readOnly "true"^^xsd:boolean . ### http://www.w3.org/1999/02/22-rdf-syntax-ns#Property @@ -250,7 +256,7 @@ rdf:Property rdf:type owl:NamedIndividual , :associatedProperty rdfs:comment , rdfs:label , skos:definition ; - :catalogId "0"^^xsd:nonNegativeInteger . + :categoryId "0"^^xsd:nonNegativeInteger . ### http://www.w3.org/2000/01/rdf-schema#Class @@ -259,7 +265,7 @@ rdfs:Class rdf:type owl:NamedIndividual , :associatedProperty rdfs:comment , rdfs:label , skos:definition ; - :catalogId "1"^^xsd:nonNegativeInteger . + :categoryId "1"^^xsd:nonNegativeInteger . ### http://www.w3.org/2000/01/rdf-schema#comment @@ -287,6 +293,11 @@ ldp:Container rdf:type owl:NamedIndividual ; :readOnly "true"^^xsd:boolean . +### http://www.w3.org/ns/ldp#NonRDFSource +ldp:NonRDFSource rdf:type owl:NamedIndividual ; + :readOnly "true"^^xsd:boolean . + + ### http://www.w3.org/ns/ldp#RDFSource ldp:RDFSource rdf:type owl:NamedIndividual ; :readOnly "true"^^xsd:boolean . diff --git a/publish/Cargo.toml b/publish/Cargo.toml index cc2d547..63bee27 100644 --- a/publish/Cargo.toml +++ b/publish/Cargo.toml @@ -20,4 +20,5 @@ thiserror.workspace = true tokio.workspace = true tracing.workspace = true tracing-appender.workspace = true +tracing-futures.workspace = true tracing-subscriber.workspace = true \ No newline at end of file diff --git a/publish/src/app.rs b/publish/src/app.rs index 1340ca2..27fac8a 100644 --- a/publish/src/app.rs +++ b/publish/src/app.rs @@ -20,7 +20,8 @@ use oxigraph::io::RdfFormat; use oxigraph::model::vocab::{rdf, rdfs}; use oxigraph::model::{BaseDirection, Dataset, NamedNode, Quad, Term}; use tracing::{debug, debug_span, error, trace}; -use tracing::span::EnteredSpan; +use tracing::span::Span; +use tracing_futures::Instrument; use crate::navigator::Navigator; use crate::rdf::curie::CurieHelper; use crate::rdf::language; @@ -36,6 +37,7 @@ pub(crate) enum Message { AddRdfSource(RdfSource), ConcludeTraversal, IndexQueryResults(HashMap), + CommitIndex, WindowClosed(window::Id), URLInputChanged(String), URLInputSubmitted, @@ -105,7 +107,7 @@ pub(crate) struct Publisher { hovered_row: Option, search_state: Option, index: SearchIndex, - traversal: Option<(Dataset, EnteredSpan)>, + traversal: Option, show_overwrite_confirmation: bool, modified: bool, show_new_document_buttons: bool, @@ -177,20 +179,24 @@ impl Publisher { match message { Message::RebuildIndex => { - self.index - .writer() - .expect("Unable to create writer") - .remove_all() - .expect("Unable to clear index"); + if let Ok(writer) = self.index.writer() { + writer.remove_all().expect("Unable to clear index"); - let query = Ontology::index_query(&*language::ENGLISH_OR_UNTAGGED); - let query_results = self.ontology.execute_query(query).expect("Unable to generate index of entities"); - let results = Ontology::transform_index_results(query_results); - task = Task::done(Message::IndexQueryResults(results)); + let index_future = self.ontology + .index(&*language::ENGLISH_OR_UNTAGGED, None); + let index_task = Task::perform(index_future, |task_result| { + match task_result { + Ok(results) => Message::IndexQueryResults(results), + Err(err) => Message::ShowError(err.to_string()), + } + }); + task = Task::batch([ + index_task, + Task::done(Message::Traverse), + ]); + } } Message::Traverse => { - self.traversal = Some((self.ontology.to_dataset(), debug_span!("Repository Traversal").entered())); - let client = self.http_client.clone(); let root = Url::parse(&self.url_input).expect("Invalid URL"); let stream = Traverse::new(client, root, None); @@ -199,33 +205,36 @@ impl Publisher { Ok(rdf_source) => Message::AddRdfSource(rdf_source), Err(err) => Message::ShowError(format!("Unable to fetch RDF Source: {err}")), }).chain(Task::done(Message::ConcludeTraversal)); + + self.traversal = Some(self.ontology.to_dataset()); } Message::AddRdfSource(rdf_source) => { - if let Some((traversal, _)) = &mut self.traversal { + if let Some(traversal) = &mut self.traversal { traversal.extend(rdf_source.dataset()); } } Message::ConcludeTraversal => { - if let Some((traversal, _)) = &self.traversal { - let query = Ontology::index_query(&*language::ENGLISH_OR_UNTAGGED); - let query_results = query.on_queryable_dataset(traversal) - .execute() - .expect("Unable to generate index of entities"); - let results = Ontology::transform_index_results(query_results); - task = Task::done(Message::IndexQueryResults(results)); + if let Some(traversal) = self.traversal.take() { + let index_task = self.ontology + .index(&*language::ENGLISH_OR_UNTAGGED, Some(traversal)); + task = Task::perform(index_task, |task_result| { + match task_result { + Ok(results) => Message::IndexQueryResults(results), + Err(err) => Message::ShowError(err.to_string()), + } + }); } - self.traversal = None; } Message::IndexQueryResults(results) => { - let mut writer = self.index.writer().expect("Failed to build index writer"); + let mut index = self.index.clone(); let curie_helper = self.curie_helper.clone(); - let index_task = tokio::task::spawn_blocking(move || { - debug_span!("Indexing").in_scope(|| { + task = Task::perform(tokio::task::spawn_blocking(move || { + let _span = debug_span!("Indexing").entered(); + if let Ok(writer) = index.writer() { let mut counter = 0; for (individual, entry) in results { - debug!(%individual, ?entry); let mut document = doc!( - Schema::type_field() => entry.catalog_id, + Schema::type_field() => entry.category_id, Schema::iri_field() => individual.as_str(), ); @@ -239,18 +248,19 @@ impl Publisher { writer.add(document).expect("Failed to add document to search index"); counter += 1; } - writer.commit().expect("Failed to commit changes to search index"); debug!("Added {counter} documents to search index"); - }); - }); - - task = Task::future(async { - match index_task.await { - Ok(()) => Message::None, - Err(err) => Message::ShowError(err.to_string()), } + }), |result| if let Err(err) = result { + Message::ShowError(err.to_string()) + } else { + Message::CommitIndex }); } + Message::CommitIndex => { + if let Err(err) = self.index.commit() { + task = Task::done(Message::ShowError(err.to_string())); + } + } Message::WindowClosed(id) => { if self.window_id == id { task = iced::exit(); @@ -263,7 +273,9 @@ impl Publisher { } Message::URLInputSubmitted => { let url = Url::parse(&self.url_input).expect("Invalid URL"); - self.navigator.goto(url.clone()); + if &url != self.navigator.current() { + self.navigator.goto(url.clone()); + } task = Task::done(Message::NavigateTo(url)); } Message::NavigateTo(url) => { @@ -397,24 +409,27 @@ impl Publisher { } Message::QueryUpdated(new_query) => { if let Some(search_state) = &mut self.search_state { - let catalog_id = search_state.entity_selection + let category_id = search_state.entity_selection .clone() - .and_then(|info| self.ontology.catalog_id(&info.iri)); + .and_then(|info| self.ontology.category_id(&info.iri)); - let index = self.index.clone(); let query = new_query.clone(); - let search_task = tokio::task::spawn_blocking(move || { - index.query(catalog_id, query.as_str(), Schema::all_fields(), 25) - }); - task = Task::future(async { + /*let search_task = tokio::task::spawn_blocking(move || { + index.query(category_id, query.as_str(), Schema::all_fields(), 25) + });*/ + /*task = Task::future(async { match search_task.await { Ok(Ok(results)) => Message::SetSearchResults(results), Ok(Err(err)) => Message::ShowError(err.to_string()), Err(err) => Message::ShowError(err.to_string()), } - }); + });*/ search_state.query = new_query; + task = Task::done(Message::SetSearchResults( + self.index.query(category_id, query.as_str(), Schema::all_fields(), 25) + .expect("Unable to complete search") + )); }; } Message::SetSearchResults(results) => { @@ -829,8 +844,6 @@ impl Publisher { let reindex_ontology_button = button("Rebuild index").on_press(Message::RebuildIndex); - let traverse_button = button("Traverse").on_press(Message::Traverse); - let address_input = iri_input(&self.curie_helper, "URL", &self.url_input) .on_input(Message::URLInputChanged) .on_submit(Message::URLInputSubmitted) @@ -865,7 +878,6 @@ impl Publisher { forward_button, add_row_button, reindex_ontology_button, - traverse_button, address_input, save_button, ], diff --git a/publish/src/error.rs b/publish/src/error.rs index ca27bee..f2ab04a 100644 --- a/publish/src/error.rs +++ b/publish/src/error.rs @@ -30,4 +30,7 @@ pub(crate) enum Error { #[error(transparent)] SparqlSyntax(#[from] oxigraph::sparql::SparqlSyntaxError), + + #[error(transparent)] + Join(#[from] tokio::task::JoinError), } diff --git a/publish/src/rdf/ontology.rs b/publish/src/rdf/ontology.rs index 7ab21ef..9f60ddb 100644 --- a/publish/src/rdf/ontology.rs +++ b/publish/src/rdf/ontology.rs @@ -2,11 +2,12 @@ use crate::error; use crate::rdf::vocab::gl; use oxigraph::model::vocab::{rdf, rdfs, xsd}; use oxigraph::model::{Dataset, Graph, GraphNameRef, LiteralRef, NamedNode, NamedNodeRef, NamedOrBlankNode, NamedOrBlankNodeRef, Term, TermRef, Triple, TripleRef}; -use oxigraph::sparql::{PreparedSparqlQuery, QueryResults, SparqlEvaluator}; +use oxigraph::sparql::{QueryResults, SparqlEvaluator}; use std::collections::{BTreeMap, BTreeSet, HashMap}; use std::fmt::Display; use std::path::{Path, PathBuf}; use std::sync::LazyLock; +use iced::futures::TryFutureExt; use oxigraph::store::Store; use tracing::debug_span; use crate::rdf::{conversion, materialize}; @@ -46,7 +47,7 @@ static PREFIXES: LazyLock> = LazyLock::new(|| { ("rdax", "http://rdaregistry.info/Elements/x/"), ("schema", "https://schema.org/"), ("quill", "http://fedora.quill.lan/rest/"), - ("gl", "ONTOLOGY_PREFIX"), + ("gl", ONTOLOGY_PREFIX), ].map(|(k, v)| (k.to_string(), v.to_string()))) }); @@ -108,7 +109,7 @@ impl OntologyBuilder { #[derive(Clone, Debug)] pub struct IndexEntry { - pub catalog_id: u64, + pub category_id: u64, pub fields: HashMap, } @@ -172,12 +173,12 @@ impl Ontology { .collect::() } - pub fn index_query(language: &LanguageCondition) -> PreparedSparqlQuery { + pub fn index(&self, language: &LanguageCondition, source: Option) -> impl Future>> + 'static { let language_filter = language.to_filter_expression("fieldValue"); - let query = format!(r#"SELECT ?individual ?catalogId ?fieldName ?fieldValue + let query = format!(r#"SELECT ?individual ?categoryId ?fieldName ?fieldValue WHERE {{ ?class a gl:SearchableClass ; - gl:catalogId ?catalogId ; + gl:categoryId ?categoryId ; gl:associatedProperty ?property . ?property gl:indexedByField/gl:fieldName ?fieldName . @@ -190,39 +191,44 @@ WHERE {{ let mut sparql = SparqlEvaluator::new() .with_prefix("gl", ONTOLOGY_PREFIX).unwrap() .parse_query(&query) - .unwrap(); + .expect("Unable to parse query"); sparql.dataset_mut().set_default_graph_as_union(); - sparql - } - pub fn execute_query(&self, query: PreparedSparqlQuery) -> error::Result> { - Ok(query.on_store(&self.store).execute()?) - } + let store = self.store.clone(); + tokio::task::spawn_blocking(move || { + let _span = debug_span!("Index Query").entered(); + let query_results = if let Some(source) = &source { + sparql.on_queryable_dataset(source).execute() + } else { + sparql.on_store(&store).execute() + }.expect("Unable to execute indexing query"); - pub fn transform_index_results(query_results: QueryResults) -> HashMap { - let mut results = HashMap::new(); - if let QueryResults::Solutions(solutions) = query_results { - for solution in solutions.filter_map(Result::ok) { - let individual = solution.get("individual").and_then(conversion::term_to_named_node); - let catalog_id = solution.get("catalogId").and_then(conversion::term_to_u64); - let field_name = solution.get("fieldName").and_then(conversion::term_as_str); - let field_value = solution.get("fieldValue").and_then(conversion::term_as_str); - if let (Some(individual), Some(catalog_id), Some(field_name), Some(field_value)) = (individual, catalog_id, field_name, field_value) { - results.entry(individual.to_owned()) - .and_modify(|entry: &mut IndexEntry| { - entry.fields.insert(field_name.to_owned(), field_value.to_owned()); - }).or_insert(IndexEntry { - catalog_id, + let mut results = HashMap::new(); + if let QueryResults::Solutions(solutions) = query_results { + for solution in solutions.filter_map(Result::ok) { + let individual = solution.get("individual").and_then(conversion::term_to_named_node); + let catalog_id = solution.get("categoryId").and_then(conversion::term_to_u64); + let field_name = solution.get("fieldName").and_then(conversion::term_as_str); + let field_value = solution.get("fieldValue").and_then(conversion::term_as_str); + if let (Some(individual), Some(catalog_id), Some(field_name), Some(field_value)) = (individual, catalog_id, field_name, field_value) { + results.entry(individual.to_owned()) + .and_modify(|entry: &mut IndexEntry| { + entry.fields.insert(field_name.to_owned(), field_value.to_owned()); + }).or_insert(IndexEntry { + category_id: catalog_id, fields: HashMap::from_iter([(field_name.to_owned(), field_value.to_owned())]), }); + } } + } else { + unreachable!() } - } - results + results + }).map_err(error::Error::from) } - pub fn catalog_id(&self, class: &NamedNode) -> Option { - self.store.quads_for_pattern(Some(class.into()), Some(gl::CATALOG_ID), None, None) + pub fn category_id(&self, class: &NamedNode) -> Option { + self.store.quads_for_pattern(Some(class.into()), Some(gl::CATEGORY_ID), None, None) .filter_map(Result::ok) .map(conversion::quad_into_term) .filter_map(conversion::term_into_u64) diff --git a/publish/src/rdf/vocab.rs b/publish/src/rdf/vocab.rs index 3703ea3..99a19a3 100644 --- a/publish/src/rdf/vocab.rs +++ b/publish/src/rdf/vocab.rs @@ -7,8 +7,8 @@ pub mod gl { pub const INDEXED_BY_FIELD: NamedNodeRef = NamedNodeRef::new_unchecked("https://graphofliberty.org/2026/04/ont/indexedByField"); - pub const CATALOG_ID: NamedNodeRef = - NamedNodeRef::new_unchecked("https://graphofliberty.org/2026/04/ont/catalogId"); + pub const CATEGORY_ID: NamedNodeRef = + NamedNodeRef::new_unchecked("https://graphofliberty.org/2026/04/ont/categoryId"); pub const SEARCHABLE_CLASS: NamedNodeRef = NamedNodeRef::new_unchecked("https://graphofliberty.org/2026/04/ont/SearchableClass"); diff --git a/publish/src/widget/iri_input.rs b/publish/src/widget/iri_input.rs index 6621203..27b7df4 100644 --- a/publish/src/widget/iri_input.rs +++ b/publish/src/widget/iri_input.rs @@ -6,7 +6,6 @@ use iced::advanced::{Layout, Widget}; use iced::advanced::widget::{tree, Tree}; use iced::mouse::{Cursor, Interaction}; use iced::widget::text_input::Catalog; -use tracing::debug; use crate::rdf::curie::CurieHelper; pub struct State { diff --git a/search/Cargo.toml b/search/Cargo.toml index 0273e86..9477df0 100644 --- a/search/Cargo.toml +++ b/search/Cargo.toml @@ -5,6 +5,7 @@ edition = "2024" publish = false [dependencies] +futures.workspace = true tantivy.workspace = true thiserror.workspace = true diff --git a/search/src/index.rs b/search/src/index.rs index 54a390a..010d62b 100644 --- a/search/src/index.rs +++ b/search/src/index.rs @@ -1,7 +1,8 @@ use std::fs; -use crate::{error, update}; +use crate::{error, IndexWriter}; use crate::schema::Schema; use std::path::PathBuf; +use std::sync::Arc; use tantivy::collector::TopDocs; use tantivy::directory::{ManagedDirectory, MmapDirectory}; use tantivy::query::{BooleanQuery, Occur, QueryParser, TermQuery}; @@ -51,6 +52,7 @@ impl SearchIndexBuilder { Ok(SearchIndex { index, reader, + writer: None, }) } } @@ -59,6 +61,7 @@ impl SearchIndexBuilder { pub struct SearchIndex { index: Index, reader: IndexReader, + writer: Option>, } impl SearchIndex { @@ -66,9 +69,23 @@ impl SearchIndex { SearchIndexBuilder::default() } - pub fn writer(&self) -> crate::Result { - let inner = self.index.writer(128 * 1024usize.pow(2))?; - Ok(crate::IndexWriter { inner }) + pub fn writer(&mut self) -> crate::Result<&IndexWriter> { + if self.writer.is_none() { + let inner = self.index.writer(128 * 1024 * 1024)?; + self.writer = Some(Arc::new(IndexWriter { inner })); + } + + Ok(self.writer.as_ref().unwrap()) + } + + pub fn commit(&mut self) -> crate::Result<()> { + if let Some(writer) = self.writer.take() { + if let Some(mut writer) = Arc::into_inner(writer) { + writer.commit()?; + } + } + + Ok(()) } pub fn query( @@ -78,7 +95,7 @@ impl SearchIndex { default_fields: Vec, limit: usize, ) -> error::Result> { - let _ = debug_span!("Search Query").entered(); + let _span = debug_span!("Search Query").entered(); let parser = QueryParser::for_index(&self.index, default_fields); let (user_query, _) = parser.parse_query_lenient(user_query); diff --git a/search/src/update.rs b/search/src/update.rs index 0fc7ba0..34750cc 100644 --- a/search/src/update.rs +++ b/search/src/update.rs @@ -11,13 +11,12 @@ impl IndexWriter { Ok(()) } - pub fn remove_all_of_type(&mut self, type_: u64) -> crate::Result<()> { + pub fn remove_all_of_type(&self, type_: u64) -> crate::Result<()> { self.inner.delete_term(Term::from_field_u64(Schema::type_field(), type_)); - self.inner.commit()?; Ok(()) } - pub fn remove_all(&mut self) -> crate::Result<()> { + pub fn remove_all(&self) -> crate::Result<()> { self.inner.delete_all_documents()?; Ok(()) }