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.
- package/dist/cli/bin.js +9 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/commands/attach.js +102 -0
- package/dist/cli/commands/attach.js.map +1 -0
- package/dist/cli/commands/backup.js +197 -0
- package/dist/cli/commands/backup.js.map +1 -0
- package/dist/cli/commands/backups.js +190 -0
- package/dist/cli/commands/backups.js.map +1 -0
- package/dist/cli/commands/clone.js +119 -0
- package/dist/cli/commands/clone.js.map +1 -0
- package/dist/cli/commands/config.js +276 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/connect.js +559 -0
- package/dist/cli/commands/connect.js.map +1 -0
- package/dist/cli/commands/create.js +952 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/databases.js +485 -0
- package/dist/cli/commands/databases.js.map +1 -0
- package/dist/cli/commands/delete.js +106 -0
- package/dist/cli/commands/delete.js.map +1 -0
- package/dist/cli/commands/deps.js +238 -0
- package/dist/cli/commands/deps.js.map +1 -0
- package/dist/cli/commands/detach.js +81 -0
- package/dist/cli/commands/detach.js.map +1 -0
- package/dist/cli/commands/doctor.js +567 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/duckdb.js +207 -0
- package/dist/cli/commands/duckdb.js.map +1 -0
- package/dist/cli/commands/edit.js +524 -0
- package/dist/cli/commands/edit.js.map +1 -0
- package/dist/cli/commands/engines.js +1414 -0
- package/dist/cli/commands/engines.js.map +1 -0
- package/dist/cli/commands/export.js +383 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/info.js +270 -0
- package/dist/cli/commands/info.js.map +1 -0
- package/dist/cli/commands/list.js +215 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/logs.js +81 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/menu/backup-handlers.js +1202 -0
- package/dist/cli/commands/menu/backup-handlers.js.map +1 -0
- package/dist/cli/commands/menu/container-handlers.js +1788 -0
- package/dist/cli/commands/menu/container-handlers.js.map +1 -0
- package/dist/cli/commands/menu/engine-handlers.js +235 -0
- package/dist/cli/commands/menu/engine-handlers.js.map +1 -0
- package/dist/cli/commands/menu/index.js +266 -0
- package/dist/cli/commands/menu/index.js.map +1 -0
- package/dist/cli/commands/menu/settings-handlers.js +320 -0
- package/dist/cli/commands/menu/settings-handlers.js.map +1 -0
- package/dist/cli/commands/menu/shared.js +13 -0
- package/dist/cli/commands/menu/shared.js.map +1 -0
- package/dist/cli/commands/menu/shell-handlers.js +1573 -0
- package/dist/cli/commands/menu/shell-handlers.js.map +1 -0
- package/dist/cli/commands/menu/sql-handlers.js +185 -0
- package/dist/cli/commands/menu/sql-handlers.js.map +1 -0
- package/dist/cli/commands/menu/update-handlers.js +322 -0
- package/dist/cli/commands/menu/update-handlers.js.map +1 -0
- package/dist/cli/commands/menu/validators.js +9 -0
- package/dist/cli/commands/menu/validators.js.map +1 -0
- package/dist/cli/commands/ports.js +166 -0
- package/dist/cli/commands/ports.js.map +1 -0
- package/dist/cli/commands/pull.js +166 -0
- package/dist/cli/commands/pull.js.map +1 -0
- package/dist/cli/commands/query.js +180 -0
- package/dist/cli/commands/query.js.map +1 -0
- package/dist/cli/commands/restore.js +428 -0
- package/dist/cli/commands/restore.js.map +1 -0
- package/dist/cli/commands/run.js +115 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/self-update.js +99 -0
- package/dist/cli/commands/self-update.js.map +1 -0
- package/dist/cli/commands/sqlite.js +207 -0
- package/dist/cli/commands/sqlite.js.map +1 -0
- package/dist/cli/commands/start.js +196 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/stop.js +182 -0
- package/dist/cli/commands/stop.js.map +1 -0
- package/dist/cli/commands/url.js +88 -0
- package/dist/cli/commands/url.js.map +1 -0
- package/dist/cli/commands/users.js +189 -0
- package/dist/cli/commands/users.js.map +1 -0
- package/dist/cli/commands/version.js +52 -0
- package/dist/cli/commands/version.js.map +1 -0
- package/dist/cli/commands/which.js +258 -0
- package/dist/cli/commands/which.js.map +1 -0
- package/dist/cli/constants.js +212 -0
- package/dist/cli/constants.js.map +1 -0
- package/dist/cli/helpers.js +1120 -0
- package/dist/cli/helpers.js.map +1 -0
- package/dist/cli/index.js +146 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/ui/prompts.js +1002 -0
- package/dist/cli/ui/prompts.js.map +1 -0
- package/dist/cli/ui/spinner.js +74 -0
- package/dist/cli/ui/spinner.js.map +1 -0
- package/dist/cli/ui/theme.js +99 -0
- package/dist/cli/ui/theme.js.map +1 -0
- package/dist/cli/utils/file-follower.js +79 -0
- package/dist/cli/utils/file-follower.js.map +1 -0
- package/dist/config/backup-formats.js +363 -0
- package/dist/config/backup-formats.js.map +1 -0
- package/dist/config/defaults.js +25 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/engine-defaults.js +303 -0
- package/dist/config/engine-defaults.js.map +1 -0
- package/dist/config/engines-registry.js +103 -0
- package/dist/config/engines-registry.js.map +1 -0
- package/dist/config/os-dependencies.js +767 -0
- package/dist/config/os-dependencies.js.map +1 -0
- package/dist/config/paths.js +156 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/version.js +3 -0
- package/dist/config/version.js.map +1 -0
- package/dist/core/backup-restore.js +219 -0
- package/dist/core/backup-restore.js.map +1 -0
- package/dist/core/base-binary-manager.js +403 -0
- package/dist/core/base-binary-manager.js.map +1 -0
- package/dist/core/base-document-binary-manager.js +364 -0
- package/dist/core/base-document-binary-manager.js.map +1 -0
- package/dist/core/base-embedded-binary-manager.js +364 -0
- package/dist/core/base-embedded-binary-manager.js.map +1 -0
- package/dist/core/base-server-binary-manager.js +368 -0
- package/dist/core/base-server-binary-manager.js.map +1 -0
- package/dist/core/config-manager.js +495 -0
- package/dist/core/config-manager.js.map +1 -0
- package/dist/core/container-manager.js +609 -0
- package/dist/core/container-manager.js.map +1 -0
- package/dist/core/credential-generator.js +67 -0
- package/dist/core/credential-generator.js.map +1 -0
- package/dist/core/credential-manager.js +211 -0
- package/dist/core/credential-manager.js.map +1 -0
- package/dist/core/dblab-utils.js +105 -0
- package/dist/core/dblab-utils.js.map +1 -0
- package/dist/core/dependency-manager.js +359 -0
- package/dist/core/dependency-manager.js.map +1 -0
- package/dist/core/docker-exporter.js +1077 -0
- package/dist/core/docker-exporter.js.map +1 -0
- package/dist/core/error-handler.js +295 -0
- package/dist/core/error-handler.js.map +1 -0
- package/dist/core/fs-error-utils.js +74 -0
- package/dist/core/fs-error-utils.js.map +1 -0
- package/dist/core/homebrew-version-manager.js +280 -0
- package/dist/core/homebrew-version-manager.js.map +1 -0
- package/dist/core/hostdb-client.js +252 -0
- package/dist/core/hostdb-client.js.map +1 -0
- package/dist/core/hostdb-metadata.js +243 -0
- package/dist/core/hostdb-metadata.js.map +1 -0
- package/dist/core/hostdb-releases-factory.js +161 -0
- package/dist/core/hostdb-releases-factory.js.map +1 -0
- package/dist/core/library-env.js +88 -0
- package/dist/core/library-env.js.map +1 -0
- package/dist/core/pgweb-utils.js +53 -0
- package/dist/core/pgweb-utils.js.map +1 -0
- package/dist/core/platform-service.js +632 -0
- package/dist/core/platform-service.js.map +1 -0
- package/dist/core/port-manager.js +136 -0
- package/dist/core/port-manager.js.map +1 -0
- package/dist/core/process-manager.js +445 -0
- package/dist/core/process-manager.js.map +1 -0
- package/dist/core/pull-manager.js +418 -0
- package/dist/core/pull-manager.js.map +1 -0
- package/dist/core/query-parser.js +449 -0
- package/dist/core/query-parser.js.map +1 -0
- package/dist/core/spawn-utils.js +90 -0
- package/dist/core/spawn-utils.js.map +1 -0
- package/dist/core/start-with-retry.js +90 -0
- package/dist/core/start-with-retry.js.map +1 -0
- package/dist/core/test-cleanup.js +85 -0
- package/dist/core/test-cleanup.js.map +1 -0
- package/dist/core/tls-generator.js +84 -0
- package/dist/core/tls-generator.js.map +1 -0
- package/dist/core/transaction-manager.js +139 -0
- package/dist/core/transaction-manager.js.map +1 -0
- package/dist/core/update-manager.js +241 -0
- package/dist/core/update-manager.js.map +1 -0
- package/dist/core/version-migration.js +260 -0
- package/dist/core/version-migration.js.map +1 -0
- package/dist/core/version-utils.js +91 -0
- package/dist/core/version-utils.js.map +1 -0
- package/dist/engines/base-engine.js +179 -0
- package/dist/engines/base-engine.js.map +1 -0
- package/dist/engines/clickhouse/backup.js +289 -0
- package/dist/engines/clickhouse/backup.js.map +1 -0
- package/dist/engines/clickhouse/binary-manager.js +145 -0
- package/dist/engines/clickhouse/binary-manager.js.map +1 -0
- package/dist/engines/clickhouse/binary-urls.js +100 -0
- package/dist/engines/clickhouse/binary-urls.js.map +1 -0
- package/dist/engines/clickhouse/cli-utils.js +143 -0
- package/dist/engines/clickhouse/cli-utils.js.map +1 -0
- package/dist/engines/clickhouse/hostdb-releases.js +24 -0
- package/dist/engines/clickhouse/hostdb-releases.js.map +1 -0
- package/dist/engines/clickhouse/index.js +1077 -0
- package/dist/engines/clickhouse/index.js.map +1 -0
- package/dist/engines/clickhouse/restore.js +335 -0
- package/dist/engines/clickhouse/restore.js.map +1 -0
- package/dist/engines/clickhouse/version-maps.js +83 -0
- package/dist/engines/clickhouse/version-maps.js.map +1 -0
- package/dist/engines/clickhouse/version-validator.js +133 -0
- package/dist/engines/clickhouse/version-validator.js.map +1 -0
- package/dist/engines/cockroachdb/backup.js +261 -0
- package/dist/engines/cockroachdb/backup.js.map +1 -0
- package/dist/engines/cockroachdb/binary-manager.js +33 -0
- package/dist/engines/cockroachdb/binary-manager.js.map +1 -0
- package/dist/engines/cockroachdb/binary-urls.js +33 -0
- package/dist/engines/cockroachdb/binary-urls.js.map +1 -0
- package/dist/engines/cockroachdb/cli-utils.js +338 -0
- package/dist/engines/cockroachdb/cli-utils.js.map +1 -0
- package/dist/engines/cockroachdb/hostdb-releases.js +21 -0
- package/dist/engines/cockroachdb/hostdb-releases.js.map +1 -0
- package/dist/engines/cockroachdb/index.js +1016 -0
- package/dist/engines/cockroachdb/index.js.map +1 -0
- package/dist/engines/cockroachdb/restore.js +323 -0
- package/dist/engines/cockroachdb/restore.js.map +1 -0
- package/dist/engines/cockroachdb/version-maps.js +37 -0
- package/dist/engines/cockroachdb/version-maps.js.map +1 -0
- package/dist/engines/couchdb/api-client.js +64 -0
- package/dist/engines/couchdb/api-client.js.map +1 -0
- package/dist/engines/couchdb/backup.js +90 -0
- package/dist/engines/couchdb/backup.js.map +1 -0
- package/dist/engines/couchdb/binary-manager.js +62 -0
- package/dist/engines/couchdb/binary-manager.js.map +1 -0
- package/dist/engines/couchdb/binary-urls.js +92 -0
- package/dist/engines/couchdb/binary-urls.js.map +1 -0
- package/dist/engines/couchdb/hostdb-releases.js +21 -0
- package/dist/engines/couchdb/hostdb-releases.js.map +1 -0
- package/dist/engines/couchdb/index.js +1043 -0
- package/dist/engines/couchdb/index.js.map +1 -0
- package/dist/engines/couchdb/restore.js +198 -0
- package/dist/engines/couchdb/restore.js.map +1 -0
- package/dist/engines/couchdb/version-maps.js +67 -0
- package/dist/engines/couchdb/version-maps.js.map +1 -0
- package/dist/engines/couchdb/version-validator.js +88 -0
- package/dist/engines/couchdb/version-validator.js.map +1 -0
- package/dist/engines/duckdb/binary-manager.js +33 -0
- package/dist/engines/duckdb/binary-manager.js.map +1 -0
- package/{engines/duckdb/binary-urls.ts → dist/engines/duckdb/binary-urls.js} +11 -16
- package/dist/engines/duckdb/binary-urls.js.map +1 -0
- package/dist/engines/duckdb/hostdb-releases.js +21 -0
- package/dist/engines/duckdb/hostdb-releases.js.map +1 -0
- package/dist/engines/duckdb/index.js +594 -0
- package/dist/engines/duckdb/index.js.map +1 -0
- package/dist/engines/duckdb/registry.js +265 -0
- package/dist/engines/duckdb/registry.js.map +1 -0
- package/dist/engines/duckdb/scanner.js +12 -0
- package/dist/engines/duckdb/scanner.js.map +1 -0
- package/dist/engines/duckdb/version-maps.js +67 -0
- package/dist/engines/duckdb/version-maps.js.map +1 -0
- package/dist/engines/duckdb/version-validator.js +62 -0
- package/dist/engines/duckdb/version-validator.js.map +1 -0
- package/dist/engines/ferretdb/backup.js +170 -0
- package/dist/engines/ferretdb/backup.js.map +1 -0
- package/dist/engines/ferretdb/binary-manager.js +765 -0
- package/dist/engines/ferretdb/binary-manager.js.map +1 -0
- package/dist/engines/ferretdb/binary-urls.js +135 -0
- package/dist/engines/ferretdb/binary-urls.js.map +1 -0
- package/dist/engines/ferretdb/index.js +1517 -0
- package/dist/engines/ferretdb/index.js.map +1 -0
- package/dist/engines/ferretdb/restore.js +310 -0
- package/dist/engines/ferretdb/restore.js.map +1 -0
- package/{engines/ferretdb/version-maps.ts → dist/engines/ferretdb/version-maps.js} +62 -79
- package/dist/engines/ferretdb/version-maps.js.map +1 -0
- package/dist/engines/file-based-utils.js +184 -0
- package/dist/engines/file-based-utils.js.map +1 -0
- package/dist/engines/index.js +124 -0
- package/dist/engines/index.js.map +1 -0
- package/dist/engines/influxdb/api-client.js +54 -0
- package/dist/engines/influxdb/api-client.js.map +1 -0
- package/dist/engines/influxdb/backup.js +119 -0
- package/dist/engines/influxdb/backup.js.map +1 -0
- package/dist/engines/influxdb/binary-manager.js +87 -0
- package/dist/engines/influxdb/binary-manager.js.map +1 -0
- package/dist/engines/influxdb/binary-urls.js +56 -0
- package/dist/engines/influxdb/binary-urls.js.map +1 -0
- package/dist/engines/influxdb/hostdb-releases.js +21 -0
- package/dist/engines/influxdb/hostdb-releases.js.map +1 -0
- package/dist/engines/influxdb/index.js +962 -0
- package/dist/engines/influxdb/index.js.map +1 -0
- package/dist/engines/influxdb/restore.js +329 -0
- package/dist/engines/influxdb/restore.js.map +1 -0
- package/dist/engines/influxdb/version-maps.js +64 -0
- package/dist/engines/influxdb/version-maps.js.map +1 -0
- package/dist/engines/influxdb/version-validator.js +109 -0
- package/dist/engines/influxdb/version-validator.js.map +1 -0
- package/dist/engines/mariadb/backup.js +178 -0
- package/dist/engines/mariadb/backup.js.map +1 -0
- package/dist/engines/mariadb/binary-manager.js +33 -0
- package/dist/engines/mariadb/binary-manager.js.map +1 -0
- package/{engines/mariadb/binary-urls.ts → dist/engines/mariadb/binary-urls.js} +38 -55
- package/dist/engines/mariadb/binary-urls.js.map +1 -0
- package/dist/engines/mariadb/hostdb-releases.js +21 -0
- package/dist/engines/mariadb/hostdb-releases.js.map +1 -0
- package/dist/engines/mariadb/index.js +1011 -0
- package/dist/engines/mariadb/index.js.map +1 -0
- package/dist/engines/mariadb/restore.js +322 -0
- package/dist/engines/mariadb/restore.js.map +1 -0
- package/dist/engines/mariadb/version-maps.js +63 -0
- package/dist/engines/mariadb/version-maps.js.map +1 -0
- package/dist/engines/mariadb/version-validator.js +143 -0
- package/dist/engines/mariadb/version-validator.js.map +1 -0
- package/dist/engines/meilisearch/api-client.js +50 -0
- package/dist/engines/meilisearch/api-client.js.map +1 -0
- package/dist/engines/meilisearch/backup.js +167 -0
- package/dist/engines/meilisearch/backup.js.map +1 -0
- package/dist/engines/meilisearch/binary-manager.js +31 -0
- package/dist/engines/meilisearch/binary-manager.js.map +1 -0
- package/dist/engines/meilisearch/binary-urls.js +56 -0
- package/dist/engines/meilisearch/binary-urls.js.map +1 -0
- package/dist/engines/meilisearch/hostdb-releases.js +21 -0
- package/dist/engines/meilisearch/hostdb-releases.js.map +1 -0
- package/dist/engines/meilisearch/index.js +992 -0
- package/dist/engines/meilisearch/index.js.map +1 -0
- package/dist/engines/meilisearch/restore.js +167 -0
- package/dist/engines/meilisearch/restore.js.map +1 -0
- package/dist/engines/meilisearch/version-maps.js +67 -0
- package/dist/engines/meilisearch/version-maps.js.map +1 -0
- package/dist/engines/meilisearch/version-validator.js +109 -0
- package/dist/engines/meilisearch/version-validator.js.map +1 -0
- package/dist/engines/mongodb/backup.js +109 -0
- package/dist/engines/mongodb/backup.js.map +1 -0
- package/dist/engines/mongodb/binary-manager.js +36 -0
- package/dist/engines/mongodb/binary-manager.js.map +1 -0
- package/dist/engines/mongodb/binary-urls.js +46 -0
- package/dist/engines/mongodb/binary-urls.js.map +1 -0
- package/dist/engines/mongodb/cli-utils.js +131 -0
- package/dist/engines/mongodb/cli-utils.js.map +1 -0
- package/dist/engines/mongodb/hostdb-releases.js +77 -0
- package/dist/engines/mongodb/hostdb-releases.js.map +1 -0
- package/dist/engines/mongodb/index.js +873 -0
- package/dist/engines/mongodb/index.js.map +1 -0
- package/dist/engines/mongodb/restore.js +276 -0
- package/dist/engines/mongodb/restore.js.map +1 -0
- package/dist/engines/mongodb/version-maps.js +79 -0
- package/dist/engines/mongodb/version-maps.js.map +1 -0
- package/dist/engines/mongodb/version-validator.js +133 -0
- package/dist/engines/mongodb/version-validator.js.map +1 -0
- package/dist/engines/mysql/backup.js +210 -0
- package/dist/engines/mysql/backup.js.map +1 -0
- package/dist/engines/mysql/binary-detection.js +325 -0
- package/dist/engines/mysql/binary-detection.js.map +1 -0
- package/dist/engines/mysql/binary-manager.js +30 -0
- package/dist/engines/mysql/binary-manager.js.map +1 -0
- package/dist/engines/mysql/binary-urls.js +87 -0
- package/dist/engines/mysql/binary-urls.js.map +1 -0
- package/{engines/mysql/hostdb-releases.ts → dist/engines/mysql/hostdb-releases.js} +20 -23
- package/dist/engines/mysql/hostdb-releases.js.map +1 -0
- package/dist/engines/mysql/index.js +1066 -0
- package/dist/engines/mysql/index.js.map +1 -0
- package/dist/engines/mysql/restore.js +361 -0
- package/dist/engines/mysql/restore.js.map +1 -0
- package/dist/engines/mysql/version-maps.js +79 -0
- package/dist/engines/mysql/version-maps.js.map +1 -0
- package/dist/engines/mysql/version-validator.js +266 -0
- package/dist/engines/mysql/version-validator.js.map +1 -0
- package/dist/engines/postgresql/backup.js +118 -0
- package/dist/engines/postgresql/backup.js.map +1 -0
- package/dist/engines/postgresql/binary-manager.js +85 -0
- package/dist/engines/postgresql/binary-manager.js.map +1 -0
- package/dist/engines/postgresql/binary-urls.js +80 -0
- package/dist/engines/postgresql/binary-urls.js.map +1 -0
- package/dist/engines/postgresql/hostdb-releases.js +21 -0
- package/dist/engines/postgresql/hostdb-releases.js.map +1 -0
- package/dist/engines/postgresql/index.js +852 -0
- package/dist/engines/postgresql/index.js.map +1 -0
- package/dist/engines/postgresql/remote-version.js +109 -0
- package/dist/engines/postgresql/remote-version.js.map +1 -0
- package/dist/engines/postgresql/restore.js +254 -0
- package/dist/engines/postgresql/restore.js.map +1 -0
- package/dist/engines/postgresql/version-maps.js +73 -0
- package/dist/engines/postgresql/version-maps.js.map +1 -0
- package/dist/engines/postgresql/version-validator.js +286 -0
- package/dist/engines/postgresql/version-validator.js.map +1 -0
- package/dist/engines/qdrant/api-client.js +50 -0
- package/dist/engines/qdrant/api-client.js.map +1 -0
- package/dist/engines/qdrant/backup.js +115 -0
- package/dist/engines/qdrant/backup.js.map +1 -0
- package/dist/engines/qdrant/binary-manager.js +31 -0
- package/dist/engines/qdrant/binary-manager.js.map +1 -0
- package/dist/engines/qdrant/binary-urls.js +92 -0
- package/dist/engines/qdrant/binary-urls.js.map +1 -0
- package/dist/engines/qdrant/cli-utils.js +39 -0
- package/dist/engines/qdrant/cli-utils.js.map +1 -0
- package/dist/engines/qdrant/hostdb-releases.js +21 -0
- package/dist/engines/qdrant/hostdb-releases.js.map +1 -0
- package/dist/engines/qdrant/index.js +1002 -0
- package/dist/engines/qdrant/index.js.map +1 -0
- package/dist/engines/qdrant/restore.js +154 -0
- package/dist/engines/qdrant/restore.js.map +1 -0
- package/dist/engines/qdrant/version-maps.js +67 -0
- package/dist/engines/qdrant/version-maps.js.map +1 -0
- package/dist/engines/qdrant/version-validator.js +109 -0
- package/dist/engines/qdrant/version-validator.js.map +1 -0
- package/dist/engines/questdb/backup.js +191 -0
- package/dist/engines/questdb/backup.js.map +1 -0
- package/dist/engines/questdb/binary-manager.js +247 -0
- package/dist/engines/questdb/binary-manager.js.map +1 -0
- package/dist/engines/questdb/binary-urls.js +27 -0
- package/dist/engines/questdb/binary-urls.js.map +1 -0
- package/dist/engines/questdb/hostdb-releases.js +21 -0
- package/dist/engines/questdb/hostdb-releases.js.map +1 -0
- package/dist/engines/questdb/index.js +814 -0
- package/dist/engines/questdb/index.js.map +1 -0
- package/dist/engines/questdb/restore.js +202 -0
- package/dist/engines/questdb/restore.js.map +1 -0
- package/dist/engines/questdb/version-maps.js +33 -0
- package/dist/engines/questdb/version-maps.js.map +1 -0
- package/dist/engines/questdb/version-validator.js +99 -0
- package/dist/engines/questdb/version-validator.js.map +1 -0
- package/dist/engines/redis/backup.js +292 -0
- package/dist/engines/redis/backup.js.map +1 -0
- package/dist/engines/redis/binary-manager.js +32 -0
- package/dist/engines/redis/binary-manager.js.map +1 -0
- package/dist/engines/redis/binary-urls.js +96 -0
- package/dist/engines/redis/binary-urls.js.map +1 -0
- package/dist/engines/redis/cli-utils.js +38 -0
- package/dist/engines/redis/cli-utils.js.map +1 -0
- package/dist/engines/redis/hostdb-releases.js +21 -0
- package/dist/engines/redis/hostdb-releases.js.map +1 -0
- package/dist/engines/redis/index.js +1263 -0
- package/dist/engines/redis/index.js.map +1 -0
- package/dist/engines/redis/restore.js +338 -0
- package/dist/engines/redis/restore.js.map +1 -0
- package/dist/engines/redis/version-maps.js +70 -0
- package/dist/engines/redis/version-maps.js.map +1 -0
- package/dist/engines/redis/version-validator.js +109 -0
- package/dist/engines/redis/version-validator.js.map +1 -0
- package/dist/engines/sqlite/binary-manager.js +39 -0
- package/dist/engines/sqlite/binary-manager.js.map +1 -0
- package/{engines/sqlite/binary-urls.ts → dist/engines/sqlite/binary-urls.js} +11 -16
- package/dist/engines/sqlite/binary-urls.js.map +1 -0
- package/dist/engines/sqlite/hostdb-releases.js +21 -0
- package/dist/engines/sqlite/hostdb-releases.js.map +1 -0
- package/dist/engines/sqlite/index.js +493 -0
- package/dist/engines/sqlite/index.js.map +1 -0
- package/dist/engines/sqlite/registry.js +163 -0
- package/dist/engines/sqlite/registry.js.map +1 -0
- package/dist/engines/sqlite/scanner.js +12 -0
- package/dist/engines/sqlite/scanner.js.map +1 -0
- package/dist/engines/sqlite/version-maps.js +57 -0
- package/dist/engines/sqlite/version-maps.js.map +1 -0
- package/dist/engines/surrealdb/backup.js +97 -0
- package/dist/engines/surrealdb/backup.js.map +1 -0
- package/dist/engines/surrealdb/binary-manager.js +33 -0
- package/dist/engines/surrealdb/binary-manager.js.map +1 -0
- package/dist/engines/surrealdb/binary-urls.js +33 -0
- package/dist/engines/surrealdb/binary-urls.js.map +1 -0
- package/dist/engines/surrealdb/cli-utils.js +147 -0
- package/dist/engines/surrealdb/cli-utils.js.map +1 -0
- package/dist/engines/surrealdb/hostdb-releases.js +21 -0
- package/dist/engines/surrealdb/hostdb-releases.js.map +1 -0
- package/dist/engines/surrealdb/index.js +1022 -0
- package/dist/engines/surrealdb/index.js.map +1 -0
- package/dist/engines/surrealdb/restore.js +224 -0
- package/dist/engines/surrealdb/restore.js.map +1 -0
- package/dist/engines/surrealdb/version-maps.js +36 -0
- package/dist/engines/surrealdb/version-maps.js.map +1 -0
- package/dist/engines/tigerbeetle/backup.js +36 -0
- package/dist/engines/tigerbeetle/backup.js.map +1 -0
- package/dist/engines/tigerbeetle/binary-manager.js +72 -0
- package/dist/engines/tigerbeetle/binary-manager.js.map +1 -0
- package/dist/engines/tigerbeetle/binary-urls.js +49 -0
- package/dist/engines/tigerbeetle/binary-urls.js.map +1 -0
- package/dist/engines/tigerbeetle/hostdb-releases.js +21 -0
- package/dist/engines/tigerbeetle/hostdb-releases.js.map +1 -0
- package/dist/engines/tigerbeetle/index.js +559 -0
- package/dist/engines/tigerbeetle/index.js.map +1 -0
- package/dist/engines/tigerbeetle/restore.js +91 -0
- package/dist/engines/tigerbeetle/restore.js.map +1 -0
- package/{engines/tigerbeetle/version-maps.ts → dist/engines/tigerbeetle/version-maps.js} +22 -31
- package/dist/engines/tigerbeetle/version-maps.js.map +1 -0
- package/dist/engines/tigerbeetle/version-validator.js +108 -0
- package/dist/engines/tigerbeetle/version-validator.js.map +1 -0
- package/dist/engines/typedb/backup.js +129 -0
- package/dist/engines/typedb/backup.js.map +1 -0
- package/dist/engines/typedb/binary-manager.js +151 -0
- package/dist/engines/typedb/binary-manager.js.map +1 -0
- package/dist/engines/typedb/binary-urls.js +33 -0
- package/dist/engines/typedb/binary-urls.js.map +1 -0
- package/dist/engines/typedb/cli-utils.js +163 -0
- package/dist/engines/typedb/cli-utils.js.map +1 -0
- package/dist/engines/typedb/hostdb-releases.js +21 -0
- package/dist/engines/typedb/hostdb-releases.js.map +1 -0
- package/dist/engines/typedb/index.js +1003 -0
- package/dist/engines/typedb/index.js.map +1 -0
- package/dist/engines/typedb/restore.js +279 -0
- package/dist/engines/typedb/restore.js.map +1 -0
- package/dist/engines/typedb/version-maps.js +40 -0
- package/dist/engines/typedb/version-maps.js.map +1 -0
- package/dist/engines/typedb/version-validator.js +103 -0
- package/dist/engines/typedb/version-validator.js.map +1 -0
- package/dist/engines/valkey/backup.js +292 -0
- package/dist/engines/valkey/backup.js.map +1 -0
- package/dist/engines/valkey/binary-manager.js +33 -0
- package/dist/engines/valkey/binary-manager.js.map +1 -0
- package/dist/engines/valkey/binary-urls.js +98 -0
- package/dist/engines/valkey/binary-urls.js.map +1 -0
- package/dist/engines/valkey/cli-utils.js +38 -0
- package/dist/engines/valkey/cli-utils.js.map +1 -0
- package/dist/engines/valkey/hostdb-releases.js +21 -0
- package/dist/engines/valkey/hostdb-releases.js.map +1 -0
- package/dist/engines/valkey/index.js +1257 -0
- package/dist/engines/valkey/index.js.map +1 -0
- package/dist/engines/valkey/restore.js +340 -0
- package/dist/engines/valkey/restore.js.map +1 -0
- package/dist/engines/valkey/version-maps.js +70 -0
- package/dist/engines/valkey/version-maps.js.map +1 -0
- package/dist/engines/valkey/version-validator.js +112 -0
- package/dist/engines/valkey/version-validator.js.map +1 -0
- package/dist/engines/weaviate/api-client.js +50 -0
- package/dist/engines/weaviate/api-client.js.map +1 -0
- package/dist/engines/weaviate/backup.js +95 -0
- package/dist/engines/weaviate/backup.js.map +1 -0
- package/dist/engines/weaviate/binary-manager.js +58 -0
- package/dist/engines/weaviate/binary-manager.js.map +1 -0
- package/dist/engines/weaviate/binary-urls.js +92 -0
- package/dist/engines/weaviate/binary-urls.js.map +1 -0
- package/dist/engines/weaviate/cli-utils.js +39 -0
- package/dist/engines/weaviate/cli-utils.js.map +1 -0
- package/dist/engines/weaviate/hostdb-releases.js +21 -0
- package/dist/engines/weaviate/hostdb-releases.js.map +1 -0
- package/dist/engines/weaviate/index.js +871 -0
- package/dist/engines/weaviate/index.js.map +1 -0
- package/dist/engines/weaviate/restore.js +185 -0
- package/dist/engines/weaviate/restore.js.map +1 -0
- package/dist/engines/weaviate/version-maps.js +67 -0
- package/dist/engines/weaviate/version-maps.js.map +1 -0
- package/dist/engines/weaviate/version-validator.js +109 -0
- package/dist/engines/weaviate/version-validator.js.map +1 -0
- package/dist/types/index.js +102 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +12 -9
- package/bin/cli.js +0 -68
- package/cli/bin.ts +0 -10
- package/cli/commands/attach.ts +0 -139
- package/cli/commands/backup.ts +0 -290
- package/cli/commands/backups.ts +0 -247
- package/cli/commands/clone.ts +0 -159
- package/cli/commands/config.ts +0 -367
- package/cli/commands/connect.ts +0 -684
- package/cli/commands/create.ts +0 -1201
- package/cli/commands/databases.ts +0 -630
- package/cli/commands/delete.ts +0 -133
- package/cli/commands/deps.ts +0 -342
- package/cli/commands/detach.ts +0 -107
- package/cli/commands/doctor.ts +0 -689
- package/cli/commands/duckdb.ts +0 -273
- package/cli/commands/edit.ts +0 -683
- package/cli/commands/engines.ts +0 -1914
- package/cli/commands/export.ts +0 -544
- package/cli/commands/info.ts +0 -340
- package/cli/commands/list.ts +0 -284
- package/cli/commands/logs.ts +0 -102
- package/cli/commands/menu/backup-handlers.ts +0 -1571
- package/cli/commands/menu/container-handlers.ts +0 -2288
- package/cli/commands/menu/engine-handlers.ts +0 -355
- package/cli/commands/menu/index.ts +0 -342
- package/cli/commands/menu/settings-handlers.ts +0 -365
- package/cli/commands/menu/shared.ts +0 -23
- package/cli/commands/menu/shell-handlers.ts +0 -1811
- package/cli/commands/menu/sql-handlers.ts +0 -231
- package/cli/commands/menu/update-handlers.ts +0 -378
- package/cli/commands/menu/validators.ts +0 -8
- package/cli/commands/ports.ts +0 -211
- package/cli/commands/pull.ts +0 -223
- package/cli/commands/query.ts +0 -241
- package/cli/commands/restore.ts +0 -587
- package/cli/commands/run.ts +0 -178
- package/cli/commands/self-update.ts +0 -121
- package/cli/commands/sqlite.ts +0 -273
- package/cli/commands/start.ts +0 -218
- package/cli/commands/stop.ts +0 -241
- package/cli/commands/url.ts +0 -104
- package/cli/commands/users.ts +0 -264
- package/cli/commands/version.ts +0 -55
- package/cli/commands/which.ts +0 -290
- package/cli/constants.ts +0 -233
- package/cli/helpers.ts +0 -1593
- package/cli/index.ts +0 -162
- package/cli/ui/prompts.ts +0 -1525
- package/cli/ui/spinner.ts +0 -88
- package/cli/ui/theme.ts +0 -128
- package/cli/utils/file-follower.ts +0 -93
- package/config/backup-formats.ts +0 -446
- package/config/defaults.ts +0 -56
- package/config/engine-defaults.ts +0 -336
- package/config/engines-registry.ts +0 -150
- package/config/engines.schema.json +0 -135
- package/config/os-dependencies.ts +0 -888
- package/config/paths.ts +0 -200
- package/core/backup-restore.ts +0 -330
- package/core/base-binary-manager.ts +0 -562
- package/core/base-document-binary-manager.ts +0 -523
- package/core/base-embedded-binary-manager.ts +0 -547
- package/core/base-server-binary-manager.ts +0 -523
- package/core/config-manager.ts +0 -652
- package/core/container-manager.ts +0 -787
- package/core/credential-generator.ts +0 -93
- package/core/credential-manager.ts +0 -259
- package/core/dblab-utils.ts +0 -113
- package/core/dependency-manager.ts +0 -512
- package/core/docker-exporter.ts +0 -1345
- package/core/error-handler.ts +0 -419
- package/core/fs-error-utils.ts +0 -82
- package/core/homebrew-version-manager.ts +0 -352
- package/core/hostdb-client.ts +0 -344
- package/core/hostdb-metadata.ts +0 -350
- package/core/hostdb-releases-factory.ts +0 -237
- package/core/library-env.ts +0 -118
- package/core/pgweb-utils.ts +0 -62
- package/core/platform-service.ts +0 -829
- package/core/port-manager.ts +0 -165
- package/core/process-manager.ts +0 -576
- package/core/pull-manager.ts +0 -511
- package/core/query-parser.ts +0 -514
- package/core/spawn-utils.ts +0 -122
- package/core/start-with-retry.ts +0 -130
- package/core/test-cleanup.ts +0 -108
- package/core/tls-generator.ts +0 -116
- package/core/transaction-manager.ts +0 -158
- package/core/update-manager.ts +0 -308
- package/core/version-migration.ts +0 -346
- package/core/version-utils.ts +0 -104
- package/engines/base-engine.ts +0 -340
- package/engines/clickhouse/README.md +0 -231
- package/engines/clickhouse/backup.ts +0 -398
- package/engines/clickhouse/binary-manager.ts +0 -201
- package/engines/clickhouse/binary-urls.ts +0 -125
- package/engines/clickhouse/cli-utils.ts +0 -176
- package/engines/clickhouse/hostdb-releases.ts +0 -30
- package/engines/clickhouse/index.ts +0 -1345
- package/engines/clickhouse/restore.ts +0 -466
- package/engines/clickhouse/version-maps.ts +0 -95
- package/engines/clickhouse/version-validator.ts +0 -154
- package/engines/cockroachdb/README.md +0 -170
- package/engines/cockroachdb/backup.ts +0 -376
- package/engines/cockroachdb/binary-manager.ts +0 -45
- package/engines/cockroachdb/binary-urls.ts +0 -40
- package/engines/cockroachdb/cli-utils.ts +0 -384
- package/engines/cockroachdb/hostdb-releases.ts +0 -26
- package/engines/cockroachdb/index.ts +0 -1276
- package/engines/cockroachdb/restore.ts +0 -455
- package/engines/cockroachdb/version-maps.ts +0 -42
- package/engines/couchdb/README.md +0 -257
- package/engines/couchdb/api-client.ts +0 -81
- package/engines/couchdb/backup.ts +0 -137
- package/engines/couchdb/binary-manager.ts +0 -86
- package/engines/couchdb/binary-urls.ts +0 -115
- package/engines/couchdb/hostdb-releases.ts +0 -23
- package/engines/couchdb/index.ts +0 -1429
- package/engines/couchdb/restore.ts +0 -290
- package/engines/couchdb/version-maps.ts +0 -78
- package/engines/couchdb/version-validator.ts +0 -111
- package/engines/duckdb/README.md +0 -154
- package/engines/duckdb/binary-manager.ts +0 -45
- package/engines/duckdb/hostdb-releases.ts +0 -23
- package/engines/duckdb/index.ts +0 -749
- package/engines/duckdb/registry.ts +0 -303
- package/engines/duckdb/scanner.ts +0 -22
- package/engines/duckdb/version-maps.ts +0 -78
- package/engines/duckdb/version-validator.ts +0 -78
- package/engines/ferretdb/README.md +0 -262
- package/engines/ferretdb/backup.ts +0 -173
- package/engines/ferretdb/binary-manager.ts +0 -1095
- package/engines/ferretdb/binary-urls.ts +0 -183
- package/engines/ferretdb/index.ts +0 -1907
- package/engines/ferretdb/restore.ts +0 -357
- package/engines/file-based-utils.ts +0 -262
- package/engines/index.ts +0 -131
- package/engines/influxdb/README.md +0 -180
- package/engines/influxdb/api-client.ts +0 -64
- package/engines/influxdb/backup.ts +0 -160
- package/engines/influxdb/binary-manager.ts +0 -110
- package/engines/influxdb/binary-urls.ts +0 -69
- package/engines/influxdb/hostdb-releases.ts +0 -23
- package/engines/influxdb/index.ts +0 -1272
- package/engines/influxdb/restore.ts +0 -417
- package/engines/influxdb/version-maps.ts +0 -75
- package/engines/influxdb/version-validator.ts +0 -128
- package/engines/mariadb/README.md +0 -141
- package/engines/mariadb/backup.ts +0 -233
- package/engines/mariadb/binary-manager.ts +0 -45
- package/engines/mariadb/hostdb-releases.ts +0 -23
- package/engines/mariadb/index.ts +0 -1300
- package/engines/mariadb/restore.ts +0 -447
- package/engines/mariadb/version-maps.ts +0 -72
- package/engines/mariadb/version-validator.ts +0 -181
- package/engines/meilisearch/README.md +0 -255
- package/engines/meilisearch/api-client.ts +0 -61
- package/engines/meilisearch/backup.ts +0 -233
- package/engines/meilisearch/binary-manager.ts +0 -43
- package/engines/meilisearch/binary-urls.ts +0 -69
- package/engines/meilisearch/hostdb-releases.ts +0 -26
- package/engines/meilisearch/index.ts +0 -1292
- package/engines/meilisearch/restore.ts +0 -219
- package/engines/meilisearch/version-maps.ts +0 -78
- package/engines/meilisearch/version-validator.ts +0 -128
- package/engines/mongodb/README.md +0 -162
- package/engines/mongodb/backup.ts +0 -127
- package/engines/mongodb/binary-manager.ts +0 -48
- package/engines/mongodb/binary-urls.ts +0 -63
- package/engines/mongodb/cli-utils.ts +0 -171
- package/engines/mongodb/hostdb-releases.ts +0 -91
- package/engines/mongodb/index.ts +0 -1118
- package/engines/mongodb/restore.ts +0 -361
- package/engines/mongodb/version-maps.ts +0 -91
- package/engines/mongodb/version-validator.ts +0 -160
- package/engines/mysql/README.md +0 -142
- package/engines/mysql/backup.ts +0 -270
- package/engines/mysql/binary-detection.ts +0 -408
- package/engines/mysql/binary-manager.ts +0 -42
- package/engines/mysql/binary-urls.ts +0 -104
- package/engines/mysql/index.ts +0 -1361
- package/engines/mysql/restore.ts +0 -500
- package/engines/mysql/version-maps.ts +0 -91
- package/engines/mysql/version-validator.ts +0 -369
- package/engines/postgresql/README.md +0 -158
- package/engines/postgresql/backup.ts +0 -151
- package/engines/postgresql/binary-manager.ts +0 -114
- package/engines/postgresql/binary-urls.ts +0 -99
- package/engines/postgresql/hostdb-releases.ts +0 -26
- package/engines/postgresql/index.ts +0 -1143
- package/engines/postgresql/remote-version.ts +0 -161
- package/engines/postgresql/restore.ts +0 -342
- package/engines/postgresql/version-maps.ts +0 -83
- package/engines/postgresql/version-validator.ts +0 -413
- package/engines/qdrant/README.md +0 -222
- package/engines/qdrant/api-client.ts +0 -61
- package/engines/qdrant/backup.ts +0 -165
- package/engines/qdrant/binary-manager.ts +0 -43
- package/engines/qdrant/binary-urls.ts +0 -115
- package/engines/qdrant/cli-utils.ts +0 -43
- package/engines/qdrant/hostdb-releases.ts +0 -23
- package/engines/qdrant/index.ts +0 -1312
- package/engines/qdrant/restore.ts +0 -203
- package/engines/qdrant/version-maps.ts +0 -78
- package/engines/qdrant/version-validator.ts +0 -128
- package/engines/questdb/README.md +0 -334
- package/engines/questdb/backup.ts +0 -220
- package/engines/questdb/binary-manager.ts +0 -310
- package/engines/questdb/binary-urls.ts +0 -34
- package/engines/questdb/hostdb-releases.ts +0 -23
- package/engines/questdb/index.ts +0 -1023
- package/engines/questdb/restore.ts +0 -260
- package/engines/questdb/version-maps.ts +0 -37
- package/engines/questdb/version-validator.ts +0 -121
- package/engines/redis/README.md +0 -173
- package/engines/redis/backup.ts +0 -389
- package/engines/redis/binary-manager.ts +0 -44
- package/engines/redis/binary-urls.ts +0 -117
- package/engines/redis/cli-utils.ts +0 -42
- package/engines/redis/hostdb-releases.ts +0 -23
- package/engines/redis/index.ts +0 -1583
- package/engines/redis/restore.ts +0 -443
- package/engines/redis/version-maps.ts +0 -81
- package/engines/redis/version-validator.ts +0 -131
- package/engines/sqlite/README.md +0 -162
- package/engines/sqlite/binary-manager.ts +0 -52
- package/engines/sqlite/hostdb-releases.ts +0 -23
- package/engines/sqlite/index.ts +0 -641
- package/engines/sqlite/registry.ts +0 -198
- package/engines/sqlite/scanner.ts +0 -22
- package/engines/sqlite/version-maps.ts +0 -64
- package/engines/surrealdb/README.md +0 -218
- package/engines/surrealdb/backup.ts +0 -131
- package/engines/surrealdb/binary-manager.ts +0 -45
- package/engines/surrealdb/binary-urls.ts +0 -40
- package/engines/surrealdb/cli-utils.ts +0 -173
- package/engines/surrealdb/hostdb-releases.ts +0 -23
- package/engines/surrealdb/index.ts +0 -1246
- package/engines/surrealdb/restore.ts +0 -302
- package/engines/surrealdb/version-maps.ts +0 -41
- package/engines/tigerbeetle/README.md +0 -61
- package/engines/tigerbeetle/backup.ts +0 -49
- package/engines/tigerbeetle/binary-manager.ts +0 -95
- package/engines/tigerbeetle/binary-urls.ts +0 -62
- package/engines/tigerbeetle/hostdb-releases.ts +0 -26
- package/engines/tigerbeetle/index.ts +0 -746
- package/engines/tigerbeetle/restore.ts +0 -130
- package/engines/tigerbeetle/version-validator.ts +0 -126
- package/engines/typedb/backup.ts +0 -167
- package/engines/typedb/binary-manager.ts +0 -200
- package/engines/typedb/binary-urls.ts +0 -40
- package/engines/typedb/cli-utils.ts +0 -210
- package/engines/typedb/hostdb-releases.ts +0 -23
- package/engines/typedb/index.ts +0 -1275
- package/engines/typedb/restore.ts +0 -377
- package/engines/typedb/version-maps.ts +0 -48
- package/engines/typedb/version-validator.ts +0 -127
- package/engines/valkey/README.md +0 -219
- package/engines/valkey/backup.ts +0 -389
- package/engines/valkey/binary-manager.ts +0 -45
- package/engines/valkey/binary-urls.ts +0 -122
- package/engines/valkey/cli-utils.ts +0 -42
- package/engines/valkey/hostdb-releases.ts +0 -23
- package/engines/valkey/index.ts +0 -1585
- package/engines/valkey/restore.ts +0 -446
- package/engines/valkey/version-maps.ts +0 -81
- package/engines/valkey/version-validator.ts +0 -131
- package/engines/weaviate/README.md +0 -302
- package/engines/weaviate/api-client.ts +0 -61
- package/engines/weaviate/backup.ts +0 -145
- package/engines/weaviate/binary-manager.ts +0 -80
- package/engines/weaviate/binary-urls.ts +0 -115
- package/engines/weaviate/cli-utils.ts +0 -43
- package/engines/weaviate/hostdb-releases.ts +0 -23
- package/engines/weaviate/index.ts +0 -1139
- package/engines/weaviate/restore.ts +0 -235
- package/engines/weaviate/version-maps.ts +0 -78
- package/engines/weaviate/version-validator.ts +0 -128
- package/types/index.ts +0 -624
- /package/{config → dist/config}/engines.json +0 -0
|
@@ -1,352 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PostgreSQL System Version Manager (FALLBACK / DEPRECATED)
|
|
3
|
-
*
|
|
4
|
-
* @deprecated SpinDB now downloads PostgreSQL binaries from hostdb, which include
|
|
5
|
-
* all client tools (psql, pg_dump, pg_restore). This module is a legacy fallback
|
|
6
|
-
* for users who have PostgreSQL installed via system package managers. Consider
|
|
7
|
-
* removing this module once hostdb adoption is complete.
|
|
8
|
-
*
|
|
9
|
-
* FALLBACK USE CASE:
|
|
10
|
-
* Detects PostgreSQL versions installed via system package managers:
|
|
11
|
-
* - macOS: Homebrew (/opt/homebrew/opt/postgresql@17/bin)
|
|
12
|
-
* - Linux: APT/YUM (/usr/lib/postgresql/17/bin)
|
|
13
|
-
*
|
|
14
|
-
* Used when hostdb binaries are unavailable and system tools are needed for
|
|
15
|
-
* dump/restore operations with version compatibility requirements.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
import { exec } from 'child_process'
|
|
19
|
-
import { promisify } from 'util'
|
|
20
|
-
import { existsSync } from 'fs'
|
|
21
|
-
import { platformService } from './platform-service'
|
|
22
|
-
import { Platform, Arch } from '../types'
|
|
23
|
-
import { logDebug } from './error-handler'
|
|
24
|
-
|
|
25
|
-
const execAsync = promisify(exec)
|
|
26
|
-
|
|
27
|
-
// PostgreSQL versions to detect on system (via Homebrew/apt)
|
|
28
|
-
// NOTE: This is for SYSTEM-INSTALLED PostgreSQL only (fallback path).
|
|
29
|
-
// Primary path uses hostdb binaries. If this module is removed, these
|
|
30
|
-
// versions become irrelevant.
|
|
31
|
-
const SUPPORTED_PG_VERSIONS = ['14', '15', '16', '17', '18']
|
|
32
|
-
|
|
33
|
-
export type InstalledPostgresVersion = {
|
|
34
|
-
majorVersion: string // e.g., "14", "17"
|
|
35
|
-
fullVersion: string // e.g., "14.20", "17.7.0"
|
|
36
|
-
binPath: string // e.g., "/opt/homebrew/opt/postgresql@17/bin" or "/usr/lib/postgresql/17/bin"
|
|
37
|
-
isLinked: boolean // Currently linked to system PATH (macOS only)
|
|
38
|
-
source: 'homebrew' | 'apt' | 'system' | 'unknown'
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export type VersionSwitchResult = {
|
|
42
|
-
success: boolean
|
|
43
|
-
previousVersion?: string
|
|
44
|
-
currentVersion?: string
|
|
45
|
-
error?: string
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// Check if Homebrew is available on this system
|
|
49
|
-
export async function isHomebrewAvailable(): Promise<boolean> {
|
|
50
|
-
const { platform } = platformService.getPlatformInfo()
|
|
51
|
-
if (platform !== Platform.Darwin) return false
|
|
52
|
-
|
|
53
|
-
try {
|
|
54
|
-
await execAsync('brew --version')
|
|
55
|
-
return true
|
|
56
|
-
} catch {
|
|
57
|
-
return false
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Get the Homebrew prefix based on architecture
|
|
62
|
-
function getHomebrewPrefix(): string {
|
|
63
|
-
const { arch } = platformService.getPlatformInfo()
|
|
64
|
-
return arch === Arch.ARM64 ? '/opt/homebrew' : '/usr/local'
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// Get Linux PostgreSQL bin paths (Debian/Ubuntu style)
|
|
68
|
-
function getLinuxPostgresPath(majorVersion: string): string {
|
|
69
|
-
return `/usr/lib/postgresql/${majorVersion}/bin`
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// Get the currently linked PostgreSQL major version (if any)
|
|
73
|
-
export async function getCurrentLinkedVersion(): Promise<string | null> {
|
|
74
|
-
const prefix = getHomebrewPrefix()
|
|
75
|
-
const pgDumpPath = `${prefix}/bin/pg_dump`
|
|
76
|
-
|
|
77
|
-
if (!existsSync(pgDumpPath)) {
|
|
78
|
-
return null
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
try {
|
|
82
|
-
const { stdout } = await execAsync(`"${pgDumpPath}" --version`)
|
|
83
|
-
const match = stdout.match(/(\d+)\.(\d+)/)
|
|
84
|
-
return match ? match[1] : null
|
|
85
|
-
} catch {
|
|
86
|
-
return null
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Detect all PostgreSQL versions installed on the system
|
|
92
|
-
* Works on both macOS (Homebrew) and Linux (APT/YUM)
|
|
93
|
-
*/
|
|
94
|
-
export async function detectInstalledPostgres(): Promise<
|
|
95
|
-
InstalledPostgresVersion[]
|
|
96
|
-
> {
|
|
97
|
-
const { platform } = platformService.getPlatformInfo()
|
|
98
|
-
const installed: InstalledPostgresVersion[] = []
|
|
99
|
-
|
|
100
|
-
// Get currently linked version (for macOS)
|
|
101
|
-
const linkedVersion = await getCurrentLinkedVersion()
|
|
102
|
-
|
|
103
|
-
if (platform === Platform.Darwin) {
|
|
104
|
-
// macOS: Check Homebrew installations
|
|
105
|
-
const prefix = getHomebrewPrefix()
|
|
106
|
-
|
|
107
|
-
for (const major of SUPPORTED_PG_VERSIONS) {
|
|
108
|
-
const binPath = `${prefix}/opt/postgresql@${major}/bin`
|
|
109
|
-
const pgDumpPath = `${binPath}/pg_dump`
|
|
110
|
-
|
|
111
|
-
if (existsSync(pgDumpPath)) {
|
|
112
|
-
try {
|
|
113
|
-
const { stdout } = await execAsync(`"${pgDumpPath}" --version`)
|
|
114
|
-
const match = stdout.match(/(\d+)\.(\d+)(?:\.(\d+))?/)
|
|
115
|
-
if (match) {
|
|
116
|
-
installed.push({
|
|
117
|
-
majorVersion: major,
|
|
118
|
-
fullVersion: match[0],
|
|
119
|
-
binPath,
|
|
120
|
-
isLinked: linkedVersion === major,
|
|
121
|
-
source: 'homebrew',
|
|
122
|
-
})
|
|
123
|
-
}
|
|
124
|
-
} catch (error) {
|
|
125
|
-
logDebug(`Could not get version for postgresql@${major}`, {
|
|
126
|
-
error: error instanceof Error ? error.message : String(error),
|
|
127
|
-
})
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
} else if (platform === Platform.Linux) {
|
|
132
|
-
// Linux: Check /usr/lib/postgresql/*/bin (Debian/Ubuntu style)
|
|
133
|
-
for (const major of SUPPORTED_PG_VERSIONS) {
|
|
134
|
-
const binPath = getLinuxPostgresPath(major)
|
|
135
|
-
const pgDumpPath = `${binPath}/pg_dump`
|
|
136
|
-
|
|
137
|
-
if (existsSync(pgDumpPath)) {
|
|
138
|
-
try {
|
|
139
|
-
const { stdout } = await execAsync(`"${pgDumpPath}" --version`)
|
|
140
|
-
const match = stdout.match(/(\d+)\.(\d+)(?:\.(\d+))?/)
|
|
141
|
-
if (match) {
|
|
142
|
-
installed.push({
|
|
143
|
-
majorVersion: major,
|
|
144
|
-
fullVersion: match[0],
|
|
145
|
-
binPath,
|
|
146
|
-
isLinked: false, // Linux doesn't use linking like Homebrew
|
|
147
|
-
source: 'apt',
|
|
148
|
-
})
|
|
149
|
-
}
|
|
150
|
-
} catch (error) {
|
|
151
|
-
logDebug(`Could not get version for postgresql-${major}`, {
|
|
152
|
-
error: error instanceof Error ? error.message : String(error),
|
|
153
|
-
})
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
return installed
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* Get the direct path to a PostgreSQL binary for a specific major version
|
|
164
|
-
* This allows using a specific version without changing system links
|
|
165
|
-
*
|
|
166
|
-
* Works on:
|
|
167
|
-
* - macOS: /opt/homebrew/opt/postgresql@17/bin/pg_dump
|
|
168
|
-
* - Linux: /usr/lib/postgresql/17/bin/pg_dump
|
|
169
|
-
*/
|
|
170
|
-
export async function getDirectBinaryPath(
|
|
171
|
-
tool: 'pg_dump' | 'pg_restore' | 'psql' | 'pg_basebackup',
|
|
172
|
-
majorVersion: string,
|
|
173
|
-
): Promise<string | null> {
|
|
174
|
-
const { platform } = platformService.getPlatformInfo()
|
|
175
|
-
|
|
176
|
-
if (platform === Platform.Darwin) {
|
|
177
|
-
// macOS: Homebrew path
|
|
178
|
-
const prefix = getHomebrewPrefix()
|
|
179
|
-
const path = `${prefix}/opt/postgresql@${majorVersion}/bin/${tool}`
|
|
180
|
-
if (existsSync(path)) return path
|
|
181
|
-
} else if (platform === Platform.Linux) {
|
|
182
|
-
// Linux: Debian/Ubuntu path
|
|
183
|
-
const path = `${getLinuxPostgresPath(majorVersion)}/${tool}`
|
|
184
|
-
if (existsSync(path)) return path
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
return null
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* Find a compatible PostgreSQL version for the target major version
|
|
192
|
-
* Returns the best available version that is >= targetMajor
|
|
193
|
-
*/
|
|
194
|
-
export async function findCompatibleVersion(
|
|
195
|
-
targetMajor: number,
|
|
196
|
-
): Promise<InstalledPostgresVersion | null> {
|
|
197
|
-
const installed = await detectInstalledPostgres()
|
|
198
|
-
|
|
199
|
-
// Filter versions >= target
|
|
200
|
-
const compatible = installed.filter(
|
|
201
|
-
(v) => parseInt(v.majorVersion, 10) >= targetMajor,
|
|
202
|
-
)
|
|
203
|
-
|
|
204
|
-
if (compatible.length === 0) {
|
|
205
|
-
return null
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
// Prefer the currently linked version if it's compatible
|
|
209
|
-
const linked = compatible.find((v) => v.isLinked)
|
|
210
|
-
if (linked) {
|
|
211
|
-
return linked
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
// Otherwise return the lowest compatible version (closest to target)
|
|
215
|
-
compatible.sort(
|
|
216
|
-
(a, b) => parseInt(a.majorVersion, 10) - parseInt(b.majorVersion, 10),
|
|
217
|
-
)
|
|
218
|
-
return compatible[0]
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* Switch system to use a specific PostgreSQL version
|
|
223
|
-
*
|
|
224
|
-
* - macOS: Uses `brew link` to change symlinks
|
|
225
|
-
* - Linux: Uses `update-alternatives` if available (Debian/Ubuntu)
|
|
226
|
-
*
|
|
227
|
-
* NOTE: Prefer getDirectBinaryPath() when possible to avoid side effects
|
|
228
|
-
*/
|
|
229
|
-
export async function switchHomebrewVersion(
|
|
230
|
-
targetMajor: string,
|
|
231
|
-
): Promise<VersionSwitchResult> {
|
|
232
|
-
const { platform } = platformService.getPlatformInfo()
|
|
233
|
-
|
|
234
|
-
if (platform === Platform.Darwin) {
|
|
235
|
-
return switchHomebrewVersionMacOS(targetMajor)
|
|
236
|
-
} else if (platform === Platform.Linux) {
|
|
237
|
-
return switchVersionLinux(targetMajor)
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
return {
|
|
241
|
-
success: false,
|
|
242
|
-
error: 'Version switching not supported on this platform',
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
// Switch PostgreSQL version on macOS using Homebrew
|
|
247
|
-
async function switchHomebrewVersionMacOS(
|
|
248
|
-
targetMajor: string,
|
|
249
|
-
): Promise<VersionSwitchResult> {
|
|
250
|
-
if (!(await isHomebrewAvailable())) {
|
|
251
|
-
return { success: false, error: 'Homebrew not available' }
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
const installed = await detectInstalledPostgres()
|
|
255
|
-
const target = installed.find((v) => v.majorVersion === targetMajor)
|
|
256
|
-
|
|
257
|
-
if (!target) {
|
|
258
|
-
return {
|
|
259
|
-
success: false,
|
|
260
|
-
error: `PostgreSQL ${targetMajor} is not installed via Homebrew. Install with: brew install postgresql@${targetMajor}`,
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
if (target.isLinked) {
|
|
265
|
-
return {
|
|
266
|
-
success: true,
|
|
267
|
-
currentVersion: targetMajor,
|
|
268
|
-
previousVersion: targetMajor,
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
const previousLinked = installed.find((v) => v.isLinked)
|
|
273
|
-
|
|
274
|
-
try {
|
|
275
|
-
// Unlink all versions first
|
|
276
|
-
for (const ver of installed) {
|
|
277
|
-
await execAsync(
|
|
278
|
-
`brew unlink postgresql@${ver.majorVersion} 2>/dev/null || true`,
|
|
279
|
-
)
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
// Link target version
|
|
283
|
-
await execAsync(`brew link --overwrite postgresql@${targetMajor}`)
|
|
284
|
-
|
|
285
|
-
logDebug('Switched Homebrew PostgreSQL version', {
|
|
286
|
-
from: previousLinked?.majorVersion,
|
|
287
|
-
to: targetMajor,
|
|
288
|
-
})
|
|
289
|
-
|
|
290
|
-
return {
|
|
291
|
-
success: true,
|
|
292
|
-
previousVersion: previousLinked?.majorVersion,
|
|
293
|
-
currentVersion: targetMajor,
|
|
294
|
-
}
|
|
295
|
-
} catch (error) {
|
|
296
|
-
return {
|
|
297
|
-
success: false,
|
|
298
|
-
error: error instanceof Error ? error.message : String(error),
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
/**
|
|
304
|
-
* "Switch" PostgreSQL version on Linux (no-op verification only)
|
|
305
|
-
*
|
|
306
|
-
* Unlike macOS where Homebrew uses symlinks that need switching, Linux installs
|
|
307
|
-
* PostgreSQL versions side-by-side in versioned paths (e.g., /usr/lib/postgresql/17/bin).
|
|
308
|
-
* We access these directly via getDirectBinaryPath(), so no symlink switching is needed.
|
|
309
|
-
* This function just verifies the target version is installed.
|
|
310
|
-
*/
|
|
311
|
-
async function switchVersionLinux(
|
|
312
|
-
targetMajor: string,
|
|
313
|
-
): Promise<VersionSwitchResult> {
|
|
314
|
-
const installed = await detectInstalledPostgres()
|
|
315
|
-
const target = installed.find((v) => v.majorVersion === targetMajor)
|
|
316
|
-
|
|
317
|
-
if (!target) {
|
|
318
|
-
return {
|
|
319
|
-
success: false,
|
|
320
|
-
error: `PostgreSQL ${targetMajor} is not installed. Install with: sudo apt install postgresql-client-${targetMajor}`,
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
// No action required - Linux uses versioned paths directly, no symlink switching needed
|
|
325
|
-
logDebug(
|
|
326
|
-
'Linux: Version verified, no switching required (using direct path)',
|
|
327
|
-
{
|
|
328
|
-
version: targetMajor,
|
|
329
|
-
binPath: target.binPath,
|
|
330
|
-
},
|
|
331
|
-
)
|
|
332
|
-
|
|
333
|
-
return {
|
|
334
|
-
success: true,
|
|
335
|
-
currentVersion: targetMajor,
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
// Get all client tools for a specific PostgreSQL version
|
|
340
|
-
export async function getVersionedToolPaths(majorVersion: string): Promise<{
|
|
341
|
-
pgDump: string | null
|
|
342
|
-
pgRestore: string | null
|
|
343
|
-
psql: string | null
|
|
344
|
-
pgBasebackup: string | null
|
|
345
|
-
}> {
|
|
346
|
-
return {
|
|
347
|
-
pgDump: await getDirectBinaryPath('pg_dump', majorVersion),
|
|
348
|
-
pgRestore: await getDirectBinaryPath('pg_restore', majorVersion),
|
|
349
|
-
psql: await getDirectBinaryPath('psql', majorVersion),
|
|
350
|
-
pgBasebackup: await getDirectBinaryPath('pg_basebackup', majorVersion),
|
|
351
|
-
}
|
|
352
|
-
}
|
package/core/hostdb-client.ts
DELETED
|
@@ -1,344 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared hostdb Client Module
|
|
3
|
-
*
|
|
4
|
-
* Provides centralized access to pre-built database binaries.
|
|
5
|
-
* Primary registry: registry.layerbase.host
|
|
6
|
-
* Fallback registry: GitHub releases (robertjbass/hostdb)
|
|
7
|
-
*
|
|
8
|
-
* This module handles fetching releases.json with caching to avoid
|
|
9
|
-
* repeated network requests.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import { Platform, type Arch, type Engine } from '../types'
|
|
13
|
-
import { logDebug } from './error-handler'
|
|
14
|
-
|
|
15
|
-
// Registry base URLs
|
|
16
|
-
export const LAYERBASE_REGISTRY_BASE = 'https://registry.layerbase.host'
|
|
17
|
-
export const GITHUB_REGISTRY_BASE =
|
|
18
|
-
'https://github.com/robertjbass/hostdb/releases/download'
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Toggle GitHub fallback for binary downloads and releases.json fetches.
|
|
22
|
-
* Set to `false` to exclusively test the Layerbase registry.
|
|
23
|
-
* Must be re-enabled before release (see PRE_RELEASE_TASKS.md).
|
|
24
|
-
*/
|
|
25
|
-
export const ENABLE_GITHUB_FALLBACK = false
|
|
26
|
-
|
|
27
|
-
// Platform definition in hostdb releases.json
|
|
28
|
-
export type HostdbPlatform = {
|
|
29
|
-
url: string
|
|
30
|
-
sha256: string
|
|
31
|
-
size: number
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// Version entry in hostdb releases.json
|
|
35
|
-
export type HostdbRelease = {
|
|
36
|
-
version: string
|
|
37
|
-
releaseTag: string
|
|
38
|
-
releasedAt: string
|
|
39
|
-
platforms: Record<string, HostdbPlatform>
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Structure of hostdb releases.json
|
|
43
|
-
export type HostdbReleasesData = {
|
|
44
|
-
repository: string
|
|
45
|
-
updatedAt: string
|
|
46
|
-
databases: Record<string, Record<string, HostdbRelease>>
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// Supported hostdb platforms
|
|
50
|
-
export const SUPPORTED_PLATFORMS = [
|
|
51
|
-
'darwin-arm64',
|
|
52
|
-
'darwin-x64',
|
|
53
|
-
'linux-arm64',
|
|
54
|
-
'linux-x64',
|
|
55
|
-
'win32-x64',
|
|
56
|
-
] as const
|
|
57
|
-
|
|
58
|
-
export type SupportedPlatform = (typeof SUPPORTED_PLATFORMS)[number]
|
|
59
|
-
|
|
60
|
-
// Type alias for engines available in hostdb (uses the Engine enum from types)
|
|
61
|
-
export type HostdbEngine = Engine
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* In-memory cache for fetched releases.
|
|
65
|
-
*
|
|
66
|
-
* THREAD-SAFETY NOTE: This cache uses module-level mutable state and is NOT
|
|
67
|
-
* safe for use across Node.js worker threads. Each worker thread will have
|
|
68
|
-
* its own copy of this cache. For SpinDB's single-threaded CLI use case,
|
|
69
|
-
* this is acceptable.
|
|
70
|
-
*/
|
|
71
|
-
let cachedReleases: HostdbReleasesData | null = null
|
|
72
|
-
let cacheTimestamp = 0
|
|
73
|
-
const CACHE_TTL_MS = 5 * 60 * 1000 // 5 minutes
|
|
74
|
-
|
|
75
|
-
export const LAYERBASE_RELEASES_URL =
|
|
76
|
-
'https://registry.layerbase.host/releases.json'
|
|
77
|
-
export const GITHUB_RELEASES_URL =
|
|
78
|
-
'https://raw.githubusercontent.com/robertjbass/hostdb/main/releases.json'
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Get the list of releases.json URLs to try, respecting ENABLE_GITHUB_FALLBACK.
|
|
82
|
-
* When fallback is disabled, only the Layerbase URL is returned.
|
|
83
|
-
*/
|
|
84
|
-
export function getReleasesUrls(): string[] {
|
|
85
|
-
return ENABLE_GITHUB_FALLBACK
|
|
86
|
-
? [LAYERBASE_RELEASES_URL, GITHUB_RELEASES_URL]
|
|
87
|
-
: [LAYERBASE_RELEASES_URL]
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Fetch releases.json from hostdb repository with caching.
|
|
92
|
-
*
|
|
93
|
-
* @returns The full releases data from hostdb
|
|
94
|
-
* @throws Error if the fetch fails
|
|
95
|
-
*/
|
|
96
|
-
export async function fetchHostdbReleases(): Promise<HostdbReleasesData> {
|
|
97
|
-
// Return cached releases if still valid
|
|
98
|
-
if (cachedReleases && Date.now() - cacheTimestamp < CACHE_TTL_MS) {
|
|
99
|
-
return cachedReleases
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// Try layerbase registry first, fall back to GitHub (if enabled)
|
|
103
|
-
const urls = getReleasesUrls()
|
|
104
|
-
for (let i = 0; i < urls.length; i++) {
|
|
105
|
-
const url = urls[i]
|
|
106
|
-
const isLast = i === urls.length - 1
|
|
107
|
-
try {
|
|
108
|
-
const response = await fetch(url, {
|
|
109
|
-
signal: AbortSignal.timeout(5000),
|
|
110
|
-
})
|
|
111
|
-
if (!response.ok) {
|
|
112
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`)
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
const data = (await response.json()) as HostdbReleasesData
|
|
116
|
-
|
|
117
|
-
// Cache the results
|
|
118
|
-
cachedReleases = data
|
|
119
|
-
cacheTimestamp = Date.now()
|
|
120
|
-
|
|
121
|
-
return data
|
|
122
|
-
} catch (error) {
|
|
123
|
-
const err = error as Error
|
|
124
|
-
logDebug(`Failed to fetch releases from ${url}: ${err.message}`)
|
|
125
|
-
// If this was the last URL, rethrow
|
|
126
|
-
if (isLast) {
|
|
127
|
-
throw error
|
|
128
|
-
}
|
|
129
|
-
// Otherwise try the next URL
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// Should be unreachable (loop always throws on last iteration)
|
|
134
|
-
throw new Error('Failed to fetch hostdb releases from all registries')
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Get the releases for a specific engine from the hostdb data.
|
|
139
|
-
*
|
|
140
|
-
* @param data - The full hostdb releases data
|
|
141
|
-
* @param engine - The engine (e.g., Engine.PostgreSQL or 'postgresql')
|
|
142
|
-
* @returns The releases for that engine, or undefined if not found
|
|
143
|
-
*/
|
|
144
|
-
export function getEngineReleases(
|
|
145
|
-
data: HostdbReleasesData,
|
|
146
|
-
engine: Engine | string,
|
|
147
|
-
): Record<string, HostdbRelease> | undefined {
|
|
148
|
-
return data.databases[engine]
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Map Node.js platform identifiers to hostdb platform identifiers.
|
|
153
|
-
*
|
|
154
|
-
* @param platform - Node.js platform (e.g., Platform.Darwin)
|
|
155
|
-
* @param arch - Node.js architecture (e.g., Arch.ARM64)
|
|
156
|
-
* @returns The hostdb platform identifier, or undefined if not supported
|
|
157
|
-
*/
|
|
158
|
-
export function getHostdbPlatform(
|
|
159
|
-
platform: Platform,
|
|
160
|
-
arch: Arch,
|
|
161
|
-
): SupportedPlatform | undefined {
|
|
162
|
-
const key = `${platform}-${arch}`
|
|
163
|
-
return SUPPORTED_PLATFORMS.includes(key as SupportedPlatform)
|
|
164
|
-
? (key as SupportedPlatform)
|
|
165
|
-
: undefined
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Validate that a platform is supported by hostdb.
|
|
170
|
-
*
|
|
171
|
-
* @param platform - Node.js platform (e.g., Platform.Darwin)
|
|
172
|
-
* @param arch - Node.js architecture (e.g., Arch.ARM64)
|
|
173
|
-
* @returns The validated hostdb platform identifier
|
|
174
|
-
* @throws Error if the platform is not supported
|
|
175
|
-
*/
|
|
176
|
-
export function validatePlatform(
|
|
177
|
-
platform: Platform,
|
|
178
|
-
arch: Arch,
|
|
179
|
-
): SupportedPlatform {
|
|
180
|
-
const hostdbPlatform = getHostdbPlatform(platform, arch)
|
|
181
|
-
if (!hostdbPlatform) {
|
|
182
|
-
const supported = SUPPORTED_PLATFORMS.join(', ')
|
|
183
|
-
throw new Error(
|
|
184
|
-
`Unsupported platform: ${platform}-${arch}. ` +
|
|
185
|
-
`hostdb provides binaries for: ${supported}`,
|
|
186
|
-
)
|
|
187
|
-
}
|
|
188
|
-
return hostdbPlatform
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
export type BuildHostdbUrlOptions = {
|
|
192
|
-
version: string
|
|
193
|
-
hostdbPlatform: string
|
|
194
|
-
extension?: 'tar.gz' | 'zip'
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* Build a download URL for a hostdb release (low-level, no validation).
|
|
199
|
-
*
|
|
200
|
-
* This is the core URL builder that all engines should use after validating
|
|
201
|
-
* the platform against their own supported platform set.
|
|
202
|
-
*
|
|
203
|
-
* @param engine - The engine name (e.g., 'postgresql', 'mysql')
|
|
204
|
-
* @param options - Version, pre-validated platform string, and optional extension
|
|
205
|
-
* @returns The download URL
|
|
206
|
-
*/
|
|
207
|
-
export function buildHostdbUrl(
|
|
208
|
-
engine: Engine | string,
|
|
209
|
-
options: BuildHostdbUrlOptions,
|
|
210
|
-
): string {
|
|
211
|
-
const { version, hostdbPlatform, extension = 'tar.gz' } = options
|
|
212
|
-
const tag = `${engine}-${version}`
|
|
213
|
-
const filename = `${engine}-${version}-${hostdbPlatform}.${extension}`
|
|
214
|
-
|
|
215
|
-
return `${LAYERBASE_REGISTRY_BASE}/${tag}/${filename}`
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Build a GitHub fallback URL for a hostdb release (same path scheme as layerbase).
|
|
220
|
-
*/
|
|
221
|
-
export function buildGithubFallbackUrl(
|
|
222
|
-
engine: Engine | string,
|
|
223
|
-
options: BuildHostdbUrlOptions,
|
|
224
|
-
): string {
|
|
225
|
-
const { version, hostdbPlatform, extension = 'tar.gz' } = options
|
|
226
|
-
const tag = `${engine}-${version}`
|
|
227
|
-
const filename = `${engine}-${version}-${hostdbPlatform}.${extension}`
|
|
228
|
-
|
|
229
|
-
return `${GITHUB_REGISTRY_BASE}/${tag}/${filename}`
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
/**
|
|
233
|
-
* Convert a layerbase registry URL to its GitHub fallback equivalent.
|
|
234
|
-
* Returns null if the URL is not a layerbase URL or if GitHub fallback is disabled.
|
|
235
|
-
*/
|
|
236
|
-
export function getRegistryFallbackUrl(url: string): string | null {
|
|
237
|
-
if (!ENABLE_GITHUB_FALLBACK) return null
|
|
238
|
-
if (url.startsWith(LAYERBASE_REGISTRY_BASE)) {
|
|
239
|
-
return url.replace(LAYERBASE_REGISTRY_BASE, GITHUB_REGISTRY_BASE)
|
|
240
|
-
}
|
|
241
|
-
return null
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
/**
|
|
245
|
-
* Fetch wrapper that tries the primary URL first, then falls back to the
|
|
246
|
-
* GitHub registry if the primary is a layerbase URL and the request fails
|
|
247
|
-
* with a 404, 5xx, or network error.
|
|
248
|
-
*
|
|
249
|
-
* AbortError (timeout) is never retried — it propagates immediately.
|
|
250
|
-
*/
|
|
251
|
-
export async function fetchWithRegistryFallback(
|
|
252
|
-
url: string,
|
|
253
|
-
options?: RequestInit,
|
|
254
|
-
): Promise<Response> {
|
|
255
|
-
try {
|
|
256
|
-
const response = await fetch(url, options)
|
|
257
|
-
if (response.status === 404 || response.status >= 500) {
|
|
258
|
-
const fallbackUrl = getRegistryFallbackUrl(url)
|
|
259
|
-
if (fallbackUrl) {
|
|
260
|
-
logDebug(
|
|
261
|
-
`Primary registry returned ${response.status}, trying GitHub fallback`,
|
|
262
|
-
)
|
|
263
|
-
return await fetch(fallbackUrl, options)
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
return response
|
|
267
|
-
} catch (error) {
|
|
268
|
-
const err = error as Error
|
|
269
|
-
// Never retry on timeout (AbortError)
|
|
270
|
-
if (err.name === 'AbortError') {
|
|
271
|
-
throw error
|
|
272
|
-
}
|
|
273
|
-
const fallbackUrl = getRegistryFallbackUrl(url)
|
|
274
|
-
if (fallbackUrl) {
|
|
275
|
-
logDebug(
|
|
276
|
-
`Primary registry fetch failed (${err.message}), trying GitHub fallback`,
|
|
277
|
-
)
|
|
278
|
-
return await fetch(fallbackUrl, options)
|
|
279
|
-
}
|
|
280
|
-
throw error
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
/**
|
|
285
|
-
* Try fetching from multiple registry URLs in order, returning the first
|
|
286
|
-
* successful (response.ok) Response. Logs per-URL failures via the
|
|
287
|
-
* supplied logger callback.
|
|
288
|
-
*
|
|
289
|
-
* @param urls - URLs to try in order (e.g., layerbase then GitHub)
|
|
290
|
-
* @param logger - Callback for logging per-URL failures
|
|
291
|
-
* @param timeoutMs - Per-request timeout in milliseconds (default: 5000)
|
|
292
|
-
* @returns The first successful Response
|
|
293
|
-
* @throws Error if all URLs fail
|
|
294
|
-
*/
|
|
295
|
-
export async function fetchFromRegistryUrls(
|
|
296
|
-
urls: string[],
|
|
297
|
-
logger: (message: string) => void,
|
|
298
|
-
timeoutMs: number = 5000,
|
|
299
|
-
): Promise<Response> {
|
|
300
|
-
let lastError: Error | null = null
|
|
301
|
-
for (const url of urls) {
|
|
302
|
-
try {
|
|
303
|
-
const response = await fetch(url, {
|
|
304
|
-
signal: AbortSignal.timeout(timeoutMs),
|
|
305
|
-
})
|
|
306
|
-
if (response.ok) return response
|
|
307
|
-
logger(`Registry fetch from ${url}: HTTP ${response.status}`)
|
|
308
|
-
} catch (error) {
|
|
309
|
-
logger(`Registry fetch from ${url} failed: ${error}`)
|
|
310
|
-
lastError = error as Error
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
throw lastError ?? new Error('All release registries failed')
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
export type BuildDownloadUrlOptions = {
|
|
317
|
-
version: string
|
|
318
|
-
platform: Platform
|
|
319
|
-
arch: Arch
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
/**
|
|
323
|
-
* Build a download URL for a hostdb release with platform validation.
|
|
324
|
-
*
|
|
325
|
-
* This is a convenience wrapper around buildHostdbUrl that validates
|
|
326
|
-
* the platform against the global SUPPORTED_PLATFORMS list. For engines
|
|
327
|
-
* with different platform support (e.g., ClickHouse doesn't support Windows),
|
|
328
|
-
* use buildHostdbUrl directly after validating against engine-specific platforms.
|
|
329
|
-
*
|
|
330
|
-
* @param engine - The engine name (e.g., 'postgresql', 'mysql')
|
|
331
|
-
* @param options - Version and platform configuration
|
|
332
|
-
* @returns The download URL
|
|
333
|
-
* @throws Error if the platform is not supported by hostdb
|
|
334
|
-
*/
|
|
335
|
-
export function buildDownloadUrl(
|
|
336
|
-
engine: Engine | string,
|
|
337
|
-
options: BuildDownloadUrlOptions,
|
|
338
|
-
): string {
|
|
339
|
-
const { version, platform, arch } = options
|
|
340
|
-
const hostdbPlatform = validatePlatform(platform, arch)
|
|
341
|
-
const ext = platform === Platform.Win32 ? 'zip' : 'tar.gz'
|
|
342
|
-
|
|
343
|
-
return buildHostdbUrl(engine, { version, hostdbPlatform, extension: ext })
|
|
344
|
-
}
|