@framers/sql-storage-adapter 0.4.2 → 0.5.1

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 (135) hide show
  1. package/README.md +94 -2
  2. package/dist/adapters/electron/electronMainAdapter.d.ts +241 -0
  3. package/dist/adapters/electron/electronMainAdapter.d.ts.map +1 -0
  4. package/dist/adapters/electron/electronMainAdapter.js +442 -0
  5. package/dist/adapters/electron/electronMainAdapter.js.map +1 -0
  6. package/dist/adapters/electron/electronRendererAdapter.d.ts +177 -0
  7. package/dist/adapters/electron/electronRendererAdapter.d.ts.map +1 -0
  8. package/dist/adapters/electron/electronRendererAdapter.js +339 -0
  9. package/dist/adapters/electron/electronRendererAdapter.js.map +1 -0
  10. package/dist/adapters/electron/index.d.ts +74 -0
  11. package/dist/adapters/electron/index.d.ts.map +1 -0
  12. package/dist/adapters/electron/index.js +96 -0
  13. package/dist/adapters/electron/index.js.map +1 -0
  14. package/dist/adapters/electron/ipc/channels.d.ts +196 -0
  15. package/dist/adapters/electron/ipc/channels.d.ts.map +1 -0
  16. package/dist/adapters/electron/ipc/channels.js +121 -0
  17. package/dist/adapters/electron/ipc/channels.js.map +1 -0
  18. package/dist/adapters/electron/ipc/index.d.ts +11 -0
  19. package/dist/adapters/electron/ipc/index.d.ts.map +1 -0
  20. package/dist/adapters/electron/ipc/index.js +11 -0
  21. package/dist/adapters/electron/ipc/index.js.map +1 -0
  22. package/dist/adapters/electron/ipc/protocol.d.ts +78 -0
  23. package/dist/adapters/electron/ipc/protocol.d.ts.map +1 -0
  24. package/dist/adapters/electron/ipc/protocol.js +347 -0
  25. package/dist/adapters/electron/ipc/protocol.js.map +1 -0
  26. package/dist/adapters/electron/ipc/types.d.ts +248 -0
  27. package/dist/adapters/electron/ipc/types.d.ts.map +1 -0
  28. package/dist/adapters/electron/ipc/types.js +8 -0
  29. package/dist/adapters/electron/ipc/types.js.map +1 -0
  30. package/dist/adapters/electron/migration/autoMigrator.d.ts +184 -0
  31. package/dist/adapters/electron/migration/autoMigrator.d.ts.map +1 -0
  32. package/dist/adapters/electron/migration/autoMigrator.js +478 -0
  33. package/dist/adapters/electron/migration/autoMigrator.js.map +1 -0
  34. package/dist/adapters/electron/migration/index.d.ts +9 -0
  35. package/dist/adapters/electron/migration/index.d.ts.map +1 -0
  36. package/dist/adapters/electron/migration/index.js +9 -0
  37. package/dist/adapters/electron/migration/index.js.map +1 -0
  38. package/dist/adapters/electron/preload.d.ts +126 -0
  39. package/dist/adapters/electron/preload.d.ts.map +1 -0
  40. package/dist/adapters/electron/preload.js +254 -0
  41. package/dist/adapters/electron/preload.js.map +1 -0
  42. package/dist/adapters/electron/recovery/corruptionDetector.d.ts +214 -0
  43. package/dist/adapters/electron/recovery/corruptionDetector.d.ts.map +1 -0
  44. package/dist/adapters/electron/recovery/corruptionDetector.js +410 -0
  45. package/dist/adapters/electron/recovery/corruptionDetector.js.map +1 -0
  46. package/dist/adapters/electron/recovery/index.d.ts +11 -0
  47. package/dist/adapters/electron/recovery/index.d.ts.map +1 -0
  48. package/dist/adapters/electron/recovery/index.js +11 -0
  49. package/dist/adapters/electron/recovery/index.js.map +1 -0
  50. package/dist/adapters/electron/recovery/walCheckpoint.d.ts +186 -0
  51. package/dist/adapters/electron/recovery/walCheckpoint.d.ts.map +1 -0
  52. package/dist/adapters/electron/recovery/walCheckpoint.js +302 -0
  53. package/dist/adapters/electron/recovery/walCheckpoint.js.map +1 -0
  54. package/dist/adapters/electron/window/index.d.ts +9 -0
  55. package/dist/adapters/electron/window/index.d.ts.map +1 -0
  56. package/dist/adapters/electron/window/index.js +9 -0
  57. package/dist/adapters/electron/window/index.js.map +1 -0
  58. package/dist/adapters/electron/window/windowManager.d.ts +190 -0
  59. package/dist/adapters/electron/window/windowManager.d.ts.map +1 -0
  60. package/dist/adapters/electron/window/windowManager.js +358 -0
  61. package/dist/adapters/electron/window/windowManager.js.map +1 -0
  62. package/dist/core/contracts/context.d.ts +2 -2
  63. package/dist/core/contracts/context.d.ts.map +1 -1
  64. package/dist/core/database.d.ts +19 -0
  65. package/dist/core/database.d.ts.map +1 -1
  66. package/dist/core/database.js +4 -0
  67. package/dist/core/database.js.map +1 -1
  68. package/dist/core/resolver.d.ts +3 -0
  69. package/dist/core/resolver.d.ts.map +1 -1
  70. package/dist/core/resolver.js +39 -3
  71. package/dist/core/resolver.js.map +1 -1
  72. package/dist/features/sync/conflicts/conflictResolver.d.ts +222 -0
  73. package/dist/features/sync/conflicts/conflictResolver.d.ts.map +1 -0
  74. package/dist/features/sync/conflicts/conflictResolver.js +396 -0
  75. package/dist/features/sync/conflicts/conflictResolver.js.map +1 -0
  76. package/dist/features/sync/conflicts/index.d.ts +9 -0
  77. package/dist/features/sync/conflicts/index.d.ts.map +1 -0
  78. package/dist/features/sync/conflicts/index.js +9 -0
  79. package/dist/features/sync/conflicts/index.js.map +1 -0
  80. package/dist/features/sync/crossPlatformSync.d.ts +281 -0
  81. package/dist/features/sync/crossPlatformSync.d.ts.map +1 -0
  82. package/dist/features/sync/crossPlatformSync.js +623 -0
  83. package/dist/features/sync/crossPlatformSync.js.map +1 -0
  84. package/dist/features/sync/devices/deviceManager.d.ts +243 -0
  85. package/dist/features/sync/devices/deviceManager.d.ts.map +1 -0
  86. package/dist/features/sync/devices/deviceManager.js +494 -0
  87. package/dist/features/sync/devices/deviceManager.js.map +1 -0
  88. package/dist/features/sync/devices/index.d.ts +10 -0
  89. package/dist/features/sync/devices/index.d.ts.map +1 -0
  90. package/dist/features/sync/devices/index.js +10 -0
  91. package/dist/features/sync/devices/index.js.map +1 -0
  92. package/dist/features/sync/index.d.ts +37 -0
  93. package/dist/features/sync/index.d.ts.map +1 -0
  94. package/dist/features/sync/index.js +47 -0
  95. package/dist/features/sync/index.js.map +1 -0
  96. package/dist/features/sync/protocol/index.d.ts +11 -0
  97. package/dist/features/sync/protocol/index.d.ts.map +1 -0
  98. package/dist/features/sync/protocol/index.js +11 -0
  99. package/dist/features/sync/protocol/index.js.map +1 -0
  100. package/dist/features/sync/protocol/messages.d.ts +348 -0
  101. package/dist/features/sync/protocol/messages.d.ts.map +1 -0
  102. package/dist/features/sync/protocol/messages.js +216 -0
  103. package/dist/features/sync/protocol/messages.js.map +1 -0
  104. package/dist/features/sync/protocol/vectorClock.d.ts +164 -0
  105. package/dist/features/sync/protocol/vectorClock.d.ts.map +1 -0
  106. package/dist/features/sync/protocol/vectorClock.js +286 -0
  107. package/dist/features/sync/protocol/vectorClock.js.map +1 -0
  108. package/dist/features/sync/tables/index.d.ts +10 -0
  109. package/dist/features/sync/tables/index.d.ts.map +1 -0
  110. package/dist/features/sync/tables/index.js +10 -0
  111. package/dist/features/sync/tables/index.js.map +1 -0
  112. package/dist/features/sync/tables/syncLogManager.d.ts +216 -0
  113. package/dist/features/sync/tables/syncLogManager.d.ts.map +1 -0
  114. package/dist/features/sync/tables/syncLogManager.js +456 -0
  115. package/dist/features/sync/tables/syncLogManager.js.map +1 -0
  116. package/dist/features/sync/transport/httpTransport.d.ts +123 -0
  117. package/dist/features/sync/transport/httpTransport.d.ts.map +1 -0
  118. package/dist/features/sync/transport/httpTransport.js +380 -0
  119. package/dist/features/sync/transport/httpTransport.js.map +1 -0
  120. package/dist/features/sync/transport/index.d.ts +12 -0
  121. package/dist/features/sync/transport/index.d.ts.map +1 -0
  122. package/dist/features/sync/transport/index.js +12 -0
  123. package/dist/features/sync/transport/index.js.map +1 -0
  124. package/dist/features/sync/transport/transport.d.ts +259 -0
  125. package/dist/features/sync/transport/transport.d.ts.map +1 -0
  126. package/dist/features/sync/transport/transport.js +153 -0
  127. package/dist/features/sync/transport/transport.js.map +1 -0
  128. package/dist/features/sync/transport/websocketTransport.d.ts +126 -0
  129. package/dist/features/sync/transport/websocketTransport.d.ts.map +1 -0
  130. package/dist/features/sync/transport/websocketTransport.js +374 -0
  131. package/dist/features/sync/transport/websocketTransport.js.map +1 -0
  132. package/dist/index.d.ts.map +1 -1
  133. package/dist/index.js +6 -0
  134. package/dist/index.js.map +1 -1
  135. package/package.json +21 -1
