[package]
edition = "2021"
rust-version = "1.92"
name = "fraiseql-core"
version = "2.2.0"
authors = ["FraiseQL Team <team@fraiseql.dev>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Core execution engine for FraiseQL v2 - Compiled GraphQL over SQL"
homepage = "https://fraiseql.dev"
documentation = "https://docs.fraiseql.dev"
readme = "README.md"
keywords = [
"graphql",
"database",
"compiler",
"sql",
]
categories = [
"database",
"web-programming",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/fraiseql/fraiseql"
[features]
arrow = [
"dep:arrow",
"dep:arrow-array",
]
audit-syslog = ["dep:hostname"]
audit-webhook = []
default = ["postgres"]
dhat-heap = ["dhat"]
federation = ["dep:fraiseql-federation"]
grpc = ["fraiseql-db/grpc"]
jwt-replay = ["redis"]
kafka = ["rdkafka"]
mysql = ["fraiseql-db/mysql"]
postgres = ["fraiseql-db/postgres"]
redis-apq = ["redis"]
schema-lint = []
sqlite = ["fraiseql-db/sqlite"]
sqlserver = ["fraiseql-db/sqlserver"]
test-mysql = [
"mysql",
"fraiseql-db/test-mysql",
]
test-postgres = ["fraiseql-db/test-postgres"]
test-sqlserver = [
"sqlserver",
"fraiseql-db/test-sqlserver",
]
test-utils = []
wire-backend = ["fraiseql-db/wire-backend"]
[lib]
name = "fraiseql_core"
path = "src/lib.rs"
[[test]]
name = "auth_sdk_integration"
path = "tests/auth_sdk_integration.rs"
[[test]]
name = "cache_key_properties"
path = "tests/cache_key_properties.rs"
[[test]]
name = "cache_rls_isolation_test"
path = "tests/cache_rls_isolation_test.rs"
[[test]]
name = "concurrency_cache"
path = "tests/concurrency_cache.rs"
[[test]]
name = "concurrency_cancellation"
path = "tests/concurrency_cancellation.rs"
[[test]]
name = "concurrency_query_execution"
path = "tests/concurrency_query_execution.rs"
[[test]]
name = "concurrent_load_testing"
path = "tests/concurrent_load_testing.rs"
[[test]]
name = "custom_scalar_coercion"
path = "tests/custom_scalar_coercion.rs"
[[test]]
name = "custom_scalar_json"
path = "tests/custom_scalar_json.rs"
[[test]]
name = "deprecated_field_introspection"
path = "tests/deprecated_field_introspection.rs"
[[test]]
name = "design_analysis_tests"
path = "tests/design_analysis_tests.rs"
[[test]]
name = "e2e_aggregate_queries"
path = "tests/e2e_aggregate_queries.rs"
[[test]]
name = "e2e_cross_database_chain"
path = "tests/e2e_cross_database_chain.rs"
required-features = ["federation"]
[[test]]
name = "e2e_python_authoring"
path = "tests/e2e_python_authoring.rs"
required-features = ["federation"]
[[test]]
name = "e2e_query_execution"
path = "tests/e2e_query_execution.rs"
[[test]]
name = "e2e_typescript_authoring"
path = "tests/e2e_typescript_authoring.rs"
required-features = ["federation"]
[[test]]
name = "e2e_window_functions"
path = "tests/e2e_window_functions.rs"
[[test]]
name = "elo_rust_integration"
path = "tests/elo_rust_integration.rs"
[[test]]
name = "error_cache_failures"
path = "tests/error_cache_failures.rs"
[[test]]
name = "error_database_failures"
path = "tests/error_database_failures.rs"
[[test]]
name = "error_input_edge_cases"
path = "tests/error_input_edge_cases.rs"
[[test]]
name = "error_real_cache"
path = "tests/error_real_cache.rs"
[[test]]
name = "error_real_database"
path = "tests/error_real_database.rs"
[[test]]
name = "error_recovery"
path = "tests/error_recovery.rs"
[[test]]
name = "federation"
path = "tests/federation.rs"
required-features = ["federation"]
[[test]]
name = "federation_compliance"
path = "tests/federation_compliance.rs"
required-features = ["federation"]
[[test]]
name = "federation_composition_validation"
path = "tests/federation_composition_validation.rs"
required-features = ["federation"]
[[test]]
name = "federation_dependency_graph"
path = "tests/federation_dependency_graph.rs"
required-features = ["federation"]
[[test]]
name = "federation_directives"
path = "tests/federation_directives.rs"
required-features = ["federation"]
[[test]]
name = "federation_entity_resolver"
path = "tests/federation_entity_resolver.rs"
required-features = ["federation"]
[[test]]
name = "federation_field_directives"
path = "tests/federation_field_directives.rs"
required-features = ["federation"]
[[test]]
name = "federation_http_requires_runtime"
path = "tests/federation_http_requires_runtime.rs"
required-features = ["federation"]
[[test]]
name = "federation_multi_subgraph"
path = "tests/federation_multi_subgraph.rs"
required-features = ["federation"]
[[test]]
name = "federation_mutation_http"
path = "tests/federation_mutation_http.rs"
required-features = ["federation"]
[[test]]
name = "federation_observability_integration"
path = "tests/federation_observability_integration.rs"
required-features = ["federation"]
[[test]]
name = "federation_observability_perf"
path = "tests/federation_observability_perf.rs"
required-features = ["federation"]
[[test]]
name = "federation_provides_enforcement"
path = "tests/federation_provides_enforcement.rs"
required-features = ["federation"]
[[test]]
name = "federation_requires_provides_enforcement"
path = "tests/federation_requires_provides_enforcement.rs"
required-features = ["federation"]
[[test]]
name = "federation_saga_observability"
path = "tests/federation_saga_observability.rs"
required-features = ["federation"]
[[test]]
name = "federation_saga_real"
path = "tests/federation_saga_real.rs"
required-features = ["federation"]
[[test]]
name = "federation_scenarios"
path = "tests/federation_scenarios.rs"
required-features = ["federation"]
[[test]]
name = "golden_fixtures_test"
path = "tests/golden_fixtures_test.rs"
[[test]]
name = "integration"
path = "tests/integration.rs"
[[test]]
name = "interface_implementation"
path = "tests/interface_implementation.rs"
[[test]]
name = "introspection_validation_rules"
path = "tests/introspection_validation_rules.rs"
[[test]]
name = "ltree_edge_cases"
path = "tests/ltree_edge_cases.rs"
[[test]]
name = "ltree_validation"
path = "tests/ltree_validation.rs"
[[test]]
name = "mutant_targeted_cache_key"
path = "tests/mutant_targeted_cache_key.rs"
[[test]]
name = "mutation_arguments"
path = "tests/mutation_arguments.rs"
[[test]]
name = "mutation_execution_test"
path = "tests/mutation_execution_test.rs"
[[test]]
name = "mutation_nullability"
path = "tests/mutation_nullability.rs"
[[test]]
name = "mutation_operation_dispatch"
path = "tests/mutation_operation_dispatch.rs"
[[test]]
name = "mutation_typename_integration"
path = "tests/mutation_typename_integration.rs"
[[test]]
name = "oidc_audience_validation_test"
path = "tests/oidc_audience_validation_test.rs"
[[test]]
name = "pipeline_cache_invalidation_test"
path = "tests/pipeline_cache_invalidation_test.rs"
[[test]]
name = "pipeline_inject_params_test"
path = "tests/pipeline_inject_params_test.rs"
[[test]]
name = "pipeline_mutation_error_type_test"
path = "tests/pipeline_mutation_error_type_test.rs"
[[test]]
name = "pipeline_mutation_execution_test"
path = "tests/pipeline_mutation_execution_test.rs"
[[test]]
name = "projection_integration"
path = "tests/projection_integration.rs"
[[test]]
name = "property"
path = "tests/property.rs"
[[test]]
name = "query_optimization_validation_test"
path = "tests/query_optimization_validation_test.rs"
[[test]]
name = "query_validation_integration_test"
path = "tests/query_validation_integration_test.rs"
[[test]]
name = "schema_integration_test"
path = "tests/schema_integration_test.rs"
[[test]]
name = "schema_migration_test"
path = "tests/schema_migration_test.rs"
[[test]]
name = "security"
path = "tests/security.rs"
[[test]]
name = "sql_behavioral"
path = "tests/sql_behavioral.rs"
[[test]]
name = "sql_snapshots"
path = "tests/sql_snapshots.rs"
[[test]]
name = "union_type_projection"
path = "tests/union_type_projection.rs"
[[test]]
name = "validation_audit_logging"
path = "tests/validation_audit_logging.rs"
[[test]]
name = "validation_error_paths"
path = "tests/validation_error_paths.rs"
[[test]]
name = "validation_rate_limiting"
path = "tests/validation_rate_limiting.rs"
[[test]]
name = "where_array_edge_cases"
path = "tests/where_array_edge_cases.rs"
[[test]]
name = "where_case_sensitivity"
path = "tests/where_case_sensitivity.rs"
[[test]]
name = "where_deep_nesting"
path = "tests/where_deep_nesting.rs"
[[test]]
name = "where_null_logic"
path = "tests/where_null_logic.rs"
[[test]]
name = "window_function_snapshots"
path = "tests/window_function_snapshots.rs"
[[test]]
name = "wire_conn_test"
path = "tests/wire_conn_test.rs"
[[test]]
name = "wire_direct_test"
path = "tests/wire_direct_test.rs"
[[test]]
name = "wire_view_query_test"
path = "tests/wire_view_query_test.rs"
[[bench]]
name = "adapter_comparison"
path = "benches/adapter_comparison.rs"
harness = false
required-features = ["postgres"]
[[bench]]
name = "cache"
path = "benches/cache.rs"
harness = false
[[bench]]
name = "cache_concurrent_bench"
path = "benches/cache_concurrent_bench.rs"
harness = false
[[bench]]
name = "design_analysis"
path = "benches/design_analysis.rs"
harness = false
required-features = ["schema-lint"]
[[bench]]
name = "federation_bench"
path = "benches/federation_bench.rs"
harness = false
required-features = ["federation"]
[[bench]]
name = "full_pipeline_comparison"
path = "benches/full_pipeline_comparison.rs"
harness = false
required-features = ["postgres"]
[[bench]]
name = "graphql_parse"
path = "benches/graphql_parse.rs"
harness = false
[[bench]]
name = "memory_profile"
path = "benches/memory_profile.rs"
harness = true
required-features = ["dhat-heap"]
[[bench]]
name = "saga_performance_bench"
path = "benches/saga_performance_bench.rs"
[[bench]]
name = "sql_projection_benchmark"
path = "benches/sql_projection_benchmark.rs"
harness = false
[dependencies.ahash]
version = "0.8"
[dependencies.arrow]
version = "57"
optional = true
[dependencies.arrow-array]
version = "57"
optional = true
[dependencies.async-trait]
version = "0.1"
[dependencies.base64]
version = "0.22"
[dependencies.bytes]
version = "1.0"
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.dashmap]
version = "6.0"
[dependencies.deadpool]
version = "0.12"
[dependencies.deadpool-postgres]
version = "0.14"
[dependencies.dhat]
version = "0.3"
optional = true
[dependencies.fraiseql-db]
version = "2.2.0"
default-features = false
[dependencies.fraiseql-error]
version = "2.2.0"
default-features = false
[dependencies.fraiseql-federation]
version = "2.2.0"
optional = true
[dependencies.futures]
version = "0.3"
[dependencies.graphql-parser]
version = "0.4"
[dependencies.hex]
version = "0.4"
[dependencies.hmac]
version = "0.12"
[dependencies.hostname]
version = "0.4"
optional = true
[dependencies.indexmap]
version = "2"
features = ["serde"]
[dependencies.itertools]
version = "0.14"
[dependencies.jsonwebtoken]
version = "10"
features = ["rust_crypto"]
[dependencies.linked-hash-map]
version = "0.5"
[dependencies.lru]
version = "0.16"
[dependencies.moka]
version = "0.12"
features = ["sync"]
default-features = false
[dependencies.parking_lot]
version = "0.12"
[dependencies.rand]
version = "0.8"
[dependencies.rdkafka]
version = "0.39"
features = ["tokio"]
optional = true
[dependencies.redis]
version = "1"
features = [
"aio",
"tokio-comp",
"connection-manager",
]
optional = true
[dependencies.regex]
version = "1.10"
[dependencies.reqwest]
version = "0.12"
features = [
"json",
"rustls-tls",
]
default-features = false
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.sha2]
version = "0.10"
[dependencies.subtle]
version = "2.5"
[dependencies.thiserror]
version = "2.0"
[dependencies.tokio]
version = "1.0"
features = [
"rt-multi-thread",
"macros",
"net",
"time",
"io-util",
"io-std",
"sync",
"signal",
"fs",
]
[dependencies.tokio-postgres]
version = "0.7"
features = [
"with-serde_json-1",
"with-uuid-1",
"with-chrono-0_4",
"with-serde_json-1",
]
[dependencies.tokio-util]
version = "0.7"
[dependencies.toml]
version = "0.8"
[dependencies.tracing]
version = "0.1"
[dependencies.uuid]
version = "1.21"
features = [
"v4",
"serde",
]
[dependencies.xxhash-rust]
version = "0.8"
features = ["xxh3"]
[dependencies.zeroize]
version = "1.8"
features = ["std"]
[dev-dependencies.criterion]
version = "0.5"
features = ["async_tokio"]
[dev-dependencies.fraiseql-wire]
version = "2.2.0"
[dev-dependencies.insta]
version = "1.38"
features = ["yaml"]
[dev-dependencies.moka]
version = "0.12"
features = ["sync"]
default-features = false
[dev-dependencies.mutants]
version = "0.0.4"
[dev-dependencies.proptest]
version = "1.4"
[dev-dependencies.serial_test]
version = "3"
[dev-dependencies.sqlx]
version = "0.8"
features = [
"runtime-tokio",
"json",
"mysql",
]
[dev-dependencies.temp-env]
version = "0.3"
features = ["async_closure"]
[dev-dependencies.tempfile]
version = "3.25"
[dev-dependencies.testcontainers]
version = "0.27"
features = ["watchdog"]
[dev-dependencies.testcontainers-modules]
version = "0.15"
features = [
"postgres",
"mysql",
]
[dev-dependencies.tokio-test]
version = "0.4"
[dev-dependencies.wiremock]
version = "0.6"
[lints.clippy]
cargo_common_metadata = "allow"
if_not_else = "allow"
missing_errors_doc = "warn"
missing_panics_doc = "warn"
module_name_repetitions = "allow"
multiple_crate_versions = "allow"
must_use_candidate = "allow"
option_if_let_else = "allow"
or_fun_call = "allow"
redundant_closure_for_method_calls = "allow"
return_self_not_must_use = "allow"
significant_drop_tightening = "allow"
similar_names = "allow"
struct_excessive_bools = "allow"
too_many_lines = "allow"
uninlined_format_args = "allow"
unnecessary_wraps = "allow"
unused_async = "allow"
unused_enumerate_index = "allow"
unused_self = "allow"
unwrap_used = "deny"
use_self = "allow"
[lints.clippy.all]
level = "deny"
priority = -1
[lints.clippy.cargo]
level = "warn"
priority = -1
[lints.clippy.nursery]
level = "warn"
priority = -1
[lints.clippy.pedantic]
level = "deny"
priority = -1
[lints.rust]
dead_code = "deny"
missing_docs = "deny"
unsafe_code = "forbid"
unused_imports = "warn"
unused_variables = "warn"