@agelum/backend 0.1.1 → 0.1.2

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 (69) hide show
  1. package/dist/client/hooks.d.ts +65 -0
  2. package/dist/client/hooks.d.ts.map +1 -0
  3. package/dist/client/index.d.ts +10 -0
  4. package/dist/client/index.d.ts.map +1 -0
  5. package/dist/client/manager.d.ts +137 -0
  6. package/dist/client/manager.d.ts.map +1 -0
  7. package/dist/client/provider.d.ts +25 -0
  8. package/dist/client/provider.d.ts.map +1 -0
  9. package/dist/client/revalidation.d.ts +101 -0
  10. package/dist/client/revalidation.d.ts.map +1 -0
  11. package/dist/client/sse-client.d.ts +81 -0
  12. package/dist/client/sse-client.d.ts.map +1 -0
  13. package/dist/client/storage.d.ts +126 -0
  14. package/dist/client/storage.d.ts.map +1 -0
  15. package/dist/client/trpc.d.ts +12 -0
  16. package/dist/client/trpc.d.ts.map +1 -0
  17. package/dist/client.d.ts +12 -0
  18. package/dist/client.d.ts.map +1 -0
  19. package/dist/config/schema.d.ts +250 -0
  20. package/dist/config/schema.d.ts.map +1 -0
  21. package/dist/config/schema.js +69 -0
  22. package/dist/config/schema.js.map +1 -0
  23. package/dist/core/analyzer.d.ts +15 -0
  24. package/dist/core/analyzer.d.ts.map +1 -0
  25. package/dist/core/driver.d.ts +7 -0
  26. package/dist/core/driver.d.ts.map +1 -0
  27. package/dist/core/driver.js +262 -0
  28. package/dist/core/driver.js.map +1 -0
  29. package/dist/core/function.d.ts +103 -0
  30. package/dist/core/function.d.ts.map +1 -0
  31. package/dist/core/function.js +252 -0
  32. package/dist/core/function.js.map +1 -0
  33. package/dist/core/sse.d.ts +98 -0
  34. package/dist/core/sse.d.ts.map +1 -0
  35. package/dist/core/types.d.ts +196 -0
  36. package/dist/core/types.d.ts.map +1 -0
  37. package/dist/core/types.js +3 -0
  38. package/dist/core/types.js.map +1 -0
  39. package/dist/examples/teamhub-integration.d.ts +56 -0
  40. package/dist/examples/teamhub-integration.d.ts.map +1 -0
  41. package/dist/examples/teamhub-integration.js +192 -0
  42. package/dist/examples/teamhub-integration.js.map +1 -0
  43. package/dist/index.d.ts +40 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +57 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/providers/localStorage.d.ts +13 -0
  48. package/dist/providers/localStorage.d.ts.map +1 -0
  49. package/dist/providers/memory.d.ts +13 -0
  50. package/dist/providers/memory.d.ts.map +1 -0
  51. package/dist/providers/redis.d.ts +14 -0
  52. package/dist/providers/redis.d.ts.map +1 -0
  53. package/dist/server.d.ts +18 -0
  54. package/dist/server.d.ts.map +1 -0
  55. package/dist/server.js +34 -0
  56. package/dist/server.js.map +1 -0
  57. package/dist/trpc/index.d.ts +9 -0
  58. package/dist/trpc/index.d.ts.map +1 -0
  59. package/dist/trpc/index.js +19 -0
  60. package/dist/trpc/index.js.map +1 -0
  61. package/dist/trpc/router.d.ts +76 -0
  62. package/dist/trpc/router.d.ts.map +1 -0
  63. package/dist/trpc/router.js +177 -0
  64. package/dist/trpc/router.js.map +1 -0
  65. package/dist/trpc/types.d.ts +114 -0
  66. package/dist/trpc/types.d.ts.map +1 -0
  67. package/dist/trpc/types.js +6 -0
  68. package/dist/trpc/types.js.map +1 -0
  69. package/package.json +1 -1
