sqlew 5.0.8 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (499) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +19 -10
  3. package/dist/adapters/auth/auth-factory.d.ts +2 -81
  4. package/dist/adapters/auth/auth-factory.d.ts.map +1 -1
  5. package/dist/adapters/auth/auth-factory.js +2 -82
  6. package/dist/adapters/auth/auth-factory.js.map +1 -1
  7. package/dist/adapters/auth/base-auth-provider.d.ts +18 -303
  8. package/dist/adapters/auth/base-auth-provider.d.ts.map +1 -1
  9. package/dist/adapters/auth/base-auth-provider.js +2 -104
  10. package/dist/adapters/auth/base-auth-provider.js.map +1 -1
  11. package/dist/adapters/auth/direct-auth-provider.d.ts +4 -348
  12. package/dist/adapters/auth/direct-auth-provider.d.ts.map +1 -1
  13. package/dist/adapters/auth/direct-auth-provider.js +6 -356
  14. package/dist/adapters/auth/direct-auth-provider.js.map +1 -1
  15. package/dist/adapters/base-adapter.d.ts +31 -598
  16. package/dist/adapters/base-adapter.d.ts.map +1 -1
  17. package/dist/adapters/base-adapter.js +10 -458
  18. package/dist/adapters/base-adapter.js.map +1 -1
  19. package/dist/adapters/index.d.ts +1 -11
  20. package/dist/adapters/index.d.ts.map +1 -1
  21. package/dist/adapters/index.js +1 -11
  22. package/dist/adapters/index.js.map +1 -1
  23. package/dist/adapters/mysql-adapter.d.ts +15 -541
  24. package/dist/adapters/mysql-adapter.d.ts.map +1 -1
  25. package/dist/adapters/mysql-adapter.js +24 -561
  26. package/dist/adapters/mysql-adapter.js.map +1 -1
  27. package/dist/adapters/postgresql-adapter.d.ts +15 -203
  28. package/dist/adapters/postgresql-adapter.d.ts.map +1 -1
  29. package/dist/adapters/postgresql-adapter.js +24 -223
  30. package/dist/adapters/postgresql-adapter.js.map +1 -1
  31. package/dist/adapters/sqlite-adapter.d.ts +4 -28
  32. package/dist/adapters/sqlite-adapter.d.ts.map +1 -1
  33. package/dist/adapters/sqlite-adapter.js +4 -32
  34. package/dist/adapters/sqlite-adapter.js.map +1 -1
  35. package/dist/adapters/types.d.ts +1 -4
  36. package/dist/adapters/types.d.ts.map +1 -1
  37. package/dist/backend/backend-factory.d.ts +3 -3
  38. package/dist/backend/backend-factory.js +3 -3
  39. package/dist/backend/local-backend.d.ts.map +1 -1
  40. package/dist/backend/local-backend.js +0 -5
  41. package/dist/backend/local-backend.js.map +1 -1
  42. package/dist/cli/db-export.d.ts.map +1 -1
  43. package/dist/cli/db-export.js +54 -32
  44. package/dist/cli/db-export.js.map +1 -1
  45. package/dist/cli/db-import.d.ts.map +1 -1
  46. package/dist/cli/db-import.js +32 -31
  47. package/dist/cli/db-import.js.map +1 -1
  48. package/dist/cli/hooks/on-exit-plan.d.ts.map +1 -1
  49. package/dist/cli/hooks/on-exit-plan.js +42 -1
  50. package/dist/cli/hooks/on-exit-plan.js.map +1 -1
  51. package/dist/cli/hooks/on-prompt.d.ts.map +1 -1
  52. package/dist/cli/hooks/on-prompt.js +5 -0
  53. package/dist/cli/hooks/on-prompt.js.map +1 -1
  54. package/dist/cli/hooks/plan-processor.d.ts.map +1 -1
  55. package/dist/cli/hooks/plan-processor.js +16 -2
  56. package/dist/cli/hooks/plan-processor.js.map +1 -1
  57. package/dist/cli/hooks/stdin-parser.d.ts +41 -0
  58. package/dist/cli/hooks/stdin-parser.d.ts.map +1 -1
  59. package/dist/cli/hooks/stdin-parser.js +140 -4
  60. package/dist/cli/hooks/stdin-parser.js.map +1 -1
  61. package/dist/cli/hooks/track-plan.d.ts +13 -0
  62. package/dist/cli/hooks/track-plan.d.ts.map +1 -1
  63. package/dist/cli/hooks/track-plan.js +58 -3
  64. package/dist/cli/hooks/track-plan.js.map +1 -1
  65. package/dist/cli.d.ts.map +1 -1
  66. package/dist/cli.js +1 -12
  67. package/dist/cli.js.map +1 -1
  68. package/dist/config/cloud-config-loader.d.ts +8 -8
  69. package/dist/config/cloud-config-loader.d.ts.map +1 -1
  70. package/dist/config/cloud-config-loader.js +12 -12
  71. package/dist/config/cloud-config-loader.js.map +1 -1
  72. package/dist/config/global-config.d.ts +24 -46
  73. package/dist/config/global-config.d.ts.map +1 -1
  74. package/dist/config/global-config.js +174 -56
  75. package/dist/config/global-config.js.map +1 -1
  76. package/dist/config/loader.d.ts +1 -18
  77. package/dist/config/loader.d.ts.map +1 -1
  78. package/dist/config/loader.js +1 -89
  79. package/dist/config/loader.js.map +1 -1
  80. package/dist/config/types.d.ts +2 -64
  81. package/dist/config/types.d.ts.map +1 -1
  82. package/dist/config/types.js +0 -18
  83. package/dist/config/types.js.map +1 -1
  84. package/dist/database/index.d.ts +1 -2
  85. package/dist/database/index.d.ts.map +1 -1
  86. package/dist/database/index.js +1 -3
  87. package/dist/database/index.js.map +1 -1
  88. package/dist/database/migrations/v4/20251126000001_v4_migrate_data.d.ts.map +1 -1
  89. package/dist/database/migrations/v4/20251126000001_v4_migrate_data.js +2 -1
  90. package/dist/database/migrations/v4/20251126000001_v4_migrate_data.js.map +1 -1
  91. package/dist/database/operations/queries.d.ts +0 -4
  92. package/dist/database/operations/queries.d.ts.map +1 -1
  93. package/dist/database/operations/queries.js +0 -8
  94. package/dist/database/operations/queries.js.map +1 -1
  95. package/dist/index.d.ts +1 -1
  96. package/dist/index.js +2 -2
  97. package/dist/index.js.map +1 -1
  98. package/dist/init-rules.d.ts.map +1 -1
  99. package/dist/init-rules.js +0 -1
  100. package/dist/init-rules.js.map +1 -1
  101. package/dist/knexfile.d.ts.map +1 -1
  102. package/dist/knexfile.js +2 -1
  103. package/dist/knexfile.js.map +1 -1
  104. package/dist/migration/local-to-global.d.ts +19 -0
  105. package/dist/migration/local-to-global.d.ts.map +1 -0
  106. package/dist/migration/local-to-global.js +133 -0
  107. package/dist/migration/local-to-global.js.map +1 -0
  108. package/dist/saas-connector/client/types.d.ts +1 -1
  109. package/dist/saas-connector/client/types.d.ts.map +1 -1
  110. package/dist/schema.js +1 -1
  111. package/dist/server/setup.d.ts.map +1 -1
  112. package/dist/server/setup.js +15 -7
  113. package/dist/server/setup.js.map +1 -1
  114. package/dist/tests/backend/backend-factory.test.js +2 -2
  115. package/dist/tests/backend/backend-factory.test.js.map +1 -1
  116. package/dist/tests/docker/native/constraint-operations.test.d.ts +2 -17
  117. package/dist/tests/docker/native/constraint-operations.test.d.ts.map +1 -1
  118. package/dist/tests/docker/native/constraint-operations.test.js +3 -82
  119. package/dist/tests/docker/native/constraint-operations.test.js.map +1 -1
  120. package/dist/tests/docker/native/db-init.d.ts +3 -34
  121. package/dist/tests/docker/native/db-init.d.ts.map +1 -1
  122. package/dist/tests/docker/native/db-init.js +15 -77
  123. package/dist/tests/docker/native/db-init.js.map +1 -1
  124. package/dist/tests/docker/native/decision-operations.test.d.ts +2 -10
  125. package/dist/tests/docker/native/decision-operations.test.d.ts.map +1 -1
  126. package/dist/tests/docker/native/decision-operations.test.js +2 -84
  127. package/dist/tests/docker/native/decision-operations.test.js.map +1 -1
  128. package/dist/tests/docker/native/help-system.test.d.ts +2 -5
  129. package/dist/tests/docker/native/help-system.test.d.ts.map +1 -1
  130. package/dist/tests/docker/native/help-system.test.js +2 -47
  131. package/dist/tests/docker/native/help-system.test.js.map +1 -1
  132. package/dist/tests/docker/native/suggest-tool.test.d.ts +3 -11
  133. package/dist/tests/docker/native/suggest-tool.test.d.ts.map +1 -1
  134. package/dist/tests/docker/native/suggest-tool.test.js +3 -60
  135. package/dist/tests/docker/native/suggest-tool.test.js.map +1 -1
  136. package/dist/tests/docker/native/test-harness.d.ts +2 -23
  137. package/dist/tests/docker/native/test-harness.d.ts.map +1 -1
  138. package/dist/tests/docker/native/test-harness.js +5 -59
  139. package/dist/tests/docker/native/test-harness.js.map +1 -1
  140. package/dist/tests/feature/decision/analytics.test.js +2 -1
  141. package/dist/tests/feature/decision/analytics.test.js.map +1 -1
  142. package/dist/tests/feature/decision/batch-validation-comprehensive.test.js +2 -7
  143. package/dist/tests/feature/decision/batch-validation-comprehensive.test.js.map +1 -1
  144. package/dist/tests/feature/decision/batch-validation.test.js +2 -1
  145. package/dist/tests/feature/decision/batch-validation.test.js.map +1 -1
  146. package/dist/tests/integration/auto-trigger-suggestions.test.js +4 -37
  147. package/dist/tests/integration/auto-trigger-suggestions.test.js.map +1 -1
  148. package/dist/tests/integration/hybrid-similarity-detection.test.js +2 -1
  149. package/dist/tests/integration/hybrid-similarity-detection.test.js.map +1 -1
  150. package/dist/tests/integration/json-export-import.test.d.ts.map +1 -0
  151. package/dist/tests/integration/json-export-import.test.js.map +1 -0
  152. package/dist/tests/unit/case-insensitive-validator.test.d.ts +0 -7
  153. package/dist/tests/unit/case-insensitive-validator.test.d.ts.map +1 -1
  154. package/dist/tests/unit/case-insensitive-validator.test.js +0 -22
  155. package/dist/tests/unit/case-insensitive-validator.test.js.map +1 -1
  156. package/dist/tests/unit/config/cloud-config-loader.test.js +4 -2
  157. package/dist/tests/unit/config/cloud-config-loader.test.js.map +1 -1
  158. package/dist/tests/unit/config/global-db-migration.test.d.ts +12 -0
  159. package/dist/tests/unit/config/global-db-migration.test.d.ts.map +1 -0
  160. package/dist/tests/unit/config/global-db-migration.test.js +117 -0
  161. package/dist/tests/unit/config/global-db-migration.test.js.map +1 -0
  162. package/dist/tests/unit/constraint-scorer.test.d.ts +2 -7
  163. package/dist/tests/unit/constraint-scorer.test.d.ts.map +1 -1
  164. package/dist/tests/unit/constraint-scorer.test.js +2 -28
  165. package/dist/tests/unit/constraint-scorer.test.js.map +1 -1
  166. package/dist/tests/unit/hooks/grok-hook-normalization.test.d.ts +9 -0
  167. package/dist/tests/unit/hooks/grok-hook-normalization.test.d.ts.map +1 -0
  168. package/dist/tests/unit/hooks/grok-hook-normalization.test.js +98 -0
  169. package/dist/tests/unit/hooks/grok-hook-normalization.test.js.map +1 -0
  170. package/dist/tests/unit/hooks/grok-plan-template-injection.test.d.ts +7 -0
  171. package/dist/tests/unit/hooks/grok-plan-template-injection.test.d.ts.map +1 -0
  172. package/dist/tests/unit/hooks/grok-plan-template-injection.test.js +55 -0
  173. package/dist/tests/unit/hooks/grok-plan-template-injection.test.js.map +1 -0
  174. package/dist/tests/unit/universal-knex.test.js +9 -0
  175. package/dist/tests/unit/universal-knex.test.js.map +1 -1
  176. package/dist/tests/unit/validation/parameter-validation.test.js +0 -24
  177. package/dist/tests/unit/validation/parameter-validation.test.js.map +1 -1
  178. package/dist/tests/utils/db-config.d.ts.map +1 -1
  179. package/dist/tests/utils/db-config.js +0 -9
  180. package/dist/tests/utils/db-config.js.map +1 -1
  181. package/dist/tests/utils/db-import.d.ts.map +1 -1
  182. package/dist/tests/utils/db-import.js +0 -3
  183. package/dist/tests/utils/db-import.js.map +1 -1
  184. package/dist/tests/utils/db-schema.d.ts.map +1 -1
  185. package/dist/tests/utils/db-schema.js +48 -51
  186. package/dist/tests/utils/db-schema.js.map +1 -1
  187. package/dist/tests/utils/db-seeding.d.ts.map +1 -1
  188. package/dist/tests/utils/db-seeding.js +0 -3
  189. package/dist/tests/utils/db-seeding.js.map +1 -1
  190. package/dist/tests/utils/index.d.ts +0 -1
  191. package/dist/tests/utils/index.d.ts.map +1 -1
  192. package/dist/tests/utils/index.js +0 -2
  193. package/dist/tests/utils/index.js.map +1 -1
  194. package/dist/tests/utils/test-helpers.d.ts +6 -76
  195. package/dist/tests/utils/test-helpers.d.ts.map +1 -1
  196. package/dist/tests/utils/test-helpers.js +56 -162
  197. package/dist/tests/utils/test-helpers.js.map +1 -1
  198. package/dist/tests/utils/test-lifecycle.d.ts +2 -28
  199. package/dist/tests/utils/test-lifecycle.d.ts.map +1 -1
  200. package/dist/tests/utils/test-lifecycle.js +2 -31
  201. package/dist/tests/utils/test-lifecycle.js.map +1 -1
  202. package/dist/tools/context/index.d.ts +0 -1
  203. package/dist/tools/context/index.d.ts.map +1 -1
  204. package/dist/tools/context/index.js +0 -2
  205. package/dist/tools/context/index.js.map +1 -1
  206. package/dist/tools/context/types.d.ts +1 -1
  207. package/dist/tools/context/types.d.ts.map +1 -1
  208. package/dist/types/actions.d.ts +6 -29
  209. package/dist/types/actions.d.ts.map +1 -1
  210. package/dist/types/actions.js +1 -2
  211. package/dist/types/actions.js.map +1 -1
  212. package/dist/types/constraint/params.d.ts +24 -1
  213. package/dist/types/constraint/params.d.ts.map +1 -1
  214. package/dist/types/constraint/params.js +3 -0
  215. package/dist/types/constraint/params.js.map +1 -1
  216. package/dist/types/constraint/responses.d.ts +18 -1
  217. package/dist/types/constraint/responses.d.ts.map +1 -1
  218. package/dist/types/constraint/responses.js +3 -0
  219. package/dist/types/constraint/responses.js.map +1 -1
  220. package/dist/types/decision/batch.d.ts +2 -5
  221. package/dist/types/decision/batch.d.ts.map +1 -1
  222. package/dist/types/decision/batch.js +3 -3
  223. package/dist/types/decision/batch.js.map +1 -1
  224. package/dist/types/decision/params.d.ts +7 -4
  225. package/dist/types/decision/params.d.ts.map +1 -1
  226. package/dist/types/decision/responses.d.ts +49 -35
  227. package/dist/types/decision/responses.d.ts.map +1 -1
  228. package/dist/types/decision/templates.d.ts +2 -18
  229. package/dist/types/decision/templates.d.ts.map +1 -1
  230. package/dist/types/decision/templates.js +3 -3
  231. package/dist/types/decision/templates.js.map +1 -1
  232. package/dist/types/enums.d.ts +11 -13
  233. package/dist/types/enums.d.ts.map +1 -1
  234. package/dist/types/enums.js +5 -13
  235. package/dist/types/enums.js.map +1 -1
  236. package/dist/types/import-export.d.ts +7 -30
  237. package/dist/types/import-export.d.ts.map +1 -1
  238. package/dist/types/import-export.js +1 -2
  239. package/dist/types/import-export.js.map +1 -1
  240. package/dist/types/index.d.ts +18 -22
  241. package/dist/types/index.d.ts.map +1 -1
  242. package/dist/types/index.js +4 -32
  243. package/dist/types/index.js.map +1 -1
  244. package/dist/types/master-entities.d.ts +1 -10
  245. package/dist/types/master-entities.d.ts.map +1 -1
  246. package/dist/types/master-entities.js +1 -2
  247. package/dist/types/master-entities.js.map +1 -1
  248. package/dist/types/transaction-entities.d.ts +2 -21
  249. package/dist/types/transaction-entities.d.ts.map +1 -1
  250. package/dist/types/transaction-entities.js +1 -1
  251. package/dist/types/validation.d.ts +1 -16
  252. package/dist/types/validation.d.ts.map +1 -1
  253. package/dist/types/validation.js +1 -2
  254. package/dist/types/validation.js.map +1 -1
  255. package/dist/types/view-entities.d.ts +3 -12
  256. package/dist/types/view-entities.d.ts.map +1 -1
  257. package/dist/types/view-entities.js +1 -1
  258. package/dist/types.d.ts +4 -718
  259. package/dist/types.d.ts.map +1 -1
  260. package/dist/types.js +5 -39
  261. package/dist/types.js.map +1 -1
  262. package/dist/utils/parameter-validator.d.ts +2 -2
  263. package/dist/utils/parameter-validator.d.ts.map +1 -1
  264. package/dist/utils/parameter-validator.js.map +1 -1
  265. package/dist/utils/path-normalize.d.ts +23 -0
  266. package/dist/utils/path-normalize.d.ts.map +1 -0
  267. package/dist/utils/path-normalize.js +38 -0
  268. package/dist/utils/path-normalize.js.map +1 -0
  269. package/dist/utils/project-root.d.ts +6 -3
  270. package/dist/utils/project-root.d.ts.map +1 -1
  271. package/dist/utils/project-root.js +11 -3
  272. package/dist/utils/project-root.js.map +1 -1
  273. package/dist/watcher/base-watcher.d.ts +0 -4
  274. package/dist/watcher/base-watcher.d.ts.map +1 -1
  275. package/dist/watcher/base-watcher.js +11 -22
  276. package/dist/watcher/base-watcher.js.map +1 -1
  277. package/docs/CLI_USAGE.md +27 -107
  278. package/docs/CONFIGURATION.md +10 -5
  279. package/docs/DATABASE_AUTH.md +3 -3
  280. package/docs/HOOKS_GUIDE.md +40 -6
  281. package/docs/MIGRATION_TO_SAAS.md +2 -2
  282. package/docs/SHARED_DATABASE.md +108 -0
  283. package/package.json +4 -3
  284. package/dist/adapters/auth/auth-types.d.ts +0 -30
  285. package/dist/adapters/auth/auth-types.d.ts.map +0 -1
  286. package/dist/adapters/auth/auth-types.js +0 -30
  287. package/dist/adapters/auth/auth-types.js.map +0 -1
  288. package/dist/cli/db-dump.d.ts +0 -36
  289. package/dist/cli/db-dump.d.ts.map +0 -1
  290. package/dist/cli/db-dump.js +0 -384
  291. package/dist/cli/db-dump.js.map +0 -1
  292. package/dist/database/config/config-ops.d.ts +0 -42
  293. package/dist/database/config/config-ops.d.ts.map +0 -1
  294. package/dist/database/config/config-ops.js +0 -102
  295. package/dist/database/config/config-ops.js.map +0 -1
  296. package/dist/formatters/adr-formatter.d.ts +0 -22
  297. package/dist/formatters/adr-formatter.d.ts.map +0 -1
  298. package/dist/formatters/adr-formatter.js +0 -127
  299. package/dist/formatters/adr-formatter.js.map +0 -1
  300. package/dist/formatters/confluence-formatter.d.ts +0 -26
  301. package/dist/formatters/confluence-formatter.d.ts.map +0 -1
  302. package/dist/formatters/confluence-formatter.js +0 -129
  303. package/dist/formatters/confluence-formatter.js.map +0 -1
  304. package/dist/formatters/index.d.ts +0 -34
  305. package/dist/formatters/index.d.ts.map +0 -1
  306. package/dist/formatters/index.js +0 -57
  307. package/dist/formatters/index.js.map +0 -1
  308. package/dist/formatters/markdown-formatter.d.ts +0 -16
  309. package/dist/formatters/markdown-formatter.d.ts.map +0 -1
  310. package/dist/formatters/markdown-formatter.js +0 -110
  311. package/dist/formatters/markdown-formatter.js.map +0 -1
  312. package/dist/formatters/notion-formatter.d.ts +0 -29
  313. package/dist/formatters/notion-formatter.d.ts.map +0 -1
  314. package/dist/formatters/notion-formatter.js +0 -177
  315. package/dist/formatters/notion-formatter.js.map +0 -1
  316. package/dist/formatters/types.d.ts +0 -31
  317. package/dist/formatters/types.d.ts.map +0 -1
  318. package/dist/formatters/types.js +0 -6
  319. package/dist/formatters/types.js.map +0 -1
  320. package/dist/tests/database/sql-dump/converters.test.d.ts +0 -7
  321. package/dist/tests/database/sql-dump/converters.test.d.ts.map +0 -1
  322. package/dist/tests/database/sql-dump/converters.test.js +0 -314
  323. package/dist/tests/database/sql-dump/converters.test.js.map +0 -1
  324. package/dist/tests/database/sql-dump/default-conversions.test.d.ts +0 -8
  325. package/dist/tests/database/sql-dump/default-conversions.test.d.ts.map +0 -1
  326. package/dist/tests/database/sql-dump/default-conversions.test.js +0 -141
  327. package/dist/tests/database/sql-dump/default-conversions.test.js.map +0 -1
  328. package/dist/tests/database/sql-dump/table-ordering.test.d.ts +0 -27
  329. package/dist/tests/database/sql-dump/table-ordering.test.d.ts.map +0 -1
  330. package/dist/tests/database/sql-dump/table-ordering.test.js +0 -284
  331. package/dist/tests/database/sql-dump/table-ordering.test.js.map +0 -1
  332. package/dist/tests/database/sql-dump/type-conversion.test.d.ts +0 -8
  333. package/dist/tests/database/sql-dump/type-conversion.test.d.ts.map +0 -1
  334. package/dist/tests/database/sql-dump/type-conversion.test.js +0 -361
  335. package/dist/tests/database/sql-dump/type-conversion.test.js.map +0 -1
  336. package/dist/tests/docker/cross-database.test.d.ts +0 -21
  337. package/dist/tests/docker/cross-database.test.d.ts.map +0 -1
  338. package/dist/tests/docker/cross-database.test.js +0 -308
  339. package/dist/tests/docker/cross-database.test.js.map +0 -1
  340. package/dist/tests/docker/dump-import.test.d.ts +0 -15
  341. package/dist/tests/docker/dump-import.test.d.ts.map +0 -1
  342. package/dist/tests/docker/dump-import.test.js +0 -424
  343. package/dist/tests/docker/dump-import.test.js.map +0 -1
  344. package/dist/tests/docker/fk-constraints.test.d.ts +0 -13
  345. package/dist/tests/docker/fk-constraints.test.d.ts.map +0 -1
  346. package/dist/tests/docker/fk-constraints.test.js +0 -381
  347. package/dist/tests/docker/fk-constraints.test.js.map +0 -1
  348. package/dist/tests/docker/indexes.test.d.ts +0 -12
  349. package/dist/tests/docker/indexes.test.d.ts.map +0 -1
  350. package/dist/tests/docker/indexes.test.js +0 -250
  351. package/dist/tests/docker/indexes.test.js.map +0 -1
  352. package/dist/tests/docker/integration.test.d.ts +0 -16
  353. package/dist/tests/docker/integration.test.d.ts.map +0 -1
  354. package/dist/tests/docker/integration.test.js +0 -323
  355. package/dist/tests/docker/integration.test.js.map +0 -1
  356. package/dist/tests/docker/multi-project-migration.test.d.ts +0 -17
  357. package/dist/tests/docker/multi-project-migration.test.d.ts.map +0 -1
  358. package/dist/tests/docker/multi-project-migration.test.js +0 -394
  359. package/dist/tests/docker/multi-project-migration.test.js.map +0 -1
  360. package/dist/tests/docker/schema-migration.test.d.ts +0 -8
  361. package/dist/tests/docker/schema-migration.test.d.ts.map +0 -1
  362. package/dist/tests/docker/schema-migration.test.js +0 -98
  363. package/dist/tests/docker/schema-migration.test.js.map +0 -1
  364. package/dist/tests/integration/e2e-workflow1-debug.test.d.ts +0 -5
  365. package/dist/tests/integration/e2e-workflow1-debug.test.d.ts.map +0 -1
  366. package/dist/tests/integration/e2e-workflow1-debug.test.js +0 -85
  367. package/dist/tests/integration/e2e-workflow1-debug.test.js.map +0 -1
  368. package/dist/tests/integration/suggest-simple.test.d.ts +0 -5
  369. package/dist/tests/integration/suggest-simple.test.d.ts.map +0 -1
  370. package/dist/tests/integration/suggest-simple.test.js +0 -90
  371. package/dist/tests/integration/suggest-simple.test.js.map +0 -1
  372. package/dist/tests/migrations/test-all-versions-real.d.ts +0 -8
  373. package/dist/tests/migrations/test-all-versions-real.d.ts.map +0 -1
  374. package/dist/tests/migrations/test-all-versions-real.js +0 -236
  375. package/dist/tests/migrations/test-all-versions-real.js.map +0 -1
  376. package/dist/tests/migrations/test-all-versions.d.ts +0 -14
  377. package/dist/tests/migrations/test-all-versions.d.ts.map +0 -1
  378. package/dist/tests/migrations/test-all-versions.js +0 -519
  379. package/dist/tests/migrations/test-all-versions.js.map +0 -1
  380. package/dist/tests/migrations/v4/v4-fresh-install.test.d.ts +0 -7
  381. package/dist/tests/migrations/v4/v4-fresh-install.test.d.ts.map +0 -1
  382. package/dist/tests/migrations/v4/v4-fresh-install.test.js +0 -168
  383. package/dist/tests/migrations/v4/v4-fresh-install.test.js.map +0 -1
  384. package/dist/tests/migrations/v4/v4-migrate-data.test.d.ts +0 -13
  385. package/dist/tests/migrations/v4/v4-migrate-data.test.d.ts.map +0 -1
  386. package/dist/tests/migrations/v4/v4-migrate-data.test.js +0 -264
  387. package/dist/tests/migrations/v4/v4-migrate-data.test.js.map +0 -1
  388. package/dist/tests/unit/utils/case-insensitive-validator.test.d.ts +0 -2
  389. package/dist/tests/unit/utils/case-insensitive-validator.test.d.ts.map +0 -1
  390. package/dist/tests/unit/utils/case-insensitive-validator.test.js +0 -97
  391. package/dist/tests/unit/utils/case-insensitive-validator.test.js.map +0 -1
  392. package/dist/tests/utils/json-export-import.test.d.ts.map +0 -1
  393. package/dist/tests/utils/json-export-import.test.js.map +0 -1
  394. package/dist/tests/utils/task-helpers.d.ts +0 -67
  395. package/dist/tests/utils/task-helpers.d.ts.map +0 -1
  396. package/dist/tests/utils/task-helpers.js +0 -134
  397. package/dist/tests/utils/task-helpers.js.map +0 -1
  398. package/dist/tools/context/actions/export.d.ts +0 -35
  399. package/dist/tools/context/actions/export.d.ts.map +0 -1
  400. package/dist/tools/context/actions/export.js +0 -93
  401. package/dist/tools/context/actions/export.js.map +0 -1
  402. package/dist/types/file/params.d.ts +0 -40
  403. package/dist/types/file/params.d.ts.map +0 -1
  404. package/dist/types/file/params.js +0 -6
  405. package/dist/types/file/params.js.map +0 -1
  406. package/dist/types/file/responses.d.ts +0 -2
  407. package/dist/types/file/responses.d.ts.map +0 -1
  408. package/dist/types/file/responses.js +0 -2
  409. package/dist/types/file/responses.js.map +0 -1
  410. package/dist/types/task/params.d.ts +0 -173
  411. package/dist/types/task/params.d.ts.map +0 -1
  412. package/dist/types/task/params.js +0 -8
  413. package/dist/types/task/params.js.map +0 -1
  414. package/dist/types/task/responses.d.ts +0 -334
  415. package/dist/types/task/responses.d.ts.map +0 -1
  416. package/dist/types/task/responses.js +0 -8
  417. package/dist/types/task/responses.js.map +0 -1
  418. package/dist/utils/sql-dump/core/dependency-sort.d.ts +0 -16
  419. package/dist/utils/sql-dump/core/dependency-sort.d.ts.map +0 -1
  420. package/dist/utils/sql-dump/core/dependency-sort.js +0 -105
  421. package/dist/utils/sql-dump/core/dependency-sort.js.map +0 -1
  422. package/dist/utils/sql-dump/core/generate-dump.d.ts +0 -13
  423. package/dist/utils/sql-dump/core/generate-dump.d.ts.map +0 -1
  424. package/dist/utils/sql-dump/core/generate-dump.js +0 -201
  425. package/dist/utils/sql-dump/core/generate-dump.js.map +0 -1
  426. package/dist/utils/sql-dump/core/index-export.d.ts +0 -10
  427. package/dist/utils/sql-dump/core/index-export.d.ts.map +0 -1
  428. package/dist/utils/sql-dump/core/index-export.js +0 -173
  429. package/dist/utils/sql-dump/core/index-export.js.map +0 -1
  430. package/dist/utils/sql-dump/core/sequence-reset.d.ts +0 -6
  431. package/dist/utils/sql-dump/core/sequence-reset.d.ts.map +0 -1
  432. package/dist/utils/sql-dump/core/sequence-reset.js +0 -28
  433. package/dist/utils/sql-dump/core/sequence-reset.js.map +0 -1
  434. package/dist/utils/sql-dump/core/table-export.d.ts +0 -2
  435. package/dist/utils/sql-dump/core/table-export.d.ts.map +0 -1
  436. package/dist/utils/sql-dump/core/table-export.js +0 -4
  437. package/dist/utils/sql-dump/core/table-export.js.map +0 -1
  438. package/dist/utils/sql-dump/core/view-export.d.ts +0 -2
  439. package/dist/utils/sql-dump/core/view-export.d.ts.map +0 -1
  440. package/dist/utils/sql-dump/core/view-export.js +0 -4
  441. package/dist/utils/sql-dump/core/view-export.js.map +0 -1
  442. package/dist/utils/sql-dump/formatters/bulk-insert.d.ts +0 -14
  443. package/dist/utils/sql-dump/formatters/bulk-insert.d.ts.map +0 -1
  444. package/dist/utils/sql-dump/formatters/bulk-insert.js +0 -177
  445. package/dist/utils/sql-dump/formatters/bulk-insert.js.map +0 -1
  446. package/dist/utils/sql-dump/formatters/identifiers.d.ts +0 -6
  447. package/dist/utils/sql-dump/formatters/identifiers.d.ts.map +0 -1
  448. package/dist/utils/sql-dump/formatters/identifiers.js +0 -16
  449. package/dist/utils/sql-dump/formatters/identifiers.js.map +0 -1
  450. package/dist/utils/sql-dump/formatters/value-formatter.d.ts +0 -14
  451. package/dist/utils/sql-dump/formatters/value-formatter.d.ts.map +0 -1
  452. package/dist/utils/sql-dump/formatters/value-formatter.js +0 -281
  453. package/dist/utils/sql-dump/formatters/value-formatter.js.map +0 -1
  454. package/dist/utils/sql-dump/generators/controls.d.ts +0 -10
  455. package/dist/utils/sql-dump/generators/controls.d.ts.map +0 -1
  456. package/dist/utils/sql-dump/generators/controls.js +0 -36
  457. package/dist/utils/sql-dump/generators/controls.js.map +0 -1
  458. package/dist/utils/sql-dump/generators/headers.d.ts +0 -6
  459. package/dist/utils/sql-dump/generators/headers.d.ts.map +0 -1
  460. package/dist/utils/sql-dump/generators/headers.js +0 -19
  461. package/dist/utils/sql-dump/generators/headers.js.map +0 -1
  462. package/dist/utils/sql-dump/index.d.ts +0 -14
  463. package/dist/utils/sql-dump/index.d.ts.map +0 -1
  464. package/dist/utils/sql-dump/index.js +0 -16
  465. package/dist/utils/sql-dump/index.js.map +0 -1
  466. package/dist/utils/sql-dump/schema/indexes.d.ts +0 -20
  467. package/dist/utils/sql-dump/schema/indexes.d.ts.map +0 -1
  468. package/dist/utils/sql-dump/schema/indexes.js +0 -108
  469. package/dist/utils/sql-dump/schema/indexes.js.map +0 -1
  470. package/dist/utils/sql-dump/schema/primary-keys.d.ts +0 -6
  471. package/dist/utils/sql-dump/schema/primary-keys.d.ts.map +0 -1
  472. package/dist/utils/sql-dump/schema/primary-keys.js +0 -41
  473. package/dist/utils/sql-dump/schema/primary-keys.js.map +0 -1
  474. package/dist/utils/sql-dump/schema/tables.d.ts +0 -15
  475. package/dist/utils/sql-dump/schema/tables.d.ts.map +0 -1
  476. package/dist/utils/sql-dump/schema/tables.js +0 -518
  477. package/dist/utils/sql-dump/schema/tables.js.map +0 -1
  478. package/dist/utils/sql-dump/schema/views.d.ts +0 -11
  479. package/dist/utils/sql-dump/schema/views.d.ts.map +0 -1
  480. package/dist/utils/sql-dump/schema/views.js +0 -116
  481. package/dist/utils/sql-dump/schema/views.js.map +0 -1
  482. package/dist/utils/sql-dump/types.d.ts +0 -10
  483. package/dist/utils/sql-dump/types.d.ts.map +0 -1
  484. package/dist/utils/sql-dump/types.js +0 -3
  485. package/dist/utils/sql-dump/types.js.map +0 -1
  486. package/dist/utils/sql-dump-converters.d.ts +0 -188
  487. package/dist/utils/sql-dump-converters.d.ts.map +0 -1
  488. package/dist/utils/sql-dump-converters.js +0 -315
  489. package/dist/utils/sql-dump-converters.js.map +0 -1
  490. package/dist/watcher/gitignore-parser.d.ts +0 -70
  491. package/dist/watcher/gitignore-parser.d.ts.map +0 -1
  492. package/dist/watcher/gitignore-parser.js +0 -195
  493. package/dist/watcher/gitignore-parser.js.map +0 -1
  494. package/dist/watcher/index.d.ts +0 -9
  495. package/dist/watcher/index.d.ts.map +0 -1
  496. package/dist/watcher/index.js +0 -8
  497. package/dist/watcher/index.js.map +0 -1
  498. /package/dist/tests/{utils → integration}/json-export-import.test.d.ts +0 -0
  499. /package/dist/tests/{utils → integration}/json-export-import.test.js +0 -0
