spindb 0.37.2 → 0.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/bin.js +9 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/commands/attach.js +102 -0
- package/dist/cli/commands/attach.js.map +1 -0
- package/dist/cli/commands/backup.js +197 -0
- package/dist/cli/commands/backup.js.map +1 -0
- package/dist/cli/commands/backups.js +190 -0
- package/dist/cli/commands/backups.js.map +1 -0
- package/dist/cli/commands/clone.js +119 -0
- package/dist/cli/commands/clone.js.map +1 -0
- package/dist/cli/commands/config.js +276 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/connect.js +559 -0
- package/dist/cli/commands/connect.js.map +1 -0
- package/dist/cli/commands/create.js +952 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/databases.js +485 -0
- package/dist/cli/commands/databases.js.map +1 -0
- package/dist/cli/commands/delete.js +106 -0
- package/dist/cli/commands/delete.js.map +1 -0
- package/dist/cli/commands/deps.js +238 -0
- package/dist/cli/commands/deps.js.map +1 -0
- package/dist/cli/commands/detach.js +81 -0
- package/dist/cli/commands/detach.js.map +1 -0
- package/dist/cli/commands/doctor.js +567 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/duckdb.js +207 -0
- package/dist/cli/commands/duckdb.js.map +1 -0
- package/dist/cli/commands/edit.js +524 -0
- package/dist/cli/commands/edit.js.map +1 -0
- package/dist/cli/commands/engines.js +1414 -0
- package/dist/cli/commands/engines.js.map +1 -0
- package/dist/cli/commands/export.js +383 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/info.js +270 -0
- package/dist/cli/commands/info.js.map +1 -0
- package/dist/cli/commands/list.js +215 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/logs.js +81 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/menu/backup-handlers.js +1202 -0
- package/dist/cli/commands/menu/backup-handlers.js.map +1 -0
- package/dist/cli/commands/menu/container-handlers.js +1788 -0
- package/dist/cli/commands/menu/container-handlers.js.map +1 -0
- package/dist/cli/commands/menu/engine-handlers.js +235 -0
- package/dist/cli/commands/menu/engine-handlers.js.map +1 -0
- package/dist/cli/commands/menu/index.js +266 -0
- package/dist/cli/commands/menu/index.js.map +1 -0
- package/dist/cli/commands/menu/settings-handlers.js +320 -0
- package/dist/cli/commands/menu/settings-handlers.js.map +1 -0
- package/dist/cli/commands/menu/shared.js +13 -0
- package/dist/cli/commands/menu/shared.js.map +1 -0
- package/dist/cli/commands/menu/shell-handlers.js +1573 -0
- package/dist/cli/commands/menu/shell-handlers.js.map +1 -0
- package/dist/cli/commands/menu/sql-handlers.js +185 -0
- package/dist/cli/commands/menu/sql-handlers.js.map +1 -0
- package/dist/cli/commands/menu/update-handlers.js +322 -0
- package/dist/cli/commands/menu/update-handlers.js.map +1 -0
- package/dist/cli/commands/menu/validators.js +9 -0
- package/dist/cli/commands/menu/validators.js.map +1 -0
- package/dist/cli/commands/ports.js +166 -0
- package/dist/cli/commands/ports.js.map +1 -0
- package/dist/cli/commands/pull.js +166 -0
- package/dist/cli/commands/pull.js.map +1 -0
- package/dist/cli/commands/query.js +180 -0
- package/dist/cli/commands/query.js.map +1 -0
- package/dist/cli/commands/restore.js +428 -0
- package/dist/cli/commands/restore.js.map +1 -0
- package/dist/cli/commands/run.js +115 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/self-update.js +99 -0
- package/dist/cli/commands/self-update.js.map +1 -0
- package/dist/cli/commands/sqlite.js +207 -0
- package/dist/cli/commands/sqlite.js.map +1 -0
- package/dist/cli/commands/start.js +196 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/stop.js +182 -0
- package/dist/cli/commands/stop.js.map +1 -0
- package/dist/cli/commands/url.js +88 -0
- package/dist/cli/commands/url.js.map +1 -0
- package/dist/cli/commands/users.js +189 -0
- package/dist/cli/commands/users.js.map +1 -0
- package/dist/cli/commands/version.js +52 -0
- package/dist/cli/commands/version.js.map +1 -0
- package/dist/cli/commands/which.js +258 -0
- package/dist/cli/commands/which.js.map +1 -0
- package/dist/cli/constants.js +212 -0
- package/dist/cli/constants.js.map +1 -0
- package/dist/cli/helpers.js +1120 -0
- package/dist/cli/helpers.js.map +1 -0
- package/dist/cli/index.js +146 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/ui/prompts.js +1002 -0
- package/dist/cli/ui/prompts.js.map +1 -0
- package/dist/cli/ui/spinner.js +74 -0
- package/dist/cli/ui/spinner.js.map +1 -0
- package/dist/cli/ui/theme.js +99 -0
- package/dist/cli/ui/theme.js.map +1 -0
- package/dist/cli/utils/file-follower.js +79 -0
- package/dist/cli/utils/file-follower.js.map +1 -0
- package/dist/config/backup-formats.js +363 -0
- package/dist/config/backup-formats.js.map +1 -0
- package/dist/config/defaults.js +25 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/engine-defaults.js +303 -0
- package/dist/config/engine-defaults.js.map +1 -0
- package/dist/config/engines-registry.js +103 -0
- package/dist/config/engines-registry.js.map +1 -0
- package/dist/config/os-dependencies.js +767 -0
- package/dist/config/os-dependencies.js.map +1 -0
- package/dist/config/paths.js +156 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/version.js +3 -0
- package/dist/config/version.js.map +1 -0
- package/dist/core/backup-restore.js +219 -0
- package/dist/core/backup-restore.js.map +1 -0
- package/dist/core/base-binary-manager.js +403 -0
- package/dist/core/base-binary-manager.js.map +1 -0
- package/dist/core/base-document-binary-manager.js +364 -0
- package/dist/core/base-document-binary-manager.js.map +1 -0
- package/dist/core/base-embedded-binary-manager.js +364 -0
- package/dist/core/base-embedded-binary-manager.js.map +1 -0
- package/dist/core/base-server-binary-manager.js +368 -0
- package/dist/core/base-server-binary-manager.js.map +1 -0
- package/dist/core/config-manager.js +495 -0
- package/dist/core/config-manager.js.map +1 -0
- package/dist/core/container-manager.js +609 -0
- package/dist/core/container-manager.js.map +1 -0
- package/dist/core/credential-generator.js +67 -0
- package/dist/core/credential-generator.js.map +1 -0
- package/dist/core/credential-manager.js +211 -0
- package/dist/core/credential-manager.js.map +1 -0
- package/dist/core/dblab-utils.js +105 -0
- package/dist/core/dblab-utils.js.map +1 -0
- package/dist/core/dependency-manager.js +359 -0
- package/dist/core/dependency-manager.js.map +1 -0
- package/dist/core/docker-exporter.js +1077 -0
- package/dist/core/docker-exporter.js.map +1 -0
- package/dist/core/error-handler.js +295 -0
- package/dist/core/error-handler.js.map +1 -0
- package/dist/core/fs-error-utils.js +74 -0
- package/dist/core/fs-error-utils.js.map +1 -0
- package/dist/core/homebrew-version-manager.js +280 -0
- package/dist/core/homebrew-version-manager.js.map +1 -0
- package/dist/core/hostdb-client.js +252 -0
- package/dist/core/hostdb-client.js.map +1 -0
- package/dist/core/hostdb-metadata.js +243 -0
- package/dist/core/hostdb-metadata.js.map +1 -0
- package/dist/core/hostdb-releases-factory.js +161 -0
- package/dist/core/hostdb-releases-factory.js.map +1 -0
- package/dist/core/library-env.js +88 -0
- package/dist/core/library-env.js.map +1 -0
- package/dist/core/pgweb-utils.js +53 -0
- package/dist/core/pgweb-utils.js.map +1 -0
- package/dist/core/platform-service.js +632 -0
- package/dist/core/platform-service.js.map +1 -0
- package/dist/core/port-manager.js +136 -0
- package/dist/core/port-manager.js.map +1 -0
- package/dist/core/process-manager.js +445 -0
- package/dist/core/process-manager.js.map +1 -0
- package/dist/core/pull-manager.js +418 -0
- package/dist/core/pull-manager.js.map +1 -0
- package/dist/core/query-parser.js +449 -0
- package/dist/core/query-parser.js.map +1 -0
- package/dist/core/spawn-utils.js +90 -0
- package/dist/core/spawn-utils.js.map +1 -0
- package/dist/core/start-with-retry.js +90 -0
- package/dist/core/start-with-retry.js.map +1 -0
- package/dist/core/test-cleanup.js +85 -0
- package/dist/core/test-cleanup.js.map +1 -0
- package/dist/core/tls-generator.js +84 -0
- package/dist/core/tls-generator.js.map +1 -0
- package/dist/core/transaction-manager.js +139 -0
- package/dist/core/transaction-manager.js.map +1 -0
- package/dist/core/update-manager.js +241 -0
- package/dist/core/update-manager.js.map +1 -0
- package/dist/core/version-migration.js +260 -0
- package/dist/core/version-migration.js.map +1 -0
- package/dist/core/version-utils.js +91 -0
- package/dist/core/version-utils.js.map +1 -0
- package/dist/engines/base-engine.js +179 -0
- package/dist/engines/base-engine.js.map +1 -0
- package/dist/engines/clickhouse/backup.js +289 -0
- package/dist/engines/clickhouse/backup.js.map +1 -0
- package/dist/engines/clickhouse/binary-manager.js +145 -0
- package/dist/engines/clickhouse/binary-manager.js.map +1 -0
- package/dist/engines/clickhouse/binary-urls.js +100 -0
- package/dist/engines/clickhouse/binary-urls.js.map +1 -0
- package/dist/engines/clickhouse/cli-utils.js +143 -0
- package/dist/engines/clickhouse/cli-utils.js.map +1 -0
- package/dist/engines/clickhouse/hostdb-releases.js +24 -0
- package/dist/engines/clickhouse/hostdb-releases.js.map +1 -0
- package/dist/engines/clickhouse/index.js +1077 -0
- package/dist/engines/clickhouse/index.js.map +1 -0
- package/dist/engines/clickhouse/restore.js +335 -0
- package/dist/engines/clickhouse/restore.js.map +1 -0
- package/dist/engines/clickhouse/version-maps.js +83 -0
- package/dist/engines/clickhouse/version-maps.js.map +1 -0
- package/dist/engines/clickhouse/version-validator.js +133 -0
- package/dist/engines/clickhouse/version-validator.js.map +1 -0
- package/dist/engines/cockroachdb/backup.js +261 -0
- package/dist/engines/cockroachdb/backup.js.map +1 -0
- package/dist/engines/cockroachdb/binary-manager.js +33 -0
- package/dist/engines/cockroachdb/binary-manager.js.map +1 -0
- package/dist/engines/cockroachdb/binary-urls.js +33 -0
- package/dist/engines/cockroachdb/binary-urls.js.map +1 -0
- package/dist/engines/cockroachdb/cli-utils.js +338 -0
- package/dist/engines/cockroachdb/cli-utils.js.map +1 -0
- package/dist/engines/cockroachdb/hostdb-releases.js +21 -0
- package/dist/engines/cockroachdb/hostdb-releases.js.map +1 -0
- package/dist/engines/cockroachdb/index.js +1016 -0
- package/dist/engines/cockroachdb/index.js.map +1 -0
- package/dist/engines/cockroachdb/restore.js +323 -0
- package/dist/engines/cockroachdb/restore.js.map +1 -0
- package/dist/engines/cockroachdb/version-maps.js +37 -0
- package/dist/engines/cockroachdb/version-maps.js.map +1 -0
- package/dist/engines/couchdb/api-client.js +64 -0
- package/dist/engines/couchdb/api-client.js.map +1 -0
- package/dist/engines/couchdb/backup.js +90 -0
- package/dist/engines/couchdb/backup.js.map +1 -0
- package/dist/engines/couchdb/binary-manager.js +62 -0
- package/dist/engines/couchdb/binary-manager.js.map +1 -0
- package/dist/engines/couchdb/binary-urls.js +92 -0
- package/dist/engines/couchdb/binary-urls.js.map +1 -0
- package/dist/engines/couchdb/hostdb-releases.js +21 -0
- package/dist/engines/couchdb/hostdb-releases.js.map +1 -0
- package/dist/engines/couchdb/index.js +1043 -0
- package/dist/engines/couchdb/index.js.map +1 -0
- package/dist/engines/couchdb/restore.js +198 -0
- package/dist/engines/couchdb/restore.js.map +1 -0
- package/dist/engines/couchdb/version-maps.js +67 -0
- package/dist/engines/couchdb/version-maps.js.map +1 -0
- package/dist/engines/couchdb/version-validator.js +88 -0
- package/dist/engines/couchdb/version-validator.js.map +1 -0
- package/dist/engines/duckdb/binary-manager.js +33 -0
- package/dist/engines/duckdb/binary-manager.js.map +1 -0
- package/{engines/duckdb/binary-urls.ts → dist/engines/duckdb/binary-urls.js} +11 -16
- package/dist/engines/duckdb/binary-urls.js.map +1 -0
- package/dist/engines/duckdb/hostdb-releases.js +21 -0
- package/dist/engines/duckdb/hostdb-releases.js.map +1 -0
- package/dist/engines/duckdb/index.js +594 -0
- package/dist/engines/duckdb/index.js.map +1 -0
- package/dist/engines/duckdb/registry.js +265 -0
- package/dist/engines/duckdb/registry.js.map +1 -0
- package/dist/engines/duckdb/scanner.js +12 -0
- package/dist/engines/duckdb/scanner.js.map +1 -0
- package/dist/engines/duckdb/version-maps.js +67 -0
- package/dist/engines/duckdb/version-maps.js.map +1 -0
- package/dist/engines/duckdb/version-validator.js +62 -0
- package/dist/engines/duckdb/version-validator.js.map +1 -0
- package/dist/engines/ferretdb/backup.js +170 -0
- package/dist/engines/ferretdb/backup.js.map +1 -0
- package/dist/engines/ferretdb/binary-manager.js +765 -0
- package/dist/engines/ferretdb/binary-manager.js.map +1 -0
- package/dist/engines/ferretdb/binary-urls.js +135 -0
- package/dist/engines/ferretdb/binary-urls.js.map +1 -0
- package/dist/engines/ferretdb/index.js +1517 -0
- package/dist/engines/ferretdb/index.js.map +1 -0
- package/dist/engines/ferretdb/restore.js +310 -0
- package/dist/engines/ferretdb/restore.js.map +1 -0
- package/{engines/ferretdb/version-maps.ts → dist/engines/ferretdb/version-maps.js} +62 -79
- package/dist/engines/ferretdb/version-maps.js.map +1 -0
- package/dist/engines/file-based-utils.js +184 -0
- package/dist/engines/file-based-utils.js.map +1 -0
- package/dist/engines/index.js +124 -0
- package/dist/engines/index.js.map +1 -0
- package/dist/engines/influxdb/api-client.js +54 -0
- package/dist/engines/influxdb/api-client.js.map +1 -0
- package/dist/engines/influxdb/backup.js +119 -0
- package/dist/engines/influxdb/backup.js.map +1 -0
- package/dist/engines/influxdb/binary-manager.js +87 -0
- package/dist/engines/influxdb/binary-manager.js.map +1 -0
- package/dist/engines/influxdb/binary-urls.js +56 -0
- package/dist/engines/influxdb/binary-urls.js.map +1 -0
- package/dist/engines/influxdb/hostdb-releases.js +21 -0
- package/dist/engines/influxdb/hostdb-releases.js.map +1 -0
- package/dist/engines/influxdb/index.js +962 -0
- package/dist/engines/influxdb/index.js.map +1 -0
- package/dist/engines/influxdb/restore.js +329 -0
- package/dist/engines/influxdb/restore.js.map +1 -0
- package/dist/engines/influxdb/version-maps.js +64 -0
- package/dist/engines/influxdb/version-maps.js.map +1 -0
- package/dist/engines/influxdb/version-validator.js +109 -0
- package/dist/engines/influxdb/version-validator.js.map +1 -0
- package/dist/engines/mariadb/backup.js +178 -0
- package/dist/engines/mariadb/backup.js.map +1 -0
- package/dist/engines/mariadb/binary-manager.js +33 -0
- package/dist/engines/mariadb/binary-manager.js.map +1 -0
- package/{engines/mariadb/binary-urls.ts → dist/engines/mariadb/binary-urls.js} +38 -55
- package/dist/engines/mariadb/binary-urls.js.map +1 -0
- package/dist/engines/mariadb/hostdb-releases.js +21 -0
- package/dist/engines/mariadb/hostdb-releases.js.map +1 -0
- package/dist/engines/mariadb/index.js +1011 -0
- package/dist/engines/mariadb/index.js.map +1 -0
- package/dist/engines/mariadb/restore.js +322 -0
- package/dist/engines/mariadb/restore.js.map +1 -0
- package/dist/engines/mariadb/version-maps.js +63 -0
- package/dist/engines/mariadb/version-maps.js.map +1 -0
- package/dist/engines/mariadb/version-validator.js +143 -0
- package/dist/engines/mariadb/version-validator.js.map +1 -0
- package/dist/engines/meilisearch/api-client.js +50 -0
- package/dist/engines/meilisearch/api-client.js.map +1 -0
- package/dist/engines/meilisearch/backup.js +167 -0
- package/dist/engines/meilisearch/backup.js.map +1 -0
- package/dist/engines/meilisearch/binary-manager.js +31 -0
- package/dist/engines/meilisearch/binary-manager.js.map +1 -0
- package/dist/engines/meilisearch/binary-urls.js +56 -0
- package/dist/engines/meilisearch/binary-urls.js.map +1 -0
- package/dist/engines/meilisearch/hostdb-releases.js +21 -0
- package/dist/engines/meilisearch/hostdb-releases.js.map +1 -0
- package/dist/engines/meilisearch/index.js +992 -0
- package/dist/engines/meilisearch/index.js.map +1 -0
- package/dist/engines/meilisearch/restore.js +167 -0
- package/dist/engines/meilisearch/restore.js.map +1 -0
- package/dist/engines/meilisearch/version-maps.js +67 -0
- package/dist/engines/meilisearch/version-maps.js.map +1 -0
- package/dist/engines/meilisearch/version-validator.js +109 -0
- package/dist/engines/meilisearch/version-validator.js.map +1 -0
- package/dist/engines/mongodb/backup.js +109 -0
- package/dist/engines/mongodb/backup.js.map +1 -0
- package/dist/engines/mongodb/binary-manager.js +36 -0
- package/dist/engines/mongodb/binary-manager.js.map +1 -0
- package/dist/engines/mongodb/binary-urls.js +46 -0
- package/dist/engines/mongodb/binary-urls.js.map +1 -0
- package/dist/engines/mongodb/cli-utils.js +131 -0
- package/dist/engines/mongodb/cli-utils.js.map +1 -0
- package/dist/engines/mongodb/hostdb-releases.js +77 -0
- package/dist/engines/mongodb/hostdb-releases.js.map +1 -0
- package/dist/engines/mongodb/index.js +873 -0
- package/dist/engines/mongodb/index.js.map +1 -0
- package/dist/engines/mongodb/restore.js +276 -0
- package/dist/engines/mongodb/restore.js.map +1 -0
- package/dist/engines/mongodb/version-maps.js +79 -0
- package/dist/engines/mongodb/version-maps.js.map +1 -0
- package/dist/engines/mongodb/version-validator.js +133 -0
- package/dist/engines/mongodb/version-validator.js.map +1 -0
- package/dist/engines/mysql/backup.js +210 -0
- package/dist/engines/mysql/backup.js.map +1 -0
- package/dist/engines/mysql/binary-detection.js +325 -0
- package/dist/engines/mysql/binary-detection.js.map +1 -0
- package/dist/engines/mysql/binary-manager.js +30 -0
- package/dist/engines/mysql/binary-manager.js.map +1 -0
- package/dist/engines/mysql/binary-urls.js +87 -0
- package/dist/engines/mysql/binary-urls.js.map +1 -0
- package/{engines/mysql/hostdb-releases.ts → dist/engines/mysql/hostdb-releases.js} +20 -23
- package/dist/engines/mysql/hostdb-releases.js.map +1 -0
- package/dist/engines/mysql/index.js +1066 -0
- package/dist/engines/mysql/index.js.map +1 -0
- package/dist/engines/mysql/restore.js +361 -0
- package/dist/engines/mysql/restore.js.map +1 -0
- package/dist/engines/mysql/version-maps.js +79 -0
- package/dist/engines/mysql/version-maps.js.map +1 -0
- package/dist/engines/mysql/version-validator.js +266 -0
- package/dist/engines/mysql/version-validator.js.map +1 -0
- package/dist/engines/postgresql/backup.js +118 -0
- package/dist/engines/postgresql/backup.js.map +1 -0
- package/dist/engines/postgresql/binary-manager.js +85 -0
- package/dist/engines/postgresql/binary-manager.js.map +1 -0
- package/dist/engines/postgresql/binary-urls.js +80 -0
- package/dist/engines/postgresql/binary-urls.js.map +1 -0
- package/dist/engines/postgresql/hostdb-releases.js +21 -0
- package/dist/engines/postgresql/hostdb-releases.js.map +1 -0
- package/dist/engines/postgresql/index.js +852 -0
- package/dist/engines/postgresql/index.js.map +1 -0
- package/dist/engines/postgresql/remote-version.js +109 -0
- package/dist/engines/postgresql/remote-version.js.map +1 -0
- package/dist/engines/postgresql/restore.js +254 -0
- package/dist/engines/postgresql/restore.js.map +1 -0
- package/dist/engines/postgresql/version-maps.js +73 -0
- package/dist/engines/postgresql/version-maps.js.map +1 -0
- package/dist/engines/postgresql/version-validator.js +286 -0
- package/dist/engines/postgresql/version-validator.js.map +1 -0
- package/dist/engines/qdrant/api-client.js +50 -0
- package/dist/engines/qdrant/api-client.js.map +1 -0
- package/dist/engines/qdrant/backup.js +115 -0
- package/dist/engines/qdrant/backup.js.map +1 -0
- package/dist/engines/qdrant/binary-manager.js +31 -0
- package/dist/engines/qdrant/binary-manager.js.map +1 -0
- package/dist/engines/qdrant/binary-urls.js +92 -0
- package/dist/engines/qdrant/binary-urls.js.map +1 -0
- package/dist/engines/qdrant/cli-utils.js +39 -0
- package/dist/engines/qdrant/cli-utils.js.map +1 -0
- package/dist/engines/qdrant/hostdb-releases.js +21 -0
- package/dist/engines/qdrant/hostdb-releases.js.map +1 -0
- package/dist/engines/qdrant/index.js +1002 -0
- package/dist/engines/qdrant/index.js.map +1 -0
- package/dist/engines/qdrant/restore.js +154 -0
- package/dist/engines/qdrant/restore.js.map +1 -0
- package/dist/engines/qdrant/version-maps.js +67 -0
- package/dist/engines/qdrant/version-maps.js.map +1 -0
- package/dist/engines/qdrant/version-validator.js +109 -0
- package/dist/engines/qdrant/version-validator.js.map +1 -0
- package/dist/engines/questdb/backup.js +191 -0
- package/dist/engines/questdb/backup.js.map +1 -0
- package/dist/engines/questdb/binary-manager.js +247 -0
- package/dist/engines/questdb/binary-manager.js.map +1 -0
- package/dist/engines/questdb/binary-urls.js +27 -0
- package/dist/engines/questdb/binary-urls.js.map +1 -0
- package/dist/engines/questdb/hostdb-releases.js +21 -0
- package/dist/engines/questdb/hostdb-releases.js.map +1 -0
- package/dist/engines/questdb/index.js +814 -0
- package/dist/engines/questdb/index.js.map +1 -0
- package/dist/engines/questdb/restore.js +202 -0
- package/dist/engines/questdb/restore.js.map +1 -0
- package/dist/engines/questdb/version-maps.js +33 -0
- package/dist/engines/questdb/version-maps.js.map +1 -0
- package/dist/engines/questdb/version-validator.js +99 -0
- package/dist/engines/questdb/version-validator.js.map +1 -0
- package/dist/engines/redis/backup.js +292 -0
- package/dist/engines/redis/backup.js.map +1 -0
- package/dist/engines/redis/binary-manager.js +32 -0
- package/dist/engines/redis/binary-manager.js.map +1 -0
- package/dist/engines/redis/binary-urls.js +96 -0
- package/dist/engines/redis/binary-urls.js.map +1 -0
- package/dist/engines/redis/cli-utils.js +38 -0
- package/dist/engines/redis/cli-utils.js.map +1 -0
- package/dist/engines/redis/hostdb-releases.js +21 -0
- package/dist/engines/redis/hostdb-releases.js.map +1 -0
- package/dist/engines/redis/index.js +1263 -0
- package/dist/engines/redis/index.js.map +1 -0
- package/dist/engines/redis/restore.js +338 -0
- package/dist/engines/redis/restore.js.map +1 -0
- package/dist/engines/redis/version-maps.js +70 -0
- package/dist/engines/redis/version-maps.js.map +1 -0
- package/dist/engines/redis/version-validator.js +109 -0
- package/dist/engines/redis/version-validator.js.map +1 -0
- package/dist/engines/sqlite/binary-manager.js +39 -0
- package/dist/engines/sqlite/binary-manager.js.map +1 -0
- package/{engines/sqlite/binary-urls.ts → dist/engines/sqlite/binary-urls.js} +11 -16
- package/dist/engines/sqlite/binary-urls.js.map +1 -0
- package/dist/engines/sqlite/hostdb-releases.js +21 -0
- package/dist/engines/sqlite/hostdb-releases.js.map +1 -0
- package/dist/engines/sqlite/index.js +493 -0
- package/dist/engines/sqlite/index.js.map +1 -0
- package/dist/engines/sqlite/registry.js +163 -0
- package/dist/engines/sqlite/registry.js.map +1 -0
- package/dist/engines/sqlite/scanner.js +12 -0
- package/dist/engines/sqlite/scanner.js.map +1 -0
- package/dist/engines/sqlite/version-maps.js +57 -0
- package/dist/engines/sqlite/version-maps.js.map +1 -0
- package/dist/engines/surrealdb/backup.js +97 -0
- package/dist/engines/surrealdb/backup.js.map +1 -0
- package/dist/engines/surrealdb/binary-manager.js +33 -0
- package/dist/engines/surrealdb/binary-manager.js.map +1 -0
- package/dist/engines/surrealdb/binary-urls.js +33 -0
- package/dist/engines/surrealdb/binary-urls.js.map +1 -0
- package/dist/engines/surrealdb/cli-utils.js +147 -0
- package/dist/engines/surrealdb/cli-utils.js.map +1 -0
- package/dist/engines/surrealdb/hostdb-releases.js +21 -0
- package/dist/engines/surrealdb/hostdb-releases.js.map +1 -0
- package/dist/engines/surrealdb/index.js +1022 -0
- package/dist/engines/surrealdb/index.js.map +1 -0
- package/dist/engines/surrealdb/restore.js +224 -0
- package/dist/engines/surrealdb/restore.js.map +1 -0
- package/dist/engines/surrealdb/version-maps.js +36 -0
- package/dist/engines/surrealdb/version-maps.js.map +1 -0
- package/dist/engines/tigerbeetle/backup.js +36 -0
- package/dist/engines/tigerbeetle/backup.js.map +1 -0
- package/dist/engines/tigerbeetle/binary-manager.js +72 -0
- package/dist/engines/tigerbeetle/binary-manager.js.map +1 -0
- package/dist/engines/tigerbeetle/binary-urls.js +49 -0
- package/dist/engines/tigerbeetle/binary-urls.js.map +1 -0
- package/dist/engines/tigerbeetle/hostdb-releases.js +21 -0
- package/dist/engines/tigerbeetle/hostdb-releases.js.map +1 -0
- package/dist/engines/tigerbeetle/index.js +559 -0
- package/dist/engines/tigerbeetle/index.js.map +1 -0
- package/dist/engines/tigerbeetle/restore.js +91 -0
- package/dist/engines/tigerbeetle/restore.js.map +1 -0
- package/{engines/tigerbeetle/version-maps.ts → dist/engines/tigerbeetle/version-maps.js} +22 -31
- package/dist/engines/tigerbeetle/version-maps.js.map +1 -0
- package/dist/engines/tigerbeetle/version-validator.js +108 -0
- package/dist/engines/tigerbeetle/version-validator.js.map +1 -0
- package/dist/engines/typedb/backup.js +129 -0
- package/dist/engines/typedb/backup.js.map +1 -0
- package/dist/engines/typedb/binary-manager.js +151 -0
- package/dist/engines/typedb/binary-manager.js.map +1 -0
- package/dist/engines/typedb/binary-urls.js +33 -0
- package/dist/engines/typedb/binary-urls.js.map +1 -0
- package/dist/engines/typedb/cli-utils.js +163 -0
- package/dist/engines/typedb/cli-utils.js.map +1 -0
- package/dist/engines/typedb/hostdb-releases.js +21 -0
- package/dist/engines/typedb/hostdb-releases.js.map +1 -0
- package/dist/engines/typedb/index.js +1003 -0
- package/dist/engines/typedb/index.js.map +1 -0
- package/dist/engines/typedb/restore.js +279 -0
- package/dist/engines/typedb/restore.js.map +1 -0
- package/dist/engines/typedb/version-maps.js +40 -0
- package/dist/engines/typedb/version-maps.js.map +1 -0
- package/dist/engines/typedb/version-validator.js +103 -0
- package/dist/engines/typedb/version-validator.js.map +1 -0
- package/dist/engines/valkey/backup.js +292 -0
- package/dist/engines/valkey/backup.js.map +1 -0
- package/dist/engines/valkey/binary-manager.js +33 -0
- package/dist/engines/valkey/binary-manager.js.map +1 -0
- package/dist/engines/valkey/binary-urls.js +98 -0
- package/dist/engines/valkey/binary-urls.js.map +1 -0
- package/dist/engines/valkey/cli-utils.js +38 -0
- package/dist/engines/valkey/cli-utils.js.map +1 -0
- package/dist/engines/valkey/hostdb-releases.js +21 -0
- package/dist/engines/valkey/hostdb-releases.js.map +1 -0
- package/dist/engines/valkey/index.js +1257 -0
- package/dist/engines/valkey/index.js.map +1 -0
- package/dist/engines/valkey/restore.js +340 -0
- package/dist/engines/valkey/restore.js.map +1 -0
- package/dist/engines/valkey/version-maps.js +70 -0
- package/dist/engines/valkey/version-maps.js.map +1 -0
- package/dist/engines/valkey/version-validator.js +112 -0
- package/dist/engines/valkey/version-validator.js.map +1 -0
- package/dist/engines/weaviate/api-client.js +50 -0
- package/dist/engines/weaviate/api-client.js.map +1 -0
- package/dist/engines/weaviate/backup.js +95 -0
- package/dist/engines/weaviate/backup.js.map +1 -0
- package/dist/engines/weaviate/binary-manager.js +58 -0
- package/dist/engines/weaviate/binary-manager.js.map +1 -0
- package/dist/engines/weaviate/binary-urls.js +92 -0
- package/dist/engines/weaviate/binary-urls.js.map +1 -0
- package/dist/engines/weaviate/cli-utils.js +39 -0
- package/dist/engines/weaviate/cli-utils.js.map +1 -0
- package/dist/engines/weaviate/hostdb-releases.js +21 -0
- package/dist/engines/weaviate/hostdb-releases.js.map +1 -0
- package/dist/engines/weaviate/index.js +871 -0
- package/dist/engines/weaviate/index.js.map +1 -0
- package/dist/engines/weaviate/restore.js +185 -0
- package/dist/engines/weaviate/restore.js.map +1 -0
- package/dist/engines/weaviate/version-maps.js +67 -0
- package/dist/engines/weaviate/version-maps.js.map +1 -0
- package/dist/engines/weaviate/version-validator.js +109 -0
- package/dist/engines/weaviate/version-validator.js.map +1 -0
- package/dist/types/index.js +102 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +12 -9
- package/bin/cli.js +0 -68
- package/cli/bin.ts +0 -10
- package/cli/commands/attach.ts +0 -139
- package/cli/commands/backup.ts +0 -290
- package/cli/commands/backups.ts +0 -247
- package/cli/commands/clone.ts +0 -159
- package/cli/commands/config.ts +0 -367
- package/cli/commands/connect.ts +0 -684
- package/cli/commands/create.ts +0 -1201
- package/cli/commands/databases.ts +0 -630
- package/cli/commands/delete.ts +0 -133
- package/cli/commands/deps.ts +0 -342
- package/cli/commands/detach.ts +0 -107
- package/cli/commands/doctor.ts +0 -689
- package/cli/commands/duckdb.ts +0 -273
- package/cli/commands/edit.ts +0 -683
- package/cli/commands/engines.ts +0 -1914
- package/cli/commands/export.ts +0 -544
- package/cli/commands/info.ts +0 -340
- package/cli/commands/list.ts +0 -284
- package/cli/commands/logs.ts +0 -102
- package/cli/commands/menu/backup-handlers.ts +0 -1571
- package/cli/commands/menu/container-handlers.ts +0 -2288
- package/cli/commands/menu/engine-handlers.ts +0 -355
- package/cli/commands/menu/index.ts +0 -342
- package/cli/commands/menu/settings-handlers.ts +0 -365
- package/cli/commands/menu/shared.ts +0 -23
- package/cli/commands/menu/shell-handlers.ts +0 -1811
- package/cli/commands/menu/sql-handlers.ts +0 -231
- package/cli/commands/menu/update-handlers.ts +0 -378
- package/cli/commands/menu/validators.ts +0 -8
- package/cli/commands/ports.ts +0 -211
- package/cli/commands/pull.ts +0 -223
- package/cli/commands/query.ts +0 -241
- package/cli/commands/restore.ts +0 -587
- package/cli/commands/run.ts +0 -178
- package/cli/commands/self-update.ts +0 -121
- package/cli/commands/sqlite.ts +0 -273
- package/cli/commands/start.ts +0 -218
- package/cli/commands/stop.ts +0 -241
- package/cli/commands/url.ts +0 -104
- package/cli/commands/users.ts +0 -264
- package/cli/commands/version.ts +0 -55
- package/cli/commands/which.ts +0 -290
- package/cli/constants.ts +0 -233
- package/cli/helpers.ts +0 -1593
- package/cli/index.ts +0 -162
- package/cli/ui/prompts.ts +0 -1525
- package/cli/ui/spinner.ts +0 -88
- package/cli/ui/theme.ts +0 -128
- package/cli/utils/file-follower.ts +0 -93
- package/config/backup-formats.ts +0 -446
- package/config/defaults.ts +0 -56
- package/config/engine-defaults.ts +0 -336
- package/config/engines-registry.ts +0 -150
- package/config/engines.schema.json +0 -135
- package/config/os-dependencies.ts +0 -888
- package/config/paths.ts +0 -200
- package/core/backup-restore.ts +0 -330
- package/core/base-binary-manager.ts +0 -562
- package/core/base-document-binary-manager.ts +0 -523
- package/core/base-embedded-binary-manager.ts +0 -547
- package/core/base-server-binary-manager.ts +0 -523
- package/core/config-manager.ts +0 -652
- package/core/container-manager.ts +0 -787
- package/core/credential-generator.ts +0 -93
- package/core/credential-manager.ts +0 -259
- package/core/dblab-utils.ts +0 -113
- package/core/dependency-manager.ts +0 -512
- package/core/docker-exporter.ts +0 -1345
- package/core/error-handler.ts +0 -419
- package/core/fs-error-utils.ts +0 -82
- package/core/homebrew-version-manager.ts +0 -352
- package/core/hostdb-client.ts +0 -344
- package/core/hostdb-metadata.ts +0 -350
- package/core/hostdb-releases-factory.ts +0 -237
- package/core/library-env.ts +0 -118
- package/core/pgweb-utils.ts +0 -62
- package/core/platform-service.ts +0 -829
- package/core/port-manager.ts +0 -165
- package/core/process-manager.ts +0 -576
- package/core/pull-manager.ts +0 -511
- package/core/query-parser.ts +0 -514
- package/core/spawn-utils.ts +0 -122
- package/core/start-with-retry.ts +0 -130
- package/core/test-cleanup.ts +0 -108
- package/core/tls-generator.ts +0 -116
- package/core/transaction-manager.ts +0 -158
- package/core/update-manager.ts +0 -308
- package/core/version-migration.ts +0 -346
- package/core/version-utils.ts +0 -104
- package/engines/base-engine.ts +0 -340
- package/engines/clickhouse/README.md +0 -231
- package/engines/clickhouse/backup.ts +0 -398
- package/engines/clickhouse/binary-manager.ts +0 -201
- package/engines/clickhouse/binary-urls.ts +0 -125
- package/engines/clickhouse/cli-utils.ts +0 -176
- package/engines/clickhouse/hostdb-releases.ts +0 -30
- package/engines/clickhouse/index.ts +0 -1345
- package/engines/clickhouse/restore.ts +0 -466
- package/engines/clickhouse/version-maps.ts +0 -95
- package/engines/clickhouse/version-validator.ts +0 -154
- package/engines/cockroachdb/README.md +0 -170
- package/engines/cockroachdb/backup.ts +0 -376
- package/engines/cockroachdb/binary-manager.ts +0 -45
- package/engines/cockroachdb/binary-urls.ts +0 -40
- package/engines/cockroachdb/cli-utils.ts +0 -384
- package/engines/cockroachdb/hostdb-releases.ts +0 -26
- package/engines/cockroachdb/index.ts +0 -1276
- package/engines/cockroachdb/restore.ts +0 -455
- package/engines/cockroachdb/version-maps.ts +0 -42
- package/engines/couchdb/README.md +0 -257
- package/engines/couchdb/api-client.ts +0 -81
- package/engines/couchdb/backup.ts +0 -137
- package/engines/couchdb/binary-manager.ts +0 -86
- package/engines/couchdb/binary-urls.ts +0 -115
- package/engines/couchdb/hostdb-releases.ts +0 -23
- package/engines/couchdb/index.ts +0 -1429
- package/engines/couchdb/restore.ts +0 -290
- package/engines/couchdb/version-maps.ts +0 -78
- package/engines/couchdb/version-validator.ts +0 -111
- package/engines/duckdb/README.md +0 -154
- package/engines/duckdb/binary-manager.ts +0 -45
- package/engines/duckdb/hostdb-releases.ts +0 -23
- package/engines/duckdb/index.ts +0 -749
- package/engines/duckdb/registry.ts +0 -303
- package/engines/duckdb/scanner.ts +0 -22
- package/engines/duckdb/version-maps.ts +0 -78
- package/engines/duckdb/version-validator.ts +0 -78
- package/engines/ferretdb/README.md +0 -262
- package/engines/ferretdb/backup.ts +0 -173
- package/engines/ferretdb/binary-manager.ts +0 -1095
- package/engines/ferretdb/binary-urls.ts +0 -183
- package/engines/ferretdb/index.ts +0 -1907
- package/engines/ferretdb/restore.ts +0 -357
- package/engines/file-based-utils.ts +0 -262
- package/engines/index.ts +0 -131
- package/engines/influxdb/README.md +0 -180
- package/engines/influxdb/api-client.ts +0 -64
- package/engines/influxdb/backup.ts +0 -160
- package/engines/influxdb/binary-manager.ts +0 -110
- package/engines/influxdb/binary-urls.ts +0 -69
- package/engines/influxdb/hostdb-releases.ts +0 -23
- package/engines/influxdb/index.ts +0 -1272
- package/engines/influxdb/restore.ts +0 -417
- package/engines/influxdb/version-maps.ts +0 -75
- package/engines/influxdb/version-validator.ts +0 -128
- package/engines/mariadb/README.md +0 -141
- package/engines/mariadb/backup.ts +0 -233
- package/engines/mariadb/binary-manager.ts +0 -45
- package/engines/mariadb/hostdb-releases.ts +0 -23
- package/engines/mariadb/index.ts +0 -1300
- package/engines/mariadb/restore.ts +0 -447
- package/engines/mariadb/version-maps.ts +0 -72
- package/engines/mariadb/version-validator.ts +0 -181
- package/engines/meilisearch/README.md +0 -255
- package/engines/meilisearch/api-client.ts +0 -61
- package/engines/meilisearch/backup.ts +0 -233
- package/engines/meilisearch/binary-manager.ts +0 -43
- package/engines/meilisearch/binary-urls.ts +0 -69
- package/engines/meilisearch/hostdb-releases.ts +0 -26
- package/engines/meilisearch/index.ts +0 -1292
- package/engines/meilisearch/restore.ts +0 -219
- package/engines/meilisearch/version-maps.ts +0 -78
- package/engines/meilisearch/version-validator.ts +0 -128
- package/engines/mongodb/README.md +0 -162
- package/engines/mongodb/backup.ts +0 -127
- package/engines/mongodb/binary-manager.ts +0 -48
- package/engines/mongodb/binary-urls.ts +0 -63
- package/engines/mongodb/cli-utils.ts +0 -171
- package/engines/mongodb/hostdb-releases.ts +0 -91
- package/engines/mongodb/index.ts +0 -1118
- package/engines/mongodb/restore.ts +0 -361
- package/engines/mongodb/version-maps.ts +0 -91
- package/engines/mongodb/version-validator.ts +0 -160
- package/engines/mysql/README.md +0 -142
- package/engines/mysql/backup.ts +0 -270
- package/engines/mysql/binary-detection.ts +0 -408
- package/engines/mysql/binary-manager.ts +0 -42
- package/engines/mysql/binary-urls.ts +0 -104
- package/engines/mysql/index.ts +0 -1361
- package/engines/mysql/restore.ts +0 -500
- package/engines/mysql/version-maps.ts +0 -91
- package/engines/mysql/version-validator.ts +0 -369
- package/engines/postgresql/README.md +0 -158
- package/engines/postgresql/backup.ts +0 -151
- package/engines/postgresql/binary-manager.ts +0 -114
- package/engines/postgresql/binary-urls.ts +0 -99
- package/engines/postgresql/hostdb-releases.ts +0 -26
- package/engines/postgresql/index.ts +0 -1143
- package/engines/postgresql/remote-version.ts +0 -161
- package/engines/postgresql/restore.ts +0 -342
- package/engines/postgresql/version-maps.ts +0 -83
- package/engines/postgresql/version-validator.ts +0 -413
- package/engines/qdrant/README.md +0 -222
- package/engines/qdrant/api-client.ts +0 -61
- package/engines/qdrant/backup.ts +0 -165
- package/engines/qdrant/binary-manager.ts +0 -43
- package/engines/qdrant/binary-urls.ts +0 -115
- package/engines/qdrant/cli-utils.ts +0 -43
- package/engines/qdrant/hostdb-releases.ts +0 -23
- package/engines/qdrant/index.ts +0 -1312
- package/engines/qdrant/restore.ts +0 -203
- package/engines/qdrant/version-maps.ts +0 -78
- package/engines/qdrant/version-validator.ts +0 -128
- package/engines/questdb/README.md +0 -334
- package/engines/questdb/backup.ts +0 -220
- package/engines/questdb/binary-manager.ts +0 -310
- package/engines/questdb/binary-urls.ts +0 -34
- package/engines/questdb/hostdb-releases.ts +0 -23
- package/engines/questdb/index.ts +0 -1023
- package/engines/questdb/restore.ts +0 -260
- package/engines/questdb/version-maps.ts +0 -37
- package/engines/questdb/version-validator.ts +0 -121
- package/engines/redis/README.md +0 -173
- package/engines/redis/backup.ts +0 -389
- package/engines/redis/binary-manager.ts +0 -44
- package/engines/redis/binary-urls.ts +0 -117
- package/engines/redis/cli-utils.ts +0 -42
- package/engines/redis/hostdb-releases.ts +0 -23
- package/engines/redis/index.ts +0 -1583
- package/engines/redis/restore.ts +0 -443
- package/engines/redis/version-maps.ts +0 -81
- package/engines/redis/version-validator.ts +0 -131
- package/engines/sqlite/README.md +0 -162
- package/engines/sqlite/binary-manager.ts +0 -52
- package/engines/sqlite/hostdb-releases.ts +0 -23
- package/engines/sqlite/index.ts +0 -641
- package/engines/sqlite/registry.ts +0 -198
- package/engines/sqlite/scanner.ts +0 -22
- package/engines/sqlite/version-maps.ts +0 -64
- package/engines/surrealdb/README.md +0 -218
- package/engines/surrealdb/backup.ts +0 -131
- package/engines/surrealdb/binary-manager.ts +0 -45
- package/engines/surrealdb/binary-urls.ts +0 -40
- package/engines/surrealdb/cli-utils.ts +0 -173
- package/engines/surrealdb/hostdb-releases.ts +0 -23
- package/engines/surrealdb/index.ts +0 -1246
- package/engines/surrealdb/restore.ts +0 -302
- package/engines/surrealdb/version-maps.ts +0 -41
- package/engines/tigerbeetle/README.md +0 -61
- package/engines/tigerbeetle/backup.ts +0 -49
- package/engines/tigerbeetle/binary-manager.ts +0 -95
- package/engines/tigerbeetle/binary-urls.ts +0 -62
- package/engines/tigerbeetle/hostdb-releases.ts +0 -26
- package/engines/tigerbeetle/index.ts +0 -746
- package/engines/tigerbeetle/restore.ts +0 -130
- package/engines/tigerbeetle/version-validator.ts +0 -126
- package/engines/typedb/backup.ts +0 -167
- package/engines/typedb/binary-manager.ts +0 -200
- package/engines/typedb/binary-urls.ts +0 -40
- package/engines/typedb/cli-utils.ts +0 -210
- package/engines/typedb/hostdb-releases.ts +0 -23
- package/engines/typedb/index.ts +0 -1275
- package/engines/typedb/restore.ts +0 -377
- package/engines/typedb/version-maps.ts +0 -48
- package/engines/typedb/version-validator.ts +0 -127
- package/engines/valkey/README.md +0 -219
- package/engines/valkey/backup.ts +0 -389
- package/engines/valkey/binary-manager.ts +0 -45
- package/engines/valkey/binary-urls.ts +0 -122
- package/engines/valkey/cli-utils.ts +0 -42
- package/engines/valkey/hostdb-releases.ts +0 -23
- package/engines/valkey/index.ts +0 -1585
- package/engines/valkey/restore.ts +0 -446
- package/engines/valkey/version-maps.ts +0 -81
- package/engines/valkey/version-validator.ts +0 -131
- package/engines/weaviate/README.md +0 -302
- package/engines/weaviate/api-client.ts +0 -61
- package/engines/weaviate/backup.ts +0 -145
- package/engines/weaviate/binary-manager.ts +0 -80
- package/engines/weaviate/binary-urls.ts +0 -115
- package/engines/weaviate/cli-utils.ts +0 -43
- package/engines/weaviate/hostdb-releases.ts +0 -23
- package/engines/weaviate/index.ts +0 -1139
- package/engines/weaviate/restore.ts +0 -235
- package/engines/weaviate/version-maps.ts +0 -78
- package/engines/weaviate/version-validator.ts +0 -128
- package/types/index.ts +0 -624
- /package/{config → dist/config}/engines.json +0 -0
package/engines/valkey/README.md
DELETED
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
# Valkey Engine Implementation
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
Valkey is a Redis-compatible fork maintained by the Linux Foundation. SpinDB downloads Valkey binaries from hostdb and manages them identically to Redis.
|
|
6
|
-
|
|
7
|
-
## Platform Support
|
|
8
|
-
|
|
9
|
-
| Platform | Architecture | Status | Notes |
|
|
10
|
-
|----------|--------------|--------|-------|
|
|
11
|
-
| darwin | x64 | Supported | Uses hostdb binaries |
|
|
12
|
-
| darwin | arm64 | Supported | Uses hostdb binaries (Apple Silicon) |
|
|
13
|
-
| linux | x64 | Supported | Uses hostdb binaries |
|
|
14
|
-
| linux | arm64 | Supported | Uses hostdb binaries |
|
|
15
|
-
| win32 | x64 | Supported | **Custom-built binary** (see below) |
|
|
16
|
-
|
|
17
|
-
### Windows Binary - Custom Build
|
|
18
|
-
|
|
19
|
-
**There is no official Windows binary for Valkey.** The hostdb Windows binary was **manually built in a Windows VM** specifically for SpinDB. This required:
|
|
20
|
-
|
|
21
|
-
1. Setting up a Windows development environment
|
|
22
|
-
2. Building Valkey from source with Cygwin runtime
|
|
23
|
-
3. Packaging the resulting binaries with Cygwin DLLs
|
|
24
|
-
4. Uploading to hostdb
|
|
25
|
-
|
|
26
|
-
This is one of the more unusual workarounds in SpinDB's engine support.
|
|
27
|
-
|
|
28
|
-
### Cygwin Runtime on Windows
|
|
29
|
-
|
|
30
|
-
The Windows Valkey binary is built with Cygwin, which means:
|
|
31
|
-
- Paths must be converted to Cygwin format
|
|
32
|
-
- The binary expects `/cygdrive/c/...` style paths
|
|
33
|
-
|
|
34
|
-
```typescript
|
|
35
|
-
// Path conversion function for Windows
|
|
36
|
-
function toCygwinPath(windowsPath: string): string {
|
|
37
|
-
// C:\Users\foo\config.conf -> /cygdrive/c/Users/foo/config.conf
|
|
38
|
-
const driveMatch = windowsPath.match(/^([A-Za-z]):[/\\]/)
|
|
39
|
-
if (!driveMatch) return windowsPath.replace(/\\/g, '/')
|
|
40
|
-
|
|
41
|
-
const driveLetter = driveMatch[1].toLowerCase()
|
|
42
|
-
const restOfPath = windowsPath.slice(3).replace(/\\/g, '/')
|
|
43
|
-
return `/cygdrive/${driveLetter}/${restOfPath}`
|
|
44
|
-
}
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Binary Packaging
|
|
48
|
-
|
|
49
|
-
### Archive Format
|
|
50
|
-
- **Unix (macOS/Linux)**: `tar.gz`
|
|
51
|
-
- **Windows**: `zip` (contains Cygwin-built binaries)
|
|
52
|
-
|
|
53
|
-
### Archive Structure
|
|
54
|
-
```
|
|
55
|
-
valkey/
|
|
56
|
-
└── bin/
|
|
57
|
-
├── valkey-server # Server binary
|
|
58
|
-
├── valkey-cli # Client CLI
|
|
59
|
-
├── valkey-benchmark # Benchmarking tool
|
|
60
|
-
└── cygwin1.dll # Cygwin runtime (Windows only)
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### Version Map Sync
|
|
64
|
-
|
|
65
|
-
```typescript
|
|
66
|
-
export const VALKEY_VERSION_MAP: Record<string, string> = {
|
|
67
|
-
'8': '8.0.6',
|
|
68
|
-
'9': '9.x.x',
|
|
69
|
-
}
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
## Implementation Details
|
|
73
|
-
|
|
74
|
-
### Binary Manager
|
|
75
|
-
|
|
76
|
-
Valkey uses `BaseBinaryManager` with configuration identical to Redis.
|
|
77
|
-
|
|
78
|
-
### Version Parsing
|
|
79
|
-
|
|
80
|
-
- **Version output format**: `Valkey server v=8.0.6 sha=00000000:0 malloc=jemalloc-5.3.0...`
|
|
81
|
-
- **Parse pattern**: `/v=(\d+\.\d+\.\d+)/` then fallback to `/(\d+\.\d+\.\d+)/`
|
|
82
|
-
|
|
83
|
-
### Redis Compatibility
|
|
84
|
-
|
|
85
|
-
Valkey uses `redis://` connection scheme for client compatibility:
|
|
86
|
-
|
|
87
|
-
```
|
|
88
|
-
redis://127.0.0.1:{port}/{database}
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
Not `valkey://` - this ensures compatibility with existing Redis clients and tools.
|
|
92
|
-
|
|
93
|
-
### Default Configuration
|
|
94
|
-
|
|
95
|
-
- **Default Port**: 6379 (same as Redis, auto-increments on conflict)
|
|
96
|
-
- **Databases**: 16 numbered databases (0-15)
|
|
97
|
-
- **PID File**: `valkey.pid` in container directory
|
|
98
|
-
- **Persistence**: RDB snapshots enabled
|
|
99
|
-
|
|
100
|
-
### Generated Configuration
|
|
101
|
-
|
|
102
|
-
SpinDB generates `valkey.conf` with Redis-compatible settings:
|
|
103
|
-
```
|
|
104
|
-
port {port}
|
|
105
|
-
bind 127.0.0.1
|
|
106
|
-
dir {dataDir}
|
|
107
|
-
daemonize yes # Unix only
|
|
108
|
-
logfile {logFile}
|
|
109
|
-
pidfile {pidFile}
|
|
110
|
-
|
|
111
|
-
# Persistence
|
|
112
|
-
save 900 1
|
|
113
|
-
save 300 10
|
|
114
|
-
save 60 10000
|
|
115
|
-
dbfilename dump.rdb
|
|
116
|
-
appendonly no
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### Windows Detached Spawn
|
|
120
|
-
|
|
121
|
-
Like Redis, Valkey on Windows uses detached spawn:
|
|
122
|
-
```typescript
|
|
123
|
-
const spawnOpts: SpawnOptions = {
|
|
124
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
125
|
-
detached: true,
|
|
126
|
-
windowsHide: true,
|
|
127
|
-
}
|
|
128
|
-
// Convert path to Cygwin format
|
|
129
|
-
const cygwinConfigPath = toCygwinPath(configPath)
|
|
130
|
-
spawn(valkeyServer, [cygwinConfigPath], spawnOpts)
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
## Backup & Restore
|
|
134
|
-
|
|
135
|
-
### Backup Formats
|
|
136
|
-
|
|
137
|
-
| Format | Extension | Tool | Notes |
|
|
138
|
-
|--------|-----------|------|-------|
|
|
139
|
-
| text | `.valkey` | Custom RESP | Human-readable commands |
|
|
140
|
-
| rdb | `.rdb` | Native RDB | Binary snapshot |
|
|
141
|
-
|
|
142
|
-
Identical to Redis backup formats, with `.valkey` extension for text format.
|
|
143
|
-
|
|
144
|
-
## Integration Test Notes
|
|
145
|
-
|
|
146
|
-
### Port Allocation
|
|
147
|
-
|
|
148
|
-
Valkey tests should avoid conflicting with Redis tests since they share default port 6379.
|
|
149
|
-
|
|
150
|
-
### Test Fixtures
|
|
151
|
-
|
|
152
|
-
Located in `tests/fixtures/valkey/seeds/`:
|
|
153
|
-
- Key-value pairs for testing
|
|
154
|
-
|
|
155
|
-
## Docker E2E Test Notes
|
|
156
|
-
|
|
157
|
-
Valkey Docker E2E tests verify Redis-compatible operations:
|
|
158
|
-
- Server lifecycle
|
|
159
|
-
- Key-value operations
|
|
160
|
-
- Backup/restore
|
|
161
|
-
- Database switching
|
|
162
|
-
|
|
163
|
-
## Known Issues & Gotchas
|
|
164
|
-
|
|
165
|
-
### 1. Windows Cygwin Paths
|
|
166
|
-
|
|
167
|
-
**Critical**: The Windows binary expects Cygwin-style paths. Passing Windows paths directly will fail:
|
|
168
|
-
```
|
|
169
|
-
# Wrong: C:\Users\spindb\valkey.conf
|
|
170
|
-
# Right: /cygdrive/c/Users/spindb/valkey.conf
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
### 2. No Official Windows Binary
|
|
174
|
-
|
|
175
|
-
The Windows support required manual compilation. If issues arise with the Windows binary, it may need to be rebuilt from source in a Windows VM.
|
|
176
|
-
|
|
177
|
-
### 3. Port Conflict with Redis
|
|
178
|
-
|
|
179
|
-
Valkey and Redis share default port 6379. SpinDB prevents conflicts via auto-increment.
|
|
180
|
-
|
|
181
|
-
### 4. iredis Compatibility
|
|
182
|
-
|
|
183
|
-
The `iredis` enhanced CLI (Python tool) works with Valkey since it's protocol-compatible. The engine detects and supports `iredis` as an alternative to `valkey-cli`.
|
|
184
|
-
|
|
185
|
-
### 5. Connection Scheme
|
|
186
|
-
|
|
187
|
-
Despite being Valkey, uses `redis://` scheme:
|
|
188
|
-
- `redis://` (plain)
|
|
189
|
-
- `rediss://` (TLS)
|
|
190
|
-
- `valkey://` / `valkeys://` are also accepted and normalized
|
|
191
|
-
|
|
192
|
-
## CI/CD Notes
|
|
193
|
-
|
|
194
|
-
### GitHub Actions Cache Step
|
|
195
|
-
|
|
196
|
-
```yaml
|
|
197
|
-
- name: Cache Valkey binaries
|
|
198
|
-
uses: actions/cache@v4
|
|
199
|
-
with:
|
|
200
|
-
path: ~/.spindb/bin/valkey-*
|
|
201
|
-
key: valkey-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('engines/valkey/version-maps.ts') }}
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
### Windows CI Considerations
|
|
205
|
-
|
|
206
|
-
Windows CI tests for Valkey verify the Cygwin-built binary works correctly with path conversion.
|
|
207
|
-
|
|
208
|
-
## Building Windows Binaries
|
|
209
|
-
|
|
210
|
-
If you need to rebuild the Windows binary:
|
|
211
|
-
|
|
212
|
-
1. Set up a Windows VM with Visual Studio Build Tools
|
|
213
|
-
2. Install Cygwin with development packages
|
|
214
|
-
3. Clone Valkey source
|
|
215
|
-
4. Build with: `make`
|
|
216
|
-
5. Package `valkey-server.exe`, `valkey-cli.exe`, and required Cygwin DLLs
|
|
217
|
-
6. Create zip and upload to hostdb
|
|
218
|
-
|
|
219
|
-
This is a manual process not automated in CI.
|
package/engines/valkey/backup.ts
DELETED
|
@@ -1,389 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Valkey backup module
|
|
3
|
-
* Supports two formats:
|
|
4
|
-
* - RDB: Binary snapshot via BGSAVE (default, compact, fast restore)
|
|
5
|
-
* - Text: Human-readable Valkey commands (.valkey file)
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { spawn } from 'child_process'
|
|
9
|
-
import { copyFile, stat, mkdir, writeFile } from 'fs/promises'
|
|
10
|
-
import { existsSync } from 'fs'
|
|
11
|
-
import { join, dirname } from 'path'
|
|
12
|
-
import { logDebug, logWarning } from '../../core/error-handler'
|
|
13
|
-
import { paths } from '../../config/paths'
|
|
14
|
-
import { getValkeyCliPath, VALKEY_CLI_NOT_FOUND_ERROR } from './cli-utils'
|
|
15
|
-
import type { ContainerConfig, BackupOptions, BackupResult } from '../../types'
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Execute a Valkey command via stdin piping
|
|
19
|
-
* This is safer than shell command construction as it handles
|
|
20
|
-
* keys/values with spaces and special characters correctly
|
|
21
|
-
*/
|
|
22
|
-
async function execValkeyCommand(
|
|
23
|
-
valkeyCli: string,
|
|
24
|
-
port: number,
|
|
25
|
-
command: string,
|
|
26
|
-
): Promise<string> {
|
|
27
|
-
return new Promise((resolve, reject) => {
|
|
28
|
-
const proc = spawn(valkeyCli, ['-h', '127.0.0.1', '-p', String(port)], {
|
|
29
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
let stdout = ''
|
|
33
|
-
let stderr = ''
|
|
34
|
-
|
|
35
|
-
proc.stdout.on('data', (data: Buffer) => {
|
|
36
|
-
stdout += data.toString()
|
|
37
|
-
})
|
|
38
|
-
proc.stderr.on('data', (data: Buffer) => {
|
|
39
|
-
stderr += data.toString()
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
proc.on('error', reject)
|
|
43
|
-
|
|
44
|
-
proc.on('close', (code) => {
|
|
45
|
-
if (code === 0 || code === null) {
|
|
46
|
-
resolve(stdout)
|
|
47
|
-
} else {
|
|
48
|
-
reject(new Error(stderr || `valkey-cli exited with code ${code}`))
|
|
49
|
-
}
|
|
50
|
-
})
|
|
51
|
-
|
|
52
|
-
// Write command to stdin and close
|
|
53
|
-
proc.stdin.write(command + '\n')
|
|
54
|
-
proc.stdin.end()
|
|
55
|
-
})
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Escape a string value for Valkey command output
|
|
60
|
-
* Wraps in single quotes and escapes backslashes and single quotes
|
|
61
|
-
*/
|
|
62
|
-
function escapeValkeyValue(value: string): string {
|
|
63
|
-
// Escape backslashes first, then single quotes (order matters!)
|
|
64
|
-
// e.g., "test\'value" → "test\\\'value" (backslash and quote both escaped)
|
|
65
|
-
return `'${value.replace(/\\/g, '\\\\').replace(/'/g, "\\'")}'`
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Create a text-based backup (.valkey file)
|
|
70
|
-
* Exports all keys as Valkey commands that can be replayed
|
|
71
|
-
*/
|
|
72
|
-
async function createTextBackup(
|
|
73
|
-
container: ContainerConfig,
|
|
74
|
-
outputPath: string,
|
|
75
|
-
): Promise<BackupResult> {
|
|
76
|
-
const { port } = container
|
|
77
|
-
|
|
78
|
-
const valkeyCli = await getValkeyCliPath()
|
|
79
|
-
if (!valkeyCli) {
|
|
80
|
-
throw new Error(VALKEY_CLI_NOT_FOUND_ERROR)
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
const commands: string[] = []
|
|
84
|
-
commands.push('# Valkey backup generated by SpinDB')
|
|
85
|
-
commands.push(`# Date: ${new Date().toISOString()}`)
|
|
86
|
-
commands.push('')
|
|
87
|
-
|
|
88
|
-
// Get all keys using KEYS * (for small datasets this is fine)
|
|
89
|
-
// For production with millions of keys, SCAN would be better
|
|
90
|
-
const keysOutput = await execValkeyCommand(valkeyCli, port, 'KEYS *')
|
|
91
|
-
// Use /\r?\n/ to handle both Unix (\n) and Windows (\r\n) line endings
|
|
92
|
-
const keys = keysOutput
|
|
93
|
-
.trim()
|
|
94
|
-
.split(/\r?\n/)
|
|
95
|
-
.map((k) => k.trim())
|
|
96
|
-
.filter((k) => k)
|
|
97
|
-
|
|
98
|
-
logDebug(`Found ${keys.length} keys to backup`)
|
|
99
|
-
|
|
100
|
-
for (const key of keys) {
|
|
101
|
-
// Get key type - quote key to handle spaces/special chars
|
|
102
|
-
const typeOutput = await execValkeyCommand(
|
|
103
|
-
valkeyCli,
|
|
104
|
-
port,
|
|
105
|
-
`TYPE "${key.replace(/"/g, '\\"')}"`,
|
|
106
|
-
)
|
|
107
|
-
const keyType = typeOutput.trim()
|
|
108
|
-
|
|
109
|
-
// Get TTL
|
|
110
|
-
const ttlOutput = await execValkeyCommand(
|
|
111
|
-
valkeyCli,
|
|
112
|
-
port,
|
|
113
|
-
`TTL "${key.replace(/"/g, '\\"')}"`,
|
|
114
|
-
)
|
|
115
|
-
const ttl = parseInt(ttlOutput.trim(), 10)
|
|
116
|
-
|
|
117
|
-
// Quote the key for output commands
|
|
118
|
-
const quotedKey =
|
|
119
|
-
key.includes(' ') || /[*?[\]{}$`"'\\!<>|;&()]/.test(key)
|
|
120
|
-
? `"${key.replace(/"/g, '\\"')}"`
|
|
121
|
-
: key
|
|
122
|
-
|
|
123
|
-
switch (keyType) {
|
|
124
|
-
case 'string': {
|
|
125
|
-
const value = await execValkeyCommand(
|
|
126
|
-
valkeyCli,
|
|
127
|
-
port,
|
|
128
|
-
`GET "${key.replace(/"/g, '\\"')}"`,
|
|
129
|
-
)
|
|
130
|
-
commands.push(`SET ${quotedKey} ${escapeValkeyValue(value.trim())}`)
|
|
131
|
-
break
|
|
132
|
-
}
|
|
133
|
-
case 'hash': {
|
|
134
|
-
const hashData = await execValkeyCommand(
|
|
135
|
-
valkeyCli,
|
|
136
|
-
port,
|
|
137
|
-
`HGETALL "${key.replace(/"/g, '\\"')}"`,
|
|
138
|
-
)
|
|
139
|
-
const lines = hashData
|
|
140
|
-
.trim()
|
|
141
|
-
.split(/\r?\n/)
|
|
142
|
-
.map((l) => l.trim())
|
|
143
|
-
.filter((l) => l)
|
|
144
|
-
if (lines.length >= 2) {
|
|
145
|
-
const pairs: string[] = []
|
|
146
|
-
for (let i = 0; i < lines.length; i += 2) {
|
|
147
|
-
const field = lines[i].trim()
|
|
148
|
-
const value = lines[i + 1]?.trim() || ''
|
|
149
|
-
// Quote field if it contains special chars
|
|
150
|
-
const quotedField =
|
|
151
|
-
field.includes(' ') || /[*?[\]{}$`"'\\!<>|;&()]/.test(field)
|
|
152
|
-
? `"${field.replace(/"/g, '\\"')}"`
|
|
153
|
-
: field
|
|
154
|
-
pairs.push(`${quotedField} ${escapeValkeyValue(value)}`)
|
|
155
|
-
}
|
|
156
|
-
commands.push(`HSET ${quotedKey} ${pairs.join(' ')}`)
|
|
157
|
-
}
|
|
158
|
-
break
|
|
159
|
-
}
|
|
160
|
-
case 'list': {
|
|
161
|
-
const listData = await execValkeyCommand(
|
|
162
|
-
valkeyCli,
|
|
163
|
-
port,
|
|
164
|
-
`LRANGE "${key.replace(/"/g, '\\"')}" 0 -1`,
|
|
165
|
-
)
|
|
166
|
-
const items = listData
|
|
167
|
-
.trim()
|
|
168
|
-
.split(/\r?\n/)
|
|
169
|
-
.map((l) => l.trim())
|
|
170
|
-
.filter((l) => l)
|
|
171
|
-
if (items.length > 0) {
|
|
172
|
-
const escapedItems = items.map((item) =>
|
|
173
|
-
escapeValkeyValue(item.trim()),
|
|
174
|
-
)
|
|
175
|
-
commands.push(`RPUSH ${quotedKey} ${escapedItems.join(' ')}`)
|
|
176
|
-
}
|
|
177
|
-
break
|
|
178
|
-
}
|
|
179
|
-
case 'set': {
|
|
180
|
-
const setData = await execValkeyCommand(
|
|
181
|
-
valkeyCli,
|
|
182
|
-
port,
|
|
183
|
-
`SMEMBERS "${key.replace(/"/g, '\\"')}"`,
|
|
184
|
-
)
|
|
185
|
-
const members = setData
|
|
186
|
-
.trim()
|
|
187
|
-
.split(/\r?\n/)
|
|
188
|
-
.map((l) => l.trim())
|
|
189
|
-
.filter((l) => l)
|
|
190
|
-
if (members.length > 0) {
|
|
191
|
-
const escapedMembers = members.map((m) => escapeValkeyValue(m.trim()))
|
|
192
|
-
commands.push(`SADD ${quotedKey} ${escapedMembers.join(' ')}`)
|
|
193
|
-
}
|
|
194
|
-
break
|
|
195
|
-
}
|
|
196
|
-
case 'zset': {
|
|
197
|
-
const zsetData = await execValkeyCommand(
|
|
198
|
-
valkeyCli,
|
|
199
|
-
port,
|
|
200
|
-
`ZRANGE "${key.replace(/"/g, '\\"')}" 0 -1 WITHSCORES`,
|
|
201
|
-
)
|
|
202
|
-
const lines = zsetData
|
|
203
|
-
.trim()
|
|
204
|
-
.split(/\r?\n/)
|
|
205
|
-
.map((l) => l.trim())
|
|
206
|
-
.filter((l) => l)
|
|
207
|
-
if (lines.length >= 2) {
|
|
208
|
-
const pairs: string[] = []
|
|
209
|
-
for (let i = 0; i < lines.length; i += 2) {
|
|
210
|
-
const member = lines[i].trim()
|
|
211
|
-
const score = lines[i + 1]?.trim() || '0'
|
|
212
|
-
pairs.push(`${score} ${escapeValkeyValue(member)}`)
|
|
213
|
-
}
|
|
214
|
-
commands.push(`ZADD ${quotedKey} ${pairs.join(' ')}`)
|
|
215
|
-
}
|
|
216
|
-
break
|
|
217
|
-
}
|
|
218
|
-
default:
|
|
219
|
-
logWarning(`Skipping key ${key} with unsupported type: ${keyType}`)
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
// Add EXPIRE if key has TTL
|
|
223
|
-
if (ttl > 0) {
|
|
224
|
-
commands.push(`EXPIRE ${quotedKey} ${ttl}`)
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
// Ensure output directory exists
|
|
229
|
-
const outputDir = dirname(outputPath)
|
|
230
|
-
if (!existsSync(outputDir)) {
|
|
231
|
-
await mkdir(outputDir, { recursive: true })
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
// Write commands to file
|
|
235
|
-
const content = commands.join('\n') + '\n'
|
|
236
|
-
await writeFile(outputPath, content, 'utf-8')
|
|
237
|
-
|
|
238
|
-
const stats = await stat(outputPath)
|
|
239
|
-
|
|
240
|
-
return {
|
|
241
|
-
path: outputPath,
|
|
242
|
-
format: 'text',
|
|
243
|
-
size: stats.size,
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* Create a backup using BGSAVE (RDB format)
|
|
249
|
-
*
|
|
250
|
-
* Valkey backups are RDB files (binary snapshots).
|
|
251
|
-
* The backup process:
|
|
252
|
-
* 1. Trigger BGSAVE command
|
|
253
|
-
* 2. Poll LASTSAVE until timestamp changes (backup complete)
|
|
254
|
-
* 3. Copy dump.rdb to output path
|
|
255
|
-
*/
|
|
256
|
-
async function createRdbBackup(
|
|
257
|
-
container: ContainerConfig,
|
|
258
|
-
outputPath: string,
|
|
259
|
-
): Promise<BackupResult> {
|
|
260
|
-
const { port, name } = container
|
|
261
|
-
|
|
262
|
-
const valkeyCli = await getValkeyCliPath()
|
|
263
|
-
if (!valkeyCli) {
|
|
264
|
-
throw new Error(VALKEY_CLI_NOT_FOUND_ERROR)
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
// Trigger background save
|
|
268
|
-
let bgsaveResponse: string
|
|
269
|
-
try {
|
|
270
|
-
bgsaveResponse = await execValkeyCommand(valkeyCli, port, 'BGSAVE')
|
|
271
|
-
bgsaveResponse = bgsaveResponse.trim()
|
|
272
|
-
} catch (error) {
|
|
273
|
-
const execError = error as Error
|
|
274
|
-
throw new Error(`BGSAVE command failed: ${execError.message}`)
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
logDebug(`BGSAVE response: ${bgsaveResponse}`)
|
|
278
|
-
|
|
279
|
-
// Check for Valkey error responses in stdout
|
|
280
|
-
// Valkey returns errors like "ERR ..." or "(error) ..." in stdout
|
|
281
|
-
if (
|
|
282
|
-
bgsaveResponse.startsWith('ERR') ||
|
|
283
|
-
bgsaveResponse.startsWith('(error)')
|
|
284
|
-
) {
|
|
285
|
-
// Special case: if a save is already in progress, we can wait for it
|
|
286
|
-
if (bgsaveResponse.includes('Background save already in progress')) {
|
|
287
|
-
logDebug('BGSAVE already in progress, waiting for it to complete')
|
|
288
|
-
} else {
|
|
289
|
-
throw new Error(`BGSAVE failed: ${bgsaveResponse}`)
|
|
290
|
-
}
|
|
291
|
-
} else if (
|
|
292
|
-
!bgsaveResponse.includes('Background saving started') &&
|
|
293
|
-
!bgsaveResponse.includes('Background save already in progress')
|
|
294
|
-
) {
|
|
295
|
-
// Unexpected response - warn but continue (might be a different Valkey version)
|
|
296
|
-
logDebug(
|
|
297
|
-
`Unexpected BGSAVE response (continuing anyway): ${bgsaveResponse}`,
|
|
298
|
-
)
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
// Wait for save to complete by checking rdb_bgsave_in_progress
|
|
302
|
-
// This is more reliable than LASTSAVE timestamp which has 1-second resolution
|
|
303
|
-
const startTime = Date.now()
|
|
304
|
-
const timeout = 60000 // 1 minute timeout
|
|
305
|
-
|
|
306
|
-
while (Date.now() - startTime < timeout) {
|
|
307
|
-
const infoOutput = await execValkeyCommand(
|
|
308
|
-
valkeyCli,
|
|
309
|
-
port,
|
|
310
|
-
'INFO persistence',
|
|
311
|
-
)
|
|
312
|
-
|
|
313
|
-
// Check if BGSAVE is still in progress
|
|
314
|
-
const inProgress = infoOutput.includes('rdb_bgsave_in_progress:1')
|
|
315
|
-
if (!inProgress) {
|
|
316
|
-
// Also check for errors
|
|
317
|
-
const statusMatch = infoOutput.match(/rdb_last_bgsave_status:(\w+)/)
|
|
318
|
-
const status = statusMatch?.[1]
|
|
319
|
-
if (status === 'err') {
|
|
320
|
-
throw new Error('BGSAVE failed. Check Valkey logs for details.')
|
|
321
|
-
}
|
|
322
|
-
logDebug('BGSAVE completed successfully')
|
|
323
|
-
break
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
await new Promise((r) => setTimeout(r, 100))
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
if (Date.now() - startTime >= timeout) {
|
|
330
|
-
throw new Error('BGSAVE timed out after 60 seconds')
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
// Get the RDB file path from Valkey data directory
|
|
334
|
-
const dataDir = paths.getContainerDataPath(name, { engine: 'valkey' })
|
|
335
|
-
const rdbPath = join(dataDir, 'dump.rdb')
|
|
336
|
-
|
|
337
|
-
if (!existsSync(rdbPath)) {
|
|
338
|
-
throw new Error(
|
|
339
|
-
`RDB file not found at ${rdbPath} after BGSAVE. Check Valkey configuration.`,
|
|
340
|
-
)
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
// Ensure output directory exists
|
|
344
|
-
const outputDir = dirname(outputPath)
|
|
345
|
-
if (!existsSync(outputDir)) {
|
|
346
|
-
await mkdir(outputDir, { recursive: true })
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
// Copy RDB file to output path
|
|
350
|
-
await copyFile(rdbPath, outputPath)
|
|
351
|
-
|
|
352
|
-
const stats = await stat(outputPath)
|
|
353
|
-
|
|
354
|
-
return {
|
|
355
|
-
path: outputPath,
|
|
356
|
-
format: 'rdb',
|
|
357
|
-
size: stats.size,
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
/**
|
|
362
|
-
* Create a backup
|
|
363
|
-
* Supports two formats:
|
|
364
|
-
* - 'text': Human-readable Valkey commands (.valkey file)
|
|
365
|
-
* - 'rdb' (default): Binary RDB snapshot
|
|
366
|
-
*/
|
|
367
|
-
export async function createBackup(
|
|
368
|
-
container: ContainerConfig,
|
|
369
|
-
outputPath: string,
|
|
370
|
-
options: BackupOptions,
|
|
371
|
-
): Promise<BackupResult> {
|
|
372
|
-
// 'text' format means text-based commands for Valkey
|
|
373
|
-
if (options.format === 'text') {
|
|
374
|
-
return createTextBackup(container, outputPath)
|
|
375
|
-
}
|
|
376
|
-
// Default to RDB format
|
|
377
|
-
return createRdbBackup(container, outputPath)
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
/**
|
|
381
|
-
* Create a backup for cloning purposes
|
|
382
|
-
* Always uses RDB format for speed and reliability
|
|
383
|
-
*/
|
|
384
|
-
export async function createCloneBackup(
|
|
385
|
-
container: ContainerConfig,
|
|
386
|
-
outputPath: string,
|
|
387
|
-
): Promise<BackupResult> {
|
|
388
|
-
return createRdbBackup(container, outputPath)
|
|
389
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Valkey Binary Manager
|
|
3
|
-
*
|
|
4
|
-
* Handles downloading, extracting, and managing Valkey binaries from hostdb.
|
|
5
|
-
* Extends BaseBinaryManager for shared download/extraction logic.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import {
|
|
9
|
-
BaseBinaryManager,
|
|
10
|
-
type BinaryManagerConfig,
|
|
11
|
-
} from '../../core/base-binary-manager'
|
|
12
|
-
import { getBinaryUrl } from './binary-urls'
|
|
13
|
-
import { normalizeVersion } from './version-maps'
|
|
14
|
-
import { Engine, type Platform, type Arch } from '../../types'
|
|
15
|
-
|
|
16
|
-
class ValkeyBinaryManager extends BaseBinaryManager {
|
|
17
|
-
protected readonly config: BinaryManagerConfig = {
|
|
18
|
-
engine: Engine.Valkey,
|
|
19
|
-
engineName: 'valkey',
|
|
20
|
-
displayName: 'Valkey',
|
|
21
|
-
serverBinary: 'valkey-server',
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
protected getBinaryUrlFromModule(
|
|
25
|
-
version: string,
|
|
26
|
-
platform: Platform,
|
|
27
|
-
arch: Arch,
|
|
28
|
-
): string {
|
|
29
|
-
return getBinaryUrl(version, platform, arch)
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
protected normalizeVersionFromModule(version: string): string {
|
|
33
|
-
return normalizeVersion(version)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
protected parseVersionFromOutput(stdout: string): string | null {
|
|
37
|
-
// Extract version from output like "Valkey server v=8.0.6 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=..."
|
|
38
|
-
// or "v=8.0.6" pattern
|
|
39
|
-
const match = stdout.match(/v=(\d+\.\d+\.\d+)/)
|
|
40
|
-
const altMatch = !match ? stdout.match(/(\d+\.\d+\.\d+)/) : null
|
|
41
|
-
return match?.[1] ?? altMatch?.[1] ?? null
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export const valkeyBinaryManager = new ValkeyBinaryManager()
|