this repo has no description

Simplify Jmap_mail.Capability module variants

- Remove nested singleton types (Mail, Submission, VacationResponse)
- Update all references to use direct variant constructors
- Fix interface file to match implementation
- Simplify string conversion functions
- Make API more consistent with Jmap.Capability module

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>

Changed files
+28 -98
bin
lib
+1 -1
bin/fastmail_list.ml
···
| Ok conn ->
(* Get the primary account ID *)
let primary_account_id =
-
let mail_capability = Jmap_mail.Capability.to_string (Jmap_mail.Capability.Mail Mail) in
match List.assoc_opt mail_capability conn.session.primary_accounts with
| Some id -> id
| None ->
···
| Ok conn ->
(* Get the primary account ID *)
let primary_account_id =
+
let mail_capability = Jmap_mail.Capability.to_string Jmap_mail.Capability.Mail in
match List.assoc_opt mail_capability conn.session.primary_accounts with
| Some id -> id
| None ->
+23 -66
lib/jmap_mail.ml
···
(** Module for managing JMAP Mail-specific capability URIs *)
module Capability = struct
-
(** Mail capability types *)
-
type mail = Mail
-
(** Mail capability URI *)
let mail_uri = "urn:ietf:params:jmap:mail"
-
(** Convert mail capability to URI string *)
-
let string_of_mail = function
-
| Mail -> mail_uri
-
-
(** Parse a string to mail capability *)
-
let mail_of_string = function
-
| s when s = mail_uri -> Some Mail
-
| _ -> None
-
-
(** Submission capability types *)
-
type submission = Submission
-
(** Submission capability URI *)
let submission_uri = "urn:ietf:params:jmap:submission"
-
(** Convert submission capability to URI string *)
-
let string_of_submission = function
-
| Submission -> submission_uri
-
-
(** Parse a string to submission capability *)
-
let submission_of_string = function
-
| s when s = submission_uri -> Some Submission
-
| _ -> None
-
-
(** Vacation response capability types *)
-
type vacation_response = VacationResponse
-
(** Vacation response capability URI *)
let vacation_response_uri = "urn:ietf:params:jmap:vacationresponse"
-
(** Convert vacation response capability to URI string *)
-
let string_of_vacation_response = function
-
| VacationResponse -> vacation_response_uri
-
-
(** Parse a string to vacation response capability *)
-
let vacation_response_of_string = function
-
| s when s = vacation_response_uri -> Some VacationResponse
-
| _ -> None
-
(** All mail extension capability types *)
type t =
-
| Mail of mail
-
| Submission of submission
-
| VacationResponse of vacation_response
-
| Extension of string
(** Convert capability to URI string *)
let to_string = function
-
| Mail m -> string_of_mail m
-
| Submission s -> string_of_submission s
-
| VacationResponse v -> string_of_vacation_response v
| Extension s -> s
(** Parse a string to a capability *)
let of_string s =
-
match mail_of_string s with
-
| Some m -> Mail m
-
| None ->
-
match submission_of_string s with
-
| Some s -> Submission s
-
| None ->
-
match vacation_response_of_string s with
-
| Some v -> VacationResponse v
-
| None -> Extension s
(** Check if a capability is a standard mail capability *)
let is_standard = function
-
| Mail _ | Submission _ | VacationResponse _ -> true
| Extension _ -> false
(** Check if a capability string is a standard mail capability *)
let is_standard_string s =
-
match of_string s with
-
| Extension _ -> false
-
| _ -> true
(** Create a list of capability strings *)
let strings_of_capabilities capabilities =
···
let get_mailboxes conn ~account_id =
let request = {
using = [
-
Jmap.Capability.to_string (Jmap.Capability.Core Core);
-
Capability.to_string (Capability.Mail Mail)
];
method_calls = [
{
···
let get_mailbox conn ~account_id ~mailbox_id =
let request = {
using = [
-
Jmap.Capability.to_string (Jmap.Capability.Core Core);
-
Capability.to_string (Capability.Mail Mail)
];
method_calls = [
{
···
(* First query the emails in the mailbox *)
let query_request = {
using = [
-
Jmap.Capability.to_string (Jmap.Capability.Core Core);
-
Capability.to_string (Capability.Mail Mail)
];
method_calls = [
{
···
if List.length email_ids > 0 then
let get_request = {
using = [
-
Jmap.Capability.to_string (Jmap.Capability.Core Core);
-
Capability.to_string (Capability.Mail Mail)
];
method_calls = [
{
···
let get_email conn ~account_id ~email_id =
let request = {
using = [
-
Jmap.Capability.to_string (Jmap.Capability.Core Core);
-
Capability.to_string (Capability.Mail Mail)
];
method_calls = [
{
···
(** Module for managing JMAP Mail-specific capability URIs *)
module Capability = struct
(** Mail capability URI *)
let mail_uri = "urn:ietf:params:jmap:mail"
(** Submission capability URI *)
let submission_uri = "urn:ietf:params:jmap:submission"
(** Vacation response capability URI *)
let vacation_response_uri = "urn:ietf:params:jmap:vacationresponse"
(** All mail extension capability types *)
type t =
+
| Mail (** Mail capability *)
+
| Submission (** Submission capability *)
+
| VacationResponse (** Vacation response capability *)
+
| Extension of string (** Custom extension *)
(** Convert capability to URI string *)
let to_string = function
+
| Mail -> mail_uri
+
| Submission -> submission_uri
+
| VacationResponse -> vacation_response_uri
| Extension s -> s
(** Parse a string to a capability *)
let of_string s =
+
if s = mail_uri then Mail
+
else if s = submission_uri then Submission
+
else if s = vacation_response_uri then VacationResponse
+
else Extension s
(** Check if a capability is a standard mail capability *)
let is_standard = function
+
| Mail | Submission | VacationResponse -> true
| Extension _ -> false
(** Check if a capability string is a standard mail capability *)
let is_standard_string s =
+
s = mail_uri || s = submission_uri || s = vacation_response_uri
(** Create a list of capability strings *)
let strings_of_capabilities capabilities =
···
let get_mailboxes conn ~account_id =
let request = {
using = [
+
Jmap.Capability.to_string Jmap.Capability.Core;
+
Capability.to_string Capability.Mail
];
method_calls = [
{
···
let get_mailbox conn ~account_id ~mailbox_id =
let request = {
using = [
+
Jmap.Capability.to_string Jmap.Capability.Core;
+
Capability.to_string Capability.Mail
];
method_calls = [
{
···
(* First query the emails in the mailbox *)
let query_request = {
using = [
+
Jmap.Capability.to_string Jmap.Capability.Core;
+
Capability.to_string Capability.Mail
];
method_calls = [
{
···
if List.length email_ids > 0 then
let get_request = {
using = [
+
Jmap.Capability.to_string Jmap.Capability.Core;
+
Capability.to_string Capability.Mail
];
method_calls = [
{
···
let get_email conn ~account_id ~email_id =
let request = {
using = [
+
Jmap.Capability.to_string Jmap.Capability.Core;
+
Capability.to_string Capability.Mail
];
method_calls = [
{
+4 -31
lib/jmap_mail.mli
···
(** Module for managing JMAP Mail-specific capability URIs *)
module Capability : sig
-
(** Mail capability types *)
-
type mail = Mail
-
(** Mail capability URI *)
val mail_uri : string
-
(** Convert mail capability to URI string *)
-
val string_of_mail : mail -> string
-
-
(** Parse a string to mail capability *)
-
val mail_of_string : string -> mail option
-
-
(** Submission capability types *)
-
type submission = Submission
-
(** Submission capability URI *)
val submission_uri : string
-
(** Convert submission capability to URI string *)
-
val string_of_submission : submission -> string
-
-
(** Parse a string to submission capability *)
-
val submission_of_string : string -> submission option
-
-
(** Vacation response capability types *)
-
type vacation_response = VacationResponse
-
(** Vacation response capability URI *)
val vacation_response_uri : string
-
-
(** Convert vacation response capability to URI string *)
-
val string_of_vacation_response : vacation_response -> string
-
-
(** Parse a string to vacation response capability *)
-
val vacation_response_of_string : string -> vacation_response option
(** All mail extension capability types *)
type t =
-
| Mail of mail
-
| Submission of submission
-
| VacationResponse of vacation_response
-
| Extension of string
(** Convert capability to URI string *)
val to_string : t -> string
···
(** Module for managing JMAP Mail-specific capability URIs *)
module Capability : sig
(** Mail capability URI *)
val mail_uri : string
(** Submission capability URI *)
val submission_uri : string
(** Vacation response capability URI *)
val vacation_response_uri : string
(** All mail extension capability types *)
type t =
+
| Mail (** Mail capability *)
+
| Submission (** Submission capability *)
+
| VacationResponse (** Vacation response capability *)
+
| Extension of string (** Custom extension *)
(** Convert capability to URI string *)
val to_string : t -> string