orcaq 1.0.32 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/4by6-f6q.js +982 -0
  3. package/.output/public/_nuxt/8Ppmjv9D.js +1 -0
  4. package/.output/public/_nuxt/B1qjkRVO.js +1 -0
  5. package/.output/public/_nuxt/B3KEisfc.js +1 -0
  6. package/.output/public/_nuxt/B4ebLeWY.js +9 -0
  7. package/.output/public/_nuxt/{IitECNfD.js → B6hH0qos.js} +1 -1
  8. package/.output/public/_nuxt/{BUDtG__q.js → B7HEMfgt.js} +1 -1
  9. package/.output/public/_nuxt/B84SvUzr.js +1 -0
  10. package/.output/public/_nuxt/BDXvbRNW.js +1 -0
  11. package/.output/public/_nuxt/BGRcizqy.js +1 -0
  12. package/.output/public/_nuxt/{ClYziJpO.js → BGVGiigU.js} +1 -1
  13. package/.output/public/_nuxt/{ZdjmUBoX.js → BJYf67_H.js} +1 -1
  14. package/.output/public/_nuxt/BOK5ZFNK.js +1 -0
  15. package/.output/public/_nuxt/BPY2ud8g.js +1 -0
  16. package/.output/public/_nuxt/BSONoRG4.js +2 -0
  17. package/.output/public/_nuxt/BT53m-su.js +1 -0
  18. package/.output/public/_nuxt/BTJSh8in.js +2 -0
  19. package/.output/public/_nuxt/BVpt8J3a.js +1 -0
  20. package/.output/public/_nuxt/{BhUkpIlA.js → BdDEVolW.js} +1 -1
  21. package/.output/public/_nuxt/{C27bL9Es.js → BeNILdbT.js} +1 -1
  22. package/.output/public/_nuxt/{Dnx67EG9.js → BmU9CNkM.js} +1 -1
  23. package/.output/public/_nuxt/{DLHYqHwF.js → BnFDcr74.js} +1 -1
  24. package/.output/public/_nuxt/{sE-55p4e.js → BprXyYdv.js} +1 -1
  25. package/.output/public/_nuxt/{BCcTASq_.js → Bq7otXBA.js} +1 -1
  26. package/.output/public/_nuxt/{B_PBOfFN.js → BqyO8OjC.js} +93 -93
  27. package/.output/public/_nuxt/Bs1og3h1.js +10 -0
  28. package/.output/public/_nuxt/Bs2DgR_z.js +1 -0
  29. package/.output/public/_nuxt/{BsoQBloB.js → BvUhrUEH.js} +1 -1
  30. package/.output/public/_nuxt/{DkggUtNN.js → BxDrCsPf.js} +1 -1
  31. package/.output/public/_nuxt/BxrwrGYE.js +1 -0
  32. package/.output/public/_nuxt/By0aUn7N.js +1 -0
  33. package/.output/public/_nuxt/{C07rlnlv.js → ByOuUnNS.js} +1 -1
  34. package/.output/public/_nuxt/C177_GoB.js +1 -0
  35. package/.output/public/_nuxt/{DcfsxCxL.js → C1jMZ4hc.js} +1 -1
  36. package/.output/public/_nuxt/C5bgdIOp.js +1 -0
  37. package/.output/public/_nuxt/C69a9jD3.js +67 -0
  38. package/.output/public/_nuxt/C8AyZ3_X.js +2 -0
  39. package/.output/public/_nuxt/C8KplD68.js +1 -0
  40. package/.output/public/_nuxt/CA99KAte.js +3 -0
  41. package/.output/public/_nuxt/{CvTHaPAO.js → CE8aasoy.js} +1 -1
  42. package/.output/public/_nuxt/{DkY69STm.js → CEvNlevo.js} +1 -1
  43. package/.output/public/_nuxt/{B8JnYxjr.js → CKqvNpN3.js} +1 -1
  44. package/.output/public/_nuxt/CNF1h1lI.js +1 -0
  45. package/.output/public/_nuxt/COAycMg4.js +1 -0
  46. package/.output/public/_nuxt/CR6_eO9a.js +6 -0
  47. package/.output/public/_nuxt/{D4jn2f-6.js → CREZ9f0O.js} +4 -4
  48. package/.output/public/_nuxt/CS5ItJPR.js +39 -0
  49. package/.output/public/_nuxt/CcK14gfI.js +1 -0
  50. package/.output/public/_nuxt/{DnxDSFih.js → Ci43mke5.js} +3 -3
  51. package/.output/public/_nuxt/CjouDEjz.js +1 -0
  52. package/.output/public/_nuxt/Cp5lMcfd.js +1 -0
  53. package/.output/public/_nuxt/CpYiq1Wv.js +1 -0
  54. package/.output/public/_nuxt/{DVxTxYP4.js → CrLqg4B0.js} +1 -1
  55. package/.output/public/_nuxt/{BJxYuvXF.js → CvcedJeQ.js} +1 -1
  56. package/.output/public/_nuxt/{FIJP2AmN.js → Cvq07PgE.js} +1 -1
  57. package/.output/public/_nuxt/CwmbX4-U.js +1 -0
  58. package/.output/public/_nuxt/{B27ECqWz.js → Cx6s86aR.js} +1 -1
  59. package/.output/public/_nuxt/{DDYV6jDr.js → CybtvDjH.js} +1 -1
  60. package/.output/public/_nuxt/CzB2y8br.js +18 -0
  61. package/.output/public/_nuxt/{-p9JbKy8.js → D-YUpbah.js} +3 -3
  62. package/.output/public/_nuxt/D60Pzl_V.js +1 -0
  63. package/.output/public/_nuxt/D9BYd7AV.js +1 -0
  64. package/.output/public/_nuxt/D9dEqMyH.js +152 -0
  65. package/.output/public/_nuxt/DCJ49Fnq.js +1 -0
  66. package/.output/public/_nuxt/{gO22NLpn.js → DESYlybj.js} +1 -1
  67. package/.output/public/_nuxt/DFM-aCBX.js +1 -0
  68. package/.output/public/_nuxt/{DRKnK1N_.js → DHnNoguE.js} +1 -1
  69. package/.output/public/_nuxt/{ChkFTcxr.js → DJqZzQsX.js} +1 -1
  70. package/.output/public/_nuxt/DNNdcUH4.js +1 -0
  71. package/.output/public/_nuxt/{LFK46Fls.js → DNdM2ZyK.js} +1 -1
  72. package/.output/public/_nuxt/{CVliJ52o.js → DQT4eICL.js} +1 -1
  73. package/.output/public/_nuxt/{CffFK_qY.js → DWBoXz89.js} +1 -1
  74. package/.output/public/_nuxt/DXp9fCib.js +20 -0
  75. package/.output/public/_nuxt/{ACOLmAuq.js → DaKikgWm.js} +1 -1
  76. package/.output/public/_nuxt/{B9zSkyFO.js → DaMyovpr.js} +1 -1
  77. package/.output/public/_nuxt/DeBdxlx0.js +1 -0
  78. package/.output/public/_nuxt/{trZyeId5.js → DhKwXzSk.js} +1 -1
  79. package/.output/public/_nuxt/{C6Vqzp-9.js → DkadXn5U.js} +1 -1
  80. package/.output/public/_nuxt/Dkikh2OC.js +22 -0
  81. package/.output/public/_nuxt/DlOyXrKK.js +1 -0
  82. package/.output/public/_nuxt/{UqWhjgOc.js → Dpl6-lqE.js} +1 -1
  83. package/.output/public/_nuxt/DqA_edEU.js +1 -0
  84. package/.output/public/_nuxt/DqxL2Lpl.js +1 -0
  85. package/.output/public/_nuxt/Dt3rfvTn.js +1 -0
  86. package/.output/public/_nuxt/Dt5h0Tys.js +1 -0
  87. package/.output/public/_nuxt/DwrSZ8Vj.js +1 -0
  88. package/.output/public/_nuxt/DwyFZZT6.js +1 -0
  89. package/.output/public/_nuxt/EM8J-XL1.js +7 -0
  90. package/.output/public/_nuxt/ESKvsKwc.js +1 -0
  91. package/.output/public/_nuxt/{CWGdTiOD.js → F5lCgNdb.js} +1 -1
  92. package/.output/public/_nuxt/H5m89x1B.js +1 -0
  93. package/.output/public/_nuxt/{CwdIiq6J.js → PUe8M07P.js} +2 -2
  94. package/.output/public/_nuxt/{Cjgqfl1g.js → TEF-nDfP.js} +1 -1
  95. package/.output/public/_nuxt/{DNZpxuwM.js → TuKV3Ilv.js} +1 -1
  96. package/.output/public/_nuxt/V5LvXMJl.js +1 -0
  97. package/.output/public/_nuxt/{c_huf6xz.js → YJvNy3iu.js} +27 -27
  98. package/.output/public/_nuxt/{C7C8tPlA.js → ZObQcd0X.js} +1 -1
  99. package/.output/public/_nuxt/{CHOD7i6O.js → b_MfGg1c.js} +1 -1
  100. package/.output/public/_nuxt/builds/latest.json +1 -1
  101. package/.output/public/_nuxt/builds/meta/455d4da4-6357-4478-8703-78a79ccbbc0f.json +1 -0
  102. package/.output/public/_nuxt/entry.qdzR7QFr.css +1 -0
  103. package/.output/public/_nuxt/fpuEgQ7C.js +12 -0
  104. package/.output/public/_nuxt/jU7fkvuR.js +1 -0
  105. package/.output/public/_nuxt/{CSTzT9hP.js → lHkFwi3L.js} +1 -1
  106. package/.output/public/_nuxt/{BQOaPJzs.js → minLMBmY.js} +1 -1
  107. package/.output/public/_nuxt/pQ8l8BR2.js +1 -0
  108. package/.output/public/_nuxt/xYXqL1eV.js +1 -0
  109. package/.output/public/_nuxt/xxfb8w7n.js +1 -0
  110. package/.output/server/chunks/_/create-adapter.mjs +36 -7
  111. package/.output/server/chunks/_/create-adapter.mjs.map +1 -1
  112. package/.output/server/chunks/_/database-error.mjs +10 -0
  113. package/.output/server/chunks/_/database-error.mjs.map +1 -1
  114. package/.output/server/chunks/_/database-roles.factory.mjs +126 -22
  115. package/.output/server/chunks/_/database-roles.factory.mjs.map +1 -1
  116. package/.output/server/chunks/_/db-connection.mjs +721 -81
  117. package/.output/server/chunks/_/db-connection.mjs.map +1 -1
  118. package/.output/server/chunks/_/functions.factory.mjs +97 -6
  119. package/.output/server/chunks/_/functions.factory.mjs.map +1 -1
  120. package/.output/server/chunks/_/instance-insights.factory.mjs +106 -7
  121. package/.output/server/chunks/_/instance-insights.factory.mjs.map +1 -1
  122. package/.output/server/chunks/_/metadata.factory.mjs +912 -43
  123. package/.output/server/chunks/_/metadata.factory.mjs.map +1 -1
  124. package/.output/server/chunks/_/native-backup-jobs.mjs +1302 -0
  125. package/.output/server/chunks/_/native-backup-jobs.mjs.map +1 -0
  126. package/.output/server/chunks/_/query.factory.mjs +536 -14
  127. package/.output/server/chunks/_/query.factory.mjs.map +1 -1
  128. package/.output/server/chunks/_/schemaMeta.type.mjs +13 -0
  129. package/.output/server/chunks/_/schemaMeta.type.mjs.map +1 -0
  130. package/.output/server/chunks/_/tables.factory.mjs +905 -37
  131. package/.output/server/chunks/_/tables.factory.mjs.map +1 -1
  132. package/.output/server/chunks/_/type-alias.constants.mjs +242 -0
  133. package/.output/server/chunks/_/type-alias.constants.mjs.map +1 -0
  134. package/.output/server/chunks/_/views.factory.mjs +106 -8
  135. package/.output/server/chunks/_/views.factory.mjs.map +1 -1
  136. package/.output/server/chunks/build/client.manifest.mjs +676 -672
  137. package/.output/server/chunks/build/client.manifest.mjs.map +1 -1
  138. package/.output/server/chunks/nitro/nitro.mjs +1046 -751
  139. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  140. package/.output/server/chunks/routes/api/ai/agent.mjs +30 -79
  141. package/.output/server/chunks/routes/api/ai/agent.mjs.map +1 -1
  142. package/.output/server/chunks/routes/api/database-export/export-database.mjs +26 -124
  143. package/.output/server/chunks/routes/api/database-export/export-database.mjs.map +1 -1
  144. package/.output/server/chunks/routes/api/database-export/jobs/_jobId/download.get.mjs +52 -0
  145. package/.output/server/chunks/routes/api/database-export/jobs/_jobId/download.get.mjs.map +1 -0
  146. package/.output/server/chunks/routes/api/database-export/jobs/_jobId_.get.mjs +43 -0
  147. package/.output/server/chunks/routes/api/database-export/jobs/_jobId_.get.mjs.map +1 -0
  148. package/.output/server/chunks/routes/api/database-import/import-database.mjs +69 -134
  149. package/.output/server/chunks/routes/api/database-import/import-database.mjs.map +1 -1
  150. package/.output/server/chunks/routes/api/database-import/jobs/_jobId_.get.mjs +43 -0
  151. package/.output/server/chunks/routes/api/database-import/jobs/_jobId_.get.mjs.map +1 -0
  152. package/.output/server/chunks/routes/api/database-roles/create-role.mjs +2 -0
  153. package/.output/server/chunks/routes/api/database-roles/create-role.mjs.map +1 -1
  154. package/.output/server/chunks/routes/api/database-roles/delete-role.mjs +2 -0
  155. package/.output/server/chunks/routes/api/database-roles/delete-role.mjs.map +1 -1
  156. package/.output/server/chunks/routes/api/database-roles/get-databases-with-permissions.mjs +2 -0
  157. package/.output/server/chunks/routes/api/database-roles/get-databases-with-permissions.mjs.map +1 -1
  158. package/.output/server/chunks/routes/api/database-roles/get-databases.mjs +2 -0
  159. package/.output/server/chunks/routes/api/database-roles/get-databases.mjs.map +1 -1
  160. package/.output/server/chunks/routes/api/database-roles/get-permissions.mjs +2 -0
  161. package/.output/server/chunks/routes/api/database-roles/get-permissions.mjs.map +1 -1
  162. package/.output/server/chunks/routes/api/database-roles/get-role-inheritance.mjs +2 -0
  163. package/.output/server/chunks/routes/api/database-roles/get-role-inheritance.mjs.map +1 -1
  164. package/.output/server/chunks/routes/api/database-roles/get-role.mjs +2 -0
  165. package/.output/server/chunks/routes/api/database-roles/get-role.mjs.map +1 -1
  166. package/.output/server/chunks/routes/api/database-roles/get-roles.mjs +2 -0
  167. package/.output/server/chunks/routes/api/database-roles/get-roles.mjs.map +1 -1
  168. package/.output/server/chunks/routes/api/database-roles/get-schema-objects.mjs +2 -0
  169. package/.output/server/chunks/routes/api/database-roles/get-schema-objects.mjs.map +1 -1
  170. package/.output/server/chunks/routes/api/database-roles/get-schemas.mjs +2 -0
  171. package/.output/server/chunks/routes/api/database-roles/get-schemas.mjs.map +1 -1
  172. package/.output/server/chunks/routes/api/database-roles/grant-bulk-permissions.mjs +2 -0
  173. package/.output/server/chunks/routes/api/database-roles/grant-bulk-permissions.mjs.map +1 -1
  174. package/.output/server/chunks/routes/api/database-roles/grant-permission.mjs +2 -0
  175. package/.output/server/chunks/routes/api/database-roles/grant-permission.mjs.map +1 -1
  176. package/.output/server/chunks/routes/api/database-roles/revoke-permission.mjs +2 -0
  177. package/.output/server/chunks/routes/api/database-roles/revoke-permission.mjs.map +1 -1
  178. package/.output/server/chunks/routes/api/functions/definition.post.mjs +3 -1
  179. package/.output/server/chunks/routes/api/functions/definition.post.mjs.map +1 -1
  180. package/.output/server/chunks/routes/api/functions/delete.post.mjs +3 -1
  181. package/.output/server/chunks/routes/api/functions/delete.post.mjs.map +1 -1
  182. package/.output/server/chunks/routes/api/functions/overview.post.mjs +3 -1
  183. package/.output/server/chunks/routes/api/functions/overview.post.mjs.map +1 -1
  184. package/.output/server/chunks/routes/api/functions/rename.post.mjs +3 -1
  185. package/.output/server/chunks/routes/api/functions/rename.post.mjs.map +1 -1
  186. package/.output/server/chunks/routes/api/functions/signature.post.mjs +3 -1
  187. package/.output/server/chunks/routes/api/functions/signature.post.mjs.map +1 -1
  188. package/.output/server/chunks/routes/api/functions/update.post.mjs +24 -6
  189. package/.output/server/chunks/routes/api/functions/update.post.mjs.map +1 -1
  190. package/.output/server/chunks/routes/api/index.post.mjs +63 -0
  191. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -0
  192. package/.output/server/chunks/routes/api/instance-insights/cancel-query.post.mjs +2 -0
  193. package/.output/server/chunks/routes/api/instance-insights/cancel-query.post.mjs.map +1 -1
  194. package/.output/server/chunks/routes/api/instance-insights/configuration.post.mjs +2 -0
  195. package/.output/server/chunks/routes/api/instance-insights/configuration.post.mjs.map +1 -1
  196. package/.output/server/chunks/routes/api/instance-insights/dashboard.post.mjs +2 -0
  197. package/.output/server/chunks/routes/api/instance-insights/dashboard.post.mjs.map +1 -1
  198. package/.output/server/chunks/routes/api/instance-insights/drop-slot.post.mjs +2 -0
  199. package/.output/server/chunks/routes/api/instance-insights/drop-slot.post.mjs.map +1 -1
  200. package/.output/server/chunks/routes/api/instance-insights/replication.post.mjs +2 -0
  201. package/.output/server/chunks/routes/api/instance-insights/replication.post.mjs.map +1 -1
  202. package/.output/server/chunks/routes/api/instance-insights/state.post.mjs +2 -0
  203. package/.output/server/chunks/routes/api/instance-insights/state.post.mjs.map +1 -1
  204. package/.output/server/chunks/routes/api/instance-insights/terminate-connection.post.mjs +2 -0
  205. package/.output/server/chunks/routes/api/instance-insights/terminate-connection.post.mjs.map +1 -1
  206. package/.output/server/chunks/routes/api/instance-insights/toggle-slot-status.post.mjs +2 -0
  207. package/.output/server/chunks/routes/api/instance-insights/toggle-slot-status.post.mjs.map +1 -1
  208. package/.output/server/chunks/routes/api/managment-connection/health-check.mjs +10 -4
  209. package/.output/server/chunks/routes/api/managment-connection/health-check.mjs.map +1 -1
  210. package/.output/server/chunks/routes/api/metadata/erd.post.mjs +4 -0
  211. package/.output/server/chunks/routes/api/metadata/erd.post.mjs.map +1 -1
  212. package/.output/server/chunks/routes/api/metadata/meta-data.post.mjs +4 -0
  213. package/.output/server/chunks/routes/api/metadata/meta-data.post.mjs.map +1 -1
  214. package/.output/server/chunks/routes/api/metadata/reverse-schemas.post.mjs +4 -0
  215. package/.output/server/chunks/routes/api/metadata/reverse-schemas.post.mjs.map +1 -1
  216. package/.output/server/chunks/routes/api/metrics/monitor.post.mjs +80 -7
  217. package/.output/server/chunks/routes/api/metrics/monitor.post.mjs.map +1 -1
  218. package/.output/server/chunks/routes/api/query/execute.post.mjs +3 -1
  219. package/.output/server/chunks/routes/api/query/execute.post.mjs.map +1 -1
  220. package/.output/server/chunks/routes/api/query/raw-execute-stream.post.mjs +3 -1
  221. package/.output/server/chunks/routes/api/query/raw-execute-stream.post.mjs.map +1 -1
  222. package/.output/server/chunks/routes/api/query/raw-execute.post.mjs +3 -1
  223. package/.output/server/chunks/routes/api/query/raw-execute.post.mjs.map +1 -1
  224. package/.output/server/chunks/routes/api/tables/bulk-delete.post.mjs +3 -1
  225. package/.output/server/chunks/routes/api/tables/bulk-delete.post.mjs.map +1 -1
  226. package/.output/server/chunks/routes/api/tables/bulk-update.post.mjs +3 -1
  227. package/.output/server/chunks/routes/api/tables/bulk-update.post.mjs.map +1 -1
  228. package/.output/server/chunks/routes/api/tables/ddl.post.mjs +3 -1
  229. package/.output/server/chunks/routes/api/tables/ddl.post.mjs.map +1 -1
  230. package/.output/server/chunks/routes/api/tables/export.post.mjs +4 -2
  231. package/.output/server/chunks/routes/api/tables/export.post.mjs.map +1 -1
  232. package/.output/server/chunks/routes/api/tables/indexes.post.mjs +3 -1
  233. package/.output/server/chunks/routes/api/tables/indexes.post.mjs.map +1 -1
  234. package/.output/server/chunks/routes/api/tables/meta.post.mjs +3 -1
  235. package/.output/server/chunks/routes/api/tables/meta.post.mjs.map +1 -1
  236. package/.output/server/chunks/routes/api/tables/overview.post.mjs +3 -1
  237. package/.output/server/chunks/routes/api/tables/overview.post.mjs.map +1 -1
  238. package/.output/server/chunks/routes/api/tables/rls.post.mjs +3 -1
  239. package/.output/server/chunks/routes/api/tables/rls.post.mjs.map +1 -1
  240. package/.output/server/chunks/routes/api/tables/rules.post.mjs +3 -1
  241. package/.output/server/chunks/routes/api/tables/rules.post.mjs.map +1 -1
  242. package/.output/server/chunks/routes/api/tables/size.post.mjs +3 -1
  243. package/.output/server/chunks/routes/api/tables/size.post.mjs.map +1 -1
  244. package/.output/server/chunks/routes/api/tables/structure.post.mjs +3 -1
  245. package/.output/server/chunks/routes/api/tables/structure.post.mjs.map +1 -1
  246. package/.output/server/chunks/routes/api/tables/triggers.post.mjs +3 -1
  247. package/.output/server/chunks/routes/api/tables/triggers.post.mjs.map +1 -1
  248. package/.output/server/chunks/routes/api/views/definition.post.mjs +2 -0
  249. package/.output/server/chunks/routes/api/views/definition.post.mjs.map +1 -1
  250. package/.output/server/chunks/routes/api/views/dependencies.post.mjs +2 -0
  251. package/.output/server/chunks/routes/api/views/dependencies.post.mjs.map +1 -1
  252. package/.output/server/chunks/routes/api/views/explain.post.mjs +2 -0
  253. package/.output/server/chunks/routes/api/views/explain.post.mjs.map +1 -1
  254. package/.output/server/chunks/routes/api/views/indexes.post.mjs +2 -0
  255. package/.output/server/chunks/routes/api/views/indexes.post.mjs.map +1 -1
  256. package/.output/server/chunks/routes/api/views/meta.post.mjs +2 -0
  257. package/.output/server/chunks/routes/api/views/meta.post.mjs.map +1 -1
  258. package/.output/server/chunks/routes/api/views/overview.post.mjs +2 -0
  259. package/.output/server/chunks/routes/api/views/overview.post.mjs.map +1 -1
  260. package/.output/server/chunks/routes/renderer.mjs +1 -1
  261. package/.output/server/index.mjs +1 -1
  262. package/.output/server/node_modules/aws-ssl-profiles/lib/index.js +13 -0
  263. package/.output/server/node_modules/aws-ssl-profiles/lib/profiles/ca/defaults.js +2888 -0
  264. package/.output/server/node_modules/aws-ssl-profiles/lib/profiles/ca/proxies.js +111 -0
  265. package/.output/server/node_modules/aws-ssl-profiles/package.json +52 -0
  266. package/.output/server/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  267. package/.output/server/node_modules/better-sqlite3/lib/database.js +90 -0
  268. package/.output/server/node_modules/better-sqlite3/lib/index.js +3 -0
  269. package/.output/server/node_modules/better-sqlite3/lib/methods/aggregate.js +43 -0
  270. package/.output/server/node_modules/better-sqlite3/lib/methods/backup.js +67 -0
  271. package/.output/server/node_modules/better-sqlite3/lib/methods/function.js +31 -0
  272. package/.output/server/node_modules/better-sqlite3/lib/methods/inspect.js +7 -0
  273. package/.output/server/node_modules/better-sqlite3/lib/methods/pragma.js +12 -0
  274. package/.output/server/node_modules/better-sqlite3/lib/methods/serialize.js +16 -0
  275. package/.output/server/node_modules/better-sqlite3/lib/methods/table.js +189 -0
  276. package/.output/server/node_modules/better-sqlite3/lib/methods/transaction.js +78 -0
  277. package/.output/server/node_modules/better-sqlite3/lib/methods/wrappers.js +54 -0
  278. package/.output/server/node_modules/better-sqlite3/lib/sqlite-error.js +20 -0
  279. package/.output/server/node_modules/better-sqlite3/lib/util.js +12 -0
  280. package/.output/server/node_modules/better-sqlite3/package.json +59 -0
  281. package/.output/server/node_modules/cpu-features/build/Release/cpufeatures.node +0 -0
  282. package/.output/server/node_modules/cpu-features/lib/index.js +5 -0
  283. package/.output/server/node_modules/cpu-features/package.json +40 -0
  284. package/.output/server/node_modules/denque/index.js +481 -0
  285. package/.output/server/node_modules/denque/package.json +58 -0
  286. package/.output/server/node_modules/generate-function/index.js +181 -0
  287. package/.output/server/node_modules/generate-function/package.json +32 -0
  288. package/.output/server/node_modules/iconv-lite/encodings/dbcs-codec.js +532 -0
  289. package/.output/server/node_modules/iconv-lite/encodings/dbcs-data.js +185 -0
  290. package/.output/server/node_modules/iconv-lite/encodings/index.js +23 -0
  291. package/.output/server/node_modules/iconv-lite/encodings/internal.js +218 -0
  292. package/.output/server/node_modules/iconv-lite/encodings/sbcs-codec.js +75 -0
  293. package/.output/server/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
  294. package/.output/server/node_modules/iconv-lite/encodings/sbcs-data.js +178 -0
  295. package/.output/server/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
  296. package/.output/server/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
  297. package/.output/server/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
  298. package/.output/server/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
  299. package/.output/server/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
  300. package/.output/server/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
  301. package/.output/server/node_modules/iconv-lite/encodings/tables/gbk-added.json +56 -0
  302. package/.output/server/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
  303. package/.output/server/node_modules/iconv-lite/encodings/utf16.js +187 -0
  304. package/.output/server/node_modules/iconv-lite/encodings/utf32.js +307 -0
  305. package/.output/server/node_modules/iconv-lite/encodings/utf7.js +283 -0
  306. package/.output/server/node_modules/iconv-lite/lib/bom-handling.js +48 -0
  307. package/.output/server/node_modules/iconv-lite/lib/helpers/merge-exports.js +13 -0
  308. package/.output/server/node_modules/iconv-lite/lib/index.js +182 -0
  309. package/.output/server/node_modules/iconv-lite/lib/streams.js +105 -0
  310. package/.output/server/node_modules/iconv-lite/package.json +70 -0
  311. package/.output/server/node_modules/is-property/is-property.js +5 -0
  312. package/.output/server/node_modules/is-property/package.json +36 -0
  313. package/.output/server/node_modules/long/package.json +58 -0
  314. package/.output/server/node_modules/long/umd/index.js +1622 -0
  315. package/.output/server/node_modules/long/umd/package.json +3 -0
  316. package/.output/server/node_modules/lru.min/lib/index.js +248 -0
  317. package/.output/server/node_modules/lru.min/package.json +87 -0
  318. package/.output/server/node_modules/mysql2/index.js +77 -0
  319. package/.output/server/node_modules/mysql2/lib/auth_41.js +95 -0
  320. package/.output/server/node_modules/mysql2/lib/auth_plugins/caching_sha2_password.js +115 -0
  321. package/.output/server/node_modules/mysql2/lib/auth_plugins/index.js +8 -0
  322. package/.output/server/node_modules/mysql2/lib/auth_plugins/mysql_clear_password.js +17 -0
  323. package/.output/server/node_modules/mysql2/lib/auth_plugins/mysql_native_password.js +34 -0
  324. package/.output/server/node_modules/mysql2/lib/auth_plugins/sha256_password.js +74 -0
  325. package/.output/server/node_modules/mysql2/lib/base/connection.js +1139 -0
  326. package/.output/server/node_modules/mysql2/lib/base/pool.js +343 -0
  327. package/.output/server/node_modules/mysql2/lib/commands/auth_switch.js +151 -0
  328. package/.output/server/node_modules/mysql2/lib/commands/binlog_dump.js +109 -0
  329. package/.output/server/node_modules/mysql2/lib/commands/change_user.js +68 -0
  330. package/.output/server/node_modules/mysql2/lib/commands/client_handshake.js +386 -0
  331. package/.output/server/node_modules/mysql2/lib/commands/close_statement.js +18 -0
  332. package/.output/server/node_modules/mysql2/lib/commands/command.js +54 -0
  333. package/.output/server/node_modules/mysql2/lib/commands/execute.js +116 -0
  334. package/.output/server/node_modules/mysql2/lib/commands/index.js +29 -0
  335. package/.output/server/node_modules/mysql2/lib/commands/ping.js +36 -0
  336. package/.output/server/node_modules/mysql2/lib/commands/prepare.js +143 -0
  337. package/.output/server/node_modules/mysql2/lib/commands/query.js +365 -0
  338. package/.output/server/node_modules/mysql2/lib/commands/quit.js +29 -0
  339. package/.output/server/node_modules/mysql2/lib/commands/register_slave.js +27 -0
  340. package/.output/server/node_modules/mysql2/lib/commands/reset_connection.js +29 -0
  341. package/.output/server/node_modules/mysql2/lib/commands/server_handshake.js +205 -0
  342. package/.output/server/node_modules/mysql2/lib/compressed_protocol.js +153 -0
  343. package/.output/server/node_modules/mysql2/lib/connection.js +12 -0
  344. package/.output/server/node_modules/mysql2/lib/connection_config.js +299 -0
  345. package/.output/server/node_modules/mysql2/lib/constants/charset_encodings.js +317 -0
  346. package/.output/server/node_modules/mysql2/lib/constants/charsets.js +317 -0
  347. package/.output/server/node_modules/mysql2/lib/constants/client.js +39 -0
  348. package/.output/server/node_modules/mysql2/lib/constants/commands.js +37 -0
  349. package/.output/server/node_modules/mysql2/lib/constants/cursor.js +9 -0
  350. package/.output/server/node_modules/mysql2/lib/constants/encoding_charset.js +50 -0
  351. package/.output/server/node_modules/mysql2/lib/constants/errors.js +3973 -0
  352. package/.output/server/node_modules/mysql2/lib/constants/field_flags.js +20 -0
  353. package/.output/server/node_modules/mysql2/lib/constants/server_status.js +44 -0
  354. package/.output/server/node_modules/mysql2/lib/constants/session_track.js +11 -0
  355. package/.output/server/node_modules/mysql2/lib/constants/ssl_profiles.js +11 -0
  356. package/.output/server/node_modules/mysql2/lib/constants/types.js +64 -0
  357. package/.output/server/node_modules/mysql2/lib/create_connection.js +10 -0
  358. package/.output/server/node_modules/mysql2/lib/create_pool.js +10 -0
  359. package/.output/server/node_modules/mysql2/lib/create_pool_cluster.js +9 -0
  360. package/.output/server/node_modules/mysql2/lib/helpers.js +83 -0
  361. package/.output/server/node_modules/mysql2/lib/packet_parser.js +195 -0
  362. package/.output/server/node_modules/mysql2/lib/packets/auth_next_factor.js +35 -0
  363. package/.output/server/node_modules/mysql2/lib/packets/auth_switch_request.js +38 -0
  364. package/.output/server/node_modules/mysql2/lib/packets/auth_switch_request_more_data.js +33 -0
  365. package/.output/server/node_modules/mysql2/lib/packets/auth_switch_response.js +30 -0
  366. package/.output/server/node_modules/mysql2/lib/packets/binary_row.js +95 -0
  367. package/.output/server/node_modules/mysql2/lib/packets/binlog_dump.js +33 -0
  368. package/.output/server/node_modules/mysql2/lib/packets/binlog_query_statusvars.js +115 -0
  369. package/.output/server/node_modules/mysql2/lib/packets/change_user.js +97 -0
  370. package/.output/server/node_modules/mysql2/lib/packets/close_statement.js +21 -0
  371. package/.output/server/node_modules/mysql2/lib/packets/column_definition.js +291 -0
  372. package/.output/server/node_modules/mysql2/lib/packets/encode_parameter.js +69 -0
  373. package/.output/server/node_modules/mysql2/lib/packets/execute.js +177 -0
  374. package/.output/server/node_modules/mysql2/lib/packets/handshake.js +112 -0
  375. package/.output/server/node_modules/mysql2/lib/packets/handshake_response.js +173 -0
  376. package/.output/server/node_modules/mysql2/lib/packets/index.js +154 -0
  377. package/.output/server/node_modules/mysql2/lib/packets/packet.js +978 -0
  378. package/.output/server/node_modules/mysql2/lib/packets/prepare_statement.js +27 -0
  379. package/.output/server/node_modules/mysql2/lib/packets/prepared_statement_header.js +16 -0
  380. package/.output/server/node_modules/mysql2/lib/packets/query.js +102 -0
  381. package/.output/server/node_modules/mysql2/lib/packets/register_slave.js +46 -0
  382. package/.output/server/node_modules/mysql2/lib/packets/reset_connection.js +17 -0
  383. package/.output/server/node_modules/mysql2/lib/packets/resultset_header.js +124 -0
  384. package/.output/server/node_modules/mysql2/lib/packets/ssl_request.js +25 -0
  385. package/.output/server/node_modules/mysql2/lib/packets/text_row.js +47 -0
  386. package/.output/server/node_modules/mysql2/lib/parsers/binary_parser.js +235 -0
  387. package/.output/server/node_modules/mysql2/lib/parsers/parser_cache.js +68 -0
  388. package/.output/server/node_modules/mysql2/lib/parsers/static_binary_parser.js +213 -0
  389. package/.output/server/node_modules/mysql2/lib/parsers/static_text_parser.js +152 -0
  390. package/.output/server/node_modules/mysql2/lib/parsers/string.js +50 -0
  391. package/.output/server/node_modules/mysql2/lib/parsers/text_parser.js +214 -0
  392. package/.output/server/node_modules/mysql2/lib/pool.js +12 -0
  393. package/.output/server/node_modules/mysql2/lib/pool_cluster.js +375 -0
  394. package/.output/server/node_modules/mysql2/lib/pool_config.js +34 -0
  395. package/.output/server/node_modules/mysql2/lib/pool_connection.js +81 -0
  396. package/.output/server/node_modules/mysql2/lib/promise/capture_local_err.js +25 -0
  397. package/.output/server/node_modules/mysql2/lib/promise/connection.js +237 -0
  398. package/.output/server/node_modules/mysql2/lib/promise/inherit_events.js +27 -0
  399. package/.output/server/node_modules/mysql2/lib/promise/make_done_cb.js +16 -0
  400. package/.output/server/node_modules/mysql2/lib/promise/pool.js +118 -0
  401. package/.output/server/node_modules/mysql2/lib/promise/pool_cluster.js +59 -0
  402. package/.output/server/node_modules/mysql2/lib/promise/pool_connection.js +19 -0
  403. package/.output/server/node_modules/mysql2/lib/promise/prepared_statement_info.js +35 -0
  404. package/.output/server/node_modules/mysql2/lib/server.js +37 -0
  405. package/.output/server/node_modules/mysql2/lib/tracing.js +81 -0
  406. package/.output/server/node_modules/mysql2/package.json +95 -0
  407. package/.output/server/node_modules/mysql2/promise.js +209 -0
  408. package/.output/server/node_modules/named-placeholders/index.js +179 -0
  409. package/.output/server/node_modules/named-placeholders/package.json +36 -0
  410. package/.output/server/node_modules/oracledb/index.js +27 -0
  411. package/.output/server/node_modules/oracledb/lib/aqDeqOptions.js +186 -0
  412. package/.output/server/node_modules/oracledb/lib/aqEnqOptions.js +81 -0
  413. package/.output/server/node_modules/oracledb/lib/aqMessage.js +149 -0
  414. package/.output/server/node_modules/oracledb/lib/aqQueue.js +293 -0
  415. package/.output/server/node_modules/oracledb/lib/connection.js +1842 -0
  416. package/.output/server/node_modules/oracledb/lib/constants.js +210 -0
  417. package/.output/server/node_modules/oracledb/lib/dbObject.js +606 -0
  418. package/.output/server/node_modules/oracledb/lib/errors.js +1046 -0
  419. package/.output/server/node_modules/oracledb/lib/future.js +53 -0
  420. package/.output/server/node_modules/oracledb/lib/impl/aqDeqOptions.js +206 -0
  421. package/.output/server/node_modules/oracledb/lib/impl/aqEnqOptions.js +89 -0
  422. package/.output/server/node_modules/oracledb/lib/impl/aqMessage.js +134 -0
  423. package/.output/server/node_modules/oracledb/lib/impl/aqQueue.js +82 -0
  424. package/.output/server/node_modules/oracledb/lib/impl/base.js +45 -0
  425. package/.output/server/node_modules/oracledb/lib/impl/connection.js +671 -0
  426. package/.output/server/node_modules/oracledb/lib/impl/datahandlers/buffer.js +1214 -0
  427. package/.output/server/node_modules/oracledb/lib/impl/datahandlers/constants.js +110 -0
  428. package/.output/server/node_modules/oracledb/lib/impl/datahandlers/oson.js +852 -0
  429. package/.output/server/node_modules/oracledb/lib/impl/datahandlers/vector.js +197 -0
  430. package/.output/server/node_modules/oracledb/lib/impl/dbObject.js +159 -0
  431. package/.output/server/node_modules/oracledb/lib/impl/index.js +59 -0
  432. package/.output/server/node_modules/oracledb/lib/impl/lob.js +113 -0
  433. package/.output/server/node_modules/oracledb/lib/impl/pool.js +230 -0
  434. package/.output/server/node_modules/oracledb/lib/impl/resultset.js +307 -0
  435. package/.output/server/node_modules/oracledb/lib/impl/sodaCollection.js +175 -0
  436. package/.output/server/node_modules/oracledb/lib/impl/sodaDatabase.js +82 -0
  437. package/.output/server/node_modules/oracledb/lib/impl/sodaDocCursor.js +64 -0
  438. package/.output/server/node_modules/oracledb/lib/impl/sodaDocument.js +89 -0
  439. package/.output/server/node_modules/oracledb/lib/impl/sodaOperation.js +110 -0
  440. package/.output/server/node_modules/oracledb/lib/lob.js +315 -0
  441. package/.output/server/node_modules/oracledb/lib/oracledb.js +1716 -0
  442. package/.output/server/node_modules/oracledb/lib/pool.js +873 -0
  443. package/.output/server/node_modules/oracledb/lib/poolStatistics.js +143 -0
  444. package/.output/server/node_modules/oracledb/lib/queryStream.js +119 -0
  445. package/.output/server/node_modules/oracledb/lib/resultset.js +368 -0
  446. package/.output/server/node_modules/oracledb/lib/settings.js +221 -0
  447. package/.output/server/node_modules/oracledb/lib/sodaCollection.js +284 -0
  448. package/.output/server/node_modules/oracledb/lib/sodaDatabase.js +176 -0
  449. package/.output/server/node_modules/oracledb/lib/sodaDocCursor.js +82 -0
  450. package/.output/server/node_modules/oracledb/lib/sodaDocument.js +125 -0
  451. package/.output/server/node_modules/oracledb/lib/sodaOperation.js +236 -0
  452. package/.output/server/node_modules/oracledb/lib/thin/aq.js +475 -0
  453. package/.output/server/node_modules/oracledb/lib/thin/connection.js +1504 -0
  454. package/.output/server/node_modules/oracledb/lib/thin/dbObject.js +737 -0
  455. package/.output/server/node_modules/oracledb/lib/thin/index.js +40 -0
  456. package/.output/server/node_modules/oracledb/lib/thin/lob.js +380 -0
  457. package/.output/server/node_modules/oracledb/lib/thin/pool.js +738 -0
  458. package/.output/server/node_modules/oracledb/lib/thin/protocol/capabilities.js +145 -0
  459. package/.output/server/node_modules/oracledb/lib/thin/protocol/constants.js +872 -0
  460. package/.output/server/node_modules/oracledb/lib/thin/protocol/encryptDecrypt.js +197 -0
  461. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/aqArray.js +238 -0
  462. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/aqBase.js +305 -0
  463. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/aqDeq.js +164 -0
  464. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/aqEnq.js +135 -0
  465. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/auth.js +376 -0
  466. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/base.js +568 -0
  467. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/commit.js +56 -0
  468. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/dataType.js +401 -0
  469. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/execute.js +358 -0
  470. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/fastAuth.js +83 -0
  471. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/fetch.js +64 -0
  472. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/index.js +59 -0
  473. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/lobOp.js +195 -0
  474. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/logOff.js +52 -0
  475. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/ping.js +56 -0
  476. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/protocol.js +97 -0
  477. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/rollback.js +56 -0
  478. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/sessionRelease.js +60 -0
  479. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/transactionChangeState.js +99 -0
  480. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/transactionSwitch.js +147 -0
  481. package/.output/server/node_modules/oracledb/lib/thin/protocol/messages/withData.js +920 -0
  482. package/.output/server/node_modules/oracledb/lib/thin/protocol/packet.js +631 -0
  483. package/.output/server/node_modules/oracledb/lib/thin/protocol/protocol.js +240 -0
  484. package/.output/server/node_modules/oracledb/lib/thin/protocol/utils.js +82 -0
  485. package/.output/server/node_modules/oracledb/lib/thin/resultSet.js +122 -0
  486. package/.output/server/node_modules/oracledb/lib/thin/sqlnet/ANO.js +438 -0
  487. package/.output/server/node_modules/oracledb/lib/thin/sqlnet/connStrategy.js +316 -0
  488. package/.output/server/node_modules/oracledb/lib/thin/sqlnet/constants.js +210 -0
  489. package/.output/server/node_modules/oracledb/lib/thin/sqlnet/ezConnectResolver.js +466 -0
  490. package/.output/server/node_modules/oracledb/lib/thin/sqlnet/navNodes.js +904 -0
  491. package/.output/server/node_modules/oracledb/lib/thin/sqlnet/networkSession.js +733 -0
  492. package/.output/server/node_modules/oracledb/lib/thin/sqlnet/ntTcp.js +609 -0
  493. package/.output/server/node_modules/oracledb/lib/thin/sqlnet/nvStrToNvPair.js +780 -0
  494. package/.output/server/node_modules/oracledb/lib/thin/sqlnet/packet.js +439 -0
  495. package/.output/server/node_modules/oracledb/lib/thin/sqlnet/paramParser.js +239 -0
  496. package/.output/server/node_modules/oracledb/lib/thin/sqlnet/sessionAtts.js +198 -0
  497. package/.output/server/node_modules/oracledb/lib/thin/statement.js +573 -0
  498. package/.output/server/node_modules/oracledb/lib/thin/statementCache.js +195 -0
  499. package/.output/server/node_modules/oracledb/lib/thin/util.js +254 -0
  500. package/.output/server/node_modules/oracledb/lib/traceHandler.js +133 -0
  501. package/.output/server/node_modules/oracledb/lib/transformer.js +279 -0
  502. package/.output/server/node_modules/oracledb/lib/types.js +592 -0
  503. package/.output/server/node_modules/oracledb/lib/util.js +648 -0
  504. package/.output/server/node_modules/oracledb/lib/version.js +36 -0
  505. package/.output/server/node_modules/oracledb/package.json +48 -0
  506. package/.output/server/node_modules/sql-escaper/lib/index.js +398 -0
  507. package/.output/server/node_modules/sql-escaper/package.json +81 -0
  508. package/.output/server/node_modules/sqlite3/build/Release/node_sqlite3.node +0 -0
  509. package/.output/server/node_modules/ssh2/lib/protocol/crypto/build/Release/sshcrypto.node +0 -0
  510. package/.output/server/package.json +14 -18
  511. package/package.json +2 -2
  512. package/.output/public/_nuxt/019vQzZn.js +0 -1
  513. package/.output/public/_nuxt/0lRW_xjL.js +0 -1
  514. package/.output/public/_nuxt/B6EI6PpE.js +0 -1
  515. package/.output/public/_nuxt/B9Mt45db.js +0 -1
  516. package/.output/public/_nuxt/BKltSiU0.js +0 -1
  517. package/.output/public/_nuxt/BM4vnZvX.js +0 -732
  518. package/.output/public/_nuxt/BNYR501z.js +0 -1
  519. package/.output/public/_nuxt/BVLVn__t.js +0 -9
  520. package/.output/public/_nuxt/BY1l0S_M.js +0 -1
  521. package/.output/public/_nuxt/BaseCodeEditor.SAr2eD8R.css +0 -1
  522. package/.output/public/_nuxt/BcvJQkv0.js +0 -1
  523. package/.output/public/_nuxt/BdN9B2_l.js +0 -160
  524. package/.output/public/_nuxt/BflvengI.js +0 -1
  525. package/.output/public/_nuxt/BgolbRTO.js +0 -1
  526. package/.output/public/_nuxt/BwISH3M4.js +0 -1
  527. package/.output/public/_nuxt/C-M4q4KX.js +0 -1
  528. package/.output/public/_nuxt/C2Ziircr.js +0 -1
  529. package/.output/public/_nuxt/C3NWXcpd.js +0 -39
  530. package/.output/public/_nuxt/C5p44jKD.js +0 -1
  531. package/.output/public/_nuxt/C617vhDd.js +0 -1
  532. package/.output/public/_nuxt/C8S0o4Gy.js +0 -1
  533. package/.output/public/_nuxt/CNlsVoWh.js +0 -1
  534. package/.output/public/_nuxt/CWkPMmwS.js +0 -2
  535. package/.output/public/_nuxt/Cgy4ijjN.js +0 -67
  536. package/.output/public/_nuxt/ClBBUcFW.js +0 -1
  537. package/.output/public/_nuxt/CuRyxljq.js +0 -1
  538. package/.output/public/_nuxt/Cx4Bnfq1.js +0 -2
  539. package/.output/public/_nuxt/D-H6_V16.js +0 -1
  540. package/.output/public/_nuxt/D-SDqguC.js +0 -1
  541. package/.output/public/_nuxt/D-XwprNU.js +0 -6
  542. package/.output/public/_nuxt/D3G5Xy_-.js +0 -1
  543. package/.output/public/_nuxt/D9o5Pdvp.js +0 -1
  544. package/.output/public/_nuxt/DFArp87o.js +0 -1
  545. package/.output/public/_nuxt/DFZIXzfU.js +0 -1
  546. package/.output/public/_nuxt/DHRNt0p9.js +0 -1
  547. package/.output/public/_nuxt/DLKku6fV.js +0 -1
  548. package/.output/public/_nuxt/DWgjNKGq.js +0 -152
  549. package/.output/public/_nuxt/DYm57BZk.js +0 -2
  550. package/.output/public/_nuxt/DaQw8gVp.js +0 -1
  551. package/.output/public/_nuxt/DgnsV5Qb.js +0 -1
  552. package/.output/public/_nuxt/Do5Fyo7J.js +0 -1
  553. package/.output/public/_nuxt/Dqirx7MF.js +0 -1
  554. package/.output/public/_nuxt/GoTwJjoS.js +0 -39
  555. package/.output/public/_nuxt/Hs25HoUO.js +0 -22
  556. package/.output/public/_nuxt/J2CvNR3L.js +0 -1
  557. package/.output/public/_nuxt/LK6Q8l0D.js +0 -1
  558. package/.output/public/_nuxt/Oh9SO2qg.js +0 -1
  559. package/.output/public/_nuxt/P_8UoGnr.js +0 -72
  560. package/.output/public/_nuxt/V5yaR3hv.js +0 -2
  561. package/.output/public/_nuxt/XWTuAj6n.js +0 -1
  562. package/.output/public/_nuxt/XqwbcqcW.js +0 -1
  563. package/.output/public/_nuxt/Yzrsuije.js +0 -1
  564. package/.output/public/_nuxt/_8UrUcVF.js +0 -1
  565. package/.output/public/_nuxt/builds/meta/27a307c3-bfc5-4ccd-94b8-387eb94981bb.json +0 -1
  566. package/.output/public/_nuxt/cKBf5-av.js +0 -1
  567. package/.output/public/_nuxt/entry.DeK5kcSi.css +0 -1
  568. package/.output/public/_nuxt/kc-op4gz.js +0 -12
  569. package/.output/public/_nuxt/kehy-5uo.js +0 -1
  570. package/.output/public/_nuxt/lSaGvORn.js +0 -10
  571. package/.output/public/_nuxt/lY3EyFEK.js +0 -1
  572. package/.output/public/_nuxt/tMhdAKU2.js +0 -3
  573. package/.output/public/_nuxt/uyCIL8xw.js +0 -1
  574. package/.output/server/node_modules/cross-spawn/index.js +0 -39
  575. package/.output/server/node_modules/cross-spawn/lib/enoent.js +0 -59
  576. package/.output/server/node_modules/cross-spawn/lib/parse.js +0 -91
  577. package/.output/server/node_modules/cross-spawn/lib/util/escape.js +0 -47
  578. package/.output/server/node_modules/cross-spawn/lib/util/readShebang.js +0 -23
  579. package/.output/server/node_modules/cross-spawn/lib/util/resolveCommand.js +0 -52
  580. package/.output/server/node_modules/cross-spawn/package.json +0 -73
  581. package/.output/server/node_modules/execa/index.js +0 -268
  582. package/.output/server/node_modules/execa/lib/command.js +0 -52
  583. package/.output/server/node_modules/execa/lib/error.js +0 -88
  584. package/.output/server/node_modules/execa/lib/kill.js +0 -115
  585. package/.output/server/node_modules/execa/lib/promise.js +0 -46
  586. package/.output/server/node_modules/execa/lib/stdio.js +0 -52
  587. package/.output/server/node_modules/execa/lib/stream.js +0 -97
  588. package/.output/server/node_modules/execa/package.json +0 -74
  589. package/.output/server/node_modules/get-stream/buffer-stream.js +0 -52
  590. package/.output/server/node_modules/get-stream/index.js +0 -61
  591. package/.output/server/node_modules/get-stream/package.json +0 -47
  592. package/.output/server/node_modules/human-signals/build/src/core.js +0 -273
  593. package/.output/server/node_modules/human-signals/build/src/main.js +0 -71
  594. package/.output/server/node_modules/human-signals/build/src/realtime.js +0 -19
  595. package/.output/server/node_modules/human-signals/build/src/signals.js +0 -35
  596. package/.output/server/node_modules/human-signals/package.json +0 -64
  597. package/.output/server/node_modules/is-stream/index.js +0 -28
  598. package/.output/server/node_modules/is-stream/package.json +0 -42
  599. package/.output/server/node_modules/isexe/index.js +0 -57
  600. package/.output/server/node_modules/isexe/mode.js +0 -41
  601. package/.output/server/node_modules/isexe/package.json +0 -31
  602. package/.output/server/node_modules/isexe/windows.js +0 -42
  603. package/.output/server/node_modules/merge-stream/index.js +0 -41
  604. package/.output/server/node_modules/merge-stream/package.json +0 -19
  605. package/.output/server/node_modules/mimic-fn/index.js +0 -13
  606. package/.output/server/node_modules/mimic-fn/package.json +0 -42
  607. package/.output/server/node_modules/npm-run-path/index.js +0 -47
  608. package/.output/server/node_modules/npm-run-path/package.json +0 -44
  609. package/.output/server/node_modules/onetime/index.js +0 -44
  610. package/.output/server/node_modules/onetime/package.json +0 -43
  611. package/.output/server/node_modules/path-key/index.js +0 -16
  612. package/.output/server/node_modules/path-key/package.json +0 -39
  613. package/.output/server/node_modules/pg-dump-restore/lib/common.js +0 -33
  614. package/.output/server/node_modules/pg-dump-restore/lib/index.js +0 -9
  615. package/.output/server/node_modules/pg-dump-restore/lib/pg-dump.js +0 -95
  616. package/.output/server/node_modules/pg-dump-restore/lib/pg-restore.js +0 -87
  617. package/.output/server/node_modules/pg-dump-restore/package.json +0 -66
  618. package/.output/server/node_modules/shebang-command/index.js +0 -19
  619. package/.output/server/node_modules/shebang-command/package.json +0 -34
  620. package/.output/server/node_modules/shebang-regex/index.js +0 -2
  621. package/.output/server/node_modules/shebang-regex/package.json +0 -35
  622. package/.output/server/node_modules/signal-exit/index.js +0 -202
  623. package/.output/server/node_modules/signal-exit/package.json +0 -38
  624. package/.output/server/node_modules/signal-exit/signals.js +0 -53
  625. package/.output/server/node_modules/strip-final-newline/index.js +0 -16
  626. package/.output/server/node_modules/strip-final-newline/package.json +0 -40
  627. package/.output/server/node_modules/which/package.json +0 -43
  628. package/.output/server/node_modules/which/which.js +0 -125
