jmap-kit 0.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +138 -3
  3. package/dist/src/capabilities/blob/blob.d.ts +83 -0
  4. package/dist/src/capabilities/blob/blob.js +98 -0
  5. package/dist/src/capabilities/blob/blob.js.map +1 -0
  6. package/dist/src/capabilities/blob/types.d.ts +212 -0
  7. package/dist/src/capabilities/blob/types.js +16 -0
  8. package/dist/src/capabilities/blob/types.js.map +1 -0
  9. package/dist/src/capabilities/blob-capability.d.ts +195 -0
  10. package/dist/src/capabilities/blob-capability.js +277 -0
  11. package/dist/src/capabilities/blob-capability.js.map +1 -0
  12. package/dist/src/capabilities/core/core.d.ts +47 -0
  13. package/dist/src/capabilities/core/core.js +59 -0
  14. package/dist/src/capabilities/core/core.js.map +1 -0
  15. package/dist/src/capabilities/core/types.d.ts +13 -0
  16. package/dist/src/capabilities/core/types.js +2 -0
  17. package/dist/src/capabilities/core/types.js.map +1 -0
  18. package/dist/src/capabilities/core-capability.d.ts +307 -0
  19. package/dist/src/capabilities/core-capability.js +344 -0
  20. package/dist/src/capabilities/core-capability.js.map +1 -0
  21. package/dist/src/capabilities/email/email.d.ts +124 -0
  22. package/dist/src/capabilities/email/email.js +136 -0
  23. package/dist/src/capabilities/email/email.js.map +1 -0
  24. package/dist/src/capabilities/email/types.d.ts +776 -0
  25. package/dist/src/capabilities/email/types.js +2 -0
  26. package/dist/src/capabilities/email/types.js.map +1 -0
  27. package/dist/src/capabilities/email-capability.d.ts +266 -0
  28. package/dist/src/capabilities/email-capability.js +241 -0
  29. package/dist/src/capabilities/email-capability.js.map +1 -0
  30. package/dist/src/capabilities/emailsubmission/emailsubmission.d.ts +95 -0
  31. package/dist/src/capabilities/emailsubmission/emailsubmission.js +107 -0
  32. package/dist/src/capabilities/emailsubmission/emailsubmission.js.map +1 -0
  33. package/dist/src/capabilities/emailsubmission/types.d.ts +256 -0
  34. package/dist/src/capabilities/emailsubmission/types.js +2 -0
  35. package/dist/src/capabilities/emailsubmission/types.js.map +1 -0
  36. package/dist/src/capabilities/example/example.d.ts +80 -0
  37. package/dist/src/capabilities/example/example.js +91 -0
  38. package/dist/src/capabilities/example/example.js.map +1 -0
  39. package/dist/src/capabilities/example/types.d.ts +33 -0
  40. package/dist/src/capabilities/example/types.js +2 -0
  41. package/dist/src/capabilities/example/types.js.map +1 -0
  42. package/dist/src/capabilities/identity/identity.d.ts +71 -0
  43. package/dist/src/capabilities/identity/identity.js +83 -0
  44. package/dist/src/capabilities/identity/identity.js.map +1 -0
  45. package/dist/src/capabilities/identity/types.d.ts +110 -0
  46. package/dist/src/capabilities/identity/types.js +2 -0
  47. package/dist/src/capabilities/identity/types.js.map +1 -0
  48. package/dist/src/capabilities/mailbox/mailbox.d.ts +91 -0
  49. package/dist/src/capabilities/mailbox/mailbox.js +103 -0
  50. package/dist/src/capabilities/mailbox/mailbox.js.map +1 -0
  51. package/dist/src/capabilities/mailbox/types.d.ts +248 -0
  52. package/dist/src/capabilities/mailbox/types.js +2 -0
  53. package/dist/src/capabilities/mailbox/types.js.map +1 -0
  54. package/dist/src/capabilities/maskedemail/maskedemail.d.ts +60 -0
  55. package/dist/src/capabilities/maskedemail/maskedemail.js +72 -0
  56. package/dist/src/capabilities/maskedemail/maskedemail.js.map +1 -0
  57. package/dist/src/capabilities/maskedemail/types.d.ts +67 -0
  58. package/dist/src/capabilities/maskedemail/types.js +4 -0
  59. package/dist/src/capabilities/maskedemail/types.js.map +1 -0
  60. package/dist/src/capabilities/maskedemail-capability.d.ts +112 -0
  61. package/dist/src/capabilities/maskedemail-capability.js +166 -0
  62. package/dist/src/capabilities/maskedemail-capability.js.map +1 -0
  63. package/dist/src/capabilities/searchsnippet/searchsnippet.d.ts +51 -0
  64. package/dist/src/capabilities/searchsnippet/searchsnippet.js +63 -0
  65. package/dist/src/capabilities/searchsnippet/searchsnippet.js.map +1 -0
  66. package/dist/src/capabilities/searchsnippet/types.d.ts +88 -0
  67. package/dist/src/capabilities/searchsnippet/types.js +2 -0
  68. package/dist/src/capabilities/searchsnippet/types.js.map +1 -0
  69. package/dist/src/capabilities/submission-capability.d.ts +89 -0
  70. package/dist/src/capabilities/submission-capability.js +75 -0
  71. package/dist/src/capabilities/submission-capability.js.map +1 -0
  72. package/dist/src/capabilities/thread/thread.d.ts +58 -0
  73. package/dist/src/capabilities/thread/thread.js +70 -0
  74. package/dist/src/capabilities/thread/thread.js.map +1 -0
  75. package/dist/src/capabilities/thread/types.d.ts +43 -0
  76. package/dist/src/capabilities/thread/types.js +2 -0
  77. package/dist/src/capabilities/thread/types.js.map +1 -0
  78. package/dist/src/capabilities/utils/assert-invocation-datatype.d.ts +7 -0
  79. package/dist/src/capabilities/utils/assert-invocation-datatype.js +13 -0
  80. package/dist/src/capabilities/utils/assert-invocation-datatype.js.map +1 -0
  81. package/dist/src/capabilities/utils/assert-invocation-method.d.ts +7 -0
  82. package/dist/src/capabilities/utils/assert-invocation-method.js +13 -0
  83. package/dist/src/capabilities/utils/assert-invocation-method.js.map +1 -0
  84. package/dist/src/capabilities/utils/assert-invocation.d.ts +7 -0
  85. package/dist/src/capabilities/utils/assert-invocation.js +22 -0
  86. package/dist/src/capabilities/utils/assert-invocation.js.map +1 -0
  87. package/dist/src/capabilities/utils/assert-non-nullish.d.ts +1 -0
  88. package/dist/src/capabilities/utils/assert-non-nullish.js +6 -0
  89. package/dist/src/capabilities/utils/assert-non-nullish.js.map +1 -0
  90. package/dist/src/capabilities/utils/create-readonly-account-validator.d.ts +49 -0
  91. package/dist/src/capabilities/utils/create-readonly-account-validator.js +80 -0
  92. package/dist/src/capabilities/utils/create-readonly-account-validator.js.map +1 -0
  93. package/dist/src/capabilities/vacationresponse/types.d.ts +100 -0
  94. package/dist/src/capabilities/vacationresponse/types.js +2 -0
  95. package/dist/src/capabilities/vacationresponse/types.js.map +1 -0
  96. package/dist/src/capabilities/vacationresponse/vacationresponse.d.ts +61 -0
  97. package/dist/src/capabilities/vacationresponse/vacationresponse.js +73 -0
  98. package/dist/src/capabilities/vacationresponse/vacationresponse.js.map +1 -0
  99. package/dist/src/capabilities/vacationresponse-capability.d.ts +65 -0
  100. package/dist/src/capabilities/vacationresponse-capability.js +68 -0
  101. package/dist/src/capabilities/vacationresponse-capability.js.map +1 -0
  102. package/dist/src/capability-registry/capability-registry.d.ts +148 -0
  103. package/dist/src/capability-registry/capability-registry.js +360 -0
  104. package/dist/src/capability-registry/capability-registry.js.map +1 -0
  105. package/dist/src/capability-registry/types.d.ts +385 -0
  106. package/dist/src/capability-registry/types.js +2 -0
  107. package/dist/src/capability-registry/types.js.map +1 -0
  108. package/dist/src/capability-registry/utils.d.ts +71 -0
  109. package/dist/src/capability-registry/utils.js +163 -0
  110. package/dist/src/capability-registry/utils.js.map +1 -0
  111. package/dist/src/common/registry.d.ts +366 -0
  112. package/dist/src/common/registry.js +321 -0
  113. package/dist/src/common/registry.js.map +1 -0
  114. package/dist/src/common/types.d.ts +338 -0
  115. package/dist/src/common/types.js +21 -0
  116. package/dist/src/common/types.js.map +1 -0
  117. package/dist/src/common/utils.d.ts +20 -0
  118. package/dist/src/common/utils.js +26 -0
  119. package/dist/src/common/utils.js.map +1 -0
  120. package/dist/src/index.d.ts +40 -0
  121. package/dist/src/index.js +33 -0
  122. package/dist/src/index.js.map +1 -0
  123. package/dist/src/invocation/arguments-proxy.d.ts +14 -0
  124. package/dist/src/invocation/arguments-proxy.js +37 -0
  125. package/dist/src/invocation/arguments-proxy.js.map +1 -0
  126. package/dist/src/invocation/error-invocation.d.ts +27 -0
  127. package/dist/src/invocation/error-invocation.js +39 -0
  128. package/dist/src/invocation/error-invocation.js.map +1 -0
  129. package/dist/src/invocation/invocation.d.ts +111 -0
  130. package/dist/src/invocation/invocation.js +158 -0
  131. package/dist/src/invocation/invocation.js.map +1 -0
  132. package/dist/src/invocation/result-reference.d.ts +86 -0
  133. package/dist/src/invocation/result-reference.js +118 -0
  134. package/dist/src/invocation/result-reference.js.map +1 -0
  135. package/dist/src/invocation/types.d.ts +637 -0
  136. package/dist/src/invocation/types.js +2 -0
  137. package/dist/src/invocation/types.js.map +1 -0
  138. package/dist/src/invocation/utils.d.ts +21 -0
  139. package/dist/src/invocation/utils.js +30 -0
  140. package/dist/src/invocation/utils.js.map +1 -0
  141. package/dist/src/invocation-factory/invocation-factory-manager.d.ts +20 -0
  142. package/dist/src/invocation-factory/invocation-factory-manager.js +50 -0
  143. package/dist/src/invocation-factory/invocation-factory-manager.js.map +1 -0
  144. package/dist/src/invocation-factory/invocation-list.d.ts +32 -0
  145. package/dist/src/invocation-factory/invocation-list.js +77 -0
  146. package/dist/src/invocation-factory/invocation-list.js.map +1 -0
  147. package/dist/src/invocation-factory/types.d.ts +11 -0
  148. package/dist/src/invocation-factory/types.js +2 -0
  149. package/dist/src/invocation-factory/types.js.map +1 -0
  150. package/dist/src/jmap-client/jmap-client.d.ts +252 -0
  151. package/dist/src/jmap-client/jmap-client.js +777 -0
  152. package/dist/src/jmap-client/jmap-client.js.map +1 -0
  153. package/dist/src/jmap-client/types.d.ts +427 -0
  154. package/dist/src/jmap-client/types.js +21 -0
  155. package/dist/src/jmap-client/types.js.map +1 -0
  156. package/dist/src/jmap-client/utils/abort-controller.d.ts +8 -0
  157. package/dist/src/jmap-client/utils/abort-controller.js +24 -0
  158. package/dist/src/jmap-client/utils/abort-controller.js.map +1 -0
  159. package/dist/src/jmap-client/utils/assert-connected.d.ts +7 -0
  160. package/dist/src/jmap-client/utils/assert-connected.js +11 -0
  161. package/dist/src/jmap-client/utils/assert-connected.js.map +1 -0
  162. package/dist/src/jmap-client/utils/deep-freeze.d.ts +7 -0
  163. package/dist/src/jmap-client/utils/deep-freeze.js +17 -0
  164. package/dist/src/jmap-client/utils/deep-freeze.js.map +1 -0
  165. package/dist/src/jmap-client/utils/emitter.d.ts +9 -0
  166. package/dist/src/jmap-client/utils/emitter.js +18 -0
  167. package/dist/src/jmap-client/utils/emitter.js.map +1 -0
  168. package/dist/src/jmap-client/utils/filter-session-capabilities.d.ts +22 -0
  169. package/dist/src/jmap-client/utils/filter-session-capabilities.js +40 -0
  170. package/dist/src/jmap-client/utils/filter-session-capabilities.js.map +1 -0
  171. package/dist/src/jmap-client/utils/jmap-request-error.d.ts +28 -0
  172. package/dist/src/jmap-client/utils/jmap-request-error.js +48 -0
  173. package/dist/src/jmap-client/utils/jmap-request-error.js.map +1 -0
  174. package/dist/src/jmap-client/utils/logger.d.ts +6 -0
  175. package/dist/src/jmap-client/utils/logger.js +22 -0
  176. package/dist/src/jmap-client/utils/logger.js.map +1 -0
  177. package/dist/src/jmap-client/utils/merge-headers.d.ts +11 -0
  178. package/dist/src/jmap-client/utils/merge-headers.js +40 -0
  179. package/dist/src/jmap-client/utils/merge-headers.js.map +1 -0
  180. package/dist/src/jmap-client/utils/template-utils.d.ts +27 -0
  181. package/dist/src/jmap-client/utils/template-utils.js +61 -0
  182. package/dist/src/jmap-client/utils/template-utils.js.map +1 -0
  183. package/dist/src/jmap-client/utils/track-utils.d.ts +19 -0
  184. package/dist/src/jmap-client/utils/track-utils.js +35 -0
  185. package/dist/src/jmap-client/utils/track-utils.js.map +1 -0
  186. package/dist/src/jmap-client/utils/transport.d.ts +12 -0
  187. package/dist/src/jmap-client/utils/transport.js +38 -0
  188. package/dist/src/jmap-client/utils/transport.js.map +1 -0
  189. package/dist/src/jmap-client/utils/validate-session.d.ts +19 -0
  190. package/dist/src/jmap-client/utils/validate-session.js +29 -0
  191. package/dist/src/jmap-client/utils/validate-session.js.map +1 -0
  192. package/dist/src/request-builder/request-builder.d.ts +95 -0
  193. package/dist/src/request-builder/request-builder.js +343 -0
  194. package/dist/src/request-builder/request-builder.js.map +1 -0
  195. package/dist/src/request-builder/types.d.ts +32 -0
  196. package/dist/src/request-builder/types.js +2 -0
  197. package/dist/src/request-builder/types.js.map +1 -0
  198. package/package.json +69 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jmap-client.js","sourceRoot":"","sources":["../../../src/jmap-client/jmap-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,427 @@
