@feltdb/core 0.4.12 → 0.4.14

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 (165) hide show
  1. package/dist/cli/commands.js +42 -25
  2. package/dist/cli/index.js +1 -1
  3. package/dist/create/cli.js +39 -4
  4. package/dist/create/create.js +30 -18
  5. package/dist/create/docker-compose-generator.js +68 -11
  6. package/dist/create/package-versions.js +1 -1
  7. package/dist/create/server-source/Cargo.lock +2238 -0
  8. package/dist/create/server-source/Cargo.toml +7 -0
  9. package/dist/create/server-source/crates/feltdb/Cargo.lock +175 -0
  10. package/dist/create/server-source/crates/feltdb/Cargo.toml +79 -0
  11. package/dist/create/server-source/crates/feltdb/benches/baselines/gate-13-redux.json +370 -0
  12. package/dist/create/server-source/crates/feltdb/benches/gate13_baseline.rs +589 -0
  13. package/dist/create/server-source/crates/feltdb/benches/gate13_phase_7_1_release_economics.rs +259 -0
  14. package/dist/create/server-source/crates/feltdb/benches/gate_13_redux.rs +446 -0
  15. package/dist/create/server-source/crates/feltdb/benches/gate_13_regression_runner.rs +272 -0
  16. package/dist/create/server-source/crates/feltdb/benches/gate_14a_concurrent_writer_scaling.rs +378 -0
  17. package/dist/create/server-source/crates/feltdb/benches/gate_14a_production_admission_revalidation.rs +414 -0
  18. package/dist/create/server-source/crates/feltdb/benches/gate_14a_rc2_admission_contract.rs +486 -0
  19. package/dist/create/server-source/crates/feltdb/benches/gate_14a_rc_root_cause.rs +273 -0
  20. package/dist/create/server-source/crates/feltdb/benches/gate_14a_sync1_queued_prototype.rs +587 -0
  21. package/dist/create/server-source/crates/feltdb/benches/gate_14a_sync_economics.rs +513 -0
  22. package/dist/create/server-source/crates/feltdb/benches/gate_14b_causal_backlog_scaling.rs +395 -0
  23. package/dist/create/server-source/crates/feltdb/benches/gate_14c_replication_contract_test.rs +469 -0
  24. package/dist/create/server-source/crates/feltdb/benches/gate_14c_replication_scaling.rs +409 -0
  25. package/dist/create/server-source/crates/feltdb/benches/gate_14d_combined_dimension_scaling.rs +627 -0
  26. package/dist/create/server-source/crates/feltdb/benches/phase_7_1_2_optimization_benchmark.rs +383 -0
  27. package/dist/create/server-source/crates/feltdb/benches/phase_7_1_3_crossover_analysis.rs +298 -0
  28. package/dist/create/server-source/crates/feltdb/src/acceptance_tests.rs +1698 -0
  29. package/dist/create/server-source/crates/feltdb/src/acquisition.rs +286 -0
  30. package/dist/create/server-source/crates/feltdb/src/admission.rs +192 -0
  31. package/dist/create/server-source/crates/feltdb/src/admission_contract_tests.rs +477 -0
  32. package/dist/create/server-source/crates/feltdb/src/adversarial_transport.rs +566 -0
  33. package/dist/create/server-source/crates/feltdb/src/analytics.rs +475 -0
  34. package/dist/create/server-source/crates/feltdb/src/application.rs +2244 -0
  35. package/dist/create/server-source/crates/feltdb/src/application_runtime.rs +1070 -0
  36. package/dist/create/server-source/crates/feltdb/src/authorization.rs +1030 -0
  37. package/dist/create/server-source/crates/feltdb/src/bin/feltdb_node.rs +266 -0
  38. package/dist/create/server-source/crates/feltdb/src/capabilities/mod.rs +8 -0
  39. package/dist/create/server-source/crates/feltdb/src/capabilities/search.rs +418 -0
  40. package/dist/create/server-source/crates/feltdb/src/capabilities/vector.rs +482 -0
  41. package/dist/create/server-source/crates/feltdb/src/capability.rs +903 -0
  42. package/dist/create/server-source/crates/feltdb/src/cardinality_diagnostics.rs +261 -0
  43. package/dist/create/server-source/crates/feltdb/src/cardinality_endpoint.rs +78 -0
  44. package/dist/create/server-source/crates/feltdb/src/causal_dependency_barrier.rs +2214 -0
  45. package/dist/create/server-source/crates/feltdb/src/causal_dependency_barrier_phase_7_1.rs +194 -0
  46. package/dist/create/server-source/crates/feltdb/src/concurrency_fuzzing.rs +427 -0
  47. package/dist/create/server-source/crates/feltdb/src/consistency_contract.rs +453 -0
  48. package/dist/create/server-source/crates/feltdb/src/content_distribution.rs +465 -0
  49. package/dist/create/server-source/crates/feltdb/src/convergence.rs +618 -0
  50. package/dist/create/server-source/crates/feltdb/src/crash_atomic_boundary.rs +418 -0
  51. package/dist/create/server-source/crates/feltdb/src/crash_injection.rs +380 -0
  52. package/dist/create/server-source/crates/feltdb/src/crash_recovery_tests.rs +362 -0
  53. package/dist/create/server-source/crates/feltdb/src/cron.rs +294 -0
  54. package/dist/create/server-source/crates/feltdb/src/distributed_indexing.rs +474 -0
  55. package/dist/create/server-source/crates/feltdb/src/distributed_tests.rs +1003 -0
  56. package/dist/create/server-source/crates/feltdb/src/distributed_transactions.rs +536 -0
  57. package/dist/create/server-source/crates/feltdb/src/durability_guarantees.rs +364 -0
  58. package/dist/create/server-source/crates/feltdb/src/durable_dedup_set.rs +235 -0
  59. package/dist/create/server-source/crates/feltdb/src/durable_operation_log.rs +207 -0
  60. package/dist/create/server-source/crates/feltdb/src/durable_sync.rs +316 -0
  61. package/dist/create/server-source/crates/feltdb/src/execution.rs +426 -0
  62. package/dist/create/server-source/crates/feltdb/src/in_process_transport.rs +219 -0
  63. package/dist/create/server-source/crates/feltdb/src/indexing.rs +779 -0
  64. package/dist/create/server-source/crates/feltdb/src/lib.rs +2838 -0
  65. package/dist/create/server-source/crates/feltdb/src/materialization.rs +184 -0
  66. package/dist/create/server-source/crates/feltdb/src/metrics.rs +267 -0
  67. package/dist/create/server-source/crates/feltdb/src/multi_node_convergence.rs +311 -0
  68. package/dist/create/server-source/crates/feltdb/src/observability.rs +366 -0
  69. package/dist/create/server-source/crates/feltdb/src/operation.rs +251 -0
  70. package/dist/create/server-source/crates/feltdb/src/operation_algebra.rs +438 -0
  71. package/dist/create/server-source/crates/feltdb/src/operation_log.rs +344 -0
  72. package/dist/create/server-source/crates/feltdb/src/partition_reconciliation.rs +477 -0
  73. package/dist/create/server-source/crates/feltdb/src/peer_registry.rs +166 -0
  74. package/dist/create/server-source/crates/feltdb/src/permutation_scheduler.rs +261 -0
  75. package/dist/create/server-source/crates/feltdb/src/persistence_reality.rs +560 -0
  76. package/dist/create/server-source/crates/feltdb/src/phase1b_acceptance.rs +3226 -0
  77. package/dist/create/server-source/crates/feltdb/src/phase1c1_acceptance.rs +201 -0
  78. package/dist/create/server-source/crates/feltdb/src/phase1c2_acceptance.rs +263 -0
  79. package/dist/create/server-source/crates/feltdb/src/phase1c3_acceptance.rs +484 -0
  80. package/dist/create/server-source/crates/feltdb/src/phase1c_atomicity_proof.rs +216 -0
  81. package/dist/create/server-source/crates/feltdb/src/phase5_integration.rs +281 -0
  82. package/dist/create/server-source/crates/feltdb/src/phase5_scenarios.rs +323 -0
  83. package/dist/create/server-source/crates/feltdb/src/phase6_adversarial_scenarios.rs +573 -0
  84. package/dist/create/server-source/crates/feltdb/src/phase6_convergence_validator.rs +404 -0
  85. package/dist/create/server-source/crates/feltdb/src/phase6_persistence.rs +418 -0
  86. package/dist/create/server-source/crates/feltdb/src/phase_1c_real_tcp.rs +381 -0
  87. package/dist/create/server-source/crates/feltdb/src/phase_1c_three_node.rs +523 -0
  88. package/dist/create/server-source/crates/feltdb/src/phase_2a_failures.rs +334 -0
  89. package/dist/create/server-source/crates/feltdb/src/phase_2b_network.rs +306 -0
  90. package/dist/create/server-source/crates/feltdb/src/phase_2c_cascading.rs +355 -0
  91. package/dist/create/server-source/crates/feltdb/src/phase_3_durability.rs +395 -0
  92. package/dist/create/server-source/crates/feltdb/src/phase_4_baseline.rs +346 -0
  93. package/dist/create/server-source/crates/feltdb/src/phase_5_soak.rs +430 -0
  94. package/dist/create/server-source/crates/feltdb/src/production_api.rs +400 -0
  95. package/dist/create/server-source/crates/feltdb/src/provenance.rs +207 -0
  96. package/dist/create/server-source/crates/feltdb/src/query_performance.rs +217 -0
  97. package/dist/create/server-source/crates/feltdb/src/references.rs +404 -0
  98. package/dist/create/server-source/crates/feltdb/src/replay_fuzzing.rs +401 -0
  99. package/dist/create/server-source/crates/feltdb/src/replication_manager.rs +160 -0
  100. package/dist/create/server-source/crates/feltdb/src/replication_protocol.rs +132 -0
  101. package/dist/create/server-source/crates/feltdb/src/routing.rs +409 -0
  102. package/dist/create/server-source/crates/feltdb/src/sharding.rs +523 -0
  103. package/dist/create/server-source/crates/feltdb/src/state_contract.rs +3118 -0
  104. package/dist/create/server-source/crates/feltdb/src/state_hash.rs +291 -0
  105. package/dist/create/server-source/crates/feltdb/src/state_transition_store.rs +376 -0
  106. package/dist/create/server-source/crates/feltdb/src/storage.rs +267 -0
  107. package/dist/create/server-source/crates/feltdb/src/submission.rs +477 -0
  108. package/dist/create/server-source/crates/feltdb/src/sync.rs +483 -0
  109. package/dist/create/server-source/crates/feltdb/src/sync_contract.rs +822 -0
  110. package/dist/create/server-source/crates/feltdb/src/tcp_transport.rs +366 -0
  111. package/dist/create/server-source/crates/feltdb/src/transaction_api.rs +473 -0
  112. package/dist/create/server-source/crates/feltdb/src/transaction_invariants.rs +949 -0
  113. package/dist/create/server-source/crates/feltdb/src/transactions.rs +646 -0
  114. package/dist/create/server-source/crates/feltdb/src/trigger.rs +390 -0
  115. package/dist/create/server-source/crates/feltdb/src/worker_mesh.rs +928 -0
  116. package/dist/create/server-source/crates/feltdb/src/workflow.rs +713 -0
  117. package/dist/create/server-source/crates/feltdb/src/workflow_acceptance_tests.rs +510 -0
  118. package/dist/create/server-source/crates/feltdb/src/workflow_integration.rs +354 -0
  119. package/dist/create/server-source/crates/feltdb/src/workflow_runtime.rs +594 -0
  120. package/dist/create/server-source/crates/feltdb/src/workload.rs +1310 -0
  121. package/dist/create/server-source/crates/feltdb-server/Cargo.toml +23 -0
  122. package/dist/create/server-source/crates/feltdb-server/README.md +79 -0
  123. package/dist/create/server-source/crates/feltdb-server/src/app_state.rs +73 -0
  124. package/dist/create/server-source/crates/feltdb-server/src/application_contract.rs +425 -0
  125. package/dist/create/server-source/crates/feltdb-server/src/artifacts.rs +449 -0
  126. package/dist/create/server-source/crates/feltdb-server/src/audit.rs +59 -0
  127. package/dist/create/server-source/crates/feltdb-server/src/auth.rs +308 -0
  128. package/dist/create/server-source/crates/feltdb-server/src/authorization.rs +228 -0
  129. package/dist/create/server-source/crates/feltdb-server/src/backup.rs +416 -0
  130. package/dist/create/server-source/crates/feltdb-server/src/causal.rs +218 -0
  131. package/dist/create/server-source/crates/feltdb-server/src/certification.rs +223 -0
  132. package/dist/create/server-source/crates/feltdb-server/src/clock.rs +132 -0
  133. package/dist/create/server-source/crates/feltdb-server/src/cluster.rs +165 -0
  134. package/dist/create/server-source/crates/feltdb-server/src/connections.rs +1044 -0
  135. package/dist/create/server-source/crates/feltdb-server/src/content.rs +111 -0
  136. package/dist/create/server-source/crates/feltdb-server/src/identity.rs +250 -0
  137. package/dist/create/server-source/crates/feltdb-server/src/key_management.rs +78 -0
  138. package/dist/create/server-source/crates/feltdb-server/src/key_provider.rs +247 -0
  139. package/dist/create/server-source/crates/feltdb-server/src/leases.rs +123 -0
  140. package/dist/create/server-source/crates/feltdb-server/src/lib.rs +25 -0
  141. package/dist/create/server-source/crates/feltdb-server/src/main.rs +8715 -0
  142. package/dist/create/server-source/crates/feltdb-server/src/metrics.rs +97 -0
  143. package/dist/create/server-source/crates/feltdb-server/src/portable_bundle.rs +350 -0
  144. package/dist/create/server-source/crates/feltdb-server/src/principals.rs +510 -0
  145. package/dist/create/server-source/crates/feltdb-server/src/providers.rs +269 -0
  146. package/dist/create/server-source/crates/feltdb-server/src/releases.rs +2563 -0
  147. package/dist/create/server-source/crates/feltdb-server/src/sessions.rs +156 -0
  148. package/dist/create/server-source/crates/feltdb-server/src/tenancy.rs +1097 -0
  149. package/dist/create/server-source/crates/feltdb-server/src/versions.rs +264 -0
  150. package/dist/create/server-source/crates/feltdb-wasm/Cargo.toml +31 -0
  151. package/dist/create/server-source/crates/feltdb-wasm/src/lib.rs +1086 -0
  152. package/dist/create/server-source/crates/feltdb-wasm/test.db +0 -0
  153. package/dist/flowspec.d.ts +2 -0
  154. package/dist/flowspec.d.ts.map +1 -1
  155. package/dist/flowspec.js +28 -4
  156. package/dist/state-contract.d.ts +7 -1
  157. package/dist/state-contract.d.ts.map +1 -1
  158. package/dist/studio/components/ApplicationDesigner.d.ts.map +1 -1
  159. package/dist/studio/components/ConflictExplorer.d.ts.map +1 -1
  160. package/dist/studio/components/index.js +1 -1
  161. package/dist/studio/{components-Q0Nx6gLE.js → components-9kDSWiGL.js} +163 -47
  162. package/dist/studio/index.js +31 -28
  163. package/dist/studio-app/assets/{index-BHOmLZF-.js → index-DVdvmf69.js} +9 -9
  164. package/dist/studio-app/index.html +1 -1
  165. package/package.json +1 -1
