1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
[]
= "evenframe_core"
= "0.3.2"
= "2024"
= ["Jakob Lochinski"]
= "MIT"
= "Core functionality for Evenframe - TypeScript type generation and database schema synchronization"
= "https://github.com/rymskip/evenframe"
= "https://docs.rs/evenframe_core"
= "../README.md"
= ["typescript", "codegen", "surrealdb", "schema", "types"]
= ["development-tools", "database"]
[]
# By default, no optional features are enabled. This compiles only the minimal
# core needed for derive macros: types, config, validators, wrappers, and the
# schemasync data types (DefineConfig, EdgeConfig, etc.). This is the fastest
# possible compile and is what evenframe_derive depends on.
= []
# Enables file-based debug logging via the `evenframe_log!` macro.
# Writes .log and .surql files to $ABSOLUTE_PATH_TO_EVENFRAME/evenframe/logs/
# (the system temp directory when the variable is unset).
# Not intended for production use.
= []
# ---------------------------------------------------------------------------
# Type synchronization (TypeScript / schema generation)
# ---------------------------------------------------------------------------
# Enables the core typesync module for generating TypeScript types from Rust
# structs. Includes ArkType and Effect-TS generators, file grouping, import
# resolution, and doc-comment support. The typesync config types are always
# compiled (used by EvenframeConfig), but the generators require this feature.
= []
# Enables Protocol Buffers (.proto) schema generation from Rust types.
# Pulls in the `protox` parser and `prost-types` for proto file handling.
# Implies: typesync
= ["typesync", "dep:protox", "dep:prost-types"]
# Enables FlatBuffers (.fbs) schema generation from Rust types.
# Pulls in the `logos` lexer generator for FlatBuffers parsing.
# Implies: typesync
= ["typesync", "dep:logos"]
# Enables Macroforge template-based TypeScript generation with JSDoc annotations.
# Pulls in the `macroforge_ts` template engine.
# Implies: typesync
= ["typesync", "dep:macroforge_ts"]
# Enables all typesync generators: ArkType, Effect-TS, Protocol Buffers,
# FlatBuffers, and Macroforge.
= ["typesync", "protobuf", "flatbuffers", "macroforge"]
# ---------------------------------------------------------------------------
# Schema synchronization (database operations)
# ---------------------------------------------------------------------------
# Enables the schemasync engine for comparing and synchronizing Rust struct
# definitions against a live SurrealDB database. Includes schema comparison,
# DEFINE statement generation, mock data field value generators, and the
# database execution pipeline.
# Implies: surrealdb
= ["surrealdb", "tempfile"]
# Enables full timezone support for mock data generation via the `chrono-tz`
# crate, providing access to the complete IANA timezone database. Without this
# feature, timezone fields fall back to a small hardcoded set (UTC, America/
# New_York, Europe/London, Asia/Tokyo).
# Implies: schemasync
= ["schemasync", "dep:chrono-tz"]
# Enables WASM plugin support for custom mock data generation logic.
# Pulls in the wasmtime runtime. Users opt in explicitly.
# Implies: schemasync
= ["schemasync", "dep:wasmtime"]
# Enables the complete schemasync pipeline with full mock data generation
# capabilities including timezone support.
= ["schemasync", "mockmake"]
# ---------------------------------------------------------------------------
# Database providers
# ---------------------------------------------------------------------------
# Enables SurrealDB as a database backend. Pulls in the full surrealdb client
# with in-memory (kv-mem) and HTTP protocol support. This is the heaviest
# single dependency in the tree (~200+ transitive crates).
= ["dep:surrealdb"]
# Enables the SQL database abstraction layer via sqlx. This is the base
# feature required by all SQL providers (postgres, mysql, sqlite). Includes
# the tokio runtime and rustls TLS support.
= ["dep:sqlx"]
# Enables PostgreSQL as a database backend via sqlx.
# Implies: sql
= ["sql", "sqlx?/postgres"]
# Enables MySQL/MariaDB as a database backend via sqlx.
# Implies: sql
= ["sql", "sqlx?/mysql"]
# Enables SQLite as a database backend via sqlx.
# Implies: sql
= ["sql", "sqlx?/sqlite"]
# Enables all SQL database backends (PostgreSQL, MySQL, SQLite).
= ["postgres", "mysql", "sqlite"]
# Enables every database provider (SurrealDB + all SQL backends).
= ["surrealdb", "sql-all"]
# ---------------------------------------------------------------------------
# Convenience bundles
# ---------------------------------------------------------------------------
# Enables every feature: all generators, full schemasync with mock data,
# and all database providers. Use this for CI or when you need everything.
= ["schemasync-full", "typesync-all", "all-providers"]
# The feature set used by the evenframe CLI binary. Enables full schemasync
# with mock data, all type generators, and SurrealDB (the primary provider
# for the CLI workflow). Does not include SQL providers.
= ["schemasync-full", "typesync-all", "surrealdb"]
[]
# workspace dependencies
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
# Database providers (optional based on features)
= { = "3.2.4", = ["kv-mem", "protocol-http"], = true }
= { = "0.9", = ["runtime-tokio", "tls-rustls"], = true }
= { = "3.27", = true }
# Always compiled (core)
= "0.1"
= "0.15.7"
= "1.0.107"
= "1.0.47"
= { = "1.0.229", = ["derive"] }
= "0.5.0"
= "0.4.45"
= { = "2.1.1", = ["from"] }
= "0.8.3"
= "0.3.34"
= "0.7.0"
= "2.0.20"
= { = "5.5.0", = ["serde"] }
= "0.2.0"
= "0.3.37"
= "1.21.4"
= "0.4.33"
= "1.12"
= "1.8"
# Always compiled (used in type definitions throughout)
= "3.10.1"
= "0.10.2"
= "0.6.0"
= { = "1.26", = ["v4", "serde"] }
# Optional: mockmake runtime dependencies
= { = "0.10.4", = true }
# Optional: WASM plugin runtime
= { = "48", = true }
# Optional: typesync parser dependencies
= { = "0.16", = true }
= { = "0.9", = true }
= { = "0.14", = true }
= { = "0.1.84", = true }
= { = "0.28.0", = ["derive"] }
[]
= "1.11"
= "0.15"
= "0.3"
= "3.27"
= "1.4"
= { = true }
= { = true }
= { = "../tests_macros" }