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.
- package/README.md +32 -19
- package/bin/imapkit.js +12 -16
- package/dist/cjs/addressparser.d.ts +21 -0
- package/dist/cjs/addressparser.js +277 -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 +102 -123
- 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 +54 -11
- 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
|
@@ -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;
|
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const { splitResponses, splitAtLiterals } = require('./framing');
|
|
6
|
-
const DeflateLayer = require('./deflate-layer');
|
|
7
|
-
|
|
1
|
+
import net from 'node:net';
|
|
2
|
+
import tls from 'node:tls';
|
|
3
|
+
import { splitResponses, splitAtLiterals } from './framing.js';
|
|
4
|
+
import DeflateLayer from './deflate-layer.js';
|
|
8
5
|
/**
|
|
9
6
|
* @namespace Mockup module
|
|
10
7
|
* @name mockup
|
|
11
8
|
*/
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
export default runClientMockup;
|
|
14
10
|
/**
|
|
15
11
|
* <p>Runs a batch of IMAP commands against a server, like a well behaved client would</p>
|
|
16
12
|
*
|
|
@@ -45,10 +41,9 @@ module.exports = runClientMockup;
|
|
|
45
41
|
* @param {Function} callback Callback function to run on completion, gets everything the server sent as a Buffer
|
|
46
42
|
*/
|
|
47
43
|
function runClientMockup(port, host, commands, debug, callback) {
|
|
48
|
-
|
|
49
|
-
|
|
44
|
+
const hostname = host || 'localhost';
|
|
45
|
+
const portNumber = port || 143;
|
|
50
46
|
const queue = Array.isArray(commands) ? splitLiterals(commands) : [];
|
|
51
|
-
|
|
52
47
|
const responses = [];
|
|
53
48
|
let buffer = '';
|
|
54
49
|
// tag of the command waiting for its tagged response
|
|
@@ -57,26 +52,23 @@ function runClientMockup(port, host, commands, debug, callback) {
|
|
|
57
52
|
let lastResponse = '';
|
|
58
53
|
let greeted = false;
|
|
59
54
|
let finished = false;
|
|
60
|
-
|
|
61
|
-
let socket = net.connect(port, host);
|
|
55
|
+
let socket = net.connect(portNumber, hostname);
|
|
62
56
|
// COMPRESS=DEFLATE layer, once the server accepted COMPRESS
|
|
63
57
|
let layer = null;
|
|
64
|
-
|
|
65
58
|
const log = (prefix, str) => {
|
|
66
59
|
if (debug) {
|
|
67
60
|
console.log(prefix + ' ' + str.replace(/\r?\n$/, ''));
|
|
68
61
|
}
|
|
69
62
|
};
|
|
70
|
-
|
|
71
|
-
const write = text => {
|
|
63
|
+
const write = (text) => {
|
|
72
64
|
log('C:', text);
|
|
73
65
|
if (layer) {
|
|
74
66
|
layer.write(Buffer.from(text, 'binary'));
|
|
75
|
-
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
76
69
|
socket.write(text, 'binary');
|
|
77
70
|
}
|
|
78
71
|
};
|
|
79
|
-
|
|
80
72
|
const finish = () => {
|
|
81
73
|
if (finished) {
|
|
82
74
|
return;
|
|
@@ -93,7 +85,6 @@ function runClientMockup(port, host, commands, debug, callback) {
|
|
|
93
85
|
callback(Buffer.concat(responses));
|
|
94
86
|
}
|
|
95
87
|
};
|
|
96
|
-
|
|
97
88
|
const sendNext = () => {
|
|
98
89
|
// literal data that the previous command did not get to send is dropped
|
|
99
90
|
while (queue.length && queue[0].continuation) {
|
|
@@ -113,7 +104,6 @@ function runClientMockup(port, host, commands, debug, callback) {
|
|
|
113
104
|
layer.end();
|
|
114
105
|
}
|
|
115
106
|
};
|
|
116
|
-
|
|
117
107
|
// literal data for the current command, or a continuation line such as DONE
|
|
118
108
|
const onContinuation = () => {
|
|
119
109
|
if (!queue.length) {
|
|
@@ -121,30 +111,27 @@ function runClientMockup(port, host, commands, debug, callback) {
|
|
|
121
111
|
}
|
|
122
112
|
write(queue.shift().text);
|
|
123
113
|
};
|
|
124
|
-
|
|
125
114
|
const upgrade = () => {
|
|
126
115
|
const plain = socket;
|
|
127
116
|
plain.removeAllListeners('data');
|
|
128
117
|
plain.removeAllListeners('close');
|
|
129
|
-
socket = tls.connect({ socket: plain, host, rejectUnauthorized: false }, () => {
|
|
118
|
+
socket = tls.connect({ socket: plain, host: hostname, rejectUnauthorized: false }, () => {
|
|
130
119
|
log('TLS', 'connection secured');
|
|
131
120
|
sendNext();
|
|
132
121
|
});
|
|
133
122
|
attach(socket);
|
|
134
123
|
};
|
|
135
|
-
|
|
136
124
|
// everything after the CRLF of the tagged OK is compressed (RFC 4978 section 3)
|
|
137
125
|
const startCompression = () => {
|
|
138
126
|
layer = new DeflateLayer({
|
|
139
|
-
writeRaw: chunk => socket.write(chunk),
|
|
127
|
+
writeRaw: (chunk) => socket.write(chunk),
|
|
140
128
|
onData: onData,
|
|
141
|
-
onError: err => {
|
|
129
|
+
onError: (err) => {
|
|
142
130
|
log('Compression error:', err.message);
|
|
143
131
|
socket.destroy();
|
|
144
132
|
}
|
|
145
133
|
});
|
|
146
134
|
};
|
|
147
|
-
|
|
148
135
|
// returns true if compression starts after this response
|
|
149
136
|
const onTagged = () => {
|
|
150
137
|
let compress = false;
|
|
@@ -156,7 +143,8 @@ function runClientMockup(port, host, commands, debug, callback) {
|
|
|
156
143
|
if (/^\S+ COMPRESS DEFLATE$/i.test(currentCommand)) {
|
|
157
144
|
startCompression();
|
|
158
145
|
compress = true;
|
|
159
|
-
}
|
|
146
|
+
}
|
|
147
|
+
else if (layer && /^\S+ UNAUTHENTICATE$/i.test(currentCommand)) {
|
|
160
148
|
// the server ends its compression after the CRLF of the OK
|
|
161
149
|
layer.endInput();
|
|
162
150
|
}
|
|
@@ -164,24 +152,25 @@ function runClientMockup(port, host, commands, debug, callback) {
|
|
|
164
152
|
sendNext();
|
|
165
153
|
return compress;
|
|
166
154
|
};
|
|
167
|
-
|
|
168
155
|
// Splits the received data into complete responses, a response may contain literals
|
|
169
156
|
const processBuffer = () => {
|
|
170
157
|
const framed = splitResponses(buffer);
|
|
171
158
|
for (const response of framed.responses) {
|
|
172
159
|
lastResponse = buffer.slice(response.start, response.end);
|
|
173
160
|
responses.push(Buffer.from(lastResponse, 'binary'));
|
|
174
|
-
|
|
175
161
|
if (!greeted) {
|
|
176
162
|
greeted = true;
|
|
177
163
|
sendNext();
|
|
178
|
-
}
|
|
164
|
+
}
|
|
165
|
+
else if (lastResponse.charAt(0) === '+') {
|
|
179
166
|
onContinuation();
|
|
180
|
-
}
|
|
167
|
+
}
|
|
168
|
+
else if (currentTag && lastResponse.substr(0, currentTag.length + 1) === currentTag + ' ' && onTagged()) {
|
|
181
169
|
// compression started, the rest of the data is compressed
|
|
182
170
|
const rest = buffer.slice(response.end);
|
|
183
171
|
buffer = '';
|
|
184
172
|
if (rest) {
|
|
173
|
+
// onTagged() started the compression
|
|
185
174
|
layer.receive(Buffer.from(rest, 'binary'));
|
|
186
175
|
}
|
|
187
176
|
return;
|
|
@@ -189,32 +178,29 @@ function runClientMockup(port, host, commands, debug, callback) {
|
|
|
189
178
|
}
|
|
190
179
|
buffer = buffer.slice(framed.end);
|
|
191
180
|
};
|
|
192
|
-
|
|
193
181
|
function onData(chunk) {
|
|
194
182
|
log('S:', chunk.toString('binary'));
|
|
195
183
|
buffer += chunk.toString('binary');
|
|
196
184
|
processBuffer();
|
|
197
185
|
}
|
|
198
|
-
|
|
199
186
|
function attach(sock) {
|
|
200
|
-
sock.on('data', chunk => {
|
|
187
|
+
sock.on('data', (chunk) => {
|
|
201
188
|
if (layer) {
|
|
202
189
|
layer.receive(chunk);
|
|
203
|
-
}
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
204
192
|
onData(chunk);
|
|
205
193
|
}
|
|
206
194
|
});
|
|
207
|
-
sock.on('error', err => {
|
|
195
|
+
sock.on('error', (err) => {
|
|
208
196
|
log('Socket error:', err.message);
|
|
209
197
|
// the close event follows and returns what was received so far
|
|
210
198
|
});
|
|
211
199
|
// the last data may still be in the decompressor
|
|
212
200
|
sock.on('close', () => (layer ? layer.whenIdle(finish) : finish()));
|
|
213
201
|
}
|
|
214
|
-
|
|
215
202
|
attach(socket);
|
|
216
203
|
}
|
|
217
|
-
|
|
218
204
|
/**
|
|
219
205
|
* Splits commands at synchronizing literals, so that literal data can wait for the
|
|
220
206
|
* continuation request
|
|
@@ -224,7 +210,7 @@ function runClientMockup(port, host, commands, debug, callback) {
|
|
|
224
210
|
*/
|
|
225
211
|
function splitLiterals(commands) {
|
|
226
212
|
const parts = [];
|
|
227
|
-
commands.forEach(command => {
|
|
213
|
+
commands.forEach((command) => {
|
|
228
214
|
splitAtLiterals(String(command) + '\r\n').forEach((text, i) => {
|
|
229
215
|
parts.push({ text, continuation: i > 0 });
|
|
230
216
|
});
|
|
@@ -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 };
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
1
|
// Limits and checks of the numbers in the IMAP grammar
|
|
4
|
-
|
|
5
2
|
// RFC 3501 and RFC 9051 section 9: number and nz-number are unsigned 32-bit integers
|
|
6
3
|
const MAX_NUMBER = 4294967295;
|
|
7
4
|
// RFC 9051 section 9: number64 is an unsigned 63-bit integer, so is mod-sequence-value (RFC 7162 section 7)
|
|
8
5
|
const MAX_NUMBER64 = 2n ** 63n - 1n;
|
|
9
|
-
|
|
10
6
|
/**
|
|
11
7
|
* Checks if a value is a number by the grammar: 1*DIGIT, up to a limit
|
|
12
8
|
*
|
|
@@ -22,7 +18,6 @@ function isNumber(value, max) {
|
|
|
22
18
|
}
|
|
23
19
|
return BigInt(value) <= BigInt(limit);
|
|
24
20
|
}
|
|
25
|
-
|
|
26
21
|
/**
|
|
27
22
|
* Checks if a value is a non-zero number (nz-number, nz-number64): digit-nz *DIGIT, up to a limit
|
|
28
23
|
*
|
|
@@ -33,7 +28,6 @@ function isNumber(value, max) {
|
|
|
33
28
|
function isNzNumber(value, max) {
|
|
34
29
|
return isNumber(value, max) && /^[1-9]/.test(value);
|
|
35
30
|
}
|
|
36
|
-
|
|
37
31
|
/**
|
|
38
32
|
* Checks if a value is a sequence set (RFC 3501 and RFC 9051 section 9): seq-number or seq-range items
|
|
39
33
|
* separated by commas, seq-number = nz-number / "*"
|
|
@@ -48,5 +42,4 @@ function isSequenceSet(value, noStar) {
|
|
|
48
42
|
}
|
|
49
43
|
return value.split(/[,:]/).every(part => (part === '*' ? !noStar : isNzNumber(part)));
|
|
50
44
|
}
|
|
51
|
-
|
|
52
|
-
module.exports = { MAX_NUMBER, MAX_NUMBER64, isNumber, isNzNumber, isSequenceSet };
|
|
45
|
+
export { MAX_NUMBER, MAX_NUMBER64, isNumber, isNzNumber, isSequenceSet };
|