noormme 1.0.6 → 1.2.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 (249) hide show
  1. package/README.md +92 -63
  2. package/dist/cjs/agentic/ActionJournal.js +13 -9
  3. package/dist/cjs/agentic/CapabilityManager.d.ts +9 -4
  4. package/dist/cjs/agentic/CapabilityManager.js +113 -17
  5. package/dist/cjs/agentic/CognitiveRepository.js +19 -9
  6. package/dist/cjs/agentic/ContextBuffer.js +24 -12
  7. package/dist/cjs/agentic/Cortex.d.ts +8 -1
  8. package/dist/cjs/agentic/Cortex.js +30 -7
  9. package/dist/cjs/agentic/EpisodicMemory.js +7 -5
  10. package/dist/cjs/agentic/PersonaManager.js +16 -8
  11. package/dist/cjs/agentic/PolicyEnforcer.js +31 -12
  12. package/dist/cjs/agentic/ResourceMonitor.js +4 -4
  13. package/dist/cjs/agentic/SessionCompressor.js +22 -14
  14. package/dist/cjs/agentic/SessionManager.js +36 -18
  15. package/dist/cjs/agentic/VectorIndexer.js +22 -18
  16. package/dist/cjs/agentic/improvement/AblationEngine.js +22 -15
  17. package/dist/cjs/agentic/improvement/ActionRefiner.js +12 -10
  18. package/dist/cjs/agentic/improvement/ConflictResolver.js +5 -5
  19. package/dist/cjs/agentic/improvement/CortexJanitor.d.ts +1 -1
  20. package/dist/cjs/agentic/improvement/CortexJanitor.js +64 -27
  21. package/dist/cjs/agentic/improvement/CuriosityEngine.d.ts +2 -2
  22. package/dist/cjs/agentic/improvement/CuriosityEngine.js +68 -59
  23. package/dist/cjs/agentic/improvement/EvolutionRitual.d.ts +24 -0
  24. package/dist/cjs/agentic/improvement/EvolutionRitual.js +91 -0
  25. package/dist/cjs/agentic/improvement/EvolutionaryPilot.d.ts +5 -0
  26. package/dist/cjs/agentic/improvement/EvolutionaryPilot.js +80 -7
  27. package/dist/cjs/agentic/improvement/GoalArchitect.d.ts +2 -2
  28. package/dist/cjs/agentic/improvement/GoalArchitect.js +20 -18
  29. package/dist/cjs/agentic/improvement/GovernanceManager.d.ts +1 -1
  30. package/dist/cjs/agentic/improvement/GovernanceManager.js +85 -49
  31. package/dist/cjs/agentic/improvement/HiveLink.d.ts +9 -0
  32. package/dist/cjs/agentic/improvement/HiveLink.js +120 -26
  33. package/dist/cjs/agentic/improvement/KnowledgeDistiller.d.ts +2 -0
  34. package/dist/cjs/agentic/improvement/KnowledgeDistiller.js +101 -47
  35. package/dist/cjs/agentic/improvement/RecursiveReasoner.d.ts +7 -1
  36. package/dist/cjs/agentic/improvement/RecursiveReasoner.js +106 -22
  37. package/dist/cjs/agentic/improvement/ReflectionEngine.js +10 -8
  38. package/dist/cjs/agentic/improvement/RitualOrchestrator.js +34 -22
  39. package/dist/cjs/agentic/improvement/RuleEngine.js +22 -17
  40. package/dist/cjs/agentic/improvement/SelfEvolution.js +24 -18
  41. package/dist/cjs/agentic/improvement/SelfTestRegistry.js +18 -15
  42. package/dist/cjs/agentic/improvement/SkillSynthesizer.d.ts +48 -0
  43. package/dist/cjs/agentic/improvement/SkillSynthesizer.js +288 -0
  44. package/dist/cjs/agentic/improvement/SovereignMetrics.js +19 -17
  45. package/dist/cjs/agentic/improvement/StrategicPlanner.d.ts +1 -1
  46. package/dist/cjs/agentic/improvement/StrategicPlanner.js +129 -55
  47. package/dist/cjs/agentic/telemetry/CognitiveSynthesizer.js +26 -12
  48. package/dist/cjs/agentic/telemetry/EventHarvester.js +3 -2
  49. package/dist/cjs/agentic/telemetry/ResearchAlchemist.js +13 -4
  50. package/dist/cjs/cache/cache-manager.js +7 -4
  51. package/dist/cjs/cli/commands/analyze.js +5 -4
  52. package/dist/cjs/cli/commands/generate.js +81 -44
  53. package/dist/cjs/cli/commands/init.js +7 -3
  54. package/dist/cjs/cli/commands/inspect.js +139 -36
  55. package/dist/cjs/cli/commands/migrate.js +5 -4
  56. package/dist/cjs/cli/commands/optimize.js +4 -4
  57. package/dist/cjs/cli/commands/status.js +9 -7
  58. package/dist/cjs/cli/commands/watch.js +7 -6
  59. package/dist/cjs/cli/index.js +2 -2
  60. package/dist/cjs/cli/ui/spinner.d.ts +15 -0
  61. package/dist/cjs/cli/ui/spinner.js +76 -0
  62. package/dist/cjs/dialect/database-introspector.js +3 -1
  63. package/dist/cjs/dialect/postgresql/postgresql-driver.js +3 -1
  64. package/dist/cjs/dialect/postgresql/postgresql-features.js +18 -8
  65. package/dist/cjs/dialect/postgresql/postgresql-introspector.js +2 -2
  66. package/dist/cjs/dialect/sqlite/sqlite-auto-indexer.js +47 -33
  67. package/dist/cjs/dialect/sqlite/sqlite-auto-optimizer.js +8 -7
  68. package/dist/cjs/dialect/sqlite/sqlite-driver.js +2 -2
  69. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +15 -12
  70. package/dist/cjs/edge-runtime/edge-config.js +21 -19
  71. package/dist/cjs/errors/NoormError.js +22 -20
  72. package/dist/cjs/helpers/agent-schema.js +3 -0
  73. package/dist/cjs/helpers/postgresql.js +7 -4
  74. package/dist/cjs/helpers/schema-evolution.js +31 -6
  75. package/dist/cjs/index.d.ts +18 -16
  76. package/dist/cjs/logging/logger.js +8 -4
  77. package/dist/cjs/migration/data_migrator.js +12 -11
  78. package/dist/cjs/migration/database_migration_manager.js +17 -13
  79. package/dist/cjs/migration/schema_differ.js +22 -14
  80. package/dist/cjs/migration/schema_introspector.js +8 -8
  81. package/dist/cjs/migration/type_mapper.js +68 -67
  82. package/dist/cjs/noormme.js +54 -37
  83. package/dist/cjs/performance/index.js +5 -5
  84. package/dist/cjs/performance/query-optimizer.js +26 -21
  85. package/dist/cjs/performance/services/cache-service.js +26 -16
  86. package/dist/cjs/performance/services/connection-factory.js +28 -23
  87. package/dist/cjs/performance/services/metrics-collector.js +41 -36
  88. package/dist/cjs/performance/utils/query-parser.js +15 -16
  89. package/dist/cjs/relationships/relationship-engine.js +10 -8
  90. package/dist/cjs/repository/repository-factory.js +97 -38
  91. package/dist/cjs/schema/core/coordinators/schema-discovery.coordinator.js +1 -3
  92. package/dist/cjs/schema/core/discovery/relationship-discovery.js +16 -16
  93. package/dist/cjs/schema/core/discovery/table-metadata-discovery.js +9 -9
  94. package/dist/cjs/schema/core/discovery/view-discovery.js +5 -4
  95. package/dist/cjs/schema/core/factories/discovery-factory.js +4 -4
  96. package/dist/cjs/schema/core/utils/name-generator.js +14 -5
  97. package/dist/cjs/schema/core/utils/type-mapper.js +24 -24
  98. package/dist/cjs/schema/dialects/postgresql/postgresql-discovery.coordinator.js +8 -7
  99. package/dist/cjs/schema/dialects/sqlite/discovery/sqlite-constraint-discovery.js +17 -15
  100. package/dist/cjs/schema/dialects/sqlite/discovery/sqlite-index-discovery.js +8 -8
  101. package/dist/cjs/schema/dialects/sqlite/introspection/sqlite-schema-introspector.js +6 -11
  102. package/dist/cjs/schema/dialects/sqlite/sqlite-discovery.coordinator.js +14 -13
  103. package/dist/cjs/schema/test/basic-schema-test.js +11 -9
  104. package/dist/cjs/schema/test/dialect-capabilities.test.js +6 -6
  105. package/dist/cjs/schema/test/discovery-factory.test.js +2 -2
  106. package/dist/cjs/schema/test/error-handling.test.js +8 -6
  107. package/dist/cjs/schema/test/integration.test.js +24 -18
  108. package/dist/cjs/schema/test/schema-discovery-coordinator.test.js +9 -9
  109. package/dist/cjs/schema/test/simple-schema-test.js +9 -9
  110. package/dist/cjs/schema/test/sqlite-discovery-coordinator.test.js +64 -48
  111. package/dist/cjs/schema/test/test-runner.js +3 -3
  112. package/dist/cjs/sqlite-migration/index.d.ts +2 -2
  113. package/dist/cjs/sqlite-migration/sqlite-migration-manager.js +21 -17
  114. package/dist/cjs/sqlite-migration/sqlite-migration-provider.js +38 -34
  115. package/dist/cjs/testing/test-utils.js +36 -34
  116. package/dist/cjs/types/index.d.ts +61 -4
  117. package/dist/cjs/types/index.js +6 -3
  118. package/dist/cjs/types/type-generator.js +46 -42
  119. package/dist/cjs/util/safe-sql-helpers.js +1 -1
  120. package/dist/cjs/util/security-validator.js +20 -9
  121. package/dist/cjs/utils/errorHelpers.js +20 -10
  122. package/dist/cjs/watch/schema-watcher.js +22 -23
  123. package/dist/esm/agentic/ActionJournal.js +13 -9
  124. package/dist/esm/agentic/CapabilityManager.d.ts +9 -4
  125. package/dist/esm/agentic/CapabilityManager.js +113 -17
  126. package/dist/esm/agentic/CognitiveRepository.js +19 -9
  127. package/dist/esm/agentic/ContextBuffer.js +24 -12
  128. package/dist/esm/agentic/Cortex.d.ts +8 -1
  129. package/dist/esm/agentic/Cortex.js +30 -7
  130. package/dist/esm/agentic/EpisodicMemory.js +7 -5
  131. package/dist/esm/agentic/PersonaManager.js +16 -8
  132. package/dist/esm/agentic/PolicyEnforcer.js +31 -12
  133. package/dist/esm/agentic/ResourceMonitor.js +4 -4
  134. package/dist/esm/agentic/SessionCompressor.js +22 -14
  135. package/dist/esm/agentic/SessionManager.js +36 -18
  136. package/dist/esm/agentic/VectorIndexer.js +22 -18
  137. package/dist/esm/agentic/improvement/AblationEngine.js +22 -15
  138. package/dist/esm/agentic/improvement/ActionRefiner.js +12 -10
  139. package/dist/esm/agentic/improvement/ConflictResolver.js +5 -5
  140. package/dist/esm/agentic/improvement/CortexJanitor.d.ts +1 -1
  141. package/dist/esm/agentic/improvement/CortexJanitor.js +64 -27
  142. package/dist/esm/agentic/improvement/CuriosityEngine.d.ts +2 -2
  143. package/dist/esm/agentic/improvement/CuriosityEngine.js +68 -59
  144. package/dist/esm/agentic/improvement/EvolutionRitual.d.ts +24 -0
  145. package/dist/esm/agentic/improvement/EvolutionRitual.js +88 -0
  146. package/dist/esm/agentic/improvement/EvolutionaryPilot.d.ts +5 -0
  147. package/dist/esm/agentic/improvement/EvolutionaryPilot.js +80 -7
  148. package/dist/esm/agentic/improvement/GoalArchitect.d.ts +2 -2
  149. package/dist/esm/agentic/improvement/GoalArchitect.js +20 -18
  150. package/dist/esm/agentic/improvement/GovernanceManager.d.ts +1 -1
  151. package/dist/esm/agentic/improvement/GovernanceManager.js +85 -49
  152. package/dist/esm/agentic/improvement/HiveLink.d.ts +9 -0
  153. package/dist/esm/agentic/improvement/HiveLink.js +120 -26
  154. package/dist/esm/agentic/improvement/KnowledgeDistiller.d.ts +2 -0
  155. package/dist/esm/agentic/improvement/KnowledgeDistiller.js +101 -47
  156. package/dist/esm/agentic/improvement/RecursiveReasoner.d.ts +7 -1
  157. package/dist/esm/agentic/improvement/RecursiveReasoner.js +106 -22
  158. package/dist/esm/agentic/improvement/ReflectionEngine.js +10 -8
  159. package/dist/esm/agentic/improvement/RitualOrchestrator.js +34 -22
  160. package/dist/esm/agentic/improvement/RuleEngine.js +22 -17
  161. package/dist/esm/agentic/improvement/SelfEvolution.js +24 -18
  162. package/dist/esm/agentic/improvement/SelfTestRegistry.js +18 -15
  163. package/dist/esm/agentic/improvement/SkillSynthesizer.d.ts +48 -0
  164. package/dist/esm/agentic/improvement/SkillSynthesizer.js +285 -0
  165. package/dist/esm/agentic/improvement/SovereignMetrics.js +19 -17
  166. package/dist/esm/agentic/improvement/StrategicPlanner.d.ts +1 -1
  167. package/dist/esm/agentic/improvement/StrategicPlanner.js +129 -55
  168. package/dist/esm/agentic/telemetry/CognitiveSynthesizer.js +26 -12
  169. package/dist/esm/agentic/telemetry/EventHarvester.js +3 -2
  170. package/dist/esm/agentic/telemetry/ResearchAlchemist.js +13 -4
  171. package/dist/esm/cache/cache-manager.js +7 -4
  172. package/dist/esm/cli/commands/analyze.js +5 -4
  173. package/dist/esm/cli/commands/generate.js +82 -45
  174. package/dist/esm/cli/commands/init.js +8 -4
  175. package/dist/esm/cli/commands/inspect.js +140 -37
  176. package/dist/esm/cli/commands/migrate.js +5 -4
  177. package/dist/esm/cli/commands/optimize.js +4 -4
  178. package/dist/esm/cli/commands/status.js +9 -7
  179. package/dist/esm/cli/commands/watch.js +7 -6
  180. package/dist/esm/cli/index.js +2 -2
  181. package/dist/esm/cli/ui/spinner.d.ts +15 -0
  182. package/dist/esm/cli/ui/spinner.js +70 -0
  183. package/dist/esm/dialect/database-introspector.js +3 -1
  184. package/dist/esm/dialect/postgresql/postgresql-driver.js +3 -1
  185. package/dist/esm/dialect/postgresql/postgresql-features.js +18 -8
  186. package/dist/esm/dialect/postgresql/postgresql-introspector.js +2 -2
  187. package/dist/esm/dialect/sqlite/sqlite-auto-indexer.js +47 -33
  188. package/dist/esm/dialect/sqlite/sqlite-auto-optimizer.js +8 -7
  189. package/dist/esm/dialect/sqlite/sqlite-driver.js +2 -2
  190. package/dist/esm/dialect/sqlite/sqlite-introspector.js +15 -12
  191. package/dist/esm/dynamic/dynamic.js +1 -1
  192. package/dist/esm/edge-runtime/edge-config.js +21 -19
  193. package/dist/esm/errors/NoormError.js +22 -20
  194. package/dist/esm/helpers/agent-schema.js +3 -0
  195. package/dist/esm/helpers/postgresql.js +7 -4
  196. package/dist/esm/helpers/schema-evolution.js +31 -6
  197. package/dist/esm/index.d.ts +18 -16
  198. package/dist/esm/index.js +2 -2
  199. package/dist/esm/logging/logger.js +8 -4
  200. package/dist/esm/migration/data_migrator.js +12 -11
  201. package/dist/esm/migration/database_migration_manager.js +18 -14
  202. package/dist/esm/migration/schema_differ.js +22 -14
  203. package/dist/esm/migration/schema_introspector.js +8 -8
  204. package/dist/esm/migration/type_mapper.js +68 -67
  205. package/dist/esm/noormme.js +54 -37
  206. package/dist/esm/performance/index.js +5 -5
  207. package/dist/esm/performance/query-optimizer.js +26 -21
  208. package/dist/esm/performance/services/cache-service.js +26 -16
  209. package/dist/esm/performance/services/connection-factory.js +28 -23
  210. package/dist/esm/performance/services/metrics-collector.js +41 -36
  211. package/dist/esm/performance/utils/query-parser.js +15 -16
  212. package/dist/esm/raw-builder/sql.js +1 -1
  213. package/dist/esm/relationships/relationship-engine.js +10 -8
  214. package/dist/esm/repository/repository-factory.js +98 -39
  215. package/dist/esm/schema/builders/alter-table-add-index-builder.js +1 -1
  216. package/dist/esm/schema/builders/create-index-builder.js +2 -2
  217. package/dist/esm/schema/core/coordinators/schema-discovery.coordinator.js +1 -3
  218. package/dist/esm/schema/core/discovery/relationship-discovery.js +16 -16
  219. package/dist/esm/schema/core/discovery/table-metadata-discovery.js +9 -9
  220. package/dist/esm/schema/core/discovery/view-discovery.js +5 -4
  221. package/dist/esm/schema/core/factories/discovery-factory.js +4 -4
  222. package/dist/esm/schema/core/utils/name-generator.js +14 -5
  223. package/dist/esm/schema/core/utils/type-mapper.js +24 -24
  224. package/dist/esm/schema/dialects/postgresql/postgresql-discovery.coordinator.js +8 -7
  225. package/dist/esm/schema/dialects/sqlite/discovery/sqlite-constraint-discovery.js +17 -15
  226. package/dist/esm/schema/dialects/sqlite/discovery/sqlite-index-discovery.js +8 -8
  227. package/dist/esm/schema/dialects/sqlite/introspection/sqlite-schema-introspector.js +6 -11
  228. package/dist/esm/schema/dialects/sqlite/sqlite-discovery.coordinator.js +14 -13
  229. package/dist/esm/schema/test/basic-schema-test.js +11 -9
  230. package/dist/esm/schema/test/dialect-capabilities.test.js +6 -6
  231. package/dist/esm/schema/test/discovery-factory.test.js +2 -2
  232. package/dist/esm/schema/test/error-handling.test.js +8 -6
  233. package/dist/esm/schema/test/integration.test.js +24 -18
  234. package/dist/esm/schema/test/schema-discovery-coordinator.test.js +9 -9
  235. package/dist/esm/schema/test/simple-schema-test.js +9 -9
  236. package/dist/esm/schema/test/sqlite-discovery-coordinator.test.js +64 -48
  237. package/dist/esm/schema/test/test-runner.js +3 -3
  238. package/dist/esm/sqlite-migration/index.d.ts +2 -2
  239. package/dist/esm/sqlite-migration/sqlite-migration-manager.js +21 -17
  240. package/dist/esm/sqlite-migration/sqlite-migration-provider.js +38 -34
  241. package/dist/esm/testing/test-utils.js +36 -34
  242. package/dist/esm/types/index.d.ts +61 -4
  243. package/dist/esm/types/index.js +6 -3
  244. package/dist/esm/types/type-generator.js +46 -42
  245. package/dist/esm/util/safe-sql-helpers.js +1 -1
  246. package/dist/esm/util/security-validator.js +20 -9
  247. package/dist/esm/utils/errorHelpers.js +21 -11
  248. package/dist/esm/watch/schema-watcher.js +22 -23
  249. package/package.json +40 -44
