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
package/engines/mysql/restore.ts
DELETED
|
@@ -1,500 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MySQL/MariaDB Backup Detection and Restore
|
|
3
|
-
*
|
|
4
|
-
* Handles detecting backup formats and restoring MySQL dumps.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { spawn, type SpawnOptions } from 'child_process'
|
|
8
|
-
import { createReadStream, existsSync } from 'fs'
|
|
9
|
-
import { open } from 'fs/promises'
|
|
10
|
-
import { join } from 'path'
|
|
11
|
-
import { createGunzip } from 'zlib'
|
|
12
|
-
import { validateRestoreCompatibility } from './version-validator'
|
|
13
|
-
import { getEngineDefaults } from '../../config/defaults'
|
|
14
|
-
import { configManager } from '../../core/config-manager'
|
|
15
|
-
import { platformService } from '../../core/platform-service'
|
|
16
|
-
import { paths } from '../../config/paths'
|
|
17
|
-
import { normalizeVersion } from './version-maps'
|
|
18
|
-
import { logDebug, SpinDBError, ErrorCodes } from '../../core/error-handler'
|
|
19
|
-
import type { BackupFormat, RestoreResult } from '../../types'
|
|
20
|
-
|
|
21
|
-
const engineDef = getEngineDefaults('mysql')
|
|
22
|
-
|
|
23
|
-
// =============================================================================
|
|
24
|
-
// Backup Format Detection
|
|
25
|
-
// =============================================================================
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Detect the format of a MySQL backup file
|
|
29
|
-
*
|
|
30
|
-
* MySQL primarily uses SQL dumps (unlike PostgreSQL which has multiple formats).
|
|
31
|
-
* We detect:
|
|
32
|
-
* - MySQL SQL dump (mysqldump output)
|
|
33
|
-
* - MariaDB SQL dump
|
|
34
|
-
* - PostgreSQL dumps (to provide helpful error)
|
|
35
|
-
* - Generic SQL files
|
|
36
|
-
* - Compressed files (gzip)
|
|
37
|
-
*/
|
|
38
|
-
export async function detectBackupFormat(
|
|
39
|
-
filePath: string,
|
|
40
|
-
): Promise<BackupFormat> {
|
|
41
|
-
const buffer = Buffer.alloc(128)
|
|
42
|
-
const file = await open(filePath, 'r')
|
|
43
|
-
await file.read(buffer, 0, 128, 0)
|
|
44
|
-
await file.close()
|
|
45
|
-
|
|
46
|
-
const header = buffer.toString('utf8')
|
|
47
|
-
|
|
48
|
-
// Check for PostgreSQL custom format (PGDMP magic bytes)
|
|
49
|
-
if (buffer.toString('ascii', 0, 5) === 'PGDMP') {
|
|
50
|
-
return {
|
|
51
|
-
format: 'postgresql_custom',
|
|
52
|
-
description: 'PostgreSQL custom format dump (incompatible with MySQL)',
|
|
53
|
-
restoreCommand: 'pg_restore',
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// Check for PostgreSQL SQL dump markers
|
|
58
|
-
if (
|
|
59
|
-
header.includes('-- PostgreSQL database dump') ||
|
|
60
|
-
header.includes('pg_dump') ||
|
|
61
|
-
header.includes('Dumped from database version')
|
|
62
|
-
) {
|
|
63
|
-
return {
|
|
64
|
-
format: 'postgresql_sql',
|
|
65
|
-
description: 'PostgreSQL SQL dump (incompatible with MySQL)',
|
|
66
|
-
restoreCommand: 'psql',
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// Check for gzip compression
|
|
71
|
-
if (buffer[0] === 0x1f && buffer[1] === 0x8b) {
|
|
72
|
-
return {
|
|
73
|
-
format: 'compressed',
|
|
74
|
-
description: 'Gzip compressed SQL dump',
|
|
75
|
-
restoreCommand: 'mysql',
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// Check for MySQL dump markers
|
|
80
|
-
if (header.includes('-- MySQL dump')) {
|
|
81
|
-
return {
|
|
82
|
-
format: 'sql',
|
|
83
|
-
description: 'MySQL SQL dump (mysqldump)',
|
|
84
|
-
restoreCommand: 'mysql',
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
// Check for MariaDB dump markers
|
|
89
|
-
if (header.includes('-- MariaDB dump')) {
|
|
90
|
-
return {
|
|
91
|
-
format: 'sql',
|
|
92
|
-
description: 'MariaDB SQL dump (mysqldump)',
|
|
93
|
-
restoreCommand: 'mysql',
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// Check if it looks like SQL (starts with common SQL statements)
|
|
98
|
-
const textStart = header.toLowerCase()
|
|
99
|
-
if (
|
|
100
|
-
textStart.startsWith('--') ||
|
|
101
|
-
textStart.startsWith('/*') ||
|
|
102
|
-
textStart.startsWith('set ') ||
|
|
103
|
-
textStart.startsWith('create') ||
|
|
104
|
-
textStart.startsWith('drop') ||
|
|
105
|
-
textStart.startsWith('begin') ||
|
|
106
|
-
textStart.startsWith('use ')
|
|
107
|
-
) {
|
|
108
|
-
return {
|
|
109
|
-
format: 'sql',
|
|
110
|
-
description: 'SQL file',
|
|
111
|
-
restoreCommand: 'mysql',
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// Default to SQL format
|
|
116
|
-
return {
|
|
117
|
-
format: 'unknown',
|
|
118
|
-
description: 'Unknown format - will attempt as SQL',
|
|
119
|
-
restoreCommand: 'mysql',
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// Check if the backup file is from the wrong engine and throw helpful error
|
|
124
|
-
export function assertCompatibleFormat(format: BackupFormat): void {
|
|
125
|
-
if (
|
|
126
|
-
format.format === 'postgresql_custom' ||
|
|
127
|
-
format.format === 'postgresql_sql'
|
|
128
|
-
) {
|
|
129
|
-
throw new SpinDBError(
|
|
130
|
-
ErrorCodes.WRONG_ENGINE_DUMP,
|
|
131
|
-
`This appears to be a PostgreSQL dump file, but you're trying to restore it to MySQL.`,
|
|
132
|
-
'fatal',
|
|
133
|
-
`Create a PostgreSQL container instead:\n spindb create mydb --engine postgresql --from <dump-file>`,
|
|
134
|
-
{
|
|
135
|
-
detectedFormat: format.format,
|
|
136
|
-
expectedEngine: 'mysql',
|
|
137
|
-
detectedEngine: 'postgresql',
|
|
138
|
-
},
|
|
139
|
-
)
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
// =============================================================================
|
|
144
|
-
// Restore Options
|
|
145
|
-
// =============================================================================
|
|
146
|
-
|
|
147
|
-
export type RestoreOptions = {
|
|
148
|
-
port: number
|
|
149
|
-
database: string
|
|
150
|
-
user?: string
|
|
151
|
-
createDatabase?: boolean
|
|
152
|
-
validateVersion?: boolean
|
|
153
|
-
binPath?: string // Optional path to MySQL binaries directory
|
|
154
|
-
containerVersion?: string // Container's MySQL version for version-matched lookup
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
// =============================================================================
|
|
158
|
-
// Restore Functions
|
|
159
|
-
// =============================================================================
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Get the mysql client path for a specific MySQL version.
|
|
163
|
-
*
|
|
164
|
-
* Prioritizes SpinDB-managed binaries that match the container's version,
|
|
165
|
-
* falling back to system mysql only if no matching version is found.
|
|
166
|
-
*
|
|
167
|
-
* Lookup order:
|
|
168
|
-
* 1. binPath/bin/mysql (if explicitly provided)
|
|
169
|
-
* 2. SpinDB-managed mysql matching the container version
|
|
170
|
-
* 3. SpinDB-managed mysql matching the major version
|
|
171
|
-
* 4. Config manager cached path
|
|
172
|
-
* 5. System PATH
|
|
173
|
-
*
|
|
174
|
-
* @param binPath - Optional explicit path to MySQL binary directory
|
|
175
|
-
* @param containerVersion - Container's MySQL version for version-matched lookup
|
|
176
|
-
*/
|
|
177
|
-
async function getMysqlClientPath(
|
|
178
|
-
binPath?: string,
|
|
179
|
-
containerVersion?: string,
|
|
180
|
-
): Promise<string> {
|
|
181
|
-
const ext = platformService.getExecutableExtension()
|
|
182
|
-
|
|
183
|
-
// First check if binPath is provided and has mysql client
|
|
184
|
-
// hostdb packages MySQL binaries in a bin/ subdirectory
|
|
185
|
-
if (binPath) {
|
|
186
|
-
const mysqlPath = join(binPath, 'bin', `mysql${ext}`)
|
|
187
|
-
if (existsSync(mysqlPath)) {
|
|
188
|
-
return mysqlPath
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
// Try version-matched SpinDB binary if containerVersion is provided
|
|
193
|
-
if (containerVersion) {
|
|
194
|
-
const fullVersion = normalizeVersion(containerVersion)
|
|
195
|
-
const platformInfo = platformService.getPlatformInfo()
|
|
196
|
-
|
|
197
|
-
// Try exact version match
|
|
198
|
-
const versionedBinPath = paths.getBinaryPath({
|
|
199
|
-
engine: 'mysql',
|
|
200
|
-
version: fullVersion,
|
|
201
|
-
platform: platformInfo.platform,
|
|
202
|
-
arch: platformInfo.arch,
|
|
203
|
-
})
|
|
204
|
-
|
|
205
|
-
const versionedMysql = join(versionedBinPath, 'bin', `mysql${ext}`)
|
|
206
|
-
if (existsSync(versionedMysql)) {
|
|
207
|
-
return versionedMysql
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
// Try major version match
|
|
211
|
-
const majorVersion = containerVersion.split('.')[0]
|
|
212
|
-
const installed = paths.findInstalledBinaryForMajor(
|
|
213
|
-
'mysql',
|
|
214
|
-
majorVersion,
|
|
215
|
-
platformInfo.platform,
|
|
216
|
-
platformInfo.arch,
|
|
217
|
-
)
|
|
218
|
-
|
|
219
|
-
if (installed) {
|
|
220
|
-
const installedMysql = join(installed.path, 'bin', `mysql${ext}`)
|
|
221
|
-
if (existsSync(installedMysql)) {
|
|
222
|
-
return installedMysql
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
// Fall back to config manager (verify file exists)
|
|
228
|
-
const configPath = await configManager.getBinaryPath('mysql')
|
|
229
|
-
if (configPath && existsSync(configPath)) {
|
|
230
|
-
return configPath
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
// Fall back to system PATH
|
|
234
|
-
const systemPath = await platformService.findToolPath('mysql')
|
|
235
|
-
if (systemPath) {
|
|
236
|
-
return systemPath
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
throw new Error(
|
|
240
|
-
'mysql client not found. Ensure MySQL binaries are downloaded:\n' +
|
|
241
|
-
' spindb engines download mysql',
|
|
242
|
-
)
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
// Compatibility SQL to handle large row sizes and other edge cases
|
|
246
|
-
// - innodb_default_row_format=DYNAMIC: Store long columns off-page to avoid row size limits
|
|
247
|
-
// - innodb_strict_mode=OFF: Allow tables that might exceed row size limits in strict mode
|
|
248
|
-
// - foreign_key_checks=0: Defer FK checks until after all tables are created
|
|
249
|
-
// - unique_checks=0: Speed up bulk inserts
|
|
250
|
-
const COMPAT_INIT_SQL = [
|
|
251
|
-
"SET GLOBAL innodb_default_row_format='dynamic';",
|
|
252
|
-
'SET SESSION innodb_strict_mode=OFF;',
|
|
253
|
-
"SET SESSION sql_mode='NO_ENGINE_SUBSTITUTION';",
|
|
254
|
-
'SET SESSION foreign_key_checks=0;',
|
|
255
|
-
'SET SESSION unique_checks=0;',
|
|
256
|
-
'',
|
|
257
|
-
].join('\n')
|
|
258
|
-
|
|
259
|
-
/**
|
|
260
|
-
* Internal restore function with optional compatibility mode
|
|
261
|
-
*/
|
|
262
|
-
function doRestore(
|
|
263
|
-
backupPath: string,
|
|
264
|
-
mysql: string,
|
|
265
|
-
port: number,
|
|
266
|
-
database: string,
|
|
267
|
-
user: string,
|
|
268
|
-
format: BackupFormat,
|
|
269
|
-
withCompatSettings: boolean,
|
|
270
|
-
): Promise<RestoreResult & { rawStderr?: string }> {
|
|
271
|
-
const spawnOptions: SpawnOptions = {
|
|
272
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
return new Promise((resolve, reject) => {
|
|
276
|
-
const args = ['-h', '127.0.0.1', '-P', String(port), '-u', user, database]
|
|
277
|
-
|
|
278
|
-
logDebug('Restoring backup with mysql', {
|
|
279
|
-
mysql,
|
|
280
|
-
args,
|
|
281
|
-
withCompatSettings,
|
|
282
|
-
})
|
|
283
|
-
|
|
284
|
-
const proc = spawn(mysql, args, spawnOptions)
|
|
285
|
-
|
|
286
|
-
// Track whether we've already settled the promise to avoid duplicate rejections
|
|
287
|
-
let settled = false
|
|
288
|
-
const fileStream = createReadStream(backupPath)
|
|
289
|
-
|
|
290
|
-
const rejectOnce = (err: Error) => {
|
|
291
|
-
if (settled) return
|
|
292
|
-
settled = true
|
|
293
|
-
fileStream.destroy()
|
|
294
|
-
proc.stdin?.end()
|
|
295
|
-
reject(err)
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
// Handle file read errors
|
|
299
|
-
fileStream.on('error', (err) => {
|
|
300
|
-
rejectOnce(new Error(`Failed to read backup file: ${err.message}`))
|
|
301
|
-
})
|
|
302
|
-
|
|
303
|
-
if (!proc.stdin) {
|
|
304
|
-
rejectOnce(
|
|
305
|
-
new Error(
|
|
306
|
-
'MySQL process stdin is not available, cannot restore backup',
|
|
307
|
-
),
|
|
308
|
-
)
|
|
309
|
-
return
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
// Handle EPIPE errors on stdin - this happens when mysql exits due to SQL errors
|
|
313
|
-
// while we're still piping data. The actual error will be in stderr.
|
|
314
|
-
proc.stdin.on('error', (err) => {
|
|
315
|
-
// EPIPE is expected when the process exits early - don't reject here,
|
|
316
|
-
// let the 'close' event handle it with the actual error from stderr
|
|
317
|
-
if ((err as NodeJS.ErrnoException).code !== 'EPIPE') {
|
|
318
|
-
rejectOnce(
|
|
319
|
-
new Error(`Failed to write to MySQL process: ${err.message}`),
|
|
320
|
-
)
|
|
321
|
-
}
|
|
322
|
-
})
|
|
323
|
-
|
|
324
|
-
// Prepend compatibility settings if requested
|
|
325
|
-
if (withCompatSettings) {
|
|
326
|
-
proc.stdin.write(COMPAT_INIT_SQL)
|
|
327
|
-
logDebug('Prepended compatibility settings to restore')
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
if (format.format === 'compressed') {
|
|
331
|
-
// Decompress gzipped file before piping to mysql
|
|
332
|
-
const gunzip = createGunzip()
|
|
333
|
-
fileStream.pipe(gunzip).pipe(proc.stdin)
|
|
334
|
-
|
|
335
|
-
// Handle gunzip errors
|
|
336
|
-
gunzip.on('error', (err) => {
|
|
337
|
-
fileStream.unpipe(gunzip)
|
|
338
|
-
gunzip.unpipe(proc.stdin!)
|
|
339
|
-
rejectOnce(
|
|
340
|
-
new Error(`Failed to decompress backup file: ${err.message}`),
|
|
341
|
-
)
|
|
342
|
-
})
|
|
343
|
-
} else {
|
|
344
|
-
fileStream.pipe(proc.stdin)
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
let stdout = ''
|
|
348
|
-
let stderr = ''
|
|
349
|
-
|
|
350
|
-
proc.stdout?.on('data', (data: Buffer) => {
|
|
351
|
-
stdout += data.toString()
|
|
352
|
-
})
|
|
353
|
-
proc.stderr?.on('data', (data: Buffer) => {
|
|
354
|
-
stderr += data.toString()
|
|
355
|
-
})
|
|
356
|
-
|
|
357
|
-
proc.on('close', (code) => {
|
|
358
|
-
if (settled) return
|
|
359
|
-
settled = true
|
|
360
|
-
|
|
361
|
-
resolve({
|
|
362
|
-
format: format.format,
|
|
363
|
-
stdout,
|
|
364
|
-
stderr,
|
|
365
|
-
rawStderr: stderr,
|
|
366
|
-
code: code ?? undefined,
|
|
367
|
-
})
|
|
368
|
-
})
|
|
369
|
-
|
|
370
|
-
proc.on('error', (err) => {
|
|
371
|
-
rejectOnce(err)
|
|
372
|
-
})
|
|
373
|
-
})
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
/**
|
|
377
|
-
* Restore a MySQL backup to a database
|
|
378
|
-
*
|
|
379
|
-
* CLI equivalent: mysql -h 127.0.0.1 -P {port} -u root {db} < {file}
|
|
380
|
-
*
|
|
381
|
-
* Uses retry logic: if restore fails with ERROR 1118 (row size too large),
|
|
382
|
-
* automatically retries with compatibility settings that enable DYNAMIC row format.
|
|
383
|
-
*/
|
|
384
|
-
export async function restoreBackup(
|
|
385
|
-
backupPath: string,
|
|
386
|
-
options: RestoreOptions,
|
|
387
|
-
): Promise<RestoreResult> {
|
|
388
|
-
const {
|
|
389
|
-
port,
|
|
390
|
-
database,
|
|
391
|
-
user = engineDef.superuser,
|
|
392
|
-
validateVersion = true,
|
|
393
|
-
binPath,
|
|
394
|
-
containerVersion,
|
|
395
|
-
} = options
|
|
396
|
-
|
|
397
|
-
// Validate version compatibility if requested
|
|
398
|
-
if (validateVersion) {
|
|
399
|
-
try {
|
|
400
|
-
await validateRestoreCompatibility({ dumpPath: backupPath })
|
|
401
|
-
} catch (error) {
|
|
402
|
-
// Re-throw SpinDBError, log and continue for other errors
|
|
403
|
-
if (error instanceof Error && error.name === 'SpinDBError') {
|
|
404
|
-
throw error
|
|
405
|
-
}
|
|
406
|
-
logDebug('Version validation failed, proceeding anyway', {
|
|
407
|
-
error: error instanceof Error ? error.message : String(error),
|
|
408
|
-
})
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
const mysql = await getMysqlClientPath(binPath, containerVersion)
|
|
413
|
-
|
|
414
|
-
// Detect format and check for wrong engine
|
|
415
|
-
const format = await detectBackupFormat(backupPath)
|
|
416
|
-
logDebug('Detected backup format', { format: format.format })
|
|
417
|
-
assertCompatibleFormat(format)
|
|
418
|
-
|
|
419
|
-
// First attempt: try without compatibility settings
|
|
420
|
-
const result = await doRestore(
|
|
421
|
-
backupPath,
|
|
422
|
-
mysql,
|
|
423
|
-
port,
|
|
424
|
-
database,
|
|
425
|
-
user,
|
|
426
|
-
format,
|
|
427
|
-
false,
|
|
428
|
-
)
|
|
429
|
-
|
|
430
|
-
// Check if restore succeeded
|
|
431
|
-
if (result.code === 0) {
|
|
432
|
-
return result
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
// Check if it failed with row size error (ERROR 1118)
|
|
436
|
-
// This happens when tables have too many VARCHAR columns for the default row format
|
|
437
|
-
const isRowSizeError =
|
|
438
|
-
result.rawStderr?.includes('ERROR 1118') ||
|
|
439
|
-
result.rawStderr?.includes('Row size too large')
|
|
440
|
-
|
|
441
|
-
if (isRowSizeError) {
|
|
442
|
-
logDebug('Detected row size error, retrying with compatibility settings')
|
|
443
|
-
|
|
444
|
-
// Retry with compatibility settings
|
|
445
|
-
const retryResult = await doRestore(
|
|
446
|
-
backupPath,
|
|
447
|
-
mysql,
|
|
448
|
-
port,
|
|
449
|
-
database,
|
|
450
|
-
user,
|
|
451
|
-
format,
|
|
452
|
-
true,
|
|
453
|
-
)
|
|
454
|
-
|
|
455
|
-
if (retryResult.code === 0) {
|
|
456
|
-
return {
|
|
457
|
-
...retryResult,
|
|
458
|
-
stdout:
|
|
459
|
-
retryResult.stdout ||
|
|
460
|
-
'Restore succeeded with compatibility mode (DYNAMIC row format)',
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
// Still failed - report the retry error
|
|
465
|
-
const errorMatch = retryResult.rawStderr?.match(/^ERROR\s+\d+.*$/m)
|
|
466
|
-
const errorMessage = errorMatch
|
|
467
|
-
? errorMatch[0]
|
|
468
|
-
: retryResult.rawStderr?.trim() || 'Unknown error'
|
|
469
|
-
throw new Error(`MySQL restore failed: ${errorMessage}`)
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
// Failed with a different error - report it
|
|
473
|
-
const errorMatch = result.rawStderr?.match(/^ERROR\s+\d+.*$/m)
|
|
474
|
-
const errorMessage = errorMatch
|
|
475
|
-
? errorMatch[0]
|
|
476
|
-
: result.rawStderr?.trim() || 'Unknown error'
|
|
477
|
-
throw new Error(`MySQL restore failed: ${errorMessage}`)
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
/**
|
|
481
|
-
* Parse a MySQL connection string
|
|
482
|
-
*
|
|
483
|
-
* Format: mysql://user:pass@host:port/database
|
|
484
|
-
*/
|
|
485
|
-
export function parseConnectionString(connectionString: string): {
|
|
486
|
-
host: string
|
|
487
|
-
port: string
|
|
488
|
-
user: string
|
|
489
|
-
password: string
|
|
490
|
-
database: string
|
|
491
|
-
} {
|
|
492
|
-
const url = new URL(connectionString)
|
|
493
|
-
return {
|
|
494
|
-
host: url.hostname,
|
|
495
|
-
port: url.port || '3306',
|
|
496
|
-
user: url.username || 'root',
|
|
497
|
-
password: url.password || '',
|
|
498
|
-
database: url.pathname.slice(1), // Remove leading /
|
|
499
|
-
}
|
|
500
|
-
}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MySQL Version Maps
|
|
3
|
-
*
|
|
4
|
-
* TEMPORARY: This version map will be replaced by the hostdb npm package once published.
|
|
5
|
-
* Until then, manually keep this in sync with robertjbass/hostdb releases.json:
|
|
6
|
-
* https://github.com/robertjbass/hostdb/blob/main/releases.json
|
|
7
|
-
*
|
|
8
|
-
* When updating versions:
|
|
9
|
-
* 1. Check hostdb releases.json for available versions
|
|
10
|
-
* 2. Update MYSQL_VERSION_MAP to match
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import { logDebug } from '../../core/error-handler'
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Map of major MySQL versions to their latest stable patch versions.
|
|
17
|
-
* Must match versions available in hostdb releases.json.
|
|
18
|
-
*/
|
|
19
|
-
export const MYSQL_VERSION_MAP: Record<string, string> = {
|
|
20
|
-
// 1-part: major version → LTS
|
|
21
|
-
'8': '8.4.3',
|
|
22
|
-
'9': '9.5.0',
|
|
23
|
-
// 2-part: major.minor → latest patch
|
|
24
|
-
'8.0': '8.0.40',
|
|
25
|
-
'8.4': '8.4.3',
|
|
26
|
-
'9.1': '9.1.0',
|
|
27
|
-
'9.5': '9.5.0',
|
|
28
|
-
// 3-part: exact version (identity mapping)
|
|
29
|
-
'8.0.40': '8.0.40',
|
|
30
|
-
'8.4.3': '8.4.3',
|
|
31
|
-
'9.1.0': '9.1.0',
|
|
32
|
-
'9.5.0': '9.5.0',
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Supported major MySQL versions (2-part format).
|
|
37
|
-
* Used for grouping and display purposes.
|
|
38
|
-
*/
|
|
39
|
-
export const SUPPORTED_MAJOR_VERSIONS = ['8.0', '8.4', '9.1', '9.5']
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Fallback map of major versions to stable patch versions
|
|
43
|
-
* Used when hostdb repository is unreachable
|
|
44
|
-
*/
|
|
45
|
-
export const FALLBACK_VERSION_MAP: Record<string, string> = MYSQL_VERSION_MAP
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Get the full version string for a major version.
|
|
49
|
-
*
|
|
50
|
-
* @param majorVersion - Major version (e.g., '8.0', '9')
|
|
51
|
-
* @returns Full version string (e.g., '8.0.40') or null if not supported
|
|
52
|
-
*/
|
|
53
|
-
export function getFullVersion(majorVersion: string): string | null {
|
|
54
|
-
return MYSQL_VERSION_MAP[majorVersion] || null
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Normalize a version string to X.Y.Z format.
|
|
59
|
-
*
|
|
60
|
-
* @param version - Version string (e.g., '8.0', '8.0.40', '9')
|
|
61
|
-
* @returns Normalized version (e.g., '8.0.40', '9.5.0') matching hostdb releases
|
|
62
|
-
*/
|
|
63
|
-
export function normalizeVersion(version: string): string {
|
|
64
|
-
// If it's a key in the map (major, major.minor, or full version), return the mapped value
|
|
65
|
-
// This handles all known versions including identity mappings for full versions
|
|
66
|
-
const fullVersion = MYSQL_VERSION_MAP[version]
|
|
67
|
-
if (fullVersion) {
|
|
68
|
-
return fullVersion
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// Unknown version - warn and return as-is
|
|
72
|
-
// This may cause download failures if the version doesn't exist in hostdb
|
|
73
|
-
const parts = version.split('.')
|
|
74
|
-
|
|
75
|
-
// Validate format: must be 1-3 numeric segments (e.g., "9", "8.0", "8.0.40")
|
|
76
|
-
const isValidFormat =
|
|
77
|
-
parts.length >= 1 &&
|
|
78
|
-
parts.length <= 3 &&
|
|
79
|
-
parts.every((p) => /^\d+$/.test(p))
|
|
80
|
-
|
|
81
|
-
if (!isValidFormat) {
|
|
82
|
-
logDebug(
|
|
83
|
-
`MySQL version '${version}' has invalid format, may not be available in hostdb`,
|
|
84
|
-
)
|
|
85
|
-
} else {
|
|
86
|
-
logDebug(
|
|
87
|
-
`MySQL version '${version}' not in version map, may not be available in hostdb`,
|
|
88
|
-
)
|
|
89
|
-
}
|
|
90
|
-
return version
|
|
91
|
-
}
|