@nocobase/app-plugin-mail 1.0.0-beta.19 → 1.0.0-beta.21
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 +32 -0
- package/dist/client/components/mail-composer.d.ts.map +1 -1
- package/dist/client/components/mail-composer.js +9 -10
- package/dist/client/components/mail-composer.js.map +1 -1
- package/dist/client/components/mail-conversation-view.d.ts +1 -0
- package/dist/client/components/mail-conversation-view.d.ts.map +1 -1
- package/dist/client/components/mail-conversation-view.js +10 -3
- package/dist/client/components/mail-conversation-view.js.map +1 -1
- package/dist/client/components/ui/input.js +1 -1
- package/dist/client/components/ui/input.js.map +1 -1
- package/dist/client/hooks/use-mail-composer.d.ts +7 -0
- package/dist/client/hooks/use-mail-composer.d.ts.map +1 -1
- package/dist/client/hooks/use-mail-composer.js +99 -11
- package/dist/client/hooks/use-mail-composer.js.map +1 -1
- package/dist/client/lib/mail-composer-state.d.ts +2 -3
- package/dist/client/lib/mail-composer-state.d.ts.map +1 -1
- package/dist/client/lib/mail-composer-state.js +10 -6
- package/dist/client/lib/mail-composer-state.js.map +1 -1
- package/dist/client/locales/de-DE.d.ts.map +1 -1
- package/dist/client/locales/de-DE.js +5 -0
- package/dist/client/locales/de-DE.js.map +1 -1
- package/dist/client/locales/en-US.d.ts +5 -0
- package/dist/client/locales/en-US.d.ts.map +1 -1
- package/dist/client/locales/en-US.js +5 -0
- package/dist/client/locales/en-US.js.map +1 -1
- package/dist/client/locales/es-ES.d.ts.map +1 -1
- package/dist/client/locales/es-ES.js +5 -0
- package/dist/client/locales/es-ES.js.map +1 -1
- package/dist/client/locales/fr-FR.d.ts.map +1 -1
- package/dist/client/locales/fr-FR.js +5 -0
- package/dist/client/locales/fr-FR.js.map +1 -1
- package/dist/client/locales/id-ID.d.ts.map +1 -1
- package/dist/client/locales/id-ID.js +5 -0
- package/dist/client/locales/id-ID.js.map +1 -1
- package/dist/client/locales/ja-JP.d.ts.map +1 -1
- package/dist/client/locales/ja-JP.js +5 -0
- package/dist/client/locales/ja-JP.js.map +1 -1
- package/dist/client/locales/pt-BR.d.ts.map +1 -1
- package/dist/client/locales/pt-BR.js +5 -0
- package/dist/client/locales/pt-BR.js.map +1 -1
- package/dist/client/locales/vi-VN.d.ts.map +1 -1
- package/dist/client/locales/vi-VN.js +5 -0
- package/dist/client/locales/vi-VN.js.map +1 -1
- package/dist/client/locales/zh-CN.d.ts.map +1 -1
- package/dist/client/locales/zh-CN.js +5 -0
- package/dist/client/locales/zh-CN.js.map +1 -1
- package/dist/client/locales/zh-TW.d.ts.map +1 -1
- package/dist/client/locales/zh-TW.js +5 -0
- package/dist/client/locales/zh-TW.js.map +1 -1
- package/dist/client/mail-client.d.ts +3 -1
- package/dist/client/mail-client.d.ts.map +1 -1
- package/dist/client/mail-client.js +2 -2
- package/dist/client/mail-client.js.map +1 -1
- package/dist/client/pages/mail-workspace-page.d.ts.map +1 -1
- package/dist/client/pages/mail-workspace-page.js +53 -11
- package/dist/client/pages/mail-workspace-page.js.map +1 -1
- package/dist/server/adapters/imap-smtp/adapter.d.ts +13 -3
- package/dist/server/adapters/imap-smtp/adapter.d.ts.map +1 -1
- package/dist/server/adapters/imap-smtp/adapter.js +234 -2
- package/dist/server/adapters/imap-smtp/adapter.js.map +1 -1
- package/dist/server/adapters/imap-smtp/constants.js +1 -1
- package/dist/server/adapters/imap-smtp/constants.js.map +1 -1
- package/dist/server/adapters/imap-smtp/types.d.ts +21 -2
- package/dist/server/adapters/imap-smtp/types.d.ts.map +1 -1
- package/dist/server/locales/de-DE.d.ts.map +1 -1
- package/dist/server/locales/de-DE.js +7 -0
- package/dist/server/locales/de-DE.js.map +1 -1
- package/dist/server/locales/en-US.d.ts +7 -0
- package/dist/server/locales/en-US.d.ts.map +1 -1
- package/dist/server/locales/en-US.js +7 -0
- package/dist/server/locales/en-US.js.map +1 -1
- package/dist/server/locales/es-ES.d.ts.map +1 -1
- package/dist/server/locales/es-ES.js +7 -0
- package/dist/server/locales/es-ES.js.map +1 -1
- package/dist/server/locales/fr-FR.d.ts.map +1 -1
- package/dist/server/locales/fr-FR.js +7 -0
- package/dist/server/locales/fr-FR.js.map +1 -1
- package/dist/server/locales/id-ID.d.ts.map +1 -1
- package/dist/server/locales/id-ID.js +7 -0
- package/dist/server/locales/id-ID.js.map +1 -1
- package/dist/server/locales/ja-JP.d.ts.map +1 -1
- package/dist/server/locales/ja-JP.js +7 -0
- package/dist/server/locales/ja-JP.js.map +1 -1
- package/dist/server/locales/pt-BR.d.ts.map +1 -1
- package/dist/server/locales/pt-BR.js +7 -0
- package/dist/server/locales/pt-BR.js.map +1 -1
- package/dist/server/locales/vi-VN.d.ts.map +1 -1
- package/dist/server/locales/vi-VN.js +7 -0
- package/dist/server/locales/vi-VN.js.map +1 -1
- package/dist/server/locales/zh-CN.d.ts.map +1 -1
- package/dist/server/locales/zh-CN.js +7 -0
- package/dist/server/locales/zh-CN.js.map +1 -1
- package/dist/server/locales/zh-TW.d.ts.map +1 -1
- package/dist/server/locales/zh-TW.js +7 -0
- package/dist/server/locales/zh-TW.js.map +1 -1
- package/dist/server/operations/message-mutations.d.ts +2 -1
- package/dist/server/operations/message-mutations.d.ts.map +1 -1
- package/dist/server/operations/message-mutations.js +28 -0
- package/dist/server/operations/message-mutations.js.map +1 -1
- package/dist/server/operations/send-mail.d.ts +2 -0
- package/dist/server/operations/send-mail.d.ts.map +1 -1
- package/dist/server/operations/send-mail.js +27 -1
- package/dist/server/operations/send-mail.js.map +1 -1
- package/dist/server/routes/api.d.ts.map +1 -1
- package/dist/server/routes/api.js +23 -7
- package/dist/server/routes/api.js.map +1 -1
- package/dist/server/routes/schemas.d.ts +2 -0
- package/dist/server/routes/schemas.d.ts.map +1 -1
- package/dist/server/routes/schemas.js +23 -5
- package/dist/server/routes/schemas.js.map +1 -1
- package/dist/server/runtime.d.ts.map +1 -1
- package/dist/server/runtime.js +4 -1
- package/dist/server/runtime.js.map +1 -1
- package/dist/server/services/management.d.ts +1 -1
- package/dist/server/services/management.d.ts.map +1 -1
- package/dist/server/services/management.js.map +1 -1
- package/dist/server/services/submissions.d.ts.map +1 -1
- package/dist/server/services/submissions.js +29 -0
- package/dist/server/services/submissions.js.map +1 -1
- package/dist/server/store/message-writes.d.ts.map +1 -1
- package/dist/server/store/message-writes.js +26 -3
- 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 +32 -0
- package/dist/server/store/messages.js.map +1 -1
- package/dist/server/store/scheduled-drafts.d.ts.map +1 -1
- package/dist/server/store/scheduled-drafts.js +27 -2
- package/dist/server/store/scheduled-drafts.js.map +1 -1
- package/dist/server/store/sync.d.ts.map +1 -1
- package/dist/server/store/sync.js +319 -2
- package/dist/server/store/sync.js.map +1 -1
- package/dist/shared/addresses.d.ts +26 -0
- package/dist/shared/addresses.d.ts.map +1 -0
- package/dist/shared/addresses.js +137 -0
- package/dist/shared/addresses.js.map +1 -0
- package/dist/shared/mail.d.ts +2 -0
- package/dist/shared/mail.d.ts.map +1 -1
- package/dist/shared/mail.js.map +1 -1
- package/package.json +7 -7
- package/skills/nocobase-app-plugin-mail/references/http-api.md +10 -0
- package/skills/nocobase-app-plugin-mail/references/synchronization-and-diagnostics.md +6 -0
|
@@ -27,7 +27,9 @@ export interface ImapOperationSnapshot {
|
|
|
27
27
|
readonly messageId: string;
|
|
28
28
|
readonly providerMessageId: string;
|
|
29
29
|
readonly source: ImapIdSource;
|
|
30
|
-
readonly operation: 'flags' | 'delete';
|
|
30
|
+
readonly operation: 'flags' | 'delete' | 'move';
|
|
31
|
+
readonly sourceProviderFolderId?: string;
|
|
32
|
+
readonly destinationProviderFolderId?: string;
|
|
31
33
|
}
|
|
32
34
|
export interface ImapLocationTuple {
|
|
33
35
|
readonly folder: string;
|
|
@@ -42,6 +44,7 @@ export interface ImapStoredLocation extends ImapLocationTuple {
|
|
|
42
44
|
readonly source?: ImapIdSource;
|
|
43
45
|
readonly status: ImapLocationStatus;
|
|
44
46
|
readonly updatedAt: string;
|
|
47
|
+
readonly invalidationReason?: string;
|
|
45
48
|
}
|
|
46
49
|
/** One fetched copy, verified in this step, with the identity chosen for it. */
|
|
47
50
|
export interface ImapCopyEvidence extends ImapLocationTuple {
|
|
@@ -88,7 +91,10 @@ export interface ImapVerifyState {
|
|
|
88
91
|
export interface ImapLocationPersistence {
|
|
89
92
|
readonly accountId: string;
|
|
90
93
|
findAttachment(location: ImapStoredLocation, providerAttachmentId: string): Promise<import('../../../shared/mail.js').NormalizedMailAttachment | undefined>;
|
|
91
|
-
bindMessage(messageId: string, providerMessageId: string, operation: 'flags' | 'delete'
|
|
94
|
+
bindMessage(messageId: string, providerMessageId: string, operation: 'flags' | 'delete' | 'move', move?: {
|
|
95
|
+
readonly sourceProviderFolderId?: string;
|
|
96
|
+
readonly destinationProviderFolderId: string;
|
|
97
|
+
}): Promise<{
|
|
92
98
|
readonly persistence: ImapLocationPersistence;
|
|
93
99
|
readonly snapshot: ImapOperationSnapshot;
|
|
94
100
|
}>;
|
|
@@ -98,6 +104,13 @@ export interface ImapLocationPersistence {
|
|
|
98
104
|
listValidLocations(providerMessageId: string): Promise<readonly ImapStoredLocation[]>;
|
|
99
105
|
/** Valid and pending copies of the account, for verification. */
|
|
100
106
|
listKnownLocations(): Promise<readonly ImapStoredLocation[]>;
|
|
107
|
+
beginMove(): Promise<ImapMoveState>;
|
|
108
|
+
rememberMoveDestination(state: ImapMoveState, copy: ImapCopyEvidence): Promise<ImapMoveState>;
|
|
109
|
+
commitMoved(state: ImapMoveState, attachments: readonly import('../../../shared/mail.js').NormalizedMailAttachment[], flags: {
|
|
110
|
+
readonly read: boolean;
|
|
111
|
+
readonly starred: boolean;
|
|
112
|
+
}): Promise<string>;
|
|
113
|
+
releaseMove(state: ImapMoveState): Promise<void>;
|
|
101
114
|
commitFlags(location: ImapStoredLocation, flags: {
|
|
102
115
|
readonly read?: boolean;
|
|
103
116
|
readonly starred?: boolean;
|
|
@@ -105,4 +118,10 @@ export interface ImapLocationPersistence {
|
|
|
105
118
|
commitDeleted(location: ImapStoredLocation): Promise<void>;
|
|
106
119
|
commitSyncStep(input: import('../../contracts/persistence.js').MailSyncStepCommit, evidence: ImapSyncEvidence): Promise<import('../../../shared/mail.js').MailSyncRun>;
|
|
107
120
|
}
|
|
121
|
+
/** Durable protection for exactly one selected source and its confirmed destination. */
|
|
122
|
+
export interface ImapMoveState {
|
|
123
|
+
readonly token: string;
|
|
124
|
+
readonly source: ImapStoredLocation;
|
|
125
|
+
readonly destination?: ImapStoredLocation;
|
|
126
|
+
}
|
|
108
127
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../server/adapters/imap-smtp/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC7D,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,2FAA2F;AAC3F,MAAM,MAAM,YAAY,GACtB,UAAU,GAAG,YAAY,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAE3D,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../server/adapters/imap-smtp/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC7D,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,2FAA2F;AAC3F,MAAM,MAAM,YAAY,GACtB,UAAU,GAAG,YAAY,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAE3D,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAChD,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,MAAM,CAAC;CAC/C;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,0FAA0F;AAC1F,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,gFAAgF;AAChF,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAChD,iEAAiE;IACjE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,4FAA4F;AAC5F,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;CAC/D;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,cAAc,CACZ,QAAQ,EAAE,kBAAkB,EAC5B,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CACR,OAAO,yBAAyB,EAAE,wBAAwB,GAAG,SAAS,CACvE,CAAC;IACF,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EACzB,SAAS,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,EACtC,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;QACzC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC;KAC9C,GACA,OAAO,CAAC;QACT,QAAQ,CAAC,WAAW,EAAE,uBAAuB,CAAC;QAC9C,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;KAC1C,CAAC,CAAC;IACH,aAAa,CACX,MAAM,EAAE,SAAS,iBAAiB,EAAE,GACnC,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC;IAC1C,kBAAkB,CAChB,kBAAkB,EAAE,SAAS,MAAM,EAAE,GACpC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC;IAC1D,gFAAgF;IAChF,kBAAkB,CAChB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC;IAC1C,iEAAiE;IACjE,kBAAkB,IAAI,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC;IAC7D,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IACpC,uBAAuB,CACrB,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,WAAW,CACT,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,SAAS,OAAO,yBAAyB,EAAE,wBAAwB,EAAE,EAClF,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAC3D,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,WAAW,CACT,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAC7D,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,cAAc,CACZ,KAAK,EAAE,OAAO,gCAAgC,EAAE,kBAAkB,EAClE,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,OAAO,yBAAyB,EAAE,WAAW,CAAC,CAAC;CAC3D;AAED,wFAAwF;AACxF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAC3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"de-DE.d.ts","sourceRoot":"","sources":["../../../server/locales/de-DE.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,QAAA,MAAM,IAAI,EAAE,cAAc,CAAC,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"de-DE.d.ts","sourceRoot":"","sources":["../../../server/locales/de-DE.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,QAAA,MAAM,IAAI,EAAE,cAAc,CAAC,OAAO,IAAI,CAiCrC,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
const deDE = {
|
|
2
2
|
errors: {
|
|
3
|
+
imapMoveLocationChanged: 'Der ausgewählte Ordner oder die Kopie wurde geändert. Synchronisieren Sie das Postfach und öffnen Sie den Quellordner erneut.',
|
|
4
|
+
imapMoveNotWritable: 'Der ausgewählte Ordner erlaubt diesen Vorgang nicht. Prüfen Sie die Postfachberechtigungen.',
|
|
5
|
+
imapMoveSourceRequired: 'Öffnen Sie den Quellordner, bevor Sie diese Nachricht verschieben oder löschen.',
|
|
6
|
+
imapMoveUnsupported: 'Dieser Server kann Nachrichten nicht sicher verschieben. Verwenden Sie Ihren E-Mail-Client.',
|
|
7
|
+
imapTrashNotFound: 'Dieses Konto hat keinen Papierkorb. Verwenden Sie Ihren E-Mail-Client.',
|
|
8
|
+
imapMoveOutcomeUnknown: 'Der Verschiebevorgang ist unvollständig oder das Ergebnis ist unbekannt. Prüfen Sie das Postfach vor einem erneuten Versuch.',
|
|
9
|
+
invalidRecipient: 'Korrigieren Sie vor dem Senden die E-Mail-Adressen und Anzeigenamen der Empfänger.',
|
|
3
10
|
accessDenied: 'E-Mail-Zugriff ist erforderlich.',
|
|
4
11
|
idempotencyConflict: 'Der Idempotenzschlüssel ist bereits einer anderen Anfrage zugeordnet.',
|
|
5
12
|
invalidRequest: 'Die E-Mail-Anfrage ist ungültig.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"de-DE.js","sourceRoot":"","sources":["../../../server/locales/de-DE.ts"],"names":[],"mappings":"AAIA,MAAM,IAAI,GAAgC;IACxC,MAAM,EAAE;QACN,YAAY,EAAE,kCAAkC;QAChD,mBAAmB,EACjB,uEAAuE;QACzE,cAAc,EAAE,kCAAkC;QAClD,yBAAyB,EACvB,6PAA6P;QAC/P,aAAa,EAAE,uDAAuD;QACtE,mBAAmB,EACjB,kFAAkF;QACpF,mBAAmB,EACjB,mFAAmF;QACrF,uBAAuB,EACrB,mFAAmF;QACrF,eAAe,EAAE,sDAAsD;QACvE,eAAe,EAAE,wCAAwC;QACzD,0BAA0B,EAAE,+CAA+C;KAC5E;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"de-DE.js","sourceRoot":"","sources":["../../../server/locales/de-DE.ts"],"names":[],"mappings":"AAIA,MAAM,IAAI,GAAgC;IACxC,MAAM,EAAE;QACN,uBAAuB,EACrB,+HAA+H;QACjI,mBAAmB,EACjB,6FAA6F;QAC/F,sBAAsB,EACpB,iFAAiF;QACnF,mBAAmB,EACjB,6FAA6F;QAC/F,iBAAiB,EACf,wEAAwE;QAC1E,sBAAsB,EACpB,8HAA8H;QAChI,gBAAgB,EACd,oFAAoF;QACtF,YAAY,EAAE,kCAAkC;QAChD,mBAAmB,EACjB,uEAAuE;QACzE,cAAc,EAAE,kCAAkC;QAClD,yBAAyB,EACvB,6PAA6P;QAC/P,aAAa,EAAE,uDAAuD;QACtE,mBAAmB,EACjB,kFAAkF;QACpF,mBAAmB,EACjB,mFAAmF;QACrF,uBAAuB,EACrB,mFAAmF;QACrF,eAAe,EAAE,sDAAsD;QACvE,eAAe,EAAE,wCAAwC;QACzD,0BAA0B,EAAE,+CAA+C;KAC5E;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import type { LocaleResource } from '@nocobase/i18n';
|
|
2
2
|
declare const enUS: {
|
|
3
3
|
errors: {
|
|
4
|
+
imapMoveLocationChanged: string;
|
|
5
|
+
imapMoveNotWritable: string;
|
|
6
|
+
imapMoveSourceRequired: string;
|
|
7
|
+
imapMoveUnsupported: string;
|
|
8
|
+
imapTrashNotFound: string;
|
|
9
|
+
imapMoveOutcomeUnknown: string;
|
|
10
|
+
invalidRecipient: string;
|
|
4
11
|
accessDenied: string;
|
|
5
12
|
idempotencyConflict: string;
|
|
6
13
|
invalidRequest: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en-US.d.ts","sourceRoot":"","sources":["../../../server/locales/en-US.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,QAAA,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"en-US.d.ts","sourceRoot":"","sources":["../../../server/locales/en-US.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;CAkCT,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,IAAI,CAAC,CAAC;AAC7D,eAAe,IAAI,CAAC"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
const enUS = {
|
|
2
2
|
errors: {
|
|
3
|
+
imapMoveLocationChanged: 'The selected folder or copy changed. Synchronize and open the source folder again.',
|
|
4
|
+
imapMoveNotWritable: 'The selected folder does not allow this operation. Check its mailbox permissions.',
|
|
5
|
+
imapMoveSourceRequired: 'Open the source folder before moving or deleting this message.',
|
|
6
|
+
imapMoveUnsupported: 'This server cannot safely move messages. Use your mail client.',
|
|
7
|
+
imapTrashNotFound: 'This account has no Trash folder. Use your mail client.',
|
|
8
|
+
imapMoveOutcomeUnknown: 'The move is incomplete or its result is unknown. Verify the mailbox before retrying.',
|
|
9
|
+
invalidRecipient: 'Correct the recipient email addresses and display names before sending.',
|
|
3
10
|
accessDenied: 'Mail access is required.',
|
|
4
11
|
idempotencyConflict: 'The idempotency key is already associated with another request.',
|
|
5
12
|
invalidRequest: 'The mail request is invalid.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en-US.js","sourceRoot":"","sources":["../../../server/locales/en-US.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAG;IACX,MAAM,EAAE;QACN,YAAY,EAAE,0BAA0B;QACxC,mBAAmB,EACjB,iEAAiE;QACnE,cAAc,EAAE,8BAA8B;QAC9C,yBAAyB,EACvB,uLAAuL;QACzL,aAAa,EAAE,0CAA0C;QACzD,mBAAmB,EACjB,mEAAmE;QACrE,mBAAmB,EACjB,yDAAyD;QAC3D,uBAAuB,EACrB,8DAA8D;QAChE,eAAe,EAAE,8BAA8B;QAC/C,eAAe,EAAE,6BAA6B;QAC9C,0BAA0B,EAAE,uCAAuC;KACpE;CACF,CAAC;AAGF,eAAe,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"en-US.js","sourceRoot":"","sources":["../../../server/locales/en-US.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAG;IACX,MAAM,EAAE;QACN,uBAAuB,EACrB,oFAAoF;QACtF,mBAAmB,EACjB,mFAAmF;QACrF,sBAAsB,EACpB,gEAAgE;QAClE,mBAAmB,EACjB,gEAAgE;QAClE,iBAAiB,EACf,yDAAyD;QAC3D,sBAAsB,EACpB,sFAAsF;QAExF,gBAAgB,EACd,yEAAyE;QAC3E,YAAY,EAAE,0BAA0B;QACxC,mBAAmB,EACjB,iEAAiE;QACnE,cAAc,EAAE,8BAA8B;QAC9C,yBAAyB,EACvB,uLAAuL;QACzL,aAAa,EAAE,0CAA0C;QACzD,mBAAmB,EACjB,mEAAmE;QACrE,mBAAmB,EACjB,yDAAyD;QAC3D,uBAAuB,EACrB,8DAA8D;QAChE,eAAe,EAAE,8BAA8B;QAC/C,eAAe,EAAE,6BAA6B;QAC9C,0BAA0B,EAAE,uCAAuC;KACpE;CACF,CAAC;AAGF,eAAe,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es-ES.d.ts","sourceRoot":"","sources":["../../../server/locales/es-ES.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,QAAA,MAAM,IAAI,EAAE,cAAc,CAAC,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"es-ES.d.ts","sourceRoot":"","sources":["../../../server/locales/es-ES.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,QAAA,MAAM,IAAI,EAAE,cAAc,CAAC,OAAO,IAAI,CAiCrC,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
const esES = {
|
|
2
2
|
errors: {
|
|
3
|
+
imapMoveLocationChanged: 'La carpeta o copia seleccionada ha cambiado. Sincronice el buzón y vuelva a abrir la carpeta de origen.',
|
|
4
|
+
imapMoveNotWritable: 'La carpeta seleccionada no permite esta operación. Revise los permisos del buzón.',
|
|
5
|
+
imapMoveSourceRequired: 'Abra la carpeta de origen antes de mover o eliminar este mensaje.',
|
|
6
|
+
imapMoveUnsupported: 'Este servidor no puede mover mensajes de forma segura. Use su cliente de correo.',
|
|
7
|
+
imapTrashNotFound: 'Esta cuenta no tiene papelera. Use su cliente de correo.',
|
|
8
|
+
imapMoveOutcomeUnknown: 'El movimiento está incompleto o su resultado es desconocido. Compruebe el buzón antes de volver a intentarlo.',
|
|
9
|
+
invalidRecipient: 'Corrija las direcciones de correo electrónico y los nombres para mostrar de los destinatarios antes de enviar.',
|
|
3
10
|
accessDenied: 'Se requiere acceso al correo.',
|
|
4
11
|
idempotencyConflict: 'La clave de idempotencia ya está asociada con otra solicitud.',
|
|
5
12
|
invalidRequest: 'La solicitud de correo no es válida.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es-ES.js","sourceRoot":"","sources":["../../../server/locales/es-ES.ts"],"names":[],"mappings":"AAIA,MAAM,IAAI,GAAgC;IACxC,MAAM,EAAE;QACN,YAAY,EAAE,+BAA+B;QAC7C,mBAAmB,EACjB,+DAA+D;QACjE,cAAc,EAAE,wCAAwC;QACxD,yBAAyB,EACvB,qOAAqO;QACvO,aAAa,EAAE,8CAA8C;QAC7D,mBAAmB,EACjB,8FAA8F;QAChG,mBAAmB,EACjB,gFAAgF;QAClF,uBAAuB,EACrB,uEAAuE;QACzE,eAAe,EAAE,0DAA0D;QAC3E,eAAe,EAAE,sCAAsC;QACvD,0BAA0B,EAAE,+CAA+C;KAC5E;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"es-ES.js","sourceRoot":"","sources":["../../../server/locales/es-ES.ts"],"names":[],"mappings":"AAIA,MAAM,IAAI,GAAgC;IACxC,MAAM,EAAE;QACN,uBAAuB,EACrB,yGAAyG;QAC3G,mBAAmB,EACjB,mFAAmF;QACrF,sBAAsB,EACpB,mEAAmE;QACrE,mBAAmB,EACjB,kFAAkF;QACpF,iBAAiB,EACf,0DAA0D;QAC5D,sBAAsB,EACpB,+GAA+G;QACjH,gBAAgB,EACd,gHAAgH;QAClH,YAAY,EAAE,+BAA+B;QAC7C,mBAAmB,EACjB,+DAA+D;QACjE,cAAc,EAAE,wCAAwC;QACxD,yBAAyB,EACvB,qOAAqO;QACvO,aAAa,EAAE,8CAA8C;QAC7D,mBAAmB,EACjB,8FAA8F;QAChG,mBAAmB,EACjB,gFAAgF;QAClF,uBAAuB,EACrB,uEAAuE;QACzE,eAAe,EAAE,0DAA0D;QAC3E,eAAe,EAAE,sCAAsC;QACvD,0BAA0B,EAAE,+CAA+C;KAC5E;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fr-FR.d.ts","sourceRoot":"","sources":["../../../server/locales/fr-FR.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,QAAA,MAAM,IAAI,EAAE,cAAc,CAAC,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"fr-FR.d.ts","sourceRoot":"","sources":["../../../server/locales/fr-FR.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,QAAA,MAAM,IAAI,EAAE,cAAc,CAAC,OAAO,IAAI,CAkCrC,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
const frFR = {
|
|
2
2
|
errors: {
|
|
3
|
+
imapMoveLocationChanged: 'Le dossier ou la copie sélectionné a changé. Synchronisez la boîte aux lettres et rouvrez le dossier source.',
|
|
4
|
+
imapMoveNotWritable: 'Le dossier sélectionné ne permet pas cette opération. Vérifiez les autorisations de la boîte aux lettres.',
|
|
5
|
+
imapMoveSourceRequired: 'Ouvrez le dossier source avant de déplacer ou de supprimer ce message.',
|
|
6
|
+
imapMoveUnsupported: 'Ce serveur ne peut pas déplacer les messages en toute sécurité. Utilisez votre client de messagerie.',
|
|
7
|
+
imapTrashNotFound: 'Ce compte ne possède pas de corbeille. Utilisez votre client de messagerie.',
|
|
8
|
+
imapMoveOutcomeUnknown: 'Le déplacement est incomplet ou son résultat est inconnu. Vérifiez la boîte aux lettres avant de réessayer.',
|
|
9
|
+
invalidRecipient: 'Corrigez les adresses e-mail et les noms affichés des destinataires avant l’envoi.',
|
|
3
10
|
accessDenied: "L'accès à la messagerie est requis.",
|
|
4
11
|
idempotencyConflict: "La clé d'idempotence est déjà associée à une autre requête.",
|
|
5
12
|
invalidRequest: "La demande de courrier n'est pas valide.",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fr-FR.js","sourceRoot":"","sources":["../../../server/locales/fr-FR.ts"],"names":[],"mappings":"AAIA,MAAM,IAAI,GAAgC;IACxC,MAAM,EAAE;QACN,YAAY,EAAE,qCAAqC;QACnD,mBAAmB,EACjB,6DAA6D;QAC/D,cAAc,EAAE,4CAA4C;QAC5D,yBAAyB,EACvB,wPAAwP;QAC1P,aAAa,EAAE,oDAAoD;QACnE,mBAAmB,EACjB,wEAAwE;QAC1E,mBAAmB,EACjB,yEAAyE;QAC3E,uBAAuB,EACrB,6EAA6E;QAC/E,eAAe,EAAE,qDAAqD;QACtE,eAAe,EAAE,6CAA6C;QAC9D,0BAA0B,EACxB,iDAAiD;KACpD;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"fr-FR.js","sourceRoot":"","sources":["../../../server/locales/fr-FR.ts"],"names":[],"mappings":"AAIA,MAAM,IAAI,GAAgC;IACxC,MAAM,EAAE;QACN,uBAAuB,EACrB,8GAA8G;QAChH,mBAAmB,EACjB,2GAA2G;QAC7G,sBAAsB,EACpB,wEAAwE;QAC1E,mBAAmB,EACjB,sGAAsG;QACxG,iBAAiB,EACf,6EAA6E;QAC/E,sBAAsB,EACpB,6GAA6G;QAC/G,gBAAgB,EACd,oFAAoF;QACtF,YAAY,EAAE,qCAAqC;QACnD,mBAAmB,EACjB,6DAA6D;QAC/D,cAAc,EAAE,4CAA4C;QAC5D,yBAAyB,EACvB,wPAAwP;QAC1P,aAAa,EAAE,oDAAoD;QACnE,mBAAmB,EACjB,wEAAwE;QAC1E,mBAAmB,EACjB,yEAAyE;QAC3E,uBAAuB,EACrB,6EAA6E;QAC/E,eAAe,EAAE,qDAAqD;QACtE,eAAe,EAAE,6CAA6C;QAC9D,0BAA0B,EACxB,iDAAiD;KACpD;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id-ID.d.ts","sourceRoot":"","sources":["../../../server/locales/id-ID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,QAAA,MAAM,IAAI,EAAE,cAAc,CAAC,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"id-ID.d.ts","sourceRoot":"","sources":["../../../server/locales/id-ID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,QAAA,MAAM,IAAI,EAAE,cAAc,CAAC,OAAO,IAAI,CAiCrC,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
const idID = {
|
|
2
2
|
errors: {
|
|
3
|
+
imapMoveLocationChanged: 'Folder atau salinan yang dipilih telah berubah. Sinkronkan kotak surat dan buka kembali folder sumber.',
|
|
4
|
+
imapMoveNotWritable: 'Folder yang dipilih tidak mengizinkan operasi ini. Periksa izin kotak surat.',
|
|
5
|
+
imapMoveSourceRequired: 'Buka folder sumber sebelum memindahkan atau menghapus pesan ini.',
|
|
6
|
+
imapMoveUnsupported: 'Server ini tidak dapat memindahkan pesan dengan aman. Gunakan aplikasi email Anda.',
|
|
7
|
+
imapTrashNotFound: 'Akun ini tidak memiliki folder Sampah. Gunakan aplikasi email Anda.',
|
|
8
|
+
imapMoveOutcomeUnknown: 'Pemindahan belum selesai atau hasilnya tidak diketahui. Periksa kotak surat sebelum mencoba lagi.',
|
|
9
|
+
invalidRecipient: 'Perbaiki alamat email dan nama tampilan penerima sebelum mengirim.',
|
|
3
10
|
accessDenied: 'Akses email diperlukan.',
|
|
4
11
|
idempotencyConflict: 'Kunci idempotensi telah dikaitkan dengan permintaan lain.',
|
|
5
12
|
invalidRequest: 'Permintaan surat tidak valid.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id-ID.js","sourceRoot":"","sources":["../../../server/locales/id-ID.ts"],"names":[],"mappings":"AAIA,MAAM,IAAI,GAAgC;IACxC,MAAM,EAAE;QACN,YAAY,EAAE,yBAAyB;QACvC,mBAAmB,EACjB,2DAA2D;QAC7D,cAAc,EAAE,+BAA+B;QAC/C,yBAAyB,EACvB,2MAA2M;QAC7M,aAAa,EAAE,4CAA4C;QAC3D,mBAAmB,EACjB,oEAAoE;QACtE,mBAAmB,EACjB,uDAAuD;QACzD,uBAAuB,EACrB,mEAAmE;QACrE,eAAe,EAAE,qDAAqD;QACtE,eAAe,EAAE,8BAA8B;QAC/C,0BAA0B,EAAE,oCAAoC;KACjE;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"id-ID.js","sourceRoot":"","sources":["../../../server/locales/id-ID.ts"],"names":[],"mappings":"AAIA,MAAM,IAAI,GAAgC;IACxC,MAAM,EAAE;QACN,uBAAuB,EACrB,wGAAwG;QAC1G,mBAAmB,EACjB,8EAA8E;QAChF,sBAAsB,EACpB,kEAAkE;QACpE,mBAAmB,EACjB,oFAAoF;QACtF,iBAAiB,EACf,qEAAqE;QACvE,sBAAsB,EACpB,mGAAmG;QACrG,gBAAgB,EACd,oEAAoE;QACtE,YAAY,EAAE,yBAAyB;QACvC,mBAAmB,EACjB,2DAA2D;QAC7D,cAAc,EAAE,+BAA+B;QAC/C,yBAAyB,EACvB,2MAA2M;QAC7M,aAAa,EAAE,4CAA4C;QAC3D,mBAAmB,EACjB,oEAAoE;QACtE,mBAAmB,EACjB,uDAAuD;QACzD,uBAAuB,EACrB,mEAAmE;QACrE,eAAe,EAAE,qDAAqD;QACtE,eAAe,EAAE,8BAA8B;QAC/C,0BAA0B,EAAE,oCAAoC;KACjE;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ja-JP.d.ts","sourceRoot":"","sources":["../../../server/locales/ja-JP.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,QAAA,MAAM,IAAI,EAAE,cAAc,CAAC,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"ja-JP.d.ts","sourceRoot":"","sources":["../../../server/locales/ja-JP.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,QAAA,MAAM,IAAI,EAAE,cAAc,CAAC,OAAO,IAAI,CAiCrC,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
const jaJP = {
|
|
2
2
|
errors: {
|
|
3
|
+
imapMoveLocationChanged: '選択したフォルダーまたはコピーが変更されました。メールボックスを同期し、移動元のフォルダーを開き直してください。',
|
|
4
|
+
imapMoveNotWritable: '選択したフォルダーではこの操作が許可されていません。メールボックスの権限を確認してください。',
|
|
5
|
+
imapMoveSourceRequired: 'このメッセージを移動または削除する前に、移動元のフォルダーを開いてください。',
|
|
6
|
+
imapMoveUnsupported: 'このサーバーではメッセージを安全に移動できません。メールクライアントで操作してください。',
|
|
7
|
+
imapTrashNotFound: 'このアカウントにはゴミ箱フォルダーがありません。メールクライアントで操作してください。',
|
|
8
|
+
imapMoveOutcomeUnknown: '移動が未完了か、結果が不明です。再試行する前にメールボックスを確認してください。',
|
|
9
|
+
invalidRecipient: '送信する前に、宛先のメールアドレスと表示名を修正してください。',
|
|
3
10
|
accessDenied: 'メールアクセスが必要です。',
|
|
4
11
|
idempotencyConflict: '冪等キーはすでに別のリクエストに関連付けられています。',
|
|
5
12
|
invalidRequest: 'メールリクエストが無効です。',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ja-JP.js","sourceRoot":"","sources":["../../../server/locales/ja-JP.ts"],"names":[],"mappings":"AAIA,MAAM,IAAI,GAAgC;IACxC,MAAM,EAAE;QACN,YAAY,EAAE,eAAe;QAC7B,mBAAmB,EACjB,6BAA6B;QAC/B,cAAc,EAAE,gBAAgB;QAChC,yBAAyB,EACvB,wHAAwH;QAC1H,aAAa,EAAE,sBAAsB;QACrC,mBAAmB,EACjB,oCAAoC;QACtC,mBAAmB,EACjB,mCAAmC;QACrC,uBAAuB,EACrB,kCAAkC;QACpC,eAAe,EAAE,qBAAqB;QACtC,eAAe,EAAE,sBAAsB;QACvC,0BAA0B,EAAE,eAAe;KAC5C;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"ja-JP.js","sourceRoot":"","sources":["../../../server/locales/ja-JP.ts"],"names":[],"mappings":"AAIA,MAAM,IAAI,GAAgC;IACxC,MAAM,EAAE;QACN,uBAAuB,EACrB,0DAA0D;QAC5D,mBAAmB,EACjB,gDAAgD;QAClD,sBAAsB,EACpB,wCAAwC;QAC1C,mBAAmB,EACjB,8CAA8C;QAChD,iBAAiB,EACf,6CAA6C;QAC/C,sBAAsB,EACpB,0CAA0C;QAC5C,gBAAgB,EACd,iCAAiC;QACnC,YAAY,EAAE,eAAe;QAC7B,mBAAmB,EACjB,6BAA6B;QAC/B,cAAc,EAAE,gBAAgB;QAChC,yBAAyB,EACvB,wHAAwH;QAC1H,aAAa,EAAE,sBAAsB;QACrC,mBAAmB,EACjB,oCAAoC;QACtC,mBAAmB,EACjB,mCAAmC;QACrC,uBAAuB,EACrB,kCAAkC;QACpC,eAAe,EAAE,qBAAqB;QACtC,eAAe,EAAE,sBAAsB;QACvC,0BAA0B,EAAE,eAAe;KAC5C;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pt-BR.d.ts","sourceRoot":"","sources":["../../../server/locales/pt-BR.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,QAAA,MAAM,IAAI,EAAE,cAAc,CAAC,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"pt-BR.d.ts","sourceRoot":"","sources":["../../../server/locales/pt-BR.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,QAAA,MAAM,IAAI,EAAE,cAAc,CAAC,OAAO,IAAI,CAmCrC,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
const ptBR = {
|
|
2
2
|
errors: {
|
|
3
|
+
imapMoveLocationChanged: 'A pasta ou cópia selecionada mudou. Sincronize a caixa de correio e abra novamente a pasta de origem.',
|
|
4
|
+
imapMoveNotWritable: 'A pasta selecionada não permite esta operação. Verifique as permissões da caixa de correio.',
|
|
5
|
+
imapMoveSourceRequired: 'Abra a pasta de origem antes de mover ou excluir esta mensagem.',
|
|
6
|
+
imapMoveUnsupported: 'Este servidor não pode mover mensagens com segurança. Use seu cliente de e-mail.',
|
|
7
|
+
imapTrashNotFound: 'Esta conta não tem uma pasta Lixeira. Use seu cliente de e-mail.',
|
|
8
|
+
imapMoveOutcomeUnknown: 'A movimentação está incompleta ou o resultado é desconhecido. Verifique a caixa de correio antes de tentar novamente.',
|
|
9
|
+
invalidRecipient: 'Corrija os endereços de e-mail e os nomes de exibição dos destinatários antes de enviar.',
|
|
3
10
|
accessDenied: 'O acesso ao correio é necessário.',
|
|
4
11
|
idempotencyConflict: 'A chave de idempotência já está associada a outra solicitação.',
|
|
5
12
|
invalidRequest: 'A solicitação de email é inválida.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pt-BR.js","sourceRoot":"","sources":["../../../server/locales/pt-BR.ts"],"names":[],"mappings":"AAIA,MAAM,IAAI,GAAgC;IACxC,MAAM,EAAE;QACN,YAAY,EAAE,mCAAmC;QACjD,mBAAmB,EACjB,gEAAgE;QAClE,cAAc,EAAE,oCAAoC;QACpD,yBAAyB,EACvB,yMAAyM;QAC3M,aAAa,EAAE,kDAAkD;QACjE,mBAAmB,EACjB,sFAAsF;QACxF,mBAAmB,EACjB,6EAA6E;QAC/E,uBAAuB,EACrB,qEAAqE;QACvE,eAAe,EACb,4DAA4D;QAC9D,eAAe,EAAE,2CAA2C;QAC5D,0BAA0B,EACxB,kDAAkD;KACrD;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"pt-BR.js","sourceRoot":"","sources":["../../../server/locales/pt-BR.ts"],"names":[],"mappings":"AAIA,MAAM,IAAI,GAAgC;IACxC,MAAM,EAAE;QACN,uBAAuB,EACrB,uGAAuG;QACzG,mBAAmB,EACjB,6FAA6F;QAC/F,sBAAsB,EACpB,iEAAiE;QACnE,mBAAmB,EACjB,kFAAkF;QACpF,iBAAiB,EACf,kEAAkE;QACpE,sBAAsB,EACpB,uHAAuH;QACzH,gBAAgB,EACd,0FAA0F;QAC5F,YAAY,EAAE,mCAAmC;QACjD,mBAAmB,EACjB,gEAAgE;QAClE,cAAc,EAAE,oCAAoC;QACpD,yBAAyB,EACvB,yMAAyM;QAC3M,aAAa,EAAE,kDAAkD;QACjE,mBAAmB,EACjB,sFAAsF;QACxF,mBAAmB,EACjB,6EAA6E;QAC/E,uBAAuB,EACrB,qEAAqE;QACvE,eAAe,EACb,4DAA4D;QAC9D,eAAe,EAAE,2CAA2C;QAC5D,0BAA0B,EACxB,kDAAkD;KACrD;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vi-VN.d.ts","sourceRoot":"","sources":["../../../server/locales/vi-VN.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,QAAA,MAAM,IAAI,EAAE,cAAc,CAAC,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"vi-VN.d.ts","sourceRoot":"","sources":["../../../server/locales/vi-VN.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,QAAA,MAAM,IAAI,EAAE,cAAc,CAAC,OAAO,IAAI,CAgCrC,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
const viVN = {
|
|
2
2
|
errors: {
|
|
3
|
+
imapMoveLocationChanged: 'Thư mục hoặc bản sao đã chọn đã thay đổi. Đồng bộ hộp thư và mở lại thư mục nguồn.',
|
|
4
|
+
imapMoveNotWritable: 'Thư mục đã chọn không cho phép thao tác này. Kiểm tra quyền của hộp thư.',
|
|
5
|
+
imapMoveSourceRequired: 'Mở thư mục nguồn trước khi di chuyển hoặc xóa thư này.',
|
|
6
|
+
imapMoveUnsupported: 'Máy chủ này không thể di chuyển thư an toàn. Hãy dùng ứng dụng email của bạn.',
|
|
7
|
+
imapTrashNotFound: 'Tài khoản này không có thư mục Thùng rác. Hãy dùng ứng dụng email của bạn.',
|
|
8
|
+
imapMoveOutcomeUnknown: 'Thao tác di chuyển chưa hoàn tất hoặc chưa rõ kết quả. Kiểm tra hộp thư trước khi thử lại.',
|
|
9
|
+
invalidRecipient: 'Sửa địa chỉ email và tên hiển thị của người nhận trước khi gửi.',
|
|
3
10
|
accessDenied: 'Cần có quyền truy cập thư.',
|
|
4
11
|
idempotencyConflict: 'Khóa bình thường đã được liên kết với một yêu cầu khác.',
|
|
5
12
|
invalidRequest: 'Yêu cầu thư không hợp lệ.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vi-VN.js","sourceRoot":"","sources":["../../../server/locales/vi-VN.ts"],"names":[],"mappings":"AAIA,MAAM,IAAI,GAAgC;IACxC,MAAM,EAAE;QACN,YAAY,EAAE,4BAA4B;QAC1C,mBAAmB,EACjB,yDAAyD;QAC3D,cAAc,EAAE,2BAA2B;QAC3C,yBAAyB,EACvB,oMAAoM;QACtM,aAAa,EAAE,mCAAmC;QAClD,mBAAmB,EACjB,gEAAgE;QAClE,mBAAmB,EAAE,kDAAkD;QACvE,uBAAuB,EACrB,mEAAmE;QACrE,eAAe,EAAE,2CAA2C;QAC5D,eAAe,EAAE,qBAAqB;QACtC,0BAA0B,EAAE,sCAAsC;KACnE;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"vi-VN.js","sourceRoot":"","sources":["../../../server/locales/vi-VN.ts"],"names":[],"mappings":"AAIA,MAAM,IAAI,GAAgC;IACxC,MAAM,EAAE;QACN,uBAAuB,EACrB,oFAAoF;QACtF,mBAAmB,EACjB,0EAA0E;QAC5E,sBAAsB,EACpB,wDAAwD;QAC1D,mBAAmB,EACjB,+EAA+E;QACjF,iBAAiB,EACf,4EAA4E;QAC9E,sBAAsB,EACpB,4FAA4F;QAC9F,gBAAgB,EACd,iEAAiE;QACnE,YAAY,EAAE,4BAA4B;QAC1C,mBAAmB,EACjB,yDAAyD;QAC3D,cAAc,EAAE,2BAA2B;QAC3C,yBAAyB,EACvB,oMAAoM;QACtM,aAAa,EAAE,mCAAmC;QAClD,mBAAmB,EACjB,gEAAgE;QAClE,mBAAmB,EAAE,kDAAkD;QACvE,uBAAuB,EACrB,mEAAmE;QACrE,eAAe,EAAE,2CAA2C;QAC5D,eAAe,EAAE,qBAAqB;QACtC,0BAA0B,EAAE,sCAAsC;KACnE;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh-CN.d.ts","sourceRoot":"","sources":["../../../server/locales/zh-CN.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,QAAA,MAAM,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"zh-CN.d.ts","sourceRoot":"","sources":["../../../server/locales/zh-CN.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,QAAA,MAAM,IAAI,EAAE,kBAyBX,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
const zhCN = {
|
|
2
2
|
errors: {
|
|
3
|
+
imapMoveLocationChanged: '所选文件夹或副本已变化,请同步邮箱后重新打开来源文件夹。',
|
|
4
|
+
imapMoveNotWritable: '所选文件夹不允许此操作,请检查邮箱权限。',
|
|
5
|
+
imapMoveSourceRequired: '请打开来源文件夹后再移动或删除这封邮件。',
|
|
6
|
+
imapMoveUnsupported: '此邮箱不支持安全移动,请到邮箱客户端中操作。',
|
|
7
|
+
imapTrashNotFound: '此邮箱没有垃圾箱文件夹,请到邮箱客户端中操作。',
|
|
8
|
+
imapMoveOutcomeUnknown: '移动未完成或结果未知,请先核对远端邮箱,勿盲目重试。',
|
|
9
|
+
invalidRecipient: '请修正收件人邮箱地址和显示名后再发送。',
|
|
3
10
|
accessDenied: '需要邮件访问权限。',
|
|
4
11
|
idempotencyConflict: '该幂等键已关联到另一个请求。',
|
|
5
12
|
invalidRequest: '邮件请求无效。',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh-CN.js","sourceRoot":"","sources":["../../../server/locales/zh-CN.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAuB;IAC/B,MAAM,EAAE;QACN,YAAY,EAAE,WAAW;QACzB,mBAAmB,EAAE,gBAAgB;QACrC,cAAc,EAAE,SAAS;QACzB,yBAAyB,EACvB,8DAA8D;QAChE,aAAa,EAAE,WAAW;QAC1B,mBAAmB,EAAE,mBAAmB;QACxC,mBAAmB,EAAE,iBAAiB;QACtC,uBAAuB,EAAE,qBAAqB;QAC9C,eAAe,EAAE,YAAY;QAC7B,eAAe,EAAE,QAAQ;QACzB,0BAA0B,EAAE,aAAa;KAC1C;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"zh-CN.js","sourceRoot":"","sources":["../../../server/locales/zh-CN.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAuB;IAC/B,MAAM,EAAE;QACN,uBAAuB,EACrB,8BAA8B;QAChC,mBAAmB,EAAE,sBAAsB;QAC3C,sBAAsB,EAAE,sBAAsB;QAC9C,mBAAmB,EAAE,wBAAwB;QAC7C,iBAAiB,EAAE,yBAAyB;QAC5C,sBAAsB,EACpB,4BAA4B;QAE9B,gBAAgB,EAAE,qBAAqB;QACvC,YAAY,EAAE,WAAW;QACzB,mBAAmB,EAAE,gBAAgB;QACrC,cAAc,EAAE,SAAS;QACzB,yBAAyB,EACvB,8DAA8D;QAChE,aAAa,EAAE,WAAW;QAC1B,mBAAmB,EAAE,mBAAmB;QACxC,mBAAmB,EAAE,iBAAiB;QACtC,uBAAuB,EAAE,qBAAqB;QAC9C,eAAe,EAAE,YAAY;QAC7B,eAAe,EAAE,QAAQ;QACzB,0BAA0B,EAAE,aAAa;KAC1C;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh-TW.d.ts","sourceRoot":"","sources":["../../../server/locales/zh-TW.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,QAAA,MAAM,IAAI,EAAE,cAAc,CAAC,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"zh-TW.d.ts","sourceRoot":"","sources":["../../../server/locales/zh-TW.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,QAAA,MAAM,IAAI,EAAE,cAAc,CAAC,OAAO,IAAI,CAwBrC,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
const zhTW = {
|
|
2
2
|
errors: {
|
|
3
|
+
imapMoveLocationChanged: '所選資料夾或副本已變更,請同步信箱後重新開啟來源資料夾。',
|
|
4
|
+
imapMoveNotWritable: '所選資料夾不允許此操作,請檢查信箱權限。',
|
|
5
|
+
imapMoveSourceRequired: '請開啟來源資料夾後再移動或刪除這封郵件。',
|
|
6
|
+
imapMoveUnsupported: '此信箱不支援安全移動,請到郵件用戶端中操作。',
|
|
7
|
+
imapTrashNotFound: '此信箱沒有垃圾桶資料夾,請到郵件用戶端中操作。',
|
|
8
|
+
imapMoveOutcomeUnknown: '移動尚未完成或結果未知,請先核對遠端信箱,勿盲目重試。',
|
|
9
|
+
invalidRecipient: '請修正收件人電子郵件地址和顯示名稱後再傳送。',
|
|
3
10
|
accessDenied: '需要郵件存取許可權。',
|
|
4
11
|
idempotencyConflict: '冪等金鑰已與另一個請求關聯。',
|
|
5
12
|
invalidRequest: '郵件請求無效。',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh-TW.js","sourceRoot":"","sources":["../../../server/locales/zh-TW.ts"],"names":[],"mappings":"AAIA,MAAM,IAAI,GAAgC;IACxC,MAAM,EAAE;QACN,YAAY,EAAE,YAAY;QAC1B,mBAAmB,EAAE,gBAAgB;QACrC,cAAc,EAAE,SAAS;QACzB,yBAAyB,EACvB,+DAA+D;QACjE,aAAa,EAAE,WAAW;QAC1B,mBAAmB,EAAE,kBAAkB;QACvC,mBAAmB,EAAE,gBAAgB;QACrC,uBAAuB,EAAE,kBAAkB;QAC3C,eAAe,EAAE,YAAY;QAC7B,eAAe,EAAE,UAAU;QAC3B,0BAA0B,EAAE,WAAW;KACxC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"zh-TW.js","sourceRoot":"","sources":["../../../server/locales/zh-TW.ts"],"names":[],"mappings":"AAIA,MAAM,IAAI,GAAgC;IACxC,MAAM,EAAE;QACN,uBAAuB,EACrB,8BAA8B;QAChC,mBAAmB,EAAE,sBAAsB;QAC3C,sBAAsB,EAAE,sBAAsB;QAC9C,mBAAmB,EAAE,wBAAwB;QAC7C,iBAAiB,EAAE,yBAAyB;QAC5C,sBAAsB,EACpB,6BAA6B;QAC/B,gBAAgB,EAAE,wBAAwB;QAC1C,YAAY,EAAE,YAAY;QAC1B,mBAAmB,EAAE,gBAAgB;QACrC,cAAc,EAAE,SAAS;QACzB,yBAAyB,EACvB,+DAA+D;QACjE,aAAa,EAAE,WAAW;QAC1B,mBAAmB,EAAE,kBAAkB;QACvC,mBAAmB,EAAE,gBAAgB;QACrC,uBAAuB,EAAE,kBAAkB;QAC3C,eAAe,EAAE,YAAY;QAC7B,eAAe,EAAE,UAAU;QAC3B,0BAA0B,EAAE,WAAW;KACxC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { MailAccount, MailMessage, MailOperationContext } from '../../shared/mail.js';
|
|
2
2
|
import type { MailStore } from '../contracts/persistence.js';
|
|
3
3
|
import type { DefaultMailServiceDependencies } from '../services/dependencies.js';
|
|
4
|
-
type MessageMutationStore = Pick<MailStore, 'listFolders' | 'updateMessageState' | 'moveMessage' | 'deleteMessage'>;
|
|
4
|
+
type MessageMutationStore = Pick<MailStore, 'listFolders' | 'getMessage' | 'updateMessageState' | 'moveMessage' | 'deleteMessage'>;
|
|
5
5
|
/** Executes mutations after the caller has authorized and resolved the target. */
|
|
6
6
|
export declare class MailMessageMutations {
|
|
7
7
|
private readonly dependencies;
|
|
@@ -9,6 +9,7 @@ export declare class MailMessageMutations {
|
|
|
9
9
|
readonly store: MessageMutationStore;
|
|
10
10
|
});
|
|
11
11
|
updateMessage(context: MailOperationContext, account: MailAccount, message: MailMessage, input: import('../../shared/mail.js').MailUpdateMessageInput): Promise<MailMessage>;
|
|
12
|
+
private moveImap;
|
|
12
13
|
moveMessage(context: MailOperationContext, account: MailAccount, message: MailMessage, input: import('../../shared/mail.js').MailMoveMessageInput): Promise<MailMessage>;
|
|
13
14
|
deleteMessage(context: MailOperationContext, account: MailAccount, message: MailMessage, input: import('../../shared/mail.js').MailDeleteMessageInput): Promise<void>;
|
|
14
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-mutations.d.ts","sourceRoot":"","sources":["../../../server/operations/message-mutations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAelF,KAAK,oBAAoB,GAAG,IAAI,CAC9B,SAAS,
|
|
1
|
+
{"version":3,"file":"message-mutations.d.ts","sourceRoot":"","sources":["../../../server/operations/message-mutations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAelF,KAAK,oBAAoB,GAAG,IAAI,CAC9B,SAAS,EACP,aAAa,GACb,YAAY,GACZ,oBAAoB,GACpB,aAAa,GACb,eAAe,CAClB,CAAC;AAEF,kFAAkF;AAClF,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,IAAI,CACjC,8BAA8B,EAC9B,UAAU,GAAG,uBAAuB,GAAG,QAAQ,CAChD,GAAG;QAAE,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAA;KAAE;IAEjC,aAAa,CACxB,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,OAAO,sBAAsB,EAAE,sBAAsB,GAC3D,OAAO,CAAC,WAAW,CAAC;YAqGT,QAAQ;IA4CT,WAAW,CACtB,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,OAAO,sBAAsB,EAAE,oBAAoB,GACzD,OAAO,CAAC,WAAW,CAAC;IAkEV,aAAa,CACxB,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,OAAO,sBAAsB,EAAE,sBAAsB,GAC3D,OAAO,CAAC,IAAI,CAAC;CAgKjB"}
|
|
@@ -78,6 +78,25 @@ export class MailMessageMutations {
|
|
|
78
78
|
await closeAdapter(adapter);
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
+
async moveImap(context, account, message, base, destinationProviderFolderId, sourceProviderFolderId) {
|
|
82
|
+
let bound;
|
|
83
|
+
try {
|
|
84
|
+
bound = await base.forMessage(message.id, remoteMessageId(message), 'move', {
|
|
85
|
+
sourceProviderFolderId,
|
|
86
|
+
destinationProviderFolderId,
|
|
87
|
+
});
|
|
88
|
+
assertProviderResult(await bound.moveMessage(remoteMessageId(message), destinationProviderFolderId, context.signal));
|
|
89
|
+
const updated = await this.dependencies.store.getMessage(account.userId, account.id, message.id);
|
|
90
|
+
if (!updated)
|
|
91
|
+
throw new Error('Mail message was not found after IMAP move.');
|
|
92
|
+
return updated;
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
if (bound)
|
|
96
|
+
await closeAdapter(bound);
|
|
97
|
+
notifyMailMessageChange(this.dependencies.messageChangeNotifier, account.userId, this.dependencies.logger);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
81
100
|
async moveMessage(context, account, message, input) {
|
|
82
101
|
if (message.scheduledSend)
|
|
83
102
|
throw mailFailedPrecondition('MAIL_DRAFT_SCHEDULED', 'Cancel the scheduled delivery before moving or deleting this draft.');
|
|
@@ -92,6 +111,8 @@ export class MailMessageMutations {
|
|
|
92
111
|
if (!adapter.capabilities.moveMessage || !adapter.moveMessage) {
|
|
93
112
|
throw mailFailedPrecondition('MAIL_PROVIDER_OPERATION_UNSUPPORTED', 'The selected Mail Provider cannot move messages.');
|
|
94
113
|
}
|
|
114
|
+
if (adapter instanceof ImapSmtpAdapter && commitsCopies(adapter))
|
|
115
|
+
return await this.moveImap(context, account, message, adapter, input.providerFolderId, input.sourceProviderFolderId);
|
|
95
116
|
const moved = assertProviderResult(await adapter.moveMessage(providerMessageId, input.providerFolderId, context.signal));
|
|
96
117
|
const updated = await this.dependencies.store.moveMessage(account.id, message.id, moved.providerMessageId, input.providerFolderId);
|
|
97
118
|
if (!updated)
|
|
@@ -140,6 +161,13 @@ export class MailMessageMutations {
|
|
|
140
161
|
}
|
|
141
162
|
let adapter = await this.dependencies.adapters.resolve(account, context.signal);
|
|
142
163
|
try {
|
|
164
|
+
if (!input.permanently && adapter instanceof ImapSmtpAdapter) {
|
|
165
|
+
const trash = (await this.dependencies.store.listFolders(account.id)).find((folder) => folder.type === 'trash');
|
|
166
|
+
if (!trash)
|
|
167
|
+
throw mailFailedPrecondition('MAIL_IMAP_TRASH_NOT_FOUND', 'This account has no Trash folder. Use your mail client.');
|
|
168
|
+
await this.moveImap(context, account, message, adapter, trash.providerFolderId, input.sourceProviderFolderId);
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
143
171
|
if (!input.permanently &&
|
|
144
172
|
adapter.capabilities.moveMessage &&
|
|
145
173
|
adapter.moveMessage) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-mutations.js","sourceRoot":"","sources":["../../../server/operations/message-mutations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AASzD,OAAO,EACL,mBAAmB,EACnB,eAAe,GAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,oEAAoE;AACpE,SAAS,aAAa,CAAC,OAA4B;IACjD,OAAO,OAAO,YAAY,eAAe,IAAI,OAAO,CAAC,iBAAiB,CAAC;AACzE,CAAC;
|
|
1
|
+
{"version":3,"file":"message-mutations.js","sourceRoot":"","sources":["../../../server/operations/message-mutations.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,8 @@ export interface SendMailExecutionOptions {
|
|
|
20
20
|
export declare class SendMailOperation {
|
|
21
21
|
private readonly dependencies;
|
|
22
22
|
constructor(dependencies: SendMailOperationDependencies);
|
|
23
|
+
/** Read-only replay check for invalid legacy input; never starts a delivery. */
|
|
24
|
+
replayTerminalSubmission(context: MailOperationContext, input: MailComposeInput, scheduledDelivery?: boolean): Promise<MailSubmission | undefined>;
|
|
23
25
|
execute(context: MailOperationContext, input: MailComposeInput, options?: SendMailExecutionOptions): Promise<MailSubmission>;
|
|
24
26
|
private executeSubmission;
|
|
25
27
|
private snapshotDelivery;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-mail.d.ts","sourceRoot":"","sources":["../../../server/operations/send-mail.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"send-mail.d.ts","sourceRoot":"","sources":["../../../server/operations/send-mail.ts"],"names":[],"mappings":"AAMA,OAAO,EAA8B,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAG5E,OAAO,KAAK,EACV,gBAAgB,EAGhB,oBAAoB,EACpB,6BAA6B,EAC7B,cAAc,EAGf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,2BAA2B,EAC3B,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,gBAAgB,CAAC;AAUxB,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,IAAI,IAAI,IAAI,CAAA;KAAE,CAAC;IACnC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,6BAA6B,CAAC;IAC7D,QAAQ,CAAC,qBAAqB,CAAC,EAAE,yBAAyB,CAAC;CAC5D;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC;AAKD,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,6BAA6B;IAG9D,gFAAgF;IACnE,wBAAwB,CACnC,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,gBAAgB,EACvB,iBAAiB,UAAQ,GACxB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAezB,OAAO,CAClB,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,gBAAgB,EACvB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,cAAc,CAAC;YA4GZ,iBAAiB;YAkXjB,gBAAgB;YAwDhB,gBAAgB;YA4ChB,oBAAoB;YAmCpB,mBAAmB;YAiDnB,iBAAiB;IAiBlB,sBAAsB,CACjC,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,gBAAgB,EACvB,sBAAsB,UAAQ,GAC7B,OAAO,CAAC,wBAAwB,CAAC;CAiOrC;AAqDD,qBAAa,4BAA6B,SAAQ,KAAK;;CAItD;AAqDD,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MAIL_LOCAL_DRAFT_FOLDER_ID } from '../../shared/mail.js';
|
|
2
|
+
import { recipientIssues } from '../../shared/addresses.js';
|
|
2
3
|
import { MailAttachmentsService } from '../services/attachments.js';
|
|
3
4
|
import { uploadedImageMetadata } from '../../shared/inline-images.js';
|
|
4
5
|
import { remoteMessageId } from '../services/draft-content.js';
|
|
@@ -14,6 +15,18 @@ export class SendMailOperation {
|
|
|
14
15
|
constructor(dependencies) {
|
|
15
16
|
this.dependencies = dependencies;
|
|
16
17
|
}
|
|
18
|
+
/** Read-only replay check for invalid legacy input; never starts a delivery. */
|
|
19
|
+
async replayTerminalSubmission(context, input, scheduledDelivery = false) {
|
|
20
|
+
const account = await this.dependencies.store.getAccount(input.accountId);
|
|
21
|
+
if (!account || account.userId !== context.actorId)
|
|
22
|
+
throw mailAccountNotFound();
|
|
23
|
+
if (account.status !== 'active')
|
|
24
|
+
throw mailAccountInactive();
|
|
25
|
+
const existing = await this.dependencies.store.getSubmissionByIdempotencyKey(account.id, input.idempotencyKey);
|
|
26
|
+
if (existing && !scheduledDelivery)
|
|
27
|
+
assertMatchingRequest(existing.requestFingerprint, fingerprint(input));
|
|
28
|
+
return existing && existing.status !== 'pending' ? existing : undefined;
|
|
29
|
+
}
|
|
17
30
|
async execute(context, input, options = {}) {
|
|
18
31
|
const startedAt = Date.now();
|
|
19
32
|
const fields = {
|
|
@@ -92,6 +105,15 @@ export class SendMailOperation {
|
|
|
92
105
|
throw mailInvalidArgument('A message cannot be both a reply and a forward.');
|
|
93
106
|
}
|
|
94
107
|
const now = Date.now();
|
|
108
|
+
// Reject new invalid requests before the recovery sweep can write anything.
|
|
109
|
+
// Existing terminal requests still obey the original replay/conflict contract.
|
|
110
|
+
const invalid = recipientIssues(input)[0];
|
|
111
|
+
if (invalid) {
|
|
112
|
+
const replay = await this.replayTerminalSubmission(context, input, options.scheduledDelivery);
|
|
113
|
+
if (replay)
|
|
114
|
+
return replay;
|
|
115
|
+
throw mailInvalidArgument(invalid.message, invalid.field);
|
|
116
|
+
}
|
|
95
117
|
await this.dependencies.store.recoverExpiredSubmissions(new Date(now).toISOString());
|
|
96
118
|
const account = await this.dependencies.store.getAccount(input.accountId);
|
|
97
119
|
if (!account || account.userId !== context.actorId) {
|
|
@@ -121,8 +143,12 @@ export class SendMailOperation {
|
|
|
121
143
|
const persistedPending = existing?.hasComposeInput && !options.scheduledDelivery
|
|
122
144
|
? await this.dependencies.store.getScheduledSubmission(existing.id)
|
|
123
145
|
: undefined;
|
|
124
|
-
if (persistedPending)
|
|
146
|
+
if (persistedPending) {
|
|
125
147
|
input = persistedPending.input;
|
|
148
|
+
const invalid = recipientIssues(input)[0];
|
|
149
|
+
if (invalid)
|
|
150
|
+
throw mailInvalidArgument(invalid.message, invalid.field);
|
|
151
|
+
}
|
|
126
152
|
else if (!options.scheduledDelivery)
|
|
127
153
|
input = await this.snapshotDelivery(context, input);
|
|
128
154
|
const providerMessage = await this.prepareProviderMessage(context, input, options.scheduledDelivery === true || Boolean(persistedPending));
|