imapkit 4.0.3 → 4.1.1

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 +271 -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 +106 -133
  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 +55 -12
  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
@@ -1,5 +0,0 @@
1
- 'use strict';
2
-
3
- const { processStore } = require('./store');
4
-
5
- module.exports = (connection, parsed, data, callback) => processStore(true, connection, parsed, data, callback);
@@ -1,76 +0,0 @@
1
- 'use strict';
2
-
3
- const { states } = require('../command-states');
4
- const DeflateLayer = require('../deflate-layer');
5
-
6
- /**
7
- * @help Adds COMPRESS=DEFLATE [RFC4978] capability
8
- * @help Raw DEFLATE in both directions after the tagged OK,
9
- * @help every burst of responses ends with a sync flush
10
- */
11
-
12
- module.exports = function (server) {
13
- server.registerCapability('COMPRESS=DEFLATE');
14
-
15
- const isActive = connection => connection.transport instanceof DeflateLayer && connection.transport.active;
16
-
17
- // RFC 8437 section 4.1: after UNAUTHENTICATE the server ends its compression after the CRLF of
18
- // the OK, and the client after the CRLF of the command, so anything it compressed later is dropped
19
- server.resetHandlers.push(connection => {
20
- if (isActive(connection)) {
21
- connection.discardInput();
22
- connection.transport.endInput();
23
- connection.transport.end();
24
- }
25
- });
26
-
27
- server.setCommandHandler(
28
- 'COMPRESS',
29
- (connection, parsed, data, callback) => {
30
- const args = parsed.attributes || [];
31
-
32
- // RFC 4978 section 5: compress = "COMPRESS" SP algorithm, algorithm = "DEFLATE"
33
- if (args.length !== 1 || !args[0] || args[0].type !== 'ATOM') {
34
- connection.sendStatus(parsed, data, 'BAD', 'COMPRESS expects a compression mechanism');
35
- return callback();
36
- }
37
-
38
- if (args[0].value.toUpperCase() !== 'DEFLATE') {
39
- connection.sendStatus(parsed, data, 'BAD', 'Unknown compression mechanism');
40
- return callback();
41
- }
42
-
43
- // RFC 4978 section 3: BAD if COMPRESS is already active, NO is for compression by another
44
- // layer, such as TLS, which ImapKit never negotiates. Dovecot answers NO here
45
- if (isActive(connection)) {
46
- connection.sendStatus(parsed, data, 'BAD', 'DEFLATE active via COMPRESS', 'COMPRESSIONACTIVE');
47
- return callback();
48
- }
49
-
50
- connection.sendStatus(parsed, data, 'OK', 'DEFLATE active');
51
-
52
- if (connection.transport) {
53
- // the layer of an earlier session, it passes data on as is since UNAUTHENTICATE
54
- connection.transport.destroy();
55
- }
56
- // compression starts right after the CRLF of the tagged OK
57
- connection.transport = new DeflateLayer({
58
- writeRaw: chunk => connection.writeRaw(chunk),
59
- onData: chunk => connection.onData(chunk),
60
- onError: err => {
61
- // the input can not be decompressed, so there is nothing left to talk about
62
- if (connection.options.debug) {
63
- console.log('COMPRESS error: %s', err.message);
64
- }
65
- connection.sendStatus({ tag: '*' }, false, 'BYE', 'Invalid compressed data', false, 'COMPRESS ERROR');
66
- connection.end();
67
- }
68
- });
69
-
70
- return callback();
71
- },
72
- // RFC 4978 section 3: the client MUST NOT send further commands until it has seen the result of COMPRESS.
73
- // Those commands would be uncompressed, and after an OK the server expects compressed input
74
- { states: states.AUTHENTICATED, noPipelining: true }
75
- );
76
- };
@@ -1,155 +0,0 @@
1
- 'use strict';
2
-
3
- const { states } = require('../command-states');
4
-
5
- /**
6
- * @help Adds ENABLE capability [RFC5161]
7
- * @help Plugins that can be enabled (eg. CONDSTORE)
8
- * @help can be loaded in any order
9
- */
10
-
11
- /**
12
- * Makes an extension available for ENABLE. Plugins call it whether the ENABLE plugin is loaded before or after them
13
- *
14
- * @param {Object} server IMAPServer instance
15
- * @param {String} name Capability name in the spelling it is advertised in, e.g. "IMAP4rev2"
16
- */
17
- function registerEnable(server, name) {
18
- server.enableAvailable = server.enableAvailable || [];
19
- if (server.enableAvailable.indexOf(name) < 0) {
20
- server.enableAvailable.push(name);
21
- }
22
- }
23
-
24
- /**
25
- * Checks if a session has enabled an extension with ENABLE. UNAUTHENTICATE clears the list (RFC 8437 section 4.1)
26
- *
27
- * @param {Object} connection IMAP connection
28
- * @param {String} name Capability name in the spelling it was registered with, see registerEnable
29
- * @return {Boolean} true if the extension is enabled
30
- */
31
- function isEnabled(connection, name) {
32
- return !!connection.enabled && connection.enabled.indexOf(name) >= 0;
33
- }
34
-
35
- module.exports = function (server) {
36
- server.registerCapability('ENABLE');
37
-
38
- // Shared with plugins that can be enabled, these might be loaded before or after this one
39
- server.enableAvailable = server.enableAvailable || [];
40
-
41
- server.connectionHandlers.push(connection => {
42
- connection.enabled = connection.enabled || [];
43
- });
44
-
45
- // RFC 8437 section 4.1: extensions enabled with ENABLE cease to be enabled after UNAUTHENTICATE
46
- server.resetHandlers.push(connection => {
47
- connection.enabled = [];
48
- });
49
-
50
- server.setCommandHandler(
51
- 'ENABLE',
52
- (connection, parsed, data, callback) => {
53
- let capability;
54
- let i;
55
- let len;
56
-
57
- // RFC 5161 section 3.1: "Clients MUST NOT issue ENABLE once they SELECT/EXAMINE a mailbox".
58
- // Servers do not have to check this, ImapKit does to catch the client bug.
59
- if (connection.everSelected) {
60
- connection.sendStatus(parsed, data, 'BAD', 'ENABLE is not allowed after SELECT or EXAMINE');
61
- return callback();
62
- }
63
-
64
- if (!parsed.attributes) {
65
- connection.send(
66
- {
67
- tag: parsed.tag,
68
- command: 'BAD',
69
- attributes: [
70
- {
71
- type: 'TEXT',
72
- value: 'ENABLE expects capability list'
73
- }
74
- ]
75
- },
76
- 'INVALID COMMAND',
77
- parsed,
78
- data
79
- );
80
- return callback();
81
- }
82
-
83
- for (i = 0, len = parsed.attributes.length; i < len; i++) {
84
- if (!parsed.attributes[i] || parsed.attributes[i].type !== 'ATOM') {
85
- connection.send(
86
- {
87
- tag: parsed.tag,
88
- command: 'BAD',
89
- attributes: [
90
- {
91
- type: 'TEXT',
92
- value: 'Attribute nr ' + (i + 1) + ' is not an ATOM'
93
- }
94
- ]
95
- },
96
- 'INVALID COMMAND',
97
- parsed,
98
- data
99
- );
100
- return callback();
101
- }
102
- }
103
-
104
- // The ENABLED response lists only the extensions enabled by this command
105
- // Capability names are matched case-insensitively and listed in the spelling the server advertises them
106
- // (`server.enableAvailable`), e.g. "IMAP4rev2", so plugins look them up in `connection.enabled` by that name
107
- const enabled = [];
108
- for (i = 0, len = parsed.attributes.length; i < len; i++) {
109
- const requested = parsed.attributes[i].value.toUpperCase();
110
- capability = server.enableAvailable.find(name => name.toUpperCase() === requested);
111
- if (capability && connection.enabled.indexOf(capability) < 0) {
112
- connection.enabled.push(capability);
113
- enabled.push(capability);
114
- }
115
- }
116
-
117
- connection.send(
118
- {
119
- tag: '*',
120
- command: 'ENABLED',
121
- attributes: enabled.map(capability => ({
122
- type: 'ATOM',
123
- value: capability
124
- }))
125
- },
126
- 'ENABLED',
127
- parsed,
128
- data,
129
- enabled
130
- );
131
-
132
- connection.send(
133
- {
134
- tag: parsed.tag,
135
- command: 'OK',
136
- attributes: [
137
- {
138
- type: 'TEXT',
139
- value: 'ENABLE completed'
140
- }
141
- ]
142
- },
143
- 'ENABLE',
144
- parsed,
145
- data
146
- );
147
-
148
- return callback();
149
- },
150
- { states: states.AUTHENTICATED }
151
- );
152
- };
153
-
154
- module.exports.registerEnable = registerEnable;
155
- module.exports.isEnabled = isEnabled;
package/lib/plugins/id.js DELETED
@@ -1,138 +0,0 @@
1
- 'use strict';
2
-
3
- const { states } = require('../command-states');
4
-
5
- /**
6
- * @help Adds ID [RFC2971] capability
7
- */
8
-
9
- module.exports = function (server) {
10
- // Register capability, always usable
11
- server.registerCapability('ID');
12
-
13
- // Add ID command
14
- server.setCommandHandler(
15
- 'ID',
16
- (connection, parsed, data, callback) => {
17
- // keys are client supplied, so the object has no prototype
18
- const clientList = Object.create(null);
19
- let serverList = null;
20
- let i;
21
- let len;
22
- let key;
23
-
24
- // Require exactly 1 attribute (NIL or parameter list)
25
- if (!parsed.attributes || parsed.attributes.length !== 1) {
26
- return sendError('ID expects 1 attribute', connection, parsed, data, callback);
27
- }
28
- const list = parsed.attributes[0];
29
- if ((list && !Array.isArray(list)) || (list && list.length % 2)) {
30
- return sendError('ID expects valid parameter list', connection, parsed, data, callback);
31
- }
32
-
33
- // RFC 2971 section 3.3: at most 30 field-value pairs
34
- if (list && list.length > 60) {
35
- return sendError('ID allows at most 30 field-value pairs', connection, parsed, data, callback);
36
- }
37
-
38
- // Build client ID object and check validity of the values
39
- if (list && list.length) {
40
- for (i = 0, len = list.length; i < len; i++) {
41
- if (i % 2 === 0) {
42
- // Handle keys (always strings)
43
- if (list[i] && ['STRING', 'LITERAL'].indexOf(list[i].type) >= 0) {
44
- key = list[i].value;
45
- // RFC 2971 section 3.3: field names are at most 30 octets, case-insensitive and unique
46
- if (key.length > 30) {
47
- return sendError('ID field names can be at most 30 octets', connection, parsed, data, callback);
48
- }
49
- if (Object.keys(clientList).some(existing => existing.toLowerCase() === key.toLowerCase())) {
50
- return sendError('ID field names must not repeat', connection, parsed, data, callback);
51
- }
52
- } else {
53
- return sendError('ID expects valid parameter list', connection, parsed, data, callback);
54
- }
55
- } else {
56
- // Handle values (string or NIL)
57
- if (!list[i] || ['STRING', 'LITERAL'].indexOf(list[i].type) >= 0) {
58
- if (list[i] && list[i].value.length > 1024) {
59
- return sendError('ID values can be at most 1024 octets', connection, parsed, data, callback);
60
- }
61
- clientList[key] = (list[i] && list[i].value) || null;
62
- } else {
63
- return sendError('ID expects valid parameter list', connection, parsed, data, callback);
64
- }
65
- }
66
- }
67
- }
68
-
69
- // Build response object from server options
70
- if (server.options.id) {
71
- serverList = [];
72
- Object.keys(server.options.id).forEach(key => {
73
- serverList.push({
74
- type: 'STRING',
75
- value: key
76
- });
77
- serverList.push({
78
- type: 'STRING',
79
- value: (server.options.id[key] || '').toString()
80
- });
81
- });
82
- }
83
-
84
- // Send untagged ID response
85
- connection.send(
86
- {
87
- tag: '*',
88
- command: 'ID',
89
- attributes: [serverList]
90
- },
91
- 'ID',
92
- parsed,
93
- data,
94
- clientList
95
- );
96
-
97
- // Send tagged response
98
- connection.send(
99
- {
100
- tag: parsed.tag,
101
- command: 'OK',
102
- attributes: [
103
- {
104
- type: 'TEXT',
105
- value: 'ID command completed'
106
- }
107
- ]
108
- },
109
- 'ID',
110
- parsed,
111
- data,
112
- clientList
113
- );
114
-
115
- callback();
116
- },
117
- { states: states.ANY }
118
- );
119
- };
120
-
121
- function sendError(message, connection, parsed, data, callback) {
122
- connection.send(
123
- {
124
- tag: parsed.tag,
125
- command: 'BAD',
126
- attributes: [
127
- {
128
- type: 'TEXT',
129
- value: message
130
- }
131
- ]
132
- },
133
- 'INVALID COMMAND',
134
- parsed,
135
- data
136
- );
137
- return callback();
138
- }
@@ -1,105 +0,0 @@
1
- 'use strict';
2
-
3
- const { states } = require('../command-states');
4
-
5
- /**
6
- * @help Adds IDLE [RFC2177] capability
7
- */
8
-
9
- module.exports = function (server) {
10
- server.registerCapability('IDLE');
11
-
12
- server.setCommandHandler(
13
- 'IDLE',
14
- (connection, parsed, data, callback) => {
15
- const idleTimer = setTimeout(
16
- () => {
17
- if (connection.socket && !connection.socket.destroyed) {
18
- connection.send(
19
- {
20
- tag: '*',
21
- command: 'BYE',
22
- attributes: [
23
- {
24
- type: 'TEXT',
25
- value: 'IDLE terminated'
26
- }
27
- ]
28
- },
29
- 'IDLE EXPIRED',
30
- parsed,
31
- data
32
- );
33
- connection.end();
34
- }
35
- },
36
- 30 * 60 * 1000
37
- );
38
- // An idling client should not keep the process alive
39
- idleTimer.unref();
40
-
41
- const clearIdleTimer = () => clearTimeout(idleTimer);
42
- const socket = connection.socket;
43
- if (socket) {
44
- socket.once('close', clearIdleTimer);
45
- }
46
-
47
- connection.directNotifications = true;
48
-
49
- // Temporarily redirect client input to this function
50
- connection.inputHandler = function (str) {
51
- clearIdleTimer();
52
- if (socket) {
53
- socket.removeListener('close', clearIdleTimer);
54
- }
55
-
56
- // Stop listening to any other user input
57
- connection.inputHandler = false;
58
-
59
- // Notifications are sent again only while a command is in progress
60
- connection.directNotifications = false;
61
-
62
- if (str.toUpperCase() === 'DONE') {
63
- connection.send(
64
- {
65
- tag: parsed.tag,
66
- command: 'OK',
67
- attributes: [
68
- {
69
- type: 'TEXT',
70
- value: 'IDLE terminated'
71
- }
72
- ]
73
- },
74
- 'IDLE',
75
- parsed,
76
- data
77
- );
78
- } else {
79
- connection.send(
80
- {
81
- tag: parsed.tag,
82
- command: 'BAD',
83
- attributes: [
84
- {
85
- type: 'TEXT',
86
- value: 'Invalid Idle continuation'
87
- }
88
- ]
89
- },
90
- 'INVALID IDLE',
91
- parsed,
92
- data
93
- );
94
- }
95
- };
96
-
97
- connection.write('+ idling\r\n');
98
-
99
- connection.processNotifications();
100
-
101
- return callback();
102
- },
103
- { states: states.AUTHENTICATED, noArguments: true }
104
- );
105
- };
@@ -1,50 +0,0 @@
1
- 'use strict';
2
-
3
- /**
4
- * @help Disables LOGIN support for unencrypted connections
5
- */
6
-
7
- module.exports = function (server) {
8
- server.registerCapability('LOGINDISABLED', connection => {
9
- return !connection.secureConnection && connection.state === 'Not Authenticated';
10
- });
11
-
12
- // Retrieve actual LOGIN handler
13
- // Will be run if conditions are met
14
- const oldHandler = server.getCommandHandler('LOGIN');
15
-
16
- // Override LOGIN
17
- server.setCommandHandler('LOGIN', (connection, parsed, data, callback) => {
18
- // If the connection is unsecure, do not allow LOGIN
19
- if (!connection.secureConnection) {
20
- connection.send(
21
- {
22
- tag: parsed.tag,
23
- command: 'NO',
24
- attributes: [
25
- {
26
- type: 'SECTION',
27
- section: [
28
- {
29
- type: 'ATOM',
30
- value: 'PRIVACYREQUIRED'
31
- }
32
- ]
33
- },
34
- {
35
- type: 'TEXT',
36
- value: 'Run STARTTLS first'
37
- }
38
- ]
39
- },
40
- 'LOGIN FAILED',
41
- parsed,
42
- data
43
- );
44
- return callback();
45
- }
46
-
47
- // Reroute command to actual LOGIN handler
48
- oldHandler(connection, parsed, data, callback);
49
- });
50
- };