mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-13 09:20:56 -06:00
A new standalone crate, vectorcraft-apischema, describes a command's parameters: type (number with range and unit, integer, boolean, string, enum, id, id list, color, point, object, array), whether each is required, the default of an omitted value, whether null counts as omitted, the API levels it was added and deprecated at, and the lenient, cost and writes fields. It validates a params object and names the parameter of the first problem, writes the params text, writes the schema in the shape of a JSON Schema 2020-12 object schema, and hashes a set of schemas. CommandSpec gains an optional schema (both builders: the cmd! macro and the text style specs). Session::execute checks the params of a command that has one before anything else, refusing a value of the wrong type, out of range or not in its list, a missing parameter or an unknown key with an error naming the parameter, and fills in defaults; the journal keeps the params as given. engine.commands lists each schema. The six commands in cmd/views.rs have schemas, and their params text is the text the schema writes. schemas::API_VERSION is 1, and a test fails when a schema changes without a new row in SCHEMA_HASHES. Docs: docs/mcp.md (Parameter schemas), docs/target-app-parity.md.
71 lines
2.7 KiB
TOML
71 lines
2.7 KiB
TOML
[package]
|
|
name = "vectorcraft-engine"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
description = "VectorCraft engine: sessions, history, selection, the command registry"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[features]
|
|
default = ["bundled-fonts"]
|
|
# The fonts vectorcraft-text bundles (see its `bundled-fonts`). Embedders that supply every font at
|
|
# run time (`vectorcraft_text::FontDb::add_font`) build with `default-features = false`.
|
|
bundled-fonts = ["vectorcraft-text/bundled-fonts"]
|
|
|
|
[dependencies]
|
|
# Which paths stored in documents may be opened.
|
|
craft-docpath = { workspace = true }
|
|
vectorcraft-geom = { workspace = true }
|
|
vectorcraft-color = { workspace = true }
|
|
vectorcraft-doc = { workspace = true }
|
|
vectorcraft-tools = { workspace = true }
|
|
vectorcraft-text = { workspace = true }
|
|
vectorcraft-render = { workspace = true }
|
|
vectorcraft-pathops = { workspace = true }
|
|
vectorcraft-brush = { workspace = true }
|
|
vectorcraft-trace = { workspace = true }
|
|
vectorcraft-svg = { workspace = true }
|
|
vectorcraft-format = { workspace = true }
|
|
vectorcraft-pdf = { workspace = true }
|
|
vectorcraft-cad = { workspace = true }
|
|
vectorcraft-eps = { workspace = true }
|
|
vectorcraft-metafile = { workspace = true }
|
|
vectorcraft-plugins = { workspace = true }
|
|
vectorcraft-affinity = { workspace = true }
|
|
vectorcraft-scriptcheck = { workspace = true }
|
|
# The commands' parameter schemas (schemas.rs).
|
|
vectorcraft-apischema = { workspace = true }
|
|
image = { workspace = true }
|
|
hayro-jpeg2000 = { version = "=0.3.5", default-features = false, features = ["std", "simd"] }
|
|
flate2 = { workspace = true }
|
|
chrono = { workspace = true }
|
|
# The XML parts of Word documents placed as type (place/docx.rs).
|
|
roxmltree = "0.21"
|
|
# The compound file that holds a Word 97-2003 document placed as type (place/doc.rs).
|
|
cfb = "0.15"
|
|
kurbo = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
log = { workspace = true }
|
|
|
|
# Whether a recovery area folder is this account's own (`FolderStore::own_area`). Already in
|
|
# Cargo.lock (tempfile, ui-egui), so this adds no new crate.
|
|
[target.'cfg(unix)'.dependencies]
|
|
rustix = { workspace = true, features = ["std", "process"] }
|
|
|
|
[dev-dependencies]
|
|
vectorcraft-affinity = { workspace = true, features = ["synth"] }
|
|
crc32fast = { workspace = true }
|
|
vectorcraft-testkit = { workspace = true }
|
|
proptest = { workspace = true }
|
|
# A variable font built in code (no font file is committed).
|
|
vectorcraft-text = { workspace = true, features = ["test-fonts"] }
|
|
# How many times an open reads a PDF.
|
|
vectorcraft-pdf = { workspace = true, features = ["read-count"] }
|
|
wat = { workspace = true }
|
|
# Zstandard streams for the Illustrator editing data fuzz tests.
|
|
ruzstd = { workspace = true }
|