1use serde::{Deserialize, Serialize};
2use serde_json::Value as JsonValue;
3use std::path::PathBuf;
4
5#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
6pub struct Function {
7 pub name: String,
8 pub version: JsonValue,
9 pub description: String,
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub brackets: Option<bool>,
12 pub unwrap: bool,
13 #[serde(skip_serializing_if = "Option::is_none")]
14 pub args: Option<Vec<Arg>>,
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub output: Option<Vec<String>>,
17 pub category: Option<String>,
18 pub aliases: Option<Vec<String>>,
19 pub experimental: Option<bool>,
20 pub examples: Option<Vec<String>>,
21 pub deprecated: Option<bool>,
22 #[serde(skip)]
23 pub extension: Option<String>,
24 #[serde(skip)]
25 pub source_url: Option<String>,
26 #[serde(skip)]
27 pub local_path: Option<PathBuf>,
28 #[serde(skip)]
29 pub line: Option<u32>,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
33pub struct Arg {
34 pub name: String,
35 pub description: String,
36 #[serde(default)]
37 pub rest: bool,
38 pub required: Option<bool>,
39 pub arg_type: JsonValue,
40 pub condition: Option<bool>,
41 pub arg_enum: Option<Vec<String>>,
42 pub enum_name: Option<String>,
43 pub pointer: Option<i64>,
44 pub pointer_property: Option<String>,
45}
46
47#[derive(Debug, Clone, Serialize, Deserialize)]
49pub struct Event {
50 pub name: String,
51 #[serde(default)]
52 pub description: String,
53 #[serde(default)]
54 pub fields: Option<Vec<EventField>>,
55}
56
57#[derive(Debug, Clone, Serialize, Deserialize)]
58pub struct EventField {
59 pub name: String,
60 #[serde(default)]
61 pub description: String,
62}