@@ -0,0 +1,358 @@
1
+ /**
2
+ * Multi-Window Manager for Electron SQL Storage Adapter.
3
+ *
4
+ * Coordinates database access across multiple Electron windows.
5
+ * Broadcasts database changes to all windows and manages
6
+ * window-specific state.
7
+ *
8
+ * ## Features
9
+ * - Change broadcasting to all windows
10
+ * - Window registration and tracking
11
+ * - Focused window optimization
12
+ * - Connection state synchronization
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const manager = new WindowManager({
17
+ * broadcastChanges: true,
18
+ * trackFocusedWindow: true,
19
+ * });
20
+ *
21
+ * manager.initialize();
22
+ *
23
+ * // Register a window
24
+ * manager.registerWindow(mainWindow);
25
+ *
26
+ * // Broadcast a change
27
+ * manager.broadcastChange({
28
+ * type: 'insert',
29
+ * tables: ['users'],
30
+ * changes: 1,
31
+ * });
32
+ * ```
33
+ */
34
+ import { BrowserWindow } from 'electron';
35
+ import { BROADCAST_CHANNELS } from '../ipc/channels.js';
36
+ // ============================================================================
37
+ // Default Configuration
38
+ // ============================================================================
39
+ const DEFAULT_CONFIG = {
40
+ broadcastChanges: true,
41
+ trackFocusedWindow: true,
42
+ verbose: false,
43
+ excludeWindows: [],
44
+ };
45
+ // ============================================================================
46
+ // Window Manager
47
+ // ============================================================================
48
+ /**
49
+ * Multi-Window Manager.
50
+ *
51
+ * Manages database access coordination across multiple Electron windows.
52
+ */
53
+ export class WindowManager {
54
+ constructor(config = {}, callbacks = {}) {
55
+ this.windows = new Map();
56
+ this.focusedWindowId = null;
57
+ this.isInitialized = false;
58
+ this.config = { ...DEFAULT_CONFIG, ...config };
59
+ this.callbacks = callbacks;
60
+ }
61
+ // ============================================================================
62
+ // Initialization
63
+ // ============================================================================
64
+ /**
65
+ * Initialize the window manager.
66
+ */
67
+ initialize() {
68
+ if (this.isInitialized)
69
+ return;
70
+ // Set up focus tracking
71
+ if (this.config.trackFocusedWindow) {
72
+ this.setupFocusTracking();
73
+ }
74
+ // Register existing windows
75
+ const allWindows = BrowserWindow.getAllWindows();
76
+ for (const win of allWindows) {
77
+ this.registerWindow(win);
78
+ }
79
+ this.isInitialized = true;
80
+ this.log(`Window Manager initialized with ${this.windows.size} windows`);
81
+ }
82
+ /**
83
+ * Dispose the window manager.
84
+ */
85
+ dispose() {
86
+ this.windows.clear();
87
+ this.focusedWindowId = null;
88
+ this.isInitialized = false;
89
+ }
90
+ /**
91
+ * Set up focus tracking for all windows.
92
+ */
93
+ setupFocusTracking() {
94
+ // Listen for new windows
95
+ const originalGetAllWindows = BrowserWindow.getAllWindows.bind(BrowserWindow);
96
+ // Check for new windows periodically
97
+ setInterval(() => {
98
+ const currentWindows = originalGetAllWindows();
99
+ for (const win of currentWindows) {
100
+ if (!this.windows.has(win.id)) {
101
+ this.registerWindow(win);
102
+ }
103
+ }
104
+ }, 1000);
105
+ }
106
+ // ============================================================================
107
+ // Window Registration
108
+ // ============================================================================
109
+ /**
110
+ * Register a window for management.
111
+ */
112
+ registerWindow(window, name) {
113
+ if (this.windows.has(window.id)) {
114
+ return;
115
+ }
116
+ const registration = {
117
+ id: window.id,
118
+ name,
119
+ isFocused: window.isFocused(),
120
+ registeredAt: Date.now(),
121
+ lastActivityAt: Date.now(),
122
+ subscribedToChanges: true,
123
+ };
124
+ this.windows.set(window.id, registration);
125
+ // Set up event listeners
126
+ window.on('focus', () => {
127
+ this.handleWindowFocus(window.id);
128
+ });
129
+ window.on('blur', () => {
130
+ this.handleWindowBlur(window.id);
131
+ });
132
+ window.on('closed', () => {
133
+ this.unregisterWindow(window.id);
134
+ });
135
+ // Track initial focus
136
+ if (window.isFocused()) {
137
+ this.focusedWindowId = window.id;
138
+ }
139
+ this.log(`Registered window: ${window.id}${name ? ` (${name})` : ''}`);
140
+ this.callbacks.onWindowRegistered?.(registration);
141
+ }
142
+ /**
143
+ * Unregister a window.
144
+ */
145
+ unregisterWindow(windowId) {
146
+ const registration = this.windows.get(windowId);
147
+ if (!registration)
148
+ return;
149
+ this.windows.delete(windowId);
150
+ if (this.focusedWindowId === windowId) {
151
+ this.focusedWindowId = null;
152
+ }
153
+ this.log(`Unregistered window: ${windowId}`);
154
+ this.callbacks.onWindowUnregistered?.(windowId);
155
+ }
156
+ /**
157
+ * Handle window focus event.
158
+ */
159
+ handleWindowFocus(windowId) {
160
+ const registration = this.windows.get(windowId);
161
+ if (registration) {
162
+ registration.isFocused = true;
163
+ registration.lastActivityAt = Date.now();
164
+ }
165
+ this.focusedWindowId = windowId;
166
+ this.callbacks.onFocusChanged?.(windowId);
167
+ }
168
+ /**
169
+ * Handle window blur event.
170
+ */
171
+ handleWindowBlur(windowId) {
172
+ const registration = this.windows.get(windowId);
173
+ if (registration) {
174
+ registration.isFocused = false;
175
+ }
176
+ }
177
+ // ============================================================================
178
+ // Broadcasting
179
+ // ============================================================================
180
+ /**
181
+ * Broadcast a database change to all windows.
182
+ */
183
+ broadcastChange(change, excludeWindowId) {
184
+ if (!this.config.broadcastChanges)
185
+ return;
186
+ const event = {
187
+ ...change,
188
+ timestamp: Date.now(),
189
+ sourceWindowId: excludeWindowId,
190
+ };
191
+ const windows = BrowserWindow.getAllWindows();
192
+ for (const win of windows) {
193
+ // Skip excluded window
194
+ if (win.id === excludeWindowId)
195
+ continue;
196
+ // Skip windows by name
197
+ const registration = this.windows.get(win.id);
198
+ if (registration?.name && this.config.excludeWindows.includes(registration.name)) {
199
+ continue;
200
+ }
201
+ // Skip unsubscribed windows
202
+ if (registration && !registration.subscribedToChanges) {
203
+ continue;
204
+ }
205
+ if (!win.isDestroyed()) {
206
+ win.webContents.send(BROADCAST_CHANNELS.DB_CHANGE, event);
207
+ }
208
+ }
209
+ this.log(`Broadcasted change to ${windows.length - (excludeWindowId ? 1 : 0)} windows`);
210
+ }
211
+ /**
212
+ * Broadcast connection state change to all windows.
213
+ */
214
+ broadcastConnectionState(state, error) {
215
+ const event = {
216
+ state,
217
+ timestamp: Date.now(),
218
+ error: error ? {
219
+ code: error.name,
220
+ message: error.message,
221
+ } : undefined,
222
+ };
223
+ const windows = BrowserWindow.getAllWindows();
224
+ for (const win of windows) {
225
+ if (!win.isDestroyed()) {
226
+ win.webContents.send(BROADCAST_CHANNELS.CONNECTION_STATE, event);
227
+ }
228
+ }
229
+ }
230
+ /**
231
+ * Send a message to a specific window.
232
+ */
233
+ sendToWindow(windowId, channel, data) {
234
+ const win = BrowserWindow.fromId(windowId);
235
+ if (!win || win.isDestroyed()) {
236
+ return false;
237
+ }
238
+ win.webContents.send(channel, data);
239
+ return true;
240
+ }
241
+ /**
242
+ * Send a message to the focused window.
243
+ */
244
+ sendToFocusedWindow(channel, data) {
245
+ if (!this.focusedWindowId) {
246
+ return false;
247
+ }
248
+ return this.sendToWindow(this.focusedWindowId, channel, data);
249
+ }
250
+ // ============================================================================
251
+ // Subscription Management
252
+ // ============================================================================
253
+ /**
254
+ * Subscribe a window to database changes.
255
+ */
256
+ subscribeWindow(windowId) {
257
+ const registration = this.windows.get(windowId);
258
+ if (registration) {
259
+ registration.subscribedToChanges = true;
260
+ }
261
+ }
262
+ /**
263
+ * Unsubscribe a window from database changes.
264
+ */
265
+ unsubscribeWindow(windowId) {
266
+ const registration = this.windows.get(windowId);
267
+ if (registration) {
268
+ registration.subscribedToChanges = false;
269
+ }
270
+ }
271
+ // ============================================================================
272
+ // Query Methods
273
+ // ============================================================================
274
+ /**
275
+ * Get all registered windows.
276
+ */
277
+ getWindows() {
278
+ return Array.from(this.windows.values());
279
+ }
280
+ /**
281
+ * Get a specific window registration.
282
+ */
283
+ getWindow(windowId) {
284
+ return this.windows.get(windowId);
285
+ }
286
+ /**
287
+ * Get the focused window ID.
288
+ */
289
+ getFocusedWindowId() {
290
+ return this.focusedWindowId;
291
+ }
292
+ /**
293
+ * Get the focused window registration.
294
+ */
295
+ getFocusedWindow() {
296
+ if (!this.focusedWindowId)
297
+ return undefined;
298
+ return this.windows.get(this.focusedWindowId);
299
+ }
300
+ /**
301
+ * Get window count.
302
+ */
303
+ getWindowCount() {
304
+ return this.windows.size;
305
+ }
306
+ /**
307
+ * Check if a window is registered.
308
+ */
309
+ hasWindow(windowId) {
310
+ return this.windows.has(windowId);
311
+ }
312
+ // ============================================================================
313
+ // Utilities
314
+ // ============================================================================
315
+ /**
316
+ * Update window activity timestamp.
317
+ */
318
+ updateActivity(windowId) {
319
+ const registration = this.windows.get(windowId);
320
+ if (registration) {
321
+ registration.lastActivityAt = Date.now();
322
+ }
323
+ }
324
+ /**
325
+ * Get statistics about windows.
326
+ */
327
+ getStats() {
328
+ const subscribed = Array.from(this.windows.values())
329
+ .filter(w => w.subscribedToChanges).length;
330
+ return {
331
+ totalWindows: this.windows.size,
332
+ subscribedWindows: subscribed,
333
+ focusedWindowId: this.focusedWindowId,
334
+ };
335
+ }
336
+ /**
337
+ * Log a message if verbose mode is enabled.
338
+ */
339
+ log(message) {
340
+ if (this.config.verbose) {
341
+ console.log(`[WindowManager] ${message}`);
342
+ }
343
+ }
344
+ }
345
+ // ============================================================================
346
+ // Factory Function
347
+ // ============================================================================
348
+ /**
349
+ * Create a Window Manager.
350
+ *
351
+ * @param config - Manager configuration
352
+ * @param callbacks - Event callbacks
353
+ * @returns WindowManager instance
354
+ */
355
+ export function createWindowManager(config = {}, callbacks = {}) {
356
+ return new WindowManager(config, callbacks);
357
+ }
358
+ //# sourceMappingURL=windowManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windowManager.js","sourceRoot":"","sources":["../../../../src/adapters/electron/window/windowManager.ts"],"names":[],"mappings":"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"}
@@ -14,11 +14,11 @@ export type ConnectionType = 'file' | 'memory' | 'network';
14
14
  /**
15
15
  * Database engine identifier.
16
16
  */
