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,289 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClickHouse backup module
|
|
3
|
+
* Supports SQL-based backups using clickhouse client
|
|
4
|
+
*
|
|
5
|
+
* ClickHouse backup formats:
|
|
6
|
+
* - SQL: DDL + INSERT statements (portable, human-readable)
|
|
7
|
+
* - Native: ClickHouse native format (faster, compact)
|
|
8
|
+
*/
|
|
9
|
+
import { spawn } from 'child_process';
|
|
10
|
+
import { stat, mkdir, writeFile } from 'fs/promises';
|
|
11
|
+
import { existsSync, createWriteStream } from 'fs';
|
|
12
|
+
import { dirname } from 'path';
|
|
13
|
+
import { logDebug, logWarning } from '../../core/error-handler.js';
|
|
14
|
+
import { requireClickHousePath, validateClickHouseIdentifier, escapeClickHouseIdentifier, } from './cli-utils.js';
|
|
15
|
+
/**
|
|
16
|
+
* Execute a ClickHouse query and return the result
|
|
17
|
+
*/
|
|
18
|
+
async function execClickHouseQuery(clickhousePath, port, database, query) {
|
|
19
|
+
return new Promise((resolve, reject) => {
|
|
20
|
+
const args = [
|
|
21
|
+
'client',
|
|
22
|
+
'--host',
|
|
23
|
+
'127.0.0.1',
|
|
24
|
+
'--port',
|
|
25
|
+
String(port),
|
|
26
|
+
'--database',
|
|
27
|
+
database,
|
|
28
|
+
'--query',
|
|
29
|
+
query,
|
|
30
|
+
];
|
|
31
|
+
const proc = spawn(clickhousePath, args, {
|
|
32
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
33
|
+
});
|
|
34
|
+
let stdout = '';
|
|
35
|
+
let stderr = '';
|
|
36
|
+
proc.stdout.on('data', (data) => {
|
|
37
|
+
stdout += data.toString();
|
|
38
|
+
});
|
|
39
|
+
proc.stderr.on('data', (data) => {
|
|
40
|
+
stderr += data.toString();
|
|
41
|
+
});
|
|
42
|
+
proc.on('error', reject);
|
|
43
|
+
proc.on('close', (code) => {
|
|
44
|
+
if (code === 0 || code === null) {
|
|
45
|
+
resolve(stdout);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
reject(new Error(stderr || `clickhouse client exited with code ${code}`));
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get list of tables in a database
|
|
55
|
+
*/
|
|
56
|
+
async function getTables(clickhousePath, port, database) {
|
|
57
|
+
// Validate database identifier to prevent SQL injection
|
|
58
|
+
validateClickHouseIdentifier(database, 'database');
|
|
59
|
+
// Escape single quotes for use in string literal (WHERE clause)
|
|
60
|
+
const escapedDbLiteral = database.replace(/'/g, "''");
|
|
61
|
+
const result = await execClickHouseQuery(clickhousePath, port, database, `SELECT name FROM system.tables WHERE database = '${escapedDbLiteral}' ORDER BY name`);
|
|
62
|
+
return result
|
|
63
|
+
.trim()
|
|
64
|
+
.split('\n')
|
|
65
|
+
.filter((t) => t.trim());
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get CREATE TABLE statement for a table
|
|
69
|
+
* Returns portable SQL without database prefix for cross-database restore
|
|
70
|
+
*/
|
|
71
|
+
async function getCreateTableStatement(clickhousePath, port, database, table) {
|
|
72
|
+
// Validate and escape identifiers to prevent SQL injection
|
|
73
|
+
validateClickHouseIdentifier(database, 'database');
|
|
74
|
+
validateClickHouseIdentifier(table, 'table');
|
|
75
|
+
const escapedDb = escapeClickHouseIdentifier(database);
|
|
76
|
+
const escapedTable = escapeClickHouseIdentifier(table);
|
|
77
|
+
// Use TSVRaw format to get unescaped output (newlines as actual newlines, not \n)
|
|
78
|
+
const result = await execClickHouseQuery(clickhousePath, port, database, `SHOW CREATE TABLE ${escapedDb}.${escapedTable} FORMAT TSVRaw`);
|
|
79
|
+
// Strip database prefix from CREATE TABLE statement to make it portable
|
|
80
|
+
// e.g., "CREATE TABLE testdb.test_user" → "CREATE TABLE test_user"
|
|
81
|
+
// e.g., "CREATE TABLE `testdb`.`test_user`" → "CREATE TABLE `test_user`"
|
|
82
|
+
// This allows the backup to be restored to any target database
|
|
83
|
+
const createStmt = result.trim();
|
|
84
|
+
// Escape regex metacharacters in database name for safe interpolation
|
|
85
|
+
const escapedDatabase = database.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
86
|
+
// Match both quoted and unquoted database names: db.table or `db`.table or `db`.`table`
|
|
87
|
+
const dbPrefixPattern = new RegExp(`(CREATE TABLE\\s+)\`?${escapedDatabase}\`?\\.`, 'i');
|
|
88
|
+
return createStmt.replace(dbPrefixPattern, '$1');
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Create a SQL backup (DDL + INSERT statements)
|
|
92
|
+
*/
|
|
93
|
+
async function createSqlBackup(container, outputPath, database) {
|
|
94
|
+
const { port, version } = container;
|
|
95
|
+
const clickhousePath = await requireClickHousePath(version);
|
|
96
|
+
const lines = [];
|
|
97
|
+
lines.push('-- ClickHouse backup generated by SpinDB');
|
|
98
|
+
lines.push(`-- Date: ${new Date().toISOString()}`);
|
|
99
|
+
lines.push(`-- Database: ${database}`);
|
|
100
|
+
lines.push('');
|
|
101
|
+
// Get list of tables
|
|
102
|
+
const tables = await getTables(clickhousePath, port, database);
|
|
103
|
+
logDebug(`Found ${tables.length} tables to backup`);
|
|
104
|
+
for (const table of tables) {
|
|
105
|
+
lines.push(`-- Table: ${table}`);
|
|
106
|
+
lines.push('');
|
|
107
|
+
// Get CREATE TABLE statement
|
|
108
|
+
try {
|
|
109
|
+
const createStmt = await getCreateTableStatement(clickhousePath, port, database, table);
|
|
110
|
+
lines.push(createStmt + ';');
|
|
111
|
+
lines.push('');
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
logWarning(`Could not get CREATE TABLE for ${table}: ${error}`);
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
// Export data using INSERT format
|
|
118
|
+
try {
|
|
119
|
+
// Validate and escape identifiers for SQL injection protection
|
|
120
|
+
// Note: table names from getTables are already validated, but escape for query safety
|
|
121
|
+
validateClickHouseIdentifier(table, 'table');
|
|
122
|
+
const escapedDb = escapeClickHouseIdentifier(database);
|
|
123
|
+
const escapedTable = escapeClickHouseIdentifier(table);
|
|
124
|
+
const data = await execClickHouseQuery(clickhousePath, port, database, `SELECT * FROM ${escapedDb}.${escapedTable} FORMAT SQLInsert`);
|
|
125
|
+
if (data.trim()) {
|
|
126
|
+
// SQLInsert format uses literal "table" as placeholder, replace ALL occurrences with actual table name
|
|
127
|
+
// Use global flag to handle multi-statement output
|
|
128
|
+
const insertData = data
|
|
129
|
+
.trim()
|
|
130
|
+
.replace(/INSERT INTO table \(/gi, `INSERT INTO ${escapedTable} (`);
|
|
131
|
+
lines.push(insertData);
|
|
132
|
+
lines.push('');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
logWarning(`Could not export data for ${table}: ${error}`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Ensure output directory exists
|
|
140
|
+
const outputDir = dirname(outputPath);
|
|
141
|
+
if (!existsSync(outputDir)) {
|
|
142
|
+
await mkdir(outputDir, { recursive: true });
|
|
143
|
+
}
|
|
144
|
+
// Write to file
|
|
145
|
+
const content = lines.join('\n');
|
|
146
|
+
await writeFile(outputPath, content, 'utf-8');
|
|
147
|
+
const stats = await stat(outputPath);
|
|
148
|
+
return {
|
|
149
|
+
path: outputPath,
|
|
150
|
+
format: 'sql',
|
|
151
|
+
size: stats.size,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Create a native format backup (faster, more compact)
|
|
156
|
+
*
|
|
157
|
+
* TODO: Enable native backup format when restore support is implemented.
|
|
158
|
+
* Native format is ~10x faster and more compact than SQL, but requires
|
|
159
|
+
* parsing the binary format for restore. SQL format is currently preferred
|
|
160
|
+
* for portability and ease of restore via clickhouse client --multiquery.
|
|
161
|
+
*
|
|
162
|
+
* ARCHITECTURAL NOTE: The current implementation mixes text markers
|
|
163
|
+
* (-- TABLE:, -- CREATE:, -- DATA:) with binary Native format data in
|
|
164
|
+
* the same stream. Before enabling this feature, refactor to use a
|
|
165
|
+
* structured container format for deterministic parsing during restore:
|
|
166
|
+
* - Tar archive with separate files per table (schema.sql + data.native)
|
|
167
|
+
* - Or length-prefixed binary sections
|
|
168
|
+
* - Or separate metadata JSON file alongside pure binary data
|
|
169
|
+
*
|
|
170
|
+
* To enable: export this function, add 'native' to BACKUP_FORMATS in
|
|
171
|
+
* config/backup-formats.ts, and implement native restore in restore.ts.
|
|
172
|
+
*
|
|
173
|
+
* @internal Kept for future native backup support
|
|
174
|
+
*/
|
|
175
|
+
async function _createNativeBackup(container, outputPath, database) {
|
|
176
|
+
const { port, version } = container;
|
|
177
|
+
const clickhousePath = await requireClickHousePath(version);
|
|
178
|
+
// Ensure output directory exists
|
|
179
|
+
const outputDir = dirname(outputPath);
|
|
180
|
+
if (!existsSync(outputDir)) {
|
|
181
|
+
await mkdir(outputDir, { recursive: true });
|
|
182
|
+
}
|
|
183
|
+
// Get list of tables
|
|
184
|
+
const tables = await getTables(clickhousePath, port, database);
|
|
185
|
+
logDebug(`Found ${tables.length} tables to backup`);
|
|
186
|
+
// Create a combined backup with all tables
|
|
187
|
+
const fileStream = createWriteStream(outputPath);
|
|
188
|
+
// Write header
|
|
189
|
+
const header = `-- ClickHouse native backup\n-- Database: ${database}\n-- Date: ${new Date().toISOString()}\n\n`;
|
|
190
|
+
fileStream.write(header);
|
|
191
|
+
for (const table of tables) {
|
|
192
|
+
// Write table marker
|
|
193
|
+
fileStream.write(`\n-- TABLE: ${table}\n`);
|
|
194
|
+
// Get CREATE TABLE
|
|
195
|
+
try {
|
|
196
|
+
const createStmt = await getCreateTableStatement(clickhousePath, port, database, table);
|
|
197
|
+
fileStream.write(`-- CREATE:\n${createStmt};\n`);
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
logWarning(`Could not get CREATE TABLE for ${table}: ${error}`);
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
// Export data in Native format (binary, fast)
|
|
204
|
+
fileStream.write(`-- DATA (Native format):\n`);
|
|
205
|
+
// Validate and escape identifiers for SQL injection protection
|
|
206
|
+
validateClickHouseIdentifier(table, 'table');
|
|
207
|
+
const escapedDb = escapeClickHouseIdentifier(database);
|
|
208
|
+
const escapedTable = escapeClickHouseIdentifier(table);
|
|
209
|
+
await new Promise((resolve, reject) => {
|
|
210
|
+
const args = [
|
|
211
|
+
'client',
|
|
212
|
+
'--host',
|
|
213
|
+
'127.0.0.1',
|
|
214
|
+
'--port',
|
|
215
|
+
String(port),
|
|
216
|
+
'--database',
|
|
217
|
+
database,
|
|
218
|
+
'--query',
|
|
219
|
+
`SELECT * FROM ${escapedDb}.${escapedTable} FORMAT Native`,
|
|
220
|
+
];
|
|
221
|
+
const proc = spawn(clickhousePath, args, {
|
|
222
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
223
|
+
});
|
|
224
|
+
let stderr = '';
|
|
225
|
+
proc.stdout.pipe(fileStream, { end: false });
|
|
226
|
+
proc.stderr.on('data', (data) => {
|
|
227
|
+
stderr += data.toString();
|
|
228
|
+
});
|
|
229
|
+
proc.on('error', reject);
|
|
230
|
+
proc.on('close', (code) => {
|
|
231
|
+
if (code === 0 || code === null) {
|
|
232
|
+
resolve();
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
reject(new Error(stderr || `clickhouse client exited with code ${code}`));
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
});
|
|
239
|
+
fileStream.write('\n-- END TABLE\n');
|
|
240
|
+
}
|
|
241
|
+
// Close file
|
|
242
|
+
await new Promise((resolve, reject) => {
|
|
243
|
+
fileStream.end((err) => {
|
|
244
|
+
if (err)
|
|
245
|
+
reject(err);
|
|
246
|
+
else
|
|
247
|
+
resolve();
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
const stats = await stat(outputPath);
|
|
251
|
+
return {
|
|
252
|
+
path: outputPath,
|
|
253
|
+
format: 'native',
|
|
254
|
+
size: stats.size,
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Create a backup
|
|
259
|
+
*
|
|
260
|
+
* Currently only supports SQL format (DDL + INSERT statements).
|
|
261
|
+
* Native format support is planned but not yet implemented for restore.
|
|
262
|
+
* See _createNativeBackup for the future native implementation.
|
|
263
|
+
*
|
|
264
|
+
* @param container - Container configuration
|
|
265
|
+
* @param outputPath - Path to write backup file
|
|
266
|
+
* @param options - Backup options (BackupOptions type)
|
|
267
|
+
* @param options.format - Reserved for future use. Currently ignored; all backups
|
|
268
|
+
* use SQL format. When native format support is added, 'dump' will use
|
|
269
|
+
* _createNativeBackup for faster, more compact backups.
|
|
270
|
+
*/
|
|
271
|
+
export async function createBackup(container, outputPath, options) {
|
|
272
|
+
const database = options.database || container.database || 'default';
|
|
273
|
+
// Log when a non-SQL format is requested but not yet supported
|
|
274
|
+
if (options.format && options.format !== 'sql') {
|
|
275
|
+
logDebug(`ClickHouse backup: format '${options.format}' requested but not yet supported. ` +
|
|
276
|
+
`Using SQL format instead. See _createNativeBackup for future native support.`);
|
|
277
|
+
}
|
|
278
|
+
// Currently only SQL format is supported
|
|
279
|
+
// Native format (_createNativeBackup) will be enabled when restore support is added
|
|
280
|
+
return createSqlBackup(container, outputPath, database);
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Create a backup for cloning purposes
|
|
284
|
+
* Uses SQL format for reliability
|
|
285
|
+
*/
|
|
286
|
+
export async function createCloneBackup(container, outputPath) {
|
|
287
|
+
return createSqlBackup(container, outputPath, container.database || 'default');
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=backup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../../../engines/clickhouse/backup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClickHouse Binary Manager
|
|
3
|
+
*
|
|
4
|
+
* Handles downloading, extracting, and managing ClickHouse binaries from hostdb.
|
|
5
|
+
* ClickHouse uses a single unified binary that handles server, client, and local modes.
|
|
6
|
+
*
|
|
7
|
+
* Extends BaseServerBinaryManager with ClickHouse-specific overrides:
|
|
8
|
+
* - No Windows support (throws on Windows extraction)
|
|
9
|
+
* - YY.MM version matching in verify()
|
|
10
|
+
* - Flat archive handling (moves clickhouse binary to bin/)
|
|
11
|
+
*/
|
|
12
|
+
import { existsSync } from 'fs';
|
|
13
|
+
import { mkdir, readdir } from 'fs/promises';
|
|
14
|
+
import { join } from 'path';
|
|
15
|
+
import { exec } from 'child_process';
|
|
16
|
+
import { promisify } from 'util';
|
|
17
|
+
import { paths } from '../../config/paths.js';
|
|
18
|
+
import { getBinaryUrl } from './binary-urls.js';
|
|
19
|
+
import { normalizeVersion } from './version-maps.js';
|
|
20
|
+
import { logDebug } from '../../core/error-handler.js';
|
|
21
|
+
import { moveEntry } from '../../core/fs-error-utils.js';
|
|
22
|
+
import { BaseServerBinaryManager, } from '../../core/base-server-binary-manager.js';
|
|
23
|
+
import { Engine, } from '../../types/index.js';
|
|
24
|
+
const execAsync = promisify(exec);
|
|
25
|
+
class ClickHouseBinaryManager extends BaseServerBinaryManager {
|
|
26
|
+
config = {
|
|
27
|
+
engine: Engine.ClickHouse,
|
|
28
|
+
engineName: 'clickhouse',
|
|
29
|
+
displayName: 'ClickHouse',
|
|
30
|
+
serverBinaryNames: ['clickhouse'],
|
|
31
|
+
};
|
|
32
|
+
getBinaryUrlFromModule(version, platform, arch) {
|
|
33
|
+
return getBinaryUrl(version, platform, arch);
|
|
34
|
+
}
|
|
35
|
+
normalizeVersionFromModule(version) {
|
|
36
|
+
return normalizeVersion(version);
|
|
37
|
+
}
|
|
38
|
+
parseVersionFromOutput(stdout) {
|
|
39
|
+
// Extract version from output like "ClickHouse client version 25.12.3.21"
|
|
40
|
+
const match = stdout.match(/(\d+\.\d+\.\d+\.\d+)/);
|
|
41
|
+
return match?.[1] ?? null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* ClickHouse does not have Windows binaries on hostdb.
|
|
45
|
+
* Override to throw a clear error.
|
|
46
|
+
*/
|
|
47
|
+
async extractWindowsBinaries(_zipFile, _binPath, _tempDir, _onProgress) {
|
|
48
|
+
throw new Error('ClickHouse binaries are not available for Windows. ' +
|
|
49
|
+
'ClickHouse is only supported on macOS and Linux.');
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Override to handle ClickHouse's archive structure.
|
|
53
|
+
* ClickHouse archives may have a flat structure where the binary is at the root,
|
|
54
|
+
* not in a bin/ subdirectory. This moves the clickhouse binary to bin/.
|
|
55
|
+
*/
|
|
56
|
+
async moveExtractedEntries(extractDir, binPath) {
|
|
57
|
+
const entries = await readdir(extractDir, { withFileTypes: true });
|
|
58
|
+
// Check for a clickhouse subdirectory
|
|
59
|
+
const clickhouseDir = entries.find((e) => e.isDirectory() &&
|
|
60
|
+
(e.name === 'clickhouse' || e.name.startsWith('clickhouse-')));
|
|
61
|
+
const sourceDir = clickhouseDir
|
|
62
|
+
? join(extractDir, clickhouseDir.name)
|
|
63
|
+
: extractDir;
|
|
64
|
+
const sourceEntries = clickhouseDir
|
|
65
|
+
? await readdir(sourceDir, { withFileTypes: true })
|
|
66
|
+
: entries;
|
|
67
|
+
// Check if source has a bin/ subdirectory
|
|
68
|
+
const hasBinDir = sourceEntries.some((e) => e.isDirectory() && e.name === 'bin');
|
|
69
|
+
if (hasBinDir) {
|
|
70
|
+
// Standard structure: move all entries as-is (preserves bin/ subdirectory)
|
|
71
|
+
for (const entry of sourceEntries) {
|
|
72
|
+
const sourcePath = join(sourceDir, entry.name);
|
|
73
|
+
const destPath = join(binPath, entry.name);
|
|
74
|
+
await moveEntry(sourcePath, destPath);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
// Flat structure: create bin/ and move binaries there
|
|
79
|
+
const destBinDir = join(binPath, 'bin');
|
|
80
|
+
await mkdir(destBinDir, { recursive: true });
|
|
81
|
+
for (const entry of sourceEntries) {
|
|
82
|
+
const sourcePath = join(sourceDir, entry.name);
|
|
83
|
+
// Check if it's an executable (no extension on Unix, starts with 'clickhouse')
|
|
84
|
+
const isExecutable = entry.isFile() &&
|
|
85
|
+
!entry.name.includes('.') &&
|
|
86
|
+
entry.name.startsWith('clickhouse');
|
|
87
|
+
const destPath = isExecutable
|
|
88
|
+
? join(destBinDir, entry.name)
|
|
89
|
+
: join(binPath, entry.name);
|
|
90
|
+
await moveEntry(sourcePath, destPath);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Override verification for ClickHouse's YY.MM version format.
|
|
96
|
+
* ClickHouse uses `clickhouse client --version` and has 4-part versions (YY.MM.patch.build).
|
|
97
|
+
*/
|
|
98
|
+
async verify(version, platform, arch) {
|
|
99
|
+
const fullVersion = this.getFullVersion(version);
|
|
100
|
+
const binPath = paths.getBinaryPath({
|
|
101
|
+
engine: this.config.engineName,
|
|
102
|
+
version: fullVersion,
|
|
103
|
+
platform,
|
|
104
|
+
arch,
|
|
105
|
+
});
|
|
106
|
+
const clickhousePath = join(binPath, 'bin', 'clickhouse');
|
|
107
|
+
if (!existsSync(clickhousePath)) {
|
|
108
|
+
throw new Error(`ClickHouse binary not found at ${binPath}/bin/`);
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
const { stdout, stderr } = await execAsync(`"${clickhousePath}" client --version`);
|
|
112
|
+
// Log stderr if present (may contain benign warnings about config, etc.)
|
|
113
|
+
if (stderr && stderr.trim()) {
|
|
114
|
+
logDebug(`clickhouse client stderr during version check: ${stderr.trim()}`);
|
|
115
|
+
}
|
|
116
|
+
const reportedVersion = this.parseVersionFromOutput(stdout);
|
|
117
|
+
if (!reportedVersion) {
|
|
118
|
+
throw new Error(`Could not parse version from: ${stdout.trim()}`);
|
|
119
|
+
}
|
|
120
|
+
// Check if major versions match (YY.MM format)
|
|
121
|
+
const expectedMajor = version.split('.').slice(0, 2).join('.');
|
|
122
|
+
const reportedMajor = reportedVersion.split('.').slice(0, 2).join('.');
|
|
123
|
+
if (expectedMajor === reportedMajor) {
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
// Check if full versions match
|
|
127
|
+
if (reportedVersion === fullVersion) {
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
throw new Error(`Version mismatch: expected ${version}, got ${reportedVersion}`);
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
const err = error;
|
|
134
|
+
// Include stderr and exit code in error message for better debugging
|
|
135
|
+
const details = [err.message];
|
|
136
|
+
if (err.stderr)
|
|
137
|
+
details.push(`stderr: ${err.stderr.trim()}`);
|
|
138
|
+
if (err.code !== undefined)
|
|
139
|
+
details.push(`exit code: ${err.code}`);
|
|
140
|
+
throw new Error(`Failed to verify ClickHouse binaries: ${details.join(', ')}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
export const clickhouseBinaryManager = new ClickHouseBinaryManager();
|
|
145
|
+
//# sourceMappingURL=binary-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary-manager.js","sourceRoot":"","sources":["../../../engines/clickhouse/binary-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { CLICKHOUSE_VERSION_MAP } from './version-maps.js';
|
|
2
|
+
import { buildHostdbUrl } from '../../core/hostdb-client.js';
|
|
3
|
+
import { logDebug } from '../../core/error-handler.js';
|
|
4
|
+
import { Engine } from '../../types/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Supported platform identifiers for hostdb downloads.
|
|
7
|
+
* Note: ClickHouse on hostdb doesn't support Windows currently.
|
|
8
|
+
*/
|
|
9
|
+
const SUPPORTED_PLATFORMS = new Set([
|
|
10
|
+
'darwin-arm64',
|
|
11
|
+
'darwin-x64',
|
|
12
|
+
'linux-arm64',
|
|
13
|
+
'linux-x64',
|
|
14
|
+
]);
|
|
15
|
+
/**
|
|
16
|
+
* Get the hostdb platform identifier
|
|
17
|
+
*
|
|
18
|
+
* hostdb uses standard platform naming that matches Node.js identifiers directly.
|
|
19
|
+
* This function validates the platform/arch combination is supported.
|
|
20
|
+
*
|
|
21
|
+
* @param platform - Node.js platform (e.g., 'darwin', 'linux', 'win32')
|
|
22
|
+
* @param arch - Node.js architecture (e.g., 'arm64', 'x64')
|
|
23
|
+
* @returns hostdb platform identifier or null if unsupported
|
|
24
|
+
*/
|
|
25
|
+
export function getHostdbPlatform(platform, arch) {
|
|
26
|
+
const key = `${platform}-${arch}`;
|
|
27
|
+
return SUPPORTED_PLATFORMS.has(key) ? key : null;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Build the download URL for ClickHouse binaries from hostdb
|
|
31
|
+
*
|
|
32
|
+
* Format: https://registry.layerbase.host/clickhouse-{version}/clickhouse-{version}-{platform}-{arch}.tar.gz
|
|
33
|
+
*
|
|
34
|
+
* @param version - ClickHouse version (e.g., '25.12', '25.12.3.21')
|
|
35
|
+
* @param platform - Platform identifier (e.g., 'darwin', 'linux')
|
|
36
|
+
* @param arch - Architecture identifier (e.g., 'arm64', 'x64')
|
|
37
|
+
* @returns Download URL for the binary
|
|
38
|
+
*/
|
|
39
|
+
export function getBinaryUrl(version, platform, arch) {
|
|
40
|
+
const platformKey = `${platform}-${arch}`;
|
|
41
|
+
const hostdbPlatform = getHostdbPlatform(platform, arch);
|
|
42
|
+
if (!hostdbPlatform) {
|
|
43
|
+
const supported = Array.from(SUPPORTED_PLATFORMS).join(', ');
|
|
44
|
+
throw new Error(`Unsupported platform: ${platformKey}. Supported platforms: ${supported}`);
|
|
45
|
+
}
|
|
46
|
+
// Normalize version (handles major version lookup)
|
|
47
|
+
const fullVersion = normalizeVersion(version, CLICKHOUSE_VERSION_MAP);
|
|
48
|
+
// ClickHouse on hostdb uses tar.gz for all platforms (no Windows support)
|
|
49
|
+
return buildHostdbUrl(Engine.ClickHouse, {
|
|
50
|
+
version: fullVersion,
|
|
51
|
+
hostdbPlatform,
|
|
52
|
+
extension: 'tar.gz',
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Normalize version string to full version format
|
|
57
|
+
*
|
|
58
|
+
* @param version - Version string (e.g., '25.12', '25.12.3', '25.12.3.21')
|
|
59
|
+
* @param versionMap - Optional version map for version lookup
|
|
60
|
+
* @returns Normalized version (e.g., '25.12.3.21')
|
|
61
|
+
*/
|
|
62
|
+
function normalizeVersion(version, versionMap = CLICKHOUSE_VERSION_MAP) {
|
|
63
|
+
// Check if it's an exact key in the map
|
|
64
|
+
if (versionMap[version]) {
|
|
65
|
+
return versionMap[version];
|
|
66
|
+
}
|
|
67
|
+
const parts = version.split('.');
|
|
68
|
+
// If it's already a full version (4 parts), return as-is
|
|
69
|
+
if (parts.length === 4) {
|
|
70
|
+
return version;
|
|
71
|
+
}
|
|
72
|
+
// For partial versions, try to find a match
|
|
73
|
+
if (parts.length === 3) {
|
|
74
|
+
// Try YY.MM.X format
|
|
75
|
+
const threePart = `${parts[0]}.${parts[1]}.${parts[2]}`;
|
|
76
|
+
if (versionMap[threePart]) {
|
|
77
|
+
return versionMap[threePart];
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (parts.length === 2) {
|
|
81
|
+
// Try YY.MM format
|
|
82
|
+
const twoPart = `${parts[0]}.${parts[1]}`;
|
|
83
|
+
if (versionMap[twoPart]) {
|
|
84
|
+
return versionMap[twoPart];
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Unknown version format - log and return as-is
|
|
88
|
+
logDebug(`ClickHouse version '${version}' not in version map, may not be available in hostdb`);
|
|
89
|
+
return version;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get the full version string for a version
|
|
93
|
+
*
|
|
94
|
+
* Supports partial version lookups (e.g., '25.12' -> '25.12.3.21')
|
|
95
|
+
* by delegating to normalizeVersion for consistent behavior.
|
|
96
|
+
*
|
|
97
|
+
* @param version - Version (e.g., '25.12', '25.12.3.21')
|
|
98
|
+
* @returns Full version string (e.g., '25.12.3.21') or null if not in version map
|
|
99
|
+
*/
|
|
100
|
+
//# sourceMappingURL=binary-urls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary-urls.js","sourceRoot":"","sources":["../../../engines/clickhouse/binary-urls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,MAAM,EAA4B,MAAM,aAAa,CAAA;AAE9D;;;GAGG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,cAAc;IACd,YAAY;IACZ,aAAa;IACb,WAAW;CACZ,CAAC,CAAA;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAkB,EAClB,IAAU;IAEV,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAA;IACjC,OAAO,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA;AAClD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAe,EACf,QAAkB,EAClB,IAAU;IAEV,MAAM,WAAW,GAAG,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAA;IACzC,MAAM,cAAc,GAAG,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IACxD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5D,MAAM,IAAI,KAAK,CACb,yBAAyB,WAAW,0BAA0B,SAAS,EAAE,CAC1E,CAAA;IACH,CAAC;IAED,mDAAmD;IACnD,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAA;IAErE,0EAA0E;IAC1E,OAAO,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE;QACvC,OAAO,EAAE,WAAW;QACpB,cAAc;QACd,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CACvB,OAAe,EACf,aAAqC,sBAAsB;IAE3D,wCAAwC;IACxC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,UAAU,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAEhC,yDAAyD;IACzD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,4CAA4C;IAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,qBAAqB;QACrB,MAAM,SAAS,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QACvD,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,OAAO,UAAU,CAAC,SAAS,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,mBAAmB;QACnB,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QACzC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,OAAO,UAAU,CAAC,OAAO,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,QAAQ,CACN,uBAAuB,OAAO,sDAAsD,CACrF,CAAA;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;;;;GAQG"}
|