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
package/cli/helpers.ts DELETED
@@ -1,1593 +0,0 @@
1
- import { existsSync } from 'fs'
2
- import { readdir, lstat } from 'fs/promises'
3
- import { join } from 'path'
4
- import { execFile } from 'child_process'
5
- import { promisify } from 'util'
6
- import { paths } from '../config/paths'
7
- import { platformService } from '../core/platform-service'
8
- import { type Engine } from '../types'
9
- import { getEngineConfig } from '../config/engines-registry'
10
-
11
- const execFileAsync = promisify(execFile)
12
-
13
- export type EngineMetadata = {
14
- queryLanguage: string
15
- runtime: 'server' | 'embedded'
16
- connectionScheme: string | null
17
- }
18
-
19
- export async function getEngineMetadata(
20
- engine: string,
21
- ): Promise<EngineMetadata> {
22
- const config = await getEngineConfig(engine as Engine)
23
- return {
24
- queryLanguage: config.queryLanguage,
25
- runtime: config.runtime,
26
- connectionScheme: config.connectionScheme,
27
- }
28
- }
29
-
30
- // Parsed engine directory info
31
- type ParsedEngineDir = {
32
- version: string
33
- platform: string
34
- arch: string
35
- path: string
36
- }
37
-
38
- // Parse engine directory name into components
39
- // Format: {engine}-{version}-{platform}-{arch}
40
- // Handles versions with dashes (e.g., 17.0.0-rc1) by splitting from the end
41
- function parseEngineDirectory(
42
- entryName: string,
43
- enginePrefix: string,
44
- binDir: string,
45
- ): ParsedEngineDir | null {
46
- const rest = entryName.slice(enginePrefix.length)
47
- const parts = rest.split('-')
48
- if (parts.length < 3) return null
49
-
50
- const arch = parts.pop()!
51
- const platform = parts.pop()!
52
- const version = parts.join('-')
53
-
54
- if (!version || !platform || !arch) return null
55
-
56
- return {
57
- version,
58
- platform,
59
- arch,
60
- path: join(binDir, entryName),
61
- }
62
- }
63
-
64
- // Calculate the total size of all files in a directory (recursive)
65
- async function calculateDirectorySize(dirPath: string): Promise<number> {
66
- let sizeBytes = 0
67
- try {
68
- const files = await readdir(dirPath, { recursive: true })
69
- for (const file of files) {
70
- try {
71
- const filePath = join(dirPath, file.toString())
72
- const fileStat = await lstat(filePath)
73
- if (fileStat.isFile()) {
74
- sizeBytes += fileStat.size
75
- }
76
- } catch {
77
- // Skip files we can't stat
78
- }
79
- }
80
- } catch {
81
- // Skip directories we can't read
82
- }
83
- return sizeBytes
84
- }
85
-
86
- export type InstalledPostgresEngine = {
87
- engine: 'postgresql'
88
- version: string
89
- platform: string
90
- arch: string
91
- path: string
92
- sizeBytes: number
93
- source: 'downloaded'
94
- }
95
-
96
- export type InstalledMariadbEngine = {
97
- engine: 'mariadb'
98
- version: string
99
- platform: string
100
- arch: string
101
- path: string
102
- sizeBytes: number
103
- source: 'downloaded'
104
- }
105
-
106
- export type InstalledMysqlEngine = {
107
- engine: 'mysql'
108
- version: string
109
- platform: string
110
- arch: string
111
- path: string
112
- sizeBytes: number
113
- source: 'downloaded'
114
- }
115
-
116
- export type InstalledSqliteEngine = {
117
- engine: 'sqlite'
118
- version: string
119
- platform: string
120
- arch: string
121
- path: string
122
- sizeBytes: number
123
- source: 'downloaded'
124
- }
125
-
126
- export type InstalledDuckDBEngine = {
127
- engine: 'duckdb'
128
- version: string
129
- platform: string
130
- arch: string
131
- path: string
132
- sizeBytes: number
133
- source: 'downloaded'
134
- }
135
-
136
- export type InstalledMongodbEngine = {
137
- engine: 'mongodb'
138
- version: string
139
- platform: string
140
- arch: string
141
- path: string
142
- sizeBytes: number
143
- source: 'downloaded'
144
- }
145
-
146
- export type InstalledRedisEngine = {
147
- engine: 'redis'
148
- version: string
149
- platform: string
150
- arch: string
151
- path: string
152
- sizeBytes: number
153
- source: 'downloaded'
154
- }
155
-
156
- export type InstalledValkeyEngine = {
157
- engine: 'valkey'
158
- version: string
159
- platform: string
160
- arch: string
161
- path: string
162
- sizeBytes: number
163
- source: 'downloaded'
164
- }
165
-
166
- export type InstalledClickHouseEngine = {
167
- engine: 'clickhouse'
168
- version: string
169
- platform: string
170
- arch: string
171
- path: string
172
- sizeBytes: number
173
- source: 'downloaded'
174
- }
175
-
176
- export type InstalledQdrantEngine = {
177
- engine: 'qdrant'
178
- version: string
179
- platform: string
180
- arch: string
181
- path: string
182
- sizeBytes: number
183
- source: 'downloaded'
184
- }
185
-
186
- export type InstalledMeilisearchEngine = {
187
- engine: 'meilisearch'
188
- version: string
189
- platform: string
190
- arch: string
191
- path: string
192
- sizeBytes: number
193
- source: 'downloaded'
194
- }
195
-
196
- export type InstalledFerretDBEngine = {
197
- engine: 'ferretdb'
198
- version: string
199
- platform: string
200
- arch: string
201
- path: string
202
- sizeBytes: number
203
- source: 'downloaded'
204
- }
205
-
206
- export type InstalledCouchDBEngine = {
207
- engine: 'couchdb'
208
- version: string
209
- platform: string
210
- arch: string
211
- path: string
212
- sizeBytes: number
213
- source: 'downloaded'
214
- }
215
-
216
- export type InstalledCockroachDBEngine = {
217
- engine: 'cockroachdb'
218
- version: string
219
- platform: string
220
- arch: string
221
- path: string
222
- sizeBytes: number
223
- source: 'downloaded'
224
- }
225
-
226
- export type InstalledSurrealDBEngine = {
227
- engine: 'surrealdb'
228
- version: string
229
- platform: string
230
- arch: string
231
- path: string
232
- sizeBytes: number
233
- source: 'downloaded'
234
- }
235
-
236
- export type InstalledQuestDBEngine = {
237
- engine: 'questdb'
238
- version: string
239
- platform: string
240
- arch: string
241
- path: string
242
- sizeBytes: number
243
- source: 'downloaded'
244
- }
245
-
246
- export type InstalledTypeDBEngine = {
247
- engine: 'typedb'
248
- version: string
249
- platform: string
250
- arch: string
251
- path: string
252
- sizeBytes: number
253
- source: 'downloaded'
254
- }
255
-
256
- export type InstalledInfluxDBEngine = {
257
- engine: 'influxdb'
258
- version: string
259
- platform: string
260
- arch: string
261
- path: string
262
- sizeBytes: number
263
- source: 'downloaded'
264
- }
265
-
266
- export type InstalledWeaviateEngine = {
267
- engine: 'weaviate'
268
- version: string
269
- platform: string
270
- arch: string
271
- path: string
272
- sizeBytes: number
273
- source: 'downloaded'
274
- }
275
-
276
- export type InstalledTigerBeetleEngine = {
277
- engine: 'tigerbeetle'
278
- version: string
279
- platform: string
280
- arch: string
281
- path: string
282
- sizeBytes: number
283
- source: 'downloaded'
284
- }
285
-
286
- export type InstalledEngine =
287
- | InstalledPostgresEngine
288
- | InstalledMariadbEngine
289
- | InstalledMysqlEngine
290
- | InstalledSqliteEngine
291
- | InstalledDuckDBEngine
292
- | InstalledMongodbEngine
293
- | InstalledFerretDBEngine
294
- | InstalledRedisEngine
295
- | InstalledValkeyEngine
296
- | InstalledClickHouseEngine
297
- | InstalledQdrantEngine
298
- | InstalledMeilisearchEngine
299
- | InstalledCouchDBEngine
300
- | InstalledCockroachDBEngine
301
- | InstalledSurrealDBEngine
302
- | InstalledQuestDBEngine
303
- | InstalledTypeDBEngine
304
- | InstalledInfluxDBEngine
305
- | InstalledWeaviateEngine
306
- | InstalledTigerBeetleEngine
307
-
308
- async function getPostgresVersion(binPath: string): Promise<string | null> {
309
- const ext = platformService.getExecutableExtension()
310
- const postgresPath = join(binPath, 'bin', `postgres${ext}`)
311
- if (!existsSync(postgresPath)) {
312
- return null
313
- }
314
-
315
- try {
316
- const { stdout } = await execFileAsync(postgresPath, ['--version'])
317
- const match = stdout.match(/\(PostgreSQL\)\s+([\d.]+)/)
318
- return match ? match[1] : null
319
- } catch {
320
- return null
321
- }
322
- }
323
-
324
- export async function getInstalledPostgresEngines(): Promise<
325
- InstalledPostgresEngine[]
326
- > {
327
- const binDir = paths.bin
328
-
329
- if (!existsSync(binDir)) {
330
- return []
331
- }
332
-
333
- const entries = await readdir(binDir, { withFileTypes: true })
334
- const engines: InstalledPostgresEngine[] = []
335
-
336
- for (const entry of entries) {
337
- if (!entry.isDirectory()) continue
338
- if (!entry.name.startsWith('postgresql-')) continue
339
-
340
- const parsed = parseEngineDirectory(entry.name, 'postgresql-', binDir)
341
- if (!parsed) continue
342
-
343
- const actualVersion =
344
- (await getPostgresVersion(parsed.path)) || parsed.version
345
- const sizeBytes = await calculateDirectorySize(parsed.path)
346
-
347
- engines.push({
348
- engine: 'postgresql',
349
- version: actualVersion,
350
- platform: parsed.platform,
351
- arch: parsed.arch,
352
- path: parsed.path,
353
- sizeBytes,
354
- source: 'downloaded',
355
- })
356
- }
357
-
358
- engines.sort((a, b) => compareVersions(b.version, a.version))
359
-
360
- return engines
361
- }
362
-
363
- async function getMariadbVersion(binPath: string): Promise<string | null> {
364
- const ext = platformService.getExecutableExtension()
365
- // Try mariadbd first, then mysqld
366
- let serverPath = join(binPath, 'bin', `mariadbd${ext}`)
367
- if (!existsSync(serverPath)) {
368
- serverPath = join(binPath, 'bin', `mysqld${ext}`)
369
- }
370
- if (!existsSync(serverPath)) {
371
- return null
372
- }
373
-
374
- try {
375
- const { stdout } = await execFileAsync(serverPath, ['--version'])
376
- // Parse output like "mariadbd Ver 11.8.5-MariaDB"
377
- const match = stdout.match(/Ver\s+([\d.]+)/)
378
- return match ? match[1] : null
379
- } catch {
380
- return null
381
- }
382
- }
383
-
384
- export async function getInstalledMariadbEngines(): Promise<
385
- InstalledMariadbEngine[]
386
- > {
387
- const binDir = paths.bin
388
-
389
- if (!existsSync(binDir)) {
390
- return []
391
- }
392
-
393
- const entries = await readdir(binDir, { withFileTypes: true })
394
- const engines: InstalledMariadbEngine[] = []
395
-
396
- for (const entry of entries) {
397
- if (!entry.isDirectory()) continue
398
- if (!entry.name.startsWith('mariadb-')) continue
399
-
400
- const parsed = parseEngineDirectory(entry.name, 'mariadb-', binDir)
401
- if (!parsed) continue
402
-
403
- const actualVersion =
404
- (await getMariadbVersion(parsed.path)) || parsed.version
405
- const sizeBytes = await calculateDirectorySize(parsed.path)
406
-
407
- engines.push({
408
- engine: 'mariadb',
409
- version: actualVersion,
410
- platform: parsed.platform,
411
- arch: parsed.arch,
412
- path: parsed.path,
413
- sizeBytes,
414
- source: 'downloaded',
415
- })
416
- }
417
-
418
- engines.sort((a, b) => compareVersions(b.version, a.version))
419
-
420
- return engines
421
- }
422
-
423
- async function getMysqlVersion(binPath: string): Promise<string | null> {
424
- const ext = platformService.getExecutableExtension()
425
- const serverPath = join(binPath, 'bin', `mysqld${ext}`)
426
- if (!existsSync(serverPath)) {
427
- return null
428
- }
429
-
430
- try {
431
- const { stdout } = await execFileAsync(serverPath, ['--version'])
432
- // Parse output like "mysqld Ver 8.0.40 for Linux on x86_64"
433
- const match = stdout.match(/Ver\s+([\d.]+)/)
434
- return match ? match[1] : null
435
- } catch {
436
- return null
437
- }
438
- }
439
-
440
- // Get installed MySQL engines from downloaded binaries
441
- async function getInstalledMysqlEngines(): Promise<InstalledMysqlEngine[]> {
442
- const binDir = paths.bin
443
-
444
- if (!existsSync(binDir)) {
445
- return []
446
- }
447
-
448
- const entries = await readdir(binDir, { withFileTypes: true })
449
- const engines: InstalledMysqlEngine[] = []
450
-
451
- for (const entry of entries) {
452
- if (!entry.isDirectory()) continue
453
- if (!entry.name.startsWith('mysql-')) continue
454
-
455
- const parsed = parseEngineDirectory(entry.name, 'mysql-', binDir)
456
- if (!parsed) continue
457
-
458
- const actualVersion = (await getMysqlVersion(parsed.path)) || parsed.version
459
- const sizeBytes = await calculateDirectorySize(parsed.path)
460
-
461
- engines.push({
462
- engine: 'mysql',
463
- version: actualVersion,
464
- platform: parsed.platform,
465
- arch: parsed.arch,
466
- path: parsed.path,
467
- sizeBytes,
468
- source: 'downloaded',
469
- })
470
- }
471
-
472
- engines.sort((a, b) => compareVersions(b.version, a.version))
473
-
474
- return engines
475
- }
476
-
477
- // Get SQLite version from binary path
478
- async function getSqliteVersion(binPath: string): Promise<string | null> {
479
- const ext = platformService.getExecutableExtension()
480
- const sqlite3Path = join(binPath, 'bin', `sqlite3${ext}`)
481
- if (!existsSync(sqlite3Path)) {
482
- return null
483
- }
484
-
485
- try {
486
- const { stdout } = await execFileAsync(sqlite3Path, ['--version'])
487
- // sqlite3 --version outputs: "3.51.2 2025-01-08 12:00:00 ..."
488
- const match = stdout.match(/^(\d+\.\d+\.\d+)/)
489
- return match ? match[1] : null
490
- } catch {
491
- return null
492
- }
493
- }
494
-
495
- // Get installed SQLite engines from downloaded binaries
496
- async function getInstalledSqliteEngines(): Promise<InstalledSqliteEngine[]> {
497
- const binDir = paths.bin
498
-
499
- if (!existsSync(binDir)) {
500
- return []
501
- }
502
-
503
- const entries = await readdir(binDir, { withFileTypes: true })
504
- const engines: InstalledSqliteEngine[] = []
505
-
506
- for (const entry of entries) {
507
- if (!entry.isDirectory()) continue
508
- if (!entry.name.startsWith('sqlite-')) continue
509
-
510
- const parsed = parseEngineDirectory(entry.name, 'sqlite-', binDir)
511
- if (!parsed) continue
512
-
513
- const actualVersion =
514
- (await getSqliteVersion(parsed.path)) || parsed.version
515
- const sizeBytes = await calculateDirectorySize(parsed.path)
516
-
517
- engines.push({
518
- engine: 'sqlite',
519
- version: actualVersion,
520
- platform: parsed.platform,
521
- arch: parsed.arch,
522
- path: parsed.path,
523
- sizeBytes,
524
- source: 'downloaded',
525
- })
526
- }
527
-
528
- engines.sort((a, b) => compareVersions(b.version, a.version))
529
-
530
- return engines
531
- }
532
-
533
- // Get DuckDB version from binary path
534
- async function getDuckDBVersion(binPath: string): Promise<string | null> {
535
- const ext = platformService.getExecutableExtension()
536
- const duckdbPath = join(binPath, 'bin', `duckdb${ext}`)
537
- if (!existsSync(duckdbPath)) {
538
- return null
539
- }
540
-
541
- try {
542
- const { stdout } = await execFileAsync(duckdbPath, ['--version'])
543
- // duckdb --version outputs: "v1.4.3 abcdef123" or just "1.4.3"
544
- const match = stdout.match(/v?(\d+\.\d+\.\d+)/)
545
- return match ? match[1] : null
546
- } catch {
547
- return null
548
- }
549
- }
550
-
551
- // Get installed DuckDB engines from downloaded binaries
552
- async function getInstalledDuckDBEngines(): Promise<InstalledDuckDBEngine[]> {
553
- const binDir = paths.bin
554
-
555
- if (!existsSync(binDir)) {
556
- return []
557
- }
558
-
559
- const entries = await readdir(binDir, { withFileTypes: true })
560
- const engines: InstalledDuckDBEngine[] = []
561
-
562
- for (const entry of entries) {
563
- if (!entry.isDirectory()) continue
564
- if (!entry.name.startsWith('duckdb-')) continue
565
-
566
- const parsed = parseEngineDirectory(entry.name, 'duckdb-', binDir)
567
- if (!parsed) continue
568
-
569
- const actualVersion =
570
- (await getDuckDBVersion(parsed.path)) || parsed.version
571
- const sizeBytes = await calculateDirectorySize(parsed.path)
572
-
573
- engines.push({
574
- engine: 'duckdb',
575
- version: actualVersion,
576
- platform: parsed.platform,
577
- arch: parsed.arch,
578
- path: parsed.path,
579
- sizeBytes,
580
- source: 'downloaded',
581
- })
582
- }
583
-
584
- engines.sort((a, b) => compareVersions(b.version, a.version))
585
-
586
- return engines
587
- }
588
-
589
- // Get MongoDB version from binary path
590
- async function getMongodbVersion(binPath: string): Promise<string | null> {
591
- const ext = platformService.getExecutableExtension()
592
- const serverPath = join(binPath, 'bin', `mongod${ext}`)
593
- if (!existsSync(serverPath)) {
594
- return null
595
- }
596
-
597
- try {
598
- const { stdout } = await execFileAsync(serverPath, ['--version'])
599
- // Parse output like "db version v7.0.28"
600
- const match = stdout.match(/v([\d.]+)/)
601
- return match ? match[1] : null
602
- } catch {
603
- return null
604
- }
605
- }
606
-
607
- // Get installed MongoDB engines from downloaded binaries
608
- async function getInstalledMongodbEngines(): Promise<InstalledMongodbEngine[]> {
609
- const binDir = paths.bin
610
-
611
- if (!existsSync(binDir)) {
612
- return []
613
- }
614
-
615
- const entries = await readdir(binDir, { withFileTypes: true })
616
- const engines: InstalledMongodbEngine[] = []
617
-
618
- for (const entry of entries) {
619
- if (!entry.isDirectory()) continue
620
- if (!entry.name.startsWith('mongodb-')) continue
621
-
622
- const parsed = parseEngineDirectory(entry.name, 'mongodb-', binDir)
623
- if (!parsed) continue
624
-
625
- const actualVersion =
626
- (await getMongodbVersion(parsed.path)) || parsed.version
627
- const sizeBytes = await calculateDirectorySize(parsed.path)
628
-
629
- engines.push({
630
- engine: 'mongodb',
631
- version: actualVersion,
632
- platform: parsed.platform,
633
- arch: parsed.arch,
634
- path: parsed.path,
635
- sizeBytes,
636
- source: 'downloaded',
637
- })
638
- }
639
-
640
- engines.sort((a, b) => compareVersions(b.version, a.version))
641
-
642
- return engines
643
- }
644
-
645
- // Get Redis version from binary path
646
- async function getRedisVersion(binPath: string): Promise<string | null> {
647
- const ext = platformService.getExecutableExtension()
648
- const serverPath = join(binPath, 'bin', `redis-server${ext}`)
649
- if (!existsSync(serverPath)) {
650
- return null
651
- }
652
-
653
- try {
654
- const { stdout } = await execFileAsync(serverPath, ['--version'])
655
- // Parse output like "Redis server v=7.4.7 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=..."
656
- const match = stdout.match(/v=([\d.]+)/)
657
- return match ? match[1] : null
658
- } catch {
659
- return null
660
- }
661
- }
662
-
663
- // Get installed Redis engines from downloaded binaries
664
- async function getInstalledRedisEngines(): Promise<InstalledRedisEngine[]> {
665
- const binDir = paths.bin
666
-
667
- if (!existsSync(binDir)) {
668
- return []
669
- }
670
-
671
- const entries = await readdir(binDir, { withFileTypes: true })
672
- const engines: InstalledRedisEngine[] = []
673
-
674
- for (const entry of entries) {
675
- if (!entry.isDirectory()) continue
676
- if (!entry.name.startsWith('redis-')) continue
677
-
678
- const parsed = parseEngineDirectory(entry.name, 'redis-', binDir)
679
- if (!parsed) continue
680
-
681
- const actualVersion = (await getRedisVersion(parsed.path)) || parsed.version
682
- const sizeBytes = await calculateDirectorySize(parsed.path)
683
-
684
- engines.push({
685
- engine: 'redis',
686
- version: actualVersion,
687
- platform: parsed.platform,
688
- arch: parsed.arch,
689
- path: parsed.path,
690
- sizeBytes,
691
- source: 'downloaded',
692
- })
693
- }
694
-
695
- engines.sort((a, b) => compareVersions(b.version, a.version))
696
-
697
- return engines
698
- }
699
-
700
- // Get Valkey version from binary path
701
- async function getValkeyVersion(binPath: string): Promise<string | null> {
702
- const ext = platformService.getExecutableExtension()
703
- const serverPath = join(binPath, 'bin', `valkey-server${ext}`)
704
- if (!existsSync(serverPath)) {
705
- return null
706
- }
707
-
708
- try {
709
- const { stdout } = await execFileAsync(serverPath, ['--version'])
710
- // Parse output like "Valkey server v=8.0.6 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=..."
711
- const match = stdout.match(/v=([\d.]+)/)
712
- return match ? match[1] : null
713
- } catch {
714
- return null
715
- }
716
- }
717
-
718
- // Get installed Valkey engines from downloaded binaries
719
- async function getInstalledValkeyEngines(): Promise<InstalledValkeyEngine[]> {
720
- const binDir = paths.bin
721
-
722
- if (!existsSync(binDir)) {
723
- return []
724
- }
725
-
726
- const entries = await readdir(binDir, { withFileTypes: true })
727
- const engines: InstalledValkeyEngine[] = []
728
-
729
- for (const entry of entries) {
730
- if (!entry.isDirectory()) continue
731
- if (!entry.name.startsWith('valkey-')) continue
732
-
733
- const parsed = parseEngineDirectory(entry.name, 'valkey-', binDir)
734
- if (!parsed) continue
735
-
736
- const actualVersion =
737
- (await getValkeyVersion(parsed.path)) || parsed.version
738
- const sizeBytes = await calculateDirectorySize(parsed.path)
739
-
740
- engines.push({
741
- engine: 'valkey',
742
- version: actualVersion,
743
- platform: parsed.platform,
744
- arch: parsed.arch,
745
- path: parsed.path,
746
- sizeBytes,
747
- source: 'downloaded',
748
- })
749
- }
750
-
751
- engines.sort((a, b) => compareVersions(b.version, a.version))
752
-
753
- return engines
754
- }
755
-
756
- // Get ClickHouse version from binary path
757
- async function getClickHouseVersion(binPath: string): Promise<string | null> {
758
- const clickhousePath = join(binPath, 'bin', 'clickhouse')
759
- if (!existsSync(clickhousePath)) {
760
- return null
761
- }
762
-
763
- try {
764
- const { stdout } = await execFileAsync(clickhousePath, [
765
- 'client',
766
- '--version',
767
- ])
768
- // Parse output like "ClickHouse client version 25.12.3.21 (official build)"
769
- const match = stdout.match(/version\s+([\d.]+)/)
770
- return match ? match[1] : null
771
- } catch {
772
- return null
773
- }
774
- }
775
-
776
- // Get installed ClickHouse engines from downloaded binaries
777
- async function getInstalledClickHouseEngines(): Promise<
778
- InstalledClickHouseEngine[]
779
- > {
780
- const binDir = paths.bin
781
-
782
- if (!existsSync(binDir)) {
783
- return []
784
- }
785
-
786
- const entries = await readdir(binDir, { withFileTypes: true })
787
- const engines: InstalledClickHouseEngine[] = []
788
-
789
- for (const entry of entries) {
790
- if (!entry.isDirectory()) continue
791
- if (!entry.name.startsWith('clickhouse-')) continue
792
-
793
- const parsed = parseEngineDirectory(entry.name, 'clickhouse-', binDir)
794
- if (!parsed) continue
795
-
796
- const actualVersion =
797
- (await getClickHouseVersion(parsed.path)) || parsed.version
798
- const sizeBytes = await calculateDirectorySize(parsed.path)
799
-
800
- engines.push({
801
- engine: 'clickhouse',
802
- version: actualVersion,
803
- platform: parsed.platform,
804
- arch: parsed.arch,
805
- path: parsed.path,
806
- sizeBytes,
807
- source: 'downloaded',
808
- })
809
- }
810
-
811
- engines.sort((a, b) => compareVersions(b.version, a.version))
812
-
813
- return engines
814
- }
815
-
816
- // Get Qdrant version from binary path
817
- async function getQdrantVersion(binPath: string): Promise<string | null> {
818
- const ext = platformService.getExecutableExtension()
819
- const qdrantPath = join(binPath, 'bin', `qdrant${ext}`)
820
- if (!existsSync(qdrantPath)) {
821
- return null
822
- }
823
-
824
- try {
825
- const { stdout } = await execFileAsync(qdrantPath, ['--version'])
826
- // Parse output like "qdrant 1.16.3" or "v1.16.3"
827
- const match = stdout.match(/(?:qdrant\s+)?v?(\d+\.\d+\.\d+)/)
828
- return match ? match[1] : null
829
- } catch {
830
- return null
831
- }
832
- }
833
-
834
- // Get installed Qdrant engines from downloaded binaries
835
- async function getInstalledQdrantEngines(): Promise<InstalledQdrantEngine[]> {
836
- const binDir = paths.bin
837
-
838
- if (!existsSync(binDir)) {
839
- return []
840
- }
841
-
842
- const entries = await readdir(binDir, { withFileTypes: true })
843
- const engines: InstalledQdrantEngine[] = []
844
-
845
- for (const entry of entries) {
846
- if (!entry.isDirectory()) continue
847
- if (!entry.name.startsWith('qdrant-')) continue
848
-
849
- const parsed = parseEngineDirectory(entry.name, 'qdrant-', binDir)
850
- if (!parsed) continue
851
-
852
- const actualVersion =
853
- (await getQdrantVersion(parsed.path)) || parsed.version
854
- const sizeBytes = await calculateDirectorySize(parsed.path)
855
-
856
- engines.push({
857
- engine: 'qdrant',
858
- version: actualVersion,
859
- platform: parsed.platform,
860
- arch: parsed.arch,
861
- path: parsed.path,
862
- sizeBytes,
863
- source: 'downloaded',
864
- })
865
- }
866
-
867
- engines.sort((a, b) => compareVersions(b.version, a.version))
868
-
869
- return engines
870
- }
871
-
872
- // Get Meilisearch version from binary path
873
- async function getMeilisearchVersion(binPath: string): Promise<string | null> {
874
- const ext = platformService.getExecutableExtension()
875
- const meilisearchPath = join(binPath, 'bin', `meilisearch${ext}`)
876
- if (!existsSync(meilisearchPath)) {
877
- return null
878
- }
879
-
880
- try {
881
- const { stdout } = await execFileAsync(meilisearchPath, ['--version'])
882
- // Parse output like "meilisearch 1.33.1" or "v1.33.1"
883
- const match = stdout.match(/(?:meilisearch\s+)?v?(\d+\.\d+\.\d+)/)
884
- return match ? match[1] : null
885
- } catch {
886
- return null
887
- }
888
- }
889
-
890
- // Get installed Meilisearch engines from downloaded binaries
891
- async function getInstalledMeilisearchEngines(): Promise<
892
- InstalledMeilisearchEngine[]
893
- > {
894
- const binDir = paths.bin
895
-
896
- if (!existsSync(binDir)) {
897
- return []
898
- }
899
-
900
- const entries = await readdir(binDir, { withFileTypes: true })
901
- const engines: InstalledMeilisearchEngine[] = []
902
-
903
- for (const entry of entries) {
904
- if (!entry.isDirectory()) continue
905
- if (!entry.name.startsWith('meilisearch-')) continue
906
-
907
- const parsed = parseEngineDirectory(entry.name, 'meilisearch-', binDir)
908
- if (!parsed) continue
909
-
910
- const actualVersion =
911
- (await getMeilisearchVersion(parsed.path)) || parsed.version
912
- const sizeBytes = await calculateDirectorySize(parsed.path)
913
-
914
- engines.push({
915
- engine: 'meilisearch',
916
- version: actualVersion,
917
- platform: parsed.platform,
918
- arch: parsed.arch,
919
- path: parsed.path,
920
- sizeBytes,
921
- source: 'downloaded',
922
- })
923
- }
924
-
925
- engines.sort((a, b) => compareVersions(b.version, a.version))
926
-
927
- return engines
928
- }
929
-
930
- // Get CouchDB version from binary path
931
- // Note: CouchDB doesn't support --version flag, so we just verify the binary exists
932
- // and return null to use the version from the directory name
933
- async function getCouchDBVersion(binPath: string): Promise<string | null> {
934
- const ext = platformService.getExecutableExtension()
935
- const couchdbPath = join(binPath, 'bin', `couchdb${ext}`)
936
- if (!existsSync(couchdbPath)) {
937
- return null
938
- }
939
- // CouchDB is an Erlang app that tries to start when run with any args
940
- // Just return null to use directory-parsed version
941
- return null
942
- }
943
-
944
- // Get installed CouchDB engines from downloaded binaries
945
- async function getInstalledCouchDBEngines(): Promise<InstalledCouchDBEngine[]> {
946
- const binDir = paths.bin
947
-
948
- if (!existsSync(binDir)) {
949
- return []
950
- }
951
-
952
- const entries = await readdir(binDir, { withFileTypes: true })
953
- const engines: InstalledCouchDBEngine[] = []
954
-
955
- for (const entry of entries) {
956
- if (!entry.isDirectory()) continue
957
- if (!entry.name.startsWith('couchdb-')) continue
958
-
959
- const parsed = parseEngineDirectory(entry.name, 'couchdb-', binDir)
960
- if (!parsed) continue
961
-
962
- const actualVersion =
963
- (await getCouchDBVersion(parsed.path)) || parsed.version
964
- const sizeBytes = await calculateDirectorySize(parsed.path)
965
-
966
- engines.push({
967
- engine: 'couchdb',
968
- version: actualVersion,
969
- platform: parsed.platform,
970
- arch: parsed.arch,
971
- path: parsed.path,
972
- sizeBytes,
973
- source: 'downloaded',
974
- })
975
- }
976
-
977
- engines.sort((a, b) => compareVersions(b.version, a.version))
978
-
979
- return engines
980
- }
981
-
982
- // Get CockroachDB version from binary path
983
- async function getCockroachDBVersion(binPath: string): Promise<string | null> {
984
- const ext = platformService.getExecutableExtension()
985
- const cockroachPath = join(binPath, 'bin', `cockroach${ext}`)
986
- if (!existsSync(cockroachPath)) {
987
- return null
988
- }
989
-
990
- try {
991
- const { stdout } = await execFileAsync(cockroachPath, ['version'])
992
- // Parse output like "Build Tag: v25.4.2" or "CockroachDB CCL v25.4.2"
993
- const match = stdout.match(/v?(\d+\.\d+\.\d+)/)
994
- return match ? match[1] : null
995
- } catch {
996
- return null
997
- }
998
- }
999
-
1000
- // Get installed CockroachDB engines from downloaded binaries
1001
- async function getInstalledCockroachDBEngines(): Promise<
1002
- InstalledCockroachDBEngine[]
1003
- > {
1004
- const binDir = paths.bin
1005
-
1006
- if (!existsSync(binDir)) {
1007
- return []
1008
- }
1009
-
1010
- const entries = await readdir(binDir, { withFileTypes: true })
1011
- const engines: InstalledCockroachDBEngine[] = []
1012
-
1013
- for (const entry of entries) {
1014
- if (!entry.isDirectory()) continue
1015
- if (!entry.name.startsWith('cockroachdb-')) continue
1016
-
1017
- const parsed = parseEngineDirectory(entry.name, 'cockroachdb-', binDir)
1018
- if (!parsed) continue
1019
-
1020
- const actualVersion =
1021
- (await getCockroachDBVersion(parsed.path)) || parsed.version
1022
- const sizeBytes = await calculateDirectorySize(parsed.path)
1023
-
1024
- engines.push({
1025
- engine: 'cockroachdb',
1026
- version: actualVersion,
1027
- platform: parsed.platform,
1028
- arch: parsed.arch,
1029
- path: parsed.path,
1030
- sizeBytes,
1031
- source: 'downloaded',
1032
- })
1033
- }
1034
-
1035
- engines.sort((a, b) => compareVersions(b.version, a.version))
1036
-
1037
- return engines
1038
- }
1039
-
1040
- // Get SurrealDB version from binary path
1041
- async function getSurrealDBVersion(binPath: string): Promise<string | null> {
1042
- const ext = platformService.getExecutableExtension()
1043
- const surrealPath = join(binPath, 'bin', `surreal${ext}`)
1044
- if (!existsSync(surrealPath)) {
1045
- return null
1046
- }
1047
-
1048
- try {
1049
- const { stdout } = await execFileAsync(surrealPath, ['version'])
1050
- // Parse output like "surreal 2.3.2 for linux on x86_64" or "2.3.2"
1051
- const match = stdout.match(/(\d+\.\d+\.\d+)/)
1052
- return match ? match[1] : null
1053
- } catch {
1054
- return null
1055
- }
1056
- }
1057
-
1058
- // Get installed SurrealDB engines from downloaded binaries
1059
- async function getInstalledSurrealDBEngines(): Promise<
1060
- InstalledSurrealDBEngine[]
1061
- > {
1062
- const binDir = paths.bin
1063
-
1064
- if (!existsSync(binDir)) {
1065
- return []
1066
- }
1067
-
1068
- const entries = await readdir(binDir, { withFileTypes: true })
1069
- const engines: InstalledSurrealDBEngine[] = []
1070
-
1071
- for (const entry of entries) {
1072
- if (!entry.isDirectory()) continue
1073
- if (!entry.name.startsWith('surrealdb-')) continue
1074
-
1075
- const parsed = parseEngineDirectory(entry.name, 'surrealdb-', binDir)
1076
- if (!parsed) continue
1077
-
1078
- const actualVersion =
1079
- (await getSurrealDBVersion(parsed.path)) || parsed.version
1080
- const sizeBytes = await calculateDirectorySize(parsed.path)
1081
-
1082
- engines.push({
1083
- engine: 'surrealdb',
1084
- version: actualVersion,
1085
- platform: parsed.platform,
1086
- arch: parsed.arch,
1087
- path: parsed.path,
1088
- sizeBytes,
1089
- source: 'downloaded',
1090
- })
1091
- }
1092
-
1093
- engines.sort((a, b) => compareVersions(b.version, a.version))
1094
-
1095
- return engines
1096
- }
1097
-
1098
- // Get QuestDB version from directory path
1099
- // QuestDB doesn't have a simple --version flag, extract from directory name
1100
- async function getQuestDBVersion(binPath: string): Promise<string | null> {
1101
- const platform = platformService.getPlatformInfo().platform
1102
- // Check for questdb startup script
1103
- if (platform === 'win32') {
1104
- if (!existsSync(join(binPath, 'questdb.exe'))) {
1105
- return null
1106
- }
1107
- } else {
1108
- if (!existsSync(join(binPath, 'questdb.sh'))) {
1109
- return null
1110
- }
1111
- }
1112
- // Version is embedded in directory name, return null to use directory-parsed version
1113
- return null
1114
- }
1115
-
1116
- // Get installed QuestDB engines from downloaded binaries
1117
- async function getInstalledQuestDBEngines(): Promise<InstalledQuestDBEngine[]> {
1118
- const binDir = paths.bin
1119
-
1120
- if (!existsSync(binDir)) {
1121
- return []
1122
- }
1123
-
1124
- const entries = await readdir(binDir, { withFileTypes: true })
1125
- const engines: InstalledQuestDBEngine[] = []
1126
-
1127
- for (const entry of entries) {
1128
- if (!entry.isDirectory()) continue
1129
- if (!entry.name.startsWith('questdb-')) continue
1130
-
1131
- const parsed = parseEngineDirectory(entry.name, 'questdb-', binDir)
1132
- if (!parsed) continue
1133
-
1134
- const actualVersion =
1135
- (await getQuestDBVersion(parsed.path)) || parsed.version
1136
- const sizeBytes = await calculateDirectorySize(parsed.path)
1137
-
1138
- engines.push({
1139
- engine: 'questdb',
1140
- version: actualVersion,
1141
- platform: parsed.platform,
1142
- arch: parsed.arch,
1143
- path: parsed.path,
1144
- sizeBytes,
1145
- source: 'downloaded',
1146
- })
1147
- }
1148
-
1149
- engines.sort((a, b) => compareVersions(b.version, a.version))
1150
-
1151
- return engines
1152
- }
1153
-
1154
- // Get TypeDB version from binary path
1155
- // TypeDB is a Rust binary but uses a launcher script. Check for server binary existence.
1156
- async function getTypeDBVersion(binPath: string): Promise<string | null> {
1157
- const ext = platformService.getExecutableExtension()
1158
- const serverPath = join(binPath, 'bin', 'server', `typedb_server_bin${ext}`)
1159
- if (!existsSync(serverPath)) {
1160
- return null
1161
- }
1162
- // TypeDB server binary doesn't have a simple --version flag
1163
- // Return null to use directory-parsed version
1164
- return null
1165
- }
1166
-
1167
- // Get installed TypeDB engines from downloaded binaries
1168
- async function getInstalledTypeDBEngines(): Promise<InstalledTypeDBEngine[]> {
1169
- const binDir = paths.bin
1170
-
1171
- if (!existsSync(binDir)) {
1172
- return []
1173
- }
1174
-
1175
- const entries = await readdir(binDir, { withFileTypes: true })
1176
- const engines: InstalledTypeDBEngine[] = []
1177
-
1178
- for (const entry of entries) {
1179
- if (!entry.isDirectory()) continue
1180
- if (!entry.name.startsWith('typedb-')) continue
1181
-
1182
- const parsed = parseEngineDirectory(entry.name, 'typedb-', binDir)
1183
- if (!parsed) continue
1184
-
1185
- const actualVersion =
1186
- (await getTypeDBVersion(parsed.path)) || parsed.version
1187
- const sizeBytes = await calculateDirectorySize(parsed.path)
1188
-
1189
- engines.push({
1190
- engine: 'typedb',
1191
- version: actualVersion,
1192
- platform: parsed.platform,
1193
- arch: parsed.arch,
1194
- path: parsed.path,
1195
- sizeBytes,
1196
- source: 'downloaded',
1197
- })
1198
- }
1199
-
1200
- engines.sort((a, b) => compareVersions(b.version, a.version))
1201
-
1202
- return engines
1203
- }
1204
-
1205
- // Get InfluxDB version from binary path
1206
- async function getInfluxDBVersion(binPath: string): Promise<string | null> {
1207
- const ext = platformService.getExecutableExtension()
1208
- const influxdbPath = join(binPath, 'bin', `influxdb3${ext}`)
1209
- if (!existsSync(influxdbPath)) {
1210
- return null
1211
- }
1212
-
1213
- try {
1214
- const { stdout } = await execFileAsync(influxdbPath, ['--version'])
1215
- const match = stdout.match(/v?(\d+\.\d+\.\d+)/)
1216
- return match ? match[1] : null
1217
- } catch {
1218
- return null
1219
- }
1220
- }
1221
-
1222
- // Get installed InfluxDB engines from downloaded binaries
1223
- async function getInstalledInfluxDBEngines(): Promise<
1224
- InstalledInfluxDBEngine[]
1225
- > {
1226
- const binDir = paths.bin
1227
-
1228
- if (!existsSync(binDir)) {
1229
- return []
1230
- }
1231
-
1232
- const entries = await readdir(binDir, { withFileTypes: true })
1233
- const engines: InstalledInfluxDBEngine[] = []
1234
-
1235
- for (const entry of entries) {
1236
- if (!entry.isDirectory()) continue
1237
- if (!entry.name.startsWith('influxdb-')) continue
1238
-
1239
- const parsed = parseEngineDirectory(entry.name, 'influxdb-', binDir)
1240
- if (!parsed) continue
1241
-
1242
- const actualVersion =
1243
- (await getInfluxDBVersion(parsed.path)) || parsed.version
1244
- const sizeBytes = await calculateDirectorySize(parsed.path)
1245
-
1246
- engines.push({
1247
- engine: 'influxdb',
1248
- version: actualVersion,
1249
- platform: parsed.platform,
1250
- arch: parsed.arch,
1251
- path: parsed.path,
1252
- sizeBytes,
1253
- source: 'downloaded',
1254
- })
1255
- }
1256
-
1257
- engines.sort((a, b) => compareVersions(b.version, a.version))
1258
-
1259
- return engines
1260
- }
1261
-
1262
- // Get FerretDB version from binary path
1263
- async function getFerretDBVersion(binPath: string): Promise<string | null> {
1264
- const ext = platformService.getExecutableExtension()
1265
- const ferretdbPath = join(binPath, 'bin', `ferretdb${ext}`)
1266
- if (!existsSync(ferretdbPath)) {
1267
- return null
1268
- }
1269
-
1270
- try {
1271
- const { stdout } = await execFileAsync(ferretdbPath, ['--version'])
1272
- // Parse output like "ferretdb version 2.7.0" or "v2.7.0"
1273
- const match = stdout.match(
1274
- /(?:ferretdb\s+)?(?:version\s+)?v?(\d+\.\d+\.\d+)/,
1275
- )
1276
- return match ? match[1] : null
1277
- } catch {
1278
- return null
1279
- }
1280
- }
1281
-
1282
- // Get installed FerretDB engines from downloaded binaries
1283
- async function getInstalledFerretDBEngines(): Promise<
1284
- InstalledFerretDBEngine[]
1285
- > {
1286
- const binDir = paths.bin
1287
-
1288
- if (!existsSync(binDir)) {
1289
- return []
1290
- }
1291
-
1292
- const entries = await readdir(binDir, { withFileTypes: true })
1293
- const engines: InstalledFerretDBEngine[] = []
1294
-
1295
- for (const entry of entries) {
1296
- if (!entry.isDirectory()) continue
1297
- if (!entry.name.startsWith('ferretdb-')) continue
1298
-
1299
- const parsed = parseEngineDirectory(entry.name, 'ferretdb-', binDir)
1300
- if (!parsed) continue
1301
-
1302
- const actualVersion =
1303
- (await getFerretDBVersion(parsed.path)) || parsed.version
1304
- const sizeBytes = await calculateDirectorySize(parsed.path)
1305
-
1306
- engines.push({
1307
- engine: 'ferretdb',
1308
- version: actualVersion,
1309
- platform: parsed.platform,
1310
- arch: parsed.arch,
1311
- path: parsed.path,
1312
- sizeBytes,
1313
- source: 'downloaded',
1314
- })
1315
- }
1316
-
1317
- engines.sort((a, b) => compareVersions(b.version, a.version))
1318
-
1319
- return engines
1320
- }
1321
-
1322
- // Get Weaviate version from binary path
1323
- async function getWeaviateVersion(binPath: string): Promise<string | null> {
1324
- const ext = platformService.getExecutableExtension()
1325
- const weaviatePath = join(binPath, 'bin', `weaviate${ext}`)
1326
- if (!existsSync(weaviatePath)) {
1327
- return null
1328
- }
1329
-
1330
- try {
1331
- const { stdout } = await execFileAsync(weaviatePath, ['--version'])
1332
- // Parse output like "weaviate v1.35.7" or "1.35.7"
1333
- const match = stdout.match(/(?:weaviate\s+)?v?(\d+\.\d+\.\d+)/)
1334
- return match ? match[1] : null
1335
- } catch {
1336
- return null
1337
- }
1338
- }
1339
-
1340
- // Get installed Weaviate engines from downloaded binaries
1341
- async function getInstalledWeaviateEngines(): Promise<
1342
- InstalledWeaviateEngine[]
1343
- > {
1344
- const binDir = paths.bin
1345
-
1346
- if (!existsSync(binDir)) {
1347
- return []
1348
- }
1349
-
1350
- const entries = await readdir(binDir, { withFileTypes: true })
1351
- const engines: InstalledWeaviateEngine[] = []
1352
-
1353
- for (const entry of entries) {
1354
- if (!entry.isDirectory()) continue
1355
- if (!entry.name.startsWith('weaviate-')) continue
1356
-
1357
- const parsed = parseEngineDirectory(entry.name, 'weaviate-', binDir)
1358
- if (!parsed) continue
1359
-
1360
- const actualVersion =
1361
- (await getWeaviateVersion(parsed.path)) || parsed.version
1362
- const sizeBytes = await calculateDirectorySize(parsed.path)
1363
-
1364
- engines.push({
1365
- engine: 'weaviate',
1366
- version: actualVersion,
1367
- platform: parsed.platform,
1368
- arch: parsed.arch,
1369
- path: parsed.path,
1370
- sizeBytes,
1371
- source: 'downloaded',
1372
- })
1373
- }
1374
-
1375
- engines.sort((a, b) => compareVersions(b.version, a.version))
1376
-
1377
- return engines
1378
- }
1379
-
1380
- // Get TigerBeetle version from binary path
1381
- async function getTigerBeetleVersion(binPath: string): Promise<string | null> {
1382
- const ext = platformService.getExecutableExtension()
1383
- const tigerbeetlePath = join(binPath, 'bin', `tigerbeetle${ext}`)
1384
- if (!existsSync(tigerbeetlePath)) {
1385
- return null
1386
- }
1387
-
1388
- try {
1389
- const { stdout } = await execFileAsync(tigerbeetlePath, ['version'])
1390
- // Parse output like "TigerBeetle v0.16.70" or "0.16.70"
1391
- const match = stdout.match(/(?:TigerBeetle\s+)?v?(\d+\.\d+\.\d+)/)
1392
- return match ? match[1] : null
1393
- } catch {
1394
- return null
1395
- }
1396
- }
1397
-
1398
- // Get installed TigerBeetle engines from downloaded binaries
1399
- async function getInstalledTigerBeetleEngines(): Promise<
1400
- InstalledTigerBeetleEngine[]
1401
- > {
1402
- const binDir = paths.bin
1403
-
1404
- if (!existsSync(binDir)) {
1405
- return []
1406
- }
1407
-
1408
- const entries = await readdir(binDir, { withFileTypes: true })
1409
- const engines: InstalledTigerBeetleEngine[] = []
1410
-
1411
- for (const entry of entries) {
1412
- if (!entry.isDirectory()) continue
1413
- if (!entry.name.startsWith('tigerbeetle-')) continue
1414
-
1415
- const parsed = parseEngineDirectory(entry.name, 'tigerbeetle-', binDir)
1416
- if (!parsed) continue
1417
-
1418
- const actualVersion =
1419
- (await getTigerBeetleVersion(parsed.path)) || parsed.version
1420
- const sizeBytes = await calculateDirectorySize(parsed.path)
1421
-
1422
- engines.push({
1423
- engine: 'tigerbeetle',
1424
- version: actualVersion,
1425
- platform: parsed.platform,
1426
- arch: parsed.arch,
1427
- path: parsed.path,
1428
- sizeBytes,
1429
- source: 'downloaded',
1430
- })
1431
- }
1432
-
1433
- engines.sort((a, b) => compareVersions(b.version, a.version))
1434
-
1435
- return engines
1436
- }
1437
-
1438
- export function compareVersions(a: string, b: string): number {
1439
- const partsA = a.split('.').map((p) => parseInt(p, 10) || 0)
1440
- const partsB = b.split('.').map((p) => parseInt(p, 10) || 0)
1441
-
1442
- for (let i = 0; i < Math.max(partsA.length, partsB.length); i++) {
1443
- const numA = partsA[i] || 0
1444
- const numB = partsB[i] || 0
1445
- if (numA !== numB) return numA - numB
1446
- }
1447
- return 0
1448
- }
1449
-
1450
- /**
1451
- * Known engine directory prefixes in the bin directory.
1452
- * Directory names follow the pattern: {engine}-{version}-{platform}-{arch}
1453
- */
1454
- const ENGINE_PREFIXES = [
1455
- 'postgresql-',
1456
- 'mysql-',
1457
- 'mariadb-',
1458
- 'sqlite-',
1459
- 'duckdb-',
1460
- 'mongodb-',
1461
- 'ferretdb-',
1462
- 'postgresql-documentdb-',
1463
- 'redis-',
1464
- 'valkey-',
1465
- 'clickhouse-',
1466
- 'qdrant-',
1467
- 'meilisearch-',
1468
- 'couchdb-',
1469
- 'cockroachdb-',
1470
- 'surrealdb-',
1471
- 'questdb-',
1472
- 'typedb-',
1473
- 'influxdb-',
1474
- 'weaviate-',
1475
- 'tigerbeetle-',
1476
- ] as const
1477
-
1478
- /**
1479
- * Lightweight check to see if any engines are installed.
1480
- * Only reads the bin directory - no subprocess spawning or size calculations.
1481
- * Use this for UI decisions where you only need to know if engines exist.
1482
- * Validates directory names against known engine prefixes to avoid false positives.
1483
- */
1484
- export async function hasAnyInstalledEngines(): Promise<boolean> {
1485
- const binDir = paths.bin
1486
- if (!existsSync(binDir)) {
1487
- return false
1488
- }
1489
-
1490
- try {
1491
- const entries = await readdir(binDir, { withFileTypes: true })
1492
- return entries.some(
1493
- (entry) =>
1494
- entry.isDirectory() &&
1495
- !entry.name.startsWith('.') &&
1496
- ENGINE_PREFIXES.some((prefix) => entry.name.startsWith(prefix)),
1497
- )
1498
- } catch {
1499
- return false
1500
- }
1501
- }
1502
-
1503
- export async function getInstalledEngines(): Promise<InstalledEngine[]> {
1504
- // Parallelize all engine checks for faster startup
1505
- const [
1506
- pgEngines,
1507
- mariadbEngines,
1508
- mysqlEngines,
1509
- sqliteEngines,
1510
- duckdbEngines,
1511
- mongodbEngines,
1512
- ferretdbEngines,
1513
- redisEngines,
1514
- valkeyEngines,
1515
- clickhouseEngines,
1516
- qdrantEngines,
1517
- meilisearchEngines,
1518
- couchdbEngines,
1519
- cockroachdbEngines,
1520
- surrealdbEngines,
1521
- questdbEngines,
1522
- typedbEngines,
1523
- influxdbEngines,
1524
- weaviateEngines,
1525
- tigerbeetleEngines,
1526
- ] = await Promise.all([
1527
- getInstalledPostgresEngines(),
1528
- getInstalledMariadbEngines(),
1529
- getInstalledMysqlEngines(),
1530
- getInstalledSqliteEngines(),
1531
- getInstalledDuckDBEngines(),
1532
- getInstalledMongodbEngines(),
1533
- getInstalledFerretDBEngines(),
1534
- getInstalledRedisEngines(),
1535
- getInstalledValkeyEngines(),
1536
- getInstalledClickHouseEngines(),
1537
- getInstalledQdrantEngines(),
1538
- getInstalledMeilisearchEngines(),
1539
- getInstalledCouchDBEngines(),
1540
- getInstalledCockroachDBEngines(),
1541
- getInstalledSurrealDBEngines(),
1542
- getInstalledQuestDBEngines(),
1543
- getInstalledTypeDBEngines(),
1544
- getInstalledInfluxDBEngines(),
1545
- getInstalledWeaviateEngines(),
1546
- getInstalledTigerBeetleEngines(),
1547
- ])
1548
-
1549
- return [
1550
- ...pgEngines,
1551
- ...mariadbEngines,
1552
- ...mysqlEngines,
1553
- ...sqliteEngines,
1554
- ...duckdbEngines,
1555
- ...mongodbEngines,
1556
- ...ferretdbEngines,
1557
- ...redisEngines,
1558
- ...valkeyEngines,
1559
- ...clickhouseEngines,
1560
- ...qdrantEngines,
1561
- ...meilisearchEngines,
1562
- ...couchdbEngines,
1563
- ...cockroachdbEngines,
1564
- ...surrealdbEngines,
1565
- ...questdbEngines,
1566
- ...typedbEngines,
1567
- ...influxdbEngines,
1568
- ...weaviateEngines,
1569
- ...tigerbeetleEngines,
1570
- ]
1571
- }
1572
-
1573
- // Export individual engine detection functions for use in other modules
1574
- export {
1575
- getInstalledMysqlEngines,
1576
- getInstalledSqliteEngines,
1577
- getInstalledDuckDBEngines,
1578
- getInstalledMongodbEngines,
1579
- getInstalledFerretDBEngines,
1580
- getInstalledRedisEngines,
1581
- getInstalledValkeyEngines,
1582
- getInstalledClickHouseEngines,
1583
- getInstalledQdrantEngines,
1584
- getInstalledMeilisearchEngines,
1585
- getInstalledCouchDBEngines,
1586
- getInstalledCockroachDBEngines,
1587
- getInstalledSurrealDBEngines,
1588
- getInstalledQuestDBEngines,
1589
- getInstalledTypeDBEngines,
1590
- getInstalledInfluxDBEngines,
1591
- getInstalledWeaviateEngines,
1592
- getInstalledTigerBeetleEngines,
1593
- }