tools/sieve-playground builds the vendored sieve-rs 0.7.3 (vnd.inbuxa.* names included) to WebAssembly, with a static page around it, for inbuxa Admin's Debug button on a Sieve script: until now that button sent the script to an outside site whose interpreter knows only upstream's extension names, so any script that requires vnd.inbuxa.* failed to compile there. Ported from the playground in the upstream sieve-rs repository's web/ directory (commit 549a2d57f7), which targets sieve-rs 1.x: - run.rs and handler.rs drive 0.7's event loop the way the server's delivery does, carrying on after a runtime error; llm_prompt compiles and answers false, as on a server without a model. - The expression functions are the server's own modules, included by path; tests fail if the list, ApplyString or the few functions copied from misc.rs/unicode.rs stop matching crates/common. - Built for wasm32-wasip1 rather than with wasm-bindgen: sieve-rs and mail-builder read the clock, which panics on wasm32-unknown-unknown. The page's worker answers the six WASI calls, giving the module the playground's current-time setting. shim/gethostname stands in for a crate with no WASI build. Nothing in vendor/ or crates/ changes. - The page carries no upstream names or links; storage keys and the samples are renamed to match. build.sh --admin <dir> stages the result into an inbuxa-admin checkout.
44 lines
1.2 KiB
TOML
44 lines
1.2 KiB
TOML
# SPDX-FileCopyrightText: 2020 Stalwart Labs LLC <[email protected]>
|
|
# SPDX-FileCopyrightText: 2026 Coffey Labs LLC
|
|
#
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
#
|
|
# Modified by Coffey Labs in 2026 for INBUXA.
|
|
|
|
[package]
|
|
name = "sieve-playground"
|
|
description = "WebAssembly build of the server's Sieve interpreter, for the Sieve playground in inbuxa Admin"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
license = "AGPL-3.0-only"
|
|
publish = false
|
|
|
|
# Its own workspace: the server's never builds it, and it builds for
|
|
# wasm32-wasip1 (see build.sh).
|
|
[workspace]
|
|
|
|
[lib]
|
|
crate-type = ["cdylib", "rlib"]
|
|
|
|
[dependencies]
|
|
# The server's interpreter exactly: the vendored copy the root Cargo.toml
|
|
# patches in, renamed extensions included.
|
|
sieve-rs = { path = "../../vendor/sieve-rs" }
|
|
mail-parser = { version = "0.11", features = ["full_encoding"] }
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
# What the server's function modules (src/functions) use; hyper's Uri is
|
|
# http's, under the name the modules import it by.
|
|
http = "1"
|
|
idna = "1.1"
|
|
whatlang = "0.18"
|
|
|
|
[profile.release]
|
|
opt-level = "z"
|
|
lto = true
|
|
codegen-units = 1
|
|
panic = "abort"
|
|
|
|
[patch.crates-io]
|
|
gethostname = { path = "shim/gethostname" }
|