diff --git a/Cargo.lock b/Cargo.lock index 873d928..fd09463 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,6 +111,18 @@ dependencies = [ "syn", ] +[[package]] +name = "auditable-serde" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7bf8143dfc3c0258df908843e169b5cc5fcf76c7718bd66135ef4a9cd558c5" +dependencies = [ + "semver", + "serde", + "serde_json", + "topological-sort", +] + [[package]] name = "autocfg" version = "1.4.0" @@ -387,6 +399,7 @@ dependencies = [ "async-trait", "futures", "wasm-encoder 0.235.0", + "wasm-metadata", "wasmparser 0.235.0", ] @@ -720,6 +733,16 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "flate2" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + [[package]] name = "foldhash" version = "0.1.4" @@ -1687,6 +1710,15 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "spdx" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e17e880bafaeb362a7b751ec46bdc5b61445a188f80e0606e68167cd540fa3" +dependencies = [ + "smallvec", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -1888,6 +1920,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" +[[package]] +name = "topological-sort" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea68304e134ecd095ac6c3574494fc62b909f416c4fca77e440530221e549d3d" + [[package]] name = "tracing" version = "0.1.41" @@ -2093,7 +2131,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b055604ba04189d54b8c0ab2c2fc98848f208e103882d5c0b984f045d5ea4d20" dependencies = [ "anyhow", + "auditable-serde", + "flate2", "indexmap", + "serde", + "serde_derive", + "serde_json", + "spdx", + "url", "wasm-encoder 0.235.0", "wasmparser 0.235.0", ] diff --git a/Cargo.toml b/Cargo.toml index f9f4adf..c39c789 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,3 +37,4 @@ wasmtime-wasi = "34.0.1" wasmtime-wasi-http = "34.0.1" wat = "1.235.0" wit-bindgen = "0.43.0" +wasm-metadata = "0.235.0" diff --git a/transform/Cargo.toml b/transform/Cargo.toml index ba4aca9..96f88df 100644 --- a/transform/Cargo.toml +++ b/transform/Cargo.toml @@ -11,3 +11,4 @@ async-trait.workspace = true futures.workspace = true wasm-encoder.workspace = true wasmparser.workspace = true +wasm-metadata.workspace = true diff --git a/transform/src/lib.rs b/transform/src/lib.rs index df30313..7f70551 100644 --- a/transform/src/lib.rs +++ b/transform/src/lib.rs @@ -849,6 +849,14 @@ fn apply( let initialized_component = initialized_component.finish(); + let mut add = wasm_metadata::AddMetadata::default(); + add.processed_by = vec![( + "component-init-transform".to_owned(), + env!("CARGO_PKG_VERSION").to_owned(), + )]; + + let initialized_component = add.to_wasm(&initialized_component)?; + Validator::new().validate_all(&initialized_component)?; Ok(initialized_component)