@bobfrankston/mailx-store-web 0.1.5

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.
Files changed (75) hide show
  1. package/android-bootstrap.d.ts +16 -0
  2. package/android-bootstrap.d.ts.map +1 -0
  3. package/android-bootstrap.js +1438 -0
  4. package/android-bootstrap.js.map +1 -0
  5. package/android-bootstrap.ts +1450 -0
  6. package/db.d.ts +146 -0
  7. package/db.d.ts.map +1 -0
  8. package/db.js +725 -0
  9. package/db.js.map +1 -0
  10. package/db.ts +831 -0
  11. package/gmail-api-web.d.ts +11 -0
  12. package/gmail-api-web.d.ts.map +1 -0
  13. package/gmail-api-web.js +11 -0
  14. package/gmail-api-web.js.map +1 -0
  15. package/gmail-api-web.ts +11 -0
  16. package/imap-web-provider.d.ts +33 -0
  17. package/imap-web-provider.d.ts.map +1 -0
  18. package/imap-web-provider.js +140 -0
  19. package/imap-web-provider.js.map +1 -0
  20. package/imap-web-provider.ts +156 -0
  21. package/index.d.ts +10 -0
  22. package/index.d.ts.map +1 -0
  23. package/index.js +10 -0
  24. package/index.js.map +1 -0
  25. package/index.ts +10 -0
  26. package/main-thread-host.d.ts +15 -0
  27. package/main-thread-host.d.ts.map +1 -0
  28. package/main-thread-host.js +292 -0
  29. package/main-thread-host.js.map +1 -0
  30. package/main-thread-host.ts +322 -0
  31. package/package.json +41 -0
  32. package/provider-types.d.ts +7 -0
  33. package/provider-types.d.ts.map +1 -0
  34. package/provider-types.js +7 -0
  35. package/provider-types.js.map +1 -0
  36. package/provider-types.ts +7 -0
  37. package/sql-wasm-esm.js +10 -0
  38. package/sql.js.d.ts +29 -0
  39. package/sync-manager.d.ts +68 -0
  40. package/sync-manager.d.ts.map +1 -0
  41. package/sync-manager.js +506 -0
  42. package/sync-manager.js.map +1 -0
  43. package/sync-manager.ts +508 -0
  44. package/tsconfig.json +10 -0
  45. package/web-jsonrpc.d.ts +20 -0
  46. package/web-jsonrpc.d.ts.map +1 -0
  47. package/web-jsonrpc.js +112 -0
  48. package/web-jsonrpc.js.map +1 -0
  49. package/web-jsonrpc.ts +126 -0
  50. package/web-message-store.d.ts +16 -0
  51. package/web-message-store.d.ts.map +1 -0
  52. package/web-message-store.js +89 -0
  53. package/web-message-store.js.map +1 -0
  54. package/web-message-store.ts +97 -0
  55. package/web-service.d.ts +136 -0
  56. package/web-service.d.ts.map +1 -0
  57. package/web-service.js +687 -0
  58. package/web-service.js.map +1 -0
  59. package/web-service.ts +754 -0
  60. package/web-settings.d.ts +91 -0
  61. package/web-settings.d.ts.map +1 -0
  62. package/web-settings.js +518 -0
  63. package/web-settings.js.map +1 -0
  64. package/web-settings.ts +547 -0
  65. package/worker-bundle.js +6838 -0
  66. package/worker-entry.d.ts +8 -0
  67. package/worker-entry.d.ts.map +1 -0
  68. package/worker-entry.js +218 -0
  69. package/worker-entry.js.map +1 -0
  70. package/worker-entry.ts +245 -0
  71. package/worker-tcp-transport.d.ts +28 -0
  72. package/worker-tcp-transport.d.ts.map +1 -0
  73. package/worker-tcp-transport.js +98 -0
  74. package/worker-tcp-transport.js.map +1 -0
  75. package/worker-tcp-transport.ts +101 -0
