spindb 0.37.2 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (811) hide show
  1. package/dist/cli/bin.js +9 -0
  2. package/dist/cli/bin.js.map +1 -0
  3. package/dist/cli/commands/attach.js +102 -0
  4. package/dist/cli/commands/attach.js.map +1 -0
  5. package/dist/cli/commands/backup.js +197 -0
  6. package/dist/cli/commands/backup.js.map +1 -0
  7. package/dist/cli/commands/backups.js +190 -0
  8. package/dist/cli/commands/backups.js.map +1 -0
  9. package/dist/cli/commands/clone.js +119 -0
  10. package/dist/cli/commands/clone.js.map +1 -0
  11. package/dist/cli/commands/config.js +276 -0
  12. package/dist/cli/commands/config.js.map +1 -0
  13. package/dist/cli/commands/connect.js +559 -0
  14. package/dist/cli/commands/connect.js.map +1 -0
  15. package/dist/cli/commands/create.js +952 -0
  16. package/dist/cli/commands/create.js.map +1 -0
  17. package/dist/cli/commands/databases.js +485 -0
  18. package/dist/cli/commands/databases.js.map +1 -0
  19. package/dist/cli/commands/delete.js +106 -0
  20. package/dist/cli/commands/delete.js.map +1 -0
  21. package/dist/cli/commands/deps.js +238 -0
  22. package/dist/cli/commands/deps.js.map +1 -0
  23. package/dist/cli/commands/detach.js +81 -0
  24. package/dist/cli/commands/detach.js.map +1 -0
  25. package/dist/cli/commands/doctor.js +567 -0
  26. package/dist/cli/commands/doctor.js.map +1 -0
  27. package/dist/cli/commands/duckdb.js +207 -0
  28. package/dist/cli/commands/duckdb.js.map +1 -0
  29. package/dist/cli/commands/edit.js +524 -0
  30. package/dist/cli/commands/edit.js.map +1 -0
  31. package/dist/cli/commands/engines.js +1414 -0
  32. package/dist/cli/commands/engines.js.map +1 -0
  33. package/dist/cli/commands/export.js +383 -0
  34. package/dist/cli/commands/export.js.map +1 -0
  35. package/dist/cli/commands/info.js +270 -0
  36. package/dist/cli/commands/info.js.map +1 -0
  37. package/dist/cli/commands/list.js +215 -0
  38. package/dist/cli/commands/list.js.map +1 -0
  39. package/dist/cli/commands/logs.js +81 -0
  40. package/dist/cli/commands/logs.js.map +1 -0
  41. package/dist/cli/commands/menu/backup-handlers.js +1202 -0
  42. package/dist/cli/commands/menu/backup-handlers.js.map +1 -0
  43. package/dist/cli/commands/menu/container-handlers.js +1788 -0
  44. package/dist/cli/commands/menu/container-handlers.js.map +1 -0
  45. package/dist/cli/commands/menu/engine-handlers.js +235 -0
  46. package/dist/cli/commands/menu/engine-handlers.js.map +1 -0
  47. package/dist/cli/commands/menu/index.js +266 -0
  48. package/dist/cli/commands/menu/index.js.map +1 -0
  49. package/dist/cli/commands/menu/settings-handlers.js +320 -0
  50. package/dist/cli/commands/menu/settings-handlers.js.map +1 -0
  51. package/dist/cli/commands/menu/shared.js +13 -0
  52. package/dist/cli/commands/menu/shared.js.map +1 -0
  53. package/dist/cli/commands/menu/shell-handlers.js +1573 -0
  54. package/dist/cli/commands/menu/shell-handlers.js.map +1 -0
  55. package/dist/cli/commands/menu/sql-handlers.js +185 -0
  56. package/dist/cli/commands/menu/sql-handlers.js.map +1 -0
  57. package/dist/cli/commands/menu/update-handlers.js +322 -0
  58. package/dist/cli/commands/menu/update-handlers.js.map +1 -0
  59. package/dist/cli/commands/menu/validators.js +9 -0
  60. package/dist/cli/commands/menu/validators.js.map +1 -0
  61. package/dist/cli/commands/ports.js +166 -0
  62. package/dist/cli/commands/ports.js.map +1 -0
  63. package/dist/cli/commands/pull.js +166 -0
  64. package/dist/cli/commands/pull.js.map +1 -0
  65. package/dist/cli/commands/query.js +180 -0
  66. package/dist/cli/commands/query.js.map +1 -0
  67. package/dist/cli/commands/restore.js +428 -0
  68. package/dist/cli/commands/restore.js.map +1 -0
  69. package/dist/cli/commands/run.js +115 -0
  70. package/dist/cli/commands/run.js.map +1 -0
  71. package/dist/cli/commands/self-update.js +99 -0
  72. package/dist/cli/commands/self-update.js.map +1 -0
  73. package/dist/cli/commands/sqlite.js +207 -0
  74. package/dist/cli/commands/sqlite.js.map +1 -0
  75. package/dist/cli/commands/start.js +196 -0
  76. package/dist/cli/commands/start.js.map +1 -0
  77. package/dist/cli/commands/stop.js +182 -0
  78. package/dist/cli/commands/stop.js.map +1 -0
  79. package/dist/cli/commands/url.js +88 -0
  80. package/dist/cli/commands/url.js.map +1 -0
  81. package/dist/cli/commands/users.js +189 -0
  82. package/dist/cli/commands/users.js.map +1 -0
  83. package/dist/cli/commands/version.js +52 -0
  84. package/dist/cli/commands/version.js.map +1 -0
  85. package/dist/cli/commands/which.js +258 -0
  86. package/dist/cli/commands/which.js.map +1 -0
  87. package/dist/cli/constants.js +212 -0
  88. package/dist/cli/constants.js.map +1 -0
  89. package/dist/cli/helpers.js +1120 -0
  90. package/dist/cli/helpers.js.map +1 -0
  91. package/dist/cli/index.js +146 -0
  92. package/dist/cli/index.js.map +1 -0
  93. package/dist/cli/ui/prompts.js +1002 -0
  94. package/dist/cli/ui/prompts.js.map +1 -0
  95. package/dist/cli/ui/spinner.js +74 -0
  96. package/dist/cli/ui/spinner.js.map +1 -0
  97. package/dist/cli/ui/theme.js +99 -0
  98. package/dist/cli/ui/theme.js.map +1 -0
  99. package/dist/cli/utils/file-follower.js +79 -0
  100. package/dist/cli/utils/file-follower.js.map +1 -0
  101. package/dist/config/backup-formats.js +363 -0
  102. package/dist/config/backup-formats.js.map +1 -0
  103. package/dist/config/defaults.js +25 -0
  104. package/dist/config/defaults.js.map +1 -0
  105. package/dist/config/engine-defaults.js +303 -0
  106. package/dist/config/engine-defaults.js.map +1 -0
  107. package/dist/config/engines-registry.js +103 -0
  108. package/dist/config/engines-registry.js.map +1 -0
  109. package/dist/config/os-dependencies.js +767 -0
  110. package/dist/config/os-dependencies.js.map +1 -0
  111. package/dist/config/paths.js +156 -0
  112. package/dist/config/paths.js.map +1 -0
  113. package/dist/config/version.js +3 -0
  114. package/dist/config/version.js.map +1 -0
  115. package/dist/core/backup-restore.js +219 -0
  116. package/dist/core/backup-restore.js.map +1 -0
  117. package/dist/core/base-binary-manager.js +403 -0
  118. package/dist/core/base-binary-manager.js.map +1 -0
  119. package/dist/core/base-document-binary-manager.js +364 -0
  120. package/dist/core/base-document-binary-manager.js.map +1 -0
  121. package/dist/core/base-embedded-binary-manager.js +364 -0
  122. package/dist/core/base-embedded-binary-manager.js.map +1 -0
  123. package/dist/core/base-server-binary-manager.js +368 -0
  124. package/dist/core/base-server-binary-manager.js.map +1 -0
  125. package/dist/core/config-manager.js +495 -0
  126. package/dist/core/config-manager.js.map +1 -0
  127. package/dist/core/container-manager.js +609 -0
  128. package/dist/core/container-manager.js.map +1 -0
  129. package/dist/core/credential-generator.js +67 -0
  130. package/dist/core/credential-generator.js.map +1 -0
  131. package/dist/core/credential-manager.js +211 -0
  132. package/dist/core/credential-manager.js.map +1 -0
  133. package/dist/core/dblab-utils.js +105 -0
  134. package/dist/core/dblab-utils.js.map +1 -0
  135. package/dist/core/dependency-manager.js +359 -0
  136. package/dist/core/dependency-manager.js.map +1 -0
  137. package/dist/core/docker-exporter.js +1077 -0
  138. package/dist/core/docker-exporter.js.map +1 -0
  139. package/dist/core/error-handler.js +295 -0
  140. package/dist/core/error-handler.js.map +1 -0
  141. package/dist/core/fs-error-utils.js +74 -0
  142. package/dist/core/fs-error-utils.js.map +1 -0
  143. package/dist/core/homebrew-version-manager.js +280 -0
  144. package/dist/core/homebrew-version-manager.js.map +1 -0
  145. package/dist/core/hostdb-client.js +252 -0
  146. package/dist/core/hostdb-client.js.map +1 -0
  147. package/dist/core/hostdb-metadata.js +243 -0
  148. package/dist/core/hostdb-metadata.js.map +1 -0
  149. package/dist/core/hostdb-releases-factory.js +161 -0
  150. package/dist/core/hostdb-releases-factory.js.map +1 -0
  151. package/dist/core/library-env.js +88 -0
  152. package/dist/core/library-env.js.map +1 -0
  153. package/dist/core/pgweb-utils.js +53 -0
  154. package/dist/core/pgweb-utils.js.map +1 -0
  155. package/dist/core/platform-service.js +632 -0
  156. package/dist/core/platform-service.js.map +1 -0
  157. package/dist/core/port-manager.js +136 -0
  158. package/dist/core/port-manager.js.map +1 -0
  159. package/dist/core/process-manager.js +445 -0
  160. package/dist/core/process-manager.js.map +1 -0
  161. package/dist/core/pull-manager.js +418 -0
  162. package/dist/core/pull-manager.js.map +1 -0
  163. package/dist/core/query-parser.js +449 -0
  164. package/dist/core/query-parser.js.map +1 -0
  165. package/dist/core/spawn-utils.js +90 -0
  166. package/dist/core/spawn-utils.js.map +1 -0
  167. package/dist/core/start-with-retry.js +90 -0
  168. package/dist/core/start-with-retry.js.map +1 -0
  169. package/dist/core/test-cleanup.js +85 -0
  170. package/dist/core/test-cleanup.js.map +1 -0
  171. package/dist/core/tls-generator.js +84 -0
  172. package/dist/core/tls-generator.js.map +1 -0
  173. package/dist/core/transaction-manager.js +139 -0
  174. package/dist/core/transaction-manager.js.map +1 -0
  175. package/dist/core/update-manager.js +241 -0
  176. package/dist/core/update-manager.js.map +1 -0
  177. package/dist/core/version-migration.js +260 -0
  178. package/dist/core/version-migration.js.map +1 -0
  179. package/dist/core/version-utils.js +91 -0
  180. package/dist/core/version-utils.js.map +1 -0
  181. package/dist/engines/base-engine.js +179 -0
  182. package/dist/engines/base-engine.js.map +1 -0
  183. package/dist/engines/clickhouse/backup.js +289 -0
  184. package/dist/engines/clickhouse/backup.js.map +1 -0
  185. package/dist/engines/clickhouse/binary-manager.js +145 -0
  186. package/dist/engines/clickhouse/binary-manager.js.map +1 -0
  187. package/dist/engines/clickhouse/binary-urls.js +100 -0
  188. package/dist/engines/clickhouse/binary-urls.js.map +1 -0
  189. package/dist/engines/clickhouse/cli-utils.js +143 -0
  190. package/dist/engines/clickhouse/cli-utils.js.map +1 -0
  191. package/dist/engines/clickhouse/hostdb-releases.js +24 -0
  192. package/dist/engines/clickhouse/hostdb-releases.js.map +1 -0
  193. package/dist/engines/clickhouse/index.js +1077 -0
  194. package/dist/engines/clickhouse/index.js.map +1 -0
  195. package/dist/engines/clickhouse/restore.js +335 -0
  196. package/dist/engines/clickhouse/restore.js.map +1 -0
  197. package/dist/engines/clickhouse/version-maps.js +83 -0
  198. package/dist/engines/clickhouse/version-maps.js.map +1 -0
  199. package/dist/engines/clickhouse/version-validator.js +133 -0
  200. package/dist/engines/clickhouse/version-validator.js.map +1 -0
  201. package/dist/engines/cockroachdb/backup.js +261 -0
  202. package/dist/engines/cockroachdb/backup.js.map +1 -0
  203. package/dist/engines/cockroachdb/binary-manager.js +33 -0
  204. package/dist/engines/cockroachdb/binary-manager.js.map +1 -0
  205. package/dist/engines/cockroachdb/binary-urls.js +33 -0
  206. package/dist/engines/cockroachdb/binary-urls.js.map +1 -0
  207. package/dist/engines/cockroachdb/cli-utils.js +338 -0
  208. package/dist/engines/cockroachdb/cli-utils.js.map +1 -0
  209. package/dist/engines/cockroachdb/hostdb-releases.js +21 -0
  210. package/dist/engines/cockroachdb/hostdb-releases.js.map +1 -0
  211. package/dist/engines/cockroachdb/index.js +1016 -0
  212. package/dist/engines/cockroachdb/index.js.map +1 -0
  213. package/dist/engines/cockroachdb/restore.js +323 -0
  214. package/dist/engines/cockroachdb/restore.js.map +1 -0
  215. package/dist/engines/cockroachdb/version-maps.js +37 -0
  216. package/dist/engines/cockroachdb/version-maps.js.map +1 -0
  217. package/dist/engines/couchdb/api-client.js +64 -0
  218. package/dist/engines/couchdb/api-client.js.map +1 -0
  219. package/dist/engines/couchdb/backup.js +90 -0
  220. package/dist/engines/couchdb/backup.js.map +1 -0
  221. package/dist/engines/couchdb/binary-manager.js +62 -0
  222. package/dist/engines/couchdb/binary-manager.js.map +1 -0
  223. package/dist/engines/couchdb/binary-urls.js +92 -0
  224. package/dist/engines/couchdb/binary-urls.js.map +1 -0
  225. package/dist/engines/couchdb/hostdb-releases.js +21 -0
  226. package/dist/engines/couchdb/hostdb-releases.js.map +1 -0
  227. package/dist/engines/couchdb/index.js +1043 -0
  228. package/dist/engines/couchdb/index.js.map +1 -0
  229. package/dist/engines/couchdb/restore.js +198 -0
  230. package/dist/engines/couchdb/restore.js.map +1 -0
  231. package/dist/engines/couchdb/version-maps.js +67 -0
  232. package/dist/engines/couchdb/version-maps.js.map +1 -0
  233. package/dist/engines/couchdb/version-validator.js +88 -0
  234. package/dist/engines/couchdb/version-validator.js.map +1 -0
  235. package/dist/engines/duckdb/binary-manager.js +33 -0
  236. package/dist/engines/duckdb/binary-manager.js.map +1 -0
  237. package/{engines/duckdb/binary-urls.ts → dist/engines/duckdb/binary-urls.js} +11 -16
  238. package/dist/engines/duckdb/binary-urls.js.map +1 -0
  239. package/dist/engines/duckdb/hostdb-releases.js +21 -0
  240. package/dist/engines/duckdb/hostdb-releases.js.map +1 -0
  241. package/dist/engines/duckdb/index.js +594 -0
  242. package/dist/engines/duckdb/index.js.map +1 -0
  243. package/dist/engines/duckdb/registry.js +265 -0
  244. package/dist/engines/duckdb/registry.js.map +1 -0
  245. package/dist/engines/duckdb/scanner.js +12 -0
  246. package/dist/engines/duckdb/scanner.js.map +1 -0
  247. package/dist/engines/duckdb/version-maps.js +67 -0
  248. package/dist/engines/duckdb/version-maps.js.map +1 -0
  249. package/dist/engines/duckdb/version-validator.js +62 -0
  250. package/dist/engines/duckdb/version-validator.js.map +1 -0
  251. package/dist/engines/ferretdb/backup.js +170 -0
  252. package/dist/engines/ferretdb/backup.js.map +1 -0
  253. package/dist/engines/ferretdb/binary-manager.js +765 -0
  254. package/dist/engines/ferretdb/binary-manager.js.map +1 -0
  255. package/dist/engines/ferretdb/binary-urls.js +135 -0
  256. package/dist/engines/ferretdb/binary-urls.js.map +1 -0
  257. package/dist/engines/ferretdb/index.js +1517 -0
  258. package/dist/engines/ferretdb/index.js.map +1 -0
  259. package/dist/engines/ferretdb/restore.js +310 -0
  260. package/dist/engines/ferretdb/restore.js.map +1 -0
  261. package/{engines/ferretdb/version-maps.ts → dist/engines/ferretdb/version-maps.js} +62 -79
  262. package/dist/engines/ferretdb/version-maps.js.map +1 -0
  263. package/dist/engines/file-based-utils.js +184 -0
  264. package/dist/engines/file-based-utils.js.map +1 -0
  265. package/dist/engines/index.js +124 -0
  266. package/dist/engines/index.js.map +1 -0
  267. package/dist/engines/influxdb/api-client.js +54 -0
  268. package/dist/engines/influxdb/api-client.js.map +1 -0
  269. package/dist/engines/influxdb/backup.js +119 -0
  270. package/dist/engines/influxdb/backup.js.map +1 -0
  271. package/dist/engines/influxdb/binary-manager.js +87 -0
  272. package/dist/engines/influxdb/binary-manager.js.map +1 -0
  273. package/dist/engines/influxdb/binary-urls.js +56 -0
  274. package/dist/engines/influxdb/binary-urls.js.map +1 -0
  275. package/dist/engines/influxdb/hostdb-releases.js +21 -0
  276. package/dist/engines/influxdb/hostdb-releases.js.map +1 -0
  277. package/dist/engines/influxdb/index.js +962 -0
  278. package/dist/engines/influxdb/index.js.map +1 -0
  279. package/dist/engines/influxdb/restore.js +329 -0
  280. package/dist/engines/influxdb/restore.js.map +1 -0
  281. package/dist/engines/influxdb/version-maps.js +64 -0
  282. package/dist/engines/influxdb/version-maps.js.map +1 -0
  283. package/dist/engines/influxdb/version-validator.js +109 -0
  284. package/dist/engines/influxdb/version-validator.js.map +1 -0
  285. package/dist/engines/mariadb/backup.js +178 -0
  286. package/dist/engines/mariadb/backup.js.map +1 -0
  287. package/dist/engines/mariadb/binary-manager.js +33 -0
  288. package/dist/engines/mariadb/binary-manager.js.map +1 -0
  289. package/{engines/mariadb/binary-urls.ts → dist/engines/mariadb/binary-urls.js} +38 -55
  290. package/dist/engines/mariadb/binary-urls.js.map +1 -0
  291. package/dist/engines/mariadb/hostdb-releases.js +21 -0
  292. package/dist/engines/mariadb/hostdb-releases.js.map +1 -0
  293. package/dist/engines/mariadb/index.js +1011 -0
  294. package/dist/engines/mariadb/index.js.map +1 -0
  295. package/dist/engines/mariadb/restore.js +322 -0
  296. package/dist/engines/mariadb/restore.js.map +1 -0
  297. package/dist/engines/mariadb/version-maps.js +63 -0
  298. package/dist/engines/mariadb/version-maps.js.map +1 -0
  299. package/dist/engines/mariadb/version-validator.js +143 -0
  300. package/dist/engines/mariadb/version-validator.js.map +1 -0
  301. package/dist/engines/meilisearch/api-client.js +50 -0
  302. package/dist/engines/meilisearch/api-client.js.map +1 -0
  303. package/dist/engines/meilisearch/backup.js +167 -0
  304. package/dist/engines/meilisearch/backup.js.map +1 -0
  305. package/dist/engines/meilisearch/binary-manager.js +31 -0
  306. package/dist/engines/meilisearch/binary-manager.js.map +1 -0
  307. package/dist/engines/meilisearch/binary-urls.js +56 -0
  308. package/dist/engines/meilisearch/binary-urls.js.map +1 -0
  309. package/dist/engines/meilisearch/hostdb-releases.js +21 -0
  310. package/dist/engines/meilisearch/hostdb-releases.js.map +1 -0
  311. package/dist/engines/meilisearch/index.js +992 -0
  312. package/dist/engines/meilisearch/index.js.map +1 -0
  313. package/dist/engines/meilisearch/restore.js +167 -0
  314. package/dist/engines/meilisearch/restore.js.map +1 -0
  315. package/dist/engines/meilisearch/version-maps.js +67 -0
  316. package/dist/engines/meilisearch/version-maps.js.map +1 -0
  317. package/dist/engines/meilisearch/version-validator.js +109 -0
  318. package/dist/engines/meilisearch/version-validator.js.map +1 -0
  319. package/dist/engines/mongodb/backup.js +109 -0
  320. package/dist/engines/mongodb/backup.js.map +1 -0
  321. package/dist/engines/mongodb/binary-manager.js +36 -0
  322. package/dist/engines/mongodb/binary-manager.js.map +1 -0
  323. package/dist/engines/mongodb/binary-urls.js +46 -0
  324. package/dist/engines/mongodb/binary-urls.js.map +1 -0
  325. package/dist/engines/mongodb/cli-utils.js +131 -0
  326. package/dist/engines/mongodb/cli-utils.js.map +1 -0
  327. package/dist/engines/mongodb/hostdb-releases.js +77 -0
  328. package/dist/engines/mongodb/hostdb-releases.js.map +1 -0
  329. package/dist/engines/mongodb/index.js +873 -0
  330. package/dist/engines/mongodb/index.js.map +1 -0
  331. package/dist/engines/mongodb/restore.js +276 -0
  332. package/dist/engines/mongodb/restore.js.map +1 -0
  333. package/dist/engines/mongodb/version-maps.js +79 -0
  334. package/dist/engines/mongodb/version-maps.js.map +1 -0
  335. package/dist/engines/mongodb/version-validator.js +133 -0
  336. package/dist/engines/mongodb/version-validator.js.map +1 -0
  337. package/dist/engines/mysql/backup.js +210 -0
  338. package/dist/engines/mysql/backup.js.map +1 -0
  339. package/dist/engines/mysql/binary-detection.js +325 -0
  340. package/dist/engines/mysql/binary-detection.js.map +1 -0
  341. package/dist/engines/mysql/binary-manager.js +30 -0
  342. package/dist/engines/mysql/binary-manager.js.map +1 -0
  343. package/dist/engines/mysql/binary-urls.js +87 -0
  344. package/dist/engines/mysql/binary-urls.js.map +1 -0
  345. package/{engines/mysql/hostdb-releases.ts → dist/engines/mysql/hostdb-releases.js} +20 -23
  346. package/dist/engines/mysql/hostdb-releases.js.map +1 -0
  347. package/dist/engines/mysql/index.js +1066 -0
  348. package/dist/engines/mysql/index.js.map +1 -0
  349. package/dist/engines/mysql/restore.js +361 -0
  350. package/dist/engines/mysql/restore.js.map +1 -0
  351. package/dist/engines/mysql/version-maps.js +79 -0
  352. package/dist/engines/mysql/version-maps.js.map +1 -0
  353. package/dist/engines/mysql/version-validator.js +266 -0
  354. package/dist/engines/mysql/version-validator.js.map +1 -0
  355. package/dist/engines/postgresql/backup.js +118 -0
  356. package/dist/engines/postgresql/backup.js.map +1 -0
  357. package/dist/engines/postgresql/binary-manager.js +85 -0
  358. package/dist/engines/postgresql/binary-manager.js.map +1 -0
  359. package/dist/engines/postgresql/binary-urls.js +80 -0
  360. package/dist/engines/postgresql/binary-urls.js.map +1 -0
  361. package/dist/engines/postgresql/hostdb-releases.js +21 -0
  362. package/dist/engines/postgresql/hostdb-releases.js.map +1 -0
  363. package/dist/engines/postgresql/index.js +852 -0
  364. package/dist/engines/postgresql/index.js.map +1 -0
  365. package/dist/engines/postgresql/remote-version.js +109 -0
  366. package/dist/engines/postgresql/remote-version.js.map +1 -0
  367. package/dist/engines/postgresql/restore.js +254 -0
  368. package/dist/engines/postgresql/restore.js.map +1 -0
  369. package/dist/engines/postgresql/version-maps.js +73 -0
  370. package/dist/engines/postgresql/version-maps.js.map +1 -0
  371. package/dist/engines/postgresql/version-validator.js +286 -0
  372. package/dist/engines/postgresql/version-validator.js.map +1 -0
  373. package/dist/engines/qdrant/api-client.js +50 -0
  374. package/dist/engines/qdrant/api-client.js.map +1 -0
  375. package/dist/engines/qdrant/backup.js +115 -0
  376. package/dist/engines/qdrant/backup.js.map +1 -0
  377. package/dist/engines/qdrant/binary-manager.js +31 -0
  378. package/dist/engines/qdrant/binary-manager.js.map +1 -0
  379. package/dist/engines/qdrant/binary-urls.js +92 -0
  380. package/dist/engines/qdrant/binary-urls.js.map +1 -0
  381. package/dist/engines/qdrant/cli-utils.js +39 -0
  382. package/dist/engines/qdrant/cli-utils.js.map +1 -0
  383. package/dist/engines/qdrant/hostdb-releases.js +21 -0
  384. package/dist/engines/qdrant/hostdb-releases.js.map +1 -0
  385. package/dist/engines/qdrant/index.js +1002 -0
  386. package/dist/engines/qdrant/index.js.map +1 -0
  387. package/dist/engines/qdrant/restore.js +154 -0
  388. package/dist/engines/qdrant/restore.js.map +1 -0
  389. package/dist/engines/qdrant/version-maps.js +67 -0
  390. package/dist/engines/qdrant/version-maps.js.map +1 -0
  391. package/dist/engines/qdrant/version-validator.js +109 -0
  392. package/dist/engines/qdrant/version-validator.js.map +1 -0
  393. package/dist/engines/questdb/backup.js +191 -0
  394. package/dist/engines/questdb/backup.js.map +1 -0
  395. package/dist/engines/questdb/binary-manager.js +247 -0
  396. package/dist/engines/questdb/binary-manager.js.map +1 -0
  397. package/dist/engines/questdb/binary-urls.js +27 -0
  398. package/dist/engines/questdb/binary-urls.js.map +1 -0
  399. package/dist/engines/questdb/hostdb-releases.js +21 -0
  400. package/dist/engines/questdb/hostdb-releases.js.map +1 -0
  401. package/dist/engines/questdb/index.js +814 -0
  402. package/dist/engines/questdb/index.js.map +1 -0
  403. package/dist/engines/questdb/restore.js +202 -0
  404. package/dist/engines/questdb/restore.js.map +1 -0
  405. package/dist/engines/questdb/version-maps.js +33 -0
  406. package/dist/engines/questdb/version-maps.js.map +1 -0
  407. package/dist/engines/questdb/version-validator.js +99 -0
  408. package/dist/engines/questdb/version-validator.js.map +1 -0
  409. package/dist/engines/redis/backup.js +292 -0
  410. package/dist/engines/redis/backup.js.map +1 -0
  411. package/dist/engines/redis/binary-manager.js +32 -0
  412. package/dist/engines/redis/binary-manager.js.map +1 -0
  413. package/dist/engines/redis/binary-urls.js +96 -0
  414. package/dist/engines/redis/binary-urls.js.map +1 -0
  415. package/dist/engines/redis/cli-utils.js +38 -0
  416. package/dist/engines/redis/cli-utils.js.map +1 -0
  417. package/dist/engines/redis/hostdb-releases.js +21 -0
  418. package/dist/engines/redis/hostdb-releases.js.map +1 -0
  419. package/dist/engines/redis/index.js +1263 -0
  420. package/dist/engines/redis/index.js.map +1 -0
  421. package/dist/engines/redis/restore.js +338 -0
  422. package/dist/engines/redis/restore.js.map +1 -0
  423. package/dist/engines/redis/version-maps.js +70 -0
  424. package/dist/engines/redis/version-maps.js.map +1 -0
  425. package/dist/engines/redis/version-validator.js +109 -0
  426. package/dist/engines/redis/version-validator.js.map +1 -0
  427. package/dist/engines/sqlite/binary-manager.js +39 -0
  428. package/dist/engines/sqlite/binary-manager.js.map +1 -0
  429. package/{engines/sqlite/binary-urls.ts → dist/engines/sqlite/binary-urls.js} +11 -16
  430. package/dist/engines/sqlite/binary-urls.js.map +1 -0
  431. package/dist/engines/sqlite/hostdb-releases.js +21 -0
  432. package/dist/engines/sqlite/hostdb-releases.js.map +1 -0
  433. package/dist/engines/sqlite/index.js +493 -0
  434. package/dist/engines/sqlite/index.js.map +1 -0
  435. package/dist/engines/sqlite/registry.js +163 -0
  436. package/dist/engines/sqlite/registry.js.map +1 -0
  437. package/dist/engines/sqlite/scanner.js +12 -0
  438. package/dist/engines/sqlite/scanner.js.map +1 -0
  439. package/dist/engines/sqlite/version-maps.js +57 -0
  440. package/dist/engines/sqlite/version-maps.js.map +1 -0
  441. package/dist/engines/surrealdb/backup.js +97 -0
  442. package/dist/engines/surrealdb/backup.js.map +1 -0
  443. package/dist/engines/surrealdb/binary-manager.js +33 -0
  444. package/dist/engines/surrealdb/binary-manager.js.map +1 -0
  445. package/dist/engines/surrealdb/binary-urls.js +33 -0
  446. package/dist/engines/surrealdb/binary-urls.js.map +1 -0
  447. package/dist/engines/surrealdb/cli-utils.js +147 -0
  448. package/dist/engines/surrealdb/cli-utils.js.map +1 -0
  449. package/dist/engines/surrealdb/hostdb-releases.js +21 -0
  450. package/dist/engines/surrealdb/hostdb-releases.js.map +1 -0
  451. package/dist/engines/surrealdb/index.js +1022 -0
  452. package/dist/engines/surrealdb/index.js.map +1 -0
  453. package/dist/engines/surrealdb/restore.js +224 -0
  454. package/dist/engines/surrealdb/restore.js.map +1 -0
  455. package/dist/engines/surrealdb/version-maps.js +36 -0
  456. package/dist/engines/surrealdb/version-maps.js.map +1 -0
  457. package/dist/engines/tigerbeetle/backup.js +36 -0
  458. package/dist/engines/tigerbeetle/backup.js.map +1 -0
  459. package/dist/engines/tigerbeetle/binary-manager.js +72 -0
  460. package/dist/engines/tigerbeetle/binary-manager.js.map +1 -0
  461. package/dist/engines/tigerbeetle/binary-urls.js +49 -0
  462. package/dist/engines/tigerbeetle/binary-urls.js.map +1 -0
  463. package/dist/engines/tigerbeetle/hostdb-releases.js +21 -0
  464. package/dist/engines/tigerbeetle/hostdb-releases.js.map +1 -0
  465. package/dist/engines/tigerbeetle/index.js +559 -0
  466. package/dist/engines/tigerbeetle/index.js.map +1 -0
  467. package/dist/engines/tigerbeetle/restore.js +91 -0
  468. package/dist/engines/tigerbeetle/restore.js.map +1 -0
  469. package/{engines/tigerbeetle/version-maps.ts → dist/engines/tigerbeetle/version-maps.js} +22 -31
  470. package/dist/engines/tigerbeetle/version-maps.js.map +1 -0
  471. package/dist/engines/tigerbeetle/version-validator.js +108 -0
  472. package/dist/engines/tigerbeetle/version-validator.js.map +1 -0
  473. package/dist/engines/typedb/backup.js +129 -0
  474. package/dist/engines/typedb/backup.js.map +1 -0
  475. package/dist/engines/typedb/binary-manager.js +151 -0
  476. package/dist/engines/typedb/binary-manager.js.map +1 -0
  477. package/dist/engines/typedb/binary-urls.js +33 -0
  478. package/dist/engines/typedb/binary-urls.js.map +1 -0
  479. package/dist/engines/typedb/cli-utils.js +163 -0
  480. package/dist/engines/typedb/cli-utils.js.map +1 -0
  481. package/dist/engines/typedb/hostdb-releases.js +21 -0
  482. package/dist/engines/typedb/hostdb-releases.js.map +1 -0
  483. package/dist/engines/typedb/index.js +1003 -0
  484. package/dist/engines/typedb/index.js.map +1 -0
  485. package/dist/engines/typedb/restore.js +279 -0
  486. package/dist/engines/typedb/restore.js.map +1 -0
  487. package/dist/engines/typedb/version-maps.js +40 -0
  488. package/dist/engines/typedb/version-maps.js.map +1 -0
  489. package/dist/engines/typedb/version-validator.js +103 -0
  490. package/dist/engines/typedb/version-validator.js.map +1 -0
  491. package/dist/engines/valkey/backup.js +292 -0
  492. package/dist/engines/valkey/backup.js.map +1 -0
  493. package/dist/engines/valkey/binary-manager.js +33 -0
  494. package/dist/engines/valkey/binary-manager.js.map +1 -0
  495. package/dist/engines/valkey/binary-urls.js +98 -0
  496. package/dist/engines/valkey/binary-urls.js.map +1 -0
  497. package/dist/engines/valkey/cli-utils.js +38 -0
  498. package/dist/engines/valkey/cli-utils.js.map +1 -0
  499. package/dist/engines/valkey/hostdb-releases.js +21 -0
  500. package/dist/engines/valkey/hostdb-releases.js.map +1 -0
  501. package/dist/engines/valkey/index.js +1257 -0
  502. package/dist/engines/valkey/index.js.map +1 -0
  503. package/dist/engines/valkey/restore.js +340 -0
  504. package/dist/engines/valkey/restore.js.map +1 -0
  505. package/dist/engines/valkey/version-maps.js +70 -0
  506. package/dist/engines/valkey/version-maps.js.map +1 -0
  507. package/dist/engines/valkey/version-validator.js +112 -0
  508. package/dist/engines/valkey/version-validator.js.map +1 -0
  509. package/dist/engines/weaviate/api-client.js +50 -0
  510. package/dist/engines/weaviate/api-client.js.map +1 -0
  511. package/dist/engines/weaviate/backup.js +95 -0
  512. package/dist/engines/weaviate/backup.js.map +1 -0
  513. package/dist/engines/weaviate/binary-manager.js +58 -0
  514. package/dist/engines/weaviate/binary-manager.js.map +1 -0
  515. package/dist/engines/weaviate/binary-urls.js +92 -0
  516. package/dist/engines/weaviate/binary-urls.js.map +1 -0
  517. package/dist/engines/weaviate/cli-utils.js +39 -0
  518. package/dist/engines/weaviate/cli-utils.js.map +1 -0
  519. package/dist/engines/weaviate/hostdb-releases.js +21 -0
  520. package/dist/engines/weaviate/hostdb-releases.js.map +1 -0
  521. package/dist/engines/weaviate/index.js +871 -0
  522. package/dist/engines/weaviate/index.js.map +1 -0
  523. package/dist/engines/weaviate/restore.js +185 -0
  524. package/dist/engines/weaviate/restore.js.map +1 -0
  525. package/dist/engines/weaviate/version-maps.js +67 -0
  526. package/dist/engines/weaviate/version-maps.js.map +1 -0
  527. package/dist/engines/weaviate/version-validator.js +109 -0
  528. package/dist/engines/weaviate/version-validator.js.map +1 -0
  529. package/dist/types/index.js +102 -0
  530. package/dist/types/index.js.map +1 -0
  531. package/package.json +12 -9
  532. package/bin/cli.js +0 -68
  533. package/cli/bin.ts +0 -10
  534. package/cli/commands/attach.ts +0 -139
  535. package/cli/commands/backup.ts +0 -290
  536. package/cli/commands/backups.ts +0 -247
  537. package/cli/commands/clone.ts +0 -159
  538. package/cli/commands/config.ts +0 -367
  539. package/cli/commands/connect.ts +0 -684
  540. package/cli/commands/create.ts +0 -1201
  541. package/cli/commands/databases.ts +0 -630
  542. package/cli/commands/delete.ts +0 -133
  543. package/cli/commands/deps.ts +0 -342
  544. package/cli/commands/detach.ts +0 -107
  545. package/cli/commands/doctor.ts +0 -689
  546. package/cli/commands/duckdb.ts +0 -273
  547. package/cli/commands/edit.ts +0 -683
  548. package/cli/commands/engines.ts +0 -1914
  549. package/cli/commands/export.ts +0 -544
  550. package/cli/commands/info.ts +0 -340
  551. package/cli/commands/list.ts +0 -284
  552. package/cli/commands/logs.ts +0 -102
  553. package/cli/commands/menu/backup-handlers.ts +0 -1571
  554. package/cli/commands/menu/container-handlers.ts +0 -2288
  555. package/cli/commands/menu/engine-handlers.ts +0 -355
  556. package/cli/commands/menu/index.ts +0 -342
  557. package/cli/commands/menu/settings-handlers.ts +0 -365
  558. package/cli/commands/menu/shared.ts +0 -23
  559. package/cli/commands/menu/shell-handlers.ts +0 -1811
  560. package/cli/commands/menu/sql-handlers.ts +0 -231
  561. package/cli/commands/menu/update-handlers.ts +0 -378
  562. package/cli/commands/menu/validators.ts +0 -8
  563. package/cli/commands/ports.ts +0 -211
  564. package/cli/commands/pull.ts +0 -223
  565. package/cli/commands/query.ts +0 -241
  566. package/cli/commands/restore.ts +0 -587
  567. package/cli/commands/run.ts +0 -178
  568. package/cli/commands/self-update.ts +0 -121
  569. package/cli/commands/sqlite.ts +0 -273
  570. package/cli/commands/start.ts +0 -218
  571. package/cli/commands/stop.ts +0 -241
  572. package/cli/commands/url.ts +0 -104
  573. package/cli/commands/users.ts +0 -264
  574. package/cli/commands/version.ts +0 -55
  575. package/cli/commands/which.ts +0 -290
  576. package/cli/constants.ts +0 -233
  577. package/cli/helpers.ts +0 -1593
  578. package/cli/index.ts +0 -162
  579. package/cli/ui/prompts.ts +0 -1525
  580. package/cli/ui/spinner.ts +0 -88
  581. package/cli/ui/theme.ts +0 -128
  582. package/cli/utils/file-follower.ts +0 -93
  583. package/config/backup-formats.ts +0 -446
  584. package/config/defaults.ts +0 -56
  585. package/config/engine-defaults.ts +0 -336
  586. package/config/engines-registry.ts +0 -150
  587. package/config/engines.schema.json +0 -135
  588. package/config/os-dependencies.ts +0 -888
  589. package/config/paths.ts +0 -200
  590. package/core/backup-restore.ts +0 -330
  591. package/core/base-binary-manager.ts +0 -562
  592. package/core/base-document-binary-manager.ts +0 -523
  593. package/core/base-embedded-binary-manager.ts +0 -547
  594. package/core/base-server-binary-manager.ts +0 -523
  595. package/core/config-manager.ts +0 -652
  596. package/core/container-manager.ts +0 -787
  597. package/core/credential-generator.ts +0 -93
  598. package/core/credential-manager.ts +0 -259
  599. package/core/dblab-utils.ts +0 -113
  600. package/core/dependency-manager.ts +0 -512
  601. package/core/docker-exporter.ts +0 -1345
  602. package/core/error-handler.ts +0 -419
  603. package/core/fs-error-utils.ts +0 -82
  604. package/core/homebrew-version-manager.ts +0 -352
  605. package/core/hostdb-client.ts +0 -344
  606. package/core/hostdb-metadata.ts +0 -350
  607. package/core/hostdb-releases-factory.ts +0 -237
  608. package/core/library-env.ts +0 -118
  609. package/core/pgweb-utils.ts +0 -62
  610. package/core/platform-service.ts +0 -829
  611. package/core/port-manager.ts +0 -165
  612. package/core/process-manager.ts +0 -576
  613. package/core/pull-manager.ts +0 -511
  614. package/core/query-parser.ts +0 -514
  615. package/core/spawn-utils.ts +0 -122
  616. package/core/start-with-retry.ts +0 -130
  617. package/core/test-cleanup.ts +0 -108
  618. package/core/tls-generator.ts +0 -116
  619. package/core/transaction-manager.ts +0 -158
  620. package/core/update-manager.ts +0 -308
  621. package/core/version-migration.ts +0 -346
  622. package/core/version-utils.ts +0 -104
  623. package/engines/base-engine.ts +0 -340
  624. package/engines/clickhouse/README.md +0 -231
  625. package/engines/clickhouse/backup.ts +0 -398
  626. package/engines/clickhouse/binary-manager.ts +0 -201
  627. package/engines/clickhouse/binary-urls.ts +0 -125
  628. package/engines/clickhouse/cli-utils.ts +0 -176
  629. package/engines/clickhouse/hostdb-releases.ts +0 -30
  630. package/engines/clickhouse/index.ts +0 -1345
  631. package/engines/clickhouse/restore.ts +0 -466
  632. package/engines/clickhouse/version-maps.ts +0 -95
  633. package/engines/clickhouse/version-validator.ts +0 -154
  634. package/engines/cockroachdb/README.md +0 -170
  635. package/engines/cockroachdb/backup.ts +0 -376
  636. package/engines/cockroachdb/binary-manager.ts +0 -45
  637. package/engines/cockroachdb/binary-urls.ts +0 -40
  638. package/engines/cockroachdb/cli-utils.ts +0 -384
  639. package/engines/cockroachdb/hostdb-releases.ts +0 -26
  640. package/engines/cockroachdb/index.ts +0 -1276
  641. package/engines/cockroachdb/restore.ts +0 -455
  642. package/engines/cockroachdb/version-maps.ts +0 -42
  643. package/engines/couchdb/README.md +0 -257
  644. package/engines/couchdb/api-client.ts +0 -81
  645. package/engines/couchdb/backup.ts +0 -137
  646. package/engines/couchdb/binary-manager.ts +0 -86
  647. package/engines/couchdb/binary-urls.ts +0 -115
  648. package/engines/couchdb/hostdb-releases.ts +0 -23
  649. package/engines/couchdb/index.ts +0 -1429
  650. package/engines/couchdb/restore.ts +0 -290
  651. package/engines/couchdb/version-maps.ts +0 -78
  652. package/engines/couchdb/version-validator.ts +0 -111
  653. package/engines/duckdb/README.md +0 -154
  654. package/engines/duckdb/binary-manager.ts +0 -45
  655. package/engines/duckdb/hostdb-releases.ts +0 -23
  656. package/engines/duckdb/index.ts +0 -749
  657. package/engines/duckdb/registry.ts +0 -303
  658. package/engines/duckdb/scanner.ts +0 -22
  659. package/engines/duckdb/version-maps.ts +0 -78
  660. package/engines/duckdb/version-validator.ts +0 -78
  661. package/engines/ferretdb/README.md +0 -262
  662. package/engines/ferretdb/backup.ts +0 -173
  663. package/engines/ferretdb/binary-manager.ts +0 -1095
  664. package/engines/ferretdb/binary-urls.ts +0 -183
  665. package/engines/ferretdb/index.ts +0 -1907
  666. package/engines/ferretdb/restore.ts +0 -357
  667. package/engines/file-based-utils.ts +0 -262
  668. package/engines/index.ts +0 -131
  669. package/engines/influxdb/README.md +0 -180
  670. package/engines/influxdb/api-client.ts +0 -64
  671. package/engines/influxdb/backup.ts +0 -160
  672. package/engines/influxdb/binary-manager.ts +0 -110
  673. package/engines/influxdb/binary-urls.ts +0 -69
  674. package/engines/influxdb/hostdb-releases.ts +0 -23
  675. package/engines/influxdb/index.ts +0 -1272
  676. package/engines/influxdb/restore.ts +0 -417
  677. package/engines/influxdb/version-maps.ts +0 -75
  678. package/engines/influxdb/version-validator.ts +0 -128
  679. package/engines/mariadb/README.md +0 -141
  680. package/engines/mariadb/backup.ts +0 -233
  681. package/engines/mariadb/binary-manager.ts +0 -45
  682. package/engines/mariadb/hostdb-releases.ts +0 -23
  683. package/engines/mariadb/index.ts +0 -1300
  684. package/engines/mariadb/restore.ts +0 -447
  685. package/engines/mariadb/version-maps.ts +0 -72
  686. package/engines/mariadb/version-validator.ts +0 -181
  687. package/engines/meilisearch/README.md +0 -255
  688. package/engines/meilisearch/api-client.ts +0 -61
  689. package/engines/meilisearch/backup.ts +0 -233
  690. package/engines/meilisearch/binary-manager.ts +0 -43
  691. package/engines/meilisearch/binary-urls.ts +0 -69
  692. package/engines/meilisearch/hostdb-releases.ts +0 -26
  693. package/engines/meilisearch/index.ts +0 -1292
  694. package/engines/meilisearch/restore.ts +0 -219
  695. package/engines/meilisearch/version-maps.ts +0 -78
  696. package/engines/meilisearch/version-validator.ts +0 -128
  697. package/engines/mongodb/README.md +0 -162
  698. package/engines/mongodb/backup.ts +0 -127
  699. package/engines/mongodb/binary-manager.ts +0 -48
  700. package/engines/mongodb/binary-urls.ts +0 -63
  701. package/engines/mongodb/cli-utils.ts +0 -171
  702. package/engines/mongodb/hostdb-releases.ts +0 -91
  703. package/engines/mongodb/index.ts +0 -1118
  704. package/engines/mongodb/restore.ts +0 -361
  705. package/engines/mongodb/version-maps.ts +0 -91
  706. package/engines/mongodb/version-validator.ts +0 -160
  707. package/engines/mysql/README.md +0 -142
  708. package/engines/mysql/backup.ts +0 -270
  709. package/engines/mysql/binary-detection.ts +0 -408
  710. package/engines/mysql/binary-manager.ts +0 -42
  711. package/engines/mysql/binary-urls.ts +0 -104
  712. package/engines/mysql/index.ts +0 -1361
  713. package/engines/mysql/restore.ts +0 -500
  714. package/engines/mysql/version-maps.ts +0 -91
  715. package/engines/mysql/version-validator.ts +0 -369
  716. package/engines/postgresql/README.md +0 -158
  717. package/engines/postgresql/backup.ts +0 -151
  718. package/engines/postgresql/binary-manager.ts +0 -114
  719. package/engines/postgresql/binary-urls.ts +0 -99
  720. package/engines/postgresql/hostdb-releases.ts +0 -26
  721. package/engines/postgresql/index.ts +0 -1143
  722. package/engines/postgresql/remote-version.ts +0 -161
  723. package/engines/postgresql/restore.ts +0 -342
  724. package/engines/postgresql/version-maps.ts +0 -83
  725. package/engines/postgresql/version-validator.ts +0 -413
  726. package/engines/qdrant/README.md +0 -222
  727. package/engines/qdrant/api-client.ts +0 -61
  728. package/engines/qdrant/backup.ts +0 -165
  729. package/engines/qdrant/binary-manager.ts +0 -43
  730. package/engines/qdrant/binary-urls.ts +0 -115
  731. package/engines/qdrant/cli-utils.ts +0 -43
  732. package/engines/qdrant/hostdb-releases.ts +0 -23
  733. package/engines/qdrant/index.ts +0 -1312
  734. package/engines/qdrant/restore.ts +0 -203
  735. package/engines/qdrant/version-maps.ts +0 -78
  736. package/engines/qdrant/version-validator.ts +0 -128
  737. package/engines/questdb/README.md +0 -334
  738. package/engines/questdb/backup.ts +0 -220
  739. package/engines/questdb/binary-manager.ts +0 -310
  740. package/engines/questdb/binary-urls.ts +0 -34
  741. package/engines/questdb/hostdb-releases.ts +0 -23
  742. package/engines/questdb/index.ts +0 -1023
  743. package/engines/questdb/restore.ts +0 -260
  744. package/engines/questdb/version-maps.ts +0 -37
  745. package/engines/questdb/version-validator.ts +0 -121
  746. package/engines/redis/README.md +0 -173
  747. package/engines/redis/backup.ts +0 -389
  748. package/engines/redis/binary-manager.ts +0 -44
  749. package/engines/redis/binary-urls.ts +0 -117
  750. package/engines/redis/cli-utils.ts +0 -42
  751. package/engines/redis/hostdb-releases.ts +0 -23
  752. package/engines/redis/index.ts +0 -1583
  753. package/engines/redis/restore.ts +0 -443
  754. package/engines/redis/version-maps.ts +0 -81
  755. package/engines/redis/version-validator.ts +0 -131
  756. package/engines/sqlite/README.md +0 -162
  757. package/engines/sqlite/binary-manager.ts +0 -52
  758. package/engines/sqlite/hostdb-releases.ts +0 -23
  759. package/engines/sqlite/index.ts +0 -641
  760. package/engines/sqlite/registry.ts +0 -198
  761. package/engines/sqlite/scanner.ts +0 -22
  762. package/engines/sqlite/version-maps.ts +0 -64
  763. package/engines/surrealdb/README.md +0 -218
  764. package/engines/surrealdb/backup.ts +0 -131
  765. package/engines/surrealdb/binary-manager.ts +0 -45
  766. package/engines/surrealdb/binary-urls.ts +0 -40
  767. package/engines/surrealdb/cli-utils.ts +0 -173
  768. package/engines/surrealdb/hostdb-releases.ts +0 -23
  769. package/engines/surrealdb/index.ts +0 -1246
  770. package/engines/surrealdb/restore.ts +0 -302
  771. package/engines/surrealdb/version-maps.ts +0 -41
  772. package/engines/tigerbeetle/README.md +0 -61
  773. package/engines/tigerbeetle/backup.ts +0 -49
  774. package/engines/tigerbeetle/binary-manager.ts +0 -95
  775. package/engines/tigerbeetle/binary-urls.ts +0 -62
  776. package/engines/tigerbeetle/hostdb-releases.ts +0 -26
  777. package/engines/tigerbeetle/index.ts +0 -746
  778. package/engines/tigerbeetle/restore.ts +0 -130
  779. package/engines/tigerbeetle/version-validator.ts +0 -126
  780. package/engines/typedb/backup.ts +0 -167
  781. package/engines/typedb/binary-manager.ts +0 -200
  782. package/engines/typedb/binary-urls.ts +0 -40
  783. package/engines/typedb/cli-utils.ts +0 -210
  784. package/engines/typedb/hostdb-releases.ts +0 -23
  785. package/engines/typedb/index.ts +0 -1275
  786. package/engines/typedb/restore.ts +0 -377
  787. package/engines/typedb/version-maps.ts +0 -48
  788. package/engines/typedb/version-validator.ts +0 -127
  789. package/engines/valkey/README.md +0 -219
  790. package/engines/valkey/backup.ts +0 -389
  791. package/engines/valkey/binary-manager.ts +0 -45
  792. package/engines/valkey/binary-urls.ts +0 -122
  793. package/engines/valkey/cli-utils.ts +0 -42
  794. package/engines/valkey/hostdb-releases.ts +0 -23
  795. package/engines/valkey/index.ts +0 -1585
  796. package/engines/valkey/restore.ts +0 -446
  797. package/engines/valkey/version-maps.ts +0 -81
  798. package/engines/valkey/version-validator.ts +0 -131
  799. package/engines/weaviate/README.md +0 -302
  800. package/engines/weaviate/api-client.ts +0 -61
  801. package/engines/weaviate/backup.ts +0 -145
  802. package/engines/weaviate/binary-manager.ts +0 -80
  803. package/engines/weaviate/binary-urls.ts +0 -115
  804. package/engines/weaviate/cli-utils.ts +0 -43
  805. package/engines/weaviate/hostdb-releases.ts +0 -23
  806. package/engines/weaviate/index.ts +0 -1139
  807. package/engines/weaviate/restore.ts +0 -235
  808. package/engines/weaviate/version-maps.ts +0 -78
  809. package/engines/weaviate/version-validator.ts +0 -128
  810. package/types/index.ts +0 -624
  811. /package/{config → dist/config}/engines.json +0 -0
