noormme 1.1.0 → 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 (225) hide show
  1. package/README.md +84 -65
  2. package/dist/cjs/agentic/ActionJournal.js +13 -9
  3. package/dist/cjs/agentic/CapabilityManager.js +35 -21
  4. package/dist/cjs/agentic/CognitiveRepository.js +19 -9
  5. package/dist/cjs/agentic/ContextBuffer.js +24 -12
  6. package/dist/cjs/agentic/Cortex.js +11 -4
  7. package/dist/cjs/agentic/EpisodicMemory.js +7 -5
  8. package/dist/cjs/agentic/PersonaManager.js +16 -8
  9. package/dist/cjs/agentic/PolicyEnforcer.js +31 -12
  10. package/dist/cjs/agentic/ResourceMonitor.js +4 -4
  11. package/dist/cjs/agentic/SessionCompressor.js +22 -14
  12. package/dist/cjs/agentic/SessionManager.js +36 -18
  13. package/dist/cjs/agentic/VectorIndexer.js +22 -18
  14. package/dist/cjs/agentic/improvement/AblationEngine.js +22 -15
  15. package/dist/cjs/agentic/improvement/ActionRefiner.js +12 -10
  16. package/dist/cjs/agentic/improvement/ConflictResolver.js +5 -5
  17. package/dist/cjs/agentic/improvement/CortexJanitor.js +30 -9
  18. package/dist/cjs/agentic/improvement/CuriosityEngine.js +27 -23
  19. package/dist/cjs/agentic/improvement/EvolutionRitual.js +4 -4
  20. package/dist/cjs/agentic/improvement/EvolutionaryPilot.js +16 -6
  21. package/dist/cjs/agentic/improvement/GoalArchitect.d.ts +2 -2
  22. package/dist/cjs/agentic/improvement/GoalArchitect.js +20 -18
  23. package/dist/cjs/agentic/improvement/GovernanceManager.js +19 -11
  24. package/dist/cjs/agentic/improvement/HiveLink.js +22 -15
  25. package/dist/cjs/agentic/improvement/KnowledgeDistiller.js +48 -32
  26. package/dist/cjs/agentic/improvement/RecursiveReasoner.js +40 -17
  27. package/dist/cjs/agentic/improvement/ReflectionEngine.js +10 -8
  28. package/dist/cjs/agentic/improvement/RitualOrchestrator.js +28 -22
  29. package/dist/cjs/agentic/improvement/RuleEngine.js +22 -17
  30. package/dist/cjs/agentic/improvement/SelfEvolution.js +24 -18
  31. package/dist/cjs/agentic/improvement/SelfTestRegistry.js +18 -15
  32. package/dist/cjs/agentic/improvement/SkillSynthesizer.js +42 -27
  33. package/dist/cjs/agentic/improvement/SovereignMetrics.js +19 -17
  34. package/dist/cjs/agentic/improvement/StrategicPlanner.js +120 -55
  35. package/dist/cjs/agentic/telemetry/CognitiveSynthesizer.js +26 -12
  36. package/dist/cjs/agentic/telemetry/EventHarvester.js +3 -2
  37. package/dist/cjs/agentic/telemetry/ResearchAlchemist.js +5 -2
  38. package/dist/cjs/cache/cache-manager.js +7 -4
  39. package/dist/cjs/cli/commands/analyze.js +5 -4
  40. package/dist/cjs/cli/commands/generate.js +81 -44
  41. package/dist/cjs/cli/commands/init.js +7 -3
  42. package/dist/cjs/cli/commands/inspect.js +139 -36
  43. package/dist/cjs/cli/commands/migrate.js +5 -4
  44. package/dist/cjs/cli/commands/optimize.js +4 -4
  45. package/dist/cjs/cli/commands/status.js +9 -7
  46. package/dist/cjs/cli/commands/watch.js +7 -6
  47. package/dist/cjs/cli/index.js +2 -2
  48. package/dist/cjs/cli/ui/spinner.d.ts +15 -0
  49. package/dist/cjs/cli/ui/spinner.js +76 -0
  50. package/dist/cjs/dialect/database-introspector.js +3 -1
  51. package/dist/cjs/dialect/postgresql/postgresql-driver.js +3 -1
  52. package/dist/cjs/dialect/postgresql/postgresql-features.js +18 -8
  53. package/dist/cjs/dialect/postgresql/postgresql-introspector.js +2 -2
  54. package/dist/cjs/dialect/sqlite/sqlite-auto-indexer.js +47 -33
  55. package/dist/cjs/dialect/sqlite/sqlite-auto-optimizer.js +8 -7
  56. package/dist/cjs/dialect/sqlite/sqlite-driver.js +2 -2
  57. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +15 -12
  58. package/dist/cjs/edge-runtime/edge-config.js +21 -19
  59. package/dist/cjs/errors/NoormError.js +22 -20
  60. package/dist/cjs/helpers/agent-schema.js +2 -0
  61. package/dist/cjs/helpers/postgresql.js +7 -4
  62. package/dist/cjs/helpers/schema-evolution.js +31 -6
  63. package/dist/cjs/index.d.ts +3 -3
  64. package/dist/cjs/logging/logger.js +8 -4
  65. package/dist/cjs/migration/data_migrator.js +12 -11
  66. package/dist/cjs/migration/database_migration_manager.js +17 -13
  67. package/dist/cjs/migration/schema_differ.js +22 -14
  68. package/dist/cjs/migration/schema_introspector.js +8 -8
  69. package/dist/cjs/migration/type_mapper.js +68 -67
  70. package/dist/cjs/noormme.js +52 -37
  71. package/dist/cjs/performance/index.js +5 -5
  72. package/dist/cjs/performance/query-optimizer.js +26 -21
  73. package/dist/cjs/performance/services/cache-service.js +26 -16
  74. package/dist/cjs/performance/services/connection-factory.js +28 -23
  75. package/dist/cjs/performance/services/metrics-collector.js +41 -36
  76. package/dist/cjs/performance/utils/query-parser.js +15 -16
  77. package/dist/cjs/relationships/relationship-engine.js +10 -8
  78. package/dist/cjs/repository/repository-factory.js +97 -38
  79. package/dist/cjs/schema/core/coordinators/schema-discovery.coordinator.js +1 -3
  80. package/dist/cjs/schema/core/discovery/relationship-discovery.js +16 -16
  81. package/dist/cjs/schema/core/discovery/table-metadata-discovery.js +9 -9
  82. package/dist/cjs/schema/core/discovery/view-discovery.js +5 -4
  83. package/dist/cjs/schema/core/factories/discovery-factory.js +4 -4
  84. package/dist/cjs/schema/core/utils/name-generator.js +14 -5
  85. package/dist/cjs/schema/core/utils/type-mapper.js +24 -24
  86. package/dist/cjs/schema/dialects/postgresql/postgresql-discovery.coordinator.js +8 -7
  87. package/dist/cjs/schema/dialects/sqlite/discovery/sqlite-constraint-discovery.js +17 -15
  88. package/dist/cjs/schema/dialects/sqlite/discovery/sqlite-index-discovery.js +8 -8
  89. package/dist/cjs/schema/dialects/sqlite/introspection/sqlite-schema-introspector.js +6 -11
  90. package/dist/cjs/schema/dialects/sqlite/sqlite-discovery.coordinator.js +14 -13
  91. package/dist/cjs/schema/test/basic-schema-test.js +11 -9
  92. package/dist/cjs/schema/test/dialect-capabilities.test.js +6 -6
  93. package/dist/cjs/schema/test/discovery-factory.test.js +2 -2
  94. package/dist/cjs/schema/test/error-handling.test.js +8 -6
  95. package/dist/cjs/schema/test/integration.test.js +24 -18
  96. package/dist/cjs/schema/test/schema-discovery-coordinator.test.js +9 -9
  97. package/dist/cjs/schema/test/simple-schema-test.js +9 -9
  98. package/dist/cjs/schema/test/sqlite-discovery-coordinator.test.js +64 -48
  99. package/dist/cjs/schema/test/test-runner.js +3 -3
  100. package/dist/cjs/sqlite-migration/index.d.ts +2 -2
  101. package/dist/cjs/sqlite-migration/sqlite-migration-manager.js +21 -17
  102. package/dist/cjs/sqlite-migration/sqlite-migration-provider.js +38 -34
  103. package/dist/cjs/testing/test-utils.js +36 -34
  104. package/dist/cjs/types/index.d.ts +5 -2
  105. package/dist/cjs/types/index.js +6 -3
  106. package/dist/cjs/types/type-generator.js +46 -42
  107. package/dist/cjs/util/safe-sql-helpers.js +1 -1
  108. package/dist/cjs/util/security-validator.js +20 -9
  109. package/dist/cjs/utils/errorHelpers.js +20 -10
  110. package/dist/cjs/watch/schema-watcher.js +22 -23
  111. package/dist/esm/agentic/ActionJournal.js +13 -9
  112. package/dist/esm/agentic/CapabilityManager.js +35 -21
  113. package/dist/esm/agentic/CognitiveRepository.js +19 -9
  114. package/dist/esm/agentic/ContextBuffer.js +24 -12
  115. package/dist/esm/agentic/Cortex.js +11 -4
  116. package/dist/esm/agentic/EpisodicMemory.js +7 -5
  117. package/dist/esm/agentic/PersonaManager.js +16 -8
  118. package/dist/esm/agentic/PolicyEnforcer.js +31 -12
  119. package/dist/esm/agentic/ResourceMonitor.js +4 -4
  120. package/dist/esm/agentic/SessionCompressor.js +22 -14
  121. package/dist/esm/agentic/SessionManager.js +36 -18
  122. package/dist/esm/agentic/VectorIndexer.js +22 -18
  123. package/dist/esm/agentic/improvement/AblationEngine.js +22 -15
  124. package/dist/esm/agentic/improvement/ActionRefiner.js +12 -10
  125. package/dist/esm/agentic/improvement/ConflictResolver.js +5 -5
  126. package/dist/esm/agentic/improvement/CortexJanitor.js +30 -9
  127. package/dist/esm/agentic/improvement/CuriosityEngine.js +27 -23
  128. package/dist/esm/agentic/improvement/EvolutionRitual.js +4 -4
  129. package/dist/esm/agentic/improvement/EvolutionaryPilot.js +16 -6
  130. package/dist/esm/agentic/improvement/GoalArchitect.d.ts +2 -2
  131. package/dist/esm/agentic/improvement/GoalArchitect.js +20 -18
  132. package/dist/esm/agentic/improvement/GovernanceManager.js +19 -11
  133. package/dist/esm/agentic/improvement/HiveLink.js +22 -15
  134. package/dist/esm/agentic/improvement/KnowledgeDistiller.js +48 -32
  135. package/dist/esm/agentic/improvement/RecursiveReasoner.js +40 -17
  136. package/dist/esm/agentic/improvement/ReflectionEngine.js +10 -8
  137. package/dist/esm/agentic/improvement/RitualOrchestrator.js +28 -22
  138. package/dist/esm/agentic/improvement/RuleEngine.js +22 -17
  139. package/dist/esm/agentic/improvement/SelfEvolution.js +24 -18
  140. package/dist/esm/agentic/improvement/SelfTestRegistry.js +18 -15
  141. package/dist/esm/agentic/improvement/SkillSynthesizer.js +42 -27
  142. package/dist/esm/agentic/improvement/SovereignMetrics.js +19 -17
  143. package/dist/esm/agentic/improvement/StrategicPlanner.js +120 -55
  144. package/dist/esm/agentic/telemetry/CognitiveSynthesizer.js +26 -12
  145. package/dist/esm/agentic/telemetry/EventHarvester.js +3 -2
  146. package/dist/esm/agentic/telemetry/ResearchAlchemist.js +5 -2
  147. package/dist/esm/cache/cache-manager.js +7 -4
  148. package/dist/esm/cli/commands/analyze.js +5 -4
  149. package/dist/esm/cli/commands/generate.js +82 -45
  150. package/dist/esm/cli/commands/init.js +8 -4
  151. package/dist/esm/cli/commands/inspect.js +140 -37
  152. package/dist/esm/cli/commands/migrate.js +5 -4
  153. package/dist/esm/cli/commands/optimize.js +4 -4
  154. package/dist/esm/cli/commands/status.js +9 -7
  155. package/dist/esm/cli/commands/watch.js +7 -6
  156. package/dist/esm/cli/index.js +2 -2
  157. package/dist/esm/cli/ui/spinner.d.ts +15 -0
  158. package/dist/esm/cli/ui/spinner.js +70 -0
  159. package/dist/esm/dialect/database-introspector.js +3 -1
  160. package/dist/esm/dialect/postgresql/postgresql-driver.js +3 -1
  161. package/dist/esm/dialect/postgresql/postgresql-features.js +18 -8
  162. package/dist/esm/dialect/postgresql/postgresql-introspector.js +2 -2
  163. package/dist/esm/dialect/sqlite/sqlite-auto-indexer.js +47 -33
  164. package/dist/esm/dialect/sqlite/sqlite-auto-optimizer.js +8 -7
  165. package/dist/esm/dialect/sqlite/sqlite-driver.js +2 -2
  166. package/dist/esm/dialect/sqlite/sqlite-introspector.js +15 -12
  167. package/dist/esm/dynamic/dynamic.js +1 -1
  168. package/dist/esm/edge-runtime/edge-config.js +21 -19
  169. package/dist/esm/errors/NoormError.js +22 -20
  170. package/dist/esm/helpers/agent-schema.js +2 -0
  171. package/dist/esm/helpers/postgresql.js +7 -4
  172. package/dist/esm/helpers/schema-evolution.js +31 -6
  173. package/dist/esm/index.d.ts +3 -3
  174. package/dist/esm/index.js +2 -2
  175. package/dist/esm/logging/logger.js +8 -4
  176. package/dist/esm/migration/data_migrator.js +12 -11
  177. package/dist/esm/migration/database_migration_manager.js +18 -14
  178. package/dist/esm/migration/schema_differ.js +22 -14
  179. package/dist/esm/migration/schema_introspector.js +8 -8
  180. package/dist/esm/migration/type_mapper.js +68 -67
  181. package/dist/esm/noormme.js +52 -37
  182. package/dist/esm/performance/index.js +5 -5
  183. package/dist/esm/performance/query-optimizer.js +26 -21
  184. package/dist/esm/performance/services/cache-service.js +26 -16
  185. package/dist/esm/performance/services/connection-factory.js +28 -23
  186. package/dist/esm/performance/services/metrics-collector.js +41 -36
  187. package/dist/esm/performance/utils/query-parser.js +15 -16
  188. package/dist/esm/raw-builder/sql.js +1 -1
  189. package/dist/esm/relationships/relationship-engine.js +10 -8
  190. package/dist/esm/repository/repository-factory.js +98 -39
  191. package/dist/esm/schema/builders/alter-table-add-index-builder.js +1 -1
  192. package/dist/esm/schema/builders/create-index-builder.js +2 -2
  193. package/dist/esm/schema/core/coordinators/schema-discovery.coordinator.js +1 -3
  194. package/dist/esm/schema/core/discovery/relationship-discovery.js +16 -16
  195. package/dist/esm/schema/core/discovery/table-metadata-discovery.js +9 -9
  196. package/dist/esm/schema/core/discovery/view-discovery.js +5 -4
  197. package/dist/esm/schema/core/factories/discovery-factory.js +4 -4
  198. package/dist/esm/schema/core/utils/name-generator.js +14 -5
  199. package/dist/esm/schema/core/utils/type-mapper.js +24 -24
  200. package/dist/esm/schema/dialects/postgresql/postgresql-discovery.coordinator.js +8 -7
  201. package/dist/esm/schema/dialects/sqlite/discovery/sqlite-constraint-discovery.js +17 -15
  202. package/dist/esm/schema/dialects/sqlite/discovery/sqlite-index-discovery.js +8 -8
  203. package/dist/esm/schema/dialects/sqlite/introspection/sqlite-schema-introspector.js +6 -11
  204. package/dist/esm/schema/dialects/sqlite/sqlite-discovery.coordinator.js +14 -13
  205. package/dist/esm/schema/test/basic-schema-test.js +11 -9
  206. package/dist/esm/schema/test/dialect-capabilities.test.js +6 -6
  207. package/dist/esm/schema/test/discovery-factory.test.js +2 -2
  208. package/dist/esm/schema/test/error-handling.test.js +8 -6
  209. package/dist/esm/schema/test/integration.test.js +24 -18
  210. package/dist/esm/schema/test/schema-discovery-coordinator.test.js +9 -9
  211. package/dist/esm/schema/test/simple-schema-test.js +9 -9
  212. package/dist/esm/schema/test/sqlite-discovery-coordinator.test.js +64 -48
  213. package/dist/esm/schema/test/test-runner.js +3 -3
  214. package/dist/esm/sqlite-migration/index.d.ts +2 -2
  215. package/dist/esm/sqlite-migration/sqlite-migration-manager.js +21 -17
  216. package/dist/esm/sqlite-migration/sqlite-migration-provider.js +38 -34
  217. package/dist/esm/testing/test-utils.js +36 -34
  218. package/dist/esm/types/index.d.ts +5 -2
  219. package/dist/esm/types/index.js +6 -3
  220. package/dist/esm/types/type-generator.js +46 -42
  221. package/dist/esm/util/safe-sql-helpers.js +1 -1
  222. package/dist/esm/util/security-validator.js +20 -9
  223. package/dist/esm/utils/errorHelpers.js +21 -11
  224. package/dist/esm/watch/schema-watcher.js +22 -23
  225. package/package.json +40 -44
