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.
- package/README.md +32 -19
- package/bin/imapkit.js +12 -16
- package/dist/cjs/addressparser.d.ts +21 -0
- package/dist/cjs/addressparser.js +271 -0
- package/dist/cjs/arguments.d.ts +31 -0
- package/{lib → dist/cjs}/arguments.js +9 -21
- package/dist/cjs/bodystructure.d.ts +25 -0
- package/dist/cjs/bodystructure.js +150 -0
- package/dist/cjs/cert.d.ts +2 -0
- package/dist/cjs/cert.js +7 -0
- package/dist/cjs/command-states.d.ts +36 -0
- package/dist/cjs/command-states.js +102 -0
- package/dist/cjs/commands/append.d.ts +88 -0
- package/dist/cjs/commands/append.js +299 -0
- package/dist/cjs/commands/capability.d.ts +2 -0
- package/dist/cjs/commands/capability.js +44 -0
- package/dist/cjs/commands/check.d.ts +2 -0
- package/dist/cjs/commands/check.js +28 -0
- package/dist/cjs/commands/close.d.ts +2 -0
- package/dist/cjs/commands/close.js +35 -0
- package/dist/cjs/commands/copy.d.ts +30 -0
- package/dist/cjs/commands/copy.js +107 -0
- package/dist/cjs/commands/create.d.ts +2 -0
- package/dist/cjs/commands/create.js +53 -0
- package/dist/cjs/commands/delete.d.ts +2 -0
- package/dist/cjs/commands/delete.js +63 -0
- package/dist/cjs/commands/examine.d.ts +2 -0
- package/dist/cjs/commands/examine.js +19 -0
- package/dist/cjs/commands/expunge.d.ts +2 -0
- package/dist/cjs/commands/expunge.js +32 -0
- package/dist/cjs/commands/fetch.d.ts +23 -0
- package/dist/cjs/commands/fetch.js +208 -0
- package/dist/cjs/commands/handlers/fetch.d.ts +12 -0
- package/dist/cjs/commands/handlers/fetch.js +195 -0
- package/dist/cjs/commands/handlers/flags.d.ts +17 -0
- package/dist/cjs/commands/handlers/flags.js +39 -0
- package/dist/cjs/commands/handlers/search.d.ts +85 -0
- package/dist/cjs/commands/handlers/search.js +504 -0
- package/dist/cjs/commands/handlers/status.d.ts +34 -0
- package/dist/cjs/commands/handlers/status.js +81 -0
- package/dist/cjs/commands/handlers/store.d.ts +3 -0
- package/dist/cjs/commands/handlers/store.js +117 -0
- package/dist/cjs/commands/index.d.ts +2 -0
- package/dist/cjs/commands/index.js +61 -0
- package/dist/cjs/commands/list.d.ts +2 -0
- package/dist/cjs/commands/list.js +86 -0
- package/dist/cjs/commands/login.d.ts +2 -0
- package/dist/cjs/commands/login.js +62 -0
- package/dist/cjs/commands/logout.d.ts +2 -0
- package/dist/cjs/commands/logout.js +40 -0
- package/dist/cjs/commands/lsub.d.ts +2 -0
- package/dist/cjs/commands/lsub.js +79 -0
- package/dist/cjs/commands/noop.d.ts +2 -0
- package/dist/cjs/commands/noop.js +28 -0
- package/dist/cjs/commands/rename.d.ts +2 -0
- package/dist/cjs/commands/rename.js +98 -0
- package/dist/cjs/commands/search.d.ts +10 -0
- package/dist/cjs/commands/search.js +71 -0
- package/dist/cjs/commands/select.d.ts +19 -0
- package/dist/cjs/commands/select.js +230 -0
- package/dist/cjs/commands/status.d.ts +2 -0
- package/dist/cjs/commands/status.js +57 -0
- package/dist/cjs/commands/store.d.ts +10 -0
- package/dist/cjs/commands/store.js +134 -0
- package/dist/cjs/commands/subscribe.d.ts +2 -0
- package/dist/cjs/commands/subscribe.js +51 -0
- package/dist/cjs/commands/uid-copy.d.ts +2 -0
- package/dist/cjs/commands/uid-copy.js +19 -0
- package/dist/cjs/commands/uid-fetch.d.ts +3 -0
- package/dist/cjs/commands/uid-fetch.js +17 -0
- package/dist/cjs/commands/uid-search.d.ts +3 -0
- package/dist/cjs/commands/uid-search.js +17 -0
- package/dist/cjs/commands/uid-store.d.ts +3 -0
- package/dist/cjs/commands/uid-store.js +17 -0
- package/dist/cjs/commands/unsubscribe.d.ts +2 -0
- package/dist/cjs/commands/unsubscribe.js +50 -0
- package/dist/cjs/dates.d.ts +64 -0
- package/dist/cjs/dates.js +124 -0
- package/dist/cjs/deflate-layer.d.ts +83 -0
- package/dist/cjs/deflate-layer.js +232 -0
- package/dist/cjs/encoded-words.d.ts +15 -0
- package/dist/cjs/encoded-words.js +85 -0
- package/dist/cjs/envelope.d.ts +33 -0
- package/dist/cjs/envelope.js +86 -0
- package/dist/cjs/esearch.d.ts +96 -0
- package/dist/cjs/esearch.js +190 -0
- package/dist/cjs/framing.d.ts +66 -0
- package/{lib → dist/cjs}/framing.js +9 -26
- package/dist/cjs/index.d.ts +9 -0
- package/dist/cjs/index.js +56 -0
- package/dist/cjs/list-extensions.d.ts +50 -0
- package/dist/cjs/list-extensions.js +35 -0
- package/dist/cjs/load-plugins.d.ts +21 -0
- package/dist/cjs/load-plugins.js +89 -0
- package/dist/cjs/mailbox-name.d.ts +26 -0
- package/dist/cjs/mailbox-name.js +127 -0
- package/dist/cjs/mimeparser.d.ts +137 -0
- package/dist/cjs/mimeparser.js +727 -0
- package/dist/cjs/mock-client.d.ts +39 -0
- package/dist/cjs/mock-client.js +236 -0
- package/dist/cjs/numbers.d.ts +28 -0
- package/dist/cjs/numbers.js +52 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/plugins/acl.d.ts +2 -0
- package/dist/cjs/plugins/acl.js +888 -0
- package/dist/cjs/plugins/appendlimit.d.ts +16 -0
- package/dist/cjs/plugins/appendlimit.js +87 -0
- package/dist/cjs/plugins/auth-plain.d.ts +2 -0
- package/dist/cjs/plugins/auth-plain.js +89 -0
- package/dist/cjs/plugins/binary.d.ts +30 -0
- package/dist/cjs/plugins/binary.js +247 -0
- package/dist/cjs/plugins/catenate.d.ts +14 -0
- package/dist/cjs/plugins/catenate.js +250 -0
- package/dist/cjs/plugins/compress.d.ts +7 -0
- package/dist/cjs/plugins/compress.js +79 -0
- package/dist/cjs/plugins/condstore.d.ts +5 -0
- package/dist/cjs/plugins/condstore.js +492 -0
- package/dist/cjs/plugins/context-search.d.ts +8 -0
- package/dist/cjs/plugins/context-search.js +304 -0
- package/dist/cjs/plugins/context-sort.d.ts +6 -0
- package/dist/cjs/plugins/context-sort.js +32 -0
- package/dist/cjs/plugins/create-special-use.d.ts +7 -0
- package/dist/cjs/plugins/create-special-use.js +101 -0
- package/dist/cjs/plugins/enable.d.ts +23 -0
- package/dist/cjs/plugins/enable.js +127 -0
- package/dist/cjs/plugins/esearch.d.ts +6 -0
- package/dist/cjs/plugins/esearch.js +142 -0
- package/dist/cjs/plugins/esort.d.ts +6 -0
- package/dist/cjs/plugins/esort.js +60 -0
- package/dist/cjs/plugins/id.d.ts +5 -0
- package/dist/cjs/plugins/id.js +123 -0
- package/dist/cjs/plugins/idle.d.ts +5 -0
- package/dist/cjs/plugins/idle.js +85 -0
- package/dist/cjs/plugins/imap4rev2.d.ts +6 -0
- package/dist/cjs/plugins/imap4rev2.js +184 -0
- package/dist/cjs/plugins/index.d.ts +2 -0
- package/dist/cjs/plugins/index.js +119 -0
- package/dist/cjs/plugins/list-extended.d.ts +2 -0
- package/dist/cjs/plugins/list-extended.js +235 -0
- package/dist/cjs/plugins/list-status.d.ts +6 -0
- package/dist/cjs/plugins/list-status.js +42 -0
- package/dist/cjs/plugins/literalminus.d.ts +8 -0
- package/dist/cjs/plugins/literalminus.js +32 -0
- package/dist/cjs/plugins/literalplus.d.ts +6 -0
- package/dist/cjs/plugins/literalplus.js +30 -0
- package/dist/cjs/plugins/logindisabled.d.ts +5 -0
- package/dist/cjs/plugins/logindisabled.js +54 -0
- package/dist/cjs/plugins/messagelimit.d.ts +19 -0
- package/dist/cjs/plugins/messagelimit.js +227 -0
- package/dist/cjs/plugins/metadata-server.d.ts +7 -0
- package/dist/cjs/plugins/metadata-server.js +24 -0
- package/dist/cjs/plugins/metadata.d.ts +11 -0
- package/dist/cjs/plugins/metadata.js +436 -0
- package/dist/cjs/plugins/move.d.ts +11 -0
- package/dist/cjs/plugins/move.js +96 -0
- package/dist/cjs/plugins/multiappend.d.ts +12 -0
- package/dist/cjs/plugins/multiappend.js +38 -0
- package/dist/cjs/plugins/multisearch.d.ts +6 -0
- package/dist/cjs/plugins/multisearch.js +263 -0
- package/dist/cjs/plugins/namespace.d.ts +5 -0
- package/dist/cjs/plugins/namespace.js +57 -0
- package/dist/cjs/plugins/notify.d.ts +2 -0
- package/dist/cjs/plugins/notify.js +628 -0
- package/dist/cjs/plugins/oauthbearer.d.ts +32 -0
- package/dist/cjs/plugins/oauthbearer.js +202 -0
- package/dist/cjs/plugins/objectid.d.ts +23 -0
- package/dist/cjs/plugins/objectid.js +221 -0
- package/dist/cjs/plugins/partial.d.ts +6 -0
- package/dist/cjs/plugins/partial.js +78 -0
- package/dist/cjs/plugins/preview.d.ts +31 -0
- package/dist/cjs/plugins/preview.js +378 -0
- package/dist/cjs/plugins/qresync.d.ts +11 -0
- package/dist/cjs/plugins/qresync.js +473 -0
- package/dist/cjs/plugins/quota.d.ts +18 -0
- package/dist/cjs/plugins/quota.js +254 -0
- package/dist/cjs/plugins/replace.d.ts +14 -0
- package/dist/cjs/plugins/replace.js +130 -0
- package/dist/cjs/plugins/sasl-ir.d.ts +5 -0
- package/dist/cjs/plugins/sasl-ir.js +24 -0
- package/dist/cjs/plugins/savedate.d.ts +17 -0
- package/dist/cjs/plugins/savedate.js +64 -0
- package/dist/cjs/plugins/savelimit.d.ts +10 -0
- package/dist/cjs/plugins/savelimit.js +30 -0
- package/dist/cjs/plugins/searchres.d.ts +6 -0
- package/dist/cjs/plugins/searchres.js +91 -0
- package/dist/cjs/plugins/sort-display.d.ts +11 -0
- package/dist/cjs/plugins/sort-display.js +37 -0
- package/dist/cjs/plugins/sort.d.ts +11 -0
- package/dist/cjs/plugins/sort.js +125 -0
- package/dist/cjs/plugins/special-use.d.ts +10 -0
- package/dist/cjs/plugins/special-use.js +95 -0
- package/dist/cjs/plugins/starttls.d.ts +5 -0
- package/dist/cjs/plugins/starttls.js +55 -0
- package/dist/cjs/plugins/status-size.d.ts +7 -0
- package/dist/cjs/plugins/status-size.js +30 -0
- package/dist/cjs/plugins/thread-orderedsubject.d.ts +11 -0
- package/dist/cjs/plugins/thread-orderedsubject.js +28 -0
- package/dist/cjs/plugins/thread-references.d.ts +11 -0
- package/dist/cjs/plugins/thread-references.js +28 -0
- package/dist/cjs/plugins/uidonly.d.ts +15 -0
- package/dist/cjs/plugins/uidonly.js +126 -0
- package/dist/cjs/plugins/uidplus.d.ts +15 -0
- package/dist/cjs/plugins/uidplus.js +119 -0
- package/dist/cjs/plugins/unauthenticate.d.ts +7 -0
- package/dist/cjs/plugins/unauthenticate.js +32 -0
- package/dist/cjs/plugins/unselect.d.ts +5 -0
- package/dist/cjs/plugins/unselect.js +36 -0
- package/dist/cjs/plugins/utf8-accept.d.ts +6 -0
- package/dist/cjs/plugins/utf8-accept.js +72 -0
- package/dist/cjs/plugins/x-gm-ext-1.d.ts +26 -0
- package/dist/cjs/plugins/x-gm-ext-1.js +422 -0
- package/dist/cjs/plugins/xoauth2.d.ts +2 -0
- package/dist/cjs/plugins/xoauth2.js +155 -0
- package/dist/cjs/plugins/xtoybird.d.ts +2 -0
- package/dist/cjs/plugins/xtoybird.js +236 -0
- package/dist/cjs/server.d.ts +876 -0
- package/dist/cjs/server.js +2597 -0
- package/dist/cjs/smtp-listener.d.ts +13 -0
- package/dist/cjs/smtp-listener.js +47 -0
- package/dist/cjs/sorting.d.ts +77 -0
- package/dist/cjs/sorting.js +290 -0
- package/dist/cjs/threading.d.ts +30 -0
- package/dist/cjs/threading.js +318 -0
- package/dist/cjs/types.d.ts +327 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/utf8-session.d.ts +17 -0
- package/dist/cjs/utf8-session.js +148 -0
- package/dist/cjs/vanished.d.ts +21 -0
- package/dist/cjs/vanished.js +55 -0
- package/dist/esm/addressparser.d.ts +21 -0
- package/{lib → dist/esm}/addressparser.js +106 -133
- package/dist/esm/arguments.d.ts +31 -0
- package/dist/esm/arguments.js +96 -0
- package/dist/esm/bodystructure.d.ts +25 -0
- package/{lib → dist/esm}/bodystructure.js +17 -33
- package/dist/esm/cert.d.ts +2 -0
- package/dist/esm/cert.js +4 -0
- package/dist/esm/command-states.d.ts +36 -0
- package/{lib → dist/esm}/command-states.js +4 -16
- package/dist/esm/commands/append.d.ts +88 -0
- package/{lib → dist/esm}/commands/append.js +47 -85
- package/dist/esm/commands/capability.d.ts +2 -0
- package/dist/esm/commands/capability.js +29 -0
- package/dist/esm/commands/check.d.ts +2 -0
- package/dist/esm/commands/check.js +13 -0
- package/dist/esm/commands/close.d.ts +2 -0
- package/dist/esm/commands/close.js +20 -0
- package/dist/esm/commands/copy.d.ts +30 -0
- package/{lib → dist/esm}/commands/copy.js +31 -55
- package/dist/esm/commands/create.d.ts +2 -0
- package/{lib → dist/esm}/commands/create.js +25 -39
- package/dist/esm/commands/delete.d.ts +2 -0
- package/{lib → dist/esm}/commands/delete.js +25 -41
- package/dist/esm/commands/examine.d.ts +2 -0
- package/dist/esm/commands/examine.js +4 -0
- package/dist/esm/commands/expunge.d.ts +2 -0
- package/dist/esm/commands/expunge.js +17 -0
- package/dist/esm/commands/fetch.d.ts +23 -0
- package/{lib → dist/esm}/commands/fetch.js +33 -74
- package/dist/esm/commands/handlers/fetch.d.ts +12 -0
- package/{lib → dist/esm}/commands/handlers/fetch.js +11 -42
- package/dist/esm/commands/handlers/flags.d.ts +17 -0
- package/{lib → dist/esm}/commands/handlers/flags.js +3 -11
- package/dist/esm/commands/handlers/search.d.ts +85 -0
- package/{lib → dist/esm}/commands/handlers/search.js +33 -71
- package/dist/esm/commands/handlers/status.d.ts +34 -0
- package/{lib → dist/esm}/commands/handlers/status.js +1 -9
- package/dist/esm/commands/handlers/store.d.ts +3 -0
- package/{lib → dist/esm}/commands/handlers/store.js +20 -44
- package/dist/esm/commands/index.d.ts +2 -0
- package/dist/esm/commands/index.js +55 -0
- package/dist/esm/commands/list.d.ts +2 -0
- package/dist/esm/commands/list.js +71 -0
- package/dist/esm/commands/login.d.ts +2 -0
- package/{lib → dist/esm}/commands/login.js +24 -44
- package/dist/esm/commands/logout.d.ts +2 -0
- package/dist/esm/commands/logout.js +25 -0
- package/dist/esm/commands/lsub.d.ts +2 -0
- package/dist/esm/commands/lsub.js +64 -0
- package/dist/esm/commands/noop.d.ts +2 -0
- package/dist/esm/commands/noop.js +13 -0
- package/dist/esm/commands/rename.d.ts +2 -0
- package/{lib → dist/esm}/commands/rename.js +32 -51
- package/dist/esm/commands/search.d.ts +10 -0
- package/dist/esm/commands/search.js +54 -0
- package/dist/esm/commands/select.d.ts +19 -0
- package/dist/esm/commands/select.js +214 -0
- package/dist/esm/commands/status.d.ts +2 -0
- package/{lib → dist/esm}/commands/status.js +18 -39
- package/dist/esm/commands/store.d.ts +10 -0
- package/{lib → dist/esm}/commands/store.js +39 -73
- package/dist/esm/commands/subscribe.d.ts +2 -0
- package/{lib → dist/esm}/commands/subscribe.js +22 -39
- package/dist/esm/commands/uid-copy.d.ts +2 -0
- package/dist/esm/commands/uid-copy.js +4 -0
- package/dist/esm/commands/uid-fetch.d.ts +3 -0
- package/dist/esm/commands/uid-fetch.js +3 -0
- package/dist/esm/commands/uid-search.d.ts +3 -0
- package/dist/esm/commands/uid-search.js +3 -0
- package/dist/esm/commands/uid-store.d.ts +3 -0
- package/dist/esm/commands/uid-store.js +3 -0
- package/dist/esm/commands/unsubscribe.d.ts +2 -0
- package/{lib → dist/esm}/commands/unsubscribe.js +22 -37
- package/dist/esm/dates.d.ts +64 -0
- package/{lib → dist/esm}/dates.js +6 -14
- package/dist/esm/deflate-layer.d.ts +83 -0
- package/{lib → dist/esm}/deflate-layer.js +9 -26
- package/dist/esm/encoded-words.d.ts +15 -0
- package/{lib → dist/esm}/encoded-words.js +9 -25
- package/dist/esm/envelope.d.ts +33 -0
- package/{lib → dist/esm}/envelope.js +8 -19
- package/dist/esm/esearch.d.ts +96 -0
- package/{lib → dist/esm}/esearch.js +12 -39
- package/dist/esm/framing.d.ts +66 -0
- package/dist/esm/framing.js +82 -0
- package/dist/esm/index.d.ts +9 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/list-extensions.d.ts +50 -0
- package/{lib → dist/esm}/list-extensions.js +1 -4
- package/dist/esm/load-plugins.d.ts +21 -0
- package/{lib → dist/esm}/load-plugins.js +9 -43
- package/dist/esm/mailbox-name.d.ts +26 -0
- package/{lib → dist/esm}/mailbox-name.js +5 -26
- package/dist/esm/mimeparser.d.ts +137 -0
- package/{lib → dist/esm}/mimeparser.js +74 -152
- package/dist/esm/mock-client.d.ts +39 -0
- package/{lib → dist/esm}/mock-client.js +26 -40
- package/dist/esm/numbers.d.ts +28 -0
- package/{lib → dist/esm}/numbers.js +1 -8
- package/dist/esm/package.json +3 -0
- package/dist/esm/plugins/acl.d.ts +2 -0
- package/{lib → dist/esm}/plugins/acl.js +146 -240
- package/dist/esm/plugins/appendlimit.d.ts +16 -0
- package/{lib → dist/esm}/plugins/appendlimit.js +5 -16
- package/dist/esm/plugins/auth-plain.d.ts +2 -0
- package/{lib → dist/esm}/plugins/auth-plain.js +11 -31
- package/dist/esm/plugins/binary.d.ts +30 -0
- package/{lib → dist/esm}/plugins/binary.js +17 -43
- package/dist/esm/plugins/catenate.d.ts +14 -0
- package/{lib → dist/esm}/plugins/catenate.js +19 -40
- package/dist/esm/plugins/compress.d.ts +7 -0
- package/dist/esm/plugins/compress.js +61 -0
- package/dist/esm/plugins/condstore.d.ts +5 -0
- package/{lib → dist/esm}/plugins/condstore.js +66 -152
- package/dist/esm/plugins/context-search.d.ts +8 -0
- package/{lib → dist/esm}/plugins/context-search.js +53 -88
- package/dist/esm/plugins/context-sort.d.ts +6 -0
- package/{lib → dist/esm}/plugins/context-sort.js +4 -9
- package/dist/esm/plugins/create-special-use.d.ts +7 -0
- package/{lib → dist/esm}/plugins/create-special-use.js +33 -55
- package/dist/esm/plugins/enable.d.ts +23 -0
- package/dist/esm/plugins/enable.js +111 -0
- package/dist/esm/plugins/esearch.d.ts +6 -0
- package/{lib → dist/esm}/plugins/esearch.js +13 -42
- package/dist/esm/plugins/esort.d.ts +6 -0
- package/{lib → dist/esm}/plugins/esort.js +7 -25
- package/dist/esm/plugins/id.d.ts +5 -0
- package/dist/esm/plugins/id.js +108 -0
- package/dist/esm/plugins/idle.d.ts +5 -0
- package/dist/esm/plugins/idle.js +70 -0
- package/dist/esm/plugins/imap4rev2.d.ts +6 -0
- package/{lib → dist/esm}/plugins/imap4rev2.js +24 -60
- package/dist/esm/plugins/index.d.ts +2 -0
- package/dist/esm/plugins/index.js +113 -0
- package/dist/esm/plugins/list-extended.d.ts +2 -0
- package/{lib → dist/esm}/plugins/list-extended.js +28 -66
- package/dist/esm/plugins/list-status.d.ts +6 -0
- package/{lib → dist/esm}/plugins/list-status.js +5 -12
- package/dist/esm/plugins/literalminus.d.ts +8 -0
- package/{lib → dist/esm}/plugins/literalminus.js +2 -5
- package/dist/esm/plugins/literalplus.d.ts +6 -0
- package/{lib → dist/esm}/plugins/literalplus.js +2 -5
- package/dist/esm/plugins/logindisabled.d.ts +5 -0
- package/dist/esm/plugins/logindisabled.js +39 -0
- package/dist/esm/plugins/messagelimit.d.ts +19 -0
- package/{lib → dist/esm}/plugins/messagelimit.js +18 -41
- package/dist/esm/plugins/metadata-server.d.ts +7 -0
- package/{lib → dist/esm}/plugins/metadata-server.js +3 -7
- package/dist/esm/plugins/metadata.d.ts +11 -0
- package/dist/esm/plugins/metadata.js +421 -0
- package/dist/esm/plugins/move.d.ts +11 -0
- package/{lib → dist/esm}/plugins/move.js +37 -66
- package/dist/esm/plugins/multiappend.d.ts +12 -0
- package/{lib → dist/esm}/plugins/multiappend.js +2 -5
- package/dist/esm/plugins/multisearch.d.ts +6 -0
- package/{lib → dist/esm}/plugins/multisearch.js +24 -48
- package/dist/esm/plugins/namespace.d.ts +5 -0
- package/dist/esm/plugins/namespace.js +42 -0
- package/dist/esm/plugins/notify.d.ts +2 -0
- package/{lib → dist/esm}/plugins/notify.js +90 -134
- package/dist/esm/plugins/oauthbearer.d.ts +32 -0
- package/{lib → dist/esm}/plugins/oauthbearer.js +18 -48
- package/dist/esm/plugins/objectid.d.ts +23 -0
- package/{lib → dist/esm}/plugins/objectid.js +21 -58
- package/dist/esm/plugins/partial.d.ts +6 -0
- package/{lib → dist/esm}/plugins/partial.js +7 -15
- package/dist/esm/plugins/preview.d.ts +31 -0
- package/{lib → dist/esm}/plugins/preview.js +28 -66
- package/dist/esm/plugins/qresync.d.ts +11 -0
- package/{lib → dist/esm}/plugins/qresync.js +64 -134
- package/dist/esm/plugins/quota.d.ts +18 -0
- package/{lib → dist/esm}/plugins/quota.js +89 -135
- package/dist/esm/plugins/replace.d.ts +14 -0
- package/{lib → dist/esm}/plugins/replace.js +21 -51
- package/dist/esm/plugins/sasl-ir.d.ts +5 -0
- package/{lib → dist/esm}/plugins/sasl-ir.js +3 -6
- package/dist/esm/plugins/savedate.d.ts +17 -0
- package/{lib → dist/esm}/plugins/savedate.js +5 -15
- package/dist/esm/plugins/savelimit.d.ts +10 -0
- package/{lib → dist/esm}/plugins/savelimit.js +3 -6
- package/dist/esm/plugins/searchres.d.ts +6 -0
- package/{lib → dist/esm}/plugins/searchres.js +13 -22
- package/dist/esm/plugins/sort-display.d.ts +11 -0
- package/{lib → dist/esm}/plugins/sort-display.js +6 -10
- package/dist/esm/plugins/sort.d.ts +11 -0
- package/{lib → dist/esm}/plugins/sort.js +24 -46
- package/dist/esm/plugins/special-use.d.ts +10 -0
- package/{lib → dist/esm}/plugins/special-use.js +9 -24
- package/dist/esm/plugins/starttls.d.ts +5 -0
- package/{lib → dist/esm}/plugins/starttls.js +20 -37
- package/dist/esm/plugins/status-size.d.ts +7 -0
- package/{lib → dist/esm}/plugins/status-size.js +4 -11
- package/dist/esm/plugins/thread-orderedsubject.d.ts +11 -0
- package/{lib → dist/esm}/plugins/thread-orderedsubject.js +3 -6
- package/dist/esm/plugins/thread-references.d.ts +11 -0
- package/{lib → dist/esm}/plugins/thread-references.js +3 -6
- package/dist/esm/plugins/uidonly.d.ts +15 -0
- package/{lib → dist/esm}/plugins/uidonly.js +11 -35
- package/dist/esm/plugins/uidplus.d.ts +15 -0
- package/{lib → dist/esm}/plugins/uidplus.js +25 -45
- package/dist/esm/plugins/unauthenticate.d.ts +7 -0
- package/dist/esm/plugins/unauthenticate.js +17 -0
- package/dist/esm/plugins/unselect.d.ts +5 -0
- package/dist/esm/plugins/unselect.js +21 -0
- package/dist/esm/plugins/utf8-accept.d.ts +6 -0
- package/{lib → dist/esm}/plugins/utf8-accept.js +10 -21
- package/dist/esm/plugins/x-gm-ext-1.d.ts +26 -0
- package/{lib → dist/esm}/plugins/x-gm-ext-1.js +48 -100
- package/dist/esm/plugins/xoauth2.d.ts +2 -0
- package/dist/esm/plugins/xoauth2.js +140 -0
- package/dist/esm/plugins/xtoybird.d.ts +2 -0
- package/dist/esm/plugins/xtoybird.js +218 -0
- package/dist/esm/server.d.ts +876 -0
- package/dist/esm/server.js +2543 -0
- package/dist/esm/smtp-listener.d.ts +13 -0
- package/{lib → dist/esm}/smtp-listener.js +5 -12
- package/dist/esm/sorting.d.ts +77 -0
- package/{lib → dist/esm}/sorting.js +40 -53
- package/dist/esm/threading.d.ts +30 -0
- package/{lib → dist/esm}/threading.js +29 -70
- package/dist/esm/types.d.ts +327 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/utf8-session.d.ts +17 -0
- package/{lib → dist/esm}/utf8-session.js +15 -25
- package/dist/esm/vanished.d.ts +21 -0
- package/{lib → dist/esm}/vanished.js +16 -21
- package/dist/plugin-help.json +298 -0
- package/package.json +55 -12
- package/lib/commands/capability.js +0 -47
- package/lib/commands/check.js +0 -21
- package/lib/commands/close.js +0 -30
- package/lib/commands/examine.js +0 -7
- package/lib/commands/expunge.js +0 -27
- package/lib/commands/list.js +0 -100
- package/lib/commands/logout.js +0 -41
- package/lib/commands/lsub.js +0 -87
- package/lib/commands/noop.js +0 -21
- package/lib/commands/search.js +0 -76
- package/lib/commands/select.js +0 -289
- package/lib/commands/uid copy.js +0 -7
- package/lib/commands/uid fetch.js +0 -5
- package/lib/commands/uid search.js +0 -5
- package/lib/commands/uid store.js +0 -5
- package/lib/plugins/compress.js +0 -76
- package/lib/plugins/enable.js +0 -155
- package/lib/plugins/id.js +0 -138
- package/lib/plugins/idle.js +0 -105
- package/lib/plugins/logindisabled.js +0 -50
- package/lib/plugins/metadata.js +0 -475
- package/lib/plugins/namespace.js +0 -67
- package/lib/plugins/unauthenticate.js +0 -28
- package/lib/plugins/unselect.js +0 -36
- package/lib/plugins/xoauth2.js +0 -188
- package/lib/plugins/xtoybird.js +0 -282
- package/lib/server.js +0 -2880
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const { getMessageData, partsOf } = require('../mimeparser');
|
|
4
|
-
const { isAtom } = require('../arguments');
|
|
5
|
-
|
|
1
|
+
import { getMessageData, partsOf } from '../mimeparser.js';
|
|
2
|
+
import { isAtom } from '../arguments.js';
|
|
6
3
|
/**
|
|
7
4
|
* @help Adds PREVIEW [RFC8970] capability
|
|
8
5
|
* @help Previews come from the first text/plain or text/html body part,
|
|
@@ -14,14 +11,12 @@ const { isAtom } = require('../arguments');
|
|
|
14
11
|
* Message storage property:
|
|
15
12
|
* - preview: preview text to return instead of a generated one
|
|
16
13
|
*/
|
|
17
|
-
|
|
14
|
+
export default function previewPlugin(server) {
|
|
18
15
|
server.registerCapability('PREVIEW');
|
|
19
|
-
|
|
20
16
|
// Generated previews, so PREVIEW (LAZY) knows which ones are available without "undue delay"
|
|
21
17
|
const generated = new WeakMap();
|
|
22
|
-
|
|
23
18
|
// The preview that is available without generating it: the storage value or an earlier generated one
|
|
24
|
-
const readyPreview = message => {
|
|
19
|
+
const readyPreview = (message) => {
|
|
25
20
|
if (typeof message.preview === 'string') {
|
|
26
21
|
// RFC 8970 3.3: the MUST NOT limits apply to the value from storage as well
|
|
27
22
|
return finishPreview(message.preview, MAX_PREVIEW_LENGTH);
|
|
@@ -29,7 +24,6 @@ module.exports = function (server) {
|
|
|
29
24
|
const cached = generated.get(message);
|
|
30
25
|
return cached && cached.source === message.raw ? cached.preview : undefined;
|
|
31
26
|
};
|
|
32
|
-
|
|
33
27
|
server.fetchHandlers.PREVIEW = function (connection, message, query) {
|
|
34
28
|
let preview = readyPreview(message);
|
|
35
29
|
if (preview === undefined) {
|
|
@@ -44,7 +38,6 @@ module.exports = function (server) {
|
|
|
44
38
|
// RFC 8970 3.3: UTF-8, sent as a literal by the compiler when it holds 8-bit characters
|
|
45
39
|
return Buffer.from(preview, 'utf8').toString('binary');
|
|
46
40
|
};
|
|
47
|
-
|
|
48
41
|
// RFC 8970 6: fetch-att =/ "PREVIEW" [SP "(" preview-mod *(SP preview-mod) ")"]. The parser returns the
|
|
49
42
|
// modifiers as a list that follows the PREVIEW atom, so fold them into the atom before FETCH sees them
|
|
50
43
|
['FETCH', 'UID FETCH'].forEach(command => {
|
|
@@ -52,24 +45,21 @@ module.exports = function (server) {
|
|
|
52
45
|
server.setCommandHandler(command, (connection, parsed, data, callback) => {
|
|
53
46
|
try {
|
|
54
47
|
foldModifiers(parsed);
|
|
55
|
-
}
|
|
48
|
+
}
|
|
49
|
+
catch (E) {
|
|
56
50
|
connection.sendStatus(parsed, data, 'BAD', E.message, false, 'PREVIEW FAILED');
|
|
57
51
|
return callback();
|
|
58
52
|
}
|
|
59
53
|
prevHandler(connection, parsed, data, callback);
|
|
60
54
|
});
|
|
61
55
|
});
|
|
62
|
-
}
|
|
63
|
-
|
|
56
|
+
}
|
|
64
57
|
// RFC 8970 3.3: the server SHOULD limit previews to 200 characters and MUST NOT exceed 256
|
|
65
58
|
const PREVIEW_LENGTH = 200;
|
|
66
59
|
const MAX_PREVIEW_LENGTH = 256;
|
|
67
|
-
|
|
68
60
|
// Input of preview generation is limited to the start of the part, enough for a 200 character preview
|
|
69
61
|
const MAX_INPUT = 64 * 1024;
|
|
70
|
-
|
|
71
|
-
const isModifierList = list => Array.isArray(list) && list.length > 0 && list.every(item => isAtom(item, 'LAZY'));
|
|
72
|
-
|
|
62
|
+
const isModifierList = (list) => Array.isArray(list) && list.length > 0 && list.every(item => isAtom(item, 'LAZY'));
|
|
73
63
|
/**
|
|
74
64
|
* Returns the PREVIEW item with its modifiers. RFC 8970 6: preview-mod = "LAZY", at least one is required
|
|
75
65
|
*
|
|
@@ -86,7 +76,6 @@ function withModifiers(item, list) {
|
|
|
86
76
|
}
|
|
87
77
|
return Object.assign({}, item, { previewLazy: true });
|
|
88
78
|
}
|
|
89
|
-
|
|
90
79
|
/**
|
|
91
80
|
* Turns `PREVIEW (LAZY)` in the FETCH arguments into a single PREVIEW item with the previewLazy flag
|
|
92
81
|
*
|
|
@@ -97,7 +86,6 @@ function foldModifiers(parsed) {
|
|
|
97
86
|
if (!Array.isArray(attributes)) {
|
|
98
87
|
return;
|
|
99
88
|
}
|
|
100
|
-
|
|
101
89
|
const items = attributes[1];
|
|
102
90
|
if (Array.isArray(items)) {
|
|
103
91
|
// inside the item list every list that follows PREVIEW is a modifier list
|
|
@@ -109,7 +97,6 @@ function foldModifiers(parsed) {
|
|
|
109
97
|
}
|
|
110
98
|
return;
|
|
111
99
|
}
|
|
112
|
-
|
|
113
100
|
// A single PREVIEW item may be followed by both its modifiers and the FETCH modifiers of other extensions
|
|
114
101
|
// (RFC 7162 CHANGEDSINCE), so "FETCH 1 PREVIEW (X)" is a preview modifier only if it looks like one or if
|
|
115
102
|
// another list follows
|
|
@@ -118,7 +105,6 @@ function foldModifiers(parsed) {
|
|
|
118
105
|
attributes.splice(2, 1);
|
|
119
106
|
}
|
|
120
107
|
}
|
|
121
|
-
|
|
122
108
|
/**
|
|
123
109
|
* Generates the preview text of a message (RFC 8970 3.3) from the first text/plain or text/html part
|
|
124
110
|
*
|
|
@@ -131,15 +117,12 @@ function generatePreview(tree) {
|
|
|
131
117
|
// RFC 8970 3.2: the server MUST return an empty string when there is no meaningful preview
|
|
132
118
|
return '';
|
|
133
119
|
}
|
|
134
|
-
|
|
135
120
|
const text = decodeBody(part);
|
|
136
121
|
if (text === false) {
|
|
137
122
|
return '';
|
|
138
123
|
}
|
|
139
|
-
|
|
140
124
|
return finishPreview(part.parsedHeader['content-type'].subtype === 'html' ? htmlToText(text) : plainToText(text), PREVIEW_LENGTH);
|
|
141
125
|
}
|
|
142
|
-
|
|
143
126
|
/**
|
|
144
127
|
* Finds the part to build the preview from. Attachments, attached messages and encrypted content are skipped.
|
|
145
128
|
* In a multipart/alternative a text/plain part is preferred over text/html
|
|
@@ -151,18 +134,16 @@ function findTextPart(node) {
|
|
|
151
134
|
// the parser fills in the RFC 2045 5.2 and RFC 2046 5.1.5 default content types
|
|
152
135
|
const { type, subtype } = node.parsedHeader['content-type'];
|
|
153
136
|
const disposition = node.parsedHeader['content-disposition'];
|
|
154
|
-
|
|
155
137
|
if (disposition && disposition.type === 'attachment') {
|
|
156
138
|
return false;
|
|
157
139
|
}
|
|
158
|
-
|
|
159
140
|
if (type === 'multipart') {
|
|
160
141
|
if (subtype === 'encrypted') {
|
|
161
142
|
return false;
|
|
162
143
|
}
|
|
163
144
|
const parts = partsOf(node) || [];
|
|
164
145
|
if (subtype === 'alternative') {
|
|
165
|
-
const candidates = parts.map(findTextPart).filter(
|
|
146
|
+
const candidates = parts.map(findTextPart).filter((part) => !!part);
|
|
166
147
|
return candidates.find(part => part.parsedHeader['content-type'].subtype === 'plain') || candidates[0] || false;
|
|
167
148
|
}
|
|
168
149
|
for (const part of parts) {
|
|
@@ -173,10 +154,8 @@ function findTextPart(node) {
|
|
|
173
154
|
}
|
|
174
155
|
return false;
|
|
175
156
|
}
|
|
176
|
-
|
|
177
157
|
return type === 'text' && (subtype === 'plain' || subtype === 'html') ? node : false;
|
|
178
158
|
}
|
|
179
|
-
|
|
180
159
|
/**
|
|
181
160
|
* Decodes the content transfer encoding and the charset of the start of a part
|
|
182
161
|
*
|
|
@@ -187,7 +166,6 @@ function decodeBody(node) {
|
|
|
187
166
|
const encoding = String(node.parsedHeader['content-transfer-encoding'] || '7bit').toLowerCase();
|
|
188
167
|
const body = node.body;
|
|
189
168
|
let octets;
|
|
190
|
-
|
|
191
169
|
switch (encoding) {
|
|
192
170
|
case '7bit':
|
|
193
171
|
case '8bit':
|
|
@@ -204,23 +182,21 @@ function decodeBody(node) {
|
|
|
204
182
|
default:
|
|
205
183
|
return false;
|
|
206
184
|
}
|
|
207
|
-
|
|
208
185
|
const charset = String(node.parsedHeader['content-type'].params.charset || '')
|
|
209
186
|
.trim()
|
|
210
187
|
.toLowerCase();
|
|
211
|
-
|
|
212
188
|
// Like Dovecot, a missing, US-ASCII or unsupported charset is decoded as UTF-8, invalid octets become U+FFFD
|
|
213
189
|
let decoder;
|
|
214
190
|
if (charset && !['us-ascii', 'ascii'].includes(charset)) {
|
|
215
191
|
try {
|
|
216
192
|
decoder = new TextDecoder(charset);
|
|
217
|
-
}
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
218
195
|
// unknown charset label
|
|
219
196
|
}
|
|
220
197
|
}
|
|
221
198
|
return (decoder || new TextDecoder('utf-8')).decode(octets);
|
|
222
199
|
}
|
|
223
|
-
|
|
224
200
|
/**
|
|
225
201
|
* Decodes quoted-printable content (RFC 2045 6.7). Malformed escapes are kept as they are
|
|
226
202
|
*
|
|
@@ -232,19 +208,18 @@ function decodeQuotedPrintable(body) {
|
|
|
232
208
|
// backtrack over long runs of whitespace. Line breaks are CRLF after getMessageData()
|
|
233
209
|
const decoded = body
|
|
234
210
|
.split('\r\n')
|
|
235
|
-
.map(line => {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
211
|
+
.map((line) => {
|
|
212
|
+
let end = line.length;
|
|
213
|
+
while (end > 0 && (line[end - 1] === ' ' || line[end - 1] === '\t')) {
|
|
214
|
+
end--;
|
|
215
|
+
}
|
|
216
|
+
return line.slice(0, end);
|
|
217
|
+
})
|
|
242
218
|
.join('\r\n')
|
|
243
219
|
.replace(/=\r\n/g, '')
|
|
244
220
|
.replace(/=([0-9A-Fa-f]{2})/g, (match, hex) => String.fromCharCode(parseInt(hex, 16)));
|
|
245
221
|
return Buffer.from(decoded, 'binary');
|
|
246
222
|
}
|
|
247
|
-
|
|
248
223
|
/**
|
|
249
224
|
* Plain text without quoted lines. Like Dovecot, lines that start with ">" are left out unless nothing else is left
|
|
250
225
|
*
|
|
@@ -258,7 +233,6 @@ function plainToText(text) {
|
|
|
258
233
|
.join('\n');
|
|
259
234
|
return unquoted.trim() ? unquoted : text;
|
|
260
235
|
}
|
|
261
|
-
|
|
262
236
|
// Inline elements are removed without a trace, every other tag separates words like a space
|
|
263
237
|
const INLINE_ELEMENTS = new Set([
|
|
264
238
|
'a',
|
|
@@ -292,15 +266,12 @@ const INLINE_ELEMENTS = new Set([
|
|
|
292
266
|
'var',
|
|
293
267
|
'wbr'
|
|
294
268
|
]);
|
|
295
|
-
|
|
296
269
|
// HTML 4 character entity references for U+00A0 to U+00FF, in code point order
|
|
297
|
-
const LATIN1_ENTITIES =
|
|
298
|
-
'nbsp iexcl cent pound curren yen brvbar sect uml copy ordf laquo not shy reg macr deg plusmn sup2 sup3 acute micro para ' +
|
|
270
|
+
const LATIN1_ENTITIES = 'nbsp iexcl cent pound curren yen brvbar sect uml copy ordf laquo not shy reg macr deg plusmn sup2 sup3 acute micro para ' +
|
|
299
271
|
'middot cedil sup1 ordm raquo frac14 frac12 frac34 iquest Agrave Aacute Acirc Atilde Auml Aring AElig Ccedil Egrave Eacute ' +
|
|
300
272
|
'Ecirc Euml Igrave Iacute Icirc Iuml ETH Ntilde Ograve Oacute Ocirc Otilde Ouml times Oslash Ugrave Uacute Ucirc Uuml Yacute ' +
|
|
301
273
|
'THORN szlig agrave aacute acirc atilde auml aring aelig ccedil egrave eacute ecirc euml igrave iacute icirc iuml eth ntilde ' +
|
|
302
274
|
'ograve oacute ocirc otilde ouml divide oslash ugrave uacute ucirc uuml yacute thorn yuml';
|
|
303
|
-
|
|
304
275
|
const NAMED_ENTITIES = Object.assign(Object.fromEntries(LATIN1_ENTITIES.split(' ').map((name, i) => [name, String.fromCharCode(0xa0 + i)])), {
|
|
305
276
|
amp: '&',
|
|
306
277
|
lt: '<',
|
|
@@ -320,7 +291,6 @@ const NAMED_ENTITIES = Object.assign(Object.fromEntries(LATIN1_ENTITIES.split('
|
|
|
320
291
|
zwnj: '\u200c',
|
|
321
292
|
zwj: '\u200d'
|
|
322
293
|
});
|
|
323
|
-
|
|
324
294
|
/**
|
|
325
295
|
* Converts HTML into plain text: markup, comments and non-rendered elements (head, script, style) are removed,
|
|
326
296
|
* character references are decoded. Like quoted lines of plain text, blockquote elements are left out unless
|
|
@@ -331,11 +301,9 @@ const NAMED_ENTITIES = Object.assign(Object.fromEntries(LATIN1_ENTITIES.split('
|
|
|
331
301
|
*/
|
|
332
302
|
function htmlToText(html) {
|
|
333
303
|
html = html.replace(/<!--[\s\S]*?(?:-->|$)/g, ' ').replace(/<(head|script|style|title|template)\b[^<>]*>[\s\S]*?(?:<\/\1\s*>|$)/gi, ' ');
|
|
334
|
-
|
|
335
304
|
const text = markupToText(removeBlockquotes(html));
|
|
336
305
|
return text.trim() ? text : markupToText(html);
|
|
337
306
|
}
|
|
338
|
-
|
|
339
307
|
/**
|
|
340
308
|
* Removes blockquote elements, nested ones included, in a single pass
|
|
341
309
|
*
|
|
@@ -357,7 +325,6 @@ function removeBlockquotes(html) {
|
|
|
357
325
|
}
|
|
358
326
|
return depth ? output : output + html.slice(pos);
|
|
359
327
|
}
|
|
360
|
-
|
|
361
328
|
/**
|
|
362
329
|
* Removes tags and decodes character references
|
|
363
330
|
*
|
|
@@ -367,19 +334,16 @@ function removeBlockquotes(html) {
|
|
|
367
334
|
function markupToText(html) {
|
|
368
335
|
return html
|
|
369
336
|
.replace(/<!\[CDATA\[([\s\S]*?)(?:\]\]>|$)/g, '$1')
|
|
370
|
-
.replace(/<\/?([A-Za-z][A-Za-z0-9-]*)(?![A-Za-z0-9-])[^<>]*>|<[!?][^<>]*>/g, (match, name) =>
|
|
371
|
-
name && INLINE_ELEMENTS.has(name.toLowerCase()) ? '' : ' '
|
|
372
|
-
)
|
|
337
|
+
.replace(/<\/?([A-Za-z][A-Za-z0-9-]*)(?![A-Za-z0-9-])[^<>]*>|<[!?][^<>]*>/g, (match, name) => name && INLINE_ELEMENTS.has(name.toLowerCase()) ? '' : ' ')
|
|
373
338
|
.replace(/&(#[0-9]+|#[xX][0-9A-Fa-f]+|[A-Za-z][A-Za-z0-9]*);/g, (match, ref) => {
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
339
|
+
if (ref[0] === '#') {
|
|
340
|
+
const code = /^#x/i.test(ref) ? parseInt(ref.slice(2), 16) : parseInt(ref.slice(1), 10);
|
|
341
|
+
// NUL, surrogates and values outside Unicode are not characters
|
|
342
|
+
return code > 0 && code <= 0x10ffff && (code < 0xd800 || code > 0xdfff) ? String.fromCodePoint(code) : '\ufffd';
|
|
343
|
+
}
|
|
344
|
+
return Object.hasOwn(NAMED_ENTITIES, ref) ? NAMED_ENTITIES[ref] : match;
|
|
345
|
+
});
|
|
381
346
|
}
|
|
382
|
-
|
|
383
347
|
/**
|
|
384
348
|
* Normalizes preview text: control characters are removed, whitespace runs become a single space (so there are no
|
|
385
349
|
* CR or LF characters) and the text is cut to at most `length` characters (code points, RFC 8970 3.3)
|
|
@@ -395,6 +359,4 @@ function finishPreview(text, length) {
|
|
|
395
359
|
.trim();
|
|
396
360
|
return Array.from(normalized).slice(0, length).join('').trimEnd();
|
|
397
361
|
}
|
|
398
|
-
|
|
399
|
-
module.exports.generatePreview = generatePreview;
|
|
400
|
-
module.exports.finishPreview = finishPreview;
|
|
362
|
+
export { generatePreview, finishPreview };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @help Adds QRESYNC [RFC7162] capability, loads CONDSTORE and ENABLE as well
|
|
3
|
+
* @help After ENABLE QRESYNC: SELECT/EXAMINE (QRESYNC (...)), UID FETCH (CHANGEDSINCE n VANISHED),
|
|
4
|
+
* @help and VANISHED responses instead of EXPUNGE
|
|
5
|
+
*/
|
|
6
|
+
import type { IMAPServer } from '../types.js';
|
|
7
|
+
declare function qresyncPlugin(server: IMAPServer): void;
|
|
8
|
+
declare namespace qresyncPlugin {
|
|
9
|
+
var requires: string[];
|
|
10
|
+
}
|
|
11
|
+
export default qresyncPlugin;
|