json_eval_rs/jsoneval/
mod.rs1use std::collections::HashMap;
9use std::sync::{Arc, Mutex};
10
11use crate::jsoneval::eval_data::EvalData;
12
13use crate::jsoneval::table_metadata::TableMetadata;
14
15use crate::jsoneval::types::DependentItem;
16use crate::rlogic::{LogicId, RLogic};
17
18use indexmap::{IndexMap, IndexSet};
19
20use serde_json::Value;
21
22pub mod cancellation;
23pub mod core;
24pub mod dependents;
25pub mod eval_cache;
26pub mod eval_data;
27pub mod evaluate;
28pub mod getters;
29pub mod json_parser;
30pub mod layout;
31pub mod logic;
32pub mod parsed_schema;
33pub mod parsed_schema_cache;
34pub mod path_utils;
35pub mod static_arrays;
36pub mod subform_methods;
37pub(crate) mod subform_scope;
38pub mod table_evaluate;
39pub mod table_metadata;
40pub mod types;
41pub mod validation;
42pub mod validation_cache;
43
44pub struct JSONEval {
45 pub schema: Arc<Value>,
46 pub engine: Arc<RLogic>,
47 pub evaluations: Arc<IndexMap<String, LogicId>>,
48 pub tables: Arc<IndexMap<String, Value>>,
49 pub table_metadata: Arc<IndexMap<String, TableMetadata>>,
50 pub dependencies: Arc<IndexMap<String, IndexSet<String>>>,
51 pub sorted_evaluations: Arc<Vec<Vec<String>>>,
52 pub dependents_evaluations: Arc<IndexMap<String, Vec<DependentItem>>>,
53 pub rules_evaluations: Arc<Vec<String>>,
54 pub fields_with_rules: Arc<Vec<String>>,
55 pub others_evaluations: Arc<Vec<String>>,
56 pub value_evaluations: Arc<Vec<String>>,
57 pub layout_paths: Arc<Vec<String>>,
58 pub root_layout_paths: Arc<Vec<String>>,
59 pub layout_field_refs: Arc<IndexSet<String>>,
61 pub options_templates: Arc<Vec<(String, String, String)>>,
62 pub subforms: IndexMap<String, Box<JSONEval>>,
63
64 pub reffed_by: Arc<IndexMap<String, Vec<String>>>,
65
66 pub dep_formula_triggers: Arc<IndexMap<String, Vec<(String, usize)>>>,
71
72 pub conditional_hidden_fields: Arc<Vec<String>>,
73 pub conditional_readonly_fields: Arc<Vec<String>>,
74 pub static_arrays: Arc<IndexMap<String, Arc<Value>>>,
75
76 pub context: Value,
77 pub data: Value,
78 pub evaluated_schema: Value,
79 pub eval_data: EvalData,
80 pub eval_cache: eval_cache::EvalCache,
81 pub(crate) eval_lock: Mutex<()>,
82 pub(crate) cached_msgpack_schema: Option<Vec<u8>>,
83 pub(crate) layout_state: std::sync::RwLock<crate::jsoneval::layout::LayoutResolutionState>,
84 pub(crate) regex_cache: std::sync::RwLock<HashMap<String, regex::Regex>>,
85 pub(crate) validation_cache: std::sync::RwLock<validation_cache::ValidationCache>,
86}