package/db.d.ts ADDED
@@ -0,0 +1,146 @@
1
+ /**
2
+ * WebAssembly SQLite metadata index for mailx (Android/browser).
3
+ * API-compatible with @bobfrankston/mailx-store's MailxDB.
4
+ * Uses sql.js (SQLite compiled to WebAssembly) for in-browser SQLite.
5
+ *
6
+ * Database is persisted to IndexedDB on every write operation.
7
+ * Bodies are stored in IndexedDB via WebMessageStore (not filesystem).
8
+ */
9
+ import type { MessageEnvelope, Folder, EmailAddress, PagedResult, MessageQuery } from "@bobfrankston/mailx-types";
10
+ export declare class WebMailxDB {
11
+ private db;
12
+ private ready;
13
+ private saveTimer;
14
+ constructor(dbName?: string);
15
+ private init;
16
+ /** Wait for DB initialization */
17
+ waitReady(): Promise<void>;
18
+ /** One-shot junk-contact purge — see desktop equivalent in mailx-store/db.ts.
19
+ * Bump TARGET when filter rules tighten so we sweep historical rows once
20
+ * per device. Flag stored in localStorage (the web DB has no kv table). */
21
+ private runOneShotJunkContactPurge;
22
+ /** Persist DB to IndexedDB (debounced — batches rapid writes) */
23
+ private scheduleSave;
24
+ /** Force immediate persist */
25
+ flush(): Promise<void>;
26
+ close(): void;
27
+ private run;
28
+ private get;
29
+ private all;
30
+ private lastId;
31
+ upsertAccount(id: string, name: string, email: string, configJson: string): void;
32
+ getAccounts(): {
33
+ id: string;
34
+ name: string;
35
+ email: string;
36
+ lastSync: number;
37
+ }[];
38
+ getAccountConfigs(): {
39
+ id: string;
40
+ name: string;
41
+ email: string;
42
+ configJson: string;
43
+ }[];
44
+ updateLastSync(accountId: string, timestamp: number): void;
45
+ upsertFolder(accountId: string, folderPath: string, name: string, specialUse: string, delimiter: string): number;
46
+ getFolders(accountId: string): Folder[];
47
+ deleteFolder(folderId: number): void;
48
+ markFolderRead(folderId: number): void;
49
+ deleteAllMessages(accountId: string, folderId: number): void;
50
+ updateFolderCounts(folderId: number, total: number, unread: number): void;
51
+ updateFolderSync(folderId: number, uidvalidity: number, highestModseq: string): void;
52
+ getFolderSync(folderId: number): {
53
+ uidvalidity: number;
54
+ highestModseq: string;
55
+ };
56
+ upsertMessage(msg: {
57
+ accountId: string;
58
+ folderId: number;
59
+ uid: number;
60
+ messageId: string;
61
+ inReplyTo: string;
62
+ references: string[];
63
+ date: number;
64
+ subject: string;
65
+ from: EmailAddress;
66
+ to: EmailAddress[];
67
+ cc: EmailAddress[];
68
+ flags: string[];
69
+ size: number;
70
+ hasAttachments: boolean;
71
+ preview: string;
72
+ bodyPath: string;
73
+ }): number;
74
+ getMessages(query: MessageQuery): PagedResult<MessageEnvelope>;
75
+ getUnifiedInbox(page?: number, pageSize?: number): PagedResult<MessageEnvelope>;
76
+ getMessageByUid(accountId: string, uid: number, folderId?: number): MessageEnvelope;
77
+ getMessageBodyPath(accountId: string, uid: number): string;
78
+ updateMessageFlags(accountId: string, uid: number, flags: string[]): void;
79
+ updateBodyPath(accountId: string, uid: number, bodyPath: string): void;
80
+ getMessagesWithoutBody(accountId: string, limit?: number): {
81
+ uid: number;
82
+ folderId: number;
83
+ }[];
84
+ getHighestUid(accountId: string, folderId: number): number;
85
+ getOldestDate(accountId: string, folderId: number): number;
86
+ getMessageCount(accountId: string, folderId: number): number;
87
+ getUidsForFolder(accountId: string, folderId: number): number[];
88
+ deleteMessage(accountId: string, uid: number): void;
89
+ recalcFolderCounts(folderId: number): void;
90
+ beginTransaction(): void;
91
+ commitTransaction(): void;
92
+ rollbackTransaction(): void;
93
+ /** Delete every contact row tied to a single Google contact identity
94
+ * (resourceName like "people/c12345"). Used by the People-API
95
+ * incremental sync when Google flags a contact as deleted. A single
96
+ * Google contact can have multiple email-rows; remove them all. */
97
+ deleteContactByGoogleId(googleId: string): number;
98
+ /** Stamp the google_id + organization on an already-recorded contact row.
99
+ * Web side mirrors mailx-store/db.ts — the Google sync calls
100
+ * `recordSentAddress` first to upsert, then this to attach the
101
+ * Google identity for incremental delete tracking. */
102
+ setContactGoogleId(email: string, googleId: string, organization: string): void;
103
+ recordSentAddress(name: string, email: string): void;
104
+ seedContactsFromMessages(): number;
105
+ searchContacts(query: string, limit?: number): {
106
+ name: string;
107
+ email: string;
108
+ source: string;
109
+ useCount: number;
110
+ }[];
111
+ /** Address-book listing. Same shape as mailx-store/db.ts:listContacts so
112
+ * the address-book modal renders identically on desktop and Android. */
113
+ listContacts(query: string, page?: number, pageSize?: number): {
114
+ items: any[];
115
+ total: number;
116
+ page: number;
117
+ pageSize: number;
118
+ };
119
+ upsertContact(name: string, email: string): void;
120
+ deleteContactLocal(email: string): void;
121
+ /** Q49 heuristic: has the user ever sent to `recipientEmail` with a
122
+ * non-empty Cc? Scans Sent folder(s). Used by compose to auto-expand
123
+ * the Cc row on reply to a frequent-Cc'd recipient. */
124
+ hasCcHistoryTo(recipientEmail: string): boolean;
125
+ searchMessages(query: string, page?: number, pageSize?: number, accountId?: string, folderId?: number): PagedResult<MessageEnvelope>;
126
+ queueSyncAction(accountId: string, action: string, uid: number, folderId: number, extra?: {
127
+ targetFolderId?: number;
128
+ flags?: string[];
129
+ rawMessage?: string;
130
+ }): void;
131
+ getPendingSyncActions(accountId: string): any[];
132
+ completeSyncAction(id: number): void;
133
+ failSyncAction(id: number, error: string): void;
134
+ /** Delete a queued sync action by (accountId, action, uid) — used by the
135
+ * send path which tracks queued sends via a unique negative uid rather
136
+ * than threading the row id through the async send pipeline. */
137
+ completeSyncActionByUid(accountId: string, action: string, uid: number): void;
138
+ /** Mark a send-queue action failed by uid — same tracking-key rationale. */
139
+ failSyncActionByUid(accountId: string, action: string, uid: number, error: string): void;
140
+ getPendingSyncCount(accountId: string): number;
141
+ getTotalPendingSyncCount(): number;
142
+ /** Reset the entire database */
143
+ resetStore(): Promise<void>;
144
+ private rowToEnvelope;
145
+ }
146
+ //# sourceMappingURL=db.d.ts.map
package/db.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["db.ts"],"names":[],"mappings":"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"}