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,417 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* InfluxDB restore module
|
|
3
|
-
* Supports SQL-based restore using InfluxDB's REST API
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { open, readFile as readFileAsync } from 'fs/promises'
|
|
7
|
-
import { existsSync, statSync } from 'fs'
|
|
8
|
-
import { logDebug } from '../../core/error-handler'
|
|
9
|
-
import { influxdbApiRequest } from './api-client'
|
|
10
|
-
import type { BackupFormat, RestoreResult } from '../../types'
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Detect backup format from file
|
|
14
|
-
* InfluxDB uses SQL dump files
|
|
15
|
-
*/
|
|
16
|
-
export async function detectBackupFormat(
|
|
17
|
-
filePath: string,
|
|
18
|
-
): Promise<BackupFormat> {
|
|
19
|
-
if (!existsSync(filePath)) {
|
|
20
|
-
throw new Error(`Backup file not found: ${filePath}`)
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const stats = statSync(filePath)
|
|
24
|
-
|
|
25
|
-
if (stats.isDirectory()) {
|
|
26
|
-
return {
|
|
27
|
-
format: 'unknown',
|
|
28
|
-
description: 'Directory found - InfluxDB uses single SQL dump files',
|
|
29
|
-
restoreCommand: 'InfluxDB requires a single .sql file for restore',
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Check file extension for .sql files
|
|
34
|
-
if (filePath.endsWith('.sql')) {
|
|
35
|
-
return {
|
|
36
|
-
format: 'sql',
|
|
37
|
-
description: 'InfluxDB SQL dump file',
|
|
38
|
-
restoreCommand:
|
|
39
|
-
'Restore via InfluxDB REST API (spindb restore handles this)',
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// Check file contents for SQL patterns
|
|
44
|
-
try {
|
|
45
|
-
const HEADER_SIZE = 4096
|
|
46
|
-
const buffer = Buffer.alloc(HEADER_SIZE)
|
|
47
|
-
const fd = await open(filePath, 'r')
|
|
48
|
-
let bytesRead: number
|
|
49
|
-
try {
|
|
50
|
-
const result = await fd.read(buffer, 0, HEADER_SIZE, 0)
|
|
51
|
-
bytesRead = result.bytesRead
|
|
52
|
-
} finally {
|
|
53
|
-
await fd.close().catch(() => {})
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
const content = buffer.toString('utf-8', 0, bytesRead)
|
|
57
|
-
|
|
58
|
-
// Check for InfluxDB-specific marker first
|
|
59
|
-
if (content.includes('-- InfluxDB SQL Backup')) {
|
|
60
|
-
return {
|
|
61
|
-
format: 'sql',
|
|
62
|
-
description: 'InfluxDB SQL dump file (detected by content)',
|
|
63
|
-
restoreCommand:
|
|
64
|
-
'Restore via InfluxDB REST API (spindb restore handles this)',
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// Fall back to generic SQL markers with a warning
|
|
69
|
-
if (content.includes('INSERT INTO') || content.includes('CREATE TABLE')) {
|
|
70
|
-
logDebug(
|
|
71
|
-
`Backup file "${filePath}" detected as SQL by generic markers (INSERT INTO / CREATE TABLE) — not the InfluxDB-specific header. Verify this is an InfluxDB backup.`,
|
|
72
|
-
)
|
|
73
|
-
return {
|
|
74
|
-
format: 'sql',
|
|
75
|
-
description:
|
|
76
|
-
'SQL dump file (detected by generic markers, may not be InfluxDB-specific)',
|
|
77
|
-
restoreCommand:
|
|
78
|
-
'Restore via InfluxDB REST API (spindb restore handles this)',
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
} catch (error) {
|
|
82
|
-
logDebug(`Error reading backup file header: ${error}`)
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return {
|
|
86
|
-
format: 'unknown',
|
|
87
|
-
description: 'Unknown backup format',
|
|
88
|
-
restoreCommand: 'Use .sql file for restore',
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// Restore options for InfluxDB
|
|
93
|
-
export type RestoreOptions = {
|
|
94
|
-
containerName: string
|
|
95
|
-
port: number
|
|
96
|
-
database: string
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Parse SQL VALUES clause into an array of string values.
|
|
101
|
-
* Handles SQL string escaping ('' for embedded single quotes).
|
|
102
|
-
*
|
|
103
|
-
* NOTE: The `if (trimmed)` check on comma is intentional. Quoted strings push
|
|
104
|
-
* their value when the closing quote is encountered, leaving `current` empty.
|
|
105
|
-
* The subsequent comma separator sees that empty `current` and correctly skips
|
|
106
|
-
* it — it's a delimiter between quoted values, not an empty field. The backup
|
|
107
|
-
* code (backup.ts) never produces truly empty values (always NULL, numbers,
|
|
108
|
-
* booleans, or quoted strings), so this is safe. Do NOT change to always-push
|
|
109
|
-
* without also fixing the quoted-string-then-comma double-push problem.
|
|
110
|
-
*/
|
|
111
|
-
function parseSqlValues(valuesStr: string): string[] {
|
|
112
|
-
const values: string[] = []
|
|
113
|
-
let current = ''
|
|
114
|
-
let inString = false
|
|
115
|
-
|
|
116
|
-
for (let i = 0; i < valuesStr.length; i++) {
|
|
117
|
-
const ch = valuesStr[i]
|
|
118
|
-
|
|
119
|
-
if (inString) {
|
|
120
|
-
if (ch === "'" && valuesStr[i + 1] === "'") {
|
|
121
|
-
// Escaped single quote
|
|
122
|
-
current += "'"
|
|
123
|
-
i++
|
|
124
|
-
} else if (ch === "'") {
|
|
125
|
-
// End of string
|
|
126
|
-
inString = false
|
|
127
|
-
values.push(current)
|
|
128
|
-
current = ''
|
|
129
|
-
} else {
|
|
130
|
-
current += ch
|
|
131
|
-
}
|
|
132
|
-
} else {
|
|
133
|
-
if (ch === "'") {
|
|
134
|
-
inString = true
|
|
135
|
-
current = ''
|
|
136
|
-
} else if (ch === ',') {
|
|
137
|
-
const trimmed = current.trim()
|
|
138
|
-
if (trimmed) {
|
|
139
|
-
values.push(trimmed)
|
|
140
|
-
}
|
|
141
|
-
current = ''
|
|
142
|
-
} else {
|
|
143
|
-
current += ch
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
const trimmed = current.trim()
|
|
149
|
-
if (trimmed) {
|
|
150
|
-
values.push(trimmed)
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
return values
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Convert parsed INSERT data to InfluxDB line protocol format.
|
|
158
|
-
* Format: measurement,tag1=val1 field1="val1",field2="val2" timestamp_ns
|
|
159
|
-
*
|
|
160
|
-
* Tag columns (from backup metadata) become line protocol tags,
|
|
161
|
-
* remaining columns become fields. This preserves the original schema
|
|
162
|
-
* so that records with the same timestamp remain distinct.
|
|
163
|
-
*/
|
|
164
|
-
/**
|
|
165
|
-
* Encode a SQL value as an InfluxDB line protocol field value.
|
|
166
|
-
* - Booleans: unquoted (true/false)
|
|
167
|
-
* - Integers: trailing 'i' (e.g. 123i) — only when the raw string has no
|
|
168
|
-
* decimal point or exponent, so "123.0" is preserved as a float
|
|
169
|
-
* - Floats: unquoted numeric (e.g. 3.14)
|
|
170
|
-
* - Strings: double-quoted with escaping
|
|
171
|
-
*/
|
|
172
|
-
export function encodeFieldValue(val: string): string {
|
|
173
|
-
if (val === 'true' || val === 'false') {
|
|
174
|
-
return val
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
const num = Number(val)
|
|
178
|
-
if (!isNaN(num) && val !== '') {
|
|
179
|
-
if (Number.isInteger(num) && !/[.eE]/.test(val)) {
|
|
180
|
-
return `${num}i`
|
|
181
|
-
}
|
|
182
|
-
return `${num}`
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
const escaped = val.replace(/\\/g, '\\\\').replace(/"/g, '\\"')
|
|
186
|
-
return `"${escaped}"`
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
function toLineProtocol(
|
|
190
|
-
table: string,
|
|
191
|
-
columns: string[],
|
|
192
|
-
values: string[],
|
|
193
|
-
tagColumns: Set<string>,
|
|
194
|
-
): string | null {
|
|
195
|
-
const tags: string[] = []
|
|
196
|
-
const fields: string[] = []
|
|
197
|
-
let timestampNs = ''
|
|
198
|
-
|
|
199
|
-
for (let i = 0; i < columns.length; i++) {
|
|
200
|
-
const col = columns[i]
|
|
201
|
-
const val = values[i]
|
|
202
|
-
|
|
203
|
-
if (!val || val === 'NULL') continue
|
|
204
|
-
|
|
205
|
-
if (col === 'time') {
|
|
206
|
-
const ms = new Date(val).getTime()
|
|
207
|
-
if (!isNaN(ms)) {
|
|
208
|
-
timestampNs = String(ms * 1_000_000)
|
|
209
|
-
} else {
|
|
210
|
-
logDebug(`Warning: unparseable timestamp value "${val}" in restore`)
|
|
211
|
-
}
|
|
212
|
-
continue
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
if (tagColumns.has(col)) {
|
|
216
|
-
// Tags: key=value (no quotes, escape spaces/commas/equals)
|
|
217
|
-
const escaped = val
|
|
218
|
-
.replace(/\\/g, '\\\\')
|
|
219
|
-
.replace(/ /g, '\\ ')
|
|
220
|
-
.replace(/,/g, '\\,')
|
|
221
|
-
.replace(/=/g, '\\=')
|
|
222
|
-
tags.push(`${col}=${escaped}`)
|
|
223
|
-
} else {
|
|
224
|
-
fields.push(`${col}=${encodeFieldValue(val)}`)
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
if (fields.length === 0) return null
|
|
229
|
-
|
|
230
|
-
let line = table
|
|
231
|
-
if (tags.length > 0) {
|
|
232
|
-
line += `,${tags.join(',')}`
|
|
233
|
-
}
|
|
234
|
-
line += ` ${fields.join(',')}`
|
|
235
|
-
if (timestampNs) {
|
|
236
|
-
line += ` ${timestampNs}`
|
|
237
|
-
}
|
|
238
|
-
return line
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
/**
|
|
242
|
-
* Restore from SQL backup by parsing INSERT statements, converting to
|
|
243
|
-
* line protocol, and writing via the write_lp endpoint.
|
|
244
|
-
*
|
|
245
|
-
* InfluxDB 3.x does not support INSERT via the query_sql endpoint —
|
|
246
|
-
* data writes must go through /api/v3/write_lp.
|
|
247
|
-
*/
|
|
248
|
-
async function restoreSqlBackup(
|
|
249
|
-
backupPath: string,
|
|
250
|
-
options: RestoreOptions,
|
|
251
|
-
): Promise<RestoreResult> {
|
|
252
|
-
const { port, database } = options
|
|
253
|
-
|
|
254
|
-
logDebug(
|
|
255
|
-
`Restoring SQL backup to InfluxDB on port ${port}, database ${database}`,
|
|
256
|
-
)
|
|
257
|
-
|
|
258
|
-
const content = await readFileAsync(backupPath, 'utf-8')
|
|
259
|
-
|
|
260
|
-
// Parse tag metadata from backup comments (-- Tags: col1, col2)
|
|
261
|
-
const tagsByTable = new Map<string, Set<string>>()
|
|
262
|
-
const tagsRegex = /-- Table: (\S+)\r?\n-- Tags: (.+)/g
|
|
263
|
-
let tagsMatch
|
|
264
|
-
while ((tagsMatch = tagsRegex.exec(content)) !== null) {
|
|
265
|
-
const table = tagsMatch[1]
|
|
266
|
-
const tags = new Set(tagsMatch[2].split(',').map((t) => t.trim()))
|
|
267
|
-
tagsByTable.set(table, tags)
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
// Parse INSERT INTO statements and convert to line protocol
|
|
271
|
-
const insertRegex =
|
|
272
|
-
/INSERT INTO "([^"]+)"\s*\(([^)]+)\)\s*VALUES\s*\((.+)\);/g
|
|
273
|
-
const linesByTable = new Map<string, string[]>()
|
|
274
|
-
|
|
275
|
-
let match
|
|
276
|
-
while ((match = insertRegex.exec(content)) !== null) {
|
|
277
|
-
const table = match[1]
|
|
278
|
-
const columns = match[2].split(',').map((c) => c.trim().replace(/"/g, ''))
|
|
279
|
-
const values = parseSqlValues(match[3])
|
|
280
|
-
const tableTags = tagsByTable.get(table) ?? new Set<string>()
|
|
281
|
-
const line = toLineProtocol(table, columns, values, tableTags)
|
|
282
|
-
|
|
283
|
-
if (line) {
|
|
284
|
-
if (!linesByTable.has(table)) linesByTable.set(table, [])
|
|
285
|
-
linesByTable.get(table)!.push(line)
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
logDebug(
|
|
290
|
-
`Parsed ${[...linesByTable.values()].reduce((sum, l) => sum + l.length, 0)} records from ${linesByTable.size} tables`,
|
|
291
|
-
)
|
|
292
|
-
|
|
293
|
-
let totalRecords = 0
|
|
294
|
-
const errors: string[] = []
|
|
295
|
-
|
|
296
|
-
for (const [table, lines] of linesByTable) {
|
|
297
|
-
const body = lines.join('\n')
|
|
298
|
-
try {
|
|
299
|
-
const response = await influxdbApiRequest(
|
|
300
|
-
port,
|
|
301
|
-
'POST',
|
|
302
|
-
`/api/v3/write_lp?db=${encodeURIComponent(database)}`,
|
|
303
|
-
body,
|
|
304
|
-
)
|
|
305
|
-
|
|
306
|
-
if (response.status < 300) {
|
|
307
|
-
totalRecords += lines.length
|
|
308
|
-
} else {
|
|
309
|
-
errors.push(
|
|
310
|
-
`Failed to write ${table}: ${JSON.stringify(response.data)}`,
|
|
311
|
-
)
|
|
312
|
-
logDebug(
|
|
313
|
-
`write_lp error for ${table}: ${JSON.stringify(response.data)}`,
|
|
314
|
-
)
|
|
315
|
-
}
|
|
316
|
-
} catch (error) {
|
|
317
|
-
errors.push(
|
|
318
|
-
`Error writing ${table}: ${error instanceof Error ? error.message : String(error)}`,
|
|
319
|
-
)
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
const message =
|
|
324
|
-
`Restored ${totalRecords} records from ${linesByTable.size} tables` +
|
|
325
|
-
(errors.length > 0 ? `. ${errors.length} errors.` : '')
|
|
326
|
-
|
|
327
|
-
return {
|
|
328
|
-
format: 'sql',
|
|
329
|
-
stdout: message,
|
|
330
|
-
code: errors.length > 0 ? 1 : 0,
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
/**
|
|
335
|
-
* Restore from backup
|
|
336
|
-
* Supports SQL format
|
|
337
|
-
*/
|
|
338
|
-
export async function restoreBackup(
|
|
339
|
-
backupPath: string,
|
|
340
|
-
options: RestoreOptions,
|
|
341
|
-
): Promise<RestoreResult> {
|
|
342
|
-
if (!existsSync(backupPath)) {
|
|
343
|
-
throw new Error(`Backup file not found: ${backupPath}`)
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
// Detect backup format
|
|
347
|
-
const format = await detectBackupFormat(backupPath)
|
|
348
|
-
logDebug(`Detected backup format: ${format.format}`)
|
|
349
|
-
|
|
350
|
-
if (format.format === 'sql') {
|
|
351
|
-
return restoreSqlBackup(backupPath, options)
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
throw new Error(
|
|
355
|
-
`Invalid backup format: ${format.format}. Use .sql file for restore.`,
|
|
356
|
-
)
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
/**
|
|
360
|
-
* Parse InfluxDB connection string
|
|
361
|
-
* Format: http://host[:port], https://host[:port], or influxdb://host[:port]
|
|
362
|
-
*
|
|
363
|
-
* The influxdb:// scheme is an alias for http://
|
|
364
|
-
*/
|
|
365
|
-
export function parseConnectionString(connectionString: string): {
|
|
366
|
-
host: string
|
|
367
|
-
port: number
|
|
368
|
-
protocol: 'http' | 'https'
|
|
369
|
-
database?: string
|
|
370
|
-
} {
|
|
371
|
-
if (!connectionString || typeof connectionString !== 'string') {
|
|
372
|
-
throw new Error(
|
|
373
|
-
'Invalid InfluxDB connection string: expected a non-empty string',
|
|
374
|
-
)
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
// Handle influxdb:// scheme
|
|
378
|
-
let normalized = connectionString.trim()
|
|
379
|
-
if (normalized.startsWith('influxdb://')) {
|
|
380
|
-
normalized = normalized.replace('influxdb://', 'http://')
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
let url: URL
|
|
384
|
-
try {
|
|
385
|
-
url = new URL(normalized)
|
|
386
|
-
} catch (error) {
|
|
387
|
-
throw new Error(
|
|
388
|
-
`Invalid InfluxDB connection string: "${connectionString}". ` +
|
|
389
|
-
`Expected format: http://host[:port] or influxdb://host[:port]`,
|
|
390
|
-
{ cause: error },
|
|
391
|
-
)
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
// Validate protocol
|
|
395
|
-
let protocol: 'http' | 'https'
|
|
396
|
-
if (url.protocol === 'http:') {
|
|
397
|
-
protocol = 'http'
|
|
398
|
-
} else if (url.protocol === 'https:') {
|
|
399
|
-
protocol = 'https'
|
|
400
|
-
} else {
|
|
401
|
-
throw new Error(
|
|
402
|
-
`Invalid InfluxDB connection string: unsupported protocol "${url.protocol}". ` +
|
|
403
|
-
`Expected "http://", "https://", or "influxdb://"`,
|
|
404
|
-
)
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
const host = url.hostname || '127.0.0.1'
|
|
408
|
-
const port = parseInt(url.port, 10) || 8086
|
|
409
|
-
const database = url.searchParams.get('db') || undefined
|
|
410
|
-
|
|
411
|
-
return {
|
|
412
|
-
host,
|
|
413
|
-
port,
|
|
414
|
-
protocol,
|
|
415
|
-
database,
|
|
416
|
-
}
|
|
417
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* InfluxDB 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 INFLUXDB_VERSION_MAP to match
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import { logDebug } from '../../core/error-handler'
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Map of major InfluxDB versions to their latest stable patch versions.
|
|
17
|
-
* Must match versions available in hostdb releases.json.
|
|
18
|
-
*/
|
|
19
|
-
export const INFLUXDB_VERSION_MAP: Record<string, string> = {
|
|
20
|
-
// 1-part: major version -> latest
|
|
21
|
-
'3': '3.8.0',
|
|
22
|
-
// 2-part: major.minor -> latest patch
|
|
23
|
-
'3.8': '3.8.0',
|
|
24
|
-
// 3-part: exact version (identity mapping)
|
|
25
|
-
'3.8.0': '3.8.0',
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Supported major InfluxDB versions (1-part format).
|
|
30
|
-
* Used for grouping and display purposes.
|
|
31
|
-
*/
|
|
32
|
-
export const SUPPORTED_MAJOR_VERSIONS = ['3']
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Get the full version string for a major version.
|
|
36
|
-
*
|
|
37
|
-
* @param majorVersion - Major version (e.g., '3')
|
|
38
|
-
* @returns Full version string (e.g., '3.8.0') or null if not supported
|
|
39
|
-
*/
|
|
40
|
-
export function getFullVersion(majorVersion: string): string | null {
|
|
41
|
-
return INFLUXDB_VERSION_MAP[majorVersion] || null
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Normalize a version string to X.Y.Z format.
|
|
46
|
-
*
|
|
47
|
-
* @param version - Version string (e.g., '3', '3.8', '3.8.0')
|
|
48
|
-
* @returns Normalized version (e.g., '3.8.0')
|
|
49
|
-
*/
|
|
50
|
-
export function normalizeVersion(version: string): string {
|
|
51
|
-
// If it's in the version map (major, major.minor, or full version), return the mapped value
|
|
52
|
-
const fullVersion = INFLUXDB_VERSION_MAP[version]
|
|
53
|
-
if (fullVersion) {
|
|
54
|
-
return fullVersion
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// Unknown version - warn and return as-is
|
|
58
|
-
const parts = version.split('.')
|
|
59
|
-
|
|
60
|
-
const isValidFormat =
|
|
61
|
-
parts.length >= 1 &&
|
|
62
|
-
parts.length <= 3 &&
|
|
63
|
-
parts.every((p) => /^\d+$/.test(p))
|
|
64
|
-
|
|
65
|
-
if (!isValidFormat) {
|
|
66
|
-
logDebug(
|
|
67
|
-
`InfluxDB version '${version}' has invalid format, may not be available in hostdb`,
|
|
68
|
-
)
|
|
69
|
-
} else {
|
|
70
|
-
logDebug(
|
|
71
|
-
`InfluxDB version '${version}' not in version map, may not be available in hostdb`,
|
|
72
|
-
)
|
|
73
|
-
}
|
|
74
|
-
return version
|
|
75
|
-
}
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* InfluxDB version validation utilities
|
|
3
|
-
* Handles version parsing, comparison, and compatibility checking
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Parse an InfluxDB version string into components
|
|
8
|
-
* Handles formats like "3.8.0", "3.8", "v3.8.0"
|
|
9
|
-
*/
|
|
10
|
-
export function parseVersion(versionString: string): {
|
|
11
|
-
major: number
|
|
12
|
-
minor: number
|
|
13
|
-
patch: number
|
|
14
|
-
raw: string
|
|
15
|
-
} | null {
|
|
16
|
-
const cleaned = versionString.replace(/^v/, '').trim()
|
|
17
|
-
const parts = cleaned.split('.')
|
|
18
|
-
|
|
19
|
-
if (parts.length < 1) return null
|
|
20
|
-
|
|
21
|
-
const major = parseInt(parts[0], 10)
|
|
22
|
-
const minor = parts[1] ? parseInt(parts[1], 10) : 0
|
|
23
|
-
const patch = parts[2] ? parseInt(parts[2], 10) : 0
|
|
24
|
-
|
|
25
|
-
if (isNaN(major)) return null
|
|
26
|
-
if (parts[1] && isNaN(minor)) return null
|
|
27
|
-
if (parts[2] && isNaN(patch)) return null
|
|
28
|
-
|
|
29
|
-
return { major, minor, patch, raw: cleaned }
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Check if an InfluxDB version is supported by SpinDB
|
|
34
|
-
* Minimum supported version: 3.0.0 (InfluxDB 3.x is the Rust rewrite)
|
|
35
|
-
*/
|
|
36
|
-
export function isVersionSupported(version: string): boolean {
|
|
37
|
-
const parsed = parseVersion(version)
|
|
38
|
-
if (!parsed) return false
|
|
39
|
-
|
|
40
|
-
return parsed.major >= 3
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Get major version from full version string
|
|
45
|
-
* e.g., "3.8.0" -> "3"
|
|
46
|
-
*/
|
|
47
|
-
export function getMajorVersion(version: string): string {
|
|
48
|
-
const parsed = parseVersion(version)
|
|
49
|
-
return parsed ? String(parsed.major) : version
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Get major.minor version from full version string
|
|
54
|
-
* e.g., "3.8.0" -> "3.8"
|
|
55
|
-
*/
|
|
56
|
-
export function getMajorMinorVersion(version: string): string {
|
|
57
|
-
const parsed = parseVersion(version)
|
|
58
|
-
if (!parsed) return version
|
|
59
|
-
return `${parsed.major}.${parsed.minor}`
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Compare two InfluxDB versions
|
|
64
|
-
* Returns: -1 if a < b, 0 if a == b, 1 if a > b, null if either version cannot be parsed
|
|
65
|
-
*/
|
|
66
|
-
export function compareVersions(a: string, b: string): number | null {
|
|
67
|
-
const parsedA = parseVersion(a)
|
|
68
|
-
const parsedB = parseVersion(b)
|
|
69
|
-
|
|
70
|
-
if (!parsedA || !parsedB) {
|
|
71
|
-
return null
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
if (parsedA.major !== parsedB.major) {
|
|
75
|
-
return parsedA.major < parsedB.major ? -1 : 1
|
|
76
|
-
}
|
|
77
|
-
if (parsedA.minor !== parsedB.minor) {
|
|
78
|
-
return parsedA.minor < parsedB.minor ? -1 : 1
|
|
79
|
-
}
|
|
80
|
-
if (parsedA.patch !== parsedB.patch) {
|
|
81
|
-
return parsedA.patch < parsedB.patch ? -1 : 1
|
|
82
|
-
}
|
|
83
|
-
return 0
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Check if a backup version is compatible with the restore version
|
|
88
|
-
* InfluxDB 3.x backups are generally compatible within the same major version
|
|
89
|
-
*/
|
|
90
|
-
export function isVersionCompatible(
|
|
91
|
-
backupVersion: string,
|
|
92
|
-
restoreVersion: string,
|
|
93
|
-
): { compatible: boolean; warning?: string } {
|
|
94
|
-
const backup = parseVersion(backupVersion)
|
|
95
|
-
const restore = parseVersion(restoreVersion)
|
|
96
|
-
|
|
97
|
-
if (!backup || !restore) {
|
|
98
|
-
return {
|
|
99
|
-
compatible: true,
|
|
100
|
-
warning: 'Could not parse versions, proceeding with restore',
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// Cannot restore newer backup to older server
|
|
105
|
-
if (backup.major > restore.major) {
|
|
106
|
-
return {
|
|
107
|
-
compatible: false,
|
|
108
|
-
warning: `Cannot restore InfluxDB ${backupVersion} backup to ${restoreVersion} server. The backup is from a newer major version.`,
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// Allow same major version
|
|
113
|
-
if (backup.major === restore.major) {
|
|
114
|
-
return { compatible: true }
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// Allow upgrading from older major version
|
|
118
|
-
return {
|
|
119
|
-
compatible: true,
|
|
120
|
-
warning: `Restoring InfluxDB ${backupVersion} backup to ${restoreVersion} server. Data format may be upgraded.`,
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// Validate that a version string matches supported format
|
|
125
|
-
export function isValidVersionFormat(version: string): boolean {
|
|
126
|
-
const parsed = parseVersion(version)
|
|
127
|
-
return parsed !== null
|
|
128
|
-
}
|