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
@@ -27,7 +27,9 @@ async function migrateTableData(sourceDb, targetDb, sourceTable, targetTable, so
27
27
  };
28
28
  }
29
29
  // Keyset pagination optimization: find a numeric primary key
30
- const pkColumn = sourceTable.columns.find(c => c.primaryKey && (c.type.toLowerCase().includes('int') || c.type.toLowerCase().includes('serial')))?.name;
30
+ const pkColumn = sourceTable.columns.find((c) => c.primaryKey &&
31
+ (c.type.toLowerCase().includes('int') ||
32
+ c.type.toLowerCase().includes('serial')))?.name;
31
33
  let lastId = null;
32
34
  // Calculate number of batches (approximate)
33
35
  const batchCount = Math.ceil(totalRows / options.batchSize);
@@ -108,7 +110,7 @@ function transformRows(rows, sourceTable, targetTable, sourceDialect, targetDial
108
110
  // Build transformation map
109
111
  const transformations = new Map();
110
112
  for (const sourceColumn of sourceTable.columns) {
111
- const targetColumn = targetTable.columns.find(c => c.name === sourceColumn.name);
113
+ const targetColumn = targetTable.columns.find((c) => c.name === sourceColumn.name);
112
114
  if (targetColumn) {
113
115
  const transform = (0, type_mapper_js_1.getValueTransformation)(sourceColumn.type, targetColumn.type, sourceDialect, targetDialect);
114
116
  if (transform) {
@@ -117,7 +119,7 @@ function transformRows(rows, sourceTable, targetTable, sourceDialect, targetDial
117
119
  }
118
120
  }
119
121
  // Transform rows
120
- return rows.map(row => {
122
+ return rows.map((row) => {
121
123
  const transformedRow = {};
122
124
  for (const [columnName, value] of Object.entries(row)) {
123
125
  const transform = transformations.get(columnName);
@@ -134,10 +136,7 @@ async function insertBatch(db, tableName, rows) {
134
136
  return;
135
137
  }
136
138
  // Use Kysely's batch insert
137
- await db
138
- .insertInto(tableName)
139
- .values(rows)
140
- .execute();
139
+ await db.insertInto(tableName).values(rows).execute();
141
140
  }
142
141
  /**
143
142
  * Calculate estimated time remaining
@@ -155,16 +154,16 @@ function calculateETA(startTime, completed, total) {
155
154
  * Migrate data for all tables in parallel
156
155
  */
157
156
  async function migrateAllTablesData(sourceDb, targetDb, sourceTables, targetTables, sourceDialect, targetDialect, options) {
158
- const targetTableMap = new Map(targetTables.map(t => [t.name, t]));
157
+ const targetTableMap = new Map(targetTables.map((t) => [t.name, t]));
159
158
  const results = [];
160
159
  // Filter tables that exist in both source and target
161
- const tablesToMigrate = sourceTables.filter(st => targetTableMap.has(st.name));
160
+ const tablesToMigrate = sourceTables.filter((st) => targetTableMap.has(st.name));
162
161
  if (options.parallel && options.parallelWorkers > 1) {
163
162
  // Migrate tables in parallel batches
164
163
  const workerCount = Math.min(options.parallelWorkers, tablesToMigrate.length);
165
164
  const chunks = chunkArray(tablesToMigrate, workerCount);
166
165
  for (const chunk of chunks) {
167
- const chunkResults = await Promise.all(chunk.map(sourceTable => {
166
+ const chunkResults = await Promise.all(chunk.map((sourceTable) => {
168
167
  const targetTable = targetTableMap.get(sourceTable.name);
169
168
  return migrateTableData(sourceDb, targetDb, sourceTable, targetTable, sourceDialect, targetDialect, options);
170
169
  }));
@@ -225,6 +224,8 @@ async function truncateTable(db, tableName, dialect) {
225
224
  else {
226
225
  await sql_js_1.sql.raw(`DELETE FROM "${tableName}"`).execute(db);
227
226
  // Reset autoincrement counter in SQLite
228
- await sql_js_1.sql.raw(`DELETE FROM sqlite_sequence WHERE name = '${tableName}'`).execute(db);
227
+ await sql_js_1.sql
228
+ .raw(`DELETE FROM sqlite_sequence WHERE name = '${tableName}'`)
229
+ .execute(db);
229
230
  }
230
231
  }
@@ -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
  }