spindb 0.37.2 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (811) hide show
  1. package/dist/cli/bin.js +9 -0
  2. package/dist/cli/bin.js.map +1 -0
  3. package/dist/cli/commands/attach.js +102 -0
  4. package/dist/cli/commands/attach.js.map +1 -0
  5. package/dist/cli/commands/backup.js +197 -0
  6. package/dist/cli/commands/backup.js.map +1 -0
  7. package/dist/cli/commands/backups.js +190 -0
  8. package/dist/cli/commands/backups.js.map +1 -0
  9. package/dist/cli/commands/clone.js +119 -0
  10. package/dist/cli/commands/clone.js.map +1 -0
  11. package/dist/cli/commands/config.js +276 -0
  12. package/dist/cli/commands/config.js.map +1 -0
  13. package/dist/cli/commands/connect.js +559 -0
  14. package/dist/cli/commands/connect.js.map +1 -0
  15. package/dist/cli/commands/create.js +952 -0
  16. package/dist/cli/commands/create.js.map +1 -0
  17. package/dist/cli/commands/databases.js +485 -0
  18. package/dist/cli/commands/databases.js.map +1 -0
  19. package/dist/cli/commands/delete.js +106 -0
  20. package/dist/cli/commands/delete.js.map +1 -0
  21. package/dist/cli/commands/deps.js +238 -0
  22. package/dist/cli/commands/deps.js.map +1 -0
  23. package/dist/cli/commands/detach.js +81 -0
  24. package/dist/cli/commands/detach.js.map +1 -0
  25. package/dist/cli/commands/doctor.js +567 -0
  26. package/dist/cli/commands/doctor.js.map +1 -0
  27. package/dist/cli/commands/duckdb.js +207 -0
  28. package/dist/cli/commands/duckdb.js.map +1 -0
  29. package/dist/cli/commands/edit.js +524 -0
  30. package/dist/cli/commands/edit.js.map +1 -0
  31. package/dist/cli/commands/engines.js +1414 -0
  32. package/dist/cli/commands/engines.js.map +1 -0
  33. package/dist/cli/commands/export.js +383 -0
  34. package/dist/cli/commands/export.js.map +1 -0
  35. package/dist/cli/commands/info.js +270 -0
  36. package/dist/cli/commands/info.js.map +1 -0
  37. package/dist/cli/commands/list.js +215 -0
  38. package/dist/cli/commands/list.js.map +1 -0
  39. package/dist/cli/commands/logs.js +81 -0
  40. package/dist/cli/commands/logs.js.map +1 -0
  41. package/dist/cli/commands/menu/backup-handlers.js +1202 -0
  42. package/dist/cli/commands/menu/backup-handlers.js.map +1 -0
  43. package/dist/cli/commands/menu/container-handlers.js +1788 -0
  44. package/dist/cli/commands/menu/container-handlers.js.map +1 -0
  45. package/dist/cli/commands/menu/engine-handlers.js +235 -0
  46. package/dist/cli/commands/menu/engine-handlers.js.map +1 -0
  47. package/dist/cli/commands/menu/index.js +266 -0
  48. package/dist/cli/commands/menu/index.js.map +1 -0
  49. package/dist/cli/commands/menu/settings-handlers.js +320 -0
  50. package/dist/cli/commands/menu/settings-handlers.js.map +1 -0
  51. package/dist/cli/commands/menu/shared.js +13 -0
  52. package/dist/cli/commands/menu/shared.js.map +1 -0
  53. package/dist/cli/commands/menu/shell-handlers.js +1573 -0
  54. package/dist/cli/commands/menu/shell-handlers.js.map +1 -0
  55. package/dist/cli/commands/menu/sql-handlers.js +185 -0
  56. package/dist/cli/commands/menu/sql-handlers.js.map +1 -0
  57. package/dist/cli/commands/menu/update-handlers.js +322 -0
  58. package/dist/cli/commands/menu/update-handlers.js.map +1 -0
  59. package/dist/cli/commands/menu/validators.js +9 -0
  60. package/dist/cli/commands/menu/validators.js.map +1 -0
  61. package/dist/cli/commands/ports.js +166 -0
  62. package/dist/cli/commands/ports.js.map +1 -0
  63. package/dist/cli/commands/pull.js +166 -0
  64. package/dist/cli/commands/pull.js.map +1 -0
  65. package/dist/cli/commands/query.js +180 -0
  66. package/dist/cli/commands/query.js.map +1 -0
  67. package/dist/cli/commands/restore.js +428 -0
  68. package/dist/cli/commands/restore.js.map +1 -0
  69. package/dist/cli/commands/run.js +115 -0
  70. package/dist/cli/commands/run.js.map +1 -0
  71. package/dist/cli/commands/self-update.js +99 -0
  72. package/dist/cli/commands/self-update.js.map +1 -0
  73. package/dist/cli/commands/sqlite.js +207 -0
  74. package/dist/cli/commands/sqlite.js.map +1 -0
  75. package/dist/cli/commands/start.js +196 -0
  76. package/dist/cli/commands/start.js.map +1 -0
  77. package/dist/cli/commands/stop.js +182 -0
  78. package/dist/cli/commands/stop.js.map +1 -0
  79. package/dist/cli/commands/url.js +88 -0
  80. package/dist/cli/commands/url.js.map +1 -0
  81. package/dist/cli/commands/users.js +189 -0
  82. package/dist/cli/commands/users.js.map +1 -0
  83. package/dist/cli/commands/version.js +52 -0
  84. package/dist/cli/commands/version.js.map +1 -0
  85. package/dist/cli/commands/which.js +258 -0
  86. package/dist/cli/commands/which.js.map +1 -0
  87. package/dist/cli/constants.js +212 -0
  88. package/dist/cli/constants.js.map +1 -0
  89. package/dist/cli/helpers.js +1120 -0
  90. package/dist/cli/helpers.js.map +1 -0
  91. package/dist/cli/index.js +146 -0
  92. package/dist/cli/index.js.map +1 -0
  93. package/dist/cli/ui/prompts.js +1002 -0
  94. package/dist/cli/ui/prompts.js.map +1 -0
  95. package/dist/cli/ui/spinner.js +74 -0
  96. package/dist/cli/ui/spinner.js.map +1 -0
  97. package/dist/cli/ui/theme.js +99 -0
  98. package/dist/cli/ui/theme.js.map +1 -0
  99. package/dist/cli/utils/file-follower.js +79 -0
  100. package/dist/cli/utils/file-follower.js.map +1 -0
  101. package/dist/config/backup-formats.js +363 -0
  102. package/dist/config/backup-formats.js.map +1 -0
  103. package/dist/config/defaults.js +25 -0
  104. package/dist/config/defaults.js.map +1 -0
  105. package/dist/config/engine-defaults.js +303 -0
  106. package/dist/config/engine-defaults.js.map +1 -0
  107. package/dist/config/engines-registry.js +103 -0
  108. package/dist/config/engines-registry.js.map +1 -0
  109. package/dist/config/os-dependencies.js +767 -0
  110. package/dist/config/os-dependencies.js.map +1 -0
  111. package/dist/config/paths.js +156 -0
  112. package/dist/config/paths.js.map +1 -0
  113. package/dist/config/version.js +3 -0
  114. package/dist/config/version.js.map +1 -0
  115. package/dist/core/backup-restore.js +219 -0
  116. package/dist/core/backup-restore.js.map +1 -0
  117. package/dist/core/base-binary-manager.js +403 -0
  118. package/dist/core/base-binary-manager.js.map +1 -0
  119. package/dist/core/base-document-binary-manager.js +364 -0
  120. package/dist/core/base-document-binary-manager.js.map +1 -0
  121. package/dist/core/base-embedded-binary-manager.js +364 -0
  122. package/dist/core/base-embedded-binary-manager.js.map +1 -0
  123. package/dist/core/base-server-binary-manager.js +368 -0
  124. package/dist/core/base-server-binary-manager.js.map +1 -0
  125. package/dist/core/config-manager.js +495 -0
  126. package/dist/core/config-manager.js.map +1 -0
  127. package/dist/core/container-manager.js +609 -0
  128. package/dist/core/container-manager.js.map +1 -0
  129. package/dist/core/credential-generator.js +67 -0
  130. package/dist/core/credential-generator.js.map +1 -0
  131. package/dist/core/credential-manager.js +211 -0
  132. package/dist/core/credential-manager.js.map +1 -0
  133. package/dist/core/dblab-utils.js +105 -0
  134. package/dist/core/dblab-utils.js.map +1 -0
  135. package/dist/core/dependency-manager.js +359 -0
  136. package/dist/core/dependency-manager.js.map +1 -0
  137. package/dist/core/docker-exporter.js +1077 -0
  138. package/dist/core/docker-exporter.js.map +1 -0
  139. package/dist/core/error-handler.js +295 -0
  140. package/dist/core/error-handler.js.map +1 -0
  141. package/dist/core/fs-error-utils.js +74 -0
  142. package/dist/core/fs-error-utils.js.map +1 -0
  143. package/dist/core/homebrew-version-manager.js +280 -0
  144. package/dist/core/homebrew-version-manager.js.map +1 -0
  145. package/dist/core/hostdb-client.js +252 -0
  146. package/dist/core/hostdb-client.js.map +1 -0
  147. package/dist/core/hostdb-metadata.js +243 -0
  148. package/dist/core/hostdb-metadata.js.map +1 -0
  149. package/dist/core/hostdb-releases-factory.js +161 -0
  150. package/dist/core/hostdb-releases-factory.js.map +1 -0
  151. package/dist/core/library-env.js +88 -0
  152. package/dist/core/library-env.js.map +1 -0
  153. package/dist/core/pgweb-utils.js +53 -0
  154. package/dist/core/pgweb-utils.js.map +1 -0
  155. package/dist/core/platform-service.js +632 -0
  156. package/dist/core/platform-service.js.map +1 -0
  157. package/dist/core/port-manager.js +136 -0
  158. package/dist/core/port-manager.js.map +1 -0
  159. package/dist/core/process-manager.js +445 -0
  160. package/dist/core/process-manager.js.map +1 -0
  161. package/dist/core/pull-manager.js +418 -0
  162. package/dist/core/pull-manager.js.map +1 -0
  163. package/dist/core/query-parser.js +449 -0
  164. package/dist/core/query-parser.js.map +1 -0
  165. package/dist/core/spawn-utils.js +90 -0
  166. package/dist/core/spawn-utils.js.map +1 -0
  167. package/dist/core/start-with-retry.js +90 -0
  168. package/dist/core/start-with-retry.js.map +1 -0
  169. package/dist/core/test-cleanup.js +85 -0
  170. package/dist/core/test-cleanup.js.map +1 -0
  171. package/dist/core/tls-generator.js +84 -0
  172. package/dist/core/tls-generator.js.map +1 -0
  173. package/dist/core/transaction-manager.js +139 -0
  174. package/dist/core/transaction-manager.js.map +1 -0
  175. package/dist/core/update-manager.js +241 -0
  176. package/dist/core/update-manager.js.map +1 -0
  177. package/dist/core/version-migration.js +260 -0
  178. package/dist/core/version-migration.js.map +1 -0
  179. package/dist/core/version-utils.js +91 -0
  180. package/dist/core/version-utils.js.map +1 -0
  181. package/dist/engines/base-engine.js +179 -0
  182. package/dist/engines/base-engine.js.map +1 -0
  183. package/dist/engines/clickhouse/backup.js +289 -0
  184. package/dist/engines/clickhouse/backup.js.map +1 -0
  185. package/dist/engines/clickhouse/binary-manager.js +145 -0
  186. package/dist/engines/clickhouse/binary-manager.js.map +1 -0
  187. package/dist/engines/clickhouse/binary-urls.js +100 -0
  188. package/dist/engines/clickhouse/binary-urls.js.map +1 -0
  189. package/dist/engines/clickhouse/cli-utils.js +143 -0
  190. package/dist/engines/clickhouse/cli-utils.js.map +1 -0
  191. package/dist/engines/clickhouse/hostdb-releases.js +24 -0
  192. package/dist/engines/clickhouse/hostdb-releases.js.map +1 -0
  193. package/dist/engines/clickhouse/index.js +1077 -0
  194. package/dist/engines/clickhouse/index.js.map +1 -0
  195. package/dist/engines/clickhouse/restore.js +335 -0
  196. package/dist/engines/clickhouse/restore.js.map +1 -0
  197. package/dist/engines/clickhouse/version-maps.js +83 -0
  198. package/dist/engines/clickhouse/version-maps.js.map +1 -0
  199. package/dist/engines/clickhouse/version-validator.js +133 -0
  200. package/dist/engines/clickhouse/version-validator.js.map +1 -0
  201. package/dist/engines/cockroachdb/backup.js +261 -0
  202. package/dist/engines/cockroachdb/backup.js.map +1 -0
  203. package/dist/engines/cockroachdb/binary-manager.js +33 -0
  204. package/dist/engines/cockroachdb/binary-manager.js.map +1 -0
  205. package/dist/engines/cockroachdb/binary-urls.js +33 -0
  206. package/dist/engines/cockroachdb/binary-urls.js.map +1 -0
  207. package/dist/engines/cockroachdb/cli-utils.js +338 -0
  208. package/dist/engines/cockroachdb/cli-utils.js.map +1 -0
  209. package/dist/engines/cockroachdb/hostdb-releases.js +21 -0
  210. package/dist/engines/cockroachdb/hostdb-releases.js.map +1 -0
  211. package/dist/engines/cockroachdb/index.js +1016 -0
  212. package/dist/engines/cockroachdb/index.js.map +1 -0
  213. package/dist/engines/cockroachdb/restore.js +323 -0
  214. package/dist/engines/cockroachdb/restore.js.map +1 -0
  215. package/dist/engines/cockroachdb/version-maps.js +37 -0
  216. package/dist/engines/cockroachdb/version-maps.js.map +1 -0
  217. package/dist/engines/couchdb/api-client.js +64 -0
  218. package/dist/engines/couchdb/api-client.js.map +1 -0
  219. package/dist/engines/couchdb/backup.js +90 -0
  220. package/dist/engines/couchdb/backup.js.map +1 -0
  221. package/dist/engines/couchdb/binary-manager.js +62 -0
  222. package/dist/engines/couchdb/binary-manager.js.map +1 -0
  223. package/dist/engines/couchdb/binary-urls.js +92 -0
  224. package/dist/engines/couchdb/binary-urls.js.map +1 -0
  225. package/dist/engines/couchdb/hostdb-releases.js +21 -0
  226. package/dist/engines/couchdb/hostdb-releases.js.map +1 -0
  227. package/dist/engines/couchdb/index.js +1043 -0
  228. package/dist/engines/couchdb/index.js.map +1 -0
  229. package/dist/engines/couchdb/restore.js +198 -0
  230. package/dist/engines/couchdb/restore.js.map +1 -0
  231. package/dist/engines/couchdb/version-maps.js +67 -0
  232. package/dist/engines/couchdb/version-maps.js.map +1 -0
  233. package/dist/engines/couchdb/version-validator.js +88 -0
  234. package/dist/engines/couchdb/version-validator.js.map +1 -0
  235. package/dist/engines/duckdb/binary-manager.js +33 -0
  236. package/dist/engines/duckdb/binary-manager.js.map +1 -0
  237. package/{engines/duckdb/binary-urls.ts → dist/engines/duckdb/binary-urls.js} +11 -16
  238. package/dist/engines/duckdb/binary-urls.js.map +1 -0
  239. package/dist/engines/duckdb/hostdb-releases.js +21 -0
  240. package/dist/engines/duckdb/hostdb-releases.js.map +1 -0
  241. package/dist/engines/duckdb/index.js +594 -0
  242. package/dist/engines/duckdb/index.js.map +1 -0
  243. package/dist/engines/duckdb/registry.js +265 -0
  244. package/dist/engines/duckdb/registry.js.map +1 -0
  245. package/dist/engines/duckdb/scanner.js +12 -0
  246. package/dist/engines/duckdb/scanner.js.map +1 -0
  247. package/dist/engines/duckdb/version-maps.js +67 -0
  248. package/dist/engines/duckdb/version-maps.js.map +1 -0
  249. package/dist/engines/duckdb/version-validator.js +62 -0
  250. package/dist/engines/duckdb/version-validator.js.map +1 -0
  251. package/dist/engines/ferretdb/backup.js +170 -0
  252. package/dist/engines/ferretdb/backup.js.map +1 -0
  253. package/dist/engines/ferretdb/binary-manager.js +765 -0
  254. package/dist/engines/ferretdb/binary-manager.js.map +1 -0
  255. package/dist/engines/ferretdb/binary-urls.js +135 -0
  256. package/dist/engines/ferretdb/binary-urls.js.map +1 -0
  257. package/dist/engines/ferretdb/index.js +1517 -0
  258. package/dist/engines/ferretdb/index.js.map +1 -0
  259. package/dist/engines/ferretdb/restore.js +310 -0
  260. package/dist/engines/ferretdb/restore.js.map +1 -0
  261. package/{engines/ferretdb/version-maps.ts → dist/engines/ferretdb/version-maps.js} +62 -79
  262. package/dist/engines/ferretdb/version-maps.js.map +1 -0
  263. package/dist/engines/file-based-utils.js +184 -0
  264. package/dist/engines/file-based-utils.js.map +1 -0
  265. package/dist/engines/index.js +124 -0
  266. package/dist/engines/index.js.map +1 -0
  267. package/dist/engines/influxdb/api-client.js +54 -0
  268. package/dist/engines/influxdb/api-client.js.map +1 -0
  269. package/dist/engines/influxdb/backup.js +119 -0
  270. package/dist/engines/influxdb/backup.js.map +1 -0
  271. package/dist/engines/influxdb/binary-manager.js +87 -0
  272. package/dist/engines/influxdb/binary-manager.js.map +1 -0
  273. package/dist/engines/influxdb/binary-urls.js +56 -0
  274. package/dist/engines/influxdb/binary-urls.js.map +1 -0
  275. package/dist/engines/influxdb/hostdb-releases.js +21 -0
  276. package/dist/engines/influxdb/hostdb-releases.js.map +1 -0
  277. package/dist/engines/influxdb/index.js +962 -0
  278. package/dist/engines/influxdb/index.js.map +1 -0
  279. package/dist/engines/influxdb/restore.js +329 -0
  280. package/dist/engines/influxdb/restore.js.map +1 -0
  281. package/dist/engines/influxdb/version-maps.js +64 -0
  282. package/dist/engines/influxdb/version-maps.js.map +1 -0
  283. package/dist/engines/influxdb/version-validator.js +109 -0
  284. package/dist/engines/influxdb/version-validator.js.map +1 -0
  285. package/dist/engines/mariadb/backup.js +178 -0
  286. package/dist/engines/mariadb/backup.js.map +1 -0
  287. package/dist/engines/mariadb/binary-manager.js +33 -0
  288. package/dist/engines/mariadb/binary-manager.js.map +1 -0
  289. package/{engines/mariadb/binary-urls.ts → dist/engines/mariadb/binary-urls.js} +38 -55
  290. package/dist/engines/mariadb/binary-urls.js.map +1 -0
  291. package/dist/engines/mariadb/hostdb-releases.js +21 -0
  292. package/dist/engines/mariadb/hostdb-releases.js.map +1 -0
  293. package/dist/engines/mariadb/index.js +1011 -0
  294. package/dist/engines/mariadb/index.js.map +1 -0
  295. package/dist/engines/mariadb/restore.js +322 -0
  296. package/dist/engines/mariadb/restore.js.map +1 -0
  297. package/dist/engines/mariadb/version-maps.js +63 -0
  298. package/dist/engines/mariadb/version-maps.js.map +1 -0
  299. package/dist/engines/mariadb/version-validator.js +143 -0
  300. package/dist/engines/mariadb/version-validator.js.map +1 -0
  301. package/dist/engines/meilisearch/api-client.js +50 -0
  302. package/dist/engines/meilisearch/api-client.js.map +1 -0
  303. package/dist/engines/meilisearch/backup.js +167 -0
  304. package/dist/engines/meilisearch/backup.js.map +1 -0
  305. package/dist/engines/meilisearch/binary-manager.js +31 -0
  306. package/dist/engines/meilisearch/binary-manager.js.map +1 -0
  307. package/dist/engines/meilisearch/binary-urls.js +56 -0
  308. package/dist/engines/meilisearch/binary-urls.js.map +1 -0
  309. package/dist/engines/meilisearch/hostdb-releases.js +21 -0
  310. package/dist/engines/meilisearch/hostdb-releases.js.map +1 -0
  311. package/dist/engines/meilisearch/index.js +992 -0
  312. package/dist/engines/meilisearch/index.js.map +1 -0
  313. package/dist/engines/meilisearch/restore.js +167 -0
  314. package/dist/engines/meilisearch/restore.js.map +1 -0
  315. package/dist/engines/meilisearch/version-maps.js +67 -0
  316. package/dist/engines/meilisearch/version-maps.js.map +1 -0
  317. package/dist/engines/meilisearch/version-validator.js +109 -0
  318. package/dist/engines/meilisearch/version-validator.js.map +1 -0
  319. package/dist/engines/mongodb/backup.js +109 -0
  320. package/dist/engines/mongodb/backup.js.map +1 -0
  321. package/dist/engines/mongodb/binary-manager.js +36 -0
  322. package/dist/engines/mongodb/binary-manager.js.map +1 -0
  323. package/dist/engines/mongodb/binary-urls.js +46 -0
  324. package/dist/engines/mongodb/binary-urls.js.map +1 -0
  325. package/dist/engines/mongodb/cli-utils.js +131 -0
  326. package/dist/engines/mongodb/cli-utils.js.map +1 -0
  327. package/dist/engines/mongodb/hostdb-releases.js +77 -0
  328. package/dist/engines/mongodb/hostdb-releases.js.map +1 -0
  329. package/dist/engines/mongodb/index.js +873 -0
  330. package/dist/engines/mongodb/index.js.map +1 -0
  331. package/dist/engines/mongodb/restore.js +276 -0
  332. package/dist/engines/mongodb/restore.js.map +1 -0
  333. package/dist/engines/mongodb/version-maps.js +79 -0
  334. package/dist/engines/mongodb/version-maps.js.map +1 -0
  335. package/dist/engines/mongodb/version-validator.js +133 -0
  336. package/dist/engines/mongodb/version-validator.js.map +1 -0
  337. package/dist/engines/mysql/backup.js +210 -0
  338. package/dist/engines/mysql/backup.js.map +1 -0
  339. package/dist/engines/mysql/binary-detection.js +325 -0
  340. package/dist/engines/mysql/binary-detection.js.map +1 -0
  341. package/dist/engines/mysql/binary-manager.js +30 -0
  342. package/dist/engines/mysql/binary-manager.js.map +1 -0
  343. package/dist/engines/mysql/binary-urls.js +87 -0
  344. package/dist/engines/mysql/binary-urls.js.map +1 -0
  345. package/{engines/mysql/hostdb-releases.ts → dist/engines/mysql/hostdb-releases.js} +20 -23
  346. package/dist/engines/mysql/hostdb-releases.js.map +1 -0
  347. package/dist/engines/mysql/index.js +1066 -0
  348. package/dist/engines/mysql/index.js.map +1 -0
  349. package/dist/engines/mysql/restore.js +361 -0
  350. package/dist/engines/mysql/restore.js.map +1 -0
  351. package/dist/engines/mysql/version-maps.js +79 -0
  352. package/dist/engines/mysql/version-maps.js.map +1 -0
  353. package/dist/engines/mysql/version-validator.js +266 -0
  354. package/dist/engines/mysql/version-validator.js.map +1 -0
  355. package/dist/engines/postgresql/backup.js +118 -0
  356. package/dist/engines/postgresql/backup.js.map +1 -0
  357. package/dist/engines/postgresql/binary-manager.js +85 -0
  358. package/dist/engines/postgresql/binary-manager.js.map +1 -0
  359. package/dist/engines/postgresql/binary-urls.js +80 -0
  360. package/dist/engines/postgresql/binary-urls.js.map +1 -0
  361. package/dist/engines/postgresql/hostdb-releases.js +21 -0
  362. package/dist/engines/postgresql/hostdb-releases.js.map +1 -0
  363. package/dist/engines/postgresql/index.js +852 -0
  364. package/dist/engines/postgresql/index.js.map +1 -0
  365. package/dist/engines/postgresql/remote-version.js +109 -0
  366. package/dist/engines/postgresql/remote-version.js.map +1 -0
  367. package/dist/engines/postgresql/restore.js +254 -0
  368. package/dist/engines/postgresql/restore.js.map +1 -0
  369. package/dist/engines/postgresql/version-maps.js +73 -0
  370. package/dist/engines/postgresql/version-maps.js.map +1 -0
  371. package/dist/engines/postgresql/version-validator.js +286 -0
  372. package/dist/engines/postgresql/version-validator.js.map +1 -0
  373. package/dist/engines/qdrant/api-client.js +50 -0
  374. package/dist/engines/qdrant/api-client.js.map +1 -0
  375. package/dist/engines/qdrant/backup.js +115 -0
  376. package/dist/engines/qdrant/backup.js.map +1 -0
  377. package/dist/engines/qdrant/binary-manager.js +31 -0
  378. package/dist/engines/qdrant/binary-manager.js.map +1 -0
  379. package/dist/engines/qdrant/binary-urls.js +92 -0
  380. package/dist/engines/qdrant/binary-urls.js.map +1 -0
  381. package/dist/engines/qdrant/cli-utils.js +39 -0
  382. package/dist/engines/qdrant/cli-utils.js.map +1 -0
  383. package/dist/engines/qdrant/hostdb-releases.js +21 -0
  384. package/dist/engines/qdrant/hostdb-releases.js.map +1 -0
  385. package/dist/engines/qdrant/index.js +1002 -0
  386. package/dist/engines/qdrant/index.js.map +1 -0
  387. package/dist/engines/qdrant/restore.js +154 -0
  388. package/dist/engines/qdrant/restore.js.map +1 -0
  389. package/dist/engines/qdrant/version-maps.js +67 -0
  390. package/dist/engines/qdrant/version-maps.js.map +1 -0
  391. package/dist/engines/qdrant/version-validator.js +109 -0
  392. package/dist/engines/qdrant/version-validator.js.map +1 -0
  393. package/dist/engines/questdb/backup.js +191 -0
  394. package/dist/engines/questdb/backup.js.map +1 -0
  395. package/dist/engines/questdb/binary-manager.js +247 -0
  396. package/dist/engines/questdb/binary-manager.js.map +1 -0
  397. package/dist/engines/questdb/binary-urls.js +27 -0
  398. package/dist/engines/questdb/binary-urls.js.map +1 -0
  399. package/dist/engines/questdb/hostdb-releases.js +21 -0
  400. package/dist/engines/questdb/hostdb-releases.js.map +1 -0
  401. package/dist/engines/questdb/index.js +814 -0
  402. package/dist/engines/questdb/index.js.map +1 -0
  403. package/dist/engines/questdb/restore.js +202 -0
  404. package/dist/engines/questdb/restore.js.map +1 -0
  405. package/dist/engines/questdb/version-maps.js +33 -0
  406. package/dist/engines/questdb/version-maps.js.map +1 -0
  407. package/dist/engines/questdb/version-validator.js +99 -0
  408. package/dist/engines/questdb/version-validator.js.map +1 -0
  409. package/dist/engines/redis/backup.js +292 -0
  410. package/dist/engines/redis/backup.js.map +1 -0
  411. package/dist/engines/redis/binary-manager.js +32 -0
  412. package/dist/engines/redis/binary-manager.js.map +1 -0
  413. package/dist/engines/redis/binary-urls.js +96 -0
  414. package/dist/engines/redis/binary-urls.js.map +1 -0
  415. package/dist/engines/redis/cli-utils.js +38 -0
  416. package/dist/engines/redis/cli-utils.js.map +1 -0
  417. package/dist/engines/redis/hostdb-releases.js +21 -0
  418. package/dist/engines/redis/hostdb-releases.js.map +1 -0
  419. package/dist/engines/redis/index.js +1263 -0
  420. package/dist/engines/redis/index.js.map +1 -0
  421. package/dist/engines/redis/restore.js +338 -0
  422. package/dist/engines/redis/restore.js.map +1 -0
  423. package/dist/engines/redis/version-maps.js +70 -0
  424. package/dist/engines/redis/version-maps.js.map +1 -0
  425. package/dist/engines/redis/version-validator.js +109 -0
  426. package/dist/engines/redis/version-validator.js.map +1 -0
  427. package/dist/engines/sqlite/binary-manager.js +39 -0
  428. package/dist/engines/sqlite/binary-manager.js.map +1 -0
  429. package/{engines/sqlite/binary-urls.ts → dist/engines/sqlite/binary-urls.js} +11 -16
  430. package/dist/engines/sqlite/binary-urls.js.map +1 -0
  431. package/dist/engines/sqlite/hostdb-releases.js +21 -0
  432. package/dist/engines/sqlite/hostdb-releases.js.map +1 -0
  433. package/dist/engines/sqlite/index.js +493 -0
  434. package/dist/engines/sqlite/index.js.map +1 -0
  435. package/dist/engines/sqlite/registry.js +163 -0
  436. package/dist/engines/sqlite/registry.js.map +1 -0
  437. package/dist/engines/sqlite/scanner.js +12 -0
  438. package/dist/engines/sqlite/scanner.js.map +1 -0
  439. package/dist/engines/sqlite/version-maps.js +57 -0
  440. package/dist/engines/sqlite/version-maps.js.map +1 -0
  441. package/dist/engines/surrealdb/backup.js +97 -0
  442. package/dist/engines/surrealdb/backup.js.map +1 -0
  443. package/dist/engines/surrealdb/binary-manager.js +33 -0
  444. package/dist/engines/surrealdb/binary-manager.js.map +1 -0
  445. package/dist/engines/surrealdb/binary-urls.js +33 -0
  446. package/dist/engines/surrealdb/binary-urls.js.map +1 -0
  447. package/dist/engines/surrealdb/cli-utils.js +147 -0
  448. package/dist/engines/surrealdb/cli-utils.js.map +1 -0
  449. package/dist/engines/surrealdb/hostdb-releases.js +21 -0
  450. package/dist/engines/surrealdb/hostdb-releases.js.map +1 -0
  451. package/dist/engines/surrealdb/index.js +1022 -0
  452. package/dist/engines/surrealdb/index.js.map +1 -0
  453. package/dist/engines/surrealdb/restore.js +224 -0
  454. package/dist/engines/surrealdb/restore.js.map +1 -0
  455. package/dist/engines/surrealdb/version-maps.js +36 -0
  456. package/dist/engines/surrealdb/version-maps.js.map +1 -0
  457. package/dist/engines/tigerbeetle/backup.js +36 -0
  458. package/dist/engines/tigerbeetle/backup.js.map +1 -0
  459. package/dist/engines/tigerbeetle/binary-manager.js +72 -0
  460. package/dist/engines/tigerbeetle/binary-manager.js.map +1 -0
  461. package/dist/engines/tigerbeetle/binary-urls.js +49 -0
  462. package/dist/engines/tigerbeetle/binary-urls.js.map +1 -0
  463. package/dist/engines/tigerbeetle/hostdb-releases.js +21 -0
  464. package/dist/engines/tigerbeetle/hostdb-releases.js.map +1 -0
  465. package/dist/engines/tigerbeetle/index.js +559 -0
  466. package/dist/engines/tigerbeetle/index.js.map +1 -0
  467. package/dist/engines/tigerbeetle/restore.js +91 -0
  468. package/dist/engines/tigerbeetle/restore.js.map +1 -0
  469. package/{engines/tigerbeetle/version-maps.ts → dist/engines/tigerbeetle/version-maps.js} +22 -31
  470. package/dist/engines/tigerbeetle/version-maps.js.map +1 -0
  471. package/dist/engines/tigerbeetle/version-validator.js +108 -0
  472. package/dist/engines/tigerbeetle/version-validator.js.map +1 -0
  473. package/dist/engines/typedb/backup.js +129 -0
  474. package/dist/engines/typedb/backup.js.map +1 -0
  475. package/dist/engines/typedb/binary-manager.js +151 -0
  476. package/dist/engines/typedb/binary-manager.js.map +1 -0
  477. package/dist/engines/typedb/binary-urls.js +33 -0
  478. package/dist/engines/typedb/binary-urls.js.map +1 -0
  479. package/dist/engines/typedb/cli-utils.js +163 -0
  480. package/dist/engines/typedb/cli-utils.js.map +1 -0
  481. package/dist/engines/typedb/hostdb-releases.js +21 -0
  482. package/dist/engines/typedb/hostdb-releases.js.map +1 -0
  483. package/dist/engines/typedb/index.js +1003 -0
  484. package/dist/engines/typedb/index.js.map +1 -0
  485. package/dist/engines/typedb/restore.js +279 -0
  486. package/dist/engines/typedb/restore.js.map +1 -0
  487. package/dist/engines/typedb/version-maps.js +40 -0
  488. package/dist/engines/typedb/version-maps.js.map +1 -0
  489. package/dist/engines/typedb/version-validator.js +103 -0
  490. package/dist/engines/typedb/version-validator.js.map +1 -0
  491. package/dist/engines/valkey/backup.js +292 -0
  492. package/dist/engines/valkey/backup.js.map +1 -0
  493. package/dist/engines/valkey/binary-manager.js +33 -0
  494. package/dist/engines/valkey/binary-manager.js.map +1 -0
  495. package/dist/engines/valkey/binary-urls.js +98 -0
  496. package/dist/engines/valkey/binary-urls.js.map +1 -0
  497. package/dist/engines/valkey/cli-utils.js +38 -0
  498. package/dist/engines/valkey/cli-utils.js.map +1 -0
  499. package/dist/engines/valkey/hostdb-releases.js +21 -0
  500. package/dist/engines/valkey/hostdb-releases.js.map +1 -0
  501. package/dist/engines/valkey/index.js +1257 -0
  502. package/dist/engines/valkey/index.js.map +1 -0
  503. package/dist/engines/valkey/restore.js +340 -0
  504. package/dist/engines/valkey/restore.js.map +1 -0
  505. package/dist/engines/valkey/version-maps.js +70 -0
  506. package/dist/engines/valkey/version-maps.js.map +1 -0
  507. package/dist/engines/valkey/version-validator.js +112 -0
  508. package/dist/engines/valkey/version-validator.js.map +1 -0
  509. package/dist/engines/weaviate/api-client.js +50 -0
  510. package/dist/engines/weaviate/api-client.js.map +1 -0
  511. package/dist/engines/weaviate/backup.js +95 -0
  512. package/dist/engines/weaviate/backup.js.map +1 -0
  513. package/dist/engines/weaviate/binary-manager.js +58 -0
  514. package/dist/engines/weaviate/binary-manager.js.map +1 -0
  515. package/dist/engines/weaviate/binary-urls.js +92 -0
  516. package/dist/engines/weaviate/binary-urls.js.map +1 -0
  517. package/dist/engines/weaviate/cli-utils.js +39 -0
  518. package/dist/engines/weaviate/cli-utils.js.map +1 -0
  519. package/dist/engines/weaviate/hostdb-releases.js +21 -0
  520. package/dist/engines/weaviate/hostdb-releases.js.map +1 -0
  521. package/dist/engines/weaviate/index.js +871 -0
  522. package/dist/engines/weaviate/index.js.map +1 -0
  523. package/dist/engines/weaviate/restore.js +185 -0
  524. package/dist/engines/weaviate/restore.js.map +1 -0
  525. package/dist/engines/weaviate/version-maps.js +67 -0
  526. package/dist/engines/weaviate/version-maps.js.map +1 -0
  527. package/dist/engines/weaviate/version-validator.js +109 -0
  528. package/dist/engines/weaviate/version-validator.js.map +1 -0
  529. package/dist/types/index.js +102 -0
  530. package/dist/types/index.js.map +1 -0
  531. package/package.json +12 -9
  532. package/bin/cli.js +0 -68
  533. package/cli/bin.ts +0 -10
  534. package/cli/commands/attach.ts +0 -139
  535. package/cli/commands/backup.ts +0 -290
  536. package/cli/commands/backups.ts +0 -247
  537. package/cli/commands/clone.ts +0 -159
  538. package/cli/commands/config.ts +0 -367
  539. package/cli/commands/connect.ts +0 -684
  540. package/cli/commands/create.ts +0 -1201
  541. package/cli/commands/databases.ts +0 -630
  542. package/cli/commands/delete.ts +0 -133
  543. package/cli/commands/deps.ts +0 -342
  544. package/cli/commands/detach.ts +0 -107
  545. package/cli/commands/doctor.ts +0 -689
  546. package/cli/commands/duckdb.ts +0 -273
  547. package/cli/commands/edit.ts +0 -683
  548. package/cli/commands/engines.ts +0 -1914
  549. package/cli/commands/export.ts +0 -544
  550. package/cli/commands/info.ts +0 -340
  551. package/cli/commands/list.ts +0 -284
  552. package/cli/commands/logs.ts +0 -102
  553. package/cli/commands/menu/backup-handlers.ts +0 -1571
  554. package/cli/commands/menu/container-handlers.ts +0 -2288
  555. package/cli/commands/menu/engine-handlers.ts +0 -355
  556. package/cli/commands/menu/index.ts +0 -342
  557. package/cli/commands/menu/settings-handlers.ts +0 -365
  558. package/cli/commands/menu/shared.ts +0 -23
  559. package/cli/commands/menu/shell-handlers.ts +0 -1811
  560. package/cli/commands/menu/sql-handlers.ts +0 -231
  561. package/cli/commands/menu/update-handlers.ts +0 -378
  562. package/cli/commands/menu/validators.ts +0 -8
  563. package/cli/commands/ports.ts +0 -211
  564. package/cli/commands/pull.ts +0 -223
  565. package/cli/commands/query.ts +0 -241
  566. package/cli/commands/restore.ts +0 -587
  567. package/cli/commands/run.ts +0 -178
  568. package/cli/commands/self-update.ts +0 -121
  569. package/cli/commands/sqlite.ts +0 -273
  570. package/cli/commands/start.ts +0 -218
  571. package/cli/commands/stop.ts +0 -241
  572. package/cli/commands/url.ts +0 -104
  573. package/cli/commands/users.ts +0 -264
  574. package/cli/commands/version.ts +0 -55
  575. package/cli/commands/which.ts +0 -290
  576. package/cli/constants.ts +0 -233
  577. package/cli/helpers.ts +0 -1593
  578. package/cli/index.ts +0 -162
  579. package/cli/ui/prompts.ts +0 -1525
  580. package/cli/ui/spinner.ts +0 -88
  581. package/cli/ui/theme.ts +0 -128
  582. package/cli/utils/file-follower.ts +0 -93
  583. package/config/backup-formats.ts +0 -446
  584. package/config/defaults.ts +0 -56
  585. package/config/engine-defaults.ts +0 -336
  586. package/config/engines-registry.ts +0 -150
  587. package/config/engines.schema.json +0 -135
  588. package/config/os-dependencies.ts +0 -888
  589. package/config/paths.ts +0 -200
  590. package/core/backup-restore.ts +0 -330
  591. package/core/base-binary-manager.ts +0 -562
  592. package/core/base-document-binary-manager.ts +0 -523
  593. package/core/base-embedded-binary-manager.ts +0 -547
  594. package/core/base-server-binary-manager.ts +0 -523
  595. package/core/config-manager.ts +0 -652
  596. package/core/container-manager.ts +0 -787
  597. package/core/credential-generator.ts +0 -93
  598. package/core/credential-manager.ts +0 -259
  599. package/core/dblab-utils.ts +0 -113
  600. package/core/dependency-manager.ts +0 -512
  601. package/core/docker-exporter.ts +0 -1345
  602. package/core/error-handler.ts +0 -419
  603. package/core/fs-error-utils.ts +0 -82
  604. package/core/homebrew-version-manager.ts +0 -352
  605. package/core/hostdb-client.ts +0 -344
  606. package/core/hostdb-metadata.ts +0 -350
  607. package/core/hostdb-releases-factory.ts +0 -237
  608. package/core/library-env.ts +0 -118
  609. package/core/pgweb-utils.ts +0 -62
  610. package/core/platform-service.ts +0 -829
  611. package/core/port-manager.ts +0 -165
  612. package/core/process-manager.ts +0 -576
  613. package/core/pull-manager.ts +0 -511
  614. package/core/query-parser.ts +0 -514
  615. package/core/spawn-utils.ts +0 -122
  616. package/core/start-with-retry.ts +0 -130
  617. package/core/test-cleanup.ts +0 -108
  618. package/core/tls-generator.ts +0 -116
  619. package/core/transaction-manager.ts +0 -158
  620. package/core/update-manager.ts +0 -308
  621. package/core/version-migration.ts +0 -346
  622. package/core/version-utils.ts +0 -104
  623. package/engines/base-engine.ts +0 -340
  624. package/engines/clickhouse/README.md +0 -231
  625. package/engines/clickhouse/backup.ts +0 -398
  626. package/engines/clickhouse/binary-manager.ts +0 -201
  627. package/engines/clickhouse/binary-urls.ts +0 -125
  628. package/engines/clickhouse/cli-utils.ts +0 -176
  629. package/engines/clickhouse/hostdb-releases.ts +0 -30
  630. package/engines/clickhouse/index.ts +0 -1345
  631. package/engines/clickhouse/restore.ts +0 -466
  632. package/engines/clickhouse/version-maps.ts +0 -95
  633. package/engines/clickhouse/version-validator.ts +0 -154
  634. package/engines/cockroachdb/README.md +0 -170
  635. package/engines/cockroachdb/backup.ts +0 -376
  636. package/engines/cockroachdb/binary-manager.ts +0 -45
  637. package/engines/cockroachdb/binary-urls.ts +0 -40
  638. package/engines/cockroachdb/cli-utils.ts +0 -384
  639. package/engines/cockroachdb/hostdb-releases.ts +0 -26
  640. package/engines/cockroachdb/index.ts +0 -1276
  641. package/engines/cockroachdb/restore.ts +0 -455
  642. package/engines/cockroachdb/version-maps.ts +0 -42
  643. package/engines/couchdb/README.md +0 -257
  644. package/engines/couchdb/api-client.ts +0 -81
  645. package/engines/couchdb/backup.ts +0 -137
  646. package/engines/couchdb/binary-manager.ts +0 -86
  647. package/engines/couchdb/binary-urls.ts +0 -115
  648. package/engines/couchdb/hostdb-releases.ts +0 -23
  649. package/engines/couchdb/index.ts +0 -1429
  650. package/engines/couchdb/restore.ts +0 -290
  651. package/engines/couchdb/version-maps.ts +0 -78
  652. package/engines/couchdb/version-validator.ts +0 -111
  653. package/engines/duckdb/README.md +0 -154
  654. package/engines/duckdb/binary-manager.ts +0 -45
  655. package/engines/duckdb/hostdb-releases.ts +0 -23
  656. package/engines/duckdb/index.ts +0 -749
  657. package/engines/duckdb/registry.ts +0 -303
  658. package/engines/duckdb/scanner.ts +0 -22
  659. package/engines/duckdb/version-maps.ts +0 -78
  660. package/engines/duckdb/version-validator.ts +0 -78
  661. package/engines/ferretdb/README.md +0 -262
  662. package/engines/ferretdb/backup.ts +0 -173
  663. package/engines/ferretdb/binary-manager.ts +0 -1095
  664. package/engines/ferretdb/binary-urls.ts +0 -183
  665. package/engines/ferretdb/index.ts +0 -1907
  666. package/engines/ferretdb/restore.ts +0 -357
  667. package/engines/file-based-utils.ts +0 -262
  668. package/engines/index.ts +0 -131
  669. package/engines/influxdb/README.md +0 -180
  670. package/engines/influxdb/api-client.ts +0 -64
  671. package/engines/influxdb/backup.ts +0 -160
  672. package/engines/influxdb/binary-manager.ts +0 -110
  673. package/engines/influxdb/binary-urls.ts +0 -69
  674. package/engines/influxdb/hostdb-releases.ts +0 -23
  675. package/engines/influxdb/index.ts +0 -1272
  676. package/engines/influxdb/restore.ts +0 -417
  677. package/engines/influxdb/version-maps.ts +0 -75
  678. package/engines/influxdb/version-validator.ts +0 -128
  679. package/engines/mariadb/README.md +0 -141
  680. package/engines/mariadb/backup.ts +0 -233
  681. package/engines/mariadb/binary-manager.ts +0 -45
  682. package/engines/mariadb/hostdb-releases.ts +0 -23
  683. package/engines/mariadb/index.ts +0 -1300
  684. package/engines/mariadb/restore.ts +0 -447
  685. package/engines/mariadb/version-maps.ts +0 -72
  686. package/engines/mariadb/version-validator.ts +0 -181
  687. package/engines/meilisearch/README.md +0 -255
  688. package/engines/meilisearch/api-client.ts +0 -61
  689. package/engines/meilisearch/backup.ts +0 -233
  690. package/engines/meilisearch/binary-manager.ts +0 -43
  691. package/engines/meilisearch/binary-urls.ts +0 -69
  692. package/engines/meilisearch/hostdb-releases.ts +0 -26
  693. package/engines/meilisearch/index.ts +0 -1292
  694. package/engines/meilisearch/restore.ts +0 -219
  695. package/engines/meilisearch/version-maps.ts +0 -78
  696. package/engines/meilisearch/version-validator.ts +0 -128
  697. package/engines/mongodb/README.md +0 -162
  698. package/engines/mongodb/backup.ts +0 -127
  699. package/engines/mongodb/binary-manager.ts +0 -48
  700. package/engines/mongodb/binary-urls.ts +0 -63
  701. package/engines/mongodb/cli-utils.ts +0 -171
  702. package/engines/mongodb/hostdb-releases.ts +0 -91
  703. package/engines/mongodb/index.ts +0 -1118
  704. package/engines/mongodb/restore.ts +0 -361
  705. package/engines/mongodb/version-maps.ts +0 -91
  706. package/engines/mongodb/version-validator.ts +0 -160
  707. package/engines/mysql/README.md +0 -142
  708. package/engines/mysql/backup.ts +0 -270
  709. package/engines/mysql/binary-detection.ts +0 -408
  710. package/engines/mysql/binary-manager.ts +0 -42
  711. package/engines/mysql/binary-urls.ts +0 -104
  712. package/engines/mysql/index.ts +0 -1361
  713. package/engines/mysql/restore.ts +0 -500
  714. package/engines/mysql/version-maps.ts +0 -91
  715. package/engines/mysql/version-validator.ts +0 -369
  716. package/engines/postgresql/README.md +0 -158
  717. package/engines/postgresql/backup.ts +0 -151
  718. package/engines/postgresql/binary-manager.ts +0 -114
  719. package/engines/postgresql/binary-urls.ts +0 -99
  720. package/engines/postgresql/hostdb-releases.ts +0 -26
  721. package/engines/postgresql/index.ts +0 -1143
  722. package/engines/postgresql/remote-version.ts +0 -161
  723. package/engines/postgresql/restore.ts +0 -342
  724. package/engines/postgresql/version-maps.ts +0 -83
  725. package/engines/postgresql/version-validator.ts +0 -413
  726. package/engines/qdrant/README.md +0 -222
  727. package/engines/qdrant/api-client.ts +0 -61
  728. package/engines/qdrant/backup.ts +0 -165
  729. package/engines/qdrant/binary-manager.ts +0 -43
  730. package/engines/qdrant/binary-urls.ts +0 -115
  731. package/engines/qdrant/cli-utils.ts +0 -43
  732. package/engines/qdrant/hostdb-releases.ts +0 -23
  733. package/engines/qdrant/index.ts +0 -1312
  734. package/engines/qdrant/restore.ts +0 -203
  735. package/engines/qdrant/version-maps.ts +0 -78
  736. package/engines/qdrant/version-validator.ts +0 -128
  737. package/engines/questdb/README.md +0 -334
  738. package/engines/questdb/backup.ts +0 -220
  739. package/engines/questdb/binary-manager.ts +0 -310
  740. package/engines/questdb/binary-urls.ts +0 -34
  741. package/engines/questdb/hostdb-releases.ts +0 -23
  742. package/engines/questdb/index.ts +0 -1023
  743. package/engines/questdb/restore.ts +0 -260
  744. package/engines/questdb/version-maps.ts +0 -37
  745. package/engines/questdb/version-validator.ts +0 -121
  746. package/engines/redis/README.md +0 -173
  747. package/engines/redis/backup.ts +0 -389
  748. package/engines/redis/binary-manager.ts +0 -44
  749. package/engines/redis/binary-urls.ts +0 -117
  750. package/engines/redis/cli-utils.ts +0 -42
  751. package/engines/redis/hostdb-releases.ts +0 -23
  752. package/engines/redis/index.ts +0 -1583
  753. package/engines/redis/restore.ts +0 -443
  754. package/engines/redis/version-maps.ts +0 -81
  755. package/engines/redis/version-validator.ts +0 -131
  756. package/engines/sqlite/README.md +0 -162
  757. package/engines/sqlite/binary-manager.ts +0 -52
  758. package/engines/sqlite/hostdb-releases.ts +0 -23
  759. package/engines/sqlite/index.ts +0 -641
  760. package/engines/sqlite/registry.ts +0 -198
  761. package/engines/sqlite/scanner.ts +0 -22
  762. package/engines/sqlite/version-maps.ts +0 -64
  763. package/engines/surrealdb/README.md +0 -218
  764. package/engines/surrealdb/backup.ts +0 -131
  765. package/engines/surrealdb/binary-manager.ts +0 -45
  766. package/engines/surrealdb/binary-urls.ts +0 -40
  767. package/engines/surrealdb/cli-utils.ts +0 -173
  768. package/engines/surrealdb/hostdb-releases.ts +0 -23
  769. package/engines/surrealdb/index.ts +0 -1246
  770. package/engines/surrealdb/restore.ts +0 -302
  771. package/engines/surrealdb/version-maps.ts +0 -41
  772. package/engines/tigerbeetle/README.md +0 -61
  773. package/engines/tigerbeetle/backup.ts +0 -49
  774. package/engines/tigerbeetle/binary-manager.ts +0 -95
  775. package/engines/tigerbeetle/binary-urls.ts +0 -62
  776. package/engines/tigerbeetle/hostdb-releases.ts +0 -26
  777. package/engines/tigerbeetle/index.ts +0 -746
  778. package/engines/tigerbeetle/restore.ts +0 -130
  779. package/engines/tigerbeetle/version-validator.ts +0 -126
  780. package/engines/typedb/backup.ts +0 -167
  781. package/engines/typedb/binary-manager.ts +0 -200
  782. package/engines/typedb/binary-urls.ts +0 -40
  783. package/engines/typedb/cli-utils.ts +0 -210
  784. package/engines/typedb/hostdb-releases.ts +0 -23
  785. package/engines/typedb/index.ts +0 -1275
  786. package/engines/typedb/restore.ts +0 -377
  787. package/engines/typedb/version-maps.ts +0 -48
  788. package/engines/typedb/version-validator.ts +0 -127
  789. package/engines/valkey/README.md +0 -219
  790. package/engines/valkey/backup.ts +0 -389
  791. package/engines/valkey/binary-manager.ts +0 -45
  792. package/engines/valkey/binary-urls.ts +0 -122
  793. package/engines/valkey/cli-utils.ts +0 -42
  794. package/engines/valkey/hostdb-releases.ts +0 -23
  795. package/engines/valkey/index.ts +0 -1585
  796. package/engines/valkey/restore.ts +0 -446
  797. package/engines/valkey/version-maps.ts +0 -81
  798. package/engines/valkey/version-validator.ts +0 -131
  799. package/engines/weaviate/README.md +0 -302
  800. package/engines/weaviate/api-client.ts +0 -61
  801. package/engines/weaviate/backup.ts +0 -145
  802. package/engines/weaviate/binary-manager.ts +0 -80
  803. package/engines/weaviate/binary-urls.ts +0 -115
  804. package/engines/weaviate/cli-utils.ts +0 -43
  805. package/engines/weaviate/hostdb-releases.ts +0 -23
  806. package/engines/weaviate/index.ts +0 -1139
  807. package/engines/weaviate/restore.ts +0 -235
  808. package/engines/weaviate/version-maps.ts +0 -78
  809. package/engines/weaviate/version-validator.ts +0 -128
  810. package/types/index.ts +0 -624
  811. /package/{config → dist/config}/engines.json +0 -0
