From b9b5220266e2d39529f55cc32cff1b1136090369 Mon Sep 17 00:00:00 2001 From: Nasr Date: Tue, 6 Aug 2024 15:08:36 -0400 Subject: [PATCH 1/3] refactor: remove model subscription --- Cargo.lock | 328 +++++++++++++++++++++++++++++++++--------------- Cargo.toml | 8 +- dojo.h | 46 +++---- dojo.hpp | 12 -- src/c/mod.rs | 75 ----------- src/wasm/mod.rs | 105 +--------------- 6 files changed, 248 insertions(+), 326 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e120950..970578e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -810,9 +810,33 @@ source = "git+https://github.com/cartridge-gg/cainome?tag=v0.3.0#6c82c5b8e8169a7 dependencies = [ "anyhow", "async-trait", - "cainome-cairo-serde", - "cainome-parser", - "cainome-rs", + "cainome-cairo-serde 0.1.0 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.0)", + "cainome-parser 0.1.0 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.0)", + "cainome-rs 0.1.0 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.0)", + "camino", + "clap 4.5.9", + "clap_complete", + "convert_case", + "serde", + "serde_json", + "starknet", + "starknet-types-core", + "thiserror", + "tracing", + "tracing-subscriber", + "url", +] + +[[package]] +name = "cainome" +version = "0.2.3" +source = "git+https://github.com/cartridge-gg/cainome?tag=v0.3.2#3aec6d1465e24af3765d3b9220cc233199a6aa14" +dependencies = [ + "anyhow", + "async-trait", + "cainome-cairo-serde 0.1.0 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.2)", + "cainome-parser 0.1.0 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.2)", + "cainome-rs 0.1.0 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.2)", "cainome-rs-macro", "camino", "clap 4.5.9", @@ -838,6 +862,16 @@ dependencies = [ "thiserror", ] +[[package]] +name = "cainome-cairo-serde" +version = "0.1.0" +source = "git+https://github.com/cartridge-gg/cainome?tag=v0.3.2#3aec6d1465e24af3765d3b9220cc233199a6aa14" +dependencies = [ + "serde", + "starknet", + "thiserror", +] + [[package]] name = "cainome-parser" version = "0.1.0" @@ -851,14 +885,45 @@ dependencies = [ "thiserror", ] +[[package]] +name = "cainome-parser" +version = "0.1.0" +source = "git+https://github.com/cartridge-gg/cainome?tag=v0.3.2#3aec6d1465e24af3765d3b9220cc233199a6aa14" +dependencies = [ + "convert_case", + "quote", + "serde_json", + "starknet", + "syn 2.0.71", + "thiserror", +] + [[package]] name = "cainome-rs" version = "0.1.0" source = "git+https://github.com/cartridge-gg/cainome?tag=v0.3.0#6c82c5b8e8169a79fe5606f963a3afdf0aa37078" dependencies = [ "anyhow", - "cainome-cairo-serde", - "cainome-parser", + "cainome-cairo-serde 0.1.0 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.0)", + "cainome-parser 0.1.0 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.0)", + "camino", + "prettyplease 0.2.20", + "proc-macro2", + "quote", + "serde_json", + "starknet", + "syn 2.0.71", + "thiserror", +] + +[[package]] +name = "cainome-rs" +version = "0.1.0" +source = "git+https://github.com/cartridge-gg/cainome?tag=v0.3.2#3aec6d1465e24af3765d3b9220cc233199a6aa14" +dependencies = [ + "anyhow", + "cainome-cairo-serde 0.1.0 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.2)", + "cainome-parser 0.1.0 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.2)", "camino", "prettyplease 0.2.20", "proc-macro2", @@ -872,12 +937,12 @@ dependencies = [ [[package]] name = "cainome-rs-macro" version = "0.1.0" -source = "git+https://github.com/cartridge-gg/cainome?tag=v0.3.0#6c82c5b8e8169a79fe5606f963a3afdf0aa37078" +source = "git+https://github.com/cartridge-gg/cainome?tag=v0.3.2#3aec6d1465e24af3765d3b9220cc233199a6aa14" dependencies = [ "anyhow", - "cainome-cairo-serde", - "cainome-parser", - "cainome-rs", + "cainome-cairo-serde 0.1.0 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.2)", + "cainome-parser 0.1.0 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.2)", + "cainome-rs 0.1.0 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.2)", "proc-macro2", "quote", "serde_json", @@ -888,8 +953,9 @@ dependencies = [ [[package]] name = "cairo-lang-casm" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a43421bf72645b3a562d264747166d6f093e960a69dfa38b67bb3209e370366" dependencies = [ "cairo-lang-utils", "indoc 2.0.5", @@ -901,8 +967,9 @@ dependencies = [ [[package]] name = "cairo-lang-compiler" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24242af537265add372896d9ab0678c86a68d3484281fbeb6d8a9d4d5bacf7c8" dependencies = [ "anyhow", "cairo-lang-defs", @@ -924,16 +991,18 @@ dependencies = [ [[package]] name = "cairo-lang-debug" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d28f38e1c62fed15a4de9f3c95741d6b24ef2a9e67a2b88a047eb6ea7de992e" dependencies = [ "cairo-lang-utils", ] [[package]] name = "cairo-lang-defs" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712206b7be3fb1a33e50e1c30aa8502b4a461155fd93ad26213d0d8b242cb08d" dependencies = [ "cairo-lang-debug", "cairo-lang-diagnostics", @@ -948,8 +1017,9 @@ dependencies = [ [[package]] name = "cairo-lang-diagnostics" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3c8dc2bff2411fbf602d80a83b719e6e3955c1c5d767ec18b295fc92e8616a" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -959,8 +1029,9 @@ dependencies = [ [[package]] name = "cairo-lang-eq-solver" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaa8ac24c97770739f5a78d630b8515273c8b9f4aff34e1f88b988fac50340de" dependencies = [ "cairo-lang-utils", "good_lp", @@ -968,8 +1039,9 @@ dependencies = [ [[package]] name = "cairo-lang-filesystem" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4596331565fe61d10a0a6a03ace2b9d0ba93f03ee12a8450fe9252a6fee770f3" dependencies = [ "cairo-lang-debug", "cairo-lang-utils", @@ -981,8 +1053,9 @@ dependencies = [ [[package]] name = "cairo-lang-formatter" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69b8eb08e511d6e6df51370cdc7d85f0de9a38c8b14a15762665c60c2df6d32d" dependencies = [ "anyhow", "cairo-lang-diagnostics", @@ -1001,8 +1074,9 @@ dependencies = [ [[package]] name = "cairo-lang-lowering" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d535dc591513875b39b799270df21db10540033fd7710917760c22fc063a4ae" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -1025,8 +1099,8 @@ dependencies = [ [[package]] name = "cairo-lang-macro" -version = "0.0.1" -source = "git+https://github.com/software-mansion/scarb?rev=4b75f435f68248a7c096ec0fa5939ecdd92e2d79#4b75f435f68248a7c096ec0fa5939ecdd92e2d79" +version = "0.1.0" +source = "git+https://github.com/software-mansion/scarb?tag=v2.7.0#e9a2b8716daf7388bfab5e4b0a2656e1b0c02d4d" dependencies = [ "cairo-lang-macro-attributes", "cairo-lang-macro-stable", @@ -1035,23 +1109,26 @@ dependencies = [ [[package]] name = "cairo-lang-macro-attributes" -version = "0.0.1" -source = "git+https://github.com/software-mansion/scarb?rev=4b75f435f68248a7c096ec0fa5939ecdd92e2d79#4b75f435f68248a7c096ec0fa5939ecdd92e2d79" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e32e958decd95ae122ee64daa26721da2f76e83231047f947fd9cdc5d3c90cc6" dependencies = [ "quote", - "scarb-stable-hash", + "scarb-stable-hash 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "syn 2.0.71", ] [[package]] name = "cairo-lang-macro-stable" version = "1.0.0" -source = "git+https://github.com/software-mansion/scarb?rev=4b75f435f68248a7c096ec0fa5939ecdd92e2d79#4b75f435f68248a7c096ec0fa5939ecdd92e2d79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c49906d6b1c215e5814be7c5c65ecf2328898b335bee8c2409ec07cfb5530daf" [[package]] name = "cairo-lang-parser" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73019d5873715964f428ff10467efb607d6dc007ae164a21547bf20d9b5dcc72" dependencies = [ "cairo-lang-diagnostics", "cairo-lang-filesystem", @@ -1069,8 +1146,9 @@ dependencies = [ [[package]] name = "cairo-lang-plugins" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96e52fca18bc696011a47a4ded0dc00e2e0ac7c81a8052eddd4ad546c46b818e" dependencies = [ "cairo-lang-defs", "cairo-lang-diagnostics", @@ -1087,8 +1165,9 @@ dependencies = [ [[package]] name = "cairo-lang-proc-macros" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d55dcf98a6e1a03e0b36129fad4253f9e6666a1746ab9c075d212ba68a4e9c1" dependencies = [ "cairo-lang-debug", "quote", @@ -1097,8 +1176,9 @@ dependencies = [ [[package]] name = "cairo-lang-project" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ddb432e5199a65e37bab97ef6322afabd60e0e638ada31178d9c23d237219d" dependencies = [ "cairo-lang-filesystem", "cairo-lang-utils", @@ -1110,8 +1190,9 @@ dependencies = [ [[package]] name = "cairo-lang-semantic" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "393325820207491a7475269e98163e0db7e85e4b215f4d801ca537ce1cd6daa7" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -1136,8 +1217,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "918fb0611203fb8cdd1fcdb434f395a59e0ebb0db64b11a0e15bfbfb03552821" dependencies = [ "anyhow", "cairo-lang-utils", @@ -1163,8 +1245,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-ap-change" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fa1834ec729e89fcbd00df03f2a64a18515fcf07eb18dfef39afe020a10955d" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -1178,8 +1261,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-gas" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b00927d39f910dd5ae1047cef9b46b2ee11617d33d290f875bc00dfc7e3d992" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -1193,8 +1277,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-generator" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7620a6a7becf5997093a83d289a5e3b3162bc8fd031ad75df82a5bc04f8cc954" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -1217,8 +1302,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-to-casm" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67bd155770abf91d4290a31b0c0a1fb393ecee85eb0af40c16893b4601eff4d6" dependencies = [ "assert_matches", "cairo-lang-casm", @@ -1237,8 +1323,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-type-size" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbae9458999da692c272501678b6cfec358a6bcadb54921bf35d21afdcd91251" dependencies = [ "cairo-lang-sierra", "cairo-lang-utils", @@ -1246,8 +1333,9 @@ dependencies = [ [[package]] name = "cairo-lang-starknet" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f242d889180386d35935597f9d1cac07d4f3d60bd0f10558660ae4a77da701b6" dependencies = [ "anyhow", "cairo-lang-compiler", @@ -1276,8 +1364,9 @@ dependencies = [ [[package]] name = "cairo-lang-starknet-classes" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa17b313f46fcf7ff4de32b86c250eaf584d1e2c8e37ed16db155b221721e735" dependencies = [ "cairo-lang-casm", "cairo-lang-sierra", @@ -1299,8 +1388,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d0ca518ed7c3674d9b62470f7482f4b07553eb3a02d83e0ae61bd6b5ecb4ec8" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -1314,8 +1404,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax-codegen" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f12bdff5c265edb5a76084bfde2bc8270a7fdaf16ac58aa0d54ea6a20c29023" dependencies = [ "genco", "xshell", @@ -1323,8 +1414,9 @@ dependencies = [ [[package]] name = "cairo-lang-test-plugin" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20b526ea053b930222352027b3259be44fb3cd3b25106e2b1fbc815526423650" dependencies = [ "anyhow", "cairo-lang-compiler", @@ -1350,8 +1442,9 @@ dependencies = [ [[package]] name = "cairo-lang-test-utils" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6a2365bd502a657437f9d0d665e32e017054d0effdbecb1dda776bfcc11235d" dependencies = [ "cairo-lang-formatter", "cairo-lang-utils", @@ -1362,8 +1455,9 @@ dependencies = [ [[package]] name = "cairo-lang-utils" -version = "2.6.4" -source = "git+https://github.com/starkware-libs/cairo?rev=43cf361d9b6b26ec8cd5ee076dd15341bde7577c#43cf361d9b6b26ec8cd5ee076dd15341bde7577c" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bd5c8c127b9362a12ffb9dede38e792c81b4ded5a98b448baec157b745f47d1" dependencies = [ "env_logger", "hashbrown 0.14.5", @@ -1772,7 +1866,7 @@ dependencies = [ [[package]] name = "create-output-dir" version = "1.0.0" -source = "git+https://github.com/software-mansion/scarb?rev=4b75f435f68248a7c096ec0fa5939ecdd92e2d79#4b75f435f68248a7c096ec0fa5939ecdd92e2d79" +source = "git+https://github.com/software-mansion/scarb?tag=v2.7.0#e9a2b8716daf7388bfab5e4b0a2656e1b0c02d4d" dependencies = [ "anyhow", "core-foundation", @@ -2084,6 +2178,19 @@ dependencies = [ "syn 2.0.71", ] +[[package]] +name = "dialoguer" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" +dependencies = [ + "console", + "shell-words", + "tempfile", + "thiserror", + "zeroize", +] + [[package]] name = "diff" version = "0.1.13" @@ -2189,7 +2296,7 @@ name = "dojo-c" version = "1.0.0-alpha.0" dependencies = [ "anyhow", - "cainome", + "cainome 0.2.3 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.0)", "cbindgen", "crypto-bigint", "dojo-types", @@ -2217,11 +2324,11 @@ dependencies = [ [[package]] name = "dojo-lang" -version = "1.0.0-alpha.1" -source = "git+https://github.com/dojoengine/dojo?rev=5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6#5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6" +version = "1.0.0-alpha.4" +source = "git+https://github.com/dojoengine/dojo?rev=1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740#1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740" dependencies = [ "anyhow", - "cainome", + "cainome 0.2.3 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.2)", "cairo-lang-compiler", "cairo-lang-debug", "cairo-lang-defs", @@ -2252,6 +2359,7 @@ dependencies = [ "regex", "salsa", "scarb", + "scarb-ui", "semver", "serde", "serde_json", @@ -2267,10 +2375,10 @@ dependencies = [ [[package]] name = "dojo-types" -version = "1.0.0-alpha.1" -source = "git+https://github.com/dojoengine/dojo?rev=5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6#5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6" +version = "1.0.0-alpha.4" +source = "git+https://github.com/dojoengine/dojo?rev=1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740#1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740" dependencies = [ - "cainome", + "cainome 0.2.3 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.2)", "crypto-bigint", "hex", "itertools 0.12.1", @@ -2285,12 +2393,12 @@ dependencies = [ [[package]] name = "dojo-world" -version = "1.0.0-alpha.1" -source = "git+https://github.com/dojoengine/dojo?rev=5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6#5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6" +version = "1.0.0-alpha.4" +source = "git+https://github.com/dojoengine/dojo?rev=1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740#1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740" dependencies = [ "anyhow", "async-trait", - "cainome", + "cainome 0.2.3 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.2)", "cairo-lang-filesystem", "cairo-lang-project", "cairo-lang-starknet", @@ -4795,12 +4903,12 @@ checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libloading" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-targets 0.48.5", ] [[package]] @@ -7478,8 +7586,8 @@ dependencies = [ [[package]] name = "scarb" -version = "2.6.4" -source = "git+https://github.com/software-mansion/scarb?rev=4b75f435f68248a7c096ec0fa5939ecdd92e2d79#4b75f435f68248a7c096ec0fa5939ecdd92e2d79" +version = "2.7.0" +source = "git+https://github.com/software-mansion/scarb?tag=v2.7.0#e9a2b8716daf7388bfab5e4b0a2656e1b0c02d4d" dependencies = [ "anyhow", "async-trait", @@ -7488,6 +7596,7 @@ dependencies = [ "cairo-lang-diagnostics", "cairo-lang-filesystem", "cairo-lang-formatter", + "cairo-lang-lowering", "cairo-lang-macro", "cairo-lang-macro-stable", "cairo-lang-parser", @@ -7506,6 +7615,7 @@ dependencies = [ "data-encoding", "deno_task_shell", "derive_builder", + "dialoguer", "directories", "dunce", "fs4", @@ -7527,7 +7637,7 @@ dependencies = [ "reqwest 0.11.27", "scarb-build-metadata", "scarb-metadata", - "scarb-stable-hash", + "scarb-stable-hash 1.0.0 (git+https://github.com/software-mansion/scarb?tag=v2.7.0)", "scarb-ui", "semver", "serde", @@ -7556,8 +7666,8 @@ dependencies = [ [[package]] name = "scarb-build-metadata" -version = "2.6.4" -source = "git+https://github.com/software-mansion/scarb?rev=4b75f435f68248a7c096ec0fa5939ecdd92e2d79#4b75f435f68248a7c096ec0fa5939ecdd92e2d79" +version = "2.7.0" +source = "git+https://github.com/software-mansion/scarb?tag=v2.7.0#e9a2b8716daf7388bfab5e4b0a2656e1b0c02d4d" dependencies = [ "cargo_metadata", ] @@ -7565,7 +7675,7 @@ dependencies = [ [[package]] name = "scarb-metadata" version = "1.12.0" -source = "git+https://github.com/software-mansion/scarb?rev=4b75f435f68248a7c096ec0fa5939ecdd92e2d79#4b75f435f68248a7c096ec0fa5939ecdd92e2d79" +source = "git+https://github.com/software-mansion/scarb?tag=v2.7.0#e9a2b8716daf7388bfab5e4b0a2656e1b0c02d4d" dependencies = [ "camino", "derive_builder", @@ -7578,7 +7688,17 @@ dependencies = [ [[package]] name = "scarb-stable-hash" version = "1.0.0" -source = "git+https://github.com/software-mansion/scarb?rev=4b75f435f68248a7c096ec0fa5939ecdd92e2d79#4b75f435f68248a7c096ec0fa5939ecdd92e2d79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1902536b23a05dd165d3992865870aaf1b0650317767cbf171ed2ca5903732a9" +dependencies = [ + "data-encoding", + "xxhash-rust", +] + +[[package]] +name = "scarb-stable-hash" +version = "1.0.0" +source = "git+https://github.com/software-mansion/scarb?tag=v2.7.0#e9a2b8716daf7388bfab5e4b0a2656e1b0c02d4d" dependencies = [ "data-encoding", "xxhash-rust", @@ -7587,7 +7707,7 @@ dependencies = [ [[package]] name = "scarb-ui" version = "0.1.5" -source = "git+https://github.com/software-mansion/scarb?rev=4b75f435f68248a7c096ec0fa5939ecdd92e2d79#4b75f435f68248a7c096ec0fa5939ecdd92e2d79" +source = "git+https://github.com/software-mansion/scarb?tag=v2.7.0#e9a2b8716daf7388bfab5e4b0a2656e1b0c02d4d" dependencies = [ "anyhow", "camino", @@ -8058,13 +8178,13 @@ dependencies = [ [[package]] name = "sozo-ops" -version = "1.0.0-alpha.1" -source = "git+https://github.com/dojoengine/dojo?rev=5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6#5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6" +version = "1.0.0-alpha.4" +source = "git+https://github.com/dojoengine/dojo?rev=1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740#1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740" dependencies = [ "anyhow", "async-trait", "bigdecimal", - "cainome", + "cainome 0.2.3 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.2)", "cairo-lang-compiler", "cairo-lang-defs", "cairo-lang-filesystem", @@ -9197,8 +9317,8 @@ checksum = "ea68304e134ecd095ac6c3574494fc62b909f416c4fca77e440530221e549d3d" [[package]] name = "torii-client" -version = "1.0.0-alpha.1" -source = "git+https://github.com/dojoengine/dojo?rev=5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6#5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6" +version = "1.0.0-alpha.4" +source = "git+https://github.com/dojoengine/dojo?rev=1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740#1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740" dependencies = [ "async-trait", "crypto-bigint", @@ -9226,13 +9346,13 @@ dependencies = [ [[package]] name = "torii-core" -version = "1.0.0-alpha.1" -source = "git+https://github.com/dojoengine/dojo?rev=5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6#5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6" +version = "1.0.0-alpha.4" +source = "git+https://github.com/dojoengine/dojo?rev=1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740#1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740" dependencies = [ "anyhow", "async-trait", "base64 0.21.7", - "cainome", + "cainome 0.2.3 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.2)", "chrono", "crypto-bigint", "dojo-types", @@ -9262,8 +9382,8 @@ dependencies = [ [[package]] name = "torii-grpc" -version = "1.0.0-alpha.1" -source = "git+https://github.com/dojoengine/dojo?rev=5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6#5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6" +version = "1.0.0-alpha.4" +source = "git+https://github.com/dojoengine/dojo?rev=1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740#1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740" dependencies = [ "bytes", "crypto-bigint", @@ -9303,12 +9423,12 @@ dependencies = [ [[package]] name = "torii-relay" -version = "1.0.0-alpha.1" -source = "git+https://github.com/dojoengine/dojo?rev=5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6#5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6" +version = "1.0.0-alpha.4" +source = "git+https://github.com/dojoengine/dojo?rev=1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740#1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740" dependencies = [ "anyhow", "async-trait", - "cainome", + "cainome 0.2.3 (git+https://github.com/cartridge-gg/cainome?tag=v0.3.2)", "chrono", "crypto-bigint", "dojo-types", diff --git a/Cargo.toml b/Cargo.toml index 85d6f63..51d7c66 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,12 +7,12 @@ version = "1.0.0-alpha.0" crate-type = ["cdylib", "rlib", "staticlib"] [dependencies] -dojo-types = { git = "https://github.com/dojoengine/dojo", rev = "5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6" } -torii-client = { git = "https://github.com/dojoengine/dojo", rev = "5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6" } +dojo-types = { git = "https://github.com/dojoengine/dojo", rev = "1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740" } +torii-client = { git = "https://github.com/dojoengine/dojo", rev = "1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740" } torii-grpc = { git = "https://github.com/dojoengine/dojo", features = [ "client", -], rev = "5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6" } -torii-relay = { git = "https://github.com/dojoengine/dojo", rev = "5d8b5f9d4f8bdbfc61ba39b3d8366e6284a4c9c6" } +], rev = "1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740" } +torii-relay = { git = "https://github.com/dojoengine/dojo", rev = "1c0e8cc17e0c6e3fd4cc0d3e0826f19cff674740" } starknet = "0.11.0" diff --git a/dojo.h b/dojo.h index 07288f9..2b5f314 100644 --- a/dojo.h +++ b/dojo.h @@ -461,23 +461,6 @@ typedef struct WorldMetadata { struct CArrayCHashItemFieldElementModelMetadata models; } WorldMetadata; -typedef enum Resultbool_Tag { - Okbool, - Errbool, -} Resultbool_Tag; - -typedef struct Resultbool { - Resultbool_Tag tag; - union { - struct { - bool ok; - }; - struct { - struct Error err; - }; - }; -} Resultbool; - typedef enum ResultSubscription_Tag { OkSubscription, ErrSubscription, @@ -512,6 +495,23 @@ typedef struct EntityKeysClause { }; } EntityKeysClause; +typedef enum Resultbool_Tag { + Okbool, + Errbool, +} Resultbool_Tag; + +typedef struct Resultbool { + Resultbool_Tag tag; + union { + struct { + bool ok; + }; + struct { + struct Error err; + }; + }; +} Resultbool; + typedef enum ResultCArrayFieldElement_Tag { OkCArrayFieldElement, ErrCArrayFieldElement, @@ -670,14 +670,6 @@ struct CArrayModelKeysClause client_subscribed_models(struct ToriiClient *client struct WorldMetadata client_metadata(struct ToriiClient *client); -struct Resultbool client_add_models_to_sync(struct ToriiClient *client, - const struct ModelKeysClause *models, - uintptr_t models_len); - -struct ResultSubscription client_on_sync_model_update(struct ToriiClient *client, - struct ModelKeysClause model, - void (*callback)(void)); - struct ResultSubscription client_on_entity_state_update(struct ToriiClient *client, const struct EntityKeysClause *clauses, uintptr_t clauses_len, @@ -700,10 +692,6 @@ struct Resultbool client_update_event_message_subscription(struct ToriiClient *c const struct EntityKeysClause *clauses, uintptr_t clauses_len); -struct Resultbool client_remove_models_to_sync(struct ToriiClient *client, - const struct ModelKeysClause *models, - uintptr_t models_len); - struct ResultCArrayFieldElement bytearray_serialize(const char *str); struct Resultc_char bytearray_deserialize(const struct FieldElement *felts, uintptr_t felts_len); diff --git a/dojo.hpp b/dojo.hpp index ec64884..cd33088 100644 --- a/dojo.hpp +++ b/dojo.hpp @@ -945,14 +945,6 @@ CArray client_subscribed_models(ToriiClient *client); WorldMetadata client_metadata(ToriiClient *client); -Result client_add_models_to_sync(ToriiClient *client, - const ModelKeysClause *models, - uintptr_t models_len); - -Result client_on_sync_model_update(ToriiClient *client, - ModelKeysClause model, - void (*callback)()); - Result client_on_entity_state_update(ToriiClient *client, const EntityKeysClause *clauses, uintptr_t clauses_len, @@ -973,10 +965,6 @@ Result client_update_event_message_subscription(ToriiClient *client, const EntityKeysClause *clauses, uintptr_t clauses_len); -Result client_remove_models_to_sync(ToriiClient *client, - const ModelKeysClause *models, - uintptr_t models_len); - Result> bytearray_serialize(const char *str); Result bytearray_deserialize(const FieldElement *felts, uintptr_t felts_len); diff --git a/src/c/mod.rs b/src/c/mod.rs index 76d44d5..04827bc 100644 --- a/src/c/mod.rs +++ b/src/c/mod.rs @@ -55,15 +55,6 @@ pub unsafe extern "C" fn client_new( relay_runner.lock().await.run().await; }); - // Start subscription - let result = runtime.block_on(client.start_subscription()); - match result { - Ok(sub) => { - runtime.spawn(sub); - } - Err(e) => return Result::Err(e.into()), - } - Result::Ok(Box::into_raw(Box::new(ToriiClient { inner: client, runtime, logger: None }))) } @@ -181,54 +172,6 @@ pub unsafe extern "C" fn client_metadata(client: *mut ToriiClient) -> WorldMetad unsafe { (&(*client).inner.metadata().clone()).into() } } -#[no_mangle] -#[allow(clippy::missing_safety_doc)] -pub unsafe extern "C" fn client_add_models_to_sync( - client: *mut ToriiClient, - models: *const ModelKeysClause, - models_len: usize, -) -> Result { - let models = unsafe { std::slice::from_raw_parts(models, models_len).to_vec() }; - - let client_future = - unsafe { (*client).inner.add_models_to_sync(models.iter().map(|e| e.into()).collect()) }; - - match (*client).runtime.block_on(client_future) { - Ok(_) => Result::Ok(true), - Err(e) => Result::Err(e.into()), - } -} - -#[no_mangle] -#[allow(clippy::missing_safety_doc)] -pub unsafe extern "C" fn client_on_sync_model_update( - client: *mut ToriiClient, - model: ModelKeysClause, - callback: unsafe extern "C" fn(), -) -> Result<*mut Subscription> { - let model: torii_grpc::types::ModelKeysClause = (&model).into(); - let storage = (*client).inner.storage(); - - let rcv = match storage.add_listener( - cairo_short_string_to_felt(model.model.as_str()).unwrap(), - model.keys.as_slice(), - ) { - Ok(rcv) => rcv, - Err(e) => return Result::Err(e.into()), - }; - - let (trigger, tripwire) = Tripwire::new(); - (*client).runtime.spawn(async move { - let mut rcv = rcv.take_until_if(tripwire); - - while rcv.next().await.is_some() { - callback(); - } - }); - - Result::Ok(Box::into_raw(Box::new(Subscription { id: 0, trigger }))) -} - #[no_mangle] #[allow(clippy::missing_safety_doc)] pub unsafe extern "C" fn client_on_entity_state_update( @@ -349,24 +292,6 @@ pub unsafe extern "C" fn client_update_event_message_subscription( } } -#[no_mangle] -#[allow(clippy::missing_safety_doc)] -pub unsafe extern "C" fn client_remove_models_to_sync( - client: *mut ToriiClient, - models: *const ModelKeysClause, - models_len: usize, -) -> Result { - let models = unsafe { std::slice::from_raw_parts(models, models_len).to_vec() }; - - let client_future = - unsafe { (*client).inner.remove_models_to_sync(models.iter().map(|e| e.into()).collect()) }; - - match (*client).runtime.block_on(client_future) { - Ok(_) => Result::Ok(true), - Err(e) => Result::Err(e.into()), - } -} - #[no_mangle] #[allow(clippy::missing_safety_doc)] pub unsafe extern "C" fn bytearray_serialize( diff --git a/src/wasm/mod.rs b/src/wasm/mod.rs index 7d696c0..4b6cf45 100644 --- a/src/wasm/mod.rs +++ b/src/wasm/mod.rs @@ -5,7 +5,7 @@ use std::sync::Arc; use cainome::cairo_serde::{self, ByteArray, CairoSerde}; use crypto_bigint::U256; -use futures::{StreamExt, TryFutureExt}; +use futures::StreamExt; use js_sys::Array; use serde::{Deserialize, Serialize}; use starknet::accounts::{ @@ -14,7 +14,7 @@ use starknet::accounts::{ use starknet::core::crypto::Signature; use starknet::core::types::{Felt, FunctionCall}; use starknet::core::utils::{ - cairo_short_string_to_felt, get_contract_address, get_selector_from_name, + get_contract_address, get_selector_from_name, }; use starknet::providers::jsonrpc::HttpTransport; use starknet::providers::{JsonRpcClient, Provider as _}; @@ -29,7 +29,7 @@ use wasm_bindgen::prelude::*; use crate::constants; use crate::types::{Account, Provider, Subscription}; use crate::utils::watch_tx; -use crate::wasm::utils::{parse_entities_as_json_str, parse_ty_as_json_str}; +use crate::wasm::utils::parse_entities_as_json_str; #[derive(Tsify, Serialize, Deserialize)] #[tsify(into_wasm_abi, from_wasm_abi)] @@ -796,101 +796,6 @@ impl Client { } } - /// Retrieves the model value of an entity. Will fetch from remote if the requested entity is - /// not one of the entities that are being synced. - #[wasm_bindgen(js_name = getModelValue)] - pub async fn get_model_value( - &self, - model: &str, - keys: Vec, - ) -> Result { - #[cfg(feature = "console-error-panic")] - console_error_panic_hook::set_once(); - - let keys = keys - .into_iter() - .map(|k| Felt::from_str(k.as_str())) - .collect::, _>>() - .map_err(|err| JsValue::from(format!("failed to parse entity keys: {err}")))?; - - match self - .inner - .model(&torii_grpc::types::ModelKeysClause { model: model.to_string(), keys }) - .await - { - Ok(Some(ty)) => Ok(js_sys::JSON::parse(&parse_ty_as_json_str(&ty, false).to_string())?), - Ok(None) => Ok(JsValue::NULL), - - Err(err) => Err(JsValue::from(format!("failed to get entity: {err}"))), - } - } - - /// Register new entities to be synced. - #[wasm_bindgen(js_name = addModelsToSync)] - pub async unsafe fn add_models_to_sync(&self, models: ModelKeysClauses) -> Result<(), JsValue> { - log("adding models to sync..."); - - #[cfg(feature = "console-error-panic")] - console_error_panic_hook::set_once(); - - let models = models.0.iter().map(|e| e.into()).collect(); - - self.inner.add_models_to_sync(models).await.map_err(|err| JsValue::from(err.to_string())) - } - - /// Remove the entities from being synced. - #[wasm_bindgen(js_name = removeModelsToSync)] - pub async unsafe fn remove_models_to_sync( - &self, - models: ModelKeysClauses, - ) -> Result<(), JsValue> { - log("removing models to sync..."); - - #[cfg(feature = "console-error-panic")] - console_error_panic_hook::set_once(); - - let models = models.0.iter().map(|e| e.into()).collect(); - - self.inner.remove_models_to_sync(models).await.map_err(|err| JsValue::from(err.to_string())) - } - - /// Register a callback to be called every time the specified synced entity's value changes. - #[wasm_bindgen(js_name = onSyncModelChange)] - pub async fn on_sync_model_change( - &self, - model: ModelKeysClause, - callback: js_sys::Function, - ) -> Result { - #[cfg(feature = "console-error-panic")] - console_error_panic_hook::set_once(); - - let name = cairo_short_string_to_felt(&model.model).expect("invalid model name"); - let rcv = self - .inner - .storage() - .add_listener( - name, - &model - .keys - .iter() - .map(|k| Felt::from_str(k.as_str())) - .collect::, _>>() - .unwrap(), - ) - .unwrap(); - - let (trigger, tripwire) = Tripwire::new(); - wasm_bindgen_futures::spawn_local(async move { - let mut rcv = rcv.take_until_if(tripwire); - - while rcv.next().await.is_some() { - let _ = callback.call0(&JsValue::null()); - } - }); - - Ok(Subscription { id: 0, trigger }) - } - #[wasm_bindgen(js_name = onEntityUpdated)] pub async fn on_entity_updated( &self, @@ -1034,10 +939,6 @@ pub async fn create_client(config: ClientConfig) -> Result { .await .map_err(|err| JsValue::from(format!("failed to build client: {err}")))?; - wasm_bindgen_futures::spawn_local(client.start_subscription().await.map_err(|err| { - JsValue::from(format!("failed to start torii client subscription service: {err}")) - })?); - let relay_runner = client.relay_runner(); wasm_bindgen_futures::spawn_local(async move { relay_runner.lock().await.run().await; From fed64e6f7055bcee71a7ca5706619e721d963465 Mon Sep 17 00:00:00 2001 From: Nasr Date: Tue, 6 Aug 2024 15:18:16 -0400 Subject: [PATCH 2/3] refactor: update c bindings --- dojo.h | 61 +++++++++++---------------------------------- dojo.hpp | 27 +++++++------------- rust-toolchain.toml | 2 +- src/c/mod.rs | 36 ++------------------------ 4 files changed, 27 insertions(+), 99 deletions(-) diff --git a/dojo.h b/dojo.h index 2b5f314..9a4822e 100644 --- a/dojo.h +++ b/dojo.h @@ -178,22 +178,6 @@ typedef struct Primitive { }; } Primitive; -typedef struct Member { - const char *name; - struct Ty *ty; - bool key; -} Member; - -typedef struct CArrayMember { - struct Member *data; - uintptr_t data_len; -} CArrayMember; - -typedef struct Struct { - const char *name; - struct CArrayMember children; -} Struct; - typedef struct EnumOption { const char *name; struct Ty *ty; @@ -248,32 +232,21 @@ typedef struct Ty { }; } Ty; -typedef enum ResultTy_Tag { - OkTy, - ErrTy, -} ResultTy_Tag; - -typedef struct ResultTy { - ResultTy_Tag tag; - union { - struct { - struct Ty *ok; - }; - struct { - struct Error err; - }; - }; -} ResultTy; +typedef struct Member { + const char *name; + struct Ty *ty; + bool key; +} Member; -typedef struct CArrayFieldElement { - struct FieldElement *data; +typedef struct CArrayMember { + struct Member *data; uintptr_t data_len; -} CArrayFieldElement; +} CArrayMember; -typedef struct ModelKeysClause { - struct CArrayFieldElement keys; - const char *model; -} ModelKeysClause; +typedef struct Struct { + const char *name; + struct CArrayMember children; +} Struct; typedef struct CArrayStruct { struct Struct *data; @@ -429,10 +402,10 @@ typedef struct Query { struct COptionClause clause; } Query; -typedef struct CArrayModelKeysClause { - struct ModelKeysClause *data; +typedef struct CArrayFieldElement { + struct FieldElement *data; uintptr_t data_len; -} CArrayModelKeysClause; +} CArrayFieldElement; typedef struct ModelMetadata { struct Ty schema; @@ -659,15 +632,11 @@ struct ResultCArrayu8 client_publish_message(struct ToriiClient *client, const char *message, struct Signature signature); -struct ResultTy client_model(struct ToriiClient *client, const struct ModelKeysClause *keys); - struct ResultCArrayEntity client_entities(struct ToriiClient *client, const struct Query *query); struct ResultCArrayEntity client_event_messages(struct ToriiClient *client, const struct Query *query); -struct CArrayModelKeysClause client_subscribed_models(struct ToriiClient *client); - struct WorldMetadata client_metadata(struct ToriiClient *client); struct ResultSubscription client_on_entity_state_update(struct ToriiClient *client, diff --git a/dojo.hpp b/dojo.hpp index cd33088..f056ac6 100644 --- a/dojo.hpp +++ b/dojo.hpp @@ -425,17 +425,6 @@ struct Primitive { } }; -struct Member { - const char *name; - Ty *ty; - bool key; -}; - -struct Struct { - const char *name; - CArray children; -}; - struct EnumOption { const char *name; Ty *ty; @@ -558,9 +547,15 @@ struct Ty { } }; -struct ModelKeysClause { - CArray keys; - const char *model; +struct Member { + const char *name; + Ty *ty; + bool key; +}; + +struct Struct { + const char *name; + CArray children; }; struct Entity { @@ -935,14 +930,10 @@ Result> client_publish_message(ToriiClient *client, const char *message, Signature signature); -Result client_model(ToriiClient *client, const ModelKeysClause *keys); - Result> client_entities(ToriiClient *client, const Query *query); Result> client_event_messages(ToriiClient *client, const Query *query); -CArray client_subscribed_models(ToriiClient *client); - WorldMetadata client_metadata(ToriiClient *client); Result client_on_entity_state_update(ToriiClient *client, diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 628740b..4d2dee8 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "1.79.0" +channel = "1.80.0" diff --git a/src/c/mod.rs b/src/c/mod.rs index 04827bc..c13c4d6 100644 --- a/src/c/mod.rs +++ b/src/c/mod.rs @@ -9,7 +9,7 @@ use cainome::cairo_serde::{self, ByteArray, CairoSerde}; use starknet::accounts::{Account as StarknetAccount, ExecutionEncoding, SingleOwnerAccount}; use starknet::core::types::FunctionCall; use starknet::core::utils::{ - cairo_short_string_to_felt, get_contract_address, get_selector_from_name, + get_contract_address, get_selector_from_name, }; use starknet::providers::jsonrpc::HttpTransport; use starknet::providers::{JsonRpcClient, Provider as _}; @@ -20,7 +20,7 @@ use tokio_stream::StreamExt; use torii_client::client::Client as TClient; use torii_relay::typed_data::TypedData; use torii_relay::types::Message; -use types::{EntityKeysClause, ModelKeysClause, Struct}; +use types::{EntityKeysClause, Struct}; use self::types::{ BlockId, CArray, Call, Entity, Error, Query, Result, Signature, ToriiClient, Ty, WorldMetadata, @@ -97,27 +97,6 @@ pub unsafe extern "C" fn client_publish_message( } } -#[no_mangle] -#[allow(clippy::missing_safety_doc)] -pub unsafe extern "C" fn client_model( - client: *mut ToriiClient, - keys: &ModelKeysClause, -) -> Result<*mut Ty> { - let keys = (&keys.clone()).into(); - let entity_future = unsafe { (*client).inner.model(&keys) }; - - match (*client).runtime.block_on(entity_future) { - Ok(ty) => { - if let Some(ty) = ty { - Result::Ok(Box::into_raw(Box::new((&ty).into()))) - } else { - Result::Ok(std::ptr::null_mut()) - } - } - Err(e) => Result::Err(e.into()), - } -} - #[no_mangle] #[allow(clippy::missing_safety_doc)] pub unsafe extern "C" fn client_entities( @@ -155,17 +134,6 @@ pub unsafe extern "C" fn client_event_messages( } } -#[no_mangle] -#[allow(clippy::missing_safety_doc)] -pub unsafe extern "C" fn client_subscribed_models( - client: *mut ToriiClient, -) -> CArray { - let entities = unsafe { (*client).inner.subscribed_models().clone() }; - let entities = entities.into_iter().map(|e| (&e).into()).collect::>(); - - entities.into() -} - #[no_mangle] #[allow(clippy::missing_safety_doc)] pub unsafe extern "C" fn client_metadata(client: *mut ToriiClient) -> WorldMetadata { From d0ab1ce0b36847e1726894a2012b00710ba247b8 Mon Sep 17 00:00:00 2001 From: Nasr Date: Tue, 6 Aug 2024 15:18:29 -0400 Subject: [PATCH 3/3] fmt --- src/c/mod.rs | 4 +--- src/wasm/mod.rs | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/c/mod.rs b/src/c/mod.rs index c13c4d6..9ca70b8 100644 --- a/src/c/mod.rs +++ b/src/c/mod.rs @@ -8,9 +8,7 @@ use std::sync::Arc; use cainome::cairo_serde::{self, ByteArray, CairoSerde}; use starknet::accounts::{Account as StarknetAccount, ExecutionEncoding, SingleOwnerAccount}; use starknet::core::types::FunctionCall; -use starknet::core::utils::{ - get_contract_address, get_selector_from_name, -}; +use starknet::core::utils::{get_contract_address, get_selector_from_name}; use starknet::providers::jsonrpc::HttpTransport; use starknet::providers::{JsonRpcClient, Provider as _}; use starknet::signers::{LocalWallet, SigningKey, VerifyingKey}; diff --git a/src/wasm/mod.rs b/src/wasm/mod.rs index 4b6cf45..b6def64 100644 --- a/src/wasm/mod.rs +++ b/src/wasm/mod.rs @@ -13,9 +13,7 @@ use starknet::accounts::{ }; use starknet::core::crypto::Signature; use starknet::core::types::{Felt, FunctionCall}; -use starknet::core::utils::{ - get_contract_address, get_selector_from_name, -}; +use starknet::core::utils::{get_contract_address, get_selector_from_name}; use starknet::providers::jsonrpc::HttpTransport; use starknet::providers::{JsonRpcClient, Provider as _}; use starknet::signers::{LocalWallet, SigningKey, VerifyingKey};