@libredb/studio 0.9.7 → 0.9.12

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 (688) hide show
  1. package/dist/chunk-34YQUUCM.mjs +319 -0
  2. package/dist/chunk-34YQUUCM.mjs.map +1 -0
  3. package/dist/chunk-4LVB3K53.mjs +37 -0
  4. package/dist/chunk-4LVB3K53.mjs.map +1 -0
  5. package/dist/chunk-6DRZXXNT.mjs +100 -0
  6. package/dist/chunk-6DRZXXNT.mjs.map +1 -0
  7. package/dist/chunk-CZVV3JJB.mjs +160 -0
  8. package/dist/chunk-CZVV3JJB.mjs.map +1 -0
  9. package/dist/chunk-D4WVWWWF.js +332 -0
  10. package/dist/chunk-D4WVWWWF.js.map +1 -0
  11. package/dist/chunk-DY3KXE44.mjs +3 -0
  12. package/dist/chunk-DY3KXE44.mjs.map +1 -0
  13. package/dist/chunk-DZ2UB3C6.mjs +6679 -0
  14. package/dist/chunk-DZ2UB3C6.mjs.map +1 -0
  15. package/dist/chunk-FYSE52VB.js +242 -0
  16. package/dist/chunk-FYSE52VB.js.map +1 -0
  17. package/dist/chunk-G4WYE6TI.js +4 -0
  18. package/dist/chunk-G4WYE6TI.js.map +1 -0
  19. package/dist/chunk-JOGLIOFO.js +1310 -0
  20. package/dist/chunk-JOGLIOFO.js.map +1 -0
  21. package/dist/chunk-JZO5KRZN.js +165 -0
  22. package/dist/chunk-JZO5KRZN.js.map +1 -0
  23. package/dist/chunk-KV356UXJ.js +253 -0
  24. package/dist/chunk-KV356UXJ.js.map +1 -0
  25. package/dist/chunk-PPODO6HX.mjs +237 -0
  26. package/dist/chunk-PPODO6HX.mjs.map +1 -0
  27. package/dist/chunk-PTIRB2JO.js +258 -0
  28. package/dist/chunk-PTIRB2JO.js.map +1 -0
  29. package/dist/chunk-Q6LRDBK7.js +42 -0
  30. package/dist/chunk-Q6LRDBK7.js.map +1 -0
  31. package/dist/chunk-QJP5FZRY.mjs +255 -0
  32. package/dist/chunk-QJP5FZRY.mjs.map +1 -0
  33. package/dist/chunk-R3POCJK6.mjs +248 -0
  34. package/dist/chunk-R3POCJK6.mjs.map +1 -0
  35. package/dist/chunk-RBVDMLFV.js +6747 -0
  36. package/dist/chunk-RBVDMLFV.js.map +1 -0
  37. package/dist/chunk-RCQB4FCE.js +186 -0
  38. package/dist/chunk-RCQB4FCE.js.map +1 -0
  39. package/dist/chunk-SR5DRGBX.mjs +174 -0
  40. package/dist/chunk-SR5DRGBX.mjs.map +1 -0
  41. package/dist/chunk-VLCRUZX7.js +102 -0
  42. package/dist/chunk-VLCRUZX7.js.map +1 -0
  43. package/dist/chunk-VWVRUCQO.mjs +1289 -0
  44. package/dist/chunk-VWVRUCQO.mjs.map +1 -0
  45. package/dist/components.d.mts +273 -0
  46. package/dist/components.d.ts +273 -0
  47. package/dist/components.js +59 -0
  48. package/dist/components.js.map +1 -0
  49. package/dist/components.mjs +6 -0
  50. package/dist/components.mjs.map +1 -0
  51. package/dist/custom-BNDOYC5P.js +134 -0
  52. package/dist/custom-BNDOYC5P.js.map +1 -0
  53. package/dist/custom-S2EKFMP3.mjs +132 -0
  54. package/dist/custom-S2EKFMP3.mjs.map +1 -0
  55. package/dist/gemini-4ASHNK4H.js +81 -0
  56. package/dist/gemini-4ASHNK4H.js.map +1 -0
  57. package/dist/gemini-C5RBLQEJ.mjs +79 -0
  58. package/dist/gemini-C5RBLQEJ.mjs.map +1 -0
  59. package/dist/index.d.mts +6 -0
  60. package/dist/index.d.ts +6 -0
  61. package/dist/index.js +95 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/index.mjs +10 -0
  64. package/dist/index.mjs.map +1 -0
  65. package/dist/mongodb-XMZEZA4A.mjs +748 -0
  66. package/dist/mongodb-XMZEZA4A.mjs.map +1 -0
  67. package/dist/mongodb-YQJJTLX3.js +750 -0
  68. package/dist/mongodb-YQJJTLX3.js.map +1 -0
  69. package/dist/mssql-PMOU4D36.js +916 -0
  70. package/dist/mssql-PMOU4D36.js.map +1 -0
  71. package/{src/lib/db/providers/sql/mssql.ts → dist/mssql-ZH5VP2C5.mjs} +268 -423
  72. package/dist/mssql-ZH5VP2C5.mjs.map +1 -0
  73. package/{src/lib/db/providers/sql/mysql.ts → dist/mysql-I3WJQXN2.mjs} +277 -428
  74. package/dist/mysql-I3WJQXN2.mjs.map +1 -0
  75. package/dist/mysql-Y3MSA5QY.js +833 -0
  76. package/dist/mysql-Y3MSA5QY.js.map +1 -0
  77. package/dist/ollama-26BYLVEV.mjs +115 -0
  78. package/dist/ollama-26BYLVEV.mjs.map +1 -0
  79. package/dist/ollama-HVWAGKQC.js +117 -0
  80. package/dist/ollama-HVWAGKQC.js.map +1 -0
  81. package/dist/openai-4U56KPG7.mjs +111 -0
  82. package/dist/openai-4U56KPG7.mjs.map +1 -0
  83. package/dist/openai-AK3R37BS.js +113 -0
  84. package/dist/openai-AK3R37BS.js.map +1 -0
  85. package/dist/oracle-L6VEAVXO.js +917 -0
  86. package/dist/oracle-L6VEAVXO.js.map +1 -0
  87. package/{src/lib/db/providers/sql/oracle.ts → dist/oracle-P2G7T4P4.mjs} +321 -454
  88. package/dist/oracle-P2G7T4P4.mjs.map +1 -0
  89. package/{src/lib/db/providers/sql/postgres.ts → dist/postgres-O5KOQUVP.mjs} +261 -471
  90. package/dist/postgres-O5KOQUVP.mjs.map +1 -0
  91. package/dist/postgres-RLCWNFFX.js +971 -0
  92. package/dist/postgres-RLCWNFFX.js.map +1 -0
  93. package/dist/providers.d.mts +149 -0
  94. package/dist/providers.d.ts +149 -0
  95. package/dist/providers.js +44 -0
  96. package/dist/providers.js.map +1 -0
  97. package/dist/providers.mjs +7 -0
  98. package/dist/providers.mjs.map +1 -0
  99. package/dist/redis-4WMQOVLX.mjs +435 -0
  100. package/dist/redis-4WMQOVLX.mjs.map +1 -0
  101. package/dist/redis-QVQ6YU62.js +441 -0
  102. package/dist/redis-QVQ6YU62.js.map +1 -0
  103. package/dist/sqlite-4I2P2OGQ.js +554 -0
  104. package/dist/sqlite-4I2P2OGQ.js.map +1 -0
  105. package/dist/sqlite-OA4YJX5S.mjs +531 -0
  106. package/dist/sqlite-OA4YJX5S.mjs.map +1 -0
  107. package/dist/types-BJvJfxSY.d.mts +141 -0
  108. package/dist/types-BJvJfxSY.d.ts +141 -0
  109. package/dist/types-ClAg_v5k.d.mts +343 -0
  110. package/dist/types-Der_X8E8.d.ts +343 -0
  111. package/dist/types.d.mts +2 -0
  112. package/dist/types.d.ts +2 -0
  113. package/dist/types.js +6 -0
  114. package/dist/types.js.map +1 -0
  115. package/dist/types.mjs +3 -0
  116. package/dist/types.mjs.map +1 -0
  117. package/dist/workspace.d.mts +80 -0
  118. package/dist/workspace.d.ts +80 -0
  119. package/dist/workspace.js +4182 -0
  120. package/dist/workspace.js.map +1 -0
  121. package/dist/workspace.mjs +4155 -0
  122. package/dist/workspace.mjs.map +1 -0
  123. package/package.json +60 -5
  124. package/.claude/settings.local.json +0 -127
  125. package/.cursorrules +0 -426
  126. package/.devin/wiki.json +0 -143
  127. package/.dockerignore +0 -80
  128. package/.env.example +0 -159
  129. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -49
  130. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -29
  131. package/.github/PULL_REQUEST_TEMPLATE.md +0 -57
  132. package/.github/workflows/ci.yml +0 -185
  133. package/.github/workflows/codeql.yml +0 -57
  134. package/.github/workflows/docker-build-push.yml +0 -118
  135. package/.github/workflows/helm-release.yml +0 -113
  136. package/CLAUDE.md +0 -265
  137. package/CODE_OF_CONDUCT.md +0 -124
  138. package/CONTRIBUTING.md +0 -154
  139. package/Dockerfile +0 -73
  140. package/SECURITY.md +0 -107
  141. package/artifacthub-repo.yml +0 -4
  142. package/bun.lock +0 -1714
  143. package/bunfig.toml +0 -3
  144. package/charts/libredb-studio/.helmignore +0 -11
  145. package/charts/libredb-studio/Chart.lock +0 -6
  146. package/charts/libredb-studio/Chart.yaml +0 -50
  147. package/charts/libredb-studio/README.md +0 -206
  148. package/charts/libredb-studio/templates/NOTES.txt +0 -59
  149. package/charts/libredb-studio/templates/_helpers.tpl +0 -135
  150. package/charts/libredb-studio/templates/configmap.yaml +0 -37
  151. package/charts/libredb-studio/templates/deployment.yaml +0 -184
  152. package/charts/libredb-studio/templates/hpa.yaml +0 -32
  153. package/charts/libredb-studio/templates/ingress.yaml +0 -41
  154. package/charts/libredb-studio/templates/networkpolicy.yaml +0 -50
  155. package/charts/libredb-studio/templates/pdb.yaml +0 -18
  156. package/charts/libredb-studio/templates/pvc.yaml +0 -23
  157. package/charts/libredb-studio/templates/secret.yaml +0 -30
  158. package/charts/libredb-studio/templates/seed-configmap.yaml +0 -11
  159. package/charts/libredb-studio/templates/service.yaml +0 -22
  160. package/charts/libredb-studio/templates/serviceaccount.yaml +0 -13
  161. package/charts/libredb-studio/values.schema.json +0 -246
  162. package/charts/libredb-studio/values.yaml +0 -286
  163. package/components.json +0 -22
  164. package/conductor/code_styleguides/typescript.md +0 -43
  165. package/conductor/product-guidelines.md +0 -43
  166. package/conductor/product.md +0 -3
  167. package/conductor/setup_state.json +0 -1
  168. package/conductor/tech-stack.md +0 -39
  169. package/conductor/tracks/enhance_postgres_monitoring_20251227/metadata.json +0 -8
  170. package/conductor/tracks/enhance_postgres_monitoring_20251227/plan.md +0 -44
  171. package/conductor/tracks/enhance_postgres_monitoring_20251227/spec.md +0 -31
  172. package/conductor/tracks.md +0 -8
  173. package/conductor/workflow.md +0 -333
  174. package/database-compose.yml +0 -55
  175. package/docker/postgres-init/01-extensions.sql +0 -10
  176. package/docker/postgres-init/02-sample-data.sql +0 -585
  177. package/docker/postgres.yml +0 -68
  178. package/docker-compose.yml +0 -38
  179. package/docs/AI_PLAN.md +0 -74
  180. package/docs/API_DOCS.md +0 -875
  181. package/docs/ARCHITECTURE.md +0 -218
  182. package/docs/DATABASE_PROVIDERS.md +0 -358
  183. package/docs/FEATURES.md +0 -116
  184. package/docs/HELM_CHART.md +0 -252
  185. package/docs/LOGIN_PAGE.md +0 -178
  186. package/docs/MONACO_EDITOR_PERFORMANCE.md +0 -315
  187. package/docs/OIDC_ARCH.md +0 -681
  188. package/docs/OIDC_SETUP.md +0 -322
  189. package/docs/POSTGRES_METRICS.md +0 -516
  190. package/docs/QUERY_OPTIMIZATION.md +0 -370
  191. package/docs/SEED_CONNECTIONS.md +0 -468
  192. package/docs/SQL_ALIAS_COMPLETION.md +0 -190
  193. package/docs/STORAGE_ARCHITECTURE.md +0 -565
  194. package/docs/STORAGE_QUICK_SETUP.md +0 -419
  195. package/docs/TECHNICAL_PLAN.md +0 -36
  196. package/docs/THEMING.md +0 -345
  197. package/docs/adding-a-new-database-provider.md +0 -642
  198. package/docs/backlogs/000-PLATFORM_DATA_SYNC_DATABASE.md +0 -360
  199. package/docs/backlogs/001-INLINE_DATA_EDITING.md +0 -118
  200. package/docs/backlogs/002-DATA_IMPORT.md +0 -215
  201. package/docs/backlogs/003-QUERY_TIME_MACHINE.md +0 -183
  202. package/docs/backlogs/004-AI_DATA_STORYTELLER.md +0 -292
  203. package/docs/backlogs/005-QUERY_PLAYGROUND.md +0 -352
  204. package/docs/backlogs/006-DATA_MASKING.md +0 -418
  205. package/docs/enterprise-features.md +0 -718
  206. package/docs/kubernetes-helm-chart-artifacthub-plan.md +0 -803
  207. package/docs/medium-koyeb-article-en.md +0 -215
  208. package/docs/plans/test-plans.md +0 -445
  209. package/docs/releases/RELEASE.V0.3.0.md +0 -22
  210. package/docs/releases/RELEASE.V0.4.0.md +0 -154
  211. package/docs/releases/RELEASE.V0.5.0.md +0 -252
  212. package/docs/releases/RELEASE_v0.5.6.md +0 -145
  213. package/docs/releases/RELEASE_v0.6.1.md +0 -303
  214. package/docs/releases/RELEASE_v0.6.7.md +0 -292
  215. package/docs/releases/RELEASE_v0.7.0.md +0 -332
  216. package/docs/releases/RELEASE_v0.8.0.md +0 -521
  217. package/docs/sampledb/titanic.sql +0 -1379
  218. package/docs/superpowers/plans/2026-03-25-seed-connections.md +0 -1362
  219. package/docs/superpowers/specs/2026-03-25-seed-connections-design.md +0 -590
  220. package/e2e/admin-dashboard.spec.ts +0 -64
  221. package/e2e/connection-management.spec.ts +0 -58
  222. package/e2e/export.spec.ts +0 -34
  223. package/e2e/login.spec.ts +0 -85
  224. package/e2e/query-execution.spec.ts +0 -35
  225. package/e2e/tab-management.spec.ts +0 -64
  226. package/eslint.config.mjs +0 -28
  227. package/fly.toml +0 -43
  228. package/next.config.ts +0 -32
  229. package/playwright.config.ts +0 -34
  230. package/postcss.config.mjs +0 -7
  231. package/public/favicon-32x32.png +0 -0
  232. package/public/favicon.ico +0 -0
  233. package/public/file.svg +0 -1
  234. package/public/globe.svg +0 -1
  235. package/public/logo.svg +0 -32
  236. package/public/next.svg +0 -1
  237. package/public/screenshots/code-generator.png +0 -0
  238. package/public/screenshots/connection-modal.png +0 -0
  239. package/public/screenshots/data-profiler.png +0 -0
  240. package/public/screenshots/erd-diagram.png +0 -0
  241. package/public/screenshots/hero-editor.png +0 -0
  242. package/public/screenshots/nl2sql.png +0 -0
  243. package/public/vercel.svg +0 -1
  244. package/public/window.svg +0 -1
  245. package/render.yaml +0 -58
  246. package/scripts/merge-lcov.mjs +0 -239
  247. package/sonar-project.properties +0 -16
  248. package/src/app/admin/error.tsx +0 -46
  249. package/src/app/admin/page.tsx +0 -10
  250. package/src/app/api/admin/audit/route.ts +0 -52
  251. package/src/app/api/admin/fleet-health/route.ts +0 -81
  252. package/src/app/api/ai/autopilot/route.ts +0 -105
  253. package/src/app/api/ai/chat/route.ts +0 -132
  254. package/src/app/api/ai/describe-schema/route.ts +0 -52
  255. package/src/app/api/ai/explain/route.ts +0 -86
  256. package/src/app/api/ai/impact/route.ts +0 -97
  257. package/src/app/api/ai/index-advisor/route.ts +0 -98
  258. package/src/app/api/ai/nl2sql/route.ts +0 -87
  259. package/src/app/api/ai/query-safety/route.ts +0 -87
  260. package/src/app/api/auth/login/route.ts +0 -62
  261. package/src/app/api/auth/logout/route.ts +0 -25
  262. package/src/app/api/auth/me/route.ts +0 -10
  263. package/src/app/api/auth/oidc/callback/route.ts +0 -82
  264. package/src/app/api/auth/oidc/login/route.ts +0 -43
  265. package/src/app/api/connections/managed/route.ts +0 -35
  266. package/src/app/api/db/cancel/route.ts +0 -42
  267. package/src/app/api/db/disconnect/route.ts +0 -28
  268. package/src/app/api/db/health/route.ts +0 -49
  269. package/src/app/api/db/maintenance/route.ts +0 -72
  270. package/src/app/api/db/monitoring/route.ts +0 -62
  271. package/src/app/api/db/multi-query/route.ts +0 -116
  272. package/src/app/api/db/pool-stats/route.ts +0 -37
  273. package/src/app/api/db/profile/route.ts +0 -144
  274. package/src/app/api/db/provider-meta/route.ts +0 -49
  275. package/src/app/api/db/query/route.ts +0 -50
  276. package/src/app/api/db/schema/route.ts +0 -47
  277. package/src/app/api/db/schema-snapshot/route.ts +0 -42
  278. package/src/app/api/db/test-connection/route.ts +0 -55
  279. package/src/app/api/db/transaction/route.ts +0 -111
  280. package/src/app/api/storage/[collection]/route.ts +0 -67
  281. package/src/app/api/storage/config/route.ts +0 -17
  282. package/src/app/api/storage/migrate/route.ts +0 -45
  283. package/src/app/api/storage/route.ts +0 -32
  284. package/src/app/error.tsx +0 -49
  285. package/src/app/global-error.tsx +0 -55
  286. package/src/app/globals.css +0 -146
  287. package/src/app/icon.svg +0 -42
  288. package/src/app/layout.tsx +0 -34
  289. package/src/app/login/login-form.tsx +0 -301
  290. package/src/app/login/page.tsx +0 -11
  291. package/src/app/monitoring/page.tsx +0 -8
  292. package/src/app/not-found.tsx +0 -29
  293. package/src/app/page.tsx +0 -5
  294. package/src/components/AIAutopilotPanel.tsx +0 -238
  295. package/src/components/CodeGenerator.tsx +0 -271
  296. package/src/components/CommandPalette.tsx +0 -227
  297. package/src/components/ConnectionModal.tsx +0 -759
  298. package/src/components/CreateTableModal.tsx +0 -281
  299. package/src/components/DataCharts.tsx +0 -962
  300. package/src/components/DataImportModal.tsx +0 -582
  301. package/src/components/DataProfiler.tsx +0 -335
  302. package/src/components/DatabaseDocs.tsx +0 -251
  303. package/src/components/MaskingSettings.tsx +0 -414
  304. package/src/components/MobileNav.tsx +0 -50
  305. package/src/components/NL2SQLPanel.tsx +0 -281
  306. package/src/components/PivotTable.tsx +0 -257
  307. package/src/components/QueryEditor.tsx +0 -760
  308. package/src/components/QueryHistory.tsx +0 -344
  309. package/src/components/QuerySafetyDialog.tsx +0 -290
  310. package/src/components/ResultsGrid.tsx +0 -644
  311. package/src/components/SaveQueryModal.tsx +0 -104
  312. package/src/components/SavedQueries.tsx +0 -128
  313. package/src/components/SchemaDiagram.tsx +0 -473
  314. package/src/components/SchemaDiff.tsx +0 -473
  315. package/src/components/SnapshotTimeline.tsx +0 -116
  316. package/src/components/Studio.tsx +0 -639
  317. package/src/components/TestDataGenerator.tsx +0 -261
  318. package/src/components/VisualExplain.tsx +0 -820
  319. package/src/components/admin/AdminDashboard.tsx +0 -163
  320. package/src/components/admin/tabs/AuditTab.tsx +0 -531
  321. package/src/components/admin/tabs/MonitoringEmbed.tsx +0 -11
  322. package/src/components/admin/tabs/OperationsTab.tsx +0 -646
  323. package/src/components/admin/tabs/OverviewTab.tsx +0 -1328
  324. package/src/components/admin/tabs/SecurityTab.tsx +0 -284
  325. package/src/components/community-section.tsx +0 -92
  326. package/src/components/icons/db-icons.tsx +0 -84
  327. package/src/components/libredb-logo.tsx +0 -61
  328. package/src/components/monitoring/MonitoringDashboard.tsx +0 -345
  329. package/src/components/monitoring/tabs/MetricChart.tsx +0 -82
  330. package/src/components/monitoring/tabs/OverviewTab.tsx +0 -263
  331. package/src/components/monitoring/tabs/PerformanceTab.tsx +0 -254
  332. package/src/components/monitoring/tabs/PoolTab.tsx +0 -174
  333. package/src/components/monitoring/tabs/QueriesTab.tsx +0 -287
  334. package/src/components/monitoring/tabs/SessionsTab.tsx +0 -316
  335. package/src/components/monitoring/tabs/StorageTab.tsx +0 -335
  336. package/src/components/monitoring/tabs/TablesTab.tsx +0 -300
  337. package/src/components/results-grid/ResultCard.tsx +0 -111
  338. package/src/components/results-grid/RowDetailSheet.tsx +0 -178
  339. package/src/components/results-grid/StatsBar.tsx +0 -201
  340. package/src/components/results-grid/index.ts +0 -1
  341. package/src/components/results-grid/utils.ts +0 -23
  342. package/src/components/schema-explorer/ColumnList.tsx +0 -53
  343. package/src/components/schema-explorer/SchemaExplorer.tsx +0 -182
  344. package/src/components/schema-explorer/TableItem.tsx +0 -210
  345. package/src/components/schema-explorer/index.ts +0 -1
  346. package/src/components/sidebar/ConnectionItem.tsx +0 -105
  347. package/src/components/sidebar/ConnectionsList.tsx +0 -62
  348. package/src/components/sidebar/Sidebar.tsx +0 -130
  349. package/src/components/sidebar/index.ts +0 -2
  350. package/src/components/studio/BottomPanel.tsx +0 -286
  351. package/src/components/studio/QueryToolbar.tsx +0 -180
  352. package/src/components/studio/StudioDesktopHeader.tsx +0 -114
  353. package/src/components/studio/StudioMobileHeader.tsx +0 -340
  354. package/src/components/studio/StudioTabBar.tsx +0 -82
  355. package/src/components/studio/index.ts +0 -5
  356. package/src/components/ui/accordion.tsx +0 -66
  357. package/src/components/ui/alert-dialog.tsx +0 -157
  358. package/src/components/ui/alert.tsx +0 -66
  359. package/src/components/ui/aspect-ratio.tsx +0 -11
  360. package/src/components/ui/avatar.tsx +0 -53
  361. package/src/components/ui/badge.tsx +0 -46
  362. package/src/components/ui/breadcrumb.tsx +0 -109
  363. package/src/components/ui/button-group.tsx +0 -83
  364. package/src/components/ui/button.tsx +0 -60
  365. package/src/components/ui/calendar.tsx +0 -216
  366. package/src/components/ui/card.tsx +0 -92
  367. package/src/components/ui/carousel.tsx +0 -241
  368. package/src/components/ui/chart.tsx +0 -357
  369. package/src/components/ui/checkbox.tsx +0 -32
  370. package/src/components/ui/collapsible.tsx +0 -33
  371. package/src/components/ui/command.tsx +0 -184
  372. package/src/components/ui/context-menu.tsx +0 -252
  373. package/src/components/ui/dialog.tsx +0 -143
  374. package/src/components/ui/drawer.tsx +0 -135
  375. package/src/components/ui/dropdown-menu.tsx +0 -257
  376. package/src/components/ui/empty.tsx +0 -104
  377. package/src/components/ui/field.tsx +0 -248
  378. package/src/components/ui/form.tsx +0 -167
  379. package/src/components/ui/hover-card.tsx +0 -44
  380. package/src/components/ui/input-group.tsx +0 -170
  381. package/src/components/ui/input-otp.tsx +0 -77
  382. package/src/components/ui/input.tsx +0 -21
  383. package/src/components/ui/item.tsx +0 -193
  384. package/src/components/ui/kbd.tsx +0 -28
  385. package/src/components/ui/label.tsx +0 -24
  386. package/src/components/ui/menubar.tsx +0 -276
  387. package/src/components/ui/navigation-menu.tsx +0 -168
  388. package/src/components/ui/pagination.tsx +0 -127
  389. package/src/components/ui/popover.tsx +0 -48
  390. package/src/components/ui/progress.tsx +0 -31
  391. package/src/components/ui/radio-group.tsx +0 -45
  392. package/src/components/ui/resizable.tsx +0 -56
  393. package/src/components/ui/scroll-area.tsx +0 -58
  394. package/src/components/ui/select.tsx +0 -187
  395. package/src/components/ui/separator.tsx +0 -28
  396. package/src/components/ui/sheet.tsx +0 -139
  397. package/src/components/ui/sidebar.tsx +0 -726
  398. package/src/components/ui/skeleton.tsx +0 -13
  399. package/src/components/ui/slider.tsx +0 -63
  400. package/src/components/ui/sonner.tsx +0 -40
  401. package/src/components/ui/spinner.tsx +0 -16
  402. package/src/components/ui/switch.tsx +0 -31
  403. package/src/components/ui/table.tsx +0 -116
  404. package/src/components/ui/tabs.tsx +0 -66
  405. package/src/components/ui/textarea.tsx +0 -18
  406. package/src/components/ui/toggle-group.tsx +0 -83
  407. package/src/components/ui/toggle.tsx +0 -47
  408. package/src/components/ui/tooltip.tsx +0 -61
  409. package/src/exports/components.ts +0 -15
  410. package/src/exports/index.ts +0 -4
  411. package/src/exports/providers.ts +0 -4
  412. package/src/exports/types.ts +0 -26
  413. package/src/hooks/use-ai-chat.ts +0 -182
  414. package/src/hooks/use-all-connections.ts +0 -66
  415. package/src/hooks/use-api-call.ts +0 -71
  416. package/src/hooks/use-auth.ts +0 -51
  417. package/src/hooks/use-connection-form.ts +0 -349
  418. package/src/hooks/use-connection-manager.ts +0 -169
  419. package/src/hooks/use-connection-payload.ts +0 -15
  420. package/src/hooks/use-inline-editing.ts +0 -109
  421. package/src/hooks/use-mobile.ts +0 -20
  422. package/src/hooks/use-monitoring-data.ts +0 -270
  423. package/src/hooks/use-provider-metadata.ts +0 -62
  424. package/src/hooks/use-query-execution.ts +0 -478
  425. package/src/hooks/use-storage-sync.ts +0 -259
  426. package/src/hooks/use-tab-manager.ts +0 -231
  427. package/src/hooks/use-toast.ts +0 -20
  428. package/src/hooks/use-transaction-control.ts +0 -64
  429. package/src/lib/api/error-codes.ts +0 -30
  430. package/src/lib/api/errors.ts +0 -236
  431. package/src/lib/api/with-error-handler.ts +0 -41
  432. package/src/lib/audit.ts +0 -105
  433. package/src/lib/auth.ts +0 -87
  434. package/src/lib/connection-string-parser.ts +0 -172
  435. package/src/lib/data-masking.ts +0 -385
  436. package/src/lib/db/base-provider.ts +0 -325
  437. package/src/lib/db/errors.ts +0 -317
  438. package/src/lib/db/factory.ts +0 -324
  439. package/src/lib/db/index.ts +0 -123
  440. package/src/lib/db/providers/document/index.ts +0 -6
  441. package/src/lib/db/providers/document/mongodb.ts +0 -992
  442. package/src/lib/db/providers/keyvalue/redis.ts +0 -554
  443. package/src/lib/db/providers/sql/index.ts +0 -11
  444. package/src/lib/db/providers/sql/sql-base.ts +0 -174
  445. package/src/lib/db/providers/sql/sqlite.ts +0 -721
  446. package/src/lib/db/types.ts +0 -437
  447. package/src/lib/db/utils/pool-manager.ts +0 -287
  448. package/src/lib/db/utils/query-limiter.ts +0 -239
  449. package/src/lib/db-ui-config.ts +0 -86
  450. package/src/lib/editor/mongodb-completions.ts +0 -172
  451. package/src/lib/editor/sql-completions.ts +0 -280
  452. package/src/lib/llm/base-provider.ts +0 -117
  453. package/src/lib/llm/factory.ts +0 -102
  454. package/src/lib/llm/index.ts +0 -90
  455. package/src/lib/llm/providers/custom.ts +0 -181
  456. package/src/lib/llm/providers/gemini.ts +0 -126
  457. package/src/lib/llm/providers/ollama.ts +0 -154
  458. package/src/lib/llm/providers/openai.ts +0 -146
  459. package/src/lib/llm/types.ts +0 -173
  460. package/src/lib/llm/utils/config.ts +0 -187
  461. package/src/lib/llm/utils/retry.ts +0 -119
  462. package/src/lib/llm/utils/streaming.ts +0 -202
  463. package/src/lib/logger.ts +0 -127
  464. package/src/lib/monitoring-thresholds.ts +0 -44
  465. package/src/lib/oidc.ts +0 -262
  466. package/src/lib/query-generators.ts +0 -61
  467. package/src/lib/schema-diff/diff-engine.ts +0 -273
  468. package/src/lib/schema-diff/migration-generator.ts +0 -208
  469. package/src/lib/schema-diff/types.ts +0 -55
  470. package/src/lib/seed/config-loader.ts +0 -79
  471. package/src/lib/seed/connection-filter.ts +0 -49
  472. package/src/lib/seed/credential-resolver.ts +0 -62
  473. package/src/lib/seed/index.ts +0 -40
  474. package/src/lib/seed/resolve-connection.ts +0 -57
  475. package/src/lib/seed/types.ts +0 -69
  476. package/src/lib/sql/alias-extractor.ts +0 -267
  477. package/src/lib/sql/index.ts +0 -8
  478. package/src/lib/sql/statement-splitter.ts +0 -167
  479. package/src/lib/sql/types.ts +0 -40
  480. package/src/lib/ssh/tunnel.ts +0 -142
  481. package/src/lib/storage/factory.ts +0 -84
  482. package/src/lib/storage/index.ts +0 -14
  483. package/src/lib/storage/local-storage.ts +0 -99
  484. package/src/lib/storage/providers/postgres.ts +0 -225
  485. package/src/lib/storage/providers/sqlite.ts +0 -153
  486. package/src/lib/storage/storage-facade.ts +0 -272
  487. package/src/lib/storage/types.ts +0 -75
  488. package/src/lib/time-series-buffer.ts +0 -58
  489. package/src/lib/types.ts +0 -173
  490. package/src/lib/utils.ts +0 -6
  491. package/src/proxy.ts +0 -104
  492. package/src/types/db-drivers.d.ts +0 -23
  493. package/src/types/html2canvas.d.ts +0 -9
  494. package/tests/api/admin/audit.test.ts +0 -178
  495. package/tests/api/admin/fleet-health.test.ts +0 -183
  496. package/tests/api/ai/autopilot.test.ts +0 -174
  497. package/tests/api/ai/chat.test.ts +0 -250
  498. package/tests/api/ai/describe-schema.test.ts +0 -266
  499. package/tests/api/ai/explain.test.ts +0 -199
  500. package/tests/api/ai/impact.test.ts +0 -168
  501. package/tests/api/ai/index-advisor.test.ts +0 -171
  502. package/tests/api/ai/nl2sql.test.ts +0 -202
  503. package/tests/api/ai/query-safety.test.ts +0 -196
  504. package/tests/api/auth/login.test.ts +0 -170
  505. package/tests/api/auth/logout.test.ts +0 -140
  506. package/tests/api/auth/me.test.ts +0 -73
  507. package/tests/api/auth/oidc-callback.test.ts +0 -215
  508. package/tests/api/auth/oidc-login.test.ts +0 -127
  509. package/tests/api/db/cancel.test.ts +0 -198
  510. package/tests/api/db/disconnect.test.ts +0 -124
  511. package/tests/api/db/health.test.ts +0 -222
  512. package/tests/api/db/maintenance.test.ts +0 -263
  513. package/tests/api/db/monitoring.test.ts +0 -221
  514. package/tests/api/db/multi-query.test.ts +0 -316
  515. package/tests/api/db/pool-stats.test.ts +0 -135
  516. package/tests/api/db/profile.test.ts +0 -330
  517. package/tests/api/db/provider-meta.test.ts +0 -193
  518. package/tests/api/db/query.test.ts +0 -314
  519. package/tests/api/db/schema-snapshot.test.ts +0 -170
  520. package/tests/api/db/schema.test.ts +0 -191
  521. package/tests/api/db/test-connection.test.ts +0 -185
  522. package/tests/api/db/transaction.test.ts +0 -314
  523. package/tests/api/proxy.test.ts +0 -191
  524. package/tests/api/seed/managed-route.test.ts +0 -113
  525. package/tests/api/storage/config.test.ts +0 -42
  526. package/tests/api/storage/storage-routes.test.ts +0 -309
  527. package/tests/components/AIAutopilotPanel.test.tsx +0 -756
  528. package/tests/components/AdminPage.test.tsx +0 -33
  529. package/tests/components/CodeGenerator.test.tsx +0 -182
  530. package/tests/components/CommandPalette.test.tsx +0 -428
  531. package/tests/components/CommunitySection.test.tsx +0 -91
  532. package/tests/components/ConnectionModal.mobile.test.tsx +0 -284
  533. package/tests/components/ConnectionModal.test.tsx +0 -570
  534. package/tests/components/CreateTableModal.test.tsx +0 -383
  535. package/tests/components/DataCharts.test.tsx +0 -739
  536. package/tests/components/DataImportModal.test.tsx +0 -751
  537. package/tests/components/DataProfiler.test.tsx +0 -589
  538. package/tests/components/DatabaseDocs.test.tsx +0 -353
  539. package/tests/components/LoginPage.test.tsx +0 -163
  540. package/tests/components/LoginPageOIDC.test.tsx +0 -92
  541. package/tests/components/MaskingSettings.test.tsx +0 -498
  542. package/tests/components/MobileNav.test.tsx +0 -30
  543. package/tests/components/MonitoringPage.test.tsx +0 -32
  544. package/tests/components/NL2SQLPanel.test.tsx +0 -621
  545. package/tests/components/Page.test.tsx +0 -33
  546. package/tests/components/PivotTable.test.tsx +0 -350
  547. package/tests/components/QueryEditor.test.tsx +0 -1730
  548. package/tests/components/QueryHistory.test.tsx +0 -572
  549. package/tests/components/QuerySafetyDialog.test.tsx +0 -586
  550. package/tests/components/ResultsGrid.test.tsx +0 -804
  551. package/tests/components/RootLayout.test.tsx +0 -83
  552. package/tests/components/SaveQueryModal.test.tsx +0 -25
  553. package/tests/components/SavedQueries.test.tsx +0 -43
  554. package/tests/components/SchemaDiagram.test.tsx +0 -1034
  555. package/tests/components/SchemaDiff.test.tsx +0 -906
  556. package/tests/components/SnapshotTimeline.test.tsx +0 -174
  557. package/tests/components/Studio.test.tsx +0 -1030
  558. package/tests/components/TestDataGenerator.test.tsx +0 -291
  559. package/tests/components/VisualExplain.test.tsx +0 -704
  560. package/tests/components/admin/AdminDashboard.test.tsx +0 -205
  561. package/tests/components/admin/AuditTab.test.tsx +0 -220
  562. package/tests/components/admin/MonitoringEmbed.test.tsx +0 -58
  563. package/tests/components/admin/OperationsTab.test.tsx +0 -975
  564. package/tests/components/admin/OverviewTab.test.tsx +0 -254
  565. package/tests/components/admin/SecurityTab.test.tsx +0 -467
  566. package/tests/components/monitoring/MetricChart.test.tsx +0 -111
  567. package/tests/components/monitoring/MonitoringDashboard.test.tsx +0 -259
  568. package/tests/components/monitoring/OverviewTab.test.tsx +0 -78
  569. package/tests/components/monitoring/PerformanceTab.test.tsx +0 -87
  570. package/tests/components/monitoring/PoolTab.test.tsx +0 -42
  571. package/tests/components/monitoring/QueriesTab.test.tsx +0 -80
  572. package/tests/components/monitoring/SessionsTab.test.tsx +0 -154
  573. package/tests/components/monitoring/StorageTab.test.tsx +0 -127
  574. package/tests/components/monitoring/TablesTab.test.tsx +0 -153
  575. package/tests/components/results-grid/ResultCard.test.tsx +0 -105
  576. package/tests/components/results-grid/RowDetailSheet.test.tsx +0 -308
  577. package/tests/components/results-grid/StatsBar.test.tsx +0 -162
  578. package/tests/components/schema-explorer/ColumnList.test.tsx +0 -151
  579. package/tests/components/schema-explorer/SchemaExplorer.test.tsx +0 -461
  580. package/tests/components/schema-explorer/TableItem.test.tsx +0 -415
  581. package/tests/components/sidebar/ConnectionItem.test.tsx +0 -201
  582. package/tests/components/sidebar/ConnectionsList.test.tsx +0 -176
  583. package/tests/components/sidebar/Sidebar.test.tsx +0 -187
  584. package/tests/components/studio/BottomPanel.test.tsx +0 -383
  585. package/tests/components/studio/QueryToolbar.test.tsx +0 -321
  586. package/tests/components/studio/StudioDesktopHeader.test.tsx +0 -377
  587. package/tests/components/studio/StudioMobileHeader.test.tsx +0 -198
  588. package/tests/components/studio/StudioTabBar.test.tsx +0 -331
  589. package/tests/fixtures/connections.ts +0 -96
  590. package/tests/fixtures/masking-configs.ts +0 -86
  591. package/tests/fixtures/query-results.ts +0 -71
  592. package/tests/fixtures/schemas.ts +0 -64
  593. package/tests/fixtures/seed-connections/invalid-config.yaml +0 -7
  594. package/tests/fixtures/seed-connections/minimal-config.yaml +0 -8
  595. package/tests/fixtures/seed-connections/mixed-credentials.yaml +0 -23
  596. package/tests/fixtures/seed-connections/multi-role-config.yaml +0 -30
  597. package/tests/fixtures/seed-connections/valid-config.json +0 -15
  598. package/tests/fixtures/seed-connections/valid-config.yaml +0 -51
  599. package/tests/helpers/mock-fetch.ts +0 -59
  600. package/tests/helpers/mock-monaco.ts +0 -112
  601. package/tests/helpers/mock-navigation.ts +0 -28
  602. package/tests/helpers/mock-next.ts +0 -80
  603. package/tests/helpers/mock-provider.ts +0 -133
  604. package/tests/helpers/mock-sonner.ts +0 -29
  605. package/tests/helpers/render-with-providers.tsx +0 -19
  606. package/tests/hooks/use-ai-chat.test.ts +0 -600
  607. package/tests/hooks/use-auth.test.ts +0 -371
  608. package/tests/hooks/use-connection-form.test.ts +0 -743
  609. package/tests/hooks/use-connection-manager.test.ts +0 -466
  610. package/tests/hooks/use-inline-editing.test.ts +0 -321
  611. package/tests/hooks/use-mobile.test.ts +0 -177
  612. package/tests/hooks/use-monitoring-data.test.ts +0 -819
  613. package/tests/hooks/use-provider-metadata.test.ts +0 -228
  614. package/tests/hooks/use-query-execution.test.ts +0 -1212
  615. package/tests/hooks/use-tab-manager.test.ts +0 -756
  616. package/tests/hooks/use-toast.test.ts +0 -74
  617. package/tests/hooks/use-transaction-control.test.ts +0 -211
  618. package/tests/integration/db/mongodb-provider.test.ts +0 -698
  619. package/tests/integration/db/mssql-provider.test.ts +0 -840
  620. package/tests/integration/db/mysql-provider.test.ts +0 -872
  621. package/tests/integration/db/oracle-provider.test.ts +0 -843
  622. package/tests/integration/db/postgres-provider.test.ts +0 -1382
  623. package/tests/integration/db/redis-provider.test.ts +0 -526
  624. package/tests/integration/db/sqlite-provider.test.ts +0 -480
  625. package/tests/integration/seed/seed-pipeline.test.ts +0 -102
  626. package/tests/isolated/factory-singleton.test.ts +0 -150
  627. package/tests/isolated/use-storage-sync.test.ts +0 -389
  628. package/tests/run-components.sh +0 -196
  629. package/tests/setup-dom.ts +0 -58
  630. package/tests/setup.ts +0 -40
  631. package/tests/unit/api-errors.test.ts +0 -210
  632. package/tests/unit/code-generator-functions.test.ts +0 -271
  633. package/tests/unit/components/column-list.test.tsx +0 -190
  634. package/tests/unit/components/data-import-modal.test.tsx +0 -441
  635. package/tests/unit/components/studio-mobile-header.test.tsx +0 -327
  636. package/tests/unit/data-charts-functions.test.ts +0 -496
  637. package/tests/unit/data-import-functions.test.ts +0 -320
  638. package/tests/unit/data-import-utils.test.ts +0 -125
  639. package/tests/unit/db/base-provider.test.ts +0 -517
  640. package/tests/unit/db/errors.test.ts +0 -403
  641. package/tests/unit/db/factory.test.ts +0 -436
  642. package/tests/unit/db/pool-manager.test.ts +0 -440
  643. package/tests/unit/db/query-limiter.test.ts +0 -387
  644. package/tests/unit/db/sql-base.test.ts +0 -438
  645. package/tests/unit/lib/api/error-codes.test.ts +0 -39
  646. package/tests/unit/lib/audit.test.ts +0 -326
  647. package/tests/unit/lib/auth.test.ts +0 -146
  648. package/tests/unit/lib/connection-string-parser.test.ts +0 -424
  649. package/tests/unit/lib/data-masking.test.ts +0 -583
  650. package/tests/unit/lib/db-icons.test.tsx +0 -41
  651. package/tests/unit/lib/monitoring-thresholds.test.ts +0 -133
  652. package/tests/unit/lib/oidc.test.ts +0 -509
  653. package/tests/unit/lib/query-generators.test.ts +0 -127
  654. package/tests/unit/lib/storage/factory.test.ts +0 -71
  655. package/tests/unit/lib/storage/local-storage.test.ts +0 -114
  656. package/tests/unit/lib/storage/providers/postgres.test.ts +0 -312
  657. package/tests/unit/lib/storage/providers/sqlite.test.ts +0 -232
  658. package/tests/unit/lib/storage/storage-facade-extended.test.ts +0 -331
  659. package/tests/unit/lib/storage/storage-facade.test.ts +0 -184
  660. package/tests/unit/lib/storage.test.ts +0 -317
  661. package/tests/unit/lib/time-series-buffer.test.ts +0 -212
  662. package/tests/unit/lib/utils.test.ts +0 -24
  663. package/tests/unit/llm/base-provider.test.ts +0 -238
  664. package/tests/unit/llm/config.test.ts +0 -262
  665. package/tests/unit/llm/custom-provider.test.ts +0 -281
  666. package/tests/unit/llm/gemini-provider.test.ts +0 -248
  667. package/tests/unit/llm/llm-factory.test.ts +0 -155
  668. package/tests/unit/llm/ollama-provider.test.ts +0 -288
  669. package/tests/unit/llm/openai-provider.test.ts +0 -324
  670. package/tests/unit/llm/retry.test.ts +0 -180
  671. package/tests/unit/llm/streaming.test.ts +0 -355
  672. package/tests/unit/logger.test.ts +0 -198
  673. package/tests/unit/mongodb-completions.test.ts +0 -516
  674. package/tests/unit/pivot-table-functions.test.ts +0 -76
  675. package/tests/unit/query-cancelled-error.test.ts +0 -81
  676. package/tests/unit/schema-diff/diff-engine.test.ts +0 -367
  677. package/tests/unit/schema-diff/migration-generator.test.ts +0 -513
  678. package/tests/unit/seed/config-loader.test.ts +0 -73
  679. package/tests/unit/seed/connection-filter.test.ts +0 -91
  680. package/tests/unit/seed/credential-resolver.test.ts +0 -85
  681. package/tests/unit/seed/index.test.ts +0 -72
  682. package/tests/unit/seed/resolve-connection.test.ts +0 -74
  683. package/tests/unit/seed/types.test.ts +0 -129
  684. package/tests/unit/sql/alias-extractor.test.ts +0 -444
  685. package/tests/unit/sql/statement-splitter.test.ts +0 -348
  686. package/tests/unit/sql-completions.test.ts +0 -463
  687. package/tests/unit/ssh-tunnel.test.ts +0 -465
  688. package/tsconfig.json +0 -42
