imapkit 4.0.3 → 4.1.0

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 (485) hide show
  1. package/README.md +32 -19
  2. package/bin/imapkit.js +12 -16
  3. package/dist/cjs/addressparser.d.ts +21 -0
  4. package/dist/cjs/addressparser.js +277 -0
  5. package/dist/cjs/arguments.d.ts +31 -0
  6. package/{lib → dist/cjs}/arguments.js +9 -21
  7. package/dist/cjs/bodystructure.d.ts +25 -0
  8. package/dist/cjs/bodystructure.js +150 -0
  9. package/dist/cjs/cert.d.ts +2 -0
  10. package/dist/cjs/cert.js +7 -0
  11. package/dist/cjs/command-states.d.ts +36 -0
  12. package/dist/cjs/command-states.js +102 -0
  13. package/dist/cjs/commands/append.d.ts +88 -0
  14. package/dist/cjs/commands/append.js +299 -0
  15. package/dist/cjs/commands/capability.d.ts +2 -0
  16. package/dist/cjs/commands/capability.js +44 -0
  17. package/dist/cjs/commands/check.d.ts +2 -0
  18. package/dist/cjs/commands/check.js +28 -0
  19. package/dist/cjs/commands/close.d.ts +2 -0
  20. package/dist/cjs/commands/close.js +35 -0
  21. package/dist/cjs/commands/copy.d.ts +30 -0
  22. package/dist/cjs/commands/copy.js +107 -0
  23. package/dist/cjs/commands/create.d.ts +2 -0
  24. package/dist/cjs/commands/create.js +53 -0
  25. package/dist/cjs/commands/delete.d.ts +2 -0
  26. package/dist/cjs/commands/delete.js +63 -0
  27. package/dist/cjs/commands/examine.d.ts +2 -0
  28. package/dist/cjs/commands/examine.js +19 -0
  29. package/dist/cjs/commands/expunge.d.ts +2 -0
  30. package/dist/cjs/commands/expunge.js +32 -0
  31. package/dist/cjs/commands/fetch.d.ts +23 -0
  32. package/dist/cjs/commands/fetch.js +208 -0
  33. package/dist/cjs/commands/handlers/fetch.d.ts +12 -0
  34. package/dist/cjs/commands/handlers/fetch.js +195 -0
  35. package/dist/cjs/commands/handlers/flags.d.ts +17 -0
  36. package/dist/cjs/commands/handlers/flags.js +39 -0
  37. package/dist/cjs/commands/handlers/search.d.ts +85 -0
  38. package/dist/cjs/commands/handlers/search.js +504 -0
  39. package/dist/cjs/commands/handlers/status.d.ts +34 -0
  40. package/dist/cjs/commands/handlers/status.js +81 -0
  41. package/dist/cjs/commands/handlers/store.d.ts +3 -0
  42. package/dist/cjs/commands/handlers/store.js +117 -0
  43. package/dist/cjs/commands/index.d.ts +2 -0
  44. package/dist/cjs/commands/index.js +61 -0
  45. package/dist/cjs/commands/list.d.ts +2 -0
  46. package/dist/cjs/commands/list.js +86 -0
  47. package/dist/cjs/commands/login.d.ts +2 -0
  48. package/dist/cjs/commands/login.js +62 -0
  49. package/dist/cjs/commands/logout.d.ts +2 -0
  50. package/dist/cjs/commands/logout.js +40 -0
  51. package/dist/cjs/commands/lsub.d.ts +2 -0
  52. package/dist/cjs/commands/lsub.js +79 -0
  53. package/dist/cjs/commands/noop.d.ts +2 -0
  54. package/dist/cjs/commands/noop.js +28 -0
  55. package/dist/cjs/commands/rename.d.ts +2 -0
  56. package/dist/cjs/commands/rename.js +98 -0
  57. package/dist/cjs/commands/search.d.ts +10 -0
  58. package/dist/cjs/commands/search.js +71 -0
  59. package/dist/cjs/commands/select.d.ts +19 -0
  60. package/dist/cjs/commands/select.js +230 -0
  61. package/dist/cjs/commands/status.d.ts +2 -0
  62. package/dist/cjs/commands/status.js +57 -0
  63. package/dist/cjs/commands/store.d.ts +10 -0
  64. package/dist/cjs/commands/store.js +134 -0
  65. package/dist/cjs/commands/subscribe.d.ts +2 -0
  66. package/dist/cjs/commands/subscribe.js +51 -0
  67. package/dist/cjs/commands/uid-copy.d.ts +2 -0
  68. package/dist/cjs/commands/uid-copy.js +19 -0
  69. package/dist/cjs/commands/uid-fetch.d.ts +3 -0
  70. package/dist/cjs/commands/uid-fetch.js +17 -0
  71. package/dist/cjs/commands/uid-search.d.ts +3 -0
  72. package/dist/cjs/commands/uid-search.js +17 -0
  73. package/dist/cjs/commands/uid-store.d.ts +3 -0
  74. package/dist/cjs/commands/uid-store.js +17 -0
  75. package/dist/cjs/commands/unsubscribe.d.ts +2 -0
  76. package/dist/cjs/commands/unsubscribe.js +50 -0
  77. package/dist/cjs/dates.d.ts +64 -0
  78. package/dist/cjs/dates.js +124 -0
  79. package/dist/cjs/deflate-layer.d.ts +83 -0
  80. package/dist/cjs/deflate-layer.js +232 -0
  81. package/dist/cjs/encoded-words.d.ts +15 -0
  82. package/dist/cjs/encoded-words.js +85 -0
  83. package/dist/cjs/envelope.d.ts +33 -0
  84. package/dist/cjs/envelope.js +86 -0
  85. package/dist/cjs/esearch.d.ts +96 -0
  86. package/dist/cjs/esearch.js +190 -0
  87. package/dist/cjs/framing.d.ts +66 -0
  88. package/{lib → dist/cjs}/framing.js +9 -26
  89. package/dist/cjs/index.d.ts +9 -0
  90. package/dist/cjs/index.js +56 -0
  91. package/dist/cjs/list-extensions.d.ts +50 -0
  92. package/dist/cjs/list-extensions.js +35 -0
  93. package/dist/cjs/load-plugins.d.ts +21 -0
  94. package/dist/cjs/load-plugins.js +89 -0
  95. package/dist/cjs/mailbox-name.d.ts +26 -0
  96. package/dist/cjs/mailbox-name.js +127 -0
  97. package/dist/cjs/mimeparser.d.ts +137 -0
  98. package/dist/cjs/mimeparser.js +727 -0
  99. package/dist/cjs/mock-client.d.ts +39 -0
  100. package/dist/cjs/mock-client.js +236 -0
  101. package/dist/cjs/numbers.d.ts +28 -0
  102. package/dist/cjs/numbers.js +52 -0
  103. package/dist/cjs/package.json +3 -0
  104. package/dist/cjs/plugins/acl.d.ts +2 -0
  105. package/dist/cjs/plugins/acl.js +888 -0
  106. package/dist/cjs/plugins/appendlimit.d.ts +16 -0
  107. package/dist/cjs/plugins/appendlimit.js +87 -0
  108. package/dist/cjs/plugins/auth-plain.d.ts +2 -0
  109. package/dist/cjs/plugins/auth-plain.js +89 -0
  110. package/dist/cjs/plugins/binary.d.ts +30 -0
  111. package/dist/cjs/plugins/binary.js +247 -0
  112. package/dist/cjs/plugins/catenate.d.ts +14 -0
  113. package/dist/cjs/plugins/catenate.js +250 -0
  114. package/dist/cjs/plugins/compress.d.ts +7 -0
  115. package/dist/cjs/plugins/compress.js +79 -0
  116. package/dist/cjs/plugins/condstore.d.ts +5 -0
  117. package/dist/cjs/plugins/condstore.js +492 -0
  118. package/dist/cjs/plugins/context-search.d.ts +8 -0
  119. package/dist/cjs/plugins/context-search.js +304 -0
  120. package/dist/cjs/plugins/context-sort.d.ts +6 -0
  121. package/dist/cjs/plugins/context-sort.js +32 -0
  122. package/dist/cjs/plugins/create-special-use.d.ts +7 -0
  123. package/dist/cjs/plugins/create-special-use.js +101 -0
  124. package/dist/cjs/plugins/enable.d.ts +23 -0
  125. package/dist/cjs/plugins/enable.js +127 -0
  126. package/dist/cjs/plugins/esearch.d.ts +6 -0
  127. package/dist/cjs/plugins/esearch.js +142 -0
  128. package/dist/cjs/plugins/esort.d.ts +6 -0
  129. package/dist/cjs/plugins/esort.js +60 -0
  130. package/dist/cjs/plugins/id.d.ts +5 -0
  131. package/dist/cjs/plugins/id.js +123 -0
  132. package/dist/cjs/plugins/idle.d.ts +5 -0
  133. package/dist/cjs/plugins/idle.js +85 -0
  134. package/dist/cjs/plugins/imap4rev2.d.ts +6 -0
  135. package/dist/cjs/plugins/imap4rev2.js +184 -0
  136. package/dist/cjs/plugins/index.d.ts +2 -0
  137. package/dist/cjs/plugins/index.js +119 -0
  138. package/dist/cjs/plugins/list-extended.d.ts +2 -0
  139. package/dist/cjs/plugins/list-extended.js +235 -0
  140. package/dist/cjs/plugins/list-status.d.ts +6 -0
  141. package/dist/cjs/plugins/list-status.js +42 -0
  142. package/dist/cjs/plugins/literalminus.d.ts +8 -0
  143. package/dist/cjs/plugins/literalminus.js +32 -0
  144. package/dist/cjs/plugins/literalplus.d.ts +6 -0
  145. package/dist/cjs/plugins/literalplus.js +30 -0
  146. package/dist/cjs/plugins/logindisabled.d.ts +5 -0
  147. package/dist/cjs/plugins/logindisabled.js +54 -0
  148. package/dist/cjs/plugins/messagelimit.d.ts +19 -0
  149. package/dist/cjs/plugins/messagelimit.js +227 -0
  150. package/dist/cjs/plugins/metadata-server.d.ts +7 -0
  151. package/dist/cjs/plugins/metadata-server.js +24 -0
  152. package/dist/cjs/plugins/metadata.d.ts +11 -0
  153. package/dist/cjs/plugins/metadata.js +436 -0
  154. package/dist/cjs/plugins/move.d.ts +11 -0
  155. package/dist/cjs/plugins/move.js +96 -0
  156. package/dist/cjs/plugins/multiappend.d.ts +12 -0
  157. package/dist/cjs/plugins/multiappend.js +38 -0
  158. package/dist/cjs/plugins/multisearch.d.ts +6 -0
  159. package/dist/cjs/plugins/multisearch.js +263 -0
  160. package/dist/cjs/plugins/namespace.d.ts +5 -0
  161. package/dist/cjs/plugins/namespace.js +57 -0
  162. package/dist/cjs/plugins/notify.d.ts +2 -0
  163. package/dist/cjs/plugins/notify.js +628 -0
  164. package/dist/cjs/plugins/oauthbearer.d.ts +32 -0
  165. package/dist/cjs/plugins/oauthbearer.js +202 -0
  166. package/dist/cjs/plugins/objectid.d.ts +23 -0
  167. package/dist/cjs/plugins/objectid.js +221 -0
  168. package/dist/cjs/plugins/partial.d.ts +6 -0
  169. package/dist/cjs/plugins/partial.js +78 -0
  170. package/dist/cjs/plugins/preview.d.ts +31 -0
  171. package/dist/cjs/plugins/preview.js +378 -0
  172. package/dist/cjs/plugins/qresync.d.ts +11 -0
  173. package/dist/cjs/plugins/qresync.js +473 -0
  174. package/dist/cjs/plugins/quota.d.ts +18 -0
  175. package/dist/cjs/plugins/quota.js +254 -0
  176. package/dist/cjs/plugins/replace.d.ts +14 -0
  177. package/dist/cjs/plugins/replace.js +130 -0
  178. package/dist/cjs/plugins/sasl-ir.d.ts +5 -0
  179. package/dist/cjs/plugins/sasl-ir.js +24 -0
  180. package/dist/cjs/plugins/savedate.d.ts +17 -0
  181. package/dist/cjs/plugins/savedate.js +64 -0
  182. package/dist/cjs/plugins/savelimit.d.ts +10 -0
  183. package/dist/cjs/plugins/savelimit.js +30 -0
  184. package/dist/cjs/plugins/searchres.d.ts +6 -0
  185. package/dist/cjs/plugins/searchres.js +91 -0
  186. package/dist/cjs/plugins/sort-display.d.ts +11 -0
  187. package/dist/cjs/plugins/sort-display.js +37 -0
  188. package/dist/cjs/plugins/sort.d.ts +11 -0
  189. package/dist/cjs/plugins/sort.js +125 -0
  190. package/dist/cjs/plugins/special-use.d.ts +10 -0
  191. package/dist/cjs/plugins/special-use.js +95 -0
  192. package/dist/cjs/plugins/starttls.d.ts +5 -0
  193. package/dist/cjs/plugins/starttls.js +55 -0
  194. package/dist/cjs/plugins/status-size.d.ts +7 -0
  195. package/dist/cjs/plugins/status-size.js +30 -0
  196. package/dist/cjs/plugins/thread-orderedsubject.d.ts +11 -0
  197. package/dist/cjs/plugins/thread-orderedsubject.js +28 -0
  198. package/dist/cjs/plugins/thread-references.d.ts +11 -0
  199. package/dist/cjs/plugins/thread-references.js +28 -0
  200. package/dist/cjs/plugins/uidonly.d.ts +15 -0
  201. package/dist/cjs/plugins/uidonly.js +126 -0
  202. package/dist/cjs/plugins/uidplus.d.ts +15 -0
  203. package/dist/cjs/plugins/uidplus.js +119 -0
  204. package/dist/cjs/plugins/unauthenticate.d.ts +7 -0
  205. package/dist/cjs/plugins/unauthenticate.js +32 -0
  206. package/dist/cjs/plugins/unselect.d.ts +5 -0
  207. package/dist/cjs/plugins/unselect.js +36 -0
  208. package/dist/cjs/plugins/utf8-accept.d.ts +6 -0
  209. package/dist/cjs/plugins/utf8-accept.js +72 -0
  210. package/dist/cjs/plugins/x-gm-ext-1.d.ts +26 -0
  211. package/dist/cjs/plugins/x-gm-ext-1.js +422 -0
  212. package/dist/cjs/plugins/xoauth2.d.ts +2 -0
  213. package/dist/cjs/plugins/xoauth2.js +155 -0
  214. package/dist/cjs/plugins/xtoybird.d.ts +2 -0
  215. package/dist/cjs/plugins/xtoybird.js +236 -0
  216. package/dist/cjs/server.d.ts +876 -0
  217. package/dist/cjs/server.js +2597 -0
  218. package/dist/cjs/smtp-listener.d.ts +13 -0
  219. package/dist/cjs/smtp-listener.js +47 -0
  220. package/dist/cjs/sorting.d.ts +77 -0
  221. package/dist/cjs/sorting.js +290 -0
  222. package/dist/cjs/threading.d.ts +30 -0
  223. package/dist/cjs/threading.js +318 -0
  224. package/dist/cjs/types.d.ts +327 -0
  225. package/dist/cjs/types.js +3 -0
  226. package/dist/cjs/utf8-session.d.ts +17 -0
  227. package/dist/cjs/utf8-session.js +148 -0
  228. package/dist/cjs/vanished.d.ts +21 -0
  229. package/dist/cjs/vanished.js +55 -0
  230. package/dist/esm/addressparser.d.ts +21 -0
  231. package/{lib → dist/esm}/addressparser.js +102 -123
  232. package/dist/esm/arguments.d.ts +31 -0
  233. package/dist/esm/arguments.js +96 -0
  234. package/dist/esm/bodystructure.d.ts +25 -0
  235. package/{lib → dist/esm}/bodystructure.js +17 -33
  236. package/dist/esm/cert.d.ts +2 -0
  237. package/dist/esm/cert.js +4 -0
  238. package/dist/esm/command-states.d.ts +36 -0
  239. package/{lib → dist/esm}/command-states.js +4 -16
  240. package/dist/esm/commands/append.d.ts +88 -0
  241. package/{lib → dist/esm}/commands/append.js +47 -85
  242. package/dist/esm/commands/capability.d.ts +2 -0
  243. package/dist/esm/commands/capability.js +29 -0
  244. package/dist/esm/commands/check.d.ts +2 -0
  245. package/dist/esm/commands/check.js +13 -0
  246. package/dist/esm/commands/close.d.ts +2 -0
  247. package/dist/esm/commands/close.js +20 -0
  248. package/dist/esm/commands/copy.d.ts +30 -0
  249. package/{lib → dist/esm}/commands/copy.js +31 -55
  250. package/dist/esm/commands/create.d.ts +2 -0
  251. package/{lib → dist/esm}/commands/create.js +25 -39
  252. package/dist/esm/commands/delete.d.ts +2 -0
  253. package/{lib → dist/esm}/commands/delete.js +25 -41
  254. package/dist/esm/commands/examine.d.ts +2 -0
  255. package/dist/esm/commands/examine.js +4 -0
  256. package/dist/esm/commands/expunge.d.ts +2 -0
  257. package/dist/esm/commands/expunge.js +17 -0
  258. package/dist/esm/commands/fetch.d.ts +23 -0
  259. package/{lib → dist/esm}/commands/fetch.js +33 -74
  260. package/dist/esm/commands/handlers/fetch.d.ts +12 -0
  261. package/{lib → dist/esm}/commands/handlers/fetch.js +11 -42
  262. package/dist/esm/commands/handlers/flags.d.ts +17 -0
  263. package/{lib → dist/esm}/commands/handlers/flags.js +3 -11
  264. package/dist/esm/commands/handlers/search.d.ts +85 -0
  265. package/{lib → dist/esm}/commands/handlers/search.js +33 -71
  266. package/dist/esm/commands/handlers/status.d.ts +34 -0
  267. package/{lib → dist/esm}/commands/handlers/status.js +1 -9
  268. package/dist/esm/commands/handlers/store.d.ts +3 -0
  269. package/{lib → dist/esm}/commands/handlers/store.js +20 -44
  270. package/dist/esm/commands/index.d.ts +2 -0
  271. package/dist/esm/commands/index.js +55 -0
  272. package/dist/esm/commands/list.d.ts +2 -0
  273. package/dist/esm/commands/list.js +71 -0
  274. package/dist/esm/commands/login.d.ts +2 -0
  275. package/{lib → dist/esm}/commands/login.js +24 -44
  276. package/dist/esm/commands/logout.d.ts +2 -0
  277. package/dist/esm/commands/logout.js +25 -0
  278. package/dist/esm/commands/lsub.d.ts +2 -0
  279. package/dist/esm/commands/lsub.js +64 -0
  280. package/dist/esm/commands/noop.d.ts +2 -0
  281. package/dist/esm/commands/noop.js +13 -0
  282. package/dist/esm/commands/rename.d.ts +2 -0
  283. package/{lib → dist/esm}/commands/rename.js +32 -51
  284. package/dist/esm/commands/search.d.ts +10 -0
  285. package/dist/esm/commands/search.js +54 -0
  286. package/dist/esm/commands/select.d.ts +19 -0
  287. package/dist/esm/commands/select.js +214 -0
  288. package/dist/esm/commands/status.d.ts +2 -0
  289. package/{lib → dist/esm}/commands/status.js +18 -39
  290. package/dist/esm/commands/store.d.ts +10 -0
  291. package/{lib → dist/esm}/commands/store.js +39 -73
  292. package/dist/esm/commands/subscribe.d.ts +2 -0
  293. package/{lib → dist/esm}/commands/subscribe.js +22 -39
  294. package/dist/esm/commands/uid-copy.d.ts +2 -0
  295. package/dist/esm/commands/uid-copy.js +4 -0
  296. package/dist/esm/commands/uid-fetch.d.ts +3 -0
  297. package/dist/esm/commands/uid-fetch.js +3 -0
  298. package/dist/esm/commands/uid-search.d.ts +3 -0
  299. package/dist/esm/commands/uid-search.js +3 -0
  300. package/dist/esm/commands/uid-store.d.ts +3 -0
  301. package/dist/esm/commands/uid-store.js +3 -0
  302. package/dist/esm/commands/unsubscribe.d.ts +2 -0
  303. package/{lib → dist/esm}/commands/unsubscribe.js +22 -37
  304. package/dist/esm/dates.d.ts +64 -0
  305. package/{lib → dist/esm}/dates.js +6 -14
  306. package/dist/esm/deflate-layer.d.ts +83 -0
  307. package/{lib → dist/esm}/deflate-layer.js +9 -26
  308. package/dist/esm/encoded-words.d.ts +15 -0
  309. package/{lib → dist/esm}/encoded-words.js +9 -25
  310. package/dist/esm/envelope.d.ts +33 -0
  311. package/{lib → dist/esm}/envelope.js +8 -19
  312. package/dist/esm/esearch.d.ts +96 -0
  313. package/{lib → dist/esm}/esearch.js +12 -39
  314. package/dist/esm/framing.d.ts +66 -0
  315. package/dist/esm/framing.js +82 -0
  316. package/dist/esm/index.d.ts +9 -0
  317. package/dist/esm/index.js +6 -0
  318. package/dist/esm/list-extensions.d.ts +50 -0
  319. package/{lib → dist/esm}/list-extensions.js +1 -4
  320. package/dist/esm/load-plugins.d.ts +21 -0
  321. package/{lib → dist/esm}/load-plugins.js +9 -43
  322. package/dist/esm/mailbox-name.d.ts +26 -0
  323. package/{lib → dist/esm}/mailbox-name.js +5 -26
  324. package/dist/esm/mimeparser.d.ts +137 -0
  325. package/{lib → dist/esm}/mimeparser.js +74 -152
  326. package/dist/esm/mock-client.d.ts +39 -0
  327. package/{lib → dist/esm}/mock-client.js +26 -40
  328. package/dist/esm/numbers.d.ts +28 -0
  329. package/{lib → dist/esm}/numbers.js +1 -8
  330. package/dist/esm/package.json +3 -0
  331. package/dist/esm/plugins/acl.d.ts +2 -0
  332. package/{lib → dist/esm}/plugins/acl.js +146 -240
  333. package/dist/esm/plugins/appendlimit.d.ts +16 -0
  334. package/{lib → dist/esm}/plugins/appendlimit.js +5 -16
  335. package/dist/esm/plugins/auth-plain.d.ts +2 -0
  336. package/{lib → dist/esm}/plugins/auth-plain.js +11 -31
  337. package/dist/esm/plugins/binary.d.ts +30 -0
  338. package/{lib → dist/esm}/plugins/binary.js +17 -43
  339. package/dist/esm/plugins/catenate.d.ts +14 -0
  340. package/{lib → dist/esm}/plugins/catenate.js +19 -40
  341. package/dist/esm/plugins/compress.d.ts +7 -0
  342. package/dist/esm/plugins/compress.js +61 -0
  343. package/dist/esm/plugins/condstore.d.ts +5 -0
  344. package/{lib → dist/esm}/plugins/condstore.js +66 -152
  345. package/dist/esm/plugins/context-search.d.ts +8 -0
  346. package/{lib → dist/esm}/plugins/context-search.js +53 -88
  347. package/dist/esm/plugins/context-sort.d.ts +6 -0
  348. package/{lib → dist/esm}/plugins/context-sort.js +4 -9
  349. package/dist/esm/plugins/create-special-use.d.ts +7 -0
  350. package/{lib → dist/esm}/plugins/create-special-use.js +33 -55
  351. package/dist/esm/plugins/enable.d.ts +23 -0
  352. package/dist/esm/plugins/enable.js +111 -0
  353. package/dist/esm/plugins/esearch.d.ts +6 -0
  354. package/{lib → dist/esm}/plugins/esearch.js +13 -42
  355. package/dist/esm/plugins/esort.d.ts +6 -0
  356. package/{lib → dist/esm}/plugins/esort.js +7 -25
  357. package/dist/esm/plugins/id.d.ts +5 -0
  358. package/dist/esm/plugins/id.js +108 -0
  359. package/dist/esm/plugins/idle.d.ts +5 -0
  360. package/dist/esm/plugins/idle.js +70 -0
  361. package/dist/esm/plugins/imap4rev2.d.ts +6 -0
  362. package/{lib → dist/esm}/plugins/imap4rev2.js +24 -60
  363. package/dist/esm/plugins/index.d.ts +2 -0
  364. package/dist/esm/plugins/index.js +113 -0
  365. package/dist/esm/plugins/list-extended.d.ts +2 -0
  366. package/{lib → dist/esm}/plugins/list-extended.js +28 -66
  367. package/dist/esm/plugins/list-status.d.ts +6 -0
  368. package/{lib → dist/esm}/plugins/list-status.js +5 -12
  369. package/dist/esm/plugins/literalminus.d.ts +8 -0
  370. package/{lib → dist/esm}/plugins/literalminus.js +2 -5
  371. package/dist/esm/plugins/literalplus.d.ts +6 -0
  372. package/{lib → dist/esm}/plugins/literalplus.js +2 -5
  373. package/dist/esm/plugins/logindisabled.d.ts +5 -0
  374. package/dist/esm/plugins/logindisabled.js +39 -0
  375. package/dist/esm/plugins/messagelimit.d.ts +19 -0
  376. package/{lib → dist/esm}/plugins/messagelimit.js +18 -41
  377. package/dist/esm/plugins/metadata-server.d.ts +7 -0
  378. package/{lib → dist/esm}/plugins/metadata-server.js +3 -7
  379. package/dist/esm/plugins/metadata.d.ts +11 -0
  380. package/dist/esm/plugins/metadata.js +421 -0
  381. package/dist/esm/plugins/move.d.ts +11 -0
  382. package/{lib → dist/esm}/plugins/move.js +37 -66
  383. package/dist/esm/plugins/multiappend.d.ts +12 -0
  384. package/{lib → dist/esm}/plugins/multiappend.js +2 -5
  385. package/dist/esm/plugins/multisearch.d.ts +6 -0
  386. package/{lib → dist/esm}/plugins/multisearch.js +24 -48
  387. package/dist/esm/plugins/namespace.d.ts +5 -0
  388. package/dist/esm/plugins/namespace.js +42 -0
  389. package/dist/esm/plugins/notify.d.ts +2 -0
  390. package/{lib → dist/esm}/plugins/notify.js +90 -134
  391. package/dist/esm/plugins/oauthbearer.d.ts +32 -0
  392. package/{lib → dist/esm}/plugins/oauthbearer.js +18 -48
  393. package/dist/esm/plugins/objectid.d.ts +23 -0
  394. package/{lib → dist/esm}/plugins/objectid.js +21 -58
  395. package/dist/esm/plugins/partial.d.ts +6 -0
  396. package/{lib → dist/esm}/plugins/partial.js +7 -15
  397. package/dist/esm/plugins/preview.d.ts +31 -0
  398. package/{lib → dist/esm}/plugins/preview.js +28 -66
  399. package/dist/esm/plugins/qresync.d.ts +11 -0
  400. package/{lib → dist/esm}/plugins/qresync.js +64 -134
  401. package/dist/esm/plugins/quota.d.ts +18 -0
  402. package/{lib → dist/esm}/plugins/quota.js +89 -135
  403. package/dist/esm/plugins/replace.d.ts +14 -0
  404. package/{lib → dist/esm}/plugins/replace.js +21 -51
  405. package/dist/esm/plugins/sasl-ir.d.ts +5 -0
  406. package/{lib → dist/esm}/plugins/sasl-ir.js +3 -6
  407. package/dist/esm/plugins/savedate.d.ts +17 -0
  408. package/{lib → dist/esm}/plugins/savedate.js +5 -15
  409. package/dist/esm/plugins/savelimit.d.ts +10 -0
  410. package/{lib → dist/esm}/plugins/savelimit.js +3 -6
  411. package/dist/esm/plugins/searchres.d.ts +6 -0
  412. package/{lib → dist/esm}/plugins/searchres.js +13 -22
  413. package/dist/esm/plugins/sort-display.d.ts +11 -0
  414. package/{lib → dist/esm}/plugins/sort-display.js +6 -10
  415. package/dist/esm/plugins/sort.d.ts +11 -0
  416. package/{lib → dist/esm}/plugins/sort.js +24 -46
  417. package/dist/esm/plugins/special-use.d.ts +10 -0
  418. package/{lib → dist/esm}/plugins/special-use.js +9 -24
  419. package/dist/esm/plugins/starttls.d.ts +5 -0
  420. package/{lib → dist/esm}/plugins/starttls.js +20 -37
  421. package/dist/esm/plugins/status-size.d.ts +7 -0
  422. package/{lib → dist/esm}/plugins/status-size.js +4 -11
  423. package/dist/esm/plugins/thread-orderedsubject.d.ts +11 -0
  424. package/{lib → dist/esm}/plugins/thread-orderedsubject.js +3 -6
  425. package/dist/esm/plugins/thread-references.d.ts +11 -0
  426. package/{lib → dist/esm}/plugins/thread-references.js +3 -6
  427. package/dist/esm/plugins/uidonly.d.ts +15 -0
  428. package/{lib → dist/esm}/plugins/uidonly.js +11 -35
  429. package/dist/esm/plugins/uidplus.d.ts +15 -0
  430. package/{lib → dist/esm}/plugins/uidplus.js +25 -45
  431. package/dist/esm/plugins/unauthenticate.d.ts +7 -0
  432. package/dist/esm/plugins/unauthenticate.js +17 -0
  433. package/dist/esm/plugins/unselect.d.ts +5 -0
  434. package/dist/esm/plugins/unselect.js +21 -0
  435. package/dist/esm/plugins/utf8-accept.d.ts +6 -0
  436. package/{lib → dist/esm}/plugins/utf8-accept.js +10 -21
  437. package/dist/esm/plugins/x-gm-ext-1.d.ts +26 -0
  438. package/{lib → dist/esm}/plugins/x-gm-ext-1.js +48 -100
  439. package/dist/esm/plugins/xoauth2.d.ts +2 -0
  440. package/dist/esm/plugins/xoauth2.js +140 -0
  441. package/dist/esm/plugins/xtoybird.d.ts +2 -0
  442. package/dist/esm/plugins/xtoybird.js +218 -0
  443. package/dist/esm/server.d.ts +876 -0
  444. package/dist/esm/server.js +2543 -0
  445. package/dist/esm/smtp-listener.d.ts +13 -0
  446. package/{lib → dist/esm}/smtp-listener.js +5 -12
  447. package/dist/esm/sorting.d.ts +77 -0
  448. package/{lib → dist/esm}/sorting.js +40 -53
  449. package/dist/esm/threading.d.ts +30 -0
  450. package/{lib → dist/esm}/threading.js +29 -70
  451. package/dist/esm/types.d.ts +327 -0
  452. package/dist/esm/types.js +2 -0
  453. package/dist/esm/utf8-session.d.ts +17 -0
  454. package/{lib → dist/esm}/utf8-session.js +15 -25
  455. package/dist/esm/vanished.d.ts +21 -0
  456. package/{lib → dist/esm}/vanished.js +16 -21
  457. package/dist/plugin-help.json +298 -0
  458. package/package.json +54 -11
  459. package/lib/commands/capability.js +0 -47
  460. package/lib/commands/check.js +0 -21
  461. package/lib/commands/close.js +0 -30
  462. package/lib/commands/examine.js +0 -7
  463. package/lib/commands/expunge.js +0 -27
  464. package/lib/commands/list.js +0 -100
  465. package/lib/commands/logout.js +0 -41
  466. package/lib/commands/lsub.js +0 -87
  467. package/lib/commands/noop.js +0 -21
  468. package/lib/commands/search.js +0 -76
  469. package/lib/commands/select.js +0 -289
  470. package/lib/commands/uid copy.js +0 -7
  471. package/lib/commands/uid fetch.js +0 -5
  472. package/lib/commands/uid search.js +0 -5
  473. package/lib/commands/uid store.js +0 -5
  474. package/lib/plugins/compress.js +0 -76
  475. package/lib/plugins/enable.js +0 -155
  476. package/lib/plugins/id.js +0 -138
  477. package/lib/plugins/idle.js +0 -105
  478. package/lib/plugins/logindisabled.js +0 -50
  479. package/lib/plugins/metadata.js +0 -475
  480. package/lib/plugins/namespace.js +0 -67
  481. package/lib/plugins/unauthenticate.js +0 -28
  482. package/lib/plugins/unselect.js +0 -36
  483. package/lib/plugins/xoauth2.js +0 -188
  484. package/lib/plugins/xtoybird.js +0 -282
  485. package/lib/server.js +0 -2880
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @namespace Mockup module
3
+ * @name mockup
4
+ */
5
+ export default runClientMockup;
6
+ /**
7
+ * <p>Runs a batch of IMAP commands against a server, like a well behaved client would</p>
8
+ *
9
+ * <ul>
10
+ * <li>a command is sent only after the tagged response of the previous command arrived
11
+ * (RFC 3501 section 5.5 forbids pipelining in many cases)</li>
12
+ * <li>the data of a synchronizing literal ({n}) is sent only after the server's "+"
13
+ * continuation request (RFC 3501 section 4.3)</li>
14
+ * <li>when the server sends a "+" continuation request and the command has no literal
15
+ * data left, the next entry of the command list is sent as the continuation data
16
+ * (an AUTHENTICATE response, or DONE to end IDLE)</li>
17
+ * <li>after the tagged response of a STARTTLS command the connection is upgraded to TLS</li>
18
+ * <li>after the tagged OK of a COMPRESS DEFLATE command, data in both directions is compressed
19
+ * (RFC 4978). The client ends its compression after an UNAUTHENTICATE command, and expects
20
+ * the server to end its compression after the tagged OK (RFC 8437 section 4.1)</li>
21
+ * <li>the callback gets the decompressed data</li>
22
+ * <li>after the last command the connection is closed and the callback gets the transcript</li>
23
+ * </ul>
24
+ *
25
+ * <pre>
26
+ * var cmds = ["A1 CAPABILITY", "A2 STARTTLS", "A3 LOGIN username password", "A4 LOGOUT"];
27
+ * runClientMockup(143, "localhost", cmds, false, function(resp){
28
+ * console.log("Final:", resp.toString("utf-8").trim());
29
+ * });
30
+ * </pre>
31
+ *
32
+ * @memberOf mockup
33
+ * @param {Number} port Port number
34
+ * @param {String} host Hostname to connect to
35
+ * @param {Array} commands Command list to be sent to server, as binary strings
36
+ * @param {Boolean} [debug] if set to true log all input/output
37
+ * @param {Function} callback Callback function to run on completion, gets everything the server sent as a Buffer
38
+ */
39
+ declare function runClientMockup(port: number | null | undefined, host: string | null | undefined, commands: string[], debug?: boolean | null, callback?: ((response: Buffer) => void) | null): void;
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_net_1 = __importDefault(require("node:net"));
7
+ const node_tls_1 = __importDefault(require("node:tls"));
8
+ const framing_js_1 = require("./framing.js");
9
+ const deflate_layer_js_1 = __importDefault(require("./deflate-layer.js"));
10
+ /**
11
+ * @namespace Mockup module
12
+ * @name mockup
13
+ */
14
+ exports.default = runClientMockup;
15
+ /**
16
+ * <p>Runs a batch of IMAP commands against a server, like a well behaved client would</p>
17
+ *
18
+ * <ul>
19
+ * <li>a command is sent only after the tagged response of the previous command arrived
20
+ * (RFC 3501 section 5.5 forbids pipelining in many cases)</li>
21
+ * <li>the data of a synchronizing literal ({n}) is sent only after the server's "+"
22
+ * continuation request (RFC 3501 section 4.3)</li>
23
+ * <li>when the server sends a "+" continuation request and the command has no literal
24
+ * data left, the next entry of the command list is sent as the continuation data
25
+ * (an AUTHENTICATE response, or DONE to end IDLE)</li>
26
+ * <li>after the tagged response of a STARTTLS command the connection is upgraded to TLS</li>
27
+ * <li>after the tagged OK of a COMPRESS DEFLATE command, data in both directions is compressed
28
+ * (RFC 4978). The client ends its compression after an UNAUTHENTICATE command, and expects
29
+ * the server to end its compression after the tagged OK (RFC 8437 section 4.1)</li>
30
+ * <li>the callback gets the decompressed data</li>
31
+ * <li>after the last command the connection is closed and the callback gets the transcript</li>
32
+ * </ul>
33
+ *
34
+ * <pre>
35
+ * var cmds = ["A1 CAPABILITY", "A2 STARTTLS", "A3 LOGIN username password", "A4 LOGOUT"];
36
+ * runClientMockup(143, "localhost", cmds, false, function(resp){
37
+ * console.log("Final:", resp.toString("utf-8").trim());
38
+ * });
39
+ * </pre>
40
+ *
41
+ * @memberOf mockup
42
+ * @param {Number} port Port number
43
+ * @param {String} host Hostname to connect to
44
+ * @param {Array} commands Command list to be sent to server, as binary strings
45
+ * @param {Boolean} [debug] if set to true log all input/output
46
+ * @param {Function} callback Callback function to run on completion, gets everything the server sent as a Buffer
47
+ */
48
+ function runClientMockup(port, host, commands, debug, callback) {
49
+ const hostname = host || 'localhost';
50
+ const portNumber = port || 143;
51
+ const queue = Array.isArray(commands) ? splitLiterals(commands) : [];
52
+ const responses = [];
53
+ let buffer = '';
54
+ // tag of the command waiting for its tagged response
55
+ let currentTag = null;
56
+ let currentCommand = '';
57
+ let lastResponse = '';
58
+ let greeted = false;
59
+ let finished = false;
60
+ let socket = node_net_1.default.connect(portNumber, hostname);
61
+ // COMPRESS=DEFLATE layer, once the server accepted COMPRESS
62
+ let layer = null;
63
+ const log = (prefix, str) => {
64
+ if (debug) {
65
+ console.log(prefix + ' ' + str.replace(/\r?\n$/, ''));
66
+ }
67
+ };
68
+ const write = (text) => {
69
+ log('C:', text);
70
+ if (layer) {
71
+ layer.write(Buffer.from(text, 'binary'));
72
+ }
73
+ else {
74
+ socket.write(text, 'binary');
75
+ }
76
+ };
77
+ const finish = () => {
78
+ if (finished) {
79
+ return;
80
+ }
81
+ finished = true;
82
+ if (buffer) {
83
+ // an incomplete response
84
+ responses.push(Buffer.from(buffer, 'binary'));
85
+ }
86
+ if (layer) {
87
+ layer.destroy();
88
+ }
89
+ if (typeof callback === 'function') {
90
+ callback(Buffer.concat(responses));
91
+ }
92
+ };
93
+ const sendNext = () => {
94
+ // literal data that the previous command did not get to send is dropped
95
+ while (queue.length && queue[0].continuation) {
96
+ queue.shift();
97
+ }
98
+ if (!queue.length) {
99
+ currentTag = null;
100
+ socket.end();
101
+ return;
102
+ }
103
+ const next = queue.shift();
104
+ currentCommand = next.text.replace(/\r\n$/, '');
105
+ currentTag = currentCommand.split(' ').shift();
106
+ write(next.text);
107
+ if (layer && /^\S+ UNAUTHENTICATE$/i.test(currentCommand)) {
108
+ // the client ends its compression after the CRLF of UNAUTHENTICATE (RFC 8437 section 4.1)
109
+ layer.end();
110
+ }
111
+ };
112
+ // literal data for the current command, or a continuation line such as DONE
113
+ const onContinuation = () => {
114
+ if (!queue.length) {
115
+ return;
116
+ }
117
+ write(queue.shift().text);
118
+ };
119
+ const upgrade = () => {
120
+ const plain = socket;
121
+ plain.removeAllListeners('data');
122
+ plain.removeAllListeners('close');
123
+ socket = node_tls_1.default.connect({ socket: plain, host: hostname, rejectUnauthorized: false }, () => {
124
+ log('TLS', 'connection secured');
125
+ sendNext();
126
+ });
127
+ attach(socket);
128
+ };
129
+ // everything after the CRLF of the tagged OK is compressed (RFC 4978 section 3)
130
+ const startCompression = () => {
131
+ layer = new deflate_layer_js_1.default({
132
+ writeRaw: (chunk) => socket.write(chunk),
133
+ onData: onData,
134
+ onError: (err) => {
135
+ log('Compression error:', err.message);
136
+ socket.destroy();
137
+ }
138
+ });
139
+ };
140
+ // returns true if compression starts after this response
141
+ const onTagged = () => {
142
+ let compress = false;
143
+ if (/^\S+ OK/i.test(lastResponse)) {
144
+ if (/^\S+ STARTTLS$/i.test(currentCommand)) {
145
+ upgrade();
146
+ return false;
147
+ }
148
+ if (/^\S+ COMPRESS DEFLATE$/i.test(currentCommand)) {
149
+ startCompression();
150
+ compress = true;
151
+ }
152
+ else if (layer && /^\S+ UNAUTHENTICATE$/i.test(currentCommand)) {
153
+ // the server ends its compression after the CRLF of the OK
154
+ layer.endInput();
155
+ }
156
+ }
157
+ sendNext();
158
+ return compress;
159
+ };
160
+ // Splits the received data into complete responses, a response may contain literals
161
+ const processBuffer = () => {
162
+ const framed = (0, framing_js_1.splitResponses)(buffer);
163
+ for (const response of framed.responses) {
164
+ lastResponse = buffer.slice(response.start, response.end);
165
+ responses.push(Buffer.from(lastResponse, 'binary'));
166
+ if (!greeted) {
167
+ greeted = true;
168
+ sendNext();
169
+ }
170
+ else if (lastResponse.charAt(0) === '+') {
171
+ onContinuation();
172
+ }
173
+ else if (currentTag && lastResponse.substr(0, currentTag.length + 1) === currentTag + ' ' && onTagged()) {
174
+ // compression started, the rest of the data is compressed
175
+ const rest = buffer.slice(response.end);
176
+ buffer = '';
177
+ if (rest) {
178
+ // onTagged() started the compression
179
+ layer.receive(Buffer.from(rest, 'binary'));
180
+ }
181
+ return;
182
+ }
183
+ }
184
+ buffer = buffer.slice(framed.end);
185
+ };
186
+ function onData(chunk) {
187
+ log('S:', chunk.toString('binary'));
188
+ buffer += chunk.toString('binary');
189
+ processBuffer();
190
+ }
191
+ function attach(sock) {
192
+ sock.on('data', (chunk) => {
193
+ if (layer) {
194
+ layer.receive(chunk);
195
+ }
196
+ else {
197
+ onData(chunk);
198
+ }
199
+ });
200
+ sock.on('error', (err) => {
201
+ log('Socket error:', err.message);
202
+ // the close event follows and returns what was received so far
203
+ });
204
+ // the last data may still be in the decompressor
205
+ sock.on('close', () => (layer ? layer.whenIdle(finish) : finish()));
206
+ }
207
+ attach(socket);
208
+ }
209
+ /**
210
+ * Splits commands at synchronizing literals, so that literal data can wait for the
211
+ * continuation request
212
+ *
213
+ * @param {Array} commands Command strings
214
+ * @return {Array} Parts to send, as {text, continuation}, the last part of a command ends with CRLF
215
+ */
216
+ function splitLiterals(commands) {
217
+ const parts = [];
218
+ commands.forEach((command) => {
219
+ (0, framing_js_1.splitAtLiterals)(String(command) + '\r\n').forEach((text, i) => {
220
+ parts.push({ text, continuation: i > 0 });
221
+ });
222
+ });
223
+ return parts;
224
+ }
225
+ {
226
+ const defaultExport = exports.default;
227
+ if (defaultExport && (typeof defaultExport === 'function' || typeof defaultExport === 'object')) {
228
+ for (const key of Object.keys(exports)) {
229
+ if (key !== 'default' && !(key in defaultExport)) {
230
+ defaultExport[key] = exports[key];
231
+ }
232
+ }
233
+ Object.defineProperty(defaultExport, 'default', { value: defaultExport, enumerable: false, writable: true, configurable: true });
234
+ module.exports = defaultExport;
235
+ }
236
+ }
@@ -0,0 +1,28 @@
1
+ declare const MAX_NUMBER = 4294967295;
2
+ declare const MAX_NUMBER64: bigint;
3
+ /**
4
+ * Checks if a value is a number by the grammar: 1*DIGIT, up to a limit
5
+ *
6
+ * @param {*} value Value to check, only strings can match
7
+ * @param {Number|BigInt} [max] Largest allowed value, MAX_NUMBER by default
8
+ * @return {Boolean} true if the value is a number within the limit
9
+ */
10
+ declare function isNumber(value: unknown, max?: number | bigint): boolean;
11
+ /**
12
+ * Checks if a value is a non-zero number (nz-number, nz-number64): digit-nz *DIGIT, up to a limit
13
+ *
14
+ * @param {*} value Value to check, only strings can match
15
+ * @param {Number|BigInt} [max] Largest allowed value, MAX_NUMBER by default
16
+ * @return {Boolean} true if the value is a non-zero number within the limit
17
+ */
18
+ declare function isNzNumber(value: unknown, max?: number | bigint): boolean;
19
+ /**
20
+ * Checks if a value is a sequence set (RFC 3501 and RFC 9051 section 9): seq-number or seq-range items
21
+ * separated by commas, seq-number = nz-number / "*"
22
+ *
23
+ * @param {*} value Value to check, only strings can match
24
+ * @param {Boolean} [noStar] If true, "*" is not allowed (e.g. known-uids of RFC 7162 section 7)
25
+ * @return {Boolean} true if the value is a valid sequence set
26
+ */
27
+ declare function isSequenceSet(value: unknown, noStar?: boolean): boolean;
28
+ export { MAX_NUMBER, MAX_NUMBER64, isNumber, isNzNumber, isSequenceSet };
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ // Limits and checks of the numbers in the IMAP grammar
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.MAX_NUMBER64 = exports.MAX_NUMBER = void 0;
5
+ exports.isNumber = isNumber;
6
+ exports.isNzNumber = isNzNumber;
7
+ exports.isSequenceSet = isSequenceSet;
8
+ // RFC 3501 and RFC 9051 section 9: number and nz-number are unsigned 32-bit integers
9
+ const MAX_NUMBER = 4294967295;
10
+ exports.MAX_NUMBER = MAX_NUMBER;
11
+ // RFC 9051 section 9: number64 is an unsigned 63-bit integer, so is mod-sequence-value (RFC 7162 section 7)
12
+ const MAX_NUMBER64 = 2n ** 63n - 1n;
13
+ exports.MAX_NUMBER64 = MAX_NUMBER64;
14
+ /**
15
+ * Checks if a value is a number by the grammar: 1*DIGIT, up to a limit
16
+ *
17
+ * @param {*} value Value to check, only strings can match
18
+ * @param {Number|BigInt} [max] Largest allowed value, MAX_NUMBER by default
19
+ * @return {Boolean} true if the value is a number within the limit
20
+ */
21
+ function isNumber(value, max) {
22
+ const limit = String(max === undefined ? MAX_NUMBER : max);
23
+ // a longer string of digits is too large anyway, so no BigInt is built from it
24
+ if (typeof value !== 'string' || !/^\d+$/.test(value) || value.replace(/^0+(?=\d)/, '').length > limit.length) {
25
+ return false;
26
+ }
27
+ return BigInt(value) <= BigInt(limit);
28
+ }
29
+ /**
30
+ * Checks if a value is a non-zero number (nz-number, nz-number64): digit-nz *DIGIT, up to a limit
31
+ *
32
+ * @param {*} value Value to check, only strings can match
33
+ * @param {Number|BigInt} [max] Largest allowed value, MAX_NUMBER by default
34
+ * @return {Boolean} true if the value is a non-zero number within the limit
35
+ */
36
+ function isNzNumber(value, max) {
37
+ return isNumber(value, max) && /^[1-9]/.test(value);
38
+ }
39
+ /**
40
+ * Checks if a value is a sequence set (RFC 3501 and RFC 9051 section 9): seq-number or seq-range items
41
+ * separated by commas, seq-number = nz-number / "*"
42
+ *
43
+ * @param {*} value Value to check, only strings can match
44
+ * @param {Boolean} [noStar] If true, "*" is not allowed (e.g. known-uids of RFC 7162 section 7)
45
+ * @return {Boolean} true if the value is a valid sequence set
46
+ */
47
+ function isSequenceSet(value, noStar) {
48
+ if (typeof value !== 'string' || !/^[\d*]+(:[\d*]+)?(,[\d*]+(:[\d*]+)?)*$/.test(value)) {
49
+ return false;
50
+ }
51
+ return value.split(/[,:]/).every(part => (part === '*' ? !noStar : isNzNumber(part)));
52
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,2 @@
1
+ import type { IMAPServer } from '../types.js';
2
+ export default function aclPlugin(server: IMAPServer): void;