spin_world/
lib.rs

1#![allow(missing_docs)]
2#![allow(non_camel_case_types)] // bindgen emits Host_Pre and Host_Indices
3
4pub use async_trait::async_trait;
5
6wasmtime::component::bindgen!({
7    inline: r#"
8    package fermyon:runtime;
9    world host {
10        include fermyon:spin/host;
11        include fermyon:spin/platform@2.0.0;
12        include fermyon:spin/platform@3.0.0;
13        include spin:up/platform@3.2.0;
14        include wasi:keyvalue/imports@0.2.0-draft2;
15    }
16    "#,
17    path: "../../wit",
18    async: true,
19    // The following is a roundabout way of saying "the host implementations for these interfaces don't trap"
20    trappable_error_type: {
21        "fermyon:spin/config/error" => v1::config::Error,
22        "fermyon:spin/http-types/http-error" => v1::http_types::HttpError,
23        "fermyon:spin/llm@2.0.0/error" => v2::llm::Error,
24        "fermyon:spin/llm/error" => v1::llm::Error,
25        "fermyon:spin/mqtt@2.0.0/error" => v2::mqtt::Error,
26        "fermyon:spin/mysql/mysql-error" => v1::mysql::MysqlError,
27        "fermyon:spin/postgres/pg-error" => v1::postgres::PgError,
28        "fermyon:spin/rdbms-types@2.0.0/error" => v2::rdbms_types::Error,
29        "fermyon:spin/redis-types/error" => v1::redis_types::Error,
30        "fermyon:spin/redis@2.0.0/error" => v2::redis::Error,
31        "fermyon:spin/sqlite@2.0.0/error" => v2::sqlite::Error,
32        "fermyon:spin/sqlite/error" => v1::sqlite::Error,
33        "fermyon:spin/variables@2.0.0/error" => v2::variables::Error,
34        "spin:postgres/postgres/error" => spin::postgres::postgres::Error,
35        "spin:sqlite/sqlite/error" => spin::sqlite::sqlite::Error,
36        "wasi:config/store@0.2.0-draft-2024-09-27/error" => wasi::config::store::Error,
37        "wasi:keyvalue/store/error" => wasi::keyvalue::store::Error,
38        "wasi:keyvalue/atomics/cas-error" => wasi::keyvalue::atomics::CasError,
39    },
40    trappable_imports: true,
41});
42
43pub use fermyon::spin as v1;
44pub use fermyon::spin2_0_0 as v2;
45
46mod conversions;