@@ -0,0 +1,250 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Configuration schema validation using Zod
4
+ */
5
+ export declare const cacheConfigSchema: z.ZodOptional<z.ZodObject<{
6
+ server: z.ZodOptional<z.ZodObject<{
7
+ provider: z.ZodDefault<z.ZodOptional<z.ZodEnum<["redis", "memory"]>>>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ provider: "redis" | "memory";
10
+ }, {
11
+ provider?: "redis" | "memory" | undefined;
12
+ }>>;
13
+ client: z.ZodOptional<z.ZodObject<{
14
+ provider: z.ZodDefault<z.ZodOptional<z.ZodEnum<["localStorage", "sessionStorage"]>>>;
15
+ }, "strip", z.ZodTypeAny, {
16
+ provider: "localStorage" | "sessionStorage";
17
+ }, {
18
+ provider?: "localStorage" | "sessionStorage" | undefined;
19
+ }>>;
20
+ }, "strip", z.ZodTypeAny, {
21
+ server?: {
22
+ provider: "redis" | "memory";
23
+ } | undefined;
24
+ client?: {
25
+ provider: "localStorage" | "sessionStorage";
26
+ } | undefined;
27
+ }, {
28
+ server?: {
29
+ provider?: "redis" | "memory" | undefined;
30
+ } | undefined;
31
+ client?: {
32
+ provider?: "localStorage" | "sessionStorage" | undefined;
33
+ } | undefined;
34
+ }>>;
35
+ export declare const realtimeConfigSchema: z.ZodOptional<z.ZodObject<{
36
+ enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
37
+ transport: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"sse">>>;
38
+ fallback: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"polling">>>;
39
+ reliability: z.ZodOptional<z.ZodObject<{
40
+ acknowledgments: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
41
+ maxRetries: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
42
+ retryDelays: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>>;
43
+ periodicHeartbeat: z.ZodDefault<z.ZodOptional<z.ZodLiteral<false>>>;
44
+ }, "strip", z.ZodTypeAny, {
45
+ acknowledgments: boolean;
46
+ maxRetries: number;
47
+ retryDelays: number[];
48
+ periodicHeartbeat: false;
49
+ }, {
50
+ acknowledgments?: boolean | undefined;
51
+ maxRetries?: number | undefined;
52
+ retryDelays?: number[] | undefined;
53
+ periodicHeartbeat?: false | undefined;
54
+ }>>;
55
+ }, "strip", z.ZodTypeAny, {
56
+ enabled: boolean;
57
+ transport: "sse";
58
+ fallback: "polling";
59
+ reliability?: {
60
+ acknowledgments: boolean;
61
+ maxRetries: number;
62
+ retryDelays: number[];
63
+ periodicHeartbeat: false;
64
+ } | undefined;
65
+ }, {
66
+ enabled?: boolean | undefined;
67
+ transport?: "sse" | undefined;
68
+ fallback?: "polling" | undefined;
69
+ reliability?: {
70
+ acknowledgments?: boolean | undefined;
71
+ maxRetries?: number | undefined;
72
+ retryDelays?: number[] | undefined;
73
+ periodicHeartbeat?: false | undefined;
74
+ } | undefined;
75
+ }>>;
76
+ export declare const reactiveConfigSchema: z.ZodObject<{
77
+ relations: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>;
78
+ cache: z.ZodOptional<z.ZodObject<{
79
+ server: z.ZodOptional<z.ZodObject<{
80
+ provider: z.ZodDefault<z.ZodOptional<z.ZodEnum<["redis", "memory"]>>>;
81
+ }, "strip", z.ZodTypeAny, {
82
+ provider: "redis" | "memory";
83
+ }, {
84
+ provider?: "redis" | "memory" | undefined;
85
+ }>>;
86
+ client: z.ZodOptional<z.ZodObject<{
87
+ provider: z.ZodDefault<z.ZodOptional<z.ZodEnum<["localStorage", "sessionStorage"]>>>;
88
+ }, "strip", z.ZodTypeAny, {
89
+ provider: "localStorage" | "sessionStorage";
90
+ }, {
91
+ provider?: "localStorage" | "sessionStorage" | undefined;
92
+ }>>;
93
+ }, "strip", z.ZodTypeAny, {
94
+ server?: {
95
+ provider: "redis" | "memory";
96
+ } | undefined;
97
+ client?: {
98
+ provider: "localStorage" | "sessionStorage";
99
+ } | undefined;
100
+ }, {
101
+ server?: {
102
+ provider?: "redis" | "memory" | undefined;
103
+ } | undefined;
104
+ client?: {
105
+ provider?: "localStorage" | "sessionStorage" | undefined;
106
+ } | undefined;
107
+ }>>;
108
+ realtime: z.ZodOptional<z.ZodObject<{
109
+ enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
110
+ transport: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"sse">>>;
111
+ fallback: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"polling">>>;
112
+ reliability: z.ZodOptional<z.ZodObject<{
113
+ acknowledgments: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
114
+ maxRetries: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
115
+ retryDelays: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>>;
116
+ periodicHeartbeat: z.ZodDefault<z.ZodOptional<z.ZodLiteral<false>>>;
117
+ }, "strip", z.ZodTypeAny, {
118
+ acknowledgments: boolean;
119
+ maxRetries: number;
120
+ retryDelays: number[];
121
+ periodicHeartbeat: false;
122
+ }, {
123
+ acknowledgments?: boolean | undefined;
124
+ maxRetries?: number | undefined;
125
+ retryDelays?: number[] | undefined;
126
+ periodicHeartbeat?: false | undefined;
127
+ }>>;
128
+ }, "strip", z.ZodTypeAny, {
129
+ enabled: boolean;
130
+ transport: "sse";
131
+ fallback: "polling";
132
+ reliability?: {
133
+ acknowledgments: boolean;
134
+ maxRetries: number;
135
+ retryDelays: number[];
136
+ periodicHeartbeat: false;
137
+ } | undefined;
138
+ }, {
139
+ enabled?: boolean | undefined;
140
+ transport?: "sse" | undefined;
141
+ fallback?: "polling" | undefined;
142
+ reliability?: {
143
+ acknowledgments?: boolean | undefined;
144
+ maxRetries?: number | undefined;
145
+ retryDelays?: number[] | undefined;
146
+ periodicHeartbeat?: false | undefined;
147
+ } | undefined;
148
+ }>>;
149
+ }, "strip", z.ZodTypeAny, {
150
+ relations: Record<string, string[]>;
151
+ cache?: {
152
+ server?: {
153
+ provider: "redis" | "memory";
154
+ } | undefined;
155
+ client?: {
156
+ provider: "localStorage" | "sessionStorage";
157
+ } | undefined;
158
+ } | undefined;
159
+ realtime?: {
160
+ enabled: boolean;
161
+ transport: "sse";
162
+ fallback: "polling";
163
+ reliability?: {
164
+ acknowledgments: boolean;
165
+ maxRetries: number;
166
+ retryDelays: number[];
167
+ periodicHeartbeat: false;
168
+ } | undefined;
169
+ } | undefined;
170
+ }, {
171
+ relations: Record<string, string[]>;
172
+ cache?: {
173
+ server?: {
174
+ provider?: "redis" | "memory" | undefined;
175
+ } | undefined;
176
+ client?: {
177
+ provider?: "localStorage" | "sessionStorage" | undefined;
178
+ } | undefined;
179
+ } | undefined;
180
+ realtime?: {
181
+ enabled?: boolean | undefined;
182
+ transport?: "sse" | undefined;
183
+ fallback?: "polling" | undefined;
184
+ reliability?: {
185
+ acknowledgments?: boolean | undefined;
186
+ maxRetries?: number | undefined;
187
+ retryDelays?: number[] | undefined;
188
+ periodicHeartbeat?: false | undefined;
189
+ } | undefined;
190
+ } | undefined;
191
+ }>;
192
+ export declare const reactiveFunctionConfigSchema: z.ZodObject<{
193
+ id: z.ZodString;
194
+ input: z.ZodAny;
195
+ dependencies: z.ZodArray<z.ZodString, "many">;
196
+ invalidateWhen: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>>>;
197
+ handler: z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>;
198
+ }, "strip", z.ZodTypeAny, {
199
+ id: string;
200
+ dependencies: string[];
201
+ handler: (...args: unknown[]) => unknown;
202
+ input?: any;
203
+ invalidateWhen?: Record<string, (...args: unknown[]) => unknown> | undefined;
204
+ }, {
205
+ id: string;
206
+ dependencies: string[];
207
+ handler: (...args: unknown[]) => unknown;
208
+ input?: any;
209
+ invalidateWhen?: Record<string, (...args: unknown[]) => unknown> | undefined;
210
+ }>;
211
+ export declare const invalidationRuleSchema: z.ZodObject<{
212
+ table: z.ZodString;
213
+ condition: z.ZodOptional<z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>>;
214
+ scope: z.ZodDefault<z.ZodOptional<z.ZodEnum<["global", "organization", "user"]>>>;
215
+ }, "strip", z.ZodTypeAny, {
216
+ table: string;
217
+ scope: "organization" | "global" | "user";
218
+ condition?: ((...args: unknown[]) => unknown) | undefined;
219
+ }, {
220
+ table: string;
221
+ condition?: ((...args: unknown[]) => unknown) | undefined;
222
+ scope?: "organization" | "global" | "user" | undefined;
223
+ }>;
224
+ export declare const cacheStrategySchema: z.ZodObject<{
225
+ ttl: z.ZodOptional<z.ZodNumber>;
226
+ staleWhileRevalidate: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
227
+ backgroundRevalidation: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
228
+ priority: z.ZodDefault<z.ZodOptional<z.ZodEnum<["high", "medium", "low"]>>>;
229
+ }, "strip", z.ZodTypeAny, {
230
+ staleWhileRevalidate: boolean;
231
+ backgroundRevalidation: boolean;
232
+ priority: "high" | "medium" | "low";
233
+ ttl?: number | undefined;
234
+ }, {
235
+ ttl?: number | undefined;
236
+ staleWhileRevalidate?: boolean | undefined;
237
+ backgroundRevalidation?: boolean | undefined;
238
+ priority?: "high" | "medium" | "low" | undefined;
239
+ }>;
240
+ /**
241
+ * Type exports from schemas
242
+ */
243
+ export type ReactiveConfigSchema = z.infer<typeof reactiveConfigSchema>;
244
+ export type ReactiveFunctionConfigSchema = z.infer<typeof reactiveFunctionConfigSchema>;
245
+ export type InvalidationRule = z.infer<typeof invalidationRuleSchema>;
246
+ export type CacheStrategy = z.infer<typeof cacheStrategySchema>;
247
+ export type RealtimeConfig = z.infer<typeof realtimeConfigSchema>;
248
+ export type { ReactiveFunction, ReactiveFunctionConfig, } from '../core/function';
249
+ export type { ReactiveConfig, } from '../core/types';
250
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;GAEG;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgBjB,CAAA;AAEb,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiBpB,CAAA;AAEb,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI/B,CAAA;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;EAMvC,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;EAOjC,CAAA;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAK9B,CAAA;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AACvE,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAChD,OAAO,4BAA4B,CACpC,CAAA;AACD,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AACrE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAIjE,YAAY,EACV,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,kBAAkB,CAAA;AAEzB,YAAY,EACV,cAAc,GACf,MAAM,eAAe,CAAA"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cacheStrategySchema = exports.invalidationRuleSchema = exports.reactiveFunctionConfigSchema = exports.reactiveConfigSchema = exports.realtimeConfigSchema = exports.cacheConfigSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ /**
6
+ * Configuration schema validation using Zod
7
+ */
8
+ exports.cacheConfigSchema = zod_1.z
9
+ .object({
10
+ server: zod_1.z
11
+ .object({
12
+ provider: zod_1.z.enum(['redis', 'memory']).optional().default('memory'),
13
+ })
14
+ .optional(),
15
+ client: zod_1.z
16
+ .object({
17
+ provider: zod_1.z
18
+ .enum(['localStorage', 'sessionStorage'])
19
+ .optional()
20
+ .default('localStorage'),
21
+ })
22
+ .optional(),
23
+ })
24
+ .optional();
25
+ exports.realtimeConfigSchema = zod_1.z
26
+ .object({
27
+ enabled: zod_1.z.boolean().optional().default(true),
28
+ transport: zod_1.z.literal('sse').optional().default('sse'),
29
+ fallback: zod_1.z.literal('polling').optional().default('polling'),
30
+ reliability: zod_1.z
31
+ .object({
32
+ acknowledgments: zod_1.z.boolean().optional().default(true),
33
+ maxRetries: zod_1.z.number().optional().default(3),
34
+ retryDelays: zod_1.z
35
+ .array(zod_1.z.number())
36
+ .optional()
37
+ .default([2000, 5000, 10000]),
38
+ periodicHeartbeat: zod_1.z.literal(false).optional().default(false),
39
+ })
40
+ .optional(),
41
+ })
42
+ .optional();
43
+ exports.reactiveConfigSchema = zod_1.z.object({
44
+ relations: zod_1.z.record(zod_1.z.string(), zod_1.z.array(zod_1.z.string())),
45
+ cache: exports.cacheConfigSchema,
46
+ realtime: exports.realtimeConfigSchema,
47
+ });
48
+ exports.reactiveFunctionConfigSchema = zod_1.z.object({
49
+ id: zod_1.z.string(),
50
+ input: zod_1.z.any(), // Zod schema
51
+ dependencies: zod_1.z.array(zod_1.z.string()),
52
+ invalidateWhen: zod_1.z.record(zod_1.z.string(), zod_1.z.function()).optional(),
53
+ handler: zod_1.z.function(),
54
+ });
55
+ exports.invalidationRuleSchema = zod_1.z.object({
56
+ table: zod_1.z.string(),
57
+ condition: zod_1.z.function().optional(),
58
+ scope: zod_1.z
59
+ .enum(['global', 'organization', 'user'])
60
+ .optional()
61
+ .default('organization'),
62
+ });
63
+ exports.cacheStrategySchema = zod_1.z.object({
64
+ ttl: zod_1.z.number().optional(),
65
+ staleWhileRevalidate: zod_1.z.boolean().optional().default(true),
66
+ backgroundRevalidation: zod_1.z.boolean().optional().default(true),
67
+ priority: zod_1.z.enum(['high', 'medium', 'low']).optional().default('medium'),
68
+ });
69
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { SqlAnalysis } from './types';
2
+ /**
3
+ * Advanced SQL analyzer that extracts metadata from queries
4
+ * This is core to the reactive system's intelligence
5
+ */
6
+ export declare function analyzeSql(sql: string, params?: any[]): SqlAnalysis;
7
+ /**
8
+ * Utility function to check if a query affects a specific table
9
+ */
10
+ export declare function queryAffectsTable(sql: string, tableName: string): boolean;
11
+ /**
12
+ * Utility function to extract all table references from a complex query
13
+ */
14
+ export declare function extractAllTableReferences(sql: string): string[];
15
+ //# sourceMappingURL=analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/core/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,WAAW,CA0BnE;AA2LD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAGzE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAsB/D"}
@@ -0,0 +1,7 @@
1
+ import type { ReactiveConfig, ReactiveDb, DrizzleDatabase } from './types';
2
+ /**
3
+ * Create a reactive database instance
4
+ * This is the main entry point for the library
5
+ */
6
+ export declare function createReactiveDb<TDrizzle extends DrizzleDatabase>(drizzleDb: TDrizzle, config: ReactiveConfig): ReactiveDb<TDrizzle>;
7
+ //# sourceMappingURL=driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/core/driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,eAAe,EAKhB,MAAM,SAAS,CAAA;AA6ShB;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,SAAS,eAAe,EAC/D,SAAS,EAAE,QAAQ,EACnB,MAAM,EAAE,cAAc,GACrB,UAAU,CAAC,QAAQ,CAAC,CAgBtB"}
@@ -0,0 +1,262 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createReactiveDb = createReactiveDb;
4
+ const analyzer_1 = require("./analyzer");
5
+ const memory_1 = require("../providers/memory");
6
+ const redis_1 = require("../providers/redis");
7
+ const sse_1 = require("./sse");
8
+ /**
9
+ * Reactive SQL driver that intercepts all Drizzle operations
10
+ */
11
+ class ReactiveSqlDriver {
12
+ originalDb;
13
+ config;
14
+ cache;
15
+ subscribers = new Map();
16
+ queryMetadata = new Map();
17
+ constructor(originalDb, config) {
18
+ this.originalDb = originalDb;
19
+ this.config = config;
20
+ // Initialize cache provider based on config
21
+ this.cache = this.initializeCacheProvider();
22
+ // Wrap the original database methods
23
+ this.wrapDrizzleMethods();
24
+ }
25
+ initializeCacheProvider() {
26
+ const provider = this.config.cache?.server?.provider || 'memory';
27
+ switch (provider) {
28
+ case 'redis':
29
+ return new redis_1.RedisProvider();
30
+ case 'memory':
31
+ default:
32
+ return new memory_1.MemoryProvider();
33
+ }
34
+ }
35
+ wrapDrizzleMethods() {
36
+ // Intercept the execute method which is the core SQL execution point
37
+ if (this.originalDb.execute) {
38
+ const originalExecute = this.originalDb.execute.bind(this.originalDb);
39
+ this.originalDb.execute = async (query, params) => {
40
+ return this.interceptQuery(query, params, () => originalExecute(query, params));
41
+ };
42
+ }
43
+ // Intercept select/insert/update/delete methods
44
+ const methods = ['select', 'insert', 'update', 'delete'];
45
+ methods.forEach((method) => {
46
+ const dbMethod = this.originalDb[method];
47
+ if (dbMethod) {
48
+ const originalMethod = dbMethod.bind(this.originalDb);
49
+ this.originalDb[method] = (...args) => {
50
+ const queryBuilder = originalMethod(...args);
51
+ return this.wrapQueryBuilder(queryBuilder, method.toUpperCase());
52
+ };
53
+ }
54
+ });
55
+ }
56
+ wrapQueryBuilder(queryBuilder, operation) {
57
+ // Wrap query execution methods
58
+ if (queryBuilder.execute) {
59
+ const originalExecute = queryBuilder.execute.bind(queryBuilder);
60
+ queryBuilder.execute = async () => {
61
+ const sql = queryBuilder.toSQL?.() || { sql: 'unknown', params: [] };
62
+ return this.interceptQuery(sql, sql.params, originalExecute);
63
+ };
64
+ }
65
+ // Wrap other execution methods like .all(), .get(), etc.
66
+ const execMethods = ['all', 'get', 'run', 'values'];
67
+ execMethods.forEach((method) => {
68
+ if (queryBuilder[method]) {
69
+ const originalMethod = queryBuilder[method].bind(queryBuilder);
70
+ queryBuilder[method] = async () => {
71
+ const sql = queryBuilder.toSQL?.() || { sql: 'unknown', params: [] };
72
+ return this.interceptQuery(sql, sql.params, originalMethod);
73
+ };
74
+ }
75
+ });
76
+ return queryBuilder;
77
+ }
78
+ async interceptQuery(query, params = [], originalExecute) {
79
+ // Extract SQL string from query object or use directly
80
+ const sqlString = typeof query === 'string' ? query : query.sql || 'unknown';
81
+ const queryParams = params || query.params || [];
82
+ // Analyze the SQL to understand what it does
83
+ const analysis = (0, analyzer_1.analyzeSql)(sqlString, queryParams);
84
+ const cacheKey = this.generateCacheKey(analysis, queryParams);
85
+ // Handle SELECT queries with caching
86
+ if (analysis.operation === 'SELECT') {
87
+ return this.handleSelectQuery(analysis, cacheKey, originalExecute);
88
+ }
89
+ // Handle mutations (INSERT/UPDATE/DELETE) with invalidation
90
+ return this.handleMutationQuery(analysis, originalExecute);
91
+ }
92
+ generateCacheKey(analysis, params) {
93
+ // Create a deterministic cache key from the query
94
+ const keyParts = [
95
+ analysis.table,
96
+ analysis.operation,
97
+ JSON.stringify(analysis.whereKeys.sort()),
98
+ JSON.stringify(params),
99
+ ];
100
+ return keyParts.join(':');
101
+ }
102
+ async handleSelectQuery(analysis, cacheKey, originalExecute) {
103
+ // Try to get from cache first
104
+ const cached = await this.cache.get(cacheKey);
105
+ if (cached) {
106
+ console.log(`[ReactiveDB] Cache hit for ${analysis.table}`);
107
+ return cached;
108
+ }
109
+ // Execute the original query
110
+ console.log(`[ReactiveDB] Cache miss, executing query on ${analysis.table}`);
111
+ const result = await originalExecute();
112
+ // Cache the result
113
+ const ttl = this.getTtlForTable(analysis.table);
114
+ await this.cache.set(cacheKey, result, ttl);
115
+ // Store query metadata for invalidation
116
+ this.queryMetadata.set(cacheKey, {
117
+ key: cacheKey,
118
+ dependencies: [analysis.table],
119
+ lastExecuted: Date.now(),
120
+ ttl,
121
+ organizationId: analysis.organizationId,
122
+ });
123
+ return result;
124
+ }
125
+ async handleMutationQuery(analysis, originalExecute) {
126
+ console.log(`🔥 [ReactiveDB] MUTATION DETECTED: ${analysis.operation} on ${analysis.table} - This WILL trigger SSE broadcast`);
127
+ // Execute the mutation
128
+ const result = await originalExecute();
129
+ // Invalidate related queries
130
+ await this.invalidateRelatedQueries(analysis);
131
+ // Broadcast invalidation events
132
+ await this.broadcastInvalidation(analysis);
133
+ return result;
134
+ }
135
+ async invalidateRelatedQueries(analysis) {
136
+ const { table } = analysis;
137
+ const relatedTables = this.config.relations[table] || [];
138
+ // Find all queries that depend on this table or related tables
139
+ const tablesToInvalidate = [table, ...relatedTables];
140
+ const keysToInvalidate = [];
141
+ for (const [cacheKey, metadata] of this.queryMetadata.entries()) {
142
+ const shouldInvalidate = metadata.dependencies.some((dep) => tablesToInvalidate.includes(dep));
143
+ if (shouldInvalidate) {
144
+ keysToInvalidate.push(cacheKey);
145
+ }
146
+ }
147
+ // Invalidate cache entries
148
+ console.log(`[ReactiveDB] Invalidating ${keysToInvalidate.length} cached queries for ${table}`);
149
+ await Promise.all(keysToInvalidate.map((key) => this.cache.del(key)));
150
+ // Remove metadata for invalidated queries
151
+ keysToInvalidate.forEach((key) => this.queryMetadata.delete(key));
152
+ }
153
+ async broadcastInvalidation(analysis) {
154
+ const { table, organizationId } = analysis;
155
+ if (!organizationId)
156
+ return;
157
+ const subscribers = this.subscribers.get(organizationId);
158
+ if (!subscribers)
159
+ return;
160
+ // Create invalidation event
161
+ const event = {
162
+ type: 'invalidation',
163
+ table,
164
+ organizationId,
165
+ affectedQueries: Array.from(this.queryMetadata.keys()).filter((key) => {
166
+ const metadata = this.queryMetadata.get(key);
167
+ return metadata?.dependencies.includes(table);
168
+ }),
169
+ eventId: `evt_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
170
+ requiresAck: true,
171
+ timestamp: Date.now(),
172
+ };
173
+ // Notify all subscribers
174
+ subscribers.forEach((callback) => {
175
+ try {
176
+ callback(event);
177
+ }
178
+ catch (error) {
179
+ console.error('[ReactiveDB] Error in invalidation callback:', error);
180
+ }
181
+ });
182
+ // Broadcast to SSE subscribers for real-time updates
183
+ try {
184
+ await (0, sse_1.broadcastInvalidation)(organizationId, {
185
+ type: 'invalidation',
186
+ table,
187
+ organizationId,
188
+ affectedQueries: event.affectedQueries,
189
+ timestamp: Date.now(),
190
+ operation: analysis.operation,
191
+ affectedKeys: analysis.whereKeys,
192
+ });
193
+ console.log(`[ReactiveDriver] SSE broadcast sent for org: ${organizationId}, table: ${table}`);
194
+ }
195
+ catch (error) {
196
+ console.warn('[ReactiveDriver] SSE broadcast failed:', error);
197
+ // Continue execution - local invalidation still works
198
+ }
199
+ }
200
+ getTtlForTable(table) {
201
+ // Smart TTL based on table type
202
+ switch (table) {
203
+ case 'agent':
204
+ case 'organization':
205
+ return 300; // 5 minutes for relatively stable data
206
+ case 'message':
207
+ return 60; // 1 minute for frequently changing data
208
+ case 'memory':
209
+ return 180; // 3 minutes for memory data
210
+ default:
211
+ return 120; // 2 minutes default
212
+ }
213
+ }
214
+ // Public methods for the ReactiveDb interface
215
+ async query(sql, params) {
216
+ return this.interceptQuery(sql, params, async () => {
217
+ return await this.originalDb.execute(sql, params);
218
+ });
219
+ }
220
+ getCache() {
221
+ return this.cache;
222
+ }
223
+ subscribe(organizationId, callback) {
224
+ if (!this.subscribers.has(organizationId)) {
225
+ this.subscribers.set(organizationId, new Set());
226
+ }
227
+ this.subscribers.get(organizationId).add(callback);
228
+ // Return unsubscribe function
229
+ return () => {
230
+ const orgSubscribers = this.subscribers.get(organizationId);
231
+ if (orgSubscribers) {
232
+ orgSubscribers.delete(callback);
233
+ if (orgSubscribers.size === 0) {
234
+ this.subscribers.delete(organizationId);
235
+ }
236
+ }
237
+ };
238
+ }
239
+ getOriginalDb() {
240
+ return this.originalDb;
241
+ }
242
+ }
243
+ /**
244
+ * Create a reactive database instance
245
+ * This is the main entry point for the library
246
+ */
247
+ function createReactiveDb(drizzleDb, config) {
248
+ console.log('[ReactiveDB] Initializing reactive database with config:', {
249
+ relations: Object.keys(config.relations),
250
+ cacheProvider: config.cache?.server?.provider || 'memory',
251
+ realtimeEnabled: config.realtime?.enabled ?? true,
252
+ });
253
+ const driver = new ReactiveSqlDriver(drizzleDb, config);
254
+ return {
255
+ db: driver.getOriginalDb(),
256
+ config,
257
+ query: driver.query.bind(driver),
258
+ getCache: driver.getCache.bind(driver),
259
+ subscribe: driver.subscribe.bind(driver),
260
+ };
261
+ }
262
+ //# sourceMappingURL=driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../src/core/driver.ts"],"names":[],"mappings":"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"}