Files
inbuxa-server/tools/sieve-playground/Cargo.toml
T
jcoffey-dev 136fc2540b
ci / fork-checks (pull_request) Skipped
ci / build (pull_request) Skipped
github/ci (branch) GitHub Actions
ci / github (pull_request) Successful in 7m45s
Sieve playground: the server's interpreter in the browser
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.
2026-10-09 01:13:53 -07:00

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" }