17
- export type DatabaseEngine = 'sqlite' | 'postgres' | 'mysql' | 'sqljs' | 'capacitor' | 'supabase';
17
+ export type DatabaseEngine = 'sqlite' | 'postgres' | 'mysql' | 'sqljs' | 'capacitor' | 'supabase' | 'electron';
18
18
  /**
19
19
  * Adapter identifier used by the resolver.
20
20
  */
21
- export type AdapterKind = 'postgres' | 'better-sqlite3' | 'capacitor' | 'sqljs' | 'indexeddb' | 'supabase';
21
+ export type AdapterKind = 'postgres' | 'better-sqlite3' | 'capacitor' | 'sqljs' | 'indexeddb' | 'supabase' | 'electron-main' | 'electron-renderer';
22
22
  /**
23
23
  * Information about the current database connection.
24
24
  */
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/core/contracts/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/core/contracts/context.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ import type { StorageAdapter } from './contracts';
10
10
  import { type AdapterKind } from './resolver';
11
11
  import type { PostgresAdapterOptions } from '../adapters/postgresAdapter';
12
12
  import type { CapacitorAdapterOptions } from '../adapters/capacitorSqliteAdapter';
13
+ import type { IndexedDbAdapterOptions } from '../adapters/indexedDbAdapter';
13
14
  /**
14
15
  * Database connection options.
15
16
  */
