@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,292 @@
1
+ "use strict";
2
+ /**
3
+ * Client-side reactive manager
4
+ * Coordinates storage, session recovery, and real-time synchronization
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ReactiveClientManager = void 0;
8
+ exports.createReactiveClientManager = createReactiveClientManager;
9
+ const storage_1 = require("./storage");
10
+ const session_1 = require("./session");
11
+ const revalidation_1 = require("./revalidation");
12
+ const sse_client_1 = require("./sse-client");
13
+ class ReactiveClientManager {
14
+ storage;
15
+ sessionManager;
16
+ revalidationEngine;
17
+ sseClient = null;
18
+ config;
19
+ organizationId;
20
+ onInvalidation;
21
+ onRevalidate;
22
+ // Event listeners
23
+ visibilityListener;
24
+ beforeUnloadListener;
25
+ constructor(options) {
26
+ this.organizationId = options.organizationId;
27
+ this.config = options.config;
28
+ this.onInvalidation = options.onInvalidation;
29
+ this.onRevalidate = options.onRevalidate;
30
+ // Initialize storage, session management, and smart revalidation
31
+ this.storage = (0, storage_1.createReactiveStorage)(this.organizationId);
32
+ this.sessionManager = (0, session_1.createSimpleSessionManager)(this.organizationId);
33
+ this.revalidationEngine = (0, revalidation_1.createSmartRevalidationEngine)(this.storage, this.config);
34
+ // Set up event listeners
35
+ this.setupEventListeners();
36
+ // Initialize SSE connection if real-time is enabled
37
+ if (this.config.realtime?.enabled !== false) {
38
+ this.initializeSSEConnection(options.sseOptions);
39
+ }
40
+ // Initial session gap check (simple revalidation on page load)
41
+ this.checkInitialSession();
42
+ }
43
+ /**
44
+ * Get organization ID
45
+ */
46
+ get currentOrganizationId() {
47
+ return this.organizationId;
48
+ }
49
+ /**
50
+ * Register a query execution
51
+ */
52
+ registerQuery(queryKey, dependencies, data, ttl) {
53
+ this.storage.registerQuery(queryKey, dependencies, data, ttl);
54
+ }
55
+ /**
56
+ * Register an active React hook
57
+ */
58
+ registerActiveHook(queryKey, dependencies) {
59
+ this.storage.registerActiveHook(queryKey, dependencies, this.organizationId);
60
+ // Return cleanup function
61
+ return () => {
62
+ this.storage.unregisterActiveHook(queryKey);
63
+ };
64
+ }
65
+ /**
66
+ * Get cached data for a query
67
+ */
68
+ getCachedData(queryKey) {
69
+ return this.storage.getCachedData(queryKey);
70
+ }
71
+ /**
72
+ * Handle invalidation event from server
73
+ */
74
+ handleInvalidation(event) {
75
+ console.log(`[ReactiveClient] Handling invalidation for table: ${event.table}`);
76
+ // Notify external handler if provided
77
+ if (this.onInvalidation) {
78
+ this.onInvalidation(event);
79
+ }
80
+ // Mark affected queries as invalidated in session manager
81
+ const affectedQueries = this.findAffectedQueries(event.table);
82
+ affectedQueries.forEach((queryKey) => {
83
+ this.sessionManager.markQueryInvalidated(queryKey);
84
+ });
85
+ // Trigger revalidation for affected queries
86
+ if (this.onRevalidate) {
87
+ affectedQueries.forEach((queryKey) => {
88
+ this.revalidateQuery(queryKey);
89
+ });
90
+ }
91
+ }
92
+ /**
93
+ * Find queries affected by table changes
94
+ */
95
+ findAffectedQueries(table) {
96
+ const registry = this.storage.getRegistry();
97
+ if (!registry)
98
+ return [];
99
+ const relatedTables = this.config.relations[table] || [];
100
+ const tablesToCheck = [table, ...relatedTables];
101
+ return Object.keys(registry.queries).filter((queryKey) => {
102
+ // Simple heuristic: check if query key contains table name
103
+ return tablesToCheck.some((tableName) => queryKey.toLowerCase().includes(tableName.toLowerCase()));
104
+ });
105
+ }
106
+ /**
107
+ * Handle connection status changes
108
+ */
109
+ handleConnectionStatus(connected) {
110
+ console.log(`[ReactiveClient] Real-time connection: ${connected}`);
111
+ // Update session manager with connection status
112
+ const registry = this.storage.getRegistry();
113
+ if (registry) {
114
+ registry.session.realtimeConnected = connected;
115
+ this.storage['saveRegistry'](registry);
116
+ }
117
+ }
118
+ /**
119
+ * Revalidate a specific query
120
+ */
121
+ async revalidateQuery(queryKey) {
122
+ if (this.onRevalidate) {
123
+ try {
124
+ const result = await this.onRevalidate(queryKey);
125
+ // Update cache with fresh data
126
+ if (result !== undefined) {
127
+ this.storage.registerQuery(queryKey, [], result);
128
+ }
129
+ return result;
130
+ }
131
+ catch (error) {
132
+ console.error(`[ReactiveClient] Revalidation failed for ${queryKey}:`, error);
133
+ // Do not overwrite cache on error; keep existing data intact
134
+ throw error;
135
+ }
136
+ }
137
+ return undefined;
138
+ }
139
+ /**
140
+ * Initialize SSE connection for real-time updates
141
+ */
142
+ initializeSSEConnection(sseOptions) {
143
+ console.log('[ReactiveClient] Initializing SSE connection');
144
+ // Build SSE URL with organization ID
145
+ const sseUrl = `/api/events?organizationId=${this.organizationId}`;
146
+ this.sseClient = new sse_client_1.SSEClient({
147
+ url: sseUrl,
148
+ onInvalidation: (event) => this.handleInvalidation(event),
149
+ onError: (error) => {
150
+ console.error('[ReactiveClient] SSE error:', error);
151
+ },
152
+ ...sseOptions,
153
+ });
154
+ // Connect immediately
155
+ this.sseClient.connect();
156
+ }
157
+ /**
158
+ * Get SSE connection statistics
159
+ */
160
+ getSSEStats() {
161
+ return this.sseClient?.getStats() || null;
162
+ }
163
+ /**
164
+ * Manually reconnect SSE
165
+ */
166
+ reconnectSSE() {
167
+ if (this.sseClient) {
168
+ console.log('[ReactiveClient] Manual SSE reconnection');
169
+ this.sseClient.disconnect();
170
+ setTimeout(() => {
171
+ this.sseClient?.connect();
172
+ }, 1000);
173
+ }
174
+ }
175
+ /**
176
+ * Set up browser event listeners
177
+ */
178
+ setupEventListeners() {
179
+ // Page visibility change (user switches tabs)
180
+ this.visibilityListener = () => {
181
+ if (document.visibilityState === 'visible') {
182
+ this.handleVisibilityChange();
183
+ }
184
+ };
185
+ document.addEventListener('visibilitychange', this.visibilityListener);
186
+ // Before page unload (save state)
187
+ this.beforeUnloadListener = () => {
188
+ // Update last sync time before unload
189
+ const registry = this.storage.getRegistry();
190
+ if (registry) {
191
+ registry.session.lastSync = Date.now();
192
+ this.storage['saveRegistry'](registry);
193
+ }
194
+ };
195
+ window.addEventListener('beforeunload', this.beforeUnloadListener);
196
+ }
197
+ /**
198
+ * Remove event listeners
199
+ */
200
+ removeEventListeners() {
201
+ if (this.visibilityListener) {
202
+ document.removeEventListener('visibilitychange', this.visibilityListener);
203
+ }
204
+ if (this.beforeUnloadListener) {
205
+ window.removeEventListener('beforeunload', this.beforeUnloadListener);
206
+ }
207
+ }
208
+ /**
209
+ * Check for session gap on initial load (simple approach as per spec)
210
+ */
211
+ async checkInitialSession() {
212
+ const activeHookQueries = this.storage
213
+ .getActiveHooks()
214
+ .map((hook) => hook.queryKey);
215
+ await (0, session_1.revalidateOnPageLoad)(this.sessionManager, activeHookQueries, this.revalidateQuery.bind(this));
216
+ }
217
+ /**
218
+ * Handle page visibility change
219
+ */
220
+ async handleVisibilityChange() {
221
+ if (document.visibilityState === 'visible') {
222
+ // Check for stale data when page becomes visible
223
+ await this.checkInitialSession();
224
+ }
225
+ }
226
+ /**
227
+ * Get current connection status
228
+ */
229
+ getConnectionStatus() {
230
+ if (!this.sseClient)
231
+ return 'disconnected';
232
+ const state = this.sseClient.getConnectionState();
233
+ return state === 'open'
234
+ ? 'connected'
235
+ : state === 'connecting'
236
+ ? 'connecting'
237
+ : 'disconnected';
238
+ }
239
+ /**
240
+ * Check if real-time is enabled and connected
241
+ */
242
+ isRealtimeEnabled() {
243
+ return (this.config.realtime?.enabled !== false &&
244
+ this.sseClient?.isConnected() === true);
245
+ }
246
+ /**
247
+ * Get storage statistics
248
+ */
249
+ getStorageStats() {
250
+ return this.storage.exportRegistry();
251
+ }
252
+ /**
253
+ * Get session statistics
254
+ */
255
+ getSessionStats() {
256
+ return this.sessionManager.getSessionStats();
257
+ }
258
+ /**
259
+ * Get revalidation statistics
260
+ */
261
+ getRevalidationStats() {
262
+ return this.revalidationEngine.getRevalidationStats();
263
+ }
264
+ /**
265
+ * Mark a query as stale for testing purposes
266
+ */
267
+ markQueryStaleForTesting(queryKey) {
268
+ this.storage.markQueryStaleForTesting(queryKey);
269
+ }
270
+ /**
271
+ * Cleanup resources
272
+ */
273
+ cleanup() {
274
+ // Remove event listeners
275
+ this.removeEventListeners();
276
+ // Disconnect SSE
277
+ if (this.sseClient) {
278
+ this.sseClient.disconnect();
279
+ this.sseClient = null;
280
+ }
281
+ // Clear storage
282
+ this.storage.clearRegistry();
283
+ }
284
+ }
285
+ exports.ReactiveClientManager = ReactiveClientManager;
286
+ /**
287
+ * Create reactive client manager
288
+ */
289
+ function createReactiveClientManager(options) {
290
+ return new ReactiveClientManager(options);
291
+ }
292
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/client/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import type { ReactiveConfig } from '../core/types';
3
+ interface ReactiveProviderConfig {
4
+ relations: Record<string, string[]>;
5
+ organizationId: string;
6
+ revalidateFn?: (queryKey: string) => Promise<any>;
7
+ }
8
+ interface ReactiveContextValue {
9
+ organizationId: string;
10
+ config: ReactiveConfig;
11
+ isInitialized: boolean;
12
+ }
13
+ /**
14
+ * React context provider for reactive features
15
+ */
16
+ export declare function ReactiveProvider({ children, config, }: {
17
+ children: React.ReactNode;
18
+ config: ReactiveProviderConfig;
19
+ }): React.FunctionComponentElement<React.ProviderProps<ReactiveContextValue | null>>;
20
+ /**
21
+ * Hook to access reactive context
22
+ */
23
+ export declare function useReactiveContext(): ReactiveContextValue;
24
+ export {};
25
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/client/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAA;AAE7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEnD,UAAU,sBAAsB;IAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IACnC,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;CAClD;AAED,UAAU,oBAAoB;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,cAAc,CAAA;IACtB,aAAa,EAAE,OAAO,CAAA;CACvB;AAID;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,MAAM,EAAE,sBAAsB,CAAA;CAC/B,oFA2GA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,yBAMjC"}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ReactiveProvider = ReactiveProvider;
37
+ exports.useReactiveContext = useReactiveContext;
38
+ const react_1 = __importStar(require("react"));
39
+ const hooks_1 = require("./hooks");
40
+ const ReactiveContext = (0, react_1.createContext)(null);
41
+ /**
42
+ * React context provider for reactive features
43
+ */
44
+ function ReactiveProvider({ children, config, }) {
45
+ const [isInitialized, setIsInitialized] = (0, react_1.useState)(false);
46
+ const { organizationId } = config;
47
+ const reactiveConfig = {
48
+ relations: config.relations,
49
+ realtime: {
50
+ enabled: true,
51
+ transport: 'sse',
52
+ },
53
+ };
54
+ // Default revalidation function that returns mock data
55
+ // The ReactiveStorage system handles persistence automatically
56
+ const defaultRevalidateFn = async (queryKey) => {
57
+ console.log('🔄 Default revalidating query:', queryKey);
58
+ // Return mock data based on query key
59
+ if (queryKey.includes('agents.getAll')) {
60
+ const mockData = [
61
+ {
62
+ id: '1',
63
+ name: 'Test Agent 1',
64
+ role: 'assistant',
65
+ organizationId: organizationId,
66
+ isActive: true,
67
+ createdAt: new Date().toISOString(),
68
+ },
69
+ {
70
+ id: '2',
71
+ name: 'Test Agent 2',
72
+ role: 'researcher',
73
+ organizationId: organizationId,
74
+ isActive: true,
75
+ createdAt: new Date().toISOString(),
76
+ },
77
+ ];
78
+ // Note: ReactiveStorage will automatically persist this data
79
+ // No need for manual localStorage handling
80
+ console.log('💾 Mock data generated, ReactiveStorage will persist automatically');
81
+ return mockData;
82
+ }
83
+ return [];
84
+ };
85
+ const revalidateFn = config.revalidateFn || defaultRevalidateFn;
86
+ (0, react_1.useEffect)(() => {
87
+ console.log('🚀 ReactiveProvider: Initializing reactive client for org:', organizationId);
88
+ try {
89
+ // Initialize the client immediately
90
+ (0, hooks_1.initializeReactiveClient)(organizationId, reactiveConfig, revalidateFn);
91
+ setIsInitialized(true);
92
+ console.log('✅ ReactiveProvider: Client initialized successfully for org:', organizationId);
93
+ }
94
+ catch (error) {
95
+ console.error('❌ ReactiveProvider: Failed to initialize client:', error);
96
+ }
97
+ }, [organizationId, revalidateFn]);
98
+ const contextValue = {
99
+ organizationId,
100
+ config: reactiveConfig,
101
+ isInitialized,
102
+ };
103
+ // Don't render children until client is initialized
104
+ if (!isInitialized) {
105
+ return react_1.default.createElement(ReactiveContext.Provider, { value: contextValue }, react_1.default.createElement('div', { className: 'flex items-center justify-center p-8' }, react_1.default.createElement('div', { className: 'text-center' }, react_1.default.createElement('div', {
106
+ className: 'animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600 mx-auto mb-4',
107
+ }), react_1.default.createElement('p', { className: 'text-gray-600' }, 'Initializing reactive client...'))));
108
+ }
109
+ return react_1.default.createElement(ReactiveContext.Provider, { value: contextValue }, children);
110
+ }
111
+ /**
112
+ * Hook to access reactive context
113
+ */
114
+ function useReactiveContext() {
115
+ const context = (0, react_1.useContext)(ReactiveContext);
116
+ if (!context) {
117
+ throw new Error('useReactiveContext must be used within a ReactiveProvider');
118
+ }
119
+ return context;
120
+ }
121
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/client/provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,4CAiHC;AAKD,gDAMC;AAjJD,+CAA6E;AAC7E,mCAAkD;AAelD,MAAM,eAAe,GAAG,IAAA,qBAAa,EAA8B,IAAI,CAAC,CAAA;AAExE;;GAEG;AACH,SAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,MAAM,GAIP;IACC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IACzD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAAA;IAEjC,MAAM,cAAc,GAAmB;QACrC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE;YACR,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,KAAc;SAC1B;KACF,CAAA;IAED,uDAAuD;IACvD,+DAA+D;IAC/D,MAAM,mBAAmB,GAAG,KAAK,EAAE,QAAgB,EAAE,EAAE;QACrD,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAA;QAEvD,sCAAsC;QACtC,IAAI,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG;gBACf;oBACE,EAAE,EAAE,GAAG;oBACP,IAAI,EAAE,cAAc;oBACpB,IAAI,EAAE,WAAW;oBACjB,cAAc,EAAE,cAAc;oBAC9B,QAAQ,EAAE,IAAI;oBACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC;gBACD;oBACE,EAAE,EAAE,GAAG;oBACP,IAAI,EAAE,cAAc;oBACpB,IAAI,EAAE,YAAY;oBAClB,cAAc,EAAE,cAAc;oBAC9B,QAAQ,EAAE,IAAI;oBACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC;aACF,CAAA;YAED,6DAA6D;YAC7D,2CAA2C;YAC3C,OAAO,CAAC,GAAG,CACT,oEAAoE,CACrE,CAAA;YAED,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,OAAO,EAAE,CAAA;IACX,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,mBAAmB,CAAA;IAE/D,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,OAAO,CAAC,GAAG,CACT,4DAA4D,EAC5D,cAAc,CACf,CAAA;QAED,IAAI,CAAC;YACH,oCAAoC;YACpC,IAAA,gCAAwB,EAAC,cAAc,EAAE,cAAc,EAAE,YAAY,CAAC,CAAA;YACtE,gBAAgB,CAAC,IAAI,CAAC,CAAA;YACtB,OAAO,CAAC,GAAG,CACT,8DAA8D,EAC9D,cAAc,CACf,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,kDAAkD,EAAE,KAAK,CAAC,CAAA;QAC1E,CAAC;IACH,CAAC,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAA;IAElC,MAAM,YAAY,GAAyB;QACzC,cAAc;QACd,MAAM,EAAE,cAAc;QACtB,aAAa;KACd,CAAA;IAED,oDAAoD;IACpD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,eAAK,CAAC,aAAa,CACxB,eAAe,CAAC,QAAQ,EACxB,EAAE,KAAK,EAAE,YAAY,EAAE,EACvB,eAAK,CAAC,aAAa,CACjB,KAAK,EACL,EAAE,SAAS,EAAE,sCAAsC,EAAE,EACrD,eAAK,CAAC,aAAa,CACjB,KAAK,EACL,EAAE,SAAS,EAAE,aAAa,EAAE,EAC5B,eAAK,CAAC,aAAa,CAAC,KAAK,EAAE;YACzB,SAAS,EACP,2EAA2E;SAC9E,CAAC,EACF,eAAK,CAAC,aAAa,CACjB,GAAG,EACH,EAAE,SAAS,EAAE,eAAe,EAAE,EAC9B,iCAAiC,CAClC,CACF,CACF,CACF,CAAA;IACH,CAAC;IAED,OAAO,eAAK,CAAC,aAAa,CACxB,eAAe,CAAC,QAAQ,EACxB,EAAE,KAAK,EAAE,YAAY,EAAE,EACvB,QAAQ,CACT,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB;IAChC,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,eAAe,CAAC,CAAA;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAA;IAC9E,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Smart revalidation system with active hooks priority
3
+ * Provides intelligent query revalidation based on user interaction patterns
4
+ */
5
+ import type { ReactiveStorage } from './storage';
6
+ import type { ReactiveConfig } from '../core/types';
7
+ export interface RevalidationStrategy {
8
+ immediate: string[];
9
+ delayed: string[];
10
+ background: string[];
11
+ estimatedTime: number;
12
+ }
13
+ export interface RevalidationOptions {
14
+ maxConcurrent?: number;
15
+ delayBetweenBatches?: number;
16
+ priorityFirst?: boolean;
17
+ backgroundDelay?: number;
18
+ }
19
+ export interface RevalidationResult {
20
+ immediate: {
21
+ successful: number;
22
+ failed: number;
23
+ duration: number;
24
+ };
25
+ delayed: {
26
+ successful: number;
27
+ failed: number;
28
+ duration: number;
29
+ };
30
+ background: {
31
+ successful: number;
32
+ failed: number;
33
+ duration: number;
34
+ };
35
+ totalDuration: number;
36
+ overallSuccess: boolean;
37
+ }
38
+ export declare class SmartRevalidationEngine {
39
+ private storage;
40
+ private config;
41
+ private activeRevalidations;
42
+ private revalidationQueue;
43
+ constructor(storage: ReactiveStorage, config: ReactiveConfig);
44
+ /**
45
+ * Create an intelligent revalidation strategy
46
+ */
47
+ createRevalidationStrategy(invalidatedQueries: string[], options?: RevalidationOptions): RevalidationStrategy;
48
+ /**
49
+ * Execute the revalidation strategy
50
+ */
51
+ executeRevalidationStrategy(strategy: RevalidationStrategy, revalidateFn: (queryKey: string) => Promise<any>, options?: RevalidationOptions): Promise<RevalidationResult>;
52
+ /**
53
+ * Add queries to revalidation queue with priority
54
+ */
55
+ queueRevalidation(queryKey: string, priority?: number): void;
56
+ /**
57
+ * Process revalidation queue
58
+ */
59
+ processRevalidationQueue(revalidateFn: (queryKey: string) => Promise<any>, options?: RevalidationOptions): Promise<void>;
60
+ /**
61
+ * Smart invalidation with automatic revalidation
62
+ */
63
+ smartInvalidateAndRevalidate(table: string, revalidateFn: (queryKey: string) => Promise<any>, options?: RevalidationOptions): Promise<RevalidationResult>;
64
+ /**
65
+ * Execute a batch of queries with concurrency control
66
+ */
67
+ private executeQueryBatch;
68
+ /**
69
+ * Execute background revalidation with rate limiting
70
+ */
71
+ private executeBackgroundRevalidation;
72
+ /**
73
+ * Find queries affected by table changes
74
+ */
75
+ private findAffectedQueries;
76
+ /**
77
+ * Estimate total revalidation time
78
+ */
79
+ private estimateRevalidationTime;
80
+ /**
81
+ * Utility to wait for a specified time
82
+ */
83
+ private wait;
84
+ /**
85
+ * Get current revalidation statistics
86
+ */
87
+ getRevalidationStats(): {
88
+ activeRevalidations: number;
89
+ queuedQueries: number;
90
+ activeHooks: number;
91
+ recentActivity: {
92
+ queryKey: string;
93
+ timestamp: number;
94
+ }[];
95
+ };
96
+ }
97
+ /**
98
+ * Create a smart revalidation engine
99
+ */
100
+ export declare function createSmartRevalidationEngine(storage: ReactiveStorage, config: ReactiveConfig): SmartRevalidationEngine;
101
+ //# sourceMappingURL=revalidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revalidation.d.ts","sourceRoot":"","sources":["../../src/client/revalidation.ts"],"names":[],"mappings":"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"}