@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.
Files changed (106) hide show
  1. package/README.md +184 -113
  2. package/package.json +13 -13
  3. package/dist/client/hooks.d.ts +0 -65
  4. package/dist/client/hooks.d.ts.map +0 -1
  5. package/dist/client/hooks.js +0 -339
  6. package/dist/client/hooks.js.map +0 -1
  7. package/dist/client/index.d.ts +0 -10
  8. package/dist/client/index.d.ts.map +0 -1
  9. package/dist/client/index.js +0 -37
  10. package/dist/client/index.js.map +0 -1
  11. package/dist/client/manager.d.ts +0 -137
  12. package/dist/client/manager.d.ts.map +0 -1
  13. package/dist/client/manager.js +0 -292
  14. package/dist/client/manager.js.map +0 -1
  15. package/dist/client/provider.d.ts +0 -25
  16. package/dist/client/provider.d.ts.map +0 -1
  17. package/dist/client/provider.js +0 -121
  18. package/dist/client/provider.js.map +0 -1
  19. package/dist/client/revalidation.d.ts +0 -101
  20. package/dist/client/revalidation.d.ts.map +0 -1
  21. package/dist/client/revalidation.js +0 -313
  22. package/dist/client/revalidation.js.map +0 -1
  23. package/dist/client/session.d.ts +0 -84
  24. package/dist/client/session.d.ts.map +0 -1
  25. package/dist/client/session.js +0 -186
  26. package/dist/client/session.js.map +0 -1
  27. package/dist/client/sse-client.d.ts +0 -81
  28. package/dist/client/sse-client.d.ts.map +0 -1
  29. package/dist/client/sse-client.js +0 -221
  30. package/dist/client/sse-client.js.map +0 -1
  31. package/dist/client/storage.d.ts +0 -124
  32. package/dist/client/storage.d.ts.map +0 -1
  33. package/dist/client/storage.js +0 -441
  34. package/dist/client/storage.js.map +0 -1
  35. package/dist/client/trpc.d.ts +0 -12
  36. package/dist/client/trpc.d.ts.map +0 -1
  37. package/dist/client/trpc.js +0 -36
  38. package/dist/client/trpc.js.map +0 -1
  39. package/dist/client/types.d.ts +0 -10
  40. package/dist/client/types.d.ts.map +0 -1
  41. package/dist/client/types.js +0 -3
  42. package/dist/client/types.js.map +0 -1
  43. package/dist/client.d.ts +0 -12
  44. package/dist/client.d.ts.map +0 -1
  45. package/dist/client.js +0 -26
  46. package/dist/client.js.map +0 -1
  47. package/dist/config/schema.d.ts +0 -261
  48. package/dist/config/schema.d.ts.map +0 -1
  49. package/dist/config/schema.js +0 -69
  50. package/dist/config/schema.js.map +0 -1
  51. package/dist/core/analyzer.d.ts +0 -15
  52. package/dist/core/analyzer.d.ts.map +0 -1
  53. package/dist/core/analyzer.js +0 -217
  54. package/dist/core/analyzer.js.map +0 -1
  55. package/dist/core/driver.d.ts +0 -7
  56. package/dist/core/driver.d.ts.map +0 -1
  57. package/dist/core/driver.js +0 -261
  58. package/dist/core/driver.js.map +0 -1
  59. package/dist/core/function.d.ts +0 -97
  60. package/dist/core/function.d.ts.map +0 -1
  61. package/dist/core/function.js +0 -252
  62. package/dist/core/function.js.map +0 -1
  63. package/dist/core/sse.d.ts +0 -98
  64. package/dist/core/sse.d.ts.map +0 -1
  65. package/dist/core/sse.js +0 -331
  66. package/dist/core/sse.js.map +0 -1
  67. package/dist/core/types.d.ts +0 -179
  68. package/dist/core/types.d.ts.map +0 -1
  69. package/dist/core/types.js +0 -3
  70. package/dist/core/types.js.map +0 -1
  71. package/dist/examples/teamhub-integration.d.ts +0 -56
  72. package/dist/examples/teamhub-integration.d.ts.map +0 -1
  73. package/dist/examples/teamhub-integration.js +0 -188
  74. package/dist/examples/teamhub-integration.js.map +0 -1
  75. package/dist/index.d.ts +0 -39
  76. package/dist/index.d.ts.map +0 -1
  77. package/dist/index.js +0 -57
  78. package/dist/index.js.map +0 -1
  79. package/dist/providers/localStorage.d.ts +0 -13
  80. package/dist/providers/localStorage.d.ts.map +0 -1
  81. package/dist/providers/localStorage.js +0 -64
  82. package/dist/providers/localStorage.js.map +0 -1
  83. package/dist/providers/memory.d.ts +0 -13
  84. package/dist/providers/memory.d.ts.map +0 -1
  85. package/dist/providers/memory.js +0 -40
  86. package/dist/providers/memory.js.map +0 -1
  87. package/dist/providers/redis.d.ts +0 -14
  88. package/dist/providers/redis.d.ts.map +0 -1
  89. package/dist/providers/redis.js +0 -36
  90. package/dist/providers/redis.js.map +0 -1
  91. package/dist/server.d.ts +0 -17
  92. package/dist/server.d.ts.map +0 -1
  93. package/dist/server.js +0 -34
  94. package/dist/server.js.map +0 -1
  95. package/dist/trpc/hooks.d.ts +0 -82
  96. package/dist/trpc/hooks.d.ts.map +0 -1
  97. package/dist/trpc/hooks.js +0 -282
  98. package/dist/trpc/hooks.js.map +0 -1
  99. package/dist/trpc/router.d.ts +0 -75
  100. package/dist/trpc/router.d.ts.map +0 -1
  101. package/dist/trpc/router.js +0 -160
  102. package/dist/trpc/router.js.map +0 -1
  103. package/dist/trpc/types.d.ts +0 -105
  104. package/dist/trpc/types.d.ts.map +0 -1
  105. package/dist/trpc/types.js +0 -6
  106. package/dist/trpc/types.js.map +0 -1