@@ -34,6 +35,24 @@ export interface DatabaseOptions {
34
35
  * Automatically detected on mobile platforms.
35
36
  */
36
37
  mobile?: CapacitorAdapterOptions;
38
+ /**
39
+ * IndexedDB configuration for browser-native persistence.
40
+ * Uses sql.js (WASM) for SQL execution + IndexedDB for storage.
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * const db = await createDatabase({
45
+ * priority: ['indexeddb', 'sqljs'],
46
+ * indexedDb: {
47
+ * dbName: 'my-app-db',
48
+ * sqlJsConfig: {
49
+ * locateFile: (file) => `/wasm/${file}`
50
+ * }
51
+ * }
52
+ * });
53
+ * ```
54
+ */
55
+ indexedDb?: IndexedDbAdapterOptions;
37
56
  /**
38
57
  * Force a specific database type.
39
58
  * Leave empty to auto-detect.
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/core/database.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAwD,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AACpG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAElC;;;OAGG;IACH,MAAM,CAAC,EAAE,uBAAuB,CAAC;IAEjC;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAE/D;;;OAGG;IACH,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH;;;;;;;;;;;;GAYG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAiE3F;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,GAAG,sBAAsB,GACtC,OAAO,CAAC,cAAc,CAAC,CAKzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAE5E;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,cAAc,CAAC,CAEpE;AAGD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/core/database.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAwD,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AACpG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAElC;;;OAGG;IACH,MAAM,CAAC,EAAE,uBAAuB,CAAC;IAEjC;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,CAAC,EAAE,uBAAuB,CAAC;IAEpC;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAE/D;;;OAGG;IACH,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH;;;;;;;;;;;;GAYG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAsE3F;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,GAAG,sBAAsB,GACtC,OAAO,CAAC,cAAc,CAAC,CAKzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAE5E;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,cAAc,CAAC,CAEpE;AAGD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC"}
@@ -75,6 +75,10 @@ export async function createDatabase(options = {}) {
75
75
  if (options.mobile) {
76
76
  resolverOptions.capacitor = options.mobile;
77
77
  }
78
+ // Handle IndexedDB config (browser persistence)
79
+ if (options.indexedDb) {
80
+ resolverOptions.indexedDb = options.indexedDb;
81
+ }
78
82
  // Handle explicit type (maps to a canonical adapter kind)
79
83
  if (options.type) {
80
84
  const typeMap = {
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/core/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/core/database.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { StorageAdapter, StorageOpenOptions } from './contracts';
2
2
  import type { AdapterKind } from './contracts/context';
3
3
  import { type CapacitorAdapterOptions } from '../adapters/capacitorSqliteAdapter';
4
+ import { type IndexedDbAdapterOptions } from '../adapters/indexedDbAdapter';
4
5
  export type { AdapterKind } from './contracts/context';
5
6
  export interface StorageResolutionOptions {
6
7
  /** Absolute path for sqlite file (used by better-sqlite3/sql.js when persistence is desired). */
@@ -13,6 +14,8 @@ export interface StorageResolutionOptions {
13
14
  postgres?: {
14
15
  connectionString?: string;
15
16
  };
17
+ /** Options passed to the IndexedDB adapter (browser persistence). */
18
+ indexedDb?: IndexedDbAdapterOptions;
16
19
  /** Options forwarded to adapter.open. */
17
20
  openOptions?: StorageOpenOptions;
18
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/core/resolver.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,cAAc,EAAyB,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAgC,KAAK,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAKhH,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,wBAAwB;IACvC,iGAAiG;IACjG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,8CAA8C;IAC9C,QAAQ,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,yCAAyC;IACzC,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAsBD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,aAAmB,wBAAwB,KAAQ,OAAO,CAAC,cAAc,CA4F1G,CAAC"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/core/resolver.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,cAAc,EAAyB,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAgC,KAAK,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAEhH,OAAO,EAAoB,KAAK,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAG9F,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,wBAAwB;IACvC,iGAAiG;IACjG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,8CAA8C;IAC9C,QAAQ,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,qEAAqE;IACrE,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,yCAAyC;IACzC,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAyCD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,aAAmB,wBAAwB,KAAQ,OAAO,CAAC,cAAc,CAmH1G,CAAC"}
@@ -49,6 +49,23 @@ const isCapacitorRuntime = () => {
49
49
  const maybeCapacitor = window.Capacitor;
50
50
  return Boolean(maybeCapacitor?.isNativePlatform?.());
51
51
  };
52
+ /**
53
+ * Detect if running in Electron main process.
54
+ */
55
+ const isElectronMain = () => {
56
+ return typeof process !== 'undefined' &&
57
+ Boolean(process.versions?.electron) &&
58
+ process.type === 'browser';
59
+ };
60
+ /**
61
+ * Detect if running in Electron renderer process.
62
+ */
63
+ const isElectronRenderer = () => {
64
+ return typeof window !== 'undefined' &&
65
+ typeof process !== 'undefined' &&
66
+ Boolean(process.versions?.electron) &&
67
+ process.type === 'renderer';
68
+ };
52
69
  /**
53
70
  * Resolves the most appropriate storage adapter for the current runtime.
54
71
  * Tries candidates in the supplied priority order and falls back when one fails.
@@ -65,6 +82,21 @@ export const resolveStorageAdapter = async (options = {}) => {
65
82
  if (envOverride) {
66
83
  return [envOverride];
67
84
  }
85
+ // Electron detection - provide guidance to use dedicated Electron adapters
86
+ if (isElectronMain()) {
87
+ console.warn('[StorageAdapter] Electron main process detected. ' +
88
+ 'Consider using the dedicated Electron adapter for full framework support:\n' +
89
+ " import { createElectronMainAdapter } from '@framers/sql-storage-adapter/electron';\n" +
90
+ 'Falling back to better-sqlite3 adapter.');
91
+ return ['better-sqlite3'];
92
+ }
93
+ if (isElectronRenderer()) {
94
+ console.warn('[StorageAdapter] Electron renderer process detected. ' +
95
+ 'For IPC-based database access, use the dedicated Electron adapter:\n' +
96
+ " import { createElectronRendererAdapter } from '@framers/sql-storage-adapter/electron';\n" +
97
+ 'Note: Direct database access in renderer is not recommended for security reasons.');
98
+ return ['indexeddb', 'sqljs'];
99
+ }
68
100
  if (isCapacitorRuntime()) {
69
101
  return ['capacitor', 'indexeddb', 'sqljs'];
70
102
  }
@@ -106,10 +138,14 @@ export const resolveStorageAdapter = async (options = {}) => {
106
138
  return {
107
139
  name,
108
140
  factory: async () => {
109
- const adapterOptions = options.openOptions?.adapterOptions;
141
+ // Use dedicated indexedDb options, fallback to legacy openOptions.adapterOptions
142
+ const legacyOptions = options.openOptions?.adapterOptions;
110
143
  return new IndexedDbAdapter({
111
- dbName: adapterOptions?.dbName || 'app-db',
112
- autoSave: true,
144
+ dbName: options.indexedDb?.dbName || legacyOptions?.dbName || 'app-db',
145
+ storeName: options.indexedDb?.storeName,
146
+ autoSave: options.indexedDb?.autoSave ?? true,
147
+ saveIntervalMs: options.indexedDb?.saveIntervalMs,
148
+ sqlJsConfig: options.indexedDb?.sqlJsConfig,
113
149
  });
114
150
  }
115
151
  };
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/core/resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/core/resolver.ts"],"names":[],"mappings":"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"}