@@ -33,7 +33,7 @@ class PostgresDiscoveryCoordinator {
33
33
  const discoveryConfig = {
34
34
  excludeTables: config.excludeTables,
35
35
  includeViews: config.includeViews,
36
- customTypeMappings: config.customTypeMappings
36
+ customTypeMappings: config.customTypeMappings,
37
37
  };
38
38
  // Discover tables
39
39
  let tables = [];
@@ -47,7 +47,8 @@ class PostgresDiscoveryCoordinator {
47
47
  // Discover relationships
48
48
  let relationships = [];
49
49
  try {
50
- relationships = await this.relationshipDiscovery.discoverRelationships(tables);
50
+ relationships =
51
+ await this.relationshipDiscovery.discoverRelationships(tables);
51
52
  }
52
53
  catch (error) {
53
54
  console.warn('PostgreSQL relationship discovery failed:', error);
@@ -58,11 +59,11 @@ class PostgresDiscoveryCoordinator {
58
59
  if (discoveryConfig.includeViews) {
59
60
  try {
60
61
  const viewMetadata = await this.viewDiscovery.discoverViews(introspector);
61
- views = viewMetadata.map(view => ({
62
+ views = viewMetadata.map((view) => ({
62
63
  name: view.name,
63
64
  schema: view.schema,
64
65
  definition: view.definition || '',
65
- columns: view.columns || []
66
+ columns: view.columns || [],
66
67
  }));
67
68
  }
68
69
  catch (error) {
@@ -73,7 +74,7 @@ class PostgresDiscoveryCoordinator {
73
74
  return {
74
75
  tables,
75
76
  relationships,
76
- views
77
+ views,
77
78
  };
78
79
  }
79
80
  /**
@@ -97,7 +98,7 @@ class PostgresDiscoveryCoordinator {
97
98
  supportsAutoIncrement: true, // via serial or identity
98
99
  supportsRowId: false,
99
100
  supportsTriggers: true,
100
- supportsFullTextSearch: true
101
+ supportsFullTextSearch: true,
101
102
  };
102
103
  }
103
104
  /**
@@ -109,7 +110,7 @@ class PostgresDiscoveryCoordinator {
109
110
  'Enable SSL for secure database connections',
110
111
  'Consider using JSONB for unstructured data',
111
112
  'Use appropriate isolation levels for transactions',
112
- 'Monitor slow queries using pg_stat_statements'
113
+ 'Monitor slow queries using pg_stat_statements',
113
114
  ];
114
115
  }
115
116
  }
@@ -44,7 +44,7 @@ class SQLiteConstraintDiscovery {
44
44
  const columnMatches = sql.match(/CREATE TABLE[^(]*\(([^)]+)\)/i);
45
45
  if (!columnMatches)
46
46
  return constraints;
47
- const definitions = columnMatches[1].split(',').map(def => def.trim());
47
+ const definitions = columnMatches[1].split(',').map((def) => def.trim());
48
48
  for (const definition of definitions) {
49
49
  // Primary key constraints
50
50
  if (definition.toUpperCase().includes('PRIMARY KEY')) {
@@ -54,7 +54,7 @@ class SQLiteConstraintDiscovery {
54
54
  name: `${tableName}_pk`,
55
55
  type: 'p',
56
56
  columns: [pkMatch[1]],
57
- definition: definition
57
+ definition: definition,
58
58
  });
59
59
  }
60
60
  }
@@ -68,7 +68,7 @@ class SQLiteConstraintDiscovery {
68
68
  column: fkMatch[1],
69
69
  referencedTable: fkMatch[2],
70
70
  referencedColumn: fkMatch[3],
71
- definition: definition
71
+ definition: definition,
72
72
  });
73
73
  }
74
74
  }
@@ -80,7 +80,7 @@ class SQLiteConstraintDiscovery {
80
80
  name: `${tableName}_check_${constraints.length + 1}`,
81
81
  type: 'c',
82
82
  definition: checkMatch[1],
83
- fullDefinition: definition
83
+ fullDefinition: definition,
84
84
  });
85
85
  }
86
86
  }
@@ -91,8 +91,8 @@ class SQLiteConstraintDiscovery {
91
91
  constraints.push({
92
92
  name: `${tableName}_unique_${constraints.length + 1}`,
93
93
  type: 'u',
94
- columns: uniqueMatch[1].split(',').map(col => col.trim()),
95
- definition: definition
94
+ columns: uniqueMatch[1].split(',').map((col) => col.trim()),
95
+ definition: definition,
96
96
  });
97
97
  }
98
98
  }
@@ -104,7 +104,7 @@ class SQLiteConstraintDiscovery {
104
104
  name: `${tableName}_nn_${notNullMatch[1]}`,
105
105
  type: 'n',
106
106
  column: notNullMatch[1],
107
- definition: definition
107
+ definition: definition,
108
108
  });
109
109
  }
110
110
  }
@@ -125,7 +125,7 @@ class SQLiteConstraintDiscovery {
125
125
  // If 'to' is null/undefined, the FK references the primary key (default to 'id')
126
126
  referencedColumn: row.to || 'id',
127
127
  onDelete: row.on_delete || 'NO ACTION',
128
- onUpdate: row.on_update || 'NO ACTION'
128
+ onUpdate: row.on_update || 'NO ACTION',
129
129
  }));
130
130
  }
131
131
  catch (error) {
@@ -177,7 +177,7 @@ class SQLiteConstraintDiscovery {
177
177
  }
178
178
  return {
179
179
  isValid: issues.length === 0,
180
- issues
180
+ issues,
181
181
  };
182
182
  }
183
183
  /**
@@ -205,7 +205,7 @@ class SQLiteConstraintDiscovery {
205
205
  }
206
206
  return {
207
207
  recommendations,
208
- compatibilityIssues
208
+ compatibilityIssues,
209
209
  };
210
210
  }
211
211
  /**
@@ -262,7 +262,7 @@ class SQLiteConstraintDiscovery {
262
262
  issues,
263
263
  recommendations,
264
264
  orphanedRecords,
265
- performanceImpact
265
+ performanceImpact,
266
266
  };
267
267
  }
268
268
  catch (error) {
@@ -272,7 +272,7 @@ class SQLiteConstraintDiscovery {
272
272
  issues,
273
273
  recommendations: ['Check database connection and permissions'],
274
274
  orphanedRecords: [],
275
- performanceImpact: 'high'
275
+ performanceImpact: 'high',
276
276
  };
277
277
  }
278
278
  }
@@ -439,7 +439,7 @@ class SQLiteConstraintDiscovery {
439
439
  indexRecommendations,
440
440
  constraintRecommendations,
441
441
  cleanupRecommendations,
442
- performanceRecommendations
442
+ performanceRecommendations,
443
443
  };
444
444
  }
445
445
  catch (error) {
@@ -447,7 +447,9 @@ class SQLiteConstraintDiscovery {
447
447
  indexRecommendations: [],
448
448
  constraintRecommendations: [],
449
449
  cleanupRecommendations: [],
450
- performanceRecommendations: [`Error generating recommendations: ${error}`]
450
+ performanceRecommendations: [
451
+ `Error generating recommendations: ${error}`,
452
+ ],
451
453
  };
452
454
  }
453
455
  }
@@ -455,7 +457,7 @@ class SQLiteConstraintDiscovery {
455
457
  * Auto-fix common foreign key issues
456
458
  */
457
459
  async autoFixForeignKeyIssues(db, options = {}) {
458
- const { createMissingIndexes = true, enableForeignKeys = true, cleanupOrphanedRecords = false, dryRun = true } = options;
460
+ const { createMissingIndexes = true, enableForeignKeys = true, cleanupOrphanedRecords = false, dryRun = true, } = options;
459
461
  const applied = [];
460
462
  const failed = [];
461
463
  const skipped = [];
@@ -24,7 +24,7 @@ class SQLiteIndexDiscovery {
24
24
  'name',
25
25
  'sql as definition',
26
26
  (0, sql_js_1.sql) `type = 'index'`.as('isIndex'),
27
- (0, sql_js_1.sql) `sql LIKE '%UNIQUE%'`.as('unique')
27
+ (0, sql_js_1.sql) `sql LIKE '%UNIQUE%'`.as('unique'),
28
28
  ])
29
29
  .where('type', '=', 'index')
30
30
  .where('tbl_name', '=', tableName)
@@ -34,7 +34,7 @@ class SQLiteIndexDiscovery {
34
34
  ...index,
35
35
  columns: this.extractColumnsFromSQL(index.definition),
36
36
  isPrimary: index.name.includes('sqlite_autoindex'),
37
- comment: null // SQLite doesn't support index comments
37
+ comment: null, // SQLite doesn't support index comments
38
38
  }));
39
39
  return processedIndexes;
40
40
  }
@@ -55,8 +55,8 @@ class SQLiteIndexDiscovery {
55
55
  if (match) {
56
56
  return match[1]
57
57
  .split(',')
58
- .map(col => col.trim().replace(/^\s*["']?|["']?\s*$/g, ''))
59
- .filter(col => col.length > 0);
58
+ .map((col) => col.trim().replace(/^\s*["']?|["']?\s*$/g, ''))
59
+ .filter((col) => col.length > 0);
60
60
  }
61
61
  return [];
62
62
  }
@@ -82,12 +82,12 @@ class SQLiteIndexDiscovery {
82
82
  const missingIndexes = [];
83
83
  const redundantIndexes = [];
84
84
  // Check for auto-generated indexes that might be redundant
85
- const autoIndexes = indexes.filter(idx => idx.isPrimary);
85
+ const autoIndexes = indexes.filter((idx) => idx.isPrimary);
86
86
  if (autoIndexes.length > 1) {
87
87
  recommendations.push('Multiple auto-generated indexes found - review table structure');
88
88
  }
89
89
  // Check for indexes with no columns (invalid)
90
- const invalidIndexes = indexes.filter(idx => !idx.columns || idx.columns.length === 0);
90
+ const invalidIndexes = indexes.filter((idx) => !idx.columns || idx.columns.length === 0);
91
91
  for (const idx of invalidIndexes) {
92
92
  recommendations.push(`Invalid index found: ${idx.name} (no columns)`);
93
93
  }
@@ -109,7 +109,7 @@ class SQLiteIndexDiscovery {
109
109
  return {
110
110
  recommendations,
111
111
  missingIndexes,
112
- redundantIndexes
112
+ redundantIndexes,
113
113
  };
114
114
  }
115
115
  /**
@@ -121,7 +121,7 @@ class SQLiteIndexDiscovery {
121
121
  return {
122
122
  rowCount: result.rows?.[0]?.rowCount || 0,
123
123
  size: 0, // SQLite doesn't provide direct size info
124
- lastModified: new Date()
124
+ lastModified: new Date(),
125
125
  };
126
126
  }
127
127
  catch (error) {
@@ -17,13 +17,7 @@ class SQLiteSchemaIntrospector extends database_introspector_js_1.DatabaseIntros
17
17
  try {
18
18
  const tables = await this.db
19
19
  .selectFrom('sqlite_master')
20
- .select([
21
- 'name',
22
- 'type',
23
- 'tbl_name',
24
- 'rootpage',
25
- 'sql'
26
- ])
20
+ .select(['name', 'type', 'tbl_name', 'rootpage', 'sql'])
27
21
  .where('type', '=', 'table')
28
22
  .execute();
29
23
  const enhancedTables = [];
@@ -41,7 +35,7 @@ class SQLiteSchemaIntrospector extends database_introspector_js_1.DatabaseIntros
41
35
  hasTriggers: false, // Will be determined separately
42
36
  tableType: 'table',
43
37
  lastAnalyzed: null,
44
- lastAutoAnalyzed: null
38
+ lastAutoAnalyzed: null,
45
39
  });
46
40
  }
47
41
  catch (error) {
@@ -73,7 +67,7 @@ class SQLiteSchemaIntrospector extends database_introspector_js_1.DatabaseIntros
73
67
  'synchronous',
74
68
  'journal_mode',
75
69
  'auto_vacuum',
76
- 'integrity_check'
70
+ 'integrity_check',
77
71
  ];
78
72
  for (const pragma of pragmas) {
79
73
  try {
@@ -100,7 +94,7 @@ class SQLiteSchemaIntrospector extends database_introspector_js_1.DatabaseIntros
100
94
  pageSize: stats.page_size,
101
95
  journalMode: stats.journal_mode,
102
96
  autoVacuum: stats.auto_vacuum,
103
- synchronous: stats.synchronous
97
+ synchronous: stats.synchronous,
104
98
  };
105
99
  }
106
100
  catch (error) {
@@ -119,7 +113,8 @@ class SQLiteSchemaIntrospector extends database_introspector_js_1.DatabaseIntros
119
113
  info.version = versionResult.rows?.[0]?.version;
120
114
  // Get compile options
121
115
  const compileOptionsResult = await (0, sql_js_1.sql) `PRAGMA compile_options`.execute(this.db);
122
- info.compileOptions = compileOptionsResult.rows?.map((row) => row.compile_options) || [];
116
+ info.compileOptions =
117
+ compileOptionsResult.rows?.map((row) => row.compile_options) || [];
123
118
  // Get foreign key status
124
119
  const fkResult = await (0, sql_js_1.sql) `PRAGMA foreign_keys`.execute(this.db);
125
120
  info.foreignKeysEnabled = fkResult.rows?.[0]?.foreign_keys === 1;
@@ -38,7 +38,7 @@ class SQLiteDiscoveryCoordinator {
38
38
  const discoveryConfig = {
39
39
  excludeTables: config.excludeTables,
40
40
  includeViews: config.includeViews,
41
- customTypeMappings: config.customTypeMappings
41
+ customTypeMappings: config.customTypeMappings,
42
42
  };
43
43
  // Check if foreign keys are enabled
44
44
  let fkEnabled = false;
@@ -64,7 +64,8 @@ class SQLiteDiscoveryCoordinator {
64
64
  let relationships = [];
65
65
  if (fkEnabled) {
66
66
  try {
67
- relationships = await this.relationshipDiscovery.discoverRelationships(enhancedTables);
67
+ relationships =
68
+ await this.relationshipDiscovery.discoverRelationships(enhancedTables);
68
69
  }
69
70
  catch (error) {
70
71
  console.warn('Relationship discovery failed:', error);
@@ -82,16 +83,16 @@ class SQLiteDiscoveryCoordinator {
82
83
  viewMetadata = [];
83
84
  }
84
85
  }
85
- const views = viewMetadata.map(view => ({
86
+ const views = viewMetadata.map((view) => ({
86
87
  name: view.name,
87
88
  schema: view.schema,
88
89
  definition: view.definition || '',
89
- columns: view.columns || []
90
+ columns: view.columns || [],
90
91
  }));
91
92
  return {
92
93
  tables: enhancedTables,
93
94
  relationships,
94
- views
95
+ views,
95
96
  };
96
97
  }
97
98
  /**
@@ -113,23 +114,23 @@ class SQLiteDiscoveryCoordinator {
113
114
  const tableSize = await this.indexDiscovery.getTableSize(db, table.name);
114
115
  enhancedTables.push({
115
116
  ...table,
116
- indexes: indexes.map(idx => ({
117
+ indexes: indexes.map((idx) => ({
117
118
  name: idx.name,
118
119
  columns: idx.columns,
119
120
  unique: idx.unique,
120
121
  isPrimary: idx.isPrimary,
121
- definition: idx.definition
122
+ definition: idx.definition,
122
123
  })),
123
124
  constraints: constraints,
124
- foreignKeys: foreignKeys.map(fk => ({
125
+ foreignKeys: foreignKeys.map((fk) => ({
125
126
  name: fk.name,
126
127
  column: fk.column,
127
128
  referencedTable: fk.referencedTable,
128
129
  referencedColumn: fk.referencedColumn,
129
130
  onDelete: fk.onDelete,
130
- onUpdate: fk.onUpdate
131
+ onUpdate: fk.onUpdate,
131
132
  })),
132
- tableSize: tableSize
133
+ tableSize: tableSize,
133
134
  });
134
135
  }
135
136
  catch (error) {
@@ -139,7 +140,7 @@ class SQLiteDiscoveryCoordinator {
139
140
  indexes: [],
140
141
  constraints: [],
141
142
  foreignKeys: [],
142
- tableSize: undefined
143
+ tableSize: undefined,
143
144
  });
144
145
  }
145
146
  }
@@ -166,7 +167,7 @@ class SQLiteDiscoveryCoordinator {
166
167
  supportsAutoIncrement: true,
167
168
  supportsRowId: true,
168
169
  supportsTriggers: true,
169
- supportsFullTextSearch: true
170
+ supportsFullTextSearch: true,
170
171
  };
171
172
  }
172
173
  /**
@@ -215,7 +216,7 @@ class SQLiteDiscoveryCoordinator {
215
216
  'Use WAL mode for better concurrency: PRAGMA journal_mode = WAL',
216
217
  'Set appropriate cache size: PRAGMA cache_size = -64000',
217
218
  'Enable query optimization: PRAGMA optimize',
218
- 'Consider using prepared statements for better performance'
219
+ 'Consider using prepared statements for better performance',
219
220
  ];
220
221
  }
221
222
  }
@@ -56,7 +56,7 @@ class SimpleTest {
56
56
  console.log(`❌ Expected error containing "${expectedError}", got: ${errorMessage}`);
57
57
  }
58
58
  }
59
- }
59
+ },
60
60
  };
61
61
  }
62
62
  async run() {
@@ -90,7 +90,7 @@ async function runTests() {
90
90
  // Test 1: DiscoveryFactory Singleton
91
91
  test.test('DiscoveryFactory should be a singleton', () => {
92
92
  try {
93
- const { DiscoveryFactory } = require('../core/factories/discovery-factory.js');
93
+ const { DiscoveryFactory, } = require('../core/factories/discovery-factory.js');
94
94
  const instance1 = DiscoveryFactory.getInstance();
95
95
  const instance2 = DiscoveryFactory.getInstance();
96
96
  test.expect(instance1).toBe(instance2);
@@ -102,7 +102,7 @@ async function runTests() {
102
102
  // Test 2: SchemaDiscoveryCoordinator Singleton
103
103
  test.test('SchemaDiscoveryCoordinator should be a singleton', () => {
104
104
  try {
105
- const { SchemaDiscoveryCoordinator } = require('../core/coordinators/schema-discovery.coordinator.js');
105
+ const { SchemaDiscoveryCoordinator, } = require('../core/coordinators/schema-discovery.coordinator.js');
106
106
  const instance1 = SchemaDiscoveryCoordinator.getInstance();
107
107
  const instance2 = SchemaDiscoveryCoordinator.getInstance();
108
108
  test.expect(instance1).toBe(instance2);
@@ -114,7 +114,7 @@ async function runTests() {
114
114
  // Test 4: SQLite Coordinator Singleton
115
115
  test.test('SQLiteDiscoveryCoordinator should be a singleton', () => {
116
116
  try {
117
- const { SQLiteDiscoveryCoordinator } = require('../dialects/sqlite/sqlite-discovery.coordinator.js');
117
+ const { SQLiteDiscoveryCoordinator, } = require('../dialects/sqlite/sqlite-discovery.coordinator.js');
118
118
  const instance1 = SQLiteDiscoveryCoordinator.getInstance();
119
119
  const instance2 = SQLiteDiscoveryCoordinator.getInstance();
120
120
  test.expect(instance1).toBe(instance2);
@@ -126,7 +126,7 @@ async function runTests() {
126
126
  // Test 5: Factory Dialect Support
127
127
  test.test('DiscoveryFactory should support PostgreSQL and SQLite', () => {
128
128
  try {
129
- const { DiscoveryFactory } = require('../core/factories/discovery-factory.js');
129
+ const { DiscoveryFactory, } = require('../core/factories/discovery-factory.js');
130
130
  const factory = DiscoveryFactory.getInstance();
131
131
  test.expect(factory.isDialectSupported('postgresql')).toBe(true);
132
132
  test.expect(factory.isDialectSupported('sqlite')).toBe(true);
@@ -139,9 +139,11 @@ async function runTests() {
139
139
  // Test 6: Error Handling
140
140
  test.test('DiscoveryFactory should throw error for unsupported dialects', () => {
141
141
  try {
142
- const { DiscoveryFactory } = require('../core/factories/discovery-factory.js');
142
+ const { DiscoveryFactory, } = require('../core/factories/discovery-factory.js');
143
143
  const factory = DiscoveryFactory.getInstance();
144
- test.expect(() => factory.createIndexDiscovery('oracle')).toThrow('Unsupported dialect');
144
+ test
145
+ .expect(() => factory.createIndexDiscovery('oracle'))
146
+ .toThrow('Unsupported dialect');
145
147
  }
146
148
  catch (error) {
147
149
  console.log('⚠️ Error handling test skipped (module not available)');
@@ -150,7 +152,7 @@ async function runTests() {
150
152
  // Test 7: Capabilities
151
153
  test.test('PostgreSQL should have correct capabilities', () => {
152
154
  try {
153
- const { DiscoveryFactory } = require('../core/factories/discovery-factory.js');
155
+ const { DiscoveryFactory, } = require('../core/factories/discovery-factory.js');
154
156
  const factory = DiscoveryFactory.getInstance();
155
157
  const capabilities = factory.getDialectCapabilities('postgresql');
156
158
  test.expect(capabilities.supportsViews).toBe(true);
@@ -164,7 +166,7 @@ async function runTests() {
164
166
  // Test 8: SQLite Capabilities
165
167
  test.test('SQLite should have correct capabilities', () => {
166
168
  try {
167
- const { DiscoveryFactory } = require('../core/factories/discovery-factory.js');
169
+ const { DiscoveryFactory, } = require('../core/factories/discovery-factory.js');
168
170
  const factory = DiscoveryFactory.getInstance();
169
171
  const capabilities = factory.getDialectCapabilities('sqlite');
170
172
  test.expect(capabilities.supportsViews).toBe(true);
@@ -24,7 +24,7 @@ const sqlite_discovery_coordinator_js_1 = require("../dialects/sqlite/sqlite-dis
24
24
  supportsConstraints: true,
25
25
  supportsForeignKeys: true,
26
26
  supportsCheckConstraints: true,
27
- supportsDeferredConstraints: false
27
+ supportsDeferredConstraints: false,
28
28
  });
29
29
  });
30
30
  (0, globals_1.it)('should handle case insensitive dialect names', () => {
@@ -35,7 +35,7 @@ const sqlite_discovery_coordinator_js_1 = require("../dialects/sqlite/sqlite-dis
35
35
  supportsConstraints: true,
36
36
  supportsForeignKeys: true,
37
37
  supportsCheckConstraints: true,
38
- supportsDeferredConstraints: false
38
+ supportsDeferredConstraints: false,
39
39
  });
40
40
  });
41
41
  });
@@ -47,7 +47,7 @@ const sqlite_discovery_coordinator_js_1 = require("../dialects/sqlite/sqlite-dis
47
47
  supportsConstraints: false,
48
48
  supportsForeignKeys: false,
49
49
  supportsCheckConstraints: false,
50
- supportsDeferredConstraints: false
50
+ supportsDeferredConstraints: false,
51
51
  });
52
52
  });
53
53
  (0, globals_1.it)('should handle dialect name with whitespace', () => {
@@ -58,7 +58,7 @@ const sqlite_discovery_coordinator_js_1 = require("../dialects/sqlite/sqlite-dis
58
58
  supportsConstraints: true,
59
59
  supportsForeignKeys: true,
60
60
  supportsCheckConstraints: true,
61
- supportsDeferredConstraints: false
61
+ supportsDeferredConstraints: false,
62
62
  });
63
63
  });
64
64
  (0, globals_1.it)('should handle mixed case dialect names', () => {
@@ -69,7 +69,7 @@ const sqlite_discovery_coordinator_js_1 = require("../dialects/sqlite/sqlite-dis
69
69
  supportsConstraints: true,
70
70
  supportsForeignKeys: true,
71
71
  supportsCheckConstraints: true,
72
- supportsDeferredConstraints: false
72
+ supportsDeferredConstraints: false,
73
73
  });
74
74
  });
75
75
  });
@@ -94,7 +94,7 @@ const sqlite_discovery_coordinator_js_1 = require("../dialects/sqlite/sqlite-dis
94
94
  supportsAutoIncrement: true,
95
95
  supportsRowId: true,
96
96
  supportsTriggers: true,
97
- supportsFullTextSearch: true
97
+ supportsFullTextSearch: true,
98
98
  });
99
99
  });
100
100
  (0, globals_1.it)('should support all SQLite features', () => {
@@ -133,7 +133,7 @@ const view_discovery_js_1 = require("../core/discovery/view-discovery.js");
133
133
  supportsConstraints: true,
134
134
  supportsForeignKeys: true,
135
135
  supportsCheckConstraints: true,
136
- supportsDeferredConstraints: false
136
+ supportsDeferredConstraints: false,
137
137
  });
138
138
  });
139
139
  (0, globals_1.it)('should return false capabilities for unsupported dialects', () => {
@@ -144,7 +144,7 @@ const view_discovery_js_1 = require("../core/discovery/view-discovery.js");
144
144
  supportsConstraints: false,
145
145
  supportsForeignKeys: false,
146
146
  supportsCheckConstraints: false,
147
- supportsDeferredConstraints: false
147
+ supportsDeferredConstraints: false,
148
148
  });
149
149
  });
150
150
  });
@@ -78,7 +78,7 @@ const mockConsoleWarn = jest.spyOn(console, 'warn').mockImplementation(() => { }
78
78
  getPlugin: jest.fn(),
79
79
  withPlugin: jest.fn(),
80
80
  withoutPlugins: jest.fn(),
81
- freeze: jest.fn()
81
+ freeze: jest.fn(),
82
82
  };
83
83
  (0, globals_1.it)('should handle table discovery service errors', async () => {
84
84
  // The coordinator handles errors gracefully by returning empty results
@@ -90,11 +90,13 @@ const mockConsoleWarn = jest.spyOn(console, 'warn').mockImplementation(() => { }
90
90
  return {
91
91
  select: jest.fn().mockReturnThis(),
92
92
  where: jest.fn().mockReturnThis(),
93
- execute: jest.fn().mockRejectedValue(new Error('Table discovery service failed'))
93
+ execute: jest
94
+ .fn()
95
+ .mockRejectedValue(new Error('Table discovery service failed')),
94
96
  };
95
97
  }
96
98
  return mockKysely.selectFrom(table);
97
- })
99
+ }),
98
100
  };
99
101
  // Should return empty result instead of throwing
100
102
  const result = await sqliteCoordinator.discoverSchema(failingMockKysely, {});
@@ -109,9 +111,9 @@ const mockConsoleWarn = jest.spyOn(console, 'warn').mockImplementation(() => { }
109
111
  return {
110
112
  select: jest.fn().mockReturnThis(),
111
113
  where: jest.fn().mockReturnThis(),
112
- execute: jest.fn().mockResolvedValue([])
114
+ execute: jest.fn().mockResolvedValue([]),
113
115
  };
114
- })
116
+ }),
115
117
  };
116
118
  // This test validates the coordinator can handle errors gracefully
117
119
  const result = await sqliteCoordinator.discoverSchema(failingMockKysely, {});
@@ -141,7 +143,7 @@ const mockConsoleWarn = jest.spyOn(console, 'warn').mockImplementation(() => { }
141
143
  }),
142
144
  // Add minimal required properties
143
145
  schema: null,
144
- dynamic: null
146
+ dynamic: null,
145
147
  };
146
148
  // Should return empty result instead of throwing
147
149
  const result = await sqliteCoordinator.discoverSchema(mockKyselyWithError, {});
@@ -42,39 +42,43 @@ const mockKysely = {
42
42
  selectFrom: jest.fn().mockReturnThis(),
43
43
  select: jest.fn().mockReturnThis(),
44
44
  where: jest.fn().mockReturnThis(),
45
- execute: jest.fn().mockResolvedValue([])
45
+ execute: jest.fn().mockResolvedValue([]),
46
46
  };
47
47
  // Mock discovery services
48
48
  jest.mock('../core/discovery/table-metadata-discovery.js', () => ({
49
49
  TableMetadataDiscovery: {
50
50
  getInstance: jest.fn().mockReturnValue({
51
- discoverTables: jest.fn().mockResolvedValue([])
52
- })
53
- }
51
+ discoverTables: jest.fn().mockResolvedValue([]),
52
+ }),
53
+ },
54
54
  }));
55
55
  jest.mock('../core/discovery/relationship-discovery.js', () => ({
56
56
  RelationshipDiscovery: {
57
57
  getInstance: jest.fn().mockReturnValue({
58
- discoverRelationships: jest.fn().mockResolvedValue([])
59
- })
60
- }
58
+ discoverRelationships: jest.fn().mockResolvedValue([]),
59
+ }),
60
+ },
61
61
  }));
62
62
  jest.mock('../core/discovery/view-discovery.js', () => ({
63
63
  ViewDiscovery: {
64
64
  getInstance: jest.fn().mockReturnValue({
65
- discoverViews: jest.fn().mockResolvedValue([])
66
- })
67
- }
65
+ discoverViews: jest.fn().mockResolvedValue([]),
66
+ }),
67
+ },
68
68
  }));
69
69
  jest.mock('../dialects/sqlite/discovery/sqlite-index-discovery.js', () => ({
70
70
  SQLiteIndexDiscovery: {
71
71
  getInstance: jest.fn().mockReturnValue({
72
72
  discoverIndexes: jest.fn().mockResolvedValue([]),
73
73
  discoverTableIndexes: jest.fn().mockResolvedValue([]),
74
- getTableSize: jest.fn().mockResolvedValue({ pages: 0, size: 0, estimatedRows: 0 }),
75
- analyzeIndexEfficiency: jest.fn().mockReturnValue({ recommendations: [] })
76
- })
77
- }
74
+ getTableSize: jest
75
+ .fn()
76
+ .mockResolvedValue({ pages: 0, size: 0, estimatedRows: 0 }),
77
+ analyzeIndexEfficiency: jest
78
+ .fn()
79
+ .mockReturnValue({ recommendations: [] }),
80
+ }),
81
+ },
78
82
  }));
79
83
  jest.mock('../dialects/sqlite/discovery/sqlite-constraint-discovery.js', () => ({
80
84
  SQLiteConstraintDiscovery: {
@@ -83,9 +87,11 @@ jest.mock('../dialects/sqlite/discovery/sqlite-constraint-discovery.js', () => (
83
87
  isForeignKeySupportEnabled: jest.fn().mockResolvedValue(true),
84
88
  getForeignKeyInfo: jest.fn().mockResolvedValue([]),
85
89
  discoverTableConstraints: jest.fn().mockResolvedValue([]),
86
- analyzeConstraintCompatibility: jest.fn().mockReturnValue({ recommendations: [], compatibilityIssues: [] })
87
- })
88
- }
90
+ analyzeConstraintCompatibility: jest
91
+ .fn()
92
+ .mockReturnValue({ recommendations: [], compatibilityIssues: [] }),
93
+ }),
94
+ },
89
95
  }));
90
96
  (0, globals_1.describe)('Schema Strategy Integration Tests', () => {
91
97
  let coordinator;
@@ -173,7 +179,7 @@ jest.mock('../dialects/sqlite/discovery/sqlite-constraint-discovery.js', () => (
173
179
  selectFrom: jest.fn().mockReturnThis(),
174
180
  select: jest.fn().mockReturnThis(),
175
181
  where: jest.fn().mockReturnThis(),
176
- execute: jest.fn().mockResolvedValue([])
182
+ execute: jest.fn().mockResolvedValue([]),
177
183
  };
178
184
  const result = await coordinator.discoverSchema(mockKyselyWithError, {}, 'sqlite');
179
185
  (0, globals_1.expect)(result).toBeDefined();