@@ -90,7 +90,7 @@ class DatabaseMigrationManager {
90
90
  this.logger.info('\n✅ Step 4: Verifying migration...');
91
91
  const verificationResult = await this.verifyMigration(filteredSourceSchema);
92
92
  result.warnings.push(...verificationResult.warnings);
93
- result.success = result.errors.filter(e => e.fatal).length === 0;
93
+ result.success = result.errors.filter((e) => e.fatal).length === 0;
94
94
  result.duration = Date.now() - startTime;
95
95
  this.logger.info('\n🎉 Migration completed!');
96
96
  this.logger.info(` Duration: ${(result.duration / 1000).toFixed(2)}s`);
@@ -146,14 +146,14 @@ class DatabaseMigrationManager {
146
146
  this.logger.info(` Generated ${sqlStatements.length} SQL statements`);
147
147
  if (options.generateSQL) {
148
148
  this.logger.info('\nSQL Statements:');
149
- sqlStatements.forEach(stmt => this.logger.info(stmt));
149
+ sqlStatements.forEach((stmt) => this.logger.info(stmt));
150
150
  }
151
151
  if (options.apply) {
152
152
  const result = await (0, schema_differ_js_1.applySchemaSyncronization)(this.targetDb, sqlStatements, options);
153
153
  this.logger.info(` Applied ${result.appliedStatements} changes`);
154
154
  if (result.errors.length > 0) {
155
155
  this.logger.error(` Errors: ${result.errors.length}`);
156
- result.errors.forEach(err => {
156
+ result.errors.forEach((err) => {
157
157
  this.logger.error(` ${err.sql}`);
158
158
  this.logger.error(` ${err.error.message}`);
159
159
  });
@@ -199,11 +199,13 @@ class DatabaseMigrationManager {
199
199
  */
200
200
  filterTables(tables) {
201
201
  let filtered = tables;
202
- if (this.config.options?.includeTables && this.config.options.includeTables.length > 0) {
203
- filtered = filtered.filter(t => this.config.options.includeTables.includes(t.name));
202
+ if (this.config.options?.includeTables &&
203
+ this.config.options.includeTables.length > 0) {
204
+ filtered = filtered.filter((t) => this.config.options.includeTables.includes(t.name));
204
205
  }
205
- if (this.config.options?.excludeTables && this.config.options.excludeTables.length > 0) {
206
- filtered = filtered.filter(t => !this.config.options.excludeTables.includes(t.name));
206
+ if (this.config.options?.excludeTables &&
207
+ this.config.options.excludeTables.length > 0) {
208
+ filtered = filtered.filter((t) => !this.config.options.excludeTables.includes(t.name));
207
209
  }
208
210
  return filtered;
209
211
  }
@@ -219,9 +221,11 @@ class DatabaseMigrationManager {
219
221
  if (this.config.options?.dropTables) {
220
222
  this.logger.info(' Dropping existing tables...');
221
223
  for (const table of targetSchema) {
222
- if (sourceSchema.find(t => t.name === table.name)) {
224
+ if (sourceSchema.find((t) => t.name === table.name)) {
223
225
  try {
224
- await sql_js_1.sql.raw(`DROP TABLE IF EXISTS "${table.name}" CASCADE`).execute(this.targetDb);
226
+ await sql_js_1.sql
227
+ .raw(`DROP TABLE IF EXISTS "${table.name}" CASCADE`)
228
+ .execute(this.targetDb);
225
229
  this.logger.info(` Dropped: ${table.name}`);
226
230
  }
227
231
  catch (error) {
@@ -233,7 +237,7 @@ class DatabaseMigrationManager {
233
237
  // Create tables
234
238
  for (const sourceTable of sourceSchema) {
235
239
  try {
236
- const targetTable = targetSchema.find(t => t.name === sourceTable.name);
240
+ const targetTable = targetSchema.find((t) => t.name === sourceTable.name);
237
241
  if (!targetTable || this.config.options?.dropTables) {
238
242
  // Create table
239
243
  await this.createTable(sourceTable);
@@ -292,8 +296,8 @@ class DatabaseMigrationManager {
292
296
  createSQL += columnDefs.join(',\n');
293
297
  // Add foreign keys
294
298
  for (const fk of sourceTable.foreignKeys) {
295
- const fkCols = fk.columns.map(c => `"${c}"`).join(', ');
296
- const refCols = fk.referencedColumns.map(c => `"${c}"`).join(', ');
299
+ const fkCols = fk.columns.map((c) => `"${c}"`).join(', ');
300
+ const refCols = fk.referencedColumns.map((c) => `"${c}"`).join(', ');
297
301
  createSQL += `,\n FOREIGN KEY (${fkCols}) REFERENCES "${fk.referencedTable}" (${refCols})`;
298
302
  if (fk.onDelete) {
299
303
  createSQL += ` ON DELETE ${fk.onDelete}`;
@@ -332,7 +336,7 @@ class DatabaseMigrationManager {
332
336
  const results = await (0, data_migrator_js_1.migrateAllTablesData)(this.sourceDb, this.targetDb, sourceSchema, targetSchema, this.config.source.dialect, this.config.target.dialect, options);
333
337
  const tablesProcessed = results.length;
334
338
  const rowsMigrated = results.reduce((sum, r) => sum + r.rowsMigrated, 0);
335
- const errors = results.flatMap(r => r.errors);
339
+ const errors = results.flatMap((r) => r.errors);
336
340
  const warnings = [];
337
341
  for (const result of results) {
338
342
  if (result.errors.length > 0) {
@@ -13,8 +13,8 @@ const type_mapper_js_1 = require("./type_mapper.js");
13
13
  */
14
14
  function compareSchemas(sourceSchema, targetSchema, sourceDialect, targetDialect) {
15
15
  const differences = [];
16
- const sourceTableMap = new Map(sourceSchema.map(t => [t.name, t]));
17
- const targetTableMap = new Map(targetSchema.map(t => [t.name, t]));
16
+ const sourceTableMap = new Map(sourceSchema.map((t) => [t.name, t]));
17
+ const targetTableMap = new Map(targetSchema.map((t) => [t.name, t]));
18
18
  // Find added and modified tables
19
19
  for (const sourceTable of sourceSchema) {
20
20
  const targetTable = targetTableMap.get(sourceTable.name);
@@ -55,11 +55,17 @@ function compareSchemas(sourceSchema, targetSchema, sourceDialect, targetDialect
55
55
  }
56
56
  }
57
57
  // Calculate summary
58
- const tablesAdded = differences.filter(d => d.type === 'table_added').length;
59
- const tablesRemoved = differences.filter(d => d.type === 'table_removed').length;
58
+ const tablesAdded = differences.filter((d) => d.type === 'table_added').length;
59
+ const tablesRemoved = differences.filter((d) => d.type === 'table_removed').length;
60
60
  const tablesModified = new Set(differences
61
- .filter(d => ['column_added', 'column_removed', 'column_modified', 'index_added', 'index_removed'].includes(d.type))
62
- .map(d => d.table)).size;
61
+ .filter((d) => [
62
+ 'column_added',
63
+ 'column_removed',
64
+ 'column_modified',
65
+ 'index_added',
66
+ 'index_removed',
67
+ ].includes(d.type))
68
+ .map((d) => d.table)).size;
63
69
  return {
64
70
  differences,
65
71
  sourceSchema,
@@ -75,8 +81,8 @@ function compareSchemas(sourceSchema, targetSchema, sourceDialect, targetDialect
75
81
  }
76
82
  function compareColumns(sourceTable, targetTable, sourceDialect, targetDialect) {
77
83
  const differences = [];
78
- const sourceColumnMap = new Map(sourceTable.columns.map(c => [c.name, c]));
79
- const targetColumnMap = new Map(targetTable.columns.map(c => [c.name, c]));
84
+ const sourceColumnMap = new Map(sourceTable.columns.map((c) => [c.name, c]));
85
+ const targetColumnMap = new Map(targetTable.columns.map((c) => [c.name, c]));
80
86
  // Check for added and modified columns
81
87
  for (const sourceColumn of sourceTable.columns) {
82
88
  const targetColumn = targetColumnMap.get(sourceColumn.name);
@@ -140,8 +146,8 @@ function compareColumns(sourceTable, targetTable, sourceDialect, targetDialect)
140
146
  }
141
147
  function compareIndexes(sourceTable, targetTable) {
142
148
  const differences = [];
143
- const sourceIndexMap = new Map(sourceTable.indexes.map(i => [i.name, i]));
144
- const targetIndexMap = new Map(targetTable.indexes.map(i => [i.name, i]));
149
+ const sourceIndexMap = new Map(sourceTable.indexes.map((i) => [i.name, i]));
150
+ const targetIndexMap = new Map(targetTable.indexes.map((i) => [i.name, i]));
145
151
  // Check for added indexes
146
152
  for (const sourceIndex of sourceTable.indexes) {
147
153
  const targetIndex = targetIndexMap.get(sourceIndex.name);
@@ -231,7 +237,8 @@ function generateSyncSQL(comparison, targetDialect) {
231
237
  return sqlStatements;
232
238
  }
233
239
  function generateCreateTableSQL(table, targetDialect) {
234
- const columns = table.columns.map(col => {
240
+ const columns = table.columns
241
+ .map((col) => {
235
242
  let colDef = `"${col.name}" ${col.type}`;
236
243
  if (col.primaryKey) {
237
244
  colDef += ' PRIMARY KEY';
@@ -249,13 +256,14 @@ function generateCreateTableSQL(table, targetDialect) {
249
256
  colDef += ` DEFAULT ${col.defaultValue}`;
250
257
  }
251
258
  return colDef;
252
- }).join(',\n ');
259
+ })
260
+ .join(',\n ');
253
261
  let sql = `CREATE TABLE "${table.name}" (\n ${columns}`;
254
262
  // Add foreign keys
255
263
  if (table.foreignKeys.length > 0) {
256
264
  for (const fk of table.foreignKeys) {
257
- const fkCols = fk.columns.map(c => `"${c}"`).join(', ');
258
- const refCols = fk.referencedColumns.map(c => `"${c}"`).join(', ');
265
+ const fkCols = fk.columns.map((c) => `"${c}"`).join(', ');
266
+ const refCols = fk.referencedColumns.map((c) => `"${c}"`).join(', ');
259
267
  sql += `,\n FOREIGN KEY (${fkCols}) REFERENCES "${fk.referencedTable}" (${refCols})`;
260
268
  if (fk.onDelete) {
261
269
  sql += ` ON DELETE ${fk.onDelete}`;
@@ -34,8 +34,8 @@ async function introspectSQLiteSchema(db) {
34
34
  const rowCount = countResult.rows[0]?.count || 0;
35
35
  // Get primary key
36
36
  const primaryKey = columns
37
- .filter(col => col.primaryKey)
38
- .map(col => col.name);
37
+ .filter((col) => col.primaryKey)
38
+ .map((col) => col.name);
39
39
  tables.push({
40
40
  name: tableName,
41
41
  columns,
@@ -120,9 +120,9 @@ async function introspectSQLiteForeignKeys(db, tableName) {
120
120
  for (const rows of fkMap.values()) {
121
121
  const first = rows[0];
122
122
  foreignKeys.push({
123
- columns: rows.map(r => r.from),
123
+ columns: rows.map((r) => r.from),
124
124
  referencedTable: first.table,
125
- referencedColumns: rows.map(r => r.to),
125
+ referencedColumns: rows.map((r) => r.to),
126
126
  onDelete: first.on_delete,
127
127
  onUpdate: first.on_update,
128
128
  });
@@ -177,8 +177,8 @@ async function introspectPostgreSQLSchema(db) {
177
177
  const rowCount = parseInt(countResult.rows[0]?.count || '0', 10);
178
178
  // Get primary key
179
179
  const primaryKey = columns
180
- .filter(col => col.primaryKey)
181
- .map(col => col.name);
180
+ .filter((col) => col.primaryKey)
181
+ .map((col) => col.name);
182
182
  tables.push({
183
183
  name: tableName,
184
184
  columns,
@@ -315,9 +315,9 @@ async function introspectPostgreSQLForeignKeys(db, tableName) {
315
315
  const first = rows[0];
316
316
  foreignKeys.push({
317
317
  name: constraintName,
318
- columns: rows.map(r => r.column_name),
318
+ columns: rows.map((r) => r.column_name),
319
319
  referencedTable: first.foreign_table_name,
320
- referencedColumns: rows.map(r => r.foreign_column_name),
320
+ referencedColumns: rows.map((r) => r.foreign_column_name),
321
321
  onDelete: first.delete_rule?.toUpperCase(),
322
322
  onUpdate: first.update_rule?.toUpperCase(),
323
323
  });
@@ -12,99 +12,99 @@ exports.areTypesCompatible = areTypesCompatible;
12
12
  */
13
13
  exports.SQLITE_TO_POSTGRES_TYPES = {
14
14
  // Integer types
15
- 'INTEGER': 'INTEGER',
16
- 'INT': 'INTEGER',
17
- 'TINYINT': 'SMALLINT',
18
- 'SMALLINT': 'SMALLINT',
19
- 'MEDIUMINT': 'INTEGER',
20
- 'BIGINT': 'BIGINT',
15
+ INTEGER: 'INTEGER',
16
+ INT: 'INTEGER',
17
+ TINYINT: 'SMALLINT',
18
+ SMALLINT: 'SMALLINT',
19
+ MEDIUMINT: 'INTEGER',
20
+ BIGINT: 'BIGINT',
21
21
  // Real/Float types
22
- 'REAL': 'REAL',
23
- 'DOUBLE': 'DOUBLE PRECISION',
22
+ REAL: 'REAL',
23
+ DOUBLE: 'DOUBLE PRECISION',
24
24
  'DOUBLE PRECISION': 'DOUBLE PRECISION',
25
- 'FLOAT': 'REAL',
25
+ FLOAT: 'REAL',
26
26
  // Numeric/Decimal
27
- 'NUMERIC': 'NUMERIC',
28
- 'DECIMAL': 'DECIMAL',
27
+ NUMERIC: 'NUMERIC',
28
+ DECIMAL: 'DECIMAL',
29
29
  // Text types
30
- 'TEXT': 'TEXT',
31
- 'CHARACTER': 'VARCHAR',
32
- 'VARCHAR': 'VARCHAR',
30
+ TEXT: 'TEXT',
31
+ CHARACTER: 'VARCHAR',
32
+ VARCHAR: 'VARCHAR',
33
33
  'VARYING CHARACTER': 'VARCHAR',
34
- 'NCHAR': 'VARCHAR',
34
+ NCHAR: 'VARCHAR',
35
35
  'NATIVE CHARACTER': 'VARCHAR',
36
- 'NVARCHAR': 'VARCHAR',
37
- 'CLOB': 'TEXT',
36
+ NVARCHAR: 'VARCHAR',
37
+ CLOB: 'TEXT',
38
38
  // Binary types
39
- 'BLOB': 'BYTEA',
39
+ BLOB: 'BYTEA',
40
40
  // Boolean
41
- 'BOOLEAN': 'BOOLEAN',
41
+ BOOLEAN: 'BOOLEAN',
42
42
  // Date/Time types (SQLite stores as text/integer)
43
- 'DATE': 'DATE',
44
- 'DATETIME': 'TIMESTAMP',
45
- 'TIMESTAMP': 'TIMESTAMP',
46
- 'TIME': 'TIME',
43
+ DATE: 'DATE',
44
+ DATETIME: 'TIMESTAMP',
45
+ TIMESTAMP: 'TIMESTAMP',
46
+ TIME: 'TIME',
47
47
  };
48
48
  /**
49
49
  * Map PostgreSQL types to SQLite types
50
50
  */
51
51
  exports.POSTGRES_TO_SQLITE_TYPES = {
52
52
  // Integer types
53
- 'INTEGER': 'INTEGER',
54
- 'INT': 'INTEGER',
55
- 'INT4': 'INTEGER',
56
- 'SMALLINT': 'INTEGER',
57
- 'INT2': 'INTEGER',
58
- 'BIGINT': 'INTEGER',
59
- 'INT8': 'INTEGER',
60
- 'SERIAL': 'INTEGER',
61
- 'BIGSERIAL': 'INTEGER',
62
- 'SMALLSERIAL': 'INTEGER',
53
+ INTEGER: 'INTEGER',
54
+ INT: 'INTEGER',
55
+ INT4: 'INTEGER',
56
+ SMALLINT: 'INTEGER',
57
+ INT2: 'INTEGER',
58
+ BIGINT: 'INTEGER',
59
+ INT8: 'INTEGER',
60
+ SERIAL: 'INTEGER',
61
+ BIGSERIAL: 'INTEGER',
62
+ SMALLSERIAL: 'INTEGER',
63
63
  // Float types
64
- 'REAL': 'REAL',
65
- 'FLOAT4': 'REAL',
64
+ REAL: 'REAL',
65
+ FLOAT4: 'REAL',
66
66
  'DOUBLE PRECISION': 'REAL',
67
- 'FLOAT8': 'REAL',
67
+ FLOAT8: 'REAL',
68
68
  // Numeric
69
- 'NUMERIC': 'NUMERIC',
70
- 'DECIMAL': 'NUMERIC',
69
+ NUMERIC: 'NUMERIC',
70
+ DECIMAL: 'NUMERIC',
71
71
  // Text types
72
- 'TEXT': 'TEXT',
73
- 'VARCHAR': 'TEXT',
72
+ TEXT: 'TEXT',
73
+ VARCHAR: 'TEXT',
74
74
  'CHARACTER VARYING': 'TEXT',
75
- 'CHAR': 'TEXT',
76
- 'CHARACTER': 'TEXT',
77
- 'BPCHAR': 'TEXT',
75
+ CHAR: 'TEXT',
76
+ CHARACTER: 'TEXT',
77
+ BPCHAR: 'TEXT',
78
78
  // Binary
79
- 'BYTEA': 'BLOB',
79
+ BYTEA: 'BLOB',
80
80
  // Boolean
81
- 'BOOLEAN': 'INTEGER',
82
- 'BOOL': 'INTEGER',
81
+ BOOLEAN: 'INTEGER',
82
+ BOOL: 'INTEGER',
83
83
  // Date/Time
84
- 'DATE': 'TEXT',
85
- 'TIME': 'TEXT',
86
- 'TIMESTAMP': 'TEXT',
87
- 'TIMESTAMPTZ': 'TEXT',
84
+ DATE: 'TEXT',
85
+ TIME: 'TEXT',
86
+ TIMESTAMP: 'TEXT',
87
+ TIMESTAMPTZ: 'TEXT',
88
88
  'TIMESTAMP WITH TIME ZONE': 'TEXT',
89
89
  'TIMESTAMP WITHOUT TIME ZONE': 'TEXT',
90
- 'INTERVAL': 'TEXT',
90
+ INTERVAL: 'TEXT',
91
91
  // JSON
92
- 'JSON': 'TEXT',
93
- 'JSONB': 'TEXT',
92
+ JSON: 'TEXT',
93
+ JSONB: 'TEXT',
94
94
  // UUID
95
- 'UUID': 'TEXT',
95
+ UUID: 'TEXT',
96
96
  // Network types
97
- 'INET': 'TEXT',
98
- 'CIDR': 'TEXT',
99
- 'MACADDR': 'TEXT',
97
+ INET: 'TEXT',
98
+ CIDR: 'TEXT',
99
+ MACADDR: 'TEXT',
100
100
  // Geometric types (simplified)
101
- 'POINT': 'TEXT',
102
- 'LINE': 'TEXT',
103
- 'LSEG': 'TEXT',
104
- 'BOX': 'TEXT',
105
- 'PATH': 'TEXT',
106
- 'POLYGON': 'TEXT',
107
- 'CIRCLE': 'TEXT',
101
+ POINT: 'TEXT',
102
+ LINE: 'TEXT',
103
+ LSEG: 'TEXT',
104
+ BOX: 'TEXT',
105
+ PATH: 'TEXT',
106
+ POLYGON: 'TEXT',
107
+ CIRCLE: 'TEXT',
108
108
  // Array types - convert to TEXT in SQLite
109
109
  'TEXT[]': 'TEXT',
110
110
  'INTEGER[]': 'TEXT',
@@ -116,8 +116,8 @@ exports.POSTGRES_TO_SQLITE_TYPES = {
116
116
  'JSON[]': 'TEXT',
117
117
  'JSONB[]': 'TEXT',
118
118
  // Full-text search
119
- 'TSVECTOR': 'TEXT',
120
- 'TSQUERY': 'TEXT',
119
+ TSVECTOR: 'TEXT',
120
+ TSQUERY: 'TEXT',
121
121
  };
122
122
  /**
123
123
  * Map type from source dialect to target dialect
@@ -259,5 +259,6 @@ function areTypesCompatible(sourceType, targetType, sourceDialect, targetDialect
259
259
  return sourceType.toUpperCase() === targetType.toUpperCase();
260
260
  }
261
261
  const mapped = mapType(sourceType, sourceDialect, targetDialect);
262
- return mapped.toUpperCase().split('(')[0] === targetType.toUpperCase().split('(')[0];
262
+ return (mapped.toUpperCase().split('(')[0] ===
263
+ targetType.toUpperCase().split('(')[0]);
263
264
  }
@@ -86,7 +86,9 @@ class NOORMME {
86
86
  this.dialect = this.createDialect();
87
87
  this.db = new kysely_js_1.Kysely({
88
88
  dialect: this.dialect,
89
- log: this.config.logging?.enabled ? this.logger.createKyselyLogger() : undefined
89
+ log: this.config.logging?.enabled
90
+ ? this.logger.createKyselyLogger()
91
+ : undefined,
90
92
  });
91
93
  // Initialize core components
92
94
  this.schemaDiscovery = new schema_discovery_js_1.SchemaDiscovery(this.db, this.config.introspection, this.dialect);
@@ -100,7 +102,7 @@ class NOORMME {
100
102
  : null,
101
103
  schema: new agent_schema_js_1.AgentSchemaHelper(this.db, agenticConfig),
102
104
  cortex: new Cortex_js_1.Cortex(this.db, this.config),
103
- evolution: new schema_evolution_js_1.SchemaEvolutionHelper(this.db)
105
+ evolution: new schema_evolution_js_1.SchemaEvolutionHelper(this.db),
104
106
  };
105
107
  this.repositoryFactory = new repository_factory_js_1.RepositoryFactory(this.db, this.config.performance, this.agent.cortex);
106
108
  this.relationshipEngine = new relationship_engine_js_1.RelationshipEngine(this.db, this.config.performance);
@@ -167,7 +169,7 @@ class NOORMME {
167
169
  schemaInfo = {
168
170
  tables: [],
169
171
  relationships: [],
170
- views: []
172
+ views: [],
171
173
  };
172
174
  }
173
175
  // Generate types - handle empty schema gracefully
@@ -183,7 +185,7 @@ class NOORMME {
183
185
  generatedTypes = {
184
186
  entities: [],
185
187
  relationships: [],
186
- types: {}
188
+ types: {},
187
189
  };
188
190
  }
189
191
  // Cache schema and types - handle caching errors gracefully
@@ -207,7 +209,7 @@ class NOORMME {
207
209
  slowQueryThreshold: 1000,
208
210
  nPlusOneDetection: true,
209
211
  missingIndexDetection: true,
210
- persistPath: process.env.NOORMME_METRICS_PATH || '.noormme/metrics.json'
212
+ persistPath: process.env.NOORMME_METRICS_PATH || '.noormme/metrics.json',
211
213
  }, this.logger);
212
214
  // Initialize SQLite-specific auto-optimization features
213
215
  if (this.config.dialect === 'sqlite') {
@@ -245,15 +247,15 @@ class NOORMME {
245
247
  const result = await this.sqliteAutoOptimizer.optimizeDatabase(this.db, config);
246
248
  if (result.appliedOptimizations.length > 0) {
247
249
  this.logger.info(`Applied ${result.appliedOptimizations.length} SQLite optimizations`);
248
- result.appliedOptimizations.forEach(opt => this.logger.debug(` ✓ ${opt}`));
250
+ result.appliedOptimizations.forEach((opt) => this.logger.debug(` ✓ ${opt}`));
249
251
  }
250
252
  if (result.recommendations.length > 0) {
251
253
  this.logger.info(`Generated ${result.recommendations.length} recommendations`);
252
- result.recommendations.forEach(rec => this.logger.debug(` 💡 ${rec}`));
254
+ result.recommendations.forEach((rec) => this.logger.debug(` 💡 ${rec}`));
253
255
  }
254
256
  if (result.warnings.length > 0) {
255
257
  this.logger.warn(`Found ${result.warnings.length} warnings`);
256
- result.warnings.forEach(warning => this.logger.warn(` ⚠️ ${warning}`));
258
+ result.warnings.forEach((warning) => this.logger.warn(` ⚠️ ${warning}`));
257
259
  }
258
260
  }
259
261
  catch (error) {
@@ -338,9 +340,9 @@ class NOORMME {
338
340
  if (!schemaInfo) {
339
341
  throw new Error('Schema not found. Please reinitialize NOORMME.');
340
342
  }
341
- const table = schemaInfo.tables.find(t => t.name === tableName);
343
+ const table = schemaInfo.tables.find((t) => t.name === tableName);
342
344
  if (!table) {
343
- const availableTables = schemaInfo.tables.map(t => t.name);
345
+ const availableTables = schemaInfo.tables.map((t) => t.name);
344
346
  throw new NoormError_js_1.TableNotFoundError(tableName, availableTables);
345
347
  }
346
348
  const repository = this.repositoryFactory.createRepository(table, schemaInfo.relationships);
@@ -411,7 +413,7 @@ class NOORMME {
411
413
  // Auto-refresh schema when changes detected
412
414
  this.schemaWatcher.onSchemaChange(async (changes) => {
413
415
  this.logger.info(`Schema changes detected: ${changes.length} changes`);
414
- changes.forEach(change => {
416
+ changes.forEach((change) => {
415
417
  this.logger.info(` - ${change.type}: ${change.table}`);
416
418
  });
417
419
  try {
@@ -452,12 +454,12 @@ class NOORMME {
452
454
  queryCount: this.logger.getQueryCount(),
453
455
  averageQueryTime: this.logger.getAverageQueryTime(),
454
456
  cacheHitRate: this.cacheManager.getHitRate(),
455
- repositoryCount: this.repositories.size
457
+ repositoryCount: this.repositories.size,
456
458
  };
457
459
  if (this.metricsCollector) {
458
460
  return {
459
461
  ...baseMetrics,
460
- ...this.metricsCollector.getPerformanceStats()
462
+ ...this.metricsCollector.getPerformanceStats(),
461
463
  };
462
464
  }
463
465
  return baseMetrics;
@@ -477,7 +479,7 @@ class NOORMME {
477
479
  enabled: true,
478
480
  slowQueryThreshold: options?.slowQueryThreshold || 1000,
479
481
  nPlusOneDetection: true,
480
- missingIndexDetection: true
482
+ missingIndexDetection: true,
481
483
  }, this.logger);
482
484
  this.logger.info('Query performance monitoring enabled');
483
485
  }
@@ -537,27 +539,27 @@ class NOORMME {
537
539
  includeViews: false,
538
540
  excludeTables: [],
539
541
  customTypeMappings: {},
540
- ...config.introspection
542
+ ...config.introspection,
541
543
  },
542
544
  cache: {
543
545
  ttl: 300000, // 5 minutes
544
546
  maxSize: 1000,
545
547
  strategy: 'lru',
546
- ...config.cache
548
+ ...config.cache,
547
549
  },
548
550
  logging: {
549
551
  level: 'info',
550
552
  enabled: true,
551
- ...config.logging
553
+ ...config.logging,
552
554
  },
553
555
  performance: {
554
556
  enableQueryOptimization: true,
555
557
  enableBatchLoading: true,
556
558
  maxBatchSize: 100,
557
- ...config.performance
559
+ ...config.performance,
558
560
  },
559
561
  agentic: config.agentic,
560
- automation: config.automation
562
+ automation: config.automation,
561
563
  };
562
564
  }
563
565
  /**
@@ -581,7 +583,7 @@ class NOORMME {
581
583
  default:
582
584
  throw new NoormError_js_1.NoormError(`Unsupported database protocol: ${url.protocol}`, {
583
585
  operation: 'connection_string_parsing',
584
- suggestion: 'Supported protocols: sqlite, postgresql, postgres, mysql'
586
+ suggestion: 'Supported protocols: sqlite, postgresql, postgres, mysql',
585
587
  });
586
588
  }
587
589
  if (dialect === 'sqlite') {
@@ -592,8 +594,8 @@ class NOORMME {
592
594
  host: '',
593
595
  port: 0,
594
596
  username: '',
595
- password: ''
596
- }
597
+ password: '',
598
+ },
597
599
  };
598
600
  }
599
601
  if (dialect === 'postgresql' || dialect === 'mysql') {
@@ -610,23 +612,31 @@ class NOORMME {
610
612
  }
611
613
  else {
612
614
  // For other SSL modes, we'll need more configuration
613
- ssl = { rejectUnauthorized: sslParam !== 'allow' && sslParam !== 'prefer' };
615
+ ssl = {
616
+ rejectUnauthorized: sslParam !== 'allow' && sslParam !== 'prefer',
617
+ };
614
618
  }
615
619
  }
616
620
  return {
617
621
  dialect,
618
622
  connection: {
619
623
  host: url.hostname || 'localhost',
620
- port: url.port ? parseInt(url.port, 10) : this.getDefaultPort(dialect),
624
+ port: url.port
625
+ ? parseInt(url.port, 10)
626
+ : this.getDefaultPort(dialect),
621
627
  database: url.pathname.replace(/^\//, ''),
622
628
  username: url.username || undefined,
623
629
  password: url.password || undefined,
624
630
  ssl,
625
631
  pool: {
626
- max: searchParams.get('pool_max') ? parseInt(searchParams.get('pool_max'), 10) : 10,
627
- min: searchParams.get('pool_min') ? parseInt(searchParams.get('pool_min'), 10) : 0,
628
- }
629
- }
632
+ max: searchParams.get('pool_max')
633
+ ? parseInt(searchParams.get('pool_max'), 10)
634
+ : 10,
635
+ min: searchParams.get('pool_min')
636
+ ? parseInt(searchParams.get('pool_min'), 10)
637
+ : 0,
638
+ },
639
+ },
630
640
  };
631
641
  }
632
642
  return {
@@ -637,14 +647,15 @@ class NOORMME {
637
647
  database: url.pathname.slice(1), // Remove leading slash
638
648
  username: url.username || '',
639
649
  password: url.password || '',
640
- ssl: url.searchParams.get('ssl') === 'true' || url.searchParams.get('sslmode') === 'require'
641
- }
650
+ ssl: url.searchParams.get('ssl') === 'true' ||
651
+ url.searchParams.get('sslmode') === 'require',
652
+ },
642
653
  };
643
654
  }
644
655
  catch (error) {
645
656
  throw new NoormError_js_1.NoormError(`Failed to parse connection string: ${error instanceof Error ? error.message : String(error)}`, {
646
657
  operation: 'connection_string_parsing',
647
- suggestion: 'Ensure connection string format is: protocol://username:password@host:port/database'
658
+ suggestion: 'Ensure connection string format is: protocol://username:password@host:port/database',
648
659
  });
649
660
  }
650
661
  }
@@ -653,10 +664,14 @@ class NOORMME {
653
664
  */
654
665
  getDefaultPort(dialect) {
655
666
  switch (dialect) {
656
- case 'sqlite': return 0;
657
- case 'postgresql': return 5432;
658
- case 'mysql': return 3306;
659
- default: return 0;
667
+ case 'sqlite':
668
+ return 0;
669
+ case 'postgresql':
670
+ return 5432;
671
+ case 'mysql':
672
+ return 3306;
673
+ default:
674
+ return 0;
660
675
  }
661
676
  }
662
677
  createDialect() {
@@ -664,7 +679,7 @@ class NOORMME {
664
679
  switch (dialect) {
665
680
  case 'sqlite':
666
681
  return new sqlite_dialect_js_1.SqliteDialect({
667
- database: new better_sqlite3_1.default(connection.database)
682
+ database: new better_sqlite3_1.default(connection.database),
668
683
  });
669
684
  case 'postgresql':
670
685
  return new postgresql_dialect_js_1.PostgresDialect({
@@ -678,7 +693,7 @@ class NOORMME {
678
693
  max: connection.pool?.max ?? 10,
679
694
  min: connection.pool?.min ?? 0,
680
695
  idleTimeoutMillis: connection.pool?.idleTimeoutMillis ?? 10000,
681
- }
696
+ },
682
697
  });
683
698
  default:
684
699
  throw new Error(`Unsupported dialect: ${dialect}`);