@agelum/backend 0.1.0

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 (106) hide show
  1. package/README.md +401 -0
  2. package/dist/client/hooks.d.ts +65 -0
  3. package/dist/client/hooks.d.ts.map +1 -0
  4. package/dist/client/hooks.js +339 -0
  5. package/dist/client/hooks.js.map +1 -0
  6. package/dist/client/index.d.ts +10 -0
  7. package/dist/client/index.d.ts.map +1 -0
  8. package/dist/client/index.js +37 -0
  9. package/dist/client/index.js.map +1 -0
  10. package/dist/client/manager.d.ts +137 -0
  11. package/dist/client/manager.d.ts.map +1 -0
  12. package/dist/client/manager.js +292 -0
  13. package/dist/client/manager.js.map +1 -0
  14. package/dist/client/provider.d.ts +25 -0
  15. package/dist/client/provider.d.ts.map +1 -0
  16. package/dist/client/provider.js +121 -0
  17. package/dist/client/provider.js.map +1 -0
  18. package/dist/client/revalidation.d.ts +101 -0
  19. package/dist/client/revalidation.d.ts.map +1 -0
  20. package/dist/client/revalidation.js +313 -0
  21. package/dist/client/revalidation.js.map +1 -0
  22. package/dist/client/session.d.ts +84 -0
  23. package/dist/client/session.d.ts.map +1 -0
  24. package/dist/client/session.js +186 -0
  25. package/dist/client/session.js.map +1 -0
  26. package/dist/client/sse-client.d.ts +81 -0
  27. package/dist/client/sse-client.d.ts.map +1 -0
  28. package/dist/client/sse-client.js +221 -0
  29. package/dist/client/sse-client.js.map +1 -0
  30. package/dist/client/storage.d.ts +124 -0
  31. package/dist/client/storage.d.ts.map +1 -0
  32. package/dist/client/storage.js +441 -0
  33. package/dist/client/storage.js.map +1 -0
  34. package/dist/client/trpc.d.ts +12 -0
  35. package/dist/client/trpc.d.ts.map +1 -0
  36. package/dist/client/trpc.js +36 -0
  37. package/dist/client/trpc.js.map +1 -0
  38. package/dist/client/types.d.ts +10 -0
  39. package/dist/client/types.d.ts.map +1 -0
  40. package/dist/client/types.js +3 -0
  41. package/dist/client/types.js.map +1 -0
  42. package/dist/client.d.ts +12 -0
  43. package/dist/client.d.ts.map +1 -0
  44. package/dist/client.js +26 -0
  45. package/dist/client.js.map +1 -0
  46. package/dist/config/schema.d.ts +261 -0
  47. package/dist/config/schema.d.ts.map +1 -0
  48. package/dist/config/schema.js +69 -0
  49. package/dist/config/schema.js.map +1 -0
  50. package/dist/core/analyzer.d.ts +15 -0
  51. package/dist/core/analyzer.d.ts.map +1 -0
  52. package/dist/core/analyzer.js +217 -0
  53. package/dist/core/analyzer.js.map +1 -0
  54. package/dist/core/driver.d.ts +7 -0
  55. package/dist/core/driver.d.ts.map +1 -0
  56. package/dist/core/driver.js +261 -0
  57. package/dist/core/driver.js.map +1 -0
  58. package/dist/core/function.d.ts +97 -0
  59. package/dist/core/function.d.ts.map +1 -0
  60. package/dist/core/function.js +252 -0
  61. package/dist/core/function.js.map +1 -0
  62. package/dist/core/sse.d.ts +98 -0
  63. package/dist/core/sse.d.ts.map +1 -0
  64. package/dist/core/sse.js +331 -0
  65. package/dist/core/sse.js.map +1 -0
  66. package/dist/core/types.d.ts +179 -0
  67. package/dist/core/types.d.ts.map +1 -0
  68. package/dist/core/types.js +3 -0
  69. package/dist/core/types.js.map +1 -0
  70. package/dist/examples/teamhub-integration.d.ts +56 -0
  71. package/dist/examples/teamhub-integration.d.ts.map +1 -0
  72. package/dist/examples/teamhub-integration.js +188 -0
  73. package/dist/examples/teamhub-integration.js.map +1 -0
  74. package/dist/index.d.ts +39 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +57 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/providers/localStorage.d.ts +13 -0
  79. package/dist/providers/localStorage.d.ts.map +1 -0
  80. package/dist/providers/localStorage.js +64 -0
  81. package/dist/providers/localStorage.js.map +1 -0
  82. package/dist/providers/memory.d.ts +13 -0
  83. package/dist/providers/memory.d.ts.map +1 -0
  84. package/dist/providers/memory.js +40 -0
  85. package/dist/providers/memory.js.map +1 -0
  86. package/dist/providers/redis.d.ts +14 -0
  87. package/dist/providers/redis.d.ts.map +1 -0
  88. package/dist/providers/redis.js +36 -0
  89. package/dist/providers/redis.js.map +1 -0
  90. package/dist/server.d.ts +17 -0
  91. package/dist/server.d.ts.map +1 -0
  92. package/dist/server.js +34 -0
  93. package/dist/server.js.map +1 -0
  94. package/dist/trpc/hooks.d.ts +82 -0
  95. package/dist/trpc/hooks.d.ts.map +1 -0
  96. package/dist/trpc/hooks.js +282 -0
  97. package/dist/trpc/hooks.js.map +1 -0
  98. package/dist/trpc/router.d.ts +75 -0
  99. package/dist/trpc/router.d.ts.map +1 -0
  100. package/dist/trpc/router.js +160 -0
  101. package/dist/trpc/router.js.map +1 -0
  102. package/dist/trpc/types.d.ts +105 -0
  103. package/dist/trpc/types.d.ts.map +1 -0
  104. package/dist/trpc/types.js +6 -0
  105. package/dist/trpc/types.js.map +1 -0
  106. package/package.json +87 -0
