@bhushanpawar/sqldb 1.0.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 (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +811 -0
  3. package/dist/best-practice-example.d.ts +35 -0
  4. package/dist/best-practice-example.d.ts.map +1 -0
  5. package/dist/best-practice-example.js +171 -0
  6. package/dist/best-practice-example.js.map +1 -0
  7. package/dist/cache/cache-key-builder.d.ts +17 -0
  8. package/dist/cache/cache-key-builder.d.ts.map +1 -0
  9. package/dist/cache/cache-key-builder.js +100 -0
  10. package/dist/cache/cache-key-builder.js.map +1 -0
  11. package/dist/cache/cache-manager.d.ts +22 -0
  12. package/dist/cache/cache-manager.d.ts.map +1 -0
  13. package/dist/cache/cache-manager.js +124 -0
  14. package/dist/cache/cache-manager.js.map +1 -0
  15. package/dist/cache/invalidation.d.ts +15 -0
  16. package/dist/cache/invalidation.d.ts.map +1 -0
  17. package/dist/cache/invalidation.js +59 -0
  18. package/dist/cache/invalidation.js.map +1 -0
  19. package/dist/client.d.ts +40 -0
  20. package/dist/client.d.ts.map +1 -0
  21. package/dist/client.js +146 -0
  22. package/dist/client.js.map +1 -0
  23. package/dist/connection/mariadb.d.ts +17 -0
  24. package/dist/connection/mariadb.d.ts.map +1 -0
  25. package/dist/connection/mariadb.js +116 -0
  26. package/dist/connection/mariadb.js.map +1 -0
  27. package/dist/connection/redis.d.ts +20 -0
  28. package/dist/connection/redis.d.ts.map +1 -0
  29. package/dist/connection/redis.js +168 -0
  30. package/dist/connection/redis.js.map +1 -0
  31. package/dist/demo-debug.d.ts +2 -0
  32. package/dist/demo-debug.d.ts.map +1 -0
  33. package/dist/demo-debug.js +36 -0
  34. package/dist/demo-debug.js.map +1 -0
  35. package/dist/discovery/dependency-graph.d.ts +20 -0
  36. package/dist/discovery/dependency-graph.d.ts.map +1 -0
  37. package/dist/discovery/dependency-graph.js +89 -0
  38. package/dist/discovery/dependency-graph.js.map +1 -0
  39. package/dist/discovery/relationship-parser.d.ts +10 -0
  40. package/dist/discovery/relationship-parser.d.ts.map +1 -0
  41. package/dist/discovery/relationship-parser.js +40 -0
  42. package/dist/discovery/relationship-parser.js.map +1 -0
  43. package/dist/discovery/schema-reader.d.ts +15 -0
  44. package/dist/discovery/schema-reader.d.ts.map +1 -0
  45. package/dist/discovery/schema-reader.js +82 -0
  46. package/dist/discovery/schema-reader.js.map +1 -0
  47. package/dist/hooks/hooks-manager.d.ts +22 -0
  48. package/dist/hooks/hooks-manager.d.ts.map +1 -0
  49. package/dist/hooks/hooks-manager.js +117 -0
  50. package/dist/hooks/hooks-manager.js.map +1 -0
  51. package/dist/index.d.ts +20 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +52 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/query/operations.d.ts +31 -0
  56. package/dist/query/operations.d.ts.map +1 -0
  57. package/dist/query/operations.js +204 -0
  58. package/dist/query/operations.js.map +1 -0
  59. package/dist/query/query-builder.d.ts +15 -0
  60. package/dist/query/query-builder.d.ts.map +1 -0
  61. package/dist/query/query-builder.js +169 -0
  62. package/dist/query/query-builder.js.map +1 -0
  63. package/dist/query/query-tracker.d.ts +13 -0
  64. package/dist/query/query-tracker.d.ts.map +1 -0
  65. package/dist/query/query-tracker.js +84 -0
  66. package/dist/query/query-tracker.js.map +1 -0
  67. package/dist/query/table-proxy.d.ts +11 -0
  68. package/dist/query/table-proxy.d.ts.map +1 -0
  69. package/dist/query/table-proxy.js +25 -0
  70. package/dist/query/table-proxy.js.map +1 -0
  71. package/dist/smart-cache/cache/cache-key-builder.d.ts +17 -0
  72. package/dist/smart-cache/cache/cache-key-builder.d.ts.map +1 -0
  73. package/dist/smart-cache/cache/cache-key-builder.js +100 -0
  74. package/dist/smart-cache/cache/cache-key-builder.js.map +1 -0
  75. package/dist/smart-cache/cache/cache-manager.d.ts +22 -0
  76. package/dist/smart-cache/cache/cache-manager.d.ts.map +1 -0
  77. package/dist/smart-cache/cache/cache-manager.js +124 -0
  78. package/dist/smart-cache/cache/cache-manager.js.map +1 -0
  79. package/dist/smart-cache/cache/invalidation.d.ts +15 -0
  80. package/dist/smart-cache/cache/invalidation.d.ts.map +1 -0
  81. package/dist/smart-cache/cache/invalidation.js +59 -0
  82. package/dist/smart-cache/cache/invalidation.js.map +1 -0
  83. package/dist/smart-cache/client.d.ts +36 -0
  84. package/dist/smart-cache/client.d.ts.map +1 -0
  85. package/dist/smart-cache/client.js +138 -0
  86. package/dist/smart-cache/client.js.map +1 -0
  87. package/dist/smart-cache/connection/mariadb.d.ts +14 -0
  88. package/dist/smart-cache/connection/mariadb.d.ts.map +1 -0
  89. package/dist/smart-cache/connection/mariadb.js +82 -0
  90. package/dist/smart-cache/connection/mariadb.js.map +1 -0
  91. package/dist/smart-cache/connection/redis.d.ts +20 -0
  92. package/dist/smart-cache/connection/redis.d.ts.map +1 -0
  93. package/dist/smart-cache/connection/redis.js +168 -0
  94. package/dist/smart-cache/connection/redis.js.map +1 -0
  95. package/dist/smart-cache/discovery/dependency-graph.d.ts +20 -0
  96. package/dist/smart-cache/discovery/dependency-graph.d.ts.map +1 -0
  97. package/dist/smart-cache/discovery/dependency-graph.js +89 -0
  98. package/dist/smart-cache/discovery/dependency-graph.js.map +1 -0
  99. package/dist/smart-cache/discovery/relationship-parser.d.ts +10 -0
  100. package/dist/smart-cache/discovery/relationship-parser.d.ts.map +1 -0
  101. package/dist/smart-cache/discovery/relationship-parser.js +40 -0
  102. package/dist/smart-cache/discovery/relationship-parser.js.map +1 -0
  103. package/dist/smart-cache/discovery/schema-reader.d.ts +15 -0
  104. package/dist/smart-cache/discovery/schema-reader.d.ts.map +1 -0
  105. package/dist/smart-cache/discovery/schema-reader.js +82 -0
  106. package/dist/smart-cache/discovery/schema-reader.js.map +1 -0
  107. package/dist/smart-cache/examples/basic-usage.d.ts +3 -0
  108. package/dist/smart-cache/examples/basic-usage.d.ts.map +1 -0
  109. package/dist/smart-cache/examples/basic-usage.js +105 -0
  110. package/dist/smart-cache/examples/basic-usage.js.map +1 -0
  111. package/dist/smart-cache/examples/hooks-example.d.ts +3 -0
  112. package/dist/smart-cache/examples/hooks-example.d.ts.map +1 -0
  113. package/dist/smart-cache/examples/hooks-example.js +133 -0
  114. package/dist/smart-cache/examples/hooks-example.js.map +1 -0
  115. package/dist/smart-cache/examples/relationships-example.d.ts +3 -0
  116. package/dist/smart-cache/examples/relationships-example.d.ts.map +1 -0
  117. package/dist/smart-cache/examples/relationships-example.js +88 -0
  118. package/dist/smart-cache/examples/relationships-example.js.map +1 -0
  119. package/dist/smart-cache/hooks/hooks-manager.d.ts +22 -0
  120. package/dist/smart-cache/hooks/hooks-manager.d.ts.map +1 -0
  121. package/dist/smart-cache/hooks/hooks-manager.js +117 -0
  122. package/dist/smart-cache/hooks/hooks-manager.js.map +1 -0
  123. package/dist/smart-cache/index.d.ts +19 -0
  124. package/dist/smart-cache/index.d.ts.map +1 -0
  125. package/dist/smart-cache/index.js +49 -0
  126. package/dist/smart-cache/index.js.map +1 -0
  127. package/dist/smart-cache/query/operations.d.ts +31 -0
  128. package/dist/smart-cache/query/operations.d.ts.map +1 -0
  129. package/dist/smart-cache/query/operations.js +187 -0
  130. package/dist/smart-cache/query/operations.js.map +1 -0
  131. package/dist/smart-cache/query/query-builder.d.ts +15 -0
  132. package/dist/smart-cache/query/query-builder.d.ts.map +1 -0
  133. package/dist/smart-cache/query/query-builder.js +169 -0
  134. package/dist/smart-cache/query/query-builder.js.map +1 -0
  135. package/dist/smart-cache/query/table-proxy.d.ts +11 -0
  136. package/dist/smart-cache/query/table-proxy.d.ts.map +1 -0
  137. package/dist/smart-cache/query/table-proxy.js +25 -0
  138. package/dist/smart-cache/query/table-proxy.js.map +1 -0
  139. package/dist/smart-cache/types/cache.d.ts +29 -0
  140. package/dist/smart-cache/types/cache.d.ts.map +1 -0
  141. package/dist/smart-cache/types/cache.js +10 -0
  142. package/dist/smart-cache/types/cache.js.map +1 -0
  143. package/dist/smart-cache/types/config.d.ts +47 -0
  144. package/dist/smart-cache/types/config.d.ts.map +1 -0
  145. package/dist/smart-cache/types/config.js +27 -0
  146. package/dist/smart-cache/types/config.js.map +1 -0
  147. package/dist/smart-cache/types/query.d.ts +36 -0
  148. package/dist/smart-cache/types/query.d.ts.map +1 -0
  149. package/dist/smart-cache/types/query.js +3 -0
  150. package/dist/smart-cache/types/query.js.map +1 -0
  151. package/dist/smart-cache/types/schema.d.ts +25 -0
  152. package/dist/smart-cache/types/schema.d.ts.map +1 -0
  153. package/dist/smart-cache/types/schema.js +3 -0
  154. package/dist/smart-cache/types/schema.js.map +1 -0
  155. package/dist/trial.d.ts +7 -0
  156. package/dist/trial.d.ts.map +1 -0
  157. package/dist/trial.js +30 -0
  158. package/dist/trial.js.map +1 -0
  159. package/dist/types/cache.d.ts +29 -0
  160. package/dist/types/cache.d.ts.map +1 -0
  161. package/dist/types/cache.js +10 -0
  162. package/dist/types/cache.js.map +1 -0
  163. package/dist/types/config.d.ts +47 -0
  164. package/dist/types/config.d.ts.map +1 -0
  165. package/dist/types/config.js +27 -0
  166. package/dist/types/config.js.map +1 -0
  167. package/dist/types/query.d.ts +55 -0
  168. package/dist/types/query.d.ts.map +1 -0
  169. package/dist/types/query.js +3 -0
  170. package/dist/types/query.js.map +1 -0
  171. package/dist/types/schema.d.ts +25 -0
  172. package/dist/types/schema.d.ts.map +1 -0
  173. package/dist/types/schema.js +3 -0
  174. package/dist/types/schema.js.map +1 -0
  175. package/package.json +71 -0
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Best Practice Example for MariaDB Cache
3
+ *
4
+ * Key Performance Tips:
5
+ * 1. Create pool once and reuse it (singleton pattern)
6
+ * 2. Use appropriate TTL based on your data update frequency
7
+ * 3. Set maxSize based on your query patterns
8
+ * 4. Enable debug in development, disable in production
9
+ * 5. Monitor cache hit rates and adjust settings
10
+ */
11
+ declare class DatabaseService {
12
+ private static instance;
13
+ private pool;
14
+ private constructor();
15
+ static getInstance(): DatabaseService;
16
+ getUsers(limit?: number): Promise<any>;
17
+ getUserById(userId: number | string): Promise<any>;
18
+ searchUsers(username: string): Promise<any>;
19
+ updateUser(userId: number | string, data: any): Promise<any>;
20
+ getCachePerformance(): {
21
+ hitRate: string;
22
+ efficiency: string;
23
+ size: number;
24
+ maxSize: number;
25
+ ttl: number;
26
+ enabled: boolean;
27
+ hits?: number;
28
+ misses?: number;
29
+ evictions?: number;
30
+ };
31
+ resetStats(): void;
32
+ close(): Promise<void>;
33
+ }
34
+ export default DatabaseService;
35
+ //# sourceMappingURL=best-practice-example.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"best-practice-example.d.ts","sourceRoot":"","sources":["../src/best-practice-example.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,cAAM,eAAe;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IACzC,OAAO,CAAC,IAAI,CAAe;IAE3B,OAAO;WAqBO,WAAW,IAAI,eAAe;IAQtC,QAAQ,CAAC,KAAK,GAAE,MAAW;IAK3B,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAKnC,WAAW,CAAC,QAAQ,EAAE,MAAM;IAQ5B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG;IAWnD,mBAAmB;;;;;;;;;;;IAcnB,UAAU;IAKJ,KAAK;CAGd;AAoHD,eAAe,eAAe,CAAC"}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("./index");
4
+ /**
5
+ * Best Practice Example for MariaDB Cache
6
+ *
7
+ * Key Performance Tips:
8
+ * 1. Create pool once and reuse it (singleton pattern)
9
+ * 2. Use appropriate TTL based on your data update frequency
10
+ * 3. Set maxSize based on your query patterns
11
+ * 4. Enable debug in development, disable in production
12
+ * 5. Monitor cache hit rates and adjust settings
13
+ */
14
+ class DatabaseService {
15
+ constructor() {
16
+ this.pool = (0, index_1.createPool)({
17
+ host: process.env.DB_HOST || 'localhost',
18
+ user: process.env.DB_USER || 'root',
19
+ password: process.env.DB_PASSWORD || 'password',
20
+ database: process.env.DB_NAME || 'mydb',
21
+ port: parseInt(process.env.DB_PORT || '3306'),
22
+ connectionLimit: 10,
23
+ // Performance optimizations
24
+ compress: true, // Enable compression for large result sets
25
+ }, {
26
+ // Cache configuration
27
+ ttl: 30000, // 30 seconds - adjust based on data freshness needs
28
+ maxSize: 100, // Cache up to 100 different queries
29
+ enabled: true, // Enable caching
30
+ debug: process.env.NODE_ENV === 'development', // Debug only in dev
31
+ });
32
+ }
33
+ // Singleton pattern - create pool once, reuse everywhere
34
+ static getInstance() {
35
+ if (!DatabaseService.instance) {
36
+ DatabaseService.instance = new DatabaseService();
37
+ }
38
+ return DatabaseService.instance;
39
+ }
40
+ // Get users - frequently accessed, good for caching
41
+ async getUsers(limit = 10) {
42
+ return this.pool.query('SELECT * FROM user LIMIT ?', [limit]);
43
+ }
44
+ // Get user by ID - perfect for caching (same query repeated often)
45
+ async getUserById(userId) {
46
+ return this.pool.query('SELECT * FROM users WHERE id = ?', [userId]);
47
+ }
48
+ // Search users - less predictable, but still cacheable
49
+ async searchUsers(username) {
50
+ return this.pool.query('SELECT * FROM users WHERE username LIKE ? LIMIT 20', [`%${username}%`]);
51
+ }
52
+ // Update user - mutations should NOT use cache
53
+ async updateUser(userId, data) {
54
+ // Clear related cache entries after mutation
55
+ this.pool.clearCache('SELECT * FROM users WHERE id');
56
+ return this.pool.query('UPDATE users SET updated_at = NOW() WHERE id = ?', [userId]);
57
+ }
58
+ // Get cache statistics - monitor performance
59
+ getCachePerformance() {
60
+ const stats = this.pool.getCacheStats();
61
+ const hitRate = stats.hits && stats.misses
62
+ ? ((stats.hits / (stats.hits + stats.misses)) * 100).toFixed(2)
63
+ : '0.00';
64
+ return {
65
+ ...stats,
66
+ hitRate: `${hitRate}%`,
67
+ efficiency: hitRate,
68
+ };
69
+ }
70
+ // Reset stats - useful for testing
71
+ resetStats() {
72
+ this.pool.resetStats();
73
+ }
74
+ // Graceful shutdown
75
+ async close() {
76
+ await this.pool.end();
77
+ }
78
+ }
79
+ // Example usage
80
+ async function demonstratePerformance() {
81
+ const db = DatabaseService.getInstance();
82
+ console.log('\n=== Performance Demonstration ===\n');
83
+ // First query - CACHE MISS (will take ~2000ms for remote DB)
84
+ console.log('1. First query (Cache Miss - hits database):');
85
+ console.time('Query 1');
86
+ await db.getUserById('b5a0179c-556c-4884-9243-00293be5656f');
87
+ console.timeEnd('Query 1');
88
+ // Second query - CACHE HIT (will take <1ms)
89
+ console.log('\n2. Same query again (Cache Hit - returns instantly):');
90
+ console.time('Query 2');
91
+ await db.getUserById('b5a0179c-556c-4884-9243-00293be5656f');
92
+ console.timeEnd('Query 2');
93
+ // Third query - Different parameter (CACHE MISS)
94
+ console.log('\n3. Different user (Cache Miss - hits database):');
95
+ console.time('Query 3');
96
+ await db.getUserById('7fe2df00-0157-4c3f-a5ba-00360a60af97');
97
+ console.timeEnd('Query 3');
98
+ // Fourth query - Previous query (CACHE HIT)
99
+ console.log('\n4. Previous user again (Cache Hit - instant):');
100
+ console.time('Query 4');
101
+ await db.getUserById('7fe2df00-0157-4c3f-a5ba-00360a60af97');
102
+ console.timeEnd('Query 4');
103
+ // Get multiple users - demonstrate list queries
104
+ console.log('\n5. Get list of users (Cache Miss):');
105
+ console.time('Query 5');
106
+ await db.getUsers(5);
107
+ console.timeEnd('Query 5');
108
+ console.log('\n6. Same list again (Cache Hit):');
109
+ console.time('Query 6');
110
+ await db.getUsers(5);
111
+ console.timeEnd('Query 6');
112
+ // Performance stats
113
+ console.log('\n=== Cache Performance Stats ===');
114
+ const stats = db.getCachePerformance();
115
+ console.log(stats);
116
+ console.log(`\nHit Rate: ${stats.hitRate}`);
117
+ console.log(`Cache Size: ${stats.size}/${stats.maxSize}`);
118
+ console.log(`Total Queries: ${stats.hits + stats.misses}`);
119
+ console.log(`Database Hits Avoided: ${stats.hits}`);
120
+ // Calculate time saved (approximate)
121
+ const avgDbTime = 2000; // ms
122
+ const avgCacheTime = 0.5; // ms
123
+ const timeSaved = (stats.hits || 0) * (avgDbTime - avgCacheTime);
124
+ console.log(`\nEstimated Time Saved: ~${timeSaved.toFixed(0)}ms`);
125
+ await db.close();
126
+ }
127
+ // Best practices summary
128
+ async function bestPracticesDemo() {
129
+ const db = DatabaseService.getInstance();
130
+ console.log('\n=== Best Practices ===\n');
131
+ // ✅ DO: Reuse the same pool instance
132
+ console.log('✅ DO: Use singleton pattern for pool');
133
+ console.log(' const db = DatabaseService.getInstance();');
134
+ // ✅ DO: Cache frequently accessed data
135
+ console.log('\n✅ DO: Cache read-heavy queries');
136
+ await db.getUserById('b5a0179c-556c-4884-9243-00293be5656f');
137
+ await db.getUserById('b5a0179c-556c-4884-9243-00293be5656f'); // Cached!
138
+ // ✅ DO: Clear cache after mutations
139
+ console.log('\n✅ DO: Clear cache after updates');
140
+ await db.updateUser('b5a0179c-556c-4884-9243-00293be5656f', {});
141
+ // ✅ DO: Monitor cache performance
142
+ console.log('\n✅ DO: Monitor cache hit rate');
143
+ const stats = db.getCachePerformance();
144
+ console.log(` Hit Rate: ${stats.hitRate}`);
145
+ // ✅ DO: Set appropriate TTL
146
+ console.log('\n✅ DO: Set TTL based on data update frequency');
147
+ console.log(' - User profiles: 30-60s');
148
+ console.log(' - Static data: 5-10min');
149
+ console.log(' - Real-time data: 1-5s or disable cache');
150
+ // ❌ DON\'T: Create new pool for each request
151
+ console.log('\n❌ DON\'T: Create pool per request (very slow!)');
152
+ console.log(' // BAD: new MariaDBCache(...) on every request');
153
+ // ❌ DON\'T: Cache data that changes frequently
154
+ console.log('\n❌ DON\'T: Cache highly volatile data');
155
+ console.log(' - Real-time analytics');
156
+ console.log(' - Live counters');
157
+ console.log(' - Session data');
158
+ await db.close();
159
+ }
160
+ // Uncomment to run demonstrations
161
+ if (require.main === module) {
162
+ demonstratePerformance()
163
+ .then(() => console.log('\n✓ Performance demo complete'))
164
+ .catch(console.error);
165
+ // Or run:
166
+ // bestPracticesDemo()
167
+ // .then(() => console.log('\n✓ Best practices demo complete'))
168
+ // .catch(console.error);
169
+ }
170
+ exports.default = DatabaseService;
171
+ //# sourceMappingURL=best-practice-example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"best-practice-example.js","sourceRoot":"","sources":["../src/best-practice-example.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export declare class CacheKeyBuilder {
2
+ private prefix;
3
+ constructor(prefix?: string);
4
+ buildKey(table: string, operation: string, params: any): string;
5
+ buildIdKey(table: string, id: string | number): string;
6
+ buildTablePattern(table: string): string;
7
+ buildOperationPattern(table: string, operation: string): string;
8
+ private generateHash;
9
+ private normalizeParams;
10
+ parseKey(key: string): {
11
+ table: string;
12
+ operation: string;
13
+ hash: string;
14
+ } | null;
15
+ matchesPattern(key: string, pattern: string): boolean;
16
+ }
17
+ //# sourceMappingURL=cache-key-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-key-builder.d.ts","sourceRoot":"","sources":["../../src/cache/cache-key-builder.ts"],"names":[],"mappings":"AAEA,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,GAAE,MAAc;IAIlC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM;IAK/D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAItD,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIxC,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAI/D,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,eAAe;IAuBvB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAchF,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;CAItD"}
@@ -0,0 +1,100 @@
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.CacheKeyBuilder = void 0;
37
+ const crypto = __importStar(require("crypto"));
38
+ class CacheKeyBuilder {
39
+ constructor(prefix = 'sdc') {
40
+ this.prefix = prefix;
41
+ }
42
+ buildKey(table, operation, params) {
43
+ const hash = this.generateHash(params);
44
+ return `${this.prefix}:${table}:${operation}:${hash}`;
45
+ }
46
+ buildIdKey(table, id) {
47
+ return `${this.prefix}:${table}:id:${id}`;
48
+ }
49
+ buildTablePattern(table) {
50
+ return `${this.prefix}:${table}:*`;
51
+ }
52
+ buildOperationPattern(table, operation) {
53
+ return `${this.prefix}:${table}:${operation}:*`;
54
+ }
55
+ generateHash(params) {
56
+ // Normalize the params for consistent hashing
57
+ const normalized = this.normalizeParams(params);
58
+ const jsonString = JSON.stringify(normalized);
59
+ // For short strings, use the string directly
60
+ if (jsonString.length <= 50) {
61
+ return Buffer.from(jsonString).toString('base64url').substring(0, 20);
62
+ }
63
+ // For longer strings, use MD5 hash
64
+ return crypto.createHash('md5').update(jsonString).digest('hex').substring(0, 16);
65
+ }
66
+ normalizeParams(params) {
67
+ if (params === null || params === undefined) {
68
+ return null;
69
+ }
70
+ if (Array.isArray(params)) {
71
+ return params.map((item) => this.normalizeParams(item));
72
+ }
73
+ if (typeof params === 'object') {
74
+ const normalized = {};
75
+ const keys = Object.keys(params).sort();
76
+ for (const key of keys) {
77
+ normalized[key] = this.normalizeParams(params[key]);
78
+ }
79
+ return normalized;
80
+ }
81
+ return params;
82
+ }
83
+ parseKey(key) {
84
+ const parts = key.split(':');
85
+ if (parts.length < 4 || parts[0] !== this.prefix) {
86
+ return null;
87
+ }
88
+ return {
89
+ table: parts[1],
90
+ operation: parts[2],
91
+ hash: parts[3],
92
+ };
93
+ }
94
+ matchesPattern(key, pattern) {
95
+ const regex = new RegExp('^' + pattern.replace(/\*/g, '.*') + '$');
96
+ return regex.test(key);
97
+ }
98
+ }
99
+ exports.CacheKeyBuilder = CacheKeyBuilder;
100
+ //# sourceMappingURL=cache-key-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-key-builder.js","sourceRoot":"","sources":["../../src/cache/cache-key-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { RedisConnectionManager } from '../connection/redis';
2
+ import { CacheConfig } from '../types/config';
3
+ import { CacheStats } from '../types/cache';
4
+ import { CacheKeyBuilder } from './cache-key-builder';
5
+ export declare class CacheManager {
6
+ private redis;
7
+ private config;
8
+ private keyBuilder;
9
+ private stats;
10
+ constructor(redis: RedisConnectionManager, config: Required<CacheConfig>, keyPrefix?: string);
11
+ get<T = any>(key: string): Promise<T | null>;
12
+ set(key: string, value: any, ttl?: number): Promise<void>;
13
+ delete(key: string): Promise<void>;
14
+ deletePattern(pattern: string): Promise<number>;
15
+ exists(key: string): Promise<boolean>;
16
+ getKeyBuilder(): CacheKeyBuilder;
17
+ getStats(): CacheStats;
18
+ resetStats(): void;
19
+ isEnabled(): boolean;
20
+ clear(): Promise<void>;
21
+ }
22
+ //# sourceMappingURL=cache-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../src/cache/cache-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,KAAK,CAIX;gBAGA,KAAK,EAAE,sBAAsB,EAC7B,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC7B,SAAS,CAAC,EAAE,MAAM;IAOd,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAsB5C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAezD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYlC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAe/C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAa3C,aAAa,IAAI,eAAe;IAIhC,QAAQ,IAAI,UAAU;IAetB,UAAU,IAAI,IAAI;IAMlB,SAAS,IAAI,OAAO;IAId,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAa7B"}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CacheManager = void 0;
4
+ const cache_key_builder_1 = require("./cache-key-builder");
5
+ class CacheManager {
6
+ constructor(redis, config, keyPrefix) {
7
+ this.stats = {
8
+ hits: 0,
9
+ misses: 0,
10
+ evictions: 0,
11
+ };
12
+ this.redis = redis;
13
+ this.config = config;
14
+ this.keyBuilder = new cache_key_builder_1.CacheKeyBuilder(keyPrefix);
15
+ }
16
+ async get(key) {
17
+ if (!this.config.enabled || !this.redis.isConnected()) {
18
+ return null;
19
+ }
20
+ try {
21
+ const cached = await this.redis.get(key);
22
+ if (cached === null) {
23
+ this.stats.misses++;
24
+ return null;
25
+ }
26
+ this.stats.hits++;
27
+ return JSON.parse(cached);
28
+ }
29
+ catch (error) {
30
+ console.error('[CacheManager] Get error:', error);
31
+ this.stats.misses++;
32
+ return null;
33
+ }
34
+ }
35
+ async set(key, value, ttl) {
36
+ if (!this.config.enabled || !this.redis.isConnected()) {
37
+ return;
38
+ }
39
+ try {
40
+ const serialized = JSON.stringify(value);
41
+ const ttlSeconds = ttl || this.config.defaultTTL;
42
+ await this.redis.set(key, serialized, ttlSeconds);
43
+ }
44
+ catch (error) {
45
+ console.error('[CacheManager] Set error:', error);
46
+ }
47
+ }
48
+ async delete(key) {
49
+ if (!this.redis.isConnected()) {
50
+ return;
51
+ }
52
+ try {
53
+ await this.redis.del(key);
54
+ }
55
+ catch (error) {
56
+ console.error('[CacheManager] Delete error:', error);
57
+ }
58
+ }
59
+ async deletePattern(pattern) {
60
+ if (!this.redis.isConnected()) {
61
+ return 0;
62
+ }
63
+ try {
64
+ const count = await this.redis.deletePattern(pattern);
65
+ this.stats.evictions += count;
66
+ return count;
67
+ }
68
+ catch (error) {
69
+ console.error('[CacheManager] DeletePattern error:', error);
70
+ return 0;
71
+ }
72
+ }
73
+ async exists(key) {
74
+ if (!this.redis.isConnected()) {
75
+ return false;
76
+ }
77
+ try {
78
+ return await this.redis.exists(key);
79
+ }
80
+ catch (error) {
81
+ console.error('[CacheManager] Exists error:', error);
82
+ return false;
83
+ }
84
+ }
85
+ getKeyBuilder() {
86
+ return this.keyBuilder;
87
+ }
88
+ getStats() {
89
+ const total = this.stats.hits + this.stats.misses;
90
+ const hitRate = total > 0
91
+ ? ((this.stats.hits / total) * 100).toFixed(2)
92
+ : '0.00';
93
+ return {
94
+ hits: this.stats.hits,
95
+ misses: this.stats.misses,
96
+ evictions: this.stats.evictions,
97
+ size: 0, // Redis doesn't provide easy size lookup
98
+ hitRate: `${hitRate}%`,
99
+ };
100
+ }
101
+ resetStats() {
102
+ this.stats.hits = 0;
103
+ this.stats.misses = 0;
104
+ this.stats.evictions = 0;
105
+ }
106
+ isEnabled() {
107
+ return this.config.enabled && this.redis.isConnected();
108
+ }
109
+ async clear() {
110
+ if (!this.redis.isConnected()) {
111
+ return;
112
+ }
113
+ try {
114
+ // Clear all keys with our prefix
115
+ const count = await this.redis.deletePattern('*');
116
+ this.stats.evictions += count;
117
+ }
118
+ catch (error) {
119
+ console.error('[CacheManager] Clear error:', error);
120
+ }
121
+ }
122
+ }
123
+ exports.CacheManager = CacheManager;
124
+ //# sourceMappingURL=cache-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-manager.js","sourceRoot":"","sources":["../../src/cache/cache-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { CacheManager } from './cache-manager';
2
+ import { DependencyGraph } from '../discovery/dependency-graph';
3
+ import { InvalidationOptions } from '../types/cache';
4
+ export declare class InvalidationManager {
5
+ private cacheManager;
6
+ private dependencyGraph;
7
+ constructor(cacheManager: CacheManager, dependencyGraph: DependencyGraph);
8
+ invalidateTable(table: string, options?: InvalidationOptions): Promise<void>;
9
+ private invalidateTableCache;
10
+ invalidatePattern(pattern: string): Promise<number>;
11
+ invalidateKey(key: string): Promise<void>;
12
+ invalidateMultipleTables(tables: string[], cascade?: boolean): Promise<void>;
13
+ invalidateAll(): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=invalidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invalidation.d.ts","sourceRoot":"","sources":["../../src/cache/invalidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAwB,MAAM,gBAAgB,CAAC;AAE3E,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,eAAe,CAAkB;gBAE7B,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe;IAKlE,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC;YA2BF,oBAAoB;IAK5B,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAInD,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,wBAAwB,CAC5B,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,GAAE,OAAc,GACtB,OAAO,CAAC,IAAI,CAAC;IAiBV,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAGrC"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvalidationManager = void 0;
4
+ const cache_1 = require("../types/cache");
5
+ class InvalidationManager {
6
+ constructor(cacheManager, dependencyGraph) {
7
+ this.cacheManager = cacheManager;
8
+ this.dependencyGraph = dependencyGraph;
9
+ }
10
+ async invalidateTable(table, options = {}) {
11
+ const { cascade = true, strategy = cache_1.InvalidationStrategy.IMMEDIATE, } = options;
12
+ if (strategy === cache_1.InvalidationStrategy.TTL_ONLY) {
13
+ // Don't actively invalidate, rely on TTL
14
+ return;
15
+ }
16
+ const tablesToInvalidate = cascade
17
+ ? this.dependencyGraph.getInvalidationTargets(table)
18
+ : [table];
19
+ if (strategy === cache_1.InvalidationStrategy.LAZY) {
20
+ // Mark for invalidation but don't delete immediately
21
+ // This could be implemented with a flag or separate tracking
22
+ // For now, we'll do immediate invalidation
23
+ }
24
+ // Invalidate cache for all affected tables
25
+ for (const targetTable of tablesToInvalidate) {
26
+ await this.invalidateTableCache(targetTable);
27
+ }
28
+ }
29
+ async invalidateTableCache(table) {
30
+ const pattern = this.cacheManager.getKeyBuilder().buildTablePattern(table);
31
+ await this.cacheManager.deletePattern(pattern);
32
+ }
33
+ async invalidatePattern(pattern) {
34
+ return await this.cacheManager.deletePattern(pattern);
35
+ }
36
+ async invalidateKey(key) {
37
+ await this.cacheManager.delete(key);
38
+ }
39
+ async invalidateMultipleTables(tables, cascade = true) {
40
+ const allTables = new Set();
41
+ for (const table of tables) {
42
+ if (cascade) {
43
+ const targets = this.dependencyGraph.getInvalidationTargets(table);
44
+ targets.forEach((t) => allTables.add(t));
45
+ }
46
+ else {
47
+ allTables.add(table);
48
+ }
49
+ }
50
+ for (const table of allTables) {
51
+ await this.invalidateTableCache(table);
52
+ }
53
+ }
54
+ async invalidateAll() {
55
+ await this.cacheManager.clear();
56
+ }
57
+ }
58
+ exports.InvalidationManager = InvalidationManager;
59
+ //# sourceMappingURL=invalidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invalidation.js","sourceRoot":"","sources":["../../src/cache/invalidation.ts"],"names":[],"mappings":";;;AAEA,0CAA2E;AAE3E,MAAa,mBAAmB;IAI9B,YAAY,YAA0B,EAAE,eAAgC;QACtE,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,KAAa,EACb,UAA+B,EAAE;QAEjC,MAAM,EACJ,OAAO,GAAG,IAAI,EACd,QAAQ,GAAG,4BAAoB,CAAC,SAAS,GAC1C,GAAG,OAAO,CAAC;QAEZ,IAAI,QAAQ,KAAK,4BAAoB,CAAC,QAAQ,EAAE,CAAC;YAC/C,yCAAyC;YACzC,OAAO;QACT,CAAC;QAED,MAAM,kBAAkB,GAAG,OAAO;YAChC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,KAAK,CAAC;YACpD,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAEZ,IAAI,QAAQ,KAAK,4BAAoB,CAAC,IAAI,EAAE,CAAC;YAC3C,qDAAqD;YACrD,6DAA6D;YAC7D,2CAA2C;QAC7C,CAAC;QAED,2CAA2C;QAC3C,KAAK,MAAM,WAAW,IAAI,kBAAkB,EAAE,CAAC;YAC7C,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,KAAa;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC3E,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAe;QACrC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAW;QAC7B,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,wBAAwB,CAC5B,MAAgB,EAChB,UAAmB,IAAI;QAEvB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QAEpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;gBACnE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;CACF;AA3ED,kDA2EC"}
@@ -0,0 +1,40 @@
1
+ import { SmartDBConfig } from './types/config';
2
+ import { TableOperations, QueryMetadata } from './types/query';
3
+ import { DependencyGraph } from './discovery/dependency-graph';
4
+ import { CacheManager } from './cache/cache-manager';
5
+ import { InvalidationManager } from './cache/invalidation';
6
+ import { HooksManager } from './hooks/hooks-manager';
7
+ import { InMemoryQueryTracker } from './query/query-tracker';
8
+ export declare class SmartDBClient {
9
+ private config;
10
+ private dbManager;
11
+ private redisManager;
12
+ private cacheManager;
13
+ private invalidationManager;
14
+ private dependencyGraph;
15
+ private queryBuilder;
16
+ private tableProxyFactory;
17
+ hooks: HooksManager;
18
+ queryTracker: InMemoryQueryTracker;
19
+ private initialized;
20
+ private discoveredTables;
21
+ constructor(config: SmartDBConfig);
22
+ initialize(): Promise<void>;
23
+ private discoverSchema;
24
+ refreshSchema(): Promise<void>;
25
+ getTableOperations<T = any>(tableName: string): TableOperations<T>;
26
+ getCacheManager(): CacheManager;
27
+ getInvalidationManager(): InvalidationManager;
28
+ getDependencyGraph(): DependencyGraph;
29
+ getDiscoveredTables(): string[];
30
+ getQueries(correlationId?: string): QueryMetadata[];
31
+ clearQueries(correlationId?: string): void;
32
+ healthCheck(): Promise<{
33
+ mariadb: boolean;
34
+ redis: boolean;
35
+ overall: boolean;
36
+ }>;
37
+ close(): Promise<void>;
38
+ private log;
39
+ }
40
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAId,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAK/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,iBAAiB,CAAqB;IACvC,KAAK,EAAG,YAAY,CAAC;IACrB,YAAY,EAAE,oBAAoB,CAAC;IAE1C,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,gBAAgB,CAA0B;gBAEtC,MAAM,EAAE,aAAa;IAU3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAsEnB,cAAc;IA4BtB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAWpC,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;IAiBlE,eAAe,IAAI,YAAY;IAI/B,sBAAsB,IAAI,mBAAmB;IAI7C,kBAAkB,IAAI,eAAe;IAIrC,mBAAmB,IAAI,MAAM,EAAE;IAI/B,UAAU,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE;IAInD,YAAY,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAIpC,WAAW,IAAI,OAAO,CAAC;QAC3B,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,OAAO,CAAC;QACf,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IAWI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B,OAAO,CAAC,GAAG;CAKZ"}