@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.
- package/README.md +94 -2
- package/dist/adapters/electron/electronMainAdapter.d.ts +241 -0
- package/dist/adapters/electron/electronMainAdapter.d.ts.map +1 -0
- package/dist/adapters/electron/electronMainAdapter.js +442 -0
- package/dist/adapters/electron/electronMainAdapter.js.map +1 -0
- package/dist/adapters/electron/electronRendererAdapter.d.ts +177 -0
- package/dist/adapters/electron/electronRendererAdapter.d.ts.map +1 -0
- package/dist/adapters/electron/electronRendererAdapter.js +339 -0
- package/dist/adapters/electron/electronRendererAdapter.js.map +1 -0
- package/dist/adapters/electron/index.d.ts +74 -0
- package/dist/adapters/electron/index.d.ts.map +1 -0
- package/dist/adapters/electron/index.js +96 -0
- package/dist/adapters/electron/index.js.map +1 -0
- package/dist/adapters/electron/ipc/channels.d.ts +196 -0
- package/dist/adapters/electron/ipc/channels.d.ts.map +1 -0
- package/dist/adapters/electron/ipc/channels.js +121 -0
- package/dist/adapters/electron/ipc/channels.js.map +1 -0
- package/dist/adapters/electron/ipc/index.d.ts +11 -0
- package/dist/adapters/electron/ipc/index.d.ts.map +1 -0
- package/dist/adapters/electron/ipc/index.js +11 -0
- package/dist/adapters/electron/ipc/index.js.map +1 -0
- package/dist/adapters/electron/ipc/protocol.d.ts +78 -0
- package/dist/adapters/electron/ipc/protocol.d.ts.map +1 -0
- package/dist/adapters/electron/ipc/protocol.js +347 -0
- package/dist/adapters/electron/ipc/protocol.js.map +1 -0
- package/dist/adapters/electron/ipc/types.d.ts +248 -0
- package/dist/adapters/electron/ipc/types.d.ts.map +1 -0
- package/dist/adapters/electron/ipc/types.js +8 -0
- package/dist/adapters/electron/ipc/types.js.map +1 -0
- package/dist/adapters/electron/migration/autoMigrator.d.ts +184 -0
- package/dist/adapters/electron/migration/autoMigrator.d.ts.map +1 -0
- package/dist/adapters/electron/migration/autoMigrator.js +478 -0
- package/dist/adapters/electron/migration/autoMigrator.js.map +1 -0
- package/dist/adapters/electron/migration/index.d.ts +9 -0
- package/dist/adapters/electron/migration/index.d.ts.map +1 -0
- package/dist/adapters/electron/migration/index.js +9 -0
- package/dist/adapters/electron/migration/index.js.map +1 -0
- package/dist/adapters/electron/preload.d.ts +126 -0
- package/dist/adapters/electron/preload.d.ts.map +1 -0
- package/dist/adapters/electron/preload.js +254 -0
- package/dist/adapters/electron/preload.js.map +1 -0
- package/dist/adapters/electron/recovery/corruptionDetector.d.ts +214 -0
- package/dist/adapters/electron/recovery/corruptionDetector.d.ts.map +1 -0
- package/dist/adapters/electron/recovery/corruptionDetector.js +410 -0
- package/dist/adapters/electron/recovery/corruptionDetector.js.map +1 -0
- package/dist/adapters/electron/recovery/index.d.ts +11 -0
- package/dist/adapters/electron/recovery/index.d.ts.map +1 -0
- package/dist/adapters/electron/recovery/index.js +11 -0
- package/dist/adapters/electron/recovery/index.js.map +1 -0
- package/dist/adapters/electron/recovery/walCheckpoint.d.ts +186 -0
- package/dist/adapters/electron/recovery/walCheckpoint.d.ts.map +1 -0
- package/dist/adapters/electron/recovery/walCheckpoint.js +302 -0
- package/dist/adapters/electron/recovery/walCheckpoint.js.map +1 -0
- package/dist/adapters/electron/window/index.d.ts +9 -0
- package/dist/adapters/electron/window/index.d.ts.map +1 -0
- package/dist/adapters/electron/window/index.js +9 -0
- package/dist/adapters/electron/window/index.js.map +1 -0
- package/dist/adapters/electron/window/windowManager.d.ts +190 -0
- package/dist/adapters/electron/window/windowManager.d.ts.map +1 -0
- package/dist/adapters/electron/window/windowManager.js +358 -0
- package/dist/adapters/electron/window/windowManager.js.map +1 -0
- package/dist/core/contracts/context.d.ts +2 -2
- package/dist/core/contracts/context.d.ts.map +1 -1
- package/dist/core/database.d.ts +19 -0
- package/dist/core/database.d.ts.map +1 -1
- package/dist/core/database.js +4 -0
- package/dist/core/database.js.map +1 -1
- package/dist/core/resolver.d.ts +3 -0
- package/dist/core/resolver.d.ts.map +1 -1
- package/dist/core/resolver.js +39 -3
- package/dist/core/resolver.js.map +1 -1
- package/dist/features/sync/conflicts/conflictResolver.d.ts +222 -0
- package/dist/features/sync/conflicts/conflictResolver.d.ts.map +1 -0
- package/dist/features/sync/conflicts/conflictResolver.js +396 -0
- package/dist/features/sync/conflicts/conflictResolver.js.map +1 -0
- package/dist/features/sync/conflicts/index.d.ts +9 -0
- package/dist/features/sync/conflicts/index.d.ts.map +1 -0
- package/dist/features/sync/conflicts/index.js +9 -0
- package/dist/features/sync/conflicts/index.js.map +1 -0
- package/dist/features/sync/crossPlatformSync.d.ts +281 -0
- package/dist/features/sync/crossPlatformSync.d.ts.map +1 -0
- package/dist/features/sync/crossPlatformSync.js +623 -0
- package/dist/features/sync/crossPlatformSync.js.map +1 -0
- package/dist/features/sync/devices/deviceManager.d.ts +243 -0
- package/dist/features/sync/devices/deviceManager.d.ts.map +1 -0
- package/dist/features/sync/devices/deviceManager.js +494 -0
- package/dist/features/sync/devices/deviceManager.js.map +1 -0
- package/dist/features/sync/devices/index.d.ts +10 -0
- package/dist/features/sync/devices/index.d.ts.map +1 -0
- package/dist/features/sync/devices/index.js +10 -0
- package/dist/features/sync/devices/index.js.map +1 -0
- package/dist/features/sync/index.d.ts +37 -0
- package/dist/features/sync/index.d.ts.map +1 -0
- package/dist/features/sync/index.js +47 -0
- package/dist/features/sync/index.js.map +1 -0
- package/dist/features/sync/protocol/index.d.ts +11 -0
- package/dist/features/sync/protocol/index.d.ts.map +1 -0
- package/dist/features/sync/protocol/index.js +11 -0
- package/dist/features/sync/protocol/index.js.map +1 -0
- package/dist/features/sync/protocol/messages.d.ts +348 -0
- package/dist/features/sync/protocol/messages.d.ts.map +1 -0
- package/dist/features/sync/protocol/messages.js +216 -0
- package/dist/features/sync/protocol/messages.js.map +1 -0
- package/dist/features/sync/protocol/vectorClock.d.ts +164 -0
- package/dist/features/sync/protocol/vectorClock.d.ts.map +1 -0
- package/dist/features/sync/protocol/vectorClock.js +286 -0
- package/dist/features/sync/protocol/vectorClock.js.map +1 -0
- package/dist/features/sync/tables/index.d.ts +10 -0
- package/dist/features/sync/tables/index.d.ts.map +1 -0
- package/dist/features/sync/tables/index.js +10 -0
- package/dist/features/sync/tables/index.js.map +1 -0
- package/dist/features/sync/tables/syncLogManager.d.ts +216 -0
- package/dist/features/sync/tables/syncLogManager.d.ts.map +1 -0
- package/dist/features/sync/tables/syncLogManager.js +456 -0
- package/dist/features/sync/tables/syncLogManager.js.map +1 -0
- package/dist/features/sync/transport/httpTransport.d.ts +123 -0
- package/dist/features/sync/transport/httpTransport.d.ts.map +1 -0
- package/dist/features/sync/transport/httpTransport.js +380 -0
- package/dist/features/sync/transport/httpTransport.js.map +1 -0
- package/dist/features/sync/transport/index.d.ts +12 -0
- package/dist/features/sync/transport/index.d.ts.map +1 -0
- package/dist/features/sync/transport/index.js +12 -0
- package/dist/features/sync/transport/index.js.map +1 -0
- package/dist/features/sync/transport/transport.d.ts +259 -0
- package/dist/features/sync/transport/transport.d.ts.map +1 -0
- package/dist/features/sync/transport/transport.js +153 -0
- package/dist/features/sync/transport/transport.js.map +1 -0
- package/dist/features/sync/transport/websocketTransport.d.ts +126 -0
- package/dist/features/sync/transport/websocketTransport.d.ts.map +1 -0
- package/dist/features/sync/transport/websocketTransport.js +374 -0
- package/dist/features/sync/transport/websocketTransport.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/package.json +21 -1
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WAL (Write-Ahead Logging) Checkpoint Manager.
|
|
3
|
+
*
|
|
4
|
+
* Manages SQLite WAL checkpointing for optimal performance and
|
|
5
|
+
* data durability. Handles automatic and manual checkpointing
|
|
6
|
+
* with configurable strategies.
|
|
7
|
+
*
|
|
8
|
+
* ## WAL Mode Benefits
|
|
9
|
+
* - Better concurrency (readers don't block writers)
|
|
10
|
+
* - Faster write performance
|
|
11
|
+
* - Atomic commits
|
|
12
|
+
*
|
|
13
|
+
* ## Checkpoint Strategies
|
|
14
|
+
* - PASSIVE: Non-blocking, best for background checkpointing
|
|
15
|
+
* - FULL: Blocks until complete, ensures WAL is cleared
|
|
16
|
+
* - RESTART: Blocks and restarts WAL, minimizes WAL growth
|
|
17
|
+
* - TRUNCATE: Most aggressive, truncates WAL file
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const manager = new WalCheckpointManager(adapter, {
|
|
22
|
+
* checkpointInterval: 300000,
|
|
23
|
+
* strategy: 'PASSIVE',
|
|
24
|
+
* maxWalSize: 50 * 1024 * 1024, // 50MB
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* await manager.start();
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// Default Configuration
|
|
32
|
+
// ============================================================================
|
|
33
|
+
const DEFAULT_CONFIG = {
|
|
34
|
+
checkpointInterval: 300000, // 5 minutes
|
|
35
|
+
strategy: 'PASSIVE',
|
|
36
|
+
maxWalSize: 50 * 1024 * 1024, // 50MB
|
|
37
|
+
pageSize: 4096,
|
|
38
|
+
autoCheckpointPages: 1000,
|
|
39
|
+
synchronous: 'NORMAL',
|
|
40
|
+
verbose: false,
|
|
41
|
+
};
|
|
42
|
+
// ============================================================================
|
|
43
|
+
// WAL Checkpoint Manager
|
|
44
|
+
// ============================================================================
|
|
45
|
+
/**
|
|
46
|
+
* WAL Checkpoint Manager.
|
|
47
|
+
*
|
|
48
|
+
* Manages automatic and manual WAL checkpointing for SQLite databases.
|
|
49
|
+
* Ensures optimal performance and data durability.
|
|
50
|
+
*/
|
|
51
|
+
export class WalCheckpointManager {
|
|
52
|
+
constructor(adapter, config = {}) {
|
|
53
|
+
this.adapter = adapter;
|
|
54
|
+
this.checkpointTimer = null;
|
|
55
|
+
this.lastCheckpoint = null;
|
|
56
|
+
this.totalCheckpoints = 0;
|
|
57
|
+
this.isRunning = false;
|
|
58
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
59
|
+
}
|
|
60
|
+
// ============================================================================
|
|
61
|
+
// Lifecycle Methods
|
|
62
|
+
// ============================================================================
|
|
63
|
+
/**
|
|
64
|
+
* Start the checkpoint manager.
|
|
65
|
+
*/
|
|
66
|
+
async start() {
|
|
67
|
+
if (this.isRunning) {
|
|
68
|
+
this.log('Already running');
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
// Configure WAL mode
|
|
72
|
+
await this.configureWalMode();
|
|
73
|
+
// Start periodic checkpointing
|
|
74
|
+
this.startCheckpointTimer();
|
|
75
|
+
this.isRunning = true;
|
|
76
|
+
this.log('WAL Checkpoint Manager started');
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Stop the checkpoint manager.
|
|
80
|
+
*/
|
|
81
|
+
async stop() {
|
|
82
|
+
if (!this.isRunning) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
// Stop timer
|
|
86
|
+
this.stopCheckpointTimer();
|
|
87
|
+
// Final checkpoint before stopping
|
|
88
|
+
try {
|
|
89
|
+
await this.checkpoint('FULL');
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
this.log(`Final checkpoint failed: ${error}`);
|
|
93
|
+
}
|
|
94
|
+
this.isRunning = false;
|
|
95
|
+
this.log('WAL Checkpoint Manager stopped');
|
|
96
|
+
}
|
|
97
|
+
// ============================================================================
|
|
98
|
+
// WAL Configuration
|
|
99
|
+
// ============================================================================
|
|
100
|
+
/**
|
|
101
|
+
* Configure WAL mode on the database.
|
|
102
|
+
*/
|
|
103
|
+
async configureWalMode() {
|
|
104
|
+
const pragmas = [
|
|
105
|
+
'PRAGMA journal_mode = WAL',
|
|
106
|
+
`PRAGMA synchronous = ${this.config.synchronous}`,
|
|
107
|
+
`PRAGMA wal_autocheckpoint = ${this.config.autoCheckpointPages}`,
|
|
108
|
+
`PRAGMA page_size = ${this.config.pageSize}`,
|
|
109
|
+
];
|
|
110
|
+
for (const pragma of pragmas) {
|
|
111
|
+
await this.adapter.exec(pragma);
|
|
112
|
+
}
|
|
113
|
+
this.log('WAL mode configured');
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Disable WAL mode and switch back to DELETE journal mode.
|
|
117
|
+
*/
|
|
118
|
+
async disableWalMode() {
|
|
119
|
+
// First, checkpoint everything
|
|
120
|
+
await this.checkpoint('TRUNCATE');
|
|
121
|
+
// Switch to DELETE mode
|
|
122
|
+
await this.adapter.exec('PRAGMA journal_mode = DELETE');
|
|
123
|
+
this.log('WAL mode disabled');
|
|
124
|
+
}
|
|
125
|
+
// ============================================================================
|
|
126
|
+
// Checkpoint Operations
|
|
127
|
+
// ============================================================================
|
|
128
|
+
/**
|
|
129
|
+
* Perform a WAL checkpoint.
|
|
130
|
+
*
|
|
131
|
+
* @param strategy - Checkpoint strategy (defaults to config strategy)
|
|
132
|
+
* @returns Checkpoint result
|
|
133
|
+
*/
|
|
134
|
+
async checkpoint(strategy) {
|
|
135
|
+
const effectiveStrategy = strategy ?? this.config.strategy;
|
|
136
|
+
const startTime = Date.now();
|
|
137
|
+
try {
|
|
138
|
+
// Get WAL status before checkpoint
|
|
139
|
+
const walBefore = await this.getWalFrameCount();
|
|
140
|
+
// Execute checkpoint
|
|
141
|
+
const result = await this.adapter.get(`PRAGMA wal_checkpoint(${effectiveStrategy})`);
|
|
142
|
+
// Get WAL status after checkpoint
|
|
143
|
+
const walAfter = await this.getWalFrameCount();
|
|
144
|
+
const checkpointResult = {
|
|
145
|
+
success: true,
|
|
146
|
+
strategy: effectiveStrategy,
|
|
147
|
+
walFramesBefore: walBefore,
|
|
148
|
+
walFramesAfter: walAfter,
|
|
149
|
+
framesCheckpointed: result?.checkpointed ?? 0,
|
|
150
|
+
busyFrames: result?.busy ?? 0,
|
|
151
|
+
durationMs: Date.now() - startTime,
|
|
152
|
+
timestamp: Date.now(),
|
|
153
|
+
};
|
|
154
|
+
this.lastCheckpoint = Date.now();
|
|
155
|
+
this.totalCheckpoints++;
|
|
156
|
+
this.log(`Checkpoint completed: ${checkpointResult.framesCheckpointed} frames ` +
|
|
157
|
+
`(${effectiveStrategy}, ${checkpointResult.durationMs}ms)`);
|
|
158
|
+
return checkpointResult;
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
162
|
+
this.log(`Checkpoint failed: ${errorMessage}`);
|
|
163
|
+
return {
|
|
164
|
+
success: false,
|
|
165
|
+
strategy: effectiveStrategy,
|
|
166
|
+
walFramesBefore: 0,
|
|
167
|
+
walFramesAfter: 0,
|
|
168
|
+
framesCheckpointed: 0,
|
|
169
|
+
busyFrames: 0,
|
|
170
|
+
durationMs: Date.now() - startTime,
|
|
171
|
+
timestamp: Date.now(),
|
|
172
|
+
error: errorMessage,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Force a full checkpoint that clears the WAL.
|
|
178
|
+
*/
|
|
179
|
+
async forceFullCheckpoint() {
|
|
180
|
+
return this.checkpoint('TRUNCATE');
|
|
181
|
+
}
|
|
182
|
+
// ============================================================================
|
|
183
|
+
// Timer Management
|
|
184
|
+
// ============================================================================
|
|
185
|
+
/**
|
|
186
|
+
* Start the automatic checkpoint timer.
|
|
187
|
+
*/
|
|
188
|
+
startCheckpointTimer() {
|
|
189
|
+
if (this.checkpointTimer) {
|
|
190
|
+
clearInterval(this.checkpointTimer);
|
|
191
|
+
}
|
|
192
|
+
this.checkpointTimer = setInterval(async () => {
|
|
193
|
+
try {
|
|
194
|
+
// Check if WAL has grown too large
|
|
195
|
+
const walSize = await this.getWalSize();
|
|
196
|
+
const strategy = walSize > this.config.maxWalSize ? 'FULL' : this.config.strategy;
|
|
197
|
+
await this.checkpoint(strategy);
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
this.log(`Periodic checkpoint failed: ${error}`);
|
|
201
|
+
}
|
|
202
|
+
}, this.config.checkpointInterval);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Stop the automatic checkpoint timer.
|
|
206
|
+
*/
|
|
207
|
+
stopCheckpointTimer() {
|
|
208
|
+
if (this.checkpointTimer) {
|
|
209
|
+
clearInterval(this.checkpointTimer);
|
|
210
|
+
this.checkpointTimer = null;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// ============================================================================
|
|
214
|
+
// Status & Monitoring
|
|
215
|
+
// ============================================================================
|
|
216
|
+
/**
|
|
217
|
+
* Get current WAL status.
|
|
218
|
+
*/
|
|
219
|
+
async getStatus() {
|
|
220
|
+
const journalMode = await this.adapter.get('PRAGMA journal_mode');
|
|
221
|
+
const walFrames = await this.getWalFrameCount();
|
|
222
|
+
const autoCheckpoint = await this.adapter.get('PRAGMA wal_autocheckpoint');
|
|
223
|
+
return {
|
|
224
|
+
enabled: journalMode?.journal_mode?.toLowerCase() === 'wal',
|
|
225
|
+
walSize: walFrames * this.config.pageSize,
|
|
226
|
+
walPages: walFrames,
|
|
227
|
+
lastCheckpoint: this.lastCheckpoint,
|
|
228
|
+
totalCheckpoints: this.totalCheckpoints,
|
|
229
|
+
autoCheckpointThreshold: autoCheckpoint?.wal_autocheckpoint ?? this.config.autoCheckpointPages,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Get current WAL size in bytes.
|
|
234
|
+
*/
|
|
235
|
+
async getWalSize() {
|
|
236
|
+
const frames = await this.getWalFrameCount();
|
|
237
|
+
return frames * this.config.pageSize;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Get current WAL frame count.
|
|
241
|
+
*/
|
|
242
|
+
async getWalFrameCount() {
|
|
243
|
+
// PRAGMA wal_checkpoint returns (busy, log, checkpointed)
|
|
244
|
+
// log is the total number of frames in the WAL file
|
|
245
|
+
const result = await this.adapter.get('PRAGMA wal_checkpoint(PASSIVE)');
|
|
246
|
+
return result?.log ?? 0;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Check if WAL mode is currently enabled.
|
|
250
|
+
*/
|
|
251
|
+
async isWalEnabled() {
|
|
252
|
+
const result = await this.adapter.get('PRAGMA journal_mode');
|
|
253
|
+
return result?.journal_mode?.toLowerCase() === 'wal';
|
|
254
|
+
}
|
|
255
|
+
// ============================================================================
|
|
256
|
+
// Utilities
|
|
257
|
+
// ============================================================================
|
|
258
|
+
/**
|
|
259
|
+
* Get checkpoint statistics.
|
|
260
|
+
*/
|
|
261
|
+
getStats() {
|
|
262
|
+
return {
|
|
263
|
+
totalCheckpoints: this.totalCheckpoints,
|
|
264
|
+
lastCheckpoint: this.lastCheckpoint,
|
|
265
|
+
isRunning: this.isRunning,
|
|
266
|
+
checkpointInterval: this.config.checkpointInterval,
|
|
267
|
+
strategy: this.config.strategy,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Update checkpoint configuration at runtime.
|
|
272
|
+
*/
|
|
273
|
+
updateConfig(newConfig) {
|
|
274
|
+
Object.assign(this.config, newConfig);
|
|
275
|
+
// Restart timer if interval changed and running
|
|
276
|
+
if (this.isRunning && newConfig.checkpointInterval !== undefined) {
|
|
277
|
+
this.startCheckpointTimer();
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Log a message if verbose mode is enabled.
|
|
282
|
+
*/
|
|
283
|
+
log(message) {
|
|
284
|
+
if (this.config.verbose) {
|
|
285
|
+
console.log(`[WalCheckpointManager] ${message}`);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
// ============================================================================
|
|
290
|
+
// Factory Function
|
|
291
|
+
// ============================================================================
|
|
292
|
+
/**
|
|
293
|
+
* Create a WAL Checkpoint Manager.
|
|
294
|
+
*
|
|
295
|
+
* @param adapter - Storage adapter to manage
|
|
296
|
+
* @param config - Checkpoint configuration
|
|
297
|
+
* @returns WalCheckpointManager instance
|
|
298
|
+
*/
|
|
299
|
+
export function createWalCheckpointManager(adapter, config = {}) {
|
|
300
|
+
return new WalCheckpointManager(adapter, config);
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=walCheckpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walCheckpoint.js","sourceRoot":"","sources":["../../../../src/adapters/electron/recovery/walCheckpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Window Management Module for Electron SQL Storage Adapter.
|
|
3
|
+
*
|
|
4
|
+
* Provides multi-window coordination and change broadcasting.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
export { WindowManager, createWindowManager, type WindowManagerConfig, type WindowManagerCallbacks, type RegisteredWindow, } from './windowManager';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/electron/window/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Window Management Module for Electron SQL Storage Adapter.
|
|
3
|
+
*
|
|
4
|
+
* Provides multi-window coordination and change broadcasting.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
export { WindowManager, createWindowManager, } from './windowManager.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapters/electron/window/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,aAAa,EACb,mBAAmB,GAIpB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,190 @@
|
|
|
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 type { DbChangeEvent } from '../ipc/types';
|
|
36
|
+
/**
|
|
37
|
+
* Window registration info.
|
|
38
|
+
*/
|
|
39
|
+
export interface RegisteredWindow {
|
|
40
|
+
/** Window ID */
|
|
41
|
+
id: number;
|
|
42
|
+
/** Window name/label */
|
|
43
|
+
name?: string;
|
|
44
|
+
/** Whether the window is currently focused */
|
|
45
|
+
isFocused: boolean;
|
|
46
|
+
/** When the window was registered */
|
|
47
|
+
registeredAt: number;
|
|
48
|
+
/** Last activity timestamp */
|
|
49
|
+
lastActivityAt: number;
|
|
50
|
+
/** Whether the window is subscribed to changes */
|
|
51
|
+
subscribedToChanges: boolean;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Window manager configuration.
|
|
55
|
+
*/
|
|
56
|
+
export interface WindowManagerConfig {
|
|
57
|
+
/** Broadcast changes to all windows (default: true) */
|
|
58
|
+
broadcastChanges?: boolean;
|
|
59
|
+
/** Track focused window for optimizations (default: true) */
|
|
60
|
+
trackFocusedWindow?: boolean;
|
|
61
|
+
/** Enable verbose logging (default: false) */
|
|
62
|
+
verbose?: boolean;
|
|
63
|
+
/** Exclude windows by name from broadcasts */
|
|
64
|
+
excludeWindows?: string[];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Window manager event callbacks.
|
|
68
|
+
*/
|
|
69
|
+
export interface WindowManagerCallbacks {
|
|
70
|
+
/** Called when a window is registered */
|
|
71
|
+
onWindowRegistered?: (window: RegisteredWindow) => void;
|
|
72
|
+
/** Called when a window is unregistered */
|
|
73
|
+
onWindowUnregistered?: (windowId: number) => void;
|
|
74
|
+
/** Called when focus changes */
|
|
75
|
+
onFocusChanged?: (windowId: number | null) => void;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Multi-Window Manager.
|
|
79
|
+
*
|
|
80
|
+
* Manages database access coordination across multiple Electron windows.
|
|
81
|
+
*/
|
|
82
|
+
export declare class WindowManager {
|
|
83
|
+
private readonly config;
|
|
84
|
+
private readonly callbacks;
|
|
85
|
+
private windows;
|
|
86
|
+
private focusedWindowId;
|
|
87
|
+
private isInitialized;
|
|
88
|
+
constructor(config?: WindowManagerConfig, callbacks?: WindowManagerCallbacks);
|
|
89
|
+
/**
|
|
90
|
+
* Initialize the window manager.
|
|
91
|
+
*/
|
|
92
|
+
initialize(): void;
|
|
93
|
+
/**
|
|
94
|
+
* Dispose the window manager.
|
|
95
|
+
*/
|
|
96
|
+
dispose(): void;
|
|
97
|
+
/**
|
|
98
|
+
* Set up focus tracking for all windows.
|
|
99
|
+
*/
|
|
100
|
+
private setupFocusTracking;
|
|
101
|
+
/**
|
|
102
|
+
* Register a window for management.
|
|
103
|
+
*/
|
|
104
|
+
registerWindow(window: BrowserWindow, name?: string): void;
|
|
105
|
+
/**
|
|
106
|
+
* Unregister a window.
|
|
107
|
+
*/
|
|
108
|
+
unregisterWindow(windowId: number): void;
|
|
109
|
+
/**
|
|
110
|
+
* Handle window focus event.
|
|
111
|
+
*/
|
|
112
|
+
private handleWindowFocus;
|
|
113
|
+
/**
|
|
114
|
+
* Handle window blur event.
|
|
115
|
+
*/
|
|
116
|
+
private handleWindowBlur;
|
|
117
|
+
/**
|
|
118
|
+
* Broadcast a database change to all windows.
|
|
119
|
+
*/
|
|
120
|
+
broadcastChange(change: Omit<DbChangeEvent, 'timestamp'>, excludeWindowId?: number): void;
|
|
121
|
+
/**
|
|
122
|
+
* Broadcast connection state change to all windows.
|
|
123
|
+
*/
|
|
124
|
+
broadcastConnectionState(state: 'open' | 'closed' | 'error', error?: Error): void;
|
|
125
|
+
/**
|
|
126
|
+
* Send a message to a specific window.
|
|
127
|
+
*/
|
|
128
|
+
sendToWindow(windowId: number, channel: string, data: unknown): boolean;
|
|
129
|
+
/**
|
|
130
|
+
* Send a message to the focused window.
|
|
131
|
+
*/
|
|
132
|
+
sendToFocusedWindow(channel: string, data: unknown): boolean;
|
|
133
|
+
/**
|
|
134
|
+
* Subscribe a window to database changes.
|
|
135
|
+
*/
|
|
136
|
+
subscribeWindow(windowId: number): void;
|
|
137
|
+
/**
|
|
138
|
+
* Unsubscribe a window from database changes.
|
|
139
|
+
*/
|
|
140
|
+
unsubscribeWindow(windowId: number): void;
|
|
141
|
+
/**
|
|
142
|
+
* Get all registered windows.
|
|
143
|
+
*/
|
|
144
|
+
getWindows(): RegisteredWindow[];
|
|
145
|
+
/**
|
|
146
|
+
* Get a specific window registration.
|
|
147
|
+
*/
|
|
148
|
+
getWindow(windowId: number): RegisteredWindow | undefined;
|
|
149
|
+
/**
|
|
150
|
+
* Get the focused window ID.
|
|
151
|
+
*/
|
|
152
|
+
getFocusedWindowId(): number | null;
|
|
153
|
+
/**
|
|
154
|
+
* Get the focused window registration.
|
|
155
|
+
*/
|
|
156
|
+
getFocusedWindow(): RegisteredWindow | undefined;
|
|
157
|
+
/**
|
|
158
|
+
* Get window count.
|
|
159
|
+
*/
|
|
160
|
+
getWindowCount(): number;
|
|
161
|
+
/**
|
|
162
|
+
* Check if a window is registered.
|
|
163
|
+
*/
|
|
164
|
+
hasWindow(windowId: number): boolean;
|
|
165
|
+
/**
|
|
166
|
+
* Update window activity timestamp.
|
|
167
|
+
*/
|
|
168
|
+
updateActivity(windowId: number): void;
|
|
169
|
+
/**
|
|
170
|
+
* Get statistics about windows.
|
|
171
|
+
*/
|
|
172
|
+
getStats(): {
|
|
173
|
+
totalWindows: number;
|
|
174
|
+
subscribedWindows: number;
|
|
175
|
+
focusedWindowId: number | null;
|
|
176
|
+
};
|
|
177
|
+
/**
|
|
178
|
+
* Log a message if verbose mode is enabled.
|
|
179
|
+
*/
|
|
180
|
+
private log;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Create a Window Manager.
|
|
184
|
+
*
|
|
185
|
+
* @param config - Manager configuration
|
|
186
|
+
* @param callbacks - Event callbacks
|
|
187
|
+
* @returns WindowManager instance
|
|
188
|
+
*/
|
|
189
|
+
export declare function createWindowManager(config?: WindowManagerConfig, callbacks?: WindowManagerCallbacks): WindowManager;
|
|
190
|
+
//# sourceMappingURL=windowManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"windowManager.d.ts","sourceRoot":"","sources":["../../../../src/adapters/electron/window/windowManager.ts"],"names":[],"mappings":"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"}
|