sqlew 3.6.10 → 3.7.1
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/CHANGELOG.md +346 -0
- package/README.md +54 -39
- package/assets/config.example.toml +93 -0
- package/assets/kanban-visualizer.png +0 -0
- package/assets/sample-agents/sqlew-architect.md +32 -13
- package/assets/sample-agents/sqlew-researcher.md +70 -17
- package/assets/sample-agents/sqlew-scrum-master.md +60 -25
- package/assets/schema.sql +2 -2
- package/dist/adapters/auth/auth-factory.d.ts +86 -0
- package/dist/adapters/auth/auth-factory.d.ts.map +1 -0
- package/dist/adapters/auth/auth-factory.js +103 -0
- package/dist/adapters/auth/auth-factory.js.map +1 -0
- package/dist/adapters/auth/auth-types.d.ts +30 -0
- package/dist/adapters/auth/auth-types.d.ts.map +1 -0
- package/dist/adapters/auth/auth-types.js +30 -0
- package/dist/adapters/auth/auth-types.js.map +1 -0
- package/dist/adapters/auth/base-auth-provider.d.ts +327 -0
- package/dist/adapters/auth/base-auth-provider.d.ts.map +1 -0
- package/dist/adapters/auth/base-auth-provider.js +111 -0
- package/dist/adapters/auth/base-auth-provider.js.map +1 -0
- package/dist/adapters/auth/direct-auth-provider.d.ts +356 -0
- package/dist/adapters/auth/direct-auth-provider.d.ts.map +1 -0
- package/dist/adapters/auth/direct-auth-provider.js +406 -0
- package/dist/adapters/auth/direct-auth-provider.js.map +1 -0
- package/dist/adapters/base-adapter.d.ts +638 -0
- package/dist/adapters/base-adapter.d.ts.map +1 -0
- package/dist/adapters/base-adapter.js +557 -0
- package/dist/adapters/base-adapter.js.map +1 -0
- package/dist/adapters/index.d.ts +13 -2
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +27 -5
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/mysql-adapter.d.ts +547 -6
- package/dist/adapters/mysql-adapter.d.ts.map +1 -1
- package/dist/adapters/mysql-adapter.js +651 -32
- package/dist/adapters/mysql-adapter.js.map +1 -1
- package/dist/adapters/postgresql-adapter.d.ts +15 -4
- package/dist/adapters/postgresql-adapter.d.ts.map +1 -1
- package/dist/adapters/postgresql-adapter.js +19 -2
- package/dist/adapters/postgresql-adapter.js.map +1 -1
- package/dist/adapters/sqlite-adapter.d.ts +35 -5
- package/dist/adapters/sqlite-adapter.d.ts.map +1 -1
- package/dist/adapters/sqlite-adapter.js +57 -18
- package/dist/adapters/sqlite-adapter.js.map +1 -1
- package/dist/cli/db-dump.d.ts +32 -0
- package/dist/cli/db-dump.d.ts.map +1 -0
- package/dist/cli/db-dump.js +409 -0
- package/dist/cli/db-dump.js.map +1 -0
- package/dist/cli.js +24 -14
- package/dist/cli.js.map +1 -1
- package/dist/config/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/bootstrap/20251025020452_create_master_tables.js +7 -2
- package/dist/config/knex/bootstrap/20251025020452_create_master_tables.js.map +1 -0
- package/dist/config/knex/bootstrap/20251025021152_create_transaction_tables.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/bootstrap/20251025021152_create_transaction_tables.js +49 -50
- package/dist/config/knex/bootstrap/20251025021152_create_transaction_tables.js.map +1 -0
- package/dist/config/knex/bootstrap/20251025021351_create_indexes.d.ts.map +1 -0
- package/dist/config/knex/bootstrap/20251025021351_create_indexes.js.map +1 -0
- package/dist/config/knex/bootstrap/20251025021416_seed_master_data.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/bootstrap/20251025021416_seed_master_data.js +11 -6
- package/dist/config/knex/bootstrap/20251025021416_seed_master_data.js.map +1 -0
- package/dist/config/knex/bootstrap/20251025070349_create_views.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/bootstrap/20251025070349_create_views.js +66 -14
- package/dist/config/knex/bootstrap/20251025070349_create_views.js.map +1 -0
- package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js +22 -0
- package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js.map +1 -0
- package/dist/config/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251025082220_fix_task_dependencies_columns.js.map +1 -0
- package/dist/config/knex/enhancements/20251025090000_create_help_system_tables.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/enhancements/20251025090000_create_help_system_tables.js +6 -0
- package/dist/config/knex/enhancements/20251025090000_create_help_system_tables.js.map +1 -0
- package/dist/config/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js +6 -0
- package/dist/config/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js.map +1 -0
- package/dist/config/knex/enhancements/20251025100000_seed_help_metadata.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/enhancements/20251025100000_seed_help_metadata.js +6 -0
- package/dist/config/knex/enhancements/20251025100000_seed_help_metadata.js.map +1 -0
- package/dist/config/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251025100100_seed_remaining_use_cases.js.map +1 -0
- package/dist/config/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js +7 -0
- package/dist/config/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js.map +1 -0
- package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.js +62 -0
- package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.js.map +1 -0
- package/dist/config/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js.map +1 -0
- package/dist/config/knex/enhancements/20251027020000_update_agent_reusability.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/enhancements/20251027020000_update_agent_reusability.js +6 -0
- package/dist/config/knex/enhancements/20251027020000_update_agent_reusability.js.map +1 -0
- package/dist/config/knex/enhancements/20251028000000_simplify_agent_system.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/enhancements/20251028000000_simplify_agent_system.js +6 -0
- package/dist/config/knex/enhancements/20251028000000_simplify_agent_system.js.map +1 -0
- package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.d.ts +13 -0
- package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.js +48 -0
- package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.js.map +1 -0
- package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.d.ts +24 -0
- package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.js +189 -0
- package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.js.map +1 -0
- package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.d.ts +16 -0
- package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.js +65 -0
- package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.js.map +1 -0
- package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.d.ts +23 -0
- package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.js +118 -0
- package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.js.map +1 -0
- package/dist/config/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js.map +1 -0
- package/dist/config/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js.map +1 -0
- package/dist/config/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js.map +1 -0
- package/dist/config/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js.map +1 -0
- package/dist/config/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js.map +1 -0
- package/dist/config/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js.map +1 -0
- package/dist/config/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js.map +1 -0
- package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.d.ts +49 -0
- package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js +864 -0
- package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js.map +1 -0
- package/dist/config/loader.d.ts +19 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +149 -4
- package/dist/config/loader.js.map +1 -1
- package/dist/config/types.d.ts +261 -2
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/config/writer.d.ts +65 -0
- package/dist/config/writer.d.ts.map +1 -0
- package/dist/config/writer.js +139 -0
- package/dist/config/writer.js.map +1 -0
- package/dist/database.d.ts +11 -2
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +62 -6
- package/dist/database.js.map +1 -1
- package/dist/index.js +173 -39
- package/dist/index.js.map +1 -1
- package/dist/knexfile.d.ts.map +1 -1
- package/dist/knexfile.js +88 -12
- package/dist/knexfile.js.map +1 -1
- package/dist/tests/all-features.test.js +15 -3
- package/dist/tests/all-features.test.js.map +1 -1
- package/dist/tests/config-loader.test.d.ts +6 -0
- package/dist/tests/config-loader.test.d.ts.map +1 -0
- package/dist/tests/config-loader.test.js +201 -0
- package/dist/tests/config-loader.test.js.map +1 -0
- package/dist/tests/connection-manager-integration.test.d.ts +2 -0
- package/dist/tests/connection-manager-integration.test.d.ts.map +1 -0
- package/dist/tests/connection-manager-integration.test.js +431 -0
- package/dist/tests/connection-manager-integration.test.js.map +1 -0
- package/dist/tests/connection-manager.test.d.ts +2 -0
- package/dist/tests/connection-manager.test.d.ts.map +1 -0
- package/dist/tests/connection-manager.test.js +361 -0
- package/dist/tests/connection-manager.test.js.map +1 -0
- package/dist/tests/dump-import.test.d.ts +15 -0
- package/dist/tests/dump-import.test.d.ts.map +1 -0
- package/dist/tests/dump-import.test.js +430 -0
- package/dist/tests/dump-import.test.js.map +1 -0
- package/dist/tests/migration-idempotency.test.d.ts +2 -0
- package/dist/tests/migration-idempotency.test.d.ts.map +1 -0
- package/dist/tests/migration-idempotency.test.js +330 -0
- package/dist/tests/migration-idempotency.test.js.map +1 -0
- package/dist/tests/migration-upgrade-paths.test.d.ts +2 -0
- package/dist/tests/migration-upgrade-paths.test.d.ts.map +1 -0
- package/dist/tests/migration-upgrade-paths.test.js +248 -0
- package/dist/tests/migration-upgrade-paths.test.js.map +1 -0
- package/dist/tests/migrations/test-all-versions-real.js +3 -0
- package/dist/tests/migrations/test-all-versions-real.js.map +1 -1
- package/dist/tests/multi-project-migration.test.d.ts +17 -0
- package/dist/tests/multi-project-migration.test.d.ts.map +1 -0
- package/dist/tests/multi-project-migration.test.js +399 -0
- package/dist/tests/multi-project-migration.test.js.map +1 -0
- package/dist/tests/multi-project.test.d.ts +5 -0
- package/dist/tests/multi-project.test.d.ts.map +1 -0
- package/dist/tests/multi-project.test.js +238 -0
- package/dist/tests/multi-project.test.js.map +1 -0
- package/dist/tests/schema-migration.test.d.ts +8 -0
- package/dist/tests/schema-migration.test.d.ts.map +1 -0
- package/dist/tests/schema-migration.test.js +108 -0
- package/dist/tests/schema-migration.test.js.map +1 -0
- package/dist/tests/sql-dump-converters.test.d.ts +7 -0
- package/dist/tests/sql-dump-converters.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-converters.test.js +314 -0
- package/dist/tests/sql-dump-converters.test.js.map +1 -0
- package/dist/tests/sql-dump-cross-database.test.d.ts +21 -0
- package/dist/tests/sql-dump-cross-database.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-cross-database.test.js +314 -0
- package/dist/tests/sql-dump-cross-database.test.js.map +1 -0
- package/dist/tests/sql-dump-default-conversions.test.d.ts +8 -0
- package/dist/tests/sql-dump-default-conversions.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-default-conversions.test.js +141 -0
- package/dist/tests/sql-dump-default-conversions.test.js.map +1 -0
- package/dist/tests/sql-dump-fk-constraints.test.d.ts +13 -0
- package/dist/tests/sql-dump-fk-constraints.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-fk-constraints.test.js +381 -0
- package/dist/tests/sql-dump-fk-constraints.test.js.map +1 -0
- package/dist/tests/sql-dump-indexes.test.d.ts +12 -0
- package/dist/tests/sql-dump-indexes.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-indexes.test.js +269 -0
- package/dist/tests/sql-dump-indexes.test.js.map +1 -0
- package/dist/tests/sql-dump-integration.test.d.ts +16 -0
- package/dist/tests/sql-dump-integration.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-integration.test.js +342 -0
- package/dist/tests/sql-dump-integration.test.js.map +1 -0
- package/dist/tests/sql-dump-table-ordering.test.d.ts +8 -0
- package/dist/tests/sql-dump-table-ordering.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-table-ordering.test.js +253 -0
- package/dist/tests/sql-dump-table-ordering.test.js.map +1 -0
- package/dist/tests/tasks.link-file-backward-compat.test.js +11 -1
- package/dist/tests/tasks.link-file-backward-compat.test.js.map +1 -1
- package/dist/tests/tasks.watch-files-action.test.js +11 -1
- package/dist/tests/tasks.watch-files-action.test.js.map +1 -1
- package/dist/tests/type-conversion.test.d.ts +8 -0
- package/dist/tests/type-conversion.test.d.ts.map +1 -0
- package/dist/tests/type-conversion.test.js +312 -0
- package/dist/tests/type-conversion.test.js.map +1 -0
- package/dist/tests/utils/test-helpers.d.ts +93 -0
- package/dist/tests/utils/test-helpers.d.ts.map +1 -0
- package/dist/tests/utils/test-helpers.js +407 -0
- package/dist/tests/utils/test-helpers.js.map +1 -0
- package/dist/tools/config.d.ts +58 -0
- package/dist/tools/config.d.ts.map +1 -0
- package/dist/tools/config.js +281 -0
- package/dist/tools/config.js.map +1 -0
- package/dist/tools/constraints.d.ts.map +1 -1
- package/dist/tools/constraints.js +138 -122
- package/dist/tools/constraints.js.map +1 -1
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +216 -109
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/files.d.ts.map +1 -1
- package/dist/tools/files.js +123 -102
- package/dist/tools/files.js.map +1 -1
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +593 -518
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/utils.d.ts +5 -0
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +176 -122
- package/dist/tools/utils.js.map +1 -1
- package/dist/types.d.ts +9 -26
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/cleanup.d.ts +3 -0
- package/dist/utils/cleanup.d.ts.map +1 -1
- package/dist/utils/cleanup.js +14 -2
- package/dist/utils/cleanup.js.map +1 -1
- package/dist/utils/connection-manager.d.ts +59 -0
- package/dist/utils/connection-manager.d.ts.map +1 -0
- package/dist/utils/connection-manager.js +178 -0
- package/dist/utils/connection-manager.js.map +1 -0
- package/dist/utils/debug-logger.d.ts +8 -4
- package/dist/utils/debug-logger.d.ts.map +1 -1
- package/dist/utils/debug-logger.js +27 -7
- package/dist/utils/debug-logger.js.map +1 -1
- package/dist/utils/error-handler.d.ts +6 -4
- package/dist/utils/error-handler.d.ts.map +1 -1
- package/dist/utils/error-handler.js +34 -9
- package/dist/utils/error-handler.js.map +1 -1
- package/dist/utils/parameter-validator.d.ts.map +1 -1
- package/dist/utils/parameter-validator.js +50 -16
- package/dist/utils/parameter-validator.js.map +1 -1
- package/dist/utils/project-context.d.ts +111 -0
- package/dist/utils/project-context.d.ts.map +1 -0
- package/dist/utils/project-context.js +187 -0
- package/dist/utils/project-context.js.map +1 -0
- package/dist/utils/sql-dump-converters.d.ts +188 -0
- package/dist/utils/sql-dump-converters.d.ts.map +1 -0
- package/dist/utils/sql-dump-converters.js +311 -0
- package/dist/utils/sql-dump-converters.js.map +1 -0
- package/dist/utils/sql-dump.d.ts +102 -0
- package/dist/utils/sql-dump.d.ts.map +1 -0
- package/dist/utils/sql-dump.js +1550 -0
- package/dist/utils/sql-dump.js.map +1 -0
- package/dist/utils/vcs-adapter.d.ts +42 -0
- package/dist/utils/vcs-adapter.d.ts.map +1 -1
- package/dist/utils/vcs-adapter.js +154 -0
- package/dist/utils/vcs-adapter.js.map +1 -1
- package/docs/BASEADAPTER_IMPLEMENTATION.md +399 -0
- package/docs/DATABASE_AUTH.md +445 -0
- package/docs/DATABASE_MIGRATION.md +247 -0
- package/docs/MULTI_PROJECT_ARCHITECTURE.md +497 -0
- package/package.json +12 -4
- package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.js.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.d.ts.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.js.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.d.ts.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.js.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.d.ts.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.js.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025070349_create_views.d.ts.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025070349_create_views.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js +0 -15
- package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.js +0 -34
- package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251028000000_simplify_agent_system.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251028000000_simplify_agent_system.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js.map +0 -1
- /package/dist/{migrations → config}/knex/bootstrap/20251025020452_create_master_tables.d.ts +0 -0
- /package/dist/{migrations → config}/knex/bootstrap/20251025021152_create_transaction_tables.d.ts +0 -0
- /package/dist/{migrations → config}/knex/bootstrap/20251025021351_create_indexes.d.ts +0 -0
- /package/dist/{migrations → config}/knex/bootstrap/20251025021351_create_indexes.js +0 -0
- /package/dist/{migrations → config}/knex/bootstrap/20251025021416_seed_master_data.d.ts +0 -0
- /package/dist/{migrations → config}/knex/bootstrap/20251025070349_create_views.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025082220_fix_task_dependencies_columns.js +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025090000_create_help_system_tables.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025100000_seed_help_metadata.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025100100_seed_remaining_use_cases.js +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251027020000_update_agent_reusability.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251028000000_simplify_agent_system.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js +0 -0
|
@@ -0,0 +1,557 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Base adapter for database connections with authentication integration.
|
|
3
|
+
*
|
|
4
|
+
* This module provides the foundation for all database adapters in the multi-RDBMS system.
|
|
5
|
+
* It integrates authentication providers (SSH tunneling, direct connections, cloud IAM) with
|
|
6
|
+
* Knex.js-based database connections, managing the complete connection lifecycle.
|
|
7
|
+
*
|
|
8
|
+
* **Key Responsibilities:**
|
|
9
|
+
* - Authentication provider integration via factory
|
|
10
|
+
* - Connection lifecycle management (connect → authenticate → establish → cleanup)
|
|
11
|
+
* - Knex.js instance management and access control
|
|
12
|
+
* - Transaction support delegation
|
|
13
|
+
* - Abstract methods for adapter-specific initialization
|
|
14
|
+
*
|
|
15
|
+
* **Connection Flow:**
|
|
16
|
+
* 1. Constructor: Initialize with DatabaseConfig
|
|
17
|
+
* 2. connect(): Authenticate via provider, establish Knex connection
|
|
18
|
+
* 3. initialize(): Adapter-specific setup (pragmas, schemas, etc.)
|
|
19
|
+
* 4. getKnex(): Access Knex instance for queries
|
|
20
|
+
* 5. disconnect(): Close Knex connection
|
|
21
|
+
* 6. cleanup(): Release authentication resources (tunnels, tokens)
|
|
22
|
+
*
|
|
23
|
+
* **Architecture:**
|
|
24
|
+
* ```
|
|
25
|
+
* BaseAdapter (abstract)
|
|
26
|
+
* ├── Authentication Layer: BaseAuthProvider integration
|
|
27
|
+
* ├── Connection Layer: Knex.js management
|
|
28
|
+
* └── Adapter-Specific: Abstract methods for subclasses
|
|
29
|
+
*
|
|
30
|
+
* Concrete Adapters:
|
|
31
|
+
* ├── SQLiteAdapter (no auth required)
|
|
32
|
+
* ├── PostgreSQLAdapter (with auth integration)
|
|
33
|
+
* └── MySQLAdapter (with auth integration)
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @module adapters/base-adapter
|
|
37
|
+
* @since v3.7.0
|
|
38
|
+
*/
|
|
39
|
+
import knexLib from 'knex';
|
|
40
|
+
import { createAuthProvider } from './auth/auth-factory.js';
|
|
41
|
+
const { knex } = knexLib;
|
|
42
|
+
/**
|
|
43
|
+
* Abstract base class for database adapters with authentication integration.
|
|
44
|
+
*
|
|
45
|
+
* This class provides common functionality for all database adapters, integrating
|
|
46
|
+
* authentication providers with Knex.js connections. Subclasses implement
|
|
47
|
+
* database-specific features (SQLite pragmas, PostgreSQL settings, MySQL config).
|
|
48
|
+
*
|
|
49
|
+
* **Design Principles:**
|
|
50
|
+
* - Separation of concerns: Auth provider handles authentication, adapter handles DB operations
|
|
51
|
+
* - Lazy initialization: Knex instance created only after successful authentication
|
|
52
|
+
* - Resource safety: Explicit cleanup for both auth providers and DB connections
|
|
53
|
+
* - Fail-fast validation: Auth provider validates config before connection attempt
|
|
54
|
+
* - Backward compatibility: Maintains DatabaseAdapter interface contract
|
|
55
|
+
*
|
|
56
|
+
* **Authentication Integration:**
|
|
57
|
+
* - SQLite: No authentication provider (null), direct file connection
|
|
58
|
+
* - PostgreSQL/MySQL: Auth provider handles tunneling/IAM/direct auth
|
|
59
|
+
* - SSH tunneling: Provider establishes tunnel, returns localhost connection params
|
|
60
|
+
* - Cloud IAM: Provider generates temporary tokens, returns params with SSL config
|
|
61
|
+
*
|
|
62
|
+
* **Error Handling:**
|
|
63
|
+
* - Constructor: Config validation (throws if invalid)
|
|
64
|
+
* - connect(): Authentication failures, connection failures
|
|
65
|
+
* - getKnex(): Throws if called before connect()
|
|
66
|
+
* - cleanup(): Swallows errors to prevent cascading failures
|
|
67
|
+
*
|
|
68
|
+
* @abstract
|
|
69
|
+
* @implements {DatabaseAdapter}
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* // Implementing a PostgreSQL adapter
|
|
73
|
+
* class PostgreSQLAdapter extends BaseAdapter {
|
|
74
|
+
* readonly supportsReturning = true;
|
|
75
|
+
* readonly supportsJSON = true;
|
|
76
|
+
* readonly databaseName = 'postgresql' as const;
|
|
77
|
+
*
|
|
78
|
+
* async initialize(): Promise<void> {
|
|
79
|
+
* const knex = this.getKnex();
|
|
80
|
+
* // PostgreSQL-specific initialization
|
|
81
|
+
* await knex.raw('SET statement_timeout = 30000');
|
|
82
|
+
* await knex.raw('SET timezone = "UTC"');
|
|
83
|
+
* }
|
|
84
|
+
*
|
|
85
|
+
* getDialect(): string {
|
|
86
|
+
* return 'pg';
|
|
87
|
+
* }
|
|
88
|
+
*
|
|
89
|
+
* // Implement other DatabaseAdapter methods...
|
|
90
|
+
* }
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* // Using the adapter with authentication
|
|
94
|
+
* const config: DatabaseConfig = {
|
|
95
|
+
* type: 'postgres',
|
|
96
|
+
* connection: {
|
|
97
|
+
* host: 'db.internal',
|
|
98
|
+
* port: 5432,
|
|
99
|
+
* database: 'production'
|
|
100
|
+
* },
|
|
101
|
+
* auth: {
|
|
102
|
+
* type: 'ssh',
|
|
103
|
+
* user: 'postgres',
|
|
104
|
+
* password: 'secret',
|
|
105
|
+
* ssh: {
|
|
106
|
+
* host: 'bastion.example.com',
|
|
107
|
+
* username: 'deploy',
|
|
108
|
+
* privateKeyPath: '/path/to/key.pem'
|
|
109
|
+
* }
|
|
110
|
+
* }
|
|
111
|
+
* };
|
|
112
|
+
*
|
|
113
|
+
* const adapter = new PostgreSQLAdapter(config);
|
|
114
|
+
* try {
|
|
115
|
+
* await adapter.connect();
|
|
116
|
+
* const knex = adapter.getKnex();
|
|
117
|
+
* const users = await knex('users').select('*');
|
|
118
|
+
* console.log(users);
|
|
119
|
+
* } finally {
|
|
120
|
+
* await adapter.disconnect();
|
|
121
|
+
* await adapter.cleanup();
|
|
122
|
+
* }
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* // Transaction support
|
|
126
|
+
* const adapter = new PostgreSQLAdapter(config);
|
|
127
|
+
* await adapter.connect();
|
|
128
|
+
*
|
|
129
|
+
* try {
|
|
130
|
+
* await adapter.transaction(async (trx) => {
|
|
131
|
+
* await trx('accounts').where({ id: 1 }).update({ balance: 100 });
|
|
132
|
+
* await trx('accounts').where({ id: 2 }).update({ balance: 200 });
|
|
133
|
+
* });
|
|
134
|
+
* } finally {
|
|
135
|
+
* await adapter.disconnect();
|
|
136
|
+
* await adapter.cleanup();
|
|
137
|
+
* }
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* // SQLite adapter (no authentication)
|
|
141
|
+
* class SQLiteAdapter extends BaseAdapter {
|
|
142
|
+
* async connect(): Promise<Knex> {
|
|
143
|
+
* // SQLite doesn't need authentication provider
|
|
144
|
+
* // Override connect to bypass auth flow
|
|
145
|
+
* const config: Knex.Config = {
|
|
146
|
+
* client: 'better-sqlite3',
|
|
147
|
+
* connection: {
|
|
148
|
+
* filename: this.config.connection.database
|
|
149
|
+
* },
|
|
150
|
+
* useNullAsDefault: true
|
|
151
|
+
* };
|
|
152
|
+
*
|
|
153
|
+
* this.knex = knex(config);
|
|
154
|
+
* await this.initialize();
|
|
155
|
+
* return this.knex;
|
|
156
|
+
* }
|
|
157
|
+
*
|
|
158
|
+
* getDialect(): string {
|
|
159
|
+
* return 'sqlite3';
|
|
160
|
+
* }
|
|
161
|
+
* }
|
|
162
|
+
*/
|
|
163
|
+
export class BaseAdapter {
|
|
164
|
+
/**
|
|
165
|
+
* Database configuration containing connection and authentication settings.
|
|
166
|
+
* @protected
|
|
167
|
+
* @readonly
|
|
168
|
+
*/
|
|
169
|
+
config;
|
|
170
|
+
/**
|
|
171
|
+
* Authentication provider instance for handling credentials, tunnels, and tokens.
|
|
172
|
+
* Null for databases that don't require authentication (e.g., SQLite).
|
|
173
|
+
* @protected
|
|
174
|
+
*/
|
|
175
|
+
authProvider = null;
|
|
176
|
+
/**
|
|
177
|
+
* Knex.js instance for database operations.
|
|
178
|
+
* Null until connect() is called successfully.
|
|
179
|
+
* @protected
|
|
180
|
+
*/
|
|
181
|
+
knexInstance = null;
|
|
182
|
+
/**
|
|
183
|
+
* Creates a new database adapter instance.
|
|
184
|
+
*
|
|
185
|
+
* @param {DatabaseConfig} config - Database configuration object
|
|
186
|
+
*
|
|
187
|
+
* @throws {Error} If database type is unsupported
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* const adapter = new PostgreSQLAdapter({
|
|
191
|
+
* type: 'postgres',
|
|
192
|
+
* connection: { host: 'localhost', port: 5432, database: 'mydb' },
|
|
193
|
+
* auth: { type: 'direct', user: 'postgres', password: 'postgres' }
|
|
194
|
+
* });
|
|
195
|
+
*/
|
|
196
|
+
constructor(config) {
|
|
197
|
+
this.config = config;
|
|
198
|
+
}
|
|
199
|
+
// ============================================================================
|
|
200
|
+
// Connection Management
|
|
201
|
+
// ============================================================================
|
|
202
|
+
/**
|
|
203
|
+
* Establishes database connection with authentication.
|
|
204
|
+
*
|
|
205
|
+
* This method orchestrates the complete connection flow:
|
|
206
|
+
* 1. Create authentication provider (if required)
|
|
207
|
+
* 2. Validate authentication configuration
|
|
208
|
+
* 3. Authenticate and obtain connection parameters
|
|
209
|
+
* 4. Create Knex instance with authenticated params
|
|
210
|
+
* 5. Call initialize() for adapter-specific setup
|
|
211
|
+
*
|
|
212
|
+
* **Authentication Flow:**
|
|
213
|
+
* - Direct: Use credentials as-is
|
|
214
|
+
* - SSH: Establish tunnel, connect to localhost
|
|
215
|
+
* - AWS/GCP IAM: Generate token, connect with SSL
|
|
216
|
+
*
|
|
217
|
+
* **Important Notes:**
|
|
218
|
+
* - This method is idempotent: calling twice reuses existing connection
|
|
219
|
+
* - Auth provider resources remain allocated until cleanup() is called
|
|
220
|
+
* - Knex instance is accessible via getKnex() after successful connection
|
|
221
|
+
* - Subclasses can override for special handling (e.g., SQLite)
|
|
222
|
+
*
|
|
223
|
+
* @returns {Promise<Knex>} Knex instance for database operations
|
|
224
|
+
*
|
|
225
|
+
* @throws {Error} 'Database already connected' - if connection exists
|
|
226
|
+
* @throws {Error} Auth provider validation errors
|
|
227
|
+
* @throws {Error} Authentication failures (invalid credentials, network issues)
|
|
228
|
+
* @throws {Error} Knex connection failures (database unreachable, invalid database name)
|
|
229
|
+
* @throws {Error} Initialization failures (adapter-specific setup errors)
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* // Standard usage
|
|
233
|
+
* const adapter = new PostgreSQLAdapter(config);
|
|
234
|
+
* try {
|
|
235
|
+
* const knex = await adapter.connect();
|
|
236
|
+
* console.log('Connected successfully');
|
|
237
|
+
* } catch (error) {
|
|
238
|
+
* console.error('Connection failed:', error.message);
|
|
239
|
+
* await adapter.cleanup();
|
|
240
|
+
* throw error;
|
|
241
|
+
* }
|
|
242
|
+
*
|
|
243
|
+
* @example
|
|
244
|
+
* // Idempotent connection
|
|
245
|
+
* const adapter = new PostgreSQLAdapter(config);
|
|
246
|
+
* const knex1 = await adapter.connect(); // Establishes connection
|
|
247
|
+
* const knex2 = await adapter.connect(); // Returns same instance
|
|
248
|
+
* console.log(knex1 === knex2); // true
|
|
249
|
+
*/
|
|
250
|
+
async connect() {
|
|
251
|
+
// Idempotent: return existing connection if already established
|
|
252
|
+
if (this.knexInstance) {
|
|
253
|
+
return this.knexInstance;
|
|
254
|
+
}
|
|
255
|
+
// Create authentication provider (null for SQLite)
|
|
256
|
+
this.authProvider = createAuthProvider(this.config);
|
|
257
|
+
// Authenticate and get connection parameters
|
|
258
|
+
let connParams = null;
|
|
259
|
+
if (this.authProvider !== null) {
|
|
260
|
+
// Validate authentication configuration
|
|
261
|
+
this.authProvider.validate();
|
|
262
|
+
// Authenticate to get connection parameters
|
|
263
|
+
connParams = await this.authProvider.authenticate();
|
|
264
|
+
}
|
|
265
|
+
// Build Knex configuration
|
|
266
|
+
const knexConfig = this.buildKnexConfig(connParams);
|
|
267
|
+
// Create Knex instance
|
|
268
|
+
this.knexInstance = knex(knexConfig);
|
|
269
|
+
// Perform adapter-specific initialization
|
|
270
|
+
await this.initialize();
|
|
271
|
+
return this.knexInstance;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Closes the database connection.
|
|
275
|
+
*
|
|
276
|
+
* This method closes the Knex connection pool, releasing all database connections.
|
|
277
|
+
* It does NOT release authentication provider resources (SSH tunnels, tokens) -
|
|
278
|
+
* call cleanup() to release those.
|
|
279
|
+
*
|
|
280
|
+
* **Resource Lifecycle:**
|
|
281
|
+
* - disconnect() → Closes Knex connection pool
|
|
282
|
+
* - cleanup() → Releases auth provider resources (tunnels, tokens)
|
|
283
|
+
* - Both must be called for complete cleanup
|
|
284
|
+
*
|
|
285
|
+
* **Important Notes:**
|
|
286
|
+
* - This method is idempotent: safe to call multiple times
|
|
287
|
+
* - Pending queries are allowed to complete before closing
|
|
288
|
+
* - After disconnect(), getKnex() will throw an error
|
|
289
|
+
* - Auth provider resources remain allocated until cleanup()
|
|
290
|
+
*
|
|
291
|
+
* @returns {Promise<void>}
|
|
292
|
+
*
|
|
293
|
+
* @example
|
|
294
|
+
* // Complete cleanup flow
|
|
295
|
+
* const adapter = new PostgreSQLAdapter(config);
|
|
296
|
+
* try {
|
|
297
|
+
* await adapter.connect();
|
|
298
|
+
* // ... use database ...
|
|
299
|
+
* } finally {
|
|
300
|
+
* await adapter.disconnect(); // Close DB connection
|
|
301
|
+
* await adapter.cleanup(); // Release auth resources
|
|
302
|
+
* }
|
|
303
|
+
*
|
|
304
|
+
* @example
|
|
305
|
+
* // Idempotent disconnect
|
|
306
|
+
* await adapter.disconnect(); // Closes connection
|
|
307
|
+
* await adapter.disconnect(); // Safe - no-op
|
|
308
|
+
*/
|
|
309
|
+
async disconnect() {
|
|
310
|
+
if (this.knexInstance) {
|
|
311
|
+
await this.knexInstance.destroy();
|
|
312
|
+
this.knexInstance = null;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Releases authentication provider resources.
|
|
317
|
+
*
|
|
318
|
+
* This method releases resources allocated during authentication:
|
|
319
|
+
* - SSH tunnels: Closes SSH connection and releases local port
|
|
320
|
+
* - Cloud IAM: Invalidates cached tokens
|
|
321
|
+
* - Direct connections: No-op (no resources to release)
|
|
322
|
+
*
|
|
323
|
+
* **Important Notes:**
|
|
324
|
+
* - This method MUST be called after disconnect() to prevent resource leaks
|
|
325
|
+
* - Errors during cleanup are caught and logged, not thrown
|
|
326
|
+
* - This method is idempotent: safe to call multiple times
|
|
327
|
+
* - Auth provider is set to null after cleanup
|
|
328
|
+
*
|
|
329
|
+
* **Resource Leak Prevention:**
|
|
330
|
+
* Always call cleanup() in a finally block to ensure resources are released
|
|
331
|
+
* even if database operations fail.
|
|
332
|
+
*
|
|
333
|
+
* @returns {Promise<void>}
|
|
334
|
+
*
|
|
335
|
+
* @example
|
|
336
|
+
* // Proper cleanup flow
|
|
337
|
+
* const adapter = new PostgreSQLAdapter(config);
|
|
338
|
+
* try {
|
|
339
|
+
* await adapter.connect();
|
|
340
|
+
* // ... database operations ...
|
|
341
|
+
* } finally {
|
|
342
|
+
* await adapter.disconnect();
|
|
343
|
+
* await adapter.cleanup();
|
|
344
|
+
* }
|
|
345
|
+
*
|
|
346
|
+
* @example
|
|
347
|
+
* // Error handling during cleanup
|
|
348
|
+
* try {
|
|
349
|
+
* await adapter.cleanup();
|
|
350
|
+
* } catch (error) {
|
|
351
|
+
* // Cleanup errors are logged but not thrown to prevent cascading failures
|
|
352
|
+
* console.error('Cleanup failed:', error);
|
|
353
|
+
* }
|
|
354
|
+
*/
|
|
355
|
+
async cleanup() {
|
|
356
|
+
if (this.authProvider) {
|
|
357
|
+
try {
|
|
358
|
+
await this.authProvider.cleanup();
|
|
359
|
+
}
|
|
360
|
+
catch (error) {
|
|
361
|
+
// Log cleanup errors but don't throw - connection is already closed
|
|
362
|
+
console.error('Auth provider cleanup failed:', error);
|
|
363
|
+
}
|
|
364
|
+
this.authProvider = null;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Returns the Knex.js instance for database operations.
|
|
369
|
+
*
|
|
370
|
+
* This method provides access to the underlying Knex instance for executing
|
|
371
|
+
* queries, building query chains, and accessing raw connections.
|
|
372
|
+
*
|
|
373
|
+
* **Important Notes:**
|
|
374
|
+
* - Must call connect() before calling this method
|
|
375
|
+
* - Throws error if connection not established
|
|
376
|
+
* - Returns same instance across multiple calls
|
|
377
|
+
*
|
|
378
|
+
* @returns {Knex} Knex instance for database operations
|
|
379
|
+
*
|
|
380
|
+
* @throws {Error} 'Database not connected. Call connect() first.' - if not connected
|
|
381
|
+
*
|
|
382
|
+
* @example
|
|
383
|
+
* // Standard usage
|
|
384
|
+
* const adapter = new PostgreSQLAdapter(config);
|
|
385
|
+
* await adapter.connect();
|
|
386
|
+
* const knex = adapter.getKnex();
|
|
387
|
+
* const users = await knex('users').select('*');
|
|
388
|
+
*
|
|
389
|
+
* @example
|
|
390
|
+
* // Query builder
|
|
391
|
+
* const knex = adapter.getKnex();
|
|
392
|
+
* const query = knex('orders')
|
|
393
|
+
* .where('status', 'pending')
|
|
394
|
+
* .andWhere('created_at', '>', '2024-01-01')
|
|
395
|
+
* .orderBy('created_at', 'desc');
|
|
396
|
+
*
|
|
397
|
+
* @example
|
|
398
|
+
* // Raw queries
|
|
399
|
+
* const knex = adapter.getKnex();
|
|
400
|
+
* const result = await knex.raw('SELECT * FROM users WHERE id = ?', [userId]);
|
|
401
|
+
*/
|
|
402
|
+
getKnex() {
|
|
403
|
+
if (!this.knexInstance) {
|
|
404
|
+
throw new Error('Database not connected. Call connect() first.');
|
|
405
|
+
}
|
|
406
|
+
return this.knexInstance;
|
|
407
|
+
}
|
|
408
|
+
// ============================================================================
|
|
409
|
+
// Transaction Support
|
|
410
|
+
// ============================================================================
|
|
411
|
+
/**
|
|
412
|
+
* Executes a callback within a database transaction.
|
|
413
|
+
*
|
|
414
|
+
* This method delegates to Knex's transaction management, providing:
|
|
415
|
+
* - Automatic commit on success
|
|
416
|
+
* - Automatic rollback on error
|
|
417
|
+
* - Optional isolation level configuration
|
|
418
|
+
*
|
|
419
|
+
* **Transaction Isolation Levels:**
|
|
420
|
+
* - 'serializable': Strongest isolation, prevents all anomalies
|
|
421
|
+
* - 'repeatable read': Prevents non-repeatable reads and phantom reads
|
|
422
|
+
* - 'read committed': Prevents dirty reads (default for most databases)
|
|
423
|
+
*
|
|
424
|
+
* **Important Notes:**
|
|
425
|
+
* - All database operations within callback must use the trx parameter
|
|
426
|
+
* - Do not mix transaction queries with non-transaction queries
|
|
427
|
+
* - Nested transactions use savepoints (if supported by database)
|
|
428
|
+
*
|
|
429
|
+
* @param {Function} callback - Async function receiving transaction object
|
|
430
|
+
* @param {Object} [options] - Transaction options
|
|
431
|
+
* @param {string} [options.isolationLevel] - Transaction isolation level
|
|
432
|
+
* @returns {Promise<T>} Result from callback function
|
|
433
|
+
*
|
|
434
|
+
* @throws {Error} If callback throws (transaction is rolled back)
|
|
435
|
+
*
|
|
436
|
+
* @example
|
|
437
|
+
* // Bank transfer transaction
|
|
438
|
+
* await adapter.transaction(async (trx) => {
|
|
439
|
+
* await trx('accounts')
|
|
440
|
+
* .where({ id: fromAccount })
|
|
441
|
+
* .decrement('balance', amount);
|
|
442
|
+
*
|
|
443
|
+
* await trx('accounts')
|
|
444
|
+
* .where({ id: toAccount })
|
|
445
|
+
* .increment('balance', amount);
|
|
446
|
+
*
|
|
447
|
+
* await trx('transfers').insert({
|
|
448
|
+
* from_account: fromAccount,
|
|
449
|
+
* to_account: toAccount,
|
|
450
|
+
* amount
|
|
451
|
+
* });
|
|
452
|
+
* });
|
|
453
|
+
*
|
|
454
|
+
* @example
|
|
455
|
+
* // Transaction with isolation level
|
|
456
|
+
* await adapter.transaction(async (trx) => {
|
|
457
|
+
* const balance = await trx('accounts')
|
|
458
|
+
* .where({ id: accountId })
|
|
459
|
+
* .first('balance');
|
|
460
|
+
*
|
|
461
|
+
* if (balance.balance >= amount) {
|
|
462
|
+
* await trx('accounts')
|
|
463
|
+
* .where({ id: accountId })
|
|
464
|
+
* .decrement('balance', amount);
|
|
465
|
+
* }
|
|
466
|
+
* }, { isolationLevel: 'serializable' });
|
|
467
|
+
*
|
|
468
|
+
* @example
|
|
469
|
+
* // Error handling (automatic rollback)
|
|
470
|
+
* try {
|
|
471
|
+
* await adapter.transaction(async (trx) => {
|
|
472
|
+
* await trx('users').insert({ name: 'Alice' });
|
|
473
|
+
* throw new Error('Something went wrong');
|
|
474
|
+
* await trx('logs').insert({ message: 'Never executed' });
|
|
475
|
+
* });
|
|
476
|
+
* } catch (error) {
|
|
477
|
+
* console.log('Transaction rolled back:', error.message);
|
|
478
|
+
* }
|
|
479
|
+
*/
|
|
480
|
+
async transaction(callback, options) {
|
|
481
|
+
const knex = this.getKnex();
|
|
482
|
+
return await knex.transaction(callback, options);
|
|
483
|
+
}
|
|
484
|
+
// ============================================================================
|
|
485
|
+
// Protected Helper Methods
|
|
486
|
+
// ============================================================================
|
|
487
|
+
/**
|
|
488
|
+
* Builds Knex configuration from connection parameters.
|
|
489
|
+
*
|
|
490
|
+
* This method converts ConnectionParams (returned by auth provider) into
|
|
491
|
+
* Knex.Config format. Subclasses can override to customize configuration.
|
|
492
|
+
*
|
|
493
|
+
* **Default Behavior:**
|
|
494
|
+
* - Uses dialect from getDialect()
|
|
495
|
+
* - Passes connection params to Knex
|
|
496
|
+
* - Configures SSL if present
|
|
497
|
+
* - Merges additional params
|
|
498
|
+
*
|
|
499
|
+
* @protected
|
|
500
|
+
* @param {ConnectionParams | null} connParams - Connection parameters from auth provider
|
|
501
|
+
* @returns {Knex.Config} Knex configuration object
|
|
502
|
+
*
|
|
503
|
+
* @example
|
|
504
|
+
* // Custom configuration in subclass
|
|
505
|
+
* protected buildKnexConfig(connParams: ConnectionParams | null): Knex.Config {
|
|
506
|
+
* const baseConfig = super.buildKnexConfig(connParams);
|
|
507
|
+
* return {
|
|
508
|
+
* ...baseConfig,
|
|
509
|
+
* pool: {
|
|
510
|
+
* min: 2,
|
|
511
|
+
* max: 10,
|
|
512
|
+
* afterCreate: (conn, done) => {
|
|
513
|
+
* // Custom connection setup
|
|
514
|
+
* done(null, conn);
|
|
515
|
+
* }
|
|
516
|
+
* }
|
|
517
|
+
* };
|
|
518
|
+
* }
|
|
519
|
+
*/
|
|
520
|
+
buildKnexConfig(connParams) {
|
|
521
|
+
if (!connParams) {
|
|
522
|
+
// SQLite or other file-based databases
|
|
523
|
+
return {
|
|
524
|
+
client: this.getDialect(),
|
|
525
|
+
connection: {
|
|
526
|
+
filename: this.config.connection.database,
|
|
527
|
+
},
|
|
528
|
+
useNullAsDefault: true,
|
|
529
|
+
};
|
|
530
|
+
}
|
|
531
|
+
// Client-server databases with authentication
|
|
532
|
+
const connectionConfig = {
|
|
533
|
+
host: connParams.host,
|
|
534
|
+
port: connParams.port,
|
|
535
|
+
database: connParams.database,
|
|
536
|
+
user: connParams.user,
|
|
537
|
+
};
|
|
538
|
+
// Add password if present
|
|
539
|
+
if (connParams.password) {
|
|
540
|
+
connectionConfig.password = connParams.password;
|
|
541
|
+
}
|
|
542
|
+
// Add SSL configuration if present
|
|
543
|
+
if (connParams.ssl) {
|
|
544
|
+
connectionConfig.ssl = connParams.ssl;
|
|
545
|
+
}
|
|
546
|
+
// Merge additional parameters
|
|
547
|
+
if (connParams.additionalParams) {
|
|
548
|
+
Object.assign(connectionConfig, connParams.additionalParams);
|
|
549
|
+
}
|
|
550
|
+
return {
|
|
551
|
+
client: this.getDialect(),
|
|
552
|
+
connection: connectionConfig,
|
|
553
|
+
useNullAsDefault: this.getDialect() === 'sqlite3',
|
|
554
|
+
};
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
//# sourceMappingURL=base-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-adapter.js","sourceRoot":"","sources":["../../src/adapters/base-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters/index.d.ts
CHANGED
|
@@ -1,11 +1,22 @@
|
|
|
1
1
|
export type { DatabaseAdapter } from './types.js';
|
|
2
|
+
export type { DatabaseConfig, AuthConfig, SSLConfig, ConnectionConfig } from '../config/types.js';
|
|
3
|
+
export { BaseAdapter } from './base-adapter.js';
|
|
2
4
|
import { SQLiteAdapter } from './sqlite-adapter.js';
|
|
3
5
|
import { PostgreSQLAdapter } from './postgresql-adapter.js';
|
|
4
6
|
import { MySQLAdapter } from './mysql-adapter.js';
|
|
5
7
|
import type { DatabaseAdapter } from './types.js';
|
|
8
|
+
import type { DatabaseConfig } from '../config/types.js';
|
|
6
9
|
export { SQLiteAdapter, PostgreSQLAdapter, MySQLAdapter };
|
|
7
10
|
/**
|
|
8
|
-
* Factory function to create database adapter
|
|
11
|
+
* Factory function to create database adapter.
|
|
12
|
+
*
|
|
13
|
+
* NOTE: This factory maintains backward compatibility with the old signature
|
|
14
|
+
* that only accepts database type. For new code with authentication, create
|
|
15
|
+
* adapters directly with DatabaseConfig.
|
|
16
|
+
*
|
|
17
|
+
* @param databaseType - Database type identifier
|
|
18
|
+
* @param config - Optional database configuration (for new auth-aware code)
|
|
19
|
+
* @returns Database adapter instance
|
|
9
20
|
*/
|
|
10
|
-
export declare function createDatabaseAdapter(databaseType: 'sqlite' | 'postgresql' | 'mysql'): DatabaseAdapter;
|
|
21
|
+
export declare function createDatabaseAdapter(databaseType: 'sqlite' | 'postgresql' | 'mysql', config?: DatabaseConfig): DatabaseAdapter;
|
|
11
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGlG,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,QAAQ,GAAG,YAAY,GAAG,OAAO,EAC/C,MAAM,CAAC,EAAE,cAAc,GACtB,eAAe,CAwBjB"}
|
package/dist/adapters/index.js
CHANGED
|
@@ -1,19 +1,41 @@
|
|
|
1
|
+
// Export base adapter
|
|
2
|
+
export { BaseAdapter } from './base-adapter.js';
|
|
1
3
|
// Import adapter implementations
|
|
2
4
|
import { SQLiteAdapter } from './sqlite-adapter.js';
|
|
3
5
|
import { PostgreSQLAdapter } from './postgresql-adapter.js';
|
|
4
6
|
import { MySQLAdapter } from './mysql-adapter.js';
|
|
5
7
|
export { SQLiteAdapter, PostgreSQLAdapter, MySQLAdapter };
|
|
6
8
|
/**
|
|
7
|
-
* Factory function to create database adapter
|
|
9
|
+
* Factory function to create database adapter.
|
|
10
|
+
*
|
|
11
|
+
* NOTE: This factory maintains backward compatibility with the old signature
|
|
12
|
+
* that only accepts database type. For new code with authentication, create
|
|
13
|
+
* adapters directly with DatabaseConfig.
|
|
14
|
+
*
|
|
15
|
+
* @param databaseType - Database type identifier
|
|
16
|
+
* @param config - Optional database configuration (for new auth-aware code)
|
|
17
|
+
* @returns Database adapter instance
|
|
8
18
|
*/
|
|
9
|
-
export function createDatabaseAdapter(databaseType) {
|
|
19
|
+
export function createDatabaseAdapter(databaseType, config) {
|
|
20
|
+
// Build default config if not provided (backward compatibility)
|
|
21
|
+
const defaultConfig = config || {
|
|
22
|
+
type: databaseType === 'postgresql' ? 'postgres' : databaseType,
|
|
23
|
+
connection: {
|
|
24
|
+
host: '',
|
|
25
|
+
port: 0,
|
|
26
|
+
database: '',
|
|
27
|
+
},
|
|
28
|
+
auth: {
|
|
29
|
+
type: 'direct',
|
|
30
|
+
},
|
|
31
|
+
};
|
|
10
32
|
switch (databaseType) {
|
|
11
33
|
case 'sqlite':
|
|
12
|
-
return new SQLiteAdapter();
|
|
34
|
+
return new SQLiteAdapter(defaultConfig);
|
|
13
35
|
case 'postgresql':
|
|
14
|
-
return new PostgreSQLAdapter();
|
|
36
|
+
return new PostgreSQLAdapter(defaultConfig);
|
|
15
37
|
case 'mysql':
|
|
16
|
-
return new MySQLAdapter();
|
|
38
|
+
return new MySQLAdapter(defaultConfig);
|
|
17
39
|
default:
|
|
18
40
|
throw new Error(`Unsupported database type: ${databaseType}`);
|
|
19
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAKA,sBAAsB;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,iCAAiC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CACnC,YAA+C,EAC/C,MAAuB;IAEvB,gEAAgE;IAChE,MAAM,aAAa,GAAmB,MAAM,IAAI;QAC9C,IAAI,EAAE,YAAY,KAAK,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY;QAC/D,UAAU,EAAE;YACV,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,EAAE;SACb;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;SACf;KACF,CAAC;IAEF,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,CAAC,aAAa,CAAC,CAAC;QAC1C,KAAK,YAAY;YACf,OAAO,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAC9C,KAAK,OAAO;YACV,OAAO,IAAI,YAAY,CAAC,aAAa,CAAC,CAAC;QACzC;YACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
|