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 spin:up/platform@3.4.0;
15        include wasi:keyvalue/imports@0.2.0-draft2;
16    }
17    "#,
18    path: "../../wit",
19    imports: { default: async | trappable },
20    exports: { default: async },
21    // The following is a roundabout way of saying "the host implementations for these interfaces don't trap"
22    trappable_error_type: {
23        "fermyon:spin/config/error" => v1::config::Error,
24        "fermyon:spin/http-types/http-error" => v1::http_types::HttpError,
25        "fermyon:spin/llm@2.0.0/error" => v2::llm::Error,
26        "fermyon:spin/llm/error" => v1::llm::Error,
27        "fermyon:spin/mqtt@2.0.0/error" => v2::mqtt::Error,
28        "fermyon:spin/mysql/mysql-error" => v1::mysql::MysqlError,
29        "fermyon:spin/postgres/pg-error" => v1::postgres::PgError,
30        "fermyon:spin/rdbms-types@2.0.0/error" => v2::rdbms_types::Error,
31        "fermyon:spin/redis-types/error" => v1::redis_types::Error,
32        "fermyon:spin/redis@2.0.0/error" => v2::redis::Error,
33        "fermyon:spin/sqlite@2.0.0/error" => v2::sqlite::Error,
34        "fermyon:spin/sqlite/error" => v1::sqlite::Error,
35        "fermyon:spin/variables@2.0.0/error" => v2::variables::Error,
36        "spin:postgres/postgres@3.0.0/error" => spin::postgres3_0_0::postgres::Error,
37        "spin:postgres/postgres@4.0.0/error" => spin::postgres4_0_0::postgres::Error,
38        "spin:sqlite/sqlite/error" => spin::sqlite::sqlite::Error,
39        "wasi:config/store@0.2.0-draft-2024-09-27/error" => wasi::config::store::Error,
40        "wasi:keyvalue/store/error" => wasi::keyvalue::store::Error,
41        "wasi:keyvalue/atomics/cas-error" => wasi::keyvalue::atomics::CasError,
42    },
43});
44
45pub use fermyon::spin as v1;
46pub use fermyon::spin2_0_0 as v2;
47
48mod conversions;