#![deny(unused_crate_dependencies)]
pub mod config;
pub mod defaults;
pub mod graphql;
pub mod manifest;
pub mod utils;
use proc_macro2::TokenStream;
use quote::quote;
use sha2::{Digest, Sha256};
pub const MAX_ARRAY_LENGTH: usize = 2500;
#[derive(Default, Clone, Debug)]
pub enum ExecutionSource {
Native,
#[default]
Wasm,
}
impl ExecutionSource {
pub fn async_awaitness(&self) -> (TokenStream, TokenStream) {
match self {
Self::Native => (quote! {async}, quote! {.await}),
Self::Wasm => (quote! {}, quote! {}),
}
}
}
pub fn type_id(namespace: &str, name: &str) -> i64 {
let mut bytes = [0u8; 8];
let digest = Sha256::digest(format!("{name}:{namespace}").as_bytes());
bytes[..8].copy_from_slice(&digest[..8]);
i64::from_be_bytes(bytes)
}
pub fn fully_qualified_namespace(namespace: &str, identifier: &str) -> String {
format!("{}_{}", namespace, identifier)
}