@@ -1,256 +1,189 @@
1
- /**
2
- * MySQL Database Provider
3
- * Full MySQL support with connection pooling using mysql2
4
- */
5
-
6
- import mysql, { type Pool, type PoolConnection, type RowDataPacket, type FieldPacket } from 'mysql2/promise';
7
- import { SQLBaseProvider } from './sql-base';
8
- import {
9
- type DatabaseConnection,
10
- type TableSchema,
11
- type QueryResult,
12
- type HealthInfo,
13
- type MaintenanceType,
14
- type MaintenanceResult,
15
- type ProviderOptions,
16
- type ProviderCapabilities,
17
- type SlowQuery,
18
- type ActiveSession,
19
- type DatabaseOverview,
20
- type PerformanceMetrics,
21
- type SlowQueryStats,
22
- type ActiveSessionDetails,
23
- type TableStats,
24
- type IndexStats,
25
- type StorageStats,
26
- } from '../../types';
27
- import {
28
- DatabaseConfigError,
29
- ConnectionError,
30
- QueryError,
31
- mapDatabaseError,
32
- } from '../../errors';
33
- import { formatBytes } from '../../utils/pool-manager';
34
-
35
- // ============================================================================
36
- // MySQL Provider
37
- // ============================================================================
38
-
39
- export class MySQLProvider extends SQLBaseProvider {
40
- private pool: Pool | null = null;
41
-
42
- // Transaction support: dedicated connection held outside pool
43
- private txConn: PoolConnection | null = null;
44
- private txActive = false;
45
- private txTimeout: ReturnType<typeof setTimeout> | null = null;
46
- private static readonly TX_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes
47
-
48
- constructor(config: DatabaseConnection, options: ProviderOptions = {}) {
1
+ import { SQLBaseProvider } from './chunk-R3POCJK6.mjs';
2
+ import { formatBytes } from './chunk-QJP5FZRY.mjs';
3
+ import { DatabaseConfigError, ConnectionError, mapDatabaseError, QueryError } from './chunk-CZVV3JJB.mjs';
4
+ import { __spreadProps, __spreadValues } from './chunk-4LVB3K53.mjs';
5
+ import mysql from 'mysql2/promise';
6
+
7
+ var _MySQLProvider = class _MySQLProvider extends SQLBaseProvider {
8
+ // 5 minutes
9
+ constructor(config, options = {}) {
49
10
  super(config, options);
11
+ this.pool = null;
12
+ // Transaction support: dedicated connection held outside pool
13
+ this.txConn = null;
14
+ this.txActive = false;
15
+ this.txTimeout = null;
16
+ // Track running query thread IDs for cancellation
17
+ this.runningQueryThreadIds = /* @__PURE__ */ new Map();
50
18
  this.validate();
51
19
  }
52
-
53
20
  // ============================================================================
54
21
  // Provider Metadata
55
22
  // ============================================================================
56
-
57
- public override getCapabilities(): ProviderCapabilities {
58
- return {
59
- ...super.getCapabilities(),
23
+ getCapabilities() {
24
+ return __spreadProps(__spreadValues({}, super.getCapabilities()), {
60
25
  defaultPort: 3306,
61
26
  supportsExplain: true,
62
27
  supportsConnectionString: true,
63
- maintenanceOperations: ['analyze', 'optimize', 'check', 'kill'],
64
- };
28
+ maintenanceOperations: ["analyze", "optimize", "check", "kill"]
29
+ });
65
30
  }
66
-
67
31
  // ============================================================================
68
32
  // Validation
69
33
  // ============================================================================
70
-
71
- public validate(): void {
34
+ validate() {
72
35
  super.validate();
73
-
74
36
  if (!this.config.connectionString) {
75
37
  if (!this.config.host) {
76
- throw new DatabaseConfigError('Host is required for MySQL', 'mysql');
38
+ throw new DatabaseConfigError("Host is required for MySQL", "mysql");
77
39
  }
78
40
  if (!this.config.database) {
79
- throw new DatabaseConfigError('Database name is required for MySQL', 'mysql');
41
+ throw new DatabaseConfigError("Database name is required for MySQL", "mysql");
80
42
  }
81
43
  }
82
44
  }
83
-
84
45
  // ============================================================================
85
46
  // Connection Management
86
47
  // ============================================================================
87
-
88
- public async connect(): Promise<void> {
48
+ async connect() {
89
49
  if (this.pool) {
90
50
  return;
91
51
  }
92
-
93
52
  try {
94
53
  this.pool = mysql.createPool(this.buildPoolConfig());
95
-
96
54
  const conn = await this.pool.getConnection();
97
55
  conn.release();
98
-
99
56
  this.setConnected(true);
100
57
  } catch (error) {
101
58
  this.setError(error instanceof Error ? error : new Error(String(error)));
102
59
  throw new ConnectionError(
103
60
  `Failed to connect to MySQL: ${error instanceof Error ? error.message : error}`,
104
- 'mysql',
61
+ "mysql",
105
62
  this.config.host,
106
63
  this.config.port
107
64
  );
108
65
  }
109
66
  }
110
-
111
- public async disconnect(): Promise<void> {
67
+ async disconnect() {
112
68
  if (this.pool) {
113
69
  await this.pool.end();
114
70
  this.pool = null;
115
71
  this.setConnected(false);
116
72
  }
117
73
  }
118
-
119
- private buildPoolConfig(): mysql.PoolOptions {
120
- const baseConfig: mysql.PoolOptions = {
74
+ buildPoolConfig() {
75
+ var _a, _b;
76
+ const baseConfig = {
121
77
  connectionLimit: this.poolConfig.max,
122
78
  waitForConnections: true,
123
79
  queueLimit: 0,
124
80
  enableKeepAlive: true,
125
- keepAliveInitialDelay: 10000,
81
+ keepAliveInitialDelay: 1e4
126
82
  };
127
-
128
83
  if (this.config.connectionString) {
129
- return {
130
- ...baseConfig,
131
- uri: this.config.connectionString,
132
- };
84
+ return __spreadProps(__spreadValues({}, baseConfig), {
85
+ uri: this.config.connectionString
86
+ });
133
87
  }
134
-
135
- return {
136
- ...baseConfig,
88
+ return __spreadProps(__spreadValues({}, baseConfig), {
137
89
  host: this.config.host,
138
- port: this.config.port ?? 3306,
90
+ port: (_a = this.config.port) != null ? _a : 3306,
139
91
  user: this.config.user,
140
92
  password: this.config.password,
141
93
  database: this.config.database,
142
94
  ssl: this.buildSSLConfig(),
143
- timezone: this.options.timezone ?? 'Z',
144
- };
95
+ timezone: (_b = this.options.timezone) != null ? _b : "Z"
96
+ });
145
97
  }
146
-
147
- private buildSSLConfig(): mysql.SslOptions | undefined {
98
+ buildSSLConfig() {
148
99
  const connSSL = this.config.ssl;
149
-
150
100
  if (connSSL) {
151
- if (connSSL.mode === 'disable') return undefined;
152
-
153
- const ssl: mysql.SslOptions = {
154
- rejectUnauthorized: connSSL.mode === 'verify-ca' || connSSL.mode === 'verify-full',
101
+ if (connSSL.mode === "disable") return void 0;
102
+ const ssl = {
103
+ rejectUnauthorized: connSSL.mode === "verify-ca" || connSSL.mode === "verify-full"
155
104
  };
156
-
157
105
  if (connSSL.caCert) ssl.ca = connSSL.caCert;
158
106
  if (connSSL.clientCert) ssl.cert = connSSL.clientCert;
159
107
  if (connSSL.clientKey) ssl.key = connSSL.clientKey;
160
-
161
108
  return ssl;
162
109
  }
163
-
164
110
  if (this.shouldEnableSSL()) {
165
111
  return { rejectUnauthorized: false };
166
112
  }
167
-
168
- return undefined;
113
+ return void 0;
169
114
  }
170
-
171
115
  // ============================================================================
172
116
  // Query Execution
173
117
  // ============================================================================
174
-
175
- private sanitizeRow(row: Record<string, unknown>): Record<string, unknown> {
176
- const sanitized: Record<string, unknown> = {};
118
+ sanitizeRow(row) {
119
+ const sanitized = {};
177
120
  for (const [key, value] of Object.entries(row)) {
178
121
  if (Buffer.isBuffer(value)) {
179
- sanitized[key] = value.length === 0 ? '' : `0x${value.toString('hex')}`;
122
+ sanitized[key] = value.length === 0 ? "" : `0x${value.toString("hex")}`;
180
123
  } else {
181
124
  sanitized[key] = value;
182
125
  }
183
126
  }
184
127
  return sanitized;
185
128
  }
186
-
187
- // Track running query thread IDs for cancellation
188
- private runningQueryThreadIds = new Map<string, number>();
189
-
190
- public async query(sql: string, params?: unknown[], queryId?: string): Promise<QueryResult> {
129
+ async query(sql, params, queryId) {
191
130
  this.ensureConnected();
192
-
193
131
  return this.trackQuery(async () => {
132
+ var _a, _b;
194
133
  const { result, executionTime } = await this.measureExecution(async () => {
195
- const conn = await this.pool!.getConnection();
134
+ const conn = await this.pool.getConnection();
196
135
  try {
197
- // Track thread ID for cancellation support
198
136
  if (queryId) {
199
137
  this.runningQueryThreadIds.set(queryId, conn.threadId);
200
138
  }
201
- const [rows, fields] = await conn.execute<RowDataPacket[]>(sql, params);
139
+ const [rows, fields] = await conn.execute(sql, params);
202
140
  return { rows, fields };
203
141
  } catch (error) {
204
- throw mapDatabaseError(error, 'mysql', sql);
142
+ throw mapDatabaseError(error, "mysql", sql);
205
143
  } finally {
206
144
  if (queryId) this.runningQueryThreadIds.delete(queryId);
207
145
  conn.release();
208
146
  }
209
147
  });
210
-
211
148
  return {
212
- rows: (result.rows as unknown[]).map(row => this.sanitizeRow(row as Record<string, unknown>)),
213
- fields: result.fields?.map((f: FieldPacket) => f.name) ?? [],
149
+ rows: result.rows.map((row) => this.sanitizeRow(row)),
150
+ fields: (_b = (_a = result.fields) == null ? void 0 : _a.map((f) => f.name)) != null ? _b : [],
214
151
  rowCount: Array.isArray(result.rows) ? result.rows.length : 0,
215
- executionTime,
152
+ executionTime
216
153
  };
217
154
  });
218
155
  }
219
-
220
- public async cancelQuery(queryId: string): Promise<boolean> {
156
+ async cancelQuery(queryId) {
221
157
  const threadId = this.runningQueryThreadIds.get(queryId);
222
158
  if (!threadId) return false;
223
-
224
159
  try {
225
- await this.pool!.execute(`KILL QUERY ${threadId}`);
160
+ await this.pool.execute(`KILL QUERY ${threadId}`);
226
161
  return true;
227
162
  } catch (error) {
228
- console.error('[MySQL] Failed to cancel query:', error);
163
+ console.error("[MySQL] Failed to cancel query:", error);
229
164
  return false;
230
165
  }
231
166
  }
232
-
233
167
  // ============================================================================
234
168
  // Transaction Support
235
169
  // ============================================================================
236
-
237
- private clearTxTimeout(): void {
170
+ clearTxTimeout() {
238
171
  if (this.txTimeout) {
239
172
  clearTimeout(this.txTimeout);
240
173
  this.txTimeout = null;
241
174
  }
242
175
  }
243
-
244
176
  /**
245
177
  * Force-expire an active transaction (auto-rollback).
246
178
  * Called by the timeout timer, but also available for testing.
247
179
  */
248
- public async expireTransaction(): Promise<void> {
180
+ async expireTransaction() {
249
181
  if (this.txActive && this.txConn) {
250
- console.warn('[MySQL] Transaction timed out, auto-rolling back');
182
+ console.warn("[MySQL] Transaction timed out, auto-rolling back");
251
183
  try {
252
184
  await this.txConn.rollback();
253
- } catch { /* ignore */ } finally {
185
+ } catch (e) {
186
+ } finally {
254
187
  this.txConn.release();
255
188
  this.txConn = null;
256
189
  this.txActive = false;
@@ -258,20 +191,18 @@ export class MySQLProvider extends SQLBaseProvider {
258
191
  }
259
192
  }
260
193
  }
261
-
262
- public async beginTransaction(): Promise<void> {
194
+ async beginTransaction() {
263
195
  this.ensureConnected();
264
- if (this.txActive) throw new QueryError('Transaction already active', 'mysql');
265
- this.txConn = await this.pool!.getConnection();
196
+ if (this.txActive) throw new QueryError("Transaction already active", "mysql");
197
+ this.txConn = await this.pool.getConnection();
266
198
  await this.txConn.beginTransaction();
267
199
  this.txActive = true;
268
-
269
- // Auto-rollback after timeout to prevent leaked locks
270
- this.txTimeout = setTimeout(() => { this.expireTransaction(); }, MySQLProvider.TX_TIMEOUT_MS);
200
+ this.txTimeout = setTimeout(() => {
201
+ this.expireTransaction();
202
+ }, _MySQLProvider.TX_TIMEOUT_MS);
271
203
  }
272
-
273
- public async commitTransaction(): Promise<void> {
274
- if (!this.txConn || !this.txActive) throw new QueryError('No active transaction', 'mysql');
204
+ async commitTransaction() {
205
+ if (!this.txConn || !this.txActive) throw new QueryError("No active transaction", "mysql");
275
206
  this.clearTxTimeout();
276
207
  try {
277
208
  await this.txConn.commit();
@@ -281,9 +212,8 @@ export class MySQLProvider extends SQLBaseProvider {
281
212
  this.txActive = false;
282
213
  }
283
214
  }
284
-
285
- public async rollbackTransaction(): Promise<void> {
286
- if (!this.txConn || !this.txActive) throw new QueryError('No active transaction', 'mysql');
215
+ async rollbackTransaction() {
216
+ if (!this.txConn || !this.txActive) throw new QueryError("No active transaction", "mysql");
287
217
  this.clearTxTimeout();
288
218
  try {
289
219
  await this.txConn.rollback();
@@ -293,43 +223,37 @@ export class MySQLProvider extends SQLBaseProvider {
293
223
  this.txActive = false;
294
224
  }
295
225
  }
296
-
297
- public isInTransaction(): boolean {
226
+ isInTransaction() {
298
227
  return this.txActive;
299
228
  }
300
-
301
- public async queryInTransaction(sql: string, params?: unknown[]): Promise<QueryResult> {
302
- if (!this.txConn || !this.txActive) throw new QueryError('No active transaction', 'mysql');
303
-
229
+ async queryInTransaction(sql, params) {
230
+ if (!this.txConn || !this.txActive) throw new QueryError("No active transaction", "mysql");
304
231
  return this.trackQuery(async () => {
232
+ var _a, _b;
305
233
  const { result, executionTime } = await this.measureExecution(async () => {
306
234
  try {
307
- const [rows, fields] = await this.txConn!.execute<RowDataPacket[]>(sql, params);
235
+ const [rows, fields] = await this.txConn.execute(sql, params);
308
236
  return { rows, fields };
309
237
  } catch (error) {
310
- throw mapDatabaseError(error, 'mysql', sql);
238
+ throw mapDatabaseError(error, "mysql", sql);
311
239
  }
312
240
  });
313
-
314
241
  return {
315
- rows: (result.rows as unknown[]).map(row => this.sanitizeRow(row as Record<string, unknown>)),
316
- fields: result.fields?.map((f: FieldPacket) => f.name) ?? [],
242
+ rows: result.rows.map((row) => this.sanitizeRow(row)),
243
+ fields: (_b = (_a = result.fields) == null ? void 0 : _a.map((f) => f.name)) != null ? _b : [],
317
244
  rowCount: Array.isArray(result.rows) ? result.rows.length : 0,
318
- executionTime,
245
+ executionTime
319
246
  };
320
247
  });
321
248
  }
322
-
323
249
  // ============================================================================
324
250
  // Schema Operations
325
251
  // ============================================================================
326
-
327
- public async getSchema(): Promise<TableSchema[]> {
252
+ async getSchema() {
328
253
  this.ensureConnected();
329
-
330
- const conn = await this.pool!.getConnection();
254
+ const conn = await this.pool.getConnection();
331
255
  try {
332
- const [tablesRows] = await conn.execute<RowDataPacket[]>(`
256
+ const [tablesRows] = await conn.execute(`
333
257
  SELECT
334
258
  TABLE_NAME as table_name,
335
259
  TABLE_ROWS as row_count,
@@ -339,15 +263,12 @@ export class MySQLProvider extends SQLBaseProvider {
339
263
  AND TABLE_TYPE = 'BASE TABLE'
340
264
  ORDER BY TABLE_NAME ASC;
341
265
  `, [this.config.database]);
342
-
343
- const schemas: TableSchema[] = [];
344
-
266
+ const schemas = [];
345
267
  for (const row of tablesRows) {
346
268
  const tableName = row.table_name;
347
- const rowCount = parseInt(row.row_count || '0');
348
- const sizeBytes = parseInt(row.total_size || '0');
349
-
350
- const [columnsRows] = await conn.execute<RowDataPacket[]>(`
269
+ const rowCount = parseInt(row.row_count || "0");
270
+ const sizeBytes = parseInt(row.total_size || "0");
271
+ const [columnsRows] = await conn.execute(`
351
272
  SELECT
352
273
  COLUMN_NAME as column_name,
353
274
  DATA_TYPE as data_type,
@@ -360,8 +281,7 @@ export class MySQLProvider extends SQLBaseProvider {
360
281
  ORDER BY ORDINAL_POSITION
361
282
  LIMIT 100;
362
283
  `, [this.config.database, tableName]);
363
-
364
- const [fkRows] = await conn.execute<RowDataPacket[]>(`
284
+ const [fkRows] = await conn.execute(`
365
285
  SELECT
366
286
  COLUMN_NAME as column_name,
367
287
  REFERENCED_TABLE_NAME as referenced_table,
@@ -371,8 +291,7 @@ export class MySQLProvider extends SQLBaseProvider {
371
291
  AND TABLE_NAME = ?
372
292
  AND REFERENCED_TABLE_NAME IS NOT NULL;
373
293
  `, [this.config.database, tableName]);
374
-
375
- const [indexRows] = await conn.execute<RowDataPacket[]>(`
294
+ const [indexRows] = await conn.execute(`
376
295
  SELECT
377
296
  INDEX_NAME as index_name,
378
297
  GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX) as columns,
@@ -382,71 +301,70 @@ export class MySQLProvider extends SQLBaseProvider {
382
301
  AND TABLE_NAME = ?
383
302
  GROUP BY INDEX_NAME, NON_UNIQUE;
384
303
  `, [this.config.database, tableName]);
385
-
386
304
  schemas.push({
387
305
  name: tableName,
388
306
  rowCount,
389
307
  size: formatBytes(sizeBytes),
390
- columns: columnsRows.map((col) => ({
391
- name: col.column_name,
392
- type: col.data_type,
393
- nullable: col.is_nullable === 'YES',
394
- isPrimary: col.column_key === 'PRI',
395
- defaultValue: col.column_default ?? undefined,
396
- })),
397
- indexes: indexRows.map((idx) => ({
398
- name: idx.index_name,
399
- columns: idx.columns?.split(',') ?? [],
400
- unique: Boolean(idx.is_unique),
401
- })),
308
+ columns: columnsRows.map((col) => {
309
+ var _a;
310
+ return {
311
+ name: col.column_name,
312
+ type: col.data_type,
313
+ nullable: col.is_nullable === "YES",
314
+ isPrimary: col.column_key === "PRI",
315
+ defaultValue: (_a = col.column_default) != null ? _a : void 0
316
+ };
317
+ }),
318
+ indexes: indexRows.map((idx) => {
319
+ var _a, _b;
320
+ return {
321
+ name: idx.index_name,
322
+ columns: (_b = (_a = idx.columns) == null ? void 0 : _a.split(",")) != null ? _b : [],
323
+ unique: Boolean(idx.is_unique)
324
+ };
325
+ }),
402
326
  foreignKeys: fkRows.map((fk) => ({
403
327
  columnName: fk.column_name,
404
328
  referencedTable: fk.referenced_table,
405
- referencedColumn: fk.referenced_column,
406
- })),
329
+ referencedColumn: fk.referenced_column
330
+ }))
407
331
  });
408
332
  }
409
-
410
333
  return schemas;
411
334
  } finally {
412
335
  conn.release();
413
336
  }
414
337
  }
415
-
416
338
  // ============================================================================
417
339
  // Health & Monitoring
418
340
  // ============================================================================
419
-
420
- public async getHealth(): Promise<HealthInfo> {
341
+ async getHealth() {
342
+ var _a, _b, _c;
421
343
  this.ensureConnected();
422
-
423
- const conn = await this.pool!.getConnection();
344
+ const conn = await this.pool.getConnection();
424
345
  try {
425
- const [connRows] = await conn.execute<RowDataPacket[]>(
346
+ const [connRows] = await conn.execute(
426
347
  "SHOW STATUS LIKE 'Threads_connected'"
427
348
  );
428
- const activeConnections = parseInt(connRows[0]?.Value || '0');
429
-
430
- const [sizeRows] = await conn.execute<RowDataPacket[]>(`
349
+ const activeConnections = parseInt(((_a = connRows[0]) == null ? void 0 : _a.Value) || "0");
350
+ const [sizeRows] = await conn.execute(`
431
351
  SELECT
432
352
  ROUND(SUM(DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) as size_mb
433
353
  FROM information_schema.TABLES
434
354
  WHERE TABLE_SCHEMA = ?;
435
355
  `, [this.config.database]);
436
- const databaseSize = `${sizeRows[0]?.size_mb || 0} MB`;
437
-
438
- const [hitRows] = await conn.execute<RowDataPacket[]>(`
356
+ const databaseSize = `${((_b = sizeRows[0]) == null ? void 0 : _b.size_mb) || 0} MB`;
357
+ const [hitRows] = await conn.execute(`
439
358
  SELECT
440
359
  (1 - (
441
360
  (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME = 'Innodb_buffer_pool_reads') /
442
361
  NULLIF((SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME = 'Innodb_buffer_pool_read_requests'), 0)
443
362
  )) * 100 as hit_ratio;
444
363
  `);
445
- const cacheHitRatio = `${(hitRows[0]?.hit_ratio || 99).toFixed(1)}%`;
446
-
447
- let slowQueries: SlowQuery[] = [];
364
+ const cacheHitRatio = `${(((_c = hitRows[0]) == null ? void 0 : _c.hit_ratio) || 99).toFixed(1)}%`;
365
+ let slowQueries = [];
448
366
  try {
449
- const [slowRows] = await conn.execute<RowDataPacket[]>(`
367
+ const [slowRows] = await conn.execute(`
450
368
  SELECT
451
369
  LEFT(sql_text, 100) as query,
452
370
  count_star as calls,
@@ -457,15 +375,14 @@ export class MySQLProvider extends SQLBaseProvider {
457
375
  LIMIT 5;
458
376
  `, [this.config.database]);
459
377
  slowQueries = slowRows.map((r) => ({
460
- query: r.query || '',
461
- calls: parseInt(r.calls || '0'),
462
- avgTime: r.avgTime || 'N/A',
378
+ query: r.query || "",
379
+ calls: parseInt(r.calls || "0"),
380
+ avgTime: r.avgTime || "N/A"
463
381
  }));
464
- } catch {
465
- slowQueries = [{ query: 'Performance schema not available', calls: 0, avgTime: 'N/A' }];
382
+ } catch (e) {
383
+ slowQueries = [{ query: "Performance schema not available", calls: 0, avgTime: "N/A" }];
466
384
  }
467
-
468
- const [sessionRows] = await conn.execute<RowDataPacket[]>(`
385
+ const [sessionRows] = await conn.execute(`
469
386
  SELECT
470
387
  ID as pid,
471
388
  USER as user,
@@ -478,236 +395,191 @@ export class MySQLProvider extends SQLBaseProvider {
478
395
  ORDER BY TIME DESC
479
396
  LIMIT 10;
480
397
  `, [this.config.database]);
481
-
482
- const activeSessions: ActiveSession[] = sessionRows.map((r) => ({
398
+ const activeSessions = sessionRows.map((r) => ({
483
399
  pid: r.pid,
484
- user: r.user || 'unknown',
485
- database: r.database || '',
486
- state: r.state || 'unknown',
487
- query: r.query || '',
488
- duration: r.duration || 'N/A',
400
+ user: r.user || "unknown",
401
+ database: r.database || "",
402
+ state: r.state || "unknown",
403
+ query: r.query || "",
404
+ duration: r.duration || "N/A"
489
405
  }));
490
-
491
406
  return {
492
407
  activeConnections,
493
408
  databaseSize,
494
409
  cacheHitRatio,
495
410
  slowQueries,
496
- activeSessions,
411
+ activeSessions
497
412
  };
498
413
  } finally {
499
414
  conn.release();
500
415
  }
501
416
  }
502
-
503
417
  // ============================================================================
504
418
  // Maintenance Operations
505
419
  // ============================================================================
506
-
507
- public async runMaintenance(
508
- type: MaintenanceType,
509
- target?: string
510
- ): Promise<MaintenanceResult> {
420
+ async runMaintenance(type, target) {
511
421
  this.ensureConnected();
512
-
513
422
  const { result, executionTime } = await this.measureExecution(async () => {
514
- const conn = await this.pool!.getConnection();
423
+ const conn = await this.pool.getConnection();
515
424
  try {
516
- let sql = '';
517
-
425
+ let sql = "";
518
426
  switch (type) {
519
- case 'analyze':
520
- sql = target
521
- ? `ANALYZE TABLE ${this.escapeIdentifier(target)}`
522
- : `ANALYZE TABLE ${await this.getAllTablesForMaintenance(conn)}`;
427
+ case "analyze":
428
+ sql = target ? `ANALYZE TABLE ${this.escapeIdentifier(target)}` : `ANALYZE TABLE ${await this.getAllTablesForMaintenance(conn)}`;
523
429
  break;
524
- case 'optimize':
525
- sql = target
526
- ? `OPTIMIZE TABLE ${this.escapeIdentifier(target)}`
527
- : `OPTIMIZE TABLE ${await this.getAllTablesForMaintenance(conn)}`;
430
+ case "optimize":
431
+ sql = target ? `OPTIMIZE TABLE ${this.escapeIdentifier(target)}` : `OPTIMIZE TABLE ${await this.getAllTablesForMaintenance(conn)}`;
528
432
  break;
529
- case 'check':
530
- sql = target
531
- ? `CHECK TABLE ${this.escapeIdentifier(target)}`
532
- : `CHECK TABLE ${await this.getAllTablesForMaintenance(conn)}`;
433
+ case "check":
434
+ sql = target ? `CHECK TABLE ${this.escapeIdentifier(target)}` : `CHECK TABLE ${await this.getAllTablesForMaintenance(conn)}`;
533
435
  break;
534
- case 'kill':
436
+ case "kill":
535
437
  if (!target) {
536
- throw new QueryError('Target connection ID is required for kill operation', 'mysql');
438
+ throw new QueryError("Target connection ID is required for kill operation", "mysql");
537
439
  }
538
440
  const connId = parseInt(target, 10);
539
441
  if (isNaN(connId)) {
540
- throw new QueryError('Invalid connection ID for kill operation', 'mysql');
442
+ throw new QueryError("Invalid connection ID for kill operation", "mysql");
541
443
  }
542
444
  sql = `KILL ${connId}`;
543
445
  break;
544
446
  default:
545
- throw new QueryError(`Unsupported maintenance type for MySQL: ${type}`, 'mysql');
447
+ throw new QueryError(`Unsupported maintenance type for MySQL: ${type}`, "mysql");
546
448
  }
547
-
548
449
  await conn.execute(sql);
549
450
  return { success: true };
550
451
  } finally {
551
452
  conn.release();
552
453
  }
553
454
  });
554
-
555
455
  return {
556
456
  success: result.success,
557
457
  executionTime,
558
- message: `${type.toUpperCase()} completed successfully`,
458
+ message: `${type.toUpperCase()} completed successfully`
559
459
  };
560
460
  }
561
-
562
- private async getAllTablesForMaintenance(conn: PoolConnection): Promise<string> {
563
- const [rows] = await conn.execute<RowDataPacket[]>(`
461
+ async getAllTablesForMaintenance(conn) {
462
+ const [rows] = await conn.execute(`
564
463
  SELECT TABLE_NAME
565
464
  FROM information_schema.TABLES
566
465
  WHERE TABLE_SCHEMA = ?
567
466
  AND TABLE_TYPE = 'BASE TABLE'
568
467
  LIMIT 50;
569
468
  `, [this.config.database]);
570
-
571
- return rows.map((r) => this.escapeIdentifier(r.TABLE_NAME)).join(', ');
469
+ return rows.map((r) => this.escapeIdentifier(r.TABLE_NAME)).join(", ");
572
470
  }
573
-
574
471
  // ============================================================================
575
472
  // Monitoring Operations
576
473
  // ============================================================================
577
-
578
- public async getOverview(): Promise<DatabaseOverview> {
474
+ async getOverview() {
475
+ var _a, _b, _c, _d, _e, _f, _g;
579
476
  this.ensureConnected();
580
-
581
- const conn = await this.pool!.getConnection();
477
+ const conn = await this.pool.getConnection();
582
478
  try {
583
- // Get version
584
- const [versionRows] = await conn.execute<RowDataPacket[]>('SELECT VERSION() as version');
585
- const version = versionRows[0]?.version || 'Unknown';
586
-
587
- // Get uptime
588
- const [uptimeRows] = await conn.execute<RowDataPacket[]>(
479
+ const [versionRows] = await conn.execute("SELECT VERSION() as version");
480
+ const version = ((_a = versionRows[0]) == null ? void 0 : _a.version) || "Unknown";
481
+ const [uptimeRows] = await conn.execute(
589
482
  "SHOW STATUS LIKE 'Uptime'"
590
483
  );
591
- const uptimeSeconds = parseInt(uptimeRows[0]?.Value || '0');
484
+ const uptimeSeconds = parseInt(((_b = uptimeRows[0]) == null ? void 0 : _b.Value) || "0");
592
485
  const uptime = this.formatUptimeString(uptimeSeconds);
593
-
594
- // Get active connections
595
- const [connRows] = await conn.execute<RowDataPacket[]>(
486
+ const [connRows] = await conn.execute(
596
487
  "SHOW STATUS LIKE 'Threads_connected'"
597
488
  );
598
- const activeConnections = parseInt(connRows[0]?.Value || '0');
599
-
600
- // Get max connections
601
- const [maxConnRows] = await conn.execute<RowDataPacket[]>(
489
+ const activeConnections = parseInt(((_c = connRows[0]) == null ? void 0 : _c.Value) || "0");
490
+ const [maxConnRows] = await conn.execute(
602
491
  "SHOW VARIABLES LIKE 'max_connections'"
603
492
  );
604
- const maxConnections = parseInt(maxConnRows[0]?.Value || '151');
605
-
606
- // Get database size
607
- const [sizeRows] = await conn.execute<RowDataPacket[]>(`
493
+ const maxConnections = parseInt(((_d = maxConnRows[0]) == null ? void 0 : _d.Value) || "151");
494
+ const [sizeRows] = await conn.execute(`
608
495
  SELECT SUM(DATA_LENGTH + INDEX_LENGTH) as size_bytes
609
496
  FROM information_schema.TABLES
610
497
  WHERE TABLE_SCHEMA = ?;
611
498
  `, [this.config.database]);
612
- const databaseSizeBytes = parseInt(sizeRows[0]?.size_bytes || '0');
613
-
614
- // Get table and index count
615
- const [countRows] = await conn.execute<RowDataPacket[]>(`
499
+ const databaseSizeBytes = parseInt(((_e = sizeRows[0]) == null ? void 0 : _e.size_bytes) || "0");
500
+ const [countRows] = await conn.execute(`
616
501
  SELECT
617
502
  COUNT(DISTINCT TABLE_NAME) as table_count,
618
503
  COUNT(DISTINCT INDEX_NAME) as index_count
619
504
  FROM information_schema.STATISTICS
620
505
  WHERE TABLE_SCHEMA = ?;
621
506
  `, [this.config.database]);
622
-
623
- const [tableCountRows] = await conn.execute<RowDataPacket[]>(`
507
+ const [tableCountRows] = await conn.execute(`
624
508
  SELECT COUNT(*) as cnt FROM information_schema.TABLES
625
509
  WHERE TABLE_SCHEMA = ? AND TABLE_TYPE = 'BASE TABLE';
626
510
  `, [this.config.database]);
627
-
628
511
  return {
629
512
  version: `MySQL ${version}`,
630
513
  uptime,
631
- startTime: new Date(Date.now() - uptimeSeconds * 1000),
514
+ startTime: new Date(Date.now() - uptimeSeconds * 1e3),
632
515
  activeConnections,
633
516
  maxConnections,
634
517
  databaseSize: formatBytes(databaseSizeBytes),
635
518
  databaseSizeBytes,
636
- tableCount: parseInt(tableCountRows[0]?.cnt || '0'),
637
- indexCount: parseInt(countRows[0]?.index_count || '0'),
519
+ tableCount: parseInt(((_f = tableCountRows[0]) == null ? void 0 : _f.cnt) || "0"),
520
+ indexCount: parseInt(((_g = countRows[0]) == null ? void 0 : _g.index_count) || "0")
638
521
  };
639
522
  } finally {
640
523
  conn.release();
641
524
  }
642
525
  }
643
-
644
- public async getPerformanceMetrics(): Promise<PerformanceMetrics> {
526
+ async getPerformanceMetrics() {
527
+ var _a, _b, _c, _d, _e, _f;
645
528
  this.ensureConnected();
646
-
647
- const conn = await this.pool!.getConnection();
529
+ const conn = await this.pool.getConnection();
648
530
  try {
649
- // Calculate cache hit ratio from InnoDB buffer pool
650
- const [hitRows] = await conn.execute<RowDataPacket[]>(`
531
+ const [hitRows] = await conn.execute(`
651
532
  SELECT
652
533
  (1 - (
653
534
  (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME = 'Innodb_buffer_pool_reads') /
654
535
  NULLIF((SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME = 'Innodb_buffer_pool_read_requests'), 0)
655
536
  )) * 100 as hit_ratio;
656
537
  `);
657
- const cacheHitRatio = parseFloat(hitRows[0]?.hit_ratio || '99');
658
-
659
- // Get buffer pool usage
660
- const [poolRows] = await conn.execute<RowDataPacket[]>(`
538
+ const cacheHitRatio = parseFloat(((_a = hitRows[0]) == null ? void 0 : _a.hit_ratio) || "99");
539
+ const [poolRows] = await conn.execute(`
661
540
  SELECT
662
541
  (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME = 'Innodb_buffer_pool_pages_data') as data_pages,
663
542
  (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME = 'Innodb_buffer_pool_pages_total') as total_pages;
664
543
  `);
665
- const dataPages = parseInt(poolRows[0]?.data_pages || '0');
666
- const totalPages = parseInt(poolRows[0]?.total_pages || '1');
667
- const bufferPoolUsage = (dataPages / totalPages) * 100;
668
-
669
- // Get queries per second
670
- const [qpsRows] = await conn.execute<RowDataPacket[]>(`
544
+ const dataPages = parseInt(((_b = poolRows[0]) == null ? void 0 : _b.data_pages) || "0");
545
+ const totalPages = parseInt(((_c = poolRows[0]) == null ? void 0 : _c.total_pages) || "1");
546
+ const bufferPoolUsage = dataPages / totalPages * 100;
547
+ const [qpsRows] = await conn.execute(`
671
548
  SELECT
672
549
  (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME = 'Queries') as queries,
673
550
  (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME = 'Uptime') as uptime;
674
551
  `);
675
- const queries = parseInt(qpsRows[0]?.queries || '0');
676
- const uptime = parseInt(qpsRows[0]?.uptime || '1');
552
+ const queries = parseInt(((_d = qpsRows[0]) == null ? void 0 : _d.queries) || "0");
553
+ const uptime = parseInt(((_e = qpsRows[0]) == null ? void 0 : _e.uptime) || "1");
677
554
  const queriesPerSecond = queries / uptime;
678
-
679
- // Get deadlocks
680
- const [deadlockRows] = await conn.execute<RowDataPacket[]>(
555
+ const [deadlockRows] = await conn.execute(
681
556
  "SHOW STATUS LIKE 'Innodb_deadlocks'"
682
557
  );
683
- const deadlocks = parseInt(deadlockRows[0]?.Value || '0');
684
-
558
+ const deadlocks = parseInt(((_f = deadlockRows[0]) == null ? void 0 : _f.Value) || "0");
685
559
  return {
686
560
  cacheHitRatio: Math.min(100, Math.max(0, cacheHitRatio)),
687
561
  queriesPerSecond: Math.round(queriesPerSecond * 100) / 100,
688
562
  bufferPoolUsage: Math.round(bufferPoolUsage * 100) / 100,
689
- deadlocks,
563
+ deadlocks
690
564
  };
691
- } catch {
692
- // Fallback if performance_schema is not available
565
+ } catch (e) {
693
566
  return {
694
567
  cacheHitRatio: 99,
695
568
  queriesPerSecond: 0,
696
569
  bufferPoolUsage: 0,
697
- deadlocks: 0,
570
+ deadlocks: 0
698
571
  };
699
572
  } finally {
700
573
  conn.release();
701
574
  }
702
575
  }
703
-
704
- public async getSlowQueries(options?: { limit?: number }): Promise<SlowQueryStats[]> {
576
+ async getSlowQueries(options) {
577
+ var _a;
705
578
  this.ensureConnected();
706
- const limit = options?.limit ?? 10;
707
-
708
- const conn = await this.pool!.getConnection();
579
+ const limit = (_a = options == null ? void 0 : options.limit) != null ? _a : 10;
580
+ const conn = await this.pool.getConnection();
709
581
  try {
710
- const [rows] = await conn.execute<RowDataPacket[]>(`
582
+ const [rows] = await conn.execute(`
711
583
  SELECT
712
584
  DIGEST as query_id,
713
585
  LEFT(DIGEST_TEXT, 500) as query,
@@ -722,32 +594,29 @@ export class MySQLProvider extends SQLBaseProvider {
722
594
  ORDER BY SUM_TIMER_WAIT DESC
723
595
  LIMIT ${Number(limit)};
724
596
  `, [this.config.database]);
725
-
726
597
  return rows.map((r) => ({
727
- queryId: r.query_id || undefined,
728
- query: r.query || '',
729
- calls: parseInt(r.calls || '0'),
730
- totalTime: parseFloat(r.total_time_ms || '0'),
731
- avgTime: parseFloat(r.avg_time_ms || '0'),
732
- minTime: parseFloat(r.min_time_ms || '0'),
733
- maxTime: parseFloat(r.max_time_ms || '0'),
734
- rows: parseInt(r.rows_examined || '0'),
598
+ queryId: r.query_id || void 0,
599
+ query: r.query || "",
600
+ calls: parseInt(r.calls || "0"),
601
+ totalTime: parseFloat(r.total_time_ms || "0"),
602
+ avgTime: parseFloat(r.avg_time_ms || "0"),
603
+ minTime: parseFloat(r.min_time_ms || "0"),
604
+ maxTime: parseFloat(r.max_time_ms || "0"),
605
+ rows: parseInt(r.rows_examined || "0")
735
606
  }));
736
- } catch {
737
- // Performance schema not available
607
+ } catch (e) {
738
608
  return [];
739
609
  } finally {
740
610
  conn.release();
741
611
  }
742
612
  }
743
-
744
- public async getActiveSessions(options?: { limit?: number }): Promise<ActiveSessionDetails[]> {
613
+ async getActiveSessions(options) {
614
+ var _a;
745
615
  this.ensureConnected();
746
- const limit = options?.limit ?? 50;
747
-
748
- const conn = await this.pool!.getConnection();
616
+ const limit = (_a = options == null ? void 0 : options.limit) != null ? _a : 50;
617
+ const conn = await this.pool.getConnection();
749
618
  try {
750
- const [rows] = await conn.execute<RowDataPacket[]>(`
619
+ const [rows] = await conn.execute(`
751
620
  SELECT
752
621
  ID as pid,
753
622
  USER as user,
@@ -761,32 +630,31 @@ export class MySQLProvider extends SQLBaseProvider {
761
630
  ORDER BY TIME DESC
762
631
  LIMIT ${Number(limit)};
763
632
  `, [this.config.database]);
764
-
765
633
  return rows.map((r) => {
766
- const durationSeconds = parseInt(r.duration_seconds || '0');
634
+ var _a2;
635
+ const durationSeconds = parseInt(r.duration_seconds || "0");
767
636
  return {
768
637
  pid: r.pid,
769
- user: r.user || 'unknown',
770
- database: r.database_name || '',
771
- clientAddr: r.client_addr?.split(':')[0] || undefined,
772
- state: r.state || 'unknown',
773
- query: r.query || '',
774
- duration: this.formatDurationString(durationSeconds * 1000),
775
- durationMs: durationSeconds * 1000,
638
+ user: r.user || "unknown",
639
+ database: r.database_name || "",
640
+ clientAddr: ((_a2 = r.client_addr) == null ? void 0 : _a2.split(":")[0]) || void 0,
641
+ state: r.state || "unknown",
642
+ query: r.query || "",
643
+ duration: this.formatDurationString(durationSeconds * 1e3),
644
+ durationMs: durationSeconds * 1e3
776
645
  };
777
646
  });
778
647
  } finally {
779
648
  conn.release();
780
649
  }
781
650
  }
782
-
783
- public async getTableStats(options?: { schema?: string }): Promise<TableStats[]> {
651
+ async getTableStats(options) {
652
+ var _a;
784
653
  this.ensureConnected();
785
- const schema = options?.schema ?? this.config.database;
786
-
787
- const conn = await this.pool!.getConnection();
654
+ const schema = (_a = options == null ? void 0 : options.schema) != null ? _a : this.config.database;
655
+ const conn = await this.pool.getConnection();
788
656
  try {
789
- const [rows] = await conn.execute<RowDataPacket[]>(`
657
+ const [rows] = await conn.execute(`
790
658
  SELECT
791
659
  TABLE_SCHEMA as schema_name,
792
660
  TABLE_NAME as table_name,
@@ -801,40 +669,35 @@ export class MySQLProvider extends SQLBaseProvider {
801
669
  ORDER BY DATA_LENGTH + INDEX_LENGTH DESC
802
670
  LIMIT 100;
803
671
  `, [schema]);
804
-
805
672
  return rows.map((r) => {
806
- const tableSizeBytes = parseInt(r.table_size_bytes || '0');
807
- const indexSizeBytes = parseInt(r.index_size_bytes || '0');
808
- const totalSizeBytes = parseInt(r.total_size_bytes || '0');
809
- const freeSpaceBytes = parseInt(r.free_space_bytes || '0');
810
-
811
- // Estimate bloat ratio from free space
812
- const bloatRatio = totalSizeBytes > 0 ? (freeSpaceBytes / totalSizeBytes) * 100 : 0;
813
-
673
+ const tableSizeBytes = parseInt(r.table_size_bytes || "0");
674
+ const indexSizeBytes = parseInt(r.index_size_bytes || "0");
675
+ const totalSizeBytes = parseInt(r.total_size_bytes || "0");
676
+ const freeSpaceBytes = parseInt(r.free_space_bytes || "0");
677
+ const bloatRatio = totalSizeBytes > 0 ? freeSpaceBytes / totalSizeBytes * 100 : 0;
814
678
  return {
815
- schemaName: r.schema_name || schema || '',
816
- tableName: r.table_name || '',
817
- rowCount: parseInt(r.row_count || '0'),
679
+ schemaName: r.schema_name || schema || "",
680
+ tableName: r.table_name || "",
681
+ rowCount: parseInt(r.row_count || "0"),
818
682
  tableSize: formatBytes(tableSizeBytes),
819
683
  tableSizeBytes,
820
684
  indexSize: formatBytes(indexSizeBytes),
821
685
  totalSize: formatBytes(totalSizeBytes),
822
686
  totalSizeBytes,
823
- bloatRatio: Math.round(bloatRatio * 10) / 10,
687
+ bloatRatio: Math.round(bloatRatio * 10) / 10
824
688
  };
825
689
  });
826
690
  } finally {
827
691
  conn.release();
828
692
  }
829
693
  }
830
-
831
- public async getIndexStats(options?: { schema?: string }): Promise<IndexStats[]> {
694
+ async getIndexStats(options) {
695
+ var _a;
832
696
  this.ensureConnected();
833
- const schema = options?.schema ?? this.config.database;
834
-
835
- const conn = await this.pool!.getConnection();
697
+ const schema = (_a = options == null ? void 0 : options.schema) != null ? _a : this.config.database;
698
+ const conn = await this.pool.getConnection();
836
699
  try {
837
- const [rows] = await conn.execute<RowDataPacket[]>(`
700
+ const [rows] = await conn.execute(`
838
701
  SELECT
839
702
  TABLE_SCHEMA as schema_name,
840
703
  TABLE_NAME as table_name,
@@ -850,11 +713,9 @@ export class MySQLProvider extends SQLBaseProvider {
850
713
  ORDER BY TABLE_NAME, INDEX_NAME
851
714
  LIMIT 200;
852
715
  `, [schema]);
853
-
854
- // Get index sizes from INNODB_SYS_INDEXES if available
855
- const indexSizes: Record<string, number> = {};
716
+ const indexSizes = {};
856
717
  try {
857
- const [sizeRows] = await conn.execute<RowDataPacket[]>(`
718
+ const [sizeRows] = await conn.execute(`
858
719
  SELECT
859
720
  CONCAT(t.NAME) as full_name,
860
721
  SUM(s.INDEX_SIZE * @@innodb_page_size) as size_bytes
@@ -864,45 +725,38 @@ export class MySQLProvider extends SQLBaseProvider {
864
725
  WHERE t.NAME LIKE ?
865
726
  GROUP BY t.NAME, i.NAME;
866
727
  `, [`${schema}/%`]);
867
-
868
728
  for (const row of sizeRows) {
869
- indexSizes[row.full_name] = parseInt(row.size_bytes || '0');
729
+ indexSizes[row.full_name] = parseInt(row.size_bytes || "0");
870
730
  }
871
- } catch {
872
- // INNODB_SYS tables not available
731
+ } catch (e) {
873
732
  }
874
-
875
733
  return rows.map((r) => {
734
+ var _a2;
876
735
  const indexKey = `${r.schema_name}/${r.table_name}`;
877
736
  const indexSizeBytes = indexSizes[indexKey] || 0;
878
-
879
737
  return {
880
- schemaName: r.schema_name || schema || '',
881
- tableName: r.table_name || '',
882
- indexName: r.index_name || '',
883
- indexType: r.index_type || 'BTREE',
884
- columns: r.columns?.split(',') || [],
738
+ schemaName: r.schema_name || schema || "",
739
+ tableName: r.table_name || "",
740
+ indexName: r.index_name || "",
741
+ indexType: r.index_type || "BTREE",
742
+ columns: ((_a2 = r.columns) == null ? void 0 : _a2.split(",")) || [],
885
743
  isUnique: Boolean(r.is_unique),
886
744
  isPrimary: Boolean(r.is_primary),
887
745
  indexSize: formatBytes(indexSizeBytes),
888
746
  indexSizeBytes,
889
- scans: parseInt(r.cardinality || '0'),
747
+ scans: parseInt(r.cardinality || "0")
890
748
  };
891
749
  });
892
750
  } finally {
893
751
  conn.release();
894
752
  }
895
753
  }
896
-
897
- public async getStorageStats(): Promise<StorageStats[]> {
754
+ async getStorageStats() {
898
755
  this.ensureConnected();
899
-
900
- const conn = await this.pool!.getConnection();
756
+ const conn = await this.pool.getConnection();
901
757
  try {
902
- const stats: StorageStats[] = [];
903
-
904
- // Get database size
905
- const [dbRows] = await conn.execute<RowDataPacket[]>(`
758
+ const stats = [];
759
+ const [dbRows] = await conn.execute(`
906
760
  SELECT
907
761
  TABLE_SCHEMA as name,
908
762
  SUM(DATA_LENGTH + INDEX_LENGTH) as size_bytes
@@ -910,69 +764,64 @@ export class MySQLProvider extends SQLBaseProvider {
910
764
  WHERE TABLE_SCHEMA = ?
911
765
  GROUP BY TABLE_SCHEMA;
912
766
  `, [this.config.database]);
913
-
914
767
  if (dbRows.length > 0) {
915
- const sizeBytes = parseInt(dbRows[0].size_bytes || '0');
768
+ const sizeBytes = parseInt(dbRows[0].size_bytes || "0");
916
769
  stats.push({
917
- name: 'Data',
918
- location: this.config.database || 'default',
770
+ name: "Data",
771
+ location: this.config.database || "default",
919
772
  size: formatBytes(sizeBytes),
920
- sizeBytes,
773
+ sizeBytes
921
774
  });
922
775
  }
923
-
924
- // Get binary log size if available
925
776
  try {
926
- const [binlogRows] = await conn.execute<RowDataPacket[]>('SHOW BINARY LOGS');
927
- const binlogSize = binlogRows.reduce((sum, r) => sum + parseInt(r.File_size || '0'), 0);
777
+ const [binlogRows] = await conn.execute("SHOW BINARY LOGS");
778
+ const binlogSize = binlogRows.reduce((sum, r) => sum + parseInt(r.File_size || "0"), 0);
928
779
  if (binlogSize > 0) {
929
780
  stats.push({
930
- name: 'Binary Logs',
781
+ name: "Binary Logs",
931
782
  size: formatBytes(binlogSize),
932
- sizeBytes: binlogSize,
783
+ sizeBytes: binlogSize
933
784
  });
934
785
  }
935
- } catch {
936
- // Binary logging not enabled
786
+ } catch (e) {
937
787
  }
938
-
939
- // Get InnoDB data file size
940
788
  try {
941
- const [innodbRows] = await conn.execute<RowDataPacket[]>(
789
+ const [innodbRows] = await conn.execute(
942
790
  "SHOW VARIABLES LIKE 'innodb_data_file_path'"
943
791
  );
944
792
  if (innodbRows.length > 0) {
945
793
  stats.push({
946
- name: 'InnoDB',
947
- location: innodbRows[0].Value || 'ibdata1',
948
- size: 'N/A',
949
- sizeBytes: 0,
794
+ name: "InnoDB",
795
+ location: innodbRows[0].Value || "ibdata1",
796
+ size: "N/A",
797
+ sizeBytes: 0
950
798
  });
951
799
  }
952
- } catch {
953
- // Could not get InnoDB info
800
+ } catch (e) {
954
801
  }
955
-
956
802
  return stats;
957
803
  } finally {
958
804
  conn.release();
959
805
  }
960
806
  }
961
-
962
- private formatUptimeString(seconds: number): string {
807
+ formatUptimeString(seconds) {
963
808
  const days = Math.floor(seconds / 86400);
964
- const hours = Math.floor((seconds % 86400) / 3600);
965
- const minutes = Math.floor((seconds % 3600) / 60);
966
-
809
+ const hours = Math.floor(seconds % 86400 / 3600);
810
+ const minutes = Math.floor(seconds % 3600 / 60);
967
811
  if (days > 0) return `${days}d ${hours}h`;
968
812
  if (hours > 0) return `${hours}h ${minutes}m`;
969
813
  return `${minutes}m`;
970
814
  }
971
-
972
- private formatDurationString(ms: number): string {
973
- if (ms < 1000) return `${ms}ms`;
974
- if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;
975
- if (ms < 3600000) return `${Math.floor(ms / 60000)}m ${Math.floor((ms % 60000) / 1000)}s`;
976
- return `${Math.floor(ms / 3600000)}h ${Math.floor((ms % 3600000) / 60000)}m`;
815
+ formatDurationString(ms) {
816
+ if (ms < 1e3) return `${ms}ms`;
817
+ if (ms < 6e4) return `${(ms / 1e3).toFixed(1)}s`;
818
+ if (ms < 36e5) return `${Math.floor(ms / 6e4)}m ${Math.floor(ms % 6e4 / 1e3)}s`;
819
+ return `${Math.floor(ms / 36e5)}h ${Math.floor(ms % 36e5 / 6e4)}m`;
977
820
  }
978
- }
821
+ };
822
+ _MySQLProvider.TX_TIMEOUT_MS = 5 * 60 * 1e3;
823
+ var MySQLProvider = _MySQLProvider;
824
+
825
+ export { MySQLProvider };
826
+ //# sourceMappingURL=mysql-I3WJQXN2.mjs.map
827
+ //# sourceMappingURL=mysql-I3WJQXN2.mjs.map