weavatrix-rust 2.16.4

Protocol-independent Rust repository intelligence: typed evidence graphs for impact, architecture, APIs, Git, n8n, Dify, Agent catalogs, Mermaid, and Web3 ABI
Documentation
//! Bounded offline API and event-transport contract analysis.

use crate::engine::RepositoryState;
use crate::operations::{optional_str, optional_u64};
use blazingly_json::{Value, json};
use std::collections::{BTreeMap, BTreeSet};
use std::fs;
use std::path::{Component, Path};
use weavatrix_graph::{AttributeValue, EdgeKind, NodeKind};
use weavatrix_parse::{Language, Token, TokenKind, tokenize};

#[path = "brokers/amqp.rs"]
mod amqp;
mod arguments;
#[path = "brokers/aws.rs"]
mod aws;
#[path = "matching/bindings.rs"]
mod bindings;
#[path = "scan/detection.rs"]
mod detection;
#[path = "runtime/event.rs"]
mod event;
#[path = "scan/fallback.rs"]
mod fallback;
#[path = "http/contracts.rs"]
mod http;
#[path = "http/evidence.rs"]
mod http_evidence;
#[path = "http/route.rs"]
mod http_route;
#[path = "brokers/jms.rs"]
mod jms;
#[path = "brokers/kafka.rs"]
mod kafka;
#[path = "matching/evaluate.rs"]
mod matching;
mod model;
#[path = "brokers/nats.rs"]
mod nats;
#[path = "runtime/load.rs"]
mod runtime;
#[path = "runtime/normalization.rs"]
mod runtime_normalization;
#[path = "scan/walk.rs"]
mod scan;
#[path = "scan/syntax.rs"]
mod syntax;
mod time;
#[path = "matching/typed.rs"]
mod typed;
#[path = "matching/typed_matching.rs"]
mod typed_matching;

use amqp::detect_amqp;
use arguments::{
    DEFAULT_MAX_FILE_BYTES, DEFAULT_MAX_FILES, DEFAULT_MAX_OBSERVATIONS, DEFAULT_PER_CONTRACT,
    DEFAULT_RUNTIME_REPORTS, MAX_MAX_FILE_BYTES, MAX_MAX_FILES, MAX_MAX_OBSERVATIONS,
    MAX_PER_CONTRACT, MAX_RUNTIME_OBSERVATIONS, MAX_RUNTIME_REPORT_BYTES, RUNTIME_SCHEMA,
    bounded_u64, bounded_usize,
};
use aws::{destination_entity, detect_aws};
use bindings::{bindings_none, remember_binding, remember_transport_origin};
use detection::{detect, is_import_keyword, propagate_assignment_binding, provider_text_matches};
use fallback::{add_graph_fallbacks, observation_identity};
use jms::detect_jms;
use kafka::detect_kafka;
use matching::{Evaluation, evaluate};
use model::{
    Bindings, Call, Certainty, ContractKey, Detection, Entity, Observation, ProviderHints, Role,
    ScanSummary, SourceScan, Transport,
};
use nats::detect_nats;
use runtime::{RuntimeAggregate, load_and_merge_runtime};
use runtime_normalization::{
    normalize_runtime_observation, otlp_event_observations, safe_repository_path,
};
use scan::{ScanLimits, language_for_path, scan_repository};
use syntax::{
    argument_segments, assigned_variable, call_chain, call_name_index, first_value, literal_value,
    matching_close, non_empty_resources, positional_identifier, positional_values, property,
    receiver_name, resource_values, source_line,
};
use time::timestamp_millis;
use typed_matching::{
    typed_client_relations, typed_diagnostics, typed_evidence, typed_identity, typed_key,
    typed_mismatch_kind, typed_nodes,
};

pub(super) use event::event_contracts;
pub(super) use http::http_contracts;
pub(super) use typed::{empty_typed_contracts, typed_api_contracts};

#[cfg(test)]
#[path = "../../../tests/support/transport_fixture.rs"]
mod transport_fixture;

#[cfg(test)]
mod tests;