fss-link 1.0.51 → 1.0.53

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 (41) hide show
  1. package/README.md +42 -2
  2. package/dist/package.json +1 -1
  3. package/dist/src/config/auth.js +5 -8
  4. package/dist/src/config/auth.js.map +1 -1
  5. package/dist/src/config/config.d.ts +1 -0
  6. package/dist/src/config/config.js +5 -0
  7. package/dist/src/config/config.js.map +1 -1
  8. package/dist/src/config/database-utils.d.ts +185 -0
  9. package/dist/src/config/database-utils.js +295 -0
  10. package/dist/src/config/database-utils.js.map +1 -0
  11. package/dist/src/config/database.d.ts +197 -1
  12. package/dist/src/config/database.js +499 -160
  13. package/dist/src/config/database.js.map +1 -1
  14. package/dist/src/config/databaseHealthMonitor.d.ts +86 -0
  15. package/dist/src/config/databaseHealthMonitor.js +180 -0
  16. package/dist/src/config/databaseHealthMonitor.js.map +1 -0
  17. package/dist/src/config/databaseMetrics.d.ts +147 -0
  18. package/dist/src/config/databaseMetrics.js +369 -0
  19. package/dist/src/config/databaseMetrics.js.map +1 -0
  20. package/dist/src/config/databaseMigrations.js +40 -2
  21. package/dist/src/config/databaseMigrations.js.map +1 -1
  22. package/dist/src/config/databaseSchemaValidator.d.ts +114 -0
  23. package/dist/src/config/databaseSchemaValidator.js +499 -0
  24. package/dist/src/config/databaseSchemaValidator.js.map +1 -0
  25. package/dist/src/config/providerPersistence.d.ts +7 -0
  26. package/dist/src/config/providerPersistence.js +14 -7
  27. package/dist/src/config/providerPersistence.js.map +1 -1
  28. package/dist/src/gemini.js +35 -2
  29. package/dist/src/gemini.js.map +1 -1
  30. package/dist/src/generated/git-commit.d.ts +2 -2
  31. package/dist/src/generated/git-commit.js +2 -2
  32. package/dist/src/ui/utils/updateCheck.js +1 -1
  33. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  34. package/dist/src/utils/installationInfo.js +16 -0
  35. package/dist/src/utils/installationInfo.js.map +1 -1
  36. package/dist/src/utils/installationInfo.test.js +6 -6
  37. package/dist/src/utils/installationInfo.test.js.map +1 -1
  38. package/dist/src/validateNonInterActiveAuth.js +18 -4
  39. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  40. package/dist/tsconfig.tsbuildinfo +1 -1
  41. package/package.json +1 -1
