wasm_manifest/lib.rs
1//! Manifest and lockfile format types for WebAssembly packages.
2//!
3//! This crate provides types for parsing and serializing WASM package manifests
4//! (`wasm.toml`) and lockfiles (`wasm.lock`).
5//!
6//! # Example: Parsing a Manifest
7//!
8//! ```rust
9//! use wasm_manifest::Manifest;
10//!
11//! let toml = r#"
12//! [interfaces]
13//! "wasi:logging" = "ghcr.io/webassembly/wasi-logging:1.0.0"
14//! "#;
15//!
16//! let manifest: Manifest = toml::from_str(toml).unwrap();
17//! ```
18//!
19//! # Example: Parsing a Lockfile
20//!
21//! ```rust
22//! use wasm_manifest::Lockfile;
23//!
24//! let toml = r#"
25//! lockfile_version = 2
26//!
27//! [[interfaces]]
28//! name = "wasi:logging"
29//! version = "1.0.0"
30//! registry = "ghcr.io/webassembly/wasi-logging"
31//! digest = "sha256:abc123"
32//! "#;
33//!
34//! let lockfile: Lockfile = toml::from_str(toml).unwrap();
35//! ```
36
37#![deny(unsafe_code)]
38#![deny(missing_debug_implementations)]
39#![warn(missing_docs)]
40
41mod lockfile;
42mod manifest;
43mod permissions;
44mod validation;
45
46pub use lockfile::{LOCKFILE_VERSION, Lockfile, Package, PackageDependency};
47pub use manifest::{Dependency, Manifest, PackageType};
48pub use permissions::{ResolvedPermissions, RunPermissions};
49pub use validation::{ValidationError, validate};