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
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fetches metadata from hostdb (databases.json and downloads.json)
|
|
3
|
+
* to understand what tools each engine needs and how to install them.
|
|
4
|
+
*
|
|
5
|
+
* Primary registry: registry.layerbase.host
|
|
6
|
+
* Fallback registry: GitHub raw (robertjbass/hostdb)
|
|
7
|
+
*
|
|
8
|
+
* Architecture:
|
|
9
|
+
* - databases.json: Lists server, client, utilities, and enhanced CLI tools for each engine
|
|
10
|
+
* - downloads.json: Provides package manager commands for installing tools
|
|
11
|
+
*/
|
|
12
|
+
import { logDebug } from './error-handler.js';
|
|
13
|
+
import { LAYERBASE_REGISTRY_BASE } from './hostdb-client.js';
|
|
14
|
+
const GITHUB_RAW_BASE = 'https://raw.githubusercontent.com/robertjbass/hostdb/main';
|
|
15
|
+
const CACHE_TTL_MS = 5 * 60 * 1000; // 5 minutes
|
|
16
|
+
// Simple in-memory cache
|
|
17
|
+
let databasesCache = null;
|
|
18
|
+
let downloadsCache = null;
|
|
19
|
+
// In-flight request deduplication to prevent parallel fetches for the same URL
|
|
20
|
+
const inFlightRequests = new Map();
|
|
21
|
+
async function fetchWithCache(urls, getCache, setCache) {
|
|
22
|
+
// Use getter to always check the freshest cache state
|
|
23
|
+
const cache = getCache();
|
|
24
|
+
const now = Date.now();
|
|
25
|
+
if (cache && now - cache.timestamp < CACHE_TTL_MS) {
|
|
26
|
+
return cache.data;
|
|
27
|
+
}
|
|
28
|
+
// Check for in-flight request using the primary URL as key
|
|
29
|
+
const cacheKey = urls[0];
|
|
30
|
+
const inFlight = inFlightRequests.get(cacheKey);
|
|
31
|
+
if (inFlight) {
|
|
32
|
+
return inFlight;
|
|
33
|
+
}
|
|
34
|
+
// Create the fetch promise — try each URL in order
|
|
35
|
+
const fetchPromise = (async () => {
|
|
36
|
+
try {
|
|
37
|
+
let lastError = null;
|
|
38
|
+
for (const url of urls) {
|
|
39
|
+
try {
|
|
40
|
+
const response = await fetch(url);
|
|
41
|
+
if (!response.ok) {
|
|
42
|
+
throw new Error(`Failed to fetch ${url}: ${response.status}`);
|
|
43
|
+
}
|
|
44
|
+
const data = (await response.json());
|
|
45
|
+
setCache({ data, timestamp: Date.now() });
|
|
46
|
+
return data;
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
lastError = error;
|
|
50
|
+
logDebug(`Metadata fetch from ${url} failed: ${lastError.message}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
throw lastError ?? new Error('All metadata URLs failed');
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
inFlightRequests.delete(cacheKey);
|
|
57
|
+
}
|
|
58
|
+
})();
|
|
59
|
+
inFlightRequests.set(cacheKey, fetchPromise);
|
|
60
|
+
return fetchPromise;
|
|
61
|
+
}
|
|
62
|
+
export async function fetchDatabasesJson() {
|
|
63
|
+
return fetchWithCache([
|
|
64
|
+
`${LAYERBASE_REGISTRY_BASE}/databases.json`,
|
|
65
|
+
`${GITHUB_RAW_BASE}/databases.json`,
|
|
66
|
+
], () => databasesCache, (c) => {
|
|
67
|
+
databasesCache = c;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
export async function fetchDownloadsJson() {
|
|
71
|
+
return fetchWithCache([
|
|
72
|
+
`${LAYERBASE_REGISTRY_BASE}/downloads.json`,
|
|
73
|
+
`${GITHUB_RAW_BASE}/downloads.json`,
|
|
74
|
+
], () => downloadsCache, (c) => {
|
|
75
|
+
downloadsCache = c;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get the CLI tools definition for a database engine
|
|
80
|
+
* @param engine Engine (e.g., Engine.PostgreSQL or 'postgresql')
|
|
81
|
+
*/
|
|
82
|
+
export async function getDatabaseTools(engine) {
|
|
83
|
+
try {
|
|
84
|
+
const data = await fetchDatabasesJson();
|
|
85
|
+
// hostdb uses lowercase engine names
|
|
86
|
+
const key = engine.toLowerCase();
|
|
87
|
+
const entry = data[key];
|
|
88
|
+
return entry?.cliTools || null;
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
logDebug('Failed to fetch database tools from hostdb', {
|
|
92
|
+
engine,
|
|
93
|
+
error: error instanceof Error ? error.message : String(error),
|
|
94
|
+
});
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get the client tools required for a database engine
|
|
100
|
+
* Returns an array of tool names (client + utilities)
|
|
101
|
+
*/
|
|
102
|
+
export async function getRequiredClientTools(engine) {
|
|
103
|
+
const cliTools = await getDatabaseTools(engine);
|
|
104
|
+
if (!cliTools)
|
|
105
|
+
return [];
|
|
106
|
+
const required = [];
|
|
107
|
+
if (cliTools.client) {
|
|
108
|
+
required.push(cliTools.client);
|
|
109
|
+
}
|
|
110
|
+
if (cliTools.utilities) {
|
|
111
|
+
required.push(...cliTools.utilities);
|
|
112
|
+
}
|
|
113
|
+
return required;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get package manager info for a specific tool
|
|
117
|
+
* @param tool Tool name (e.g., 'psql', 'mysqldump')
|
|
118
|
+
*/
|
|
119
|
+
export async function getToolPackageInfo(tool) {
|
|
120
|
+
try {
|
|
121
|
+
const data = await fetchDownloadsJson();
|
|
122
|
+
return data.tools[tool] || null;
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
logDebug('Failed to fetch tool package info from hostdb', {
|
|
126
|
+
tool,
|
|
127
|
+
error: error instanceof Error ? error.message : String(error),
|
|
128
|
+
});
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get the install command for a tool using a specific package manager
|
|
134
|
+
* @param tool Tool name (e.g., 'psql', 'pg_dump')
|
|
135
|
+
* @param packageManager Package manager key (e.g., 'brew', 'apt')
|
|
136
|
+
* @returns The full install command, or null if not available
|
|
137
|
+
*/
|
|
138
|
+
export async function getInstallCommand(tool, packageManager) {
|
|
139
|
+
try {
|
|
140
|
+
const data = await fetchDownloadsJson();
|
|
141
|
+
// Get the package manager definition
|
|
142
|
+
const pmDef = data.packageManagers[packageManager];
|
|
143
|
+
if (!pmDef)
|
|
144
|
+
return null;
|
|
145
|
+
// Get the tool's package info for this package manager
|
|
146
|
+
const toolInfo = data.tools[tool];
|
|
147
|
+
if (!toolInfo?.packages?.[packageManager])
|
|
148
|
+
return null;
|
|
149
|
+
const pkgInfo = toolInfo.packages[packageManager];
|
|
150
|
+
// Build the command
|
|
151
|
+
let cmd = pmDef.installCmd.replace('{package}', pkgInfo.package);
|
|
152
|
+
// Handle Homebrew taps
|
|
153
|
+
if (packageManager === 'brew' && pkgInfo.tap) {
|
|
154
|
+
cmd = `brew tap ${pkgInfo.tap} && ${cmd}`;
|
|
155
|
+
}
|
|
156
|
+
return cmd;
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
logDebug('Failed to get install command from hostdb', {
|
|
160
|
+
tool,
|
|
161
|
+
packageManager,
|
|
162
|
+
error: error instanceof Error ? error.message : String(error),
|
|
163
|
+
});
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get the package to install that provides a set of tools
|
|
169
|
+
* For many tools, a single package provides multiple binaries (e.g., postgresql provides psql, pg_dump, etc.)
|
|
170
|
+
* This returns the unique packages needed to install all the requested tools
|
|
171
|
+
*/
|
|
172
|
+
export async function getPackagesForTools(tools, packageManager) {
|
|
173
|
+
try {
|
|
174
|
+
const data = await fetchDownloadsJson();
|
|
175
|
+
const packageMap = new Map();
|
|
176
|
+
for (const tool of tools) {
|
|
177
|
+
const toolInfo = data.tools[tool];
|
|
178
|
+
if (!toolInfo?.packages?.[packageManager])
|
|
179
|
+
continue;
|
|
180
|
+
const pkgInfo = toolInfo.packages[packageManager];
|
|
181
|
+
const key = pkgInfo.package;
|
|
182
|
+
const existing = packageMap.get(key);
|
|
183
|
+
if (existing) {
|
|
184
|
+
existing.tools.push(tool);
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
packageMap.set(key, {
|
|
188
|
+
tap: pkgInfo.tap,
|
|
189
|
+
tools: [tool],
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return Array.from(packageMap.entries()).map(([pkg, info]) => ({
|
|
194
|
+
package: pkg,
|
|
195
|
+
tap: info.tap,
|
|
196
|
+
tools: info.tools,
|
|
197
|
+
}));
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
logDebug('Failed to get packages for tools from hostdb', {
|
|
201
|
+
tools,
|
|
202
|
+
packageManager,
|
|
203
|
+
error: error instanceof Error ? error.message : String(error),
|
|
204
|
+
});
|
|
205
|
+
return [];
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Check if a version entry is enabled.
|
|
210
|
+
* Handles both old schema (boolean) and new schema (object with optional enabled field).
|
|
211
|
+
* Objects are enabled by default unless explicitly `{ enabled: false }`.
|
|
212
|
+
*/
|
|
213
|
+
export function isVersionEnabled(value) {
|
|
214
|
+
if (typeof value === 'boolean')
|
|
215
|
+
return value;
|
|
216
|
+
return value.enabled !== false;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Get available versions for a database engine from databases.json
|
|
220
|
+
* This is the authoritative source for what versions are actually available in hostdb.
|
|
221
|
+
* @param engine Engine (e.g., Engine.PostgreSQL or 'postgresql')
|
|
222
|
+
* @returns Array of available version strings, or null if fetch fails
|
|
223
|
+
*/
|
|
224
|
+
export async function getAvailableVersions(engine) {
|
|
225
|
+
try {
|
|
226
|
+
const data = await fetchDatabasesJson();
|
|
227
|
+
const key = engine.toLowerCase();
|
|
228
|
+
const entry = data[key];
|
|
229
|
+
if (!entry?.versions)
|
|
230
|
+
return null;
|
|
231
|
+
return Object.entries(entry.versions)
|
|
232
|
+
.filter(([, value]) => isVersionEnabled(value))
|
|
233
|
+
.map(([version]) => version);
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
logDebug('Failed to fetch available versions from hostdb', {
|
|
237
|
+
engine,
|
|
238
|
+
error: error instanceof Error ? error.message : String(error),
|
|
239
|
+
});
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=hostdb-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hostdb-metadata.js","sourceRoot":"","sources":["../../core/hostdb-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* hostdb Releases Factory
|
|
3
|
+
*
|
|
4
|
+
* Creates standardized hostdb-releases modules for database engines.
|
|
5
|
+
* This reduces code duplication across engines that follow the same pattern.
|
|
6
|
+
*
|
|
7
|
+
* The factory creates two functions:
|
|
8
|
+
* - fetchAvailableVersions(): Fetches available versions grouped by major version
|
|
9
|
+
* - getLatestVersion(major): Gets the latest version for a major version
|
|
10
|
+
*/
|
|
11
|
+
import { compareVersions } from './version-utils.js';
|
|
12
|
+
import { getAvailableVersions as getHostdbVersions } from './hostdb-metadata.js';
|
|
13
|
+
import { logDebug } from './error-handler.js';
|
|
14
|
+
/**
|
|
15
|
+
* Default function to extract major version based on grouping strategy
|
|
16
|
+
*/
|
|
17
|
+
function defaultGetMajorVersion(version, strategy) {
|
|
18
|
+
const trimmed = version?.trim();
|
|
19
|
+
if (!trimmed) {
|
|
20
|
+
return '';
|
|
21
|
+
}
|
|
22
|
+
const parts = trimmed.split('.');
|
|
23
|
+
if (strategy === 'xy-format') {
|
|
24
|
+
return parts.length >= 2 ? `${parts[0]}.${parts[1]}` : (parts[0] ?? '');
|
|
25
|
+
}
|
|
26
|
+
return parts[0] ?? '';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Create hostdb-releases functions for an engine
|
|
30
|
+
*/
|
|
31
|
+
export function createHostdbReleases(config) {
|
|
32
|
+
const { engine, displayName, versionMap, supportedMajorVersions, groupingStrategy, listInstalled, } = config;
|
|
33
|
+
// Use custom getMajorVersion if provided, otherwise use default
|
|
34
|
+
const getMajorVersion = config.getMajorVersion ??
|
|
35
|
+
((version) => defaultGetMajorVersion(version, groupingStrategy));
|
|
36
|
+
// Cache for fetchAvailableVersions to avoid repeated network requests
|
|
37
|
+
let cachedVersions = null;
|
|
38
|
+
let cachedAt = 0;
|
|
39
|
+
const cacheTTLMs = 30_000; // 30 seconds
|
|
40
|
+
let inflightFetchPromise = null;
|
|
41
|
+
/**
|
|
42
|
+
* Get hardcoded versions as last resort fallback
|
|
43
|
+
*/
|
|
44
|
+
function getHardcodedVersions() {
|
|
45
|
+
const grouped = {};
|
|
46
|
+
for (const major of supportedMajorVersions) {
|
|
47
|
+
const version = versionMap[major];
|
|
48
|
+
if (version) {
|
|
49
|
+
grouped[major] = [version];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return grouped;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get available versions from hostdb, grouped by major version
|
|
56
|
+
*/
|
|
57
|
+
async function fetchAvailableVersions() {
|
|
58
|
+
// Try to fetch from hostdb databases.json (authoritative source)
|
|
59
|
+
try {
|
|
60
|
+
const versions = await getHostdbVersions(engine);
|
|
61
|
+
if (versions && versions.length > 0) {
|
|
62
|
+
// Group versions by major version
|
|
63
|
+
const grouped = {};
|
|
64
|
+
for (const version of versions) {
|
|
65
|
+
const major = getMajorVersion(version);
|
|
66
|
+
if (!grouped[major]) {
|
|
67
|
+
grouped[major] = [];
|
|
68
|
+
}
|
|
69
|
+
grouped[major].push(version);
|
|
70
|
+
}
|
|
71
|
+
// Sort each group descending (latest first)
|
|
72
|
+
for (const major of Object.keys(grouped)) {
|
|
73
|
+
grouped[major].sort((a, b) => compareVersions(b, a));
|
|
74
|
+
}
|
|
75
|
+
return grouped;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
logDebug(`Failed to fetch ${displayName} versions from hostdb, checking local`, {
|
|
80
|
+
error: error instanceof Error ? error.message : String(error),
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
// Offline fallback: return only locally installed versions
|
|
84
|
+
const installed = await listInstalled();
|
|
85
|
+
if (installed.length > 0) {
|
|
86
|
+
const result = {};
|
|
87
|
+
for (const binary of installed) {
|
|
88
|
+
const major = getMajorVersion(binary.version);
|
|
89
|
+
if (!result[major]) {
|
|
90
|
+
result[major] = [];
|
|
91
|
+
}
|
|
92
|
+
if (!result[major].includes(binary.version)) {
|
|
93
|
+
result[major].push(binary.version);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Sort each major version group descending
|
|
97
|
+
for (const major of Object.keys(result)) {
|
|
98
|
+
result[major].sort((a, b) => compareVersions(b, a));
|
|
99
|
+
}
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
// Last resort: return hardcoded version map
|
|
103
|
+
return getHardcodedVersions();
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get cached versions if fresh, otherwise fetch and cache.
|
|
107
|
+
* Uses inflightFetchPromise to dedupe concurrent requests.
|
|
108
|
+
*/
|
|
109
|
+
async function getCachedVersions() {
|
|
110
|
+
const now = Date.now();
|
|
111
|
+
// Return cached result if fresh
|
|
112
|
+
if (cachedVersions && now - cachedAt < cacheTTLMs) {
|
|
113
|
+
return cachedVersions;
|
|
114
|
+
}
|
|
115
|
+
// If there's an inflight request, await it instead of starting a new one
|
|
116
|
+
if (inflightFetchPromise) {
|
|
117
|
+
return inflightFetchPromise;
|
|
118
|
+
}
|
|
119
|
+
// Start new fetch, store promise to dedupe concurrent calls
|
|
120
|
+
inflightFetchPromise = fetchAvailableVersions()
|
|
121
|
+
.then((versions) => {
|
|
122
|
+
cachedVersions = versions;
|
|
123
|
+
cachedAt = Date.now();
|
|
124
|
+
inflightFetchPromise = null;
|
|
125
|
+
return versions;
|
|
126
|
+
})
|
|
127
|
+
.catch((error) => {
|
|
128
|
+
// Clear inflight promise on error so subsequent calls can retry
|
|
129
|
+
inflightFetchPromise = null;
|
|
130
|
+
throw error;
|
|
131
|
+
});
|
|
132
|
+
return inflightFetchPromise;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Get the latest version for a major version from hostdb.
|
|
136
|
+
* Uses cached fetchAvailableVersions result to avoid repeated network requests.
|
|
137
|
+
*/
|
|
138
|
+
async function getLatestVersion(major) {
|
|
139
|
+
const versions = await getCachedVersions();
|
|
140
|
+
const majorVersions = versions[major];
|
|
141
|
+
if (majorVersions && majorVersions.length > 0) {
|
|
142
|
+
return majorVersions[0]; // First is latest due to descending sort
|
|
143
|
+
}
|
|
144
|
+
// Fallback to version map
|
|
145
|
+
if (versionMap[major]) {
|
|
146
|
+
return versionMap[major];
|
|
147
|
+
}
|
|
148
|
+
// Generate default version based on grouping strategy
|
|
149
|
+
if (groupingStrategy === 'xy-format') {
|
|
150
|
+
// For X.Y format, add .0 to get X.Y.0
|
|
151
|
+
return `${major}.0`;
|
|
152
|
+
}
|
|
153
|
+
// For single-digit, add .0.0 to get X.0.0
|
|
154
|
+
return `${major}.0.0`;
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
fetchAvailableVersions: getCachedVersions,
|
|
158
|
+
getLatestVersion,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=hostdb-releases-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hostdb-releases-factory.js","sourceRoot":"","sources":["../../core/hostdb-releases-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,oBAAoB,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AA0C1C;;GAEG;AACH,SAAS,sBAAsB,CAC7B,OAAe,EACf,QAA0B;IAE1B,MAAM,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,CAAA;IAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IACzE,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAA4B;IAE5B,MAAM,EACJ,MAAM,EACN,WAAW,EACX,UAAU,EACV,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,GACd,GAAG,MAAM,CAAA;IAEV,gEAAgE;IAChE,MAAM,eAAe,GACnB,MAAM,CAAC,eAAe;QACtB,CAAC,CAAC,OAAe,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAA;IAE1E,sEAAsE;IACtE,IAAI,cAAc,GAAoC,IAAI,CAAA;IAC1D,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,MAAM,UAAU,GAAG,MAAM,CAAA,CAAC,aAAa;IACvC,IAAI,oBAAoB,GAA6C,IAAI,CAAA;IAEzE;;OAEG;IACH,SAAS,oBAAoB;QAC3B,MAAM,OAAO,GAA6B,EAAE,CAAA;QAC5C,KAAK,MAAM,KAAK,IAAI,sBAAsB,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;YACjC,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,UAAU,sBAAsB;QACnC,iEAAiE;QACjE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAA;YAEhD,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,kCAAkC;gBAClC,MAAM,OAAO,GAA6B,EAAE,CAAA;gBAE5C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;oBACtC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;wBACpB,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;oBACrB,CAAC;oBACD,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAC9B,CAAC;gBAED,4CAA4C;gBAC5C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBACzC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBACtD,CAAC;gBAED,OAAO,OAAO,CAAA;YAChB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CACN,mBAAmB,WAAW,uCAAuC,EACrE;gBACE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CACF,CAAA;QACH,CAAC;QAED,2DAA2D;QAC3D,MAAM,SAAS,GAAG,MAAM,aAAa,EAAE,CAAA;QACvC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,MAAM,GAA6B,EAAE,CAAA;YAC3C,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;gBAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;gBACpB,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;gBACpC,CAAC;YACH,CAAC;YACD,2CAA2C;YAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACrD,CAAC;YACD,OAAO,MAAM,CAAA;QACf,CAAC;QAED,4CAA4C;QAC5C,OAAO,oBAAoB,EAAE,CAAA;IAC/B,CAAC;IAED;;;OAGG;IACH,KAAK,UAAU,iBAAiB;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAEtB,gCAAgC;QAChC,IAAI,cAAc,IAAI,GAAG,GAAG,QAAQ,GAAG,UAAU,EAAE,CAAC;YAClD,OAAO,cAAc,CAAA;QACvB,CAAC;QAED,yEAAyE;QACzE,IAAI,oBAAoB,EAAE,CAAC;YACzB,OAAO,oBAAoB,CAAA;QAC7B,CAAC;QAED,4DAA4D;QAC5D,oBAAoB,GAAG,sBAAsB,EAAE;aAC5C,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YACjB,cAAc,GAAG,QAAQ,CAAA;YACzB,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACrB,oBAAoB,GAAG,IAAI,CAAA;YAC3B,OAAO,QAAQ,CAAA;QACjB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,gEAAgE;YAChE,oBAAoB,GAAG,IAAI,CAAA;YAC3B,MAAM,KAAK,CAAA;QACb,CAAC,CAAC,CAAA;QAEJ,OAAO,oBAAoB,CAAA;IAC7B,CAAC;IAED;;;OAGG;IACH,KAAK,UAAU,gBAAgB,CAAC,KAAa;QAC3C,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAA;QAC1C,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;QACrC,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,OAAO,aAAa,CAAC,CAAC,CAAC,CAAA,CAAC,yCAAyC;QACnE,CAAC;QAED,0BAA0B;QAC1B,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,UAAU,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC;QAED,sDAAsD;QACtD,IAAI,gBAAgB,KAAK,WAAW,EAAE,CAAC;YACrC,sCAAsC;YACtC,OAAO,GAAG,KAAK,IAAI,CAAA;QACrB,CAAC;QACD,0CAA0C;QAC1C,OAAO,GAAG,KAAK,MAAM,CAAA;IACvB,CAAC;IAED,OAAO;QACL,sBAAsB,EAAE,iBAAiB;QACzC,gBAAgB;KACjB,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Library environment utilities for dynamically-linked engine binaries.
|
|
3
|
+
*
|
|
4
|
+
* MariaDB, Redis, and Valkey hostdb binaries are linked against Homebrew's
|
|
5
|
+
* OpenSSL at absolute paths (e.g. /opt/homebrew/opt/openssl@3/lib/libssl.3.dylib).
|
|
6
|
+
* On systems without that library, they fail with cryptic dyld errors.
|
|
7
|
+
*
|
|
8
|
+
* This module provides:
|
|
9
|
+
* - getLibraryEnv(): sets DYLD_FALLBACK_LIBRARY_PATH / LD_LIBRARY_PATH so
|
|
10
|
+
* the dynamic linker checks {binPath}/lib first (preparing for when hostdb
|
|
11
|
+
* bundles dylibs alongside binaries).
|
|
12
|
+
* - detectLibraryError(): scans process output for library-loading patterns
|
|
13
|
+
* and returns an actionable error message.
|
|
14
|
+
*/
|
|
15
|
+
import { platform as osPlatform } from 'os';
|
|
16
|
+
import { join } from 'path';
|
|
17
|
+
/**
|
|
18
|
+
* Returns env vars that point the dynamic linker at {binPath}/lib.
|
|
19
|
+
* On macOS: DYLD_FALLBACK_LIBRARY_PATH
|
|
20
|
+
* On Linux: LD_LIBRARY_PATH
|
|
21
|
+
* On Windows: returns undefined (not applicable).
|
|
22
|
+
*
|
|
23
|
+
* Usage: spread into spawn env: `{ ...process.env, ...getLibraryEnv(binPath) }`
|
|
24
|
+
*/
|
|
25
|
+
export function getLibraryEnv(binPath) {
|
|
26
|
+
const plat = osPlatform();
|
|
27
|
+
const libDir = join(binPath, 'lib');
|
|
28
|
+
if (plat === 'darwin') {
|
|
29
|
+
return { DYLD_FALLBACK_LIBRARY_PATH: libDir };
|
|
30
|
+
}
|
|
31
|
+
if (plat === 'linux') {
|
|
32
|
+
return { LD_LIBRARY_PATH: libDir };
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Scans stderr/log output for dynamic library loading errors and returns
|
|
38
|
+
* an actionable message, or null if no library error was detected.
|
|
39
|
+
*/
|
|
40
|
+
export function detectLibraryError(output, engineName) {
|
|
41
|
+
if (!output)
|
|
42
|
+
return null;
|
|
43
|
+
const plat = osPlatform();
|
|
44
|
+
const lower = output.toLowerCase();
|
|
45
|
+
// macOS dyld errors
|
|
46
|
+
if (lower.includes('library not loaded') ||
|
|
47
|
+
lower.includes('dyld:') ||
|
|
48
|
+
lower.includes('dyld[')) {
|
|
49
|
+
const needsOpenssl = lower.includes('libssl') || lower.includes('libcrypto');
|
|
50
|
+
if (needsOpenssl && plat === 'darwin') {
|
|
51
|
+
return (`${engineName} failed to start: missing OpenSSL libraries.\n` +
|
|
52
|
+
`The downloaded binary requires OpenSSL 3 which is not installed.\n` +
|
|
53
|
+
`Fix: brew install openssl@3\n` +
|
|
54
|
+
`Alternatively, re-download binaries after hostdb ships relocatable builds.`);
|
|
55
|
+
}
|
|
56
|
+
return (`${engineName} failed to start: a required dynamic library could not be loaded.\n` +
|
|
57
|
+
`This typically means the hostdb binary was built against libraries not present on this system.\n` +
|
|
58
|
+
(plat === 'darwin'
|
|
59
|
+
? `Try: brew install openssl@3\n`
|
|
60
|
+
: `Try: sudo apt-get install libssl-dev (or the equivalent for your distro)\n`) +
|
|
61
|
+
`See: https://github.com/robertjbass/hostdb/issues`);
|
|
62
|
+
}
|
|
63
|
+
// Linux GLIBC version errors
|
|
64
|
+
if (lower.includes('glibc') || lower.includes('libc.so')) {
|
|
65
|
+
return (`${engineName} failed to start: incompatible system C library (GLIBC).\n` +
|
|
66
|
+
`The downloaded binary requires a newer GLIBC version than is installed.\n` +
|
|
67
|
+
`Options:\n` +
|
|
68
|
+
` - Upgrade your OS to a newer version\n` +
|
|
69
|
+
` - Use Docker: spindb can run inside containers with newer GLIBC\n` +
|
|
70
|
+
`See: https://github.com/robertjbass/hostdb/issues`);
|
|
71
|
+
}
|
|
72
|
+
// Generic shared library errors on Linux
|
|
73
|
+
if (lower.includes('error while loading shared libraries') ||
|
|
74
|
+
lower.includes('cannot open shared object file')) {
|
|
75
|
+
const needsOpenssl = lower.includes('libssl') || lower.includes('libcrypto');
|
|
76
|
+
if (needsOpenssl) {
|
|
77
|
+
return (`${engineName} failed to start: missing OpenSSL libraries.\n` +
|
|
78
|
+
`Fix: sudo apt-get install libssl-dev (Debian/Ubuntu)\n` +
|
|
79
|
+
` sudo dnf install openssl-devel (Fedora/RHEL)\n` +
|
|
80
|
+
`See: https://github.com/robertjbass/hostdb/issues`);
|
|
81
|
+
}
|
|
82
|
+
return (`${engineName} failed to start: a required shared library is missing.\n` +
|
|
83
|
+
`Check the error output above for the specific library name and install it.\n` +
|
|
84
|
+
`See: https://github.com/robertjbass/hostdb/issues`);
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=library-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"library-env.js","sourceRoot":"","sources":["../../core/library-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,IAAI,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAe;IAEf,MAAM,IAAI,GAAG,UAAU,EAAE,CAAA;IACzB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAEnC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,EAAE,CAAA;IAC/C,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,CAAA;IACpC,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,UAAkB;IAElB,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAExB,MAAM,IAAI,GAAG,UAAU,EAAE,CAAA;IACzB,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;IAElC,oBAAoB;IACpB,IACE,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACpC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EACvB,CAAC;QACD,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;QAE5E,IAAI,YAAY,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,OAAO,CACL,GAAG,UAAU,gDAAgD;gBAC7D,oEAAoE;gBACpE,+BAA+B;gBAC/B,4EAA4E,CAC7E,CAAA;QACH,CAAC;QAED,OAAO,CACL,GAAG,UAAU,qEAAqE;YAClF,kGAAkG;YAClG,CAAC,IAAI,KAAK,QAAQ;gBAChB,CAAC,CAAC,+BAA+B;gBACjC,CAAC,CAAC,6EAA6E,CAAC;YAClF,mDAAmD,CACpD,CAAA;IACH,CAAC;IAED,6BAA6B;IAC7B,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,OAAO,CACL,GAAG,UAAU,4DAA4D;YACzE,2EAA2E;YAC3E,YAAY;YACZ,0CAA0C;YAC1C,qEAAqE;YACrE,mDAAmD,CACpD,CAAA;IACH,CAAC;IAED,yCAAyC;IACzC,IACE,KAAK,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QACtD,KAAK,CAAC,QAAQ,CAAC,gCAAgC,CAAC,EAChD,CAAC;QACD,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;QAE5E,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CACL,GAAG,UAAU,gDAAgD;gBAC7D,yDAAyD;gBACzD,uDAAuD;gBACvD,mDAAmD,CACpD,CAAA;QACH,CAAC;QAED,OAAO,CACL,GAAG,UAAU,2DAA2D;YACxE,8EAA8E;YAC9E,mDAAmD,CACpD,CAAA;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { existsSync } from 'fs';
|
|
2
|
+
import { readFile, unlink } from 'fs/promises';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import { platformService } from './platform-service.js';
|
|
5
|
+
import { paths } from '../config/paths.js';
|
|
6
|
+
/** Pinned pgweb version — single source of truth for download URL */
|
|
7
|
+
export const PGWEB_VERSION = '0.17.0';
|
|
8
|
+
/**
|
|
9
|
+
* Check if pgweb is running for a container.
|
|
10
|
+
* Reads pgweb.pid/pgweb.port files and verifies the process is alive.
|
|
11
|
+
* Cleans up stale PID/port files if the process is dead.
|
|
12
|
+
*/
|
|
13
|
+
export async function getPgwebStatus(containerName, engine) {
|
|
14
|
+
const containerDir = paths.getContainerPath(containerName, { engine });
|
|
15
|
+
const pidFile = join(containerDir, 'pgweb.pid');
|
|
16
|
+
const portFile = join(containerDir, 'pgweb.port');
|
|
17
|
+
if (!existsSync(pidFile))
|
|
18
|
+
return { running: false };
|
|
19
|
+
try {
|
|
20
|
+
const pid = parseInt(await readFile(pidFile, 'utf8'), 10);
|
|
21
|
+
if (platformService.isProcessRunning(pid)) {
|
|
22
|
+
const port = parseInt(await readFile(portFile, 'utf8'), 10);
|
|
23
|
+
return { running: true, port, pid };
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// PID file invalid or process dead
|
|
28
|
+
}
|
|
29
|
+
// Clean up stale files
|
|
30
|
+
await unlink(pidFile).catch(() => { });
|
|
31
|
+
await unlink(portFile).catch(() => { });
|
|
32
|
+
return { running: false };
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Stop a running pgweb process for a container (no UI output).
|
|
36
|
+
* Returns true if a process was stopped, false if nothing was running.
|
|
37
|
+
*/
|
|
38
|
+
export async function stopPgweb(containerName, engine) {
|
|
39
|
+
const status = await getPgwebStatus(containerName, engine);
|
|
40
|
+
if (!status.running || !status.pid)
|
|
41
|
+
return false;
|
|
42
|
+
try {
|
|
43
|
+
await platformService.terminateProcess(status.pid, false);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// Already gone
|
|
47
|
+
}
|
|
48
|
+
const containerDir = paths.getContainerPath(containerName, { engine });
|
|
49
|
+
await unlink(join(containerDir, 'pgweb.pid')).catch(() => { });
|
|
50
|
+
await unlink(join(containerDir, 'pgweb.port')).catch(() => { });
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=pgweb-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pgweb-utils.js","sourceRoot":"","sources":["../../core/pgweb-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC,qEAAqE;AACrE,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,CAAA;AAErC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,aAAqB,EACrB,MAAc;IAEd,MAAM,YAAY,GAAG,KAAK,CAAC,gBAAgB,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IACtE,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;IAEjD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAEnD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;QACzD,IAAI,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;YAC3D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA;QACrC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;IAED,uBAAuB;IACvB,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IACrC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IACtC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,aAAqB,EACrB,MAAc;IAEd,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IAEhD,IAAI,CAAC;QACH,MAAM,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,gBAAgB,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IACtE,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC7D,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC9D,OAAO,IAAI,CAAA;AACb,CAAC"}
|