My agentic slop goes here. Not intended for anyone else!
1(** JMAP JSON Parser Utilities *)
2
3(** Helper functions for working with ezjsonm values *)
4module Helpers : sig
5 (** Expect a JSON object and return field list *)
6 val expect_object : Ezjsonm.value -> (string * Ezjsonm.value) list
7
8 (** Expect a JSON array and return element list *)
9 val expect_array : Ezjsonm.value -> Ezjsonm.value list
10
11 (** Expect a JSON string *)
12 val expect_string : Ezjsonm.value -> string
13
14 (** Expect a JSON integer *)
15 val expect_int : Ezjsonm.value -> int
16
17 (** Expect a JSON boolean *)
18 val expect_bool : Ezjsonm.value -> bool
19
20 (** Find optional field in object *)
21 val find_field : string -> (string * Ezjsonm.value) list -> Ezjsonm.value option
22
23 (** Require field to be present *)
24 val require_field : string -> (string * Ezjsonm.value) list -> Ezjsonm.value
25
26 (** Get optional string field *)
27 val get_string_opt : string -> (string * Ezjsonm.value) list -> string option
28
29 (** Get required string field *)
30 val get_string : string -> (string * Ezjsonm.value) list -> string
31
32 (** Get optional boolean field with default *)
33 val get_bool_opt : string -> (string * Ezjsonm.value) list -> bool -> bool
34
35 (** Get required boolean field *)
36 val get_bool : string -> (string * Ezjsonm.value) list -> bool
37
38 (** Get optional int field *)
39 val get_int_opt : string -> (string * Ezjsonm.value) list -> int option
40
41 (** Get required int field *)
42 val get_int : string -> (string * Ezjsonm.value) list -> int
43
44 (** Parse a map with string keys *)
45 val parse_map : (Ezjsonm.value -> 'a) -> Ezjsonm.value -> (string * 'a) list
46
47 (** Parse an array *)
48 val parse_array : (Ezjsonm.value -> 'a) -> Ezjsonm.value -> 'a list
49
50 (** Parse optional array (null or array) *)
51 val parse_array_opt : (Ezjsonm.value -> 'a) -> Ezjsonm.value -> 'a list option
52end
53
54(** Parse JMAP Request *)
55val parse_request : Ezjsonm.value -> Jmap_request.t
56
57(** Parse JMAP Response *)
58val parse_response : Ezjsonm.value -> Jmap_response.t
59
60(** Parse JMAP Session *)
61val parse_session : Ezjsonm.value -> Jmap_session.t