json_eval_rs/jsoneval/
mod.rs1
2use std::collections::HashMap;
3use std::sync::{Arc, Mutex};
4
5use crate::jsoneval::eval_cache::EvalCache;
6use crate::jsoneval::eval_data::EvalData;
7
8use crate::jsoneval::table_metadata::TableMetadata;
9
10use crate::rlogic::{
11 LogicId, RLogic,
12};
13use crate::jsoneval::types::DependentItem;
14
15use indexmap::{IndexMap, IndexSet};
16
17use serde_json::Value;
18
19pub mod cache;
20pub mod cancellation;
21pub mod dependents;
22pub mod eval_cache;
23pub mod eval_data;
24pub mod evaluate;
25pub mod getters;
26pub mod core;
27pub mod json_parser;
28pub mod layout;
29pub mod logic;
30pub mod parsed_schema;
31pub mod parsed_schema_cache;
32pub mod path_utils;
33pub mod subform_methods;
34pub mod table_evaluate;
35pub mod table_metadata;
36pub mod types;
37pub mod validation;
38
39pub struct JSONEval {
40 pub schema: Arc<Value>,
41 pub engine: Arc<RLogic>,
42 pub evaluations: Arc<IndexMap<String, LogicId>>,
43 pub tables: Arc<IndexMap<String, Value>>,
44 pub table_metadata: Arc<IndexMap<String, TableMetadata>>,
45 pub dependencies: Arc<IndexMap<String, IndexSet<String>>>,
46 pub sorted_evaluations: Arc<Vec<Vec<String>>>,
47 pub dependents_evaluations: Arc<IndexMap<String, Vec<DependentItem>>>,
48 pub rules_evaluations: Arc<Vec<String>>,
49 pub fields_with_rules: Arc<Vec<String>>,
50 pub others_evaluations: Arc<Vec<String>>,
51 pub value_evaluations: Arc<Vec<String>>,
52 pub layout_paths: Arc<Vec<String>>,
53 pub options_templates: Arc<Vec<(String, String, String)>>,
54 pub subforms: IndexMap<String, Box<JSONEval>>,
55
56 pub reffed_by: Arc<IndexMap<String, Vec<String>>>,
57
58 pub conditional_hidden_fields: Arc<Vec<String>>,
59 pub conditional_readonly_fields: Arc<Vec<String>>,
60
61 pub context: Value,
62 pub data: Value,
63 pub evaluated_schema: Value,
64 pub eval_data: EvalData,
65 pub eval_cache: EvalCache,
66 pub cache_enabled: bool,
67 pub(crate) eval_lock: Mutex<()>,
68 pub(crate) cached_msgpack_schema: Option<Vec<u8>>,
69 pub(crate) regex_cache: std::sync::RwLock<HashMap<String, regex::Regex>>,
70}