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,829 +0,0 @@
1
- /**
2
- * Platform Service
3
- *
4
- * Centralizes all OS-specific detection and behavior, similar to how
5
- * the engine abstraction handles database-specific behavior.
6
- *
7
- * This enables:
8
- * - Consistent platform detection across the codebase
9
- * - Easy mocking for unit tests
10
- * - Simple addition of new platforms (e.g., Windows)
11
- */
12
-
13
- import { homedir, platform as osPlatform, arch as osArch } from 'os'
14
- import { execSync, execFileSync, exec, spawn } from 'child_process'
15
- import { promisify } from 'util'
16
- import { existsSync } from 'fs'
17
- import { Platform, Arch } from '../types'
18
-
19
- const execAsync = promisify(exec)
20
-
21
- export { Platform, Arch }
22
-
23
- /**
24
- * Validates and normalizes the system architecture to a supported Arch enum value.
25
- * Throws an error for unsupported architectures rather than casting unsafely.
26
- */
27
- function validateArch(arch: string): Arch {
28
- switch (arch) {
29
- case 'arm64':
30
- return Arch.ARM64
31
- case 'x64':
32
- return Arch.X64
33
- default:
34
- throw new Error(
35
- `Unsupported architecture: ${arch}. SpinDB only supports arm64 and x64 architectures.`,
36
- )
37
- }
38
- }
39
-
40
- // Options for resolving home directory under sudo
41
- export type ResolveHomeDirOptions = {
42
- sudoUser: string | null
43
- getentResult: string | null
44
- platform: Platform.Darwin | Platform.Linux
45
- defaultHome: string
46
- }
47
-
48
- /**
49
- * Resolve the correct home directory, handling sudo scenarios.
50
- * This is extracted as a pure function for testability.
51
- *
52
- * When running under sudo, we need to use the original user's home directory,
53
- * not root's home. This prevents ~/.spindb from being created in /root/.
54
- */
55
- export function resolveHomeDir(options: ResolveHomeDirOptions): string {
56
- const { sudoUser, getentResult, platform, defaultHome } = options
57
-
58
- // Not running under sudo - use default
59
- if (!sudoUser) {
60
- return defaultHome
61
- }
62
-
63
- // Try to parse home from getent passwd output
64
- // Format: username:password:uid:gid:gecos:home:shell
65
- if (getentResult) {
66
- const parts = getentResult.trim().split(':')
67
- if (parts.length >= 6 && parts[5]) {
68
- return parts[5]
69
- }
70
- }
71
-
72
- // Fallback to platform-specific default
73
- return platform === Platform.Darwin
74
- ? `/Users/${sudoUser}`
75
- : `/home/${sudoUser}`
76
- }
77
-
78
- export type PlatformInfo = {
79
- platform: Platform
80
- arch: Arch
81
- homeDir: string
82
- isWSL: boolean
83
- isSudo: boolean
84
- sudoUser: string | null
85
- }
86
-
87
- export type ClipboardConfig = {
88
- copyCommand: string
89
- copyArgs: string[]
90
- pasteCommand: string
91
- pasteArgs: string[]
92
- available: boolean
93
- }
94
-
95
- export type WhichCommandConfig = {
96
- command: string
97
- args: string[]
98
- }
99
-
100
- export type PackageManagerInfo = {
101
- id: string
102
- name: string
103
- checkCommand: string
104
- installTemplate: string
105
- updateCommand: string
106
- }
107
-
108
- export abstract class BasePlatformService {
109
- protected cachedPlatformInfo: PlatformInfo | null = null
110
-
111
- // Get platform information
112
- abstract getPlatformInfo(): PlatformInfo
113
-
114
- // Get clipboard configuration for this platform
115
- abstract getClipboardConfig(): ClipboardConfig
116
-
117
- // Get the "which" command equivalent for this platform
118
- abstract getWhichCommand(): WhichCommandConfig
119
-
120
- // Get common search paths for a tool on this platform
121
- abstract getSearchPaths(tool: string): string[]
122
-
123
- // Detect available package manager
124
- abstract detectPackageManager(): Promise<PackageManagerInfo | null>
125
-
126
- // Get the null device path for this platform ('/dev/null' on Unix, 'NUL' on Windows)
127
- abstract getNullDevice(): string
128
-
129
- // Get the executable file extension for this platform ('' on Unix, '.exe' on Windows)
130
- abstract getExecutableExtension(): string
131
-
132
- /**
133
- * Terminate a process by PID
134
- * @param pid - Process ID to terminate
135
- * @param force - If true, force kill (SIGKILL on Unix, /F on Windows)
136
- */
137
- abstract terminateProcess(pid: number, force: boolean): Promise<void>
138
-
139
- // Check if a process is running by PID
140
- abstract isProcessRunning(pid: number): boolean
141
-
142
- /**
143
- * Find process PIDs listening on a specific port
144
- * @param port - Port number to check
145
- * @returns Array of PIDs listening on the port (empty if none found)
146
- */
147
- abstract findProcessByPort(port: number): Promise<number[]>
148
-
149
- // Copy text to clipboard
150
- async copyToClipboard(text: string): Promise<boolean> {
151
- const config = this.getClipboardConfig()
152
- if (!config.available) return false
153
-
154
- try {
155
- await new Promise<void>((resolve, reject) => {
156
- const proc = spawn(config.copyCommand, config.copyArgs, {
157
- stdio: ['pipe', 'inherit', 'inherit'],
158
- })
159
- proc.stdin?.write(text)
160
- proc.stdin?.end()
161
- proc.on('close', (code) => {
162
- if (code === 0) resolve()
163
- else reject(new Error(`Clipboard command exited with code ${code}`))
164
- })
165
- proc.on('error', reject)
166
- })
167
- return true
168
- } catch {
169
- return false
170
- }
171
- }
172
-
173
- // Check if a tool is installed and return its path
174
- async findToolPath(toolName: string): Promise<string | null> {
175
- const whichConfig = this.getWhichCommand()
176
-
177
- // First try the which/where command (with timeout to prevent hanging)
178
- try {
179
- const cmd = [whichConfig.command, ...whichConfig.args, toolName]
180
- .filter(Boolean)
181
- .join(' ')
182
- const { stdout } = await execAsync(cmd, { timeout: 5000 })
183
- const path = stdout
184
- .split(/\r?\n/)
185
- .map((line) => line.trim())
186
- .find((line) => line.length > 0)
187
- if (path && existsSync(path)) return path
188
- } catch {
189
- // Not found via which, continue to search paths
190
- }
191
-
192
- // Search common installation paths
193
- const searchPaths = this.getSearchPaths(toolName)
194
- for (const dir of searchPaths) {
195
- const fullPath = this.buildToolPath(dir, toolName)
196
- if (existsSync(fullPath)) {
197
- return fullPath
198
- }
199
- }
200
-
201
- return null
202
- }
203
-
204
- // Build the full path to a tool in a directory
205
- protected abstract buildToolPath(dir: string, toolName: string): string
206
-
207
- // Get tool version by running --version
208
- async getToolVersion(toolPath: string): Promise<string | null> {
209
- try {
210
- const { stdout } = await execAsync(`"${toolPath}" --version`, {
211
- timeout: 5000,
212
- })
213
- const match = stdout.match(/(\d+\.\d+(\.\d+)?)/)
214
- return match ? match[1] : null
215
- } catch {
216
- return null
217
- }
218
- }
219
- }
220
-
221
- class DarwinPlatformService extends BasePlatformService {
222
- getPlatformInfo(): PlatformInfo {
223
- if (this.cachedPlatformInfo) return this.cachedPlatformInfo
224
-
225
- const sudoUser = process.env.SUDO_USER || null
226
-
227
- // Try to get home from getent passwd (may fail on macOS)
228
- let getentResult: string | null = null
229
- if (sudoUser) {
230
- try {
231
- getentResult = execFileSync('getent', ['passwd', sudoUser], {
232
- encoding: 'utf-8',
233
- })
234
- } catch {
235
- // getent may not be available on macOS
236
- }
237
- }
238
-
239
- const homeDir = resolveHomeDir({
240
- sudoUser,
241
- getentResult,
242
- platform: Platform.Darwin,
243
- defaultHome: homedir(),
244
- })
245
-
246
- this.cachedPlatformInfo = {
247
- platform: Platform.Darwin,
248
- arch: validateArch(osArch()),
249
- homeDir,
250
- isWSL: false,
251
- isSudo: !!sudoUser,
252
- sudoUser,
253
- }
254
-
255
- return this.cachedPlatformInfo
256
- }
257
-
258
- getClipboardConfig(): ClipboardConfig {
259
- return {
260
- copyCommand: 'pbcopy',
261
- copyArgs: [],
262
- pasteCommand: 'pbpaste',
263
- pasteArgs: [],
264
- available: true, // pbcopy is always available on macOS
265
- }
266
- }
267
-
268
- getWhichCommand(): WhichCommandConfig {
269
- return {
270
- command: 'which',
271
- args: [],
272
- }
273
- }
274
-
275
- getSearchPaths(tool: string): string[] {
276
- const paths: string[] = []
277
-
278
- // MySQL-specific paths
279
- if (
280
- tool === 'mysqld' ||
281
- tool === 'mysql' ||
282
- tool === 'mysqladmin' ||
283
- tool === 'mysqldump'
284
- ) {
285
- paths.push(
286
- // Homebrew (Apple Silicon)
287
- '/opt/homebrew/bin',
288
- '/opt/homebrew/opt/mysql/bin',
289
- '/opt/homebrew/opt/mysql@8.0/bin',
290
- '/opt/homebrew/opt/mysql@8.4/bin',
291
- '/opt/homebrew/opt/mysql@5.7/bin',
292
- // Homebrew (Intel)
293
- '/usr/local/bin',
294
- '/usr/local/opt/mysql/bin',
295
- '/usr/local/opt/mysql@8.0/bin',
296
- '/usr/local/opt/mysql@8.4/bin',
297
- '/usr/local/opt/mysql@5.7/bin',
298
- // Official MySQL installer
299
- '/usr/local/mysql/bin',
300
- )
301
- }
302
-
303
- // PostgreSQL-specific paths
304
- if (
305
- tool === 'psql' ||
306
- tool === 'pg_dump' ||
307
- tool === 'pg_restore' ||
308
- tool === 'pg_basebackup'
309
- ) {
310
- paths.push(
311
- // Homebrew (Apple Silicon)
312
- '/opt/homebrew/bin',
313
- '/opt/homebrew/opt/postgresql/bin',
314
- '/opt/homebrew/opt/postgresql@17/bin',
315
- '/opt/homebrew/opt/postgresql@16/bin',
316
- '/opt/homebrew/opt/postgresql@15/bin',
317
- '/opt/homebrew/opt/postgresql@14/bin',
318
- // Homebrew (Intel)
319
- '/usr/local/bin',
320
- '/usr/local/opt/postgresql/bin',
321
- '/usr/local/opt/postgresql@17/bin',
322
- '/usr/local/opt/postgresql@16/bin',
323
- '/usr/local/opt/postgresql@15/bin',
324
- '/usr/local/opt/postgresql@14/bin',
325
- // Postgres.app
326
- '/Applications/Postgres.app/Contents/Versions/latest/bin',
327
- )
328
- }
329
-
330
- // Generic paths
331
- paths.push('/usr/local/bin', '/usr/bin')
332
-
333
- return paths
334
- }
335
-
336
- async detectPackageManager(): Promise<PackageManagerInfo | null> {
337
- try {
338
- await execAsync('brew --version')
339
- return {
340
- id: 'brew',
341
- name: 'Homebrew',
342
- checkCommand: 'brew --version',
343
- installTemplate: 'brew install {package}',
344
- updateCommand: 'brew update',
345
- }
346
- } catch {
347
- return null
348
- }
349
- }
350
-
351
- getNullDevice(): string {
352
- return '/dev/null'
353
- }
354
-
355
- getExecutableExtension(): string {
356
- return ''
357
- }
358
-
359
- async terminateProcess(pid: number, force: boolean): Promise<void> {
360
- const signal = force ? 'SIGKILL' : 'SIGTERM'
361
- process.kill(pid, signal)
362
- }
363
-
364
- isProcessRunning(pid: number): boolean {
365
- try {
366
- process.kill(pid, 0)
367
- return true
368
- } catch {
369
- return false
370
- }
371
- }
372
-
373
- async findProcessByPort(port: number): Promise<number[]> {
374
- try {
375
- const { stdout } = await execAsync(
376
- `lsof -ti tcp:${port} 2>/dev/null || true`,
377
- )
378
- const pids = stdout
379
- .trim()
380
- .split('\n')
381
- .filter(Boolean)
382
- .map((pid) => parseInt(pid, 10))
383
- .filter((pid) => !isNaN(pid))
384
- return pids
385
- } catch {
386
- return []
387
- }
388
- }
389
-
390
- protected buildToolPath(dir: string, toolName: string): string {
391
- return `${dir}/${toolName}`
392
- }
393
- }
394
-
395
- class LinuxPlatformService extends BasePlatformService {
396
- getPlatformInfo(): PlatformInfo {
397
- if (this.cachedPlatformInfo) return this.cachedPlatformInfo
398
-
399
- const sudoUser = process.env.SUDO_USER || null
400
-
401
- // Try to get home from getent passwd
402
- let getentResult: string | null = null
403
- if (sudoUser) {
404
- try {
405
- getentResult = execFileSync('getent', ['passwd', sudoUser], {
406
- encoding: 'utf-8',
407
- })
408
- } catch {
409
- // getent failed
410
- }
411
- }
412
-
413
- const homeDir = resolveHomeDir({
414
- sudoUser,
415
- getentResult,
416
- platform: Platform.Linux,
417
- defaultHome: homedir(),
418
- })
419
-
420
- // Check if running in WSL
421
- let isWSL = false
422
- try {
423
- const uname = execSync('uname -r', { encoding: 'utf-8' })
424
- isWSL = uname.toLowerCase().includes('microsoft')
425
- } catch {
426
- // Not WSL
427
- }
428
-
429
- this.cachedPlatformInfo = {
430
- platform: Platform.Linux,
431
- arch: validateArch(osArch()),
432
- homeDir,
433
- isWSL,
434
- isSudo: !!sudoUser,
435
- sudoUser,
436
- }
437
-
438
- return this.cachedPlatformInfo
439
- }
440
-
441
- getClipboardConfig(): ClipboardConfig {
442
- // Check if xclip is available
443
- let available = false
444
- try {
445
- execSync('which xclip', { encoding: 'utf-8' })
446
- available = true
447
- } catch {
448
- // xclip not installed
449
- }
450
-
451
- return {
452
- copyCommand: 'xclip',
453
- copyArgs: ['-selection', 'clipboard'],
454
- pasteCommand: 'xclip',
455
- pasteArgs: ['-selection', 'clipboard', '-o'],
456
- available,
457
- }
458
- }
459
-
460
- getWhichCommand(): WhichCommandConfig {
461
- return {
462
- command: 'which',
463
- args: [],
464
- }
465
- }
466
-
467
- getSearchPaths(tool: string): string[] {
468
- const paths: string[] = []
469
-
470
- // MySQL-specific paths
471
- if (
472
- tool === 'mysqld' ||
473
- tool === 'mysql' ||
474
- tool === 'mysqladmin' ||
475
- tool === 'mysqldump'
476
- ) {
477
- paths.push(
478
- '/usr/bin',
479
- '/usr/sbin',
480
- '/usr/local/bin',
481
- '/usr/local/mysql/bin',
482
- )
483
- }
484
-
485
- // PostgreSQL-specific paths
486
- if (
487
- tool === 'psql' ||
488
- tool === 'pg_dump' ||
489
- tool === 'pg_restore' ||
490
- tool === 'pg_basebackup'
491
- ) {
492
- paths.push(
493
- '/usr/bin',
494
- '/usr/local/bin',
495
- '/usr/lib/postgresql/17/bin',
496
- '/usr/lib/postgresql/16/bin',
497
- '/usr/lib/postgresql/15/bin',
498
- '/usr/lib/postgresql/14/bin',
499
- )
500
- }
501
-
502
- // Generic paths
503
- paths.push('/usr/bin', '/usr/local/bin')
504
-
505
- return paths
506
- }
507
-
508
- async detectPackageManager(): Promise<PackageManagerInfo | null> {
509
- // Try apt first (Debian/Ubuntu)
510
- try {
511
- await execAsync('apt --version')
512
- return {
513
- id: 'apt',
514
- name: 'APT',
515
- checkCommand: 'apt --version',
516
- installTemplate: 'sudo apt install -y {package}',
517
- updateCommand: 'sudo apt update',
518
- }
519
- } catch {
520
- // Not apt
521
- }
522
-
523
- // Try dnf (Fedora/RHEL 8+)
524
- try {
525
- await execAsync('dnf --version')
526
- return {
527
- id: 'dnf',
528
- name: 'DNF',
529
- checkCommand: 'dnf --version',
530
- installTemplate: 'sudo dnf install -y {package}',
531
- updateCommand: 'sudo dnf check-update',
532
- }
533
- } catch {
534
- // Not dnf
535
- }
536
-
537
- // Try yum (RHEL/CentOS 7)
538
- try {
539
- await execAsync('yum --version')
540
- return {
541
- id: 'yum',
542
- name: 'YUM',
543
- checkCommand: 'yum --version',
544
- installTemplate: 'sudo yum install -y {package}',
545
- updateCommand: 'sudo yum check-update',
546
- }
547
- } catch {
548
- // Not yum
549
- }
550
-
551
- // Try pacman (Arch)
552
- try {
553
- await execAsync('pacman --version')
554
- return {
555
- id: 'pacman',
556
- name: 'Pacman',
557
- checkCommand: 'pacman --version',
558
- installTemplate: 'sudo pacman -S --noconfirm {package}',
559
- updateCommand: 'sudo pacman -Sy',
560
- }
561
- } catch {
562
- // Not pacman
563
- }
564
-
565
- return null
566
- }
567
-
568
- getNullDevice(): string {
569
- return '/dev/null'
570
- }
571
-
572
- getExecutableExtension(): string {
573
- return ''
574
- }
575
-
576
- async terminateProcess(pid: number, force: boolean): Promise<void> {
577
- const signal = force ? 'SIGKILL' : 'SIGTERM'
578
- process.kill(pid, signal)
579
- }
580
-
581
- isProcessRunning(pid: number): boolean {
582
- try {
583
- process.kill(pid, 0)
584
- return true
585
- } catch {
586
- return false
587
- }
588
- }
589
-
590
- async findProcessByPort(port: number): Promise<number[]> {
591
- try {
592
- const { stdout } = await execAsync(
593
- `lsof -ti tcp:${port} 2>/dev/null || true`,
594
- )
595
- const pids = stdout
596
- .trim()
597
- .split('\n')
598
- .filter(Boolean)
599
- .map((pid) => parseInt(pid, 10))
600
- .filter((pid) => !isNaN(pid))
601
- return pids
602
- } catch {
603
- return []
604
- }
605
- }
606
-
607
- protected buildToolPath(dir: string, toolName: string): string {
608
- return `${dir}/${toolName}`
609
- }
610
- }
611
-
612
- class Win32PlatformService extends BasePlatformService {
613
- getPlatformInfo(): PlatformInfo {
614
- if (this.cachedPlatformInfo) return this.cachedPlatformInfo
615
-
616
- this.cachedPlatformInfo = {
617
- platform: Platform.Win32,
618
- arch: validateArch(osArch()),
619
- homeDir: homedir(),
620
- isWSL: false,
621
- isSudo: false,
622
- sudoUser: null,
623
- }
624
-
625
- return this.cachedPlatformInfo
626
- }
627
-
628
- getClipboardConfig(): ClipboardConfig {
629
- return {
630
- copyCommand: 'clip',
631
- copyArgs: [],
632
- pasteCommand: 'powershell',
633
- pasteArgs: ['-command', 'Get-Clipboard'],
634
- available: true,
635
- }
636
- }
637
-
638
- getWhichCommand(): WhichCommandConfig {
639
- return {
640
- command: 'where',
641
- args: [],
642
- }
643
- }
644
-
645
- getSearchPaths(tool: string): string[] {
646
- const paths: string[] = []
647
-
648
- // MySQL-specific paths
649
- if (
650
- tool === 'mysqld' ||
651
- tool === 'mysql' ||
652
- tool === 'mysqladmin' ||
653
- tool === 'mysqldump'
654
- ) {
655
- paths.push(
656
- 'C:\\Program Files\\MySQL\\MySQL Server 8.0\\bin',
657
- 'C:\\Program Files\\MySQL\\MySQL Server 8.4\\bin',
658
- 'C:\\Program Files\\MySQL\\MySQL Server 5.7\\bin',
659
- )
660
- }
661
-
662
- // PostgreSQL-specific paths
663
- if (
664
- tool === 'psql' ||
665
- tool === 'pg_dump' ||
666
- tool === 'pg_restore' ||
667
- tool === 'pg_basebackup'
668
- ) {
669
- paths.push(
670
- 'C:\\Program Files\\PostgreSQL\\17\\bin',
671
- 'C:\\Program Files\\PostgreSQL\\16\\bin',
672
- 'C:\\Program Files\\PostgreSQL\\15\\bin',
673
- 'C:\\Program Files\\PostgreSQL\\14\\bin',
674
- )
675
- }
676
-
677
- return paths
678
- }
679
-
680
- async detectPackageManager(): Promise<PackageManagerInfo | null> {
681
- // Timeout for package manager detection (5 seconds)
682
- const timeout = 5000
683
-
684
- // Try chocolatey
685
- try {
686
- await execAsync('choco --version', { timeout })
687
- return {
688
- id: 'choco',
689
- name: 'Chocolatey',
690
- checkCommand: 'choco --version',
691
- installTemplate: 'choco install -y {package}',
692
- updateCommand: 'choco upgrade all',
693
- }
694
- } catch {
695
- // Not chocolatey or timed out
696
- }
697
-
698
- // Try winget
699
- try {
700
- await execAsync('winget --version', { timeout })
701
- return {
702
- id: 'winget',
703
- name: 'Windows Package Manager',
704
- checkCommand: 'winget --version',
705
- installTemplate: 'winget install {package}',
706
- updateCommand: 'winget upgrade --all',
707
- }
708
- } catch {
709
- // Not winget or timed out
710
- }
711
-
712
- // Try scoop
713
- try {
714
- await execAsync('scoop --version', { timeout })
715
- return {
716
- id: 'scoop',
717
- name: 'Scoop',
718
- checkCommand: 'scoop --version',
719
- installTemplate: 'scoop install {package}',
720
- updateCommand: 'scoop update *',
721
- }
722
- } catch {
723
- // Not scoop or timed out
724
- }
725
-
726
- return null
727
- }
728
-
729
- getNullDevice(): string {
730
- return 'NUL'
731
- }
732
-
733
- getExecutableExtension(): string {
734
- return '.exe'
735
- }
736
-
737
- async terminateProcess(pid: number, force: boolean): Promise<void> {
738
- // On Windows, use taskkill command
739
- // /T = terminate child processes, /F = force termination
740
- const args = force ? `/F /PID ${pid} /T` : `/PID ${pid}`
741
- try {
742
- await execAsync(`taskkill ${args}`)
743
- } catch (error) {
744
- // taskkill exits with error if process doesn't exist, which is fine
745
- const e = error as { code?: number }
746
- // Error code 128 means "process not found" which is acceptable
747
- if (e.code !== 128) {
748
- throw error
749
- }
750
- }
751
- }
752
-
753
- isProcessRunning(pid: number): boolean {
754
- try {
755
- // process.kill with signal 0 works on Windows for checking process existence
756
- process.kill(pid, 0)
757
- return true
758
- } catch {
759
- return false
760
- }
761
- }
762
-
763
- async findProcessByPort(port: number): Promise<number[]> {
764
- try {
765
- // Use netstat to find PIDs listening on the port
766
- // -a = all connections, -n = numeric, -o = owner PID
767
- const { stdout } = await execAsync(`netstat -ano | findstr :${port}`)
768
- const pids: number[] = []
769
-
770
- // Parse netstat output to find LISTENING processes on this exact port
771
- // Format: TCP 0.0.0.0:PORT 0.0.0.0:0 LISTENING PID
772
- const lines = stdout.trim().split('\n')
773
- for (const line of lines) {
774
- // Match lines with LISTENING state on the specific port
775
- const parts = line.trim().split(/\s+/)
776
- if (parts.length >= 5 && parts[3] === 'LISTENING') {
777
- const localAddress = parts[1]
778
- // Check if this is the exact port (not just containing the port number)
779
- if (localAddress.endsWith(`:${port}`)) {
780
- const pid = parseInt(parts[4], 10)
781
- if (!isNaN(pid) && !pids.includes(pid)) {
782
- pids.push(pid)
783
- }
784
- }
785
- }
786
- }
787
-
788
- return pids
789
- } catch {
790
- return []
791
- }
792
- }
793
-
794
- protected buildToolPath(dir: string, toolName: string): string {
795
- return `${dir}\\${toolName}.exe`
796
- }
797
- }
798
-
799
- // Create the appropriate platform service for the current OS
800
- export function createPlatformService(): BasePlatformService {
801
- const platform = osPlatform()
802
-
803
- switch (platform) {
804
- case 'darwin':
805
- return new DarwinPlatformService()
806
- case 'linux':
807
- return new LinuxPlatformService()
808
- case 'win32':
809
- return new Win32PlatformService()
810
- default:
811
- throw new Error(`Unsupported platform: ${platform}`)
812
- }
813
- }
814
-
815
- // Export singleton instance for convenience
816
- export const platformService = createPlatformService()
817
-
818
- // Check if running on Windows
819
- export function isWindows(): boolean {
820
- return process.platform === Platform.Win32
821
- }
822
-
823
- /**
824
- * Get spawn options for Windows shell requirements.
825
- * Windows needs shell:true for proper command execution with quoted paths.
826
- */
827
- export function getWindowsSpawnOptions(): { shell?: true } {
828
- return isWindows() ? { shell: true } : {}
829
- }