spindb 0.37.2 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (811) hide show
  1. package/dist/cli/bin.js +9 -0
  2. package/dist/cli/bin.js.map +1 -0
  3. package/dist/cli/commands/attach.js +102 -0
  4. package/dist/cli/commands/attach.js.map +1 -0
  5. package/dist/cli/commands/backup.js +197 -0
  6. package/dist/cli/commands/backup.js.map +1 -0
  7. package/dist/cli/commands/backups.js +190 -0
  8. package/dist/cli/commands/backups.js.map +1 -0
  9. package/dist/cli/commands/clone.js +119 -0
  10. package/dist/cli/commands/clone.js.map +1 -0
  11. package/dist/cli/commands/config.js +276 -0
  12. package/dist/cli/commands/config.js.map +1 -0
  13. package/dist/cli/commands/connect.js +559 -0
  14. package/dist/cli/commands/connect.js.map +1 -0
  15. package/dist/cli/commands/create.js +952 -0
  16. package/dist/cli/commands/create.js.map +1 -0
  17. package/dist/cli/commands/databases.js +485 -0
  18. package/dist/cli/commands/databases.js.map +1 -0
  19. package/dist/cli/commands/delete.js +106 -0
  20. package/dist/cli/commands/delete.js.map +1 -0
  21. package/dist/cli/commands/deps.js +238 -0
  22. package/dist/cli/commands/deps.js.map +1 -0
  23. package/dist/cli/commands/detach.js +81 -0
  24. package/dist/cli/commands/detach.js.map +1 -0
  25. package/dist/cli/commands/doctor.js +567 -0
  26. package/dist/cli/commands/doctor.js.map +1 -0
  27. package/dist/cli/commands/duckdb.js +207 -0
  28. package/dist/cli/commands/duckdb.js.map +1 -0
  29. package/dist/cli/commands/edit.js +524 -0
  30. package/dist/cli/commands/edit.js.map +1 -0
  31. package/dist/cli/commands/engines.js +1414 -0
  32. package/dist/cli/commands/engines.js.map +1 -0
  33. package/dist/cli/commands/export.js +383 -0
  34. package/dist/cli/commands/export.js.map +1 -0
  35. package/dist/cli/commands/info.js +270 -0
  36. package/dist/cli/commands/info.js.map +1 -0
  37. package/dist/cli/commands/list.js +215 -0
  38. package/dist/cli/commands/list.js.map +1 -0
  39. package/dist/cli/commands/logs.js +81 -0
  40. package/dist/cli/commands/logs.js.map +1 -0
  41. package/dist/cli/commands/menu/backup-handlers.js +1202 -0
  42. package/dist/cli/commands/menu/backup-handlers.js.map +1 -0
  43. package/dist/cli/commands/menu/container-handlers.js +1788 -0
  44. package/dist/cli/commands/menu/container-handlers.js.map +1 -0
  45. package/dist/cli/commands/menu/engine-handlers.js +235 -0
  46. package/dist/cli/commands/menu/engine-handlers.js.map +1 -0
  47. package/dist/cli/commands/menu/index.js +266 -0
  48. package/dist/cli/commands/menu/index.js.map +1 -0
  49. package/dist/cli/commands/menu/settings-handlers.js +320 -0
  50. package/dist/cli/commands/menu/settings-handlers.js.map +1 -0
  51. package/dist/cli/commands/menu/shared.js +13 -0
  52. package/dist/cli/commands/menu/shared.js.map +1 -0
  53. package/dist/cli/commands/menu/shell-handlers.js +1573 -0
  54. package/dist/cli/commands/menu/shell-handlers.js.map +1 -0
  55. package/dist/cli/commands/menu/sql-handlers.js +185 -0
  56. package/dist/cli/commands/menu/sql-handlers.js.map +1 -0
  57. package/dist/cli/commands/menu/update-handlers.js +322 -0
  58. package/dist/cli/commands/menu/update-handlers.js.map +1 -0
  59. package/dist/cli/commands/menu/validators.js +9 -0
  60. package/dist/cli/commands/menu/validators.js.map +1 -0
  61. package/dist/cli/commands/ports.js +166 -0
  62. package/dist/cli/commands/ports.js.map +1 -0
  63. package/dist/cli/commands/pull.js +166 -0
  64. package/dist/cli/commands/pull.js.map +1 -0
  65. package/dist/cli/commands/query.js +180 -0
  66. package/dist/cli/commands/query.js.map +1 -0
  67. package/dist/cli/commands/restore.js +428 -0
  68. package/dist/cli/commands/restore.js.map +1 -0
  69. package/dist/cli/commands/run.js +115 -0
  70. package/dist/cli/commands/run.js.map +1 -0
  71. package/dist/cli/commands/self-update.js +99 -0
  72. package/dist/cli/commands/self-update.js.map +1 -0
  73. package/dist/cli/commands/sqlite.js +207 -0
  74. package/dist/cli/commands/sqlite.js.map +1 -0
  75. package/dist/cli/commands/start.js +196 -0
  76. package/dist/cli/commands/start.js.map +1 -0
  77. package/dist/cli/commands/stop.js +182 -0
  78. package/dist/cli/commands/stop.js.map +1 -0
  79. package/dist/cli/commands/url.js +88 -0
  80. package/dist/cli/commands/url.js.map +1 -0
  81. package/dist/cli/commands/users.js +189 -0
  82. package/dist/cli/commands/users.js.map +1 -0
  83. package/dist/cli/commands/version.js +52 -0
  84. package/dist/cli/commands/version.js.map +1 -0
  85. package/dist/cli/commands/which.js +258 -0
  86. package/dist/cli/commands/which.js.map +1 -0
  87. package/dist/cli/constants.js +212 -0
  88. package/dist/cli/constants.js.map +1 -0
  89. package/dist/cli/helpers.js +1120 -0
  90. package/dist/cli/helpers.js.map +1 -0
  91. package/dist/cli/index.js +146 -0
  92. package/dist/cli/index.js.map +1 -0
  93. package/dist/cli/ui/prompts.js +1002 -0
  94. package/dist/cli/ui/prompts.js.map +1 -0
  95. package/dist/cli/ui/spinner.js +74 -0
  96. package/dist/cli/ui/spinner.js.map +1 -0
  97. package/dist/cli/ui/theme.js +99 -0
  98. package/dist/cli/ui/theme.js.map +1 -0
  99. package/dist/cli/utils/file-follower.js +79 -0
  100. package/dist/cli/utils/file-follower.js.map +1 -0
  101. package/dist/config/backup-formats.js +363 -0
  102. package/dist/config/backup-formats.js.map +1 -0
  103. package/dist/config/defaults.js +25 -0
  104. package/dist/config/defaults.js.map +1 -0
  105. package/dist/config/engine-defaults.js +303 -0
  106. package/dist/config/engine-defaults.js.map +1 -0
  107. package/dist/config/engines-registry.js +103 -0
  108. package/dist/config/engines-registry.js.map +1 -0
  109. package/dist/config/os-dependencies.js +767 -0
  110. package/dist/config/os-dependencies.js.map +1 -0
  111. package/dist/config/paths.js +156 -0
  112. package/dist/config/paths.js.map +1 -0
  113. package/dist/config/version.js +3 -0
  114. package/dist/config/version.js.map +1 -0
  115. package/dist/core/backup-restore.js +219 -0
  116. package/dist/core/backup-restore.js.map +1 -0
  117. package/dist/core/base-binary-manager.js +403 -0
  118. package/dist/core/base-binary-manager.js.map +1 -0
  119. package/dist/core/base-document-binary-manager.js +364 -0
  120. package/dist/core/base-document-binary-manager.js.map +1 -0
  121. package/dist/core/base-embedded-binary-manager.js +364 -0
  122. package/dist/core/base-embedded-binary-manager.js.map +1 -0
  123. package/dist/core/base-server-binary-manager.js +368 -0
  124. package/dist/core/base-server-binary-manager.js.map +1 -0
  125. package/dist/core/config-manager.js +495 -0
  126. package/dist/core/config-manager.js.map +1 -0
  127. package/dist/core/container-manager.js +609 -0
  128. package/dist/core/container-manager.js.map +1 -0
  129. package/dist/core/credential-generator.js +67 -0
  130. package/dist/core/credential-generator.js.map +1 -0
  131. package/dist/core/credential-manager.js +211 -0
  132. package/dist/core/credential-manager.js.map +1 -0
  133. package/dist/core/dblab-utils.js +105 -0
  134. package/dist/core/dblab-utils.js.map +1 -0
  135. package/dist/core/dependency-manager.js +359 -0
  136. package/dist/core/dependency-manager.js.map +1 -0
  137. package/dist/core/docker-exporter.js +1077 -0
  138. package/dist/core/docker-exporter.js.map +1 -0
  139. package/dist/core/error-handler.js +295 -0
  140. package/dist/core/error-handler.js.map +1 -0
  141. package/dist/core/fs-error-utils.js +74 -0
  142. package/dist/core/fs-error-utils.js.map +1 -0
  143. package/dist/core/homebrew-version-manager.js +280 -0
  144. package/dist/core/homebrew-version-manager.js.map +1 -0
  145. package/dist/core/hostdb-client.js +252 -0
  146. package/dist/core/hostdb-client.js.map +1 -0
  147. package/dist/core/hostdb-metadata.js +243 -0
  148. package/dist/core/hostdb-metadata.js.map +1 -0
  149. package/dist/core/hostdb-releases-factory.js +161 -0
  150. package/dist/core/hostdb-releases-factory.js.map +1 -0
  151. package/dist/core/library-env.js +88 -0
  152. package/dist/core/library-env.js.map +1 -0
  153. package/dist/core/pgweb-utils.js +53 -0
  154. package/dist/core/pgweb-utils.js.map +1 -0
  155. package/dist/core/platform-service.js +632 -0
  156. package/dist/core/platform-service.js.map +1 -0
  157. package/dist/core/port-manager.js +136 -0
  158. package/dist/core/port-manager.js.map +1 -0
  159. package/dist/core/process-manager.js +445 -0
  160. package/dist/core/process-manager.js.map +1 -0
  161. package/dist/core/pull-manager.js +418 -0
  162. package/dist/core/pull-manager.js.map +1 -0
  163. package/dist/core/query-parser.js +449 -0
  164. package/dist/core/query-parser.js.map +1 -0
  165. package/dist/core/spawn-utils.js +90 -0
  166. package/dist/core/spawn-utils.js.map +1 -0
  167. package/dist/core/start-with-retry.js +90 -0
  168. package/dist/core/start-with-retry.js.map +1 -0
  169. package/dist/core/test-cleanup.js +85 -0
  170. package/dist/core/test-cleanup.js.map +1 -0
  171. package/dist/core/tls-generator.js +84 -0
  172. package/dist/core/tls-generator.js.map +1 -0
  173. package/dist/core/transaction-manager.js +139 -0
  174. package/dist/core/transaction-manager.js.map +1 -0
  175. package/dist/core/update-manager.js +241 -0
  176. package/dist/core/update-manager.js.map +1 -0
  177. package/dist/core/version-migration.js +260 -0
  178. package/dist/core/version-migration.js.map +1 -0
  179. package/dist/core/version-utils.js +91 -0
  180. package/dist/core/version-utils.js.map +1 -0
  181. package/dist/engines/base-engine.js +179 -0
  182. package/dist/engines/base-engine.js.map +1 -0
  183. package/dist/engines/clickhouse/backup.js +289 -0
  184. package/dist/engines/clickhouse/backup.js.map +1 -0
  185. package/dist/engines/clickhouse/binary-manager.js +145 -0
  186. package/dist/engines/clickhouse/binary-manager.js.map +1 -0
  187. package/dist/engines/clickhouse/binary-urls.js +100 -0
  188. package/dist/engines/clickhouse/binary-urls.js.map +1 -0
  189. package/dist/engines/clickhouse/cli-utils.js +143 -0
  190. package/dist/engines/clickhouse/cli-utils.js.map +1 -0
  191. package/dist/engines/clickhouse/hostdb-releases.js +24 -0
  192. package/dist/engines/clickhouse/hostdb-releases.js.map +1 -0
  193. package/dist/engines/clickhouse/index.js +1077 -0
  194. package/dist/engines/clickhouse/index.js.map +1 -0
  195. package/dist/engines/clickhouse/restore.js +335 -0
  196. package/dist/engines/clickhouse/restore.js.map +1 -0
  197. package/dist/engines/clickhouse/version-maps.js +83 -0
  198. package/dist/engines/clickhouse/version-maps.js.map +1 -0
  199. package/dist/engines/clickhouse/version-validator.js +133 -0
  200. package/dist/engines/clickhouse/version-validator.js.map +1 -0
  201. package/dist/engines/cockroachdb/backup.js +261 -0
  202. package/dist/engines/cockroachdb/backup.js.map +1 -0
  203. package/dist/engines/cockroachdb/binary-manager.js +33 -0
  204. package/dist/engines/cockroachdb/binary-manager.js.map +1 -0
  205. package/dist/engines/cockroachdb/binary-urls.js +33 -0
  206. package/dist/engines/cockroachdb/binary-urls.js.map +1 -0
  207. package/dist/engines/cockroachdb/cli-utils.js +338 -0
  208. package/dist/engines/cockroachdb/cli-utils.js.map +1 -0
  209. package/dist/engines/cockroachdb/hostdb-releases.js +21 -0
  210. package/dist/engines/cockroachdb/hostdb-releases.js.map +1 -0
  211. package/dist/engines/cockroachdb/index.js +1016 -0
  212. package/dist/engines/cockroachdb/index.js.map +1 -0
  213. package/dist/engines/cockroachdb/restore.js +323 -0
  214. package/dist/engines/cockroachdb/restore.js.map +1 -0
  215. package/dist/engines/cockroachdb/version-maps.js +37 -0
  216. package/dist/engines/cockroachdb/version-maps.js.map +1 -0
  217. package/dist/engines/couchdb/api-client.js +64 -0
  218. package/dist/engines/couchdb/api-client.js.map +1 -0
  219. package/dist/engines/couchdb/backup.js +90 -0
  220. package/dist/engines/couchdb/backup.js.map +1 -0
  221. package/dist/engines/couchdb/binary-manager.js +62 -0
  222. package/dist/engines/couchdb/binary-manager.js.map +1 -0
  223. package/dist/engines/couchdb/binary-urls.js +92 -0
  224. package/dist/engines/couchdb/binary-urls.js.map +1 -0
  225. package/dist/engines/couchdb/hostdb-releases.js +21 -0
  226. package/dist/engines/couchdb/hostdb-releases.js.map +1 -0
  227. package/dist/engines/couchdb/index.js +1043 -0
  228. package/dist/engines/couchdb/index.js.map +1 -0
  229. package/dist/engines/couchdb/restore.js +198 -0
  230. package/dist/engines/couchdb/restore.js.map +1 -0
  231. package/dist/engines/couchdb/version-maps.js +67 -0
  232. package/dist/engines/couchdb/version-maps.js.map +1 -0
  233. package/dist/engines/couchdb/version-validator.js +88 -0
  234. package/dist/engines/couchdb/version-validator.js.map +1 -0
  235. package/dist/engines/duckdb/binary-manager.js +33 -0
  236. package/dist/engines/duckdb/binary-manager.js.map +1 -0
  237. package/{engines/duckdb/binary-urls.ts → dist/engines/duckdb/binary-urls.js} +11 -16
  238. package/dist/engines/duckdb/binary-urls.js.map +1 -0
  239. package/dist/engines/duckdb/hostdb-releases.js +21 -0
  240. package/dist/engines/duckdb/hostdb-releases.js.map +1 -0
  241. package/dist/engines/duckdb/index.js +594 -0
  242. package/dist/engines/duckdb/index.js.map +1 -0
  243. package/dist/engines/duckdb/registry.js +265 -0
  244. package/dist/engines/duckdb/registry.js.map +1 -0
  245. package/dist/engines/duckdb/scanner.js +12 -0
  246. package/dist/engines/duckdb/scanner.js.map +1 -0
  247. package/dist/engines/duckdb/version-maps.js +67 -0
  248. package/dist/engines/duckdb/version-maps.js.map +1 -0
  249. package/dist/engines/duckdb/version-validator.js +62 -0
  250. package/dist/engines/duckdb/version-validator.js.map +1 -0
  251. package/dist/engines/ferretdb/backup.js +170 -0
  252. package/dist/engines/ferretdb/backup.js.map +1 -0
  253. package/dist/engines/ferretdb/binary-manager.js +765 -0
  254. package/dist/engines/ferretdb/binary-manager.js.map +1 -0
  255. package/dist/engines/ferretdb/binary-urls.js +135 -0
  256. package/dist/engines/ferretdb/binary-urls.js.map +1 -0
  257. package/dist/engines/ferretdb/index.js +1517 -0
  258. package/dist/engines/ferretdb/index.js.map +1 -0
  259. package/dist/engines/ferretdb/restore.js +310 -0
  260. package/dist/engines/ferretdb/restore.js.map +1 -0
  261. package/{engines/ferretdb/version-maps.ts → dist/engines/ferretdb/version-maps.js} +62 -79
  262. package/dist/engines/ferretdb/version-maps.js.map +1 -0
  263. package/dist/engines/file-based-utils.js +184 -0
  264. package/dist/engines/file-based-utils.js.map +1 -0
  265. package/dist/engines/index.js +124 -0
  266. package/dist/engines/index.js.map +1 -0
  267. package/dist/engines/influxdb/api-client.js +54 -0
  268. package/dist/engines/influxdb/api-client.js.map +1 -0
  269. package/dist/engines/influxdb/backup.js +119 -0
  270. package/dist/engines/influxdb/backup.js.map +1 -0
  271. package/dist/engines/influxdb/binary-manager.js +87 -0
  272. package/dist/engines/influxdb/binary-manager.js.map +1 -0
  273. package/dist/engines/influxdb/binary-urls.js +56 -0
  274. package/dist/engines/influxdb/binary-urls.js.map +1 -0
  275. package/dist/engines/influxdb/hostdb-releases.js +21 -0
  276. package/dist/engines/influxdb/hostdb-releases.js.map +1 -0
  277. package/dist/engines/influxdb/index.js +962 -0
  278. package/dist/engines/influxdb/index.js.map +1 -0
  279. package/dist/engines/influxdb/restore.js +329 -0
  280. package/dist/engines/influxdb/restore.js.map +1 -0
  281. package/dist/engines/influxdb/version-maps.js +64 -0
  282. package/dist/engines/influxdb/version-maps.js.map +1 -0
  283. package/dist/engines/influxdb/version-validator.js +109 -0
  284. package/dist/engines/influxdb/version-validator.js.map +1 -0
  285. package/dist/engines/mariadb/backup.js +178 -0
  286. package/dist/engines/mariadb/backup.js.map +1 -0
  287. package/dist/engines/mariadb/binary-manager.js +33 -0
  288. package/dist/engines/mariadb/binary-manager.js.map +1 -0
  289. package/{engines/mariadb/binary-urls.ts → dist/engines/mariadb/binary-urls.js} +38 -55
  290. package/dist/engines/mariadb/binary-urls.js.map +1 -0
  291. package/dist/engines/mariadb/hostdb-releases.js +21 -0
  292. package/dist/engines/mariadb/hostdb-releases.js.map +1 -0
  293. package/dist/engines/mariadb/index.js +1011 -0
  294. package/dist/engines/mariadb/index.js.map +1 -0
  295. package/dist/engines/mariadb/restore.js +322 -0
  296. package/dist/engines/mariadb/restore.js.map +1 -0
  297. package/dist/engines/mariadb/version-maps.js +63 -0
  298. package/dist/engines/mariadb/version-maps.js.map +1 -0
  299. package/dist/engines/mariadb/version-validator.js +143 -0
  300. package/dist/engines/mariadb/version-validator.js.map +1 -0
  301. package/dist/engines/meilisearch/api-client.js +50 -0
  302. package/dist/engines/meilisearch/api-client.js.map +1 -0
  303. package/dist/engines/meilisearch/backup.js +167 -0
  304. package/dist/engines/meilisearch/backup.js.map +1 -0
  305. package/dist/engines/meilisearch/binary-manager.js +31 -0
  306. package/dist/engines/meilisearch/binary-manager.js.map +1 -0
  307. package/dist/engines/meilisearch/binary-urls.js +56 -0
  308. package/dist/engines/meilisearch/binary-urls.js.map +1 -0
  309. package/dist/engines/meilisearch/hostdb-releases.js +21 -0
  310. package/dist/engines/meilisearch/hostdb-releases.js.map +1 -0
  311. package/dist/engines/meilisearch/index.js +992 -0
  312. package/dist/engines/meilisearch/index.js.map +1 -0
  313. package/dist/engines/meilisearch/restore.js +167 -0
  314. package/dist/engines/meilisearch/restore.js.map +1 -0
  315. package/dist/engines/meilisearch/version-maps.js +67 -0
  316. package/dist/engines/meilisearch/version-maps.js.map +1 -0
  317. package/dist/engines/meilisearch/version-validator.js +109 -0
  318. package/dist/engines/meilisearch/version-validator.js.map +1 -0
  319. package/dist/engines/mongodb/backup.js +109 -0
  320. package/dist/engines/mongodb/backup.js.map +1 -0
  321. package/dist/engines/mongodb/binary-manager.js +36 -0
  322. package/dist/engines/mongodb/binary-manager.js.map +1 -0
  323. package/dist/engines/mongodb/binary-urls.js +46 -0
  324. package/dist/engines/mongodb/binary-urls.js.map +1 -0
  325. package/dist/engines/mongodb/cli-utils.js +131 -0
  326. package/dist/engines/mongodb/cli-utils.js.map +1 -0
  327. package/dist/engines/mongodb/hostdb-releases.js +77 -0
  328. package/dist/engines/mongodb/hostdb-releases.js.map +1 -0
  329. package/dist/engines/mongodb/index.js +873 -0
  330. package/dist/engines/mongodb/index.js.map +1 -0
  331. package/dist/engines/mongodb/restore.js +276 -0
  332. package/dist/engines/mongodb/restore.js.map +1 -0
  333. package/dist/engines/mongodb/version-maps.js +79 -0
  334. package/dist/engines/mongodb/version-maps.js.map +1 -0
  335. package/dist/engines/mongodb/version-validator.js +133 -0
  336. package/dist/engines/mongodb/version-validator.js.map +1 -0
  337. package/dist/engines/mysql/backup.js +210 -0
  338. package/dist/engines/mysql/backup.js.map +1 -0
  339. package/dist/engines/mysql/binary-detection.js +325 -0
  340. package/dist/engines/mysql/binary-detection.js.map +1 -0
  341. package/dist/engines/mysql/binary-manager.js +30 -0
  342. package/dist/engines/mysql/binary-manager.js.map +1 -0
  343. package/dist/engines/mysql/binary-urls.js +87 -0
  344. package/dist/engines/mysql/binary-urls.js.map +1 -0
  345. package/{engines/mysql/hostdb-releases.ts → dist/engines/mysql/hostdb-releases.js} +20 -23
  346. package/dist/engines/mysql/hostdb-releases.js.map +1 -0
  347. package/dist/engines/mysql/index.js +1066 -0
  348. package/dist/engines/mysql/index.js.map +1 -0
  349. package/dist/engines/mysql/restore.js +361 -0
  350. package/dist/engines/mysql/restore.js.map +1 -0
  351. package/dist/engines/mysql/version-maps.js +79 -0
  352. package/dist/engines/mysql/version-maps.js.map +1 -0
  353. package/dist/engines/mysql/version-validator.js +266 -0
  354. package/dist/engines/mysql/version-validator.js.map +1 -0
  355. package/dist/engines/postgresql/backup.js +118 -0
  356. package/dist/engines/postgresql/backup.js.map +1 -0
  357. package/dist/engines/postgresql/binary-manager.js +85 -0
  358. package/dist/engines/postgresql/binary-manager.js.map +1 -0
  359. package/dist/engines/postgresql/binary-urls.js +80 -0
  360. package/dist/engines/postgresql/binary-urls.js.map +1 -0
  361. package/dist/engines/postgresql/hostdb-releases.js +21 -0
  362. package/dist/engines/postgresql/hostdb-releases.js.map +1 -0
  363. package/dist/engines/postgresql/index.js +852 -0
  364. package/dist/engines/postgresql/index.js.map +1 -0
  365. package/dist/engines/postgresql/remote-version.js +109 -0
  366. package/dist/engines/postgresql/remote-version.js.map +1 -0
  367. package/dist/engines/postgresql/restore.js +254 -0
  368. package/dist/engines/postgresql/restore.js.map +1 -0
  369. package/dist/engines/postgresql/version-maps.js +73 -0
  370. package/dist/engines/postgresql/version-maps.js.map +1 -0
  371. package/dist/engines/postgresql/version-validator.js +286 -0
  372. package/dist/engines/postgresql/version-validator.js.map +1 -0
  373. package/dist/engines/qdrant/api-client.js +50 -0
  374. package/dist/engines/qdrant/api-client.js.map +1 -0
  375. package/dist/engines/qdrant/backup.js +115 -0
  376. package/dist/engines/qdrant/backup.js.map +1 -0
  377. package/dist/engines/qdrant/binary-manager.js +31 -0
  378. package/dist/engines/qdrant/binary-manager.js.map +1 -0
  379. package/dist/engines/qdrant/binary-urls.js +92 -0
  380. package/dist/engines/qdrant/binary-urls.js.map +1 -0
  381. package/dist/engines/qdrant/cli-utils.js +39 -0
  382. package/dist/engines/qdrant/cli-utils.js.map +1 -0
  383. package/dist/engines/qdrant/hostdb-releases.js +21 -0
  384. package/dist/engines/qdrant/hostdb-releases.js.map +1 -0
  385. package/dist/engines/qdrant/index.js +1002 -0
  386. package/dist/engines/qdrant/index.js.map +1 -0
  387. package/dist/engines/qdrant/restore.js +154 -0
  388. package/dist/engines/qdrant/restore.js.map +1 -0
  389. package/dist/engines/qdrant/version-maps.js +67 -0
  390. package/dist/engines/qdrant/version-maps.js.map +1 -0
  391. package/dist/engines/qdrant/version-validator.js +109 -0
  392. package/dist/engines/qdrant/version-validator.js.map +1 -0
  393. package/dist/engines/questdb/backup.js +191 -0
  394. package/dist/engines/questdb/backup.js.map +1 -0
  395. package/dist/engines/questdb/binary-manager.js +247 -0
  396. package/dist/engines/questdb/binary-manager.js.map +1 -0
  397. package/dist/engines/questdb/binary-urls.js +27 -0
  398. package/dist/engines/questdb/binary-urls.js.map +1 -0
  399. package/dist/engines/questdb/hostdb-releases.js +21 -0
  400. package/dist/engines/questdb/hostdb-releases.js.map +1 -0
  401. package/dist/engines/questdb/index.js +814 -0
  402. package/dist/engines/questdb/index.js.map +1 -0
  403. package/dist/engines/questdb/restore.js +202 -0
  404. package/dist/engines/questdb/restore.js.map +1 -0
  405. package/dist/engines/questdb/version-maps.js +33 -0
  406. package/dist/engines/questdb/version-maps.js.map +1 -0
  407. package/dist/engines/questdb/version-validator.js +99 -0
  408. package/dist/engines/questdb/version-validator.js.map +1 -0
  409. package/dist/engines/redis/backup.js +292 -0
  410. package/dist/engines/redis/backup.js.map +1 -0
  411. package/dist/engines/redis/binary-manager.js +32 -0
  412. package/dist/engines/redis/binary-manager.js.map +1 -0
  413. package/dist/engines/redis/binary-urls.js +96 -0
  414. package/dist/engines/redis/binary-urls.js.map +1 -0
  415. package/dist/engines/redis/cli-utils.js +38 -0
  416. package/dist/engines/redis/cli-utils.js.map +1 -0
  417. package/dist/engines/redis/hostdb-releases.js +21 -0
  418. package/dist/engines/redis/hostdb-releases.js.map +1 -0
  419. package/dist/engines/redis/index.js +1263 -0
  420. package/dist/engines/redis/index.js.map +1 -0
  421. package/dist/engines/redis/restore.js +338 -0
  422. package/dist/engines/redis/restore.js.map +1 -0
  423. package/dist/engines/redis/version-maps.js +70 -0
  424. package/dist/engines/redis/version-maps.js.map +1 -0
  425. package/dist/engines/redis/version-validator.js +109 -0
  426. package/dist/engines/redis/version-validator.js.map +1 -0
  427. package/dist/engines/sqlite/binary-manager.js +39 -0
  428. package/dist/engines/sqlite/binary-manager.js.map +1 -0
  429. package/{engines/sqlite/binary-urls.ts → dist/engines/sqlite/binary-urls.js} +11 -16
  430. package/dist/engines/sqlite/binary-urls.js.map +1 -0
  431. package/dist/engines/sqlite/hostdb-releases.js +21 -0
  432. package/dist/engines/sqlite/hostdb-releases.js.map +1 -0
  433. package/dist/engines/sqlite/index.js +493 -0
  434. package/dist/engines/sqlite/index.js.map +1 -0
  435. package/dist/engines/sqlite/registry.js +163 -0
  436. package/dist/engines/sqlite/registry.js.map +1 -0
  437. package/dist/engines/sqlite/scanner.js +12 -0
  438. package/dist/engines/sqlite/scanner.js.map +1 -0
  439. package/dist/engines/sqlite/version-maps.js +57 -0
  440. package/dist/engines/sqlite/version-maps.js.map +1 -0
  441. package/dist/engines/surrealdb/backup.js +97 -0
  442. package/dist/engines/surrealdb/backup.js.map +1 -0
  443. package/dist/engines/surrealdb/binary-manager.js +33 -0
  444. package/dist/engines/surrealdb/binary-manager.js.map +1 -0
  445. package/dist/engines/surrealdb/binary-urls.js +33 -0
  446. package/dist/engines/surrealdb/binary-urls.js.map +1 -0
  447. package/dist/engines/surrealdb/cli-utils.js +147 -0
  448. package/dist/engines/surrealdb/cli-utils.js.map +1 -0
  449. package/dist/engines/surrealdb/hostdb-releases.js +21 -0
  450. package/dist/engines/surrealdb/hostdb-releases.js.map +1 -0
  451. package/dist/engines/surrealdb/index.js +1022 -0
  452. package/dist/engines/surrealdb/index.js.map +1 -0
  453. package/dist/engines/surrealdb/restore.js +224 -0
  454. package/dist/engines/surrealdb/restore.js.map +1 -0
  455. package/dist/engines/surrealdb/version-maps.js +36 -0
  456. package/dist/engines/surrealdb/version-maps.js.map +1 -0
  457. package/dist/engines/tigerbeetle/backup.js +36 -0
  458. package/dist/engines/tigerbeetle/backup.js.map +1 -0
  459. package/dist/engines/tigerbeetle/binary-manager.js +72 -0
  460. package/dist/engines/tigerbeetle/binary-manager.js.map +1 -0
  461. package/dist/engines/tigerbeetle/binary-urls.js +49 -0
  462. package/dist/engines/tigerbeetle/binary-urls.js.map +1 -0
  463. package/dist/engines/tigerbeetle/hostdb-releases.js +21 -0
  464. package/dist/engines/tigerbeetle/hostdb-releases.js.map +1 -0
  465. package/dist/engines/tigerbeetle/index.js +559 -0
  466. package/dist/engines/tigerbeetle/index.js.map +1 -0
  467. package/dist/engines/tigerbeetle/restore.js +91 -0
  468. package/dist/engines/tigerbeetle/restore.js.map +1 -0
  469. package/{engines/tigerbeetle/version-maps.ts → dist/engines/tigerbeetle/version-maps.js} +22 -31
  470. package/dist/engines/tigerbeetle/version-maps.js.map +1 -0
  471. package/dist/engines/tigerbeetle/version-validator.js +108 -0
  472. package/dist/engines/tigerbeetle/version-validator.js.map +1 -0
  473. package/dist/engines/typedb/backup.js +129 -0
  474. package/dist/engines/typedb/backup.js.map +1 -0
  475. package/dist/engines/typedb/binary-manager.js +151 -0
  476. package/dist/engines/typedb/binary-manager.js.map +1 -0
  477. package/dist/engines/typedb/binary-urls.js +33 -0
  478. package/dist/engines/typedb/binary-urls.js.map +1 -0
  479. package/dist/engines/typedb/cli-utils.js +163 -0
  480. package/dist/engines/typedb/cli-utils.js.map +1 -0
  481. package/dist/engines/typedb/hostdb-releases.js +21 -0
  482. package/dist/engines/typedb/hostdb-releases.js.map +1 -0
  483. package/dist/engines/typedb/index.js +1003 -0
  484. package/dist/engines/typedb/index.js.map +1 -0
  485. package/dist/engines/typedb/restore.js +279 -0
  486. package/dist/engines/typedb/restore.js.map +1 -0
  487. package/dist/engines/typedb/version-maps.js +40 -0
  488. package/dist/engines/typedb/version-maps.js.map +1 -0
  489. package/dist/engines/typedb/version-validator.js +103 -0
  490. package/dist/engines/typedb/version-validator.js.map +1 -0
  491. package/dist/engines/valkey/backup.js +292 -0
  492. package/dist/engines/valkey/backup.js.map +1 -0
  493. package/dist/engines/valkey/binary-manager.js +33 -0
  494. package/dist/engines/valkey/binary-manager.js.map +1 -0
  495. package/dist/engines/valkey/binary-urls.js +98 -0
  496. package/dist/engines/valkey/binary-urls.js.map +1 -0
  497. package/dist/engines/valkey/cli-utils.js +38 -0
  498. package/dist/engines/valkey/cli-utils.js.map +1 -0
  499. package/dist/engines/valkey/hostdb-releases.js +21 -0
  500. package/dist/engines/valkey/hostdb-releases.js.map +1 -0
  501. package/dist/engines/valkey/index.js +1257 -0
  502. package/dist/engines/valkey/index.js.map +1 -0
  503. package/dist/engines/valkey/restore.js +340 -0
  504. package/dist/engines/valkey/restore.js.map +1 -0
  505. package/dist/engines/valkey/version-maps.js +70 -0
  506. package/dist/engines/valkey/version-maps.js.map +1 -0
  507. package/dist/engines/valkey/version-validator.js +112 -0
  508. package/dist/engines/valkey/version-validator.js.map +1 -0
  509. package/dist/engines/weaviate/api-client.js +50 -0
  510. package/dist/engines/weaviate/api-client.js.map +1 -0
  511. package/dist/engines/weaviate/backup.js +95 -0
  512. package/dist/engines/weaviate/backup.js.map +1 -0
  513. package/dist/engines/weaviate/binary-manager.js +58 -0
  514. package/dist/engines/weaviate/binary-manager.js.map +1 -0
  515. package/dist/engines/weaviate/binary-urls.js +92 -0
  516. package/dist/engines/weaviate/binary-urls.js.map +1 -0
  517. package/dist/engines/weaviate/cli-utils.js +39 -0
  518. package/dist/engines/weaviate/cli-utils.js.map +1 -0
  519. package/dist/engines/weaviate/hostdb-releases.js +21 -0
  520. package/dist/engines/weaviate/hostdb-releases.js.map +1 -0
  521. package/dist/engines/weaviate/index.js +871 -0
  522. package/dist/engines/weaviate/index.js.map +1 -0
  523. package/dist/engines/weaviate/restore.js +185 -0
  524. package/dist/engines/weaviate/restore.js.map +1 -0
  525. package/dist/engines/weaviate/version-maps.js +67 -0
  526. package/dist/engines/weaviate/version-maps.js.map +1 -0
  527. package/dist/engines/weaviate/version-validator.js +109 -0
  528. package/dist/engines/weaviate/version-validator.js.map +1 -0
  529. package/dist/types/index.js +102 -0
  530. package/dist/types/index.js.map +1 -0
  531. package/package.json +12 -9
  532. package/bin/cli.js +0 -68
  533. package/cli/bin.ts +0 -10
  534. package/cli/commands/attach.ts +0 -139
  535. package/cli/commands/backup.ts +0 -290
  536. package/cli/commands/backups.ts +0 -247
  537. package/cli/commands/clone.ts +0 -159
  538. package/cli/commands/config.ts +0 -367
  539. package/cli/commands/connect.ts +0 -684
  540. package/cli/commands/create.ts +0 -1201
  541. package/cli/commands/databases.ts +0 -630
  542. package/cli/commands/delete.ts +0 -133
  543. package/cli/commands/deps.ts +0 -342
  544. package/cli/commands/detach.ts +0 -107
  545. package/cli/commands/doctor.ts +0 -689
  546. package/cli/commands/duckdb.ts +0 -273
  547. package/cli/commands/edit.ts +0 -683
  548. package/cli/commands/engines.ts +0 -1914
  549. package/cli/commands/export.ts +0 -544
  550. package/cli/commands/info.ts +0 -340
  551. package/cli/commands/list.ts +0 -284
  552. package/cli/commands/logs.ts +0 -102
  553. package/cli/commands/menu/backup-handlers.ts +0 -1571
  554. package/cli/commands/menu/container-handlers.ts +0 -2288
  555. package/cli/commands/menu/engine-handlers.ts +0 -355
  556. package/cli/commands/menu/index.ts +0 -342
  557. package/cli/commands/menu/settings-handlers.ts +0 -365
  558. package/cli/commands/menu/shared.ts +0 -23
  559. package/cli/commands/menu/shell-handlers.ts +0 -1811
  560. package/cli/commands/menu/sql-handlers.ts +0 -231
  561. package/cli/commands/menu/update-handlers.ts +0 -378
  562. package/cli/commands/menu/validators.ts +0 -8
  563. package/cli/commands/ports.ts +0 -211
  564. package/cli/commands/pull.ts +0 -223
  565. package/cli/commands/query.ts +0 -241
  566. package/cli/commands/restore.ts +0 -587
  567. package/cli/commands/run.ts +0 -178
  568. package/cli/commands/self-update.ts +0 -121
  569. package/cli/commands/sqlite.ts +0 -273
  570. package/cli/commands/start.ts +0 -218
  571. package/cli/commands/stop.ts +0 -241
  572. package/cli/commands/url.ts +0 -104
  573. package/cli/commands/users.ts +0 -264
  574. package/cli/commands/version.ts +0 -55
  575. package/cli/commands/which.ts +0 -290
  576. package/cli/constants.ts +0 -233
  577. package/cli/helpers.ts +0 -1593
  578. package/cli/index.ts +0 -162
  579. package/cli/ui/prompts.ts +0 -1525
  580. package/cli/ui/spinner.ts +0 -88
  581. package/cli/ui/theme.ts +0 -128
  582. package/cli/utils/file-follower.ts +0 -93
  583. package/config/backup-formats.ts +0 -446
  584. package/config/defaults.ts +0 -56
  585. package/config/engine-defaults.ts +0 -336
  586. package/config/engines-registry.ts +0 -150
  587. package/config/engines.schema.json +0 -135
  588. package/config/os-dependencies.ts +0 -888
  589. package/config/paths.ts +0 -200
  590. package/core/backup-restore.ts +0 -330
  591. package/core/base-binary-manager.ts +0 -562
  592. package/core/base-document-binary-manager.ts +0 -523
  593. package/core/base-embedded-binary-manager.ts +0 -547
  594. package/core/base-server-binary-manager.ts +0 -523
  595. package/core/config-manager.ts +0 -652
  596. package/core/container-manager.ts +0 -787
  597. package/core/credential-generator.ts +0 -93
  598. package/core/credential-manager.ts +0 -259
  599. package/core/dblab-utils.ts +0 -113
  600. package/core/dependency-manager.ts +0 -512
  601. package/core/docker-exporter.ts +0 -1345
  602. package/core/error-handler.ts +0 -419
  603. package/core/fs-error-utils.ts +0 -82
  604. package/core/homebrew-version-manager.ts +0 -352
  605. package/core/hostdb-client.ts +0 -344
  606. package/core/hostdb-metadata.ts +0 -350
  607. package/core/hostdb-releases-factory.ts +0 -237
  608. package/core/library-env.ts +0 -118
  609. package/core/pgweb-utils.ts +0 -62
  610. package/core/platform-service.ts +0 -829
  611. package/core/port-manager.ts +0 -165
  612. package/core/process-manager.ts +0 -576
  613. package/core/pull-manager.ts +0 -511
  614. package/core/query-parser.ts +0 -514
  615. package/core/spawn-utils.ts +0 -122
  616. package/core/start-with-retry.ts +0 -130
  617. package/core/test-cleanup.ts +0 -108
  618. package/core/tls-generator.ts +0 -116
  619. package/core/transaction-manager.ts +0 -158
  620. package/core/update-manager.ts +0 -308
  621. package/core/version-migration.ts +0 -346
  622. package/core/version-utils.ts +0 -104
  623. package/engines/base-engine.ts +0 -340
  624. package/engines/clickhouse/README.md +0 -231
  625. package/engines/clickhouse/backup.ts +0 -398
  626. package/engines/clickhouse/binary-manager.ts +0 -201
  627. package/engines/clickhouse/binary-urls.ts +0 -125
  628. package/engines/clickhouse/cli-utils.ts +0 -176
  629. package/engines/clickhouse/hostdb-releases.ts +0 -30
  630. package/engines/clickhouse/index.ts +0 -1345
  631. package/engines/clickhouse/restore.ts +0 -466
  632. package/engines/clickhouse/version-maps.ts +0 -95
  633. package/engines/clickhouse/version-validator.ts +0 -154
  634. package/engines/cockroachdb/README.md +0 -170
  635. package/engines/cockroachdb/backup.ts +0 -376
  636. package/engines/cockroachdb/binary-manager.ts +0 -45
  637. package/engines/cockroachdb/binary-urls.ts +0 -40
  638. package/engines/cockroachdb/cli-utils.ts +0 -384
  639. package/engines/cockroachdb/hostdb-releases.ts +0 -26
  640. package/engines/cockroachdb/index.ts +0 -1276
  641. package/engines/cockroachdb/restore.ts +0 -455
  642. package/engines/cockroachdb/version-maps.ts +0 -42
  643. package/engines/couchdb/README.md +0 -257
  644. package/engines/couchdb/api-client.ts +0 -81
  645. package/engines/couchdb/backup.ts +0 -137
  646. package/engines/couchdb/binary-manager.ts +0 -86
  647. package/engines/couchdb/binary-urls.ts +0 -115
  648. package/engines/couchdb/hostdb-releases.ts +0 -23
  649. package/engines/couchdb/index.ts +0 -1429
  650. package/engines/couchdb/restore.ts +0 -290
  651. package/engines/couchdb/version-maps.ts +0 -78
  652. package/engines/couchdb/version-validator.ts +0 -111
  653. package/engines/duckdb/README.md +0 -154
  654. package/engines/duckdb/binary-manager.ts +0 -45
  655. package/engines/duckdb/hostdb-releases.ts +0 -23
  656. package/engines/duckdb/index.ts +0 -749
  657. package/engines/duckdb/registry.ts +0 -303
  658. package/engines/duckdb/scanner.ts +0 -22
  659. package/engines/duckdb/version-maps.ts +0 -78
  660. package/engines/duckdb/version-validator.ts +0 -78
  661. package/engines/ferretdb/README.md +0 -262
  662. package/engines/ferretdb/backup.ts +0 -173
  663. package/engines/ferretdb/binary-manager.ts +0 -1095
  664. package/engines/ferretdb/binary-urls.ts +0 -183
  665. package/engines/ferretdb/index.ts +0 -1907
  666. package/engines/ferretdb/restore.ts +0 -357
  667. package/engines/file-based-utils.ts +0 -262
  668. package/engines/index.ts +0 -131
  669. package/engines/influxdb/README.md +0 -180
  670. package/engines/influxdb/api-client.ts +0 -64
  671. package/engines/influxdb/backup.ts +0 -160
  672. package/engines/influxdb/binary-manager.ts +0 -110
  673. package/engines/influxdb/binary-urls.ts +0 -69
  674. package/engines/influxdb/hostdb-releases.ts +0 -23
  675. package/engines/influxdb/index.ts +0 -1272
  676. package/engines/influxdb/restore.ts +0 -417
  677. package/engines/influxdb/version-maps.ts +0 -75
  678. package/engines/influxdb/version-validator.ts +0 -128
  679. package/engines/mariadb/README.md +0 -141
  680. package/engines/mariadb/backup.ts +0 -233
  681. package/engines/mariadb/binary-manager.ts +0 -45
  682. package/engines/mariadb/hostdb-releases.ts +0 -23
  683. package/engines/mariadb/index.ts +0 -1300
  684. package/engines/mariadb/restore.ts +0 -447
  685. package/engines/mariadb/version-maps.ts +0 -72
  686. package/engines/mariadb/version-validator.ts +0 -181
  687. package/engines/meilisearch/README.md +0 -255
  688. package/engines/meilisearch/api-client.ts +0 -61
  689. package/engines/meilisearch/backup.ts +0 -233
  690. package/engines/meilisearch/binary-manager.ts +0 -43
  691. package/engines/meilisearch/binary-urls.ts +0 -69
  692. package/engines/meilisearch/hostdb-releases.ts +0 -26
  693. package/engines/meilisearch/index.ts +0 -1292
  694. package/engines/meilisearch/restore.ts +0 -219
  695. package/engines/meilisearch/version-maps.ts +0 -78
  696. package/engines/meilisearch/version-validator.ts +0 -128
  697. package/engines/mongodb/README.md +0 -162
  698. package/engines/mongodb/backup.ts +0 -127
  699. package/engines/mongodb/binary-manager.ts +0 -48
  700. package/engines/mongodb/binary-urls.ts +0 -63
  701. package/engines/mongodb/cli-utils.ts +0 -171
  702. package/engines/mongodb/hostdb-releases.ts +0 -91
  703. package/engines/mongodb/index.ts +0 -1118
  704. package/engines/mongodb/restore.ts +0 -361
  705. package/engines/mongodb/version-maps.ts +0 -91
  706. package/engines/mongodb/version-validator.ts +0 -160
  707. package/engines/mysql/README.md +0 -142
  708. package/engines/mysql/backup.ts +0 -270
  709. package/engines/mysql/binary-detection.ts +0 -408
  710. package/engines/mysql/binary-manager.ts +0 -42
  711. package/engines/mysql/binary-urls.ts +0 -104
  712. package/engines/mysql/index.ts +0 -1361
  713. package/engines/mysql/restore.ts +0 -500
  714. package/engines/mysql/version-maps.ts +0 -91
  715. package/engines/mysql/version-validator.ts +0 -369
  716. package/engines/postgresql/README.md +0 -158
  717. package/engines/postgresql/backup.ts +0 -151
  718. package/engines/postgresql/binary-manager.ts +0 -114
  719. package/engines/postgresql/binary-urls.ts +0 -99
  720. package/engines/postgresql/hostdb-releases.ts +0 -26
  721. package/engines/postgresql/index.ts +0 -1143
  722. package/engines/postgresql/remote-version.ts +0 -161
  723. package/engines/postgresql/restore.ts +0 -342
  724. package/engines/postgresql/version-maps.ts +0 -83
  725. package/engines/postgresql/version-validator.ts +0 -413
  726. package/engines/qdrant/README.md +0 -222
  727. package/engines/qdrant/api-client.ts +0 -61
  728. package/engines/qdrant/backup.ts +0 -165
  729. package/engines/qdrant/binary-manager.ts +0 -43
  730. package/engines/qdrant/binary-urls.ts +0 -115
  731. package/engines/qdrant/cli-utils.ts +0 -43
  732. package/engines/qdrant/hostdb-releases.ts +0 -23
  733. package/engines/qdrant/index.ts +0 -1312
  734. package/engines/qdrant/restore.ts +0 -203
  735. package/engines/qdrant/version-maps.ts +0 -78
  736. package/engines/qdrant/version-validator.ts +0 -128
  737. package/engines/questdb/README.md +0 -334
  738. package/engines/questdb/backup.ts +0 -220
  739. package/engines/questdb/binary-manager.ts +0 -310
  740. package/engines/questdb/binary-urls.ts +0 -34
  741. package/engines/questdb/hostdb-releases.ts +0 -23
  742. package/engines/questdb/index.ts +0 -1023
  743. package/engines/questdb/restore.ts +0 -260
  744. package/engines/questdb/version-maps.ts +0 -37
  745. package/engines/questdb/version-validator.ts +0 -121
  746. package/engines/redis/README.md +0 -173
  747. package/engines/redis/backup.ts +0 -389
  748. package/engines/redis/binary-manager.ts +0 -44
  749. package/engines/redis/binary-urls.ts +0 -117
  750. package/engines/redis/cli-utils.ts +0 -42
  751. package/engines/redis/hostdb-releases.ts +0 -23
  752. package/engines/redis/index.ts +0 -1583
  753. package/engines/redis/restore.ts +0 -443
  754. package/engines/redis/version-maps.ts +0 -81
  755. package/engines/redis/version-validator.ts +0 -131
  756. package/engines/sqlite/README.md +0 -162
  757. package/engines/sqlite/binary-manager.ts +0 -52
  758. package/engines/sqlite/hostdb-releases.ts +0 -23
  759. package/engines/sqlite/index.ts +0 -641
  760. package/engines/sqlite/registry.ts +0 -198
  761. package/engines/sqlite/scanner.ts +0 -22
  762. package/engines/sqlite/version-maps.ts +0 -64
  763. package/engines/surrealdb/README.md +0 -218
  764. package/engines/surrealdb/backup.ts +0 -131
  765. package/engines/surrealdb/binary-manager.ts +0 -45
  766. package/engines/surrealdb/binary-urls.ts +0 -40
  767. package/engines/surrealdb/cli-utils.ts +0 -173
  768. package/engines/surrealdb/hostdb-releases.ts +0 -23
  769. package/engines/surrealdb/index.ts +0 -1246
  770. package/engines/surrealdb/restore.ts +0 -302
  771. package/engines/surrealdb/version-maps.ts +0 -41
  772. package/engines/tigerbeetle/README.md +0 -61
  773. package/engines/tigerbeetle/backup.ts +0 -49
  774. package/engines/tigerbeetle/binary-manager.ts +0 -95
  775. package/engines/tigerbeetle/binary-urls.ts +0 -62
  776. package/engines/tigerbeetle/hostdb-releases.ts +0 -26
  777. package/engines/tigerbeetle/index.ts +0 -746
  778. package/engines/tigerbeetle/restore.ts +0 -130
  779. package/engines/tigerbeetle/version-validator.ts +0 -126
  780. package/engines/typedb/backup.ts +0 -167
  781. package/engines/typedb/binary-manager.ts +0 -200
  782. package/engines/typedb/binary-urls.ts +0 -40
  783. package/engines/typedb/cli-utils.ts +0 -210
  784. package/engines/typedb/hostdb-releases.ts +0 -23
  785. package/engines/typedb/index.ts +0 -1275
  786. package/engines/typedb/restore.ts +0 -377
  787. package/engines/typedb/version-maps.ts +0 -48
  788. package/engines/typedb/version-validator.ts +0 -127
  789. package/engines/valkey/README.md +0 -219
  790. package/engines/valkey/backup.ts +0 -389
  791. package/engines/valkey/binary-manager.ts +0 -45
  792. package/engines/valkey/binary-urls.ts +0 -122
  793. package/engines/valkey/cli-utils.ts +0 -42
  794. package/engines/valkey/hostdb-releases.ts +0 -23
  795. package/engines/valkey/index.ts +0 -1585
  796. package/engines/valkey/restore.ts +0 -446
  797. package/engines/valkey/version-maps.ts +0 -81
  798. package/engines/valkey/version-validator.ts +0 -131
  799. package/engines/weaviate/README.md +0 -302
  800. package/engines/weaviate/api-client.ts +0 -61
  801. package/engines/weaviate/backup.ts +0 -145
  802. package/engines/weaviate/binary-manager.ts +0 -80
  803. package/engines/weaviate/binary-urls.ts +0 -115
  804. package/engines/weaviate/cli-utils.ts +0 -43
  805. package/engines/weaviate/hostdb-releases.ts +0 -23
  806. package/engines/weaviate/index.ts +0 -1139
  807. package/engines/weaviate/restore.ts +0 -235
  808. package/engines/weaviate/version-maps.ts +0 -78
  809. package/engines/weaviate/version-validator.ts +0 -128
  810. package/types/index.ts +0 -624
  811. /package/{config → dist/config}/engines.json +0 -0
