@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,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hooksExample = hooksExample;
4
+ const index_1 = require("../index");
5
+ async function hooksExample() {
6
+ const db = await (0, index_1.createSmartDB)({
7
+ mariadb: {
8
+ host: 'localhost',
9
+ user: 'root',
10
+ password: 'password',
11
+ database: 'mydb',
12
+ },
13
+ redis: {
14
+ host: 'localhost',
15
+ port: 6379,
16
+ },
17
+ logging: {
18
+ level: 'info',
19
+ },
20
+ });
21
+ try {
22
+ console.log('=== Hooks Example ===\n');
23
+ // === BEFORE HOOKS (Transform data before operation) ===
24
+ // 1. Auto-add timestamps on insert
25
+ db.hooks.registerBefore('users', 'insertOne', (data) => {
26
+ console.log('[Before Hook] Adding timestamp to new user');
27
+ return {
28
+ ...data,
29
+ created_at: new Date(),
30
+ updated_at: new Date(),
31
+ };
32
+ });
33
+ // 2. Hash password before inserting
34
+ db.hooks.registerBefore('users', 'insertOne', (data) => {
35
+ if (data.password) {
36
+ console.log('[Before Hook] Hashing password');
37
+ // In real app, use bcrypt
38
+ data.password = `hashed_${data.password}`;
39
+ }
40
+ return data;
41
+ });
42
+ // 3. Validate email format
43
+ db.hooks.registerBefore('users', 'insertOne', (data) => {
44
+ if (data.email && !data.email.includes('@')) {
45
+ throw new Error('Invalid email format');
46
+ }
47
+ return data;
48
+ });
49
+ // 4. Auto-update timestamp on update
50
+ db.hooks.registerBefore('users', 'updateOne', (data) => {
51
+ console.log('[Before Hook] Updating timestamp');
52
+ return {
53
+ ...data,
54
+ updated_at: new Date(),
55
+ };
56
+ });
57
+ db.hooks.registerBefore('users', 'updateById', (data) => {
58
+ return {
59
+ ...data,
60
+ updated_at: new Date(),
61
+ };
62
+ });
63
+ // === AFTER HOOKS (Side effects after operation) ===
64
+ // 1. Audit logging
65
+ db.hooks.registerAfter('users', 'insertOne', (result) => {
66
+ console.log('[After Hook] User created - Logging to audit table', {
67
+ userId: result.id,
68
+ action: 'create',
69
+ timestamp: new Date(),
70
+ });
71
+ });
72
+ db.hooks.registerAfter('users', 'updateOne', (result, where, data) => {
73
+ console.log('[After Hook] User updated - Logging to audit table', {
74
+ userId: result?.id,
75
+ action: 'update',
76
+ changes: data,
77
+ timestamp: new Date(),
78
+ });
79
+ });
80
+ db.hooks.registerAfter('users', 'deleteOne', (result, where) => {
81
+ console.log('[After Hook] User deleted - Logging to audit table', {
82
+ where,
83
+ action: 'delete',
84
+ timestamp: new Date(),
85
+ });
86
+ });
87
+ // 2. Send notification email
88
+ db.hooks.registerAfter('users', 'insertOne', async (result) => {
89
+ console.log('[After Hook] Sending welcome email to', result.email);
90
+ // In real app: await sendEmail(result.email, 'Welcome!');
91
+ });
92
+ // 3. Trigger external webhook
93
+ db.hooks.registerAfter('orders', 'insertOne', async (result) => {
94
+ console.log('[After Hook] Notifying external system of new order', result.id);
95
+ // In real app: await fetch('https://webhook.site/...', { method: 'POST', body: JSON.stringify(result) });
96
+ });
97
+ // === TEST THE HOOKS ===
98
+ console.log('\n--- Testing Hooks ---\n');
99
+ // This will trigger:
100
+ // - 3 before hooks (timestamp, password hash, email validation)
101
+ // - 2 after hooks (audit log, welcome email)
102
+ const newUser = await db.users.insertOne({
103
+ name: 'John Doe',
104
+ email: 'john@example.com',
105
+ password: 'secret123',
106
+ });
107
+ console.log('\nCreated user:', newUser);
108
+ console.log();
109
+ // This will trigger:
110
+ // - 1 before hook (timestamp)
111
+ // - 1 after hook (audit log)
112
+ const updated = await db.users.updateById(newUser.id, {
113
+ name: 'John Smith',
114
+ });
115
+ console.log('Updated user:', updated);
116
+ console.log();
117
+ // === VIEW REGISTERED HOOKS ===
118
+ const registeredHooks = db.hooks.getRegisteredHooks();
119
+ console.log('Registered hooks:', registeredHooks);
120
+ // === CLEAR HOOKS ===
121
+ // db.hooks.clearHooks('users', 'before', 'insertOne'); // Clear specific hook
122
+ // db.hooks.clearHooks('users'); // Clear all hooks for users table
123
+ // db.hooks.clearHooks(); // Clear all hooks
124
+ }
125
+ finally {
126
+ await db.close();
127
+ }
128
+ }
129
+ // Run the example
130
+ if (require.main === module) {
131
+ hooksExample().catch(console.error);
132
+ }
133
+ //# sourceMappingURL=hooks-example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-example.js","sourceRoot":"","sources":["../../../src/smart-cache/examples/hooks-example.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare function relationshipsExample(): Promise<void>;
2
+ export { relationshipsExample };
3
+ //# sourceMappingURL=relationships-example.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationships-example.d.ts","sourceRoot":"","sources":["../../../src/smart-cache/examples/relationships-example.ts"],"names":[],"mappings":"AAEA,iBAAe,oBAAoB,kBA4FlC;AAOD,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.relationshipsExample = relationshipsExample;
4
+ const index_1 = require("../index");
5
+ async function relationshipsExample() {
6
+ const db = await (0, index_1.createSmartDB)({
7
+ mariadb: {
8
+ host: 'localhost',
9
+ user: 'root',
10
+ password: 'password',
11
+ database: 'mydb',
12
+ },
13
+ redis: {
14
+ host: 'localhost',
15
+ port: 6379,
16
+ },
17
+ cache: {
18
+ cascadeInvalidation: true, // Enable cascading invalidation
19
+ },
20
+ discovery: {
21
+ autoDiscover: true,
22
+ },
23
+ logging: {
24
+ level: 'debug',
25
+ },
26
+ });
27
+ try {
28
+ console.log('=== Cascading Invalidation Example ===\n');
29
+ // Assume we have these tables with relationships:
30
+ // users (id, name, email)
31
+ // orders (id, user_id, total, status) -> FK to users.id
32
+ // order_items (id, order_id, product, quantity) -> FK to orders.id
33
+ // 1. Query orders (will be cached)
34
+ console.log('1. Fetching orders...');
35
+ const orders = await db.orders.findMany({ status: 'pending' });
36
+ console.log(`Found ${orders.length} pending orders\n`);
37
+ // 2. Query order_items (will be cached)
38
+ console.log('2. Fetching order items...');
39
+ const items = await db.order_items.findMany({ order_id: 1 });
40
+ console.log(`Found ${items.length} items for order 1\n`);
41
+ // 3. Update a user record
42
+ console.log('3. Updating user...');
43
+ await db.users.updateById(1, { name: 'Updated Name' });
44
+ // This will automatically invalidate:
45
+ // - users:* cache entries
46
+ // - orders:* cache entries (because orders.user_id -> users.id)
47
+ // - order_items:* cache entries (because order_items.order_id -> orders.id)
48
+ console.log('Cache invalidated for: users, orders, order_items\n');
49
+ // 4. View dependency graph
50
+ const graph = db.getDependencyGraph();
51
+ const invalidationTargets = graph.getInvalidationTargets('users');
52
+ console.log('Tables affected by users update:', invalidationTargets);
53
+ const graphInfo = graph.getGraphInfo();
54
+ console.log('Graph info:', graphInfo);
55
+ console.log();
56
+ // 5. Manual cascade control
57
+ console.log('4. Update with custom invalidation...');
58
+ // Update without cascading (only invalidate orders table)
59
+ await db.getInvalidationManager().invalidateTable('orders', {
60
+ cascade: false,
61
+ });
62
+ console.log('Invalidated only orders table (no cascade)\n');
63
+ // 6. View all relationships
64
+ const tables = db.getDiscoveredTables();
65
+ console.log('All discovered tables:', tables);
66
+ for (const table of tables) {
67
+ const dependents = graph.getDependents(table);
68
+ const dependencies = graph.getDependencies(table);
69
+ if (dependents.length > 0 || dependencies.length > 0) {
70
+ console.log(`\n${table}:`);
71
+ if (dependencies.length > 0) {
72
+ console.log(` depends on: ${dependencies.join(', ')}`);
73
+ }
74
+ if (dependents.length > 0) {
75
+ console.log(` referenced by: ${dependents.join(', ')}`);
76
+ }
77
+ }
78
+ }
79
+ }
80
+ finally {
81
+ await db.close();
82
+ }
83
+ }
84
+ // Run the example
85
+ if (require.main === module) {
86
+ relationshipsExample().catch(console.error);
87
+ }
88
+ //# sourceMappingURL=relationships-example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationships-example.js","sourceRoot":"","sources":["../../../src/smart-cache/examples/relationships-example.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ type HookFunction = (...args: any[]) => Promise<any> | any;
2
+ export type HookType = 'before' | 'after';
3
+ export type Operation = 'findOne' | 'findMany' | 'findById' | 'count' | 'insertOne' | 'insertMany' | 'updateOne' | 'updateMany' | 'updateById' | 'deleteOne' | 'deleteMany' | 'deleteById';
4
+ export declare class HooksManager {
5
+ private hooks;
6
+ registerBefore(table: string, operation: Operation, hook: HookFunction): void;
7
+ registerAfter(table: string, operation: Operation, hook: HookFunction): void;
8
+ private registerHook;
9
+ executeBefore(table: string, operation: Operation, data: any): Promise<any>;
10
+ executeAfter(table: string, operation: Operation, result: any, ...args: any[]): Promise<void>;
11
+ private getHooks;
12
+ removeHook(table: string, hookType: HookType, operation: Operation, hook: HookFunction): void;
13
+ clearHooks(table?: string, hookType?: HookType, operation?: Operation): void;
14
+ getRegisteredHooks(): {
15
+ table: string;
16
+ hookType: HookType;
17
+ operation: Operation;
18
+ count: number;
19
+ }[];
20
+ }
21
+ export {};
22
+ //# sourceMappingURL=hooks-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-manager.d.ts","sourceRoot":"","sources":["../../../src/smart-cache/hooks/hooks-manager.ts"],"names":[],"mappings":"AAAA,KAAK,YAAY,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAE3D,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC1C,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,UAAU,GACV,UAAU,GACV,OAAO,GACP,WAAW,GACX,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,YAAY,CAAC;AAEjB,qBAAa,YAAY;IAEvB,OAAO,CAAC,KAAK,CACD;IAEZ,cAAc,CACZ,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,YAAY,GACjB,IAAI;IAIP,aAAa,CACX,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,YAAY,GACjB,IAAI;IAIP,OAAO,CAAC,YAAY;IAyBd,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,GAAG,GACR,OAAO,CAAC,GAAG,CAAC;IAwBT,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,GAAG,EACX,GAAG,IAAI,EAAE,GAAG,EAAE,GACb,OAAO,CAAC,IAAI,CAAC;IAgBhB,OAAO,CAAC,QAAQ;IAkBhB,UAAU,CACR,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,YAAY,GACjB,IAAI;IASP,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI;IA2B5E,kBAAkB,IAAI;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,QAAQ,CAAC;QACnB,SAAS,EAAE,SAAS,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;KACf,EAAE;CAuBJ"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HooksManager = void 0;
4
+ class HooksManager {
5
+ constructor() {
6
+ // Map: table -> hookType -> operation -> hooks[]
7
+ this.hooks = new Map();
8
+ }
9
+ registerBefore(table, operation, hook) {
10
+ this.registerHook(table, 'before', operation, hook);
11
+ }
12
+ registerAfter(table, operation, hook) {
13
+ this.registerHook(table, 'after', operation, hook);
14
+ }
15
+ registerHook(table, hookType, operation, hook) {
16
+ if (!this.hooks.has(table)) {
17
+ this.hooks.set(table, new Map());
18
+ }
19
+ const tableHooks = this.hooks.get(table);
20
+ if (!tableHooks.has(hookType)) {
21
+ tableHooks.set(hookType, new Map());
22
+ }
23
+ const typeHooks = tableHooks.get(hookType);
24
+ if (!typeHooks.has(operation)) {
25
+ typeHooks.set(operation, []);
26
+ }
27
+ typeHooks.get(operation).push(hook);
28
+ }
29
+ async executeBefore(table, operation, data) {
30
+ const hooks = this.getHooks(table, 'before', operation);
31
+ let transformedData = data;
32
+ for (const hook of hooks) {
33
+ try {
34
+ const result = await hook(transformedData);
35
+ // If hook returns something, use it as transformed data
36
+ if (result !== undefined) {
37
+ transformedData = result;
38
+ }
39
+ }
40
+ catch (error) {
41
+ console.error(`[HooksManager] Error in before hook for ${table}.${operation}:`, error);
42
+ throw error;
43
+ }
44
+ }
45
+ return transformedData;
46
+ }
47
+ async executeAfter(table, operation, result, ...args) {
48
+ const hooks = this.getHooks(table, 'after', operation);
49
+ for (const hook of hooks) {
50
+ try {
51
+ await hook(result, ...args);
52
+ }
53
+ catch (error) {
54
+ console.error(`[HooksManager] Error in after hook for ${table}.${operation}:`, error);
55
+ // Don't throw - after hooks shouldn't break the main operation
56
+ }
57
+ }
58
+ }
59
+ getHooks(table, hookType, operation) {
60
+ const tableHooks = this.hooks.get(table);
61
+ if (!tableHooks) {
62
+ return [];
63
+ }
64
+ const typeHooks = tableHooks.get(hookType);
65
+ if (!typeHooks) {
66
+ return [];
67
+ }
68
+ return typeHooks.get(operation) || [];
69
+ }
70
+ removeHook(table, hookType, operation, hook) {
71
+ const hooks = this.getHooks(table, hookType, operation);
72
+ const index = hooks.indexOf(hook);
73
+ if (index !== -1) {
74
+ hooks.splice(index, 1);
75
+ }
76
+ }
77
+ clearHooks(table, hookType, operation) {
78
+ if (!table) {
79
+ this.hooks.clear();
80
+ return;
81
+ }
82
+ if (!hookType) {
83
+ this.hooks.delete(table);
84
+ return;
85
+ }
86
+ const tableHooks = this.hooks.get(table);
87
+ if (!tableHooks) {
88
+ return;
89
+ }
90
+ if (!operation) {
91
+ tableHooks.delete(hookType);
92
+ return;
93
+ }
94
+ const typeHooks = tableHooks.get(hookType);
95
+ if (typeHooks) {
96
+ typeHooks.delete(operation);
97
+ }
98
+ }
99
+ getRegisteredHooks() {
100
+ const result = [];
101
+ for (const [table, tableHooks] of this.hooks.entries()) {
102
+ for (const [hookType, typeHooks] of tableHooks.entries()) {
103
+ for (const [operation, hooks] of typeHooks.entries()) {
104
+ result.push({
105
+ table,
106
+ hookType,
107
+ operation,
108
+ count: hooks.length,
109
+ });
110
+ }
111
+ }
112
+ }
113
+ return result;
114
+ }
115
+ }
116
+ exports.HooksManager = HooksManager;
117
+ //# sourceMappingURL=hooks-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-manager.js","sourceRoot":"","sources":["../../../src/smart-cache/hooks/hooks-manager.ts"],"names":[],"mappings":";;;AAiBA,MAAa,YAAY;IAAzB;QACE,iDAAiD;QACzC,UAAK,GACX,IAAI,GAAG,EAAE,CAAC;IAmLd,CAAC;IAjLC,cAAc,CACZ,KAAa,EACb,SAAoB,EACpB,IAAkB;QAElB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,aAAa,CACX,KAAa,EACb,SAAoB,EACpB,IAAkB;QAElB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAEO,YAAY,CAClB,KAAa,EACb,QAAkB,EAClB,SAAoB,EACpB,IAAkB;QAElB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;QAE1C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QAE5C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC/B,CAAC;QAED,SAAS,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,KAAa,EACb,SAAoB,EACpB,IAAS;QAET,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAExD,IAAI,eAAe,GAAG,IAAI,CAAC;QAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC3C,wDAAwD;gBACxD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,eAAe,GAAG,MAAM,CAAC;gBAC3B,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CACX,2CAA2C,KAAK,IAAI,SAAS,GAAG,EAChE,KAAK,CACN,CAAC;gBACF,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,KAAa,EACb,SAAoB,EACpB,MAAW,EACX,GAAG,IAAW;QAEd,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAEvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;YAC9B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CACX,0CAA0C,KAAK,IAAI,SAAS,GAAG,EAC/D,KAAK,CACN,CAAC;gBACF,+DAA+D;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IAEO,QAAQ,CACd,KAAa,EACb,QAAkB,EAClB,SAAoB;QAEpB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IAED,UAAU,CACR,KAAa,EACb,QAAkB,EAClB,SAAoB,EACpB,IAAkB;QAElB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,UAAU,CAAC,KAAc,EAAE,QAAmB,EAAE,SAAqB;QACnE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,kBAAkB;QAMhB,MAAM,MAAM,GAKN,EAAE,CAAC;QAET,KAAK,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YACvD,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;gBACzD,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;oBACrD,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK;wBACL,QAAQ;wBACR,SAAS;wBACT,KAAK,EAAE,KAAK,CAAC,MAAM;qBACpB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAtLD,oCAsLC"}
@@ -0,0 +1,19 @@
1
+ import { SmartDBClient } from './client';
2
+ import { SmartDBConfig } from './types/config';
3
+ export declare function createSmartDB(config: SmartDBConfig): Promise<SmartDBClient>;
4
+ export { SmartDBClient } from './client';
5
+ export * from './types/config';
6
+ export * from './types/query';
7
+ export * from './types/cache';
8
+ export * from './types/schema';
9
+ export { CacheManager } from './cache/cache-manager';
10
+ export { InvalidationManager } from './cache/invalidation';
11
+ export { DependencyGraph } from './discovery/dependency-graph';
12
+ export { HooksManager } from './hooks/hooks-manager';
13
+ export { QueryBuilder } from './query/query-builder';
14
+ declare const _default: {
15
+ createSmartDB: typeof createSmartDB;
16
+ SmartDBClient: typeof SmartDBClient;
17
+ };
18
+ export default _default;
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/smart-cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,wBAAsB,aAAa,CACjC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,aAAa,CAAC,CAIxB;AAGD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;;;;;AAGrD,wBAGE"}
@@ -0,0 +1,49 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.QueryBuilder = exports.HooksManager = exports.DependencyGraph = exports.InvalidationManager = exports.CacheManager = exports.SmartDBClient = void 0;
18
+ exports.createSmartDB = createSmartDB;
19
+ const client_1 = require("./client");
20
+ async function createSmartDB(config) {
21
+ const client = new client_1.SmartDBClient(config);
22
+ await client.initialize();
23
+ return client;
24
+ }
25
+ // Export main client class
26
+ var client_2 = require("./client");
27
+ Object.defineProperty(exports, "SmartDBClient", { enumerable: true, get: function () { return client_2.SmartDBClient; } });
28
+ // Export all type definitions
29
+ __exportStar(require("./types/config"), exports);
30
+ __exportStar(require("./types/query"), exports);
31
+ __exportStar(require("./types/cache"), exports);
32
+ __exportStar(require("./types/schema"), exports);
33
+ // Export managers for advanced usage
34
+ var cache_manager_1 = require("./cache/cache-manager");
35
+ Object.defineProperty(exports, "CacheManager", { enumerable: true, get: function () { return cache_manager_1.CacheManager; } });
36
+ var invalidation_1 = require("./cache/invalidation");
37
+ Object.defineProperty(exports, "InvalidationManager", { enumerable: true, get: function () { return invalidation_1.InvalidationManager; } });
38
+ var dependency_graph_1 = require("./discovery/dependency-graph");
39
+ Object.defineProperty(exports, "DependencyGraph", { enumerable: true, get: function () { return dependency_graph_1.DependencyGraph; } });
40
+ var hooks_manager_1 = require("./hooks/hooks-manager");
41
+ Object.defineProperty(exports, "HooksManager", { enumerable: true, get: function () { return hooks_manager_1.HooksManager; } });
42
+ var query_builder_1 = require("./query/query-builder");
43
+ Object.defineProperty(exports, "QueryBuilder", { enumerable: true, get: function () { return query_builder_1.QueryBuilder; } });
44
+ // Default export
45
+ exports.default = {
46
+ createSmartDB,
47
+ SmartDBClient: client_1.SmartDBClient,
48
+ };
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/smart-cache/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAGA,sCAMC;AATD,qCAAyC;AAGlC,KAAK,UAAU,aAAa,CACjC,MAAqB;IAErB,MAAM,MAAM,GAAG,IAAI,sBAAa,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC1B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,2BAA2B;AAC3B,mCAAyC;AAAhC,uGAAA,aAAa,OAAA;AAEtB,8BAA8B;AAC9B,iDAA+B;AAC/B,gDAA8B;AAC9B,gDAA8B;AAC9B,iDAA+B;AAE/B,qCAAqC;AACrC,uDAAqD;AAA5C,6GAAA,YAAY,OAAA;AACrB,qDAA2D;AAAlD,mHAAA,mBAAmB,OAAA;AAC5B,iEAA+D;AAAtD,mHAAA,eAAe,OAAA;AACxB,uDAAqD;AAA5C,6GAAA,YAAY,OAAA;AACrB,uDAAqD;AAA5C,6GAAA,YAAY,OAAA;AAErB,iBAAiB;AACjB,kBAAe;IACb,aAAa;IACb,aAAa,EAAb,sBAAa;CACd,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { MariaDBConnectionManager } from '../connection/mariadb';
2
+ import { CacheManager } from '../cache/cache-manager';
3
+ import { InvalidationManager } from '../cache/invalidation';
4
+ import { QueryBuilder } from './query-builder';
5
+ import { TableOperations, WhereClause, FindOptions } from '../types/query';
6
+ import { CacheConfig } from '../types/config';
7
+ export declare class TableOperationsImpl<T = any> implements TableOperations<T> {
8
+ private tableName;
9
+ private dbManager;
10
+ private cacheManager;
11
+ private invalidationManager;
12
+ private queryBuilder;
13
+ private cacheConfig;
14
+ constructor(tableName: string, dbManager: MariaDBConnectionManager, cacheManager: CacheManager, invalidationManager: InvalidationManager, queryBuilder: QueryBuilder, cacheConfig: Required<CacheConfig>);
15
+ findOne(where: WhereClause<T>): Promise<T | null>;
16
+ findMany(where?: WhereClause<T>, options?: FindOptions): Promise<T[]>;
17
+ findById(id: string | number): Promise<T | null>;
18
+ count(where?: WhereClause<T>): Promise<number>;
19
+ insertOne(data: Omit<T, 'id'>): Promise<T>;
20
+ insertMany(dataArray: Omit<T, 'id'>[]): Promise<T[]>;
21
+ updateOne(where: WhereClause<T>, data: Partial<T>): Promise<T | null>;
22
+ updateMany(where: WhereClause<T>, data: Partial<T>): Promise<number>;
23
+ updateById(id: string | number, data: Partial<T>): Promise<T | null>;
24
+ deleteOne(where: WhereClause<T>): Promise<boolean>;
25
+ deleteMany(where: WhereClause<T>): Promise<number>;
26
+ deleteById(id: string | number): Promise<boolean>;
27
+ raw<R = any>(sql: string, params?: any[]): Promise<R>;
28
+ invalidateCache(): Promise<void>;
29
+ warmCache(where?: WhereClause<T>): Promise<void>;
30
+ }
31
+ //# sourceMappingURL=operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../../src/smart-cache/query/operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,qBAAa,mBAAmB,CAAC,CAAC,GAAG,GAAG,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAwB;gBAGzC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,wBAAwB,EACnC,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,mBAAmB,EACxC,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC;IAU9B,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAMjD,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAiCrE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IA2BhD,KAAK,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IA4B9C,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAiB1C,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IA2BpD,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAyBrE,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBpE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAyBpE,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAelD,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAelD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAejD,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAIrD,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAMhC,SAAS,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAIvD"}