@nocobase/app-plugin-mail 1.0.0-beta.13 → 1.0.0-beta.15
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/CHANGELOG.md +59 -0
- package/README.md +8 -0
- package/dist/client/pages/mail-accounts-page.d.ts.map +1 -1
- package/dist/client/pages/mail-accounts-page.js +44 -53
- package/dist/client/pages/mail-accounts-page.js.map +1 -1
- package/dist/client/pages/mail-workspace-page.d.ts.map +1 -1
- package/dist/client/pages/mail-workspace-page.js +78 -65
- package/dist/client/pages/mail-workspace-page.js.map +1 -1
- package/dist/client/subscription.d.ts +1 -1
- package/dist/client/subscription.d.ts.map +1 -1
- package/dist/client/subscription.js +7 -6
- package/dist/client/subscription.js.map +1 -1
- package/dist/database/migrations/.manifest.json +4 -0
- package/dist/database/migrations/202610250001_mail_imap_message_locations.d.ts +4 -0
- package/dist/database/migrations/202610250001_mail_imap_message_locations.d.ts.map +1 -0
- package/dist/database/migrations/202610250001_mail_imap_message_locations.js +297 -0
- package/dist/database/migrations/202610250001_mail_imap_message_locations.js.map +1 -0
- package/dist/server/adapters/imap-smtp/adapter.d.ts +60 -3
- package/dist/server/adapters/imap-smtp/adapter.d.ts.map +1 -1
- package/dist/server/adapters/imap-smtp/adapter.js +774 -83
- package/dist/server/adapters/imap-smtp/adapter.js.map +1 -1
- package/dist/server/adapters/imap-smtp/constants.d.ts +6 -0
- package/dist/server/adapters/imap-smtp/constants.d.ts.map +1 -1
- package/dist/server/adapters/imap-smtp/constants.js +6 -0
- package/dist/server/adapters/imap-smtp/constants.js.map +1 -1
- package/dist/server/adapters/imap-smtp/content.d.ts +11 -0
- package/dist/server/adapters/imap-smtp/content.d.ts.map +1 -1
- package/dist/server/adapters/imap-smtp/content.js +82 -3
- package/dist/server/adapters/imap-smtp/content.js.map +1 -1
- package/dist/server/adapters/imap-smtp/definition.d.ts +7 -0
- package/dist/server/adapters/imap-smtp/definition.d.ts.map +1 -1
- package/dist/server/adapters/imap-smtp/definition.js +19 -11
- package/dist/server/adapters/imap-smtp/definition.js.map +1 -1
- package/dist/server/adapters/imap-smtp/locators.d.ts +7 -0
- package/dist/server/adapters/imap-smtp/locators.d.ts.map +1 -1
- package/dist/server/adapters/imap-smtp/locators.js +53 -3
- package/dist/server/adapters/imap-smtp/locators.js.map +1 -1
- package/dist/server/adapters/imap-smtp/types.d.ts +87 -0
- package/dist/server/adapters/imap-smtp/types.d.ts.map +1 -1
- package/dist/server/operations/message-mutations.d.ts.map +1 -1
- package/dist/server/operations/message-mutations.js +57 -5
- package/dist/server/operations/message-mutations.js.map +1 -1
- package/dist/server/operations/sync-mailbox.d.ts +1 -0
- package/dist/server/operations/sync-mailbox.d.ts.map +1 -1
- package/dist/server/operations/sync-mailbox.js +41 -14
- package/dist/server/operations/sync-mailbox.js.map +1 -1
- package/dist/server/providers/mail-builtins.d.ts.map +1 -1
- package/dist/server/providers/mail-builtins.js +6 -2
- package/dist/server/providers/mail-builtins.js.map +1 -1
- package/dist/server/providers/mail-core.js +2 -2
- package/dist/server/providers/mail-core.js.map +1 -1
- package/dist/server/realtime.d.ts +1 -1
- package/dist/server/realtime.d.ts.map +1 -1
- package/dist/server/realtime.js +6 -3
- package/dist/server/realtime.js.map +1 -1
- package/dist/server/services/sync.d.ts +1 -1
- package/dist/server/services/sync.d.ts.map +1 -1
- package/dist/server/services/sync.js +3 -0
- package/dist/server/services/sync.js.map +1 -1
- package/dist/server/store/attachments.d.ts.map +1 -1
- package/dist/server/store/attachments.js +3 -0
- package/dist/server/store/attachments.js.map +1 -1
- package/dist/server/store/message-writes.d.ts +24 -1
- package/dist/server/store/message-writes.d.ts.map +1 -1
- package/dist/server/store/message-writes.js +357 -1
- package/dist/server/store/message-writes.js.map +1 -1
- package/dist/server/store/messages.d.ts.map +1 -1
- package/dist/server/store/messages.js +11 -3
- package/dist/server/store/messages.js.map +1 -1
- package/dist/server/store/rows.d.ts +20 -0
- package/dist/server/store/rows.d.ts.map +1 -1
- package/dist/server/store/sync.d.ts +7 -1
- package/dist/server/store/sync.d.ts.map +1 -1
- package/dist/server/store/sync.js +333 -7
- package/dist/server/store/sync.js.map +1 -1
- package/package.json +16 -15
|
@@ -1,16 +1,43 @@
|
|
|
1
|
+
import { ImapFlow } from 'imapflow';
|
|
1
2
|
import type { MailAttachmentContent, MailProviderResult, MailSyncCursor } from '../../../shared/mail.js';
|
|
2
3
|
import type { MailProviderAdapter, MailProviderAccount, MailProviderContext, MailProviderFolderPage, MailProviderListChangesInput, MailProviderListFoldersInput, MailProviderListMessagesInput, MailProviderMessagePage, MailProviderSendInput, MailProviderSendResult, NormalizedMailMessage } from '../../contracts/provider.js';
|
|
3
|
-
import type { ImapSmtpCredential } from './types.js';
|
|
4
|
+
import type { ImapOperationSnapshot, ImapLocationPersistence, ImapSmtpCredential } from './types.js';
|
|
5
|
+
import type { MailSyncStepCommit } from '../../contracts/persistence.js';
|
|
6
|
+
import type { MailSyncRun } from '../../../shared/mail.js';
|
|
4
7
|
import type { ImapSmtpMailProviderConfig } from './config.js';
|
|
8
|
+
import { createImapClient, createSmtpTransport } from './connection.js';
|
|
5
9
|
export declare class ImapSmtpAdapter implements MailProviderAdapter {
|
|
10
|
+
private readonly context;
|
|
6
11
|
private readonly config;
|
|
12
|
+
private readonly account;
|
|
7
13
|
private readonly credential;
|
|
14
|
+
private readonly locations?;
|
|
15
|
+
private readonly protocol;
|
|
16
|
+
private readonly operation?;
|
|
8
17
|
readonly identity: MailProviderAccount['provider'];
|
|
9
18
|
readonly capabilities: MailProviderAdapter['capabilities'];
|
|
10
19
|
private readonly folderTypes;
|
|
11
20
|
private imapClient?;
|
|
12
21
|
private readonly smtpTransport;
|
|
13
|
-
|
|
22
|
+
private copies;
|
|
23
|
+
private changes;
|
|
24
|
+
private cleanup;
|
|
25
|
+
private verificationIncomplete;
|
|
26
|
+
private readonly verificationCopies;
|
|
27
|
+
private readonly syncRun?;
|
|
28
|
+
private rawBudget;
|
|
29
|
+
private readonly rawCache;
|
|
30
|
+
constructor(context: MailProviderContext, config: ImapSmtpMailProviderConfig, account: MailProviderAccount, credential: ImapSmtpCredential, locations?: ImapLocationPersistence | undefined, run?: MailSyncRun, protocol?: {
|
|
31
|
+
readonly imap: typeof createImapClient;
|
|
32
|
+
readonly smtp: typeof createSmtpTransport;
|
|
33
|
+
readonly expungeUid: typeof expungeUid;
|
|
34
|
+
}, operation?: ImapOperationSnapshot | undefined);
|
|
35
|
+
forSync(run: MailSyncRun): ImapSmtpAdapter;
|
|
36
|
+
forMessage(messageId: string, providerMessageId: string, operation: 'flags' | 'delete'): Promise<ImapSmtpAdapter>;
|
|
37
|
+
/** True when this instance records message copies in the account's location table. */
|
|
38
|
+
get persistsLocations(): boolean;
|
|
39
|
+
/** Commit a sync step together with the location evidence this instance gathered for it. */
|
|
40
|
+
commitSyncStep(input: MailSyncStepCommit): Promise<MailSyncRun>;
|
|
14
41
|
listFolders(input: MailProviderListFoldersInput): Promise<MailProviderResult<MailProviderFolderPage>>;
|
|
15
42
|
getCurrentSyncCursor(signal?: AbortSignal): Promise<MailProviderResult<MailSyncCursor>>;
|
|
16
43
|
listMessages(input: MailProviderListMessagesInput): Promise<MailProviderResult<MailProviderMessagePage>>;
|
|
@@ -21,13 +48,14 @@ export declare class ImapSmtpAdapter implements MailProviderAdapter {
|
|
|
21
48
|
readonly hasMore: boolean;
|
|
22
49
|
}>>;
|
|
23
50
|
getMessage(providerMessageId: string, signal?: AbortSignal): Promise<MailProviderResult<NormalizedMailMessage>>;
|
|
24
|
-
getAttachment(
|
|
51
|
+
getAttachment(providerMessageId: string, providerAttachmentId: string, signal?: AbortSignal): Promise<MailProviderResult<MailAttachmentContent>>;
|
|
25
52
|
sendMessage(input: MailProviderSendInput): Promise<MailProviderSendResult>;
|
|
26
53
|
setRead(providerMessageId: string, read: boolean, signal?: AbortSignal): Promise<MailProviderResult<void>>;
|
|
27
54
|
setStarred(providerMessageId: string, starred: boolean, signal?: AbortSignal): Promise<MailProviderResult<void>>;
|
|
28
55
|
deleteMessage(providerMessageId: string, permanently: boolean, signal?: AbortSignal): Promise<MailProviderResult<void>>;
|
|
29
56
|
close(): Promise<void>;
|
|
30
57
|
private updateFlags;
|
|
58
|
+
private closeImap;
|
|
31
59
|
private imap;
|
|
32
60
|
private listMailboxes;
|
|
33
61
|
private selectableMailboxes;
|
|
@@ -35,6 +63,35 @@ export declare class ImapSmtpAdapter implements MailProviderAdapter {
|
|
|
35
63
|
private selectedFolderState;
|
|
36
64
|
private normalizeFolder;
|
|
37
65
|
private fetchMessages;
|
|
66
|
+
private beginStep;
|
|
67
|
+
/**
|
|
68
|
+
* Choose each copy's identity: its persisted location first, then the
|
|
69
|
+
* server's native ID, then an RFC Message-ID proven by identical MIME bytes,
|
|
70
|
+
* and otherwise the copy's own location.
|
|
71
|
+
*/
|
|
72
|
+
private assignIdentities;
|
|
73
|
+
private nativeSource;
|
|
74
|
+
/** Compare a new copy with a verified copy already stored under this RFC Message-ID. */
|
|
75
|
+
private matchesStoredCopy;
|
|
76
|
+
private sameRawCopies;
|
|
77
|
+
/** Complete raw MIME of one copy within the per-message and per-step budgets. */
|
|
78
|
+
private rawCopy;
|
|
79
|
+
/**
|
|
80
|
+
* Select a stored copy and confirm it is still the same message. Returns
|
|
81
|
+
* undefined for a changed generation, a missing UID or another identity.
|
|
82
|
+
*/
|
|
83
|
+
private openCopy;
|
|
84
|
+
private copyChanged;
|
|
85
|
+
/** Change one flag on every verified copy, committing each confirmed copy on its own. */
|
|
86
|
+
private updateCopyFlags;
|
|
87
|
+
/**
|
|
88
|
+
* One complete pass over every selectable folder. It reconciles stored
|
|
89
|
+
* copies, and two matching passes in a row authorize orphan cleanup.
|
|
90
|
+
*/
|
|
91
|
+
private verifyFolders;
|
|
38
92
|
private normalizeMessage;
|
|
39
93
|
}
|
|
94
|
+
/** ImapFlow 2.2.10's command primitive keeps the verb explicitly scoped to a UID. */
|
|
95
|
+
declare function expungeUid(client: ImapFlow, uid: number): Promise<void>;
|
|
96
|
+
export {};
|
|
40
97
|
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../server/adapters/imap-smtp/adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../server/adapters/imap-smtp/adapter.ts"],"names":[],"mappings":"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"}
|