@@ -0,0 +1,765 @@
1
+ /**
2
+ * FerretDB Composite Binary Manager
3
+ *
4
+ * Handles downloading and managing FerretDB binaries:
5
+ *
6
+ * v2 (default): Two binaries required:
7
+ * 1. ferretdb - The MongoDB-compatible Go proxy
8
+ * 2. postgresql-documentdb - PostgreSQL 17 with DocumentDB extension
9
+ *
10
+ * v1: Two binaries, but backend is shared:
11
+ * 1. ferretdb - The MongoDB-compatible Go proxy
12
+ * 2. Plain PostgreSQL - Managed by postgresqlBinaryManager (shared with standalone PG containers)
13
+ *
14
+ * This is a composite manager that coordinates the installation of both
15
+ * binaries, which are required for FerretDB to function.
16
+ */
17
+ import { createWriteStream, existsSync } from 'fs';
18
+ import { mkdir, readdir, rm, chmod, rename, cp } from 'fs/promises';
19
+ import { join } from 'path';
20
+ import { Readable } from 'stream';
21
+ import { pipeline } from 'stream/promises';
22
+ import { paths } from '../../config/paths.js';
23
+ import { spawnAsync, extractWindowsArchive } from '../../core/spawn-utils.js';
24
+ import { isRenameFallbackError } from '../../core/fs-error-utils.js';
25
+ import { logDebug } from '../../core/error-handler.js';
26
+ import { fetchWithRegistryFallback } from '../../core/hostdb-client.js';
27
+ import { Engine, Platform, isValidPlatform, isValidArch, } from '../../types/index.js';
28
+ import { normalizeVersion, normalizeDocumentDBVersion, DEFAULT_DOCUMENTDB_VERSION, DEFAULT_V1_POSTGRESQL_VERSION, isV1, } from './version-maps.js';
29
+ import { isPlatformSupported, getFerretDBBinaryUrl, getDocumentDBBinaryUrl, } from './binary-urls.js';
30
+ import { postgresqlBinaryManager } from '../postgresql/binary-manager.js';
31
+ const DOWNLOAD_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes
32
+ /**
33
+ * FerretDB Composite Binary Manager
34
+ *
35
+ * Manages the installation of both required binaries for FerretDB.
36
+ */
37
+ class FerretDBCompositeBinaryManager {
38
+ /**
39
+ * Check if the current platform supports FerretDB
40
+ * @param version - Optional version to check platform support for (v1 supports Windows, v2 does not)
41
+ */
42
+ isPlatformSupported(platform, arch, version) {
43
+ return isPlatformSupported(platform, arch, version);
44
+ }
45
+ /**
46
+ * Get the full version string for a FerretDB version
47
+ */
48
+ getFullVersion(version) {
49
+ return normalizeVersion(version);
50
+ }
51
+ /**
52
+ * Get the full version string for a postgresql-documentdb version
53
+ */
54
+ getFullDocumentDBVersion(version) {
55
+ return normalizeDocumentDBVersion(version);
56
+ }
57
+ /**
58
+ * Check if FerretDB binaries are installed for a specific version
59
+ */
60
+ async isInstalled(version, platform, arch, backendVersion = DEFAULT_DOCUMENTDB_VERSION) {
61
+ const fullVersion = this.getFullVersion(version);
62
+ // Check FerretDB proxy
63
+ const ferretdbPath = this.getFerretDBBinaryPath(fullVersion, platform, arch);
64
+ const ext = platform === Platform.Win32 ? '.exe' : '';
65
+ const ferretdbBinary = join(ferretdbPath, 'bin', `ferretdb${ext}`);
66
+ if (!existsSync(ferretdbBinary)) {
67
+ return false;
68
+ }
69
+ // Check backend
70
+ if (isV1(version)) {
71
+ // v1: check plain PostgreSQL via postgresqlBinaryManager
72
+ return postgresqlBinaryManager.isInstalled(DEFAULT_V1_POSTGRESQL_VERSION, platform, arch);
73
+ }
74
+ // v2: check postgresql-documentdb
75
+ const fullBackendVersion = this.getFullDocumentDBVersion(backendVersion);
76
+ const documentdbPath = this.getDocumentDBBinaryPath(fullBackendVersion, platform, arch);
77
+ const pgCtlExt = platform === Platform.Win32 ? '.exe' : '';
78
+ const pgCtl = join(documentdbPath, 'bin', `pg_ctl${pgCtlExt}`);
79
+ if (!existsSync(pgCtl)) {
80
+ return false;
81
+ }
82
+ return true;
83
+ }
84
+ /**
85
+ * Get the path where FerretDB binaries would be installed
86
+ * @param version - Full normalized version (e.g., "2.7.0", not "2" or "2.7")
87
+ * @param platform - Operating system
88
+ * @param arch - Architecture
89
+ */
90
+ getFerretDBBinaryPath(version, platform, arch) {
91
+ return join(paths.bin, `ferretdb-${version}-${platform}-${arch}`);
92
+ }
93
+ /**
94
+ * Get the path where postgresql-documentdb binaries would be installed
95
+ * @param version - Full normalized version (e.g., "17-0.107.0", not "17")
96
+ * @param platform - Operating system
97
+ * @param arch - Architecture
98
+ */
99
+ getDocumentDBBinaryPath(version, platform, arch) {
100
+ return join(paths.bin, `postgresql-documentdb-${version}-${platform}-${arch}`);
101
+ }
102
+ /**
103
+ * Get environment variables needed to run postgresql-documentdb binaries
104
+ *
105
+ * On Linux, the bundled binaries need LD_LIBRARY_PATH set to find libpq.so
106
+ * and other shared libraries in the lib/ directory.
107
+ *
108
+ * On macOS, the binaries use @loader_path which doesn't need env vars.
109
+ * On Windows, DLLs are found via PATH or same directory.
110
+ *
111
+ * @param version - Full normalized version (e.g., "17-0.107.0", not "17")
112
+ * @param platform - Operating system
113
+ * @param arch - Architecture
114
+ */
115
+ getDocumentDBSpawnEnv(version, platform, arch) {
116
+ // Only Linux needs LD_LIBRARY_PATH
117
+ if (platform !== Platform.Linux) {
118
+ return undefined;
119
+ }
120
+ const documentdbPath = this.getDocumentDBBinaryPath(version, platform, arch);
121
+ const libPath = join(documentdbPath, 'lib');
122
+ // Prepend our lib path to any existing LD_LIBRARY_PATH
123
+ const existingLdPath = process.env['LD_LIBRARY_PATH'] || '';
124
+ const newLdPath = existingLdPath ? `${libPath}:${existingLdPath}` : libPath;
125
+ return {
126
+ LD_LIBRARY_PATH: newLdPath,
127
+ };
128
+ }
129
+ /**
130
+ * Get the backend binary directory path for a FerretDB version.
131
+ * For v1: returns the plain PostgreSQL binary path
132
+ * For v2: returns the postgresql-documentdb binary path
133
+ *
134
+ * @param ferretdbVersion - FerretDB version (e.g., "1.24.2" or "2.7.0")
135
+ * @param backendVersion - Backend version (PostgreSQL version for v1, DocumentDB version for v2)
136
+ * @param platform - Operating system
137
+ * @param arch - Architecture
138
+ */
139
+ getBackendBinaryPath(ferretdbVersion, backendVersion, platform, arch) {
140
+ if (isV1(ferretdbVersion)) {
141
+ const pgFullVersion = postgresqlBinaryManager.getFullVersion(backendVersion || DEFAULT_V1_POSTGRESQL_VERSION);
142
+ return paths.getBinaryPath({
143
+ engine: 'postgresql',
144
+ version: pgFullVersion,
145
+ platform,
146
+ arch,
147
+ });
148
+ }
149
+ const fullBackendVersion = this.getFullDocumentDBVersion(backendVersion || DEFAULT_DOCUMENTDB_VERSION);
150
+ return this.getDocumentDBBinaryPath(fullBackendVersion, platform, arch);
151
+ }
152
+ /**
153
+ * Get environment variables needed to run backend binaries.
154
+ * For v1: delegates to PostgreSQL's standard env (usually none needed)
155
+ * For v2: delegates to getDocumentDBSpawnEnv
156
+ *
157
+ * @param ferretdbVersion - FerretDB version
158
+ * @param backendVersion - Backend version
159
+ * @param platform - Operating system
160
+ * @param arch - Architecture
161
+ */
162
+ getBackendSpawnEnv(ferretdbVersion, backendVersion, platform, arch) {
163
+ if (isV1(ferretdbVersion)) {
164
+ // Plain PostgreSQL doesn't need special env vars on most platforms
165
+ // Linux may need LD_LIBRARY_PATH
166
+ if (platform !== Platform.Linux) {
167
+ return undefined;
168
+ }
169
+ const pgPath = this.getBackendBinaryPath(ferretdbVersion, backendVersion, platform, arch);
170
+ const libPath = join(pgPath, 'lib');
171
+ const existingLdPath = process.env['LD_LIBRARY_PATH'] || '';
172
+ const newLdPath = existingLdPath
173
+ ? `${libPath}:${existingLdPath}`
174
+ : libPath;
175
+ return { LD_LIBRARY_PATH: newLdPath };
176
+ }
177
+ const fullBackendVersion = this.getFullDocumentDBVersion(backendVersion || DEFAULT_DOCUMENTDB_VERSION);
178
+ return this.getDocumentDBSpawnEnv(fullBackendVersion, platform, arch);
179
+ }
180
+ /**
181
+ * List all installed FerretDB versions
182
+ */
183
+ async listInstalled() {
184
+ const binDir = paths.bin;
185
+ if (!existsSync(binDir)) {
186
+ return [];
187
+ }
188
+ const entries = await readdir(binDir, { withFileTypes: true });
189
+ const installed = [];
190
+ const prefix = 'ferretdb-';
191
+ for (const entry of entries) {
192
+ if (!entry.isDirectory())
193
+ continue;
194
+ if (!entry.name.startsWith(prefix))
195
+ continue;
196
+ // Split from end to handle versions with dashes
197
+ // Format: ferretdb-{version}-{platform}-{arch}
198
+ const rest = entry.name.slice(prefix.length);
199
+ const parts = rest.split('-');
200
+ if (parts.length < 3)
201
+ continue;
202
+ const arch = parts.pop();
203
+ const platform = parts.pop();
204
+ const version = parts.join('-');
205
+ if (version && isValidPlatform(platform) && isValidArch(arch)) {
206
+ installed.push({
207
+ engine: Engine.FerretDB,
208
+ version,
209
+ platform,
210
+ arch,
211
+ });
212
+ }
213
+ }
214
+ return installed;
215
+ }
216
+ /**
217
+ * Ensure both FerretDB binaries are installed
218
+ *
219
+ * @param version - FerretDB version
220
+ * @param platform - Operating system
221
+ * @param arch - Architecture
222
+ * @param onProgress - Progress callback
223
+ * @param backendVersion - Backend version (postgresql-documentdb for v2, PostgreSQL major for v1)
224
+ * @returns Paths to both binary directories
225
+ */
226
+ async ensureInstalled(version, platform, arch, onProgress, backendVersion) {
227
+ const fullVersion = this.getFullVersion(version);
228
+ const v1 = isV1(version);
229
+ const effectiveBackendVersion = backendVersion ||
230
+ (v1 ? DEFAULT_V1_POSTGRESQL_VERSION : DEFAULT_DOCUMENTDB_VERSION);
231
+ // Check if already installed
232
+ if (await this.isInstalled(version, platform, arch, effectiveBackendVersion)) {
233
+ onProgress?.({
234
+ stage: 'cached',
235
+ message: 'Using cached FerretDB binaries',
236
+ });
237
+ return {
238
+ ferretdbPath: this.getFerretDBBinaryPath(fullVersion, platform, arch),
239
+ backendPath: this.getBackendBinaryPath(fullVersion, effectiveBackendVersion, platform, arch),
240
+ };
241
+ }
242
+ if (v1) {
243
+ return this.ensureInstalledV1(version, platform, arch, onProgress, effectiveBackendVersion);
244
+ }
245
+ return this.ensureInstalledV2(version, platform, arch, onProgress, effectiveBackendVersion);
246
+ }
247
+ /**
248
+ * Ensure v1 FerretDB binaries are installed (proxy + plain PostgreSQL)
249
+ */
250
+ async ensureInstalledV1(version, platform, arch, onProgress, backendVersion = DEFAULT_V1_POSTGRESQL_VERSION) {
251
+ // Download FerretDB v1 proxy
252
+ const ferretdbPath = await this.downloadFerretDB(version, platform, arch, onProgress);
253
+ // Ensure plain PostgreSQL is installed via postgresqlBinaryManager
254
+ onProgress?.({
255
+ stage: 'downloading',
256
+ message: 'Ensuring PostgreSQL backend is available...',
257
+ });
258
+ const backendPath = await postgresqlBinaryManager.ensureInstalled(backendVersion, platform, arch, onProgress);
259
+ return { ferretdbPath, backendPath };
260
+ }
261
+ /**
262
+ * Ensure v2 FerretDB binaries are installed (proxy + postgresql-documentdb)
263
+ */
264
+ async ensureInstalledV2(version, platform, arch, onProgress, backendVersion = DEFAULT_DOCUMENTDB_VERSION) {
265
+ const fullVersion = this.getFullVersion(version);
266
+ // Check if FerretDB is already installed (DocumentDB might be missing)
267
+ const ext = platform === Platform.Win32 ? '.exe' : '';
268
+ const ferretdbBinaryPath = this.getFerretDBBinaryPath(fullVersion, platform, arch);
269
+ const ferretdbBinary = join(ferretdbBinaryPath, 'bin', `ferretdb${ext}`);
270
+ const ferretdbAlreadyInstalled = existsSync(ferretdbBinary);
271
+ // Download both binaries - ensure atomicity by cleaning up FerretDB if DocumentDB fails
272
+ // (only if FerretDB was newly downloaded in this call)
273
+ const ferretdbPath = await this.downloadFerretDB(version, platform, arch, onProgress);
274
+ let backendPath;
275
+ try {
276
+ backendPath = await this.downloadDocumentDB(backendVersion, platform, arch, onProgress);
277
+ }
278
+ catch (error) {
279
+ // Only clean up FerretDB if it was newly downloaded (not pre-existing)
280
+ if (!ferretdbAlreadyInstalled) {
281
+ onProgress?.({
282
+ stage: 'error',
283
+ message: 'postgresql-documentdb download failed, cleaning up FerretDB...',
284
+ });
285
+ await rm(ferretdbPath, { recursive: true, force: true }).catch(() => { });
286
+ }
287
+ throw error;
288
+ }
289
+ return { ferretdbPath, backendPath };
290
+ }
291
+ /**
292
+ * Download FerretDB proxy binary
293
+ */
294
+ async downloadFerretDB(version, platform, arch, onProgress) {
295
+ const fullVersion = this.getFullVersion(version);
296
+ const binPath = this.getFerretDBBinaryPath(fullVersion, platform, arch);
297
+ // Check if FerretDB is already installed
298
+ const ext = platform === Platform.Win32 ? '.exe' : '';
299
+ const ferretdbBinary = join(binPath, 'bin', `ferretdb${ext}`);
300
+ if (existsSync(ferretdbBinary)) {
301
+ onProgress?.({
302
+ stage: 'cached',
303
+ message: 'FerretDB proxy already installed',
304
+ });
305
+ return binPath;
306
+ }
307
+ const url = getFerretDBBinaryUrl(version, platform, arch);
308
+ const tempDir = join(paths.bin, `temp-ferretdb-${fullVersion}-${platform}-${arch}`);
309
+ const archiveExt = platform === Platform.Win32 ? 'zip' : 'tar.gz';
310
+ const archiveFile = join(tempDir, `ferretdb.${archiveExt}`);
311
+ // Clean up any partial installation
312
+ if (existsSync(binPath)) {
313
+ await rm(binPath, { recursive: true, force: true });
314
+ }
315
+ // Ensure directories exist
316
+ await mkdir(paths.bin, { recursive: true });
317
+ await mkdir(tempDir, { recursive: true });
318
+ await mkdir(binPath, { recursive: true });
319
+ let success = false;
320
+ try {
321
+ onProgress?.({
322
+ stage: 'downloading',
323
+ message: 'Downloading FerretDB proxy...',
324
+ });
325
+ await this.downloadArchive(url, archiveFile, 'FerretDB');
326
+ if (platform === Platform.Win32) {
327
+ await this.extractWindowsBinaries(archiveFile, binPath, tempDir, onProgress);
328
+ }
329
+ else {
330
+ await this.extractUnixBinaries(archiveFile, binPath, tempDir, onProgress);
331
+ }
332
+ // Make binaries executable (Unix only)
333
+ if (platform !== Platform.Win32) {
334
+ const binDir = join(binPath, 'bin');
335
+ if (existsSync(binDir)) {
336
+ const binaries = await readdir(binDir);
337
+ for (const binary of binaries) {
338
+ await chmod(join(binDir, binary), 0o755);
339
+ }
340
+ }
341
+ }
342
+ // On macOS, re-sign binaries to fix code signature issues
343
+ if (platform === Platform.Darwin) {
344
+ onProgress?.({
345
+ stage: 'signing',
346
+ message: 'Re-signing FerretDB binaries for macOS...',
347
+ });
348
+ await this.resignMacOSBinaries(binPath);
349
+ }
350
+ // Verify the installation
351
+ onProgress?.({ stage: 'verifying', message: 'Verifying FerretDB...' });
352
+ await this.verifyFerretDB(fullVersion, platform, arch);
353
+ success = true;
354
+ return binPath;
355
+ }
356
+ finally {
357
+ // Clean up temp directory
358
+ await rm(tempDir, { recursive: true, force: true });
359
+ // Clean up binPath on failure
360
+ if (!success) {
361
+ await rm(binPath, { recursive: true, force: true });
362
+ }
363
+ }
364
+ }
365
+ /**
366
+ * Download postgresql-documentdb backend binary
367
+ */
368
+ async downloadDocumentDB(version, platform, arch, onProgress) {
369
+ const fullVersion = this.getFullDocumentDBVersion(version);
370
+ const binPath = this.getDocumentDBBinaryPath(fullVersion, platform, arch);
371
+ // Check if postgresql-documentdb is already installed
372
+ const ext = platform === Platform.Win32 ? '.exe' : '';
373
+ const pgCtl = join(binPath, 'bin', `pg_ctl${ext}`);
374
+ if (existsSync(pgCtl)) {
375
+ onProgress?.({
376
+ stage: 'cached',
377
+ message: 'postgresql-documentdb already installed',
378
+ });
379
+ return binPath;
380
+ }
381
+ const url = getDocumentDBBinaryUrl(version, platform, arch);
382
+ const tempDir = join(paths.bin, `temp-postgresql-documentdb-${fullVersion}-${platform}-${arch}`);
383
+ const archiveFile = join(tempDir, 'postgresql-documentdb.tar.gz');
384
+ // Clean up any partial installation
385
+ if (existsSync(binPath)) {
386
+ await rm(binPath, { recursive: true, force: true });
387
+ }
388
+ // Ensure directories exist
389
+ await mkdir(paths.bin, { recursive: true });
390
+ await mkdir(tempDir, { recursive: true });
391
+ await mkdir(binPath, { recursive: true });
392
+ let success = false;
393
+ try {
394
+ onProgress?.({
395
+ stage: 'downloading',
396
+ message: 'Downloading postgresql-documentdb backend...',
397
+ });
398
+ await this.downloadArchive(url, archiveFile, 'postgresql-documentdb');
399
+ await this.extractUnixBinaries(archiveFile, binPath, tempDir, onProgress);
400
+ // Make binaries executable
401
+ const binaryDir = join(binPath, 'bin');
402
+ if (existsSync(binaryDir)) {
403
+ const binaries = await readdir(binaryDir);
404
+ for (const binary of binaries) {
405
+ await chmod(join(binaryDir, binary), 0o755);
406
+ }
407
+ }
408
+ // On macOS, re-sign binaries and libraries to fix code signature issues
409
+ // (signatures become invalid after download due to quarantine/Gatekeeper)
410
+ if (platform === Platform.Darwin) {
411
+ onProgress?.({
412
+ stage: 'signing',
413
+ message: 'Re-signing binaries for macOS...',
414
+ });
415
+ await this.resignMacOSBinaries(binPath);
416
+ }
417
+ // Verify the installation
418
+ onProgress?.({
419
+ stage: 'verifying',
420
+ message: 'Verifying postgresql-documentdb...',
421
+ });
422
+ await this.verifyDocumentDB(fullVersion, platform, arch);
423
+ success = true;
424
+ return binPath;
425
+ }
426
+ finally {
427
+ // Clean up temp directory
428
+ await rm(tempDir, { recursive: true, force: true });
429
+ // Clean up binPath on failure
430
+ if (!success) {
431
+ await rm(binPath, { recursive: true, force: true });
432
+ }
433
+ }
434
+ }
435
+ /**
436
+ * Download an archive file
437
+ */
438
+ async downloadArchive(url, archiveFile, displayName) {
439
+ const controller = new AbortController();
440
+ const timeoutId = setTimeout(() => controller.abort(), DOWNLOAD_TIMEOUT_MS);
441
+ try {
442
+ const response = await fetchWithRegistryFallback(url, {
443
+ signal: controller.signal,
444
+ });
445
+ if (!response.ok) {
446
+ if (response.status === 404) {
447
+ throw new Error(`${displayName} binaries not found (404). ` +
448
+ 'This version may have been removed from hostdb. ' +
449
+ 'Try a different version or check https://registry.layerbase.host');
450
+ }
451
+ throw new Error(`Failed to download ${displayName} binaries: ${response.status} ${response.statusText}`);
452
+ }
453
+ if (!response.body) {
454
+ throw new Error(`Download failed: response has no body (status ${response.status})`);
455
+ }
456
+ const fileStream = createWriteStream(archiveFile);
457
+ try {
458
+ const nodeStream = Readable.fromWeb(response.body);
459
+ await pipeline(nodeStream, fileStream);
460
+ }
461
+ catch (pipelineError) {
462
+ fileStream.destroy();
463
+ throw pipelineError;
464
+ }
465
+ }
466
+ catch (error) {
467
+ const err = error;
468
+ if (err.name === 'AbortError') {
469
+ throw new Error(`Download timed out after ${DOWNLOAD_TIMEOUT_MS / 1000 / 60} minutes. ` +
470
+ 'Check your network connection and try again.');
471
+ }
472
+ throw error;
473
+ }
474
+ finally {
475
+ clearTimeout(timeoutId);
476
+ }
477
+ }
478
+ /**
479
+ * Extract Unix binaries from tar.gz file
480
+ */
481
+ async extractUnixBinaries(tarFile, binPath, tempDir, onProgress) {
482
+ onProgress?.({
483
+ stage: 'extracting',
484
+ message: 'Extracting binaries...',
485
+ });
486
+ const extractDir = join(tempDir, 'extract');
487
+ await mkdir(extractDir, { recursive: true });
488
+ try {
489
+ await spawnAsync('tar', ['-xzf', tarFile, '-C', extractDir]);
490
+ }
491
+ catch (error) {
492
+ const err = error;
493
+ // Check if extraction actually succeeded despite the error
494
+ const entries = await readdir(extractDir);
495
+ if (entries.length === 0) {
496
+ throw new Error(`Extraction failed: ${err.message}${err.code ? ` (code: ${err.code})` : ''}`);
497
+ }
498
+ logDebug('FerretDB extraction recovered from tar error', {
499
+ tarFile,
500
+ entriesExtracted: entries.length,
501
+ errorMessage: err.message,
502
+ errorCode: err.code,
503
+ });
504
+ }
505
+ await this.moveExtractedEntries(extractDir, binPath);
506
+ }
507
+ /**
508
+ * Extract Windows binaries from ZIP file
509
+ *
510
+ * FerretDB v1 supports Windows. v2 does not (postgresql-documentdb startup issues).
511
+ */
512
+ async extractWindowsBinaries(zipFile, binPath, tempDir, onProgress) {
513
+ onProgress?.({
514
+ stage: 'extracting',
515
+ message: 'Extracting binaries...',
516
+ });
517
+ const extractDir = join(tempDir, 'extract');
518
+ await mkdir(extractDir, { recursive: true });
519
+ await extractWindowsArchive(zipFile, extractDir);
520
+ await this.moveExtractedEntries(extractDir, binPath);
521
+ }
522
+ /**
523
+ * Move extracted entries from extractDir to binPath
524
+ */
525
+ async moveExtractedEntries(extractDir, binPath) {
526
+ const entries = await readdir(extractDir, { withFileTypes: true });
527
+ // Look for engine directory (ferretdb-* or postgresql-documentdb-*)
528
+ const engineDir = entries.find((e) => e.isDirectory() &&
529
+ (e.name === 'ferretdb' ||
530
+ e.name.startsWith('ferretdb-') ||
531
+ e.name === 'postgresql-documentdb' ||
532
+ e.name.startsWith('postgresql-documentdb-')));
533
+ const sourceDir = engineDir ? join(extractDir, engineDir.name) : extractDir;
534
+ const sourceEntries = engineDir
535
+ ? await readdir(sourceDir, { withFileTypes: true })
536
+ : entries;
537
+ for (const entry of sourceEntries) {
538
+ const sourcePath = join(sourceDir, entry.name);
539
+ const destPath = join(binPath, entry.name);
540
+ try {
541
+ await rename(sourcePath, destPath);
542
+ }
543
+ catch (error) {
544
+ if (isRenameFallbackError(error)) {
545
+ await cp(sourcePath, destPath, { recursive: true });
546
+ await rm(sourcePath, { recursive: true, force: true });
547
+ }
548
+ else {
549
+ throw error;
550
+ }
551
+ }
552
+ }
553
+ }
554
+ /**
555
+ * Verify FerretDB binary installation
556
+ */
557
+ async verifyFerretDB(version, platform, arch) {
558
+ const binPath = this.getFerretDBBinaryPath(version, platform, arch);
559
+ const ext = platform === Platform.Win32 ? '.exe' : '';
560
+ const ferretdbBinary = join(binPath, 'bin', `ferretdb${ext}`);
561
+ if (!existsSync(ferretdbBinary)) {
562
+ throw new Error(`FerretDB binary not found at ${binPath}/bin/`);
563
+ }
564
+ // FerretDB v1 hostdb builds panic on --version due to missing version.txt
565
+ // at build time. For v1, just verify the binary exists (checked above).
566
+ if (isV1(version)) {
567
+ return;
568
+ }
569
+ try {
570
+ const { stdout } = await spawnAsync(ferretdbBinary, ['--version']);
571
+ const match = stdout.match(/(?:ferretdb\s+)?(?:version\s+)?v?(\d+\.\d+\.\d+)/);
572
+ if (!match) {
573
+ throw new Error(`Could not parse FerretDB version from: ${stdout.trim()}`);
574
+ }
575
+ const reportedVersion = match[1];
576
+ const expectedMajor = version.split('.')[0];
577
+ const reportedMajor = reportedVersion.split('.')[0];
578
+ if (expectedMajor !== reportedMajor) {
579
+ throw new Error(`Version mismatch: expected ${version}, got ${reportedVersion}`);
580
+ }
581
+ }
582
+ catch (error) {
583
+ const err = error;
584
+ throw new Error(`Failed to verify FerretDB binary: ${err.message}`);
585
+ }
586
+ }
587
+ /**
588
+ * Verify postgresql-documentdb binary installation
589
+ * Tests both pg_ctl and initdb since initdb is used during container creation
590
+ */
591
+ async verifyDocumentDB(version, platform, arch) {
592
+ const binPath = this.getDocumentDBBinaryPath(version, platform, arch);
593
+ const ext = platform === Platform.Win32 ? '.exe' : '';
594
+ const pgCtl = join(binPath, 'bin', `pg_ctl${ext}`);
595
+ const initdb = join(binPath, 'bin', `initdb${ext}`);
596
+ if (!existsSync(pgCtl)) {
597
+ throw new Error(`postgresql-documentdb binary not found at ${binPath}/bin/`);
598
+ }
599
+ if (!existsSync(initdb)) {
600
+ throw new Error(`initdb not found at ${binPath}/bin/ - required for container initialization`);
601
+ }
602
+ // Get spawn env for Linux (LD_LIBRARY_PATH)
603
+ const spawnEnv = this.getDocumentDBSpawnEnv(version, platform, arch);
604
+ // Verify pg_ctl works
605
+ try {
606
+ const { stdout } = await spawnAsync(pgCtl, ['--version'], {
607
+ env: spawnEnv,
608
+ });
609
+ // Expected output: "pg_ctl (PostgreSQL) 17.x.x"
610
+ const match = stdout.match(/PostgreSQL[)\s]+(\d+)/);
611
+ if (!match) {
612
+ throw new Error(`Could not parse PostgreSQL version from: ${stdout.trim()}`);
613
+ }
614
+ // version is like "17-0.107.0", extract PostgreSQL major version
615
+ const expectedPgMajor = version.split('-')[0];
616
+ const reportedPgMajor = match[1];
617
+ if (expectedPgMajor !== reportedPgMajor) {
618
+ throw new Error(`PostgreSQL version mismatch: expected ${expectedPgMajor}, got ${reportedPgMajor}`);
619
+ }
620
+ }
621
+ catch (error) {
622
+ const err = error;
623
+ // Check for library loading issues (common on macOS/Linux with hostdb binaries)
624
+ if (!err.code ||
625
+ err.code === 'ENOENT' ||
626
+ err.message.includes('dyld') ||
627
+ err.message.includes('GLIBC')) {
628
+ throw new Error(`postgresql-documentdb pg_ctl failed to execute. This is likely due to missing or incompatible libraries.\n` +
629
+ `The hostdb binaries may need to be rebuilt with proper rpath settings.\n` +
630
+ `See: https://github.com/robertjbass/hostdb/issues\n` +
631
+ `Original error: ${err.message || 'Process killed (library loading failed)'}`);
632
+ }
633
+ throw new Error(`Failed to verify postgresql-documentdb pg_ctl: ${err.message}`);
634
+ }
635
+ // Verify initdb works (critical for container creation)
636
+ try {
637
+ const { stdout } = await spawnAsync(initdb, ['--version'], {
638
+ env: spawnEnv,
639
+ });
640
+ // Expected output: "initdb (PostgreSQL) 17.x.x"
641
+ const match = stdout.match(/PostgreSQL[)\s]+(\d+)/);
642
+ if (!match) {
643
+ throw new Error(`Could not parse initdb version from: ${stdout.trim()}`);
644
+ }
645
+ logDebug(`initdb verified: ${stdout.trim()}`);
646
+ }
647
+ catch (error) {
648
+ const err = error;
649
+ // Check for library loading issues
650
+ if (!err.code ||
651
+ err.code === 'ENOENT' ||
652
+ err.message.includes('dyld') ||
653
+ err.message.includes('GLIBC')) {
654
+ throw new Error(`postgresql-documentdb initdb failed to execute. This is likely due to missing or incompatible libraries.\n` +
655
+ `initdb is required for FerretDB container initialization.\n` +
656
+ `The hostdb binaries may need to be rebuilt with proper rpath settings.\n` +
657
+ `See: https://github.com/robertjbass/hostdb/issues\n` +
658
+ `Original error: ${err.message || 'Process killed (library loading failed)'}`);
659
+ }
660
+ throw new Error(`Failed to verify postgresql-documentdb initdb: ${err.message}`);
661
+ }
662
+ }
663
+ /**
664
+ * Delete installed binaries for a specific version
665
+ *
666
+ * For v1: Only deletes the FerretDB proxy. Plain PostgreSQL binaries are shared
667
+ * with standalone PostgreSQL containers and should NOT be deleted.
668
+ *
669
+ * For v2: Deletes both FerretDB proxy and postgresql-documentdb backend.
670
+ */
671
+ async delete(version, platform, arch, backendVersion = DEFAULT_DOCUMENTDB_VERSION) {
672
+ const fullVersion = this.getFullVersion(version);
673
+ const ferretdbPath = this.getFerretDBBinaryPath(fullVersion, platform, arch);
674
+ if (existsSync(ferretdbPath)) {
675
+ await rm(ferretdbPath, { recursive: true, force: true });
676
+ }
677
+ // v1: Don't delete shared PostgreSQL binaries (cascadeDelete: false)
678
+ if (isV1(version)) {
679
+ logDebug('Skipping PostgreSQL backend deletion for FerretDB v1 (shared with standalone PG containers)');
680
+ return;
681
+ }
682
+ // v2: Delete postgresql-documentdb backend
683
+ const fullBackendVersion = this.getFullDocumentDBVersion(backendVersion);
684
+ const documentdbPath = this.getDocumentDBBinaryPath(fullBackendVersion, platform, arch);
685
+ if (existsSync(documentdbPath)) {
686
+ await rm(documentdbPath, { recursive: true, force: true });
687
+ }
688
+ }
689
+ /**
690
+ * Re-sign macOS binaries with ad-hoc signature
691
+ *
692
+ * Downloaded binaries may have invalid signatures due to Gatekeeper quarantine.
693
+ * Re-signing with ad-hoc signature (-s -) allows them to run without issues.
694
+ */
695
+ async resignMacOSBinaries(binPath) {
696
+ // Sign all dylibs first (binaries depend on them)
697
+ const libDir = join(binPath, 'lib');
698
+ if (existsSync(libDir)) {
699
+ const libs = await readdir(libDir);
700
+ for (const lib of libs) {
701
+ if (lib.endsWith('.dylib')) {
702
+ const libPath = join(libDir, lib);
703
+ try {
704
+ await spawnAsync('codesign', [
705
+ '--force',
706
+ '--deep',
707
+ '-s',
708
+ '-',
709
+ libPath,
710
+ ]);
711
+ }
712
+ catch {
713
+ // Ignore signing errors for individual libs
714
+ logDebug(`Failed to sign ${lib}, continuing...`);
715
+ }
716
+ }
717
+ }
718
+ // Also sign libs in postgresql/ subdirectory if it exists
719
+ const pgLibDir = join(libDir, 'postgresql');
720
+ if (existsSync(pgLibDir)) {
721
+ const pgLibs = await readdir(pgLibDir);
722
+ for (const lib of pgLibs) {
723
+ if (lib.endsWith('.dylib')) {
724
+ const libPath = join(pgLibDir, lib);
725
+ try {
726
+ await spawnAsync('codesign', [
727
+ '--force',
728
+ '--deep',
729
+ '-s',
730
+ '-',
731
+ libPath,
732
+ ]);
733
+ }
734
+ catch {
735
+ logDebug(`Failed to sign ${lib}, continuing...`);
736
+ }
737
+ }
738
+ }
739
+ }
740
+ }
741
+ // Sign all binaries
742
+ const binDir = join(binPath, 'bin');
743
+ if (existsSync(binDir)) {
744
+ const binaries = await readdir(binDir);
745
+ for (const binary of binaries) {
746
+ const binaryPath = join(binDir, binary);
747
+ try {
748
+ await spawnAsync('codesign', [
749
+ '--force',
750
+ '--deep',
751
+ '-s',
752
+ '-',
753
+ binaryPath,
754
+ ]);
755
+ }
756
+ catch {
757
+ // Ignore signing errors for individual binaries
758
+ logDebug(`Failed to sign ${binary}, continuing...`);
759
+ }
760
+ }
761
+ }
762
+ }
763
+ }
764
+ export const ferretdbBinaryManager = new FerretDBCompositeBinaryManager();
765
+ //# sourceMappingURL=binary-manager.js.map