@@ -0,0 +1,339 @@
1
+ "use strict";
2
+ /**
3
+ * React hooks for @drizzle/reactive
4
+ * Provides reactive data access with automatic caching and real-time updates
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.initializeReactiveClient = initializeReactiveClient;
8
+ exports.useReactive = useReactive;
9
+ exports.useReactivePriorities = useReactivePriorities;
10
+ exports.useReactiveStats = useReactiveStats;
11
+ exports.useReactiveRefresh = useReactiveRefresh;
12
+ exports.useRevalidationStats = useRevalidationStats;
13
+ exports.useReactiveInvalidation = useReactiveInvalidation;
14
+ exports.useReactiveQuery = useReactiveQuery;
15
+ exports.useReactiveConnection = useReactiveConnection;
16
+ const react_1 = require("react");
17
+ const manager_1 = require("./manager");
18
+ // Global client manager instance
19
+ let globalClientManager = null;
20
+ /**
21
+ * Get or create the global client manager
22
+ */
23
+ function getClientManager() {
24
+ if (!globalClientManager) {
25
+ throw new Error('Reactive client not initialized. Call initializeReactiveClient first.');
26
+ }
27
+ return globalClientManager;
28
+ }
29
+ /**
30
+ * Initialize the reactive client
31
+ * Call this once at app startup
32
+ */
33
+ function initializeReactiveClient(organizationId, config, revalidateFn) {
34
+ console.log('🚀 Initializing reactive client for org:', organizationId);
35
+ if (globalClientManager) {
36
+ console.log('⚠️ Client already initialized, cleaning up previous instance');
37
+ globalClientManager.cleanup();
38
+ }
39
+ globalClientManager = (0, manager_1.createReactiveClientManager)({
40
+ organizationId,
41
+ config,
42
+ onRevalidate: revalidateFn,
43
+ onInvalidation: (event) => {
44
+ console.log(`[ReactiveClient] Received invalidation for table: ${event.table}`);
45
+ },
46
+ });
47
+ // Expose client manager to window for testing purposes
48
+ if (typeof window !== 'undefined') {
49
+ ;
50
+ window.__reactiveClientManager = globalClientManager;
51
+ console.log('🔧 [ReactiveClient] Client manager exposed to window for testing');
52
+ }
53
+ console.log('✅ Reactive client initialized successfully for org:', organizationId);
54
+ }
55
+ /**
56
+ * Main hook for reactive data access
57
+ * Automatically handles caching, real-time updates, and revalidation
58
+ */
59
+ function useReactive(queryKey, input, options) {
60
+ const [data, setData] = (0, react_1.useState)(undefined);
61
+ const [isLoading, setIsLoading] = (0, react_1.useState)(true);
62
+ const [isStale, setIsStale] = (0, react_1.useState)(false);
63
+ const [error, setError] = (0, react_1.useState)(null);
64
+ const clientManager = getClientManager();
65
+ const isInitialMount = (0, react_1.useRef)(true);
66
+ // Handle enabled option
67
+ const enabled = options?.enabled !== false;
68
+ // Compose an effective cache key that includes serialized input
69
+ const inputKey = typeof input === 'undefined' ? '' : `::${JSON.stringify(input)}`;
70
+ const effectiveKey = `${queryKey}${inputKey}`;
71
+ // Register this hook as active
72
+ (0, react_1.useEffect)(() => {
73
+ if (!enabled) {
74
+ return;
75
+ }
76
+ const cleanup = clientManager.registerActiveHook(effectiveKey, []);
77
+ return cleanup;
78
+ }, [effectiveKey, clientManager, enabled]);
79
+ // Load data on mount and when queryKey changes
80
+ (0, react_1.useEffect)(() => {
81
+ if (!enabled) {
82
+ setIsLoading(false);
83
+ return;
84
+ }
85
+ const loadData = async () => {
86
+ try {
87
+ setIsLoading(true);
88
+ setError(null);
89
+ // Check ReactiveStorage cache first (immediate display)
90
+ const cached = clientManager.getCachedData(effectiveKey);
91
+ // Reduced logging - only log cache misses
92
+ if (!cached) {
93
+ console.log(`🔍 [useReactive] Cache miss for ${queryKey}`);
94
+ }
95
+ if (cached) {
96
+ try {
97
+ const now = Date.now();
98
+ const cacheAge = now - cached.lastRevalidated;
99
+ const minRevalidationTime = 5 * 60 * 1000; // 5 minutes minimum between revalidations
100
+ // Reduced logging - only log when cache is stale
101
+ if (cached.isStale) {
102
+ console.log(`📊 [useReactive] Cache is stale for ${queryKey}`);
103
+ }
104
+ // Show cached data immediately
105
+ setData(cached.data);
106
+ setIsStale(cached.isStale || false);
107
+ // Only revalidate if cache is old enough (avoid excessive revalidation)
108
+ if (cacheAge > minRevalidationTime) {
109
+ console.log(`🔄 [useReactive] Revalidating stale cache for ${queryKey}`);
110
+ // Trigger revalidation in background
111
+ clientManager
112
+ .revalidateQuery(effectiveKey)
113
+ .then((result) => {
114
+ if (result !== undefined) {
115
+ setData(result);
116
+ setIsStale(false);
117
+ // Update ReactiveStorage with fresh data
118
+ clientManager.registerQuery(effectiveKey, [], result);
119
+ // Reduced logging - only log significant updates
120
+ }
121
+ })
122
+ .catch((error) => {
123
+ console.warn(`[useReactive] Background revalidation failed:`, error);
124
+ // Keep showing cached data even if revalidation fails
125
+ });
126
+ }
127
+ else {
128
+ // Reduced logging - only log when cache is stale
129
+ }
130
+ setIsLoading(false);
131
+ isInitialMount.current = false;
132
+ return;
133
+ }
134
+ catch (parseError) {
135
+ console.warn('⚠️ Failed to parse cached data:', parseError);
136
+ // Continue with revalidation if cache is corrupted
137
+ }
138
+ }
139
+ // No cache or corrupted cache - trigger immediate fetch
140
+ console.log(`[useReactive] No cache for ${queryKey}, fetching...`);
141
+ const result = await clientManager.revalidateQuery(effectiveKey);
142
+ if (result !== undefined) {
143
+ setData(result);
144
+ setIsStale(false);
145
+ // Store in ReactiveStorage for future use
146
+ clientManager.registerQuery(effectiveKey, [], result);
147
+ // Reduced logging - only log significant updates
148
+ }
149
+ setIsLoading(false);
150
+ isInitialMount.current = false;
151
+ }
152
+ catch (err) {
153
+ // On error, don't register cache; surface error and keep prior cache visible
154
+ setError(err);
155
+ setIsLoading(false);
156
+ isInitialMount.current = false;
157
+ }
158
+ };
159
+ loadData();
160
+ }, [effectiveKey, clientManager]);
161
+ const refetch = (0, react_1.useCallback)(async () => {
162
+ if (!enabled) {
163
+ return;
164
+ }
165
+ try {
166
+ setIsLoading(true);
167
+ setError(null);
168
+ // Reduced logging - only log when there are issues
169
+ // Trigger manual revalidation
170
+ await clientManager.revalidateQuery(effectiveKey);
171
+ // Update stale state
172
+ setIsStale(false);
173
+ setIsLoading(false);
174
+ }
175
+ catch (err) {
176
+ setError(err);
177
+ setIsLoading(false);
178
+ }
179
+ }, [effectiveKey, clientManager, enabled]);
180
+ return {
181
+ data,
182
+ isLoading,
183
+ isStale,
184
+ error,
185
+ refetch,
186
+ };
187
+ }
188
+ /**
189
+ * Optional page-level priority hints for better UX
190
+ */
191
+ function useReactivePriorities(priorities) {
192
+ (0, react_1.useEffect)(() => {
193
+ // Reduced logging - only log when there are issues
194
+ // In a full implementation, this would:
195
+ // 1. Pre-warm cache for these queries
196
+ // 2. Subscribe to their invalidation events
197
+ // 3. Set higher revalidation priority
198
+ return () => {
199
+ // Reduced logging - only log when there are issues
200
+ };
201
+ }, [priorities.join(',')]);
202
+ }
203
+ /**
204
+ * Hook to get current session statistics
205
+ */
206
+ function useReactiveStats() {
207
+ const [stats, setStats] = (0, react_1.useState)(null);
208
+ const clientManager = getClientManager();
209
+ (0, react_1.useEffect)(() => {
210
+ const updateStats = () => {
211
+ setStats(clientManager.getSessionStats());
212
+ };
213
+ // Update stats immediately
214
+ updateStats();
215
+ // Update stats every 5 seconds
216
+ const interval = setInterval(updateStats, 5000);
217
+ return () => clearInterval(interval);
218
+ }, [clientManager]);
219
+ return stats;
220
+ }
221
+ /**
222
+ * Hook to manually trigger cache refresh
223
+ */
224
+ function useReactiveRefresh() {
225
+ const clientManager = getClientManager();
226
+ return (0, react_1.useCallback)(async () => {
227
+ // Trigger revalidation for all active queries
228
+ const activeHooks = clientManager.getStorageStats()?.queries || {};
229
+ const activeQueryKeys = Object.keys(activeHooks);
230
+ console.log(`[useReactiveRefresh] Refreshing ${activeQueryKeys.length} active queries`);
231
+ // Revalidate all active queries
232
+ await Promise.allSettled(activeQueryKeys.map((queryKey) => clientManager.revalidateQuery(queryKey)));
233
+ }, [clientManager]);
234
+ }
235
+ /**
236
+ * Hook to get revalidation statistics and performance metrics
237
+ */
238
+ function useRevalidationStats() {
239
+ const [stats, setStats] = (0, react_1.useState)(null);
240
+ const clientManager = getClientManager();
241
+ (0, react_1.useEffect)(() => {
242
+ const updateStats = () => {
243
+ const revalidationStats = clientManager.getRevalidationStats();
244
+ setStats(revalidationStats);
245
+ };
246
+ updateStats();
247
+ const interval = setInterval(updateStats, 2000);
248
+ return () => clearInterval(interval);
249
+ }, [clientManager]);
250
+ return stats;
251
+ }
252
+ /**
253
+ * Hook to handle invalidation events
254
+ */
255
+ function useReactiveInvalidation(callback) {
256
+ const clientManager = getClientManager();
257
+ (0, react_1.useEffect)(() => {
258
+ // In a full implementation, this would subscribe to invalidation events
259
+ console.log('[useReactiveInvalidation] Setting up invalidation listener');
260
+ return () => {
261
+ console.log('[useReactiveInvalidation] Cleaning up invalidation listener');
262
+ };
263
+ }, [callback, clientManager]);
264
+ }
265
+ /**
266
+ * Hook for manual queries with dynamic parameters
267
+ * Unlike useReactive, this hook doesn't auto-fetch and allows changing parameters on each call
268
+ */
269
+ function useReactiveQuery(queryKey) {
270
+ const [data, setData] = (0, react_1.useState)(undefined);
271
+ const [error, setError] = (0, react_1.useState)(null);
272
+ const [isLoading, setIsLoading] = (0, react_1.useState)(false);
273
+ const [lastVariables, setLastVariables] = (0, react_1.useState)(undefined);
274
+ const clientManager = getClientManager();
275
+ const executeQuery = (0, react_1.useCallback)(async (variables) => {
276
+ setIsLoading(true);
277
+ setError(null);
278
+ try {
279
+ console.log(`[useReactiveQuery] Executing ${queryKey}`, variables);
280
+ // Compose cache key with variables
281
+ const inputKey = typeof variables === 'undefined'
282
+ ? ''
283
+ : `::${JSON.stringify(variables)}`;
284
+ const effectiveKey = `${queryKey}${inputKey}`;
285
+ // Execute the query through the client manager
286
+ const result = await clientManager.revalidateQuery(effectiveKey);
287
+ setData(result);
288
+ setLastVariables(variables);
289
+ console.log(`✅ [useReactiveQuery] ${queryKey} completed successfully`);
290
+ return result;
291
+ }
292
+ catch (err) {
293
+ const error = err;
294
+ setError(error);
295
+ console.error(`❌ [useReactiveQuery] ${queryKey} failed:`, error);
296
+ throw error;
297
+ }
298
+ finally {
299
+ setIsLoading(false);
300
+ }
301
+ }, [queryKey, clientManager]);
302
+ const refetch = (0, react_1.useCallback)(async (variables) => {
303
+ const varsToUse = variables || lastVariables;
304
+ if (!varsToUse) {
305
+ throw new Error('No variables provided for refetch and no previous variables stored');
306
+ }
307
+ return executeQuery(varsToUse);
308
+ }, [executeQuery, lastVariables]);
309
+ return {
310
+ data,
311
+ isLoading,
312
+ error,
313
+ refetch,
314
+ run: executeQuery,
315
+ };
316
+ }
317
+ /**
318
+ * Hook to get connection status
319
+ */
320
+ function useReactiveConnection() {
321
+ const [status, setStatus] = (0, react_1.useState)('disconnected');
322
+ const clientManager = getClientManager();
323
+ (0, react_1.useEffect)(() => {
324
+ const updateStatus = () => {
325
+ setStatus(clientManager.getConnectionStatus());
326
+ };
327
+ updateStatus();
328
+ const interval = setInterval(updateStatus, 1000);
329
+ return () => clearInterval(interval);
330
+ }, [clientManager]);
331
+ return {
332
+ status,
333
+ isConnected: status === 'connected',
334
+ isConnecting: status === 'connecting',
335
+ isDisconnected: status === 'disconnected',
336
+ reconnect: () => clientManager.reconnectSSE(),
337
+ };
338
+ }
339
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/client/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Client-side reactive database features
3
+ */
4
+ export { ReactiveStorage, createReactiveStorage } from './storage';
5
+ export { SimpleSessionManager, createSimpleSessionManager, revalidateOnPageLoad, type SessionInfo, type QueryRegistry, type QueryRegistryEntry, } from './session';
6
+ export { ReactiveClientManager, createReactiveClientManager, type ReactiveManagerOptions, } from './manager';
7
+ export { useReactive, useReactiveQuery, useReactivePriorities, useReactiveStats, useReactiveRefresh, useReactiveInvalidation, useRevalidationStats, useReactiveConnection, initializeReactiveClient, } from './hooks';
8
+ export { SmartRevalidationEngine, createSmartRevalidationEngine, type RevalidationStrategy, type RevalidationOptions, type RevalidationResult, } from './revalidation';
9
+ export { ReactiveProvider } from './provider';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAClE,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,kBAAkB,GACxB,MAAM,WAAW,CAAA;AAGlB,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,KAAK,sBAAsB,GAC5B,MAAM,WAAW,CAAA;AAGlB,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ /**
3
+ * Client-side reactive database features
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ReactiveProvider = exports.createSmartRevalidationEngine = exports.SmartRevalidationEngine = exports.initializeReactiveClient = exports.useReactiveConnection = exports.useRevalidationStats = exports.useReactiveInvalidation = exports.useReactiveRefresh = exports.useReactiveStats = exports.useReactivePriorities = exports.useReactiveQuery = exports.useReactive = exports.createReactiveClientManager = exports.ReactiveClientManager = exports.revalidateOnPageLoad = exports.createSimpleSessionManager = exports.SimpleSessionManager = exports.createReactiveStorage = exports.ReactiveStorage = void 0;
7
+ // Storage and session management
8
+ var storage_1 = require("./storage");
9
+ Object.defineProperty(exports, "ReactiveStorage", { enumerable: true, get: function () { return storage_1.ReactiveStorage; } });
10
+ Object.defineProperty(exports, "createReactiveStorage", { enumerable: true, get: function () { return storage_1.createReactiveStorage; } });
11
+ var session_1 = require("./session");
12
+ Object.defineProperty(exports, "SimpleSessionManager", { enumerable: true, get: function () { return session_1.SimpleSessionManager; } });
13
+ Object.defineProperty(exports, "createSimpleSessionManager", { enumerable: true, get: function () { return session_1.createSimpleSessionManager; } });
14
+ Object.defineProperty(exports, "revalidateOnPageLoad", { enumerable: true, get: function () { return session_1.revalidateOnPageLoad; } });
15
+ // Client manager
16
+ var manager_1 = require("./manager");
17
+ Object.defineProperty(exports, "ReactiveClientManager", { enumerable: true, get: function () { return manager_1.ReactiveClientManager; } });
18
+ Object.defineProperty(exports, "createReactiveClientManager", { enumerable: true, get: function () { return manager_1.createReactiveClientManager; } });
19
+ // React hooks
20
+ var hooks_1 = require("./hooks");
21
+ Object.defineProperty(exports, "useReactive", { enumerable: true, get: function () { return hooks_1.useReactive; } });
22
+ Object.defineProperty(exports, "useReactiveQuery", { enumerable: true, get: function () { return hooks_1.useReactiveQuery; } });
23
+ Object.defineProperty(exports, "useReactivePriorities", { enumerable: true, get: function () { return hooks_1.useReactivePriorities; } });
24
+ Object.defineProperty(exports, "useReactiveStats", { enumerable: true, get: function () { return hooks_1.useReactiveStats; } });
25
+ Object.defineProperty(exports, "useReactiveRefresh", { enumerable: true, get: function () { return hooks_1.useReactiveRefresh; } });
26
+ Object.defineProperty(exports, "useReactiveInvalidation", { enumerable: true, get: function () { return hooks_1.useReactiveInvalidation; } });
27
+ Object.defineProperty(exports, "useRevalidationStats", { enumerable: true, get: function () { return hooks_1.useRevalidationStats; } });
28
+ Object.defineProperty(exports, "useReactiveConnection", { enumerable: true, get: function () { return hooks_1.useReactiveConnection; } });
29
+ Object.defineProperty(exports, "initializeReactiveClient", { enumerable: true, get: function () { return hooks_1.initializeReactiveClient; } });
30
+ // Smart revalidation
31
+ var revalidation_1 = require("./revalidation");
32
+ Object.defineProperty(exports, "SmartRevalidationEngine", { enumerable: true, get: function () { return revalidation_1.SmartRevalidationEngine; } });
33
+ Object.defineProperty(exports, "createSmartRevalidationEngine", { enumerable: true, get: function () { return revalidation_1.createSmartRevalidationEngine; } });
34
+ // Provider and types
35
+ var provider_1 = require("./provider");
36
+ Object.defineProperty(exports, "ReactiveProvider", { enumerable: true, get: function () { return provider_1.ReactiveProvider; } });
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iCAAiC;AACjC,qCAAkE;AAAzD,0GAAA,eAAe,OAAA;AAAE,gHAAA,qBAAqB,OAAA;AAC/C,qCAOkB;AANhB,+GAAA,oBAAoB,OAAA;AACpB,qHAAA,0BAA0B,OAAA;AAC1B,+GAAA,oBAAoB,OAAA;AAMtB,iBAAiB;AACjB,qCAIkB;AAHhB,gHAAA,qBAAqB,OAAA;AACrB,sHAAA,2BAA2B,OAAA;AAI7B,cAAc;AACd,iCAUgB;AATd,oGAAA,WAAW,OAAA;AACX,yGAAA,gBAAgB,OAAA;AAChB,8GAAA,qBAAqB,OAAA;AACrB,yGAAA,gBAAgB,OAAA;AAChB,2GAAA,kBAAkB,OAAA;AAClB,gHAAA,uBAAuB,OAAA;AACvB,6GAAA,oBAAoB,OAAA;AACpB,8GAAA,qBAAqB,OAAA;AACrB,iHAAA,wBAAwB,OAAA;AAG1B,qBAAqB;AACrB,+CAMuB;AALrB,uHAAA,uBAAuB,OAAA;AACvB,6HAAA,6BAA6B,OAAA;AAM/B,qBAAqB;AACrB,uCAA6C;AAApC,4GAAA,gBAAgB,OAAA"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Client-side reactive manager
3
+ * Coordinates storage, session recovery, and real-time synchronization
4
+ */
5
+ import { type SSEClientOptions } from './sse-client';
6
+ import type { ReactiveConfig, InvalidationEvent } from '../core/types';
7
+ export interface ReactiveManagerOptions {
8
+ organizationId: string;
9
+ config: ReactiveConfig;
10
+ onInvalidation?: (event: InvalidationEvent) => void;
11
+ onRevalidate?: (queryKey: string) => Promise<any>;
12
+ sseOptions?: Partial<SSEClientOptions>;
13
+ }
14
+ export declare class ReactiveClientManager {
15
+ private storage;
16
+ private sessionManager;
17
+ private revalidationEngine;
18
+ private sseClient;
19
+ private config;
20
+ private organizationId;
21
+ private onInvalidation?;
22
+ private onRevalidate?;
23
+ private visibilityListener?;
24
+ private beforeUnloadListener?;
25
+ constructor(options: ReactiveManagerOptions);
26
+ /**
27
+ * Get organization ID
28
+ */
29
+ get currentOrganizationId(): string;
30
+ /**
31
+ * Register a query execution
32
+ */
33
+ registerQuery(queryKey: string, dependencies: string[], data?: any, ttl?: number): void;
34
+ /**
35
+ * Register an active React hook
36
+ */
37
+ registerActiveHook(queryKey: string, dependencies: string[]): () => void;
38
+ /**
39
+ * Get cached data for a query
40
+ */
41
+ getCachedData(queryKey: string): {
42
+ data: any;
43
+ isStale: boolean;
44
+ lastRevalidated: number;
45
+ } | null;
46
+ /**
47
+ * Handle invalidation event from server
48
+ */
49
+ private handleInvalidation;
50
+ /**
51
+ * Find queries affected by table changes
52
+ */
53
+ private findAffectedQueries;
54
+ /**
55
+ * Handle connection status changes
56
+ */
57
+ private handleConnectionStatus;
58
+ /**
59
+ * Revalidate a specific query
60
+ */
61
+ revalidateQuery(queryKey: string): Promise<any>;
62
+ /**
63
+ * Initialize SSE connection for real-time updates
64
+ */
65
+ private initializeSSEConnection;
66
+ /**
67
+ * Get SSE connection statistics
68
+ */
69
+ getSSEStats(): import("./sse-client").SSEClientStats | null;
70
+ /**
71
+ * Manually reconnect SSE
72
+ */
73
+ reconnectSSE(): void;
74
+ /**
75
+ * Set up browser event listeners
76
+ */
77
+ private setupEventListeners;
78
+ /**
79
+ * Remove event listeners
80
+ */
81
+ private removeEventListeners;
82
+ /**
83
+ * Check for session gap on initial load (simple approach as per spec)
84
+ */
85
+ private checkInitialSession;
86
+ /**
87
+ * Handle page visibility change
88
+ */
89
+ private handleVisibilityChange;
90
+ /**
91
+ * Get current connection status
92
+ */
93
+ getConnectionStatus(): 'connected' | 'connecting' | 'disconnected';
94
+ /**
95
+ * Check if real-time is enabled and connected
96
+ */
97
+ isRealtimeEnabled(): boolean;
98
+ /**
99
+ * Get storage statistics
100
+ */
101
+ getStorageStats(): import("../core/types").QueryRegistry | null;
102
+ /**
103
+ * Get session statistics
104
+ */
105
+ getSessionStats(): {
106
+ sessionAge: number;
107
+ timeSinceLastSync: number;
108
+ realtimeConnected: boolean;
109
+ totalQueries: number;
110
+ staleQueries: number;
111
+ };
112
+ /**
113
+ * Get revalidation statistics
114
+ */
115
+ getRevalidationStats(): {
116
+ activeRevalidations: number;
117
+ queuedQueries: number;
118
+ activeHooks: number;
119
+ recentActivity: {
120
+ queryKey: string;
121
+ timestamp: number;
122
+ }[];
123
+ };
124
+ /**
125
+ * Mark a query as stale for testing purposes
126
+ */
127
+ markQueryStaleForTesting(queryKey: string): void;
128
+ /**
129
+ * Cleanup resources
130
+ */
131
+ cleanup(): void;
132
+ }
133
+ /**
134
+ * Create reactive client manager
135
+ */
136
+ export declare function createReactiveClientManager(options: ReactiveManagerOptions): ReactiveClientManager;
137
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/client/manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEtE,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,cAAc,CAAA;IACtB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACnD,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACjD,UAAU,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;CACvC;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAoC;IAC3D,OAAO,CAAC,YAAY,CAAC,CAAoC;IAGzD,OAAO,CAAC,kBAAkB,CAAC,CAAY;IACvC,OAAO,CAAC,oBAAoB,CAAC,CAAY;gBAE7B,OAAO,EAAE,sBAAsB;IA0B3C;;OAEG;IACH,IAAI,qBAAqB,IAAI,MAAM,CAElC;IAED;;OAEG;IACH,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EAAE,EACtB,IAAI,CAAC,EAAE,GAAG,EACV,GAAG,CAAC,EAAE,MAAM,GACX,IAAI;IAIP;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI;IASxE;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM;;;;;IAI9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAwBrD;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAsB/B;;OAEG;IACH,WAAW;IAIX;;OAEG;IACH,YAAY,IAAI,IAAI;IAUpB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;OAEG;YACW,mBAAmB;IAYjC;;OAEG;YACW,sBAAsB;IAOpC;;OAEG;IACH,mBAAmB,IAAI,WAAW,GAAG,YAAY,GAAG,cAAc;IAUlE;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAO5B;;OAEG;IACH,eAAe;IAIf;;OAEG;IACH,eAAe;;;;;;;IAIf;;OAEG;IACH,oBAAoB;;;;;;;;;IAIpB;;OAEG;IACH,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIhD;;OAEG;IACH,OAAO,IAAI,IAAI;CAahB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,sBAAsB,GAC9B,qBAAqB,CAEvB"}