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
@@ -1,355 +0,0 @@
1
- import chalk from 'chalk'
2
- import inquirer from 'inquirer'
3
- import { rm, readdir } from 'fs/promises'
4
- import { join, dirname, basename } from 'path'
5
- import { containerManager } from '../../../core/container-manager'
6
- import { createSpinner } from '../../ui/spinner'
7
- import { header, uiError, uiWarning, uiInfo, formatBytes } from '../../ui/theme'
8
- import {
9
- promptConfirm,
10
- escapeablePrompt,
11
- filterableListPrompt,
12
- type FilterableChoice,
13
- } from '../../ui/prompts'
14
- import { getEngineIcon, getPageSize } from '../../constants'
15
- import {
16
- getInstalledEngines,
17
- type InstalledPostgresEngine,
18
- type InstalledMariadbEngine,
19
- type InstalledMysqlEngine,
20
- type InstalledSqliteEngine,
21
- type InstalledDuckDBEngine,
22
- type InstalledMongodbEngine,
23
- type InstalledFerretDBEngine,
24
- type InstalledRedisEngine,
25
- type InstalledValkeyEngine,
26
- type InstalledClickHouseEngine,
27
- type InstalledQdrantEngine,
28
- type InstalledMeilisearchEngine,
29
- type InstalledCouchDBEngine,
30
- type InstalledCockroachDBEngine,
31
- type InstalledSurrealDBEngine,
32
- type InstalledQuestDBEngine,
33
- type InstalledTypeDBEngine,
34
- type InstalledInfluxDBEngine,
35
- } from '../../helpers'
36
-
37
- import { isV1 } from '../../../engines/ferretdb/version-maps'
38
- import { type MenuChoice } from './shared'
39
-
40
- export async function handleEngines(): Promise<void> {
41
- console.clear()
42
- console.log(header('Installed Engines'))
43
- console.log()
44
-
45
- const spinner = createSpinner('Loading installed engines...')
46
- spinner.start()
47
- const engines = await getInstalledEngines()
48
- spinner.stop()
49
-
50
- if (engines.length === 0) {
51
- console.log(uiInfo('No engines installed yet.'))
52
- console.log(
53
- chalk.gray(
54
- ' Database engines are downloaded automatically when you create a container.',
55
- ),
56
- )
57
- console.log(
58
- chalk.gray(' Or use: spindb engines download <engine> <version>'),
59
- )
60
- return
61
- }
62
-
63
- // Group engines by type and sort
64
- const allEnginesSorted = [
65
- ...engines.filter(
66
- (e): e is InstalledPostgresEngine => e.engine === 'postgresql',
67
- ),
68
- ...engines.filter(
69
- (e): e is InstalledMariadbEngine => e.engine === 'mariadb',
70
- ),
71
- ...engines.filter((e): e is InstalledMysqlEngine => e.engine === 'mysql'),
72
- ...engines.filter((e): e is InstalledSqliteEngine => e.engine === 'sqlite'),
73
- ...engines.filter((e): e is InstalledDuckDBEngine => e.engine === 'duckdb'),
74
- ...engines.filter(
75
- (e): e is InstalledMongodbEngine => e.engine === 'mongodb',
76
- ),
77
- ...engines.filter(
78
- (e): e is InstalledFerretDBEngine => e.engine === 'ferretdb',
79
- ),
80
- ...engines.filter((e): e is InstalledRedisEngine => e.engine === 'redis'),
81
- ...engines.filter((e): e is InstalledValkeyEngine => e.engine === 'valkey'),
82
- ...engines.filter(
83
- (e): e is InstalledClickHouseEngine => e.engine === 'clickhouse',
84
- ),
85
- ...engines.filter((e): e is InstalledQdrantEngine => e.engine === 'qdrant'),
86
- ...engines.filter(
87
- (e): e is InstalledMeilisearchEngine => e.engine === 'meilisearch',
88
- ),
89
- ...engines.filter(
90
- (e): e is InstalledCouchDBEngine => e.engine === 'couchdb',
91
- ),
92
- ...engines.filter(
93
- (e): e is InstalledCockroachDBEngine => e.engine === 'cockroachdb',
94
- ),
95
- ...engines.filter(
96
- (e): e is InstalledSurrealDBEngine => e.engine === 'surrealdb',
97
- ),
98
- ...engines.filter(
99
- (e): e is InstalledQuestDBEngine => e.engine === 'questdb',
100
- ),
101
- ...engines.filter((e): e is InstalledTypeDBEngine => e.engine === 'typedb'),
102
- ...engines.filter(
103
- (e): e is InstalledInfluxDBEngine => e.engine === 'influxdb',
104
- ),
105
- ]
106
-
107
- // Calculate total size
108
- const totalSize = allEnginesSorted.reduce((acc, e) => acc + e.sizeBytes, 0)
109
-
110
- // Column widths for formatting
111
- // Engine name column: longest name "meilisearch" (11) + padding (2) = 13
112
- const COL_ENGINE_NAME = 13
113
- const COL_VERSION = 12
114
- const COL_PLATFORM = 14
115
- const COL_SIZE = 10
116
-
117
- // Build selectable choices with formatted display
118
- const engineChoices: FilterableChoice[] = allEnginesSorted.map((e) => {
119
- const icon = getEngineIcon(e.engine)
120
- const engineName = e.engine.padEnd(COL_ENGINE_NAME)
121
- const engineDisplay = `${icon}${engineName}`
122
- const versionDisplay = e.version.padEnd(COL_VERSION)
123
- const platformDisplay = `${e.platform}-${e.arch}`.padEnd(COL_PLATFORM)
124
- const sizeDisplay = formatBytes(e.sizeBytes).padStart(COL_SIZE)
125
-
126
- return {
127
- name:
128
- chalk.cyan(engineDisplay) +
129
- chalk.yellow(versionDisplay) +
130
- chalk.gray(platformDisplay) +
131
- chalk.white(sizeDisplay),
132
- value: `select:${e.path}:${e.engine}:${e.version}:${e.sizeBytes}`,
133
- short: `${e.engine} ${e.version}`,
134
- }
135
- })
136
-
137
- // Build full choice list with footer
138
- const allChoices: (FilterableChoice | inquirer.Separator)[] = [
139
- ...engineChoices,
140
- new inquirer.Separator(),
141
- new inquirer.Separator(
142
- `Total: ${engines.length} engine(s), ${formatBytes(totalSize)} ${chalk.gray('— type to filter')}`,
143
- ),
144
- new inquirer.Separator(),
145
- {
146
- name: `${chalk.blue('←')} Back to main menu ${chalk.gray('(esc)')}`,
147
- value: 'back',
148
- },
149
- new inquirer.Separator(),
150
- ]
151
-
152
- const action = await filterableListPrompt(allChoices, 'Select an engine:', {
153
- filterableCount: engineChoices.length,
154
- pageSize: getPageSize(),
155
- emptyText: 'No engines match filter',
156
- })
157
-
158
- // Back returns to main menu (escape is handled globally)
159
- if (action === 'back') {
160
- return
161
- }
162
-
163
- if (action.startsWith('select:')) {
164
- // Parse from the end using lastIndexOf to correctly handle colons in Windows
165
- // paths (e.g., C:\Users\...). Format: select:path:engineName:engineVersion:sizeBytes
166
- // We extract sizeBytes first, then version, then name, leaving path with any colons intact.
167
- const withoutPrefix = action.slice('select:'.length)
168
- const lastColon = withoutPrefix.lastIndexOf(':')
169
- const sizeBytes = parseInt(withoutPrefix.slice(lastColon + 1), 10)
170
- const rest = withoutPrefix.slice(0, lastColon)
171
- const secondLastColon = rest.lastIndexOf(':')
172
- const engineVersion = rest.slice(secondLastColon + 1)
173
- const rest2 = rest.slice(0, secondLastColon)
174
- const thirdLastColon = rest2.lastIndexOf(':')
175
- const engineName = rest2.slice(thirdLastColon + 1)
176
- const enginePath = rest2.slice(0, thirdLastColon)
177
-
178
- const result = await showEngineSubmenu(
179
- enginePath,
180
- engineName,
181
- engineVersion,
182
- sizeBytes,
183
- )
184
- if (result === 'main') {
185
- return
186
- }
187
- await handleEngines()
188
- }
189
- }
190
-
191
- async function showEngineSubmenu(
192
- enginePath: string,
193
- engineName: string,
194
- engineVersion: string,
195
- sizeBytes: number,
196
- ): Promise<'back' | 'main' | void> {
197
- console.log()
198
- console.log(
199
- chalk.cyan(
200
- ` ${getEngineIcon(engineName)}${engineName} ${engineVersion} ${chalk.gray(`(${formatBytes(sizeBytes)})`)}`,
201
- ),
202
- )
203
- console.log()
204
-
205
- const choices: MenuChoice[] = [
206
- {
207
- name: `${chalk.red('✕')} Delete`,
208
- value: 'delete',
209
- },
210
- new inquirer.Separator(),
211
- { name: `${chalk.blue('←')} Back`, value: 'back' },
212
- {
213
- name: `${chalk.blue('⌂')} Back to main menu ${chalk.gray('(esc)')}`,
214
- value: 'main',
215
- },
216
- ]
217
-
218
- const { action } = await escapeablePrompt<{ action: string }>([
219
- {
220
- type: 'list',
221
- name: 'action',
222
- message: 'What would you like to do?',
223
- choices,
224
- },
225
- ])
226
-
227
- if (action === 'back') {
228
- return 'back'
229
- }
230
-
231
- if (action === 'main') {
232
- return 'main'
233
- }
234
-
235
- if (action === 'delete') {
236
- await handleDeleteEngine(enginePath, engineName, engineVersion)
237
- }
238
- }
239
-
240
- async function handleDeleteEngine(
241
- enginePath: string,
242
- engineName: string,
243
- engineVersion: string,
244
- ): Promise<void> {
245
- const containers = await containerManager.list()
246
- const usingContainers = containers.filter(
247
- (c) => c.engine === engineName && c.version === engineVersion,
248
- )
249
-
250
- if (usingContainers.length > 0) {
251
- console.log()
252
- console.log(
253
- uiError(
254
- `Cannot delete: ${usingContainers.length} container(s) are using ${engineName} ${engineVersion}`,
255
- ),
256
- )
257
- console.log(
258
- chalk.gray(
259
- ` Containers: ${usingContainers.map((c) => c.name).join(', ')}`,
260
- ),
261
- )
262
- console.log()
263
- await escapeablePrompt([
264
- {
265
- type: 'input',
266
- name: 'continue',
267
- message: chalk.gray('Press Enter to continue...'),
268
- },
269
- ])
270
- return
271
- }
272
-
273
- const confirmed = await promptConfirm(
274
- `Delete ${engineName} ${engineVersion}? This cannot be undone.`,
275
- false,
276
- )
277
-
278
- if (!confirmed) {
279
- console.log(uiWarning('Deletion cancelled'))
280
- return
281
- }
282
-
283
- const spinner = createSpinner(`Deleting ${engineName} ${engineVersion}...`)
284
- spinner.start()
285
-
286
- try {
287
- await rm(enginePath, { recursive: true, force: true })
288
-
289
- // FerretDB is a composite engine - handle backend cleanup based on version
290
- let backendStatus = ''
291
- if (engineName === 'ferretdb') {
292
- // enginePath is like: ~/.spindb/bin/ferretdb-2.7.0-darwin-arm64
293
- const binDir = dirname(enginePath)
294
- const ferretDirName = basename(enginePath)
295
- // Extract version from directory name (e.g., "2.7.0" from "ferretdb-2.7.0-darwin-arm64")
296
- const parts = ferretDirName.split('-')
297
- const platformArch = parts.slice(-2).join('-') // "darwin-arm64"
298
-
299
- // Extract version: remove "ferretdb-" prefix and "-platform-arch" suffix
300
- const versionPart = ferretDirName.slice(
301
- 'ferretdb-'.length,
302
- ferretDirName.length - `-${platformArch}`.length,
303
- )
304
-
305
- if (isV1(versionPart)) {
306
- // v1: Don't delete shared PostgreSQL binaries (used by standalone PG containers)
307
- backendStatus =
308
- ' (PostgreSQL backend kept — shared with standalone containers)'
309
- } else {
310
- // v2: Clean up postgresql-documentdb backend if no other v2 FerretDB installs share it
311
- const entries = await readdir(binDir, { withFileTypes: true })
312
-
313
- // Check if other v2 FerretDB installations exist for the same platform
314
- const otherV2Installs = entries.filter((entry) => {
315
- if (!entry.isDirectory()) return false
316
- if (!entry.name.startsWith('ferretdb-')) return false
317
- if (!entry.name.endsWith(platformArch)) return false
318
- if (entry.name === ferretDirName) return false
319
- const otherVersion = entry.name.slice(
320
- 'ferretdb-'.length,
321
- entry.name.length - `-${platformArch}`.length,
322
- )
323
- return !isV1(otherVersion)
324
- })
325
-
326
- if (otherV2Installs.length > 0) {
327
- backendStatus = ` (postgresql-documentdb kept — shared by ${otherV2Installs.length} other v2 install(s))`
328
- } else {
329
- const documentdbPattern = `postgresql-documentdb-`
330
- let cleaned = false
331
- for (const entry of entries) {
332
- if (
333
- entry.isDirectory() &&
334
- entry.name.startsWith(documentdbPattern) &&
335
- entry.name.endsWith(platformArch)
336
- ) {
337
- const documentdbPath = join(binDir, entry.name)
338
- spinner.text = `Deleting postgresql-documentdb backend...`
339
- await rm(documentdbPath, { recursive: true, force: true })
340
- cleaned = true
341
- }
342
- }
343
- if (cleaned) {
344
- backendStatus = ' (postgresql-documentdb backend also deleted)'
345
- }
346
- }
347
- }
348
- }
349
-
350
- spinner.succeed(`Deleted ${engineName} ${engineVersion}${backendStatus}`)
351
- } catch (error) {
352
- const e = error as Error
353
- spinner.fail(`Failed to delete: ${e.message}`)
354
- }
355
- }
@@ -1,342 +0,0 @@
1
- import { Command } from 'commander'
2
- import chalk from 'chalk'
3
- import inquirer from 'inquirer'
4
- import { containerManager } from '../../../core/container-manager'
5
- import {
6
- updateManager,
7
- type UpdateCheckResult,
8
- } from '../../../core/update-manager'
9
- import {
10
- promptInstallDependencies,
11
- enableGlobalEscape,
12
- checkAndResetEscape,
13
- escapeablePrompt,
14
- EscapeError,
15
- } from '../../ui/prompts'
16
- import { header, uiError, uiSuccess, uiWarning } from '../../ui/theme'
17
- import { MissingToolError } from '../../../core/error-handler'
18
- import {
19
- handleCreate,
20
- handleList,
21
- showContainerSubmenu,
22
- } from './container-handlers'
23
- import { handleSettings } from './settings-handlers'
24
- import { configManager } from '../../../core/config-manager'
25
- import { createSpinner } from '../../ui/spinner'
26
- import { type MenuChoice, pressEnterToContinue } from './shared'
27
- import { getPageSize, getEngineIcon } from '../../constants'
28
- import { getContainerPorts } from '../ports'
29
-
30
- // Track update check state for this session (only check once on first menu load)
31
- let updateCheckPromise: Promise<UpdateCheckResult | null> | null = null
32
- let cachedUpdateResult: UpdateCheckResult | null = null
33
-
34
- async function showMainMenu(): Promise<void> {
35
- console.clear()
36
- console.log(header('SpinDB - Local Database Manager'))
37
- console.log()
38
-
39
- // Parallelize container list and config loading for faster startup
40
- const [containers, config] = await Promise.all([
41
- containerManager.list(),
42
- configManager.getConfig(),
43
- ])
44
-
45
- // Check for updates on first menu load only (if auto-check is enabled)
46
- // The check runs in background and updates cachedUpdateResult when complete
47
- const autoCheckEnabled = config.update?.autoCheckEnabled !== false
48
- if (autoCheckEnabled && !updateCheckPromise) {
49
- // Start update check in background - it will populate cachedUpdateResult when done
50
- updateCheckPromise = updateManager
51
- .checkForUpdate()
52
- .then((result) => {
53
- cachedUpdateResult = result
54
- return result
55
- })
56
- .catch(() => null)
57
- }
58
-
59
- // Check if icon mode preference is set
60
- const iconModeSet = config.preferences?.iconMode !== undefined
61
-
62
- const running = containers.filter((c) => c.status === 'running').length
63
- const stopped = containers.filter((c) => c.status !== 'running').length
64
-
65
- console.log(
66
- chalk.gray(
67
- ` ${containers.length} container(s): ${running} running, ${stopped} stopped`,
68
- ),
69
- )
70
- console.log()
71
-
72
- // If containers exist, show Containers first; otherwise show Create first
73
- const hasContainers = containers.length > 0
74
-
75
- const choices: MenuChoice[] = [
76
- ...(hasContainers
77
- ? [
78
- { name: `${chalk.cyan('◉')} Containers`, value: 'list' },
79
- { name: `${chalk.green('+')} Create container`, value: 'create' },
80
- { name: `${chalk.magenta('⊞')} Ports`, value: 'ports' },
81
- ]
82
- : [
83
- { name: `${chalk.green('+')} Create container`, value: 'create' },
84
- { name: `${chalk.cyan('◉')} Containers`, value: 'list' },
85
- ]),
86
- new inquirer.Separator(),
87
- { name: `${chalk.yellow('⚙')} Settings`, value: 'settings' },
88
- // Show update option if a new version is available (only when auto-check enabled)
89
- ...(cachedUpdateResult?.updateAvailable
90
- ? [
91
- {
92
- name: `${chalk.green('↑')} Update to v${cachedUpdateResult.latestVersion}`,
93
- value: 'update',
94
- },
95
- ]
96
- : []),
97
- { name: `${chalk.gray('⎋')} Exit`, value: 'exit' },
98
- new inquirer.Separator(),
99
- ]
100
-
101
- // Show persistent hint below the menu if icon mode is not set (or if PERSISTENT_HINT env var is set)
102
- const showHint = process.env.PERSISTENT_HINT === 'true' || !iconModeSet
103
- const hintText =
104
- process.env.PERSISTENT_HINT_TEXT || 'Tip: Set icon style in Settings'
105
-
106
- // Use BottomBar to show hint below the prompt (including below scroll indicator)
107
- const bottomBar = showHint ? new inquirer.ui.BottomBar() : null
108
- if (bottomBar) {
109
- bottomBar.updateBottomBar(chalk.gray(` ${hintText}\n`))
110
- }
111
-
112
- let action: string
113
- try {
114
- const result = await escapeablePrompt<{ action: string }>([
115
- {
116
- type: 'list',
117
- name: 'action',
118
- message: 'What would you like to do?',
119
- choices,
120
- pageSize: getPageSize(),
121
- },
122
- ])
123
- action = result.action
124
- } finally {
125
- // Clean up the bottom bar
126
- if (bottomBar) {
127
- bottomBar.updateBottomBar('')
128
- }
129
- }
130
-
131
- switch (action) {
132
- case 'create': {
133
- const result = await handleCreate()
134
- // If a container name is returned, navigate to its submenu
135
- if (result && result !== 'main') {
136
- await showContainerSubmenu(result, showMainMenu)
137
- }
138
- break
139
- }
140
- case 'list':
141
- await handleList(showMainMenu)
142
- break
143
- case 'ports':
144
- await handlePorts()
145
- break
146
- case 'settings':
147
- await handleSettings()
148
- break
149
- case 'update':
150
- await handleUpdate()
151
- break
152
- case 'exit':
153
- console.log(chalk.gray('\n Goodbye!\n'))
154
- process.exit(0)
155
- }
156
- }
157
-
158
- async function handlePorts(): Promise<void> {
159
- console.clear()
160
- console.log(header('Ports'))
161
- console.log()
162
-
163
- const containers = await containerManager.list()
164
-
165
- if (containers.length === 0) {
166
- console.log(chalk.gray(' No containers found.'))
167
- console.log()
168
- await pressEnterToContinue()
169
- return
170
- }
171
-
172
- const results = await Promise.all(
173
- containers.map(async (config) => {
174
- const { status, ports } = await getContainerPorts(config)
175
- return { config, status, ports }
176
- }),
177
- )
178
-
179
- // Only show containers that have ports (skip file-based DBs)
180
- const withPorts = results.filter((r) => r.ports.length > 0)
181
-
182
- if (withPorts.length === 0) {
183
- console.log(chalk.gray(' No port-based containers found.'))
184
- console.log()
185
- await pressEnterToContinue()
186
- return
187
- }
188
-
189
- console.log(
190
- chalk.gray(' ') +
191
- chalk.bold.white('NAME'.padEnd(22)) +
192
- chalk.bold.white('ENGINE'.padEnd(18)) +
193
- chalk.bold.white('PORT(S)'),
194
- )
195
- console.log(chalk.gray(' ' + '─'.repeat(66)))
196
-
197
- for (const { config, status, ports } of withPorts) {
198
- const engineIcon = getEngineIcon(config.engine)
199
- const engineName = config.engine.padEnd(13)
200
-
201
- const parts = ports.map((p, i) =>
202
- i === 0 ? String(p.port) : `${p.port} ${chalk.gray(`(${p.label})`)}`,
203
- )
204
- const portDisplay = parts.join(chalk.gray(', '))
205
-
206
- const statusIndicator =
207
- status === 'running' ? chalk.green('●') : chalk.gray('○')
208
-
209
- console.log(
210
- chalk.gray(' ') +
211
- statusIndicator +
212
- ' ' +
213
- chalk.cyan(config.name.padEnd(20)) +
214
- engineIcon +
215
- chalk.white(engineName) +
216
- portDisplay,
217
- )
218
- }
219
-
220
- console.log()
221
- await pressEnterToContinue()
222
- }
223
-
224
- async function handleUpdate(): Promise<void> {
225
- console.clear()
226
- console.log(header('Update SpinDB'))
227
- console.log()
228
-
229
- if (!cachedUpdateResult) {
230
- console.log(uiError('No update information available'))
231
- await pressEnterToContinue()
232
- return
233
- }
234
-
235
- console.log(
236
- chalk.gray(` Current version: ${cachedUpdateResult.currentVersion}`),
237
- )
238
- console.log(
239
- chalk.gray(
240
- ` Latest version: ${chalk.green(cachedUpdateResult.latestVersion)}`,
241
- ),
242
- )
243
- console.log()
244
-
245
- const spinner = createSpinner('Updating spindb...')
246
- spinner.start()
247
-
248
- const result = await updateManager.performUpdate()
249
-
250
- if (result.success) {
251
- spinner.succeed('Update complete')
252
- console.log()
253
- console.log(
254
- uiSuccess(
255
- `Updated from ${result.previousVersion} to ${result.newVersion}`,
256
- ),
257
- )
258
- console.log()
259
- if (result.previousVersion !== result.newVersion) {
260
- console.log(uiWarning('Please restart spindb to use the new version.'))
261
- console.log()
262
- }
263
- // Clear cached result so the update option disappears
264
- cachedUpdateResult = null
265
- updateCheckPromise = null
266
- } else {
267
- spinner.fail('Update failed')
268
- console.log()
269
- console.log(uiError(result.error || 'Unknown error'))
270
- console.log()
271
- const pm = await updateManager.detectPackageManager()
272
- console.log(
273
- chalk.gray(` Manual update: ${updateManager.getInstallCommand(pm)}`),
274
- )
275
- }
276
-
277
- await pressEnterToContinue()
278
- }
279
-
280
- export const menuCommand = new Command('menu')
281
- .description('Interactive menu for managing containers')
282
- .action(async () => {
283
- // Enable global escape key handling - pressing escape anywhere returns to main menu
284
- // This also handles ctrl+c for graceful exit with goodbye message
285
- enableGlobalEscape()
286
-
287
- // Run menu in a loop so escape can restart it
288
- while (true) {
289
- try {
290
- await showMainMenu()
291
- } catch (error) {
292
- const e = error as Error
293
-
294
- // If escape was pressed, just restart the menu
295
- if (
296
- error instanceof EscapeError ||
297
- checkAndResetEscape() ||
298
- e.message?.includes('prompt was closed')
299
- ) {
300
- continue
301
- }
302
-
303
- // Check if this is a missing tool error (prefer typed error, fallback to string matching)
304
- let missingTool: string | null = null
305
-
306
- if (error instanceof MissingToolError) {
307
- missingTool = error.tool
308
- } else if (e.message) {
309
- // Fallback for older callers that may throw plain Error with message
310
- // Use regex to extract tool name from "<tool> not found" pattern
311
- const toolMatch = e.message.match(/(\w+(?:-\w+)*)\s+not found/i)
312
- if (toolMatch) {
313
- missingTool = toolMatch[1]
314
- }
315
- }
316
-
317
- if (missingTool) {
318
- try {
319
- const installed = await promptInstallDependencies(missingTool)
320
- if (installed) {
321
- // Installation succeeded, continue the menu loop so user can retry
322
- continue
323
- }
324
- // Installation failed or was declined
325
- process.exit(1)
326
- } catch (installError) {
327
- // User pressed Escape during install prompt - treat as declined
328
- if (
329
- installError instanceof EscapeError ||
330
- (installError as Error).message?.includes('prompt was closed')
331
- ) {
332
- continue
333
- }
334
- throw installError
335
- }
336
- }
337
-
338
- console.error(uiError(e.message))
339
- process.exit(1)
340
- }
341
- }
342
- })