@@ -1,638 +1,71 @@
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
1
  import type { Knex } from 'knex';
40
2
  import type { DatabaseAdapter } from './types.js';
41
3
  import type { DatabaseConfig } from '../config/types.js';
42
4
  import type { BaseAuthProvider, ConnectionParams } from './auth/base-auth-provider.js';
43
- /**
44
- * Abstract base class for database adapters with authentication integration.
45
- *
46
- * This class provides common functionality for all database adapters, integrating
47
- * authentication providers with Knex.js connections. Subclasses implement
48
- * database-specific features (SQLite pragmas, PostgreSQL settings, MySQL config).
49
- *
50
- * **Design Principles:**
51
- * - Separation of concerns: Auth provider handles authentication, adapter handles DB operations
52
- * - Lazy initialization: Knex instance created only after successful authentication
53
- * - Resource safety: Explicit cleanup for both auth providers and DB connections
54
- * - Fail-fast validation: Auth provider validates config before connection attempt
55
- * - Backward compatibility: Maintains DatabaseAdapter interface contract
56
- *
57
- * **Authentication Integration:**
58
- * - SQLite: No authentication provider (null), direct file connection
59
- * - PostgreSQL/MySQL: Auth provider handles tunneling/IAM/direct auth
60
- * - SSH tunneling: Provider establishes tunnel, returns localhost connection params
61
- * - Cloud IAM: Provider generates temporary tokens, returns params with SSL config
62
- *
63
- * **Error Handling:**
64
- * - Constructor: Config validation (throws if invalid)
65
- * - connect(): Authentication failures, connection failures
66
- * - getKnex(): Throws if called before connect()
67
- * - cleanup(): Swallows errors to prevent cascading failures
68
- *
69
- * @abstract
70
- * @implements {DatabaseAdapter}
71
- *
72
- * @example
73
- * // Implementing a PostgreSQL adapter
74
- * class PostgreSQLAdapter extends BaseAdapter {
75
- * readonly supportsReturning = true;
76
- * readonly supportsJSON = true;
77
- * readonly databaseName = 'postgresql' as const;
78
- *
79
- * async initialize(): Promise<void> {
80
- * const knex = this.getKnex();
81
- * // PostgreSQL-specific initialization
82
- * await knex.raw('SET statement_timeout = 30000');
83
- * await knex.raw('SET timezone = "UTC"');
84
- * }
85
- *
86
- * getDialect(): string {
87
- * return 'pg';
88
- * }
89
- *
90
- * // Implement other DatabaseAdapter methods...
91
- * }
92
- *
93
- * @example
94
- * // Using the adapter with authentication
95
- * const config: DatabaseConfig = {
96
- * type: 'postgres',
97
- * connection: {
98
- * host: 'db.internal',
99
- * port: 5432,
100
- * database: 'production'
101
- * },
102
- * auth: {
103
- * type: 'ssh',
104
- * user: 'postgres',
105
- * password: 'secret',
106
- * ssh: {
107
- * host: 'bastion.example.com',
108
- * username: 'deploy',
109
- * privateKeyPath: '/path/to/key.pem'
110
- * }
111
- * }
112
- * };
113
- *
114
- * const adapter = new PostgreSQLAdapter(config);
115
- * try {
116
- * await adapter.connect();
117
- * const knex = adapter.getKnex();
118
- * const users = await knex('users').select('*');
119
- * console.log(users);
120
- * } finally {
121
- * await adapter.disconnect();
122
- * await adapter.cleanup();
123
- * }
124
- *
125
- * @example
126
- * // Transaction support
127
- * const adapter = new PostgreSQLAdapter(config);
128
- * await adapter.connect();
129
- *
130
- * try {
131
- * await adapter.transaction(async (trx) => {
132
- * await trx('accounts').where({ id: 1 }).update({ balance: 100 });
133
- * await trx('accounts').where({ id: 2 }).update({ balance: 200 });
134
- * });
135
- * } finally {
136
- * await adapter.disconnect();
137
- * await adapter.cleanup();
138
- * }
139
- *
140
- * @example
141
- * // SQLite adapter (no authentication)
142
- * class SQLiteAdapter extends BaseAdapter {
143
- * async connect(): Promise<Knex> {
144
- * // SQLite doesn't need authentication provider
145
- * // Override connect to bypass auth flow
146
- * const config: Knex.Config = {
147
- * client: 'better-sqlite3',
148
- * connection: {
149
- * filename: this.config.connection.database
150
- * },
151
- * useNullAsDefault: true
152
- * };
153
- *
154
- * this.knex = knex(config);
155
- * await this.initialize();
156
- * return this.knex;
157
- * }
158
- *
159
- * getDialect(): string {
160
- * return 'sqlite3';
161
- * }
162
- * }
163
- */
5
+ /** Abstract base class for database adapters with authentication integration. */
164
6
  export declare abstract class BaseAdapter implements DatabaseAdapter {
165
- /**
166
- * Database configuration containing connection and authentication settings.
167
- * @protected
168
- * @readonly
169
- */
7
+ /** @protected */
170
8
  protected readonly config: DatabaseConfig;
171
- /**
172
- * Authentication provider instance for handling credentials, tunnels, and tokens.
173
- * Null for databases that don't require authentication (e.g., SQLite).
174
- * @protected
175
- */
9
+ /** @protected */
176
10
  protected authProvider: BaseAuthProvider | null;
177
- /**
178
- * Knex.js instance for database operations.
179
- * Null until connect() is called successfully.
180
- * @protected
181
- */
11
+ /** @protected */
182
12
  protected knexInstance: Knex | null;
183
- /**
184
- * Creates a new database adapter instance.
185
- *
186
- * @param {DatabaseConfig} config - Database configuration object
187
- *
188
- * @throws {Error} If database type is unsupported
189
- *
190
- * @example
191
- * const adapter = new PostgreSQLAdapter({
192
- * type: 'postgres',
193
- * connection: { host: 'localhost', port: 5432, database: 'mydb' },
194
- * auth: { type: 'direct', user: 'postgres', password: 'postgres' }
195
- * });
196
- */
197
13
  constructor(config: DatabaseConfig);
198
- /**
199
- * Performs adapter-specific initialization after connection is established.
200
- *
201
- * This method is called automatically after Knex connection is created.
202
- * Subclasses implement database-specific setup:
203
- *
204
- * **SQLite:**
205
- * - PRAGMA settings (journal_mode, foreign_keys, synchronous)
206
- * - Query performance optimizations
207
- *
208
- * **PostgreSQL:**
209
- * - Session settings (statement_timeout, timezone)
210
- * - Search path configuration
211
- * - Connection pool settings
212
- *
213
- * **MySQL:**
214
- * - Session variables (sql_mode, time_zone)
215
- * - Character set configuration
216
- * - Transaction isolation level
217
- *
218
- * @abstract
219
- * @returns {Promise<void>}
220
- *
221
- * @throws {Error} If initialization fails
222
- *
223
- * @example
224
- * // SQLite implementation
225
- * async initialize(): Promise<void> {
226
- * const knex = this.getKnex();
227
- * await knex.raw('PRAGMA journal_mode = WAL');
228
- * await knex.raw('PRAGMA foreign_keys = ON');
229
- * await knex.raw('PRAGMA synchronous = NORMAL');
230
- * }
231
- *
232
- * @example
233
- * // PostgreSQL implementation
234
- * async initialize(): Promise<void> {
235
- * const knex = this.getKnex();
236
- * await knex.raw('SET statement_timeout = 30000');
237
- * await knex.raw('SET timezone = "UTC"');
238
- * await knex.raw('SET search_path = public');
239
- * }
240
- */
14
+ /** Performs adapter-specific initialization after connection is established. @abstract */
241
15
  abstract initialize(): Promise<void>;
242
- /**
243
- * Returns the Knex dialect identifier for this database.
244
- *
245
- * Used for Knex configuration and feature detection.
246
- *
247
- * **Valid Dialect Values:**
248
- * - 'sqlite3' - SQLite
249
- * - 'pg' - PostgreSQL
250
- * - 'mysql' - MySQL
251
- * - 'mysql2' - MySQL with mysql2 driver
252
- * - 'mssql' - Microsoft SQL Server
253
- * - 'oracledb' - Oracle Database
254
- *
255
- * @abstract
256
- * @returns {string} Knex dialect identifier
257
- *
258
- * @example
259
- * // SQLite adapter
260
- * getDialect(): string {
261
- * return 'sqlite3';
262
- * }
263
- *
264
- * @example
265
- * // PostgreSQL adapter
266
- * getDialect(): string {
267
- * return 'pg';
268
- * }
269
- */
16
+ /** Returns the Knex dialect identifier for this database. @abstract */
270
17
  abstract getDialect(): string;
271
- /**
272
- * Whether this database supports RETURNING clause in INSERT/UPDATE/DELETE.
273
- * @abstract
274
- */
18
+ /** Whether this database supports RETURNING clause. @abstract */
275
19
  abstract readonly supportsReturning: boolean;
276
- /**
277
- * Whether this database has native JSON support.
278
- * @abstract
279
- */
20
+ /** Whether this database has native JSON support. @abstract */
280
21
  abstract readonly supportsJSON: boolean;
281
- /**
282
- * Whether this database supports UPSERT operations (INSERT ... ON CONFLICT).
283
- * @abstract
284
- */
22
+ /** Whether this database supports UPSERT operations. @abstract */
285
23
  abstract readonly supportsUpsert: boolean;
286
- /**
287
- * Whether this database supports Common Table Expressions (WITH clause).
288
- * @abstract
289
- */
24
+ /** Whether this database supports Common Table Expressions. @abstract */
290
25
  abstract readonly supportsCTE: boolean;
291
- /**
292
- * Whether this database supports window functions.
293
- * @abstract
294
- */
26
+ /** Whether this database supports window functions. @abstract */
295
27
  abstract readonly supportsWindowFunctions: boolean;
296
- /**
297
- * Whether this database supports savepoints within transactions.
298
- * @abstract
299
- */
28
+ /** Whether this database supports savepoints within transactions. @abstract */
300
29
  abstract readonly supportsSavepoints: boolean;
301
- /**
302
- * Database name identifier.
303
- * @abstract
304
- */
30
+ /** Database name identifier. @abstract */
305
31
  abstract readonly databaseName: 'sqlite' | 'postgresql' | 'mysql';
306
- /**
307
- * Establishes database connection with authentication.
308
- *
309
- * This method orchestrates the complete connection flow:
310
- * 1. Create authentication provider (if required)
311
- * 2. Validate authentication configuration
312
- * 3. Authenticate and obtain connection parameters
313
- * 4. Create Knex instance with authenticated params
314
- * 5. Call initialize() for adapter-specific setup
315
- *
316
- * **Authentication Flow:**
317
- * - Direct: Use credentials as-is
318
- * - SSH: Establish tunnel, connect to localhost
319
- * - AWS/GCP IAM: Generate token, connect with SSL
320
- *
321
- * **Important Notes:**
322
- * - This method is idempotent: calling twice reuses existing connection
323
- * - Auth provider resources remain allocated until cleanup() is called
324
- * - Knex instance is accessible via getKnex() after successful connection
325
- * - Subclasses can override for special handling (e.g., SQLite)
326
- *
327
- * @returns {Promise<Knex>} Knex instance for database operations
328
- *
329
- * @throws {Error} 'Database already connected' - if connection exists
330
- * @throws {Error} Auth provider validation errors
331
- * @throws {Error} Authentication failures (invalid credentials, network issues)
332
- * @throws {Error} Knex connection failures (database unreachable, invalid database name)
333
- * @throws {Error} Initialization failures (adapter-specific setup errors)
334
- *
335
- * @example
336
- * // Standard usage
337
- * const adapter = new PostgreSQLAdapter(config);
338
- * try {
339
- * const knex = await adapter.connect();
340
- * console.log('Connected successfully');
341
- * } catch (error) {
342
- * console.error('Connection failed:', error.message);
343
- * await adapter.cleanup();
344
- * throw error;
345
- * }
346
- *
347
- * @example
348
- * // Idempotent connection
349
- * const adapter = new PostgreSQLAdapter(config);
350
- * const knex1 = await adapter.connect(); // Establishes connection
351
- * const knex2 = await adapter.connect(); // Returns same instance
352
- * console.log(knex1 === knex2); // true
353
- */
32
+ /** Establishes database connection with authentication. */
354
33
  connect(): Promise<Knex>;
355
- /**
356
- * Closes the database connection.
357
- *
358
- * This method closes the Knex connection pool, releasing all database connections.
359
- * It does NOT release authentication provider resources (SSH tunnels, tokens) -
360
- * call cleanup() to release those.
361
- *
362
- * **Resource Lifecycle:**
363
- * - disconnect() → Closes Knex connection pool
364
- * - cleanup() → Releases auth provider resources (tunnels, tokens)
365
- * - Both must be called for complete cleanup
366
- *
367
- * **Important Notes:**
368
- * - This method is idempotent: safe to call multiple times
369
- * - Pending queries are allowed to complete before closing
370
- * - After disconnect(), getKnex() will throw an error
371
- * - Auth provider resources remain allocated until cleanup()
372
- *
373
- * @returns {Promise<void>}
374
- *
375
- * @example
376
- * // Complete cleanup flow
377
- * const adapter = new PostgreSQLAdapter(config);
378
- * try {
379
- * await adapter.connect();
380
- * // ... use database ...
381
- * } finally {
382
- * await adapter.disconnect(); // Close DB connection
383
- * await adapter.cleanup(); // Release auth resources
384
- * }
385
- *
386
- * @example
387
- * // Idempotent disconnect
388
- * await adapter.disconnect(); // Closes connection
389
- * await adapter.disconnect(); // Safe - no-op
390
- */
34
+ /** Closes the database connection. */
391
35
  disconnect(): Promise<void>;
392
- /**
393
- * Releases authentication provider resources.
394
- *
395
- * This method releases resources allocated during authentication:
396
- * - SSH tunnels: Closes SSH connection and releases local port
397
- * - Cloud IAM: Invalidates cached tokens
398
- * - Direct connections: No-op (no resources to release)
399
- *
400
- * **Important Notes:**
401
- * - This method MUST be called after disconnect() to prevent resource leaks
402
- * - Errors during cleanup are caught and logged, not thrown
403
- * - This method is idempotent: safe to call multiple times
404
- * - Auth provider is set to null after cleanup
405
- *
406
- * **Resource Leak Prevention:**
407
- * Always call cleanup() in a finally block to ensure resources are released
408
- * even if database operations fail.
409
- *
410
- * @returns {Promise<void>}
411
- *
412
- * @example
413
- * // Proper cleanup flow
414
- * const adapter = new PostgreSQLAdapter(config);
415
- * try {
416
- * await adapter.connect();
417
- * // ... database operations ...
418
- * } finally {
419
- * await adapter.disconnect();
420
- * await adapter.cleanup();
421
- * }
422
- *
423
- * @example
424
- * // Error handling during cleanup
425
- * try {
426
- * await adapter.cleanup();
427
- * } catch (error) {
428
- * // Cleanup errors are logged but not thrown to prevent cascading failures
429
- * console.error('Cleanup failed:', error);
430
- * }
431
- */
36
+ /** Releases authentication provider resources. */
432
37
  cleanup(): Promise<void>;
433
- /**
434
- * Returns the Knex.js instance for database operations.
435
- *
436
- * This method provides access to the underlying Knex instance for executing
437
- * queries, building query chains, and accessing raw connections.
438
- *
439
- * **Important Notes:**
440
- * - Must call connect() before calling this method
441
- * - Throws error if connection not established
442
- * - Returns same instance across multiple calls
443
- *
444
- * @returns {Knex} Knex instance for database operations
445
- *
446
- * @throws {Error} 'Database not connected. Call connect() first.' - if not connected
447
- *
448
- * @example
449
- * // Standard usage
450
- * const adapter = new PostgreSQLAdapter(config);
451
- * await adapter.connect();
452
- * const knex = adapter.getKnex();
453
- * const users = await knex('users').select('*');
454
- *
455
- * @example
456
- * // Query builder
457
- * const knex = adapter.getKnex();
458
- * const query = knex('orders')
459
- * .where('status', 'pending')
460
- * .andWhere('created_at', '>', '2024-01-01')
461
- * .orderBy('created_at', 'desc');
462
- *
463
- * @example
464
- * // Raw queries
465
- * const knex = adapter.getKnex();
466
- * const result = await knex.raw('SELECT * FROM users WHERE id = ?', [userId]);
467
- */
38
+ /** Returns the Knex.js instance for database operations. */
468
39
  getKnex(): Knex;
469
- /**
470
- * Executes a callback within a database transaction.
471
- *
472
- * This method delegates to Knex's transaction management, providing:
473
- * - Automatic commit on success
474
- * - Automatic rollback on error
475
- * - Optional isolation level configuration
476
- *
477
- * **Transaction Isolation Levels:**
478
- * - 'serializable': Strongest isolation, prevents all anomalies
479
- * - 'repeatable read': Prevents non-repeatable reads and phantom reads
480
- * - 'read committed': Prevents dirty reads (default for most databases)
481
- *
482
- * **Important Notes:**
483
- * - All database operations within callback must use the trx parameter
484
- * - Do not mix transaction queries with non-transaction queries
485
- * - Nested transactions use savepoints (if supported by database)
486
- *
487
- * @param {Function} callback - Async function receiving transaction object
488
- * @param {Object} [options] - Transaction options
489
- * @param {string} [options.isolationLevel] - Transaction isolation level
490
- * @returns {Promise<T>} Result from callback function
491
- *
492
- * @throws {Error} If callback throws (transaction is rolled back)
493
- *
494
- * @example
495
- * // Bank transfer transaction
496
- * await adapter.transaction(async (trx) => {
497
- * await trx('accounts')
498
- * .where({ id: fromAccount })
499
- * .decrement('balance', amount);
500
- *
501
- * await trx('accounts')
502
- * .where({ id: toAccount })
503
- * .increment('balance', amount);
504
- *
505
- * await trx('transfers').insert({
506
- * from_account: fromAccount,
507
- * to_account: toAccount,
508
- * amount
509
- * });
510
- * });
511
- *
512
- * @example
513
- * // Transaction with isolation level
514
- * await adapter.transaction(async (trx) => {
515
- * const balance = await trx('accounts')
516
- * .where({ id: accountId })
517
- * .first('balance');
518
- *
519
- * if (balance.balance >= amount) {
520
- * await trx('accounts')
521
- * .where({ id: accountId })
522
- * .decrement('balance', amount);
523
- * }
524
- * }, { isolationLevel: 'serializable' });
525
- *
526
- * @example
527
- * // Error handling (automatic rollback)
528
- * try {
529
- * await adapter.transaction(async (trx) => {
530
- * await trx('users').insert({ name: 'Alice' });
531
- * throw new Error('Something went wrong');
532
- * await trx('logs').insert({ message: 'Never executed' });
533
- * });
534
- * } catch (error) {
535
- * console.log('Transaction rolled back:', error.message);
536
- * }
537
- */
40
+ /** Executes a callback within a database transaction. */
538
41
  transaction<T>(callback: (trx: Knex.Transaction) => Promise<T>, options?: {
539
42
  isolationLevel?: 'serializable' | 'read committed' | 'repeatable read';
540
43
  }): Promise<T>;
541
- /**
542
- * Builds Knex configuration from connection parameters.
543
- *
544
- * This method converts ConnectionParams (returned by auth provider) into
545
- * Knex.Config format. Subclasses can override to customize configuration.
546
- *
547
- * **Default Behavior:**
548
- * - Uses dialect from getDialect()
549
- * - Passes connection params to Knex
550
- * - Configures SSL if present
551
- * - Merges additional params
552
- *
553
- * @protected
554
- * @param {ConnectionParams | null} connParams - Connection parameters from auth provider
555
- * @returns {Knex.Config} Knex configuration object
556
- *
557
- * @example
558
- * // Custom configuration in subclass
559
- * protected buildKnexConfig(connParams: ConnectionParams | null): Knex.Config {
560
- * const baseConfig = super.buildKnexConfig(connParams);
561
- * return {
562
- * ...baseConfig,
563
- * pool: {
564
- * min: 2,
565
- * max: 10,
566
- * afterCreate: (conn, done) => {
567
- * // Custom connection setup
568
- * done(null, conn);
569
- * }
570
- * }
571
- * };
572
- * }
573
- */
44
+ /** Builds Knex configuration from connection parameters. @protected */
574
45
  protected buildKnexConfig(connParams: ConnectionParams | null): Knex.Config;
575
- /**
576
- * Inserts a row and returns the inserted record.
577
- * Adapts to databases that don't support RETURNING clause.
578
- * @abstract
579
- */
46
+ /** Inserts a row and returns the inserted record. @abstract */
580
47
  abstract insertReturning<T extends Record<string, any>>(table: string, data: Partial<T>): Promise<T>;
581
- /**
582
- * Upserts a row (INSERT ... ON CONFLICT UPDATE).
583
- * Adapts to different upsert syntaxes across databases.
584
- * @abstract
585
- */
48
+ /** Upserts a row (INSERT ... ON CONFLICT UPDATE). @abstract */
586
49
  abstract upsert<T extends Record<string, any>>(table: string, data: Partial<T>, conflictColumns: string[], updateColumns?: string[]): Promise<number>;
587
- /**
588
- * Extracts a value from a JSON column.
589
- * @abstract
590
- */
50
+ /** Extracts a value from a JSON column. @abstract */
591
51
  abstract jsonExtract(column: string, path: string): Knex.Raw;
592
- /**
593
- * Builds a JSON object from field values.
594
- * @abstract
595
- */
52
+ /** Builds a JSON object from field values. @abstract */
596
53
  abstract jsonBuildObject(fields: Record<string, any>): Knex.Raw;
597
- /**
598
- * Returns current timestamp expression.
599
- * @abstract
600
- */
54
+ /** Returns current timestamp expression. @abstract */
601
55
  abstract currentTimestamp(): Knex.Raw;
602
- /**
603
- * Converts Unix epoch to datetime.
604
- * @abstract
605
- */
56
+ /** Converts Unix epoch to datetime. @abstract */
606
57
  abstract fromUnixEpoch(epochColumn: string): Knex.Raw;
607
- /**
608
- * Converts datetime to Unix epoch.
609
- * @abstract
610
- */
58
+ /** Converts datetime to Unix epoch. @abstract */
611
59
  abstract toUnixEpoch(timestampColumn: string): Knex.Raw;
612
- /**
613
- * Concatenates string values.
614
- * @abstract
615
- */
60
+ /** Concatenates string values. @abstract */
616
61
  abstract concat(...values: Array<string | Knex.Raw>): Knex.Raw;
617
- /**
618
- * Aggregates strings with separator.
619
- * @abstract
620
- */
62
+ /** Aggregates strings with separator. @abstract */
621
63
  abstract stringAgg(column: string, separator?: string): Knex.Raw;
622
- /**
623
- * Creates a savepoint within a transaction.
624
- * @abstract
625
- */
64
+ /** Creates a savepoint within a transaction. @abstract */
626
65
  abstract savepoint<T>(trx: Knex.Transaction, callback: (sp: Knex.Transaction) => Promise<T>): Promise<T>;
627
- /**
628
- * Checks if a table exists in the database.
629
- * @abstract
630
- */
66
+ /** Checks if a table exists in the database. @abstract */
631
67
  abstract tableExists(tableName: string): Promise<boolean>;
632
- /**
633
- * Adds an auto-increment column to a table builder.
634
- * @abstract
635
- */
68
+ /** Adds an auto-increment column to a table builder. @abstract */
636
69
  abstract autoIncrementColumn(table: Knex.CreateTableBuilder, columnName?: string): void;
637
70
  }
638
71
  //# sourceMappingURL=base-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/base-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/base-adapter.ts"],"names":[],"mappings":"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"}