@libredb/studio 0.9.7 → 0.9.13

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-CPF7XWV5.mjs +1289 -0
  8. package/dist/chunk-CPF7XWV5.mjs.map +1 -0
  9. package/dist/chunk-CZVV3JJB.mjs +160 -0
  10. package/dist/chunk-CZVV3JJB.mjs.map +1 -0
  11. package/dist/chunk-D4WVWWWF.js +332 -0
  12. package/dist/chunk-D4WVWWWF.js.map +1 -0
  13. package/dist/chunk-DY3KXE44.mjs +3 -0
  14. package/dist/chunk-DY3KXE44.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-G3S66G64.mjs +6673 -0
  18. package/dist/chunk-G3S66G64.mjs.map +1 -0
  19. package/dist/chunk-G4WYE6TI.js +4 -0
  20. package/dist/chunk-G4WYE6TI.js.map +1 -0
  21. package/dist/chunk-HGPD6PWV.js +1310 -0
  22. package/dist/chunk-HGPD6PWV.js.map +1 -0
  23. package/dist/chunk-JZO5KRZN.js +165 -0
  24. package/dist/chunk-JZO5KRZN.js.map +1 -0
  25. package/dist/chunk-KV356UXJ.js +253 -0
  26. package/dist/chunk-KV356UXJ.js.map +1 -0
  27. package/dist/chunk-PPODO6HX.mjs +237 -0
  28. package/dist/chunk-PPODO6HX.mjs.map +1 -0
  29. package/dist/chunk-PTIRB2JO.js +258 -0
  30. package/dist/chunk-PTIRB2JO.js.map +1 -0
  31. package/dist/chunk-Q6LRDBK7.js +42 -0
  32. package/dist/chunk-Q6LRDBK7.js.map +1 -0
  33. package/dist/chunk-QJP5FZRY.mjs +255 -0
  34. package/dist/chunk-QJP5FZRY.mjs.map +1 -0
  35. package/dist/chunk-R3POCJK6.mjs +248 -0
  36. package/dist/chunk-R3POCJK6.mjs.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-Y52UIFEX.js +6741 -0
  44. package/dist/chunk-Y52UIFEX.js.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 +4174 -0
  120. package/dist/workspace.js.map +1 -0
  121. package/dist/workspace.mjs +4147 -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,131 +1,73 @@