@@ -0,0 +1,369 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Comprehensive Database Metrics Collector
8
+ * Aggregates performance data from all database components
9
+ */
10
+ export class DatabaseMetricsCollector {
11
+ historicalMetrics = [];
12
+ maxHistorySize = 1000;
13
+ thresholds = {
14
+ slowQueryThreshold: 100, // 100ms
15
+ cacheHitRateThreshold: 80, // 80%
16
+ connectionUtilizationThreshold: 90, // 90%
17
+ diskUsageWarning: 100 * 1024 * 1024, // 100MB
18
+ backupAgeWarning: 24 // 24 hours
19
+ };
20
+ /**
21
+ * Collect comprehensive metrics from all database components
22
+ */
23
+ async collectMetrics(db, queryOptimizer, connectionPool, backupManager) {
24
+ const startTime = Date.now();
25
+ try {
26
+ // Collect metrics from different components in parallel
27
+ const [queryMetrics, cacheStats, poolStats, dbStats, usageStats, backupStats] = await Promise.all([
28
+ this.collectQueryMetrics(queryOptimizer),
29
+ this.collectCacheMetrics(queryOptimizer),
30
+ this.collectConnectionPoolMetrics(connectionPool),
31
+ this.collectDatabaseStats(db, queryOptimizer),
32
+ this.collectUsageStats(db),
33
+ this.collectBackupStats(backupManager)
34
+ ]);
35
+ // Merge backup stats into usage stats
36
+ usageStats.totalBackups = backupStats.totalBackups;
37
+ usageStats.lastBackupAge = backupStats.lastBackupAge;
38
+ // Calculate health scores
39
+ const health = this.calculateHealthScores(queryMetrics, cacheStats, poolStats, usageStats);
40
+ const metrics = {
41
+ queryPerformance: queryMetrics,
42
+ cachePerformance: cacheStats,
43
+ connectionPool: poolStats,
44
+ database: dbStats,
45
+ usage: usageStats,
46
+ health,
47
+ collectedAt: new Date(),
48
+ collectionDuration: Date.now() - startTime
49
+ };
50
+ // Store in history
51
+ this.addToHistory(metrics);
52
+ return metrics;
53
+ }
54
+ catch (error) {
55
+ console.warn('Failed to collect database metrics:', error);
56
+ // Return minimal metrics on error
57
+ return this.getEmptyMetrics();
58
+ }
59
+ }
60
+ /**
61
+ * Collect query performance metrics
62
+ */
63
+ async collectQueryMetrics(queryOptimizer) {
64
+ try {
65
+ const allMetrics = queryOptimizer.getQueryMetrics();
66
+ const slowQueries = queryOptimizer.getSlowQueries(this.thresholds.slowQueryThreshold);
67
+ const totalQueries = allMetrics.reduce((sum, m) => sum + m.executionCount, 0);
68
+ const totalTime = allMetrics.reduce((sum, m) => sum + m.totalTime, 0);
69
+ const averageQueryTime = totalQueries > 0 ? totalTime / totalQueries : 0;
70
+ return {
71
+ totalQueries,
72
+ averageQueryTime,
73
+ slowQueries: slowQueries.length,
74
+ fastQueries: Math.max(0, allMetrics.length - slowQueries.length),
75
+ failedQueries: 0 // TODO: Track failed queries in QueryOptimizer
76
+ };
77
+ }
78
+ catch (error) {
79
+ console.warn('Failed to collect query metrics:', error);
80
+ return {
81
+ totalQueries: 0,
82
+ averageQueryTime: 0,
83
+ slowQueries: 0,
84
+ fastQueries: 0,
85
+ failedQueries: 0
86
+ };
87
+ }
88
+ }
89
+ /**
90
+ * Collect cache performance metrics
91
+ */
92
+ async collectCacheMetrics(queryOptimizer) {
93
+ try {
94
+ const cacheStats = queryOptimizer.getCacheStats();
95
+ return {
96
+ hitRate: cacheStats.hitRate * 100, // Convert to percentage
97
+ missRate: (1 - cacheStats.hitRate) * 100,
98
+ cacheSize: cacheStats.size,
99
+ maxCacheSize: cacheStats.maxSize,
100
+ evictionCount: 0 // TODO: Track evictions in QueryOptimizer
101
+ };
102
+ }
103
+ catch (error) {
104
+ console.warn('Failed to collect cache metrics:', error);
105
+ return {
106
+ hitRate: 0,
107
+ missRate: 100,
108
+ cacheSize: 0,
109
+ maxCacheSize: 0,
110
+ evictionCount: 0
111
+ };
112
+ }
113
+ }
114
+ /**
115
+ * Collect connection pool metrics
116
+ */
117
+ async collectConnectionPoolMetrics(connectionPool) {
118
+ try {
119
+ const poolStats = connectionPool.getStats();
120
+ const utilization = poolStats.maxConnections > 0
121
+ ? (poolStats.activeConnections / poolStats.maxConnections) * 100
122
+ : 0;
123
+ return {
124
+ totalConnections: poolStats.totalConnections,
125
+ activeConnections: poolStats.activeConnections,
126
+ availableConnections: poolStats.availableConnections,
127
+ pendingRequests: poolStats.pendingRequests,
128
+ maxConnections: poolStats.maxConnections,
129
+ connectionUtilization: utilization
130
+ };
131
+ }
132
+ catch (error) {
133
+ console.warn('Failed to collect connection pool metrics:', error);
134
+ return {
135
+ totalConnections: 0,
136
+ activeConnections: 0,
137
+ availableConnections: 0,
138
+ pendingRequests: 0,
139
+ maxConnections: 0,
140
+ connectionUtilization: 0
141
+ };
142
+ }
143
+ }
144
+ /**
145
+ * Collect database statistics
146
+ */
147
+ async collectDatabaseStats(db, queryOptimizer) {
148
+ try {
149
+ const dbStats = await queryOptimizer.getDatabaseStats(db);
150
+ const totalSize = dbStats.pageCount * dbStats.pageSize;
151
+ // Count indexes
152
+ const indexResult = db.exec(`
153
+ SELECT COUNT(*) as count FROM sqlite_master
154
+ WHERE type='index' AND name NOT LIKE 'sqlite_%'
155
+ `);
156
+ const indexCount = indexResult[0]?.values[0]?.[0] || 0;
157
+ return {
158
+ pageCount: dbStats.pageCount,
159
+ pageSize: dbStats.pageSize,
160
+ totalSize,
161
+ freelistCount: dbStats.freelistCount,
162
+ schemaVersion: dbStats.schemaVersion,
163
+ tableCount: dbStats.tables.length,
164
+ indexCount
165
+ };
166
+ }
167
+ catch (error) {
168
+ console.warn('Failed to collect database stats:', error);
169
+ return {
170
+ pageCount: 0,
171
+ pageSize: 0,
172
+ totalSize: 0,
173
+ freelistCount: 0,
174
+ schemaVersion: 0,
175
+ tableCount: 0,
176
+ indexCount: 0
177
+ };
178
+ }
179
+ }
180
+ /**
181
+ * Collect usage statistics
182
+ */
183
+ async collectUsageStats(db) {
184
+ try {
185
+ // Get model counts
186
+ const modelResult = db.exec('SELECT COUNT(*) as count FROM model_configs');
187
+ const totalModelConfigs = modelResult[0]?.values[0]?.[0] || 0;
188
+ const activeResult = db.exec('SELECT COUNT(*) as count FROM model_configs WHERE is_active = 1');
189
+ const activeModels = activeResult[0]?.values[0]?.[0] || 0;
190
+ const favoriteResult = db.exec('SELECT COUNT(*) as count FROM model_configs WHERE is_favorite = 1');
191
+ const favoriteModels = favoriteResult[0]?.values[0]?.[0] || 0;
192
+ return {
193
+ totalModelConfigs,
194
+ activeModels,
195
+ favoriteModels,
196
+ totalBackups: 0, // TODO: Get from backup manager
197
+ lastBackupAge: 0, // TODO: Calculate from backup manager
198
+ diskUsage: 0 // TODO: Calculate actual disk usage
199
+ };
200
+ }
201
+ catch (error) {
202
+ console.warn('Failed to collect usage stats:', error);
203
+ return {
204
+ totalModelConfigs: 0,
205
+ activeModels: 0,
206
+ favoriteModels: 0,
207
+ totalBackups: 0,
208
+ lastBackupAge: 0,
209
+ diskUsage: 0
210
+ };
211
+ }
212
+ }
213
+ /**
214
+ * Collect backup statistics
215
+ */
216
+ async collectBackupStats(backupManager) {
217
+ try {
218
+ const backups = await backupManager.listBackups();
219
+ const totalBackups = backups.length;
220
+ let lastBackupAge = 0;
221
+ if (backups.length > 0) {
222
+ const latestBackup = backups[0]; // Assuming sorted by date
223
+ const backupDate = new Date(latestBackup.timestamp);
224
+ lastBackupAge = (Date.now() - backupDate.getTime()) / (1000 * 60 * 60); // hours
225
+ }
226
+ return { totalBackups, lastBackupAge };
227
+ }
228
+ catch (error) {
229
+ console.warn('Failed to collect backup stats:', error);
230
+ return { totalBackups: 0, lastBackupAge: 0 };
231
+ }
232
+ }
233
+ /**
234
+ * Calculate health scores based on metrics
235
+ */
236
+ calculateHealthScores(queryMetrics, cacheMetrics, poolMetrics, usageMetrics) {
237
+ // Performance score (0-100)
238
+ const queryScore = queryMetrics.averageQueryTime < this.thresholds.slowQueryThreshold ? 100 :
239
+ Math.max(0, 100 - (queryMetrics.averageQueryTime - this.thresholds.slowQueryThreshold));
240
+ const cacheScore = cacheMetrics.hitRate; // Already in percentage
241
+ const poolScore = poolMetrics.connectionUtilization < this.thresholds.connectionUtilizationThreshold ? 100 :
242
+ Math.max(0, 100 - (poolMetrics.connectionUtilization - this.thresholds.connectionUtilizationThreshold));
243
+ const performanceScore = Math.round((queryScore + cacheScore + poolScore) / 3);
244
+ // Reliability score (0-100)
245
+ const failureRate = queryMetrics.totalQueries > 0 ?
246
+ (queryMetrics.failedQueries / queryMetrics.totalQueries) * 100 : 0;
247
+ const reliabilityScore = Math.max(0, 100 - failureRate);
248
+ // Overall score
249
+ const overallScore = Math.round((performanceScore + reliabilityScore) / 2);
250
+ // Maintenance needed check
251
+ const maintenanceNeeded = queryMetrics.averageQueryTime > this.thresholds.slowQueryThreshold ||
252
+ cacheMetrics.hitRate < this.thresholds.cacheHitRateThreshold ||
253
+ poolMetrics.connectionUtilization > this.thresholds.connectionUtilizationThreshold ||
254
+ usageMetrics.diskUsage > this.thresholds.diskUsageWarning;
255
+ return {
256
+ overallScore,
257
+ performanceScore,
258
+ reliabilityScore,
259
+ maintenanceNeeded,
260
+ lastOptimization: null, // TODO: Track optimization history
261
+ lastVacuum: null // TODO: Track vacuum history
262
+ };
263
+ }
264
+ /**
265
+ * Add metrics to historical collection
266
+ */
267
+ addToHistory(metrics) {
268
+ this.historicalMetrics.push({
269
+ timestamp: new Date(),
270
+ metrics
271
+ });
272
+ // Trim history if too large
273
+ if (this.historicalMetrics.length > this.maxHistorySize) {
274
+ this.historicalMetrics = this.historicalMetrics.slice(-this.maxHistorySize);
275
+ }
276
+ }
277
+ /**
278
+ * Get historical metrics for trend analysis
279
+ */
280
+ getHistoricalMetrics(hours = 24) {
281
+ const cutoff = new Date(Date.now() - hours * 60 * 60 * 1000);
282
+ return this.historicalMetrics.filter(h => h.timestamp >= cutoff);
283
+ }
284
+ /**
285
+ * Get performance trends
286
+ */
287
+ getPerformanceTrends(hours = 24) {
288
+ const recent = this.getHistoricalMetrics(hours);
289
+ if (recent.length < 2) {
290
+ return { queryTimeTraend: 0, cacheHitTrend: 0, overallHealthTrend: 0 };
291
+ }
292
+ const oldest = recent[0].metrics;
293
+ const newest = recent[recent.length - 1].metrics;
294
+ return {
295
+ queryTimeTraend: newest.queryPerformance.averageQueryTime - oldest.queryPerformance.averageQueryTime,
296
+ cacheHitTrend: newest.cachePerformance.hitRate - oldest.cachePerformance.hitRate,
297
+ overallHealthTrend: newest.health.overallScore - oldest.health.overallScore
298
+ };
299
+ }
300
+ /**
301
+ * Return empty metrics structure for error cases
302
+ */
303
+ getEmptyMetrics() {
304
+ return {
305
+ queryPerformance: {
306
+ totalQueries: 0,
307
+ averageQueryTime: 0,
308
+ slowQueries: 0,
309
+ fastQueries: 0,
310
+ failedQueries: 0
311
+ },
312
+ cachePerformance: {
313
+ hitRate: 0,
314
+ missRate: 100,
315
+ cacheSize: 0,
316
+ maxCacheSize: 0,
317
+ evictionCount: 0
318
+ },
319
+ connectionPool: {
320
+ totalConnections: 0,
321
+ activeConnections: 0,
322
+ availableConnections: 0,
323
+ pendingRequests: 0,
324
+ maxConnections: 0,
325
+ connectionUtilization: 0
326
+ },
327
+ database: {
328
+ pageCount: 0,
329
+ pageSize: 0,
330
+ totalSize: 0,
331
+ freelistCount: 0,
332
+ schemaVersion: 0,
333
+ tableCount: 0,
334
+ indexCount: 0
335
+ },
336
+ usage: {
337
+ totalModelConfigs: 0,
338
+ activeModels: 0,
339
+ favoriteModels: 0,
340
+ totalBackups: 0,
341
+ lastBackupAge: 0,
342
+ diskUsage: 0
343
+ },
344
+ health: {
345
+ overallScore: 0,
346
+ performanceScore: 0,
347
+ reliabilityScore: 0,
348
+ maintenanceNeeded: true,
349
+ lastOptimization: null,
350
+ lastVacuum: null
351
+ },
352
+ collectedAt: new Date(),
353
+ collectionDuration: 0
354
+ };
355
+ }
356
+ /**
357
+ * Set custom thresholds for health scoring
358
+ */
359
+ setThresholds(thresholds) {
360
+ this.thresholds = { ...this.thresholds, ...thresholds };
361
+ }
362
+ /**
363
+ * Clear historical metrics
364
+ */
365
+ clearHistory() {
366
+ this.historicalMetrics = [];
367
+ }
368
+ }
369
+ //# sourceMappingURL=databaseMetrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"databaseMetrics.js","sourceRoot":"","sources":["../../../src/config/databaseMetrics.ts"],"names":[],"mappings":"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"}
@@ -65,6 +65,7 @@ export class MigrationManager {
65
65
  UNIQUE(provider_id, setting_key)
66
66
  )
