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