1
+ import { z } from "zod/v4";
2
+ import type { AccountCapabilityValidationResult, CapabilityDefinition, CapabilityRegistryInterface, ServerCapabilityValidationResult } from "../capability-registry/types.js";
3
+ import type { Id, IdMap, JMAPAccountCapabilities, JMAPCapability, JMAPCapabilityUri, JMAPServerCapabilities } from "../common/types.js";
4
+ import type { InvocationList } from "../invocation-factory/invocation-list.js";
5
+ import type { BaseInvocationArgs } from "../invocation/types.js";
6
+ import type { JMAPRequestError } from "./utils/jmap-request-error.js";
7
+ /**
8
+ * Comprehensive interface for JMAP client functionality.
9
+ * This interface defines all the methods and properties that a JMAP client should provide.
10
+ */
11
+ export interface JMAPClientInterface<T> {
12
+ /** The current connection status of the client */
13
+ readonly connectionStatus: ConnectionStatus;
14
+ /** Connect to the JMAP server */
15
+ connect(signal?: AbortSignal): Promise<void>;
16
+ /** Disconnect from the JMAP server */
17
+ disconnect(): Promise<void>;
18
+ /** The server capabilities from the session object, or null if not connected */
19
+ readonly serverCapabilities: Readonly<JMAPServerCapabilities> | null;
20
+ /** The accounts from the session object, or null if not connected */
21
+ readonly accounts: Readonly<Record<Id, JMAPAccount>> | null;
22
+ /** The primary accounts from the session object */
23
+ readonly primaryAccounts: Readonly<Partial<Record<JMAPCapability, Id>>>;
24
+ /** The username from the session object */
25
+ readonly username: string | null;
26
+ /** The API URL for JMAP API requests */
27
+ readonly apiUrl: string | null;
28
+ /** The download URL template */
29
+ readonly downloadUrl: string | null;
30
+ /** The upload URL template */
31
+ readonly uploadUrl: string | null;
32
+ /** The event source URL template */
33
+ readonly eventSourceUrl: string | null;
34
+ /** Get the capability registry for the client */
35
+ readonly capabilityRegistry: CapabilityRegistryInterface;
36
+ /** Set the hostname for the JMAP server */
37
+ withHostname(hostname: string): this;
38
+ /** Set the port for the JMAP server */
39
+ withPort(port: number): this;
40
+ /** Set additional headers for requests */
41
+ withHeaders(headers: Headers | Record<string, string>): this;
42
+ /** Set a custom logger for the client */
43
+ withLogger(logger: Logger): this;
44
+ /** Set a custom event emitter for the client */
45
+ withEmitter(emitter: EventEmitterFn): this;
46
+ /** Register new capabilities with the client */
47
+ registerCapabilities(...capabilities: CapabilityDefinition[]): Promise<CapabilityRegistrationResult>;
48
+ /** Download a file from the JMAP server */
49
+ downloadFile(accountId: Id, blobId: Id, name: string, type: string, signal?: AbortSignal): Promise<Blob>;
50
+ /** Upload a file to the JMAP server */
51
+ uploadFile(accountId: Id, file: Blob | ArrayBuffer | File, signal?: AbortSignal): Promise<JMAPUploadResponse>;
52
+ /** Create a new request builder */
53
+ createRequestBuilder(): T;
54
+ /** Send an API request to the JMAP server */
55
+ sendAPIRequest(jmapRequest: T, signal?: AbortSignal): Promise<{
56
+ methodResponses: InvocationList<BaseInvocationArgs>;
57
+ sessionState: string;
58
+ createdIds: IdMap;
59
+ }>;
60
+ }
61
+ export type JMAPClientOptions = Partial<ClientContext> & {
62
+ hostname?: string;
63
+ port?: number;
64
+ headers?: Headers | Record<string, string>;
65
+ };
66
+ export type ConnectionStatus = "disconnected" | "connecting" | "connected" | "disconnecting";
67
+ export type ClientContext = {
68
+ /** A logger instance for logging errors and information. */
69
+ logger: Logger;
70
+ /** An event emitter instance for emitting events. */
71
+ emitter: EventEmitterFn;
72
+ };
73
+ export type LoggerMethod = (message: string, ...optionalParams: any[]) => void;
74
+ export type Logger = {
75
+ log: LoggerMethod;
76
+ info: LoggerMethod;
77
+ warn: LoggerMethod;
78
+ error: LoggerMethod;
79
+ debug: LoggerMethod;
80
+ };
81
+ /**
82
+ * Events emitted by the JMAP client
83
+ */
84
+ export interface JMAPClientEvents {
85
+ /**
86
+ * Emitted when the client's connection status changes
87
+ */
88
+ "status-changed": {
89
+ /**
90
+ * The new connection status
91
+ */
92
+ status: string;
93
+ /**
94
+ * The session state, if available
95
+ */
96
+ sessionState: string | null;
97
+ };
98
+ /**
99
+ * Emitted when the session state reported by the server changes
100
+ */
101
+ "session-stale": {
102
+ /**
103
+ * The previous session state
104
+ */
105
+ oldSessionState: string | null;
106
+ /**
107
+ * The new session state
108
+ */
109
+ newSessionState: string;
110
+ };
111
+ /**
112
+ * Emitted when a request-level error occurs (e.g. authentication error, invalid JSON, etc.)
113
+ */
114
+ "request-error": {
115
+ /**
116
+ * The error that occurred
117
+ */
118
+ error: JMAPRequestError;
119
+ };
120
+ /**
121
+ * Emitted when a transport or network error occurs during any kind of request
122
+ */
123
+ "transport-error": {
124
+ /**
125
+ * The error that occurred
126
+ */
127
+ error: unknown;
128
+ };
129
+ /**
130
+ * Emitted when a file upload operation fails
131
+ */
132
+ "upload-error": {
133
+ /**
134
+ * The account ID to which the upload was attempted
135
+ */
136
+ accountId: Id;
137
+ /**
138
+ * The error that occurred during upload
139
+ */
140
+ error: JMAPRequestError;
141
+ };
142
+ /**
143
+ * Emitted when a file download operation fails
144
+ */
145
+ "download-error": {
146
+ /**
147
+ * The account ID from which the download was attempted
148
+ */
149
+ accountId: Id;
150
+ /**
151
+ * The blob ID of the file being downloaded
152
+ */
153
+ blobId: Id;
154
+ /**
155
+ * The error that occurred during download
156
+ */
157
+ error: JMAPRequestError;
158
+ };
159
+ /**
160
+ * Emitted when one or more capabilities fail schema validation.
161
+ *
162
+ * During connection (`context: "connection"`), invalid capabilities are stripped from the
163
+ * frozen session and treated as unsupported.
164
+ *
165
+ * During late registration (`context: "registration"`), capabilities whose schemas fail
166
+ * validation against the existing session are rejected and not registered.
167
+ */
168
+ "invalid-capabilities": {
169
+ /**
170
+ * Whether the validation occurred during initial connection or late registration
171
+ */
172
+ context: "connection" | "registration";
173
+ /**
174
+ * Server capabilities that failed validation
175
+ */
176
+ serverCapabilities: Extract<ServerCapabilityValidationResult, {
177
+ valid: false;
178
+ }>[];
179
+ /**
180
+ * Account capabilities that failed validation
181
+ */
182
+ accountCapabilities: Extract<AccountCapabilityValidationResult, {
183
+ valid: false;
184
+ }>[];
185
+ };
186
+ }
187
+ /**
188
+ * The result of registering capabilities with the client.
189
+ *
190
+ * Contains arrays of server and account capability validation failures.
191
+ * Empty arrays indicate all capabilities were registered successfully.
192
+ */
193
+ export type CapabilityRegistrationResult = {
194
+ /** Server capabilities that failed validation and were not registered */
195
+ serverCapabilities: Extract<ServerCapabilityValidationResult, {
196
+ valid: false;
197
+ }>[];
198
+ /** Account capabilities that failed validation and were not registered */
199
+ accountCapabilities: Extract<AccountCapabilityValidationResult, {
200
+ valid: false;
201
+ }>[];
202
+ };
203
+ /**
204
+ * Event names that can be emitted by the JMAP client
205
+ */
206
+ export type JMAPClientEventName = keyof JMAPClientEvents;
207
+ /**
208
+ * Type-safe event emitter function
209
+ */
210
+ export type TypedEventEmitterFn<Events> = <E extends keyof Events>(name: E, payload: Events[E]) => void;
211
+ /**
212
+ * A callback function to handle emitting events.
213
+ * @param name The name of the event.
214
+ * @param payload Any data associated with the event.
215
+ *
216
+ * @remarks
217
+ * Applications may use this with the emit function from any Event Emitter library.
218
+ */
219
+ export type EventEmitterFn = TypedEventEmitterFn<JMAPClientEvents>;
220
+ /**
221
+ * The allowed response types for Transport methods.
222
+ */
223
+ export type TransportResponseType = "json" | "blob";
224
+ /**
225
+ * Options for Transport requests.
226
+ */
227
+ export type TransportRequestOptions = {
228
+ /**
229
+ * Additional HTTP headers to include in the request.
230
+ */
231
+ headers?: Headers;
232
+ /**
233
+ * The expected response type: "json" (default) parses and returns JSON, "blob" returns a Blob (for binary data).
234
+ */
235
+ responseType?: TransportResponseType;
236
+ /**
237
+ * An AbortSignal to allow aborting the request.
238
+ */
239
+ signal?: AbortSignal;
240
+ /**
241
+ * The request body (for POST requests only).
242
+ * - String: For JSON or text data
243
+ * - Blob/File: For binary data like files
244
+ * - ArrayBuffer: For raw binary data
245
+ */
246
+ body?: string | Blob | ArrayBuffer | File;
247
+ };
248
+ /**
249
+ * An implementation providing HTTP request functionality for GET and POST requests.
250
+ *
251
+ * Implementations are expected to handle authentication and authorisation internally. For example,
252
+ * automatically including `Authorization` headers in the requests with a valid Bearer token.
253
+ *
254
+ * The `responseType` parameter specifies the expected response type:
255
+ * - "json" (default): parses and returns JSON.
256
+ * - "blob": returns a Blob (for binary data).
257
+ */
258
+ export type Transport = {
259
+ /**
260
+ * Perform an HTTP GET request to the specified URL with the included options.
261
+ *
262
+ * @param url The URL to request.
263
+ * @param options Additional options for the request (headers, responseType, signal).
264
+ * @returns The parsed response body from a successful request.
265
+ *
266
+ * @throws {TypeError} If parsing the response fails.
267
+ * @throws {JMAPRequestError} For JMAP-specific protocol errors with non-200 status codes
268
+ * and JSON response bodies conforming to RFC 7807 Problem Details.
269
+ * @throws {Error} For network errors, timeouts, and other request failures.
270
+ */
271
+ get: <T>(url: string | URL, options?: Omit<TransportRequestOptions, "body">) => Promise<T>;
272
+ /**
273
+ * Perform an HTTP POST request to the specified URL with the included options.
274
+ *
275
+ * @param url The URL to request.
276
+ * @param options Additional options for the request (body, headers, responseType, signal).
277
+ * @returns The parsed response body from a successful request.
278
+ *
279
+ * @throws {TypeError} If parsing the response fails.
280
+ * @throws {JMAPRequestError} For JMAP-specific protocol errors with non-200 status codes
281
+ * and JSON response bodies conforming to RFC 7807 Problem Details.
282
+ * @throws {Error} For network errors, timeouts, and other request failures.
283
+ */
284
+ post: <T>(url: string | URL, options?: TransportRequestOptions) => Promise<T>;
285
+ };
286
+ export declare const AccountSchema: z.ZodObject<{
287
+ name: z.ZodString;
288
+ isPersonal: z.ZodBoolean;
289
+ isReadOnly: z.ZodBoolean;
290
+ accountCapabilities: z.ZodObject<{}, z.core.$loose>;
291
+ }, z.core.$loose>;
292
+ /**
293
+ * Account
294
+ *
295
+ * Represents a JMAP account as described in the JMAP Session object.
296
+ *
297
+ * @see {@link https://www.rfc-editor.org/rfc/rfc8620.html#section-1.6.2 RFC 8620 Section 1.6.2 - Accounts}
298
+ */
299
+ export type JMAPAccount = {
300
+ /**
301
+ * A user-friendly string to show when presenting content from this account, e.g., the email
302
+ * address representing the owner of the account.
303
+ */
304
+ name: string;
305
+ /**
306
+ * This is true if the account belongs to the authenticated user rather than a group account or
307
+ * a personal account of another user that has been shared with them.
308
+ */
309
+ isPersonal: boolean;
310
+ /** This is true if the entire account is read-only. */
311
+ isReadOnly: boolean;
312
+ /**
313
+ * The set of capability URIs for the methods supported in this account. Each key is a URI for a
314
+ * capability that has methods you can use with this account. The value for each of these keys
315
+ * is an object with further information about the account’s permissions and restrictions with
316
+ * respect to this capability, as defined in the capability’s specification.
317
+ */
318
+ accountCapabilities: JMAPAccountCapabilities;
319
+ };
320
+ export declare const JMAPSessionSchema: z.ZodObject<{
321
+ capabilities: z.ZodObject<{
322
+ "urn:ietf:params:jmap:core": z.ZodObject<{}, z.core.$loose>;
323
+ }, z.core.$loose>;
324
+ accounts: z.ZodRecord<z.ZodString, z.ZodObject<{
325
+ name: z.ZodString;
326
+ isPersonal: z.ZodBoolean;
327
+ isReadOnly: z.ZodBoolean;
328
+ accountCapabilities: z.ZodObject<{}, z.core.$loose>;
329
+ }, z.core.$loose>>;
330
+ primaryAccounts: z.ZodRecord<z.ZodString, z.ZodString>;
331
+ username: z.ZodString;
332
+ apiUrl: z.ZodString;
333
+ downloadUrl: z.ZodString;
334
+ uploadUrl: z.ZodString;
335
+ eventSourceUrl: z.ZodString;
336
+ state: z.ZodString;
337
+ }, z.core.$loose>;
338
+ /**
339
+ * JMAPSession
340
+ *
341
+ * The session object returned by the JMAP server's well-known endpoint.
342
+ *
343
+ * @see {@link https://www.rfc-editor.org/rfc/rfc8620.html#section-2 RFC 8620 Section 2 - The JMAP Session Resource}
344
+ */
345
+ export type JMAPSession = Readonly<{
346
+ /**
347
+ * An object specifying the capabilities of this server. Each key is a URI for a capability
348
+ * supported by the server. The value for each of these keys is an object with further
349
+ * information about the server’s capabilities in relation to that capability.
350
+ */
351
+ capabilities: JMAPServerCapabilities;
352
+ /**
353
+ * A map of an account id to an Account object for each account the user has access to.
354
+ */
355
+ accounts: Record<Id, JMAPAccount>;
356
+ /**
357
+ * A map of capability URIs (as found in accountCapabilities) to the account id that is
358
+ * considered to be the user’s main or default account for data pertaining to that capability.
359
+ * If no account being returned belongs to the user, or in any other way there is no
360
+ * appropriate way to determine a default account, there MAY be no entry for a particular URI,
361
+ * even though that capability is supported by the server (and in the capabilities object).
362
+ * `urn:ietf:params:jmap:core` SHOULD NOT be present.
363
+ */
364
+ primaryAccounts: Partial<Record<JMAPCapabilityUri, Id>>;
365
+ /**
366
+ * The username associated with the given credentials, or the empty string if none.
367
+ */
368
+ username: string;
369
+ /** The URL to use for JMAP API requests. */
370
+ apiUrl: string;
371
+ /**
372
+ * The URL endpoint to use when downloading files, in URI Template (level 1) format
373
+ * {@link https://www.rfc-editor.org/rfc/rfc6570.html RFC 6570}. The URL MUST contain variables called
374
+ * `accountId`, `blobId`, `type`, and `name`.
375
+ *
376
+ * Due to potential encoding issues with slashes in content types, it is RECOMMENDED to put the
377
+ * type variable in the query section of the URL.
378
+ */
379
+ downloadUrl: string;
380
+ /**
381
+ * The URL endpoint to use when uploading files, in URI Template (level 1) format
382
+ * {@link https://www.rfc-editor.org/rfc/rfc6570.html RFC 6570}. The URL MUST contain a variable
383
+ * called `accountId`.
384
+ */
385
+ uploadUrl: string;
386
+ /**
387
+ * The URL to connect to for push events, as described in Section 7.3, in URI Template (level 1)
388
+ * format {@link https://www.rfc-editor.org/rfc/rfc6570.html RFC 6570}. The URL MUST contain variables
389
+ * called `types`, `closeafter`, and `ping`.
390
+ */
391
+ eventSourceUrl: string;
392
+ /**
393
+ * A (preferably short) string representing the state of this object on the server. If the value
394
+ * of any other property on the Session object changes, this string will change. The current
395
+ * value is also returned on the API Response object (see Section 3.4), allowing clients to
396
+ * quickly determine if the session information has changed (e.g., an account has been added
397
+ * or removed), so they need to refetch the object.
398
+ */
399
+ state: string;
400
+ }>;
401
+ export type JMAPSessionFromSchema = z.infer<typeof JMAPSessionSchema>;
402
+ /**
403
+ * JMAPUploadResponse
404
+ *
405
+ * The response object from a successful file upload operation.
406
+ *
407
+ * @see {@link https://www.rfc-editor.org/rfc/rfc8620.html#section-6.1 RFC 8620 Section 6.1 - Uploading Binary Data}
408
+ */
409
+ export type JMAPUploadResponse = {
410
+ /**
411
+ * The id of the account the file was uploaded to.
412
+ */
413
+ accountId: Id;
414
+ /**
415
+ * A unique identifier for the uploaded blob.
416
+ */
417
+ blobId: Id;
418
+ /**
419
+ * The media type of the file, as specified in the Content-Type header.
420
+ */
421
+ type: string;
422
+ /**
423
+ * The size of the file in octets.
424
+ */
425
+ size: number;
426
+ };
427
+ export type HeadersInit = Exclude<ConstructorParameters<typeof Headers>[0], undefined>;
@@ -0,0 +1,21 @@
1
+ import { z } from "zod/v4";
2
+ import { JMAPAccountCapabilitiesSchema, JMAPServerCapabilitiesSchema } from "../common/types.js";
3
+ export const AccountSchema = z.looseObject({
4
+ name: z.string(),
5
+ isPersonal: z.boolean(),
6
+ isReadOnly: z.boolean(),
7
+ accountCapabilities: JMAPAccountCapabilitiesSchema,
8
+ });
9
+ //JMAPSession
10
+ export const JMAPSessionSchema = z.looseObject({
11
+ capabilities: JMAPServerCapabilitiesSchema,
12
+ accounts: z.record(z.string(), AccountSchema),
13
+ primaryAccounts: z.record(z.string(), z.string()),
14
+ username: z.string(),
15
+ apiUrl: z.string(),
16
+ downloadUrl: z.string(),
17
+ uploadUrl: z.string(),
18
+ eventSourceUrl: z.string(),
19
+ state: z.string(),
20
+ });
21
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/jmap-client/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAe3B,OAAO,EAAE,6BAA6B,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAmVjG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;IACvB,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;IACvB,mBAAmB,EAAE,6BAA6B;CACrD,CAAC,CAAC;AAkCH,aAAa;AACb,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC;IAC3C,YAAY,EAAE,4BAA4B;IAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC;IAC7C,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACjD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Creates an AbortController that is managed internally, but will also be aborted
3
+ * if the provided external signal is aborted.
4
+ *
5
+ * @param externalSignal An optional AbortSignal from the consumer.
6
+ * @returns The internally managed AbortController.
7
+ */
8
+ export declare function createAbortController(externalSignal?: AbortSignal): AbortController;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Creates an AbortController that is managed internally, but will also be aborted
3
+ * if the provided external signal is aborted.
4
+ *
5
+ * @param externalSignal An optional AbortSignal from the consumer.
6
+ * @returns The internally managed AbortController.
7
+ */
8
+ export function createAbortController(externalSignal) {
9
+ const controller = new AbortController();
10
+ if (externalSignal) {
11
+ if (externalSignal.aborted) {
12
+ controller.abort();
13
+ }
14
+ else {
15
+ const onAbort = () => controller.abort();
16
+ externalSignal.addEventListener("abort", onAbort, { once: true });
17
+ controller.signal.addEventListener("abort", () => {
18
+ externalSignal.removeEventListener("abort", onAbort);
19
+ });
20
+ }
21
+ }
22
+ return controller;
23
+ }
24
+ //# sourceMappingURL=abort-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort-controller.js","sourceRoot":"","sources":["../../../../src/jmap-client/utils/abort-controller.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,cAA4B;IAC9D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,IAAI,cAAc,EAAE,CAAC;QACjB,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YACzB,UAAU,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;aAAM,CAAC;YACJ,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACzC,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC7C,cAAc,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ConnectionStatus } from "../types.js";
2
+ /**
3
+ * Assert that the connection status is 'connected'.
4
+ * @param status - The current connection status.
5
+ * @throws Error if the status is not 'connected'.
6
+ */
7
+ export declare function assertConnected(status: ConnectionStatus): asserts status is "connected";
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Assert that the connection status is 'connected'.
3
+ * @param status - The current connection status.
4
+ * @throws Error if the status is not 'connected'.
5
+ */
6
+ export function assertConnected(status) {
7
+ if (status !== "connected") {
8
+ throw new Error("Client is not connected to a JMAP server");
9
+ }
10
+ }
11
+ //# sourceMappingURL=assert-connected.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert-connected.js","sourceRoot":"","sources":["../../../../src/jmap-client/utils/assert-connected.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAwB;IACpD,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAChE,CAAC;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Deep freeze an object and all nested objects/functions within it.
3
+ * @template T - The type of the object to freeze.
4
+ * @param o - The object to deeply freeze.
5
+ * @returns The deeply frozen (immutable) object.
6
+ */
7
+ export declare function deepFreeze<T extends object>(o: T): Readonly<T>;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Deep freeze an object and all nested objects/functions within it.
3
+ * @template T - The type of the object to freeze.
4
+ * @param o - The object to deeply freeze.
5
+ * @returns The deeply frozen (immutable) object.
6
+ */
7
+ export function deepFreeze(o) {
8
+ const propNames = Reflect.ownKeys(o);
9
+ for (const name of propNames) {
10
+ const value = o[name];
11
+ if ((value && typeof value === "object") || typeof value === "function") {
12
+ deepFreeze(value);
13
+ }
14
+ }
15
+ return Object.freeze(o);
16
+ }
17
+ //# sourceMappingURL=deep-freeze.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-freeze.js","sourceRoot":"","sources":["../../../../src/jmap-client/utils/deep-freeze.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAmB,CAAI;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,IAAsB,CAAY,CAAC;QACnD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YACtE,UAAU,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { EventEmitterFn } from "../types.js";
2
+ /**
3
+ * Create a safe event emitter function that wraps an external emitter implementation.
4
+ * The returned function wraps the emitter in try/catch to prevent errors in the emitter from affecting the application.
5
+ *
6
+ * @param getCurrentEmitter A function that returns the current emitter implementation
7
+ * @returns A safe event emitter function
8
+ */
9
+ export declare function createEmitter(getCurrentEmitter: () => EventEmitterFn | undefined): EventEmitterFn;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Create a safe event emitter function that wraps an external emitter implementation.
3
+ * The returned function wraps the emitter in try/catch to prevent errors in the emitter from affecting the application.
4
+ *
5
+ * @param getCurrentEmitter A function that returns the current emitter implementation
6
+ * @returns A safe event emitter function
7
+ */
8
+ export function createEmitter(getCurrentEmitter) {
9
+ return (name, payload) => {
10
+ try {
11
+ getCurrentEmitter()?.(name, payload);
12
+ }
13
+ catch {
14
+ // Ignore any errors from the external emitter
15
+ }
16
+ };
17
+ }
18
+ //# sourceMappingURL=emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../../../src/jmap-client/utils/emitter.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,iBAAmD;IAC7E,OAAO,CAAmC,IAAO,EAAE,OAA4B,EAAE,EAAE;QAC/E,IAAI,CAAC;YACD,iBAAiB,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACL,8CAA8C;QAClD,CAAC;IACL,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { JMAPCapability } from "../../common/types.js";
2
+ import type { JMAPSession, JMAPSessionFromSchema } from "../types.js";
3
+ /**
4
+ * Construct a new session object with invalid capabilities filtered out, then deep-freeze it.
5
+ *
6
+ * - Server-level failures cause the capability to be removed from `capabilities`,
7
+ * all `account.accountCapabilities`, and `primaryAccounts`.
8
+ * - Account-level failures cause the capability to be removed from that specific
9
+ * account's `accountCapabilities` and, if the account was the primary for that
10
+ * capability, from `primaryAccounts`.
11
+ *
12
+ * @param session The parsed (mutable) session from structural validation
13
+ * @param serverFailures Server capabilities that failed schema validation
14
+ * @param accountFailures Account capabilities that failed schema validation
15
+ * @returns A deeply frozen JMAPSession with invalid capabilities removed
16
+ */
17
+ export declare function filterSessionCapabilities(session: JMAPSessionFromSchema, serverFailures: {
18
+ uri: JMAPCapability;
19
+ }[], accountFailures: {
20
+ uri: JMAPCapability;
21
+ accountId: string;
22
+ }[]): JMAPSession;