@n8n/imap 0.25.0 → 0.27.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.
@@ -1,15 +1,70 @@
1
- import { EventEmitter } from 'events';
2
- import type Imap from 'imap';
3
- import { PartData } from './part-data';
4
- import type { Message, MessagePart, SearchCriteria } from './types';
5
- export declare class ImapSimple extends EventEmitter {
6
- private readonly imap;
7
- constructor(imap: Imap);
1
+ import { ImapFlow, type FetchMessageObject, type FetchQueryObject, type FlagsEvent, type ListResponse, type MailboxObject, type SearchObject } from 'imapflow';
2
+ import { type ImapConnectionOptions } from './connection-options';
3
+ export type CloseReason = 'ended' | 'error' | 'dropped';
4
+ export interface Arrival {
5
+ count: number | 'unknown';
6
+ }
7
+ export type ImapTransport = Pick<ImapFlow, 'connect' | 'close' | 'logout' | 'on' | 'once' | 'removeAllListeners' | 'usable' | 'search' | 'fetch' | 'download' | 'downloadMany' | 'messageFlagsAdd' | 'list' | 'mailboxOpen'>;
8
+ export interface ReconnectOptions {
9
+ mailbox: string;
10
+ interval?: number;
11
+ timeout?: number;
12
+ }
13
+ export interface Attachment {
14
+ filename?: string;
15
+ contentType?: string;
16
+ content: Buffer;
17
+ }
18
+ export declare class ImapSimple {
19
+ private readonly createTransport;
20
+ private readonly reconnectOptions?;
21
+ static connect(options: ImapConnectionOptions, reconnect?: ReconnectOptions, createTransport?: () => ImapTransport): Promise<ImapSimple>;
22
+ private client;
23
+ private ended;
24
+ private failure;
25
+ private dropCause;
26
+ private closed;
27
+ private installed;
28
+ private queue;
29
+ private readonly pending;
30
+ private generation;
31
+ private attempt;
32
+ private timer;
33
+ private readonly aborter;
34
+ private readonly handlers;
35
+ private constructor();
36
+ onArrival(handler: (arrival: Arrival) => Promise<void> | void): this;
37
+ onError(handler: (error: Error) => void): this;
38
+ onClose(handler: (reason: CloseReason, cause?: Error) => void): this;
39
+ onReconnect(handler: () => void): this;
40
+ catchUp(): void;
41
+ onFlags(handler: (event: FlagsEvent) => void): this;
42
+ private report;
43
+ private reportError;
44
+ private reportClose;
45
+ get endedByCaller(): boolean;
46
+ private get reconnectTimeout();
47
+ private closeReason;
48
+ private start;
49
+ private open;
50
+ private install;
51
+ private onTransportError;
52
+ private onTransportClose;
53
+ private lose;
54
+ private canRestore;
55
+ private restore;
56
+ private waitToTryAgain;
57
+ private reopen;
58
+ private discard;
59
+ private scheduleReplace;
60
+ private enqueue;
61
+ private assertRan;
62
+ search(criteria: SearchObject, query: FetchQueryObject, limit?: number): Promise<FetchMessageObject[]>;
63
+ downloadText(message: FetchMessageObject, subtype: string): Promise<string>;
64
+ downloadAttachments(message: FetchMessageObject): Promise<Attachment[]>;
65
+ private downloadPart;
66
+ addFlags(uids: number[], flags: string[]): Promise<void>;
67
+ openBox(boxName: string): Promise<MailboxObject>;
68
+ list(): Promise<ListResponse[]>;
8
69
  end(): void;
9
- search(searchCriteria: SearchCriteria[], fetchOptions: Imap.FetchOptions, limit?: number): Promise<Message[]>;
10
- getPartData(message: Message, part: MessagePart): Promise<PartData>;
11
- addFlags(uid: number[], flags: string | string[]): Promise<void>;
12
- getBoxes(): Promise<Imap.MailBoxes>;
13
- openBox(boxName: string): Promise<Imap.Box>;
14
- closeBox(autoExpunge?: boolean): Promise<void>;
15
70
  }
@@ -1,119 +1,361 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ImapSimple = void 0;
4
- const events_1 = require("events");
5
- const get_message_1 = require("./helpers/get-message");
6
- const part_data_1 = require("./part-data");
7
- const IMAP_EVENTS = ['alert', 'mail', 'expunge', 'uidvalidity', 'update', 'close', 'end'];
8
- class ImapSimple extends events_1.EventEmitter {
9
- constructor(imap) {
10
- super();
11
- this.imap = imap;
12
- IMAP_EVENTS.forEach((event) => {
13
- this.imap.on(event, this.emit.bind(this, event));
14
- });
15
- this.imap.on('error', (e) => {
16
- this.emit('error', e);
4
+ const sleep_1 = require("@n8n/utils/sleep");
5
+ const imapflow_1 = require("imapflow");
6
+ const connection_options_1 = require("./connection-options");
7
+ const errors_1 = require("./errors");
8
+ const message_1 = require("./message");
9
+ const LOGOUT_GRACE_PERIOD = 2000;
10
+ const DEFAULT_RECONNECT_TIMEOUT = 45_000;
11
+ const RESTORE_ATTEMPTS = 6;
12
+ const RESTORE_BACKOFF = 1000;
13
+ const withTimeout = async (operation, ms) => {
14
+ let timer;
15
+ void operation.catch(() => { });
16
+ try {
17
+ return await Promise.race([
18
+ operation,
19
+ new Promise((_, reject) => {
20
+ timer = setTimeout(() => reject(new errors_1.ReconnectTimeoutError()), ms);
21
+ }),
22
+ ]);
23
+ }
24
+ finally {
25
+ clearTimeout(timer);
26
+ }
27
+ };
28
+ const DOWNLOAD_CHUNK_SIZE = 1024 * 1024;
29
+ class ImapSimple {
30
+ static async connect(options, reconnect, createTransport = () => new imapflow_1.ImapFlow((0, connection_options_1.toImapFlowOptions)(options))) {
31
+ const connection = new ImapSimple(createTransport, reconnect);
32
+ await connection.start();
33
+ if (reconnect?.interval !== undefined)
34
+ connection.scheduleReplace(reconnect.interval);
35
+ return connection;
36
+ }
37
+ constructor(createTransport, reconnectOptions) {
38
+ this.createTransport = createTransport;
39
+ this.reconnectOptions = reconnectOptions;
40
+ this.ended = false;
41
+ this.closed = false;
42
+ this.installed = false;
43
+ this.queue = Promise.resolve();
44
+ this.pending = [];
45
+ this.generation = 0;
46
+ this.attempt = 0;
47
+ this.aborter = new AbortController();
48
+ this.handlers = {};
49
+ }
50
+ onArrival(handler) {
51
+ this.handlers.arrival = handler;
52
+ const waiting = this.pending.splice(0);
53
+ for (const arrival of waiting)
54
+ this.enqueue(arrival);
55
+ return this;
56
+ }
57
+ onError(handler) {
58
+ this.handlers.error = handler;
59
+ return this;
60
+ }
61
+ onClose(handler) {
62
+ this.handlers.close = handler;
63
+ return this;
64
+ }
65
+ onReconnect(handler) {
66
+ this.handlers.reconnect = handler;
67
+ return this;
68
+ }
69
+ catchUp() {
70
+ this.enqueue({ count: 'unknown' });
71
+ }
72
+ onFlags(handler) {
73
+ this.handlers.flags = handler;
74
+ return this;
75
+ }
76
+ report(event, run) {
77
+ if (this.closed && event !== 'close')
78
+ return;
79
+ const handler = this.handlers[event];
80
+ if (handler !== undefined)
81
+ run(handler);
82
+ }
83
+ reportError(error) {
84
+ this.failure = error instanceof Error ? error : new Error(String(error));
85
+ this.report('error', (handler) => handler(this.failure));
86
+ }
87
+ reportClose() {
88
+ if (this.closed)
89
+ return;
90
+ this.closed = true;
91
+ clearTimeout(this.timer);
92
+ this.report('close', (handler) => handler(this.closeReason(), this.dropCause));
93
+ }
94
+ get endedByCaller() {
95
+ return this.ended;
96
+ }
97
+ get reconnectTimeout() {
98
+ return this.reconnectOptions?.timeout ?? DEFAULT_RECONNECT_TIMEOUT;
99
+ }
100
+ closeReason() {
101
+ if (this.ended)
102
+ return 'ended';
103
+ if (this.dropCause)
104
+ return 'dropped';
105
+ return this.failure ? 'error' : 'dropped';
106
+ }
107
+ async start() {
108
+ const client = await this.open();
109
+ if (this.closed) {
110
+ this.discard(client);
111
+ throw this.failure ?? this.dropCause ?? new errors_1.ConnectionLostError();
112
+ }
113
+ this.install(client);
114
+ }
115
+ async open() {
116
+ const client = this.createTransport();
117
+ await client.connect();
118
+ client.on('error', (error) => this.onTransportError(error, client));
119
+ client.on('close', () => this.onTransportClose(client));
120
+ const mailbox = this.reconnectOptions?.mailbox;
121
+ if (mailbox !== undefined) {
122
+ try {
123
+ this.assertRan(await client.mailboxOpen(mailbox), 'SELECT', client);
124
+ }
125
+ catch (error) {
126
+ this.discard(client);
127
+ throw error;
128
+ }
129
+ }
130
+ return client;
131
+ }
132
+ install(client) {
133
+ this.client = client;
134
+ this.installed = true;
135
+ client.on('exists', ({ count, prevCount }) => {
136
+ if (count > prevCount)
137
+ this.enqueue({ count: count - prevCount });
17
138
  });
139
+ client.on('flags', (data) => this.report('flags', (handler) => handler(data)));
18
140
  }
19
- end() {
20
- this.imap.removeAllListeners();
21
- this.imap.on('error', () => { });
22
- this.imap.once('close', (...args) => this.emit('close', ...args));
23
- this.imap.end();
24
- }
25
- async search(searchCriteria, fetchOptions, limit) {
26
- return await new Promise((resolve, reject) => {
27
- this.imap.search(searchCriteria, (e, uids) => {
28
- if (e) {
29
- reject(e);
141
+ onTransportError(error, client) {
142
+ if (this.installed && client !== this.client)
143
+ return;
144
+ this.lose();
145
+ if (this.canRestore())
146
+ return;
147
+ this.reportError(error);
148
+ }
149
+ onTransportClose(client) {
150
+ if (this.installed && client !== this.client)
151
+ return;
152
+ this.lose();
153
+ if (!this.canRestore()) {
154
+ this.reportClose();
155
+ return;
156
+ }
157
+ void this.restore();
158
+ }
159
+ lose() {
160
+ this.generation += 1;
161
+ }
162
+ canRestore() {
163
+ return this.installed && this.reconnectOptions !== undefined && !this.ended && !this.closed;
164
+ }
165
+ async restore() {
166
+ for (let tries = 0;; tries++) {
167
+ this.attempt += 1;
168
+ const attempt = this.attempt;
169
+ try {
170
+ await withTimeout(this.reopen(attempt), this.reconnectTimeout);
171
+ return;
172
+ }
173
+ catch (error) {
174
+ if (attempt !== this.attempt || !this.canRestore())
30
175
  return;
31
- }
32
- if (uids.length === 0) {
33
- resolve([]);
176
+ if (tries + 1 < RESTORE_ATTEMPTS) {
177
+ if (await this.waitToTryAgain(tries, attempt))
178
+ continue;
34
179
  return;
35
180
  }
36
- let uidsToFetch = uids;
37
- if (limit && limit > 0 && uids.length > limit) {
38
- uidsToFetch = uids.slice(0, limit);
39
- }
40
- const fetch = this.imap.fetch(uidsToFetch, fetchOptions);
41
- let messagesRetrieved = 0;
42
- const messages = [];
43
- const fetchOnMessage = async (message, seqNo) => {
44
- const msg = await (0, get_message_1.getMessage)(message);
45
- msg.seqNo = seqNo;
46
- messages.push(msg);
47
- messagesRetrieved++;
48
- if (messagesRetrieved === uidsToFetch.length) {
49
- resolve(messages.filter((m) => !!m));
50
- }
51
- };
52
- const fetchOnError = (error) => {
53
- fetch.removeListener('message', fetchOnMessage);
54
- fetch.removeListener('end', fetchOnEnd);
55
- reject(error);
56
- };
57
- const fetchOnEnd = () => {
58
- fetch.removeListener('message', fetchOnMessage);
59
- fetch.removeListener('error', fetchOnError);
60
- fetch.on('error', () => { });
61
- };
62
- fetch.on('message', fetchOnMessage);
63
- fetch.once('error', fetchOnError);
64
- fetch.once('end', fetchOnEnd);
65
- });
66
- });
181
+ this.dropCause = error instanceof Error ? error : new Error(String(error));
182
+ this.reportClose();
183
+ return;
184
+ }
185
+ }
67
186
  }
68
- async getPartData(message, part) {
69
- return await new Promise((resolve, reject) => {
70
- const fetch = this.imap.fetch(message.attributes.uid, {
71
- bodies: [part.partID],
72
- struct: true,
187
+ async waitToTryAgain(tries, attempt) {
188
+ try {
189
+ await (0, sleep_1.sleep)(RESTORE_BACKOFF * 2 ** tries, this.aborter.signal);
190
+ }
191
+ catch {
192
+ return false;
193
+ }
194
+ return attempt === this.attempt && this.canRestore();
195
+ }
196
+ async reopen(attempt) {
197
+ this.lose();
198
+ this.discard(this.client);
199
+ const client = await this.open();
200
+ if (attempt !== this.attempt || this.ended || this.closed) {
201
+ this.discard(client);
202
+ return;
203
+ }
204
+ this.install(client);
205
+ this.report('reconnect', (handler) => handler());
206
+ this.catchUp();
207
+ }
208
+ discard(client) {
209
+ if (client === undefined)
210
+ return;
211
+ client.removeAllListeners();
212
+ client.on('error', () => { });
213
+ try {
214
+ client.close();
215
+ }
216
+ catch {
217
+ }
218
+ }
219
+ scheduleReplace(interval) {
220
+ this.timer = setTimeout(() => {
221
+ void this.restore().then(() => {
222
+ if (this.canRestore())
223
+ this.scheduleReplace(interval);
73
224
  });
74
- const fetchOnMessage = async (msg) => {
75
- const result = await (0, get_message_1.getMessage)(msg);
76
- if (result.parts.length !== 1) {
77
- reject(new Error('Got ' + result.parts.length + ' parts, should get 1'));
225
+ }, interval);
226
+ }
227
+ enqueue(arrival) {
228
+ if (this.closed || this.ended)
229
+ return;
230
+ const handler = this.handlers.arrival;
231
+ if (handler === undefined) {
232
+ this.pending.push(arrival);
233
+ return;
234
+ }
235
+ const queuedOn = this.generation;
236
+ const done = this.queue.then(async () => {
237
+ if (this.generation !== queuedOn)
238
+ return;
239
+ try {
240
+ await handler(arrival);
241
+ }
242
+ catch (error) {
243
+ if (this.generation !== queuedOn)
78
244
  return;
79
- }
80
- const data = result.parts[0].body;
81
- const encoding = (part.encoding || '7BIT').toUpperCase();
82
- resolve(part_data_1.PartData.fromData(data, encoding));
83
- };
84
- const fetchOnError = (error) => {
85
- fetch.removeListener('message', fetchOnMessage);
86
- fetch.removeListener('end', fetchOnEnd);
87
- reject(error);
88
- };
89
- const fetchOnEnd = () => {
90
- fetch.removeListener('message', fetchOnMessage);
91
- fetch.removeListener('error', fetchOnError);
92
- fetch.on('error', () => { });
93
- };
94
- fetch.once('message', fetchOnMessage);
95
- fetch.once('error', fetchOnError);
96
- fetch.once('end', fetchOnEnd);
245
+ this.reportError(error);
246
+ }
97
247
  });
248
+ this.queue = done;
249
+ }
250
+ assertRan(result, command, client = this.client) {
251
+ if (result === false || result === null || result === undefined) {
252
+ if (!client.usable)
253
+ throw new errors_1.ConnectionLostError();
254
+ throw new Error(`IMAP ${command} did not complete`);
255
+ }
256
+ return result;
257
+ }
258
+ async search(criteria, query, limit) {
259
+ const client = this.client;
260
+ const found = await client.search(criteria, { uid: true });
261
+ const uids = this.assertRan(Array.isArray(found) ? found : undefined, 'SEARCH', client);
262
+ if (uids.length === 0)
263
+ return [];
264
+ const wanted = limit && limit > 0 ? uids.slice(0, limit) : uids;
265
+ const messages = [];
266
+ for await (const fetched of client.fetch(wanted, query, { uid: true })) {
267
+ messages.push(fetched);
268
+ }
269
+ if (messages.length === 0 && !client.usable)
270
+ throw new errors_1.ConnectionLostError();
271
+ return messages;
272
+ }
273
+ async downloadText(message, subtype) {
274
+ const partID = message.bodyStructure && (0, message_1.bodyPartID)(message.bodyStructure, subtype);
275
+ if (!partID)
276
+ return '';
277
+ const client = this.client;
278
+ try {
279
+ return (await this.downloadPart(message.uid, partID)).content.toString('utf8');
280
+ }
281
+ catch (error) {
282
+ if (error instanceof errors_1.ConnectionLostError)
283
+ throw error;
284
+ if (!client.usable)
285
+ throw new errors_1.ConnectionLostError();
286
+ return '';
287
+ }
98
288
  }
99
- async addFlags(uid, flags) {
100
- return await new Promise((resolve, reject) => {
101
- this.imap.addFlags(uid, flags, (e) => (e ? reject(e) : resolve()));
289
+ async downloadAttachments(message) {
290
+ const structure = message.bodyStructure;
291
+ const partIDs = structure ? (0, message_1.attachmentPartIDs)(structure) : [];
292
+ if (!structure || partIDs.length === 0)
293
+ return [];
294
+ if (structure.childNodes === undefined) {
295
+ return [await this.downloadPart(message.uid, partIDs[0])];
296
+ }
297
+ const downloaded = await this.client.downloadMany(String(message.uid), partIDs, { uid: true });
298
+ return partIDs.map((partID) => {
299
+ const part = downloaded[partID];
300
+ return {
301
+ filename: part?.meta?.filename,
302
+ contentType: part?.meta?.contentType,
303
+ content: this.assertRan(part?.content, 'FETCH'),
304
+ };
102
305
  });
103
306
  }
104
- async getBoxes() {
105
- return await new Promise((resolve, reject) => {
106
- this.imap.getBoxes((e, boxes) => (e ? reject(e) : resolve(boxes)));
307
+ async downloadPart(uid, partID) {
308
+ const client = this.client;
309
+ const downloaded = await client.download(String(uid), partID, {
310
+ uid: true,
311
+ chunkSize: DOWNLOAD_CHUNK_SIZE,
107
312
  });
313
+ const content = this.assertRan(downloaded?.content, 'FETCH', client);
314
+ const chunks = [];
315
+ for await (const chunk of content) {
316
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
317
+ }
318
+ if (!client.usable)
319
+ throw new errors_1.ConnectionLostError();
320
+ return {
321
+ content: Buffer.concat(chunks),
322
+ filename: downloaded?.meta?.filename,
323
+ contentType: downloaded?.meta?.contentType,
324
+ };
325
+ }
326
+ async addFlags(uids, flags) {
327
+ if (uids.length === 0)
328
+ return;
329
+ const applied = await this.client.messageFlagsAdd(uids.join(','), flags, { uid: true });
330
+ this.assertRan(applied || undefined, 'STORE');
108
331
  }
109
332
  async openBox(boxName) {
110
- return await new Promise((resolve, reject) => {
111
- this.imap.openBox(boxName, (e, result) => (e ? reject(e) : resolve(result)));
112
- });
333
+ const opened = await this.client.mailboxOpen(boxName);
334
+ return this.assertRan(opened || undefined, 'SELECT');
113
335
  }
114
- async closeBox(autoExpunge = true) {
115
- return await new Promise((resolve, reject) => {
116
- this.imap.closeBox(autoExpunge, (e) => (e ? reject(e) : resolve()));
336
+ async list() {
337
+ const boxes = await this.client.list();
338
+ if (boxes.length === 0 && !this.client.usable)
339
+ throw new errors_1.ConnectionLostError();
340
+ return boxes;
341
+ }
342
+ end() {
343
+ this.ended = true;
344
+ clearTimeout(this.timer);
345
+ this.aborter.abort();
346
+ this.lose();
347
+ const client = this.client;
348
+ client.removeAllListeners();
349
+ client.once('close', () => this.reportClose());
350
+ client.on('error', () => { });
351
+ const teardown = setTimeout(() => client.close(), LOGOUT_GRACE_PERIOD);
352
+ teardown.unref();
353
+ void client
354
+ .logout()
355
+ .catch(() => client.close())
356
+ .finally(() => {
357
+ clearTimeout(teardown);
358
+ this.reportClose();
117
359
  });
118
360
  }
119
361
  }
@@ -1 +1 @@
1
- {"version":3,"file":"imap-simple.js","sourceRoot":"","sources":["../src/imap-simple.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imap-simple.js","sourceRoot":"","sources":["../src/imap-simple.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,5 @@
1
- import { ImapSimple } from './imap-simple';
2
- import type { ImapSimpleOptions, MessagePart } from './types';
3
- export declare function connect(options: ImapSimpleOptions): Promise<ImapSimple>;
4
- export declare function getParts(struct: any, parts?: MessagePart[]): MessagePart[];
1
+ export type { ExistsEvent, FetchMessageObject, FetchQueryObject, FlagsEvent, ListResponse, MailboxObject, SearchObject, } from 'imapflow';
2
+ export * from './connection-options';
5
3
  export * from './imap-simple';
6
4
  export * from './errors';
7
- export type * from './types';
5
+ export { parseHeaders } from './headers';
package/dist/index.js CHANGED
@@ -13,72 +13,11 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
13
13
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
- var __importDefault = (this && this.__importDefault) || function (mod) {
17
- return (mod && mod.__esModule) ? mod : { "default": mod };
18
- };
19
16
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.connect = connect;
21
- exports.getParts = getParts;
22
- const imap_1 = __importDefault(require("imap"));
23
- const errors_1 = require("./errors");
24
- const imap_simple_1 = require("./imap-simple");
25
- async function connect(options) {
26
- const authTimeout = options.imap.authTimeout ?? 2000;
27
- options.imap.authTimeout = authTimeout;
28
- const imap = new imap_1.default(options.imap);
29
- return await new Promise((resolve, reject) => {
30
- const cleanUp = () => {
31
- imap.removeListener('ready', imapOnReady);
32
- imap.removeListener('error', imapOnError);
33
- imap.removeListener('close', imapOnClose);
34
- imap.removeListener('end', imapOnEnd);
35
- };
36
- const imapOnReady = () => {
37
- cleanUp();
38
- resolve(new imap_simple_1.ImapSimple(imap));
39
- };
40
- const imapOnError = (e) => {
41
- if (e.source === 'timeout-auth') {
42
- e = new errors_1.ConnectionTimeoutError(authTimeout);
43
- }
44
- cleanUp();
45
- reject(e);
46
- };
47
- const imapOnEnd = () => {
48
- cleanUp();
49
- reject(new errors_1.ConnectionEndedError());
50
- };
51
- const imapOnClose = () => {
52
- cleanUp();
53
- reject(new errors_1.ConnectionClosedError());
54
- };
55
- imap.once('ready', imapOnReady);
56
- imap.once('error', imapOnError);
57
- imap.once('close', imapOnClose);
58
- imap.once('end', imapOnEnd);
59
- if (options.onMail) {
60
- imap.on('mail', options.onMail);
61
- }
62
- if (options.onExpunge) {
63
- imap.on('expunge', options.onExpunge);
64
- }
65
- if (options.onUpdate) {
66
- imap.on('update', options.onUpdate);
67
- }
68
- imap.connect();
69
- });
70
- }
71
- function getParts(struct, parts = []) {
72
- for (let i = 0; i < struct.length; i++) {
73
- if (Array.isArray(struct[i])) {
74
- getParts(struct[i], parts);
75
- }
76
- else if (struct[i].partID) {
77
- parts.push(struct[i]);
78
- }
79
- }
80
- return parts;
81
- }
17
+ exports.parseHeaders = void 0;
18
+ __exportStar(require("./connection-options"), exports);
82
19
  __exportStar(require("./imap-simple"), exports);
83
20
  __exportStar(require("./errors"), exports);
21
+ var headers_1 = require("./headers");
22
+ Object.defineProperty(exports, "parseHeaders", { enumerable: true, get: function () { return headers_1.parseHeaders; } });
84
23
  //# sourceMappingURL=index.js.map