Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 13 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 11 additions & 6 deletions crates/component2json/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ A Rust library for converting WebAssembly Components to JSON Schema and handling

```rust
# fn main() -> Result<(), Box<dyn std::error::Error>> {
use component2json::{component_exports_to_json_schema, json_to_vals, vals_to_json, create_placeholder_results};
use component2json::{component_exports_to_json_schema, json_to_vals, vals_to_json, create_placeholder_results, ResourceHandleTable};
use wasmtime::component::{Component, Type, Val};
use wasmtime::Engine;

Expand All @@ -29,18 +29,21 @@ let func_param_types = vec![
("value".to_string(), Type::U32),
];

// Create a handle table for resource management
let mut handles = ResourceHandleTable::new();

// Convert a JSON object to WIT values according to the function's parameter types
let json_args = serde_json::json!({
"name": "example",
"value": 42
});
let wit_vals = json_to_vals(&json_args, &func_param_types)?;
let wit_vals = json_to_vals(&json_args, &func_param_types, &mut handles)?;

// Convert WIT values back to JSON
let json_result = vals_to_json(&wit_vals);
let json_result = vals_to_json(&wit_vals, &mut handles);
assert_eq!(json_result, serde_json::json!({"result": {"val0": "example", "val1": 42}}));

// Create placeholder results for function call results
// Create placeholder results for function call calls
// This is useful when you need to prepare storage for function return values
let result_types = vec![Type::String, Type::U32];
let placeholder_results = create_placeholder_results(&result_types);
Expand Down Expand Up @@ -184,9 +187,11 @@ The generated `outputSchema` for each tool mirrors this shape, ensuring downstre

##### Resources

Resources are represented as integer handles that reference live resource instances in a `ResourceHandleTable`:

```json
{
"type": "string",
"description": "RESOURCE_TYPE resource: RESOURCE_NAME"
"type": "integer",
"description": "Handle to owned/borrowed resource: RESOURCE_NAME"
}
```
Loading