spindb 0.37.2 → 0.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/bin.js +9 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/commands/attach.js +102 -0
- package/dist/cli/commands/attach.js.map +1 -0
- package/dist/cli/commands/backup.js +197 -0
- package/dist/cli/commands/backup.js.map +1 -0
- package/dist/cli/commands/backups.js +190 -0
- package/dist/cli/commands/backups.js.map +1 -0
- package/dist/cli/commands/clone.js +119 -0
- package/dist/cli/commands/clone.js.map +1 -0
- package/dist/cli/commands/config.js +276 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/connect.js +559 -0
- package/dist/cli/commands/connect.js.map +1 -0
- package/dist/cli/commands/create.js +952 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/databases.js +485 -0
- package/dist/cli/commands/databases.js.map +1 -0
- package/dist/cli/commands/delete.js +106 -0
- package/dist/cli/commands/delete.js.map +1 -0
- package/dist/cli/commands/deps.js +238 -0
- package/dist/cli/commands/deps.js.map +1 -0
- package/dist/cli/commands/detach.js +81 -0
- package/dist/cli/commands/detach.js.map +1 -0
- package/dist/cli/commands/doctor.js +567 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/duckdb.js +207 -0
- package/dist/cli/commands/duckdb.js.map +1 -0
- package/dist/cli/commands/edit.js +524 -0
- package/dist/cli/commands/edit.js.map +1 -0
- package/dist/cli/commands/engines.js +1414 -0
- package/dist/cli/commands/engines.js.map +1 -0
- package/dist/cli/commands/export.js +383 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/info.js +270 -0
- package/dist/cli/commands/info.js.map +1 -0
- package/dist/cli/commands/list.js +215 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/logs.js +81 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/menu/backup-handlers.js +1202 -0
- package/dist/cli/commands/menu/backup-handlers.js.map +1 -0
- package/dist/cli/commands/menu/container-handlers.js +1788 -0
- package/dist/cli/commands/menu/container-handlers.js.map +1 -0
- package/dist/cli/commands/menu/engine-handlers.js +235 -0
- package/dist/cli/commands/menu/engine-handlers.js.map +1 -0
- package/dist/cli/commands/menu/index.js +266 -0
- package/dist/cli/commands/menu/index.js.map +1 -0
- package/dist/cli/commands/menu/settings-handlers.js +320 -0
- package/dist/cli/commands/menu/settings-handlers.js.map +1 -0
- package/dist/cli/commands/menu/shared.js +13 -0
- package/dist/cli/commands/menu/shared.js.map +1 -0
- package/dist/cli/commands/menu/shell-handlers.js +1573 -0
- package/dist/cli/commands/menu/shell-handlers.js.map +1 -0
- package/dist/cli/commands/menu/sql-handlers.js +185 -0
- package/dist/cli/commands/menu/sql-handlers.js.map +1 -0
- package/dist/cli/commands/menu/update-handlers.js +322 -0
- package/dist/cli/commands/menu/update-handlers.js.map +1 -0
- package/dist/cli/commands/menu/validators.js +9 -0
- package/dist/cli/commands/menu/validators.js.map +1 -0
- package/dist/cli/commands/ports.js +166 -0
- package/dist/cli/commands/ports.js.map +1 -0
- package/dist/cli/commands/pull.js +166 -0
- package/dist/cli/commands/pull.js.map +1 -0
- package/dist/cli/commands/query.js +180 -0
- package/dist/cli/commands/query.js.map +1 -0
- package/dist/cli/commands/restore.js +428 -0
- package/dist/cli/commands/restore.js.map +1 -0
- package/dist/cli/commands/run.js +115 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/self-update.js +99 -0
- package/dist/cli/commands/self-update.js.map +1 -0
- package/dist/cli/commands/sqlite.js +207 -0
- package/dist/cli/commands/sqlite.js.map +1 -0
- package/dist/cli/commands/start.js +196 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/stop.js +182 -0
- package/dist/cli/commands/stop.js.map +1 -0
- package/dist/cli/commands/url.js +88 -0
- package/dist/cli/commands/url.js.map +1 -0
- package/dist/cli/commands/users.js +189 -0
- package/dist/cli/commands/users.js.map +1 -0
- package/dist/cli/commands/version.js +52 -0
- package/dist/cli/commands/version.js.map +1 -0
- package/dist/cli/commands/which.js +258 -0
- package/dist/cli/commands/which.js.map +1 -0
- package/dist/cli/constants.js +212 -0
- package/dist/cli/constants.js.map +1 -0
- package/dist/cli/helpers.js +1120 -0
- package/dist/cli/helpers.js.map +1 -0
- package/dist/cli/index.js +146 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/ui/prompts.js +1002 -0
- package/dist/cli/ui/prompts.js.map +1 -0
- package/dist/cli/ui/spinner.js +74 -0
- package/dist/cli/ui/spinner.js.map +1 -0
- package/dist/cli/ui/theme.js +99 -0
- package/dist/cli/ui/theme.js.map +1 -0
- package/dist/cli/utils/file-follower.js +79 -0
- package/dist/cli/utils/file-follower.js.map +1 -0
- package/dist/config/backup-formats.js +363 -0
- package/dist/config/backup-formats.js.map +1 -0
- package/dist/config/defaults.js +25 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/engine-defaults.js +303 -0
- package/dist/config/engine-defaults.js.map +1 -0
- package/dist/config/engines-registry.js +103 -0
- package/dist/config/engines-registry.js.map +1 -0
- package/dist/config/os-dependencies.js +767 -0
- package/dist/config/os-dependencies.js.map +1 -0
- package/dist/config/paths.js +156 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/version.js +3 -0
- package/dist/config/version.js.map +1 -0
- package/dist/core/backup-restore.js +219 -0
- package/dist/core/backup-restore.js.map +1 -0
- package/dist/core/base-binary-manager.js +403 -0
- package/dist/core/base-binary-manager.js.map +1 -0
- package/dist/core/base-document-binary-manager.js +364 -0
- package/dist/core/base-document-binary-manager.js.map +1 -0
- package/dist/core/base-embedded-binary-manager.js +364 -0
- package/dist/core/base-embedded-binary-manager.js.map +1 -0
- package/dist/core/base-server-binary-manager.js +368 -0
- package/dist/core/base-server-binary-manager.js.map +1 -0
- package/dist/core/config-manager.js +495 -0
- package/dist/core/config-manager.js.map +1 -0
- package/dist/core/container-manager.js +609 -0
- package/dist/core/container-manager.js.map +1 -0
- package/dist/core/credential-generator.js +67 -0
- package/dist/core/credential-generator.js.map +1 -0
- package/dist/core/credential-manager.js +211 -0
- package/dist/core/credential-manager.js.map +1 -0
- package/dist/core/dblab-utils.js +105 -0
- package/dist/core/dblab-utils.js.map +1 -0
- package/dist/core/dependency-manager.js +359 -0
- package/dist/core/dependency-manager.js.map +1 -0
- package/dist/core/docker-exporter.js +1077 -0
- package/dist/core/docker-exporter.js.map +1 -0
- package/dist/core/error-handler.js +295 -0
- package/dist/core/error-handler.js.map +1 -0
- package/dist/core/fs-error-utils.js +74 -0
- package/dist/core/fs-error-utils.js.map +1 -0
- package/dist/core/homebrew-version-manager.js +280 -0
- package/dist/core/homebrew-version-manager.js.map +1 -0
- package/dist/core/hostdb-client.js +252 -0
- package/dist/core/hostdb-client.js.map +1 -0
- package/dist/core/hostdb-metadata.js +243 -0
- package/dist/core/hostdb-metadata.js.map +1 -0
- package/dist/core/hostdb-releases-factory.js +161 -0
- package/dist/core/hostdb-releases-factory.js.map +1 -0
- package/dist/core/library-env.js +88 -0
- package/dist/core/library-env.js.map +1 -0
- package/dist/core/pgweb-utils.js +53 -0
- package/dist/core/pgweb-utils.js.map +1 -0
- package/dist/core/platform-service.js +632 -0
- package/dist/core/platform-service.js.map +1 -0
- package/dist/core/port-manager.js +136 -0
- package/dist/core/port-manager.js.map +1 -0
- package/dist/core/process-manager.js +445 -0
- package/dist/core/process-manager.js.map +1 -0
- package/dist/core/pull-manager.js +418 -0
- package/dist/core/pull-manager.js.map +1 -0
- package/dist/core/query-parser.js +449 -0
- package/dist/core/query-parser.js.map +1 -0
- package/dist/core/spawn-utils.js +90 -0
- package/dist/core/spawn-utils.js.map +1 -0
- package/dist/core/start-with-retry.js +90 -0
- package/dist/core/start-with-retry.js.map +1 -0
- package/dist/core/test-cleanup.js +85 -0
- package/dist/core/test-cleanup.js.map +1 -0
- package/dist/core/tls-generator.js +84 -0
- package/dist/core/tls-generator.js.map +1 -0
- package/dist/core/transaction-manager.js +139 -0
- package/dist/core/transaction-manager.js.map +1 -0
- package/dist/core/update-manager.js +241 -0
- package/dist/core/update-manager.js.map +1 -0
- package/dist/core/version-migration.js +260 -0
- package/dist/core/version-migration.js.map +1 -0
- package/dist/core/version-utils.js +91 -0
- package/dist/core/version-utils.js.map +1 -0
- package/dist/engines/base-engine.js +179 -0
- package/dist/engines/base-engine.js.map +1 -0
- package/dist/engines/clickhouse/backup.js +289 -0
- package/dist/engines/clickhouse/backup.js.map +1 -0
- package/dist/engines/clickhouse/binary-manager.js +145 -0
- package/dist/engines/clickhouse/binary-manager.js.map +1 -0
- package/dist/engines/clickhouse/binary-urls.js +100 -0
- package/dist/engines/clickhouse/binary-urls.js.map +1 -0
- package/dist/engines/clickhouse/cli-utils.js +143 -0
- package/dist/engines/clickhouse/cli-utils.js.map +1 -0
- package/dist/engines/clickhouse/hostdb-releases.js +24 -0
- package/dist/engines/clickhouse/hostdb-releases.js.map +1 -0
- package/dist/engines/clickhouse/index.js +1077 -0
- package/dist/engines/clickhouse/index.js.map +1 -0
- package/dist/engines/clickhouse/restore.js +335 -0
- package/dist/engines/clickhouse/restore.js.map +1 -0
- package/dist/engines/clickhouse/version-maps.js +83 -0
- package/dist/engines/clickhouse/version-maps.js.map +1 -0
- package/dist/engines/clickhouse/version-validator.js +133 -0
- package/dist/engines/clickhouse/version-validator.js.map +1 -0
- package/dist/engines/cockroachdb/backup.js +261 -0
- package/dist/engines/cockroachdb/backup.js.map +1 -0
- package/dist/engines/cockroachdb/binary-manager.js +33 -0
- package/dist/engines/cockroachdb/binary-manager.js.map +1 -0
- package/dist/engines/cockroachdb/binary-urls.js +33 -0
- package/dist/engines/cockroachdb/binary-urls.js.map +1 -0
- package/dist/engines/cockroachdb/cli-utils.js +338 -0
- package/dist/engines/cockroachdb/cli-utils.js.map +1 -0
- package/dist/engines/cockroachdb/hostdb-releases.js +21 -0
- package/dist/engines/cockroachdb/hostdb-releases.js.map +1 -0
- package/dist/engines/cockroachdb/index.js +1016 -0
- package/dist/engines/cockroachdb/index.js.map +1 -0
- package/dist/engines/cockroachdb/restore.js +323 -0
- package/dist/engines/cockroachdb/restore.js.map +1 -0
- package/dist/engines/cockroachdb/version-maps.js +37 -0
- package/dist/engines/cockroachdb/version-maps.js.map +1 -0
- package/dist/engines/couchdb/api-client.js +64 -0
- package/dist/engines/couchdb/api-client.js.map +1 -0
- package/dist/engines/couchdb/backup.js +90 -0
- package/dist/engines/couchdb/backup.js.map +1 -0
- package/dist/engines/couchdb/binary-manager.js +62 -0
- package/dist/engines/couchdb/binary-manager.js.map +1 -0
- package/dist/engines/couchdb/binary-urls.js +92 -0
- package/dist/engines/couchdb/binary-urls.js.map +1 -0
- package/dist/engines/couchdb/hostdb-releases.js +21 -0
- package/dist/engines/couchdb/hostdb-releases.js.map +1 -0
- package/dist/engines/couchdb/index.js +1043 -0
- package/dist/engines/couchdb/index.js.map +1 -0
- package/dist/engines/couchdb/restore.js +198 -0
- package/dist/engines/couchdb/restore.js.map +1 -0
- package/dist/engines/couchdb/version-maps.js +67 -0
- package/dist/engines/couchdb/version-maps.js.map +1 -0
- package/dist/engines/couchdb/version-validator.js +88 -0
- package/dist/engines/couchdb/version-validator.js.map +1 -0
- package/dist/engines/duckdb/binary-manager.js +33 -0
- package/dist/engines/duckdb/binary-manager.js.map +1 -0
- package/{engines/duckdb/binary-urls.ts → dist/engines/duckdb/binary-urls.js} +11 -16
- package/dist/engines/duckdb/binary-urls.js.map +1 -0
- package/dist/engines/duckdb/hostdb-releases.js +21 -0
- package/dist/engines/duckdb/hostdb-releases.js.map +1 -0
- package/dist/engines/duckdb/index.js +594 -0
- package/dist/engines/duckdb/index.js.map +1 -0
- package/dist/engines/duckdb/registry.js +265 -0
- package/dist/engines/duckdb/registry.js.map +1 -0
- package/dist/engines/duckdb/scanner.js +12 -0
- package/dist/engines/duckdb/scanner.js.map +1 -0
- package/dist/engines/duckdb/version-maps.js +67 -0
- package/dist/engines/duckdb/version-maps.js.map +1 -0
- package/dist/engines/duckdb/version-validator.js +62 -0
- package/dist/engines/duckdb/version-validator.js.map +1 -0
- package/dist/engines/ferretdb/backup.js +170 -0
- package/dist/engines/ferretdb/backup.js.map +1 -0
- package/dist/engines/ferretdb/binary-manager.js +765 -0
- package/dist/engines/ferretdb/binary-manager.js.map +1 -0
- package/dist/engines/ferretdb/binary-urls.js +135 -0
- package/dist/engines/ferretdb/binary-urls.js.map +1 -0
- package/dist/engines/ferretdb/index.js +1517 -0
- package/dist/engines/ferretdb/index.js.map +1 -0
- package/dist/engines/ferretdb/restore.js +310 -0
- package/dist/engines/ferretdb/restore.js.map +1 -0
- package/{engines/ferretdb/version-maps.ts → dist/engines/ferretdb/version-maps.js} +62 -79
- package/dist/engines/ferretdb/version-maps.js.map +1 -0
- package/dist/engines/file-based-utils.js +184 -0
- package/dist/engines/file-based-utils.js.map +1 -0
- package/dist/engines/index.js +124 -0
- package/dist/engines/index.js.map +1 -0
- package/dist/engines/influxdb/api-client.js +54 -0
- package/dist/engines/influxdb/api-client.js.map +1 -0
- package/dist/engines/influxdb/backup.js +119 -0
- package/dist/engines/influxdb/backup.js.map +1 -0
- package/dist/engines/influxdb/binary-manager.js +87 -0
- package/dist/engines/influxdb/binary-manager.js.map +1 -0
- package/dist/engines/influxdb/binary-urls.js +56 -0
- package/dist/engines/influxdb/binary-urls.js.map +1 -0
- package/dist/engines/influxdb/hostdb-releases.js +21 -0
- package/dist/engines/influxdb/hostdb-releases.js.map +1 -0
- package/dist/engines/influxdb/index.js +962 -0
- package/dist/engines/influxdb/index.js.map +1 -0
- package/dist/engines/influxdb/restore.js +329 -0
- package/dist/engines/influxdb/restore.js.map +1 -0
- package/dist/engines/influxdb/version-maps.js +64 -0
- package/dist/engines/influxdb/version-maps.js.map +1 -0
- package/dist/engines/influxdb/version-validator.js +109 -0
- package/dist/engines/influxdb/version-validator.js.map +1 -0
- package/dist/engines/mariadb/backup.js +178 -0
- package/dist/engines/mariadb/backup.js.map +1 -0
- package/dist/engines/mariadb/binary-manager.js +33 -0
- package/dist/engines/mariadb/binary-manager.js.map +1 -0
- package/{engines/mariadb/binary-urls.ts → dist/engines/mariadb/binary-urls.js} +38 -55
- package/dist/engines/mariadb/binary-urls.js.map +1 -0
- package/dist/engines/mariadb/hostdb-releases.js +21 -0
- package/dist/engines/mariadb/hostdb-releases.js.map +1 -0
- package/dist/engines/mariadb/index.js +1011 -0
- package/dist/engines/mariadb/index.js.map +1 -0
- package/dist/engines/mariadb/restore.js +322 -0
- package/dist/engines/mariadb/restore.js.map +1 -0
- package/dist/engines/mariadb/version-maps.js +63 -0
- package/dist/engines/mariadb/version-maps.js.map +1 -0
- package/dist/engines/mariadb/version-validator.js +143 -0
- package/dist/engines/mariadb/version-validator.js.map +1 -0
- package/dist/engines/meilisearch/api-client.js +50 -0
- package/dist/engines/meilisearch/api-client.js.map +1 -0
- package/dist/engines/meilisearch/backup.js +167 -0
- package/dist/engines/meilisearch/backup.js.map +1 -0
- package/dist/engines/meilisearch/binary-manager.js +31 -0
- package/dist/engines/meilisearch/binary-manager.js.map +1 -0
- package/dist/engines/meilisearch/binary-urls.js +56 -0
- package/dist/engines/meilisearch/binary-urls.js.map +1 -0
- package/dist/engines/meilisearch/hostdb-releases.js +21 -0
- package/dist/engines/meilisearch/hostdb-releases.js.map +1 -0
- package/dist/engines/meilisearch/index.js +992 -0
- package/dist/engines/meilisearch/index.js.map +1 -0
- package/dist/engines/meilisearch/restore.js +167 -0
- package/dist/engines/meilisearch/restore.js.map +1 -0
- package/dist/engines/meilisearch/version-maps.js +67 -0
- package/dist/engines/meilisearch/version-maps.js.map +1 -0
- package/dist/engines/meilisearch/version-validator.js +109 -0
- package/dist/engines/meilisearch/version-validator.js.map +1 -0
- package/dist/engines/mongodb/backup.js +109 -0
- package/dist/engines/mongodb/backup.js.map +1 -0
- package/dist/engines/mongodb/binary-manager.js +36 -0
- package/dist/engines/mongodb/binary-manager.js.map +1 -0
- package/dist/engines/mongodb/binary-urls.js +46 -0
- package/dist/engines/mongodb/binary-urls.js.map +1 -0
- package/dist/engines/mongodb/cli-utils.js +131 -0
- package/dist/engines/mongodb/cli-utils.js.map +1 -0
- package/dist/engines/mongodb/hostdb-releases.js +77 -0
- package/dist/engines/mongodb/hostdb-releases.js.map +1 -0
- package/dist/engines/mongodb/index.js +873 -0
- package/dist/engines/mongodb/index.js.map +1 -0
- package/dist/engines/mongodb/restore.js +276 -0
- package/dist/engines/mongodb/restore.js.map +1 -0
- package/dist/engines/mongodb/version-maps.js +79 -0
- package/dist/engines/mongodb/version-maps.js.map +1 -0
- package/dist/engines/mongodb/version-validator.js +133 -0
- package/dist/engines/mongodb/version-validator.js.map +1 -0
- package/dist/engines/mysql/backup.js +210 -0
- package/dist/engines/mysql/backup.js.map +1 -0
- package/dist/engines/mysql/binary-detection.js +325 -0
- package/dist/engines/mysql/binary-detection.js.map +1 -0
- package/dist/engines/mysql/binary-manager.js +30 -0
- package/dist/engines/mysql/binary-manager.js.map +1 -0
- package/dist/engines/mysql/binary-urls.js +87 -0
- package/dist/engines/mysql/binary-urls.js.map +1 -0
- package/{engines/mysql/hostdb-releases.ts → dist/engines/mysql/hostdb-releases.js} +20 -23
- package/dist/engines/mysql/hostdb-releases.js.map +1 -0
- package/dist/engines/mysql/index.js +1066 -0
- package/dist/engines/mysql/index.js.map +1 -0
- package/dist/engines/mysql/restore.js +361 -0
- package/dist/engines/mysql/restore.js.map +1 -0
- package/dist/engines/mysql/version-maps.js +79 -0
- package/dist/engines/mysql/version-maps.js.map +1 -0
- package/dist/engines/mysql/version-validator.js +266 -0
- package/dist/engines/mysql/version-validator.js.map +1 -0
- package/dist/engines/postgresql/backup.js +118 -0
- package/dist/engines/postgresql/backup.js.map +1 -0
- package/dist/engines/postgresql/binary-manager.js +85 -0
- package/dist/engines/postgresql/binary-manager.js.map +1 -0
- package/dist/engines/postgresql/binary-urls.js +80 -0
- package/dist/engines/postgresql/binary-urls.js.map +1 -0
- package/dist/engines/postgresql/hostdb-releases.js +21 -0
- package/dist/engines/postgresql/hostdb-releases.js.map +1 -0
- package/dist/engines/postgresql/index.js +852 -0
- package/dist/engines/postgresql/index.js.map +1 -0
- package/dist/engines/postgresql/remote-version.js +109 -0
- package/dist/engines/postgresql/remote-version.js.map +1 -0
- package/dist/engines/postgresql/restore.js +254 -0
- package/dist/engines/postgresql/restore.js.map +1 -0
- package/dist/engines/postgresql/version-maps.js +73 -0
- package/dist/engines/postgresql/version-maps.js.map +1 -0
- package/dist/engines/postgresql/version-validator.js +286 -0
- package/dist/engines/postgresql/version-validator.js.map +1 -0
- package/dist/engines/qdrant/api-client.js +50 -0
- package/dist/engines/qdrant/api-client.js.map +1 -0
- package/dist/engines/qdrant/backup.js +115 -0
- package/dist/engines/qdrant/backup.js.map +1 -0
- package/dist/engines/qdrant/binary-manager.js +31 -0
- package/dist/engines/qdrant/binary-manager.js.map +1 -0
- package/dist/engines/qdrant/binary-urls.js +92 -0
- package/dist/engines/qdrant/binary-urls.js.map +1 -0
- package/dist/engines/qdrant/cli-utils.js +39 -0
- package/dist/engines/qdrant/cli-utils.js.map +1 -0
- package/dist/engines/qdrant/hostdb-releases.js +21 -0
- package/dist/engines/qdrant/hostdb-releases.js.map +1 -0
- package/dist/engines/qdrant/index.js +1002 -0
- package/dist/engines/qdrant/index.js.map +1 -0
- package/dist/engines/qdrant/restore.js +154 -0
- package/dist/engines/qdrant/restore.js.map +1 -0
- package/dist/engines/qdrant/version-maps.js +67 -0
- package/dist/engines/qdrant/version-maps.js.map +1 -0
- package/dist/engines/qdrant/version-validator.js +109 -0
- package/dist/engines/qdrant/version-validator.js.map +1 -0
- package/dist/engines/questdb/backup.js +191 -0
- package/dist/engines/questdb/backup.js.map +1 -0
- package/dist/engines/questdb/binary-manager.js +247 -0
- package/dist/engines/questdb/binary-manager.js.map +1 -0
- package/dist/engines/questdb/binary-urls.js +27 -0
- package/dist/engines/questdb/binary-urls.js.map +1 -0
- package/dist/engines/questdb/hostdb-releases.js +21 -0
- package/dist/engines/questdb/hostdb-releases.js.map +1 -0
- package/dist/engines/questdb/index.js +814 -0
- package/dist/engines/questdb/index.js.map +1 -0
- package/dist/engines/questdb/restore.js +202 -0
- package/dist/engines/questdb/restore.js.map +1 -0
- package/dist/engines/questdb/version-maps.js +33 -0
- package/dist/engines/questdb/version-maps.js.map +1 -0
- package/dist/engines/questdb/version-validator.js +99 -0
- package/dist/engines/questdb/version-validator.js.map +1 -0
- package/dist/engines/redis/backup.js +292 -0
- package/dist/engines/redis/backup.js.map +1 -0
- package/dist/engines/redis/binary-manager.js +32 -0
- package/dist/engines/redis/binary-manager.js.map +1 -0
- package/dist/engines/redis/binary-urls.js +96 -0
- package/dist/engines/redis/binary-urls.js.map +1 -0
- package/dist/engines/redis/cli-utils.js +38 -0
- package/dist/engines/redis/cli-utils.js.map +1 -0
- package/dist/engines/redis/hostdb-releases.js +21 -0
- package/dist/engines/redis/hostdb-releases.js.map +1 -0
- package/dist/engines/redis/index.js +1263 -0
- package/dist/engines/redis/index.js.map +1 -0
- package/dist/engines/redis/restore.js +338 -0
- package/dist/engines/redis/restore.js.map +1 -0
- package/dist/engines/redis/version-maps.js +70 -0
- package/dist/engines/redis/version-maps.js.map +1 -0
- package/dist/engines/redis/version-validator.js +109 -0
- package/dist/engines/redis/version-validator.js.map +1 -0
- package/dist/engines/sqlite/binary-manager.js +39 -0
- package/dist/engines/sqlite/binary-manager.js.map +1 -0
- package/{engines/sqlite/binary-urls.ts → dist/engines/sqlite/binary-urls.js} +11 -16
- package/dist/engines/sqlite/binary-urls.js.map +1 -0
- package/dist/engines/sqlite/hostdb-releases.js +21 -0
- package/dist/engines/sqlite/hostdb-releases.js.map +1 -0
- package/dist/engines/sqlite/index.js +493 -0
- package/dist/engines/sqlite/index.js.map +1 -0
- package/dist/engines/sqlite/registry.js +163 -0
- package/dist/engines/sqlite/registry.js.map +1 -0
- package/dist/engines/sqlite/scanner.js +12 -0
- package/dist/engines/sqlite/scanner.js.map +1 -0
- package/dist/engines/sqlite/version-maps.js +57 -0
- package/dist/engines/sqlite/version-maps.js.map +1 -0
- package/dist/engines/surrealdb/backup.js +97 -0
- package/dist/engines/surrealdb/backup.js.map +1 -0
- package/dist/engines/surrealdb/binary-manager.js +33 -0
- package/dist/engines/surrealdb/binary-manager.js.map +1 -0
- package/dist/engines/surrealdb/binary-urls.js +33 -0
- package/dist/engines/surrealdb/binary-urls.js.map +1 -0
- package/dist/engines/surrealdb/cli-utils.js +147 -0
- package/dist/engines/surrealdb/cli-utils.js.map +1 -0
- package/dist/engines/surrealdb/hostdb-releases.js +21 -0
- package/dist/engines/surrealdb/hostdb-releases.js.map +1 -0
- package/dist/engines/surrealdb/index.js +1022 -0
- package/dist/engines/surrealdb/index.js.map +1 -0
- package/dist/engines/surrealdb/restore.js +224 -0
- package/dist/engines/surrealdb/restore.js.map +1 -0
- package/dist/engines/surrealdb/version-maps.js +36 -0
- package/dist/engines/surrealdb/version-maps.js.map +1 -0
- package/dist/engines/tigerbeetle/backup.js +36 -0
- package/dist/engines/tigerbeetle/backup.js.map +1 -0
- package/dist/engines/tigerbeetle/binary-manager.js +72 -0
- package/dist/engines/tigerbeetle/binary-manager.js.map +1 -0
- package/dist/engines/tigerbeetle/binary-urls.js +49 -0
- package/dist/engines/tigerbeetle/binary-urls.js.map +1 -0
- package/dist/engines/tigerbeetle/hostdb-releases.js +21 -0
- package/dist/engines/tigerbeetle/hostdb-releases.js.map +1 -0
- package/dist/engines/tigerbeetle/index.js +559 -0
- package/dist/engines/tigerbeetle/index.js.map +1 -0
- package/dist/engines/tigerbeetle/restore.js +91 -0
- package/dist/engines/tigerbeetle/restore.js.map +1 -0
- package/{engines/tigerbeetle/version-maps.ts → dist/engines/tigerbeetle/version-maps.js} +22 -31
- package/dist/engines/tigerbeetle/version-maps.js.map +1 -0
- package/dist/engines/tigerbeetle/version-validator.js +108 -0
- package/dist/engines/tigerbeetle/version-validator.js.map +1 -0
- package/dist/engines/typedb/backup.js +129 -0
- package/dist/engines/typedb/backup.js.map +1 -0
- package/dist/engines/typedb/binary-manager.js +151 -0
- package/dist/engines/typedb/binary-manager.js.map +1 -0
- package/dist/engines/typedb/binary-urls.js +33 -0
- package/dist/engines/typedb/binary-urls.js.map +1 -0
- package/dist/engines/typedb/cli-utils.js +163 -0
- package/dist/engines/typedb/cli-utils.js.map +1 -0
- package/dist/engines/typedb/hostdb-releases.js +21 -0
- package/dist/engines/typedb/hostdb-releases.js.map +1 -0
- package/dist/engines/typedb/index.js +1003 -0
- package/dist/engines/typedb/index.js.map +1 -0
- package/dist/engines/typedb/restore.js +279 -0
- package/dist/engines/typedb/restore.js.map +1 -0
- package/dist/engines/typedb/version-maps.js +40 -0
- package/dist/engines/typedb/version-maps.js.map +1 -0
- package/dist/engines/typedb/version-validator.js +103 -0
- package/dist/engines/typedb/version-validator.js.map +1 -0
- package/dist/engines/valkey/backup.js +292 -0
- package/dist/engines/valkey/backup.js.map +1 -0
- package/dist/engines/valkey/binary-manager.js +33 -0
- package/dist/engines/valkey/binary-manager.js.map +1 -0
- package/dist/engines/valkey/binary-urls.js +98 -0
- package/dist/engines/valkey/binary-urls.js.map +1 -0
- package/dist/engines/valkey/cli-utils.js +38 -0
- package/dist/engines/valkey/cli-utils.js.map +1 -0
- package/dist/engines/valkey/hostdb-releases.js +21 -0
- package/dist/engines/valkey/hostdb-releases.js.map +1 -0
- package/dist/engines/valkey/index.js +1257 -0
- package/dist/engines/valkey/index.js.map +1 -0
- package/dist/engines/valkey/restore.js +340 -0
- package/dist/engines/valkey/restore.js.map +1 -0
- package/dist/engines/valkey/version-maps.js +70 -0
- package/dist/engines/valkey/version-maps.js.map +1 -0
- package/dist/engines/valkey/version-validator.js +112 -0
- package/dist/engines/valkey/version-validator.js.map +1 -0
- package/dist/engines/weaviate/api-client.js +50 -0
- package/dist/engines/weaviate/api-client.js.map +1 -0
- package/dist/engines/weaviate/backup.js +95 -0
- package/dist/engines/weaviate/backup.js.map +1 -0
- package/dist/engines/weaviate/binary-manager.js +58 -0
- package/dist/engines/weaviate/binary-manager.js.map +1 -0
- package/dist/engines/weaviate/binary-urls.js +92 -0
- package/dist/engines/weaviate/binary-urls.js.map +1 -0
- package/dist/engines/weaviate/cli-utils.js +39 -0
- package/dist/engines/weaviate/cli-utils.js.map +1 -0
- package/dist/engines/weaviate/hostdb-releases.js +21 -0
- package/dist/engines/weaviate/hostdb-releases.js.map +1 -0
- package/dist/engines/weaviate/index.js +871 -0
- package/dist/engines/weaviate/index.js.map +1 -0
- package/dist/engines/weaviate/restore.js +185 -0
- package/dist/engines/weaviate/restore.js.map +1 -0
- package/dist/engines/weaviate/version-maps.js +67 -0
- package/dist/engines/weaviate/version-maps.js.map +1 -0
- package/dist/engines/weaviate/version-validator.js +109 -0
- package/dist/engines/weaviate/version-validator.js.map +1 -0
- package/dist/types/index.js +102 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +12 -9
- package/bin/cli.js +0 -68
- package/cli/bin.ts +0 -10
- package/cli/commands/attach.ts +0 -139
- package/cli/commands/backup.ts +0 -290
- package/cli/commands/backups.ts +0 -247
- package/cli/commands/clone.ts +0 -159
- package/cli/commands/config.ts +0 -367
- package/cli/commands/connect.ts +0 -684
- package/cli/commands/create.ts +0 -1201
- package/cli/commands/databases.ts +0 -630
- package/cli/commands/delete.ts +0 -133
- package/cli/commands/deps.ts +0 -342
- package/cli/commands/detach.ts +0 -107
- package/cli/commands/doctor.ts +0 -689
- package/cli/commands/duckdb.ts +0 -273
- package/cli/commands/edit.ts +0 -683
- package/cli/commands/engines.ts +0 -1914
- package/cli/commands/export.ts +0 -544
- package/cli/commands/info.ts +0 -340
- package/cli/commands/list.ts +0 -284
- package/cli/commands/logs.ts +0 -102
- package/cli/commands/menu/backup-handlers.ts +0 -1571
- package/cli/commands/menu/container-handlers.ts +0 -2288
- package/cli/commands/menu/engine-handlers.ts +0 -355
- package/cli/commands/menu/index.ts +0 -342
- package/cli/commands/menu/settings-handlers.ts +0 -365
- package/cli/commands/menu/shared.ts +0 -23
- package/cli/commands/menu/shell-handlers.ts +0 -1811
- package/cli/commands/menu/sql-handlers.ts +0 -231
- package/cli/commands/menu/update-handlers.ts +0 -378
- package/cli/commands/menu/validators.ts +0 -8
- package/cli/commands/ports.ts +0 -211
- package/cli/commands/pull.ts +0 -223
- package/cli/commands/query.ts +0 -241
- package/cli/commands/restore.ts +0 -587
- package/cli/commands/run.ts +0 -178
- package/cli/commands/self-update.ts +0 -121
- package/cli/commands/sqlite.ts +0 -273
- package/cli/commands/start.ts +0 -218
- package/cli/commands/stop.ts +0 -241
- package/cli/commands/url.ts +0 -104
- package/cli/commands/users.ts +0 -264
- package/cli/commands/version.ts +0 -55
- package/cli/commands/which.ts +0 -290
- package/cli/constants.ts +0 -233
- package/cli/helpers.ts +0 -1593
- package/cli/index.ts +0 -162
- package/cli/ui/prompts.ts +0 -1525
- package/cli/ui/spinner.ts +0 -88
- package/cli/ui/theme.ts +0 -128
- package/cli/utils/file-follower.ts +0 -93
- package/config/backup-formats.ts +0 -446
- package/config/defaults.ts +0 -56
- package/config/engine-defaults.ts +0 -336
- package/config/engines-registry.ts +0 -150
- package/config/engines.schema.json +0 -135
- package/config/os-dependencies.ts +0 -888
- package/config/paths.ts +0 -200
- package/core/backup-restore.ts +0 -330
- package/core/base-binary-manager.ts +0 -562
- package/core/base-document-binary-manager.ts +0 -523
- package/core/base-embedded-binary-manager.ts +0 -547
- package/core/base-server-binary-manager.ts +0 -523
- package/core/config-manager.ts +0 -652
- package/core/container-manager.ts +0 -787
- package/core/credential-generator.ts +0 -93
- package/core/credential-manager.ts +0 -259
- package/core/dblab-utils.ts +0 -113
- package/core/dependency-manager.ts +0 -512
- package/core/docker-exporter.ts +0 -1345
- package/core/error-handler.ts +0 -419
- package/core/fs-error-utils.ts +0 -82
- package/core/homebrew-version-manager.ts +0 -352
- package/core/hostdb-client.ts +0 -344
- package/core/hostdb-metadata.ts +0 -350
- package/core/hostdb-releases-factory.ts +0 -237
- package/core/library-env.ts +0 -118
- package/core/pgweb-utils.ts +0 -62
- package/core/platform-service.ts +0 -829
- package/core/port-manager.ts +0 -165
- package/core/process-manager.ts +0 -576
- package/core/pull-manager.ts +0 -511
- package/core/query-parser.ts +0 -514
- package/core/spawn-utils.ts +0 -122
- package/core/start-with-retry.ts +0 -130
- package/core/test-cleanup.ts +0 -108
- package/core/tls-generator.ts +0 -116
- package/core/transaction-manager.ts +0 -158
- package/core/update-manager.ts +0 -308
- package/core/version-migration.ts +0 -346
- package/core/version-utils.ts +0 -104
- package/engines/base-engine.ts +0 -340
- package/engines/clickhouse/README.md +0 -231
- package/engines/clickhouse/backup.ts +0 -398
- package/engines/clickhouse/binary-manager.ts +0 -201
- package/engines/clickhouse/binary-urls.ts +0 -125
- package/engines/clickhouse/cli-utils.ts +0 -176
- package/engines/clickhouse/hostdb-releases.ts +0 -30
- package/engines/clickhouse/index.ts +0 -1345
- package/engines/clickhouse/restore.ts +0 -466
- package/engines/clickhouse/version-maps.ts +0 -95
- package/engines/clickhouse/version-validator.ts +0 -154
- package/engines/cockroachdb/README.md +0 -170
- package/engines/cockroachdb/backup.ts +0 -376
- package/engines/cockroachdb/binary-manager.ts +0 -45
- package/engines/cockroachdb/binary-urls.ts +0 -40
- package/engines/cockroachdb/cli-utils.ts +0 -384
- package/engines/cockroachdb/hostdb-releases.ts +0 -26
- package/engines/cockroachdb/index.ts +0 -1276
- package/engines/cockroachdb/restore.ts +0 -455
- package/engines/cockroachdb/version-maps.ts +0 -42
- package/engines/couchdb/README.md +0 -257
- package/engines/couchdb/api-client.ts +0 -81
- package/engines/couchdb/backup.ts +0 -137
- package/engines/couchdb/binary-manager.ts +0 -86
- package/engines/couchdb/binary-urls.ts +0 -115
- package/engines/couchdb/hostdb-releases.ts +0 -23
- package/engines/couchdb/index.ts +0 -1429
- package/engines/couchdb/restore.ts +0 -290
- package/engines/couchdb/version-maps.ts +0 -78
- package/engines/couchdb/version-validator.ts +0 -111
- package/engines/duckdb/README.md +0 -154
- package/engines/duckdb/binary-manager.ts +0 -45
- package/engines/duckdb/hostdb-releases.ts +0 -23
- package/engines/duckdb/index.ts +0 -749
- package/engines/duckdb/registry.ts +0 -303
- package/engines/duckdb/scanner.ts +0 -22
- package/engines/duckdb/version-maps.ts +0 -78
- package/engines/duckdb/version-validator.ts +0 -78
- package/engines/ferretdb/README.md +0 -262
- package/engines/ferretdb/backup.ts +0 -173
- package/engines/ferretdb/binary-manager.ts +0 -1095
- package/engines/ferretdb/binary-urls.ts +0 -183
- package/engines/ferretdb/index.ts +0 -1907
- package/engines/ferretdb/restore.ts +0 -357
- package/engines/file-based-utils.ts +0 -262
- package/engines/index.ts +0 -131
- package/engines/influxdb/README.md +0 -180
- package/engines/influxdb/api-client.ts +0 -64
- package/engines/influxdb/backup.ts +0 -160
- package/engines/influxdb/binary-manager.ts +0 -110
- package/engines/influxdb/binary-urls.ts +0 -69
- package/engines/influxdb/hostdb-releases.ts +0 -23
- package/engines/influxdb/index.ts +0 -1272
- package/engines/influxdb/restore.ts +0 -417
- package/engines/influxdb/version-maps.ts +0 -75
- package/engines/influxdb/version-validator.ts +0 -128
- package/engines/mariadb/README.md +0 -141
- package/engines/mariadb/backup.ts +0 -233
- package/engines/mariadb/binary-manager.ts +0 -45
- package/engines/mariadb/hostdb-releases.ts +0 -23
- package/engines/mariadb/index.ts +0 -1300
- package/engines/mariadb/restore.ts +0 -447
- package/engines/mariadb/version-maps.ts +0 -72
- package/engines/mariadb/version-validator.ts +0 -181
- package/engines/meilisearch/README.md +0 -255
- package/engines/meilisearch/api-client.ts +0 -61
- package/engines/meilisearch/backup.ts +0 -233
- package/engines/meilisearch/binary-manager.ts +0 -43
- package/engines/meilisearch/binary-urls.ts +0 -69
- package/engines/meilisearch/hostdb-releases.ts +0 -26
- package/engines/meilisearch/index.ts +0 -1292
- package/engines/meilisearch/restore.ts +0 -219
- package/engines/meilisearch/version-maps.ts +0 -78
- package/engines/meilisearch/version-validator.ts +0 -128
- package/engines/mongodb/README.md +0 -162
- package/engines/mongodb/backup.ts +0 -127
- package/engines/mongodb/binary-manager.ts +0 -48
- package/engines/mongodb/binary-urls.ts +0 -63
- package/engines/mongodb/cli-utils.ts +0 -171
- package/engines/mongodb/hostdb-releases.ts +0 -91
- package/engines/mongodb/index.ts +0 -1118
- package/engines/mongodb/restore.ts +0 -361
- package/engines/mongodb/version-maps.ts +0 -91
- package/engines/mongodb/version-validator.ts +0 -160
- package/engines/mysql/README.md +0 -142
- package/engines/mysql/backup.ts +0 -270
- package/engines/mysql/binary-detection.ts +0 -408
- package/engines/mysql/binary-manager.ts +0 -42
- package/engines/mysql/binary-urls.ts +0 -104
- package/engines/mysql/index.ts +0 -1361
- package/engines/mysql/restore.ts +0 -500
- package/engines/mysql/version-maps.ts +0 -91
- package/engines/mysql/version-validator.ts +0 -369
- package/engines/postgresql/README.md +0 -158
- package/engines/postgresql/backup.ts +0 -151
- package/engines/postgresql/binary-manager.ts +0 -114
- package/engines/postgresql/binary-urls.ts +0 -99
- package/engines/postgresql/hostdb-releases.ts +0 -26
- package/engines/postgresql/index.ts +0 -1143
- package/engines/postgresql/remote-version.ts +0 -161
- package/engines/postgresql/restore.ts +0 -342
- package/engines/postgresql/version-maps.ts +0 -83
- package/engines/postgresql/version-validator.ts +0 -413
- package/engines/qdrant/README.md +0 -222
- package/engines/qdrant/api-client.ts +0 -61
- package/engines/qdrant/backup.ts +0 -165
- package/engines/qdrant/binary-manager.ts +0 -43
- package/engines/qdrant/binary-urls.ts +0 -115
- package/engines/qdrant/cli-utils.ts +0 -43
- package/engines/qdrant/hostdb-releases.ts +0 -23
- package/engines/qdrant/index.ts +0 -1312
- package/engines/qdrant/restore.ts +0 -203
- package/engines/qdrant/version-maps.ts +0 -78
- package/engines/qdrant/version-validator.ts +0 -128
- package/engines/questdb/README.md +0 -334
- package/engines/questdb/backup.ts +0 -220
- package/engines/questdb/binary-manager.ts +0 -310
- package/engines/questdb/binary-urls.ts +0 -34
- package/engines/questdb/hostdb-releases.ts +0 -23
- package/engines/questdb/index.ts +0 -1023
- package/engines/questdb/restore.ts +0 -260
- package/engines/questdb/version-maps.ts +0 -37
- package/engines/questdb/version-validator.ts +0 -121
- package/engines/redis/README.md +0 -173
- package/engines/redis/backup.ts +0 -389
- package/engines/redis/binary-manager.ts +0 -44
- package/engines/redis/binary-urls.ts +0 -117
- package/engines/redis/cli-utils.ts +0 -42
- package/engines/redis/hostdb-releases.ts +0 -23
- package/engines/redis/index.ts +0 -1583
- package/engines/redis/restore.ts +0 -443
- package/engines/redis/version-maps.ts +0 -81
- package/engines/redis/version-validator.ts +0 -131
- package/engines/sqlite/README.md +0 -162
- package/engines/sqlite/binary-manager.ts +0 -52
- package/engines/sqlite/hostdb-releases.ts +0 -23
- package/engines/sqlite/index.ts +0 -641
- package/engines/sqlite/registry.ts +0 -198
- package/engines/sqlite/scanner.ts +0 -22
- package/engines/sqlite/version-maps.ts +0 -64
- package/engines/surrealdb/README.md +0 -218
- package/engines/surrealdb/backup.ts +0 -131
- package/engines/surrealdb/binary-manager.ts +0 -45
- package/engines/surrealdb/binary-urls.ts +0 -40
- package/engines/surrealdb/cli-utils.ts +0 -173
- package/engines/surrealdb/hostdb-releases.ts +0 -23
- package/engines/surrealdb/index.ts +0 -1246
- package/engines/surrealdb/restore.ts +0 -302
- package/engines/surrealdb/version-maps.ts +0 -41
- package/engines/tigerbeetle/README.md +0 -61
- package/engines/tigerbeetle/backup.ts +0 -49
- package/engines/tigerbeetle/binary-manager.ts +0 -95
- package/engines/tigerbeetle/binary-urls.ts +0 -62
- package/engines/tigerbeetle/hostdb-releases.ts +0 -26
- package/engines/tigerbeetle/index.ts +0 -746
- package/engines/tigerbeetle/restore.ts +0 -130
- package/engines/tigerbeetle/version-validator.ts +0 -126
- package/engines/typedb/backup.ts +0 -167
- package/engines/typedb/binary-manager.ts +0 -200
- package/engines/typedb/binary-urls.ts +0 -40
- package/engines/typedb/cli-utils.ts +0 -210
- package/engines/typedb/hostdb-releases.ts +0 -23
- package/engines/typedb/index.ts +0 -1275
- package/engines/typedb/restore.ts +0 -377
- package/engines/typedb/version-maps.ts +0 -48
- package/engines/typedb/version-validator.ts +0 -127
- package/engines/valkey/README.md +0 -219
- package/engines/valkey/backup.ts +0 -389
- package/engines/valkey/binary-manager.ts +0 -45
- package/engines/valkey/binary-urls.ts +0 -122
- package/engines/valkey/cli-utils.ts +0 -42
- package/engines/valkey/hostdb-releases.ts +0 -23
- package/engines/valkey/index.ts +0 -1585
- package/engines/valkey/restore.ts +0 -446
- package/engines/valkey/version-maps.ts +0 -81
- package/engines/valkey/version-validator.ts +0 -131
- package/engines/weaviate/README.md +0 -302
- package/engines/weaviate/api-client.ts +0 -61
- package/engines/weaviate/backup.ts +0 -145
- package/engines/weaviate/binary-manager.ts +0 -80
- package/engines/weaviate/binary-urls.ts +0 -115
- package/engines/weaviate/cli-utils.ts +0 -43
- package/engines/weaviate/hostdb-releases.ts +0 -23
- package/engines/weaviate/index.ts +0 -1139
- package/engines/weaviate/restore.ts +0 -235
- package/engines/weaviate/version-maps.ts +0 -78
- package/engines/weaviate/version-validator.ts +0 -128
- package/types/index.ts +0 -624
- /package/{config → dist/config}/engines.json +0 -0
|
@@ -1,361 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MongoDB restore module
|
|
3
|
-
* Wraps mongorestore for restoring database backups
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { spawn, type SpawnOptions } from 'child_process'
|
|
7
|
-
import { existsSync, readdirSync, statSync } from 'fs'
|
|
8
|
-
import { open } from 'fs/promises'
|
|
9
|
-
import { join } from 'path'
|
|
10
|
-
import { logDebug, logWarning } from '../../core/error-handler'
|
|
11
|
-
import { getMongorestorePath, MONGORESTORE_NOT_FOUND_ERROR } from './cli-utils'
|
|
12
|
-
import type { BackupFormat, RestoreResult } from '../../types'
|
|
13
|
-
|
|
14
|
-
// Detect the format of a MongoDB backup
|
|
15
|
-
export async function detectBackupFormat(
|
|
16
|
-
filePath: string,
|
|
17
|
-
): Promise<BackupFormat> {
|
|
18
|
-
if (!existsSync(filePath)) {
|
|
19
|
-
throw new Error(`Backup file not found: ${filePath}`)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const stats = statSync(filePath)
|
|
23
|
-
|
|
24
|
-
// Directory dump
|
|
25
|
-
if (stats.isDirectory()) {
|
|
26
|
-
return {
|
|
27
|
-
format: 'directory',
|
|
28
|
-
description: 'MongoDB directory dump (BSON files)',
|
|
29
|
-
restoreCommand: `mongorestore --host 127.0.0.1 --port PORT --db DATABASE ${filePath}`,
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Check file contents for archive format
|
|
34
|
-
try {
|
|
35
|
-
const buffer = Buffer.alloc(16)
|
|
36
|
-
const fd = await open(filePath, 'r')
|
|
37
|
-
let header: string
|
|
38
|
-
try {
|
|
39
|
-
await fd.read(buffer, 0, 16, 0)
|
|
40
|
-
header = buffer.toString('utf8', 0, 6)
|
|
41
|
-
} finally {
|
|
42
|
-
await fd.close().catch(() => {})
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Check for gzip magic number
|
|
46
|
-
if (buffer[0] === 0x1f && buffer[1] === 0x8b) {
|
|
47
|
-
return {
|
|
48
|
-
format: 'archive-gzip',
|
|
49
|
-
description: 'MongoDB archive (gzip compressed)',
|
|
50
|
-
restoreCommand: `mongorestore --host 127.0.0.1 --port PORT --db DATABASE --archive=${filePath} --gzip`,
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Check for uncompressed archive (starts with "mtools")
|
|
55
|
-
if (header === 'mtools' || header.includes('mongo')) {
|
|
56
|
-
return {
|
|
57
|
-
format: 'archive',
|
|
58
|
-
description: 'MongoDB archive (uncompressed)',
|
|
59
|
-
restoreCommand: `mongorestore --host 127.0.0.1 --port PORT --db DATABASE --archive=${filePath}`,
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// Check for BSON file
|
|
64
|
-
if (filePath.endsWith('.bson')) {
|
|
65
|
-
return {
|
|
66
|
-
format: 'bson',
|
|
67
|
-
description: 'MongoDB BSON file',
|
|
68
|
-
restoreCommand: `mongorestore --host 127.0.0.1 --port PORT --db DATABASE ${filePath}`,
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// Default to archive format
|
|
73
|
-
return {
|
|
74
|
-
format: 'unknown',
|
|
75
|
-
description: 'Unknown format - attempting as archive',
|
|
76
|
-
restoreCommand: `mongorestore --host 127.0.0.1 --port PORT --db DATABASE --archive=${filePath}`,
|
|
77
|
-
}
|
|
78
|
-
} catch {
|
|
79
|
-
return {
|
|
80
|
-
format: 'unknown',
|
|
81
|
-
description: 'Could not detect format',
|
|
82
|
-
restoreCommand: `mongorestore --host 127.0.0.1 --port PORT ${filePath}`,
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// Restore options
|
|
88
|
-
export type RestoreOptions = {
|
|
89
|
-
port: number
|
|
90
|
-
database: string
|
|
91
|
-
drop?: boolean // Drop existing data before restore
|
|
92
|
-
validateVersion?: boolean
|
|
93
|
-
sourceDatabase?: string // Original database name in the backup (for namespace remapping)
|
|
94
|
-
containerVersion?: string // Container's MongoDB version for version-matched lookup
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Add namespace remapping args for archive format restores.
|
|
99
|
-
* Uses sourceDatabase if provided, otherwise uses $prefix$ placeholder.
|
|
100
|
-
*
|
|
101
|
-
* IMPORTANT: mongorestore uses $prefix$ and $suffix$ as special capture groups:
|
|
102
|
-
* - $prefix$ captures the database name from the source namespace
|
|
103
|
-
* - $suffix$ captures the collection name from the source namespace
|
|
104
|
-
*
|
|
105
|
-
* Do NOT use `*` instead of `$prefix$` - while `*` is a wildcard in some contexts,
|
|
106
|
-
* mongorestore requires matching capture groups on both sides of the remap.
|
|
107
|
-
* Using `*.*` on the left with `db.$suffix$` on the right fails with:
|
|
108
|
-
* "Different number of asterisks in from and to"
|
|
109
|
-
*/
|
|
110
|
-
function addNamespaceRemapArgs(
|
|
111
|
-
args: string[],
|
|
112
|
-
sourceDatabase: string | undefined,
|
|
113
|
-
targetDatabase: string,
|
|
114
|
-
): void {
|
|
115
|
-
const nsFromDb = sourceDatabase ?? '$prefix$'
|
|
116
|
-
args.push(
|
|
117
|
-
`--nsFrom=${nsFromDb}.$suffix$`,
|
|
118
|
-
`--nsTo=${targetDatabase}.$suffix$`,
|
|
119
|
-
)
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
// Restore a MongoDB backup using mongorestore
|
|
123
|
-
export async function restoreBackup(
|
|
124
|
-
backupPath: string,
|
|
125
|
-
options: RestoreOptions,
|
|
126
|
-
): Promise<RestoreResult> {
|
|
127
|
-
const {
|
|
128
|
-
port,
|
|
129
|
-
database,
|
|
130
|
-
drop = true,
|
|
131
|
-
sourceDatabase,
|
|
132
|
-
containerVersion,
|
|
133
|
-
} = options
|
|
134
|
-
|
|
135
|
-
const mongorestore = await getMongorestorePath(containerVersion)
|
|
136
|
-
if (!mongorestore) {
|
|
137
|
-
throw new Error(MONGORESTORE_NOT_FOUND_ERROR)
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// Detect backup format
|
|
141
|
-
const format = await detectBackupFormat(backupPath)
|
|
142
|
-
logDebug(`Detected backup format: ${format.format}`)
|
|
143
|
-
|
|
144
|
-
const args: string[] = ['--host', '127.0.0.1', '--port', String(port)]
|
|
145
|
-
|
|
146
|
-
if (drop) {
|
|
147
|
-
args.push('--drop')
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// Handle different formats
|
|
151
|
-
// For directory format, --db works directly
|
|
152
|
-
// For archive format, we need namespace remapping since --db alone doesn't remap
|
|
153
|
-
const isArchiveFormat =
|
|
154
|
-
format.format === 'archive-gzip' ||
|
|
155
|
-
format.format === 'archive' ||
|
|
156
|
-
format.format === 'unknown'
|
|
157
|
-
|
|
158
|
-
if (!isArchiveFormat) {
|
|
159
|
-
// Directory and BSON formats: --db works directly
|
|
160
|
-
args.push('--db', database)
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
if (format.format === 'directory') {
|
|
164
|
-
// Directory dump - look for database subdirectory
|
|
165
|
-
// First try the target database name
|
|
166
|
-
const targetDbDir = join(backupPath, database)
|
|
167
|
-
if (existsSync(targetDbDir)) {
|
|
168
|
-
args.push(targetDbDir)
|
|
169
|
-
} else {
|
|
170
|
-
// For restores to a different database, find any database subdirectory
|
|
171
|
-
// (mongodump creates backupPath/{sourceDatabase}/)
|
|
172
|
-
const entries = readdirSync(backupPath, { withFileTypes: true })
|
|
173
|
-
const dbDirs = entries.filter((e) => e.isDirectory())
|
|
174
|
-
|
|
175
|
-
if (dbDirs.length === 1) {
|
|
176
|
-
// Single database directory - use it
|
|
177
|
-
const sourceDbDir = join(backupPath, dbDirs[0].name)
|
|
178
|
-
logDebug(`Using source database directory: ${sourceDbDir}`)
|
|
179
|
-
args.push(sourceDbDir)
|
|
180
|
-
} else if (dbDirs.length > 1) {
|
|
181
|
-
// Multiple directories - try to find one with BSON files
|
|
182
|
-
const dbWithBson = dbDirs.find((d) => {
|
|
183
|
-
const dirPath = join(backupPath, d.name)
|
|
184
|
-
const files = readdirSync(dirPath)
|
|
185
|
-
return files.some((f) => f.endsWith('.bson'))
|
|
186
|
-
})
|
|
187
|
-
if (dbWithBson) {
|
|
188
|
-
const sourceDbDir = join(backupPath, dbWithBson.name)
|
|
189
|
-
logDebug(
|
|
190
|
-
`Using source database directory with BSON files: ${sourceDbDir}`,
|
|
191
|
-
)
|
|
192
|
-
args.push(sourceDbDir)
|
|
193
|
-
} else {
|
|
194
|
-
args.push(backupPath)
|
|
195
|
-
}
|
|
196
|
-
} else {
|
|
197
|
-
// No subdirectories - use path directly
|
|
198
|
-
args.push(backupPath)
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
} else if (format.format === 'archive-gzip') {
|
|
202
|
-
args.push('--archive=' + backupPath, '--gzip')
|
|
203
|
-
addNamespaceRemapArgs(args, sourceDatabase, database)
|
|
204
|
-
} else if (format.format === 'archive') {
|
|
205
|
-
args.push('--archive=' + backupPath)
|
|
206
|
-
addNamespaceRemapArgs(args, sourceDatabase, database)
|
|
207
|
-
} else if (format.format === 'bson') {
|
|
208
|
-
// BSON files are passed directly without --archive flag
|
|
209
|
-
args.push(backupPath)
|
|
210
|
-
} else {
|
|
211
|
-
// Default to archive for unknown formats
|
|
212
|
-
args.push('--archive=' + backupPath, '--gzip')
|
|
213
|
-
addNamespaceRemapArgs(args, sourceDatabase, database)
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
logDebug(`Running mongorestore with args: ${args.join(' ')}`)
|
|
217
|
-
|
|
218
|
-
// Note: Don't use shell mode - spawn handles paths with spaces correctly
|
|
219
|
-
// when shell: false (the default). Shell mode breaks paths like "C:\Program Files\..."
|
|
220
|
-
const spawnOptions: SpawnOptions = {
|
|
221
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
return new Promise((resolve, reject) => {
|
|
225
|
-
const proc = spawn(mongorestore, args, spawnOptions)
|
|
226
|
-
|
|
227
|
-
let stdout = ''
|
|
228
|
-
let stderr = ''
|
|
229
|
-
|
|
230
|
-
proc.stdout?.on('data', (data: Buffer) => {
|
|
231
|
-
stdout += data.toString()
|
|
232
|
-
})
|
|
233
|
-
proc.stderr?.on('data', (data: Buffer) => {
|
|
234
|
-
stderr += data.toString()
|
|
235
|
-
})
|
|
236
|
-
|
|
237
|
-
proc.on('error', reject)
|
|
238
|
-
|
|
239
|
-
proc.on('close', (code) => {
|
|
240
|
-
if (code === 0) {
|
|
241
|
-
resolve({
|
|
242
|
-
format: format.format,
|
|
243
|
-
stdout,
|
|
244
|
-
stderr,
|
|
245
|
-
code,
|
|
246
|
-
})
|
|
247
|
-
} else {
|
|
248
|
-
// mongorestore may exit with non-zero but still restore some data
|
|
249
|
-
if (
|
|
250
|
-
stderr.includes('continuing') ||
|
|
251
|
-
stderr.includes('documents restored')
|
|
252
|
-
) {
|
|
253
|
-
logWarning(`mongorestore completed with warnings: ${stderr}`)
|
|
254
|
-
resolve({
|
|
255
|
-
format: format.format,
|
|
256
|
-
stdout,
|
|
257
|
-
stderr,
|
|
258
|
-
code: code ?? undefined,
|
|
259
|
-
})
|
|
260
|
-
} else {
|
|
261
|
-
reject(new Error(stderr || `mongorestore exited with code ${code}`))
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
})
|
|
265
|
-
})
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
/**
|
|
269
|
-
* Parsed MongoDB connection string result
|
|
270
|
-
* For SRV URIs, only `uri` and `database` are set (host/port resolved via DNS)
|
|
271
|
-
* For standard URIs, host/port are parsed directly
|
|
272
|
-
*/
|
|
273
|
-
export type ParsedConnectionString =
|
|
274
|
-
| {
|
|
275
|
-
isSrv: true
|
|
276
|
-
uri: string
|
|
277
|
-
database: string
|
|
278
|
-
}
|
|
279
|
-
| {
|
|
280
|
-
isSrv: false
|
|
281
|
-
host: string
|
|
282
|
-
port: string
|
|
283
|
-
database: string
|
|
284
|
-
user?: string
|
|
285
|
-
password?: string
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
/**
|
|
289
|
-
* Parse a MongoDB connection string
|
|
290
|
-
*
|
|
291
|
-
* Supported formats:
|
|
292
|
-
* - mongodb://[user:password@]host[:port]/database
|
|
293
|
-
* - mongodb+srv://[user:password@]host/database
|
|
294
|
-
*
|
|
295
|
-
* SRV URIs use DNS to resolve hosts/ports and must be passed as --uri to mongodump/mongorestore.
|
|
296
|
-
*
|
|
297
|
-
* Database name handling:
|
|
298
|
-
* - Extracted from the URL pathname (e.g., "/mydb" → "mydb")
|
|
299
|
-
* - Leading slash is stripped automatically
|
|
300
|
-
* - If no database is specified (empty pathname or just "/"), defaults to "test"
|
|
301
|
-
* following MongoDB's convention for the default database name
|
|
302
|
-
*
|
|
303
|
-
* @param connectionString - MongoDB connection URI
|
|
304
|
-
* @returns Parsed connection details with `isSrv` discriminator
|
|
305
|
-
* @throws Error with descriptive message if:
|
|
306
|
-
* - Input is null, undefined, or not a string
|
|
307
|
-
* - URL is malformed (credentials are masked in error message)
|
|
308
|
-
* - Protocol is not "mongodb://" or "mongodb+srv://"
|
|
309
|
-
*/
|
|
310
|
-
export function parseConnectionString(
|
|
311
|
-
connectionString: string,
|
|
312
|
-
): ParsedConnectionString {
|
|
313
|
-
if (!connectionString || typeof connectionString !== 'string') {
|
|
314
|
-
throw new Error(
|
|
315
|
-
'Invalid MongoDB connection string: expected a non-empty string',
|
|
316
|
-
)
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
let url: URL
|
|
320
|
-
try {
|
|
321
|
-
url = new URL(connectionString)
|
|
322
|
-
} catch (error) {
|
|
323
|
-
// Mask credentials in error message if present
|
|
324
|
-
const sanitized = connectionString.replace(
|
|
325
|
-
/\/\/([^:]+):([^@]+)@/,
|
|
326
|
-
'//***:***@',
|
|
327
|
-
)
|
|
328
|
-
throw new Error(
|
|
329
|
-
`Invalid MongoDB connection string: "${sanitized}". ` +
|
|
330
|
-
`Expected format: mongodb://[user:password@]host[:port]/database`,
|
|
331
|
-
{ cause: error },
|
|
332
|
-
)
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
// Validate protocol
|
|
336
|
-
if (url.protocol !== 'mongodb:' && url.protocol !== 'mongodb+srv:') {
|
|
337
|
-
throw new Error(
|
|
338
|
-
`Invalid MongoDB connection string: unsupported protocol "${url.protocol}". ` +
|
|
339
|
-
`Expected "mongodb://" or "mongodb+srv://"`,
|
|
340
|
-
)
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
const database = url.pathname.replace(/^\//, '') || 'test'
|
|
344
|
-
|
|
345
|
-
// SRV URIs must be passed as-is via --uri (DNS resolves actual hosts/ports)
|
|
346
|
-
if (url.protocol === 'mongodb+srv:') {
|
|
347
|
-
return {
|
|
348
|
-
isSrv: true,
|
|
349
|
-
uri: connectionString,
|
|
350
|
-
database,
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
// Standard mongodb:// URIs can be parsed into host/port
|
|
355
|
-
const host = url.hostname || '127.0.0.1'
|
|
356
|
-
const port = url.port || '27017'
|
|
357
|
-
const user = url.username || undefined
|
|
358
|
-
const password = url.password || undefined
|
|
359
|
-
|
|
360
|
-
return { isSrv: false, host, port, database, user, password }
|
|
361
|
-
}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MongoDB version mapping
|
|
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
|
-
* To update: Check releases.json, find databases.mongodb, copy all version strings.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { logDebug } from '../../core/error-handler'
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Map major versions to full versions
|
|
15
|
-
* Keys are major.minor versions (e.g., "7.0", "8.0", "8.2")
|
|
16
|
-
* Values are full versions from hostdb releases.json
|
|
17
|
-
*/
|
|
18
|
-
export const MONGODB_VERSION_MAP: Record<string, string> = {
|
|
19
|
-
// 1-part: major version → LTS
|
|
20
|
-
'7': '7.0.28',
|
|
21
|
-
'8': '8.0.17',
|
|
22
|
-
// 2-part: major.minor → latest patch
|
|
23
|
-
'7.0': '7.0.28',
|
|
24
|
-
'8.0': '8.0.17',
|
|
25
|
-
'8.2': '8.2.3',
|
|
26
|
-
// 3-part: exact version (identity mapping)
|
|
27
|
-
'7.0.28': '7.0.28',
|
|
28
|
-
'8.0.17': '8.0.17',
|
|
29
|
-
'8.2.3': '8.2.3',
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Supported major MongoDB versions (2-part format).
|
|
34
|
-
* Used for grouping and display purposes.
|
|
35
|
-
*/
|
|
36
|
-
export const SUPPORTED_MAJOR_VERSIONS = ['7.0', '8.0', '8.2']
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Fallback map of major versions to stable patch versions
|
|
40
|
-
* Used when hostdb repository is unreachable
|
|
41
|
-
*/
|
|
42
|
-
export const FALLBACK_VERSION_MAP: Record<string, string> = MONGODB_VERSION_MAP
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Get the full version for a major version
|
|
46
|
-
* @param majorVersion - Major version (e.g., "7.0", "8.0")
|
|
47
|
-
* @returns Full version or null if not found
|
|
48
|
-
*/
|
|
49
|
-
export function getFullVersion(majorVersion: string): string | null {
|
|
50
|
-
// Try exact match first
|
|
51
|
-
if (MONGODB_VERSION_MAP[majorVersion]) {
|
|
52
|
-
return MONGODB_VERSION_MAP[majorVersion]
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// Try matching major only (e.g., "8" -> highest 8.x version)
|
|
56
|
-
const majorOnly = majorVersion.split('.')[0]
|
|
57
|
-
const matchingVersions = Object.entries(MONGODB_VERSION_MAP)
|
|
58
|
-
.filter(([key]) => key.split('.')[0] === majorOnly)
|
|
59
|
-
.sort(([a], [b]) => b.localeCompare(a, undefined, { numeric: true }))
|
|
60
|
-
|
|
61
|
-
if (matchingVersions.length > 0) {
|
|
62
|
-
return matchingVersions[0][1]
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return null
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Normalize a version string to a full version
|
|
70
|
-
* @param version - Version string (major, major.minor, or full)
|
|
71
|
-
* @returns Full version string
|
|
72
|
-
*/
|
|
73
|
-
export function normalizeVersion(version: string): string {
|
|
74
|
-
// If already a full version (x.y.z), return as-is
|
|
75
|
-
if (/^\d+\.\d+\.\d+$/.test(version)) {
|
|
76
|
-
return version
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// Delegate to getFullVersion for major/major.minor lookup
|
|
80
|
-
const fullVersion = getFullVersion(version)
|
|
81
|
-
if (fullVersion) {
|
|
82
|
-
return fullVersion
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// Unknown version format - log debug and return as-is
|
|
86
|
-
// This may cause download failures if the version doesn't exist in hostdb
|
|
87
|
-
logDebug(
|
|
88
|
-
`MongoDB version '${version}' not in version map, may not be available in hostdb`,
|
|
89
|
-
)
|
|
90
|
-
return version
|
|
91
|
-
}
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
// MongoDB version validation and compatibility checking
|
|
2
|
-
|
|
3
|
-
import { existsSync, readdirSync } from 'fs'
|
|
4
|
-
import { readFile } from 'fs/promises'
|
|
5
|
-
import { join } from 'path'
|
|
6
|
-
import { logDebug } from '../../core/error-handler'
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Parse a version string into components
|
|
10
|
-
* Handles formats like "8.0.4", "8.0", "v8.0.4"
|
|
11
|
-
*/
|
|
12
|
-
export function parseVersion(versionString: string): {
|
|
13
|
-
major: number
|
|
14
|
-
minor: number
|
|
15
|
-
patch: number
|
|
16
|
-
raw: string
|
|
17
|
-
} | null {
|
|
18
|
-
const cleaned = versionString.replace(/^v/, '').trim()
|
|
19
|
-
const parts = cleaned.split('.')
|
|
20
|
-
|
|
21
|
-
if (parts.length < 2) return null
|
|
22
|
-
|
|
23
|
-
const major = parseInt(parts[0], 10)
|
|
24
|
-
const minor = parseInt(parts[1], 10)
|
|
25
|
-
const patch = parts[2] ? parseInt(parts[2], 10) : 0
|
|
26
|
-
|
|
27
|
-
if (isNaN(major) || isNaN(minor)) return null
|
|
28
|
-
|
|
29
|
-
return { major, minor, patch, raw: cleaned }
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Compare two versions
|
|
34
|
-
* Returns: -1 if a < b, 0 if a == b, 1 if a > b, null if either version cannot be parsed
|
|
35
|
-
*/
|
|
36
|
-
export function compareVersions(a: string, b: string): number | null {
|
|
37
|
-
const parsedA = parseVersion(a)
|
|
38
|
-
const parsedB = parseVersion(b)
|
|
39
|
-
|
|
40
|
-
if (!parsedA || !parsedB) {
|
|
41
|
-
return null
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
if (parsedA.major !== parsedB.major) {
|
|
45
|
-
return parsedA.major < parsedB.major ? -1 : 1
|
|
46
|
-
}
|
|
47
|
-
if (parsedA.minor !== parsedB.minor) {
|
|
48
|
-
return parsedA.minor < parsedB.minor ? -1 : 1
|
|
49
|
-
}
|
|
50
|
-
if (parsedA.patch !== parsedB.patch) {
|
|
51
|
-
return parsedA.patch < parsedB.patch ? -1 : 1
|
|
52
|
-
}
|
|
53
|
-
return 0
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Check if a backup version is compatible with the restore version
|
|
58
|
-
* MongoDB allows restoring from older versions but not newer
|
|
59
|
-
*
|
|
60
|
-
* Compatible scenarios:
|
|
61
|
-
* - Same major.minor version (e.g., 8.0.2 -> 8.0.4)
|
|
62
|
-
* - One major version difference (e.g., 7.0.x -> 8.0.x)
|
|
63
|
-
*
|
|
64
|
-
* Incompatible:
|
|
65
|
-
* - Restoring newer dump to older server
|
|
66
|
-
* - More than one major version difference
|
|
67
|
-
*/
|
|
68
|
-
export function isVersionCompatible(
|
|
69
|
-
backupVersion: string,
|
|
70
|
-
restoreVersion: string,
|
|
71
|
-
): { compatible: boolean; warning?: string } {
|
|
72
|
-
const backup = parseVersion(backupVersion)
|
|
73
|
-
const restore = parseVersion(restoreVersion)
|
|
74
|
-
|
|
75
|
-
if (!backup || !restore) {
|
|
76
|
-
return {
|
|
77
|
-
compatible: true,
|
|
78
|
-
warning: 'Could not parse versions, proceeding with restore',
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// Cannot restore newer dump to older server
|
|
83
|
-
if (backup.major > restore.major) {
|
|
84
|
-
return {
|
|
85
|
-
compatible: false,
|
|
86
|
-
warning: `Cannot restore MongoDB ${backupVersion} backup to ${restoreVersion} server. The backup is from a newer major version.`,
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// Allow same major version
|
|
91
|
-
if (backup.major === restore.major) {
|
|
92
|
-
return { compatible: true }
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// Allow one major version upgrade (e.g., 7.0 -> 8.0)
|
|
96
|
-
if (restore.major - backup.major === 1) {
|
|
97
|
-
return {
|
|
98
|
-
compatible: true,
|
|
99
|
-
warning: `Restoring MongoDB ${backupVersion} backup to ${restoreVersion} server. Consider running database upgrade procedures after restore.`,
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// More than one major version difference
|
|
104
|
-
return {
|
|
105
|
-
compatible: false,
|
|
106
|
-
warning: `Cannot restore MongoDB ${backupVersion} backup to ${restoreVersion} server. The version difference is too large.`,
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Extract version from a mongodump directory
|
|
112
|
-
* Mongodump creates a metadata.json file with version info
|
|
113
|
-
*/
|
|
114
|
-
export async function extractVersionFromDump(
|
|
115
|
-
dumpPath: string,
|
|
116
|
-
): Promise<string | null> {
|
|
117
|
-
try {
|
|
118
|
-
// Check if it's a directory dump
|
|
119
|
-
if (!existsSync(dumpPath)) {
|
|
120
|
-
return null
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// Look for oplog.bson or any .metadata.json file
|
|
124
|
-
const files = readdirSync(dumpPath, { recursive: true }) as string[]
|
|
125
|
-
|
|
126
|
-
for (const file of files) {
|
|
127
|
-
if (file.endsWith('.metadata.json')) {
|
|
128
|
-
const metadataPath = join(dumpPath, file)
|
|
129
|
-
const content = await readFile(metadataPath, 'utf8')
|
|
130
|
-
const metadata = JSON.parse(content)
|
|
131
|
-
|
|
132
|
-
// Check for version in metadata
|
|
133
|
-
if (metadata.version) {
|
|
134
|
-
return metadata.version
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
return null
|
|
140
|
-
} catch (error) {
|
|
141
|
-
logDebug(`Failed to extract version from dump: ${error}`)
|
|
142
|
-
return null
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* Get major.minor version from full version string
|
|
148
|
-
* e.g., "8.0.4" -> "8.0"
|
|
149
|
-
*/
|
|
150
|
-
export function getMajorMinorVersion(version: string): string {
|
|
151
|
-
const parsed = parseVersion(version)
|
|
152
|
-
if (!parsed) return version
|
|
153
|
-
return `${parsed.major}.${parsed.minor}`
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// Validate that a version string matches supported format
|
|
157
|
-
export function isValidVersionFormat(version: string): boolean {
|
|
158
|
-
const parsed = parseVersion(version)
|
|
159
|
-
return parsed !== null
|
|
160
|
-
}
|