@freshguard/freshguard-core 0.13.2 → 0.15.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 (196) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/README.md +74 -1
  3. package/SKILL.md +229 -0
  4. package/dist/cli/index.d.ts +13 -0
  5. package/dist/cli/index.d.ts.map +1 -1
  6. package/dist/cli/index.js +74 -1
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/connectors/azure-sql.d.ts +121 -0
  9. package/dist/connectors/azure-sql.d.ts.map +1 -0
  10. package/dist/connectors/azure-sql.js +489 -0
  11. package/dist/connectors/azure-sql.js.map +1 -0
  12. package/dist/connectors/base-connector.d.ts +139 -0
  13. package/dist/connectors/base-connector.d.ts.map +1 -1
  14. package/dist/connectors/base-connector.js +160 -3
  15. package/dist/connectors/base-connector.js.map +1 -1
  16. package/dist/connectors/bigquery.d.ts +100 -0
  17. package/dist/connectors/bigquery.d.ts.map +1 -1
  18. package/dist/connectors/bigquery.js +143 -2
  19. package/dist/connectors/bigquery.js.map +1 -1
  20. package/dist/connectors/duckdb.d.ts +96 -0
  21. package/dist/connectors/duckdb.d.ts.map +1 -1
  22. package/dist/connectors/duckdb.js +144 -7
  23. package/dist/connectors/duckdb.js.map +1 -1
  24. package/dist/connectors/index.d.ts +28 -0
  25. package/dist/connectors/index.d.ts.map +1 -1
  26. package/dist/connectors/index.js +28 -0
  27. package/dist/connectors/index.js.map +1 -1
  28. package/dist/connectors/mssql.d.ts +119 -0
  29. package/dist/connectors/mssql.d.ts.map +1 -0
  30. package/dist/connectors/mssql.js +483 -0
  31. package/dist/connectors/mssql.js.map +1 -0
  32. package/dist/connectors/mysql.d.ts +85 -0
  33. package/dist/connectors/mysql.d.ts.map +1 -1
  34. package/dist/connectors/mysql.js +118 -3
  35. package/dist/connectors/mysql.js.map +1 -1
  36. package/dist/connectors/postgres.d.ts +85 -0
  37. package/dist/connectors/postgres.d.ts.map +1 -1
  38. package/dist/connectors/postgres.js +113 -6
  39. package/dist/connectors/postgres.js.map +1 -1
  40. package/dist/connectors/redshift.d.ts +90 -0
  41. package/dist/connectors/redshift.d.ts.map +1 -1
  42. package/dist/connectors/redshift.js +131 -7
  43. package/dist/connectors/redshift.js.map +1 -1
  44. package/dist/connectors/snowflake.d.ts +108 -0
  45. package/dist/connectors/snowflake.d.ts.map +1 -1
  46. package/dist/connectors/snowflake.js +137 -3
  47. package/dist/connectors/snowflake.js.map +1 -1
  48. package/dist/connectors/synapse.d.ts +123 -0
  49. package/dist/connectors/synapse.d.ts.map +1 -0
  50. package/dist/connectors/synapse.js +495 -0
  51. package/dist/connectors/synapse.js.map +1 -0
  52. package/dist/db/index.d.ts +25 -0
  53. package/dist/db/index.d.ts.map +1 -1
  54. package/dist/db/index.js +23 -0
  55. package/dist/db/index.js.map +1 -1
  56. package/dist/db/migrate.d.ts +23 -0
  57. package/dist/db/migrate.d.ts.map +1 -1
  58. package/dist/db/migrate.js +38 -0
  59. package/dist/db/migrate.js.map +1 -1
  60. package/dist/db/schema.d.ts +11 -0
  61. package/dist/db/schema.d.ts.map +1 -1
  62. package/dist/db/schema.js +70 -0
  63. package/dist/db/schema.js.map +1 -1
  64. package/dist/errors/debug-factory.d.ts +38 -0
  65. package/dist/errors/debug-factory.d.ts.map +1 -1
  66. package/dist/errors/debug-factory.js +40 -0
  67. package/dist/errors/debug-factory.js.map +1 -1
  68. package/dist/errors/index.d.ts +59 -0
  69. package/dist/errors/index.d.ts.map +1 -1
  70. package/dist/errors/index.js +110 -7
  71. package/dist/errors/index.js.map +1 -1
  72. package/dist/index.d.ts +32 -1
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +37 -1
  75. package/dist/index.js.map +1 -1
  76. package/dist/metadata/duckdb-storage.d.ts +3 -0
  77. package/dist/metadata/duckdb-storage.d.ts.map +1 -1
  78. package/dist/metadata/duckdb-storage.js +6 -0
  79. package/dist/metadata/duckdb-storage.js.map +1 -1
  80. package/dist/metadata/factory.d.ts +30 -0
  81. package/dist/metadata/factory.d.ts.map +1 -1
  82. package/dist/metadata/factory.js +31 -0
  83. package/dist/metadata/factory.js.map +1 -1
  84. package/dist/metadata/index.d.ts +26 -0
  85. package/dist/metadata/index.d.ts.map +1 -1
  86. package/dist/metadata/index.js +26 -0
  87. package/dist/metadata/index.js.map +1 -1
  88. package/dist/metadata/interface.d.ts +33 -0
  89. package/dist/metadata/interface.d.ts.map +1 -1
  90. package/dist/metadata/interface.js +3 -0
  91. package/dist/metadata/interface.js.map +1 -1
  92. package/dist/metadata/postgresql-storage.d.ts +3 -0
  93. package/dist/metadata/postgresql-storage.d.ts.map +1 -1
  94. package/dist/metadata/postgresql-storage.js +12 -2
  95. package/dist/metadata/postgresql-storage.js.map +1 -1
  96. package/dist/metadata/schema-config.d.ts +53 -0
  97. package/dist/metadata/schema-config.d.ts.map +1 -1
  98. package/dist/metadata/schema-config.js +64 -0
  99. package/dist/metadata/schema-config.js.map +1 -1
  100. package/dist/metadata/types.d.ts +3 -0
  101. package/dist/metadata/types.d.ts.map +1 -1
  102. package/dist/metadata/types.js +3 -0
  103. package/dist/metadata/types.js.map +1 -1
  104. package/dist/monitor/baseline-calculator.d.ts +56 -0
  105. package/dist/monitor/baseline-calculator.d.ts.map +1 -1
  106. package/dist/monitor/baseline-calculator.js +72 -0
  107. package/dist/monitor/baseline-calculator.js.map +1 -1
  108. package/dist/monitor/baseline-config.d.ts +77 -0
  109. package/dist/monitor/baseline-config.d.ts.map +1 -1
  110. package/dist/monitor/baseline-config.js +79 -1
  111. package/dist/monitor/baseline-config.js.map +1 -1
  112. package/dist/monitor/freshness.d.ts +40 -0
  113. package/dist/monitor/freshness.d.ts.map +1 -1
  114. package/dist/monitor/freshness.js +82 -3
  115. package/dist/monitor/freshness.js.map +1 -1
  116. package/dist/monitor/index.d.ts +29 -0
  117. package/dist/monitor/index.d.ts.map +1 -1
  118. package/dist/monitor/index.js +29 -0
  119. package/dist/monitor/index.js.map +1 -1
  120. package/dist/monitor/schema-baseline.d.ts +45 -0
  121. package/dist/monitor/schema-baseline.d.ts.map +1 -1
  122. package/dist/monitor/schema-baseline.js +63 -5
  123. package/dist/monitor/schema-baseline.js.map +1 -1
  124. package/dist/monitor/schema-changes.d.ts +45 -0
  125. package/dist/monitor/schema-changes.d.ts.map +1 -1
  126. package/dist/monitor/schema-changes.js +85 -0
  127. package/dist/monitor/schema-changes.js.map +1 -1
  128. package/dist/monitor/volume.d.ts +43 -0
  129. package/dist/monitor/volume.d.ts.map +1 -1
  130. package/dist/monitor/volume.js +89 -0
  131. package/dist/monitor/volume.js.map +1 -1
  132. package/dist/observability/logger.d.ts +91 -0
  133. package/dist/observability/logger.d.ts.map +1 -1
  134. package/dist/observability/logger.js +108 -0
  135. package/dist/observability/logger.js.map +1 -1
  136. package/dist/observability/metrics.d.ts +140 -0
  137. package/dist/observability/metrics.d.ts.map +1 -1
  138. package/dist/observability/metrics.js +184 -7
  139. package/dist/observability/metrics.js.map +1 -1
  140. package/dist/resilience/circuit-breaker.d.ts +112 -2
  141. package/dist/resilience/circuit-breaker.d.ts.map +1 -1
  142. package/dist/resilience/circuit-breaker.js +140 -6
  143. package/dist/resilience/circuit-breaker.js.map +1 -1
  144. package/dist/resilience/index.d.ts +9 -0
  145. package/dist/resilience/index.d.ts.map +1 -1
  146. package/dist/resilience/index.js +13 -0
  147. package/dist/resilience/index.js.map +1 -1
  148. package/dist/resilience/retry-policy.d.ts +105 -0
  149. package/dist/resilience/retry-policy.d.ts.map +1 -1
  150. package/dist/resilience/retry-policy.js +158 -7
  151. package/dist/resilience/retry-policy.js.map +1 -1
  152. package/dist/resilience/timeout-manager.d.ts +137 -0
  153. package/dist/resilience/timeout-manager.d.ts.map +1 -1
  154. package/dist/resilience/timeout-manager.js +151 -4
  155. package/dist/resilience/timeout-manager.js.map +1 -1
  156. package/dist/security/query-analyzer.d.ts +124 -0
  157. package/dist/security/query-analyzer.d.ts.map +1 -1
  158. package/dist/security/query-analyzer.js +150 -9
  159. package/dist/security/query-analyzer.js.map +1 -1
  160. package/dist/security/schema-cache.d.ts +152 -0
  161. package/dist/security/schema-cache.d.ts.map +1 -1
  162. package/dist/security/schema-cache.js +144 -12
  163. package/dist/security/schema-cache.js.map +1 -1
  164. package/dist/types/connector.d.ts +68 -1
  165. package/dist/types/connector.d.ts.map +1 -1
  166. package/dist/types/connector.js +38 -15
  167. package/dist/types/connector.js.map +1 -1
  168. package/dist/types/driver-results.d.ts +28 -0
  169. package/dist/types/driver-results.d.ts.map +1 -1
  170. package/dist/types/driver-results.js +12 -0
  171. package/dist/types/driver-results.js.map +1 -1
  172. package/dist/types.d.ts +113 -1
  173. package/dist/types.d.ts.map +1 -1
  174. package/dist/types.js +8 -0
  175. package/dist/types.js.map +1 -1
  176. package/dist/validation/index.d.ts +8 -0
  177. package/dist/validation/index.d.ts.map +1 -1
  178. package/dist/validation/index.js +12 -0
  179. package/dist/validation/index.js.map +1 -1
  180. package/dist/validation/runtime-validator.d.ts +98 -0
  181. package/dist/validation/runtime-validator.d.ts.map +1 -1
  182. package/dist/validation/runtime-validator.js +114 -1
  183. package/dist/validation/runtime-validator.js.map +1 -1
  184. package/dist/validation/sanitizers.d.ts +59 -0
  185. package/dist/validation/sanitizers.d.ts.map +1 -1
  186. package/dist/validation/sanitizers.js +104 -20
  187. package/dist/validation/sanitizers.js.map +1 -1
  188. package/dist/validation/schemas.d.ts +73 -0
  189. package/dist/validation/schemas.d.ts.map +1 -1
  190. package/dist/validation/schemas.js +132 -5
  191. package/dist/validation/schemas.js.map +1 -1
  192. package/dist/validators/index.d.ts +54 -0
  193. package/dist/validators/index.d.ts.map +1 -1
  194. package/dist/validators/index.js +93 -2
  195. package/dist/validators/index.js.map +1 -1
  196. package/package.json +6 -2