@@ -0,0 +1,264 @@
1
+ use serde::{Deserialize, Serialize};
2
+ use std::fmt;
3
+
4
+ /// Explicit versioning for all durable formats in FeltDB.
5
+ /// Every component that stores durable state must declare its format version.
6
+ /// Migrations between versions are restartable and preserve causal identity.
7
+
8
+ /// Current versions for all durable formats
9
+ pub struct FormatVersions {
10
+ /// State log format: entries, operation encoding, checkpoints
11
+ pub state_log: u32,
12
+ /// Checkpoint format: snapshot encoding, metadata
13
+ pub checkpoint: u32,
14
+ /// Protocol version: API, peer communication, data encoding
15
+ pub protocol: u32,
16
+ /// Membership proposal format
17
+ pub membership: u32,
18
+ /// Lease store format
19
+ pub leases: u32,
20
+ /// Content store format
21
+ pub content: u32,
22
+ /// Backup bundle format
23
+ pub backup: u32,
24
+ }
25
+
26
+ impl FormatVersions {
27
+ /// Current stable format versions
28
+ pub fn current() -> Self {
29
+ Self {
30
+ state_log: 1,
31
+ checkpoint: 1,
32
+ protocol: 1,
33
+ membership: 1,
34
+ leases: 1,
35
+ content: 1,
36
+ backup: 1,
37
+ }
38
+ }
39
+
40
+ /// Minimum supported versions (defines downgrade compatibility)
41
+ pub fn minimum_supported() -> Self {
42
+ Self {
43
+ state_log: 1,
44
+ checkpoint: 1,
45
+ protocol: 1,
46
+ membership: 1,
47
+ leases: 1,
48
+ content: 1,
49
+ backup: 1,
50
+ }
51
+ }
52
+
53
+ /// Check if a version is supported
54
+ pub fn is_supported(&self, current: &FormatVersions) -> bool {
55
+ let minimum = Self::minimum_supported();
56
+ self.state_log >= minimum.state_log
57
+ && self.state_log <= current.state_log
58
+ && self.checkpoint >= minimum.checkpoint
59
+ && self.checkpoint <= current.checkpoint
60
+ && self.protocol >= minimum.protocol
61
+ && self.protocol <= current.protocol
62
+ && self.membership >= minimum.membership
63
+ && self.membership <= current.membership
64
+ && self.leases >= minimum.leases
65
+ && self.leases <= current.leases
66
+ && self.content >= minimum.content
67
+ && self.content <= current.content
68
+ && self.backup >= minimum.backup
69
+ && self.backup <= current.backup
70
+ }
71
+ }
72
+
73
+ /// Format version descriptor written to durable files
74
+ #[derive(Clone, Debug, Serialize, Deserialize)]
75
+ pub struct VersionManifest {
76
+ /// Timestamp when this version was written
77
+ pub written_at_ms: u64,
78
+ /// State log format version
79
+ pub state_log_version: u32,
80
+ /// Checkpoint format version
81
+ pub checkpoint_version: u32,
82
+ /// Protocol version
83
+ pub protocol_version: u32,
84
+ /// Membership format version
85
+ pub membership_version: u32,
86
+ /// Lease format version
87
+ pub lease_version: u32,
88
+ /// Content format version
89
+ pub content_version: u32,
90
+ }
91
+
92
+ impl VersionManifest {
93
+ pub fn current() -> Self {
94
+ let versions = FormatVersions::current();
95
+ Self {
96
+ written_at_ms: std::time::SystemTime::now()
97
+ .duration_since(std::time::UNIX_EPOCH)
98
+ .unwrap_or_default()
99
+ .as_millis() as u64,
100
+ state_log_version: versions.state_log,
101
+ checkpoint_version: versions.checkpoint,
102
+ protocol_version: versions.protocol,
103
+ membership_version: versions.membership,
104
+ lease_version: versions.leases,
105
+ content_version: versions.content,
106
+ }
107
+ }
108
+
109
+ pub fn to_format_versions(&self) -> FormatVersions {
110
+ FormatVersions {
111
+ state_log: self.state_log_version,
112
+ checkpoint: self.checkpoint_version,
113
+ protocol: self.protocol_version,
114
+ membership: self.membership_version,
115
+ leases: self.lease_version,
116
+ content: self.content_version,
117
+ backup: 1, // Backup format is managed separately
118
+ }
119
+ }
120
+ }
121
+
122
+ /// Migration error
123
+ #[derive(Clone, Debug)]
124
+ pub struct MigrationError {
125
+ pub from_version: u32,
126
+ pub to_version: u32,
127
+ pub component: &'static str,
128
+ pub message: String,
129
+ }
130
+
131
+ impl fmt::Display for MigrationError {
132
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
133
+ write!(
134
+ f,
135
+ "Migration failed for {}: {} -> {}: {}",
136
+ self.component, self.from_version, self.to_version, self.message
137
+ )
138
+ }
139
+ }
140
+
141
+ impl std::error::Error for MigrationError {}
142
+
143
+ /// Migration trait for component-specific upgrade/downgrade logic
144
+ pub trait Migration: Send + Sync {
145
+ /// Component name (e.g., "state_log", "checkpoint")
146
+ fn component(&self) -> &'static str;
147
+
148
+ /// Source version
149
+ fn from_version(&self) -> u32;
150
+
151
+ /// Target version
152
+ fn to_version(&self) -> u32;
153
+
154
+ /// Upgrade the data. Must be restartable.
155
+ fn migrate(&self, data: Vec<u8>) -> Result<Vec<u8>, MigrationError>;
156
+
157
+ /// Downgrade the data. Must be restartable.
158
+ fn downgrade(&self, data: Vec<u8>) -> Result<Vec<u8>, MigrationError>;
159
+ }
160
+
161
+ /// Migration registry
162
+ pub struct MigrationRegistry {
163
+ upgrades: std::collections::HashMap<(u32, u32), Box<dyn Migration>>,
164
+ downgrades: std::collections::HashMap<(u32, u32), Box<dyn Migration>>,
165
+ }
166
+
167
+ impl MigrationRegistry {
168
+ pub fn new() -> Self {
169
+ Self {
170
+ upgrades: std::collections::HashMap::new(),
171
+ downgrades: std::collections::HashMap::new(),
172
+ }
173
+ }
174
+
175
+ pub fn register_upgrade(&mut self, migration: Box<dyn Migration>) {
176
+ self.upgrades.insert(
177
+ (migration.from_version(), migration.to_version()),
178
+ migration,
179
+ );
180
+ }
181
+
182
+ pub fn register_downgrade(&mut self, migration: Box<dyn Migration>) {
183
+ self.downgrades.insert(
184
+ (migration.from_version(), migration.to_version()),
185
+ migration,
186
+ );
187
+ }
188
+
189
+ pub fn get_upgrade(&self, from: u32, to: u32) -> Option<&Box<dyn Migration>> {
190
+ self.upgrades.get(&(from, to))
191
+ }
192
+
193
+ pub fn get_downgrade(&self, from: u32, to: u32) -> Option<&Box<dyn Migration>> {
194
+ self.downgrades.get(&(from, to))
195
+ }
196
+ }
197
+
198
+ impl Default for MigrationRegistry {
199
+ fn default() -> Self {
200
+ Self::new()
201
+ }
202
+ }
203
+
204
+ /// Compatibility policy
205
+ pub const COMPATIBILITY_POLICY: &str = r#"
206
+ ## Format Compatibility Policy
207
+
208
+ FeltDB follows semantic versioning for format compatibility:
209
+
210
+ - **Major version bump** (e.g., 1 → 2): Incompatible format change. Requires migration.
211
+ - **Minor version increment within supported range**: Compatible enhancement. No migration required.
212
+
213
+ ### Support Matrix
214
+
215
+ - **Current version**: all formats at v1
216
+ - **Minimum supported version**: all formats at v1
217
+ - **Rolling upgrade support**: N → N+1 (one version forward)
218
+ - **Rollback support**: N+1 → N (one version backward, within minimum supported range)
219
+
220
+ ### Migration Guarantees
221
+
222
+ Every migration must satisfy:
223
+ 1. **Atomicity**: Format change is atomic (all-or-nothing)
224
+ 2. **Restartability**: Migration can be safely interrupted and restarted
225
+ 3. **Causal identity**: Operations retain their causal identity and vector clocks
226
+ 4. **Content hashing**: SHA-256 hashes of data remain verifiable
227
+ 5. **Idempotency**: Running the same migration twice produces identical results
228
+
229
+ ### Unsupported Format Transitions
230
+
231
+ - Versions below the minimum supported version are rejected before any mutation
232
+ - Multi-step jumps (e.g., v1 → v3) are not supported; use sequential migrations
233
+ - Concurrent format changes are serialized behind a lock
234
+ - Partial/interrupted migrations are detected and rolled back
235
+
236
+ ### Publishing Policy
237
+
238
+ Format version changes are announced in release notes with:
239
+ - Source and target versions for each component
240
+ - Migration time estimates for capacity envelopes
241
+ - Rollback procedures and recovery guidance
242
+ "#;
243
+
244
+ #[cfg(test)]
245
+ mod tests {
246
+ use super::*;
247
+
248
+ #[test]
249
+ fn test_version_compatibility() {
250
+ let current = FormatVersions::current();
251
+ let manifest = VersionManifest::current();
252
+ let stored = manifest.to_format_versions();
253
+
254
+ assert!(stored.is_supported(&current));
255
+ }
256
+
257
+ #[test]
258
+ fn test_minimum_supported() {
259
+ let current = FormatVersions::current();
260
+ let minimum = FormatVersions::minimum_supported();
261
+
262
+ assert!(minimum.is_supported(&current));
263
+ }
264
+ }
@@ -0,0 +1,31 @@
1
+ [package]
2
+ name = "feltdb-wasm"
3
+ version.workspace = true
4
+ edition.workspace = true
5
+
6
+ [lib]
7
+ crate-type = ["cdylib"]
8
+
9
+ [dependencies]
10
+ feltdb = { path = "../feltdb" }
11
+ wasm-bindgen = "0.2"
12
+ wasm-bindgen-futures = "0.4"
13
+ serde = { version = "1", features = ["derive"] }
14
+ serde_json = "1"
15
+ serde-wasm-bindgen = "0.4"
16
+ tokio = { version = "1", features = ["sync", "macros", "rt", "time"] }
17
+ js-sys = "0.3"
18
+ sha2 = "0.10"
19
+ web-sys = { version = "0.3", features = ["Window"] }
20
+
21
+ [target.'cfg(target_arch = "wasm32")'.dependencies]
22
+ getrandom = { version = "0.2", features = ["js"] }
23
+
24
+ [package.metadata.wasm]
25
+ name = "feltdb"
26
+
27
+ # CI and customer builds must not depend on downloading Binaryen from GitHub.
28
+ # Rust already emits an optimized release artifact; wasm-opt can be applied in
29
+ # a separately provisioned release environment when desired.
30
+ [package.metadata.wasm-pack.profile.release]
31
+ wasm-opt = false