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,814 @@
1
+ /**
2
+ * QuestDB Engine Implementation
3
+ *
4
+ * QuestDB is a high-performance time-series database with built-in support for
5
+ * SQL queries via PostgreSQL wire protocol.
6
+ *
7
+ * Key characteristics:
8
+ * - Default PostgreSQL wire protocol port: 8812
9
+ * - Default HTTP port: 9000 (REST API and Web Console)
10
+ * - Default ILP (InfluxDB Line Protocol) port: 9009
11
+ * - Java-based with bundled JRE (no Java installation required)
12
+ * - Startup script: questdb.sh (Unix) or questdb.exe (Windows)
13
+ * - Default database: qdb (root database)
14
+ * - Default user: admin (password: quest)
15
+ * - Query language: SQL (with time-series extensions)
16
+ * - Web Console at http://localhost:9000
17
+ */
18
+ import { spawn } from 'child_process';
19
+ import { existsSync } from 'fs';
20
+ import { mkdir, writeFile, readFile, unlink, readdir, stat } from 'fs/promises';
21
+ import { join } from 'path';
22
+ import { BaseEngine } from '../base-engine.js';
23
+ import { paths } from '../../config/paths.js';
24
+ import { getEngineDefaults } from '../../config/defaults.js';
25
+ import { platformService } from '../../core/platform-service.js';
26
+ import { configManager } from '../../core/config-manager.js';
27
+ import { logDebug, logWarning } from '../../core/error-handler.js';
28
+ import { findBinary } from '../../core/dependency-manager.js';
29
+ import { processManager } from '../../core/process-manager.js';
30
+ import { questdbBinaryManager } from './binary-manager.js';
31
+ import { getBinaryUrl } from './binary-urls.js';
32
+ import { normalizeVersion, SUPPORTED_MAJOR_VERSIONS, QUESTDB_VERSION_MAP, } from './version-maps.js';
33
+ import { fetchAvailableVersions as fetchHostdbVersions } from './hostdb-releases.js';
34
+ import { detectBackupFormat as detectBackupFormatImpl, restoreBackup, parseConnectionString, } from './restore.js';
35
+ import { createBackup } from './backup.js';
36
+ import { parseCSVToQueryResult } from '../../core/query-parser.js';
37
+ const ENGINE = 'questdb';
38
+ const engineDef = getEngineDefaults(ENGINE);
39
+ export class QuestDBEngine extends BaseEngine {
40
+ name = ENGINE;
41
+ displayName = 'QuestDB';
42
+ defaultPort = engineDef.defaultPort;
43
+ supportedVersions = SUPPORTED_MAJOR_VERSIONS;
44
+ // Get platform info for binary operations
45
+ getPlatformInfo() {
46
+ return platformService.getPlatformInfo();
47
+ }
48
+ // Fetch available versions from hostdb (dynamically or from cache/fallback)
49
+ async fetchAvailableVersions() {
50
+ return fetchHostdbVersions();
51
+ }
52
+ // Get binary download URL from hostdb
53
+ getBinaryUrl(version, platform, arch) {
54
+ return getBinaryUrl(version, platform, arch);
55
+ }
56
+ // Resolves version string to full version (e.g., '9' -> '9.2.3')
57
+ resolveFullVersion(version) {
58
+ if (/^\d+\.\d+\.\d+$/.test(version)) {
59
+ return version;
60
+ }
61
+ return QUESTDB_VERSION_MAP[version] || version;
62
+ }
63
+ // Get the path where binaries for a version would be installed
64
+ getBinaryPath(version) {
65
+ const fullVersion = this.resolveFullVersion(version);
66
+ const { platform: p, arch: a } = this.getPlatformInfo();
67
+ return paths.getBinaryPath({
68
+ engine: 'questdb',
69
+ version: fullVersion,
70
+ platform: p,
71
+ arch: a,
72
+ });
73
+ }
74
+ // Verify that QuestDB binaries are available
75
+ async verifyBinary(binPath) {
76
+ // Check both root and bin/ subdirectory (structure differs by platform)
77
+ const { platform } = this.getPlatformInfo();
78
+ if (platform === 'win32') {
79
+ const exePathRoot = join(binPath, 'questdb.exe');
80
+ const exePathBin = join(binPath, 'bin', 'questdb.exe');
81
+ return existsSync(exePathRoot) || existsSync(exePathBin);
82
+ }
83
+ else {
84
+ const shPathRoot = join(binPath, 'questdb.sh');
85
+ const shPathBin = join(binPath, 'bin', 'questdb.sh');
86
+ return existsSync(shPathRoot) || existsSync(shPathBin);
87
+ }
88
+ }
89
+ // Check if a specific QuestDB version is installed (downloaded)
90
+ async isBinaryInstalled(version) {
91
+ const { platform, arch } = this.getPlatformInfo();
92
+ return questdbBinaryManager.isInstalled(version, platform, arch);
93
+ }
94
+ /**
95
+ * Ensure QuestDB binaries are available for a specific version
96
+ * Downloads from hostdb if not already installed
97
+ * Returns the path to the installation directory
98
+ */
99
+ async ensureBinaries(version, onProgress) {
100
+ const { platform, arch } = this.getPlatformInfo();
101
+ const binPath = await questdbBinaryManager.ensureInstalled(version, platform, arch, onProgress);
102
+ // Ensure startup script is executable
103
+ await questdbBinaryManager.postExtract(binPath, platform);
104
+ // Register the startup script in config
105
+ // Register the startup script in config - check both locations
106
+ if (platform === 'win32') {
107
+ const exePathRoot = join(binPath, 'questdb.exe');
108
+ const exePathBin = join(binPath, 'bin', 'questdb.exe');
109
+ const exePath = existsSync(exePathRoot) ? exePathRoot : exePathBin;
110
+ if (existsSync(exePath)) {
111
+ await configManager.setBinaryPath('questdb', exePath, 'bundled');
112
+ }
113
+ }
114
+ else {
115
+ const shPathRoot = join(binPath, 'questdb.sh');
116
+ const shPathBin = join(binPath, 'bin', 'questdb.sh');
117
+ const shPath = existsSync(shPathRoot) ? shPathRoot : shPathBin;
118
+ if (existsSync(shPath)) {
119
+ await configManager.setBinaryPath('questdb', shPath, 'bundled');
120
+ }
121
+ }
122
+ return binPath;
123
+ }
124
+ /**
125
+ * Initialize a new QuestDB data directory
126
+ */
127
+ async initDataDir(containerName, _version, _options = {}) {
128
+ const dataDir = paths.getContainerDataPath(containerName, {
129
+ engine: ENGINE,
130
+ });
131
+ // Create data directory
132
+ await mkdir(dataDir, { recursive: true });
133
+ logDebug(`Created QuestDB data directory: ${dataDir}`);
134
+ return dataDir;
135
+ }
136
+ // Get the path to QuestDB startup script for a version
137
+ async getQuestDBPath(version) {
138
+ const { platform, arch } = this.getPlatformInfo();
139
+ const fullVersion = normalizeVersion(version);
140
+ const binPath = paths.getBinaryPath({
141
+ engine: 'questdb',
142
+ version: fullVersion,
143
+ platform,
144
+ arch,
145
+ });
146
+ // Check both root and bin/ subdirectory (structure differs by platform)
147
+ if (platform === 'win32') {
148
+ const exePathRoot = join(binPath, 'questdb.exe');
149
+ const exePathBin = join(binPath, 'bin', 'questdb.exe');
150
+ if (existsSync(exePathRoot))
151
+ return exePathRoot;
152
+ if (existsSync(exePathBin))
153
+ return exePathBin;
154
+ }
155
+ else {
156
+ const shPathRoot = join(binPath, 'questdb.sh');
157
+ const shPathBin = join(binPath, 'bin', 'questdb.sh');
158
+ if (existsSync(shPathRoot))
159
+ return shPathRoot;
160
+ if (existsSync(shPathBin))
161
+ return shPathBin;
162
+ }
163
+ throw new Error(`QuestDB ${version} is not installed. Run: spindb engines download questdb ${version}`);
164
+ }
165
+ /**
166
+ * Start QuestDB server
167
+ */
168
+ async start(container, onProgress) {
169
+ const { name, port, version, binaryPath } = container;
170
+ // Check if already running
171
+ const alreadyRunning = await processManager.isRunning(name, {
172
+ engine: ENGINE,
173
+ });
174
+ if (alreadyRunning) {
175
+ return {
176
+ port,
177
+ connectionString: this.getConnectionString(container),
178
+ };
179
+ }
180
+ // Get QuestDB binary path - check both root and bin/ subdirectory
181
+ let questdbBinary = null;
182
+ const { platform } = this.getPlatformInfo();
183
+ if (binaryPath && existsSync(binaryPath)) {
184
+ if (platform === 'win32') {
185
+ const exePathRoot = join(binaryPath, 'questdb.exe');
186
+ const exePathBin = join(binaryPath, 'bin', 'questdb.exe');
187
+ if (existsSync(exePathRoot)) {
188
+ questdbBinary = exePathRoot;
189
+ logDebug(`Using stored binary path: ${questdbBinary}`);
190
+ }
191
+ else if (existsSync(exePathBin)) {
192
+ questdbBinary = exePathBin;
193
+ logDebug(`Using stored binary path (bin/): ${questdbBinary}`);
194
+ }
195
+ }
196
+ else {
197
+ const shPathRoot = join(binaryPath, 'questdb.sh');
198
+ const shPathBin = join(binaryPath, 'bin', 'questdb.sh');
199
+ if (existsSync(shPathRoot)) {
200
+ questdbBinary = shPathRoot;
201
+ logDebug(`Using stored binary path: ${questdbBinary}`);
202
+ }
203
+ else if (existsSync(shPathBin)) {
204
+ questdbBinary = shPathBin;
205
+ logDebug(`Using stored binary path (bin/): ${questdbBinary}`);
206
+ }
207
+ }
208
+ }
209
+ if (!questdbBinary) {
210
+ try {
211
+ questdbBinary = await this.getQuestDBPath(version);
212
+ }
213
+ catch (error) {
214
+ const originalMessage = error instanceof Error ? error.message : String(error);
215
+ throw new Error(`QuestDB ${version} is not installed. Run: spindb engines download questdb ${version}\n` +
216
+ ` Original error: ${originalMessage}`);
217
+ }
218
+ }
219
+ const containerDir = paths.getContainerPath(name, { engine: ENGINE });
220
+ const dataDir = paths.getContainerDataPath(name, { engine: ENGINE });
221
+ const pidFile = join(containerDir, 'questdb.pid');
222
+ // Calculate HTTP port (default is PG port + 188, i.e., 8812 + 188 = 9000)
223
+ const httpPort = port + 188;
224
+ onProgress?.({ stage: 'starting', message: 'Starting QuestDB...' });
225
+ logDebug(`Starting QuestDB with data dir: ${dataDir}`);
226
+ const isWindows = platform === 'win32';
227
+ // QuestDB startup command
228
+ // Windows: questdb.exe doesn't support 'start' subcommand reliably (GitHub #1222)
229
+ // Run without 'start' command - it starts in interactive/foreground mode
230
+ // Unix: questdb.sh start -d ... -t ... -n daemonizes properly
231
+ // -t tag: Unique process tag allows multiple QuestDB instances to run simultaneously
232
+ // Without this, QuestDB detects other instances by process label and refuses to start
233
+ const args = isWindows
234
+ ? ['-d', dataDir, '-t', name] // Windows: no 'start' command, no '-n' flag
235
+ : ['start', '-d', dataDir, '-t', name, '-n']; // Unix: full daemon mode
236
+ // Environment variables for QuestDB configuration
237
+ // Note: Don't set QDB_LOG_W_FILE_LOCATION - QuestDB expects rolling log patterns with $
238
+ // Logs are written to dataDir/log/ by default
239
+ //
240
+ // Port offsets from base PostgreSQL port:
241
+ // - HTTP Server: +188 (default 9000)
242
+ // - HTTP Min Server: +191 (default 9003) - for health checks/metrics
243
+ // - ILP TCP: +197 (default 9009)
244
+ const env = {
245
+ ...process.env,
246
+ QDB_HTTP_BIND_TO: `0.0.0.0:${httpPort}`,
247
+ QDB_HTTP_MIN_NET_BIND_TO: `0.0.0.0:${port + 191}`, // HTTP Min Server (health/metrics)
248
+ QDB_PG_NET_BIND_TO: `0.0.0.0:${port}`,
249
+ QDB_LINE_TCP_NET_BIND_TO: `0.0.0.0:${port + 197}`, // ILP port
250
+ };
251
+ // IMPORTANT: Use 'ignore' for all stdio to prevent hanging
252
+ // QuestDB runs as a daemon and we don't want to keep file descriptors open
253
+ const spawnOptions = {
254
+ stdio: ['ignore', 'ignore', 'ignore'],
255
+ detached: true,
256
+ cwd: containerDir,
257
+ env,
258
+ windowsHide: true,
259
+ };
260
+ logDebug(`Spawning QuestDB: ${questdbBinary} ${args.join(' ')}`);
261
+ const proc = spawn(questdbBinary, args, spawnOptions);
262
+ // Allow the process to detach immediately
263
+ // Note: We don't write the PID file here because questdb.sh forks the Java
264
+ // process and exits. The shell's PID becomes invalid immediately.
265
+ // QuestDB writes its own PID file to {dataDir}/questdb.pid which we'll
266
+ // read after waiting for the server to be ready.
267
+ proc.unref();
268
+ // Wait for server to be ready
269
+ const timeout = isWindows ? 90000 : 60000;
270
+ logDebug(`Waiting for QuestDB to be ready on port ${port}... (timeout: ${timeout}ms)`);
271
+ // Give QuestDB a moment to start before checking
272
+ await new Promise((resolve) => setTimeout(resolve, 2000));
273
+ const ready = await this.waitForReady(port, version, timeout);
274
+ logDebug(`waitForReady returned: ${ready}`);
275
+ if (!ready) {
276
+ // Clean up on failure - try to find and kill the QuestDB process by port
277
+ try {
278
+ const pids = await platformService.findProcessByPort(port);
279
+ if (pids.length > 0) {
280
+ logDebug(`Cleaning up failed QuestDB process (pid: ${pids[0]})`);
281
+ await platformService.terminateProcess(pids[0], true);
282
+ }
283
+ }
284
+ catch {
285
+ // Ignore cleanup errors
286
+ }
287
+ throw new Error(`QuestDB failed to start within timeout. Check logs at: ${dataDir}/log/`);
288
+ }
289
+ // QuestDB is ready - find the actual Java process PID by port
290
+ // QuestDB doesn't create a PID file in daemon mode, so we find the process by port
291
+ try {
292
+ const pids = await platformService.findProcessByPort(port);
293
+ if (pids.length > 0) {
294
+ const actualPid = pids[0];
295
+ await writeFile(pidFile, actualPid.toString(), 'utf-8');
296
+ logDebug(`Wrote PID file: ${pidFile} (pid: ${actualPid})`);
297
+ }
298
+ else {
299
+ logDebug('Could not find QuestDB process by port - PID file not created');
300
+ }
301
+ }
302
+ catch (err) {
303
+ logDebug(`Could not find QuestDB PID: ${err instanceof Error ? err.message : String(err)}`);
304
+ // Don't fail - QuestDB is running, we just can't track its PID
305
+ }
306
+ return {
307
+ port,
308
+ connectionString: this.getConnectionString(container),
309
+ };
310
+ }
311
+ // Wait for QuestDB to be ready using psql
312
+ async waitForReady(port, version, timeoutMs = 60000) {
313
+ logDebug(`waitForReady called for port ${port}`);
314
+ const startTime = Date.now();
315
+ const checkInterval = 500;
316
+ // Try to find psql for connection checking
317
+ let psqlPath = await configManager.getBinaryPath('psql');
318
+ if (!psqlPath) {
319
+ // Try system psql
320
+ try {
321
+ const result = await findBinary('psql');
322
+ if (result?.path) {
323
+ psqlPath = result.path;
324
+ }
325
+ }
326
+ catch {
327
+ // Ignore
328
+ }
329
+ }
330
+ // If no psql, try HTTP health check instead
331
+ if (!psqlPath) {
332
+ logDebug('psql not found, using HTTP health check');
333
+ return this.waitForReadyHttp(port + 188, timeoutMs);
334
+ }
335
+ let attempt = 0;
336
+ while (Date.now() - startTime < timeoutMs) {
337
+ attempt++;
338
+ logDebug(`Connection attempt ${attempt}...`);
339
+ try {
340
+ await new Promise((resolve, reject) => {
341
+ const proc = spawn(psqlPath, [
342
+ '-h',
343
+ '127.0.0.1',
344
+ '-p',
345
+ String(port),
346
+ '-U',
347
+ 'admin',
348
+ '-d',
349
+ 'qdb',
350
+ '-c',
351
+ 'SELECT 1;',
352
+ ], {
353
+ stdio: ['ignore', 'pipe', 'pipe'],
354
+ env: { ...process.env, PGPASSWORD: 'quest' },
355
+ });
356
+ proc.on('close', (code) => {
357
+ if (code === 0)
358
+ resolve();
359
+ else
360
+ reject(new Error(`Exit code ${code}`));
361
+ });
362
+ proc.on('error', reject);
363
+ });
364
+ logDebug(`QuestDB ready on port ${port}`);
365
+ return true;
366
+ }
367
+ catch (err) {
368
+ logDebug(`Attempt ${attempt} failed: ${err}`);
369
+ await new Promise((resolve) => setTimeout(resolve, checkInterval));
370
+ }
371
+ }
372
+ logWarning(`QuestDB did not become ready within ${timeoutMs}ms`);
373
+ return false;
374
+ }
375
+ // Fallback: wait using HTTP health check
376
+ async waitForReadyHttp(httpPort, timeoutMs) {
377
+ const startTime = Date.now();
378
+ const checkInterval = 500;
379
+ while (Date.now() - startTime < timeoutMs) {
380
+ try {
381
+ const response = await fetch(`http://127.0.0.1:${httpPort}/exec?query=SELECT%201`);
382
+ if (response.ok) {
383
+ logDebug(`QuestDB HTTP ready on port ${httpPort}`);
384
+ return true;
385
+ }
386
+ }
387
+ catch {
388
+ // Not ready yet
389
+ }
390
+ await new Promise((resolve) => setTimeout(resolve, checkInterval));
391
+ }
392
+ return false;
393
+ }
394
+ /**
395
+ * Stop QuestDB server
396
+ */
397
+ async stop(container) {
398
+ const { name, port } = container;
399
+ const containerDir = paths.getContainerPath(name, { engine: ENGINE });
400
+ const pidFile = join(containerDir, 'questdb.pid');
401
+ logDebug(`Stopping QuestDB container "${name}" on port ${port}`);
402
+ // Try to find process by port first (most reliable)
403
+ // QuestDB doesn't create a PID file, so port lookup is primary
404
+ let pid = null;
405
+ try {
406
+ const pids = await platformService.findProcessByPort(port);
407
+ if (pids.length > 0) {
408
+ pid = pids[0];
409
+ }
410
+ }
411
+ catch {
412
+ // Fall back to our PID file
413
+ try {
414
+ const pidStr = await readFile(pidFile, 'utf-8');
415
+ const parsedPid = parseInt(pidStr.trim(), 10);
416
+ if (!isNaN(parsedPid)) {
417
+ pid = parsedPid;
418
+ }
419
+ }
420
+ catch {
421
+ // Ignore
422
+ }
423
+ }
424
+ // Kill process if found
425
+ if (pid && platformService.isProcessRunning(pid)) {
426
+ logDebug(`Killing QuestDB process ${pid}`);
427
+ const { platform } = this.getPlatformInfo();
428
+ const isWindows = platform === 'win32';
429
+ try {
430
+ await platformService.terminateProcess(pid, false);
431
+ // Wait for graceful termination - Windows needs more time for Java to release file locks
432
+ const gracefulWait = isWindows ? 5000 : 2000;
433
+ await new Promise((resolve) => setTimeout(resolve, gracefulWait));
434
+ if (platformService.isProcessRunning(pid)) {
435
+ logWarning(`Graceful termination failed, force killing ${pid}`);
436
+ await platformService.terminateProcess(pid, true);
437
+ // Additional wait after force kill on Windows
438
+ if (isWindows) {
439
+ await new Promise((resolve) => setTimeout(resolve, 2000));
440
+ }
441
+ }
442
+ }
443
+ catch (error) {
444
+ logDebug(`Process termination error: ${error}`);
445
+ }
446
+ }
447
+ // Cleanup our PID file
448
+ if (existsSync(pidFile)) {
449
+ try {
450
+ await unlink(pidFile);
451
+ }
452
+ catch {
453
+ // Ignore
454
+ }
455
+ }
456
+ logDebug('QuestDB stopped');
457
+ }
458
+ // Get QuestDB server status
459
+ async status(container) {
460
+ const { port } = container;
461
+ // Try HTTP health check first
462
+ const httpPort = port + 188;
463
+ try {
464
+ const response = await fetch(`http://127.0.0.1:${httpPort}/exec?query=SELECT%201`);
465
+ if (response.ok) {
466
+ return { running: true, message: 'QuestDB is running' };
467
+ }
468
+ }
469
+ catch {
470
+ // Not running or not responding
471
+ }
472
+ return { running: false, message: 'QuestDB is not running' };
473
+ }
474
+ // Detect backup format
475
+ async detectBackupFormat(filePath) {
476
+ return detectBackupFormatImpl(filePath);
477
+ }
478
+ /**
479
+ * Restore a backup
480
+ */
481
+ async restore(container, backupPath, options = {}) {
482
+ const { name, port, version } = container;
483
+ return restoreBackup(backupPath, {
484
+ containerName: name,
485
+ port,
486
+ database: options.database || container.database || 'qdb',
487
+ version,
488
+ clean: options.clean,
489
+ });
490
+ }
491
+ /**
492
+ * Get connection string
493
+ * Format: postgresql://admin:quest@127.0.0.1:PORT/DATABASE
494
+ */
495
+ getConnectionString(container, database) {
496
+ const { port } = container;
497
+ const db = database || container.database || 'qdb';
498
+ return `postgresql://admin:quest@127.0.0.1:${port}/${db}`;
499
+ }
500
+ // Open psql interactive shell
501
+ async connect(container, database) {
502
+ const { port } = container;
503
+ const db = database || container.database || 'qdb';
504
+ // Find psql
505
+ let psqlPath = await configManager.getBinaryPath('psql');
506
+ if (!psqlPath) {
507
+ const result = await findBinary('psql');
508
+ if (result?.path) {
509
+ psqlPath = result.path;
510
+ }
511
+ else {
512
+ throw new Error('psql not found. Install PostgreSQL client tools or use the Web Console at ' +
513
+ `http://127.0.0.1:${port + 188}`);
514
+ }
515
+ }
516
+ const spawnOptions = {
517
+ stdio: 'inherit',
518
+ env: { ...process.env, PGPASSWORD: 'quest' },
519
+ };
520
+ return new Promise((resolve, reject) => {
521
+ const proc = spawn(psqlPath, ['-h', '127.0.0.1', '-p', String(port), '-U', 'admin', '-d', db], spawnOptions);
522
+ proc.on('error', reject);
523
+ proc.on('close', () => resolve());
524
+ });
525
+ }
526
+ /**
527
+ * Create a new database
528
+ * Note: QuestDB has a single-database model but supports schemas
529
+ */
530
+ async createDatabase(container, database) {
531
+ logDebug(`QuestDB uses a single-database model. Database "${database}" will be a schema.`);
532
+ // QuestDB doesn't have traditional CREATE DATABASE
533
+ // All tables exist in the default database
534
+ }
535
+ /**
536
+ * Drop a database (schema in QuestDB)
537
+ */
538
+ async dropDatabase(container, database) {
539
+ logDebug(`QuestDB uses a single-database model. Cannot drop database "${database}".`);
540
+ }
541
+ /**
542
+ * Get the database size
543
+ */
544
+ async getDatabaseSize(container) {
545
+ const dataDir = paths.getContainerDataPath(container.name, {
546
+ engine: ENGINE,
547
+ });
548
+ if (!existsSync(dataDir))
549
+ return null;
550
+ try {
551
+ let totalSize = 0;
552
+ const entries = await readdir(dataDir, {
553
+ withFileTypes: true,
554
+ recursive: true,
555
+ });
556
+ for (const entry of entries) {
557
+ if (entry.isFile()) {
558
+ const filePath = join(entry.parentPath ?? dataDir, entry.name);
559
+ const stats = await stat(filePath);
560
+ totalSize += stats.size;
561
+ }
562
+ }
563
+ return totalSize;
564
+ }
565
+ catch {
566
+ return null;
567
+ }
568
+ }
569
+ /**
570
+ * Dump from a remote QuestDB connection
571
+ */
572
+ async dumpFromConnectionString(connectionString, outputPath) {
573
+ const { host, port, database, user, password } = parseConnectionString(connectionString);
574
+ logDebug(`Connecting to remote QuestDB at ${host}:${port} (db: ${database})`);
575
+ // Find psql for remote operations
576
+ let psqlPath = await configManager.getBinaryPath('psql');
577
+ if (!psqlPath) {
578
+ const result = await findBinary('psql');
579
+ if (result?.path) {
580
+ psqlPath = result.path;
581
+ }
582
+ else {
583
+ throw new Error('psql not found. Install PostgreSQL client tools to dump from remote QuestDB.');
584
+ }
585
+ }
586
+ const lines = [];
587
+ lines.push('-- QuestDB backup generated by SpinDB');
588
+ lines.push(`-- Source: ${host}:${port}`);
589
+ lines.push(`-- Database: ${database}`);
590
+ lines.push(`-- Date: ${new Date().toISOString()}`);
591
+ lines.push('');
592
+ // Get list of tables
593
+ const tablesQuery = `SELECT table_name FROM tables() WHERE table_name NOT LIKE 'sys.%'`;
594
+ const tablesResult = await this.execRemoteQuery(psqlPath, host, port, user, password ?? '', database, tablesQuery);
595
+ const tables = tablesResult.split('\n').filter((t) => t.trim());
596
+ logDebug(`Found ${tables.length} tables`);
597
+ for (const table of tables) {
598
+ if (!table.trim())
599
+ continue;
600
+ lines.push(`-- Table: ${table}`);
601
+ lines.push('');
602
+ try {
603
+ const createQuery = `SHOW CREATE TABLE "${table}"`;
604
+ const createResult = await this.execRemoteQuery(psqlPath, host, port, user, password ?? '', database, createQuery);
605
+ if (createResult) {
606
+ lines.push(createResult + ';');
607
+ lines.push('');
608
+ }
609
+ }
610
+ catch (error) {
611
+ logWarning(`Could not get CREATE TABLE for ${table}: ${error}`);
612
+ }
613
+ }
614
+ const content = lines.join('\n');
615
+ await writeFile(outputPath, content, 'utf-8');
616
+ return {
617
+ filePath: outputPath,
618
+ warnings: tables.length === 0 ? ['No tables found in database'] : undefined,
619
+ };
620
+ }
621
+ async execRemoteQuery(psqlPath, host, port, user, password, database, query) {
622
+ return new Promise((resolve, reject) => {
623
+ const args = [
624
+ '-h',
625
+ host,
626
+ '-p',
627
+ String(port),
628
+ '-U',
629
+ user,
630
+ '-d',
631
+ database,
632
+ '-t',
633
+ '-A',
634
+ '-c',
635
+ query,
636
+ ];
637
+ const proc = spawn(psqlPath, args, {
638
+ stdio: ['ignore', 'pipe', 'pipe'],
639
+ env: { ...process.env, PGPASSWORD: password },
640
+ });
641
+ let stdout = '';
642
+ let stderr = '';
643
+ proc.stdout.on('data', (data) => {
644
+ stdout += data.toString();
645
+ });
646
+ proc.stderr.on('data', (data) => {
647
+ stderr += data.toString();
648
+ });
649
+ proc.on('close', (code) => {
650
+ if (code === 0) {
651
+ resolve(stdout.trim());
652
+ }
653
+ else {
654
+ reject(new Error(stderr || `Exit code ${code}`));
655
+ }
656
+ });
657
+ proc.on('error', reject);
658
+ });
659
+ }
660
+ // Create a backup
661
+ async backup(container, outputPath, options) {
662
+ return createBackup(container, outputPath, options);
663
+ }
664
+ // Run a SQL file or inline SQL statement
665
+ async runScript(container, options) {
666
+ const { port } = container;
667
+ const db = options.database || container.database || 'qdb';
668
+ // Find psql
669
+ let psqlPath = await configManager.getBinaryPath('psql');
670
+ if (!psqlPath) {
671
+ const result = await findBinary('psql');
672
+ if (result?.path) {
673
+ psqlPath = result.path;
674
+ }
675
+ else {
676
+ throw new Error('psql not found. Install PostgreSQL client tools.');
677
+ }
678
+ }
679
+ if (options.file) {
680
+ // Run SQL file
681
+ const args = [
682
+ '-h',
683
+ '127.0.0.1',
684
+ '-p',
685
+ String(port),
686
+ '-U',
687
+ 'admin',
688
+ '-d',
689
+ db,
690
+ '-f',
691
+ options.file,
692
+ ];
693
+ await new Promise((resolve, reject) => {
694
+ const proc = spawn(psqlPath, args, {
695
+ stdio: 'inherit',
696
+ env: { ...process.env, PGPASSWORD: 'quest' },
697
+ });
698
+ proc.on('error', reject);
699
+ proc.on('close', (code) => {
700
+ if (code === 0) {
701
+ resolve();
702
+ }
703
+ else {
704
+ reject(new Error(`psql exited with code ${code}`));
705
+ }
706
+ });
707
+ });
708
+ }
709
+ else if (options.sql) {
710
+ // Run inline SQL
711
+ const args = [
712
+ '-h',
713
+ '127.0.0.1',
714
+ '-p',
715
+ String(port),
716
+ '-U',
717
+ 'admin',
718
+ '-d',
719
+ db,
720
+ '-c',
721
+ options.sql,
722
+ ];
723
+ await new Promise((resolve, reject) => {
724
+ const proc = spawn(psqlPath, args, {
725
+ stdio: 'inherit',
726
+ env: { ...process.env, PGPASSWORD: 'quest' },
727
+ });
728
+ proc.on('error', reject);
729
+ proc.on('close', (code) => {
730
+ if (code === 0) {
731
+ resolve();
732
+ }
733
+ else {
734
+ reject(new Error(`psql exited with code ${code}`));
735
+ }
736
+ });
737
+ });
738
+ }
739
+ else {
740
+ throw new Error('Either file or sql option must be provided');
741
+ }
742
+ }
743
+ /**
744
+ * Execute a SQL query and return structured results
745
+ * Uses PostgreSQL wire protocol via psql
746
+ */
747
+ async executeQuery(container, query, options) {
748
+ const { port } = container;
749
+ const db = options?.database || container.database || 'qdb';
750
+ // Find psql
751
+ let psqlPath = await configManager.getBinaryPath('psql');
752
+ if (!psqlPath) {
753
+ const result = await findBinary('psql');
754
+ if (result?.path) {
755
+ psqlPath = result.path;
756
+ }
757
+ else {
758
+ throw new Error('psql not found. Install PostgreSQL client tools or use the Web Console.');
759
+ }
760
+ }
761
+ return new Promise((resolve, reject) => {
762
+ const args = [
763
+ '-X', // Skip ~/.psqlrc to ensure deterministic CSV output
764
+ '-h',
765
+ '127.0.0.1',
766
+ '-p',
767
+ String(port),
768
+ '-U',
769
+ 'admin',
770
+ '-d',
771
+ db,
772
+ '--csv',
773
+ '-c',
774
+ query,
775
+ ];
776
+ const proc = spawn(psqlPath, args, {
777
+ stdio: ['ignore', 'pipe', 'pipe'],
778
+ env: { ...process.env, PGPASSWORD: 'quest' },
779
+ });
780
+ let stdout = '';
781
+ let stderr = '';
782
+ proc.stdout?.on('data', (data) => {
783
+ stdout += data.toString();
784
+ });
785
+ proc.stderr?.on('data', (data) => {
786
+ stderr += data.toString();
787
+ });
788
+ proc.on('error', reject);
789
+ proc.on('close', (code) => {
790
+ if (code !== 0) {
791
+ reject(new Error(stderr || `psql exited with code ${code}`));
792
+ return;
793
+ }
794
+ try {
795
+ resolve(parseCSVToQueryResult(stdout));
796
+ }
797
+ catch (error) {
798
+ reject(new Error(`Failed to parse query result: ${error instanceof Error ? error.message : error}`));
799
+ }
800
+ });
801
+ });
802
+ }
803
+ /**
804
+ * List databases for QuestDB.
805
+ * QuestDB has a single database 'qdb'. Returns the configured database.
806
+ */
807
+ async listDatabases(container) {
808
+ // QuestDB has a single database 'qdb'
809
+ // Return the container's configured database
810
+ return [container.database];
811
+ }
812
+ }
813
+ export const questdbEngine = new QuestDBEngine();
814
+ //# sourceMappingURL=index.js.map