Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
ff0fec4
Implements a provider-neutral KV store interface with support for Axu…
Feb 15, 2026
b1aff0c
Fixes formatting issues detected by CI check, primarily in app-demo h…
Feb 15, 2026
fc69ee2
Fix clippy lints
Feb 15, 2026
5ac528c
feat: Enforce KV key, value, and TTL limits with new validation logic…
Feb 16, 2026
857b2cd
test: Directly instantiate MemoryKvStore in tests to bypass minimum T…
Feb 16, 2026
a133876
Axum adapter now uses a persistent redb database for local KV storage…
Feb 17, 2026
0fb3340
fix lint error
Feb 17, 2026
41d3398
Merge branch 'main' into feat/kv-store
aram356 Feb 21, 2026
dd1b831
Rename modules to and update related documentation and dependencies…
Feb 23, 2026
371b515
Use SystemTime instead of Instant in MockStore for WASM compatibility.
Feb 24, 2026
83e832f
Merge branch 'main' into feat/kv-store
Feb 27, 2026
e36dcaa
Update KV action return types to , refine KV error handling, and add …
Feb 27, 2026
676d0c7
Improve Cloudflare adapter HTTP method handling, update key-value st…
Feb 27, 2026
f968890
Rename KV store to , add bounded body draining, and simplify Cloudfl…
Mar 6, 2026
760da54
Remove list_keys api
Mar 10, 2026
586699d
Impl list_keys_page
Mar 11, 2026
463861f
Merge branch 'main' into feat/kv-store
aram356 Mar 11, 2026
c7b8b7b
harden kv startup semantics and verify wasm adapter targets
Mar 12, 2026
ec66a9e
Address review feedback on kv store feature
Mar 16, 2026
e3a7525
Fix lint and viceroy checks in the ci
Mar 16, 2026
8e4665c
Harden kv store for production reliability
Mar 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 12 additions & 3 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,14 @@ jobs:
with:
toolchain: ${{ steps.rust-version.outputs.rust-version }}

- name: Add wasm32-wasi target
run: rustup target add wasm32-wasip1
- name: Add wasm targets
run: rustup target add wasm32-wasip1 wasm32-unknown-unknown

- name: Setup Viceroy
run: cargo install viceroy --locked
run: |
if ! command -v viceroy &>/dev/null; then
cargo install viceroy --locked
fi

- name: Fetch dependencies (locked)
run: cargo fetch --locked
Expand All @@ -57,3 +60,9 @@ jobs:

- name: Check feature compilation
run: cargo check --workspace --all-targets --features "fastly cloudflare"

- name: Check Fastly wasm target
run: cargo check -p edgezero-adapter-fastly --features fastly --target wasm32-wasip1

- name: Check Cloudflare wasm target
run: cargo check -p edgezero-adapter-cloudflare --features cloudflare --target wasm32-unknown-unknown
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
# node
node_modules/

# compiled output
bin/
pkg/
target/
.wrangler/
.edgezero/

# env
.env
Expand Down
15 changes: 15 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ log = "0.4"
log-fastly = "0.11"
matchit = "0.9"
once_cell = "1"
redb = "3.1.0"
reqwest = { version = "0.13", default-features = false, features = ["rustls"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
Expand Down
23 changes: 20 additions & 3 deletions crates/edgezero-adapter-axum/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,26 @@ license = { workspace = true }

[features]
default = ["axum"]
axum = ["dep:axum", "dep:tokio", "dep:tower", "dep:futures-util", "dep:reqwest"]
cli = ["dep:edgezero-adapter", "edgezero-adapter/cli", "dep:ctor", "dep:toml", "dep:walkdir"]
axum = [
"dep:axum",
"dep:tokio",
"dep:tower",
"dep:futures-util",
"dep:reqwest",
"dep:redb",
]
cli = [
"dep:edgezero-adapter",
"edgezero-adapter/cli",
"dep:ctor",
"dep:toml",
"dep:walkdir",
]

[dependencies]
edgezero-adapter = { path = "../edgezero-adapter", optional = true, features = ["cli"] }
edgezero-adapter = { path = "../edgezero-adapter", optional = true, features = [
"cli",
] }
edgezero-core = { path = "../edgezero-core" }
anyhow = { workspace = true }
async-trait = { workspace = true }
Expand All @@ -22,6 +37,7 @@ futures = { workspace = true }
futures-util = { workspace = true, optional = true }
http = { workspace = true }
log = { workspace = true }
redb = { workspace = true, optional = true }
reqwest = { workspace = true, optional = true }
simple_logger = { workspace = true }
thiserror = { workspace = true }
Expand All @@ -34,5 +50,6 @@ walkdir = { workspace = true, optional = true }
[dev-dependencies]
async-trait = { workspace = true }
axum = { workspace = true, features = ["macros"] }
serde = { workspace = true }
tempfile = { workspace = true }
tokio = { workspace = true, features = ["macros", "rt", "rt-multi-thread"] }
Loading
Loading