@@ -1,98 +0,0 @@
1
- /**
2
- * Server-Sent Events implementation for real-time cache invalidation
3
- * Perfect for unidirectional communication with automatic reconnection
4
- */
5
- import type { InvalidationEvent } from './types';
6
- export interface SSEConnection {
7
- organizationId: string;
8
- controller: ReadableStreamDefaultController;
9
- lastActivity: number;
10
- isActive: boolean;
11
- }
12
- export interface PendingEvent {
13
- id: string;
14
- organizationId: string;
15
- data: InvalidationEvent;
16
- timestamp: number;
17
- delivered: boolean;
18
- retryCount: number;
19
- maxRetries: number;
20
- }
21
- /**
22
- * SSE Manager for reliable real-time communication
23
- * NO HEARTBEATS - uses event acknowledgments and connection monitoring instead
24
- */
25
- export declare class SSEManager {
26
- private connections;
27
- private pendingEvents;
28
- private retrySchedule;
29
- private connectionMonitorInterval;
30
- constructor();
31
- /**
32
- * Create SSE stream for an organization
33
- */
34
- createSSEStream(organizationId: string): Response;
35
- /**
36
- * Broadcast invalidation event to all connections in an organization
37
- */
38
- broadcastInvalidation(organizationId: string, invalidationData: Omit<InvalidationEvent, 'eventId' | 'requiresAck'>): Promise<void>;
39
- /**
40
- * Acknowledge event receipt (called by client)
41
- */
42
- acknowledgeEvent(eventId: string): void;
43
- /**
44
- * Get connection statistics
45
- */
46
- getConnectionStats(): {
47
- totalConnections: number;
48
- connectionsByOrg: Record<string, number>;
49
- pendingEvents: number;
50
- activeEvents: PendingEvent[];
51
- };
52
- /**
53
- * Send event to a specific connection
54
- */
55
- private sendEvent;
56
- /**
57
- * Add connection to organization
58
- */
59
- private addConnection;
60
- /**
61
- * Remove connection from organization
62
- */
63
- private removeConnection;
64
- /**
65
- * Schedule retry for unacknowledged events
66
- */
67
- private scheduleRetryIfNeeded;
68
- /**
69
- * Monitor connections for health without sending heartbeats
70
- * Uses activity tracking and error detection instead of periodic messages
71
- */
72
- private startConnectionMonitor;
73
- /**
74
- * Generate unique event ID
75
- */
76
- private generateEventId;
77
- /**
78
- * Cleanup resources
79
- */
80
- cleanup(): void;
81
- }
82
- /**
83
- * Get or create global SSE manager
84
- */
85
- export declare function getSSEManager(): SSEManager;
86
- /**
87
- * Create SSE stream for Vercel/Next.js API routes
88
- */
89
- export declare function createSSEStream(organizationId: string): Response;
90
- /**
91
- * Broadcast invalidation event
92
- */
93
- export declare function broadcastInvalidation(organizationId: string, invalidationData: Omit<InvalidationEvent, 'eventId' | 'requiresAck'>): Promise<void>;
94
- /**
95
- * Acknowledge event (for API route)
96
- */
97
- export declare function acknowledgeEvent(eventId: string): void;
98
- //# sourceMappingURL=sse.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/core/sse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEhD,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,+BAA+B,CAAA;IAC3C,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,cAAc,EAAE,MAAM,CAAA;IACtB,IAAI,EAAE,iBAAiB,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,WAAW,CAAwC;IAC3D,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,yBAAyB,CAA8B;;IAM/D;;OAEG;IACH,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,QAAQ;IAgDjD;;OAEG;IACG,qBAAqB,CACzB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,aAAa,CAAC,GACnE,OAAO,CAAC,IAAI,CAAC;IAmEhB;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IASvC;;OAEG;IACH,kBAAkB,IAAI;QACpB,gBAAgB,EAAE,MAAM,CAAA;QACxB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACxC,aAAa,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,YAAY,EAAE,CAAA;KAC7B;IAsBD;;OAEG;IACH,OAAO,CAAC,SAAS;IAcjB;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA6C7B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAuC9B;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,IAAI,IAAI;CAqBhB;AAKD;;GAEG;AACH,wBAAgB,aAAa,IAAI,UAAU,CAK1C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,QAAQ,CAGhE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,aAAa,CAAC,GACnE,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAGtD"}
package/dist/core/sse.js DELETED
@@ -1,331 +0,0 @@
1
- "use strict";
2
- /**
3
- * Server-Sent Events implementation for real-time cache invalidation
4
- * Perfect for unidirectional communication with automatic reconnection
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.SSEManager = void 0;
8
- exports.getSSEManager = getSSEManager;
9
- exports.createSSEStream = createSSEStream;
10
- exports.broadcastInvalidation = broadcastInvalidation;
11
- exports.acknowledgeEvent = acknowledgeEvent;
12
- /**
13
- * SSE Manager for reliable real-time communication
14
- * NO HEARTBEATS - uses event acknowledgments and connection monitoring instead
15
- */
16
- class SSEManager {
17
- connections = new Map();
18
- pendingEvents = new Map();
19
- retrySchedule = [2000, 5000, 10000]; // 2s, 5s, 10s
20
- connectionMonitorInterval = null;
21
- constructor() {
22
- this.startConnectionMonitor();
23
- }
24
- /**
25
- * Create SSE stream for an organization
26
- */
27
- createSSEStream(organizationId) {
28
- const encoder = new TextEncoder();
29
- const stream = new ReadableStream({
30
- start: (controller) => {
31
- const connection = {
32
- organizationId,
33
- controller,
34
- lastActivity: Date.now(), // Track last activity instead of heartbeat
35
- isActive: true,
36
- };
37
- // Register connection
38
- this.addConnection(organizationId, connection);
39
- // Send initial connection event
40
- this.sendEvent(controller, {
41
- type: 'connected',
42
- organizationId,
43
- timestamp: Date.now(),
44
- });
45
- console.log(`[SSE] New connection for org: ${organizationId}`);
46
- // Cleanup on disconnect
47
- return () => {
48
- console.log(`[SSE] Connection closed for org: ${organizationId}`);
49
- connection.isActive = false;
50
- this.removeConnection(organizationId, connection);
51
- };
52
- },
53
- cancel: () => {
54
- console.log(`[SSE] Stream cancelled for org: ${organizationId}`);
55
- },
56
- });
57
- return new Response(stream, {
58
- headers: {
59
- 'Content-Type': 'text/event-stream',
60
- 'Cache-Control': 'no-cache',
61
- Connection: 'keep-alive',
62
- 'Access-Control-Allow-Origin': '*',
63
- 'Access-Control-Allow-Headers': 'Cache-Control',
64
- },
65
- });
66
- }
67
- /**
68
- * Broadcast invalidation event to all connections in an organization
69
- */
70
- async broadcastInvalidation(organizationId, invalidationData) {
71
- const eventId = this.generateEventId();
72
- const event = {
73
- ...invalidationData,
74
- eventId,
75
- requiresAck: true,
76
- };
77
- console.log(`🔥 [SSE-BROADCAST] Broadcasting invalidation for org: ${organizationId}, table: ${event.table}, operation: ${event.operation}, eventId: ${eventId}`);
78
- console.log('🔥 [SSE-BROADCAST] Event details:', {
79
- table: event.table,
80
- operation: event.operation,
81
- affectedQueries: event.affectedQueries,
82
- affectedKeys: event.affectedKeys,
83
- });
84
- // Store for potential retry
85
- const pendingEvent = {
86
- id: eventId,
87
- organizationId,
88
- data: event,
89
- timestamp: Date.now(),
90
- delivered: false,
91
- retryCount: 0,
92
- maxRetries: 3,
93
- };
94
- this.pendingEvents.set(eventId, pendingEvent);
95
- // Send to all connections
96
- const connections = this.connections.get(organizationId);
97
- if (connections && connections.size > 0) {
98
- let successCount = 0;
99
- let failCount = 0;
100
- for (const connection of connections) {
101
- if (connection.isActive) {
102
- try {
103
- this.sendEvent(connection.controller, event);
104
- // Update last activity when we successfully send an event
105
- connection.lastActivity = Date.now();
106
- successCount++;
107
- }
108
- catch (error) {
109
- console.warn(`[SSE] Failed to send to connection:`, error);
110
- connection.isActive = false;
111
- failCount++;
112
- }
113
- }
114
- }
115
- console.log(`[SSE] Broadcast complete: ${successCount} sent, ${failCount} failed`);
116
- // If no successful sends, schedule retry
117
- if (successCount === 0) {
118
- this.scheduleRetryIfNeeded(eventId);
119
- }
120
- }
121
- else {
122
- console.log(`[SSE] No active connections for org: ${organizationId}`);
123
- // Still schedule retry in case connections come back
124
- this.scheduleRetryIfNeeded(eventId);
125
- }
126
- }
127
- /**
128
- * Acknowledge event receipt (called by client)
129
- */
130
- acknowledgeEvent(eventId) {
131
- const event = this.pendingEvents.get(eventId);
132
- if (event) {
133
- event.delivered = true;
134
- this.pendingEvents.delete(eventId);
135
- console.log(`[SSE] Event acknowledged: ${eventId}`);
136
- }
137
- }
138
- /**
139
- * Get connection statistics
140
- */
141
- getConnectionStats() {
142
- const connectionsByOrg = {};
143
- let totalConnections = 0;
144
- for (const [orgId, connections] of this.connections) {
145
- const activeConnections = Array.from(connections).filter((conn) => conn.isActive).length;
146
- connectionsByOrg[orgId] = activeConnections;
147
- totalConnections += activeConnections;
148
- }
149
- return {
150
- totalConnections,
151
- connectionsByOrg,
152
- pendingEvents: this.pendingEvents.size,
153
- activeEvents: Array.from(this.pendingEvents.values()).filter((event) => !event.delivered),
154
- };
155
- }
156
- /**
157
- * Send event to a specific connection
158
- */
159
- sendEvent(controller, data) {
160
- try {
161
- const encoder = new TextEncoder();
162
- const eventData = `data: ${JSON.stringify(data)}\n\n`;
163
- controller.enqueue(encoder.encode(eventData));
164
- }
165
- catch (error) {
166
- console.warn('[SSE] Failed to send event:', error);
167
- throw error;
168
- }
169
- }
170
- /**
171
- * Add connection to organization
172
- */
173
- addConnection(organizationId, connection) {
174
- if (!this.connections.has(organizationId)) {
175
- this.connections.set(organizationId, new Set());
176
- }
177
- this.connections.get(organizationId).add(connection);
178
- }
179
- /**
180
- * Remove connection from organization
181
- */
182
- removeConnection(organizationId, connection) {
183
- const connections = this.connections.get(organizationId);
184
- if (connections) {
185
- connections.delete(connection);
186
- if (connections.size === 0) {
187
- this.connections.delete(organizationId);
188
- }
189
- }
190
- }
191
- /**
192
- * Schedule retry for unacknowledged events
193
- */
194
- scheduleRetryIfNeeded(eventId) {
195
- const event = this.pendingEvents.get(eventId);
196
- if (!event || event.delivered)
197
- return;
198
- const delay = this.retrySchedule[event.retryCount] || 10000;
199
- setTimeout(async () => {
200
- const currentEvent = this.pendingEvents.get(eventId);
201
- if (!currentEvent || currentEvent.delivered)
202
- return;
203
- if (currentEvent.retryCount < currentEvent.maxRetries) {
204
- currentEvent.retryCount++;
205
- console.log(`[SSE] Retrying event ${eventId} (attempt ${currentEvent.retryCount})`);
206
- // Retry broadcast
207
- const connections = this.connections.get(currentEvent.organizationId);
208
- if (connections && connections.size > 0) {
209
- for (const connection of connections) {
210
- if (connection.isActive) {
211
- try {
212
- this.sendEvent(connection.controller, {
213
- ...currentEvent.data,
214
- retry: currentEvent.retryCount,
215
- });
216
- // Update last activity on successful retry
217
- connection.lastActivity = Date.now();
218
- }
219
- catch (error) {
220
- connection.isActive = false;
221
- }
222
- }
223
- }
224
- }
225
- this.scheduleRetryIfNeeded(eventId);
226
- }
227
- else {
228
- console.warn(`[SSE] Event ${eventId} failed after ${currentEvent.maxRetries} retries`);
229
- this.pendingEvents.delete(eventId);
230
- }
231
- }, delay);
232
- }
233
- /**
234
- * Monitor connections for health without sending heartbeats
235
- * Uses activity tracking and error detection instead of periodic messages
236
- */
237
- startConnectionMonitor() {
238
- this.connectionMonitorInterval = setInterval(() => {
239
- const now = Date.now();
240
- const maxInactivity = 120000; // 2 minutes of inactivity
241
- for (const [orgId, connections] of this.connections) {
242
- for (const connection of connections) {
243
- // Mark connections as inactive if they haven't had activity in 2 minutes
244
- if (connection.isActive && now - connection.lastActivity > maxInactivity) {
245
- console.log(`[SSE] Marking inactive connection as closed for org: ${orgId}`);
246
- connection.isActive = false;
247
- }
248
- }
249
- // Remove inactive connections
250
- const activeConnections = Array.from(connections).filter((conn) => conn.isActive);
251
- if (activeConnections.length !== connections.size) {
252
- this.connections.set(orgId, new Set(activeConnections));
253
- if (activeConnections.length === 0) {
254
- this.connections.delete(orgId);
255
- }
256
- }
257
- }
258
- // Clean up old pending events (older than 5 minutes)
259
- const maxEventAge = 300000; // 5 minutes
260
- for (const [eventId, event] of this.pendingEvents) {
261
- if (now - event.timestamp > maxEventAge) {
262
- console.log(`[SSE] Cleaning up old pending event: ${eventId}`);
263
- this.pendingEvents.delete(eventId);
264
- }
265
- }
266
- }, 60000); // Check every minute instead of every 30 seconds
267
- }
268
- /**
269
- * Generate unique event ID
270
- */
271
- generateEventId() {
272
- return `evt_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
273
- }
274
- /**
275
- * Cleanup resources
276
- */
277
- cleanup() {
278
- if (this.connectionMonitorInterval) {
279
- clearInterval(this.connectionMonitorInterval);
280
- }
281
- // Close all connections
282
- for (const [, connections] of this.connections) {
283
- for (const connection of connections) {
284
- if (connection.isActive) {
285
- try {
286
- connection.controller.close();
287
- }
288
- catch (error) {
289
- // Ignore close errors
290
- }
291
- }
292
- }
293
- }
294
- this.connections.clear();
295
- this.pendingEvents.clear();
296
- }
297
- }
298
- exports.SSEManager = SSEManager;
299
- // Global SSE manager instance
300
- let globalSSEManager = null;
301
- /**
302
- * Get or create global SSE manager
303
- */
304
- function getSSEManager() {
305
- if (!globalSSEManager) {
306
- globalSSEManager = new SSEManager();
307
- }
308
- return globalSSEManager;
309
- }
310
- /**
311
- * Create SSE stream for Vercel/Next.js API routes
312
- */
313
- function createSSEStream(organizationId) {
314
- const manager = getSSEManager();
315
- return manager.createSSEStream(organizationId);
316
- }
317
- /**
318
- * Broadcast invalidation event
319
- */
320
- async function broadcastInvalidation(organizationId, invalidationData) {
321
- const manager = getSSEManager();
322
- await manager.broadcastInvalidation(organizationId, invalidationData);
323
- }
324
- /**
325
- * Acknowledge event (for API route)
326
- */
327
- function acknowledgeEvent(eventId) {
328
- const manager = getSSEManager();
329
- manager.acknowledgeEvent(eventId);
330
- }
331
- //# sourceMappingURL=sse.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/core/sse.ts"],"names":[],"mappings":"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"}
@@ -1,179 +0,0 @@
1
- import type { z } from 'zod';
2
- /**
3
- * Core reactive database configuration
4
- */
5
- export interface ReactiveConfig {
6
- /** Table relationships for automatic invalidation */
7
- relations: Record<string, string[]>;
8
- /** Cache configuration (optional - smart defaults used) */
9
- cache?: {
10
- server?: {
11
- provider?: 'redis' | 'memory';
12
- };
13
- client?: {
14
- provider?: 'localStorage' | 'sessionStorage';
15
- };
16
- };
17
- /** Real-time configuration (optional - SSE enabled by default) */
18
- realtime?: {
19
- enabled?: boolean;
20
- transport?: 'sse';
21
- fallback?: 'polling';
22
- reliability?: {
23
- acknowledgments?: boolean;
24
- maxRetries?: number;
25
- retryDelays?: number[];
26
- periodicHeartbeat?: false;
27
- };
28
- };
29
- }
30
- /**
31
- * Reactive database instance
32
- */
33
- export interface ReactiveDb {
34
- /** Original Drizzle database instance */
35
- db: any;
36
- /** Configuration */
37
- config: ReactiveConfig;
38
- /** Execute query with reactive features */
39
- query: <T>(sql: string, params?: any[]) => Promise<T>;
40
- /** Get cache provider */
41
- getCache: () => CacheProvider;
42
- /** Subscribe to invalidation events */
43
- subscribe: (organizationId: string, callback: InvalidationCallback) => () => void;
44
- }
45
- /**
46
- * Cache provider interface
47
- */
48
- export interface CacheProvider {
49
- get<T>(key: string): Promise<T | null>;
50
- set<T>(key: string, value: T, ttl?: number): Promise<void>;
51
- del(key: string): Promise<void>;
52
- invalidate(pattern: string): Promise<void>;
53
- clear(): Promise<void>;
54
- }
55
- /**
56
- * SQL analysis result
57
- */
58
- export interface SqlAnalysis {
59
- /** Table name */
60
- table: string;
61
- /** Operation type */
62
- operation: 'SELECT' | 'INSERT' | 'UPDATE' | 'DELETE';
63
- /** WHERE condition keys */
64
- whereKeys: string[];
65
- /** Affected columns */
66
- columns: string[];
67
- /** Organization ID if detected */
68
- organizationId?: string;
69
- }
70
- /**
71
- * Query metadata for caching
72
- */
73
- export interface QueryMetadata {
74
- /** Unique query key */
75
- key: string;
76
- /** Tables this query depends on */
77
- dependencies: string[];
78
- /** Last execution timestamp */
79
- lastExecuted: number;
80
- /** Cache TTL in seconds */
81
- ttl?: number;
82
- /** Organization scope */
83
- organizationId?: string;
84
- }
85
- /**
86
- * Invalidation event
87
- */
88
- export interface InvalidationEvent {
89
- /** Event type */
90
- type: 'invalidation';
91
- /** Affected table */
92
- table: string;
93
- /** Organization ID */
94
- organizationId: string;
95
- /** Affected query keys */
96
- affectedQueries: string[];
97
- /** Event ID for acknowledgment */
98
- eventId: string;
99
- /** Whether this event requires acknowledgment */
100
- requiresAck: boolean;
101
- /** Timestamp */
102
- timestamp: number;
103
- /** SQL operation type (INSERT, UPDATE, DELETE) */
104
- operation?: string;
105
- /** Affected keys from WHERE clause */
106
- affectedKeys?: string[];
107
- }
108
- /**
109
- * Invalidation callback
110
- */
111
- export type InvalidationCallback = (event: InvalidationEvent) => void;
112
- /**
113
- * Client-side query registry
114
- */
115
- export interface QueryRegistry {
116
- /** Organization ID */
117
- organizationId: string;
118
- /** Cached queries */
119
- queries: {
120
- [queryKey: string]: {
121
- lastRevalidated: number;
122
- lastServerChange?: number;
123
- data?: any;
124
- };
125
- };
126
- /** Session information */
127
- session: {
128
- startTime: number;
129
- lastSync: number;
130
- realtimeConnected: boolean;
131
- };
132
- }
133
- /**
134
- * Reactive function definition
135
- */
136
- export interface ReactiveFunctionDefinition<TInput = any, TOutput = any> {
137
- /** Unique function ID */
138
- id: string;
139
- /** Input validation schema */
140
- input: z.ZodSchema<TInput>;
141
- /** Tables this function reads from */
142
- dependencies: string[];
143
- /** Optional fine-grained invalidation rules */
144
- invalidateWhen?: Record<string, (change: TableChange) => boolean>;
145
- /** Function handler */
146
- handler: (params: {
147
- input: TInput;
148
- db: any;
149
- }) => Promise<TOutput>;
150
- }
151
- /**
152
- * Table change information
153
- */
154
- export interface TableChange {
155
- /** Table name */
156
- table: string;
157
- /** Operation type */
158
- operation: 'INSERT' | 'UPDATE' | 'DELETE';
159
- /** Affected keys/IDs */
160
- keys: string[];
161
- /** Organization ID */
162
- organizationId?: string;
163
- }
164
- /**
165
- * Hook state
166
- */
167
- export interface HookState {
168
- /** Query key */
169
- queryKey: string;
170
- /** Is currently active */
171
- isActive: boolean;
172
- /** Last access time */
173
- lastAccess: number;
174
- /** Dependencies */
175
- dependencies: string[];
176
- /** Organization scope */
177
- organizationId?: string;
178
- }
179
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":""}