@@ -0,0 +1,609 @@
1
+ import { existsSync } from 'fs';
2
+ import { mkdir, readdir, readFile, writeFile, rm, cp, unlink, rename as fsRename, } from 'fs/promises';
3
+ import { paths } from '../config/paths.js';
4
+ import { processManager } from './process-manager.js';
5
+ import { portManager } from './port-manager.js';
6
+ import { isWindows } from './platform-service.js';
7
+ import { logDebug, UnsupportedOperationError } from './error-handler.js';
8
+ import { getEngineDefaults, getSupportedEngines } from '../config/defaults.js';
9
+ import { getEngine } from '../engines/index.js';
10
+ import { sqliteRegistry } from '../engines/sqlite/registry.js';
11
+ import { duckdbRegistry } from '../engines/duckdb/registry.js';
12
+ import { Engine, isFileBasedEngine } from '../types/index.js';
13
+ export class ContainerManager {
14
+ async create(name, options) {
15
+ const { engine, version, port, database, binaryPath } = options;
16
+ // Validate container name
17
+ if (!this.isValidName(name)) {
18
+ throw new Error('Container name must be alphanumeric with hyphens/underscores only');
19
+ }
20
+ // Check if container already exists (for this engine)
21
+ if (await this.exists(name, { engine })) {
22
+ throw new Error(`Container "${name}" already exists for engine ${engine}`);
23
+ }
24
+ // Create container directory (engine-scoped)
25
+ const containerPath = paths.getContainerPath(name, { engine });
26
+ const dataPath = paths.getContainerDataPath(name, { engine });
27
+ await mkdir(containerPath, { recursive: true });
28
+ await mkdir(dataPath, { recursive: true });
29
+ // Create container config
30
+ const config = {
31
+ name,
32
+ engine,
33
+ version,
34
+ port,
35
+ database,
36
+ databases: [database],
37
+ created: new Date().toISOString(),
38
+ status: 'created',
39
+ // Store binary path for system-installed engines (MySQL, MongoDB, Redis)
40
+ // This ensures version consistency when starting the container
41
+ ...(binaryPath && { binaryPath }),
42
+ };
43
+ await this.saveConfig(name, { engine }, config);
44
+ return config;
45
+ }
46
+ // If engine is not provided, searches all engine directories.
47
+ // Automatically migrates old schemas to include databases array.
48
+ async getConfig(name, options) {
49
+ const { engine } = options || {};
50
+ if (engine) {
51
+ // SQLite uses registry instead of filesystem
52
+ if (engine === Engine.SQLite) {
53
+ return this.getSqliteConfig(name);
54
+ }
55
+ // Look in specific engine directory
56
+ const configPath = paths.getContainerConfigPath(name, { engine });
57
+ if (!existsSync(configPath)) {
58
+ return null;
59
+ }
60
+ const content = await readFile(configPath, 'utf8');
61
+ const config = JSON.parse(content);
62
+ return this.migrateConfig(config);
63
+ }
64
+ // Search SQLite registry first
65
+ const sqliteConfig = await this.getSqliteConfig(name);
66
+ if (sqliteConfig) {
67
+ return sqliteConfig;
68
+ }
69
+ // Search DuckDB registry
70
+ const duckdbConfig = await this.getDuckDBConfig(name);
71
+ if (duckdbConfig) {
72
+ return duckdbConfig;
73
+ }
74
+ // Search all engine directories (excluding file-based engines which use registries)
75
+ const engines = getSupportedEngines().filter((e) => e !== 'sqlite' && e !== 'duckdb');
76
+ for (const eng of engines) {
77
+ const configPath = paths.getContainerConfigPath(name, { engine: eng });
78
+ if (existsSync(configPath)) {
79
+ const content = await readFile(configPath, 'utf8');
80
+ const config = JSON.parse(content);
81
+ return this.migrateConfig(config);
82
+ }
83
+ }
84
+ return null;
85
+ }
86
+ async getSqliteConfig(name) {
87
+ const entry = await sqliteRegistry.get(name);
88
+ if (!entry) {
89
+ return null;
90
+ }
91
+ // Convert registry entry to ContainerConfig format
92
+ const fileExists = existsSync(entry.filePath);
93
+ return {
94
+ name: entry.name,
95
+ engine: Engine.SQLite,
96
+ version: '3',
97
+ port: 0,
98
+ database: entry.filePath, // For SQLite, database field stores file path
99
+ databases: [entry.filePath],
100
+ created: entry.created,
101
+ status: fileExists ? 'running' : 'stopped', // "running" = file exists
102
+ };
103
+ }
104
+ async getDuckDBConfig(name) {
105
+ const entry = await duckdbRegistry.get(name);
106
+ if (!entry) {
107
+ return null;
108
+ }
109
+ // Convert registry entry to ContainerConfig format
110
+ const fileExists = existsSync(entry.filePath);
111
+ return {
112
+ name: entry.name,
113
+ engine: Engine.DuckDB,
114
+ version: '1',
115
+ port: 0,
116
+ database: entry.filePath, // For DuckDB, database field stores file path
117
+ databases: [entry.filePath],
118
+ created: entry.created,
119
+ status: fileExists ? 'running' : 'stopped', // "running" = file exists
120
+ };
121
+ }
122
+ // Migrates old container configs to include databases array.
123
+ async migrateConfig(config) {
124
+ let needsSave = false;
125
+ // If databases array is missing, create it with the primary database
126
+ if (!config.databases) {
127
+ config.databases = [config.database];
128
+ needsSave = true;
129
+ }
130
+ // Ensure primary database is in the array
131
+ if (!config.databases.includes(config.database)) {
132
+ config.databases = [config.database, ...config.databases];
133
+ needsSave = true;
134
+ }
135
+ // Save if we made changes
136
+ if (needsSave) {
137
+ await this.saveConfig(config.name, { engine: config.engine }, config);
138
+ }
139
+ return config;
140
+ }
141
+ async saveConfig(name, options, config) {
142
+ const { engine } = options;
143
+ const configPath = paths.getContainerConfigPath(name, { engine });
144
+ await writeFile(configPath, JSON.stringify(config, null, 2));
145
+ }
146
+ async updateConfig(name, updates) {
147
+ const config = await this.getConfig(name);
148
+ if (!config) {
149
+ throw new Error(`Container "${name}" not found`);
150
+ }
151
+ const updatedConfig = { ...config, ...updates };
152
+ await this.saveConfig(name, { engine: config.engine }, updatedConfig);
153
+ return updatedConfig;
154
+ }
155
+ async exists(name, options) {
156
+ const { engine } = options || {};
157
+ if (engine) {
158
+ // SQLite uses registry
159
+ if (engine === Engine.SQLite) {
160
+ return sqliteRegistry.exists(name);
161
+ }
162
+ const configPath = paths.getContainerConfigPath(name, { engine });
163
+ return existsSync(configPath);
164
+ }
165
+ // Check SQLite registry first
166
+ if (await sqliteRegistry.exists(name)) {
167
+ return true;
168
+ }
169
+ // Check DuckDB registry
170
+ if (await duckdbRegistry.exists(name)) {
171
+ return true;
172
+ }
173
+ // Check all engine directories (excluding file-based engines)
174
+ const engines = getSupportedEngines().filter((e) => e !== 'sqlite' && e !== 'duckdb');
175
+ for (const eng of engines) {
176
+ const configPath = paths.getContainerConfigPath(name, { engine: eng });
177
+ if (existsSync(configPath)) {
178
+ return true;
179
+ }
180
+ }
181
+ return false;
182
+ }
183
+ async list() {
184
+ const containers = [];
185
+ // List SQLite containers from registry
186
+ const sqliteEntries = await sqliteRegistry.list();
187
+ for (const entry of sqliteEntries) {
188
+ const fileExists = existsSync(entry.filePath);
189
+ containers.push({
190
+ name: entry.name,
191
+ engine: Engine.SQLite,
192
+ version: '3',
193
+ port: 0,
194
+ database: entry.filePath,
195
+ databases: [entry.filePath],
196
+ created: entry.created,
197
+ status: fileExists ? 'running' : 'stopped', // "running" = file exists
198
+ });
199
+ }
200
+ // List DuckDB containers from registry
201
+ const duckdbEntries = await duckdbRegistry.list();
202
+ for (const entry of duckdbEntries) {
203
+ const fileExists = existsSync(entry.filePath);
204
+ containers.push({
205
+ name: entry.name,
206
+ engine: Engine.DuckDB,
207
+ version: '1',
208
+ port: 0,
209
+ database: entry.filePath,
210
+ databases: [entry.filePath],
211
+ created: entry.created,
212
+ status: fileExists ? 'running' : 'stopped', // "running" = file exists
213
+ });
214
+ }
215
+ // List server-based containers (PostgreSQL, MySQL, etc.)
216
+ const containersDir = paths.containers;
217
+ if (!existsSync(containersDir)) {
218
+ return containers;
219
+ }
220
+ const engines = getSupportedEngines().filter((e) => e !== 'sqlite' && e !== 'duckdb');
221
+ // Collect all container check promises for parallel execution
222
+ const containerChecks = [];
223
+ for (const engine of engines) {
224
+ const engineDir = paths.getEngineContainersPath(engine);
225
+ if (!existsSync(engineDir)) {
226
+ continue;
227
+ }
228
+ const entries = await readdir(engineDir, { withFileTypes: true });
229
+ for (const entry of entries) {
230
+ if (entry.isDirectory()) {
231
+ // Push async check as promise (don't await yet)
232
+ containerChecks.push((async () => {
233
+ const config = await this.getConfig(entry.name, { engine });
234
+ if (!config)
235
+ return null;
236
+ const running = await processManager.isRunning(entry.name, {
237
+ engine,
238
+ });
239
+ return { ...config, status: running ? 'running' : 'stopped' };
240
+ })());
241
+ }
242
+ }
243
+ }
244
+ // Execute all container checks in parallel
245
+ const results = await Promise.all(containerChecks);
246
+ containers.push(...results.filter((c) => c !== null));
247
+ return containers;
248
+ }
249
+ async delete(name, options = {}) {
250
+ const { force = false } = options;
251
+ // Get container config to find engine
252
+ const config = await this.getConfig(name);
253
+ if (!config) {
254
+ throw new Error(`Container "${name}" not found`);
255
+ }
256
+ const { engine } = config;
257
+ // SQLite: delete file, remove from registry, and clean up container directory
258
+ if (engine === Engine.SQLite) {
259
+ const entry = await sqliteRegistry.get(name);
260
+ if (entry && existsSync(entry.filePath)) {
261
+ await unlink(entry.filePath);
262
+ }
263
+ await sqliteRegistry.remove(name);
264
+ // Also remove the container directory (created by containerManager.create)
265
+ const containerPath = paths.getContainerPath(name, { engine });
266
+ if (existsSync(containerPath)) {
267
+ await rm(containerPath, { recursive: true, force: true });
268
+ }
269
+ return;
270
+ }
271
+ // DuckDB: delete file, remove from registry, and clean up container directory
272
+ if (engine === Engine.DuckDB) {
273
+ const entry = await duckdbRegistry.get(name);
274
+ if (entry && existsSync(entry.filePath)) {
275
+ await unlink(entry.filePath);
276
+ }
277
+ await duckdbRegistry.remove(name);
278
+ // Also remove the container directory (created by containerManager.create)
279
+ const containerPath = paths.getContainerPath(name, { engine });
280
+ if (existsSync(containerPath)) {
281
+ await rm(containerPath, { recursive: true, force: true });
282
+ }
283
+ return;
284
+ }
285
+ // Server databases: check if running first
286
+ const running = await processManager.isRunning(name, { engine });
287
+ if (running && !force) {
288
+ throw new Error(`Container "${name}" is running. Stop it first or use --force`);
289
+ }
290
+ const containerPath = paths.getContainerPath(name, { engine });
291
+ await this.safeRemoveDirectory(containerPath);
292
+ }
293
+ // Removes a directory with retry logic for Windows EBUSY errors.
294
+ // Windows may hold file handles after process termination.
295
+ // Windows can hold file locks for 120+ seconds due to:
296
+ // - Antivirus software scanning
297
+ // - Windows Search indexer
298
+ // - Memory-mapped files (SurrealDB's SurrealKV, QuestDB's columnar storage)
299
+ // - Java JVM file handle cleanup (QuestDB)
300
+ async safeRemoveDirectory(dirPath) {
301
+ const maxRetries = isWindows() ? 90 : 1; // 90 retries × 2s = 180 seconds max
302
+ const retryDelay = 2000; // 2 seconds between retries
303
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
304
+ try {
305
+ await rm(dirPath, { recursive: true, force: true });
306
+ return; // Success
307
+ }
308
+ catch (error) {
309
+ const e = error;
310
+ if (e.code === 'EBUSY' && attempt < maxRetries) {
311
+ logDebug(`EBUSY on rmdir attempt ${attempt}/${maxRetries}, retrying in ${retryDelay}ms...`);
312
+ await new Promise((resolve) => setTimeout(resolve, retryDelay));
313
+ }
314
+ else {
315
+ throw error;
316
+ }
317
+ }
318
+ }
319
+ }
320
+ async clone(sourceName, targetName) {
321
+ // Validate target name
322
+ if (!this.isValidName(targetName)) {
323
+ throw new Error('Container name must be alphanumeric with hyphens/underscores only');
324
+ }
325
+ // Get source config
326
+ const sourceConfig = await this.getConfig(sourceName);
327
+ if (!sourceConfig) {
328
+ throw new Error(`Source container "${sourceName}" not found`);
329
+ }
330
+ const { engine } = sourceConfig;
331
+ // Check target doesn't exist (for this engine)
332
+ if (await this.exists(targetName, { engine })) {
333
+ throw new Error(`Target container "${targetName}" already exists`);
334
+ }
335
+ // Check source is not running
336
+ const running = await processManager.isRunning(sourceName, { engine });
337
+ if (running) {
338
+ throw new Error(`Source container "${sourceName}" is running. Stop it first`);
339
+ }
340
+ // Copy container directory
341
+ const sourcePath = paths.getContainerPath(sourceName, { engine });
342
+ const targetPath = paths.getContainerPath(targetName, { engine });
343
+ await cp(sourcePath, targetPath, { recursive: true });
344
+ // If anything fails after copy, clean up the target directory
345
+ try {
346
+ // Update target config
347
+ const config = await this.getConfig(targetName, { engine });
348
+ if (!config) {
349
+ throw new Error('Failed to read cloned container config');
350
+ }
351
+ config.name = targetName;
352
+ config.created = new Date().toISOString();
353
+ config.clonedFrom = sourceName;
354
+ // Assign new port (excluding ports already used by other containers)
355
+ const engineDefaults = getEngineDefaults(engine);
356
+ const { port } = await portManager.findAvailablePortExcludingContainers({
357
+ portRange: engineDefaults.portRange,
358
+ });
359
+ config.port = port;
360
+ await this.saveConfig(targetName, { engine }, config);
361
+ // ClickHouse stores absolute paths in config.xml - regenerate with new paths
362
+ if (engine === Engine.ClickHouse) {
363
+ const clickhouseEngine = getEngine(Engine.ClickHouse);
364
+ if ('regenerateConfig' in clickhouseEngine) {
365
+ await clickhouseEngine.regenerateConfig(targetName, config.port);
366
+ }
367
+ }
368
+ return config;
369
+ }
370
+ catch (error) {
371
+ // Clean up the copied directory on failure
372
+ await rm(targetPath, { recursive: true, force: true }).catch(() => {
373
+ // Ignore cleanup errors
374
+ });
375
+ throw error;
376
+ }
377
+ }
378
+ async rename(oldName, newName) {
379
+ // Validate new name
380
+ if (!this.isValidName(newName)) {
381
+ throw new Error('Container name must be alphanumeric with hyphens/underscores only');
382
+ }
383
+ // Get source config
384
+ const sourceConfig = await this.getConfig(oldName);
385
+ if (!sourceConfig) {
386
+ throw new Error(`Container "${oldName}" not found`);
387
+ }
388
+ const { engine } = sourceConfig;
389
+ // Check target doesn't exist
390
+ if (await this.exists(newName, { engine })) {
391
+ throw new Error(`Container "${newName}" already exists`);
392
+ }
393
+ // SQLite: rename in registry and handle container directory
394
+ if (engine === Engine.SQLite) {
395
+ const entry = await sqliteRegistry.get(oldName);
396
+ if (!entry) {
397
+ throw new Error(`SQLite container "${oldName}" not found in registry`);
398
+ }
399
+ // Move container directory first (if it exists) - do filesystem ops before registry
400
+ // This way if the move fails, registry is unchanged
401
+ const oldContainerPath = paths.getContainerPath(oldName, { engine });
402
+ const newContainerPath = paths.getContainerPath(newName, { engine });
403
+ if (existsSync(oldContainerPath)) {
404
+ await this.atomicMoveDirectory(oldContainerPath, newContainerPath);
405
+ }
406
+ // Now update registry - remove old entry and add new one with updated name
407
+ await sqliteRegistry.remove(oldName);
408
+ await sqliteRegistry.add({
409
+ name: newName,
410
+ filePath: entry.filePath,
411
+ created: entry.created,
412
+ lastVerified: entry.lastVerified,
413
+ });
414
+ // Return updated config
415
+ return {
416
+ ...sourceConfig,
417
+ name: newName,
418
+ };
419
+ }
420
+ // DuckDB: rename in registry and handle container directory
421
+ if (engine === Engine.DuckDB) {
422
+ const entry = await duckdbRegistry.get(oldName);
423
+ if (!entry) {
424
+ throw new Error(`DuckDB container "${oldName}" not found in registry`);
425
+ }
426
+ // Move container directory first (if it exists) - do filesystem ops before registry
427
+ // This way if the move fails, registry is unchanged
428
+ const oldContainerPath = paths.getContainerPath(oldName, { engine });
429
+ const newContainerPath = paths.getContainerPath(newName, { engine });
430
+ if (existsSync(oldContainerPath)) {
431
+ await this.atomicMoveDirectory(oldContainerPath, newContainerPath);
432
+ }
433
+ // Now update registry - remove old entry and add new one with updated name
434
+ await duckdbRegistry.remove(oldName);
435
+ await duckdbRegistry.add({
436
+ name: newName,
437
+ filePath: entry.filePath,
438
+ created: entry.created,
439
+ lastVerified: entry.lastVerified,
440
+ });
441
+ // Return updated config
442
+ return {
443
+ ...sourceConfig,
444
+ name: newName,
445
+ };
446
+ }
447
+ // Server databases: check container is not running
448
+ const running = await processManager.isRunning(oldName, { engine });
449
+ if (running) {
450
+ throw new Error(`Container "${oldName}" is running. Stop it first`);
451
+ }
452
+ // Rename directory
453
+ const oldPath = paths.getContainerPath(oldName, { engine });
454
+ const newPath = paths.getContainerPath(newName, { engine });
455
+ await this.atomicMoveDirectory(oldPath, newPath);
456
+ // Update config with new name
457
+ const config = await this.getConfig(newName, { engine });
458
+ if (!config) {
459
+ throw new Error('Failed to read renamed container config');
460
+ }
461
+ config.name = newName;
462
+ await this.saveConfig(newName, { engine }, config);
463
+ // ClickHouse stores absolute paths in config.xml - regenerate with new paths
464
+ if (engine === Engine.ClickHouse) {
465
+ const clickhouseEngine = getEngine(Engine.ClickHouse);
466
+ if ('regenerateConfig' in clickhouseEngine) {
467
+ await clickhouseEngine.regenerateConfig(newName, config.port);
468
+ }
469
+ }
470
+ return config;
471
+ }
472
+ // Moves a directory atomically when possible (same filesystem).
473
+ // Falls back to copy+delete for cross-filesystem moves.
474
+ // On Windows, retries on EBUSY errors (file handles held after process termination).
475
+ // Windows can hold file locks for 120+ seconds due to:
476
+ // - Antivirus software scanning
477
+ // - Windows Search indexer
478
+ // - Memory-mapped files (SurrealDB's SurrealKV, QuestDB's columnar storage)
479
+ // - Java JVM file handle cleanup (QuestDB)
480
+ async atomicMoveDirectory(sourcePath, targetPath) {
481
+ const maxRetries = isWindows() ? 90 : 1; // 90 retries × 2s = 180 seconds max
482
+ const retryDelay = 2000; // 2 seconds between retries
483
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
484
+ try {
485
+ // Try atomic rename first (only works on same filesystem)
486
+ await fsRename(sourcePath, targetPath);
487
+ return; // Success
488
+ }
489
+ catch (error) {
490
+ const e = error;
491
+ if (e.code === 'EXDEV') {
492
+ // Cross-filesystem move - fall back to copy+delete
493
+ await cp(sourcePath, targetPath, { recursive: true });
494
+ try {
495
+ await rm(sourcePath, { recursive: true, force: true });
496
+ }
497
+ catch {
498
+ // If delete fails after copy, we have duplicates
499
+ // Try to clean up the target to avoid inconsistency
500
+ await rm(targetPath, { recursive: true, force: true }).catch(() => { });
501
+ throw new Error(`Failed to complete move: source and target may both exist. ` +
502
+ `Please manually remove one of: ${sourcePath} or ${targetPath}`);
503
+ }
504
+ return; // Success
505
+ }
506
+ else if (e.code === 'EBUSY' && attempt < maxRetries) {
507
+ // Windows: file handles may still be held - retry after delay
508
+ logDebug(`EBUSY on rename attempt ${attempt}/${maxRetries}, retrying in ${retryDelay}ms...`);
509
+ await new Promise((resolve) => setTimeout(resolve, retryDelay));
510
+ }
511
+ else {
512
+ throw error;
513
+ }
514
+ }
515
+ }
516
+ }
517
+ isValidName(name) {
518
+ return /^[a-zA-Z][a-zA-Z0-9_-]*$/.test(name);
519
+ }
520
+ async addDatabase(containerName, database) {
521
+ const config = await this.getConfig(containerName);
522
+ if (!config) {
523
+ throw new Error(`Container "${containerName}" not found`);
524
+ }
525
+ // Ensure databases array exists
526
+ if (!config.databases) {
527
+ config.databases = [config.database];
528
+ }
529
+ // Add if not already present
530
+ if (!config.databases.includes(database)) {
531
+ config.databases.push(database);
532
+ await this.saveConfig(containerName, { engine: config.engine }, config);
533
+ }
534
+ }
535
+ async removeDatabase(containerName, database) {
536
+ const config = await this.getConfig(containerName);
537
+ if (!config) {
538
+ throw new Error(`Container "${containerName}" not found`);
539
+ }
540
+ // Don't remove the primary database from the array
541
+ if (database === config.database) {
542
+ throw new Error(`Cannot remove primary database "${database}" from tracking`);
543
+ }
544
+ if (config.databases) {
545
+ config.databases = config.databases.filter((db) => db !== database);
546
+ await this.saveConfig(containerName, { engine: config.engine }, config);
547
+ }
548
+ }
549
+ /**
550
+ * Sync the databases array with the actual databases on the server.
551
+ * Queries the database server for all user databases and updates the registry.
552
+ *
553
+ * @param containerName - The container to sync
554
+ * @returns The updated list of databases
555
+ * @throws Error if the container is not running or doesn't support listing databases
556
+ */
557
+ async syncDatabases(containerName) {
558
+ const config = await this.getConfig(containerName);
559
+ if (!config) {
560
+ throw new Error(`Container "${containerName}" not found`);
561
+ }
562
+ // File-based engines don't have multiple databases to sync
563
+ if (isFileBasedEngine(config.engine)) {
564
+ return config.databases || [config.database];
565
+ }
566
+ // Container must be running to query databases
567
+ const running = await processManager.isRunning(containerName, {
568
+ engine: config.engine,
569
+ });
570
+ if (!running) {
571
+ throw new Error(`Container "${containerName}" is not running. Start it first to sync databases.`);
572
+ }
573
+ const engine = getEngine(config.engine);
574
+ // Query the actual database server for all databases
575
+ let actualDatabases;
576
+ try {
577
+ actualDatabases = await engine.listDatabases(config);
578
+ }
579
+ catch (error) {
580
+ // If the engine doesn't support listDatabases, return current registry
581
+ if (error instanceof UnsupportedOperationError) {
582
+ logDebug(`listDatabases not supported for ${config.engine}, skipping sync`);
583
+ return config.databases || [config.database];
584
+ }
585
+ throw error;
586
+ }
587
+ // Ensure primary database is always included
588
+ if (!actualDatabases.includes(config.database)) {
589
+ actualDatabases = [config.database, ...actualDatabases];
590
+ }
591
+ // Sort for consistent ordering (primary database first, then alphabetical)
592
+ const sortedDatabases = [
593
+ config.database,
594
+ ...actualDatabases
595
+ .filter((db) => db !== config.database)
596
+ .sort((a, b) => a.localeCompare(b)),
597
+ ];
598
+ // Update the registry
599
+ config.databases = sortedDatabases;
600
+ await this.saveConfig(containerName, { engine: config.engine }, config);
601
+ return sortedDatabases;
602
+ }
603
+ getConnectionString(config, database) {
604
+ const engine = getEngine(config.engine);
605
+ return engine.getConnectionString(config, database);
606
+ }
607
+ }
608
+ export const containerManager = new ContainerManager();
609
+ //# sourceMappingURL=container-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-manager.js","sourceRoot":"","sources":["../../core/container-manager.ts"],"names":[],"mappings":"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"}