diff --git a/.gitignore b/.gitignore
index a70bef23..ef7344d3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@
/dist
/target
/packages/cadmium/target
+/packages/cadmium/bench-*-report
**/.svelte-kit
/package
*.env*
@@ -13,3 +14,4 @@ vite.config.ts.timestamp-*
/.pnpm-store/
**/*.obj
**/*.step
+.vscode
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 173c5e2a..e633e907 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -13,7 +13,6 @@
"pattern": "Local: +http://127.0.0.1:([0-9]+)/",
"uriFormat": "http://127.0.0.1:%s",
"webRoot": "${workspaceFolder}/applications/web/src",
- "killOnServerStop": true
}
},
],
diff --git a/.vscode/settings.json b/.vscode/settings.json
index d6c6b6fe..0c05d521 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -3,5 +3,13 @@
"vite.autoStart": false,
"vite.buildCommand": "pnpm run build",
"vite.devCommand": "pnpm run dev",
- "vite.showTerminal": true
+ "vite.showTerminal": true,
+ "cSpell.words": [
+ "bindgen",
+ "isketch",
+ "Threlte",
+ "tsify",
+ "wireframe"
+ ],
+ "editor.formatOnSave": true
}
diff --git a/Cargo.lock b/Cargo.lock
index a7732f9e..c2969489 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -14,9 +14,9 @@ dependencies = [
[[package]]
name = "addr2line"
-version = "0.21.0"
+version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
+checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678"
dependencies = [
"gimli",
]
@@ -41,9 +41,9 @@ dependencies = [
[[package]]
name = "aho-corasick"
-version = "1.1.2"
+version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
dependencies = [
"memchr 2.7.2",
]
@@ -102,6 +102,15 @@ dependencies = [
"num-traits",
]
+[[package]]
+name = "approx"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6"
+dependencies = [
+ "num-traits",
+]
+
[[package]]
name = "array-macro"
version = "2.1.8"
@@ -131,26 +140,17 @@ dependencies = [
"system-deps",
]
-[[package]]
-name = "atomic-polyfill"
-version = "0.1.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3ff7eb3f316534d83a8a2c3d1674ace8a5a71198eba31e2e2b597833f699b28"
-dependencies = [
- "critical-section",
-]
-
[[package]]
name = "autocfg"
-version = "1.1.0"
+version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
[[package]]
name = "backtrace"
-version = "0.3.69"
+version = "0.3.72"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
+checksum = "17c6a35df3749d2e8bb1b7b21a976d82b15548788d2735b9d82f329268f71a11"
dependencies = [
"addr2line",
"cc",
@@ -169,9 +169,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
[[package]]
name = "base64"
-version = "0.21.5"
+version = "0.21.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
[[package]]
name = "base64"
@@ -247,9 +247,9 @@ dependencies = [
[[package]]
name = "bumpalo"
-version = "3.13.0"
+version = "3.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
[[package]]
name = "bytemuck"
@@ -262,9 +262,9 @@ dependencies = [
[[package]]
name = "bytemuck_derive"
-version = "1.5.0"
+version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1"
+checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b"
dependencies = [
"proc-macro2",
"quote",
@@ -273,9 +273,9 @@ dependencies = [
[[package]]
name = "byteorder"
-version = "1.4.3"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "bytes"
@@ -291,11 +291,17 @@ name = "cadmium"
version = "0.1.0"
dependencies = [
"anyhow",
+ "cadmium-macros",
"console_error_panic_hook",
+ "convert_case 0.6.0",
"crc32fast",
"geo",
- "indexmap 2.1.0",
- "itertools 0.12.1",
+ "indexmap 2.2.6",
+ "isotope",
+ "itertools 0.13.0",
+ "js-sys",
+ "log",
+ "paste",
"serde",
"serde_json",
"serde_with",
@@ -309,7 +315,20 @@ dependencies = [
"truck-stepio",
"truck-topology",
"tsify",
+ "tsify-next",
"wasm-bindgen",
+ "wasm-logger",
+ "xxhash-rust",
+]
+
+[[package]]
+name = "cadmium-macros"
+version = "0.1.0"
+dependencies = [
+ "convert_case 0.6.0",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
]
[[package]]
@@ -391,12 +410,9 @@ dependencies = [
[[package]]
name = "cc"
-version = "1.0.83"
+version = "1.0.99"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
-dependencies = [
- "libc",
-]
+checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695"
[[package]]
name = "cesu8"
@@ -443,7 +459,7 @@ version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a98d30140e3296250832bbaaff83b27dcd6fa3cc70fb6f1f3e5c9c0023b5317"
dependencies = [
- "approx",
+ "approx 0.4.0",
"num-traits",
"serde",
]
@@ -519,6 +535,15 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
+[[package]]
+name = "convert_case"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"
+dependencies = [
+ "unicode-segmentation",
+]
+
[[package]]
name = "core-foundation"
version = "0.9.4"
@@ -570,19 +595,13 @@ dependencies = [
[[package]]
name = "crc32fast"
-version = "1.3.2"
+version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
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"
@@ -594,26 +613,21 @@ dependencies = [
[[package]]
name = "crossbeam-deque"
-version = "0.8.3"
+version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
+checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
dependencies = [
- "cfg-if",
"crossbeam-epoch",
"crossbeam-utils",
]
[[package]]
name = "crossbeam-epoch"
-version = "0.9.15"
+version = "0.9.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
dependencies = [
- "autocfg",
- "cfg-if",
"crossbeam-utils",
- "memoffset",
- "scopeguard",
]
[[package]]
@@ -671,9 +685,9 @@ dependencies = [
[[package]]
name = "darling"
-version = "0.20.3"
+version = "0.20.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e"
+checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1"
dependencies = [
"darling_core",
"darling_macro",
@@ -681,9 +695,9 @@ dependencies = [
[[package]]
name = "darling_core"
-version = "0.20.3"
+version = "0.20.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621"
+checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120"
dependencies = [
"fnv",
"ident_case",
@@ -695,9 +709,9 @@ dependencies = [
[[package]]
name = "darling_macro"
-version = "0.20.3"
+version = "0.20.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5"
+checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178"
dependencies = [
"darling_core",
"quote",
@@ -706,9 +720,9 @@ dependencies = [
[[package]]
name = "deranged"
-version = "0.3.10"
+version = "0.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc"
+checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
dependencies = [
"powerfmt",
"serde",
@@ -731,7 +745,7 @@ version = "0.99.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
dependencies = [
- "convert_case",
+ "convert_case 0.4.0",
"proc-macro2",
"quote",
"rustc_version",
@@ -796,6 +810,17 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
+[[package]]
+name = "displaydoc"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.66",
+]
+
[[package]]
name = "dlib"
version = "0.5.2"
@@ -845,9 +870,9 @@ checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653"
[[package]]
name = "dtoa-short"
-version = "0.3.4"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbaceec3c6e4211c79e7b1800fb9680527106beb2f9c51904a3210c03a448c74"
+checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87"
dependencies = [
"dtoa",
]
@@ -866,19 +891,19 @@ checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125"
[[package]]
name = "earcutr"
-version = "0.4.2"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0812b44697951d35fde8fcb0da81c9de7e809e825a66bbf1ecb79d9829d4ca3d"
+checksum = "79127ed59a85d7687c409e9978547cffb7dc79675355ed22da6b66fd5f6ead01"
dependencies = [
- "itertools 0.10.5",
+ "itertools 0.11.0",
"num-traits",
]
[[package]]
name = "either"
-version = "1.9.0"
+version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
+checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b"
[[package]]
name = "embed-resource"
@@ -1198,9 +1223,9 @@ dependencies = [
[[package]]
name = "geo"
-version = "0.26.0"
+version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1645cf1d7fea7dac1a66f7357f3df2677ada708b8d9db8e9b043878930095a96"
+checksum = "f811f663912a69249fa620dcd2a005db7254529da2d8a0b23942e81f47084501"
dependencies = [
"earcutr",
"float_next_after",
@@ -1210,15 +1235,17 @@ dependencies = [
"num-traits",
"robust",
"rstar",
+ "serde",
+ "spade",
]
[[package]]
name = "geo-types"
-version = "0.7.11"
+version = "0.7.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9705398c5c7b26132e74513f4ee7c1d7dafd786004991b375c172be2be0eecaa"
+checksum = "9ff16065e5720f376fbced200a5ae0f47ace85fd70b7e54269790281353b6d61"
dependencies = [
- "approx",
+ "approx 0.5.1",
"num-traits",
"rstar",
"serde",
@@ -1226,11 +1253,11 @@ dependencies = [
[[package]]
name = "geographiclib-rs"
-version = "0.2.3"
+version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ea804e7bd3c6a4ca6a01edfa35231557a8a81d4d3f3e1e2b650d028c42592be"
+checksum = "e6e5ed84f8089c70234b0a8e0aedb6dc733671612ddc0d37c6066052f9781960"
dependencies = [
- "lazy_static",
+ "libm",
]
[[package]]
@@ -1259,9 +1286,9 @@ dependencies = [
[[package]]
name = "gimli"
-version = "0.28.1"
+version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
+checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd"
[[package]]
name = "gio"
@@ -1361,6 +1388,19 @@ dependencies = [
"web-sys",
]
+[[package]]
+name = "gloo-utils"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa"
+dependencies = [
+ "js-sys",
+ "serde",
+ "serde_json",
+ "wasm-bindgen",
+ "web-sys",
+]
+
[[package]]
name = "gobject-sys"
version = "0.18.0"
@@ -1426,9 +1466,9 @@ dependencies = [
[[package]]
name = "hash32"
-version = "0.2.1"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67"
+checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606"
dependencies = [
"byteorder",
]
@@ -1441,9 +1481,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
name = "hashbrown"
-version = "0.14.2"
+version = "0.14.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
dependencies = [
"ahash",
"allocator-api2",
@@ -1451,14 +1491,11 @@ dependencies = [
[[package]]
name = "heapless"
-version = "0.7.16"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db04bc24a18b9ea980628ecf00e6c0264f3c1426dac36c00cb49b6fbad8b0743"
+checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad"
dependencies = [
- "atomic-polyfill",
"hash32",
- "rustc_version",
- "spin",
"stable_deref_trait",
]
@@ -1508,7 +1545,7 @@ checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
dependencies = [
"bytes",
"fnv",
- "itoa 1.0.9",
+ "itoa 1.0.11",
]
[[package]]
@@ -1523,12 +1560,12 @@ dependencies = [
[[package]]
name = "http-body-util"
-version = "0.1.1"
+version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d"
+checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
dependencies = [
"bytes",
- "futures-core",
+ "futures-util",
"http",
"http-body",
"pin-project-lite",
@@ -1536,9 +1573,9 @@ dependencies = [
[[package]]
name = "httparse"
-version = "1.8.0"
+version = "1.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+checksum = "9f3935c160d00ac752e09787e6e6bfc26494c2183cc922f1bc678a60d4733bc2"
[[package]]
name = "hyper"
@@ -1552,7 +1589,7 @@ dependencies = [
"http",
"http-body",
"httparse",
- "itoa 1.0.9",
+ "itoa 1.0.11",
"pin-project-lite",
"smallvec",
"tokio",
@@ -1581,16 +1618,16 @@ dependencies = [
[[package]]
name = "iana-time-zone"
-version = "0.1.58"
+version = "0.1.60"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20"
+checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
dependencies = [
"android_system_properties",
"core-foundation-sys",
"iana-time-zone-haiku",
"js-sys",
"wasm-bindgen",
- "windows-core 0.51.1",
+ "windows-core 0.52.0",
]
[[package]]
@@ -1612,6 +1649,124 @@ dependencies = [
"png",
]
+[[package]]
+name = "icu_collections"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"
+dependencies = [
+ "displaydoc",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locid"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"
+dependencies = [
+ "displaydoc",
+ "litemap",
+ "tinystr",
+ "writeable",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locid_transform"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e"
+dependencies = [
+ "displaydoc",
+ "icu_locid",
+ "icu_locid_transform_data",
+ "icu_provider",
+ "tinystr",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locid_transform_data"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e"
+
+[[package]]
+name = "icu_normalizer"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"
+dependencies = [
+ "displaydoc",
+ "icu_collections",
+ "icu_normalizer_data",
+ "icu_properties",
+ "icu_provider",
+ "smallvec",
+ "utf16_iter",
+ "utf8_iter",
+ "write16",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer_data"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516"
+
+[[package]]
+name = "icu_properties"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f8ac670d7422d7f76b32e17a5db556510825b29ec9154f235977c9caba61036"
+dependencies = [
+ "displaydoc",
+ "icu_collections",
+ "icu_locid_transform",
+ "icu_properties_data",
+ "icu_provider",
+ "tinystr",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_properties_data"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569"
+
+[[package]]
+name = "icu_provider"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9"
+dependencies = [
+ "displaydoc",
+ "icu_locid",
+ "icu_provider_macros",
+ "stable_deref_trait",
+ "tinystr",
+ "writeable",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_provider_macros"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.66",
+]
+
[[package]]
name = "ident_case"
version = "1.0.1"
@@ -1620,12 +1775,14 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
[[package]]
name = "idna"
-version = "0.5.0"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+checksum = "4716a3a0933a1d01c2f72450e89596eb51dd34ef3c211ccd875acdf1f8fe47ed"
dependencies = [
- "unicode-bidi",
- "unicode-normalization",
+ "icu_normalizer",
+ "icu_properties",
+ "smallvec",
+ "utf8_iter",
]
[[package]]
@@ -1641,12 +1798,12 @@ dependencies = [
[[package]]
name = "indexmap"
-version = "2.1.0"
+version = "2.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
dependencies = [
"equivalent",
- "hashbrown 0.14.2",
+ "hashbrown 0.14.5",
"serde",
]
@@ -1674,6 +1831,19 @@ version = "2.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
+[[package]]
+name = "isotope"
+version = "0.1.0"
+source = "git+https://github.com/CADmium-Co/ISOtope.git#f2f4590e552e3407ae19d811e56cd4c1c83039db"
+dependencies = [
+ "geo",
+ "nalgebra",
+ "serde",
+ "thiserror",
+ "tsify",
+ "wasm-bindgen",
+]
+
[[package]]
name = "itertools"
version = "0.10.5"
@@ -1683,6 +1853,15 @@ dependencies = [
"either",
]
+[[package]]
+name = "itertools"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
+dependencies = [
+ "either",
+]
+
[[package]]
name = "itertools"
version = "0.12.1"
@@ -1692,6 +1871,15 @@ dependencies = [
"either",
]
+[[package]]
+name = "itertools"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
+dependencies = [
+ "either",
+]
+
[[package]]
name = "itoa"
version = "0.4.8"
@@ -1700,9 +1888,9 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
[[package]]
name = "itoa"
-version = "1.0.9"
+version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
[[package]]
name = "javascriptcore-rs"
@@ -1751,9 +1939,9 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
[[package]]
name = "js-sys"
-version = "0.3.64"
+version = "0.3.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
+checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
dependencies = [
"wasm-bindgen",
]
@@ -1862,9 +2050,9 @@ dependencies = [
[[package]]
name = "libm"
-version = "0.2.7"
+version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4"
+checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
[[package]]
name = "libredox"
@@ -1882,11 +2070,17 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd1bc4d24ad230d21fb898d1116b1801d7adfc449d42026475862ab48b11e70e"
+[[package]]
+name = "litemap"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704"
+
[[package]]
name = "lock_api"
-version = "0.4.10"
+version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
dependencies = [
"autocfg",
"scopeguard",
@@ -1985,6 +2179,16 @@ dependencies = [
"num-complex",
]
+[[package]]
+name = "matrixmultiply"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2"
+dependencies = [
+ "autocfg",
+ "rawpointer",
+]
+
[[package]]
name = "memchr"
version = "1.0.2"
@@ -2002,9 +2206,9 @@ checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
[[package]]
name = "memoffset"
-version = "0.9.0"
+version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
dependencies = [
"autocfg",
]
@@ -2023,9 +2227,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "miniz_oxide"
-version = "0.7.2"
+version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
+checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae"
dependencies = [
"adler",
"simd-adler32",
@@ -2061,6 +2265,34 @@ dependencies = [
"windows-sys 0.52.0",
]
+[[package]]
+name = "nalgebra"
+version = "0.32.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ea4908d4f23254adda3daa60ffef0f1ac7b8c3e9a864cf3cc154b251908a2ef"
+dependencies = [
+ "approx 0.5.1",
+ "matrixmultiply",
+ "nalgebra-macros",
+ "num-complex",
+ "num-rational",
+ "num-traits",
+ "serde",
+ "simba",
+ "typenum",
+]
+
+[[package]]
+name = "nalgebra-macros"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91761aed67d03ad966ef783ae962ef9bbaca728d2dd7ceb7939ec110fffad998"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
[[package]]
name = "ndk"
version = "0.7.0"
@@ -2133,13 +2365,20 @@ dependencies = [
[[package]]
name = "num-complex"
-version = "0.4.4"
+version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214"
+checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
dependencies = [
"num-traits",
+ "serde",
]
+[[package]]
+name = "num-conv"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
+
[[package]]
name = "num-derive"
version = "0.3.3"
@@ -2151,11 +2390,30 @@ dependencies = [
"syn 1.0.109",
]
+[[package]]
+name = "num-integer"
+version = "0.1.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
+dependencies = [
+ "num-integer",
+ "num-traits",
+]
+
[[package]]
name = "num-traits"
-version = "0.2.16"
+version = "0.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
dependencies = [
"autocfg",
"libm",
@@ -2321,18 +2579,18 @@ dependencies = [
[[package]]
name = "object"
-version = "0.32.2"
+version = "0.35.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
+checksum = "b8ec7ab813848ba4522158d5517a6093db1ded27575b070f4177b8d12b41db5e"
dependencies = [
"memchr 2.7.2",
]
[[package]]
name = "once_cell"
-version = "1.18.0"
+version = "1.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
[[package]]
name = "option-ext"
@@ -2394,6 +2652,12 @@ dependencies = [
"windows-targets 0.52.5",
]
+[[package]]
+name = "paste"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
+
[[package]]
name = "percent-encoding"
version = "2.3.1"
@@ -2578,8 +2842,8 @@ version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9d34169e64b3c7a80c8621a48adaf44e0cf62c78a9b25dd9dd35f1881a17cf9"
dependencies = [
- "base64 0.21.5",
- "indexmap 2.1.0",
+ "base64 0.21.7",
+ "indexmap 2.2.6",
"line-wrap",
"quick-xml 0.31.0",
"serde",
@@ -2669,9 +2933,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
[[package]]
name = "proc-macro2"
-version = "1.0.84"
+version = "1.0.85"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6"
+checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23"
dependencies = [
"unicode-ident",
]
@@ -2797,6 +3061,12 @@ version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539"
+[[package]]
+name = "rawpointer"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
+
[[package]]
name = "rayon"
version = "1.10.0"
@@ -2848,14 +3118,14 @@ dependencies = [
[[package]]
name = "regex"
-version = "1.10.2"
+version = "1.10.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
+checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f"
dependencies = [
"aho-corasick",
"memchr 2.7.2",
- "regex-automata 0.4.3",
- "regex-syntax 0.8.2",
+ "regex-automata 0.4.7",
+ "regex-syntax 0.8.4",
]
[[package]]
@@ -2869,13 +3139,13 @@ dependencies = [
[[package]]
name = "regex-automata"
-version = "0.4.3"
+version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
+checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
dependencies = [
"aho-corasick",
"memchr 2.7.2",
- "regex-syntax 0.8.2",
+ "regex-syntax 0.8.4",
]
[[package]]
@@ -2886,9 +3156,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
[[package]]
name = "regex-syntax"
-version = "0.8.2"
+version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
[[package]]
name = "reqwest"
@@ -2935,9 +3205,9 @@ checksum = "cbf4a6aa5f6d6888f39e980649f3ad6b666acdce1d78e95b8a2cb076e687ae30"
[[package]]
name = "rstar"
-version = "0.11.0"
+version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73111312eb7a2287d229f06c00ff35b51ddee180f017ab6dec1f69d62ac098d6"
+checksum = "133315eb94c7b1e8d0cb097e5a710d850263372fd028fff18969de708afc7008"
dependencies = [
"heapless",
"num-traits",
@@ -2946,9 +3216,9 @@ dependencies = [
[[package]]
name = "rustc-demangle"
-version = "0.1.23"
+version = "0.1.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
+checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
[[package]]
name = "rustc-hash"
@@ -3001,9 +3271,18 @@ checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6"
[[package]]
name = "ryu"
-version = "1.0.15"
+version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
+
+[[package]]
+name = "safe_arch"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f398075ce1e6a179b46f51bd88d0598b92b00d3551f1a2d4ac49e771b56ac354"
+dependencies = [
+ "bytemuck",
+]
[[package]]
name = "same-file"
@@ -3036,7 +3315,7 @@ checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e"
dependencies = [
"proc-macro2",
"quote",
- "serde_derive_internals",
+ "serde_derive_internals 0.29.1",
"syn 2.0.66",
]
@@ -3074,9 +3353,9 @@ dependencies = [
[[package]]
name = "semver"
-version = "1.0.18"
+version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918"
+checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
dependencies = [
"serde",
]
@@ -3090,6 +3369,17 @@ dependencies = [
"serde_derive",
]
+[[package]]
+name = "serde-wasm-bindgen"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e"
+dependencies = [
+ "js-sys",
+ "serde",
+ "wasm-bindgen",
+]
+
[[package]]
name = "serde_derive"
version = "1.0.203"
@@ -3103,9 +3393,20 @@ dependencies = [
[[package]]
name = "serde_derive_internals"
-version = "0.29.0"
+version = "0.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e578a843d40b4189a4d66bba51d7684f57da5bd7c304c64e14bd63efbef49509"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.66",
+]
+
+[[package]]
+name = "serde_derive_internals"
+version = "0.29.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "330f01ce65a3a5fe59a60c82f3c9a024b573b8a6e875bd233fe5f934e71d54e3"
+checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
dependencies = [
"proc-macro2",
"quote",
@@ -3118,7 +3419,7 @@ version = "1.0.117"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3"
dependencies = [
- "itoa 1.0.9",
+ "itoa 1.0.11",
"ryu",
"serde",
]
@@ -3150,23 +3451,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
dependencies = [
"form_urlencoded",
- "itoa 1.0.9",
+ "itoa 1.0.11",
"ryu",
"serde",
]
[[package]]
name = "serde_with"
-version = "3.4.0"
+version = "3.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23"
+checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20"
dependencies = [
- "base64 0.21.5",
+ "base64 0.22.1",
"chrono",
"hex",
"indexmap 1.9.3",
- "indexmap 2.1.0",
+ "indexmap 2.2.6",
"serde",
+ "serde_derive",
"serde_json",
"serde_with_macros",
"time",
@@ -3174,9 +3476,9 @@ dependencies = [
[[package]]
name = "serde_with_macros"
-version = "3.4.0"
+version = "3.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788"
+checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2"
dependencies = [
"darling",
"proc-macro2",
@@ -3236,6 +3538,19 @@ dependencies = [
"lazy_static",
]
+[[package]]
+name = "simba"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "061507c94fc6ab4ba1c9a0305018408e312e17c041eb63bef8aa726fa33aceae"
+dependencies = [
+ "approx 0.5.1",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "wide",
+]
+
[[package]]
name = "simd-adler32"
version = "0.3.7"
@@ -3329,21 +3644,12 @@ version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b20a809169ae442497e41a997fc5f14e2eea04e6ac590816a910d5d8068c8c0"
dependencies = [
- "hashbrown 0.14.2",
+ "hashbrown 0.14.5",
"num-traits",
"robust",
"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"
@@ -3387,9 +3693,9 @@ dependencies = [
[[package]]
name = "strsim"
-version = "0.10.0"
+version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]]
name = "strum"
@@ -3402,11 +3708,11 @@ dependencies = [
[[package]]
name = "strum_macros"
-version = "0.26.2"
+version = "0.26.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946"
+checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be"
dependencies = [
- "heck 0.4.1",
+ "heck 0.5.0",
"proc-macro2",
"quote",
"rustversion",
@@ -3415,9 +3721,9 @@ dependencies = [
[[package]]
name = "svg"
-version = "0.13.1"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02d815ad337e8449d2374d4248448645edfe74e699343dd5719139d93fa87112"
+checksum = "700efb40f3f559c23c18b446e8ed62b08b56b2bb3197b36d57e0470b4102779e"
[[package]]
name = "swift-rs"
@@ -3425,7 +3731,7 @@ version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bbdb58577b6301f8d17ae2561f32002a5bae056d444e0f69e611e504a276204"
dependencies = [
- "base64 0.21.5",
+ "base64 0.21.7",
"serde",
"serde_json",
]
@@ -3458,6 +3764,17 @@ version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+[[package]]
+name = "synstructure"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.66",
+]
+
[[package]]
name = "system-deps"
version = "6.2.2"
@@ -3775,12 +4092,13 @@ dependencies = [
[[package]]
name = "time"
-version = "0.3.31"
+version = "0.3.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e"
+checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
dependencies = [
"deranged",
- "itoa 1.0.9",
+ "itoa 1.0.11",
+ "num-conv",
"powerfmt",
"serde",
"time-core",
@@ -3795,28 +4113,24 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
[[package]]
name = "time-macros"
-version = "0.2.16"
+version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f"
+checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
dependencies = [
+ "num-conv",
"time-core",
]
[[package]]
-name = "tinyvec"
-version = "1.6.0"
+name = "tinystr"
+version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f"
dependencies = [
- "tinyvec_macros",
+ "displaydoc",
+ "zerovec",
]
-[[package]]
-name = "tinyvec_macros"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
-
[[package]]
name = "tokio"
version = "1.38.0"
@@ -3885,7 +4199,7 @@ version = "0.19.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
dependencies = [
- "indexmap 2.1.0",
+ "indexmap 2.2.6",
"serde",
"serde_spanned",
"toml_datetime",
@@ -3898,7 +4212,7 @@ version = "0.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
dependencies = [
- "indexmap 2.1.0",
+ "indexmap 2.2.6",
"serde",
"serde_spanned",
"toml_datetime",
@@ -3995,9 +4309,9 @@ dependencies = [
[[package]]
name = "tray-icon"
-version = "0.14.2"
+version = "0.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b27516dfcfa22a9faaf192283a122bfbede38c1e59ef194e3c4db6549b419c0"
+checksum = "3ad8319cca93189ea9ab1b290de0595960529750b6b8b501a399ed1ec3775d60"
dependencies = [
"cocoa",
"core-graphics",
@@ -4164,10 +4478,12 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
[[package]]
name = "tsify"
version = "0.4.5"
-source = "git+https://github.com/siefkenj/tsify#8a5a550d2ab41612cef88a3a3de2a94639b0d3fc"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6b26cf145f2f3b9ff84e182c448eaf05468e247f148cf3d2a7d67d78ff023a0"
dependencies = [
- "gloo-utils",
+ "gloo-utils 0.1.7",
"serde",
+ "serde-wasm-bindgen",
"serde_json",
"tsify-macros",
"wasm-bindgen",
@@ -4176,11 +4492,37 @@ dependencies = [
[[package]]
name = "tsify-macros"
version = "0.4.5"
-source = "git+https://github.com/siefkenj/tsify#8a5a550d2ab41612cef88a3a3de2a94639b0d3fc"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a94b0f0954b3e59bfc2c246b4c8574390d94a4ad4ad246aaf2fb07d7dfd3b47"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "serde_derive_internals 0.28.0",
+ "syn 2.0.66",
+]
+
+[[package]]
+name = "tsify-next"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0407c98efe14c83fd025675246bf855f0ed750b6b57fa6ab839ade598ceb5374"
+dependencies = [
+ "gloo-utils 0.2.0",
+ "serde",
+ "serde_json",
+ "tsify-next-macros",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "tsify-next-macros"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "615b1b80acc6720d554777d55ed4ed35a5ceb0e0df7ff7cf9d3946ecbf74953e"
dependencies = [
"proc-macro2",
"quote",
- "serde_derive_internals",
+ "serde_derive_internals 0.29.1",
"syn 2.0.66",
]
@@ -4231,26 +4573,11 @@ dependencies = [
"unic-common",
]
-[[package]]
-name = "unicode-bidi"
-version = "0.3.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
-
[[package]]
name = "unicode-ident"
-version = "1.0.11"
+version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"
-
-[[package]]
-name = "unicode-normalization"
-version = "0.1.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
-dependencies = [
- "tinyvec",
-]
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
name = "unicode-segmentation"
@@ -4260,9 +4587,9 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
[[package]]
name = "url"
-version = "2.5.0"
+version = "2.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
+checksum = "f7c25da092f0a868cdf09e8674cd3b7ef3a7d92a24253e663a2fb85e2496de56"
dependencies = [
"form_urlencoded",
"idna",
@@ -4289,6 +4616,18 @@ version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
+[[package]]
+name = "utf16_iter"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246"
+
+[[package]]
+name = "utf8_iter"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
+
[[package]]
name = "uuid"
version = "1.8.0"
@@ -4388,9 +4727,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
-version = "0.2.87"
+version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
+checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
dependencies = [
"cfg-if",
"wasm-bindgen-macro",
@@ -4398,9 +4737,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.87"
+version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
+checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
dependencies = [
"bumpalo",
"log",
@@ -4413,9 +4752,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-futures"
-version = "0.4.37"
+version = "0.4.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03"
+checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0"
dependencies = [
"cfg-if",
"js-sys",
@@ -4425,9 +4764,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.87"
+version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
+checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -4435,9 +4774,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.87"
+version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
+checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
dependencies = [
"proc-macro2",
"quote",
@@ -4448,9 +4787,20 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.87"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
+
+[[package]]
+name = "wasm-logger"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
+checksum = "074649a66bb306c8f2068c9016395fa65d8e08d2affcbf95acf3c24c3ab19718"
+dependencies = [
+ "log",
+ "wasm-bindgen",
+ "web-sys",
+]
[[package]]
name = "wasm-streams"
@@ -4478,9 +4828,9 @@ dependencies = [
[[package]]
name = "web-sys"
-version = "0.3.64"
+version = "0.3.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b"
+checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -4566,6 +4916,16 @@ dependencies = [
"windows-core 0.56.0",
]
+[[package]]
+name = "wide"
+version = "0.7.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a040b111774ab63a19ef46bbc149398ab372b4ccdcfd719e9814dbd7dfd76c8"
+dependencies = [
+ "bytemuck",
+ "safe_arch",
+]
+
[[package]]
name = "winapi"
version = "0.3.9"
@@ -4631,11 +4991,11 @@ dependencies = [
[[package]]
name = "windows-core"
-version = "0.51.1"
+version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
dependencies = [
- "windows-targets 0.48.5",
+ "windows-targets 0.52.5",
]
[[package]]
@@ -4674,9 +5034,9 @@ dependencies = [
[[package]]
name = "windows-result"
-version = "0.1.1"
+version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "749f0da9cc72d82e600d8d2e44cadd0b9eedb9038f71a1c58556ac1c5791813b"
+checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8"
dependencies = [
"windows-targets 0.52.5",
]
@@ -4897,9 +5257,9 @@ checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
[[package]]
name = "winnow"
-version = "0.5.17"
+version = "0.5.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3b801d0e0a6726477cc207f60162da452f3a95adb368399bef20a946e06f65c"
+checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
dependencies = [
"memchr 2.7.2",
]
@@ -4914,6 +5274,18 @@ dependencies = [
"windows-sys 0.48.0",
]
+[[package]]
+name = "write16"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936"
+
+[[package]]
+name = "writeable"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
+
[[package]]
name = "wry"
version = "0.40.1"
@@ -4977,6 +5349,12 @@ dependencies = [
"pkg-config",
]
+[[package]]
+name = "xxhash-rust"
+version = "0.8.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03"
+
[[package]]
name = "xz2"
version = "0.1.7"
@@ -4986,6 +5364,30 @@ dependencies = [
"lzma-sys",
]
+[[package]]
+name = "yoke"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5"
+dependencies = [
+ "serde",
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.66",
+ "synstructure",
+]
+
[[package]]
name = "zerocopy"
version = "0.7.34"
@@ -5005,3 +5407,46 @@ dependencies = [
"quote",
"syn 2.0.66",
]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.66",
+ "synstructure",
+]
+
+[[package]]
+name = "zerovec"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb2cc8827d6c0994478a15c53f374f46fbd41bea663d809b14744bc42e6b109c"
+dependencies = [
+ "yoke",
+ "zerofrom",
+ "zerovec-derive",
+]
+
+[[package]]
+name = "zerovec-derive"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97cf56601ee5052b4417d90c8755c6683473c926039908196cf35d99f893ebe7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.66",
+]
diff --git a/Cargo.toml b/Cargo.toml
index 278b014c..ee66054c 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,3 @@
[workspace]
-members = ["packages/cadmium", "applications/tauri"]
+members = [ "packages/cadmium", "packages/cadmium-macros", "applications/tauri" ]
resolver = "2"
-
-[patch.crates-io]
-tsify = { git = "https://github.com/siefkenj/tsify" }
diff --git a/README.md b/README.md
index d81060c0..0e27cdad 100644
--- a/README.md
+++ b/README.md
@@ -108,8 +108,13 @@ yay -S aur/enchant1.6 aur/icu66 aur/libwebp052
Watch vitest unit tests only:
```shell
-cd applications/web
-pnpm test:unit -w
+pnpm test:unit -- -w
+```
+
+Run playwright e2e tests only:
+
+```shell
+pnpm test:unit -- -w
```
### rust
@@ -125,7 +130,8 @@ cargo test
Simple exaples using the rust code can be found in `packages/cadmium/examples`
Run simple rust example with:
-```
+
+```shell
cargo run --example project_simple_extrusion
```
diff --git a/applications/web/package.json b/applications/web/package.json
index a31d606e..43cb0e4a 100644
--- a/applications/web/package.json
+++ b/applications/web/package.json
@@ -6,11 +6,11 @@
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
- "test": "pnpm test:integration && pnpm test:unit",
+ "test": "pnpm test:e2e && pnpm test:unit",
"lint": "prettier --check . && eslint \"src/**/*.ts\"",
"format": "prettier . --write .",
"check": "svelte-check --tsconfig ./tsconfig.json",
- "test:integration": "playwright test",
+ "test:e2e": "playwright test",
"test:unit": "vitest",
"types:guard": "ts-auto-guard --export-all src/types.d.ts"
},
diff --git a/applications/web/src/App.svelte b/applications/web/src/App.svelte
index 2f01772c..aa95dfb0 100644
--- a/applications/web/src/App.svelte
+++ b/applications/web/src/App.svelte
@@ -37,7 +37,7 @@
// log('featureIndex changed to', val)
// refresh workbench when featureIndex mutates
- featureIndex.subscribe(val => $wasmProject["get_workbench"] && workbenchIsStale.set(true))
+ featureIndex.subscribe(_ => $wasmProject["get_workbench"] && workbenchIsStale.set(true))
diff --git a/applications/web/src/components/AppBar.svelte b/applications/web/src/components/AppBar.svelte
index c04fd408..62231b41 100644
--- a/applications/web/src/components/AppBar.svelte
+++ b/applications/web/src/components/AppBar.svelte
@@ -10,10 +10,10 @@
import Moon from "phosphor-svelte/lib/Moon"
import Sun from "phosphor-svelte/lib/Sun"
import type {WithTarget} from "shared/types"
- import {isProject} from "shared/typeGuards"
import {base} from "../base"
import {renameProject} from "shared/projectUtils"
+ // @ts-ignore
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
export let project: Project
diff --git a/applications/web/src/components/Arc.svelte b/applications/web/src/components/Arc.svelte
index 9f63c020..92caafbd 100644
--- a/applications/web/src/components/Arc.svelte
+++ b/applications/web/src/components/Arc.svelte
@@ -5,14 +5,16 @@
import {T} from "@threlte/core"
import {flatten, arcToPoints, promoteTo3} from "shared/projectUtils"
import {currentlySelected, currentlyMousedOver, sketchTool} from "shared/stores"
- import type {EntityType, SketchPoint} from "shared/types"
+ import type {EntityType} from "shared/types"
import {isEntity} from "shared/typeGuards"
+ import type { Point2 } from "cadmium"
+ // @ts-ignore
const log = (function () { const context = "[Arc.svelte]"; const color="gray"; return Function.prototype.bind.call(console.log, console, `%c${context}`, `font-weight:bold;color:${color};`)})() // prettier-ignore
const type: EntityType = "arc"
- export let id: string, center: SketchPoint, start: SketchPoint, end: SketchPoint
+ export let id: string, center: Point2, start: Point2, end: Point2
export let dashedLineMaterial: LineMaterial,
dashedHoveredMaterial: LineMaterial,
@@ -25,9 +27,9 @@
$: selected = $currentlySelected.some(e => isEntity(e) && e.id === id && e.type === type) ? true : false
- const center2 = new Vector2(center.twoD.x, center.twoD.y)
- const start2 = new Vector2(start.twoD.x, start.twoD.y)
- const end2 = new Vector2(end.twoD.x, end.twoD.y)
+ const center2 = new Vector2(center.x, center.y)
+ const start2 = new Vector2(start.x, start.y)
+ const end2 = new Vector2(end.x, end.y)
const points = flatten(promoteTo3(arcToPoints(center2, start2, end2 /** implicit false */))) // defaulted false in function todo ask Matt
diff --git a/applications/web/src/components/Circle.svelte b/applications/web/src/components/Circle.svelte
index 57413622..00cfcdde 100644
--- a/applications/web/src/components/Circle.svelte
+++ b/applications/web/src/components/Circle.svelte
@@ -4,13 +4,15 @@
import {T} from "@threlte/core"
import {flatten, circleToPoints, promoteTo3} from "shared/projectUtils"
import {currentlySelected, currentlyMousedOver, sketchTool} from "shared/stores"
- import type {CircleTuple, EntityType} from "shared/types"
+ import type {EntityType} from "shared/types"
+ import type { Point2 } from "cadmium"
+ // @ts-ignore
const log = (function () { const context = "[Circle.svelte]"; const color="gray"; return Function.prototype.bind.call(console.log, console, `%c${context}`, `font-weight:bold;color:${color};`)})() // prettier-ignore
const type: EntityType = "circle"
- export let id: string, center: CircleTuple["center"], radius: number
+ export let id: string, center: Point2, radius: number
// log("[props]", "id:", id, "center:", center, "radius:", radius)
@@ -25,7 +27,7 @@
$: selected = $currentlySelected.some(e => e.id === id && e.type === type) ? true : false
// array of x,y,z points
- const points = flatten(promoteTo3(circleToPoints(center.twoD, radius)))
+ const points = flatten(promoteTo3(circleToPoints(center, radius)))
const lineGeometry = new LineGeometry()
lineGeometry.setPositions(points)
diff --git a/applications/web/src/components/Face.svelte b/applications/web/src/components/Face.svelte
index b23c5368..0d165f30 100644
--- a/applications/web/src/components/Face.svelte
+++ b/applications/web/src/components/Face.svelte
@@ -3,9 +3,9 @@
import {Path, Vector2, Shape, MeshStandardMaterial, DoubleSide, ShapeGeometry} from "three"
import {circleToPoints, arcToPoints} from "shared/projectUtils"
import {currentlySelected, currentlyMousedOver, selectingFor} from "shared/stores"
- import type {EntityType, IDictionary, SketchPoint} from "shared/types"
- // import Sketch from './Sketch.svelte'
+ import type {EntityType, IDictionary, Point2WithID} from "shared/types"
+ // @ts-ignore
const log = (function () { const context = "[Face.svelte]"; const color="gray"; return Function.prototype.bind.call(console.log, console, `%c${context}`, `font-weight:bold;color:${color};`)})() // prettier-ignore
// todo see docs below
@@ -13,8 +13,7 @@
// exterior: wire
// holes: wires[]
// }
- export let face: any, id: string, pointsById: IDictionary
- // log("[props]", "face:", face, "id:", id, "pointsById:", pointsById)
+ export let face: any, id: string, pointsById: IDictionary
const type: EntityType = "face"
@@ -36,31 +35,33 @@
function writeWireToShape(wire: {Circle: any; Segments: any}, shape: Path) {
if (wire.Circle) {
let circle = wire.Circle
- let center = pointsById[circle.center]
- let radius = circle.radius
- let points = circleToPoints(new Vector2(center.twoD.x, center.twoD.y), radius)
+ let center = circle.center.data
+ let radius = circle.data
+ let points = circleToPoints(new Vector2(center[0], center[1]), radius)
shape.setFromPoints(points)
} else if (wire.Segments) {
let points = []
for (let segment of wire.Segments) {
- if (segment.type === "Line") {
- let start = pointsById[segment.start]
- let end = pointsById[segment.end]
+ console.log("segment", segment)
+ if ("Line" in segment) {
+ let start = segment.Line.start
+ let end = segment.Line.end
if (points.length === 0) {
- points.push(new Vector2(start.twoD.x, start.twoD.y))
+ points.push(new Vector2(start.data[0], start.data[1]))
}
- points.push(new Vector2(end.twoD.x, end.twoD.y))
- } else if (segment.type === "Arc") {
- let center = pointsById[segment.center]
- let start = pointsById[segment.start]
- let end = pointsById[segment.end]
+ points.push(new Vector2(end.data[0], end.data[1]))
+ } else if ("Arc" in segment) {
+ // TODO: We use a center + angles, not 3 points
+ let center = segment.Arc.center
+ let start = pointsById[segment.Arc.start]
+ let end = pointsById[segment.Arc.end]
let arcPoints = arcToPoints(
- new Vector2(center.twoD.x, center.twoD.y),
- new Vector2(start.twoD.x, start.twoD.y),
- new Vector2(end.twoD.x, end.twoD.y),
- segment.clockwise,
+ new Vector2(center.x, center.y),
+ new Vector2(start.x, start.y),
+ new Vector2(end.x, end.y),
+ segment.Arc.clockwise,
)
if (points.length !== 0) {
diff --git a/applications/web/src/components/FeatureHistory.svelte b/applications/web/src/components/FeatureHistory.svelte
index bf608cf1..7ab57b8c 100644
--- a/applications/web/src/components/FeatureHistory.svelte
+++ b/applications/web/src/components/FeatureHistory.svelte
@@ -1,13 +1,14 @@
@@ -169,17 +121,17 @@
on:click={e => {
if (editing) {
if ($sketchTool === "line") {
- newLineTool.click(e, {twoD: projectToPlane(e.point), threeD: e.point})
+ newLineTool.click(e, projectToPlane(e.point))
} else if ($sketchTool === "circle") {
- newCircleTool.click(e, {twoD: projectToPlane(e.point), threeD: e.point})
+ newCircleTool.click(e, projectToPlane(e.point))
} else if ($sketchTool === "rectangle") {
- newRectangleTool.click(e, {twoD: projectToPlane(e.point), threeD: e.point})
+ newRectangleTool.click(e, projectToPlane(e.point))
} else if ($sketchTool === "select") {
selectTool.click(e, projectToPlane(e.point))
}
}
}}
- on:pointermove={debounce(e => {
+ on:pointermove={debounce((e: any) => {
if (editing) {
if ($sketchTool === "line") {
newLineTool.mouseMove(e, projectToPlane(e.point))
@@ -194,10 +146,10 @@
-
-
-
-
+
+
+
+
- {#each circleTuples as circle (circle.id)}
-
- {/each}
-
- {#each arcTuples as arc (arc.id)}
-
- {/each}
+ {#each history as step}
+ {#if isSketchPointStep(step)}
+
+ {:else if isSketchCircleStep(step)}
+
+ {:else if isSketchArcStep(step)}
+
+
+ {:else if isSketchLineStep(step)}
+
+ {/if}
- {#each lineTuples as line (line.id)}
-
+ {#if isSketchActionStep(step)}
+ {#each step.result.faces as face, faceId}
+
+ {/each}
+ {/if}
{/each}
{#each $previewGeometry as geom (geom.uuid)}
{#if isGeomType(geom, "line")}
{:else if isGeomType(geom, "circle")}
{:else if isGeomType(geom, "point")}
-
+
{/if}
{/each}
-
- {#each pointTuples as { id, twoD, threeD } (id)}
-
- {/each}
-
- {#each faceTuples as face (`${faceTuples.length}-${face.id}`)}
-
- {/each}
{/if}
diff --git a/applications/web/src/components/Plane.svelte b/applications/web/src/components/Plane.svelte
index c31f8ad5..bcc1ee92 100644
--- a/applications/web/src/components/Plane.svelte
+++ b/applications/web/src/components/Plane.svelte
@@ -10,12 +10,11 @@
import {currentlySelected, currentlyMousedOver, selectingFor, selectionMin, selectionMax} from "shared/stores"
import type {EntityType} from "shared/types"
+ // @ts-ignore
const log = (function () { const context = "[Plane.svelte]"; const color="gray"; return Function.prototype.bind.call(console.log, console, `%c${context}`, `font-weight:bold;color:${color};`)})() // prettier-ignore
export let name: string, id: string, width: number, height: number, origin: Vector3Like, primary: Vector3Like, secondary: Vector3Like, tertiary: Vector3Like
- // log("[props]","name:",name,"id:",id,"width:",width,"height:",height,"origin:",origin,"primary:",primary,"secondary:",secondary,"tertiary:",tertiary)
-
extend({Line2})
const {size, dpr} = useThrelte()
@@ -140,9 +139,9 @@
// number of selected entities, boot the oldest one
if ($currentlySelected.length + 1 > $selectionMax) $currentlySelected.shift()
- /** cadmium wants a string for id whereas for most ids it wants number, u64 iirc
+ /** cadmium wants a string for id whereas for most ids it wants number, u64 iirc
we should use number for all entity ids? seems cleaner to use one type. otherwise we could do:
-
+
interface Entity {
id: number | string
type: EntityType
diff --git a/applications/web/src/components/Point2D.svelte b/applications/web/src/components/Point2D.svelte
index d2b43da5..9542d470 100644
--- a/applications/web/src/components/Point2D.svelte
+++ b/applications/web/src/components/Point2D.svelte
@@ -9,7 +9,7 @@
import type {EntityType} from "shared/types"
import {base} from "../base"
- export let x, y, hidden: boolean, id: string
+ export let x: number, y: number, hidden: boolean, id: string
export let isPreview = false
export let collisionLineMaterial: LineMaterial
diff --git a/applications/web/src/components/Point3D.svelte b/applications/web/src/components/Point3D.svelte
index 81552a5f..15560e1b 100644
--- a/applications/web/src/components/Point3D.svelte
+++ b/applications/web/src/components/Point3D.svelte
@@ -11,6 +11,7 @@
export let x: number, y: number, z: number, hidden: boolean, id: string
export let isPreview = false
+ console.log("Point3D.svelte", {x, y, z, hidden, id})
export let collisionLineMaterial: LineMaterial
diff --git a/applications/web/src/components/Scene.svelte b/applications/web/src/components/Scene.svelte
index a713ebbc..f6df0db9 100644
--- a/applications/web/src/components/Scene.svelte
+++ b/applications/web/src/components/Scene.svelte
@@ -4,7 +4,7 @@
import {Vector2, Vector3, type Vector3Like} from "three"
import {interactivity} from "@threlte/extras"
import {LineMaterial} from "three/addons/lines/LineMaterial.js"
- import {realization, workbench, sketchBeingEdited} from "shared/stores"
+ import {workbench, sketchBeingEdited} from "shared/stores"
import Point3D from "./Point3D.svelte"
import Plane from "./Plane.svelte"
import Solid from "./Solid.svelte"
@@ -12,29 +12,16 @@
import CubeGizmo from "./controls/CubeGizmo/CubeGizmo.svelte"
import {base} from "../base"
import CadControls from "./controls/CadControls/CadControls.svelte"
+ import {isPlaneStep, isPointStep, isSketchStep, isSolidStep} from "shared/stepTypeGuards"
+ // @ts-ignore
const log = (function () { const context = "[Scene.svelte]"; const color="gray"; return Function.prototype.bind.call(console.log, console, `%c${context}`, `font-weight:bold;color:${color};`)})() // prettier-ignore
interactivity()
const {size, dpr, camera} = useThrelte()
- $: points = $realization.points ? Object.entries($realization.points) : []
- $: planes = $realization.planes ? Object.entries($realization.planes) : []
- $: planesById = planes ? Object.fromEntries(planes) : {}
- $: solids = $realization.solids ? Object.entries($realization.solids) : []
- $: sketches = $realization.sketches ? Object.entries($realization.sketches) : []
-
- // $: $workbench, log("[$workbench]", $workbench)
- // $: points, log("[realization.points]", points)
- // $: planes, log("[realization.planes]", planes)
- // $: planesById, log("[planesById]", planesById)
- // $: solids, log("[realization.solids]", solids)
- // $: sketches, log("[realization.sketches]", sketches)
-
- // put it on window for debugging. todo remove
- if (!(globalThis as any).realization) (globalThis as any).realization = []
- $: $realization, (() => ((globalThis as any).realization = [...(globalThis as any).realization, $realization]))()
+ $: history = $workbench.history ?? []
export function setCameraFocus(goTo: Vector3Like, lookAt: Vector3Like, up: Vector3Like): void {
// TODO: make this tween nicely
@@ -122,7 +109,7 @@
- {}} mouseButtons={{LEFT: 2, MIDDLE: 50, RIGHT: 1}} />
+
-
-{#each points as [pointName, point] (`${$workbench.name}-${pointName}`)}
-
-{/each}
-
-{#each planes as [planeName, plane] (`${$workbench.name}-${planeName}`)}
-
-{/each}
-
-{#each sketches as [sketchId, sketchTuple] (`${$workbench.name}-${sketchId}`)}
-
-{/each}
-
-{#each solids as [solidName, solid] (`${$workbench.name}-${solidName}-${solid.crc32}`)}
-
+{#each history as step}
+ {#if isPointStep(step)}
+
+ {:else if isPlaneStep(step)}
+
+ {:else if isSketchStep(step)}
+
+ {:else if isSolidStep(step)}
+ {#each step.result.solids as solid}
+
+ {/each}
+ {/if}
{/each}
diff --git a/applications/web/src/components/SelectableSurface.svelte b/applications/web/src/components/SelectableSurface.svelte
index dddca715..bf5c50d6 100644
--- a/applications/web/src/components/SelectableSurface.svelte
+++ b/applications/web/src/components/SelectableSurface.svelte
@@ -8,6 +8,7 @@
import type {EntityType, TruckEdge, TruckFace, TruckFaceBoundary} from "shared/types"
import nurbs from "nurbs"
+ // @ts-ignore
const log = (function () { const context = "[SelectableSurface.svelte]"; const color="gray"; return Function.prototype.bind.call(console.log, console, `%c${context}`, `font-weight:bold;color:${color};`)})() // prettier-ignore
export let truck_face: TruckFace, truck_edges: TruckEdge[], id: string
diff --git a/applications/web/src/components/Sketch.svelte b/applications/web/src/components/Sketch.svelte
index 3ddc86f0..54027f5f 100644
--- a/applications/web/src/components/Sketch.svelte
+++ b/applications/web/src/components/Sketch.svelte
@@ -1,14 +1,15 @@
-{#if editing}
-
-{:else}
-
-{/if}
+
diff --git a/applications/web/src/components/Solid.svelte b/applications/web/src/components/Solid.svelte
index f68c7c03..0b5904c5 100644
--- a/applications/web/src/components/Solid.svelte
+++ b/applications/web/src/components/Solid.svelte
@@ -6,6 +6,7 @@
import type {TruckBoundary, TruckEdge, TruckFace, TruckSolid} from "shared/types"
import type {Vector3Like} from "three"
+ // @ts-ignore
const log = (function () { const context = "[Solid.svelte]"; const color="gray"; return Function.prototype.bind.call(console.log, console, `%c${context}`, `font-weight:bold;color:${color};`)})() // prettier-ignore
export let name: string, indices, vertices, normals, truckSolid: TruckSolid
diff --git a/applications/web/src/components/ToolBar.svelte b/applications/web/src/components/ToolBar.svelte
index 0d195ff3..993a8213 100644
--- a/applications/web/src/components/ToolBar.svelte
+++ b/applications/web/src/components/ToolBar.svelte
@@ -7,7 +7,6 @@
let solving = false
// todo ask Matt why is this a no-op?
- const solveSketch = () => {}
const createNewExtrusion = () => {
newExtrusion()
// set that as the current feature being edited
@@ -18,7 +17,6 @@
newSketchOnPlane()
$featureIndex = $workbench.history.length - 1
}
- const stepSketch = () => {}
const debugging = false
const actions = [
@@ -33,8 +31,6 @@
]
const sketchActions = [
- {alt: "solve", src: `${base}/actions/solve_min.svg`, text: "Solve", handler: solveSketch},
- {alt: "step", src: `${base}/actions/step_min.svg`, text: "Step", handler: stepSketch},
{alt: "line", src: `${base}/actions/line.svg`, handler: () => ($sketchTool = "line")},
{alt: "circle", src: `${base}/actions/circle.svg`, handler: () => ($sketchTool = "circle")},
{alt: "rectangle", src: `${base}/actions/rectangle.svg`, handler: () => ($sketchTool = "rectangle")},
@@ -42,7 +38,7 @@
- {#if $sketchBeingEdited !== ""}
+ {#if $sketchBeingEdited !== null}
{#each sketchActions as action}