67
67
  `);
68
+ console.log('Creating provider_usage_stats table...');
68
69
  db.exec(`
69
70
  CREATE TABLE IF NOT EXISTS provider_usage_stats (
70
71
  id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -74,6 +75,7 @@ export class MigrationManager {
74
75
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
75
76
  )
76
77
  `);
78
+ console.log('provider_usage_stats table created successfully');
77
79
  },
78
80
  down: (db) => {
79
81
  db.exec('DROP TABLE IF EXISTS provider_usage_stats');
@@ -159,6 +161,31 @@ export class MigrationManager {
159
161
  db.exec('DROP TABLE IF EXISTS schema_info');
160
162
  }
161
163
  });
164
+ // Migration 5: Add missing source column to model_configs
165
+ this.migrations.push({
166
+ version: 5,
167
+ name: 'add_source_column',
168
+ up: (db) => {
169
+ // Check if source column already exists
170
+ const tableInfo = db.exec(`PRAGMA table_info(model_configs)`);
171
+ const hasSourceColumn = tableInfo.some(result => result.values && result.values.some(row => row[1] === 'source'));
172
+ if (!hasSourceColumn) {
173
+ console.log('Adding missing source column to model_configs table...');
174
+ db.exec(`
175
+ ALTER TABLE model_configs
176
+ ADD COLUMN source TEXT DEFAULT 'db'
177
+ `);
178
+ console.log('Source column added successfully');
179
+ }
180
+ else {
181
+ console.log('Source column already exists, skipping');
182
+ }
183
+ },
184
+ down: (db) => {
185
+ // SQLite doesn't support DROP COLUMN easily, so we leave it
186
+ console.log('Rollback: Source column left in place (SQLite limitation)');
187
+ }
188
+ });
162
189
  }
163
190
  /**
164
191
  * Get current schema version from database
@@ -177,8 +204,19 @@ export class MigrationManager {
177
204
  WHERE type='table' AND name='model_configs'
178
205
  `);
