grafbase_sdk/
lib.rs

1#![doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/README.md"))]
2#![deny(missing_docs)]
3
4mod cbor;
5mod component;
6#[doc(hidden)]
7pub mod extension;
8pub mod host;
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::{
18    authorization::IntoQueryAuthorization, resolver::Subscription, AuthenticationExtension, AuthorizationExtension,
19    ResolverExtension,
20};
21pub use grafbase_sdk_derive::{AuthenticationExtension, AuthorizationExtension, ResolverExtension};
22pub use host::{GatewayHeaders, SubgraphHeaders};
23pub use types::{Error, ErrorResponse, Token};
24pub use wit::{NatsAuth, NatsStreamDeliverPolicy};
25
26use component::Component;
27
28#[cfg(target_arch = "wasm32")]
29#[unsafe(link_section = "sdk:minimum-gateway-version")]
30#[doc(hidden)]
31pub static MINIMUM_GATEWAY_VERSION: [u8; 6] =
32    *include_bytes!(concat!(env!("OUT_DIR"), "/minimum_gateway_version_bytes"));
33
34#[cfg(target_arch = "wasm32")]
35#[unsafe(link_section = "sdk:version")]
36#[doc(hidden)]
37pub static SDK_VERSION: [u8; 6] = *include_bytes!(concat!(env!("OUT_DIR"), "/sdk_version_bytes"));
38
39#[doc(hidden)]
40mod wit {
41    #![expect(missing_docs)]
42
43    wit_bindgen::generate!({
44        skip: ["register-extension"],
45        path: "./wit/since_0_10_0/",
46        world: "sdk",
47    });
48
49    pub use exports::grafbase::sdk::authentication::{Guest as AuthenticationGuest, Token};
50    pub use exports::grafbase::sdk::authorization::{
51        AuthorizationDecisions, AuthorizationDecisionsDenySome, Guest as AuthorizationGuest,
52    };
53    pub use exports::grafbase::sdk::init::Guest as InitGuest;
54    pub use exports::grafbase::sdk::resolver::{FieldOutput, Guest as ResolverGuest};
55
56    pub use grafbase::sdk::access_log::*;
57    pub use grafbase::sdk::cache::*;
58    pub use grafbase::sdk::directive::*;
59    pub use grafbase::sdk::error::*;
60    pub use grafbase::sdk::headers::*;
61    pub use grafbase::sdk::http_client::*;
62    pub use grafbase::sdk::nats_client::*;
63}
64
65wit::export!(Component with_types_in wit);
66
67mod sealed {
68    pub trait Sealed {}
69}