@crowdedkingdoms/ckx-kit 0.0.0-stage → 0.1.1-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/LICENSE-APACHE +176 -0
  2. package/LICENSE-MIT +21 -0
  3. package/README.md +76 -2
  4. package/checks/compute-toolchain/host-catalog.json +68 -0
  5. package/crates/ckx-sdk/Cargo.toml +17 -0
  6. package/crates/ckx-sdk/LICENSE-APACHE +176 -0
  7. package/crates/ckx-sdk/LICENSE-MIT +21 -0
  8. package/crates/ckx-sdk/README.md +47 -0
  9. package/crates/ckx-sdk/src/abi.rs +115 -0
  10. package/crates/ckx-sdk/src/cron.rs +717 -0
  11. package/crates/ckx-sdk/src/emit.rs +140 -0
  12. package/crates/ckx-sdk/src/lib.rs +588 -0
  13. package/crates/ckx-sdk/src/model.rs +482 -0
  14. package/crates/ckx-sdk/src/node.rs +942 -0
  15. package/crates/ckx-sdk/src/rt.rs +519 -0
  16. package/crates/crowdy-client-sdk/Cargo.toml +15 -0
  17. package/crates/crowdy-client-sdk/LICENSE-APACHE +176 -0
  18. package/crates/crowdy-client-sdk/LICENSE-MIT +21 -0
  19. package/crates/crowdy-client-sdk/README.md +25 -0
  20. package/crates/crowdy-client-sdk/src/lib.rs +698 -0
  21. package/dist/checks/src/build/client-capabilities.js +123 -0
  22. package/dist/checks/src/build/exec-source.js +343 -0
  23. package/dist/checks/src/build/rust-source-guard.js +165 -0
  24. package/dist/checks/src/build/wasm-inspect.js +249 -0
  25. package/dist/cli/src/build.js +99 -0
  26. package/dist/cli/src/crate.js +64 -0
  27. package/dist/cli/src/doctor.js +51 -0
  28. package/dist/cli/src/kit.js +66 -0
  29. package/dist/cli/src/main.js +109 -0
  30. package/dist/cli/src/new.js +74 -0
  31. package/dist/cli/src/tools.js +104 -0
  32. package/kit.pin +9 -0
  33. package/package.json +81 -4
  34. package/rust-toolchain.toml +6 -0
  35. package/starters/ckx.json +9 -0
  36. package/starters/grid-mod/Cargo.toml +13 -0
  37. package/starters/grid-mod/src/lib.rs +82 -0
  38. package/starters/matchmaker/Cargo.toml +13 -0
  39. package/starters/matchmaker/src/lib.rs +362 -0
  40. package/starters/npc-mobs/Cargo.toml +14 -0
  41. package/starters/npc-mobs/src/lib.rs +469 -0
  42. package/starters/session/Cargo.toml +13 -0
  43. package/starters/session/src/lib.rs +395 -0
  44. package/starters/world-tick/Cargo.toml +14 -0
  45. package/starters/world-tick/src/lib.rs +346 -0
  46. package/templates/client/Cargo.toml +16 -0
  47. package/templates/client/src/lib.rs +31 -0
  48. package/templates/hub/Cargo.toml +11 -0
  49. package/templates/hub/src/lib.rs +73 -0
  50. package/templates/spoke/Cargo.toml +11 -0
  51. package/templates/spoke/src/lib.rs +53 -0
  52. package/tools/instrument/Cargo.lock +140 -0
  53. package/tools/instrument/Cargo.toml +11 -0
  54. package/tools/instrument/src/main.rs +165 -0
  55. package/vendor.lock +167 -0