@@ -1,352 +0,0 @@
1
- /**
2
- * PostgreSQL System Version Manager (FALLBACK / DEPRECATED)
3
- *
4
- * @deprecated SpinDB now downloads PostgreSQL binaries from hostdb, which include
5
- * all client tools (psql, pg_dump, pg_restore). This module is a legacy fallback
6
- * for users who have PostgreSQL installed via system package managers. Consider
7
- * removing this module once hostdb adoption is complete.
8
- *
9
- * FALLBACK USE CASE:
10
- * Detects PostgreSQL versions installed via system package managers:
11
- * - macOS: Homebrew (/opt/homebrew/opt/postgresql@17/bin)
12
- * - Linux: APT/YUM (/usr/lib/postgresql/17/bin)
13
- *
14
- * Used when hostdb binaries are unavailable and system tools are needed for
15
- * dump/restore operations with version compatibility requirements.
16
- */
17
-
18
- import { exec } from 'child_process'
19
- import { promisify } from 'util'
20
- import { existsSync } from 'fs'
21
- import { platformService } from './platform-service'
22
- import { Platform, Arch } from '../types'
23
- import { logDebug } from './error-handler'
24
-
25
- const execAsync = promisify(exec)
26
-
27
- // PostgreSQL versions to detect on system (via Homebrew/apt)
28
- // NOTE: This is for SYSTEM-INSTALLED PostgreSQL only (fallback path).
29
- // Primary path uses hostdb binaries. If this module is removed, these
30
- // versions become irrelevant.
31
- const SUPPORTED_PG_VERSIONS = ['14', '15', '16', '17', '18']
32
-
33
- export type InstalledPostgresVersion = {
34
- majorVersion: string // e.g., "14", "17"
35
- fullVersion: string // e.g., "14.20", "17.7.0"
36
- binPath: string // e.g., "/opt/homebrew/opt/postgresql@17/bin" or "/usr/lib/postgresql/17/bin"
37
- isLinked: boolean // Currently linked to system PATH (macOS only)
38
- source: 'homebrew' | 'apt' | 'system' | 'unknown'
39
- }
40
-
41
- export type VersionSwitchResult = {
42
- success: boolean
43
- previousVersion?: string
44
- currentVersion?: string
45
- error?: string
46
- }
47
-
48
- // Check if Homebrew is available on this system
49
- export async function isHomebrewAvailable(): Promise<boolean> {
50
- const { platform } = platformService.getPlatformInfo()
51
- if (platform !== Platform.Darwin) return false
52
-
53
- try {
54
- await execAsync('brew --version')
55
- return true
56
- } catch {
57
- return false
58
- }
59
- }
60
-
61
- // Get the Homebrew prefix based on architecture
62
- function getHomebrewPrefix(): string {
63
- const { arch } = platformService.getPlatformInfo()
64
- return arch === Arch.ARM64 ? '/opt/homebrew' : '/usr/local'
65
- }
66
-
67
- // Get Linux PostgreSQL bin paths (Debian/Ubuntu style)
68
- function getLinuxPostgresPath(majorVersion: string): string {
69
- return `/usr/lib/postgresql/${majorVersion}/bin`
70
- }
71
-
72
- // Get the currently linked PostgreSQL major version (if any)
73
- export async function getCurrentLinkedVersion(): Promise<string | null> {
74
- const prefix = getHomebrewPrefix()
75
- const pgDumpPath = `${prefix}/bin/pg_dump`
76
-
77
- if (!existsSync(pgDumpPath)) {
78
- return null
79
- }
80
-
81
- try {
82
- const { stdout } = await execAsync(`"${pgDumpPath}" --version`)
83
- const match = stdout.match(/(\d+)\.(\d+)/)
84
- return match ? match[1] : null
85
- } catch {
86
- return null
87
- }
88
- }
89
-
90
- /**
91
- * Detect all PostgreSQL versions installed on the system
92
- * Works on both macOS (Homebrew) and Linux (APT/YUM)
93
- */
94
- export async function detectInstalledPostgres(): Promise<
95
- InstalledPostgresVersion[]
96
- > {
97
- const { platform } = platformService.getPlatformInfo()
98
- const installed: InstalledPostgresVersion[] = []
99
-
100
- // Get currently linked version (for macOS)
101
- const linkedVersion = await getCurrentLinkedVersion()
102
-
103
- if (platform === Platform.Darwin) {
104
- // macOS: Check Homebrew installations
105
- const prefix = getHomebrewPrefix()
106
-
107
- for (const major of SUPPORTED_PG_VERSIONS) {
108
- const binPath = `${prefix}/opt/postgresql@${major}/bin`
109
- const pgDumpPath = `${binPath}/pg_dump`
110
-
111
- if (existsSync(pgDumpPath)) {
112
- try {
113
- const { stdout } = await execAsync(`"${pgDumpPath}" --version`)
114
- const match = stdout.match(/(\d+)\.(\d+)(?:\.(\d+))?/)
115
- if (match) {
116
- installed.push({
117
- majorVersion: major,
118
- fullVersion: match[0],
119
- binPath,
120
- isLinked: linkedVersion === major,
121
- source: 'homebrew',
122
- })
123
- }
124
- } catch (error) {
125
- logDebug(`Could not get version for postgresql@${major}`, {
126
- error: error instanceof Error ? error.message : String(error),
127
- })
128
- }
129
- }
130
- }
131
- } else if (platform === Platform.Linux) {
132
- // Linux: Check /usr/lib/postgresql/*/bin (Debian/Ubuntu style)
133
- for (const major of SUPPORTED_PG_VERSIONS) {
134
- const binPath = getLinuxPostgresPath(major)
135
- const pgDumpPath = `${binPath}/pg_dump`
136
-
137
- if (existsSync(pgDumpPath)) {
138
- try {
139
- const { stdout } = await execAsync(`"${pgDumpPath}" --version`)
140
- const match = stdout.match(/(\d+)\.(\d+)(?:\.(\d+))?/)
141
- if (match) {
142
- installed.push({
143
- majorVersion: major,
144
- fullVersion: match[0],
145
- binPath,
146
- isLinked: false, // Linux doesn't use linking like Homebrew
147
- source: 'apt',
148
- })
149
- }
150
- } catch (error) {
151
- logDebug(`Could not get version for postgresql-${major}`, {
152
- error: error instanceof Error ? error.message : String(error),
153
- })
154
- }
155
- }
156
- }
157
- }
158
-
159
- return installed
160
- }
161
-
162
- /**
163
- * Get the direct path to a PostgreSQL binary for a specific major version
164
- * This allows using a specific version without changing system links
165
- *
166
- * Works on:
167
- * - macOS: /opt/homebrew/opt/postgresql@17/bin/pg_dump
168
- * - Linux: /usr/lib/postgresql/17/bin/pg_dump
169
- */
170
- export async function getDirectBinaryPath(
171
- tool: 'pg_dump' | 'pg_restore' | 'psql' | 'pg_basebackup',
172
- majorVersion: string,
173
- ): Promise<string | null> {
174
- const { platform } = platformService.getPlatformInfo()
175
-
176
- if (platform === Platform.Darwin) {
177
- // macOS: Homebrew path
178
- const prefix = getHomebrewPrefix()
179
- const path = `${prefix}/opt/postgresql@${majorVersion}/bin/${tool}`
180
- if (existsSync(path)) return path
181
- } else if (platform === Platform.Linux) {
182
- // Linux: Debian/Ubuntu path
183
- const path = `${getLinuxPostgresPath(majorVersion)}/${tool}`
184
- if (existsSync(path)) return path
185
- }
186
-
187
- return null
188
- }
189
-
190
- /**
191
- * Find a compatible PostgreSQL version for the target major version
192
- * Returns the best available version that is >= targetMajor
193
- */
194
- export async function findCompatibleVersion(
195
- targetMajor: number,
196
- ): Promise<InstalledPostgresVersion | null> {
197
- const installed = await detectInstalledPostgres()
198
-
199
- // Filter versions >= target
200
- const compatible = installed.filter(
201
- (v) => parseInt(v.majorVersion, 10) >= targetMajor,
202
- )
203
-
204
- if (compatible.length === 0) {
205
- return null
206
- }
207
-
208
- // Prefer the currently linked version if it's compatible
209
- const linked = compatible.find((v) => v.isLinked)
210
- if (linked) {
211
- return linked
212
- }
213
-
214
- // Otherwise return the lowest compatible version (closest to target)
215
- compatible.sort(
216
- (a, b) => parseInt(a.majorVersion, 10) - parseInt(b.majorVersion, 10),
217
- )
218
- return compatible[0]
219
- }
220
-
221
- /**
222
- * Switch system to use a specific PostgreSQL version
223
- *
224
- * - macOS: Uses `brew link` to change symlinks
225
- * - Linux: Uses `update-alternatives` if available (Debian/Ubuntu)
226
- *
227
- * NOTE: Prefer getDirectBinaryPath() when possible to avoid side effects
228
- */
229
- export async function switchHomebrewVersion(
230
- targetMajor: string,
231
- ): Promise<VersionSwitchResult> {
232
- const { platform } = platformService.getPlatformInfo()
233
-
234
- if (platform === Platform.Darwin) {
235
- return switchHomebrewVersionMacOS(targetMajor)
236
- } else if (platform === Platform.Linux) {
237
- return switchVersionLinux(targetMajor)
238
- }
239
-
240
- return {
241
- success: false,
242
- error: 'Version switching not supported on this platform',
243
- }
244
- }
245
-
246
- // Switch PostgreSQL version on macOS using Homebrew
247
- async function switchHomebrewVersionMacOS(
248
- targetMajor: string,
249
- ): Promise<VersionSwitchResult> {
250
- if (!(await isHomebrewAvailable())) {
251
- return { success: false, error: 'Homebrew not available' }
252
- }
253
-
254
- const installed = await detectInstalledPostgres()
255
- const target = installed.find((v) => v.majorVersion === targetMajor)
256
-
257
- if (!target) {
258
- return {
259
- success: false,
260
- error: `PostgreSQL ${targetMajor} is not installed via Homebrew. Install with: brew install postgresql@${targetMajor}`,
261
- }
262
- }
263
-
264
- if (target.isLinked) {
265
- return {
266
- success: true,
267
- currentVersion: targetMajor,
268
- previousVersion: targetMajor,
269
- }
270
- }
271
-
272
- const previousLinked = installed.find((v) => v.isLinked)
273
-
274
- try {
275
- // Unlink all versions first
276
- for (const ver of installed) {
277
- await execAsync(
278
- `brew unlink postgresql@${ver.majorVersion} 2>/dev/null || true`,
279
- )
280
- }
281
-
282
- // Link target version
283
- await execAsync(`brew link --overwrite postgresql@${targetMajor}`)
284
-
285
- logDebug('Switched Homebrew PostgreSQL version', {
286
- from: previousLinked?.majorVersion,
287
- to: targetMajor,
288
- })
289
-
290
- return {
291
- success: true,
292
- previousVersion: previousLinked?.majorVersion,
293
- currentVersion: targetMajor,
294
- }
295
- } catch (error) {
296
- return {
297
- success: false,
298
- error: error instanceof Error ? error.message : String(error),
299
- }
300
- }
301
- }
302
-
303
- /**
304
- * "Switch" PostgreSQL version on Linux (no-op verification only)
305
- *
306
- * Unlike macOS where Homebrew uses symlinks that need switching, Linux installs
307
- * PostgreSQL versions side-by-side in versioned paths (e.g., /usr/lib/postgresql/17/bin).
308
- * We access these directly via getDirectBinaryPath(), so no symlink switching is needed.
309
- * This function just verifies the target version is installed.
310
- */
311
- async function switchVersionLinux(
312
- targetMajor: string,
313
- ): Promise<VersionSwitchResult> {
314
- const installed = await detectInstalledPostgres()
315
- const target = installed.find((v) => v.majorVersion === targetMajor)
316
-
317
- if (!target) {
318
- return {
319
- success: false,
320
- error: `PostgreSQL ${targetMajor} is not installed. Install with: sudo apt install postgresql-client-${targetMajor}`,
321
- }
322
- }
323
-
324
- // No action required - Linux uses versioned paths directly, no symlink switching needed
325
- logDebug(
326
- 'Linux: Version verified, no switching required (using direct path)',
327
- {
328
- version: targetMajor,
329
- binPath: target.binPath,
330
- },
331
- )
332
-
333
- return {
334
- success: true,
335
- currentVersion: targetMajor,
336
- }
337
- }
338
-
339
- // Get all client tools for a specific PostgreSQL version
340
- export async function getVersionedToolPaths(majorVersion: string): Promise<{
341
- pgDump: string | null
342
- pgRestore: string | null
343
- psql: string | null
344
- pgBasebackup: string | null
345
- }> {
346
- return {
347
- pgDump: await getDirectBinaryPath('pg_dump', majorVersion),
348
- pgRestore: await getDirectBinaryPath('pg_restore', majorVersion),
349
- psql: await getDirectBinaryPath('psql', majorVersion),
350
- pgBasebackup: await getDirectBinaryPath('pg_basebackup', majorVersion),
351
- }
352
- }
@@ -1,344 +0,0 @@
1
- /**
2
- * Shared hostdb Client Module
3
- *
4
- * Provides centralized access to pre-built database binaries.
5
- * Primary registry: registry.layerbase.host
6
- * Fallback registry: GitHub releases (robertjbass/hostdb)
7
- *
8
- * This module handles fetching releases.json with caching to avoid
9
- * repeated network requests.
10
- */
11
-
12
- import { Platform, type Arch, type Engine } from '../types'
13
- import { logDebug } from './error-handler'
14
-
15
- // Registry base URLs
16
- export const LAYERBASE_REGISTRY_BASE = 'https://registry.layerbase.host'
17
- export const GITHUB_REGISTRY_BASE =
18
- 'https://github.com/robertjbass/hostdb/releases/download'
19
-
20
- /**
21
- * Toggle GitHub fallback for binary downloads and releases.json fetches.
22
- * Set to `false` to exclusively test the Layerbase registry.
23
- * Must be re-enabled before release (see PRE_RELEASE_TASKS.md).
24
- */
25
- export const ENABLE_GITHUB_FALLBACK = false
26
-
27
- // Platform definition in hostdb releases.json
28
- export type HostdbPlatform = {
29
- url: string
30
- sha256: string
31
- size: number
32
- }
33
-
34
- // Version entry in hostdb releases.json
35
- export type HostdbRelease = {
36
- version: string
37
- releaseTag: string
38
- releasedAt: string
39
- platforms: Record<string, HostdbPlatform>
40
- }
41
-
42
- // Structure of hostdb releases.json
43
- export type HostdbReleasesData = {
44
- repository: string
45
- updatedAt: string
46
- databases: Record<string, Record<string, HostdbRelease>>
47
- }
48
-
49
- // Supported hostdb platforms
50
- export const SUPPORTED_PLATFORMS = [
51
- 'darwin-arm64',
52
- 'darwin-x64',
53
- 'linux-arm64',
54
- 'linux-x64',
55
- 'win32-x64',
56
- ] as const
57
-
58
- export type SupportedPlatform = (typeof SUPPORTED_PLATFORMS)[number]
59
-
60
- // Type alias for engines available in hostdb (uses the Engine enum from types)
61
- export type HostdbEngine = Engine
62
-
63
- /**
64
- * In-memory cache for fetched releases.
65
- *
66
- * THREAD-SAFETY NOTE: This cache uses module-level mutable state and is NOT
67
- * safe for use across Node.js worker threads. Each worker thread will have
68
- * its own copy of this cache. For SpinDB's single-threaded CLI use case,
69
- * this is acceptable.
70
- */
71
- let cachedReleases: HostdbReleasesData | null = null
72
- let cacheTimestamp = 0
73
- const CACHE_TTL_MS = 5 * 60 * 1000 // 5 minutes
74
-
75
- export const LAYERBASE_RELEASES_URL =
76
- 'https://registry.layerbase.host/releases.json'
77
- export const GITHUB_RELEASES_URL =
78
- 'https://raw.githubusercontent.com/robertjbass/hostdb/main/releases.json'
79
-
80
- /**
81
- * Get the list of releases.json URLs to try, respecting ENABLE_GITHUB_FALLBACK.
82
- * When fallback is disabled, only the Layerbase URL is returned.
83
- */
84
- export function getReleasesUrls(): string[] {
85
- return ENABLE_GITHUB_FALLBACK
86
- ? [LAYERBASE_RELEASES_URL, GITHUB_RELEASES_URL]
87
- : [LAYERBASE_RELEASES_URL]
88
- }
89
-
90
- /**
91
- * Fetch releases.json from hostdb repository with caching.
92
- *
93
- * @returns The full releases data from hostdb
94
- * @throws Error if the fetch fails
95
- */
96
- export async function fetchHostdbReleases(): Promise<HostdbReleasesData> {
97
- // Return cached releases if still valid
98
- if (cachedReleases && Date.now() - cacheTimestamp < CACHE_TTL_MS) {
99
- return cachedReleases
100
- }
101
-
102
- // Try layerbase registry first, fall back to GitHub (if enabled)
103
- const urls = getReleasesUrls()
104
- for (let i = 0; i < urls.length; i++) {
105
- const url = urls[i]
106
- const isLast = i === urls.length - 1
107
- try {
108
- const response = await fetch(url, {
109
- signal: AbortSignal.timeout(5000),
110
- })
111
- if (!response.ok) {
112
- throw new Error(`HTTP ${response.status}: ${response.statusText}`)
113
- }
114
-
115
- const data = (await response.json()) as HostdbReleasesData
116
-
117
- // Cache the results
118
- cachedReleases = data
119
- cacheTimestamp = Date.now()
120
-
121
- return data
122
- } catch (error) {
123
- const err = error as Error
124
- logDebug(`Failed to fetch releases from ${url}: ${err.message}`)
125
- // If this was the last URL, rethrow
126
- if (isLast) {
127
- throw error
128
- }
129
- // Otherwise try the next URL
130
- }
131
- }
132
-
133
- // Should be unreachable (loop always throws on last iteration)
134
- throw new Error('Failed to fetch hostdb releases from all registries')
135
- }
136
-
137
- /**
138
- * Get the releases for a specific engine from the hostdb data.
139
- *
140
- * @param data - The full hostdb releases data
141
- * @param engine - The engine (e.g., Engine.PostgreSQL or 'postgresql')
142
- * @returns The releases for that engine, or undefined if not found
143
- */
144
- export function getEngineReleases(
145
- data: HostdbReleasesData,
146
- engine: Engine | string,
147
- ): Record<string, HostdbRelease> | undefined {
148
- return data.databases[engine]
149
- }
150
-
151
- /**
152
- * Map Node.js platform identifiers to hostdb platform identifiers.
153
- *
154
- * @param platform - Node.js platform (e.g., Platform.Darwin)
155
- * @param arch - Node.js architecture (e.g., Arch.ARM64)
156
- * @returns The hostdb platform identifier, or undefined if not supported
157
- */
158
- export function getHostdbPlatform(
159
- platform: Platform,
160
- arch: Arch,
161
- ): SupportedPlatform | undefined {
162
- const key = `${platform}-${arch}`
163
- return SUPPORTED_PLATFORMS.includes(key as SupportedPlatform)
164
- ? (key as SupportedPlatform)
165
- : undefined
166
- }
167
-
168
- /**
169
- * Validate that a platform is supported by hostdb.
170
- *
171
- * @param platform - Node.js platform (e.g., Platform.Darwin)
172
- * @param arch - Node.js architecture (e.g., Arch.ARM64)
173
- * @returns The validated hostdb platform identifier
174
- * @throws Error if the platform is not supported
175
- */
176
- export function validatePlatform(
177
- platform: Platform,
178
- arch: Arch,
179
- ): SupportedPlatform {
180
- const hostdbPlatform = getHostdbPlatform(platform, arch)
181
- if (!hostdbPlatform) {
182
- const supported = SUPPORTED_PLATFORMS.join(', ')
183
- throw new Error(
184
- `Unsupported platform: ${platform}-${arch}. ` +
185
- `hostdb provides binaries for: ${supported}`,
186
- )
187
- }
188
- return hostdbPlatform
189
- }
190
-
191
- export type BuildHostdbUrlOptions = {
192
- version: string
193
- hostdbPlatform: string
194
- extension?: 'tar.gz' | 'zip'
195
- }
196
-
197
- /**
198
- * Build a download URL for a hostdb release (low-level, no validation).
199
- *
200
- * This is the core URL builder that all engines should use after validating
201
- * the platform against their own supported platform set.
202
- *
203
- * @param engine - The engine name (e.g., 'postgresql', 'mysql')
204
- * @param options - Version, pre-validated platform string, and optional extension
205
- * @returns The download URL
206
- */
207
- export function buildHostdbUrl(
208
- engine: Engine | string,
209
- options: BuildHostdbUrlOptions,
210
- ): string {
211
- const { version, hostdbPlatform, extension = 'tar.gz' } = options
212
- const tag = `${engine}-${version}`
213
- const filename = `${engine}-${version}-${hostdbPlatform}.${extension}`
214
-
215
- return `${LAYERBASE_REGISTRY_BASE}/${tag}/${filename}`
216
- }
217
-
218
- /**
219
- * Build a GitHub fallback URL for a hostdb release (same path scheme as layerbase).
220
- */
221
- export function buildGithubFallbackUrl(
222
- engine: Engine | string,
223
- options: BuildHostdbUrlOptions,
224
- ): string {
225
- const { version, hostdbPlatform, extension = 'tar.gz' } = options
226
- const tag = `${engine}-${version}`
227
- const filename = `${engine}-${version}-${hostdbPlatform}.${extension}`
228
-
229
- return `${GITHUB_REGISTRY_BASE}/${tag}/${filename}`
230
- }
231
-
232
- /**
233
- * Convert a layerbase registry URL to its GitHub fallback equivalent.
234
- * Returns null if the URL is not a layerbase URL or if GitHub fallback is disabled.
235
- */
236
- export function getRegistryFallbackUrl(url: string): string | null {
237
- if (!ENABLE_GITHUB_FALLBACK) return null
238
- if (url.startsWith(LAYERBASE_REGISTRY_BASE)) {
239
- return url.replace(LAYERBASE_REGISTRY_BASE, GITHUB_REGISTRY_BASE)
240
- }
241
- return null
242
- }
243
-
244
- /**
245
- * Fetch wrapper that tries the primary URL first, then falls back to the
246
- * GitHub registry if the primary is a layerbase URL and the request fails
247
- * with a 404, 5xx, or network error.
248
- *
249
- * AbortError (timeout) is never retried — it propagates immediately.
250
- */
251
- export async function fetchWithRegistryFallback(
252
- url: string,
253
- options?: RequestInit,
254
- ): Promise<Response> {
255
- try {
256
- const response = await fetch(url, options)
257
- if (response.status === 404 || response.status >= 500) {
258
- const fallbackUrl = getRegistryFallbackUrl(url)
259
- if (fallbackUrl) {
260
- logDebug(
261
- `Primary registry returned ${response.status}, trying GitHub fallback`,
262
- )
263
- return await fetch(fallbackUrl, options)
264
- }
265
- }
266
- return response
267
- } catch (error) {
268
- const err = error as Error
269
- // Never retry on timeout (AbortError)
270
- if (err.name === 'AbortError') {
271
- throw error
272
- }
273
- const fallbackUrl = getRegistryFallbackUrl(url)
274
- if (fallbackUrl) {
275
- logDebug(
276
- `Primary registry fetch failed (${err.message}), trying GitHub fallback`,
277
- )
278
- return await fetch(fallbackUrl, options)
279
- }
280
- throw error
281
- }
282
- }
283
-
284
- /**
285
- * Try fetching from multiple registry URLs in order, returning the first
286
- * successful (response.ok) Response. Logs per-URL failures via the
287
- * supplied logger callback.
288
- *
289
- * @param urls - URLs to try in order (e.g., layerbase then GitHub)
290
- * @param logger - Callback for logging per-URL failures
291
- * @param timeoutMs - Per-request timeout in milliseconds (default: 5000)
292
- * @returns The first successful Response
293
- * @throws Error if all URLs fail
294
- */
295
- export async function fetchFromRegistryUrls(
296
- urls: string[],
297
- logger: (message: string) => void,
298
- timeoutMs: number = 5000,
299
- ): Promise<Response> {
300
- let lastError: Error | null = null
301
- for (const url of urls) {
302
- try {
303
- const response = await fetch(url, {
304
- signal: AbortSignal.timeout(timeoutMs),
305
- })
306
- if (response.ok) return response
307
- logger(`Registry fetch from ${url}: HTTP ${response.status}`)
308
- } catch (error) {
309
- logger(`Registry fetch from ${url} failed: ${error}`)
310
- lastError = error as Error
311
- }
312
- }
313
- throw lastError ?? new Error('All release registries failed')
314
- }
315
-
316
- export type BuildDownloadUrlOptions = {
317
- version: string
318
- platform: Platform
319
- arch: Arch
320
- }
321
-
322
- /**
323
- * Build a download URL for a hostdb release with platform validation.
324
- *
325
- * This is a convenience wrapper around buildHostdbUrl that validates
326
- * the platform against the global SUPPORTED_PLATFORMS list. For engines
327
- * with different platform support (e.g., ClickHouse doesn't support Windows),
328
- * use buildHostdbUrl directly after validating against engine-specific platforms.
329
- *
330
- * @param engine - The engine name (e.g., 'postgresql', 'mysql')
331
- * @param options - Version and platform configuration
332
- * @returns The download URL
333
- * @throws Error if the platform is not supported by hostdb
334
- */
335
- export function buildDownloadUrl(
336
- engine: Engine | string,
337
- options: BuildDownloadUrlOptions,
338
- ): string {
339
- const { version, platform, arch } = options
340
- const hostdbPlatform = validatePlatform(platform, arch)
341
- const ext = platform === Platform.Win32 ? 'zip' : 'tar.gz'
342
-
343
- return buildHostdbUrl(engine, { version, hostdbPlatform, extension: ext })
344
- }