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;
10pub mod host_io;
11#[cfg(feature = "jq-selection")]
12pub mod jq_selection;
13#[cfg(feature = "test-utils")]
14pub mod test;
15pub mod types;
16
17pub use component::SdkError;
18pub use extension::{
19    authorization::IntoQueryAuthorization, resolver::Subscription, AuthenticationExtension, AuthorizationExtension,
20    ResolverExtension,
21};
22pub use grafbase_sdk_derive::{AuthenticationExtension, AuthorizationExtension, ResolverExtension};
23pub use host::{AuthorizationContext, Headers};
24pub use types::{Error, ErrorResponse, Token};
25pub use wit::{NatsAuth, NatsStreamDeliverPolicy, SharedContext};
26
27use component::Component;
28
29#[cfg(target_arch = "wasm32")]
30#[unsafe(link_section = "sdk:minimum-gateway-version")]
31#[doc(hidden)]
32pub static MINIMUM_GATEWAY_VERSION: [u8; 6] =
33    *include_bytes!(concat!(env!("OUT_DIR"), "/minimum_gateway_version_bytes"));
34
35#[cfg(target_arch = "wasm32")]
36#[unsafe(link_section = "sdk:version")]
37#[doc(hidden)]
38pub static SDK_VERSION: [u8; 6] = *include_bytes!(concat!(env!("OUT_DIR"), "/sdk_version_bytes"));
39
40#[doc(hidden)]
41mod wit {
42    #![expect(missing_docs)]
43
44    wit_bindgen::generate!({
45        skip: ["register-extension"],
46        path: "./wit/since_0_9_0/",
47        world: "sdk",
48    });
49
50    pub use exports::grafbase::sdk::authentication::{Guest as AuthenticationGuest, Token};
51    pub use exports::grafbase::sdk::authorization::{
52        AuthorizationDecisions, AuthorizationDecisionsDenySome, Guest as AuthorizationGuest,
53    };
54    pub use exports::grafbase::sdk::init::Guest as InitGuest;
55    pub use exports::grafbase::sdk::resolver::{FieldOutput, Guest as ResolverGuest};
56
57    pub use grafbase::sdk::access_log::*;
58    pub use grafbase::sdk::cache::*;
59    pub use grafbase::sdk::context::{AuthorizationContext, SharedContext};
60    pub use grafbase::sdk::directive::{
61        DirectiveSite, EnumDirectiveSite, FieldDefinitionDirective, FieldDefinitionDirectiveSite,
62        InterfaceDirectiveSite, ObjectDirectiveSite, QueryElement, QueryElements, ResponseElement, ResponseElements,
63        ScalarDirectiveSite, SchemaDirective, UnionDirectiveSite,
64    };
65    pub use grafbase::sdk::error::*;
66    pub use grafbase::sdk::headers::*;
67    pub use grafbase::sdk::http_client::*;
68    pub use grafbase::sdk::nats_client::*;
69}
70
71wit::export!(Component with_types_in wit);
72
73mod sealed {
74    pub trait Sealed {}
75}