1
- /**
2
- * Oracle Database Provider
3
- * Full Oracle support with connection pooling (Thin mode - no Instant Client needed)
4
- */
5
-
1
+ import { SQLBaseProvider, DEFAULT_QUERY_LIMIT, MAX_UNLIMITED_ROWS, analyzeQuery } 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';
6
5
  import oracledb from 'oracledb';
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 ProviderLabels,
18
- type SlowQuery,
19
- type ActiveSession,
20
- type DatabaseOverview,
21
- type PerformanceMetrics,
22
- type SlowQueryStats,
23
- type ActiveSessionDetails,
24
- type TableStats,
25
- type IndexStats,
26
- type StorageStats,
27
- type PreparedQuery,
28
- type QueryPrepareOptions,
29
- } from '../../types';
30
- import {
31
- DatabaseConfigError,
32
- ConnectionError,
33
- QueryError,
34
- mapDatabaseError,
35
- } from '../../errors';
36
- import { formatBytes } from '../../utils/pool-manager';
37
- import {
38
- analyzeQuery,
39
- DEFAULT_QUERY_LIMIT,
40
- MAX_UNLIMITED_ROWS,
41
- } from '../../utils/query-limiter';
42
-
43
- // ============================================================================
44
- // Oracle Provider
45
- // ============================================================================
46
-
47
- export class OracleProvider extends SQLBaseProvider {
48
- private pool: oracledb.Pool | null = null;
49
-
50
- // Transaction support: dedicated connection held outside pool
51
- private txConn: oracledb.Connection | null = null;
52
- private txActive = false;
53
-
54
- // Track running connections for cancellation
55
- private runningConns = new Map<string, oracledb.Connection>();
56
6
 
57
- constructor(config: DatabaseConnection, options: ProviderOptions = {}) {
7
+ var OracleProvider = class extends SQLBaseProvider {
8
+ constructor(config, options = {}) {
58
9
  super(config, options);
59
- // Use thin mode (pure JS, no Oracle Instant Client)
60
- oracledb.initOracleClient = undefined as unknown as typeof oracledb.initOracleClient;
10
+ this.pool = null;
11
+ // Transaction support: dedicated connection held outside pool
12
+ this.txConn = null;
13
+ this.txActive = false;
14
+ // Track running connections for cancellation
15
+ this.runningConns = /* @__PURE__ */ new Map();
16
+ oracledb.initOracleClient = void 0;
61
17
  oracledb.outFormat = oracledb.OUT_FORMAT_OBJECT;
62
18
  oracledb.autoCommit = true;
63
19
  this.validate();
64
20
  }
65
-
66
21
  // ============================================================================
67
22
  // Provider Metadata
68
23
  // ============================================================================
69
-
70
- public override getCapabilities(): ProviderCapabilities {
71
- return {
72
- ...super.getCapabilities(),
24
+ getCapabilities() {
25
+ return __spreadProps(__spreadValues({}, super.getCapabilities()), {
73
26
  defaultPort: 1521,
74
27
  supportsExplain: true,
75
28
  supportsConnectionString: true,
76
- maintenanceOperations: ['analyze', 'optimize', 'kill'],
77
- };
29
+ maintenanceOperations: ["analyze", "optimize", "kill"]
30
+ });
78
31
  }
79
-
80
- public override getLabels(): ProviderLabels {
81
- return {
82
- ...super.getLabels(),
83
- analyzeAction: 'Gather Statistics',
84
- vacuumAction: 'Rebuild Indexes',
85
- analyzeGlobalLabel: 'Gather Stats',
86
- analyzeGlobalTitle: 'Gather Statistics',
87
- analyzeGlobalDesc: 'Collects optimizer statistics for all tables to improve query performance.',
88
- vacuumGlobalLabel: 'Rebuild Indexes',
89
- vacuumGlobalTitle: 'Rebuild All Indexes',
90
- vacuumGlobalDesc: 'Rebuilds all indexes to reclaim space and improve performance.',
91
- };
32
+ getLabels() {
33
+ return __spreadProps(__spreadValues({}, super.getLabels()), {
34
+ analyzeAction: "Gather Statistics",
35
+ vacuumAction: "Rebuild Indexes",
36
+ analyzeGlobalLabel: "Gather Stats",
37
+ analyzeGlobalTitle: "Gather Statistics",
38
+ analyzeGlobalDesc: "Collects optimizer statistics for all tables to improve query performance.",
39
+ vacuumGlobalLabel: "Rebuild Indexes",
40
+ vacuumGlobalTitle: "Rebuild All Indexes",
41
+ vacuumGlobalDesc: "Rebuilds all indexes to reclaim space and improve performance."
42
+ });
92
43
  }
93
-
94
44
  // ============================================================================
95
45
  // Validation
96
46
  // ============================================================================
97
-
98
- public validate(): void {
47
+ validate() {
99
48
  super.validate();
100
-
101
49
  if (!this.config.connectionString) {
102
50
  if (!this.config.host) {
103
- throw new DatabaseConfigError('Host is required for Oracle', 'oracle');
51
+ throw new DatabaseConfigError("Host is required for Oracle", "oracle");
104
52
  }
105
53
  }
106
54
  }
107
-
108
55
  // ============================================================================
109
56
  // Connection Management
110
57
  // ============================================================================
111
-
112
- private getConnectString(): string {
58
+ getConnectString() {
113
59
  if (this.config.connectionString) {
114
60
  return this.config.connectionString;
115
61
  }
116
-
117
- const host = this.config.host || 'localhost';
62
+ const host = this.config.host || "localhost";
118
63
  const port = this.config.port || 1521;
119
- const serviceName = this.config.serviceName || this.config.database || 'ORCL';
120
-
64
+ const serviceName = this.config.serviceName || this.config.database || "ORCL";
121
65
  return `${host}:${port}/${serviceName}`;
122
66
  }
123
-
124
- public async connect(): Promise<void> {
67
+ async connect() {
125
68
  if (this.pool) {
126
69
  return;
127
70
  }
128
-
129
71
  try {
130
72
  this.pool = await oracledb.createPool({
131
73
  user: this.config.user,
@@ -133,143 +75,121 @@ export class OracleProvider extends SQLBaseProvider {
133
75
  connectString: this.getConnectString(),
134
76
  poolMin: this.poolConfig.min,
135
77
  poolMax: this.poolConfig.max,
136
- poolTimeout: Math.floor(this.poolConfig.idleTimeout / 1000),
78
+ poolTimeout: Math.floor(this.poolConfig.idleTimeout / 1e3)
137
79
  });
138
-
139
- // Test the connection
140
80
  const conn = await this.pool.getConnection();
141
81
  await conn.close();
142
-
143
82
  this.setConnected(true);
144
83
  } catch (error) {
145
84
  this.setError(error instanceof Error ? error : new Error(String(error)));
146
85
  throw new ConnectionError(
147
86
  `Failed to connect to Oracle: ${error instanceof Error ? error.message : error}`,
148
- 'oracle',
87
+ "oracle",
149
88
  this.config.host,
150
89
  this.config.port
151
90
  );
152
91
  }
153
92
  }
154
-
155
- public async disconnect(): Promise<void> {
93
+ async disconnect() {
156
94
  if (this.pool) {
157
95
  try {
158
96
  await this.pool.close(0);
159
- } catch {
160
- // Force close on error
97
+ } catch (e) {
161
98
  }
162
99
  this.pool = null;
163
100
  this.setConnected(false);
164
101
  }
165
102
  }
166
-
167
103
  // ============================================================================
168
104
  // Query Execution
169
105
  // ============================================================================
170
-
171
- public async query(sql: string, params?: unknown[], queryId?: string): Promise<QueryResult> {
106
+ async query(sql, params, queryId) {
172
107
  this.ensureConnected();
173
-
174
108
  return this.trackQuery(async () => {
109
+ var _a, _b;
175
110
  const { result, executionTime } = await this.measureExecution(async () => {
176
- let conn: oracledb.Connection | undefined;
111
+ let conn;
177
112
  try {
178
- conn = await this.pool!.getConnection();
179
-
113
+ conn = await this.pool.getConnection();
180
114
  if (queryId) {
181
115
  this.runningConns.set(queryId, conn);
182
116
  }
183
-
184
117
  const bindParams = params || [];
185
118
  const res = await conn.execute(sql, bindParams, {
186
119
  outFormat: oracledb.OUT_FORMAT_OBJECT,
187
- autoCommit: true,
120
+ autoCommit: true
188
121
  });
189
-
190
122
  return res;
191
123
  } catch (error) {
192
- throw mapDatabaseError(error, 'oracle', sql);
124
+ throw mapDatabaseError(error, "oracle", sql);
193
125
  } finally {
194
126
  if (queryId) this.runningConns.delete(queryId);
195
127
  if (conn) {
196
- try { await conn.close(); } catch { /* ignore */ }
128
+ try {
129
+ await conn.close();
130
+ } catch (e) {
131
+ }
197
132
  }
198
133
  }
199
134
  });
200
-
201
- const rows = (result.rows || []) as Record<string, unknown>[];
202
- const fields = result.metaData?.map((m: { name: string }) => m.name) ?? [];
203
-
135
+ const rows = result.rows || [];
136
+ const fields = (_b = (_a = result.metaData) == null ? void 0 : _a.map((m) => m.name)) != null ? _b : [];
204
137
  return {
205
138
  rows,
206
139
  fields,
207
140
  rowCount: rows.length,
208
- executionTime,
141
+ executionTime
209
142
  };
210
143
  });
211
144
  }
212
-
213
- public async cancelQuery(queryId: string): Promise<boolean> {
145
+ async cancelQuery(queryId) {
214
146
  const conn = this.runningConns.get(queryId);
215
147
  if (!conn) return false;
216
-
217
148
  try {
218
149
  await conn.break();
219
150
  return true;
220
151
  } catch (error) {
221
- console.error('[Oracle] Failed to cancel query:', error);
152
+ console.error("[Oracle] Failed to cancel query:", error);
222
153
  return false;
223
154
  }
224
155
  }
225
-
226
156
  // ============================================================================
227
157
  // Query Preparation (Oracle FETCH FIRST instead of LIMIT)
228
158
  // ============================================================================
229
-
230
- public override prepareQuery(query: string, options: QueryPrepareOptions = {}): PreparedQuery {
159
+ prepareQuery(query, options = {}) {
231
160
  const { limit = DEFAULT_QUERY_LIMIT, offset = 0, unlimited = false } = options;
232
161
  const effectiveLimit = unlimited ? MAX_UNLIMITED_ROWS : limit;
233
162
  const queryInfo = analyzeQuery(query);
234
-
235
- if (queryInfo.type === 'SELECT' && !queryInfo.hasLimit) {
163
+ if (queryInfo.type === "SELECT" && !queryInfo.hasLimit) {
236
164
  let modifiedSql = query.trim();
237
- const hasSemicolon = modifiedSql.endsWith(';');
165
+ const hasSemicolon = modifiedSql.endsWith(";");
238
166
  if (hasSemicolon) modifiedSql = modifiedSql.slice(0, -1).trim();
239
-
240
167
  if (offset > 0) {
241
168
  modifiedSql = `${modifiedSql} OFFSET ${offset} ROWS FETCH NEXT ${effectiveLimit} ROWS ONLY`;
242
169
  } else {
243
170
  modifiedSql = `${modifiedSql} FETCH FIRST ${effectiveLimit} ROWS ONLY`;
244
171
  }
245
-
246
- if (hasSemicolon) modifiedSql += ';';
247
-
172
+ if (hasSemicolon) modifiedSql += ";";
248
173
  return {
249
174
  query: modifiedSql,
250
175
  wasLimited: true,
251
176
  limit: effectiveLimit,
252
- offset,
177
+ offset
253
178
  };
254
179
  }
255
-
256
180
  return { query, wasLimited: false, limit: effectiveLimit, offset };
257
181
  }
258
-
259
182
  // ============================================================================
260
183
  // Transaction Support
261
184
  // ============================================================================
262
-
263
- public async beginTransaction(): Promise<void> {
185
+ async beginTransaction() {
264
186
  this.ensureConnected();
265
- if (this.txActive) throw new QueryError('Transaction already active', 'oracle');
266
- this.txConn = await this.pool!.getConnection();
267
- // Oracle auto-starts a transaction; we just hold the connection
187
+ if (this.txActive) throw new QueryError("Transaction already active", "oracle");
188
+ this.txConn = await this.pool.getConnection();
268
189
  this.txActive = true;
269
190
  }
270
-
271
- public async commitTransaction(): Promise<void> {
272
- if (!this.txConn || !this.txActive) throw new QueryError('No active transaction', 'oracle');
191
+ async commitTransaction() {
192
+ if (!this.txConn || !this.txActive) throw new QueryError("No active transaction", "oracle");
273
193
  try {
274
194
  await this.txConn.commit();
275
195
  } finally {
@@ -278,9 +198,8 @@ export class OracleProvider extends SQLBaseProvider {
278
198
  this.txActive = false;
279
199
  }
280
200
  }
281
-
282
- public async rollbackTransaction(): Promise<void> {
283
- if (!this.txConn || !this.txActive) throw new QueryError('No active transaction', 'oracle');
201
+ async rollbackTransaction() {
202
+ if (!this.txConn || !this.txActive) throw new QueryError("No active transaction", "oracle");
284
203
  try {
285
204
  await this.txConn.rollback();
286
205
  } finally {
@@ -289,59 +208,49 @@ export class OracleProvider extends SQLBaseProvider {
289
208
  this.txActive = false;
290
209
  }
291
210
  }
292
-
293
- public isInTransaction(): boolean {
211
+ isInTransaction() {
294
212
  return this.txActive;
295
213
  }
296
-
297
- public async queryInTransaction(sql: string, params?: unknown[]): Promise<QueryResult> {
298
- if (!this.txConn || !this.txActive) throw new QueryError('No active transaction', 'oracle');
299
-
214
+ async queryInTransaction(sql, params) {
215
+ if (!this.txConn || !this.txActive) throw new QueryError("No active transaction", "oracle");
300
216
  return this.trackQuery(async () => {
217
+ var _a, _b;
301
218
  const { result, executionTime } = await this.measureExecution(async () => {
302
219
  try {
303
- return await this.txConn!.execute(sql, params || [], {
220
+ return await this.txConn.execute(sql, params || [], {
304
221
  outFormat: oracledb.OUT_FORMAT_OBJECT,
305
- autoCommit: false,
222
+ autoCommit: false
306
223
  });
307
224
  } catch (error) {
308
- throw mapDatabaseError(error, 'oracle', sql);
225
+ throw mapDatabaseError(error, "oracle", sql);
309
226
  }
310
227
  });
311
-
312
- const rows = (result.rows || []) as Record<string, unknown>[];
313
- const fields = result.metaData?.map((m: { name: string }) => m.name) ?? [];
314
-
228
+ const rows = result.rows || [];
229
+ const fields = (_b = (_a = result.metaData) == null ? void 0 : _a.map((m) => m.name)) != null ? _b : [];
315
230
  return {
316
231
  rows,
317
232
  fields,
318
233
  rowCount: rows.length,
319
- executionTime,
234
+ executionTime
320
235
  };
321
236
  });
322
237
  }
323
-
324
238
  // ============================================================================
325
239
  // Schema Operations
326
240
  // ============================================================================
327
-
328
- public async getSchema(): Promise<TableSchema[]> {
241
+ async getSchema() {
242
+ var _a;
329
243
  this.ensureConnected();
330
-
331
- let conn: oracledb.Connection | undefined;
244
+ let conn;
332
245
  try {
333
- conn = await this.pool!.getConnection();
334
- const owner = this.config.user?.toUpperCase() || '';
335
-
336
- // Get tables
246
+ conn = await this.pool.getConnection();
247
+ const owner = ((_a = this.config.user) == null ? void 0 : _a.toUpperCase()) || "";
337
248
  const tablesRes = await conn.execute(
338
249
  `SELECT TABLE_NAME, NUM_ROWS FROM ALL_TABLES WHERE OWNER = :1 ORDER BY TABLE_NAME`,
339
250
  [owner],
340
251
  { outFormat: oracledb.OUT_FORMAT_OBJECT }
341
252
  );
342
- const tables = (tablesRes.rows || []) as Record<string, unknown>[];
343
-
344
- // Get columns
253
+ const tables = tablesRes.rows || [];
345
254
  const colsRes = await conn.execute(
346
255
  `SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, NULLABLE, DATA_DEFAULT, COLUMN_ID
347
256
  FROM ALL_TAB_COLUMNS WHERE OWNER = :1
@@ -349,9 +258,7 @@ export class OracleProvider extends SQLBaseProvider {
349
258
  [owner],
350
259
  { outFormat: oracledb.OUT_FORMAT_OBJECT }
351
260
  );
352
- const allCols = (colsRes.rows || []) as Record<string, unknown>[];
353
-
354
- // Get primary keys
261
+ const allCols = colsRes.rows || [];
355
262
  const pkRes = await conn.execute(
356
263
  `SELECT ac.TABLE_NAME, acc.COLUMN_NAME
357
264
  FROM ALL_CONSTRAINTS ac
@@ -360,16 +267,14 @@ export class OracleProvider extends SQLBaseProvider {
360
267
  [owner],
361
268
  { outFormat: oracledb.OUT_FORMAT_OBJECT }
362
269
  );
363
- const pkRows = (pkRes.rows || []) as Record<string, unknown>[];
364
- const pkMap = new Map<string, Set<string>>();
270
+ const pkRows = pkRes.rows || [];
271
+ const pkMap = /* @__PURE__ */ new Map();
365
272
  for (const row of pkRows) {
366
- const tbl = String(row.TABLE_NAME || '');
367
- const col = String(row.COLUMN_NAME || '');
368
- if (!pkMap.has(tbl)) pkMap.set(tbl, new Set());
369
- pkMap.get(tbl)!.add(col);
273
+ const tbl = String(row.TABLE_NAME || "");
274
+ const col = String(row.COLUMN_NAME || "");
275
+ if (!pkMap.has(tbl)) pkMap.set(tbl, /* @__PURE__ */ new Set());
276
+ pkMap.get(tbl).add(col);
370
277
  }
371
-
372
- // Get foreign keys
373
278
  const fkRes = await conn.execute(
374
279
  `SELECT ac.TABLE_NAME,
375
280
  acc.COLUMN_NAME,
@@ -383,9 +288,7 @@ export class OracleProvider extends SQLBaseProvider {
383
288
  [owner],
384
289
  { outFormat: oracledb.OUT_FORMAT_OBJECT }
385
290
  );
386
- const fkRows = (fkRes.rows || []) as Record<string, unknown>[];
387
-
388
- // Get indexes
291
+ const fkRows = fkRes.rows || [];
389
292
  const idxRes = await conn.execute(
390
293
  `SELECT ai.TABLE_NAME, ai.INDEX_NAME, ai.UNIQUENESS, aic.COLUMN_NAME, aic.COLUMN_POSITION
391
294
  FROM ALL_INDEXES ai
@@ -395,115 +298,101 @@ export class OracleProvider extends SQLBaseProvider {
395
298
  [owner],
396
299
  { outFormat: oracledb.OUT_FORMAT_OBJECT }
397
300
  );
398
- const idxRows = (idxRes.rows || []) as Record<string, unknown>[];
399
-
400
- // Group columns, indexes, foreign keys by table
401
- const colsByTable = new Map<string, Record<string, unknown>[]>();
301
+ const idxRows = idxRes.rows || [];
302
+ const colsByTable = /* @__PURE__ */ new Map();
402
303
  for (const c of allCols) {
403
- const tbl = String(c.TABLE_NAME || '');
304
+ const tbl = String(c.TABLE_NAME || "");
404
305
  if (!colsByTable.has(tbl)) colsByTable.set(tbl, []);
405
- colsByTable.get(tbl)!.push(c);
306
+ colsByTable.get(tbl).push(c);
406
307
  }
407
-
408
- const fksByTable = new Map<string, Record<string, unknown>[]>();
308
+ const fksByTable = /* @__PURE__ */ new Map();
409
309
  for (const fk of fkRows) {
410
- const tbl = String(fk.TABLE_NAME || '');
310
+ const tbl = String(fk.TABLE_NAME || "");
411
311
  if (!fksByTable.has(tbl)) fksByTable.set(tbl, []);
412
- fksByTable.get(tbl)!.push(fk);
312
+ fksByTable.get(tbl).push(fk);
413
313
  }
414
-
415
- const idxByTable = new Map<string, Map<string, { unique: boolean; columns: string[] }>>();
314
+ const idxByTable = /* @__PURE__ */ new Map();
416
315
  for (const idx of idxRows) {
417
- const tbl = String(idx.TABLE_NAME || '');
418
- const idxName = String(idx.INDEX_NAME || '');
419
- if (!idxByTable.has(tbl)) idxByTable.set(tbl, new Map());
420
- const tableIdxs = idxByTable.get(tbl)!;
316
+ const tbl = String(idx.TABLE_NAME || "");
317
+ const idxName = String(idx.INDEX_NAME || "");
318
+ if (!idxByTable.has(tbl)) idxByTable.set(tbl, /* @__PURE__ */ new Map());
319
+ const tableIdxs = idxByTable.get(tbl);
421
320
  if (!tableIdxs.has(idxName)) {
422
321
  tableIdxs.set(idxName, {
423
- unique: String(idx.UNIQUENESS || '') === 'UNIQUE',
424
- columns: [],
322
+ unique: String(idx.UNIQUENESS || "") === "UNIQUE",
323
+ columns: []
425
324
  });
426
325
  }
427
- tableIdxs.get(idxName)!.columns.push(String(idx.COLUMN_NAME || ''));
326
+ tableIdxs.get(idxName).columns.push(String(idx.COLUMN_NAME || ""));
428
327
  }
429
-
430
328
  return tables.map((t) => {
431
- const tableName = String(t.TABLE_NAME || '');
432
- const pks = pkMap.get(tableName) || new Set();
433
-
329
+ const tableName = String(t.TABLE_NAME || "");
330
+ const pks = pkMap.get(tableName) || /* @__PURE__ */ new Set();
434
331
  const columns = (colsByTable.get(tableName) || []).map((c) => ({
435
- name: String(c.COLUMN_NAME || ''),
436
- type: String(c.DATA_TYPE || ''),
437
- nullable: String(c.NULLABLE || '') === 'Y',
438
- isPrimary: pks.has(String(c.COLUMN_NAME || '')),
439
- defaultValue: c.DATA_DEFAULT ? String(c.DATA_DEFAULT).trim() : undefined,
332
+ name: String(c.COLUMN_NAME || ""),
333
+ type: String(c.DATA_TYPE || ""),
334
+ nullable: String(c.NULLABLE || "") === "Y",
335
+ isPrimary: pks.has(String(c.COLUMN_NAME || "")),
336
+ defaultValue: c.DATA_DEFAULT ? String(c.DATA_DEFAULT).trim() : void 0
440
337
  }));
441
-
442
338
  const foreignKeys = (fksByTable.get(tableName) || []).map((fk) => ({
443
- columnName: String(fk.COLUMN_NAME || ''),
444
- referencedTable: String(fk.REF_TABLE || ''),
445
- referencedColumn: String(fk.REF_COLUMN || ''),
339
+ columnName: String(fk.COLUMN_NAME || ""),
340
+ referencedTable: String(fk.REF_TABLE || ""),
341
+ referencedColumn: String(fk.REF_COLUMN || "")
446
342
  }));
447
-
448
- const tableIdxs = idxByTable.get(tableName) || new Map();
343
+ const tableIdxs = idxByTable.get(tableName) || /* @__PURE__ */ new Map();
449
344
  const indexes = Array.from(tableIdxs.entries()).map(([name, info]) => ({
450
345
  name,
451
346
  columns: info.columns,
452
- unique: info.unique,
347
+ unique: info.unique
453
348
  }));
454
-
455
349
  return {
456
350
  name: tableName,
457
351
  rowCount: Number(t.NUM_ROWS || 0),
458
352
  columns,
459
353
  indexes,
460
- foreignKeys,
354
+ foreignKeys
461
355
  };
462
356
  });
463
357
  } finally {
464
358
  if (conn) await conn.close();
465
359
  }
466
360
  }
467
-
468
361
  // ============================================================================
469
362
  // Health & Monitoring
470
363
  // ============================================================================
471
-
472
- public async getHealth(): Promise<HealthInfo> {
364
+ async getHealth() {
365
+ var _a, _b, _c;
473
366
  this.ensureConnected();
474
-
475
- let conn: oracledb.Connection | undefined;
367
+ let conn;
476
368
  try {
477
- conn = await this.pool!.getConnection();
478
-
369
+ conn = await this.pool.getConnection();
479
370
  let activeConnections = 0;
480
- let databaseSize = 'N/A';
481
- let cacheHitRatio = 'N/A';
482
- const slowQueries: SlowQuery[] = [];
483
- const activeSessions: ActiveSession[] = [];
484
-
485
- // Active connections
371
+ let databaseSize = "N/A";
372
+ let cacheHitRatio = "N/A";
373
+ const slowQueries = [];
374
+ const activeSessions = [];
486
375
  try {
487
376
  const connRes = await conn.execute(
488
377
  `SELECT COUNT(*) AS CNT FROM V$SESSION WHERE STATUS = 'ACTIVE'`,
489
- [], { outFormat: oracledb.OUT_FORMAT_OBJECT }
378
+ [],
379
+ { outFormat: oracledb.OUT_FORMAT_OBJECT }
490
380
  );
491
- const rows = (connRes.rows || []) as Record<string, unknown>[];
492
- activeConnections = Number(rows[0]?.CNT || 0);
493
- } catch { /* V$ requires privileges */ }
494
-
495
- // Database size
381
+ const rows = connRes.rows || [];
382
+ activeConnections = Number(((_a = rows[0]) == null ? void 0 : _a.CNT) || 0);
383
+ } catch (e) {
384
+ }
496
385
  try {
497
386
  const sizeRes = await conn.execute(
498
387
  `SELECT ROUND(SUM(BYTES) / 1024 / 1024, 2) AS SIZE_MB FROM USER_SEGMENTS`,
499
- [], { outFormat: oracledb.OUT_FORMAT_OBJECT }
388
+ [],
389
+ { outFormat: oracledb.OUT_FORMAT_OBJECT }
500
390
  );
501
- const sizeRows = (sizeRes.rows || []) as Record<string, unknown>[];
502
- const mb = Number(sizeRows[0]?.SIZE_MB || 0);
391
+ const sizeRows = sizeRes.rows || [];
392
+ const mb = Number(((_b = sizeRows[0]) == null ? void 0 : _b.SIZE_MB) || 0);
503
393
  databaseSize = mb > 1024 ? `${(mb / 1024).toFixed(2)} GB` : `${mb} MB`;
504
- } catch { /* ignore */ }
505
-
506
- // Cache hit ratio
394
+ } catch (e) {
395
+ }
507
396
  try {
508
397
  const cacheRes = await conn.execute(
509
398
  `SELECT ROUND(
@@ -512,13 +401,13 @@ export class OracleProvider extends SQLBaseProvider {
512
401
  )) * 100, 2) AS HIT_RATIO
513
402
  FROM V$SYSSTAT
514
403
  WHERE NAME IN ('db block gets', 'consistent gets', 'physical reads')`,
515
- [], { outFormat: oracledb.OUT_FORMAT_OBJECT }
404
+ [],
405
+ { outFormat: oracledb.OUT_FORMAT_OBJECT }
516
406
  );
517
- const cacheRows = (cacheRes.rows || []) as Record<string, unknown>[];
518
- cacheHitRatio = `${cacheRows[0]?.HIT_RATIO || 0}%`;
519
- } catch { /* ignore */ }
520
-
521
- // Slow queries
407
+ const cacheRows = cacheRes.rows || [];
408
+ cacheHitRatio = `${((_c = cacheRows[0]) == null ? void 0 : _c.HIT_RATIO) || 0}%`;
409
+ } catch (e) {
410
+ }
522
411
  try {
523
412
  const slowRes = await conn.execute(
524
413
  `SELECT * FROM (
@@ -529,18 +418,18 @@ export class OracleProvider extends SQLBaseProvider {
529
418
  WHERE EXECUTIONS > 0
530
419
  ORDER BY ELAPSED_TIME DESC
531
420
  ) WHERE ROWNUM <= 5`,
532
- [], { outFormat: oracledb.OUT_FORMAT_OBJECT }
421
+ [],
422
+ { outFormat: oracledb.OUT_FORMAT_OBJECT }
533
423
  );
534
- for (const row of (slowRes.rows || []) as Record<string, unknown>[]) {
424
+ for (const row of slowRes.rows || []) {
535
425
  slowQueries.push({
536
- query: String(row.QUERY || ''),
426
+ query: String(row.QUERY || ""),
537
427
  calls: Number(row.CALLS || 0),
538
- avgTime: String(row.AVGTIME || 'N/A'),
428
+ avgTime: String(row.AVGTIME || "N/A")
539
429
  });
540
430
  }
541
- } catch { /* V$SQL requires privileges */ }
542
-
543
- // Active sessions
431
+ } catch (e) {
432
+ }
544
433
  try {
545
434
  const sessRes = await conn.execute(
546
435
  `SELECT * FROM (
@@ -551,74 +440,71 @@ export class OracleProvider extends SQLBaseProvider {
551
440
  WHERE TYPE = 'USER' AND STATUS = 'ACTIVE'
552
441
  ORDER BY LOGON_TIME DESC
553
442
  ) WHERE ROWNUM <= 10`,
554
- [], { outFormat: oracledb.OUT_FORMAT_OBJECT }
443
+ [],
444
+ { outFormat: oracledb.OUT_FORMAT_OBJECT }
555
445
  );
556
- for (const row of (sessRes.rows || []) as Record<string, unknown>[]) {
446
+ for (const row of sessRes.rows || []) {
557
447
  activeSessions.push({
558
- pid: String(row.SID || ''),
559
- user: String(row.USERNAME || 'unknown'),
560
- database: String(row.DATABASE || ''),
561
- state: String(row.STATUS || 'unknown'),
562
- query: String(row.QUERY || ''),
563
- duration: String(row.DURATION || 'N/A'),
448
+ pid: String(row.SID || ""),
449
+ user: String(row.USERNAME || "unknown"),
450
+ database: String(row.DATABASE || ""),
451
+ state: String(row.STATUS || "unknown"),
452
+ query: String(row.QUERY || ""),
453
+ duration: String(row.DURATION || "N/A")
564
454
  });
565
455
  }
566
- } catch { /* ignore */ }
567
-
456
+ } catch (e) {
457
+ }
568
458
  return { activeConnections, databaseSize, cacheHitRatio, slowQueries, activeSessions };
569
459
  } finally {
570
460
  if (conn) await conn.close();
571
461
  }
572
462
  }
573
-
574
463
  // ============================================================================
575
464
  // Maintenance Operations
576
465
  // ============================================================================
577
-
578
- public async runMaintenance(type: MaintenanceType, target?: string): Promise<MaintenanceResult> {
466
+ async runMaintenance(type, target) {
579
467
  this.ensureConnected();
580
-
581
468
  const { result, executionTime } = await this.measureExecution(async () => {
582
- let conn: oracledb.Connection | undefined;
469
+ let conn;
583
470
  try {
584
- conn = await this.pool!.getConnection();
585
- let sql = '';
586
-
471
+ conn = await this.pool.getConnection();
472
+ let sql = "";
587
473
  switch (type) {
588
- case 'analyze':
474
+ case "analyze":
589
475
  if (target) {
590
476
  sql = `BEGIN DBMS_STATS.GATHER_TABLE_STATS(USER, '${target.replace(/'/g, "''")}'); END;`;
591
477
  } else {
592
478
  sql = `BEGIN DBMS_STATS.GATHER_SCHEMA_STATS(USER); END;`;
593
479
  }
594
480
  break;
595
- case 'optimize':
481
+ case "optimize":
596
482
  if (target) {
597
483
  sql = `ALTER INDEX "${target.replace(/"/g, '""')}" REBUILD`;
598
484
  } else {
599
- // Rebuild all indexes for user
600
485
  const idxRes = await conn.execute(
601
486
  `SELECT INDEX_NAME FROM USER_INDEXES WHERE INDEX_TYPE = 'NORMAL'`,
602
- [], { outFormat: oracledb.OUT_FORMAT_OBJECT }
487
+ [],
488
+ { outFormat: oracledb.OUT_FORMAT_OBJECT }
603
489
  );
604
- for (const row of (idxRes.rows || []) as Record<string, unknown>[]) {
490
+ for (const row of idxRes.rows || []) {
605
491
  try {
606
492
  await conn.execute(`ALTER INDEX "${String(row.INDEX_NAME)}" REBUILD`);
607
- } catch { /* individual index rebuild may fail */ }
493
+ } catch (e) {
494
+ }
608
495
  }
609
496
  return { success: true };
610
497
  }
611
498
  break;
612
- case 'kill':
499
+ case "kill":
613
500
  if (!target) {
614
- throw new QueryError('Target SID,SERIAL# is required for kill operation', 'oracle');
501
+ throw new QueryError("Target SID,SERIAL# is required for kill operation", "oracle");
615
502
  }
616
503
  sql = `ALTER SYSTEM KILL SESSION '${target.replace(/'/g, "''")}'`;
617
504
  break;
618
505
  default:
619
- throw new QueryError(`Unsupported maintenance type: ${type}`, 'oracle');
506
+ throw new QueryError(`Unsupported maintenance type: ${type}`, "oracle");
620
507
  }
621
-
622
508
  if (sql) {
623
509
  await conn.execute(sql);
624
510
  }
@@ -627,136 +513,133 @@ export class OracleProvider extends SQLBaseProvider {
627
513
  if (conn) await conn.close();
628
514
  }
629
515
  });
630
-
631
516
  return {
632
517
  success: result.success,
633
518
  executionTime,
634
- message: `${type.toUpperCase()} completed successfully`,
519
+ message: `${type.toUpperCase()} completed successfully`
635
520
  };
636
521
  }
637
-
638
522
  // ============================================================================
639
523
  // Pool Statistics
640
524
  // ============================================================================
641
-
642
- public getPoolStats() {
525
+ getPoolStats() {
643
526
  if (!this.pool) {
644
527
  return { total: 0, idle: 0, active: 0, waiting: 0 };
645
528
  }
646
-
647
529
  return {
648
530
  total: this.pool.connectionsOpen,
649
531
  idle: this.pool.connectionsOpen - this.pool.connectionsInUse,
650
532
  active: this.pool.connectionsInUse,
651
- waiting: 0,
533
+ waiting: 0
652
534
  };
653
535
  }
654
-
655
536
  // ============================================================================
656
537
  // Extended Monitoring Methods
657
538
  // ============================================================================
658
-
659
- public async getOverview(): Promise<DatabaseOverview> {
539
+ async getOverview() {
540
+ var _a, _b, _c, _d, _e, _f;
660
541
  this.ensureConnected();
661
-
662
- let conn: oracledb.Connection | undefined;
542
+ let conn;
663
543
  try {
664
- conn = await this.pool!.getConnection();
665
-
666
- let version = 'Oracle';
667
- let uptime = 'N/A';
668
- let startTime: Date | undefined;
544
+ conn = await this.pool.getConnection();
545
+ let version = "Oracle";
546
+ let uptime = "N/A";
547
+ let startTime;
669
548
  let activeConnections = 0;
670
549
  let maxConnections = 0;
671
- let databaseSize = '0 bytes';
550
+ let databaseSize = "0 bytes";
672
551
  let databaseSizeBytes = 0;
673
552
  let tableCount = 0;
674
553
  let indexCount = 0;
675
-
676
- // Version and uptime
677
554
  try {
678
555
  const vRes = await conn.execute(
679
556
  `SELECT BANNER FROM V$VERSION WHERE ROWNUM = 1`,
680
- [], { outFormat: oracledb.OUT_FORMAT_OBJECT }
557
+ [],
558
+ { outFormat: oracledb.OUT_FORMAT_OBJECT }
681
559
  );
682
- const vRows = (vRes.rows || []) as Record<string, unknown>[];
683
- if (vRows[0]?.BANNER) version = String(vRows[0].BANNER);
684
- } catch { /* ignore */ }
685
-
560
+ const vRows = vRes.rows || [];
561
+ if ((_a = vRows[0]) == null ? void 0 : _a.BANNER) version = String(vRows[0].BANNER);
562
+ } catch (e) {
563
+ }
686
564
  try {
687
565
  const upRes = await conn.execute(
688
566
  `SELECT STARTUP_TIME, (SYSDATE - STARTUP_TIME) * 86400 AS UPTIME_SECS FROM V$INSTANCE`,
689
- [], { outFormat: oracledb.OUT_FORMAT_OBJECT }
567
+ [],
568
+ { outFormat: oracledb.OUT_FORMAT_OBJECT }
690
569
  );
691
- const upRows = (upRes.rows || []) as Record<string, unknown>[];
570
+ const upRows = upRes.rows || [];
692
571
  if (upRows[0]) {
693
572
  const secs = Number(upRows[0].UPTIME_SECS || 0);
694
573
  const days = Math.floor(secs / 86400);
695
- const hours = Math.floor((secs % 86400) / 3600);
696
- const minutes = Math.floor((secs % 3600) / 60);
574
+ const hours = Math.floor(secs % 86400 / 3600);
575
+ const minutes = Math.floor(secs % 3600 / 60);
697
576
  uptime = days > 0 ? `${days}d ${hours}h ${minutes}m` : hours > 0 ? `${hours}h ${minutes}m` : `${minutes}m`;
698
577
  if (upRows[0].STARTUP_TIME) startTime = new Date(String(upRows[0].STARTUP_TIME));
699
578
  }
700
- } catch { /* ignore */ }
701
-
702
- // Connections
579
+ } catch (e) {
580
+ }
703
581
  try {
704
582
  const sessRes = await conn.execute(
705
583
  `SELECT COUNT(*) AS CNT FROM V$SESSION WHERE TYPE = 'USER'`,
706
- [], { outFormat: oracledb.OUT_FORMAT_OBJECT }
584
+ [],
585
+ { outFormat: oracledb.OUT_FORMAT_OBJECT }
707
586
  );
708
- activeConnections = Number(((sessRes.rows || []) as Record<string, unknown>[])[0]?.CNT || 0);
709
-
587
+ activeConnections = Number(((_b = (sessRes.rows || [])[0]) == null ? void 0 : _b.CNT) || 0);
710
588
  const maxRes = await conn.execute(
711
589
  `SELECT VALUE FROM V$PARAMETER WHERE NAME = 'sessions'`,
712
- [], { outFormat: oracledb.OUT_FORMAT_OBJECT }
590
+ [],
591
+ { outFormat: oracledb.OUT_FORMAT_OBJECT }
713
592
  );
714
- maxConnections = Number(((maxRes.rows || []) as Record<string, unknown>[])[0]?.VALUE || 0);
715
- } catch { /* ignore */ }
716
-
717
- // Database size
593
+ maxConnections = Number(((_c = (maxRes.rows || [])[0]) == null ? void 0 : _c.VALUE) || 0);
594
+ } catch (e) {
595
+ }
718
596
  try {
719
597
  const sizeRes = await conn.execute(
720
598
  `SELECT SUM(BYTES) AS TOTAL FROM USER_SEGMENTS`,
721
- [], { outFormat: oracledb.OUT_FORMAT_OBJECT }
599
+ [],
600
+ { outFormat: oracledb.OUT_FORMAT_OBJECT }
722
601
  );
723
- databaseSizeBytes = Number(((sizeRes.rows || []) as Record<string, unknown>[])[0]?.TOTAL || 0);
602
+ databaseSizeBytes = Number(((_d = (sizeRes.rows || [])[0]) == null ? void 0 : _d.TOTAL) || 0);
724
603
  databaseSize = formatBytes(databaseSizeBytes);
725
- } catch { /* ignore */ }
726
-
727
- // Table and index counts
604
+ } catch (e) {
605
+ }
728
606
  try {
729
607
  const cntRes = await conn.execute(
730
608
  `SELECT
731
609
  (SELECT COUNT(*) FROM USER_TABLES) AS TABLE_COUNT,
732
610
  (SELECT COUNT(*) FROM USER_INDEXES) AS INDEX_COUNT
733
611
  FROM DUAL`,
734
- [], { outFormat: oracledb.OUT_FORMAT_OBJECT }
612
+ [],
613
+ { outFormat: oracledb.OUT_FORMAT_OBJECT }
735
614
  );
736
- const cntRows = (cntRes.rows || []) as Record<string, unknown>[];
737
- tableCount = Number(cntRows[0]?.TABLE_COUNT || 0);
738
- indexCount = Number(cntRows[0]?.INDEX_COUNT || 0);
739
- } catch { /* ignore */ }
740
-
615
+ const cntRows = cntRes.rows || [];
616
+ tableCount = Number(((_e = cntRows[0]) == null ? void 0 : _e.TABLE_COUNT) || 0);
617
+ indexCount = Number(((_f = cntRows[0]) == null ? void 0 : _f.INDEX_COUNT) || 0);
618
+ } catch (e) {
619
+ }
741
620
  return {
742
- version, uptime, startTime, activeConnections, maxConnections,
743
- databaseSize, databaseSizeBytes, tableCount, indexCount,
621
+ version,
622
+ uptime,
623
+ startTime,
624
+ activeConnections,
625
+ maxConnections,
626
+ databaseSize,
627
+ databaseSizeBytes,
628
+ tableCount,
629
+ indexCount
744
630
  };
745
631
  } finally {
746
632
  if (conn) await conn.close();
747
633
  }
748
634
  }
749
-
750
- public async getPerformanceMetrics(): Promise<PerformanceMetrics> {
635
+ async getPerformanceMetrics() {
636
+ var _a;
751
637
  this.ensureConnected();
752
-
753
- let conn: oracledb.Connection | undefined;
638
+ let conn;
754
639
  try {
755
- conn = await this.pool!.getConnection();
756
-
640
+ conn = await this.pool.getConnection();
757
641
  let cacheHitRatio = 100;
758
- let bufferPoolUsage: number | undefined;
759
-
642
+ let bufferPoolUsage;
760
643
  try {
761
644
  const cacheRes = await conn.execute(
762
645
  `SELECT ROUND(
@@ -765,30 +648,29 @@ export class OracleProvider extends SQLBaseProvider {
765
648
  )) * 100, 2) AS HIT_RATIO
766
649
  FROM V$SYSSTAT
767
650
  WHERE NAME IN ('db block gets', 'consistent gets', 'physical reads')`,
768
- [], { outFormat: oracledb.OUT_FORMAT_OBJECT }
651
+ [],
652
+ { outFormat: oracledb.OUT_FORMAT_OBJECT }
769
653
  );
770
- const rows = (cacheRes.rows || []) as Record<string, unknown>[];
771
- cacheHitRatio = Number(rows[0]?.HIT_RATIO || 100);
654
+ const rows = cacheRes.rows || [];
655
+ cacheHitRatio = Number(((_a = rows[0]) == null ? void 0 : _a.HIT_RATIO) || 100);
772
656
  bufferPoolUsage = cacheHitRatio;
773
- } catch { /* ignore */ }
774
-
657
+ } catch (e) {
658
+ }
775
659
  return {
776
660
  cacheHitRatio,
777
- bufferPoolUsage,
661
+ bufferPoolUsage
778
662
  };
779
663
  } finally {
780
664
  if (conn) await conn.close();
781
665
  }
782
666
  }
783
-
784
- public async getSlowQueries(options?: { limit?: number }): Promise<SlowQueryStats[]> {
667
+ async getSlowQueries(options) {
668
+ var _a;
785
669
  this.ensureConnected();
786
- const limit = options?.limit ?? 10;
787
-
788
- let conn: oracledb.Connection | undefined;
670
+ const limit = (_a = options == null ? void 0 : options.limit) != null ? _a : 10;
671
+ let conn;
789
672
  try {
790
- conn = await this.pool!.getConnection();
791
-
673
+ conn = await this.pool.getConnection();
792
674
  const res = await conn.execute(
793
675
  `SELECT * FROM (
794
676
  SELECT SQL_ID AS QUERY_ID,
@@ -803,34 +685,32 @@ export class OracleProvider extends SQLBaseProvider {
803
685
  WHERE EXECUTIONS > 0
804
686
  ORDER BY ELAPSED_TIME DESC
805
687
  ) WHERE ROWNUM <= ${limit}`,
806
- [], { outFormat: oracledb.OUT_FORMAT_OBJECT }
688
+ [],
689
+ { outFormat: oracledb.OUT_FORMAT_OBJECT }
807
690
  );
808
-
809
- return ((res.rows || []) as Record<string, unknown>[]).map((r) => ({
810
- queryId: String(r.QUERY_ID || ''),
811
- query: String(r.QUERY || ''),
691
+ return (res.rows || []).map((r) => ({
692
+ queryId: String(r.QUERY_ID || ""),
693
+ query: String(r.QUERY || ""),
812
694
  calls: Number(r.CALLS || 0),
813
695
  totalTime: Number(r.TOTAL_TIME || 0),
814
696
  avgTime: Number(r.AVG_TIME || 0),
815
697
  rows: Number(r.ROW_CNT || 0),
816
698
  sharedBlksHit: Number(r.BUF_GETS || 0),
817
- sharedBlksRead: Number(r.DISK_READS || 0),
699
+ sharedBlksRead: Number(r.DISK_READS || 0)
818
700
  }));
819
- } catch {
701
+ } catch (e) {
820
702
  return [];
821
703
  } finally {
822
704
  if (conn) await conn.close();
823
705
  }
824
706
  }
825
-
826
- public async getActiveSessions(options?: { limit?: number }): Promise<ActiveSessionDetails[]> {
707
+ async getActiveSessions(options) {
708
+ var _a;
827
709
  this.ensureConnected();
828
- const limit = options?.limit ?? 50;
829
-
830
- let conn: oracledb.Connection | undefined;
710
+ const limit = (_a = options == null ? void 0 : options.limit) != null ? _a : 50;
711
+ let conn;
831
712
  try {
832
- conn = await this.pool!.getConnection();
833
-
713
+ conn = await this.pool.getConnection();
834
714
  const res = await conn.execute(
835
715
  `SELECT * FROM (
836
716
  SELECT s.SID, s.SERIAL#, s.USERNAME, s.SCHEMANAME, s.PROGRAM,
@@ -844,46 +724,41 @@ export class OracleProvider extends SQLBaseProvider {
844
724
  WHERE s.TYPE = 'USER'
845
725
  ORDER BY CASE s.STATUS WHEN 'ACTIVE' THEN 0 ELSE 1 END, s.LOGON_TIME DESC
846
726
  ) WHERE ROWNUM <= ${limit}`,
847
- [], { outFormat: oracledb.OUT_FORMAT_OBJECT }
727
+ [],
728
+ { outFormat: oracledb.OUT_FORMAT_OBJECT }
848
729
  );
849
-
850
- return ((res.rows || []) as Record<string, unknown>[]).map((r) => {
730
+ return (res.rows || []).map((r) => {
851
731
  const secs = Number(r.DURATION_SECS || 0);
852
- const durationStr = secs > 3600 ? `${Math.floor(secs / 3600)}h ${Math.floor((secs % 3600) / 60)}m`
853
- : secs > 60 ? `${Math.floor(secs / 60)}m ${secs % 60}s`
854
- : `${secs}s`;
855
-
732
+ const durationStr = secs > 3600 ? `${Math.floor(secs / 3600)}h ${Math.floor(secs % 3600 / 60)}m` : secs > 60 ? `${Math.floor(secs / 60)}m ${secs % 60}s` : `${secs}s`;
856
733
  return {
857
- pid: `${r.SID},${r['SERIAL#']}`,
858
- user: String(r.USERNAME || 'unknown'),
859
- database: String(r.SCHEMANAME || ''),
860
- applicationName: String(r.PROGRAM || ''),
861
- clientAddr: String(r.MACHINE || ''),
862
- state: String(r.STATUS || 'unknown'),
863
- query: String(r.QUERY || r.SQL_ID || ''),
864
- queryStart: r.LOGON_TIME ? new Date(String(r.LOGON_TIME)) : undefined,
734
+ pid: `${r.SID},${r["SERIAL#"]}`,
735
+ user: String(r.USERNAME || "unknown"),
736
+ database: String(r.SCHEMANAME || ""),
737
+ applicationName: String(r.PROGRAM || ""),
738
+ clientAddr: String(r.MACHINE || ""),
739
+ state: String(r.STATUS || "unknown"),
740
+ query: String(r.QUERY || r.SQL_ID || ""),
741
+ queryStart: r.LOGON_TIME ? new Date(String(r.LOGON_TIME)) : void 0,
865
742
  duration: durationStr,
866
- durationMs: secs * 1000,
867
- waitEventType: r.WAIT_CLASS ? String(r.WAIT_CLASS) : undefined,
868
- waitEvent: r.EVENT ? String(r.EVENT) : undefined,
869
- blocked: false,
743
+ durationMs: secs * 1e3,
744
+ waitEventType: r.WAIT_CLASS ? String(r.WAIT_CLASS) : void 0,
745
+ waitEvent: r.EVENT ? String(r.EVENT) : void 0,
746
+ blocked: false
870
747
  };
871
748
  });
872
- } catch {
749
+ } catch (e) {
873
750
  return [];
874
751
  } finally {
875
752
  if (conn) await conn.close();
876
753
  }
877
754
  }
878
-
879
- public async getTableStats(): Promise<TableStats[]> {
755
+ async getTableStats() {
756
+ var _a;
880
757
  this.ensureConnected();
881
-
882
- let conn: oracledb.Connection | undefined;
758
+ let conn;
883
759
  try {
884
- conn = await this.pool!.getConnection();
885
- const owner = this.config.user?.toUpperCase() || '';
886
-
760
+ conn = await this.pool.getConnection();
761
+ const owner = ((_a = this.config.user) == null ? void 0 : _a.toUpperCase()) || "";
887
762
  const res = await conn.execute(
888
763
  `SELECT t.TABLE_NAME,
889
764
  NVL(t.NUM_ROWS, 0) AS ROW_COUNT,
@@ -903,13 +778,12 @@ export class OracleProvider extends SQLBaseProvider {
903
778
  [owner],
904
779
  { outFormat: oracledb.OUT_FORMAT_OBJECT }
905
780
  );
906
-
907
- return ((res.rows || []) as Record<string, unknown>[]).map((r) => {
781
+ return (res.rows || []).map((r) => {
908
782
  const tableSizeBytes = Number(r.TABLE_SIZE_BYTES || 0);
909
783
  const indexSizeBytes = Number(r.INDEX_SIZE_BYTES || 0);
910
784
  return {
911
785
  schemaName: owner,
912
- tableName: String(r.TABLE_NAME || ''),
786
+ tableName: String(r.TABLE_NAME || ""),
913
787
  rowCount: Number(r.ROW_COUNT || 0),
914
788
  tableSize: formatBytes(tableSizeBytes),
915
789
  tableSizeBytes,
@@ -917,24 +791,22 @@ export class OracleProvider extends SQLBaseProvider {
917
791
  indexSizeBytes,
918
792
  totalSize: formatBytes(tableSizeBytes + indexSizeBytes),
919
793
  totalSizeBytes: tableSizeBytes + indexSizeBytes,
920
- lastAnalyze: r.LAST_ANALYZED ? new Date(String(r.LAST_ANALYZED)) : undefined,
794
+ lastAnalyze: r.LAST_ANALYZED ? new Date(String(r.LAST_ANALYZED)) : void 0
921
795
  };
922
796
  });
923
- } catch {
797
+ } catch (e) {
924
798
  return [];
925
799
  } finally {
926
800
  if (conn) await conn.close();
927
801
  }
928
802
  }
929
-
930
- public async getIndexStats(): Promise<IndexStats[]> {
803
+ async getIndexStats() {
804
+ var _a;
931
805
  this.ensureConnected();
932
-
933
- let conn: oracledb.Connection | undefined;
806
+ let conn;
934
807
  try {
935
- conn = await this.pool!.getConnection();
936
- const owner = this.config.user?.toUpperCase() || '';
937
-
808
+ conn = await this.pool.getConnection();
809
+ const owner = ((_a = this.config.user) == null ? void 0 : _a.toUpperCase()) || "";
938
810
  const res = await conn.execute(
939
811
  `SELECT ai.TABLE_NAME, ai.INDEX_NAME, ai.INDEX_TYPE, ai.UNIQUENESS,
940
812
  NVL(us.BYTES, 0) AS INDEX_SIZE_BYTES,
@@ -946,8 +818,6 @@ export class OracleProvider extends SQLBaseProvider {
946
818
  [owner],
947
819
  { outFormat: oracledb.OUT_FORMAT_OBJECT }
948
820
  );
949
-
950
- // Get columns for each index
951
821
  const colRes = await conn.execute(
952
822
  `SELECT INDEX_NAME, COLUMN_NAME, COLUMN_POSITION
953
823
  FROM ALL_IND_COLUMNS WHERE INDEX_OWNER = :1
@@ -955,46 +825,40 @@ export class OracleProvider extends SQLBaseProvider {
955
825
  [owner],
956
826
  { outFormat: oracledb.OUT_FORMAT_OBJECT }
957
827
  );
958
-
959
- const colMap = new Map<string, string[]>();
960
- for (const c of (colRes.rows || []) as Record<string, unknown>[]) {
961
- const idxName = String(c.INDEX_NAME || '');
828
+ const colMap = /* @__PURE__ */ new Map();
829
+ for (const c of colRes.rows || []) {
830
+ const idxName = String(c.INDEX_NAME || "");
962
831
  if (!colMap.has(idxName)) colMap.set(idxName, []);
963
- colMap.get(idxName)!.push(String(c.COLUMN_NAME || ''));
832
+ colMap.get(idxName).push(String(c.COLUMN_NAME || ""));
964
833
  }
965
-
966
- return ((res.rows || []) as Record<string, unknown>[]).map((r) => {
967
- const idxName = String(r.INDEX_NAME || '');
834
+ return (res.rows || []).map((r) => {
835
+ const idxName = String(r.INDEX_NAME || "");
968
836
  const idxSizeBytes = Number(r.INDEX_SIZE_BYTES || 0);
969
837
  return {
970
838
  schemaName: owner,
971
- tableName: String(r.TABLE_NAME || ''),
839
+ tableName: String(r.TABLE_NAME || ""),
972
840
  indexName: idxName,
973
- indexType: String(r.INDEX_TYPE || ''),
841
+ indexType: String(r.INDEX_TYPE || ""),
974
842
  columns: colMap.get(idxName) || [],
975
- isUnique: String(r.UNIQUENESS || '') === 'UNIQUE',
843
+ isUnique: String(r.UNIQUENESS || "") === "UNIQUE",
976
844
  isPrimary: false,
977
845
  indexSize: formatBytes(idxSizeBytes),
978
846
  indexSizeBytes: idxSizeBytes,
979
- scans: 0,
847
+ scans: 0
980
848
  };
981
849
  });
982
- } catch {
850
+ } catch (e) {
983
851
  return [];
984
852
  } finally {
985
853
  if (conn) await conn.close();
986
854
  }
987
855
  }
988
-
989
- public async getStorageStats(): Promise<StorageStats[]> {
856
+ async getStorageStats() {
990
857
  this.ensureConnected();
991
-
992
- let conn: oracledb.Connection | undefined;
858
+ let conn;
993
859
  try {
994
- conn = await this.pool!.getConnection();
995
- const results: StorageStats[] = [];
996
-
997
- // Try DBA tablespaces first, fallback to USER
860
+ conn = await this.pool.getConnection();
861
+ const results = [];
998
862
  try {
999
863
  const tsRes = await conn.execute(
1000
864
  `SELECT TABLESPACE_NAME AS NAME,
@@ -1002,19 +866,18 @@ export class OracleProvider extends SQLBaseProvider {
1002
866
  FROM DBA_DATA_FILES
1003
867
  GROUP BY TABLESPACE_NAME
1004
868
  ORDER BY SUM(BYTES) DESC`,
1005
- [], { outFormat: oracledb.OUT_FORMAT_OBJECT }
869
+ [],
870
+ { outFormat: oracledb.OUT_FORMAT_OBJECT }
1006
871
  );
1007
-
1008
- for (const row of (tsRes.rows || []) as Record<string, unknown>[]) {
872
+ for (const row of tsRes.rows || []) {
1009
873
  const sizeBytes = Number(row.SIZE_BYTES || 0);
1010
874
  results.push({
1011
- name: String(row.NAME || ''),
875
+ name: String(row.NAME || ""),
1012
876
  size: formatBytes(sizeBytes),
1013
- sizeBytes,
877
+ sizeBytes
1014
878
  });
1015
879
  }
1016
- } catch {
1017
- // Fallback: user segments
880
+ } catch (e) {
1018
881
  try {
1019
882
  const segRes = await conn.execute(
1020
883
  `SELECT TABLESPACE_NAME AS NAME,
@@ -1022,23 +885,27 @@ export class OracleProvider extends SQLBaseProvider {
1022
885
  FROM USER_SEGMENTS
1023
886
  GROUP BY TABLESPACE_NAME
1024
887
  ORDER BY SUM(BYTES) DESC`,
1025
- [], { outFormat: oracledb.OUT_FORMAT_OBJECT }
888
+ [],
889
+ { outFormat: oracledb.OUT_FORMAT_OBJECT }
1026
890
  );
1027
-
1028
- for (const row of (segRes.rows || []) as Record<string, unknown>[]) {
891
+ for (const row of segRes.rows || []) {
1029
892
  const sizeBytes = Number(row.SIZE_BYTES || 0);
1030
893
  results.push({
1031
- name: String(row.NAME || ''),
894
+ name: String(row.NAME || ""),
1032
895
  size: formatBytes(sizeBytes),
1033
- sizeBytes,
896
+ sizeBytes
1034
897
  });
1035
898
  }
1036
- } catch { /* ignore */ }
899
+ } catch (e2) {
900
+ }
1037
901
  }
1038
-
1039
902
  return results;
1040
903
  } finally {
1041
904
  if (conn) await conn.close();
1042
905
  }
1043
906
  }
1044
- }
907
+ };
908
+
909
+ export { OracleProvider };
910
+ //# sourceMappingURL=oracle-P2G7T4P4.mjs.map
911
+ //# sourceMappingURL=oracle-P2G7T4P4.mjs.map