@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,243 @@
1
+ /**
2
+ * Device Registry and Presence Management.
3
+ *
4
+ * Manages device registration, presence tracking, and peer discovery
5
+ * for cross-platform sync.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import type { StorageAdapter } from '../../../core/contracts';
10
+ import type { VectorClock } from '../protocol/vectorClock';
11
+ /**
12
+ * Device types supported for sync.
13
+ */
14
+ export type DeviceType = 'electron' | 'capacitor' | 'browser' | 'server' | 'unknown';
15
+ /**
16
+ * Device presence status.
17
+ */
18
+ export type PresenceStatus = 'online' | 'away' | 'offline' | 'syncing';
19
+ /**
20
+ * Information about a registered device.
21
+ */
22
+ export interface DeviceInfo {
23
+ /** Unique device identifier */
24
+ deviceId: string;
25
+ /** Device type/platform */
26
+ deviceType: DeviceType;
27
+ /** Human-readable device name */
28
+ deviceName: string;
29
+ /** Device's current vector clock */
30
+ vectorClock: VectorClock;
31
+ /** When the device was first registered */
32
+ createdAt: number;
33
+ /** When the device was last seen */
34
+ lastSeenAt: number;
35
+ /** Current presence status */
36
+ presence: PresenceStatus;
37
+ /** Device capabilities */
38
+ capabilities: DeviceCapabilities;
39
+ /** Additional metadata */
40
+ metadata?: Record<string, unknown>;
41
+ }
42
+ /**
43
+ * Capabilities a device supports.
44
+ */
45
+ export interface DeviceCapabilities {
46
+ /** Supports real-time sync */
47
+ realTimeSync: boolean;
48
+ /** Supports background sync */
49
+ backgroundSync: boolean;
50
+ /** Supports push notifications */
51
+ pushNotifications: boolean;
52
+ /** Supports offline mode */
53
+ offlineMode: boolean;
54
+ /** Maximum batch size */
55
+ maxBatchSize: number;
56
+ }
57
+ /**
58
+ * Device registration options.
59
+ */
60
+ export interface DeviceRegistrationOptions {
61
+ /** Device name (auto-generated if not provided) */
62
+ name?: string;
63
+ /** Device type (auto-detected if not provided) */
64
+ type?: DeviceType;
65
+ /** Device capabilities */
66
+ capabilities?: Partial<DeviceCapabilities>;
67
+ /** Additional metadata */
68
+ metadata?: Record<string, unknown>;
69
+ }
70
+ /**
71
+ * Device presence event.
72
+ */
73
+ export interface PresenceEvent {
74
+ deviceId: string;
75
+ previousStatus: PresenceStatus;
76
+ currentStatus: PresenceStatus;
77
+ timestamp: number;
78
+ }
79
+ /**
80
+ * Device manager event types.
81
+ */
82
+ export type DeviceManagerEventType = 'deviceRegistered' | 'deviceUpdated' | 'deviceRemoved' | 'presenceChanged' | 'peerDiscovered' | 'peerLost';
83
+ /**
84
+ * Device manager event payloads.
85
+ */
86
+ export interface DeviceManagerEvents {
87
+ deviceRegistered: DeviceInfo;
88
+ deviceUpdated: {
89
+ device: DeviceInfo;
90
+ changes: Partial<DeviceInfo>;
91
+ };
92
+ deviceRemoved: {
93
+ deviceId: string;
94
+ reason: string;
95
+ };
96
+ presenceChanged: PresenceEvent;
97
+ peerDiscovered: DeviceInfo;
98
+ peerLost: {
99
+ deviceId: string;
100
+ lastSeenAt: number;
101
+ };
102
+ }
103
+ /**
104
+ * Device manager configuration.
105
+ */
106
+ export interface DeviceManagerOptions {
107
+ /** Storage adapter for persisting device registry */
108
+ adapter: StorageAdapter;
109
+ /** Presence timeout in milliseconds (default: 60000) */
110
+ presenceTimeout?: number;
111
+ /** Heartbeat interval in milliseconds (default: 30000) */
112
+ heartbeatInterval?: number;
113
+ /** Auto-detect device info */
114
+ autoDetect?: boolean;
115
+ /** Initial device name */
116
+ deviceName?: string;
117
+ }
118
+ /**
119
+ * Device registry and presence manager.
120
+ *
121
+ * Manages device registration, presence tracking, and peer discovery
122
+ * across all connected devices in a sync cluster.
123
+ *
124
+ * @example
125
+ * ```typescript
126
+ * const manager = new DeviceManager({
127
+ * adapter: db,
128
+ * deviceName: 'MacBook Pro',
129
+ * });
130
+ *
131
+ * await manager.initialize();
132
+ *
133
+ * // Get current device
134
+ * const thisDevice = manager.getCurrentDevice();
135
+ *
136
+ * // Get all known peers
137
+ * const peers = await manager.getPeers();
138
+ *
139
+ * // Listen for presence changes
140
+ * manager.on('presenceChanged', (event) => {
141
+ * console.log(`${event.deviceId} is now ${event.currentStatus}`);
142
+ * });
143
+ * ```
144
+ */
145
+ export declare class DeviceManager {
146
+ private _adapter;
147
+ private _options;
148
+ private _currentDevice;
149
+ private _peers;
150
+ private _heartbeatTimer;
151
+ private _listeners;
152
+ private _initialized;
153
+ constructor(options: DeviceManagerOptions);
154
+ /**
155
+ * Initialize the device manager.
156
+ */
157
+ initialize(): Promise<void>;
158
+ /**
159
+ * Get the current device.
160
+ */
161
+ getCurrentDevice(): DeviceInfo | null;
162
+ /**
163
+ * Get all known peer devices.
164
+ */
165
+ getPeers(): Promise<DeviceInfo[]>;
166
+ /**
167
+ * Get online peers only.
168
+ */
169
+ getOnlinePeers(): Promise<DeviceInfo[]>;
170
+ /**
171
+ * Get a specific device by ID.
172
+ */
173
+ getDevice(deviceId: string): Promise<DeviceInfo | null>;
174
+ /**
175
+ * Update the current device's presence.
176
+ */
177
+ updatePresence(status: PresenceStatus): Promise<void>;
178
+ /**
179
+ * Update the current device's vector clock.
180
+ */
181
+ updateVectorClock(clock: VectorClock): Promise<void>;
182
+ /**
183
+ * Register or update a peer device.
184
+ */
185
+ registerPeer(peerInfo: DeviceInfo): Promise<void>;
186
+ /**
187
+ * Remove a device from the registry.
188
+ */
189
+ removeDevice(deviceId: string, reason?: string): Promise<void>;
190
+ /**
191
+ * Check for stale peers and update their presence.
192
+ */
193
+ checkStaleDevices(): Promise<void>;
194
+ /**
195
+ * Listen for device manager events.
196
+ */
197
+ on<T extends DeviceManagerEventType>(event: T, listener: (data: DeviceManagerEvents[T]) => void): () => void;
198
+ /**
199
+ * Dispose of the device manager.
200
+ */
201
+ dispose(): Promise<void>;
202
+ /**
203
+ * Emit an event to listeners.
204
+ */
205
+ private _emit;
206
+ /**
207
+ * Ensure device tables exist.
208
+ */
209
+ private _ensureTables;
210
+ /**
211
+ * Initialize the current device.
212
+ */
213
+ private _initializeCurrentDevice;
214
+ /**
215
+ * Load stored device ID.
216
+ */
217
+ private _loadStoredDeviceId;
218
+ /**
219
+ * Store device ID for persistence.
220
+ */
221
+ private _storeDeviceId;
222
+ /**
223
+ * Load a device from the database.
224
+ */
225
+ private _loadDevice;
226
+ /**
227
+ * Save a device to the database.
228
+ */
229
+ private _saveDevice;
230
+ /**
231
+ * Load all peer devices.
232
+ */
233
+ private _loadPeers;
234
+ /**
235
+ * Start heartbeat timer.
236
+ */
237
+ private _startHeartbeat;
238
+ }
239
+ /**
240
+ * Create a device manager instance.
241
+ */
242
+ export declare const createDeviceManager: (options: DeviceManagerOptions) => DeviceManager;
243
+ //# sourceMappingURL=deviceManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceManager.d.ts","sourceRoot":"","sources":["../../../../src/features/sync/devices/deviceManager.ts"],"names":[],"mappings":"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"}