diff --git a/Cargo.lock b/Cargo.lock index 3646386..10ef767 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -146,9 +146,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de45108900e1f9b9242f7f2e254aa3e2c029c921c258fe9e6b4217eeebd54288" +checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" dependencies = [ "axum-core", "bytes", @@ -303,9 +303,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.19" +version = "1.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e3a13707ac958681c13b39b458c073d0d9bc8a22cb1b2f4c8e55eb72c13f362" +checksum = "8691782945451c1c383942c4874dbe63814f61cb57ef773cda2972682b7bb3c0" dependencies = [ "shlex", ] @@ -318,9 +318,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.40" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", @@ -333,9 +333,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.36" +version = "4.5.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2df961d8c8a0d08aa9945718ccf584145eee3f3aa06cddbeac12933781102e04" +checksum = "eccb054f56cbd38340b380d4a8e69ef1f02f1af43db2f0cc817a4774d80ae071" dependencies = [ "clap_builder", "clap_derive", @@ -343,9 +343,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.36" +version = "4.5.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "132dbda40fb6753878316a489d5a1242a8ef2f0d9e47ba01c951ea8aa7d013a5" +checksum = "efd9466fac8543255d3b1fcad4762c5e116ffe808c8a3043d4263cd4fd4862a2" dependencies = [ "anstream", "anstyle", @@ -355,9 +355,9 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.47" +version = "4.5.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06f5378ea264ad4f82bbc826628b5aad714a75abf6ece087e923010eb937fb6" +checksum = "c91d3baa3bcd889d60e6ef28874126a0b384fd225ab83aa6d8a801c519194ce1" dependencies = [ "clap", ] @@ -584,7 +584,7 @@ dependencies = [ [[package]] name = "druid" version = "0.1.0" -source = "git+https://github.com/GrandEngineering/druid.git#d1e10245b89c879a9074e78995446975754d8def" +source = "git+https://github.com/GrandEngineering/druid.git#801365f097b6b437314d0deaa72fd85be6af0a8f" dependencies = [ "chrono", "rand", @@ -635,7 +635,7 @@ dependencies = [ [[package]] name = "enginelib" version = "0.2.0" -source = "git+https://github.com/GrandEngineering/enginelib.git#fa2b0bbccdf87511b51fc7b8e70b99e14c4e5260" +source = "git+https://github.com/GrandEngineering/enginelib.git#75cdf1ef1294d6b25961cc4759a29daf54a0a895" dependencies = [ "bincode", "chrono", @@ -678,6 +678,16 @@ dependencies = [ "serde", ] +[[package]] +name = "faster-hex" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7223ae2d2f179b803433d9c830478527e92b8117eab39460edae7f1614d9fb73" +dependencies = [ + "heapless", + "serde", +] + [[package]] name = "fastrand" version = "2.3.0" @@ -803,9 +813,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "libc", @@ -845,11 +855,11 @@ dependencies = [ "gix-diff", "gix-dir", "gix-discover", - "gix-features", + "gix-features 0.41.1", "gix-filter", - "gix-fs", + "gix-fs 0.14.0", "gix-glob", - "gix-hash", + "gix-hash 0.17.0", "gix-hashtable", "gix-ignore", "gix-index", @@ -872,8 +882,8 @@ dependencies = [ "gix-trace", "gix-traverse", "gix-url", - "gix-utils", - "gix-validate", + "gix-utils 0.2.0", + "gix-validate 0.9.4", "gix-worktree", "once_cell", "parking_lot 0.12.3", @@ -890,7 +900,7 @@ checksum = "f438c87d4028aca4b82f82ba8d8ab1569823cfb3e5bc5fa8456a71678b2a20e7" dependencies = [ "bstr", "gix-date", - "gix-utils", + "gix-utils 0.2.0", "itoa", "thiserror 2.0.12", "winnow", @@ -952,7 +962,7 @@ checksum = "043cbe49b7a7505150db975f3cb7c15833335ac1e26781f615454d9d640a28fe" dependencies = [ "bstr", "gix-chunk", - "gix-hash", + "gix-hash 0.17.0", "memmap2", "thiserror 2.0.12", ] @@ -965,7 +975,7 @@ checksum = "9c6f830bf746604940261b49abf7f655d2c19cadc9f4142ae9379e3a316e8cfa" dependencies = [ "bstr", "gix-config-value", - "gix-features", + "gix-features 0.41.1", "gix-glob", "gix-path", "gix-ref", @@ -1013,8 +1023,8 @@ dependencies = [ "gix-attributes", "gix-command", "gix-filter", - "gix-fs", - "gix-hash", + "gix-fs 0.14.0", + "gix-hash 0.17.0", "gix-index", "gix-object", "gix-path", @@ -1035,14 +1045,14 @@ checksum = "5879497bd3815d8277ed864ec8975290a70de5b62bb92d2d666a4cefc5d4793b" dependencies = [ "bstr", "gix-discover", - "gix-fs", + "gix-fs 0.14.0", "gix-ignore", "gix-index", "gix-object", "gix-path", "gix-pathspec", "gix-trace", - "gix-utils", + "gix-utils 0.2.0", "gix-worktree", "thiserror 2.0.12", ] @@ -1055,8 +1065,8 @@ checksum = "f7fb8a4349b854506a3915de18d3341e5f1daa6b489c8affc9ca0d69efe86781" dependencies = [ "bstr", "dunce", - "gix-fs", - "gix-hash", + "gix-fs 0.14.0", + "gix-hash 0.17.0", "gix-path", "gix-ref", "gix-sec", @@ -1073,7 +1083,7 @@ dependencies = [ "flate2", "gix-path", "gix-trace", - "gix-utils", + "gix-utils 0.2.0", "libc", "once_cell", "prodash", @@ -1081,6 +1091,18 @@ dependencies = [ "walkdir", ] +[[package]] +name = "gix-features" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f4399af6ec4fd9db84dd4cf9656c5c785ab492ab40a7c27ea92b4241923fed" +dependencies = [ + "gix-trace", + "gix-utils 0.3.0", + "libc", + "prodash", +] + [[package]] name = "gix-filter" version = "0.18.0" @@ -1091,13 +1113,13 @@ dependencies = [ "encoding_rs", "gix-attributes", "gix-command", - "gix-hash", + "gix-hash 0.17.0", "gix-object", "gix-packetline-blocking", "gix-path", "gix-quote", "gix-trace", - "gix-utils", + "gix-utils 0.2.0", "smallvec", "thiserror 2.0.12", ] @@ -1110,9 +1132,23 @@ checksum = "951e886120dc5fa8cac053e5e5c89443f12368ca36811b2e43d1539081f9c111" dependencies = [ "bstr", "fastrand", - "gix-features", + "gix-features 0.41.1", "gix-path", - "gix-utils", + "gix-utils 0.2.0", + "thiserror 2.0.12", +] + +[[package]] +name = "gix-fs" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a0637149b4ef24d3ea55f81f77231401c8463fae6da27331c987957eb597c7" +dependencies = [ + "bstr", + "fastrand", + "gix-features 0.42.1", + "gix-path", + "gix-utils 0.3.0", "thiserror 2.0.12", ] @@ -1124,7 +1160,7 @@ checksum = "20972499c03473e773a2099e5fd0c695b9b72465837797a51a43391a1635a030" dependencies = [ "bitflags 2.9.0", "bstr", - "gix-features", + "gix-features 0.41.1", "gix-path", ] @@ -1134,19 +1170,31 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "834e79722063958b03342edaa1e17595cd2939bb2b3306b3225d0815566dcb49" dependencies = [ - "faster-hex", - "gix-features", + "faster-hex 0.9.0", + "gix-features 0.41.1", + "sha1-checked", + "thiserror 2.0.12", +] + +[[package]] +name = "gix-hash" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d4900562c662852a6b42e2ef03442eccebf24f047d8eab4f23bc12ef0d785d8" +dependencies = [ + "faster-hex 0.10.0", + "gix-features 0.42.1", "sha1-checked", "thiserror 2.0.12", ] [[package]] name = "gix-hashtable" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f06066d8702a9186dc1fdc1ed751ff2d7e924ceca21cb5d51b8f990c9c2e014a" +checksum = "b5b5cb3c308b4144f2612ff64e32130e641279fcf1a84d8d40dad843b4f64904" dependencies = [ - "gix-hash", + "gix-hash 0.18.0", "hashbrown 0.14.5", "parking_lot 0.12.3", ] @@ -1175,14 +1223,14 @@ dependencies = [ "filetime", "fnv", "gix-bitmap", - "gix-features", - "gix-fs", - "gix-hash", + "gix-features 0.41.1", + "gix-fs 0.14.0", + "gix-hash 0.17.0", "gix-lock", "gix-object", "gix-traverse", - "gix-utils", - "gix-validate", + "gix-utils 0.2.0", + "gix-validate 0.9.4", "hashbrown 0.14.5", "itoa", "libc", @@ -1194,12 +1242,12 @@ dependencies = [ [[package]] name = "gix-lock" -version = "17.0.0" +version = "17.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df47b8f11c34520db5541bc5fc9fbc8e4b0bdfcec3736af89ccb1a5728a0126f" +checksum = "570f8b034659f256366dc90f1a24924902f20acccd6a15be96d44d1269e7a796" dependencies = [ "gix-tempfile", - "gix-utils", + "gix-utils 0.3.0", "thiserror 2.0.12", ] @@ -1212,12 +1260,12 @@ dependencies = [ "bstr", "gix-actor", "gix-date", - "gix-features", - "gix-hash", + "gix-features 0.41.1", + "gix-hash 0.17.0", "gix-hashtable", "gix-path", - "gix-utils", - "gix-validate", + "gix-utils 0.2.0", + "gix-validate 0.9.4", "itoa", "smallvec", "thiserror 2.0.12", @@ -1232,9 +1280,9 @@ checksum = "50306d40dcc982eb6b7593103f066ea6289c7b094cb9db14f3cd2be0b9f5e610" dependencies = [ "arc-swap", "gix-date", - "gix-features", - "gix-fs", - "gix-hash", + "gix-features 0.41.1", + "gix-fs 0.14.0", + "gix-hash 0.17.0", "gix-hashtable", "gix-object", "gix-pack", @@ -1253,8 +1301,8 @@ checksum = "9b65fffb09393c26624ca408d32cfe8776fb94cd0a5cdf984905e1d2f39779cb" dependencies = [ "clru", "gix-chunk", - "gix-features", - "gix-hash", + "gix-features 0.41.1", + "gix-hash 0.17.0", "gix-hashtable", "gix-object", "gix-path", @@ -1270,7 +1318,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "123844a70cf4d5352441dc06bab0da8aef61be94ec239cb631e0ba01dc6d3a04" dependencies = [ "bstr", - "faster-hex", + "faster-hex 0.9.0", "gix-trace", "thiserror 2.0.12", ] @@ -1282,19 +1330,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ecf3ea2e105c7e45587bac04099824301262a6c43357fad5205da36dbb233b3" dependencies = [ "bstr", - "faster-hex", + "faster-hex 0.9.0", "gix-trace", "thiserror 2.0.12", ] [[package]] name = "gix-path" -version = "0.10.15" +version = "0.10.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f910668e2f6b2a55ff35a1f04df88a1a049f7b868507f4cbeeaa220eaba7be87" +checksum = "c091d2e887e02c3462f52252c5ea61150270c0f2657b642e8d0d6df56c16e642" dependencies = [ "bstr", "gix-trace", + "gix-validate 0.10.0", "home", "once_cell", "thiserror 2.0.12", @@ -1323,12 +1372,12 @@ checksum = "5678ddae1d62880bc30e2200be1b9387af3372e0e88e21f81b4e7f8367355b5a" dependencies = [ "bstr", "gix-date", - "gix-features", - "gix-hash", + "gix-features 0.41.1", + "gix-hash 0.17.0", "gix-ref", "gix-shallow", "gix-transport", - "gix-utils", + "gix-utils 0.2.0", "maybe-async", "thiserror 2.0.12", "winnow", @@ -1341,7 +1390,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b005c550bf84de3b24aa5e540a23e6146a1c01c7d30470e35d75a12f827f969" dependencies = [ "bstr", - "gix-utils", + "gix-utils 0.2.0", "thiserror 2.0.12", ] @@ -1352,15 +1401,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2e1f7eb6b7ce82d2d19961f74bd637bab3ea79b1bc7bfb23dbefc67b0415d8b" dependencies = [ "gix-actor", - "gix-features", - "gix-fs", - "gix-hash", + "gix-features 0.41.1", + "gix-fs 0.14.0", + "gix-hash 0.17.0", "gix-lock", "gix-object", "gix-path", "gix-tempfile", - "gix-utils", - "gix-validate", + "gix-utils 0.2.0", + "gix-validate 0.9.4", "memmap2", "thiserror 2.0.12", "winnow", @@ -1373,9 +1422,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d8587b21e2264a6e8938d940c5c99662779c13a10741a5737b15fc85c252ffc" dependencies = [ "bstr", - "gix-hash", + "gix-hash 0.17.0", "gix-revision", - "gix-validate", + "gix-validate 0.9.4", "smallvec", "thiserror 2.0.12", ] @@ -1390,7 +1439,7 @@ dependencies = [ "bstr", "gix-commitgraph", "gix-date", - "gix-hash", + "gix-hash 0.17.0", "gix-hashtable", "gix-object", "gix-revwalk", @@ -1406,7 +1455,7 @@ checksum = "2dc7c3d7e5cdc1ab8d35130106e4af0a4f9f9eca0c81f4312b690780e92bde0d" dependencies = [ "gix-commitgraph", "gix-date", - "gix-hash", + "gix-hash 0.17.0", "gix-hashtable", "gix-object", "smallvec", @@ -1432,7 +1481,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc0598aacfe1d52575a21c9492fee086edbb21e228ec36c819c42ab923f434c3" dependencies = [ "bstr", - "gix-hash", + "gix-hash 0.17.0", "gix-lock", "thiserror 2.0.12", ] @@ -1447,10 +1496,10 @@ dependencies = [ "filetime", "gix-diff", "gix-dir", - "gix-features", + "gix-features 0.41.1", "gix-filter", - "gix-fs", - "gix-hash", + "gix-fs 0.14.0", + "gix-hash 0.17.0", "gix-index", "gix-object", "gix-path", @@ -1477,12 +1526,12 @@ dependencies = [ [[package]] name = "gix-tempfile" -version = "17.0.0" +version = "17.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6de439bbb9a5d3550c9c7fab0e16d2d637d120fcbe0dfbc538772a187f099b" +checksum = "c750e8c008453a2dba67a2b0d928b7716e05da31173a3f5e351d5457ad4470aa" dependencies = [ "dashmap", - "gix-fs", + "gix-fs 0.15.0", "libc", "once_cell", "parking_lot 0.12.3", @@ -1505,7 +1554,7 @@ checksum = "b3f68c2870bfca8278389d2484a7f2215b67d0b0cc5277d3c72ad72acf41787e" dependencies = [ "bstr", "gix-command", - "gix-features", + "gix-features 0.41.1", "gix-packetline", "gix-quote", "gix-sec", @@ -1522,7 +1571,7 @@ dependencies = [ "bitflags 2.9.0", "gix-commitgraph", "gix-date", - "gix-hash", + "gix-hash 0.17.0", "gix-hashtable", "gix-object", "gix-revwalk", @@ -1537,7 +1586,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48dfe23f93f1ddb84977d80bb0dd7aa09d1bf5d5afc0c9b6820cccacc25ae860" dependencies = [ "bstr", - "gix-features", + "gix-features 0.41.1", "gix-path", "percent-encoding", "thiserror 2.0.12", @@ -1555,6 +1604,16 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "gix-utils" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5351af2b172caf41a3728eb4455326d84e0d70fe26fc4de74ab0bd37df4191c5" +dependencies = [ + "fastrand", + "unicode-normalization", +] + [[package]] name = "gix-validate" version = "0.9.4" @@ -1565,6 +1624,16 @@ dependencies = [ "thiserror 2.0.12", ] +[[package]] +name = "gix-validate" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77b9e00cacde5b51388d28ed746c493b18a6add1f19b5e01d686b3b9ece66d4d" +dependencies = [ + "bstr", + "thiserror 2.0.12", +] + [[package]] name = "gix-worktree" version = "0.40.0" @@ -1573,22 +1642,22 @@ checksum = "f7760dbc4b79aa274fed30adc0d41dca6b917641f26e7867c4071b1fb4dc727b" dependencies = [ "bstr", "gix-attributes", - "gix-features", - "gix-fs", + "gix-features 0.41.1", + "gix-fs 0.14.0", "gix-glob", - "gix-hash", + "gix-hash 0.17.0", "gix-ignore", "gix-index", "gix-object", "gix-path", - "gix-validate", + "gix-validate 0.9.4", ] [[package]] name = "h2" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75249d144030531f8dee69fe9cea04d3edf809a017ae445e2abdff6629e86633" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" dependencies = [ "atomic-waker", "bytes", @@ -1603,6 +1672,15 @@ dependencies = [ "tracing", ] +[[package]] +name = "hash32" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" +dependencies = [ + "byteorder", +] + [[package]] name = "hashbrown" version = "0.14.5" @@ -1615,13 +1693,23 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" dependencies = [ "foldhash", ] +[[package]] +name = "heapless" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" +dependencies = [ + "hash32", + "stable_deref_trait", +] + [[package]] name = "heck" version = "0.5.0" @@ -1912,7 +2000,7 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17d34b7d42178945f775e84bc4c36dde7c1c6cdfea656d3354d009056f2bb3d2" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.15.3", ] [[package]] @@ -1922,7 +2010,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.15.3", ] [[package]] @@ -1957,9 +2045,9 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jiff" -version = "0.2.8" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ad87c89110f55e4cd4dc2893a9790820206729eaf221555f742d540b0724a0" +checksum = "f02000660d30638906021176af16b17498bd0d12813dbfe7b276d8bc7f3c0806" dependencies = [ "jiff-static", "jiff-tzdb-platform", @@ -1972,9 +2060,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.8" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d076d5b64a7e2fe6f0743f02c43ca4a6725c0f904203bfe276a5b3e793103605" +checksum = "f3c30758ddd7188629c6713fc45d1188af4f44c90582311d0c8d8c9907f60c48" dependencies = [ "proc-macro2", "quote", @@ -2023,9 +2111,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.171" +version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "libloading" @@ -2045,7 +2133,7 @@ checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags 2.9.0", "libc", - "redox_syscall 0.5.11", + "redox_syscall 0.5.12", ] [[package]] @@ -2085,7 +2173,7 @@ checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "macros" version = "0.1.0" -source = "git+https://github.com/GrandEngineering/enginelib.git#fa2b0bbccdf87511b51fc7b8e70b99e14c4e5260" +source = "git+https://github.com/GrandEngineering/enginelib.git#75cdf1ef1294d6b25961cc4759a29daf54a0a895" dependencies = [ "proc-macro2", "quote", @@ -2279,7 +2367,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.11", + "redox_syscall 0.5.12", "smallvec", "windows-targets 0.52.6", ] @@ -2359,7 +2447,7 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.8.24", + "zerocopy 0.8.25", ] [[package]] @@ -2374,9 +2462,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.94" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] @@ -2460,13 +2548,12 @@ checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" [[package]] name = "rand" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" dependencies = [ "rand_chacha", "rand_core", - "zerocopy 0.8.24", ] [[package]] @@ -2499,9 +2586,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.11" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3" +checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" dependencies = [ "bitflags 2.9.0", ] @@ -2512,7 +2599,7 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "libredox", "thiserror 1.0.69", ] @@ -2591,9 +2678,9 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.5" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ "bitflags 2.9.0", "errno", @@ -2733,9 +2820,9 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" dependencies = [ "libc", ] @@ -2801,9 +2888,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.100" +version = "2.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" dependencies = [ "proc-macro2", "quote", @@ -2818,9 +2905,9 @@ checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", @@ -2847,7 +2934,7 @@ dependencies = [ "fastrand", "getrandom 0.3.2", "once_cell", - "rustix 1.0.5", + "rustix 1.0.7", "windows-sys 0.59.0", ] @@ -2961,9 +3048,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.44.2" +version = "1.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" +checksum = "2513ca694ef9ede0fb23fe71a4ee4107cb102b9dc1930f6d0fd77aae068ae165" dependencies = [ "backtrace", "bytes", @@ -3001,9 +3088,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.14" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" dependencies = [ "bytes", "futures-core", @@ -3014,9 +3101,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.20" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" +checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" dependencies = [ "serde", "serde_spanned", @@ -3026,31 +3113,38 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.24" +version = "0.22.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", + "toml_write", "winnow", ] +[[package]] +name = "toml_write" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" + [[package]] name = "tonic" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85839f0b32fd242bb3209262371d07feda6d780d16ee9d2bc88581b89da1549b" +checksum = "7e581ba15a835f4d9ea06c55ab1bd4dce26fc53752c69a04aac00703bfb49ba9" dependencies = [ "async-trait", "axum", @@ -3077,9 +3171,9 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d85f0383fadd15609306383a90e85eaed44169f931a5d2be1b42c76ceff1825e" +checksum = "eac6f67be712d12f0b41328db3137e0d0757645d8904b4cb7d51cd9c2279e847" dependencies = [ "prettyplease", "proc-macro2", @@ -3091,9 +3185,9 @@ dependencies = [ [[package]] name = "tonic-reflection" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88fa815be858816dad226a49439ee90b7bcf81ab55bee72fdb217f1e6778c3ca" +checksum = "f9687bd5bfeafebdded2356950f278bba8226f0b32109537c4253406e09aafe1" dependencies = [ "prost", "prost-types", @@ -3672,9 +3766,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.7.6" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63d3fcd9bba44b03821e7d699eeee959f3126dcc4aa8e4ae18ec617c2a5cea10" +checksum = "d9fb597c990f03753e08d3c29efbfcf2019a003b4bf4ba19225c158e1549f0f3" dependencies = [ "memchr", ] @@ -3707,7 +3801,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e" dependencies = [ "libc", - "rustix 1.0.5", + "rustix 1.0.7", ] [[package]] @@ -3745,11 +3839,11 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.24" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" dependencies = [ - "zerocopy-derive 0.8.24", + "zerocopy-derive 0.8.25", ] [[package]] @@ -3765,9 +3859,9 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.8.24" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" dependencies = [ "proc-macro2", "quote", diff --git a/proto/engine.proto b/proto/engine.proto index c06df28..f6bf96a 100644 --- a/proto/engine.proto +++ b/proto/engine.proto @@ -2,14 +2,35 @@ syntax = "proto3"; package engine; service engine { rpc AquireTask(TaskRequest) returns (Task); - rpc CreateTask(Task) returns (Task); rpc AquireTaskReg(empty) returns (TaskRegistry); rpc PublishTask(Task) returns (empty); rpc cgrpc(cgrpcmsg) returns (cgrpcmsg); + rpc CreateTask(Task) returns (Task); + // rpc DeleteTask(Task) returns (empty); + rpc GetTasks(TaskPageRequest) returns (TaskPage); } message empty {} - +enum TaskState { + QUEUED = 0; + PROCESSING = 1; + SOLVED = 2; +} +message TaskPageRequest { + string namespace = 1; + string task = 2; + uint64 page = 3; + uint32 pageSize = 4; + TaskState state = 5; +} +message TaskPage { + string namespace = 1; + string task = 2; + uint64 page = 3; + uint32 pageSize = 4; + TaskState state = 5; + repeated Task tasks = 6; +} message cgrpcmsg { string handler_mod_id = 1; string handler_id = 2; diff --git a/src/bin/server.rs b/src/bin/server.rs index afc6028..5c775bd 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -7,9 +7,12 @@ use enginelib::{ event::{debug, info, warn}, events::{self, Events, ID}, plugin::LibraryManager, - task::{StoredTask, Task, TaskQueue}, + task::{SolvedTasks, StoredExecutingTask, StoredTask, Task, TaskQueue}, +}; +use proto::{ + TaskState, + engine_server::{Engine, EngineServer}, }; -use proto::engine_server::{Engine, EngineServer}; use std::{ env::consts::OS, io::Read, @@ -29,6 +32,122 @@ struct EngineService { } #[tonic::async_trait] impl Engine for EngineService { + async fn get_tasks( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + let mut api = self.EngineAPI.write().await; + let challenge = get_auth(&request); + let uid = get_uid(&request); + let db = api.db.clone(); + if !Events::CheckAuth(&mut api, uid, challenge, db) { + //TODO: change to AdminSpecific Auth + info!("GetTask denied due to Invalid Auth"); + return Err(Status::permission_denied("Invalid authentication")); + }; + let data = request.get_ref(); + + let q: Vec = match data.clone().state() { + TaskState::Processing => { + match api + .executing_tasks + .tasks + .get(&(data.namespace.clone(), data.task.clone())) + { + Some(tasks) => { + let mut task_refs: Vec<_> = tasks.iter().collect(); + task_refs.sort_by_key(|f| &f.id); + task_refs + .iter() + .map(|f| proto::Task { + id: f.id.clone(), + task_id: format!("{}:{}", data.namespace, data.task), + task_payload: f.bytes.clone(), + payload: Vec::new(), + }) + .collect() + } + None => { + info!( + "Namespace {:?} and task {:?} not found in Processing state", + data.namespace, data.task + ); + Vec::new() + } + } + } + TaskState::Queued => { + match api + .task_queue + .tasks + .get(&(data.namespace.clone(), data.task.clone())) + { + Some(tasks) => { + let mut task_refs: Vec<_> = tasks.iter().collect(); + task_refs.sort_by_key(|f| &f.id); + task_refs + .map(|f| proto::Task { + id: f.id.clone(), + task_id: format!("{}:{}", data.namespace, data.task), + task_payload: f.bytes.clone(), + payload: Vec::new(), + }) + .collect() + } + None => { + info!( + "Namespace {:?} and task {:?} not found in Queued state", + data.namespace, data.task + ); + Vec::new() + } + } + } + TaskState::Solved => { + match api + .solved_tasks + .tasks + .get(&(data.namespace.clone(), data.task.clone())) + { + Some(tasks) => { + let mut task_refs: Vec<_> = tasks.iter().collect(); + task_refs.sort_by_key(|f| &f.id); + task_refs + .map(|f| proto::Task { + id: f.id.clone(), + task_id: format!("{}:{}", data.namespace, data.task), + task_payload: f.bytes.clone(), + payload: Vec::new(), + }) + .collect() + } + None => { + info!( + "Namespace {:?} and task {:?} not found in Solved state", + data.namespace, data.task + ); + Vec::new() + } + } + } + }; + let index = data.page * data.page_size as u64; + let end = index + data.page_size as u64; + let final_vec: Vec<_> = q + .iter() + .skip(index as usize) + .take(data.page_size as usize) + .cloned() + .collect(); + return Ok(tonic::Response::new(proto::TaskPage { + namespace: data.namespace.clone(), + task: data.task.clone(), + page: data.page, + page_size: data.page_size, + state: data.state, + tasks: final_vec, + })); + } async fn cgrpc( &self, request: tonic::Request,