OCaml HTML5 parser/serialiser based on Python's JustHTML

Squashed 'ocaml-jmap/' changes from e3c0ed5..5bb8f22

5bb8f22 doc fiex

git-subtree-dir: ocaml-jmap
git-subtree-split: 5bb8f2281fdbd8c94573c430d10c9f6ac740bd48

+10 -10
+2 -2
lib/core/chain.mli
··· 110 111 The first type parameter indicates the method kind (query/get/changes/set/...), 112 used for building result references. The second type parameter is the 113 - parsed response type, enabling type-safe parsing via {!parse}. *) 114 type (_, _) handle 115 116 val call_id : (_, _) handle -> string ··· 514 providing compile-time type safety. *) 515 516 val parse_exn : (_, 'resp) handle -> Jmap_proto.Response.t -> 'resp 517 - (** [parse_exn handle response] is like {!parse} but raises on error. *) 518 519 (** {1 JSON Helpers} 520
··· 110 111 The first type parameter indicates the method kind (query/get/changes/set/...), 112 used for building result references. The second type parameter is the 113 + parsed response type, enabling type-safe parsing via {!val-parse}. *) 114 type (_, _) handle 115 116 val call_id : (_, _) handle -> string ··· 514 providing compile-time type safety. *) 515 516 val parse_exn : (_, 'resp) handle -> Jmap_proto.Response.t -> 'resp 517 + (** [parse_exn handle response] is like {!val-parse} but raises on error. *) 518 519 (** {1 JSON Helpers} 520
+1 -1
lib/core/jmap.mli
··· 26 {2 Module Structure} 27 28 - {!Proto} - Low-level protocol and mail types (RFC 8620/8621) 29 - - {!Error}, {!Id}, {!Keyword}, {!Role}, {!Capability} - Core types 30 - {!Session}, {!Email}, {!Mailbox}, etc. - Abstract type accessors 31 *) 32
··· 26 {2 Module Structure} 27 28 - {!Proto} - Low-level protocol and mail types (RFC 8620/8621) 29 + - {!module-Error}, {!Id}, {!Keyword}, {!Role}, {!Capability} - Core types 30 - {!Session}, {!Email}, {!Mailbox}, etc. - Abstract type accessors 31 *) 32
+2 -2
lib/mail/mail_email.mli
··· 187 ] 188 189 (** A dynamic header property request. 190 - Use {!Mail_header.header_property} for type-safe construction. *) 191 type header_property = [ `Header of Mail_header.header_property ] 192 193 (** Any Email property - standard or dynamic header. *) ··· 372 373 (** Extra arguments for Email/get beyond standard /get. 374 375 - Note: The standard [properties] argument from {!Proto_method.get_args} 376 should use {!property} variants converted via {!property_to_string}. *) 377 type get_args_extra = { 378 body_properties : body_part_property list option;
··· 187 ] 188 189 (** A dynamic header property request. 190 + Use [Mail_header.header_property] for type-safe construction. *) 191 type header_property = [ `Header of Mail_header.header_property ] 192 193 (** Any Email property - standard or dynamic header. *) ··· 372 373 (** Extra arguments for Email/get beyond standard /get. 374 375 + Note: The standard [properties] argument from [Proto_method.get_args] 376 should use {!property} variants converted via {!property_to_string}. *) 377 type get_args_extra = { 378 body_properties : body_part_property list option;
+2 -2
lib/proto/proto_blob.mli
··· 40 41 val expand_download_url : template:string -> download_vars -> string 42 (** [expand_download_url ~template vars] expands the download URL template 43 - with the given variables. Template uses {accountId}, {blobId}, 44 - {type}, and {name} placeholders. *) 45 46 (** {1 Blob/copy} *) 47
··· 40 41 val expand_download_url : template:string -> download_vars -> string 42 (** [expand_download_url ~template vars] expands the download URL template 43 + with the given variables. Template uses [\{accountId\}], [\{blobId\}], 44 + [\{type\}], and [\{name\}] placeholders. *) 45 46 (** {1 Blob/copy} *) 47
+3 -3
lib/proto/proto_invocation.mli
··· 37 result_reference 38 (** [result_reference_of_strings] creates a result reference, parsing 39 the path string into a JMAP pointer. 40 - @raise Jsont.Error if the path is not a valid JMAP pointer. *) 41 42 val result_reference_jsont : result_reference Jsont.t 43 ··· 59 This is the most common pattern in JMAP where result references are 60 used to pass IDs between method calls. 61 62 - @raise Jsont.Error if resolution fails or the result is not a string list. *) 63 64 val resolve : 65 result_reference -> ··· 69 (** [resolve ref ~responses codec] resolves the result reference and 70 decodes the extracted value with [codec]. 71 72 - @raise Jsont.Error if resolution fails or decoding fails. *) 73 74 (** {1 Invocations} *) 75
··· 37 result_reference 38 (** [result_reference_of_strings] creates a result reference, parsing 39 the path string into a JMAP pointer. 40 + @raise Jsont.exception-Error if the path is not a valid JMAP pointer. *) 41 42 val result_reference_jsont : result_reference Jsont.t 43 ··· 59 This is the most common pattern in JMAP where result references are 60 used to pass IDs between method calls. 61 62 + @raise Jsont.exception-Error if resolution fails or the result is not a string list. *) 63 64 val resolve : 65 result_reference -> ··· 69 (** [resolve ref ~responses codec] resolves the result reference and 70 decodes the extracted value with [codec]. 71 72 + @raise Jsont.exception-Error if resolution fails or decoding fails. *) 73 74 (** {1 Invocations} *) 75