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.
- package/README.md +84 -65
- package/dist/cjs/agentic/ActionJournal.js +13 -9
- package/dist/cjs/agentic/CapabilityManager.js +35 -21
- package/dist/cjs/agentic/CognitiveRepository.js +19 -9
- package/dist/cjs/agentic/ContextBuffer.js +24 -12
- package/dist/cjs/agentic/Cortex.js +11 -4
- package/dist/cjs/agentic/EpisodicMemory.js +7 -5
- package/dist/cjs/agentic/PersonaManager.js +16 -8
- package/dist/cjs/agentic/PolicyEnforcer.js +31 -12
- package/dist/cjs/agentic/ResourceMonitor.js +4 -4
- package/dist/cjs/agentic/SessionCompressor.js +22 -14
- package/dist/cjs/agentic/SessionManager.js +36 -18
- package/dist/cjs/agentic/VectorIndexer.js +22 -18
- package/dist/cjs/agentic/improvement/AblationEngine.js +22 -15
- package/dist/cjs/agentic/improvement/ActionRefiner.js +12 -10
- package/dist/cjs/agentic/improvement/ConflictResolver.js +5 -5
- package/dist/cjs/agentic/improvement/CortexJanitor.js +30 -9
- package/dist/cjs/agentic/improvement/CuriosityEngine.js +27 -23
- package/dist/cjs/agentic/improvement/EvolutionRitual.js +4 -4
- package/dist/cjs/agentic/improvement/EvolutionaryPilot.js +16 -6
- package/dist/cjs/agentic/improvement/GoalArchitect.d.ts +2 -2
- package/dist/cjs/agentic/improvement/GoalArchitect.js +20 -18
- package/dist/cjs/agentic/improvement/GovernanceManager.js +19 -11
- package/dist/cjs/agentic/improvement/HiveLink.js +22 -15
- package/dist/cjs/agentic/improvement/KnowledgeDistiller.js +48 -32
- package/dist/cjs/agentic/improvement/RecursiveReasoner.js +40 -17
- package/dist/cjs/agentic/improvement/ReflectionEngine.js +10 -8
- package/dist/cjs/agentic/improvement/RitualOrchestrator.js +28 -22
- package/dist/cjs/agentic/improvement/RuleEngine.js +22 -17
- package/dist/cjs/agentic/improvement/SelfEvolution.js +24 -18
- package/dist/cjs/agentic/improvement/SelfTestRegistry.js +18 -15
- package/dist/cjs/agentic/improvement/SkillSynthesizer.js +42 -27
- package/dist/cjs/agentic/improvement/SovereignMetrics.js +19 -17
- package/dist/cjs/agentic/improvement/StrategicPlanner.js +120 -55
- package/dist/cjs/agentic/telemetry/CognitiveSynthesizer.js +26 -12
- package/dist/cjs/agentic/telemetry/EventHarvester.js +3 -2
- package/dist/cjs/agentic/telemetry/ResearchAlchemist.js +5 -2
- package/dist/cjs/cache/cache-manager.js +7 -4
- package/dist/cjs/cli/commands/analyze.js +5 -4
- package/dist/cjs/cli/commands/generate.js +81 -44
- package/dist/cjs/cli/commands/init.js +7 -3
- package/dist/cjs/cli/commands/inspect.js +139 -36
- package/dist/cjs/cli/commands/migrate.js +5 -4
- package/dist/cjs/cli/commands/optimize.js +4 -4
- package/dist/cjs/cli/commands/status.js +9 -7
- package/dist/cjs/cli/commands/watch.js +7 -6
- package/dist/cjs/cli/index.js +2 -2
- package/dist/cjs/cli/ui/spinner.d.ts +15 -0
- package/dist/cjs/cli/ui/spinner.js +76 -0
- package/dist/cjs/dialect/database-introspector.js +3 -1
- package/dist/cjs/dialect/postgresql/postgresql-driver.js +3 -1
- package/dist/cjs/dialect/postgresql/postgresql-features.js +18 -8
- package/dist/cjs/dialect/postgresql/postgresql-introspector.js +2 -2
- package/dist/cjs/dialect/sqlite/sqlite-auto-indexer.js +47 -33
- package/dist/cjs/dialect/sqlite/sqlite-auto-optimizer.js +8 -7
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +2 -2
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +15 -12
- package/dist/cjs/edge-runtime/edge-config.js +21 -19
- package/dist/cjs/errors/NoormError.js +22 -20
- package/dist/cjs/helpers/agent-schema.js +2 -0
- package/dist/cjs/helpers/postgresql.js +7 -4
- package/dist/cjs/helpers/schema-evolution.js +31 -6
- package/dist/cjs/index.d.ts +3 -3
- package/dist/cjs/logging/logger.js +8 -4
- package/dist/cjs/migration/data_migrator.js +12 -11
- package/dist/cjs/migration/database_migration_manager.js +17 -13
- package/dist/cjs/migration/schema_differ.js +22 -14
- package/dist/cjs/migration/schema_introspector.js +8 -8
- package/dist/cjs/migration/type_mapper.js +68 -67
- package/dist/cjs/noormme.js +52 -37
- package/dist/cjs/performance/index.js +5 -5
- package/dist/cjs/performance/query-optimizer.js +26 -21
- package/dist/cjs/performance/services/cache-service.js +26 -16
- package/dist/cjs/performance/services/connection-factory.js +28 -23
- package/dist/cjs/performance/services/metrics-collector.js +41 -36
- package/dist/cjs/performance/utils/query-parser.js +15 -16
- package/dist/cjs/relationships/relationship-engine.js +10 -8
- package/dist/cjs/repository/repository-factory.js +97 -38
- package/dist/cjs/schema/core/coordinators/schema-discovery.coordinator.js +1 -3
- package/dist/cjs/schema/core/discovery/relationship-discovery.js +16 -16
- package/dist/cjs/schema/core/discovery/table-metadata-discovery.js +9 -9
- package/dist/cjs/schema/core/discovery/view-discovery.js +5 -4
- package/dist/cjs/schema/core/factories/discovery-factory.js +4 -4
- package/dist/cjs/schema/core/utils/name-generator.js +14 -5
- package/dist/cjs/schema/core/utils/type-mapper.js +24 -24
- package/dist/cjs/schema/dialects/postgresql/postgresql-discovery.coordinator.js +8 -7
- package/dist/cjs/schema/dialects/sqlite/discovery/sqlite-constraint-discovery.js +17 -15
- package/dist/cjs/schema/dialects/sqlite/discovery/sqlite-index-discovery.js +8 -8
- package/dist/cjs/schema/dialects/sqlite/introspection/sqlite-schema-introspector.js +6 -11
- package/dist/cjs/schema/dialects/sqlite/sqlite-discovery.coordinator.js +14 -13
- package/dist/cjs/schema/test/basic-schema-test.js +11 -9
- package/dist/cjs/schema/test/dialect-capabilities.test.js +6 -6
- package/dist/cjs/schema/test/discovery-factory.test.js +2 -2
- package/dist/cjs/schema/test/error-handling.test.js +8 -6
- package/dist/cjs/schema/test/integration.test.js +24 -18
- package/dist/cjs/schema/test/schema-discovery-coordinator.test.js +9 -9
- package/dist/cjs/schema/test/simple-schema-test.js +9 -9
- package/dist/cjs/schema/test/sqlite-discovery-coordinator.test.js +64 -48
- package/dist/cjs/schema/test/test-runner.js +3 -3
- package/dist/cjs/sqlite-migration/index.d.ts +2 -2
- package/dist/cjs/sqlite-migration/sqlite-migration-manager.js +21 -17
- package/dist/cjs/sqlite-migration/sqlite-migration-provider.js +38 -34
- package/dist/cjs/testing/test-utils.js +36 -34
- package/dist/cjs/types/index.d.ts +5 -2
- package/dist/cjs/types/index.js +6 -3
- package/dist/cjs/types/type-generator.js +46 -42
- package/dist/cjs/util/safe-sql-helpers.js +1 -1
- package/dist/cjs/util/security-validator.js +20 -9
- package/dist/cjs/utils/errorHelpers.js +20 -10
- package/dist/cjs/watch/schema-watcher.js +22 -23
- package/dist/esm/agentic/ActionJournal.js +13 -9
- package/dist/esm/agentic/CapabilityManager.js +35 -21
- package/dist/esm/agentic/CognitiveRepository.js +19 -9
- package/dist/esm/agentic/ContextBuffer.js +24 -12
- package/dist/esm/agentic/Cortex.js +11 -4
- package/dist/esm/agentic/EpisodicMemory.js +7 -5
- package/dist/esm/agentic/PersonaManager.js +16 -8
- package/dist/esm/agentic/PolicyEnforcer.js +31 -12
- package/dist/esm/agentic/ResourceMonitor.js +4 -4
- package/dist/esm/agentic/SessionCompressor.js +22 -14
- package/dist/esm/agentic/SessionManager.js +36 -18
- package/dist/esm/agentic/VectorIndexer.js +22 -18
- package/dist/esm/agentic/improvement/AblationEngine.js +22 -15
- package/dist/esm/agentic/improvement/ActionRefiner.js +12 -10
- package/dist/esm/agentic/improvement/ConflictResolver.js +5 -5
- package/dist/esm/agentic/improvement/CortexJanitor.js +30 -9
- package/dist/esm/agentic/improvement/CuriosityEngine.js +27 -23
- package/dist/esm/agentic/improvement/EvolutionRitual.js +4 -4
- package/dist/esm/agentic/improvement/EvolutionaryPilot.js +16 -6
- package/dist/esm/agentic/improvement/GoalArchitect.d.ts +2 -2
- package/dist/esm/agentic/improvement/GoalArchitect.js +20 -18
- package/dist/esm/agentic/improvement/GovernanceManager.js +19 -11
- package/dist/esm/agentic/improvement/HiveLink.js +22 -15
- package/dist/esm/agentic/improvement/KnowledgeDistiller.js +48 -32
- package/dist/esm/agentic/improvement/RecursiveReasoner.js +40 -17
- package/dist/esm/agentic/improvement/ReflectionEngine.js +10 -8
- package/dist/esm/agentic/improvement/RitualOrchestrator.js +28 -22
- package/dist/esm/agentic/improvement/RuleEngine.js +22 -17
- package/dist/esm/agentic/improvement/SelfEvolution.js +24 -18
- package/dist/esm/agentic/improvement/SelfTestRegistry.js +18 -15
- package/dist/esm/agentic/improvement/SkillSynthesizer.js +42 -27
- package/dist/esm/agentic/improvement/SovereignMetrics.js +19 -17
- package/dist/esm/agentic/improvement/StrategicPlanner.js +120 -55
- package/dist/esm/agentic/telemetry/CognitiveSynthesizer.js +26 -12
- package/dist/esm/agentic/telemetry/EventHarvester.js +3 -2
- package/dist/esm/agentic/telemetry/ResearchAlchemist.js +5 -2
- package/dist/esm/cache/cache-manager.js +7 -4
- package/dist/esm/cli/commands/analyze.js +5 -4
- package/dist/esm/cli/commands/generate.js +82 -45
- package/dist/esm/cli/commands/init.js +8 -4
- package/dist/esm/cli/commands/inspect.js +140 -37
- package/dist/esm/cli/commands/migrate.js +5 -4
- package/dist/esm/cli/commands/optimize.js +4 -4
- package/dist/esm/cli/commands/status.js +9 -7
- package/dist/esm/cli/commands/watch.js +7 -6
- package/dist/esm/cli/index.js +2 -2
- package/dist/esm/cli/ui/spinner.d.ts +15 -0
- package/dist/esm/cli/ui/spinner.js +70 -0
- package/dist/esm/dialect/database-introspector.js +3 -1
- package/dist/esm/dialect/postgresql/postgresql-driver.js +3 -1
- package/dist/esm/dialect/postgresql/postgresql-features.js +18 -8
- package/dist/esm/dialect/postgresql/postgresql-introspector.js +2 -2
- package/dist/esm/dialect/sqlite/sqlite-auto-indexer.js +47 -33
- package/dist/esm/dialect/sqlite/sqlite-auto-optimizer.js +8 -7
- package/dist/esm/dialect/sqlite/sqlite-driver.js +2 -2
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +15 -12
- package/dist/esm/dynamic/dynamic.js +1 -1
- package/dist/esm/edge-runtime/edge-config.js +21 -19
- package/dist/esm/errors/NoormError.js +22 -20
- package/dist/esm/helpers/agent-schema.js +2 -0
- package/dist/esm/helpers/postgresql.js +7 -4
- package/dist/esm/helpers/schema-evolution.js +31 -6
- package/dist/esm/index.d.ts +3 -3
- package/dist/esm/index.js +2 -2
- package/dist/esm/logging/logger.js +8 -4
- package/dist/esm/migration/data_migrator.js +12 -11
- package/dist/esm/migration/database_migration_manager.js +18 -14
- package/dist/esm/migration/schema_differ.js +22 -14
- package/dist/esm/migration/schema_introspector.js +8 -8
- package/dist/esm/migration/type_mapper.js +68 -67
- package/dist/esm/noormme.js +52 -37
- package/dist/esm/performance/index.js +5 -5
- package/dist/esm/performance/query-optimizer.js +26 -21
- package/dist/esm/performance/services/cache-service.js +26 -16
- package/dist/esm/performance/services/connection-factory.js +28 -23
- package/dist/esm/performance/services/metrics-collector.js +41 -36
- package/dist/esm/performance/utils/query-parser.js +15 -16
- package/dist/esm/raw-builder/sql.js +1 -1
- package/dist/esm/relationships/relationship-engine.js +10 -8
- package/dist/esm/repository/repository-factory.js +98 -39
- package/dist/esm/schema/builders/alter-table-add-index-builder.js +1 -1
- package/dist/esm/schema/builders/create-index-builder.js +2 -2
- package/dist/esm/schema/core/coordinators/schema-discovery.coordinator.js +1 -3
- package/dist/esm/schema/core/discovery/relationship-discovery.js +16 -16
- package/dist/esm/schema/core/discovery/table-metadata-discovery.js +9 -9
- package/dist/esm/schema/core/discovery/view-discovery.js +5 -4
- package/dist/esm/schema/core/factories/discovery-factory.js +4 -4
- package/dist/esm/schema/core/utils/name-generator.js +14 -5
- package/dist/esm/schema/core/utils/type-mapper.js +24 -24
- package/dist/esm/schema/dialects/postgresql/postgresql-discovery.coordinator.js +8 -7
- package/dist/esm/schema/dialects/sqlite/discovery/sqlite-constraint-discovery.js +17 -15
- package/dist/esm/schema/dialects/sqlite/discovery/sqlite-index-discovery.js +8 -8
- package/dist/esm/schema/dialects/sqlite/introspection/sqlite-schema-introspector.js +6 -11
- package/dist/esm/schema/dialects/sqlite/sqlite-discovery.coordinator.js +14 -13
- package/dist/esm/schema/test/basic-schema-test.js +11 -9
- package/dist/esm/schema/test/dialect-capabilities.test.js +6 -6
- package/dist/esm/schema/test/discovery-factory.test.js +2 -2
- package/dist/esm/schema/test/error-handling.test.js +8 -6
- package/dist/esm/schema/test/integration.test.js +24 -18
- package/dist/esm/schema/test/schema-discovery-coordinator.test.js +9 -9
- package/dist/esm/schema/test/simple-schema-test.js +9 -9
- package/dist/esm/schema/test/sqlite-discovery-coordinator.test.js +64 -48
- package/dist/esm/schema/test/test-runner.js +3 -3
- package/dist/esm/sqlite-migration/index.d.ts +2 -2
- package/dist/esm/sqlite-migration/sqlite-migration-manager.js +21 -17
- package/dist/esm/sqlite-migration/sqlite-migration-provider.js +38 -34
- package/dist/esm/testing/test-utils.js +36 -34
- package/dist/esm/types/index.d.ts +5 -2
- package/dist/esm/types/index.js +6 -3
- package/dist/esm/types/type-generator.js +46 -42
- package/dist/esm/util/safe-sql-helpers.js +1 -1
- package/dist/esm/util/security-validator.js +20 -9
- package/dist/esm/utils/errorHelpers.js +21 -11
- package/dist/esm/watch/schema-watcher.js +22 -23
- package/package.json +40 -44
|
@@ -8,39 +8,43 @@ const mockKysely = {
|
|
|
8
8
|
selectFrom: jest.fn().mockReturnThis(),
|
|
9
9
|
select: jest.fn().mockReturnThis(),
|
|
10
10
|
where: jest.fn().mockReturnThis(),
|
|
11
|
-
execute: jest.fn().mockResolvedValue([])
|
|
11
|
+
execute: jest.fn().mockResolvedValue([]),
|
|
12
12
|
};
|
|
13
13
|
// Mock discovery services
|
|
14
14
|
jest.mock('../core/discovery/table-metadata-discovery.js', () => ({
|
|
15
15
|
TableMetadataDiscovery: {
|
|
16
16
|
getInstance: jest.fn().mockReturnValue({
|
|
17
|
-
discoverTables: jest.fn().mockResolvedValue([])
|
|
18
|
-
})
|
|
19
|
-
}
|
|
17
|
+
discoverTables: jest.fn().mockResolvedValue([]),
|
|
18
|
+
}),
|
|
19
|
+
},
|
|
20
20
|
}));
|
|
21
21
|
jest.mock('../core/discovery/relationship-discovery.js', () => ({
|
|
22
22
|
RelationshipDiscovery: {
|
|
23
23
|
getInstance: jest.fn().mockReturnValue({
|
|
24
|
-
discoverRelationships: jest.fn().mockResolvedValue([])
|
|
25
|
-
})
|
|
26
|
-
}
|
|
24
|
+
discoverRelationships: jest.fn().mockResolvedValue([]),
|
|
25
|
+
}),
|
|
26
|
+
},
|
|
27
27
|
}));
|
|
28
28
|
jest.mock('../core/discovery/view-discovery.js', () => ({
|
|
29
29
|
ViewDiscovery: {
|
|
30
30
|
getInstance: jest.fn().mockReturnValue({
|
|
31
|
-
discoverViews: jest.fn().mockResolvedValue([])
|
|
32
|
-
})
|
|
33
|
-
}
|
|
31
|
+
discoverViews: jest.fn().mockResolvedValue([]),
|
|
32
|
+
}),
|
|
33
|
+
},
|
|
34
34
|
}));
|
|
35
35
|
jest.mock('../dialects/sqlite/discovery/sqlite-index-discovery.js', () => ({
|
|
36
36
|
SQLiteIndexDiscovery: {
|
|
37
37
|
getInstance: jest.fn().mockReturnValue({
|
|
38
38
|
discoverIndexes: jest.fn().mockResolvedValue([]),
|
|
39
39
|
discoverTableIndexes: jest.fn().mockResolvedValue([]),
|
|
40
|
-
getTableSize: jest
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
getTableSize: jest
|
|
41
|
+
.fn()
|
|
42
|
+
.mockResolvedValue({ pages: 0, size: 0, estimatedRows: 0 }),
|
|
43
|
+
analyzeIndexEfficiency: jest
|
|
44
|
+
.fn()
|
|
45
|
+
.mockReturnValue({ recommendations: [] }),
|
|
46
|
+
}),
|
|
47
|
+
},
|
|
44
48
|
}));
|
|
45
49
|
jest.mock('../dialects/sqlite/discovery/sqlite-constraint-discovery.js', () => ({
|
|
46
50
|
SQLiteConstraintDiscovery: {
|
|
@@ -49,9 +53,11 @@ jest.mock('../dialects/sqlite/discovery/sqlite-constraint-discovery.js', () => (
|
|
|
49
53
|
isForeignKeySupportEnabled: jest.fn().mockResolvedValue(true),
|
|
50
54
|
getForeignKeyInfo: jest.fn().mockResolvedValue([]),
|
|
51
55
|
discoverTableConstraints: jest.fn().mockResolvedValue([]),
|
|
52
|
-
analyzeConstraintCompatibility: jest
|
|
53
|
-
|
|
54
|
-
|
|
56
|
+
analyzeConstraintCompatibility: jest
|
|
57
|
+
.fn()
|
|
58
|
+
.mockReturnValue({ recommendations: [], compatibilityIssues: [] }),
|
|
59
|
+
}),
|
|
60
|
+
},
|
|
55
61
|
}));
|
|
56
62
|
describe('Schema Strategy Integration Tests', () => {
|
|
57
63
|
let coordinator;
|
|
@@ -139,7 +145,7 @@ describe('Schema Strategy Integration Tests', () => {
|
|
|
139
145
|
selectFrom: jest.fn().mockReturnThis(),
|
|
140
146
|
select: jest.fn().mockReturnThis(),
|
|
141
147
|
where: jest.fn().mockReturnThis(),
|
|
142
|
-
execute: jest.fn().mockResolvedValue([])
|
|
148
|
+
execute: jest.fn().mockResolvedValue([]),
|
|
143
149
|
};
|
|
144
150
|
const result = await coordinator.discoverSchema(mockKyselyWithError, {}, 'sqlite');
|
|
145
151
|
expect(result).toBeDefined();
|
|
@@ -6,7 +6,7 @@ const mockKysely = {
|
|
|
6
6
|
selectFrom: jest.fn(),
|
|
7
7
|
select: jest.fn(),
|
|
8
8
|
where: jest.fn(),
|
|
9
|
-
execute: jest.fn()
|
|
9
|
+
execute: jest.fn(),
|
|
10
10
|
};
|
|
11
11
|
// Mock DiscoveryFactory
|
|
12
12
|
const mockFactory = {
|
|
@@ -19,7 +19,7 @@ const mockFactory = {
|
|
|
19
19
|
createDiscoveryServices: jest.fn(),
|
|
20
20
|
getDialectCapabilities: jest.fn(),
|
|
21
21
|
isDialectSupported: jest.fn(),
|
|
22
|
-
getSupportedDialects: jest.fn()
|
|
22
|
+
getSupportedDialects: jest.fn(),
|
|
23
23
|
};
|
|
24
24
|
// Mock SQLite coordinator
|
|
25
25
|
const mockSQLiteCoordinator = {
|
|
@@ -32,7 +32,7 @@ const mockSQLiteCoordinator = {
|
|
|
32
32
|
viewDiscovery: {},
|
|
33
33
|
indexDiscovery: {},
|
|
34
34
|
constraintDiscovery: {},
|
|
35
|
-
enhanceTablesWithSQLiteMetadata: jest.fn()
|
|
35
|
+
enhanceTablesWithSQLiteMetadata: jest.fn(),
|
|
36
36
|
};
|
|
37
37
|
describe('SchemaDiscoveryCoordinator', () => {
|
|
38
38
|
let coordinator;
|
|
@@ -47,7 +47,7 @@ describe('SchemaDiscoveryCoordinator', () => {
|
|
|
47
47
|
relationshipDiscovery: {},
|
|
48
48
|
viewDiscovery: {},
|
|
49
49
|
indexDiscovery: {},
|
|
50
|
-
constraintDiscovery: {}
|
|
50
|
+
constraintDiscovery: {},
|
|
51
51
|
});
|
|
52
52
|
mockFactory.getDialectCapabilities.mockReturnValue({
|
|
53
53
|
supportsViews: true,
|
|
@@ -55,7 +55,7 @@ describe('SchemaDiscoveryCoordinator', () => {
|
|
|
55
55
|
supportsConstraints: true,
|
|
56
56
|
supportsForeignKeys: true,
|
|
57
57
|
supportsCheckConstraints: true,
|
|
58
|
-
supportsDeferredConstraints: false
|
|
58
|
+
supportsDeferredConstraints: false,
|
|
59
59
|
});
|
|
60
60
|
mockFactory.isDialectSupported.mockReturnValue(true);
|
|
61
61
|
coordinator = SchemaDiscoveryCoordinator.getInstance();
|
|
@@ -78,7 +78,7 @@ describe('SchemaDiscoveryCoordinator', () => {
|
|
|
78
78
|
views: [],
|
|
79
79
|
indexes: [],
|
|
80
80
|
constraints: [],
|
|
81
|
-
relationships: []
|
|
81
|
+
relationships: [],
|
|
82
82
|
};
|
|
83
83
|
mockSQLiteCoordinator.discoverSchema.mockResolvedValue(mockSchemaInfo);
|
|
84
84
|
const result = await coordinator.discoverSchema(mockKysely, {}, 'sqlite');
|
|
@@ -112,7 +112,7 @@ describe('SchemaDiscoveryCoordinator', () => {
|
|
|
112
112
|
supportsConstraints: true,
|
|
113
113
|
supportsForeignKeys: true,
|
|
114
114
|
supportsCheckConstraints: true,
|
|
115
|
-
supportsDeferredConstraints: false
|
|
115
|
+
supportsDeferredConstraints: false,
|
|
116
116
|
});
|
|
117
117
|
});
|
|
118
118
|
});
|
|
@@ -121,14 +121,14 @@ describe('SchemaDiscoveryCoordinator', () => {
|
|
|
121
121
|
const config = {
|
|
122
122
|
excludeTables: ['migrations'],
|
|
123
123
|
includeViews: true,
|
|
124
|
-
customTypeMappings: {
|
|
124
|
+
customTypeMappings: { jsonb: 'Record<string, any>' },
|
|
125
125
|
};
|
|
126
126
|
const mockSchemaInfo = {
|
|
127
127
|
tables: [],
|
|
128
128
|
views: [],
|
|
129
129
|
indexes: [],
|
|
130
130
|
constraints: [],
|
|
131
|
-
relationships: []
|
|
131
|
+
relationships: [],
|
|
132
132
|
};
|
|
133
133
|
mockSQLiteCoordinator.discoverSchema.mockResolvedValue(mockSchemaInfo);
|
|
134
134
|
await coordinator.discoverSchema(mockKysely, config, 'sqlite');
|
|
@@ -9,52 +9,52 @@ describe('Schema Strategy - Basic Tests', () => {
|
|
|
9
9
|
test('should verify DiscoveryFactory exists', () => {
|
|
10
10
|
// Test that we can import the DiscoveryFactory
|
|
11
11
|
expect(() => {
|
|
12
|
-
const { DiscoveryFactory } = require('../core/factories/discovery-factory.js');
|
|
12
|
+
const { DiscoveryFactory, } = require('../core/factories/discovery-factory.js');
|
|
13
13
|
return DiscoveryFactory;
|
|
14
14
|
}).not.toThrow();
|
|
15
15
|
});
|
|
16
16
|
test('should verify SchemaDiscoveryCoordinator exists', () => {
|
|
17
17
|
// Test that we can import the SchemaDiscoveryCoordinator
|
|
18
18
|
expect(() => {
|
|
19
|
-
const { SchemaDiscoveryCoordinator } = require('../core/coordinators/schema-discovery.coordinator.js');
|
|
19
|
+
const { SchemaDiscoveryCoordinator, } = require('../core/coordinators/schema-discovery.coordinator.js');
|
|
20
20
|
return SchemaDiscoveryCoordinator;
|
|
21
21
|
}).not.toThrow();
|
|
22
22
|
});
|
|
23
23
|
test('should verify SQLite coordinator exists', () => {
|
|
24
24
|
// Test that we can import the SQLite coordinator
|
|
25
25
|
expect(() => {
|
|
26
|
-
const { SQLiteDiscoveryCoordinator } = require('../dialects/sqlite/sqlite-discovery.coordinator.js');
|
|
26
|
+
const { SQLiteDiscoveryCoordinator, } = require('../dialects/sqlite/sqlite-discovery.coordinator.js');
|
|
27
27
|
return SQLiteDiscoveryCoordinator;
|
|
28
28
|
}).not.toThrow();
|
|
29
29
|
});
|
|
30
30
|
test('should verify singleton pattern works for DiscoveryFactory', () => {
|
|
31
|
-
const { DiscoveryFactory } = require('../core/factories/discovery-factory.js');
|
|
31
|
+
const { DiscoveryFactory, } = require('../core/factories/discovery-factory.js');
|
|
32
32
|
const instance1 = DiscoveryFactory.getInstance();
|
|
33
33
|
const instance2 = DiscoveryFactory.getInstance();
|
|
34
34
|
expect(instance1).toBe(instance2);
|
|
35
35
|
});
|
|
36
36
|
test('should verify singleton pattern works for SchemaDiscoveryCoordinator', () => {
|
|
37
|
-
const { SchemaDiscoveryCoordinator } = require('../core/coordinators/schema-discovery.coordinator.js');
|
|
37
|
+
const { SchemaDiscoveryCoordinator, } = require('../core/coordinators/schema-discovery.coordinator.js');
|
|
38
38
|
const instance1 = SchemaDiscoveryCoordinator.getInstance();
|
|
39
39
|
const instance2 = SchemaDiscoveryCoordinator.getInstance();
|
|
40
40
|
expect(instance1).toBe(instance2);
|
|
41
41
|
});
|
|
42
42
|
test('should verify dialect support', () => {
|
|
43
|
-
const { DiscoveryFactory } = require('../core/factories/discovery-factory.js');
|
|
43
|
+
const { DiscoveryFactory, } = require('../core/factories/discovery-factory.js');
|
|
44
44
|
const factory = DiscoveryFactory.getInstance();
|
|
45
45
|
expect(factory.isDialectSupported('postgresql')).toBe(true);
|
|
46
46
|
expect(factory.isDialectSupported('sqlite')).toBe(true);
|
|
47
47
|
expect(factory.isDialectSupported('mysql')).toBe(false);
|
|
48
48
|
});
|
|
49
49
|
test('should verify error handling for unsupported dialects', () => {
|
|
50
|
-
const { DiscoveryFactory } = require('../core/factories/discovery-factory.js');
|
|
50
|
+
const { DiscoveryFactory, } = require('../core/factories/discovery-factory.js');
|
|
51
51
|
const factory = DiscoveryFactory.getInstance();
|
|
52
52
|
expect(() => {
|
|
53
53
|
factory.createIndexDiscovery('oracle');
|
|
54
54
|
}).toThrow('Unsupported dialect');
|
|
55
55
|
});
|
|
56
56
|
test('should verify PostgreSQL capabilities', () => {
|
|
57
|
-
const { DiscoveryFactory } = require('../core/factories/discovery-factory.js');
|
|
57
|
+
const { DiscoveryFactory, } = require('../core/factories/discovery-factory.js');
|
|
58
58
|
const factory = DiscoveryFactory.getInstance();
|
|
59
59
|
const capabilities = factory.getDialectCapabilities('postgresql');
|
|
60
60
|
expect(capabilities.supportsViews).toBe(true);
|
|
@@ -65,7 +65,7 @@ describe('Schema Strategy - Basic Tests', () => {
|
|
|
65
65
|
expect(capabilities.supportsDeferredConstraints).toBe(true);
|
|
66
66
|
});
|
|
67
67
|
test('should verify SQLite capabilities', () => {
|
|
68
|
-
const { DiscoveryFactory } = require('../core/factories/discovery-factory.js');
|
|
68
|
+
const { DiscoveryFactory, } = require('../core/factories/discovery-factory.js');
|
|
69
69
|
const factory = DiscoveryFactory.getInstance();
|
|
70
70
|
const capabilities = factory.getDialectCapabilities('sqlite');
|
|
71
71
|
expect(capabilities.supportsViews).toBe(true);
|
|
@@ -10,15 +10,15 @@ import { SQLiteConstraintDiscovery } from '../dialects/sqlite/discovery/sqlite-c
|
|
|
10
10
|
const mockKysely = {
|
|
11
11
|
selectFrom: jest.fn(),
|
|
12
12
|
select: jest.fn(),
|
|
13
|
-
execute: jest.fn()
|
|
13
|
+
execute: jest.fn(),
|
|
14
14
|
};
|
|
15
15
|
// Mock DatabaseIntrospector
|
|
16
16
|
jest.mock('../../dialect/database-introspector.js', () => ({
|
|
17
17
|
DatabaseIntrospector: jest.fn().mockImplementation(() => ({
|
|
18
18
|
getTables: jest.fn(),
|
|
19
19
|
getTableMetadata: jest.fn(),
|
|
20
|
-
getViews: jest.fn()
|
|
21
|
-
}))
|
|
20
|
+
getViews: jest.fn(),
|
|
21
|
+
})),
|
|
22
22
|
}));
|
|
23
23
|
const mockTableData = [
|
|
24
24
|
{
|
|
@@ -26,19 +26,19 @@ const mockTableData = [
|
|
|
26
26
|
columns: [
|
|
27
27
|
{ name: 'id', type: 'INTEGER', isPrimaryKey: true, isNullable: false },
|
|
28
28
|
{ name: 'email', type: 'TEXT', isNullable: false },
|
|
29
|
-
{ name: 'created_at', type: 'DATETIME', isNullable: false }
|
|
29
|
+
{ name: 'created_at', type: 'DATETIME', isNullable: false },
|
|
30
30
|
],
|
|
31
|
-
primaryKey: ['id']
|
|
31
|
+
primaryKey: ['id'],
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
name: 'posts',
|
|
35
35
|
columns: [
|
|
36
36
|
{ name: 'id', type: 'INTEGER', isPrimaryKey: true, isNullable: false },
|
|
37
37
|
{ name: 'user_id', type: 'INTEGER', isNullable: false },
|
|
38
|
-
{ name: 'title', type: 'TEXT', isNullable: false }
|
|
38
|
+
{ name: 'title', type: 'TEXT', isNullable: false },
|
|
39
39
|
],
|
|
40
|
-
primaryKey: ['id']
|
|
41
|
-
}
|
|
40
|
+
primaryKey: ['id'],
|
|
41
|
+
},
|
|
42
42
|
];
|
|
43
43
|
const mockIndexData = [
|
|
44
44
|
{
|
|
@@ -46,23 +46,23 @@ const mockIndexData = [
|
|
|
46
46
|
columns: ['email'],
|
|
47
47
|
unique: true,
|
|
48
48
|
isPrimary: false,
|
|
49
|
-
definition: 'CREATE UNIQUE INDEX users_email_idx ON users(email)'
|
|
49
|
+
definition: 'CREATE UNIQUE INDEX users_email_idx ON users(email)',
|
|
50
50
|
},
|
|
51
51
|
{
|
|
52
52
|
name: 'posts_user_id_idx',
|
|
53
53
|
columns: ['user_id'],
|
|
54
54
|
unique: false,
|
|
55
55
|
isPrimary: false,
|
|
56
|
-
definition: 'CREATE INDEX posts_user_id_idx ON posts(user_id)'
|
|
57
|
-
}
|
|
56
|
+
definition: 'CREATE INDEX posts_user_id_idx ON posts(user_id)',
|
|
57
|
+
},
|
|
58
58
|
];
|
|
59
59
|
const mockConstraintData = [
|
|
60
60
|
{
|
|
61
61
|
name: 'users_email_check',
|
|
62
62
|
type: 'CHECK',
|
|
63
63
|
definition: "email LIKE '%@%'",
|
|
64
|
-
valid: true
|
|
65
|
-
}
|
|
64
|
+
valid: true,
|
|
65
|
+
},
|
|
66
66
|
];
|
|
67
67
|
const mockForeignKeyData = [
|
|
68
68
|
{
|
|
@@ -71,8 +71,8 @@ const mockForeignKeyData = [
|
|
|
71
71
|
referencedTable: 'users',
|
|
72
72
|
referencedColumn: 'id',
|
|
73
73
|
onDelete: 'CASCADE',
|
|
74
|
-
onUpdate: 'NO ACTION'
|
|
75
|
-
}
|
|
74
|
+
onUpdate: 'NO ACTION',
|
|
75
|
+
},
|
|
76
76
|
];
|
|
77
77
|
const mockViewData = [
|
|
78
78
|
{
|
|
@@ -80,9 +80,9 @@ const mockViewData = [
|
|
|
80
80
|
definition: 'SELECT u.email, p.title FROM users u JOIN posts p ON u.id = p.user_id',
|
|
81
81
|
columns: [
|
|
82
82
|
{ name: 'email', type: 'TEXT' },
|
|
83
|
-
{ name: 'title', type: 'TEXT' }
|
|
84
|
-
]
|
|
85
|
-
}
|
|
83
|
+
{ name: 'title', type: 'TEXT' },
|
|
84
|
+
],
|
|
85
|
+
},
|
|
86
86
|
];
|
|
87
87
|
const mockRelationshipData = [
|
|
88
88
|
{
|
|
@@ -90,13 +90,13 @@ const mockRelationshipData = [
|
|
|
90
90
|
fromColumn: 'user_id',
|
|
91
91
|
toTable: 'users',
|
|
92
92
|
toColumn: 'id',
|
|
93
|
-
type: 'many-to-one'
|
|
94
|
-
}
|
|
93
|
+
type: 'many-to-one',
|
|
94
|
+
},
|
|
95
95
|
];
|
|
96
96
|
const mockTableSize = {
|
|
97
97
|
pages: 10,
|
|
98
98
|
size: 40960,
|
|
99
|
-
estimatedRows: 100
|
|
99
|
+
estimatedRows: 100,
|
|
100
100
|
};
|
|
101
101
|
describe('SQLiteDiscoveryCoordinator', () => {
|
|
102
102
|
let coordinator;
|
|
@@ -111,35 +111,45 @@ describe('SQLiteDiscoveryCoordinator', () => {
|
|
|
111
111
|
SQLiteDiscoveryCoordinator.instance = undefined;
|
|
112
112
|
// Create mocks
|
|
113
113
|
mockTableDiscovery = {
|
|
114
|
-
discoverTables: jest.fn().mockResolvedValue(mockTableData)
|
|
114
|
+
discoverTables: jest.fn().mockResolvedValue(mockTableData),
|
|
115
115
|
};
|
|
116
116
|
mockRelationshipDiscovery = {
|
|
117
|
-
discoverRelationships: jest.fn().mockResolvedValue(mockRelationshipData)
|
|
117
|
+
discoverRelationships: jest.fn().mockResolvedValue(mockRelationshipData),
|
|
118
118
|
};
|
|
119
119
|
mockViewDiscovery = {
|
|
120
|
-
discoverViews: jest.fn().mockResolvedValue(mockViewData)
|
|
120
|
+
discoverViews: jest.fn().mockResolvedValue(mockViewData),
|
|
121
121
|
};
|
|
122
122
|
mockIndexDiscovery = {
|
|
123
123
|
discoverTableIndexes: jest.fn().mockResolvedValue(mockIndexData),
|
|
124
124
|
getTableSize: jest.fn().mockResolvedValue(mockTableSize),
|
|
125
125
|
analyzeIndexEfficiency: jest.fn().mockReturnValue({
|
|
126
|
-
recommendations: [
|
|
127
|
-
|
|
126
|
+
recommendations: [
|
|
127
|
+
'Consider using covering indexes for better performance',
|
|
128
|
+
],
|
|
129
|
+
}),
|
|
128
130
|
};
|
|
129
131
|
mockConstraintDiscovery = {
|
|
130
132
|
isForeignKeySupportEnabled: jest.fn().mockResolvedValue(true),
|
|
131
133
|
discoverTableConstraints: jest.fn().mockResolvedValue(mockConstraintData),
|
|
132
134
|
getForeignKeyInfo: jest.fn().mockResolvedValue(mockForeignKeyData),
|
|
133
135
|
analyzeConstraintCompatibility: jest.fn().mockReturnValue({
|
|
134
|
-
recommendations: ['Consider optimizing constraint definitions']
|
|
135
|
-
})
|
|
136
|
+
recommendations: ['Consider optimizing constraint definitions'],
|
|
137
|
+
}),
|
|
136
138
|
};
|
|
137
139
|
// Mock static methods
|
|
138
|
-
jest
|
|
139
|
-
|
|
140
|
+
jest
|
|
141
|
+
.spyOn(TableMetadataDiscovery, 'getInstance')
|
|
142
|
+
.mockReturnValue(mockTableDiscovery);
|
|
143
|
+
jest
|
|
144
|
+
.spyOn(RelationshipDiscovery, 'getInstance')
|
|
145
|
+
.mockReturnValue(mockRelationshipDiscovery);
|
|
140
146
|
jest.spyOn(ViewDiscovery, 'getInstance').mockReturnValue(mockViewDiscovery);
|
|
141
|
-
jest
|
|
142
|
-
|
|
147
|
+
jest
|
|
148
|
+
.spyOn(SQLiteIndexDiscovery, 'getInstance')
|
|
149
|
+
.mockReturnValue(mockIndexDiscovery);
|
|
150
|
+
jest
|
|
151
|
+
.spyOn(SQLiteConstraintDiscovery, 'getInstance')
|
|
152
|
+
.mockReturnValue(mockConstraintDiscovery);
|
|
143
153
|
coordinator = SQLiteDiscoveryCoordinator.getInstance();
|
|
144
154
|
});
|
|
145
155
|
afterEach(() => {
|
|
@@ -189,8 +199,8 @@ describe('SQLiteDiscoveryCoordinator', () => {
|
|
|
189
199
|
name: 'users_email_idx',
|
|
190
200
|
columns: ['email'],
|
|
191
201
|
unique: true,
|
|
192
|
-
definition: 'CREATE UNIQUE INDEX users_email_idx ON users(email)'
|
|
193
|
-
})
|
|
202
|
+
definition: 'CREATE UNIQUE INDEX users_email_idx ON users(email)',
|
|
203
|
+
}),
|
|
194
204
|
]),
|
|
195
205
|
constraints: mockConstraintData,
|
|
196
206
|
foreignKeys: expect.arrayContaining([
|
|
@@ -199,10 +209,10 @@ describe('SQLiteDiscoveryCoordinator', () => {
|
|
|
199
209
|
column: 'user_id',
|
|
200
210
|
referencedTable: 'users',
|
|
201
211
|
referencedColumn: 'id',
|
|
202
|
-
onDelete: 'CASCADE'
|
|
203
|
-
})
|
|
212
|
+
onDelete: 'CASCADE',
|
|
213
|
+
}),
|
|
204
214
|
]),
|
|
205
|
-
tableSize: mockTableSize
|
|
215
|
+
tableSize: mockTableSize,
|
|
206
216
|
});
|
|
207
217
|
});
|
|
208
218
|
it('should skip views when includeViews is false', async () => {
|
|
@@ -218,7 +228,7 @@ describe('SQLiteDiscoveryCoordinator', () => {
|
|
|
218
228
|
name: 'users',
|
|
219
229
|
indexes: [],
|
|
220
230
|
foreignKeys: [],
|
|
221
|
-
tableSize: undefined
|
|
231
|
+
tableSize: undefined,
|
|
222
232
|
});
|
|
223
233
|
});
|
|
224
234
|
it('should handle constraint discovery errors gracefully', async () => {
|
|
@@ -248,7 +258,7 @@ describe('SQLiteDiscoveryCoordinator', () => {
|
|
|
248
258
|
supportsAutoIncrement: true,
|
|
249
259
|
supportsRowId: true,
|
|
250
260
|
supportsTriggers: true,
|
|
251
|
-
supportsFullTextSearch: true
|
|
261
|
+
supportsFullTextSearch: true,
|
|
252
262
|
});
|
|
253
263
|
});
|
|
254
264
|
});
|
|
@@ -257,7 +267,7 @@ describe('SQLiteDiscoveryCoordinator', () => {
|
|
|
257
267
|
mockConstraintDiscovery.isForeignKeySupportEnabled.mockResolvedValue(false);
|
|
258
268
|
const tables = [
|
|
259
269
|
{ name: 'users', primaryKey: ['id'], indexes: [], foreignKeys: [] },
|
|
260
|
-
{ name: 'posts', primaryKey: ['id'], indexes: [], foreignKeys: [] }
|
|
270
|
+
{ name: 'posts', primaryKey: ['id'], indexes: [], foreignKeys: [] },
|
|
261
271
|
];
|
|
262
272
|
const recommendations = await coordinator.getRecommendations(mockKysely, tables);
|
|
263
273
|
expect(mockConstraintDiscovery.isForeignKeySupportEnabled).toHaveBeenCalled();
|
|
@@ -271,14 +281,16 @@ describe('SQLiteDiscoveryCoordinator', () => {
|
|
|
271
281
|
});
|
|
272
282
|
it('should recommend enabling foreign keys when disabled', async () => {
|
|
273
283
|
mockConstraintDiscovery.isForeignKeySupportEnabled.mockResolvedValue(false);
|
|
274
|
-
const tables = [
|
|
284
|
+
const tables = [
|
|
285
|
+
{ name: 'users', primaryKey: ['id'], indexes: [], foreignKeys: [] },
|
|
286
|
+
];
|
|
275
287
|
const recommendations = await coordinator.getRecommendations(mockKysely, tables);
|
|
276
288
|
expect(recommendations).toContain('Consider enabling foreign key support with PRAGMA foreign_keys = ON for better data integrity');
|
|
277
289
|
});
|
|
278
290
|
it('should recommend primary key for tables without one', async () => {
|
|
279
291
|
const tables = [
|
|
280
292
|
{ name: 'users', primaryKey: [], indexes: [], foreignKeys: [] },
|
|
281
|
-
{ name: 'posts', primaryKey: ['id'], indexes: [], foreignKeys: [] }
|
|
293
|
+
{ name: 'posts', primaryKey: ['id'], indexes: [], foreignKeys: [] },
|
|
282
294
|
];
|
|
283
295
|
const recommendations = await coordinator.getRecommendations(mockKysely, tables);
|
|
284
296
|
expect(recommendations).toContain('Table users should have a primary key for better performance');
|
|
@@ -286,9 +298,13 @@ describe('SQLiteDiscoveryCoordinator', () => {
|
|
|
286
298
|
it('should handle recommendation errors gracefully', async () => {
|
|
287
299
|
mockConstraintDiscovery.isForeignKeySupportEnabled.mockResolvedValue(false);
|
|
288
300
|
mockIndexDiscovery.discoverTableIndexes.mockRejectedValue(new Error('Index analysis failed'));
|
|
289
|
-
const tables = [
|
|
301
|
+
const tables = [
|
|
302
|
+
{ name: 'users', primaryKey: ['id'], indexes: [], foreignKeys: [] },
|
|
303
|
+
];
|
|
290
304
|
const recommendations = await coordinator.getRecommendations(mockKysely, tables);
|
|
291
|
-
expect(recommendations).toEqual([
|
|
305
|
+
expect(recommendations).toEqual([
|
|
306
|
+
'Consider enabling foreign key support with PRAGMA foreign_keys = ON for better data integrity',
|
|
307
|
+
]);
|
|
292
308
|
});
|
|
293
309
|
it('should handle empty tables array', async () => {
|
|
294
310
|
const recommendations = await coordinator.getRecommendations(mockKysely, []);
|
|
@@ -304,7 +320,7 @@ describe('SQLiteDiscoveryCoordinator', () => {
|
|
|
304
320
|
'Use WAL mode for better concurrency: PRAGMA journal_mode = WAL',
|
|
305
321
|
'Set appropriate cache size: PRAGMA cache_size = -64000',
|
|
306
322
|
'Enable query optimization: PRAGMA optimize',
|
|
307
|
-
'Consider using prepared statements for better performance'
|
|
323
|
+
'Consider using prepared statements for better performance',
|
|
308
324
|
]);
|
|
309
325
|
});
|
|
310
326
|
});
|
|
@@ -350,14 +366,14 @@ describe('SQLiteDiscoveryCoordinator', () => {
|
|
|
350
366
|
const config = {
|
|
351
367
|
excludeTables: ['temp_*'],
|
|
352
368
|
includeViews: true,
|
|
353
|
-
customTypeMappings: {
|
|
369
|
+
customTypeMappings: { INTEGER: 'number' },
|
|
354
370
|
};
|
|
355
371
|
await coordinator.discoverSchema(mockKysely, config);
|
|
356
372
|
expect(mockTableDiscovery.discoverTables).toHaveBeenCalledWith(expect.any(Object), // DatabaseIntrospector
|
|
357
373
|
{
|
|
358
374
|
excludeTables: ['temp_*'],
|
|
359
375
|
includeViews: true,
|
|
360
|
-
customTypeMappings: {
|
|
376
|
+
customTypeMappings: { INTEGER: 'number' },
|
|
361
377
|
});
|
|
362
378
|
});
|
|
363
379
|
it('should use default configuration when none provided', async () => {
|
|
@@ -365,7 +381,7 @@ describe('SQLiteDiscoveryCoordinator', () => {
|
|
|
365
381
|
expect(mockTableDiscovery.discoverTables).toHaveBeenCalledWith(expect.any(Object), {
|
|
366
382
|
excludeTables: undefined,
|
|
367
383
|
includeViews: undefined,
|
|
368
|
-
customTypeMappings: undefined
|
|
384
|
+
customTypeMappings: undefined,
|
|
369
385
|
});
|
|
370
386
|
});
|
|
371
387
|
});
|
|
@@ -76,7 +76,7 @@ export default {
|
|
|
76
76
|
'sqlite-discovery-coordinator.test.ts',
|
|
77
77
|
'dialect-capabilities.test.ts',
|
|
78
78
|
'error-handling.test.ts',
|
|
79
|
-
'integration.test.ts'
|
|
79
|
+
'integration.test.ts',
|
|
80
80
|
],
|
|
81
81
|
coverage: {
|
|
82
82
|
factory: '100%',
|
|
@@ -84,6 +84,6 @@ export default {
|
|
|
84
84
|
sqlite: '100%',
|
|
85
85
|
capabilities: '100%',
|
|
86
86
|
errorHandling: '100%',
|
|
87
|
-
integration: '100%'
|
|
88
|
-
}
|
|
87
|
+
integration: '100%',
|
|
88
|
+
},
|
|
89
89
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { SQLiteMigrationManager } from './sqlite-migration-manager.js';
|
|
2
2
|
export { SQLiteMigrationProvider } from './sqlite-migration-provider.js';
|
|
3
|
-
export type { SQLiteMigrationConfig, SQLiteMigrationResult, SQLiteMigrationPlan } from './sqlite-migration-manager.js';
|
|
4
|
-
export type { SQLiteMigrationFile, SQLiteMigrationProviderConfig } from './sqlite-migration-provider.js';
|
|
3
|
+
export type { SQLiteMigrationConfig, SQLiteMigrationResult, SQLiteMigrationPlan, } from './sqlite-migration-manager.js';
|
|
4
|
+
export type { SQLiteMigrationFile, SQLiteMigrationProviderConfig, } from './sqlite-migration-provider.js';
|
|
5
5
|
export declare function createSQLiteMigrationManager(db: any, config?: Partial<import('./sqlite-migration-manager.js').SQLiteMigrationConfig>, logger?: import('../logging/logger.js').Logger): Promise<import('./sqlite-migration-manager.js').SQLiteMigrationManager>;
|
|
6
6
|
export declare function createSQLiteMigrationProvider(config?: Partial<import('./sqlite-migration-provider.js').SQLiteMigrationProviderConfig>, logger?: import('../logging/logger.js').Logger): Promise<import('./sqlite-migration-provider.js').SQLiteMigrationProvider>;
|