@@ -1,14 +1,34 @@
1
+ /**
2
+ * Schema Cache for FreshGuard Core Phase 2
3
+ *
4
+ * Caches table metadata with expiry for improved query analysis performance
5
+ * and reduced database load from repeated schema queries.
6
+ *
7
+ * @license MIT
8
+ */
1
9
  import { createComponentLogger } from '../observability/logger.js';
2
10
  import { createComponentMetrics } from '../observability/metrics.js';
11
+ // ==============================================
12
+ // Default Configuration
13
+ // ==============================================
14
+ /**
15
+ * Default schema cache configuration
16
+ */
3
17
  const DEFAULT_CONFIG = {
4
- defaultTTL: 300000,
18
+ defaultTTL: 300000, // 5 minutes
5
19
  maxEntries: 1000,
6
- cleanupInterval: 60000,
20
+ cleanupInterval: 60000, // 1 minute
7
21
  enableAutoRefresh: true,
8
- autoRefreshThreshold: 0.8,
9
- enableCompression: false,
22
+ autoRefreshThreshold: 0.8, // Refresh at 80% of TTL
23
+ enableCompression: false, // Disabled for simplicity
10
24
  enableStats: true
11
25
  };
26
+ // ==============================================
27
+ // Schema Cache Implementation
28
+ // ==============================================
29
+ /**
30
+ * High-performance schema cache with TTL and LRU eviction
31
+ */
12
32
  export class SchemaCache {
13
33
  cache = new Map();
14
34
  config;
@@ -23,6 +43,7 @@ export class SchemaCache {
23
43
  ...config
24
44
  };
25
45
  this.logger = this.config.logger;
46
+ // Initialize statistics
26
47
  this.stats = {
27
48
  totalEntries: 0,
28
49
  hits: 0,
@@ -33,6 +54,7 @@ export class SchemaCache {
33
54
  averageAge: 0,
34
55
  lastResetTime: new Date()
35
56
  };
57
+ // Start cleanup timer
36
58
  this.startCleanupTimer();
37
59
  this.logger.info('Schema cache initialized', {
38
60
  defaultTTL: this.config.defaultTTL,
@@ -41,6 +63,9 @@ export class SchemaCache {
41
63
  autoRefresh: this.config.enableAutoRefresh
42
64
  });
43
65
  }
66
+ /**
67
+ * Get cached table schema
68
+ */
44
69
  get(database, tableName) {
45
70
  const key = this.makeKey(database, tableName);
46
71
  const entry = this.cache.get(key);
@@ -48,6 +73,7 @@ export class SchemaCache {
48
73
  this.recordMiss();
49
74
  return null;
50
75
  }
76
+ // Check if entry has expired
51
77
  const now = new Date();
52
78
  if (now > entry.schema.expiresAt) {
53
79
  this.cache.delete(key);
@@ -55,6 +81,7 @@ export class SchemaCache {
55
81
  this.logger.debug('Cache entry expired', { database, tableName });
56
82
  return null;
57
83
  }
84
+ // Check if entry needs refresh (auto-refresh)
58
85
  if (this.config.enableAutoRefresh) {
59
86
  const ageRatio = (now.getTime() - entry.schema.cachedAt.getTime()) /
60
87
  (entry.schema.expiresAt.getTime() - entry.schema.cachedAt.getTime());
@@ -67,12 +94,16 @@ export class SchemaCache {
67
94
  });
68
95
  }
69
96
  }
97
+ // Update access metadata
70
98
  entry.lastAccessed = now;
71
99
  entry.accessCount++;
72
100
  this.recordHit();
73
101
  this.logger.debug('Cache hit', { database, tableName, accessCount: entry.accessCount });
74
- return { ...entry.schema };
102
+ return { ...entry.schema }; // Return copy to prevent mutations
75
103
  }
104
+ /**
105
+ * Store table schema in cache
106
+ */
76
107
  set(schema) {
77
108
  const now = new Date();
78
109
  const expiresAt = new Date(now.getTime() + this.config.defaultTTL);
@@ -82,9 +113,11 @@ export class SchemaCache {
82
113
  expiresAt
83
114
  };
84
115
  const key = this.makeKey(schema.database, schema.tableName);
116
+ // Check if we need to evict entries
85
117
  if (this.cache.size >= this.config.maxEntries && !this.cache.has(key)) {
86
118
  this.evictLRU();
87
119
  }
120
+ // Store the entry
88
121
  const entry = {
89
122
  schema: cachedSchema,
90
123
  lastAccessed: now,
@@ -102,6 +135,9 @@ export class SchemaCache {
102
135
  expiresAt: expiresAt.toISOString()
103
136
  });
104
137
  }
138
+ /**
139
+ * Remove table schema from cache
140
+ */
105
141
  delete(database, tableName) {
106
142
  const key = this.makeKey(database, tableName);
107
143
  const deleted = this.cache.delete(key);
@@ -111,12 +147,16 @@ export class SchemaCache {
111
147
  }
112
148
  return deleted;
113
149
  }
150
+ /**
151
+ * Check if table schema exists in cache and is valid
152
+ */
114
153
  has(database, tableName) {
115
154
  const key = this.makeKey(database, tableName);
116
155
  const entry = this.cache.get(key);
117
156
  if (!entry) {
118
157
  return false;
119
158
  }
159
+ // Check expiry
120
160
  const now = new Date();
121
161
  if (now > entry.schema.expiresAt) {
122
162
  this.cache.delete(key);
@@ -124,6 +164,9 @@ export class SchemaCache {
124
164
  }
125
165
  return true;
126
166
  }
167
+ /**
168
+ * Get entries that need refresh
169
+ */
127
170
  getEntriesNeedingRefresh() {
128
171
  const needingRefresh = [];
129
172
  for (const [key, entry] of this.cache) {
@@ -134,6 +177,9 @@ export class SchemaCache {
134
177
  }
135
178
  return needingRefresh;
136
179
  }
180
+ /**
181
+ * Mark entry as refreshed
182
+ */
137
183
  markAsRefreshed(database, tableName) {
138
184
  const key = this.makeKey(database, tableName);
139
185
  const entry = this.cache.get(key);
@@ -142,6 +188,9 @@ export class SchemaCache {
142
188
  this.logger.debug('Cache entry marked as refreshed', { database, tableName });
143
189
  }
144
190
  }
191
+ /**
192
+ * Get all cached table names for a database
193
+ */
145
194
  getTablesForDatabase(database) {
146
195
  const tables = [];
147
196
  for (const [key, entry] of this.cache) {
@@ -152,6 +201,9 @@ export class SchemaCache {
152
201
  }
153
202
  return tables.sort();
154
203
  }
204
+ /**
205
+ * Clear all cache entries
206
+ */
155
207
  clear() {
156
208
  const entriesCleared = this.cache.size;
157
209
  this.cache.clear();
@@ -162,6 +214,9 @@ export class SchemaCache {
162
214
  };
163
215
  this.logger.info('Schema cache cleared', { entriesCleared });
164
216
  }
217
+ /**
218
+ * Clear expired entries
219
+ */
165
220
  clearExpired() {
166
221
  const now = new Date();
167
222
  let expiredCount = 0;
@@ -178,10 +233,16 @@ export class SchemaCache {
178
233
  }
179
234
  return expiredCount;
180
235
  }
236
+ /**
237
+ * Get cache statistics
238
+ */
181
239
  getStats() {
182
240
  this.updateStats();
183
241
  return { ...this.stats };
184
242
  }
243
+ /**
244
+ * Reset cache statistics
245
+ */
185
246
  resetStats() {
186
247
  this.stats = {
187
248
  totalEntries: this.cache.size,
@@ -195,6 +256,9 @@ export class SchemaCache {
195
256
  };
196
257
  this.logger.info('Cache statistics reset');
197
258
  }
259
+ /**
260
+ * Stop cache cleanup timer
261
+ */
198
262
  stop() {
199
263
  if (this.cleanupTimer) {
200
264
  clearInterval(this.cleanupTimer);
@@ -202,6 +266,9 @@ export class SchemaCache {
202
266
  }
203
267
  this.logger.info('Schema cache stopped');
204
268
  }
269
+ /**
270
+ * Export cache data for persistence
271
+ */
205
272
  export() {
206
273
  const schemas = [];
207
274
  for (const entry of this.cache.values()) {
@@ -209,10 +276,14 @@ export class SchemaCache {
209
276
  }
210
277
  return schemas;
211
278
  }
279
+ /**
280
+ * Import cache data from persistence
281
+ */
212
282
  import(schemas) {
213
283
  let importedCount = 0;
214
284
  const now = new Date();
215
285
  for (const schema of schemas) {
286
+ // Only import non-expired entries
216
287
  if (now <= schema.expiresAt) {
217
288
  const key = this.makeKey(schema.database, schema.tableName);
218
289
  const entry = {
@@ -229,27 +300,48 @@ export class SchemaCache {
229
300
  this.logger.info('Cache data imported', { importedCount, totalSchemas: schemas.length });
230
301
  return importedCount;
231
302
  }
303
+ // ==============================================
304
+ // Private Methods
305
+ // ==============================================
306
+ /**
307
+ * Create cache key from database and table name
308
+ */
232
309
  makeKey(database, tableName) {
233
310
  return `${database}:${tableName}`;
234
311
  }
312
+ /**
313
+ * Parse cache key back to database and table name
314
+ */
235
315
  parseKey(key) {
236
316
  const parts = key.split(':', 2);
237
317
  const database = parts[0] ?? '';
238
318
  const tableName = parts[1] ?? '';
239
319
  return { database, tableName };
240
320
  }
321
+ /**
322
+ * Record cache hit
323
+ */
241
324
  recordHit() {
242
325
  this.stats.hits++;
243
326
  this.updateHitRate();
244
327
  }
328
+ /**
329
+ * Record cache miss
330
+ */
245
331
  recordMiss() {
246
332
  this.stats.misses++;
247
333
  this.updateHitRate();
248
334
  }
335
+ /**
336
+ * Update hit rate calculation
337
+ */
249
338
  updateHitRate() {
250
339
  const total = this.stats.hits + this.stats.misses;
251
340
  this.stats.hitRate = total > 0 ? (this.stats.hits / total) * 100 : 0;
252
341
  }
342
+ /**
343
+ * Evict least recently used entry
344
+ */
253
345
  evictLRU() {
254
346
  let oldestKey = null;
255
347
  let oldestTime = new Date();
@@ -270,19 +362,29 @@ export class SchemaCache {
270
362
  });
271
363
  }
272
364
  }
365
+ /**
366
+ * Update cache statistics
367
+ */
273
368
  updateStats() {
274
369
  this.stats.totalEntries = this.cache.size;
275
370
  this.stats.memoryUsage = this.estimateMemoryUsage();
276
371
  this.stats.averageAge = this.calculateAverageAge();
277
372
  }
373
+ /**
374
+ * Estimate memory usage of cache
375
+ */
278
376
  estimateMemoryUsage() {
279
377
  let totalSize = 0;
280
378
  for (const entry of this.cache.values()) {
281
- totalSize += JSON.stringify(entry.schema).length * 2;
282
- totalSize += 200;
379
+ // Rough estimation of schema object size
380
+ totalSize += JSON.stringify(entry.schema).length * 2; // Rough byte estimate
381
+ totalSize += 200; // Overhead for entry metadata
283
382
  }
284
383
  return totalSize;
285
384
  }
385
+ /**
386
+ * Calculate average age of cache entries
387
+ */
286
388
  calculateAverageAge() {
287
389
  if (this.cache.size === 0)
288
390
  return 0;
@@ -293,6 +395,9 @@ export class SchemaCache {
293
395
  }
294
396
  return totalAge / this.cache.size;
295
397
  }
398
+ /**
399
+ * Start cleanup timer for expired entries
400
+ */
296
401
  startCleanupTimer() {
297
402
  if (this.cleanupTimer) {
298
403
  clearInterval(this.cleanupTimer);
@@ -302,6 +407,12 @@ export class SchemaCache {
302
407
  }, this.config.cleanupInterval);
303
408
  }
304
409
  }
410
+ // ==============================================
411
+ // Utility Functions
412
+ // ==============================================
413
+ /**
414
+ * Generate structure hash for change detection
415
+ */
305
416
  export function generateStructureHash(columns, indexes) {
306
417
  const structure = {
307
418
  columns: columns.map(c => ({ name: c.name, type: c.type, nullable: c.nullable })),
@@ -309,6 +420,9 @@ export function generateStructureHash(columns, indexes) {
309
420
  };
310
421
  return hashString(JSON.stringify(structure));
311
422
  }
423
+ /**
424
+ * Simple string hash function
425
+ */
312
426
  function hashString(str) {
313
427
  let hash = 0;
314
428
  if (str.length === 0)
@@ -316,29 +430,47 @@ function hashString(str) {
316
430
  for (let i = 0; i < str.length; i++) {
317
431
  const char = str.charCodeAt(i);
318
432
  hash = ((hash << 5) - hash) + char;
319
- hash = hash & hash;
433
+ hash = hash & hash; // Convert to 32-bit integer
320
434
  }
321
435
  return Math.abs(hash).toString(16);
322
436
  }
437
+ // ==============================================
438
+ // Factory Functions
439
+ // ==============================================
440
+ /**
441
+ * Create a schema cache with default configuration
442
+ */
323
443
  export function createSchemaCache(config) {
324
444
  return new SchemaCache(config);
325
445
  }
446
+ /**
447
+ * Create a high-capacity cache for large deployments
448
+ */
326
449
  export function createHighCapacityCache() {
327
450
  return new SchemaCache({
328
- defaultTTL: 600000,
451
+ defaultTTL: 600000, // 10 minutes
329
452
  maxEntries: 5000,
330
- cleanupInterval: 120000,
453
+ cleanupInterval: 120000, // 2 minutes
331
454
  enableAutoRefresh: true,
332
455
  autoRefreshThreshold: 0.7
333
456
  });
334
457
  }
458
+ /**
459
+ * Create a fast cache for development/testing
460
+ */
335
461
  export function createFastCache() {
336
462
  return new SchemaCache({
337
- defaultTTL: 60000,
463
+ defaultTTL: 60000, // 1 minute
338
464
  maxEntries: 100,
339
- cleanupInterval: 15000,
465
+ cleanupInterval: 15000, // 15 seconds
340
466
  enableAutoRefresh: false
341
467
  });
342
468
  }
469
+ // ==============================================
470
+ // Default Cache Instance
471
+ // ==============================================
472
+ /**
473
+ * Default schema cache instance
474
+ */
343
475
  export const defaultSchemaCache = createSchemaCache();
344
476
  //# sourceMappingURL=schema-cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-cache.js","sourceRoot":"","sources":["../../src/security/schema-cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-cache.js","sourceRoot":"","sources":["../../src/security/schema-cache.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,40 @@
1
+ /**
2
+ * Security-focused connector type definitions for FreshGuard Core
3
+ *
4
+ * These types enforce security best practices for database connections,
5
+ * including read-only operations, query validation, and proper error handling.
6
+ *
7
+ * @license MIT
8
+ */
9
+ /**
10
+ * Secure connector configuration with validated credentials
11
+ * Deployer provides these securely (from env/vault)
12
+ */
1
13
  export interface ConnectorConfig {
14
+ /** Database host (required) */
2
15
  host: string;
16
+ /** Database port (required) */
3
17
  port: number;
18
+ /** Database name (required) */
4
19
  database: string;
20
+ /** Username - should be read-only service account (required) */
5
21
  username: string;
22
+ /** Password - should be from secure store (required) */
6
23
  password: string;
24
+ /** Enable SSL/TLS (defaults to true for security) */
7
25
  ssl?: boolean;
26
+ /** Connection timeout in milliseconds (default: 30000) */
8
27
  timeout?: number;
28
+ /** Query timeout in milliseconds (default: 10000) */
9
29
  queryTimeout?: number;
30
+ /** Maximum rows returned by queries (default: 1000) */
10
31
  maxRows?: number;
32
+ /** Application name for connection identification */
11
33
  applicationName?: string;
12
34
  }
35
+ /**
36
+ * Table schema information
37
+ */
13
38
  export interface TableSchema {
14
39
  table: string;
15
40
  columns: {
@@ -18,16 +43,31 @@ export interface TableSchema {
18
43
  nullable: boolean;
19
44
  }[];
20
45
  }
46
+ /**
47
+ * Secure connector interface - only allows read-only operations
48
+ * Core uses only these methods - no arbitrary data access
49
+ */
21
50
  export interface Connector {
51
+ /** Test database connection */
22
52
  testConnection(): Promise<boolean>;
53
+ /** List available tables */
23
54
  listTables(): Promise<string[]>;
55
+ /** Get table schema information */
24
56
  getTableSchema(table: string): Promise<TableSchema>;
57
+ /** Get row count for a table */
25
58
  getRowCount(table: string): Promise<number>;
59
+ /** Get maximum timestamp value from a column */
26
60
  getMaxTimestamp(table: string, column: string): Promise<Date | null>;
61
+ /** Get minimum timestamp value from a column */
27
62
  getMinTimestamp(table: string, column: string): Promise<Date | null>;
63
+ /** Get last modified timestamp for a table */
28
64
  getLastModified(table: string): Promise<Date | null>;
65
+ /** Close the connection */
29
66
  close(): Promise<void>;
30
67
  }
68
+ /**
69
+ * Freshness check result with security-safe error messages
70
+ */
31
71
  export interface FreshnessResult {
32
72
  table: string;
33
73
  column: string;
@@ -35,8 +75,12 @@ export interface FreshnessResult {
35
75
  rowCount: number;
36
76
  isStale: boolean;
37
77
  staleSince?: Date;
78
+ /** Sanitized error message - no database version leaks */
38
79
  error?: string;
39
80
  }
81
+ /**
82
+ * Volume anomaly detection result
83
+ */
40
84
  export interface AnomalyResult {
41
85
  table: string;
42
86
  currentRowCount?: number;
@@ -44,22 +88,45 @@ export interface AnomalyResult {
44
88
  deviationPercent?: number;
45
89
  isAnomaly: boolean;
46
90
  direction?: 'increase' | 'decrease';
91
+ /** Sanitized error message */
47
92
  error?: string;
48
93
  }
94
+ /**
95
+ * Security settings for connectors
96
+ */
49
97
  export interface SecurityConfig {
98
+ /** Connection timeout in milliseconds */
50
99
  connectionTimeout: number;
100
+ /** Query timeout in milliseconds */
51
101
  queryTimeout: number;
102
+ /** Maximum rows returned by any query */
52
103
  maxRows: number;
104
+ /** Require SSL/TLS connections */
53
105
  requireSSL: boolean;
106
+ /** Allowed query patterns (regex) */
54
107
  allowedQueryPatterns: RegExp[];
108
+ /** Blocked SQL keywords */
55
109
  blockedKeywords: string[];
110
+ /** Enable detailed logging for debugging */
56
111
  enableDetailedLogging?: boolean;
112
+ /** Enable query complexity analysis */
57
113
  enableQueryAnalysis?: boolean;
114
+ /** Maximum query risk score to allow (0-100) */
58
115
  maxQueryRiskScore?: number;
116
+ /** Maximum query complexity score to allow (0-100) */
59
117
  maxQueryComplexityScore?: number;
60
118
  }
119
+ /**
120
+ * Default security configuration
121
+ */
61
122
  export declare const DEFAULT_SECURITY_CONFIG: SecurityConfig;
62
- export type ConnectorType = 'postgres' | 'duckdb' | 'bigquery' | 'snowflake' | 'mysql' | 'redshift';
123
+ /**
124
+ * Database connector types supported by FreshGuard Core
125
+ */
126
+ export type ConnectorType = 'postgres' | 'duckdb' | 'bigquery' | 'snowflake' | 'mysql' | 'redshift' | 'mssql' | 'azure_sql' | 'synapse';
127
+ /**
128
+ * Connector factory configuration
129
+ */
63
130
  export interface ConnectorFactoryConfig {
64
131
  type: ConnectorType;
65
132
  config: ConnectorConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/types/connector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/types/connector.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,46 @@
1
+ /**
2
+ * Security-focused connector type definitions for FreshGuard Core
3
+ *
4
+ * These types enforce security best practices for database connections,
5
+ * including read-only operations, query validation, and proper error handling.
6
+ *
7
+ * @license MIT
8
+ */
9
+ /**
10
+ * Default security configuration
11
+ */
1
12
  export const DEFAULT_SECURITY_CONFIG = {
2
- connectionTimeout: 30000,
3
- queryTimeout: 10000,
13
+ connectionTimeout: 30000, // 30 seconds
14
+ queryTimeout: 10000, // 10 seconds
4
15
  maxRows: 1000,
5
16
  requireSSL: true,
17
+ /* eslint-disable security/detect-unsafe-regex -- These are SQL query validation patterns, intentionally complex */
6
18
  allowedQueryPatterns: [
7
- /^SELECT\s+COUNT\(\*\)(?:\s+as\s+\w+)?\s+FROM\s+[`"]?\w+[`"]?$/is,
8
- /^SELECT\s+MAX\([`"]?\w+[`"]?\)(?:\s+as\s+\w+)?\s+FROM\s+[`"]?\w+[`"]?$/is,
9
- /^SELECT\s+MIN\([`"]?\w+[`"]?\)(?:\s+as\s+\w+)?\s+FROM\s+[`"]?\w+[`"]?$/is,
10
- /^DESCRIBE\s+[`"]?\w+[`"]?$/i,
11
- /^SHOW\s+(TABLES|COLUMNS)(?:\s+FROM\s+[`"]?\w+[`"]?)?$/i,
12
- /^SELECT\s+.+?\s+FROM\s+information_schema\.\w+/is,
13
- /^SELECT[\s\S]+?FROM[\s\S]+?information_schema\.\w+/is,
14
- /^SELECT[\s\S]+?FROM[\s\S]*`[^`]*\.INFORMATION_SCHEMA\.\w+`/is,
15
- /^SELECT\s+table_name\s+FROM\s+information_schema\.tables\s+WHERE\s+table_schema\s*=\s*\?/is,
16
- /^SELECT\s+column_name,\s*data_type,\s*is_nullable\s+FROM\s+information_schema\.columns/is,
17
- /^SELECT\s+tablename\s+FROM\s+pg_tables/is,
18
- /^SELECT\s+[\s\S]*?FROM\s+svv_table_info/is,
19
- /^SELECT\s+1(?:\s+as\s+\w+)?$/i,
19
+ // FreshGuard Core monitoring patterns (v0.9.1+) - Updated to handle all whitespace and quoted identifiers
20
+ /^SELECT\s+COUNT\(\*\)(?:\s+as\s+\w+)?\s+FROM\s+[`"]?\w+[`"]?$/is, // getRowCount: SELECT COUNT(*) [as alias] FROM table
21
+ /^SELECT\s+MAX\([`"]?\w+[`"]?\)(?:\s+as\s+\w+)?\s+FROM\s+[`"]?\w+[`"]?$/is, // getMaxTimestamp: SELECT MAX(column) [as alias] FROM table
22
+ /^SELECT\s+MIN\([`"]?\w+[`"]?\)(?:\s+as\s+\w+)?\s+FROM\s+[`"]?\w+[`"]?$/is, // getMinTimestamp: SELECT MIN(column) [as alias] FROM table
23
+ // Schema introspection queries
24
+ /^DESCRIBE\s+[`"]?\w+[`"]?$/i, // DESCRIBE table
25
+ /^SHOW\s+(TABLES|COLUMNS)(?:\s+FROM\s+[`"]?\w+[`"]?)?$/i, // SHOW TABLES, SHOW COLUMNS FROM table
26
+ // Information schema queries (cross-database compatibility)
27
+ /^SELECT\s+.+?\s+FROM\s+information_schema\.\w+/is, // PostgreSQL/MySQL information_schema
28
+ /^SELECT[\s\S]+?FROM[\s\S]+?information_schema\.\w+/is, // Multi-line information_schema queries
29
+ /^SELECT[\s\S]+?FROM[\s\S]*`[^`]*\.INFORMATION_SCHEMA\.\w+`/is, // BigQuery INFORMATION_SCHEMA (backticks)
30
+ // MySQL-specific patterns with backticks
31
+ /^SELECT\s+table_name\s+FROM\s+information_schema\.tables\s+WHERE\s+table_schema\s*=\s*\?/is, // MySQL table listing
32
+ /^SELECT\s+column_name,\s*data_type,\s*is_nullable\s+FROM\s+information_schema\.columns/is, // MySQL schema query
33
+ // Redshift-specific patterns (PostgreSQL compatibility)
34
+ /^SELECT\s+tablename\s+FROM\s+pg_tables/is, // Redshift table listing using pg_tables
35
+ /^SELECT\s+[\s\S]*?FROM\s+svv_table_info/is, // Redshift system view queries
36
+ // MSSQL/Azure SQL/Synapse patterns
37
+ /^SELECT\s+.+?\s+FROM\s+INFORMATION_SCHEMA\.\w+/is, // MSSQL INFORMATION_SCHEMA (uppercase)
38
+ /^SELECT\s+.+?\s+FROM\s+sys\.\w+/is, // MSSQL system views
39
+ /^SELECT\s+.+?\s+FROM\s+sys\.dm_\w+/is, // MSSQL dynamic management views
40
+ // Test connection queries
41
+ /^SELECT\s+1(?:\s+as\s+\w+)?$/i, // SELECT 1 [as alias] (connection test)
20
42
  ],
43
+ /* eslint-enable security/detect-unsafe-regex */
21
44
  blockedKeywords: [
22
45
  'INSERT', 'UPDATE', 'DELETE', 'DROP', 'ALTER', 'CREATE', 'TRUNCATE',
23
46
  '--', '/*', '*/', 'EXEC', 'EXECUTE', 'xp_', 'sp_'
@@ -1 +1 @@
1
- {"version":3,"file":"connector.js","sourceRoot":"","sources":["../../src/types/connector.ts"],"names":[],"mappings":"AAyJA,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACrD,iBAAiB,EAAE,KAAK;IACxB,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,IAAI;IAEhB,oBAAoB,EAAE;QAEpB,iEAAiE;QACjE,0EAA0E;QAC1E,0EAA0E;QAG1E,6BAA6B;QAC7B,wDAAwD;QAGxD,kDAAkD;QAClD,sDAAsD;QACtD,8DAA8D;QAG9D,4FAA4F;QAC5F,0FAA0F;QAG1F,0CAA0C;QAC1C,2CAA2C;QAG3C,+BAA+B;KAChC;IAED,eAAe,EAAE;QACf,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU;QACnE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK;KAClD;CACF,CAAC"}
1
+ {"version":3,"file":"connector.js","sourceRoot":"","sources":["../../src/types/connector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA+IH;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACrD,iBAAiB,EAAE,KAAK,EAAG,aAAa;IACxC,YAAY,EAAE,KAAK,EAAQ,aAAa;IACxC,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,IAAI;IAChB,mHAAmH;IACnH,oBAAoB,EAAE;QACpB,0GAA0G;QAC1G,iEAAiE,EAAqB,qDAAqD;QAC3I,0EAA0E,EAAY,4DAA4D;QAClJ,0EAA0E,EAAY,4DAA4D;QAElJ,+BAA+B;QAC/B,6BAA6B,EAA0D,iBAAiB;QACxG,wDAAwD,EAA6B,uCAAuC;QAE5H,4DAA4D;QAC5D,kDAAkD,EAAmC,sCAAsC;QAC3H,sDAAsD,EAA+B,wCAAwC;QAC7H,8DAA8D,EAAuB,0CAA0C;QAE/H,yCAAyC;QACzC,4FAA4F,EAAE,sBAAsB;QACpH,0FAA0F,EAAI,qBAAqB;QAEnH,wDAAwD;QACxD,0CAA0C,EAA2C,yCAAyC;QAC9H,2CAA2C,EAA0C,+BAA+B;QAEpH,mCAAmC;QACnC,kDAAkD,EAAoC,uCAAuC;QAC7H,mCAAmC,EAAoD,qBAAqB;QAC5G,sCAAsC,EAAiD,iCAAiC;QAExH,0BAA0B;QAC1B,+BAA+B,EAAsD,wCAAwC;KAC9H;IACD,gDAAgD;IAChD,eAAe,EAAE;QACf,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU;QACnE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK;KAClD;CACF,CAAC"}