@fluxmail/provider-imap 0.23.0 → 0.24.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.
@@ -54,6 +54,13 @@ export declare class ImapProvider implements EmailProvider {
54
54
  private rolePath;
55
55
  private allMailPaths;
56
56
  private requireRole;
57
+ /**
58
+ * Opens a folder to act on stored UIDs. When the connection already had it
59
+ * open, a NOOP first collects what other sessions changed since, such as a
60
+ * draft another mail app deleted, because the server reports those changes
61
+ * only between commands.
62
+ */
63
+ private withCurrentMailbox;
57
64
  private withMailbox;
58
65
  private toMessage;
59
66
  listMessages(query: EmailQuery, page?: PageOpts): Promise<MessageSearchPage>;
@@ -69,6 +76,28 @@ export declare class ImapProvider implements EmailProvider {
69
76
  /** Looks up stored locations for a batch, or returns undefined when the store can only look up one at a time. */
70
77
  private findStoredLocations;
71
78
  private saveLocations;
79
+ /**
80
+ * Fetches a stored message in a folder opened with withCurrentMailbox.
81
+ * Another mail app may have replaced it under a new UID, as Apple Mail does
82
+ * when it autosaves a draft, or the folder's UIDVALIDITY may have changed.
83
+ * The copy with the same Message-ID then keeps the stored ID and draft ID,
84
+ * which the caller saves unless it saves the location itself. A message that
85
+ * is gone loses its stored location, and the result is undefined. Every ID
86
+ * whose location this removes is added to removed.
87
+ */
88
+ private fetchCurrent;
89
+ /**
90
+ * The UID of the copy with the stored message's Message-ID, preferring one
91
+ * no other stored location names. Only a draft takes over a copy stored
92
+ * under another ID: a draft another mail app saved again may already have
93
+ * been listed, while elsewhere that copy is more likely a second, separate
94
+ * copy of the message.
95
+ */
96
+ private replacementUid;
97
+ /** Where a stored message is in the open folder now, or undefined once it is gone. */
98
+ private currentLocation;
99
+ /** Stored messages as they are in the open folder now, leaving out ones that are gone. */
100
+ private currentLocations;
72
101
  private fetchLocation;
73
102
  getMessage(id: string, options?: GetMessageOpts): Promise<Message>;
74
103
  getThread(id: string): Promise<Thread>;
@@ -1 +1 @@
1
- {"version":3,"file":"imapProvider.d.ts","sourceRoot":"","sources":["../src/imapProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imapProvider.d.ts","sourceRoot":"","sources":["../src/imapProvider.ts"],"names":[],"mappings":"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"}
@@ -405,11 +405,24 @@ export class ImapProvider {
405
405
  return path;
406
406
  throw new EmailError('unsupported_capability', `This account has no resolved ${role} folder. Run "fluxmail accounts configure ${this.options.accountId} --${role}-folder <path>".`);
407
407
  }
408
- async withMailbox(path, fn, clientOverride) {
408
+ /**
409
+ * Opens a folder to act on stored UIDs. When the connection already had it
410
+ * open, a NOOP first collects what other sessions changed since, such as a
411
+ * draft another mail app deleted, because the server reports those changes
412
+ * only between commands.
413
+ */
414
+ withCurrentMailbox(path, fn) {
415
+ return this.withMailbox(path, fn, undefined, true);
416
+ }
417
+ async withMailbox(path, fn, clientOverride, refresh = false) {
409
418
  const client = clientOverride ?? (await this.client());
410
419
  let lock;
411
420
  try {
421
+ const opened = client.mailbox;
412
422
  lock = await imapStep('select', () => client.getMailboxLock(path));
423
+ // imapflow skips SELECT for the folder that is already open.
424
+ if (refresh && opened && client.mailbox === opened)
425
+ await imapStep('select', () => client.noop());
413
426
  const uidValidity = client.mailbox && client.mailbox.uidValidity.toString();
414
427
  if (!uidValidity) {
415
428
  throw new EmailError('provider_unavailable', `Mailbox ${path} has no UIDVALIDITY`, undefined, {
@@ -824,29 +837,107 @@ export class ImapProvider {
824
837
  for (const location of locations)
825
838
  await this.options.store.save(location);
826
839
  }
827
- async fetchLocation(location, body, includeHeaders = false) {
828
- return this.withMailbox(location.mailboxPath, async (client, uidValidity) => {
829
- if (uidValidity !== location.uidValidity)
830
- throw new EmailError('not_found', `Message ${location.id} is no longer available`);
831
- const fetched = await imapStep('fetch', () => client.fetchOne(location.uid, {
840
+ /**
841
+ * Fetches a stored message in a folder opened with withCurrentMailbox.
842
+ * Another mail app may have replaced it under a new UID, as Apple Mail does
843
+ * when it autosaves a draft, or the folder's UIDVALIDITY may have changed.
844
+ * The copy with the same Message-ID then keeps the stored ID and draft ID,
845
+ * which the caller saves unless it saves the location itself. A message that
846
+ * is gone loses its stored location, and the result is undefined. Every ID
847
+ * whose location this removes is added to removed.
848
+ */
849
+ async fetchCurrent(client, location, uidValidity, fetch, { save = true, removed } = {}) {
850
+ if (uidValidity === location.uidValidity) {
851
+ const fetched = await imapStep('fetch', () => fetch(location.uid));
852
+ if (fetched)
853
+ return { location, fetched };
854
+ }
855
+ const uid = await this.replacementUid(client, location, uidValidity);
856
+ const fetched = uid === undefined ? undefined : await imapStep('fetch', () => fetch(uid));
857
+ if (uid === undefined || !fetched) {
858
+ await this.options.store.remove(location.id);
859
+ removed?.add(location.id);
860
+ return undefined;
861
+ }
862
+ const occupant = await this.options.store.findByLocation(location.mailboxPath, uidValidity, uid);
863
+ if (occupant && occupant.id !== location.id) {
864
+ await this.options.store.remove(occupant.id);
865
+ removed?.add(occupant.id);
866
+ }
867
+ const current = { ...location, uidValidity, uid };
868
+ if (save)
869
+ await this.options.store.save(current);
870
+ return { location: current, fetched };
871
+ }
872
+ /**
873
+ * The UID of the copy with the stored message's Message-ID, preferring one
874
+ * no other stored location names. Only a draft takes over a copy stored
875
+ * under another ID: a draft another mail app saved again may already have
876
+ * been listed, while elsewhere that copy is more likely a second, separate
877
+ * copy of the message.
878
+ */
879
+ async replacementUid(client, location, uidValidity) {
880
+ const messageId = location.messageId;
881
+ if (!messageId)
882
+ return undefined;
883
+ const found = await imapStep('search', () => client.search({ header: { 'Message-ID': messageId } }, { uid: true }));
884
+ if (!found || !found.length)
885
+ return undefined;
886
+ const newest = [...found].sort((a, b) => b - a);
887
+ const stored = this.options.store.findByLocations
888
+ ? await this.options.store.findByLocations(location.mailboxPath, uidValidity, newest)
889
+ : (await Promise.all(newest.map((uid) => this.options.store.findByLocation(location.mailboxPath, uidValidity, uid)))).filter((row) => row !== undefined);
890
+ const taken = new Set(stored.filter((row) => row.id !== location.id).map((row) => row.uid));
891
+ return newest.find((uid) => !taken.has(uid)) ?? (location.draftId ? newest[0] : undefined);
892
+ }
893
+ /** Where a stored message is in the open folder now, or undefined once it is gone. */
894
+ async currentLocation(client, location, uidValidity) {
895
+ const current = await this.fetchCurrent(client, location, uidValidity, (uid) => client.fetchOne(uid, { uid: true }, { uid: true }));
896
+ return current?.location;
897
+ }
898
+ /** Stored messages as they are in the open folder now, leaving out ones that are gone. */
899
+ async currentLocations(client, locations, uidValidity) {
900
+ const listed = locations.filter((location) => location.uidValidity === uidValidity);
901
+ const present = new Set(listed.length
902
+ ? (await imapStep('search', () => client.search({ uid: listed.map((location) => location.uid).join(',') }, { uid: true }))) || []
903
+ : []);
904
+ const current = [];
905
+ for (const location of locations) {
906
+ if (location.uidValidity === uidValidity && present.has(location.uid)) {
907
+ current.push(location);
908
+ continue;
909
+ }
910
+ const moved = await this.currentLocation(client, location, uidValidity);
911
+ if (moved)
912
+ current.push(moved);
913
+ }
914
+ return current;
915
+ }
916
+ async fetchLocation(location, body, includeHeaders = false, removed) {
917
+ return this.withCurrentMailbox(location.mailboxPath, async (client, uidValidity) => {
918
+ const result = await this.fetchCurrent(client, location, uidValidity, (uid) => client.fetchOne(uid, {
832
919
  envelope: true,
833
920
  flags: true,
834
921
  internalDate: true,
835
922
  bodyStructure: true,
836
923
  headers: includeHeaders ? true : HEADER_NAMES,
837
- }, { uid: true }));
838
- if (!fetched)
924
+ }, { uid: true }),
925
+ // toMessage saves the location.
926
+ { save: false, removed });
927
+ if (!result)
839
928
  throw new EmailError('not_found', `No message with id "${location.id}"`);
929
+ const { location: current, fetched } = result;
840
930
  if (body && !fetched.bodyStructure) {
841
- const source = await client.fetchOne(location.uid, { source: true }, { uid: true });
931
+ const source = await client.fetchOne(current.uid, { source: true }, { uid: true });
842
932
  if (source && source.source)
843
933
  fetched.source = source.source;
844
934
  }
845
- return this.toMessage(client, location.mailboxPath, uidValidity, fetched, {
935
+ return this.toMessage(client, current.mailboxPath, uidValidity, fetched, {
846
936
  body,
847
937
  includeHeaders,
848
- threadId: location.threadId,
849
- ...(location.draftId ? { draftId: location.draftId } : {}),
938
+ existing: current,
939
+ threadId: current.threadId,
940
+ ...(current.draftId ? { draftId: current.draftId } : {}),
850
941
  });
851
942
  });
852
943
  }
@@ -857,9 +948,34 @@ export class ImapProvider {
857
948
  return this.fetchLocation(location, true, options?.includeHeaders ?? false);
858
949
  }
859
950
  async getThread(id) {
860
- let locations = await this.options.store.listByThreadId(id);
861
- if (!locations.length)
951
+ const stored = await this.options.store.listByThreadId(id);
952
+ if (!stored.length)
862
953
  throw new EmailError('not_found', `No thread with id "${id}"`);
954
+ const byId = new Map();
955
+ // A draft another mail app saved again takes over the location of its new
956
+ // copy if Drafts was listed first, which removes that copy's stored ID.
957
+ const removed = new Set();
958
+ // One at a time, as the mailbox lock would run them anyway.
959
+ const fetchAll = async (locations) => {
960
+ for (const location of locations) {
961
+ if (byId.has(location.id) || removed.has(location.id))
962
+ continue;
963
+ try {
964
+ const message = await this.fetchLocation(location, true, false, removed);
965
+ byId.set(message.id, message);
966
+ }
967
+ catch (error) {
968
+ // A message another mail app deleted is left out.
969
+ if (!(error instanceof EmailError) || error.code !== 'not_found')
970
+ throw error;
971
+ }
972
+ }
973
+ };
974
+ // Fetching the stored messages first moves one another mail app saved
975
+ // again to its new UID, so the search below finds it stored instead of
976
+ // storing it again under a new ID.
977
+ await fetchAll(stored);
978
+ let locations = await this.options.store.listByThreadId(id);
863
979
  const folders = await this.refreshFolders();
864
980
  const searched = new Set();
865
981
  while (true) {
@@ -895,12 +1011,14 @@ export class ImapProvider {
895
1011
  }
896
1012
  });
897
1013
  }
898
- const expanded = await this.options.store.listByThreadId(id);
899
- if (expanded.length === locations.length)
900
- break;
901
- locations = expanded;
1014
+ // The search can replace stale locations as well as add new ones, so
1015
+ // the next pass starts from what is stored now.
1016
+ locations = await this.options.store.listByThreadId(id);
902
1017
  }
903
- const messages = await Promise.all(locations.map((location) => this.fetchLocation(location, true)));
1018
+ await fetchAll(locations);
1019
+ const messages = [...byId.values()].filter((message) => !removed.has(message.id));
1020
+ if (!messages.length)
1021
+ throw new EmailError('not_found', `No thread with id "${id}"`);
904
1022
  messages.sort((a, b) => a.date.localeCompare(b.date));
905
1023
  return { id, subject: messages[0]?.subject ?? '', messages };
906
1024
  }
@@ -990,13 +1108,19 @@ export class ImapProvider {
990
1108
  if (!location)
991
1109
  throw new EmailError('not_found', `No draft with id "${draftId}"`);
992
1110
  const current = input.from === undefined ? await this.fetchLocation(location, true) : undefined;
1111
+ // Delete the copy that is there now, which another mail app may have replaced.
1112
+ const currentUid = current
1113
+ ? (await this.options.store.findById(location.id))?.uid
1114
+ : await this.withCurrentMailbox(location.mailboxPath, async (client, uidValidity) => (await this.currentLocation(client, location, uidValidity))?.uid);
1115
+ if (currentUid === undefined)
1116
+ throw new EmailError('not_found', `No draft with id "${draftId}"`);
993
1117
  const replacementInput = input.from === undefined && current?.from?.email ? { ...input, from: current.from.email } : input;
994
1118
  const replacement = await this.appendDraft(await this.compose(replacementInput, {
995
1119
  ...(location.inReplyTo ? { inReplyTo: location.inReplyTo } : {}),
996
1120
  ...(location.references?.length ? { references: location.references.join(' ') } : {}),
997
1121
  }), draftId, location.id);
998
1122
  await this.withMailbox(location.mailboxPath, async (client) => {
999
- await client.messageDelete(location.uid, { uid: true });
1123
+ await client.messageDelete(currentUid, { uid: true });
1000
1124
  });
1001
1125
  return replacement;
1002
1126
  }
@@ -1004,10 +1128,16 @@ export class ImapProvider {
1004
1128
  const location = await this.options.store.findByDraftId(draftId);
1005
1129
  if (!location)
1006
1130
  throw new EmailError('not_found', `No draft with id "${draftId}"`);
1007
- await this.withMailbox(location.mailboxPath, async (client) => {
1008
- await client.messageDelete(location.uid, { uid: true });
1131
+ const deleted = await this.withCurrentMailbox(location.mailboxPath, async (client, uidValidity) => {
1132
+ const current = await this.currentLocation(client, location, uidValidity);
1133
+ // Nothing is left to delete when another mail app already deleted it,
1134
+ // and fetchCurrent has already forgotten it.
1135
+ if (current)
1136
+ await client.messageDelete(current.uid, { uid: true });
1137
+ return current !== undefined;
1009
1138
  });
1010
- await this.options.store.remove(location.id);
1139
+ if (deleted)
1140
+ await this.options.store.remove(location.id);
1011
1141
  }
1012
1142
  async deliver(raw, envelopeRecipients, envelopeFrom) {
1013
1143
  if (!envelopeRecipients.length)
@@ -1088,15 +1218,14 @@ export class ImapProvider {
1088
1218
  let envelopeRecipients;
1089
1219
  let envelopeFrom;
1090
1220
  if ('draftId' in input) {
1091
- draftLocation = await this.options.store.findByDraftId(input.draftId);
1092
- if (!draftLocation)
1221
+ const stored = await this.options.store.findByDraftId(input.draftId);
1222
+ if (!stored)
1093
1223
  throw new EmailError('not_found', `No draft with id "${input.draftId}"`);
1094
- raw = await this.withMailbox(draftLocation.mailboxPath, async (client) => {
1095
- const fetched = await client.fetchOne(draftLocation.uid, { source: true }, { uid: true });
1096
- if (!fetched || !fetched.source)
1097
- throw new EmailError('not_found', `No draft with id "${input.draftId}"`);
1098
- return fetched.source;
1099
- });
1224
+ const current = await this.withCurrentMailbox(stored.mailboxPath, (client, uidValidity) => this.fetchCurrent(client, stored, uidValidity, (uid) => client.fetchOne(uid, { source: true }, { uid: true })));
1225
+ if (!current?.fetched.source)
1226
+ throw new EmailError('not_found', `No draft with id "${input.draftId}"`);
1227
+ draftLocation = current.location;
1228
+ raw = current.fetched.source;
1100
1229
  const parsed = await PostalMime.parse(raw, POSTAL_OPTIONS);
1101
1230
  envelopeRecipients = [
1102
1231
  ...postalAddresses(parsed.to),
@@ -1178,11 +1307,10 @@ export class ImapProvider {
1178
1307
  const location = await this.options.store.findById(messageId);
1179
1308
  if (!location)
1180
1309
  return;
1181
- await this.withMailbox(location.mailboxPath, async (client, uidValidity) => {
1182
- // A different UIDVALIDITY means the UID now names another message.
1183
- if (uidValidity !== location.uidValidity)
1184
- return;
1185
- await client.messageFlagsAdd(location.uid, [action === 'reply' ? '\\Answered' : '$Forwarded'], { uid: true });
1310
+ await this.withCurrentMailbox(location.mailboxPath, async (client, uidValidity) => {
1311
+ const current = await this.currentLocation(client, location, uidValidity);
1312
+ if (current)
1313
+ await client.messageFlagsAdd(current.uid, [action === 'reply' ? '\\Answered' : '$Forwarded'], { uid: true });
1186
1314
  });
1187
1315
  }
1188
1316
  async modify(ids, action) {
@@ -1223,8 +1351,27 @@ export class ImapProvider {
1223
1351
  throw new EmailError('invalid_request', 'Use the archive, trash, or untrash action when moving messages through a protected folder');
1224
1352
  }
1225
1353
  }
1226
- for (const [path, group] of groups) {
1227
- await this.withMailbox(path, async (client) => {
1354
+ const flagChange = ['markRead', 'markUnread', 'star', 'unstar'].includes(action);
1355
+ // Resolve the destination before opening any folder, so a missing one fails without changes.
1356
+ let destination;
1357
+ if (action === 'archive')
1358
+ destination = this.requireRole('archive');
1359
+ else if (action === 'trash')
1360
+ destination = this.requireRole('trash');
1361
+ else if (action === 'untrash') {
1362
+ this.requireRole('trash');
1363
+ destination = this.resolved?.paths.inbox ?? 'INBOX';
1364
+ }
1365
+ else if (typeof action === 'object' && 'move' in action)
1366
+ destination = requestedMoveDestination;
1367
+ else if (!flagChange && action !== 'delete')
1368
+ throw new EmailError('invalid_request', `Unsupported IMAP modify action: ${String(action)}`);
1369
+ for (const [path, stored] of groups) {
1370
+ await this.withCurrentMailbox(path, async (client, uidValidity) => {
1371
+ const group = await this.currentLocations(client, stored, uidValidity);
1372
+ // Nothing is left to change for messages another mail app deleted.
1373
+ if (!group.length)
1374
+ return;
1228
1375
  const uids = group.map((location) => location.uid);
1229
1376
  if (action === 'markRead')
1230
1377
  await client.messageFlagsAdd(uids, ['\\Seen'], { uid: true });
@@ -1238,21 +1385,7 @@ export class ImapProvider {
1238
1385
  await client.messageDelete(uids, { uid: true });
1239
1386
  await Promise.all(group.map((location) => this.options.store.remove(location.id)));
1240
1387
  }
1241
- else {
1242
- let destination;
1243
- if (action === 'archive')
1244
- destination = this.requireRole('archive');
1245
- else if (action === 'trash')
1246
- destination = this.requireRole('trash');
1247
- else if (action === 'untrash') {
1248
- this.requireRole('trash');
1249
- destination = this.resolved?.paths.inbox ?? 'INBOX';
1250
- }
1251
- else if (typeof action === 'object' && 'move' in action) {
1252
- destination = requestedMoveDestination;
1253
- }
1254
- else
1255
- throw new EmailError('invalid_request', `Unsupported IMAP modify action: ${String(action)}`);
1388
+ else if (destination !== undefined) {
1256
1389
  if (destination === path)
1257
1390
  return;
1258
1391
  const moved = await client.messageMove(uids, destination, { uid: true });
@@ -1280,12 +1413,12 @@ export class ImapProvider {
1280
1413
  const location = await this.options.store.findById(messageId);
1281
1414
  if (!location)
1282
1415
  throw new EmailError('not_found', `No message with id "${messageId}"`);
1283
- return this.withMailbox(location.mailboxPath, async (client, uidValidity) => {
1284
- if (uidValidity !== location.uidValidity)
1285
- throw new EmailError('not_found', 'The message location is stale');
1286
- const fetched = await client.fetchOne(location.uid, { bodyStructure: true }, { uid: true });
1287
- if (!fetched)
1416
+ return this.withCurrentMailbox(location.mailboxPath, async (client, uidValidity) => {
1417
+ const current = await this.fetchCurrent(client, location, uidValidity, (uid) => client.fetchOne(uid, { bodyStructure: true }, { uid: true }));
1418
+ if (!current)
1288
1419
  throw new EmailError('not_found', `No message with id "${messageId}"`);
1420
+ const { fetched } = current;
1421
+ const { uid } = current.location;
1289
1422
  const canonicalAttachmentId = attachmentId.startsWith('part:') ? attachmentId : `part:${attachmentId}`;
1290
1423
  const mimePart = canonicalAttachmentId.slice('part:'.length);
1291
1424
  const meta = inspectStructure(fetched.bodyStructure).attachments.find((item) => item.id === canonicalAttachmentId);
@@ -1295,7 +1428,7 @@ export class ImapProvider {
1295
1428
  }
1296
1429
  if (!meta && attachmentId.startsWith('raw-')) {
1297
1430
  const index = Number(attachmentId.slice(4));
1298
- const raw = await client.fetchOne(location.uid, { source: true }, { uid: true });
1431
+ const raw = await client.fetchOne(uid, { source: true }, { uid: true });
1299
1432
  if (!raw || !raw.source)
1300
1433
  throw new EmailError('not_found', `No attachment with id "${attachmentId}"`);
1301
1434
  const parsed = await PostalMime.parse(raw.source, POSTAL_OPTIONS);
@@ -1322,7 +1455,7 @@ export class ImapProvider {
1322
1455
  }
1323
1456
  if (!meta)
1324
1457
  throw new EmailError('not_found', `No attachment with id "${attachmentId}"`);
1325
- const downloaded = await client.download(location.uid, mimePart, { uid: true });
1458
+ const downloaded = await client.download(uid, mimePart, { uid: true });
1326
1459
  const chunks = [];
1327
1460
  let sizeBytes = 0;
1328
1461
  for await (const chunk of downloaded.content) {
@@ -1 +1 @@
1
- {"version":3,"file":"imapProvider.js","sourceRoot":"","sources":["../src/imapProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imapProvider.js","sourceRoot":"","sources":["../src/imapProvider.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -34,8 +34,14 @@ export interface ImapStateStore {
34
34
  findByLocations?(mailboxPath: string, uidValidity: string, uids: number[]): Promise<ImapMessageLocation[]>;
35
35
  findByDraftId(draftId: string): Promise<ImapMessageLocation | undefined>;
36
36
  listByThreadId(threadId: string): Promise<ImapMessageLocation[]>;
37
+ /**
38
+ * Saves a location by its ID. When another ID already names the same
39
+ * mailbox path, UIDVALIDITY and UID, as a concurrent operation can store
40
+ * the same message first, the store keeps that one and leaves this
41
+ * location unsaved.
42
+ */
37
43
  save(location: ImapMessageLocation): Promise<void>;
38
- /** Saves several locations at once. */
44
+ /** Saves several locations at once, as save does. */
39
45
  saveMany?(locations: ImapMessageLocation[]): Promise<void>;
40
46
  remove(id: string): Promise<void>;
41
47
  invalidateMailbox(mailboxPath: string, uidValidity: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,UAAU,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;CAClH;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAC/D,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAChH,+FAA+F;IAC/F,eAAe,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC3G,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IACzE,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,uCAAuC;IACvC,QAAQ,CAAC,CAAC,SAAS,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,GAAG,SAAS,GAAG,KAAK,CAAC,CAAC;IACvD,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,gBAAgB,CAAC;IACnD,OAAO,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,UAAU,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;CAClH;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAC/D,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAChH,+FAA+F;IAC/F,eAAe,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC3G,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IACzE,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACjE;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,qDAAqD;IACrD,QAAQ,CAAC,CAAC,SAAS,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,GAAG,SAAS,GAAG,KAAK,CAAC,CAAC;IACvD,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,gBAAgB,CAAC;IACnD,OAAO,EAAE,MAAM,CAAC;CACjB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluxmail/provider-imap",
3
- "version": "0.23.0",
3
+ "version": "0.24.0",
4
4
  "description": "IMAP and SMTP adapter for the Fluxmail unified email API",
5
5
  "license": "Elastic-2.0",
6
6
  "repository": {
@@ -25,7 +25,7 @@
25
25
  "access": "public"
26
26
  },
27
27
  "dependencies": {
28
- "@fluxmail/core": "0.23.0",
28
+ "@fluxmail/core": "0.24.0",
29
29
  "iconv-lite": "^0.7.3",
30
30
  "imapflow": "^1.7.8",
31
31
  "libmime": "^5.4.1",