@bhushanpawar/sqldb 1.0.6 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cache/cache-manager.d.ts +18 -1
- package/dist/cache/cache-manager.d.ts.map +1 -1
- package/dist/cache/cache-manager.js +76 -2
- package/dist/cache/cache-manager.js.map +1 -1
- package/dist/cli/index.js +0 -0
- package/dist/client.d.ts +54 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +124 -1
- package/dist/client.js.map +1 -1
- package/dist/connection/mariadb.d.ts +15 -0
- package/dist/connection/mariadb.d.ts.map +1 -1
- package/dist/connection/mariadb.js +25 -0
- package/dist/connection/mariadb.js.map +1 -1
- package/dist/discovery/relationship-parser.d.ts.map +1 -1
- package/dist/discovery/relationship-parser.js +8 -1
- package/dist/discovery/relationship-parser.js.map +1 -1
- package/dist/discovery/schema-reader.d.ts +2 -0
- package/dist/discovery/schema-reader.d.ts.map +1 -1
- package/dist/discovery/schema-reader.js +91 -0
- package/dist/discovery/schema-reader.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/query/operations.d.ts +35 -1
- package/dist/query/operations.d.ts.map +1 -1
- package/dist/query/operations.js +307 -4
- package/dist/query/operations.js.map +1 -1
- package/dist/query/query-tracker.d.ts +30 -0
- package/dist/query/query-tracker.d.ts.map +1 -1
- package/dist/query/query-tracker.js +86 -1
- package/dist/query/query-tracker.js.map +1 -1
- package/dist/search/inverted-index-manager.d.ts +76 -0
- package/dist/search/inverted-index-manager.d.ts.map +1 -0
- package/dist/search/inverted-index-manager.js +371 -0
- package/dist/search/inverted-index-manager.js.map +1 -0
- package/dist/search/search-ranker.d.ts +91 -0
- package/dist/search/search-ranker.d.ts.map +1 -0
- package/dist/search/search-ranker.js +281 -0
- package/dist/search/search-ranker.js.map +1 -0
- package/dist/search/tokenizer.d.ts +80 -0
- package/dist/search/tokenizer.d.ts.map +1 -0
- package/dist/search/tokenizer.js +398 -0
- package/dist/search/tokenizer.js.map +1 -0
- package/dist/types/cache.d.ts +16 -0
- package/dist/types/cache.d.ts.map +1 -1
- package/dist/types/cache.js.map +1 -1
- package/dist/types/config.d.ts +10 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +13 -1
- package/dist/types/config.js.map +1 -1
- package/dist/types/query.d.ts +4 -0
- package/dist/types/query.d.ts.map +1 -1
- package/dist/types/schema.d.ts +35 -0
- package/dist/types/schema.d.ts.map +1 -1
- package/dist/types/search.d.ts +223 -0
- package/dist/types/search.d.ts.map +1 -0
- package/dist/types/search.js +54 -0
- package/dist/types/search.js.map +1 -0
- package/dist/types/warming.d.ts +1 -1
- package/dist/types/warming.d.ts.map +1 -1
- package/dist/utils/case-converter.d.ts +38 -0
- package/dist/utils/case-converter.d.ts.map +1 -0
- package/dist/utils/case-converter.js +90 -0
- package/dist/utils/case-converter.js.map +1 -0
- package/dist/warming/auto-warming-manager.d.ts.map +1 -1
- package/dist/warming/auto-warming-manager.js +5 -0
- package/dist/warming/auto-warming-manager.js.map +1 -1
- package/package.json +7 -3
- package/dist/best-practice-example.d.ts +0 -35
- package/dist/best-practice-example.d.ts.map +0 -1
- package/dist/best-practice-example.js +0 -171
- package/dist/best-practice-example.js.map +0 -1
- package/dist/db-schema.d.ts +0 -413
- package/dist/db-schema.d.ts.map +0 -1
- package/dist/db-schema.js +0 -1149
- package/dist/db-schema.js.map +0 -1
- package/dist/demo-debug.d.ts +0 -2
- package/dist/demo-debug.d.ts.map +0 -1
- package/dist/demo-debug.js +0 -36
- package/dist/demo-debug.js.map +0 -1
- package/dist/smart-cache/cache/cache-key-builder.d.ts +0 -17
- package/dist/smart-cache/cache/cache-key-builder.d.ts.map +0 -1
- package/dist/smart-cache/cache/cache-key-builder.js +0 -100
- package/dist/smart-cache/cache/cache-key-builder.js.map +0 -1
- package/dist/smart-cache/cache/cache-manager.d.ts +0 -22
- package/dist/smart-cache/cache/cache-manager.d.ts.map +0 -1
- package/dist/smart-cache/cache/cache-manager.js +0 -124
- package/dist/smart-cache/cache/cache-manager.js.map +0 -1
- package/dist/smart-cache/cache/invalidation.d.ts +0 -15
- package/dist/smart-cache/cache/invalidation.d.ts.map +0 -1
- package/dist/smart-cache/cache/invalidation.js +0 -59
- package/dist/smart-cache/cache/invalidation.js.map +0 -1
- package/dist/smart-cache/client.d.ts +0 -36
- package/dist/smart-cache/client.d.ts.map +0 -1
- package/dist/smart-cache/client.js +0 -138
- package/dist/smart-cache/client.js.map +0 -1
- package/dist/smart-cache/connection/mariadb.d.ts +0 -14
- package/dist/smart-cache/connection/mariadb.d.ts.map +0 -1
- package/dist/smart-cache/connection/mariadb.js +0 -82
- package/dist/smart-cache/connection/mariadb.js.map +0 -1
- package/dist/smart-cache/connection/redis.d.ts +0 -20
- package/dist/smart-cache/connection/redis.d.ts.map +0 -1
- package/dist/smart-cache/connection/redis.js +0 -168
- package/dist/smart-cache/connection/redis.js.map +0 -1
- package/dist/smart-cache/discovery/dependency-graph.d.ts +0 -20
- package/dist/smart-cache/discovery/dependency-graph.d.ts.map +0 -1
- package/dist/smart-cache/discovery/dependency-graph.js +0 -89
- package/dist/smart-cache/discovery/dependency-graph.js.map +0 -1
- package/dist/smart-cache/discovery/relationship-parser.d.ts +0 -10
- package/dist/smart-cache/discovery/relationship-parser.d.ts.map +0 -1
- package/dist/smart-cache/discovery/relationship-parser.js +0 -40
- package/dist/smart-cache/discovery/relationship-parser.js.map +0 -1
- package/dist/smart-cache/discovery/schema-reader.d.ts +0 -15
- package/dist/smart-cache/discovery/schema-reader.d.ts.map +0 -1
- package/dist/smart-cache/discovery/schema-reader.js +0 -82
- package/dist/smart-cache/discovery/schema-reader.js.map +0 -1
- package/dist/smart-cache/examples/basic-usage.d.ts +0 -3
- package/dist/smart-cache/examples/basic-usage.d.ts.map +0 -1
- package/dist/smart-cache/examples/basic-usage.js +0 -105
- package/dist/smart-cache/examples/basic-usage.js.map +0 -1
- package/dist/smart-cache/examples/hooks-example.d.ts +0 -3
- package/dist/smart-cache/examples/hooks-example.d.ts.map +0 -1
- package/dist/smart-cache/examples/hooks-example.js +0 -133
- package/dist/smart-cache/examples/hooks-example.js.map +0 -1
- package/dist/smart-cache/examples/relationships-example.d.ts +0 -3
- package/dist/smart-cache/examples/relationships-example.d.ts.map +0 -1
- package/dist/smart-cache/examples/relationships-example.js +0 -88
- package/dist/smart-cache/examples/relationships-example.js.map +0 -1
- package/dist/smart-cache/hooks/hooks-manager.d.ts +0 -22
- package/dist/smart-cache/hooks/hooks-manager.d.ts.map +0 -1
- package/dist/smart-cache/hooks/hooks-manager.js +0 -117
- package/dist/smart-cache/hooks/hooks-manager.js.map +0 -1
- package/dist/smart-cache/index.d.ts +0 -19
- package/dist/smart-cache/index.d.ts.map +0 -1
- package/dist/smart-cache/index.js +0 -49
- package/dist/smart-cache/index.js.map +0 -1
- package/dist/smart-cache/query/operations.d.ts +0 -31
- package/dist/smart-cache/query/operations.d.ts.map +0 -1
- package/dist/smart-cache/query/operations.js +0 -187
- package/dist/smart-cache/query/operations.js.map +0 -1
- package/dist/smart-cache/query/query-builder.d.ts +0 -15
- package/dist/smart-cache/query/query-builder.d.ts.map +0 -1
- package/dist/smart-cache/query/query-builder.js +0 -169
- package/dist/smart-cache/query/query-builder.js.map +0 -1
- package/dist/smart-cache/query/table-proxy.d.ts +0 -11
- package/dist/smart-cache/query/table-proxy.d.ts.map +0 -1
- package/dist/smart-cache/query/table-proxy.js +0 -25
- package/dist/smart-cache/query/table-proxy.js.map +0 -1
- package/dist/smart-cache/types/cache.d.ts +0 -29
- package/dist/smart-cache/types/cache.d.ts.map +0 -1
- package/dist/smart-cache/types/cache.js +0 -10
- package/dist/smart-cache/types/cache.js.map +0 -1
- package/dist/smart-cache/types/config.d.ts +0 -47
- package/dist/smart-cache/types/config.d.ts.map +0 -1
- package/dist/smart-cache/types/config.js +0 -27
- package/dist/smart-cache/types/config.js.map +0 -1
- package/dist/smart-cache/types/query.d.ts +0 -36
- package/dist/smart-cache/types/query.d.ts.map +0 -1
- package/dist/smart-cache/types/query.js +0 -3
- package/dist/smart-cache/types/query.js.map +0 -1
- package/dist/smart-cache/types/schema.d.ts +0 -25
- package/dist/smart-cache/types/schema.d.ts.map +0 -1
- package/dist/smart-cache/types/schema.js +0 -3
- package/dist/smart-cache/types/schema.js.map +0 -1
- package/dist/trial.d.ts +0 -7
- package/dist/trial.d.ts.map +0 -1
- package/dist/trial.js +0 -30
- package/dist/trial.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema-reader.d.ts","sourceRoot":"","sources":["../../../src/smart-cache/discovery/schema-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAc,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,MAAM,CAAkB;gBAEpB,SAAS,EAAE,wBAAwB,EAAE,MAAM,EAAE,eAAe;IAKlE,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YAqBhC,kBAAkB;YAKlB,aAAa;IAa3B,OAAO,CAAC,YAAY;YAoBN,eAAe;IA8B7B,OAAO,CAAC,cAAc;CAIvB"}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SchemaReader = void 0;
|
|
4
|
-
class SchemaReader {
|
|
5
|
-
constructor(dbManager, config) {
|
|
6
|
-
this.dbManager = dbManager;
|
|
7
|
-
this.config = config;
|
|
8
|
-
}
|
|
9
|
-
async discoverTables() {
|
|
10
|
-
const database = await this.getCurrentDatabase();
|
|
11
|
-
const tables = await this.getTableNames(database);
|
|
12
|
-
const filteredTables = this.filterTables(tables);
|
|
13
|
-
const tableSchemas = [];
|
|
14
|
-
for (const tableName of filteredTables) {
|
|
15
|
-
const columns = await this.getTableColumns(database, tableName);
|
|
16
|
-
const primaryKey = this.findPrimaryKey(columns);
|
|
17
|
-
tableSchemas.push({
|
|
18
|
-
tableName,
|
|
19
|
-
columns,
|
|
20
|
-
primaryKey,
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
return tableSchemas;
|
|
24
|
-
}
|
|
25
|
-
async getCurrentDatabase() {
|
|
26
|
-
const result = await this.dbManager.query('SELECT DATABASE() as db');
|
|
27
|
-
return result[0].db;
|
|
28
|
-
}
|
|
29
|
-
async getTableNames(database) {
|
|
30
|
-
const sql = `
|
|
31
|
-
SELECT TABLE_NAME
|
|
32
|
-
FROM INFORMATION_SCHEMA.TABLES
|
|
33
|
-
WHERE TABLE_SCHEMA = ?
|
|
34
|
-
AND TABLE_TYPE = 'BASE TABLE'
|
|
35
|
-
ORDER BY TABLE_NAME
|
|
36
|
-
`;
|
|
37
|
-
const result = await this.dbManager.query(sql, [database]);
|
|
38
|
-
return result.map((row) => row.TABLE_NAME);
|
|
39
|
-
}
|
|
40
|
-
filterTables(tables) {
|
|
41
|
-
let filtered = tables;
|
|
42
|
-
// Apply include list
|
|
43
|
-
if (this.config.includeTables && this.config.includeTables.length > 0) {
|
|
44
|
-
filtered = filtered.filter((table) => this.config.includeTables.includes(table));
|
|
45
|
-
}
|
|
46
|
-
// Apply exclude list
|
|
47
|
-
if (this.config.excludeTables && this.config.excludeTables.length > 0) {
|
|
48
|
-
filtered = filtered.filter((table) => !this.config.excludeTables.includes(table));
|
|
49
|
-
}
|
|
50
|
-
return filtered;
|
|
51
|
-
}
|
|
52
|
-
async getTableColumns(database, tableName) {
|
|
53
|
-
const sql = `
|
|
54
|
-
SELECT
|
|
55
|
-
COLUMN_NAME as columnName,
|
|
56
|
-
DATA_TYPE as dataType,
|
|
57
|
-
IS_NULLABLE as isNullable,
|
|
58
|
-
COLUMN_KEY as columnKey,
|
|
59
|
-
COLUMN_DEFAULT as columnDefault,
|
|
60
|
-
EXTRA as extra
|
|
61
|
-
FROM INFORMATION_SCHEMA.COLUMNS
|
|
62
|
-
WHERE TABLE_SCHEMA = ?
|
|
63
|
-
AND TABLE_NAME = ?
|
|
64
|
-
ORDER BY ORDINAL_POSITION
|
|
65
|
-
`;
|
|
66
|
-
const result = await this.dbManager.query(sql, [database, tableName]);
|
|
67
|
-
return result.map((row) => ({
|
|
68
|
-
columnName: row.columnName,
|
|
69
|
-
dataType: row.dataType,
|
|
70
|
-
isNullable: row.isNullable === 'YES',
|
|
71
|
-
columnKey: row.columnKey || '',
|
|
72
|
-
columnDefault: row.columnDefault,
|
|
73
|
-
extra: row.extra || '',
|
|
74
|
-
}));
|
|
75
|
-
}
|
|
76
|
-
findPrimaryKey(columns) {
|
|
77
|
-
const pkColumn = columns.find((col) => col.columnKey === 'PRI');
|
|
78
|
-
return pkColumn?.columnName;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
exports.SchemaReader = SchemaReader;
|
|
82
|
-
//# sourceMappingURL=schema-reader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema-reader.js","sourceRoot":"","sources":["../../../src/smart-cache/discovery/schema-reader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"basic-usage.d.ts","sourceRoot":"","sources":["../../../src/smart-cache/examples/basic-usage.ts"],"names":[],"mappings":"AAEA,iBAAe,iBAAiB,kBA+H/B;AAOD,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.basicUsageExample = basicUsageExample;
|
|
4
|
-
const index_1 = require("../index");
|
|
5
|
-
async function basicUsageExample() {
|
|
6
|
-
// Initialize the smart cache client
|
|
7
|
-
const db = await (0, index_1.createSmartDB)({
|
|
8
|
-
mariadb: {
|
|
9
|
-
host: 'localhost',
|
|
10
|
-
user: 'root',
|
|
11
|
-
password: 'password',
|
|
12
|
-
database: 'mydb',
|
|
13
|
-
},
|
|
14
|
-
redis: {
|
|
15
|
-
host: 'localhost',
|
|
16
|
-
port: 6379,
|
|
17
|
-
},
|
|
18
|
-
cache: {
|
|
19
|
-
enabled: true,
|
|
20
|
-
defaultTTL: 60, // 60 seconds
|
|
21
|
-
maxKeys: 1000,
|
|
22
|
-
invalidateOnWrite: true,
|
|
23
|
-
cascadeInvalidation: true,
|
|
24
|
-
},
|
|
25
|
-
discovery: {
|
|
26
|
-
autoDiscover: true,
|
|
27
|
-
refreshInterval: 0, // manual refresh only
|
|
28
|
-
},
|
|
29
|
-
logging: {
|
|
30
|
-
level: 'info',
|
|
31
|
-
},
|
|
32
|
-
});
|
|
33
|
-
try {
|
|
34
|
-
// === READ OPERATIONS (Cache-first) ===
|
|
35
|
-
// Find one user
|
|
36
|
-
const user = await db.users.findOne({ email: 'john@example.com' });
|
|
37
|
-
console.log('User:', user);
|
|
38
|
-
// Find many users with options
|
|
39
|
-
const activeUsers = await db.users.findMany({ status: 'active' }, { limit: 10, orderBy: { column: 'created_at', direction: 'DESC' } });
|
|
40
|
-
console.log('Active users:', activeUsers.length);
|
|
41
|
-
// Find by ID (optimized cache key)
|
|
42
|
-
const userById = await db.users.findById(1);
|
|
43
|
-
console.log('User by ID:', userById);
|
|
44
|
-
// Count records
|
|
45
|
-
const userCount = await db.users.count({ status: 'active' });
|
|
46
|
-
console.log('Active user count:', userCount);
|
|
47
|
-
// === WRITE OPERATIONS (Auto-invalidates cache) ===
|
|
48
|
-
// Insert one record
|
|
49
|
-
const newUser = await db.users.insertOne({
|
|
50
|
-
name: 'Jane Doe',
|
|
51
|
-
email: 'jane@example.com',
|
|
52
|
-
status: 'active',
|
|
53
|
-
});
|
|
54
|
-
console.log('New user created:', newUser);
|
|
55
|
-
// Insert many records
|
|
56
|
-
const newUsers = await db.users.insertMany([
|
|
57
|
-
{ name: 'Alice', email: 'alice@example.com', status: 'active' },
|
|
58
|
-
{ name: 'Bob', email: 'bob@example.com', status: 'inactive' },
|
|
59
|
-
]);
|
|
60
|
-
console.log('Created', newUsers.length, 'users');
|
|
61
|
-
// Update one record
|
|
62
|
-
const updated = await db.users.updateOne({ email: 'jane@example.com' }, { status: 'verified' });
|
|
63
|
-
console.log('Updated user:', updated);
|
|
64
|
-
// Update by ID
|
|
65
|
-
const updatedById = await db.users.updateById(1, {
|
|
66
|
-
last_login: new Date(),
|
|
67
|
-
});
|
|
68
|
-
console.log('Updated user by ID:', updatedById);
|
|
69
|
-
// Update many records
|
|
70
|
-
const updateCount = await db.users.updateMany({ status: 'inactive' }, { status: 'archived' });
|
|
71
|
-
console.log('Updated', updateCount, 'users');
|
|
72
|
-
// Delete one record
|
|
73
|
-
const deleted = await db.users.deleteOne({ email: 'test@example.com' });
|
|
74
|
-
console.log('Deleted:', deleted);
|
|
75
|
-
// Delete by ID
|
|
76
|
-
const deletedById = await db.users.deleteById(999);
|
|
77
|
-
console.log('Deleted by ID:', deletedById);
|
|
78
|
-
// === RAW SQL (Bypass cache) ===
|
|
79
|
-
const customQuery = await db.users.raw('SELECT COUNT(*) as total FROM users WHERE created_at > ?', [new Date('2024-01-01')]);
|
|
80
|
-
console.log('Custom query result:', customQuery);
|
|
81
|
-
// === CACHE MANAGEMENT ===
|
|
82
|
-
// Get cache statistics
|
|
83
|
-
const stats = db.getCacheManager().getStats();
|
|
84
|
-
console.log('Cache stats:', stats);
|
|
85
|
-
// Manually invalidate cache for a table
|
|
86
|
-
await db.users.invalidateCache();
|
|
87
|
-
// Warm cache (pre-populate for common queries)
|
|
88
|
-
await db.users.warmCache({ status: 'active' });
|
|
89
|
-
// === HEALTH CHECK ===
|
|
90
|
-
const health = await db.healthCheck();
|
|
91
|
-
console.log('Health:', health);
|
|
92
|
-
// === DISCOVERED TABLES ===
|
|
93
|
-
const tables = db.getDiscoveredTables();
|
|
94
|
-
console.log('Discovered tables:', tables);
|
|
95
|
-
}
|
|
96
|
-
finally {
|
|
97
|
-
// Close connections
|
|
98
|
-
await db.close();
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
// Run the example
|
|
102
|
-
if (require.main === module) {
|
|
103
|
-
basicUsageExample().catch(console.error);
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=basic-usage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"basic-usage.js","sourceRoot":"","sources":["../../../src/smart-cache/examples/basic-usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-example.d.ts","sourceRoot":"","sources":["../../../src/smart-cache/examples/hooks-example.ts"],"names":[],"mappings":"AAEA,iBAAe,YAAY,kBAgJ1B;AAOD,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,133 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-example.js","sourceRoot":"","sources":["../../../src/smart-cache/examples/hooks-example.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,88 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"relationships-example.js","sourceRoot":"","sources":["../../../src/smart-cache/examples/relationships-example.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,117 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-manager.js","sourceRoot":"","sources":["../../../src/smart-cache/hooks/hooks-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|