diff --git a/.rustfmt.toml b/.rustfmt.toml new file mode 100644 index 00000000..218e2032 --- /dev/null +++ b/.rustfmt.toml @@ -0,0 +1 @@ +hard_tabs = true diff --git a/.vscode/settings.json b/.vscode/settings.json index 0c05d521..0e017374 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,7 +6,9 @@ "vite.showTerminal": true, "cSpell.words": [ "bindgen", + "evtree", "isketch", + "Loro", "Threlte", "tsify", "wireframe" diff --git a/Cargo.lock b/Cargo.lock index 805bd043..94c71779 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -93,6 +93,12 @@ dependencies = [ "backtrace", ] +[[package]] +name = "append-only-bytes" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac436601d6bdde674a0d7fb593e829ffe7b3387c351b356dd20e2d40f5bf3ee5" + [[package]] name = "approx" version = "0.4.0" @@ -111,12 +117,33 @@ dependencies = [ "num-traits", ] +[[package]] +name = "arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +dependencies = [ + "derive_arbitrary", +] + [[package]] name = "array-macro" version = "2.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "220a2c618ab466efe41d0eace94dfeff1c35e3aa47891bdb95e1c0fefffd3c99" +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "arref" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ccd462b64c3c72f1be8305905a85d85403d768e8690c9b8bd3b9009a5761679" + [[package]] name = "atk" version = "0.18.0" @@ -140,6 +167,15 @@ dependencies = [ "system-deps", ] +[[package]] +name = "atomic-polyfill" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" +dependencies = [ + "critical-section", +] + [[package]] name = "autocfg" version = "1.3.0" @@ -194,6 +230,21 @@ dependencies = [ "serde", ] +[[package]] +name = "bitmaps" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2" +dependencies = [ + "typenum", +] + +[[package]] +name = "bitmaps" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d084b0137aaa901caf9f1e8b21daa6aa24d41cd806e111335541eff9683bd6" + [[package]] name = "block" version = "0.1.6" @@ -292,16 +343,16 @@ version = "0.1.0" dependencies = [ "anyhow", "cadmium-macros", + "chrono", "console_error_panic_hook", "convert_case 0.6.0", "crc32fast", "geo", - "indexmap 2.2.6", "isotope", "itertools 0.13.0", "js-sys", "log", - "paste", + "loro", "serde", "serde_json", "serde_with", @@ -478,6 +529,12 @@ dependencies = [ "windows-targets 0.52.5", ] +[[package]] +name = "cobs" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" + [[package]] name = "cocoa" version = "0.25.0" @@ -601,6 +658,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "critical-section" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" + [[package]] name = "crossbeam-channel" version = "0.5.13" @@ -738,6 +801,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "derive_more" version = "0.99.18" @@ -924,6 +998,48 @@ version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + +[[package]] +name = "enum-as-inner" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "enum-as-inner" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "enum_dispatch" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" +dependencies = [ + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -1220,6 +1336,20 @@ dependencies = [ "version_check", ] +[[package]] +name = "generic-btree" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "210507e6dec78bb1304e52a174bd99efdd83894219bf20d656a066a0ce2fedc5" +dependencies = [ + "arref", + "fxhash", + "heapless 0.7.17", + "itertools 0.11.0", + "loro-thunderdome", + "proc-macro2", +] + [[package]] name = "geo" version = "0.28.0" @@ -1463,6 +1593,15 @@ dependencies = [ "syn 2.0.66", ] +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + [[package]] name = "hash32" version = "0.3.1" @@ -1488,13 +1627,27 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "heapless" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" +dependencies = [ + "atomic-polyfill", + "hash32 0.2.1", + "rustc_version", + "serde", + "spin", + "stable_deref_trait", +] + [[package]] name = "heapless" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" dependencies = [ - "hash32", + "hash32 0.3.1", "stable_deref_trait", ] @@ -1784,6 +1937,42 @@ dependencies = [ "utf8_iter", ] +[[package]] +name = "im" +version = "15.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0acd33ff0285af998aaf9b57342af478078f53492322fafc47450e09397e0e9" +dependencies = [ + "bitmaps 2.1.0", + "rand_core 0.6.4", + "rand_xoshiro", + "sized-chunks", + "typenum", + "version_check", +] + +[[package]] +name = "imbl" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc3be8d8cd36f33a46b1849f31f837c44d9fa87223baee3b4bd96b8f11df81eb" +dependencies = [ + "bitmaps 3.2.1", + "imbl-sized-chunks", + "rand_core 0.6.4", + "rand_xoshiro", + "version_check", +] + +[[package]] +name = "imbl-sized-chunks" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "144006fb58ed787dcae3f54575ff4349755b00ccc99f4b4873860b654be1ed63" +dependencies = [ + "bitmaps 3.2.1", +] + [[package]] name = "indexmap" version = "1.9.3" @@ -1997,6 +2186,12 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +[[package]] +name = "leb128" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" + [[package]] name = "libappindicator" version = "0.9.0" @@ -2106,6 +2301,118 @@ dependencies = [ "tracing-subscriber", ] +[[package]] +name = "loro" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87c89fb56a17df4430afcadb6053dcefb9762f115e238aebe2daaf0798212ab4" +dependencies = [ + "either", + "enum-as-inner 0.6.0", + "generic-btree", + "loro-delta", + "loro-internal", + "tracing", +] + +[[package]] +name = "loro-common" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eb709c7dbf66c98f27b7a762d5dbe963b1552ef95ac3deb4eb7a1e3dc2a1248" +dependencies = [ + "arbitrary", + "enum-as-inner 0.6.0", + "fxhash", + "loro-rle", + "nonmax", + "serde", + "serde_columnar", + "string_cache", + "thiserror", +] + +[[package]] +name = "loro-delta" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ba334fa0e4a39cf2a1d3ecd8e1c24e2e8b085826b3397964efb48bb83a9f288" +dependencies = [ + "arrayvec", + "enum-as-inner 0.5.1", + "generic-btree", + "heapless 0.8.0", + "tracing", +] + +[[package]] +name = "loro-internal" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "937457140d74326dc198fe4a781d865d861a37cb0ef91511fb2f3582c243550b" +dependencies = [ + "append-only-bytes", + "arref", + "either", + "enum-as-inner 0.5.1", + "enum_dispatch", + "fxhash", + "generic-btree", + "getrandom 0.2.15", + "im", + "itertools 0.12.1", + "leb128", + "loro-common", + "loro-delta", + "loro-rle", + "loro_fractional_index", + "md5", + "num", + "num-derive", + "num-traits", + "once_cell", + "postcard", + "rand 0.8.5", + "serde", + "serde_columnar", + "serde_json", + "smallvec", + "thiserror", + "tracing", +] + +[[package]] +name = "loro-rle" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea296adbce1675c89df38798e1f5f1a46e49012870086f27b5f8f38c0b52d81b" +dependencies = [ + "append-only-bytes", + "arref", + "enum-as-inner 0.6.0", + "fxhash", + "num", + "smallvec", +] + +[[package]] +name = "loro-thunderdome" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f3d053a135388e6b1df14e8af1212af5064746e9b87a06a345a7a779ee9695a" + +[[package]] +name = "loro_fractional_index" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eead5ac567d2c71340ff48bd4c853173dd37d42c7629383b881e232a4c6b529" +dependencies = [ + "imbl", + "rand 0.8.5", + "serde", + "smallvec", +] + [[package]] name = "lz4_flex" version = "0.7.5" @@ -2188,6 +2495,12 @@ dependencies = [ "rawpointer", ] +[[package]] +name = "md5" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" + [[package]] name = "memchr" version = "1.0.2" @@ -2352,6 +2665,12 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "nonmax" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51" + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -2362,6 +2681,30 @@ dependencies = [ "winapi", ] +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" +dependencies = [ + "num-integer", + "num-traits", +] + [[package]] name = "num-complex" version = "0.4.6" @@ -2398,12 +2741,24 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-rational" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ + "num-bigint", "num-integer", "num-traits", ] @@ -2863,6 +3218,18 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "postcard" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a55c51ee6c0db07e68448e336cf8ea4131a620edefebf9893e759b2d793420f8" +dependencies = [ + "cobs", + "embedded-io", + "heapless 0.7.17", + "serde", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -3049,6 +3416,15 @@ dependencies = [ "rand_core 0.5.1", ] +[[package]] +name = "rand_xoshiro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" +dependencies = [ + "rand_core 0.6.4", +] + [[package]] name = "raw-window-handle" version = "0.5.2" @@ -3209,7 +3585,7 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "133315eb94c7b1e8d0cb097e5a710d850263372fd028fff18969de708afc7008" dependencies = [ - "heapless", + "heapless 0.8.0", "num-traits", "smallvec", ] @@ -3369,6 +3745,31 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde_columnar" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7947238638e841d935a1dadff54b74575ae60d51b977be75dab16e7638ea6e7d" +dependencies = [ + "itertools 0.11.0", + "postcard", + "serde", + "serde_columnar_derive", + "thiserror", +] + +[[package]] +name = "serde_columnar_derive" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e5eaacabbc55a397ffbb1ee32523f40f86fdefea8a8d9db19630d8b7c00edd1" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "serde_derive" version = "1.0.203" @@ -3552,6 +3953,16 @@ version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +[[package]] +name = "sized-chunks" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" +dependencies = [ + "bitmaps 2.1.0", + "typenum", +] + [[package]] name = "slab" version = "0.4.9" @@ -3566,6 +3977,9 @@ name = "smallvec" version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "serde", +] [[package]] name = "socket2" @@ -3639,6 +4053,15 @@ dependencies = [ "smallvec", ] +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" diff --git a/applications/tauri/build.rs b/applications/tauri/build.rs index 795b9b7c..c1ea3732 100644 --- a/applications/tauri/build.rs +++ b/applications/tauri/build.rs @@ -1,3 +1,3 @@ fn main() { - tauri_build::build() + tauri_build::build() } diff --git a/applications/tauri/src/lib.rs b/applications/tauri/src/lib.rs index cfef8d12..a8e1845a 100644 --- a/applications/tauri/src/lib.rs +++ b/applications/tauri/src/lib.rs @@ -1,6 +1,6 @@ #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { - tauri::Builder::default() - .run(tauri::generate_context!()) - .expect("error while running tauri application"); + tauri::Builder::default() + .run(tauri::generate_context!()) + .expect("error while running tauri application"); } diff --git a/applications/tauri/src/main.rs b/applications/tauri/src/main.rs index ad5fe839..3f018e95 100644 --- a/applications/tauri/src/main.rs +++ b/applications/tauri/src/main.rs @@ -2,5 +2,5 @@ #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] fn main() { - app_lib::run(); + app_lib::run(); } diff --git a/applications/web/src/components/AppBar.svelte b/applications/web/src/components/AppBar.svelte index 646c4874..07355652 100644 --- a/applications/web/src/components/AppBar.svelte +++ b/applications/web/src/components/AppBar.svelte @@ -11,7 +11,7 @@ import Sun from "phosphor-svelte/lib/Sun" import type {WithTarget} from "shared/types" import {base} from "../base" - import {renameProject} from "shared/projectUtils" + import {bench} from "shared/projectUtils" const log = (function () { const context = "[AppBar.svelte]"; const color="gray"; return Function.prototype.bind.call(console.log, console, `%c${context}`, `font-weight:bold;color:${color};`)})() // prettier-ignore @@ -62,7 +62,7 @@ on:keydown={e => { if (e.key === "Enter") { log("Renaming project") - renameProject(newProjectName) + bench.projectRename(newProjectName) project.name = newProjectName renaming = false } diff --git a/applications/web/src/components/BottomBar.svelte b/applications/web/src/components/BottomBar.svelte index e95d5702..6cbe0d94 100644 --- a/applications/web/src/components/BottomBar.svelte +++ b/applications/web/src/components/BottomBar.svelte @@ -1,6 +1,6 @@