179
206
  if (modelConfigsResult.length > 0) {
180
- // Legacy database exists, assume version 1
181
- return 1;
207
+ // Legacy database exists, but we need to check if it has migration 1 tables
208
+ const providerUsageStatsResult = db.exec(`
209
+ SELECT name FROM sqlite_master
210
+ WHERE type='table' AND name='provider_usage_stats'
211
+ `);
212
+ if (providerUsageStatsResult.length > 0) {
213
+ // Has migration 1 tables, assume version 1
214
+ return 1;
215
+ }
216
+ else {
217
+ // Legacy database without migration 1 tables, needs full migration
218
+ return 0;
219
+ }
182
220
  }
183
221
  // Fresh database
184
222
  return 0;
@@ -1 +1 @@
1
- {"version":3,"file":"databaseMigrations.js","sourceRoot":"","sources":["../../../src/config/databaseMigrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"databaseMigrations.js","sourceRoot":"","sources":["../../../src/config/databaseMigrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { Database } from 'sql.js';
7
+ /**
8
+ * Schema validation result
9
+ */
10
+ export interface SchemaValidationResult {
11
+ isValid: boolean;
12
+ errors: SchemaValidationError[];
13
+ warnings: SchemaValidationWarning[];
14
+ summary: {
15
+ totalTables: number;
16
+ totalIndexes: number;
17
+ missingTables: number;
18
+ missingIndexes: number;
19
+ extraTables: number;
20
+ extraIndexes: number;
21
+ schemaVersion: number;
22
+ expectedVersion: number;
23
+ };
24
+ }
25
+ /**
26
+ * Schema validation error
27
+ */
28
+ export interface SchemaValidationError {
29
+ type: 'missing_table' | 'missing_column' | 'missing_index' | 'wrong_type' | 'constraint_violation' | 'version_mismatch';
30
+ table?: string;
31
+ column?: string;
32
+ index?: string;
33
+ expected: string;
34
+ actual: string;
35
+ severity: 'error' | 'warning';
36
+ message: string;
37
+ recommendation?: string;
38
+ }
39
+ /**
40
+ * Schema validation warning
41
+ */
42
+ export interface SchemaValidationWarning {
43
+ type: 'extra_table' | 'extra_column' | 'extra_index' | 'deprecated_feature' | 'performance_issue';
44
+ table?: string;
45
+ column?: string;
46
+ index?: string;
47
+ message: string;
48
+ recommendation?: string;
49
+ }
50
+ /**
51
+ * Database Schema Validator
52
+ * Validates database schema against expected structure
53
+ */
54
+ export declare class DatabaseSchemaValidator {
55
+ private expectedSchemas;
56
+ private expectedVersion;
57
+ constructor();
58
+ /**
59
+ * Initialize expected database schemas
60
+ */
61
+ private initializeExpectedSchemas;
62
+ /**
63
+ * Validate complete database schema
64
+ */
65
+ validateSchema(db: Database): Promise<SchemaValidationResult>;
66
+ /**
67
+ * Validate a specific table
68
+ */
69
+ private validateTable;
70
+ /**
71
+ * Get current schema version
72
+ */
73
+ private getCurrentSchemaVersion;
74
+ /**
75
+ * Get actual tables in database
76
+ */
77
+ private getActualTables;
78
+ /**
79
+ * Get actual indexes in database
80
+ */
81
+ private getActualIndexes;
82
+ /**
83
+ * Get table column information
84
+ */
85
+ private getTableInfo;
86
+ /**
87
+ * Check if column types are compatible
88
+ */
89
+ private isTypeCompatible;
90
+ /**
91
+ * Validate specific table by name
92
+ */
93
+ validateTableSchema(db: Database, tableName: string): Promise<{
94
+ isValid: boolean;
95
+ errors: SchemaValidationError[];
96
+ warnings: SchemaValidationWarning[];
97
+ }>;
98
+ /**
99
+ * Get schema validation report as formatted text
100
+ */
101
+ formatValidationReport(result: SchemaValidationResult): string;
102
+ /**
103
+ * Check if database needs migration
104
+ */
105
+ needsMigration(db: Database): Promise<boolean>;
106
+ /**
107
+ * Get missing tables
108
+ */
109
+ getMissingTables(db: Database): Promise<string[]>;
110
+ /**
111
+ * Get missing indexes
112
+ */
113
+ getMissingIndexes(db: Database): Promise<string[]>;
114
+ }