@@ -0,0 +1,115 @@
1
+ //! Host imports (see `docs/GUEST-ABI.md`). Outside wasm32 they are stubs so node logic that
2
+ //! makes no calls can be unit tested natively.
3
+
4
+ #[cfg(target_arch = "wasm32")]
5
+ mod host {
6
+ #[link(wasm_import_module = "ckx")]
7
+ unsafe extern "C" {
8
+ pub fn log(level: u32, ptr: u32, len: u32);
9
+ pub fn now_ms() -> u64;
10
+ pub fn call(req_ptr: u32, req_len: u32, deadline_ms: u32) -> u64;
11
+ pub fn send(req_ptr: u32, req_len: u32) -> u32;
12
+ pub fn publish(topic_ptr: u32, topic_len: u32, payload_ptr: u32, payload_len: u32);
13
+ pub fn node(op_ptr: u32, op_len: u32, payload_ptr: u32, payload_len: u32, deadline_ms: u32) -> u64;
14
+ pub fn wake_at(at_ms: u64);
15
+ pub fn subscribe(req_ptr: u32, req_len: u32) -> u64;
16
+ pub fn unsubscribe(req_ptr: u32, req_len: u32) -> u64;
17
+ pub fn persist_now();
18
+ pub fn emit(ptr: u32, len: u32) -> u32;
19
+ }
20
+ }
21
+
22
+ #[cfg(target_arch = "wasm32")]
23
+ pub fn emit(inject: &[u8]) -> u32 {
24
+ unsafe { host::emit(inject.as_ptr() as u32, inject.len() as u32) }
25
+ }
26
+
27
+ #[cfg(not(target_arch = "wasm32"))]
28
+ pub fn emit(_inject: &[u8]) -> u32 {
29
+ 0
30
+ }
31
+
32
+ #[cfg(target_arch = "wasm32")]
33
+ pub fn wake_at(at_ms: u64) {
34
+ unsafe { host::wake_at(at_ms) }
35
+ }
36
+
37
+ #[cfg(target_arch = "wasm32")]
38
+ pub fn watch(req: &[u8], on: bool) -> u64 {
39
+ let (ptr, len) = (req.as_ptr() as u32, req.len() as u32);
40
+ unsafe { if on { host::subscribe(ptr, len) } else { host::unsubscribe(ptr, len) } }
41
+ }
42
+
43
+ #[cfg(target_arch = "wasm32")]
44
+ pub fn persist_now() {
45
+ unsafe { host::persist_now() }
46
+ }
47
+
48
+ #[cfg(not(target_arch = "wasm32"))]
49
+ pub fn wake_at(_at_ms: u64) {}
50
+
51
+ #[cfg(not(target_arch = "wasm32"))]
52
+ pub fn watch(_req: &[u8], _on: bool) -> u64 {
53
+ 0
54
+ }
55
+
56
+ #[cfg(not(target_arch = "wasm32"))]
57
+ pub fn persist_now() {}
58
+
59
+ #[cfg(target_arch = "wasm32")]
60
+ pub fn log(level: u32, msg: &str) {
61
+ unsafe { host::log(level, msg.as_ptr() as u32, msg.len() as u32) }
62
+ }
63
+
64
+ #[cfg(target_arch = "wasm32")]
65
+ pub fn now_ms() -> u64 {
66
+ unsafe { host::now_ms() }
67
+ }
68
+
69
+ #[cfg(target_arch = "wasm32")]
70
+ pub fn call(req: &[u8], deadline_ms: u32) -> u64 {
71
+ unsafe { host::call(req.as_ptr() as u32, req.len() as u32, deadline_ms) }
72
+ }
73
+
74
+ #[cfg(target_arch = "wasm32")]
75
+ pub fn send(req: &[u8]) -> u32 {
76
+ unsafe { host::send(req.as_ptr() as u32, req.len() as u32) }
77
+ }
78
+
79
+ #[cfg(target_arch = "wasm32")]
80
+ pub fn publish(topic: &str, payload: &[u8]) {
81
+ unsafe { host::publish(topic.as_ptr() as u32, topic.len() as u32, payload.as_ptr() as u32, payload.len() as u32) }
82
+ }
83
+
84
+ #[cfg(target_arch = "wasm32")]
85
+ pub fn node(op: &str, payload: &[u8], deadline_ms: u32) -> u64 {
86
+ unsafe { host::node(op.as_ptr() as u32, op.len() as u32, payload.as_ptr() as u32, payload.len() as u32, deadline_ms) }
87
+ }
88
+
89
+ #[cfg(not(target_arch = "wasm32"))]
90
+ pub fn log(level: u32, msg: &str) {
91
+ eprintln!("[ckx level {level}] {msg}");
92
+ }
93
+
94
+ #[cfg(not(target_arch = "wasm32"))]
95
+ pub fn now_ms() -> u64 {
96
+ std::time::SystemTime::now().duration_since(std::time::UNIX_EPOCH).map(|d| d.as_millis() as u64).unwrap_or(0)
97
+ }
98
+
99
+ #[cfg(not(target_arch = "wasm32"))]
100
+ pub fn call(_req: &[u8], _deadline_ms: u32) -> u64 {
101
+ 0
102
+ }
103
+
104
+ #[cfg(not(target_arch = "wasm32"))]
105
+ pub fn send(_req: &[u8]) -> u32 {
106
+ 8
107
+ }
108
+
109
+ #[cfg(not(target_arch = "wasm32"))]
110
+ pub fn publish(_topic: &str, _payload: &[u8]) {}
111
+
112
+ #[cfg(not(target_arch = "wasm32"))]
113
+ pub fn node(_op: &str, _payload: &[u8], _deadline_ms: u32) -> u64 {
114
+ 0
115
+ }