grafbase_sdk/
lib.rs

1#![doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/README.md"))]
2#![deny(missing_docs)]
3#![expect(unsafe_op_in_unsafe_fn)]
4
5mod cbor;
6mod component;
7#[doc(hidden)]
8pub mod extension;
9pub mod host_io;
10#[cfg(feature = "jq-selection")]
11pub mod jq_selection;
12#[cfg(feature = "test-utils")]
13pub mod test;
14pub mod types;
15
16pub use component::SdkError;
17pub use extension::{resolver::Subscription, Authenticator, Extension, Resolver};
18pub use grafbase_sdk_derive::{AuthenticationExtension, ResolverExtension};
19pub use types::{Error, ErrorResponse};
20pub use wit::{Headers, NatsAuth, NatsStreamDeliverPolicy, SharedContext};
21
22use component::Component;
23
24#[cfg(target_arch = "wasm32")]
25#[unsafe(link_section = "sdk:minimum-gateway-version")]
26#[doc(hidden)]
27pub static MINIMUM_GATEWAY_VERSION: [u8; 6] =
28    *include_bytes!(concat!(env!("OUT_DIR"), "/minimum_gateway_version_bytes"));
29
30#[cfg(target_arch = "wasm32")]
31#[unsafe(link_section = "sdk:version")]
32#[doc(hidden)]
33pub static SDK_VERSION: [u8; 6] = *include_bytes!(concat!(env!("OUT_DIR"), "/sdk_version_bytes"));
34
35#[doc(hidden)]
36mod wit {
37    #![expect(missing_docs)]
38
39    wit_bindgen::generate!({
40        skip: ["register-extension"],
41        path: "./wit/world.wit",
42        world: "sdk",
43    });
44
45    pub use exports::grafbase::sdk::extension::Guest;
46    pub use grafbase::sdk::directive::{
47        DirectiveSite, EnumDirectiveSite, FieldDefinitionDirective, FieldDefinitionDirectiveSite,
48        InterfaceDirectiveSite, ObjectDirectiveSite, QueryElement, QueryElements, ScalarDirectiveSite, SchemaDirective,
49        UnionDirectiveSite,
50    };
51    pub use grafbase::sdk::types::*;
52}
53
54wit::export!(Component with_types_in wit);