@@ -0,0 +1,1302 @@
1
+ import { c as createError, e as createSshTunnel } from '../nitro/nitro.mjs';
2
+ import { spawn } from 'node:child_process';
3
+ import { randomUUID } from 'node:crypto';
4
+ import { once } from 'node:events';
5
+ import { createWriteStream, createReadStream } from 'node:fs';
6
+ import { mkdtemp, writeFile, stat, mkdir, readFile, rm } from 'node:fs/promises';
7
+ import { tmpdir } from 'node:os';
8
+ import { join, basename } from 'node:path';
9
+ import { D as DatabaseClientType } from './db-connection.mjs';
10
+ import { c as createTableAdapter } from './tables.factory.mjs';
11
+
12
+ const POSTGRES_FORMAT_OPTIONS = [
13
+ {
14
+ format: "custom",
15
+ fileExtension: ".dump",
16
+ fileKind: "archive",
17
+ label: "PostgreSQL custom archive (.dump)",
18
+ importTool: "pg_restore"
19
+ },
20
+ {
21
+ format: "plain",
22
+ fileExtension: ".sql",
23
+ fileKind: "sql",
24
+ label: "PostgreSQL plain SQL script (.sql)",
25
+ importTool: "psql"
26
+ }
27
+ ];
28
+ const MYSQL_FORMAT_OPTIONS = [
29
+ {
30
+ format: "plain",
31
+ fileExtension: ".sql",
32
+ fileKind: "sql",
33
+ label: "MySQL SQL dump (.sql)",
34
+ importTool: "mysql"
35
+ }
36
+ ];
37
+ const SQLITE_FORMAT_OPTIONS = [
38
+ {
39
+ format: "plain",
40
+ fileExtension: ".sql",
41
+ fileKind: "sql",
42
+ label: "SQLite SQL dump (.sql)",
43
+ importTool: "sqlite3"
44
+ }
45
+ ];
46
+ const POSTGRES_CAPABILITY = {
47
+ supported: true,
48
+ formatOptions: POSTGRES_FORMAT_OPTIONS,
49
+ defaultExportFormat: "custom",
50
+ exportToolCandidates: ["pg_dump"],
51
+ importToolCandidates: ["pg_restore", "psql"],
52
+ label: "PostgreSQL native backup"
53
+ };
54
+ const MYSQL_CAPABILITY = {
55
+ supported: true,
56
+ formatOptions: MYSQL_FORMAT_OPTIONS,
57
+ defaultExportFormat: "plain",
58
+ exportToolCandidates: ["mysqlpump", "mysqldump"],
59
+ importToolCandidates: ["mysql"],
60
+ label: "MySQL SQL dump"
61
+ };
62
+ const SQLITE_CAPABILITY = {
63
+ supported: true,
64
+ formatOptions: SQLITE_FORMAT_OPTIONS,
65
+ defaultExportFormat: "plain",
66
+ exportToolCandidates: ["sqlite3"],
67
+ importToolCandidates: ["sqlite3"],
68
+ label: "SQLite SQL dump"
69
+ };
70
+ const ORACLE_UNSUPPORTED_REASON = "Oracle Data Pump writes dump files through a server-side DIRECTORY object. HeraQ needs explicit Oracle DIRECTORY and artifact retrieval configuration before expdp/impdp can be exposed as a downloadable native backup flow.";
71
+ function getNativeBackupCapability(type) {
72
+ switch (type) {
73
+ case DatabaseClientType.POSTGRES:
74
+ return POSTGRES_CAPABILITY;
75
+ case DatabaseClientType.MYSQL:
76
+ case DatabaseClientType.MARIADB:
77
+ return {
78
+ ...MYSQL_CAPABILITY,
79
+ label: type === DatabaseClientType.MARIADB ? "MariaDB SQL dump" : MYSQL_CAPABILITY.label
80
+ };
81
+ case DatabaseClientType.SQLITE3:
82
+ return SQLITE_CAPABILITY;
83
+ case DatabaseClientType.ORACLE:
84
+ return {
85
+ supported: false,
86
+ formatOptions: [
87
+ {
88
+ format: "custom",
89
+ fileExtension: ".dmp",
90
+ fileKind: "archive",
91
+ label: "Oracle Data Pump dump (.dmp)",
92
+ importTool: "impdp"
93
+ }
94
+ ],
95
+ defaultExportFormat: "custom",
96
+ exportToolCandidates: ["expdp"],
97
+ importToolCandidates: ["impdp"],
98
+ label: "Oracle Data Pump dump",
99
+ reason: ORACLE_UNSUPPORTED_REASON
100
+ };
101
+ default:
102
+ return {
103
+ supported: false,
104
+ formatOptions: [],
105
+ defaultExportFormat: null,
106
+ exportToolCandidates: [],
107
+ importToolCandidates: [],
108
+ label: "Native backup",
109
+ reason: type ? `${type} native backup is not supported in this release.` : "Select a connection to use native backup tools."
110
+ };
111
+ }
112
+ }
113
+ function resolveNativeExportFormat(type, requestedFormat) {
114
+ const capability = getNativeBackupCapability(type);
115
+ if (!capability.supported || !capability.defaultExportFormat) {
116
+ throw createError({
117
+ statusCode: 501,
118
+ statusMessage: capability.reason || `${type} native backup is not supported.`
119
+ });
120
+ }
121
+ if (!requestedFormat || requestedFormat === "native") {
122
+ return capability.defaultExportFormat;
123
+ }
124
+ if (requestedFormat !== "plain" && requestedFormat !== "custom") {
125
+ throw createError({
126
+ statusCode: 400,
127
+ statusMessage: `${requestedFormat} export format is not supported for ${type}.`
128
+ });
129
+ }
130
+ if (!capability.formatOptions.some((option) => option.format === requestedFormat)) {
131
+ throw createError({
132
+ statusCode: 400,
133
+ statusMessage: `${requestedFormat} export format is not supported for ${type}.`
134
+ });
135
+ }
136
+ return requestedFormat;
137
+ }
138
+ function getNativeBackupFormatOption(type, requestedFormat) {
139
+ const capability = getNativeBackupCapability(type);
140
+ const resolvedFormat = resolveNativeExportFormat(type, requestedFormat);
141
+ return capability.formatOptions.find(
142
+ (option) => option.format === resolvedFormat
143
+ );
144
+ }
145
+ function getNativeBackupFileExtension(type, requestedFormat) {
146
+ return getNativeBackupFormatOption(type, requestedFormat).fileExtension;
147
+ }
148
+ function getNativeBackupFileKind(type, requestedFormat) {
149
+ return getNativeBackupFormatOption(type, requestedFormat).fileKind;
150
+ }
151
+ function getNativeBackupImportTool(type, fileName) {
152
+ const capability = getNativeBackupCapability(type);
153
+ const extension = fileName.toLowerCase().split(".").pop();
154
+ const matched = capability.formatOptions.find(
155
+ (option) => option.fileExtension.toLowerCase() === `.${extension}`
156
+ );
157
+ if (!matched) {
158
+ throw createError({
159
+ statusCode: 400,
160
+ statusMessage: `Unsupported backup file type for ${type}: ${fileName}`
161
+ });
162
+ }
163
+ return matched.importTool;
164
+ }
165
+ function sanitizeBackupFileSegment(value) {
166
+ return value.replace(/[^a-zA-Z0-9_-]+/g, "-").replace(/-+/g, "-");
167
+ }
168
+ function buildNativeBackupFileName(databaseName, type, now = /* @__PURE__ */ new Date(), requestedFormat) {
169
+ const capability = getNativeBackupCapability(type);
170
+ if (!capability.supported) {
171
+ throw createError({
172
+ statusCode: 501,
173
+ statusMessage: capability.reason || `${type} native backup is not supported.`
174
+ });
175
+ }
176
+ const timestamp = now.toISOString().replace(/[:.]/g, "-");
177
+ return `${sanitizeBackupFileSegment(databaseName)}_${timestamp}${getNativeBackupFileExtension(type, requestedFormat)}`;
178
+ }
179
+ function assertNativeBackupSupported(type) {
180
+ const capability = getNativeBackupCapability(type);
181
+ if (!capability.supported || !type) {
182
+ throw createError({
183
+ statusCode: 501,
184
+ statusMessage: capability.reason || `${type || "Unknown"} native backup is not supported.`
185
+ });
186
+ }
187
+ }
188
+
189
+ const NATIVE_BACKUP_TTL_MS = 30 * 60 * 1e3;
190
+ const DEFAULT_PORTS = {
191
+ [DatabaseClientType.POSTGRES]: 5432,
192
+ [DatabaseClientType.MYSQL]: 3306,
193
+ [DatabaseClientType.MARIADB]: 3306,
194
+ [DatabaseClientType.SQLITE3]: 0
195
+ };
196
+ const nativeBackupJobs = /* @__PURE__ */ new Map();
197
+ function getDefaultPort(type) {
198
+ var _a;
199
+ return (_a = DEFAULT_PORTS[type]) != null ? _a : 5432;
200
+ }
201
+ function resolveDatabaseName(params) {
202
+ return params.databaseName || params.database || params.serviceName || params.username || (params.filePath ? basename(params.filePath) : "") || "database";
203
+ }
204
+ function parseConnectionString(connectionString, type) {
205
+ if (!connectionString) {
206
+ return {};
207
+ }
208
+ const url = new URL(connectionString);
209
+ const pathname = url.pathname.replace(/^\/+/, "");
210
+ return {
211
+ host: url.hostname,
212
+ port: parseInt(url.port || `${getDefaultPort(type)}`, 10),
213
+ username: decodeURIComponent(url.username || ""),
214
+ password: decodeURIComponent(url.password || ""),
215
+ database: pathname
216
+ };
217
+ }
218
+ async function writeSslFiles(tempDir, ssl) {
219
+ if (!(ssl == null ? void 0 : ssl.mode) || ssl.mode === "disable") {
220
+ return void 0;
221
+ }
222
+ const sslDir = join(tempDir, "ssl");
223
+ const files = {};
224
+ await mkdir(sslDir, { recursive: true });
225
+ if (ssl.ca) {
226
+ files.caPath = join(sslDir, "ca.pem");
227
+ }
228
+ if (ssl.cert) {
229
+ files.certPath = join(sslDir, "client-cert.pem");
230
+ }
231
+ if (ssl.key) {
232
+ files.keyPath = join(sslDir, "client-key.pem");
233
+ }
234
+ await Promise.all(
235
+ [
236
+ files.caPath ? writeFile(files.caPath, ssl.ca || "", "utf8") : void 0,
237
+ files.certPath ? writeFile(files.certPath, ssl.cert || "", "utf8") : void 0,
238
+ files.keyPath ? writeFile(files.keyPath, ssl.key || "", "utf8") : void 0
239
+ ].filter(Boolean)
240
+ );
241
+ return files;
242
+ }
243
+ async function resolveCliConnection(params, tempDir) {
244
+ var _a;
245
+ const type = params.type;
246
+ if (!type) {
247
+ throw createError({
248
+ statusCode: 400,
249
+ statusMessage: "Database type is required for native backup jobs."
250
+ });
251
+ }
252
+ if (type === DatabaseClientType.SQLITE3) {
253
+ if (!params.filePath) {
254
+ throw createError({
255
+ statusCode: 400,
256
+ statusMessage: "SQLite native backup requires a file path."
257
+ });
258
+ }
259
+ return {
260
+ filePath: params.filePath
261
+ };
262
+ }
263
+ const fromUrl = parseConnectionString(params.dbConnectionString, type);
264
+ const host = params.host || fromUrl.host;
265
+ const port = parseInt(
266
+ params.port || `${fromUrl.port || getDefaultPort(type)}`,
267
+ 10
268
+ );
269
+ const username = params.username || fromUrl.username;
270
+ const password = params.password || fromUrl.password;
271
+ const database = params.serviceName || params.database || fromUrl.database;
272
+ if (!host) {
273
+ throw createError({
274
+ statusCode: 400,
275
+ statusMessage: "Host is required for native backup jobs."
276
+ });
277
+ }
278
+ let finalHost = host;
279
+ let finalPort = port;
280
+ let closeTunnel;
281
+ if ((_a = params.ssh) == null ? void 0 : _a.enabled) {
282
+ const tunnel = await createSshTunnel(params.ssh, host, port);
283
+ finalHost = tunnel.localHost;
284
+ finalPort = tunnel.localPort;
285
+ closeTunnel = tunnel.close;
286
+ }
287
+ return {
288
+ host: finalHost,
289
+ port: finalPort,
290
+ username,
291
+ password,
292
+ database,
293
+ ssl: params.ssl,
294
+ sslFiles: await writeSslFiles(tempDir, params.ssl),
295
+ closeTunnel
296
+ };
297
+ }
298
+ function parseHumanBytes(value) {
299
+ if (typeof value === "number") {
300
+ return value;
301
+ }
302
+ if (!value) {
303
+ return null;
304
+ }
305
+ const match = value.trim().match(/^([\d.]+)\s*([KMGT]?B)$/i);
306
+ if (!match) {
307
+ const parsed = Number(value);
308
+ return Number.isFinite(parsed) ? parsed : null;
309
+ }
310
+ const numericValue = Number(match[1]);
311
+ const unit = match[2].toUpperCase();
312
+ const multiplier = {
313
+ B: 1,
314
+ KB: 1024,
315
+ MB: 1024 ** 2,
316
+ GB: 1024 ** 3,
317
+ TB: 1024 ** 4
318
+ }[unit] || 1;
319
+ return Math.round(numericValue * multiplier);
320
+ }
321
+ function resolveDefaultSchemas(type, params) {
322
+ switch (type) {
323
+ case DatabaseClientType.POSTGRES:
324
+ return ["public"];
325
+ case DatabaseClientType.MYSQL:
326
+ case DatabaseClientType.MARIADB:
327
+ return [params.database || resolveDatabaseName(params)];
328
+ default:
329
+ return [];
330
+ }
331
+ }
332
+ async function estimateExportBytes(params) {
333
+ var _a;
334
+ if (!params.type) {
335
+ return void 0;
336
+ }
337
+ if (params.type === DatabaseClientType.SQLITE3 && params.filePath) {
338
+ try {
339
+ const fileStat = await stat(params.filePath);
340
+ return fileStat.size;
341
+ } catch {
342
+ return void 0;
343
+ }
344
+ }
345
+ try {
346
+ const tableAdapter = await createTableAdapter(params.type, params);
347
+ const schemas = ((_a = params.options.schemas) == null ? void 0 : _a.length) && params.type === DatabaseClientType.POSTGRES ? params.options.schemas : resolveDefaultSchemas(params.type, params);
348
+ let totalBytes = 0;
349
+ for (const schema of schemas) {
350
+ const tables = await tableAdapter.getOverviewTables(schema);
351
+ tables.forEach((table) => {
352
+ totalBytes += parseHumanBytes(table.total_size) || 0;
353
+ });
354
+ }
355
+ return totalBytes || void 0;
356
+ } catch {
357
+ return void 0;
358
+ }
359
+ }
360
+ function getMysqlSslMode(mode) {
361
+ switch (mode) {
362
+ case "preferred":
363
+ return "PREFERRED";
364
+ case "require":
365
+ return "REQUIRED";
366
+ case "verify-ca":
367
+ return "VERIFY_CA";
368
+ case "verify-full":
369
+ return "VERIFY_IDENTITY";
370
+ default:
371
+ return void 0;
372
+ }
373
+ }
374
+ function buildPostgresEnv(connection) {
375
+ var _a, _b, _c, _d;
376
+ return {
377
+ ...process.env,
378
+ ...connection.password ? { PGPASSWORD: connection.password } : {},
379
+ ...((_a = connection.ssl) == null ? void 0 : _a.mode) && connection.ssl.mode !== "disable" ? { PGSSLMODE: connection.ssl.mode } : {},
380
+ ...((_b = connection.sslFiles) == null ? void 0 : _b.caPath) ? { PGSSLROOTCERT: connection.sslFiles.caPath } : {},
381
+ ...((_c = connection.sslFiles) == null ? void 0 : _c.certPath) ? { PGSSLCERT: connection.sslFiles.certPath } : {},
382
+ ...((_d = connection.sslFiles) == null ? void 0 : _d.keyPath) ? { PGSSLKEY: connection.sslFiles.keyPath } : {}
383
+ };
384
+ }
385
+ function buildMysqlEnv(connection) {
386
+ return {
387
+ ...process.env,
388
+ ...connection.password ? { MYSQL_PWD: connection.password } : {}
389
+ };
390
+ }
391
+ function appendMysqlSslArgs(args, connection) {
392
+ var _a, _b, _c, _d;
393
+ const sslMode = getMysqlSslMode((_a = connection.ssl) == null ? void 0 : _a.mode);
394
+ if (sslMode) {
395
+ args.push(`--ssl-mode=${sslMode}`);
396
+ }
397
+ if ((_b = connection.sslFiles) == null ? void 0 : _b.caPath) {
398
+ args.push(`--ssl-ca=${connection.sslFiles.caPath}`);
399
+ }
400
+ if ((_c = connection.sslFiles) == null ? void 0 : _c.certPath) {
401
+ args.push(`--ssl-cert=${connection.sslFiles.certPath}`);
402
+ }
403
+ if ((_d = connection.sslFiles) == null ? void 0 : _d.keyPath) {
404
+ args.push(`--ssl-key=${connection.sslFiles.keyPath}`);
405
+ }
406
+ }
407
+ function toDbProgress(bytesProcessed, bytesTotal, min = 15, max = 90) {
408
+ if (!bytesTotal || bytesTotal <= 0) {
409
+ return null;
410
+ }
411
+ const ratio = Math.max(0, Math.min(bytesProcessed / bytesTotal, 1));
412
+ return Math.round(min + ratio * (max - min));
413
+ }
414
+ function createMissingCommandError(command) {
415
+ const error = new Error(
416
+ `${command} is not installed on the runtime host.`
417
+ );
418
+ error.cliCode = "CLI_NOT_FOUND";
419
+ return error;
420
+ }
421
+ function isMissingCommandError(error) {
422
+ return error instanceof Error && error.cliCode === "CLI_NOT_FOUND";
423
+ }
424
+ function collectLines(onLine) {
425
+ let buffer = "";
426
+ return (chunk) => {
427
+ buffer += chunk.toString();
428
+ while (buffer.includes("\n")) {
429
+ const newLineIndex = buffer.indexOf("\n");
430
+ const line = buffer.slice(0, newLineIndex).trim();
431
+ buffer = buffer.slice(newLineIndex + 1);
432
+ if (line) {
433
+ onLine == null ? void 0 : onLine(line);
434
+ }
435
+ }
436
+ };
437
+ }
438
+ async function runCommandToFile({
439
+ command,
440
+ args,
441
+ env,
442
+ outputPath,
443
+ onBytes,
444
+ onStderrLine
445
+ }) {
446
+ var _a, _b;
447
+ const child = spawn(command, args, {
448
+ env,
449
+ stdio: ["ignore", "pipe", "pipe"]
450
+ });
451
+ const output = createWriteStream(outputPath);
452
+ const parseStderr = collectLines(onStderrLine);
453
+ let stderr = "";
454
+ let writtenBytes = 0;
455
+ (_a = child.stdout) == null ? void 0 : _a.on("data", (chunk) => {
456
+ writtenBytes += chunk.length;
457
+ onBytes == null ? void 0 : onBytes(writtenBytes);
458
+ output.write(chunk);
459
+ });
460
+ (_b = child.stderr) == null ? void 0 : _b.on("data", (chunk) => {
461
+ stderr += chunk.toString();
462
+ parseStderr(chunk);
463
+ });
464
+ const code = await new Promise((resolve, reject) => {
465
+ child.once("close", (exitCode) => resolve(exitCode));
466
+ child.once("error", (error) => {
467
+ reject(
468
+ error.code === "ENOENT" ? createMissingCommandError(command) : error
469
+ );
470
+ });
471
+ output.once("error", (error) => {
472
+ child.kill("SIGTERM");
473
+ reject(error);
474
+ });
475
+ });
476
+ output.end();
477
+ await once(output, "finish");
478
+ if (code !== 0) {
479
+ throw new Error(stderr.trim() || `${command} exited with code ${code}`);
480
+ }
481
+ return {
482
+ bytesWritten: writtenBytes,
483
+ stderr: stderr.trim()
484
+ };
485
+ }
486
+ async function runCommandWithInputFile({
487
+ command,
488
+ args,
489
+ env,
490
+ inputPath,
491
+ onBytes,
492
+ onStderrLine
493
+ }) {
494
+ var _a;
495
+ const child = spawn(command, args, {
496
+ env,
497
+ stdio: ["pipe", "ignore", "pipe"]
498
+ });
499
+ const input = createReadStream(inputPath);
500
+ const parseStderr = collectLines(onStderrLine);
501
+ let stderr = "";
502
+ let streamedBytes = 0;
503
+ input.on("data", (chunk) => {
504
+ streamedBytes += chunk.length;
505
+ onBytes == null ? void 0 : onBytes(streamedBytes);
506
+ });
507
+ input.on("error", (error) => {
508
+ var _a2;
509
+ (_a2 = child.stdin) == null ? void 0 : _a2.destroy(error);
510
+ });
511
+ (_a = child.stderr) == null ? void 0 : _a.on("data", (chunk) => {
512
+ stderr += chunk.toString();
513
+ parseStderr(chunk);
514
+ });
515
+ input.pipe(child.stdin);
516
+ const code = await new Promise((resolve, reject) => {
517
+ child.once("close", (exitCode) => resolve(exitCode));
518
+ child.once("error", (error) => {
519
+ reject(
520
+ error.code === "ENOENT" ? createMissingCommandError(command) : error
521
+ );
522
+ });
523
+ input.once("error", (error) => {
524
+ child.kill("SIGTERM");
525
+ reject(error);
526
+ });
527
+ });
528
+ if (code !== 0) {
529
+ throw new Error(stderr.trim() || `${command} exited with code ${code}`);
530
+ }
531
+ return {
532
+ bytesRead: streamedBytes,
533
+ stderr: stderr.trim()
534
+ };
535
+ }
536
+ async function runCommandCapture({
537
+ command,
538
+ args,
539
+ env,
540
+ onStderrLine
541
+ }) {
542
+ var _a, _b;
543
+ const child = spawn(command, args, {
544
+ env,
545
+ stdio: ["ignore", "pipe", "pipe"]
546
+ });
547
+ let stdout = "";
548
+ let stderr = "";
549
+ const parseStderr = collectLines(onStderrLine);
550
+ (_a = child.stdout) == null ? void 0 : _a.on("data", (chunk) => {
551
+ stdout += chunk.toString();
552
+ });
553
+ (_b = child.stderr) == null ? void 0 : _b.on("data", (chunk) => {
554
+ stderr += chunk.toString();
555
+ parseStderr(chunk);
556
+ });
557
+ const closePromise = once(child, "close");
558
+ const errorPromise = once(child, "error").catch(() => null);
559
+ const result = await Promise.race([
560
+ closePromise.then(([code]) => ({ code })),
561
+ errorPromise.then((value) => {
562
+ if (!value) {
563
+ return Promise.reject(new Error("Unknown command failure."));
564
+ }
565
+ const [error] = value;
566
+ return Promise.reject(
567
+ error.code === "ENOENT" ? createMissingCommandError(command) : error
568
+ );
569
+ })
570
+ ]);
571
+ if (result.code !== 0) {
572
+ throw new Error(
573
+ stderr.trim() || `${command} exited with code ${result.code}`
574
+ );
575
+ }
576
+ return { stdout: stdout.trim(), stderr: stderr.trim() };
577
+ }
578
+ function updateJob(jobId, patch) {
579
+ const current = nativeBackupJobs.get(jobId);
580
+ if (!current) {
581
+ return;
582
+ }
583
+ nativeBackupJobs.set(jobId, {
584
+ ...current,
585
+ ...patch
586
+ });
587
+ }
588
+ function getJob(jobId) {
589
+ return nativeBackupJobs.get(jobId);
590
+ }
591
+ function scheduleCleanup(jobId) {
592
+ var _a, _b, _c;
593
+ const record = getJob(jobId);
594
+ if (!record) {
595
+ return;
596
+ }
597
+ (_b = (_a = record.cleanupTimer) == null ? void 0 : _a.refresh) == null ? void 0 : _b.call(_a);
598
+ if (record.cleanupTimer) {
599
+ clearTimeout(record.cleanupTimer);
600
+ }
601
+ const timer = setTimeout(() => {
602
+ void destroyNativeBackupJob(jobId);
603
+ }, NATIVE_BACKUP_TTL_MS);
604
+ (_c = timer.unref) == null ? void 0 : _c.call(timer);
605
+ updateJob(jobId, { cleanupTimer: timer });
606
+ }
607
+ async function destroyNativeBackupJob(jobId) {
608
+ const record = getJob(jobId);
609
+ if (!record) {
610
+ return;
611
+ }
612
+ if (record.cleanupTimer) {
613
+ clearTimeout(record.cleanupTimer);
614
+ }
615
+ nativeBackupJobs.delete(jobId);
616
+ await rm(record.tempDir, { recursive: true, force: true });
617
+ }
618
+ function quoteMysqlIdentifier(identifier) {
619
+ return `\`${identifier.replace(/`/g, "``")}\``;
620
+ }
621
+ async function maybeResetMysqlDatabase(connection, options) {
622
+ if (!options.clean || options.dataOnly || !connection.database) {
623
+ return;
624
+ }
625
+ const args = [
626
+ "--protocol=TCP",
627
+ "--host",
628
+ connection.host || "127.0.0.1",
629
+ "--port",
630
+ String(connection.port || 3306),
631
+ "--user",
632
+ connection.username || "",
633
+ "--execute",
634
+ `DROP DATABASE IF EXISTS ${quoteMysqlIdentifier(connection.database)}; CREATE DATABASE ${quoteMysqlIdentifier(connection.database)};`
635
+ ];
636
+ appendMysqlSslArgs(args, connection);
637
+ await runCommandCapture({
638
+ command: "mysql",
639
+ args,
640
+ env: buildMysqlEnv(connection)
641
+ });
642
+ }
643
+ async function maybeResetSqliteDatabase(connection, options) {
644
+ if (!options.clean || options.dataOnly || !connection.filePath) {
645
+ return;
646
+ }
647
+ await rm(connection.filePath, { force: true });
648
+ }
649
+ async function maybeFilterSqliteDumpForDataOnly(outputPath) {
650
+ const content = await readFile(outputPath, "utf8");
651
+ const filtered = content.split("\n").filter((line) => {
652
+ const trimmed = line.trim();
653
+ return trimmed === "PRAGMA foreign_keys=OFF;" || trimmed === "BEGIN TRANSACTION;" || trimmed === "COMMIT;" || trimmed.startsWith("INSERT INTO ");
654
+ }).join("\n");
655
+ await writeFile(outputPath, `${filtered}
656
+ `, "utf8");
657
+ }
658
+ async function runPostgresExport(command, connection, params, artifactPath, estimatedBytes, updateProgress) {
659
+ const exportFormat = resolveNativeExportFormat(
660
+ DatabaseClientType.POSTGRES,
661
+ params.options.format
662
+ );
663
+ const isPlainSql = exportFormat === "plain";
664
+ const args = [
665
+ "--verbose",
666
+ `--format=${isPlainSql ? "plain" : "custom"}`,
667
+ "--host",
668
+ connection.host || "127.0.0.1",
669
+ "--port",
670
+ String(connection.port || 5432),
671
+ "--username",
672
+ connection.username || "",
673
+ "--dbname",
674
+ connection.database || resolveDatabaseName(params)
675
+ ];
676
+ if (params.options.scope === "schema-only") {
677
+ args.push("--schema-only");
678
+ }
679
+ if (params.options.scope === "data-only") {
680
+ args.push("--data-only");
681
+ }
682
+ (params.options.schemas || []).forEach((schema) => {
683
+ args.push("--schema", schema);
684
+ });
685
+ (params.options.tables || []).forEach((table) => {
686
+ args.push("--table", table);
687
+ });
688
+ if (params.options.noOwner) {
689
+ args.push("--no-owner");
690
+ }
691
+ if (params.options.noPrivileges) {
692
+ args.push("--no-privileges");
693
+ }
694
+ if (params.options.clean) {
695
+ args.push("--clean");
696
+ }
697
+ if (params.options.createDb) {
698
+ args.push("--create");
699
+ }
700
+ await runCommandToFile({
701
+ command,
702
+ args,
703
+ env: buildPostgresEnv(connection),
704
+ outputPath: artifactPath,
705
+ onBytes: (bytesWritten) => {
706
+ updateProgress(
707
+ toDbProgress(bytesWritten, estimatedBytes),
708
+ `Streaming ${command} ${isPlainSql ? "SQL script" : "archive"}...`,
709
+ bytesWritten
710
+ );
711
+ },
712
+ onStderrLine: (line) => {
713
+ updateProgress(null, line);
714
+ }
715
+ });
716
+ }
717
+ function getMysqlExportCandidates(params) {
718
+ var _a, _b;
719
+ const capability = getNativeBackupCapability(params.type);
720
+ if (params.options.scope !== "full" || (((_a = params.options.tables) == null ? void 0 : _a.length) || 0) > 0 || ((_b = params.options.schemas) == null ? void 0 : _b.length)) {
721
+ return capability.exportToolCandidates.filter((tool) => tool === "mysqldump");
722
+ }
723
+ return capability.exportToolCandidates;
724
+ }
725
+ async function runMysqlExport(command, connection, params, artifactPath, estimatedBytes, updateProgress) {
726
+ var _a;
727
+ const database = connection.database || resolveDatabaseName(params);
728
+ const args = [
729
+ "--protocol=TCP",
730
+ "--host",
731
+ connection.host || "127.0.0.1",
732
+ "--port",
733
+ String(connection.port || 3306),
734
+ "--user",
735
+ connection.username || ""
736
+ ];
737
+ appendMysqlSslArgs(args, connection);
738
+ if (command === "mysqlpump") {
739
+ args.push("--default-parallelism=2");
740
+ } else {
741
+ args.push("--single-transaction", "--routines", "--triggers", "--events");
742
+ }
743
+ if (params.options.scope === "schema-only") {
744
+ args.push("--no-data");
745
+ }
746
+ if (params.options.scope === "data-only") {
747
+ args.push("--no-create-info");
748
+ }
749
+ if (params.options.clean) {
750
+ args.push("--add-drop-table");
751
+ }
752
+ if (params.options.createDb || !((_a = params.options.tables) == null ? void 0 : _a.length)) {
753
+ args.push("--databases", database);
754
+ } else {
755
+ args.push(database);
756
+ }
757
+ (params.options.tables || []).forEach((table) => {
758
+ args.push(table);
759
+ });
760
+ await runCommandToFile({
761
+ command,
762
+ args,
763
+ env: buildMysqlEnv(connection),
764
+ outputPath: artifactPath,
765
+ onBytes: (bytesWritten) => {
766
+ updateProgress(
767
+ toDbProgress(bytesWritten, estimatedBytes),
768
+ `Streaming ${command} SQL dump...`,
769
+ bytesWritten
770
+ );
771
+ },
772
+ onStderrLine: (line) => {
773
+ updateProgress(null, line);
774
+ }
775
+ });
776
+ }
777
+ async function runSqliteExport(command, connection, params, artifactPath, estimatedBytes, updateProgress) {
778
+ var _a;
779
+ const dumpCommand = params.options.scope === "schema-only" ? ".schema" : ".dump";
780
+ const args = [connection.filePath || "", dumpCommand];
781
+ if ((_a = params.options.tables) == null ? void 0 : _a.length) {
782
+ args.push(...params.options.tables);
783
+ }
784
+ await runCommandToFile({
785
+ command,
786
+ args,
787
+ env: process.env,
788
+ outputPath: artifactPath,
789
+ onBytes: (bytesWritten) => {
790
+ updateProgress(
791
+ toDbProgress(bytesWritten, estimatedBytes),
792
+ "Streaming sqlite3 dump...",
793
+ bytesWritten
794
+ );
795
+ }
796
+ });
797
+ if (params.options.scope === "data-only") {
798
+ updateProgress(92, "Filtering SQLite dump to INSERT statements only...");
799
+ await maybeFilterSqliteDumpForDataOnly(artifactPath);
800
+ }
801
+ }
802
+ async function runPostgresImport(command, connection, params, updateProgress) {
803
+ const env = buildPostgresEnv(connection);
804
+ if (command === "psql") {
805
+ const fileStat = await stat(params.uploadPath);
806
+ const args2 = [
807
+ "--host",
808
+ connection.host || "127.0.0.1",
809
+ "--port",
810
+ String(connection.port || 5432),
811
+ "--username",
812
+ connection.username || "",
813
+ "--dbname",
814
+ connection.database || resolveDatabaseName(params)
815
+ ];
816
+ if (params.options.exitOnError !== false) {
817
+ args2.push("--set", "ON_ERROR_STOP=1");
818
+ }
819
+ await runCommandWithInputFile({
820
+ command,
821
+ args: args2,
822
+ env,
823
+ inputPath: params.uploadPath,
824
+ onBytes: (bytesRead) => {
825
+ updateProgress(
826
+ toDbProgress(bytesRead, fileStat.size),
827
+ "Streaming SQL into psql...",
828
+ bytesRead
829
+ );
830
+ },
831
+ onStderrLine: (line) => {
832
+ updateProgress(null, line);
833
+ }
834
+ });
835
+ return;
836
+ }
837
+ const listArgs = ["--list", params.uploadPath];
838
+ const { stdout } = await runCommandCapture({
839
+ command: "pg_restore",
840
+ args: listArgs,
841
+ env
842
+ });
843
+ const estimatedSteps = Math.max(
844
+ stdout.split("\n").filter((line) => line.trim() && !line.startsWith(";")).length,
845
+ 1
846
+ );
847
+ let processedSteps = 0;
848
+ const args = [
849
+ "--verbose",
850
+ "--host",
851
+ connection.host || "127.0.0.1",
852
+ "--port",
853
+ String(connection.port || 5432),
854
+ "--username",
855
+ connection.username || "",
856
+ "--dbname",
857
+ connection.database || resolveDatabaseName(params)
858
+ ];
859
+ if (params.options.clean) {
860
+ args.push("--clean");
861
+ }
862
+ if (params.options.createDb) {
863
+ args.push("--create");
864
+ }
865
+ if (params.options.dataOnly) {
866
+ args.push("--data-only");
867
+ }
868
+ if (params.options.schemaOnly) {
869
+ args.push("--schema-only");
870
+ }
871
+ if (params.options.exitOnError !== false) {
872
+ args.push("--exit-on-error");
873
+ }
874
+ if (params.options.jobs && params.options.jobs > 1) {
875
+ args.push("--jobs", String(params.options.jobs));
876
+ }
877
+ args.push(params.uploadPath);
878
+ await runCommandCapture({
879
+ command: "pg_restore",
880
+ args,
881
+ env,
882
+ onStderrLine: (line) => {
883
+ processedSteps += 1;
884
+ updateProgress(
885
+ Math.min(95, Math.round(15 + processedSteps / estimatedSteps * 75)),
886
+ line
887
+ );
888
+ }
889
+ });
890
+ updateProgress(95, `Processed ${estimatedSteps} pg_restore entries.`);
891
+ }
892
+ async function runMysqlImport(connection, params, updateProgress) {
893
+ await maybeResetMysqlDatabase(connection, params.options);
894
+ const fileStat = await stat(params.uploadPath);
895
+ const args = [
896
+ "--protocol=TCP",
897
+ "--host",
898
+ connection.host || "127.0.0.1",
899
+ "--port",
900
+ String(connection.port || 3306),
901
+ "--user",
902
+ connection.username || ""
903
+ ];
904
+ appendMysqlSslArgs(args, connection);
905
+ if (connection.database) {
906
+ args.push(connection.database);
907
+ }
908
+ await runCommandWithInputFile({
909
+ command: "mysql",
910
+ args,
911
+ env: buildMysqlEnv(connection),
912
+ inputPath: params.uploadPath,
913
+ onBytes: (bytesRead) => {
914
+ updateProgress(
915
+ toDbProgress(bytesRead, fileStat.size),
916
+ "Streaming SQL into mysql...",
917
+ bytesRead
918
+ );
919
+ },
920
+ onStderrLine: (line) => {
921
+ updateProgress(null, line);
922
+ }
923
+ });
924
+ }
925
+ async function runSqliteImport(connection, params, updateProgress) {
926
+ await maybeResetSqliteDatabase(connection, params.options);
927
+ const fileStat = await stat(params.uploadPath);
928
+ await runCommandWithInputFile({
929
+ command: "sqlite3",
930
+ args: [connection.filePath || ""],
931
+ env: process.env,
932
+ inputPath: params.uploadPath,
933
+ onBytes: (bytesRead) => {
934
+ updateProgress(
935
+ toDbProgress(bytesRead, fileStat.size),
936
+ "Streaming SQL into sqlite3...",
937
+ bytesRead
938
+ );
939
+ },
940
+ onStderrLine: (line) => {
941
+ updateProgress(null, line);
942
+ }
943
+ });
944
+ }
945
+ async function withCommandFallback(candidates, run) {
946
+ let lastMissingError = null;
947
+ for (const command of candidates) {
948
+ try {
949
+ return await run(command);
950
+ } catch (error) {
951
+ if (isMissingCommandError(error)) {
952
+ lastMissingError = error;
953
+ continue;
954
+ }
955
+ throw error;
956
+ }
957
+ }
958
+ throw lastMissingError || new Error("No supported native backup tool is available.");
959
+ }
960
+ function createJobRecord(jobId, operation, type, tempDir, tool) {
961
+ return {
962
+ jobId,
963
+ operation,
964
+ status: "queued",
965
+ stage: "queued",
966
+ databaseType: type,
967
+ tool,
968
+ progress: 0,
969
+ message: "Queued",
970
+ startedAt: (/* @__PURE__ */ new Date()).toISOString(),
971
+ tempDir
972
+ };
973
+ }
974
+ async function runNativeExportJob(jobId, params) {
975
+ var _a;
976
+ const record = getJob(jobId);
977
+ if (!record || !params.type) {
978
+ return;
979
+ }
980
+ const startedAt = Date.now();
981
+ let connection = null;
982
+ try {
983
+ updateJob(jobId, {
984
+ status: "running",
985
+ stage: "preparing",
986
+ progress: 5,
987
+ message: "Preparing native backup job..."
988
+ });
989
+ connection = await resolveCliConnection(params, record.tempDir);
990
+ const estimatedBytes = await estimateExportBytes(params);
991
+ const capability = getNativeBackupCapability(params.type);
992
+ await withCommandFallback(
993
+ params.type === DatabaseClientType.MYSQL || params.type === DatabaseClientType.MARIADB ? getMysqlExportCandidates(params) : capability.exportToolCandidates,
994
+ async (command) => {
995
+ updateJob(jobId, {
996
+ stage: "starting",
997
+ progress: 10,
998
+ tool: command,
999
+ message: `Starting ${command}...`
1000
+ });
1001
+ if (params.type === DatabaseClientType.POSTGRES) {
1002
+ await runPostgresExport(
1003
+ command,
1004
+ connection,
1005
+ params,
1006
+ record.artifactPath || "",
1007
+ estimatedBytes,
1008
+ (progress, message, bytes) => {
1009
+ var _a2, _b;
1010
+ const previousProgress = (_b = (_a2 = getJob(jobId)) == null ? void 0 : _a2.progress) != null ? _b : null;
1011
+ updateJob(jobId, {
1012
+ stage: "dumping",
1013
+ progress: progress != null ? progress : previousProgress,
1014
+ bytesProcessed: bytes,
1015
+ bytesTotal: estimatedBytes,
1016
+ message
1017
+ });
1018
+ }
1019
+ );
1020
+ return;
1021
+ }
1022
+ if (params.type === DatabaseClientType.MYSQL || params.type === DatabaseClientType.MARIADB) {
1023
+ await runMysqlExport(
1024
+ command,
1025
+ connection,
1026
+ params,
1027
+ record.artifactPath || "",
1028
+ estimatedBytes,
1029
+ (progress, message, bytes) => {
1030
+ var _a2, _b;
1031
+ const previousProgress = (_b = (_a2 = getJob(jobId)) == null ? void 0 : _a2.progress) != null ? _b : null;
1032
+ updateJob(jobId, {
1033
+ stage: "dumping",
1034
+ progress: progress != null ? progress : previousProgress,
1035
+ bytesProcessed: bytes,
1036
+ bytesTotal: estimatedBytes,
1037
+ message
1038
+ });
1039
+ }
1040
+ );
1041
+ return;
1042
+ }
1043
+ if (params.type === DatabaseClientType.SQLITE3) {
1044
+ await runSqliteExport(
1045
+ command,
1046
+ connection,
1047
+ params,
1048
+ record.artifactPath || "",
1049
+ estimatedBytes,
1050
+ (progress, message, bytes) => {
1051
+ var _a2, _b;
1052
+ const previousProgress = (_b = (_a2 = getJob(jobId)) == null ? void 0 : _a2.progress) != null ? _b : null;
1053
+ updateJob(jobId, {
1054
+ stage: "dumping",
1055
+ progress: progress != null ? progress : previousProgress,
1056
+ bytesProcessed: bytes,
1057
+ bytesTotal: estimatedBytes,
1058
+ message
1059
+ });
1060
+ }
1061
+ );
1062
+ return;
1063
+ }
1064
+ }
1065
+ );
1066
+ const fileStat = await stat(record.artifactPath || "");
1067
+ updateJob(jobId, {
1068
+ status: "completed",
1069
+ stage: "completed",
1070
+ progress: 100,
1071
+ bytesProcessed: fileStat.size,
1072
+ bytesTotal: fileStat.size,
1073
+ message: `Backup is ready. ${fileStat.size} bytes generated.`,
1074
+ completedAt: (/* @__PURE__ */ new Date()).toISOString(),
1075
+ duration: Date.now() - startedAt,
1076
+ downloadReady: true,
1077
+ downloadUrl: `/api/database-export/jobs/${jobId}/download`
1078
+ });
1079
+ } catch (error) {
1080
+ updateJob(jobId, {
1081
+ status: "error",
1082
+ stage: "error",
1083
+ progress: null,
1084
+ error: error instanceof Error ? error.message : "Export failed.",
1085
+ message: error instanceof Error ? error.message : "Export failed.",
1086
+ completedAt: (/* @__PURE__ */ new Date()).toISOString(),
1087
+ duration: Date.now() - startedAt
1088
+ });
1089
+ } finally {
1090
+ await ((_a = connection == null ? void 0 : connection.closeTunnel) == null ? void 0 : _a.call(connection));
1091
+ scheduleCleanup(jobId);
1092
+ }
1093
+ }
1094
+ async function runNativeImportJob(jobId, params) {
1095
+ var _a;
1096
+ const record = getJob(jobId);
1097
+ if (!record || !params.type) {
1098
+ return;
1099
+ }
1100
+ const startedAt = Date.now();
1101
+ let connection = null;
1102
+ try {
1103
+ updateJob(jobId, {
1104
+ status: "running",
1105
+ stage: "preparing",
1106
+ progress: 5,
1107
+ message: "Preparing native restore job..."
1108
+ });
1109
+ connection = await resolveCliConnection(params, record.tempDir);
1110
+ const capability = getNativeBackupCapability(params.type);
1111
+ const importToolCandidates = params.type === DatabaseClientType.POSTGRES ? [getNativeBackupImportTool(params.type, params.uploadFileName)] : capability.importToolCandidates;
1112
+ await withCommandFallback(importToolCandidates, async (command) => {
1113
+ updateJob(jobId, {
1114
+ stage: "starting",
1115
+ progress: 10,
1116
+ tool: command,
1117
+ message: `Starting ${command}...`
1118
+ });
1119
+ if (params.type === DatabaseClientType.POSTGRES) {
1120
+ await runPostgresImport(
1121
+ command,
1122
+ connection,
1123
+ params,
1124
+ (progress, message, bytes) => {
1125
+ var _a2, _b;
1126
+ const previousProgress = (_b = (_a2 = getJob(jobId)) == null ? void 0 : _a2.progress) != null ? _b : null;
1127
+ updateJob(jobId, {
1128
+ stage: "restoring",
1129
+ progress: progress != null ? progress : previousProgress,
1130
+ bytesProcessed: bytes,
1131
+ message
1132
+ });
1133
+ }
1134
+ );
1135
+ return;
1136
+ }
1137
+ if (params.type === DatabaseClientType.MYSQL || params.type === DatabaseClientType.MARIADB) {
1138
+ await runMysqlImport(
1139
+ connection,
1140
+ params,
1141
+ (progress, message, bytes) => {
1142
+ var _a2, _b;
1143
+ const previousProgress = (_b = (_a2 = getJob(jobId)) == null ? void 0 : _a2.progress) != null ? _b : null;
1144
+ updateJob(jobId, {
1145
+ stage: "restoring",
1146
+ progress: progress != null ? progress : previousProgress,
1147
+ bytesProcessed: bytes,
1148
+ message
1149
+ });
1150
+ }
1151
+ );
1152
+ return;
1153
+ }
1154
+ if (params.type === DatabaseClientType.SQLITE3) {
1155
+ await runSqliteImport(
1156
+ connection,
1157
+ params,
1158
+ (progress, message, bytes) => {
1159
+ var _a2, _b;
1160
+ const previousProgress = (_b = (_a2 = getJob(jobId)) == null ? void 0 : _a2.progress) != null ? _b : null;
1161
+ updateJob(jobId, {
1162
+ stage: "restoring",
1163
+ progress: progress != null ? progress : previousProgress,
1164
+ bytesProcessed: bytes,
1165
+ message
1166
+ });
1167
+ }
1168
+ );
1169
+ }
1170
+ });
1171
+ updateJob(jobId, {
1172
+ status: "completed",
1173
+ stage: "completed",
1174
+ progress: 100,
1175
+ message: `${params.uploadFileName} restored successfully.`,
1176
+ completedAt: (/* @__PURE__ */ new Date()).toISOString(),
1177
+ duration: Date.now() - startedAt
1178
+ });
1179
+ } catch (error) {
1180
+ updateJob(jobId, {
1181
+ status: "error",
1182
+ stage: "error",
1183
+ progress: null,
1184
+ error: error instanceof Error ? error.message : "Import failed.",
1185
+ message: error instanceof Error ? error.message : "Import failed.",
1186
+ completedAt: (/* @__PURE__ */ new Date()).toISOString(),
1187
+ duration: Date.now() - startedAt
1188
+ });
1189
+ } finally {
1190
+ await ((_a = connection == null ? void 0 : connection.closeTunnel) == null ? void 0 : _a.call(connection));
1191
+ scheduleCleanup(jobId);
1192
+ }
1193
+ }
1194
+ async function startNativeExportJob(params) {
1195
+ assertNativeBackupSupported(params.type);
1196
+ const tempDir = await mkdtemp(join(tmpdir(), "heraq-native-export-"));
1197
+ const jobId = randomUUID();
1198
+ const artifactName = buildNativeBackupFileName(
1199
+ resolveDatabaseName(params),
1200
+ params.type,
1201
+ /* @__PURE__ */ new Date(),
1202
+ params.options.format
1203
+ );
1204
+ const fileKind = getNativeBackupFileKind(params.type, params.options.format);
1205
+ const record = createJobRecord(
1206
+ jobId,
1207
+ "export",
1208
+ params.type,
1209
+ tempDir,
1210
+ "pending"
1211
+ );
1212
+ nativeBackupJobs.set(jobId, {
1213
+ ...record,
1214
+ artifactPath: join(tempDir, artifactName),
1215
+ artifactContentType: fileKind === "sql" ? "application/sql; charset=utf-8" : "application/octet-stream",
1216
+ downloadFileName: artifactName
1217
+ });
1218
+ void runNativeExportJob(jobId, params);
1219
+ return {
1220
+ jobId,
1221
+ statusUrl: `/api/database-export/jobs/${jobId}`,
1222
+ downloadUrl: `/api/database-export/jobs/${jobId}/download`
1223
+ };
1224
+ }
1225
+ async function startNativeImportJob(params) {
1226
+ assertNativeBackupSupported(params.type);
1227
+ const tempDir = await mkdtemp(join(tmpdir(), "heraq-native-import-"));
1228
+ const jobId = randomUUID();
1229
+ const uploadPath = join(tempDir, params.uploadFileName);
1230
+ const record = createJobRecord(
1231
+ jobId,
1232
+ "import",
1233
+ params.type,
1234
+ tempDir,
1235
+ "pending"
1236
+ );
1237
+ await writeFile(uploadPath, params.fileData);
1238
+ nativeBackupJobs.set(jobId, {
1239
+ ...record,
1240
+ uploadPath
1241
+ });
1242
+ void runNativeImportJob(jobId, {
1243
+ ...params,
1244
+ uploadPath
1245
+ });
1246
+ return {
1247
+ jobId,
1248
+ statusUrl: `/api/database-import/jobs/${jobId}`
1249
+ };
1250
+ }
1251
+ function getNativeBackupJobSnapshot(jobId) {
1252
+ const record = getJob(jobId);
1253
+ if (!record) {
1254
+ throw createError({
1255
+ statusCode: 404,
1256
+ statusMessage: "Backup job not found or has expired."
1257
+ });
1258
+ }
1259
+ return {
1260
+ jobId: record.jobId,
1261
+ operation: record.operation,
1262
+ status: record.status,
1263
+ stage: record.stage,
1264
+ databaseType: record.databaseType,
1265
+ tool: record.tool,
1266
+ progress: record.progress,
1267
+ message: record.message,
1268
+ bytesProcessed: record.bytesProcessed,
1269
+ bytesTotal: record.bytesTotal,
1270
+ startedAt: record.startedAt,
1271
+ completedAt: record.completedAt,
1272
+ duration: record.duration,
1273
+ downloadReady: record.downloadReady,
1274
+ downloadFileName: record.downloadFileName,
1275
+ downloadUrl: record.downloadUrl,
1276
+ warnings: record.warnings,
1277
+ error: record.error
1278
+ };
1279
+ }
1280
+ function getNativeExportDownload(jobId) {
1281
+ const record = getJob(jobId);
1282
+ if (!record || record.operation !== "export" || !record.artifactPath) {
1283
+ throw createError({
1284
+ statusCode: 404,
1285
+ statusMessage: "Export artifact not found or has expired."
1286
+ });
1287
+ }
1288
+ if (record.status !== "completed") {
1289
+ throw createError({
1290
+ statusCode: 409,
1291
+ statusMessage: "Export artifact is not ready yet."
1292
+ });
1293
+ }
1294
+ return {
1295
+ filePath: record.artifactPath,
1296
+ fileName: record.downloadFileName || basename(record.artifactPath),
1297
+ contentType: record.artifactContentType || "application/octet-stream"
1298
+ };
1299
+ }
1300
+
1301
+ export { getNativeExportDownload as a, startNativeImportJob as b, getNativeBackupJobSnapshot as g, startNativeExportJob as s };
1302
+ //# sourceMappingURL=native-backup-jobs.mjs.map