Skip to main content

rulemorph/normalization/
options.rs

1#[derive(Debug, Clone)]
2pub struct NormalizationOptions {
3    pub max_input_bytes: usize,
4    pub max_records: usize,
5    pub max_depth: usize,
6    pub max_array_len: usize,
7    pub max_text_bytes: usize,
8    pub max_yaml_aliases: usize,
9    pub max_yaml_expanded_nodes: usize,
10    pub max_xml_nodes: usize,
11    pub max_html_nodes: usize,
12    pub max_markdown_nodes: usize,
13    pub max_markdown_table_cells: usize,
14    pub max_excel_zip_entries: usize,
15    pub max_excel_uncompressed_bytes: usize,
16    pub max_excel_entry_uncompressed_bytes: usize,
17    pub max_excel_sheets: usize,
18    pub max_excel_rows: usize,
19    pub max_excel_cells: usize,
20    pub max_excel_shared_strings: usize,
21    pub max_excel_shared_string_bytes: usize,
22    pub max_excel_styles: usize,
23    pub max_range_items: Option<usize>,
24    pub max_object_fields: usize,
25    pub max_object_key_bytes: usize,
26    pub max_object_depth: usize,
27    pub max_generated_json_nodes: usize,
28    pub max_generated_json_bytes: usize,
29}
30
31impl Default for NormalizationOptions {
32    fn default() -> Self {
33        Self {
34            max_input_bytes: 64 * 1024 * 1024,
35            max_records: 100_000,
36            max_depth: 256,
37            max_array_len: 1_000_000,
38            max_text_bytes: 8 * 1024 * 1024,
39            max_yaml_aliases: 10_000,
40            max_yaml_expanded_nodes: 1_000_000,
41            max_xml_nodes: 1_000_000,
42            max_html_nodes: 1_000_000,
43            max_markdown_nodes: 1_000_000,
44            max_markdown_table_cells: 1_000_000,
45            max_excel_zip_entries: 10_000,
46            max_excel_uncompressed_bytes: 256 * 1024 * 1024,
47            max_excel_entry_uncompressed_bytes: 64 * 1024 * 1024,
48            max_excel_sheets: 128,
49            max_excel_rows: 100_000,
50            max_excel_cells: 1_000_000,
51            max_excel_shared_strings: 1_000_000,
52            max_excel_shared_string_bytes: 64 * 1024 * 1024,
53            max_excel_styles: 65_536,
54            max_range_items: Some(10_000),
55            max_object_fields: 10_000,
56            max_object_key_bytes: 4 * 1024,
57            max_object_depth: 64,
58            max_generated_json_nodes: 100_000,
59            max_generated_json_bytes: 10 * 1024 * 1024,
60        }
61    }
62}
63
64impl NormalizationOptions {
65    pub fn large() -> Self {
66        Self {
67            max_input_bytes: 512 * 1024 * 1024,
68            max_records: 1_000_000,
69            max_array_len: 10_000_000,
70            max_excel_uncompressed_bytes: 1024 * 1024 * 1024,
71            max_excel_rows: 1_000_000,
72            max_excel_cells: 10_000_000,
73            max_markdown_nodes: 10_000_000,
74            max_markdown_table_cells: 10_000_000,
75            max_object_fields: 100_000,
76            max_object_key_bytes: 16 * 1024,
77            max_object_depth: 128,
78            max_generated_json_nodes: 1_000_000,
79            max_generated_json_bytes: 128 * 1024 * 1024,
80            ..Self::default()
81        }
82    }
83}