@agelum/backend 0.1.0 → 0.1.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 +184 -113
- package/package.json +13 -13
- package/dist/client/hooks.d.ts +0 -65
- package/dist/client/hooks.d.ts.map +0 -1
- package/dist/client/hooks.js +0 -339
- package/dist/client/hooks.js.map +0 -1
- package/dist/client/index.d.ts +0 -10
- package/dist/client/index.d.ts.map +0 -1
- package/dist/client/index.js +0 -37
- package/dist/client/index.js.map +0 -1
- package/dist/client/manager.d.ts +0 -137
- package/dist/client/manager.d.ts.map +0 -1
- package/dist/client/manager.js +0 -292
- package/dist/client/manager.js.map +0 -1
- package/dist/client/provider.d.ts +0 -25
- package/dist/client/provider.d.ts.map +0 -1
- package/dist/client/provider.js +0 -121
- package/dist/client/provider.js.map +0 -1
- package/dist/client/revalidation.d.ts +0 -101
- package/dist/client/revalidation.d.ts.map +0 -1
- package/dist/client/revalidation.js +0 -313
- package/dist/client/revalidation.js.map +0 -1
- package/dist/client/session.d.ts +0 -84
- package/dist/client/session.d.ts.map +0 -1
- package/dist/client/session.js +0 -186
- package/dist/client/session.js.map +0 -1
- package/dist/client/sse-client.d.ts +0 -81
- package/dist/client/sse-client.d.ts.map +0 -1
- package/dist/client/sse-client.js +0 -221
- package/dist/client/sse-client.js.map +0 -1
- package/dist/client/storage.d.ts +0 -124
- package/dist/client/storage.d.ts.map +0 -1
- package/dist/client/storage.js +0 -441
- package/dist/client/storage.js.map +0 -1
- package/dist/client/trpc.d.ts +0 -12
- package/dist/client/trpc.d.ts.map +0 -1
- package/dist/client/trpc.js +0 -36
- package/dist/client/trpc.js.map +0 -1
- package/dist/client/types.d.ts +0 -10
- package/dist/client/types.d.ts.map +0 -1
- package/dist/client/types.js +0 -3
- package/dist/client/types.js.map +0 -1
- package/dist/client.d.ts +0 -12
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -26
- package/dist/client.js.map +0 -1
- package/dist/config/schema.d.ts +0 -261
- package/dist/config/schema.d.ts.map +0 -1
- package/dist/config/schema.js +0 -69
- package/dist/config/schema.js.map +0 -1
- package/dist/core/analyzer.d.ts +0 -15
- package/dist/core/analyzer.d.ts.map +0 -1
- package/dist/core/analyzer.js +0 -217
- package/dist/core/analyzer.js.map +0 -1
- package/dist/core/driver.d.ts +0 -7
- package/dist/core/driver.d.ts.map +0 -1
- package/dist/core/driver.js +0 -261
- package/dist/core/driver.js.map +0 -1
- package/dist/core/function.d.ts +0 -97
- package/dist/core/function.d.ts.map +0 -1
- package/dist/core/function.js +0 -252
- package/dist/core/function.js.map +0 -1
- package/dist/core/sse.d.ts +0 -98
- package/dist/core/sse.d.ts.map +0 -1
- package/dist/core/sse.js +0 -331
- package/dist/core/sse.js.map +0 -1
- package/dist/core/types.d.ts +0 -179
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -3
- package/dist/core/types.js.map +0 -1
- package/dist/examples/teamhub-integration.d.ts +0 -56
- package/dist/examples/teamhub-integration.d.ts.map +0 -1
- package/dist/examples/teamhub-integration.js +0 -188
- package/dist/examples/teamhub-integration.js.map +0 -1
- package/dist/index.d.ts +0 -39
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -57
- package/dist/index.js.map +0 -1
- package/dist/providers/localStorage.d.ts +0 -13
- package/dist/providers/localStorage.d.ts.map +0 -1
- package/dist/providers/localStorage.js +0 -64
- package/dist/providers/localStorage.js.map +0 -1
- package/dist/providers/memory.d.ts +0 -13
- package/dist/providers/memory.d.ts.map +0 -1
- package/dist/providers/memory.js +0 -40
- package/dist/providers/memory.js.map +0 -1
- package/dist/providers/redis.d.ts +0 -14
- package/dist/providers/redis.d.ts.map +0 -1
- package/dist/providers/redis.js +0 -36
- package/dist/providers/redis.js.map +0 -1
- package/dist/server.d.ts +0 -17
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -34
- package/dist/server.js.map +0 -1
- package/dist/trpc/hooks.d.ts +0 -82
- package/dist/trpc/hooks.d.ts.map +0 -1
- package/dist/trpc/hooks.js +0 -282
- package/dist/trpc/hooks.js.map +0 -1
- package/dist/trpc/router.d.ts +0 -75
- package/dist/trpc/router.d.ts.map +0 -1
- package/dist/trpc/router.js +0 -160
- package/dist/trpc/router.js.map +0 -1
- package/dist/trpc/types.d.ts +0 -105
- package/dist/trpc/types.d.ts.map +0 -1
- package/dist/trpc/types.js +0 -6
- package/dist/trpc/types.js.map +0 -1
package/dist/client/manager.js
DELETED
|
@@ -1,292 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/client/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/client/provider.js
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/client/provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,101 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"revalidation.d.ts","sourceRoot":"","sources":["../../src/client/revalidation.ts"],"names":[],"mappings":"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"}
|