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,290 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CouchDB restore module
|
|
3
|
-
* Supports JSON-based restore using CouchDB's REST API
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { readFile, open } from 'fs/promises'
|
|
7
|
-
import { existsSync, statSync } from 'fs'
|
|
8
|
-
import { logDebug } from '../../core/error-handler'
|
|
9
|
-
import { couchdbApiRequest } from './api-client'
|
|
10
|
-
import type { BackupFormat, RestoreResult } from '../../types'
|
|
11
|
-
|
|
12
|
-
// Restore operations may take longer than the default timeout
|
|
13
|
-
const RESTORE_TIMEOUT_MS = 600000 // 10 minutes
|
|
14
|
-
|
|
15
|
-
type CouchDBBackup = {
|
|
16
|
-
version: string
|
|
17
|
-
created: string
|
|
18
|
-
databases: Array<{
|
|
19
|
-
name: string
|
|
20
|
-
docs: unknown[]
|
|
21
|
-
}>
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Detect backup format from file
|
|
26
|
-
* CouchDB backups are JSON files
|
|
27
|
-
*/
|
|
28
|
-
export async function detectBackupFormat(
|
|
29
|
-
filePath: string,
|
|
30
|
-
): Promise<BackupFormat> {
|
|
31
|
-
if (!existsSync(filePath)) {
|
|
32
|
-
throw new Error(`Backup file not found: ${filePath}`)
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const stats = statSync(filePath)
|
|
36
|
-
|
|
37
|
-
if (stats.isDirectory()) {
|
|
38
|
-
return {
|
|
39
|
-
format: 'unknown',
|
|
40
|
-
description: 'Directory found - CouchDB uses single JSON files',
|
|
41
|
-
restoreCommand: 'CouchDB requires a single .json file for restore',
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Check file extension
|
|
46
|
-
if (filePath.endsWith('.json') || filePath.endsWith('.couchdb')) {
|
|
47
|
-
return {
|
|
48
|
-
format: 'json',
|
|
49
|
-
description: 'CouchDB JSON backup',
|
|
50
|
-
restoreCommand: 'spindb restore handles this automatically',
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Check file contents for JSON structure
|
|
55
|
-
try {
|
|
56
|
-
const buffer = Buffer.alloc(100)
|
|
57
|
-
const fd = await open(filePath, 'r')
|
|
58
|
-
try {
|
|
59
|
-
await fd.read(buffer, 0, 100, 0)
|
|
60
|
-
const content = buffer.toString('utf-8').trim()
|
|
61
|
-
|
|
62
|
-
// Check if it looks like our backup format
|
|
63
|
-
if (content.startsWith('{') && content.includes('"version"')) {
|
|
64
|
-
return {
|
|
65
|
-
format: 'json',
|
|
66
|
-
description: 'CouchDB JSON backup (detected by content)',
|
|
67
|
-
restoreCommand: 'spindb restore handles this automatically',
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
} finally {
|
|
71
|
-
await fd.close().catch(() => {})
|
|
72
|
-
}
|
|
73
|
-
} catch (error) {
|
|
74
|
-
logDebug(`Error reading backup file header: ${error}`)
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return {
|
|
78
|
-
format: 'unknown',
|
|
79
|
-
description: 'Unknown backup format',
|
|
80
|
-
restoreCommand: 'Use .json or .couchdb file for restore',
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
// Restore options for CouchDB
|
|
85
|
-
export type RestoreOptions = {
|
|
86
|
-
port: number
|
|
87
|
-
database?: string
|
|
88
|
-
flush?: boolean
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Restore from JSON backup
|
|
93
|
-
*
|
|
94
|
-
* @param backupPath - Path to the backup file
|
|
95
|
-
* @param options - Restore options including port and optional target database
|
|
96
|
-
*/
|
|
97
|
-
export async function restoreBackup(
|
|
98
|
-
backupPath: string,
|
|
99
|
-
options: RestoreOptions,
|
|
100
|
-
): Promise<RestoreResult> {
|
|
101
|
-
const { port, database: targetDatabase, flush } = options
|
|
102
|
-
|
|
103
|
-
if (!existsSync(backupPath)) {
|
|
104
|
-
throw new Error(`Backup file not found: ${backupPath}`)
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// Detect backup format
|
|
108
|
-
const format = await detectBackupFormat(backupPath)
|
|
109
|
-
logDebug(`Detected backup format: ${format.format}`)
|
|
110
|
-
|
|
111
|
-
if (format.format !== 'json') {
|
|
112
|
-
throw new Error(
|
|
113
|
-
`Invalid backup format: ${format.format}. Use .json or .couchdb file for restore.`,
|
|
114
|
-
)
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// Read and parse backup file
|
|
118
|
-
const content = await readFile(backupPath, 'utf-8')
|
|
119
|
-
let backup: CouchDBBackup
|
|
120
|
-
|
|
121
|
-
try {
|
|
122
|
-
backup = JSON.parse(content) as CouchDBBackup
|
|
123
|
-
} catch (error) {
|
|
124
|
-
throw new Error(`Invalid backup file: failed to parse JSON - ${error}`)
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
if (!backup.databases || !Array.isArray(backup.databases)) {
|
|
128
|
-
throw new Error('Invalid backup file: missing databases array')
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
logDebug(`Restoring ${backup.databases.length} database(s) from backup`)
|
|
132
|
-
|
|
133
|
-
let restoredCount = 0
|
|
134
|
-
const errors: string[] = []
|
|
135
|
-
|
|
136
|
-
for (const dbBackup of backup.databases) {
|
|
137
|
-
// Skip if targeting a specific database and this isn't it
|
|
138
|
-
if (targetDatabase && dbBackup.name !== targetDatabase) {
|
|
139
|
-
continue
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
const dbName = dbBackup.name
|
|
143
|
-
logDebug(
|
|
144
|
-
`Restoring database: ${dbName} (${dbBackup.docs.length} documents)`,
|
|
145
|
-
)
|
|
146
|
-
|
|
147
|
-
// Check if database exists
|
|
148
|
-
const checkResponse = await couchdbApiRequest(
|
|
149
|
-
port,
|
|
150
|
-
'GET',
|
|
151
|
-
`/${encodeURIComponent(dbName)}`,
|
|
152
|
-
)
|
|
153
|
-
|
|
154
|
-
if (checkResponse.status === 200) {
|
|
155
|
-
if (flush) {
|
|
156
|
-
// Delete existing database
|
|
157
|
-
const deleteResponse = await couchdbApiRequest(
|
|
158
|
-
port,
|
|
159
|
-
'DELETE',
|
|
160
|
-
`/${encodeURIComponent(dbName)}`,
|
|
161
|
-
)
|
|
162
|
-
// Accept 200 (OK) or 202 (Accepted) for async deletes
|
|
163
|
-
if (deleteResponse.status !== 200 && deleteResponse.status !== 202) {
|
|
164
|
-
errors.push(
|
|
165
|
-
`Failed to delete existing database ${dbName}: ${JSON.stringify(deleteResponse.data)}`,
|
|
166
|
-
)
|
|
167
|
-
continue
|
|
168
|
-
}
|
|
169
|
-
} else {
|
|
170
|
-
logDebug(`Database ${dbName} exists, merging documents`)
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
// Create database if it doesn't exist (or was just deleted)
|
|
175
|
-
if (checkResponse.status === 404 || flush) {
|
|
176
|
-
const createResponse = await couchdbApiRequest(
|
|
177
|
-
port,
|
|
178
|
-
'PUT',
|
|
179
|
-
`/${encodeURIComponent(dbName)}`,
|
|
180
|
-
)
|
|
181
|
-
if (createResponse.status !== 201 && createResponse.status !== 412) {
|
|
182
|
-
// 412 means database already exists, which is fine
|
|
183
|
-
errors.push(
|
|
184
|
-
`Failed to create database ${dbName}: ${JSON.stringify(createResponse.data)}`,
|
|
185
|
-
)
|
|
186
|
-
continue
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
// Prepare documents for bulk insert
|
|
191
|
-
// Remove _rev to allow inserting as new documents
|
|
192
|
-
const docsToInsert = dbBackup.docs.map((doc) => {
|
|
193
|
-
const d = doc as Record<string, unknown>
|
|
194
|
-
const { _rev: _, ...rest } = d
|
|
195
|
-
return rest
|
|
196
|
-
})
|
|
197
|
-
|
|
198
|
-
if (docsToInsert.length === 0) {
|
|
199
|
-
logDebug(`No documents to restore for ${dbName}`)
|
|
200
|
-
restoredCount++
|
|
201
|
-
continue
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
// Bulk insert documents
|
|
205
|
-
const bulkResponse = await couchdbApiRequest(
|
|
206
|
-
port,
|
|
207
|
-
'POST',
|
|
208
|
-
`/${encodeURIComponent(dbName)}/_bulk_docs`,
|
|
209
|
-
{ docs: docsToInsert },
|
|
210
|
-
RESTORE_TIMEOUT_MS,
|
|
211
|
-
)
|
|
212
|
-
|
|
213
|
-
if (bulkResponse.status !== 201) {
|
|
214
|
-
errors.push(
|
|
215
|
-
`Failed to restore documents to ${dbName}: ${JSON.stringify(bulkResponse.data)}`,
|
|
216
|
-
)
|
|
217
|
-
continue
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
restoredCount++
|
|
221
|
-
logDebug(`Restored ${docsToInsert.length} documents to ${dbName}`)
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
const message =
|
|
225
|
-
`Restored ${restoredCount} database(s)` +
|
|
226
|
-
(errors.length > 0 ? ` with ${errors.length} error(s)` : '')
|
|
227
|
-
|
|
228
|
-
return {
|
|
229
|
-
format: 'json',
|
|
230
|
-
stdout: message,
|
|
231
|
-
stderr: errors.length > 0 ? errors.join('\n') : undefined,
|
|
232
|
-
code: errors.length > 0 ? 1 : 0,
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
/**
|
|
237
|
-
* Parse CouchDB connection string
|
|
238
|
-
* Format: http://host[:port][/database] or https://host[:port][/database]
|
|
239
|
-
*/
|
|
240
|
-
export function parseConnectionString(connectionString: string): {
|
|
241
|
-
host: string
|
|
242
|
-
port: number
|
|
243
|
-
protocol: 'http' | 'https'
|
|
244
|
-
database?: string
|
|
245
|
-
} {
|
|
246
|
-
if (!connectionString || typeof connectionString !== 'string') {
|
|
247
|
-
throw new Error(
|
|
248
|
-
'Invalid CouchDB connection string: expected a non-empty string',
|
|
249
|
-
)
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
let url: URL
|
|
253
|
-
try {
|
|
254
|
-
url = new URL(connectionString)
|
|
255
|
-
} catch (error) {
|
|
256
|
-
throw new Error(
|
|
257
|
-
`Invalid CouchDB connection string: "${connectionString}". ` +
|
|
258
|
-
`Expected format: http://host[:port][/database]`,
|
|
259
|
-
{ cause: error },
|
|
260
|
-
)
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
// Validate protocol
|
|
264
|
-
let protocol: 'http' | 'https'
|
|
265
|
-
if (url.protocol === 'http:') {
|
|
266
|
-
protocol = 'http'
|
|
267
|
-
} else if (url.protocol === 'https:') {
|
|
268
|
-
protocol = 'https'
|
|
269
|
-
} else {
|
|
270
|
-
throw new Error(
|
|
271
|
-
`Invalid CouchDB connection string: unsupported protocol "${url.protocol}". ` +
|
|
272
|
-
`Expected "http://" or "https://"`,
|
|
273
|
-
)
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
const host = url.hostname || '127.0.0.1'
|
|
277
|
-
const port = parseInt(url.port, 10) || 5984
|
|
278
|
-
|
|
279
|
-
// Extract database from pathname (e.g., /mydb)
|
|
280
|
-
const pathname = url.pathname || ''
|
|
281
|
-
const database =
|
|
282
|
-
pathname.length > 1 ? pathname.slice(1).split('/')[0] : undefined
|
|
283
|
-
|
|
284
|
-
return {
|
|
285
|
-
host,
|
|
286
|
-
port,
|
|
287
|
-
protocol,
|
|
288
|
-
database,
|
|
289
|
-
}
|
|
290
|
-
}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CouchDB 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 COUCHDB_VERSION_MAP to match
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import { logDebug } from '../../core/error-handler'
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Map of major CouchDB versions to their latest stable patch versions.
|
|
17
|
-
* Must match versions available in hostdb releases.json.
|
|
18
|
-
*/
|
|
19
|
-
export const COUCHDB_VERSION_MAP: Record<string, string> = {
|
|
20
|
-
// 1-part: major version -> latest
|
|
21
|
-
'3': '3.5.1',
|
|
22
|
-
// 2-part: major.minor -> latest patch
|
|
23
|
-
'3.5': '3.5.1',
|
|
24
|
-
// 3-part: exact version (identity mapping)
|
|
25
|
-
'3.5.1': '3.5.1',
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Supported major CouchDB 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.5.1') or null if not supported
|
|
39
|
-
*/
|
|
40
|
-
export function getFullVersion(majorVersion: string): string | null {
|
|
41
|
-
return COUCHDB_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.5', '3.5.1')
|
|
48
|
-
* @returns Normalized version (e.g., '3.5.1')
|
|
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
|
-
// Note: Full versions have identity mappings (e.g., '3.5.1' => '3.5.1')
|
|
53
|
-
const fullVersion = COUCHDB_VERSION_MAP[version]
|
|
54
|
-
if (fullVersion) {
|
|
55
|
-
return fullVersion
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// Unknown version - warn and return as-is
|
|
59
|
-
// This may cause download failures if the version doesn't exist in hostdb
|
|
60
|
-
const parts = version.split('.')
|
|
61
|
-
|
|
62
|
-
// Validate format: must be 1-3 numeric segments (e.g., "3", "3.5", "3.5.1")
|
|
63
|
-
const isValidFormat =
|
|
64
|
-
parts.length >= 1 &&
|
|
65
|
-
parts.length <= 3 &&
|
|
66
|
-
parts.every((p) => /^\d+$/.test(p))
|
|
67
|
-
|
|
68
|
-
if (!isValidFormat) {
|
|
69
|
-
logDebug(
|
|
70
|
-
`CouchDB version '${version}' has invalid format, may not be available in hostdb`,
|
|
71
|
-
)
|
|
72
|
-
} else {
|
|
73
|
-
logDebug(
|
|
74
|
-
`CouchDB version '${version}' not in version map, may not be available in hostdb`,
|
|
75
|
-
)
|
|
76
|
-
}
|
|
77
|
-
return version
|
|
78
|
-
}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CouchDB Version Validator
|
|
3
|
-
*
|
|
4
|
-
* Utilities for parsing, validating, and comparing CouchDB versions.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { COUCHDB_VERSION_MAP, SUPPORTED_MAJOR_VERSIONS } from './version-maps'
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Parsed CouchDB version
|
|
11
|
-
*/
|
|
12
|
-
export type ParsedVersion = {
|
|
13
|
-
major: number
|
|
14
|
-
minor: number
|
|
15
|
-
patch: number
|
|
16
|
-
full: string
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Parse a CouchDB version string into components.
|
|
21
|
-
*
|
|
22
|
-
* @param version - Version string (e.g., '3.5.1')
|
|
23
|
-
* @returns Parsed version object or null if invalid
|
|
24
|
-
*/
|
|
25
|
-
export function parseVersion(version: string): ParsedVersion | null {
|
|
26
|
-
const match = version.match(/^(\d+)\.(\d+)\.(\d+)$/)
|
|
27
|
-
if (!match) {
|
|
28
|
-
return null
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const [, major, minor, patch] = match
|
|
32
|
-
return {
|
|
33
|
-
major: parseInt(major, 10),
|
|
34
|
-
minor: parseInt(minor, 10),
|
|
35
|
-
patch: parseInt(patch, 10),
|
|
36
|
-
full: version,
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Check if a version string is supported.
|
|
42
|
-
*
|
|
43
|
-
* @param version - Version string (e.g., '3', '3.5', '3.5.1')
|
|
44
|
-
* @returns true if the version is supported
|
|
45
|
-
*/
|
|
46
|
-
export function isVersionSupported(version: string): boolean {
|
|
47
|
-
// Check if it's in the version map
|
|
48
|
-
if (COUCHDB_VERSION_MAP[version]) {
|
|
49
|
-
return true
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// Check if major version is supported
|
|
53
|
-
const parts = version.split('.')
|
|
54
|
-
const major = parts[0]
|
|
55
|
-
return SUPPORTED_MAJOR_VERSIONS.includes(major)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Get the major version from a version string.
|
|
60
|
-
*
|
|
61
|
-
* @param version - Version string (e.g., '3.5.1')
|
|
62
|
-
* @returns Major version string (e.g., '3')
|
|
63
|
-
*/
|
|
64
|
-
export function getMajorVersion(version: string): string {
|
|
65
|
-
const parts = version.split('.')
|
|
66
|
-
return parts[0]
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Compare two version strings.
|
|
71
|
-
*
|
|
72
|
-
* @param a - First version string
|
|
73
|
-
* @param b - Second version string
|
|
74
|
-
* @returns -1 if a < b, 0 if a == b, 1 if a > b
|
|
75
|
-
*/
|
|
76
|
-
export function compareVersions(a: string, b: string): number {
|
|
77
|
-
const parsedA = parseVersion(a)
|
|
78
|
-
const parsedB = parseVersion(b)
|
|
79
|
-
|
|
80
|
-
if (!parsedA || !parsedB) {
|
|
81
|
-
// Fall back to string comparison for invalid versions
|
|
82
|
-
return a.localeCompare(b)
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
if (parsedA.major !== parsedB.major) {
|
|
86
|
-
return parsedA.major - parsedB.major
|
|
87
|
-
}
|
|
88
|
-
if (parsedA.minor !== parsedB.minor) {
|
|
89
|
-
return parsedA.minor - parsedB.minor
|
|
90
|
-
}
|
|
91
|
-
return parsedA.patch - parsedB.patch
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Check if two versions are compatible for backup/restore operations.
|
|
96
|
-
* CouchDB versions within the same major version are generally compatible.
|
|
97
|
-
*
|
|
98
|
-
* @param sourceVersion - Source version
|
|
99
|
-
* @param targetVersion - Target version
|
|
100
|
-
* @returns true if versions are compatible
|
|
101
|
-
*/
|
|
102
|
-
export function isVersionCompatible(
|
|
103
|
-
sourceVersion: string,
|
|
104
|
-
targetVersion: string,
|
|
105
|
-
): boolean {
|
|
106
|
-
const sourceMajor = getMajorVersion(sourceVersion)
|
|
107
|
-
const targetMajor = getMajorVersion(targetVersion)
|
|
108
|
-
|
|
109
|
-
// Same major version is compatible
|
|
110
|
-
return sourceMajor === targetMajor
|
|
111
|
-
}
|
package/engines/duckdb/README.md
DELETED
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
# DuckDB Engine Implementation
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
DuckDB is an embedded OLAP (analytical) database. Like SQLite, it's file-based with no server process. DuckDB is optimized for analytical queries and columnar storage.
|
|
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 | Uses hostdb binaries |
|
|
16
|
-
|
|
17
|
-
## Binary Packaging
|
|
18
|
-
|
|
19
|
-
### Archive Format
|
|
20
|
-
- **Unix (macOS/Linux)**: `tar.gz`
|
|
21
|
-
- **Windows**: `zip`
|
|
22
|
-
|
|
23
|
-
### Archive Structure - FLAT (No bin/ Subdirectory)
|
|
24
|
-
|
|
25
|
-
Like SQLite, DuckDB archives have a **flat structure**:
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
duckdb # Main CLI binary
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
The `BaseEmbeddedBinaryManager` handles moving this to `bin/` during extraction.
|
|
32
|
-
|
|
33
|
-
### Version Map Sync
|
|
34
|
-
|
|
35
|
-
```typescript
|
|
36
|
-
export const DUCKDB_VERSION_MAP: Record<string, string> = {
|
|
37
|
-
'1': '1.4.3',
|
|
38
|
-
}
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Implementation Details
|
|
42
|
-
|
|
43
|
-
### Binary Manager
|
|
44
|
-
|
|
45
|
-
DuckDB uses `BaseEmbeddedBinaryManager` with the same file-based model as SQLite.
|
|
46
|
-
|
|
47
|
-
### Version Parsing
|
|
48
|
-
|
|
49
|
-
- **Version output format**: `v1.4.3 abcdef123`
|
|
50
|
-
- **Parse pattern**: `/v?(\d+\.\d+\.\d+)/`
|
|
51
|
-
|
|
52
|
-
### File-Based Model
|
|
53
|
-
|
|
54
|
-
Same as SQLite:
|
|
55
|
-
- **No start/stop**: No-ops
|
|
56
|
-
- **No port**: Port is always 0
|
|
57
|
-
- **No container directory**: Data in user's project directory
|
|
58
|
-
- **Registry tracking**: `~/.spindb/config.json` tracks files
|
|
59
|
-
|
|
60
|
-
### Attach/Detach Commands
|
|
61
|
-
|
|
62
|
-
- `spindb attach <path>` - Register existing DuckDB file
|
|
63
|
-
- `spindb detach <name>` - Unregister (keeps file)
|
|
64
|
-
|
|
65
|
-
### Connection String Format
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
duckdb:/path/to/database.duckdb
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
Or simply the file path.
|
|
72
|
-
|
|
73
|
-
## Backup & Restore
|
|
74
|
-
|
|
75
|
-
### Backup Formats
|
|
76
|
-
|
|
77
|
-
| Format | Extension | Tool | Notes |
|
|
78
|
-
|--------|-----------|------|-------|
|
|
79
|
-
| sql | `.sql` | Custom export | SQL statements |
|
|
80
|
-
| binary | `.duckdb` | File copy | Direct file copy |
|
|
81
|
-
|
|
82
|
-
### OLAP Considerations
|
|
83
|
-
|
|
84
|
-
DuckDB backups may be larger than equivalent SQLite backups due to columnar storage format. Binary backup preserves columnar layout for fast analytical queries.
|
|
85
|
-
|
|
86
|
-
## Integration Test Notes
|
|
87
|
-
|
|
88
|
-
### Test Fixtures
|
|
89
|
-
|
|
90
|
-
Located in `tests/fixtures/duckdb/seeds/`:
|
|
91
|
-
- Test data for OLAP operations
|
|
92
|
-
|
|
93
|
-
### No Port Allocation
|
|
94
|
-
|
|
95
|
-
Like SQLite, no server means no ports.
|
|
96
|
-
|
|
97
|
-
## Docker E2E Test Notes
|
|
98
|
-
|
|
99
|
-
DuckDB Docker E2E tests verify:
|
|
100
|
-
- File operations
|
|
101
|
-
- SQL execution
|
|
102
|
-
- Backup/restore
|
|
103
|
-
- Attach/detach workflow
|
|
104
|
-
|
|
105
|
-
## Known Issues & Gotchas
|
|
106
|
-
|
|
107
|
-
### 1. Flat Archive Structure
|
|
108
|
-
|
|
109
|
-
Same as SQLite - binaries at root, not in `bin/`.
|
|
110
|
-
|
|
111
|
-
### 2. OLAP vs OLTP
|
|
112
|
-
|
|
113
|
-
DuckDB is optimized for analytical (OLAP) workloads:
|
|
114
|
-
- Fast columnar scans
|
|
115
|
-
- Efficient aggregations
|
|
116
|
-
- May be slower for single-row operations
|
|
117
|
-
|
|
118
|
-
### 3. Memory Usage
|
|
119
|
-
|
|
120
|
-
DuckDB uses memory aggressively for performance. Large analytical queries may consume significant RAM.
|
|
121
|
-
|
|
122
|
-
### 4. File Extensions
|
|
123
|
-
|
|
124
|
-
DuckDB databases typically use `.duckdb` or `.db` extension. The engine accepts any extension.
|
|
125
|
-
|
|
126
|
-
### 5. Concurrent Access
|
|
127
|
-
|
|
128
|
-
DuckDB allows multiple readers but only one writer. Similar to SQLite's locking model.
|
|
129
|
-
|
|
130
|
-
### 6. Extensions
|
|
131
|
-
|
|
132
|
-
DuckDB supports extensions (parquet, httpfs, etc.). Extension loading requires the binary to be in a writable location.
|
|
133
|
-
|
|
134
|
-
## DuckDB vs SQLite
|
|
135
|
-
|
|
136
|
-
| Feature | DuckDB | SQLite |
|
|
137
|
-
|---------|--------|--------|
|
|
138
|
-
| Workload | OLAP (analytical) | OLTP (transactional) |
|
|
139
|
-
| Storage | Columnar | Row-based |
|
|
140
|
-
| Large scans | Very fast | Slower |
|
|
141
|
-
| Single rows | Slower | Very fast |
|
|
142
|
-
| Memory | Aggressive | Conservative |
|
|
143
|
-
|
|
144
|
-
## CI/CD Notes
|
|
145
|
-
|
|
146
|
-
### GitHub Actions Cache Step
|
|
147
|
-
|
|
148
|
-
```yaml
|
|
149
|
-
- name: Cache DuckDB binaries
|
|
150
|
-
uses: actions/cache@v4
|
|
151
|
-
with:
|
|
152
|
-
path: ~/.spindb/bin/duckdb-*
|
|
153
|
-
key: duckdb-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('engines/duckdb/version-maps.ts') }}
|
|
154
|
-
```
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DuckDB Binary Manager
|
|
3
|
-
*
|
|
4
|
-
* Handles downloading, extracting, and managing DuckDB binaries from hostdb.
|
|
5
|
-
* Unlike other engines, DuckDB is an embedded database (not a server).
|
|
6
|
-
* This manager handles the duckdb CLI tool.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import {
|
|
10
|
-
BaseEmbeddedBinaryManager,
|
|
11
|
-
type EmbeddedBinaryManagerConfig,
|
|
12
|
-
} from '../../core/base-embedded-binary-manager'
|
|
13
|
-
import { getBinaryUrl } from './binary-urls'
|
|
14
|
-
import { normalizeVersion } from './version-maps'
|
|
15
|
-
import { Engine, type Platform, type Arch } from '../../types'
|
|
16
|
-
|
|
17
|
-
class DuckDBBinaryManager extends BaseEmbeddedBinaryManager {
|
|
18
|
-
protected readonly config: EmbeddedBinaryManagerConfig = {
|
|
19
|
-
engine: Engine.DuckDB,
|
|
20
|
-
engineName: 'duckdb',
|
|
21
|
-
displayName: 'DuckDB',
|
|
22
|
-
primaryBinary: 'duckdb',
|
|
23
|
-
executableNames: ['duckdb'],
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
protected getBinaryUrlFromModule(
|
|
27
|
-
version: string,
|
|
28
|
-
platform: Platform,
|
|
29
|
-
arch: Arch,
|
|
30
|
-
): string {
|
|
31
|
-
return getBinaryUrl(version, platform, arch)
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
protected normalizeVersionFromModule(version: string): string {
|
|
35
|
-
return normalizeVersion(version)
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
protected parseVersionFromOutput(stdout: string): string | null {
|
|
39
|
-
// Extract version from output like "v1.4.3 abcdef123"
|
|
40
|
-
const match = stdout.match(/v?(\d+\.\d+\.\d+)/)
|
|
41
|
-
return match?.[1] ?? null
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export const duckdbBinaryManager = new DuckDBBinaryManager()
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* hostdb Releases Module for DuckDB
|
|
3
|
-
*
|
|
4
|
-
* Fetches DuckDB binary information from the hostdb repository at
|
|
5
|
-
* https://github.com/robertjbass/hostdb
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { createHostdbReleases } from '../../core/hostdb-releases-factory'
|
|
9
|
-
import { DUCKDB_VERSION_MAP, SUPPORTED_MAJOR_VERSIONS } from './version-maps'
|
|
10
|
-
import { duckdbBinaryManager } from './binary-manager'
|
|
11
|
-
import { Engine } from '../../types'
|
|
12
|
-
|
|
13
|
-
const hostdbReleases = createHostdbReleases({
|
|
14
|
-
engine: Engine.DuckDB,
|
|
15
|
-
displayName: 'DuckDB',
|
|
16
|
-
versionMap: DUCKDB_VERSION_MAP,
|
|
17
|
-
supportedMajorVersions: SUPPORTED_MAJOR_VERSIONS,
|
|
18
|
-
groupingStrategy: 'single-digit',
|
|
19
|
-
listInstalled: () => duckdbBinaryManager.listInstalled(),
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
export const fetchAvailableVersions = hostdbReleases.fetchAvailableVersions
|
|
23
|
-
export const getLatestVersion = hostdbReleases.getLatestVersion
|