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,219 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Meilisearch restore module
|
|
3
|
-
* Supports snapshot-based restore using Meilisearch's snapshot files
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { copyFile, open, mkdir, rm, writeFile } from 'fs/promises'
|
|
7
|
-
import { existsSync, statSync } from 'fs'
|
|
8
|
-
import { join, basename } from 'path'
|
|
9
|
-
import { paths } from '../../config/paths'
|
|
10
|
-
import { logDebug } from '../../core/error-handler'
|
|
11
|
-
import type { BackupFormat, RestoreResult } from '../../types'
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Detect backup format from file
|
|
15
|
-
* Meilisearch uses snapshot files which are compressed archives
|
|
16
|
-
*/
|
|
17
|
-
export async function detectBackupFormat(
|
|
18
|
-
filePath: string,
|
|
19
|
-
): Promise<BackupFormat> {
|
|
20
|
-
if (!existsSync(filePath)) {
|
|
21
|
-
throw new Error(`Backup file not found: ${filePath}`)
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const stats = statSync(filePath)
|
|
25
|
-
|
|
26
|
-
if (stats.isDirectory()) {
|
|
27
|
-
return {
|
|
28
|
-
format: 'unknown',
|
|
29
|
-
description: 'Directory found - Meilisearch uses single snapshot files',
|
|
30
|
-
restoreCommand:
|
|
31
|
-
'Meilisearch requires a single .snapshot file for restore',
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// Check file extension for .snapshot files
|
|
36
|
-
if (filePath.endsWith('.snapshot')) {
|
|
37
|
-
return {
|
|
38
|
-
format: 'snapshot',
|
|
39
|
-
description: 'Meilisearch snapshot file',
|
|
40
|
-
restoreCommand:
|
|
41
|
-
'Copy to snapshots directory and restart Meilisearch (spindb restore handles this)',
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Check file contents for gzip magic bytes (snapshot files are compressed)
|
|
46
|
-
try {
|
|
47
|
-
const buffer = Buffer.alloc(4)
|
|
48
|
-
const fd = await open(filePath, 'r')
|
|
49
|
-
try {
|
|
50
|
-
await fd.read(buffer, 0, 4, 0)
|
|
51
|
-
// Gzip magic bytes: 1f 8b
|
|
52
|
-
if (buffer[0] === 0x1f && buffer[1] === 0x8b) {
|
|
53
|
-
return {
|
|
54
|
-
format: 'snapshot',
|
|
55
|
-
description: 'Meilisearch snapshot file (detected by magic bytes)',
|
|
56
|
-
restoreCommand:
|
|
57
|
-
'Copy to snapshots directory and restart Meilisearch (spindb restore handles this)',
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
} finally {
|
|
61
|
-
await fd.close().catch(() => {})
|
|
62
|
-
}
|
|
63
|
-
} catch (error) {
|
|
64
|
-
logDebug(`Error reading backup file header: ${error}`)
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
return {
|
|
68
|
-
format: 'unknown',
|
|
69
|
-
description: 'Unknown backup format',
|
|
70
|
-
restoreCommand: 'Use .snapshot file for restore',
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// Restore options for Meilisearch
|
|
75
|
-
export type RestoreOptions = {
|
|
76
|
-
containerName: string
|
|
77
|
-
dataDir?: string
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Restore from snapshot backup
|
|
82
|
-
*
|
|
83
|
-
* IMPORTANT: Meilisearch should be stopped before snapshot restore.
|
|
84
|
-
* The snapshot file is copied to the snapshots directory, and a marker file
|
|
85
|
-
* is created so that the next start() call will use --import-snapshot flag.
|
|
86
|
-
*/
|
|
87
|
-
async function restoreSnapshotBackup(
|
|
88
|
-
backupPath: string,
|
|
89
|
-
containerName: string,
|
|
90
|
-
dataDir?: string,
|
|
91
|
-
): Promise<RestoreResult> {
|
|
92
|
-
const targetDir =
|
|
93
|
-
dataDir ||
|
|
94
|
-
paths.getContainerDataPath(containerName, { engine: 'meilisearch' })
|
|
95
|
-
// Snapshots directory must be sibling of data, not inside it
|
|
96
|
-
// IMPORTANT: Meilisearch fails if --snapshot-dir is inside --db-path
|
|
97
|
-
const containerDir = paths.getContainerPath(containerName, {
|
|
98
|
-
engine: 'meilisearch',
|
|
99
|
-
})
|
|
100
|
-
const snapshotsDir = join(containerDir, 'snapshots')
|
|
101
|
-
const snapshotName = basename(backupPath)
|
|
102
|
-
const targetPath = join(snapshotsDir, snapshotName)
|
|
103
|
-
|
|
104
|
-
logDebug(`Restoring snapshot to: ${targetPath}`)
|
|
105
|
-
|
|
106
|
-
// Ensure snapshots directory exists
|
|
107
|
-
if (!existsSync(snapshotsDir)) {
|
|
108
|
-
await mkdir(snapshotsDir, { recursive: true })
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// Copy backup to snapshots directory FIRST to ensure it succeeds
|
|
112
|
-
// before removing any existing data (prevents data loss if copy fails)
|
|
113
|
-
await copyFile(backupPath, targetPath)
|
|
114
|
-
|
|
115
|
-
// Remove existing indexes after successful copy for clean restore
|
|
116
|
-
const indexesDir = join(targetDir, 'indexes')
|
|
117
|
-
if (existsSync(indexesDir)) {
|
|
118
|
-
logDebug('Removing existing indexes for clean restore')
|
|
119
|
-
await rm(indexesDir, { recursive: true, force: true })
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
// Also remove tasks database
|
|
123
|
-
const tasksDir = join(targetDir, 'tasks')
|
|
124
|
-
if (existsSync(tasksDir)) {
|
|
125
|
-
logDebug('Removing existing tasks for clean restore')
|
|
126
|
-
await rm(tasksDir, { recursive: true, force: true })
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
// Write marker file so start() knows to use --import-snapshot
|
|
130
|
-
// The marker contains the path to the snapshot to import
|
|
131
|
-
const markerPath = join(containerDir, 'pending-snapshot-import')
|
|
132
|
-
await writeFile(markerPath, targetPath, 'utf-8')
|
|
133
|
-
logDebug(`Created pending import marker: ${markerPath}`)
|
|
134
|
-
|
|
135
|
-
return {
|
|
136
|
-
format: 'snapshot',
|
|
137
|
-
stdout: `Restored snapshot to ${targetPath}. Next start will auto-import the snapshot.`,
|
|
138
|
-
code: 0,
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* Restore from backup
|
|
144
|
-
* Supports snapshot format only
|
|
145
|
-
*/
|
|
146
|
-
export async function restoreBackup(
|
|
147
|
-
backupPath: string,
|
|
148
|
-
options: RestoreOptions,
|
|
149
|
-
): Promise<RestoreResult> {
|
|
150
|
-
const { containerName, dataDir } = options
|
|
151
|
-
|
|
152
|
-
if (!existsSync(backupPath)) {
|
|
153
|
-
throw new Error(`Backup file not found: ${backupPath}`)
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// Detect backup format
|
|
157
|
-
const format = await detectBackupFormat(backupPath)
|
|
158
|
-
logDebug(`Detected backup format: ${format.format}`)
|
|
159
|
-
|
|
160
|
-
if (format.format === 'snapshot') {
|
|
161
|
-
return restoreSnapshotBackup(backupPath, containerName, dataDir)
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
throw new Error(
|
|
165
|
-
`Invalid backup format: ${format.format}. Use .snapshot file for restore.`,
|
|
166
|
-
)
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Parse Meilisearch connection string
|
|
171
|
-
* Format: http://host[:port], https://host[:port], or meilisearch://host[:port]
|
|
172
|
-
*
|
|
173
|
-
* The meilisearch:// scheme is an alias for http://
|
|
174
|
-
* Meilisearch uses indexes instead of traditional databases
|
|
175
|
-
*/
|
|
176
|
-
export function parseConnectionString(connectionString: string): {
|
|
177
|
-
host: string
|
|
178
|
-
port: number
|
|
179
|
-
protocol: 'http' | 'https'
|
|
180
|
-
} {
|
|
181
|
-
if (!connectionString || typeof connectionString !== 'string') {
|
|
182
|
-
throw new Error(
|
|
183
|
-
'Invalid Meilisearch connection string: expected a non-empty string',
|
|
184
|
-
)
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
let url: URL
|
|
188
|
-
try {
|
|
189
|
-
url = new URL(connectionString)
|
|
190
|
-
} catch (error) {
|
|
191
|
-
throw new Error(
|
|
192
|
-
`Invalid Meilisearch connection string: "${connectionString}". ` +
|
|
193
|
-
`Expected format: http://host[:port] or meilisearch://host[:port]`,
|
|
194
|
-
{ cause: error },
|
|
195
|
-
)
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
// Validate protocol (meilisearch:// is an alias for http://)
|
|
199
|
-
let protocol: 'http' | 'https'
|
|
200
|
-
if (url.protocol === 'http:' || url.protocol === 'meilisearch:') {
|
|
201
|
-
protocol = 'http'
|
|
202
|
-
} else if (url.protocol === 'https:') {
|
|
203
|
-
protocol = 'https'
|
|
204
|
-
} else {
|
|
205
|
-
throw new Error(
|
|
206
|
-
`Invalid Meilisearch connection string: unsupported protocol "${url.protocol}". ` +
|
|
207
|
-
`Expected "http://", "https://", or "meilisearch://"`,
|
|
208
|
-
)
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
const host = url.hostname || '127.0.0.1'
|
|
212
|
-
const port = parseInt(url.port, 10) || 7700
|
|
213
|
-
|
|
214
|
-
return {
|
|
215
|
-
host,
|
|
216
|
-
port,
|
|
217
|
-
protocol,
|
|
218
|
-
}
|
|
219
|
-
}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Meilisearch 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 MEILISEARCH_VERSION_MAP to match
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import { logDebug } from '../../core/error-handler'
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Map of major Meilisearch versions to their latest stable patch versions.
|
|
17
|
-
* Must match versions available in hostdb releases.json.
|
|
18
|
-
*/
|
|
19
|
-
export const MEILISEARCH_VERSION_MAP: Record<string, string> = {
|
|
20
|
-
// 1-part: major version -> latest
|
|
21
|
-
'1': '1.33.1',
|
|
22
|
-
// 2-part: major.minor -> latest patch
|
|
23
|
-
'1.33': '1.33.1',
|
|
24
|
-
// 3-part: exact version (identity mapping)
|
|
25
|
-
'1.33.1': '1.33.1',
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Supported major Meilisearch versions (1-part format).
|
|
30
|
-
* Used for grouping and display purposes.
|
|
31
|
-
*/
|
|
32
|
-
export const SUPPORTED_MAJOR_VERSIONS = ['1']
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Get the full version string for a major version.
|
|
36
|
-
*
|
|
37
|
-
* @param majorVersion - Major version (e.g., '1')
|
|
38
|
-
* @returns Full version string (e.g., '1.33.1') or null if not supported
|
|
39
|
-
*/
|
|
40
|
-
export function getFullVersion(majorVersion: string): string | null {
|
|
41
|
-
return MEILISEARCH_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., '1', '1.33', '1.33.1')
|
|
48
|
-
* @returns Normalized version (e.g., '1.33.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., '1.33.1' => '1.33.1')
|
|
53
|
-
const fullVersion = MEILISEARCH_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., "1", "1.33", "1.33.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
|
-
`Meilisearch version '${version}' has invalid format, may not be available in hostdb`,
|
|
71
|
-
)
|
|
72
|
-
} else {
|
|
73
|
-
logDebug(
|
|
74
|
-
`Meilisearch version '${version}' not in version map, may not be available in hostdb`,
|
|
75
|
-
)
|
|
76
|
-
}
|
|
77
|
-
return version
|
|
78
|
-
}
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Meilisearch version validation utilities
|
|
3
|
-
* Handles version parsing, comparison, and compatibility checking
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Parse a Meilisearch version string into components
|
|
8
|
-
* Handles formats like "1.33.1", "1.33", "v1.33.1"
|
|
9
|
-
*/
|
|
10
|
-
export function parseVersion(versionString: string): {
|
|
11
|
-
major: number
|
|
12
|
-
minor: number
|
|
13
|
-
patch: number
|
|
14
|
-
raw: string
|
|
15
|
-
} | null {
|
|
16
|
-
const cleaned = versionString.replace(/^v/, '').trim()
|
|
17
|
-
const parts = cleaned.split('.')
|
|
18
|
-
|
|
19
|
-
if (parts.length < 1) return null
|
|
20
|
-
|
|
21
|
-
const major = parseInt(parts[0], 10)
|
|
22
|
-
const minor = parts[1] ? parseInt(parts[1], 10) : 0
|
|
23
|
-
const patch = parts[2] ? parseInt(parts[2], 10) : 0
|
|
24
|
-
|
|
25
|
-
if (isNaN(major)) return null
|
|
26
|
-
if (parts[1] && isNaN(minor)) return null
|
|
27
|
-
if (parts[2] && isNaN(patch)) return null
|
|
28
|
-
|
|
29
|
-
return { major, minor, patch, raw: cleaned }
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Check if a Meilisearch version is supported by SpinDB
|
|
34
|
-
* Minimum supported version: 1.0.0
|
|
35
|
-
*/
|
|
36
|
-
export function isVersionSupported(version: string): boolean {
|
|
37
|
-
const parsed = parseVersion(version)
|
|
38
|
-
if (!parsed) return false
|
|
39
|
-
|
|
40
|
-
return parsed.major >= 1
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Get major version from full version string
|
|
45
|
-
* e.g., "1.33.1" -> "1"
|
|
46
|
-
*/
|
|
47
|
-
export function getMajorVersion(version: string): string {
|
|
48
|
-
const parsed = parseVersion(version)
|
|
49
|
-
return parsed ? String(parsed.major) : version
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Get major.minor version from full version string
|
|
54
|
-
* e.g., "1.33.1" -> "1.33"
|
|
55
|
-
*/
|
|
56
|
-
export function getMajorMinorVersion(version: string): string {
|
|
57
|
-
const parsed = parseVersion(version)
|
|
58
|
-
if (!parsed) return version
|
|
59
|
-
return `${parsed.major}.${parsed.minor}`
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Compare two Meilisearch versions
|
|
64
|
-
* Returns: -1 if a < b, 0 if a == b, 1 if a > b, null if either version cannot be parsed
|
|
65
|
-
*/
|
|
66
|
-
export function compareVersions(a: string, b: string): number | null {
|
|
67
|
-
const parsedA = parseVersion(a)
|
|
68
|
-
const parsedB = parseVersion(b)
|
|
69
|
-
|
|
70
|
-
if (!parsedA || !parsedB) {
|
|
71
|
-
return null
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
if (parsedA.major !== parsedB.major) {
|
|
75
|
-
return parsedA.major < parsedB.major ? -1 : 1
|
|
76
|
-
}
|
|
77
|
-
if (parsedA.minor !== parsedB.minor) {
|
|
78
|
-
return parsedA.minor < parsedB.minor ? -1 : 1
|
|
79
|
-
}
|
|
80
|
-
if (parsedA.patch !== parsedB.patch) {
|
|
81
|
-
return parsedA.patch < parsedB.patch ? -1 : 1
|
|
82
|
-
}
|
|
83
|
-
return 0
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Check if a backup version is compatible with the restore version
|
|
88
|
-
* Meilisearch snapshots are generally forward-compatible within major versions
|
|
89
|
-
*/
|
|
90
|
-
export function isVersionCompatible(
|
|
91
|
-
backupVersion: string,
|
|
92
|
-
restoreVersion: string,
|
|
93
|
-
): { compatible: boolean; warning?: string } {
|
|
94
|
-
const backup = parseVersion(backupVersion)
|
|
95
|
-
const restore = parseVersion(restoreVersion)
|
|
96
|
-
|
|
97
|
-
if (!backup || !restore) {
|
|
98
|
-
return {
|
|
99
|
-
compatible: true,
|
|
100
|
-
warning: 'Could not parse versions, proceeding with restore',
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// Cannot restore newer snapshot to older server
|
|
105
|
-
if (backup.major > restore.major) {
|
|
106
|
-
return {
|
|
107
|
-
compatible: false,
|
|
108
|
-
warning: `Cannot restore Meilisearch ${backupVersion} snapshot to ${restoreVersion} server. The backup is from a newer major version.`,
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// Allow same major version
|
|
113
|
-
if (backup.major === restore.major) {
|
|
114
|
-
return { compatible: true }
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// Allow upgrading from older major version (restore.major > backup.major)
|
|
118
|
-
return {
|
|
119
|
-
compatible: true,
|
|
120
|
-
warning: `Restoring Meilisearch ${backupVersion} snapshot to ${restoreVersion} server. Meilisearch will upgrade the snapshot format on next save.`,
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// Validate that a version string matches supported format
|
|
125
|
-
export function isValidVersionFormat(version: string): boolean {
|
|
126
|
-
const parsed = parseVersion(version)
|
|
127
|
-
return parsed !== null
|
|
128
|
-
}
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
# MongoDB Engine Implementation
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
MongoDB is a document database with JavaScript-based queries. SpinDB downloads MongoDB binaries from hostdb and manages them with `mongod` server and `mongosh` shell.
|
|
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
|
|
24
|
-
```
|
|
25
|
-
mongodb/
|
|
26
|
-
├── bin/
|
|
27
|
-
│ ├── mongod # Server binary
|
|
28
|
-
│ ├── mongos # Sharding router
|
|
29
|
-
│ └── mongosh # Interactive shell
|
|
30
|
-
└── lib/ # Shared libraries (if any)
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
### macOS Extended Attributes Recovery
|
|
34
|
-
|
|
35
|
-
The `BaseDocumentBinaryManager` includes special handling for macOS extended attribute files (`._*` prefix) that may cause tar extraction warnings. The manager recovers from these non-fatal warnings.
|
|
36
|
-
|
|
37
|
-
### Version Map Sync
|
|
38
|
-
|
|
39
|
-
```typescript
|
|
40
|
-
export const MONGODB_VERSION_MAP: Record<string, string> = {
|
|
41
|
-
'7.0': '7.0.28',
|
|
42
|
-
'8.0': '8.0.x',
|
|
43
|
-
'8.2': '8.2.x',
|
|
44
|
-
}
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Implementation Details
|
|
48
|
-
|
|
49
|
-
### Binary Manager
|
|
50
|
-
|
|
51
|
-
MongoDB uses `BaseDocumentBinaryManager` which extends the base manager with:
|
|
52
|
-
- macOS tar recovery for extended attribute files
|
|
53
|
-
- Major version matching for verification
|
|
54
|
-
|
|
55
|
-
### Version Parsing
|
|
56
|
-
|
|
57
|
-
- **Version output format**: `db version v7.0.28` or fallback to semantic version
|
|
58
|
-
- **Parse pattern**: `/db version v(\d+\.\d+\.\d+)/` then fallback to `/(\d+\.\d+\.\d+)/`
|
|
59
|
-
- **Major version matching**: Only major version needs to match for verification
|
|
60
|
-
|
|
61
|
-
### Default Configuration
|
|
62
|
-
|
|
63
|
-
- **Default Port**: 27017 (auto-increments on conflict)
|
|
64
|
-
- **Default Database**: Name derived from container name
|
|
65
|
-
- **PID File**: `mongod.pid` in container directory
|
|
66
|
-
|
|
67
|
-
### Implicit Database Creation
|
|
68
|
-
|
|
69
|
-
MongoDB/FerretDB don't create databases until data is written. To force immediate creation (so databases appear in tools like TablePlus):
|
|
70
|
-
|
|
71
|
-
```javascript
|
|
72
|
-
// createDatabase() implementation:
|
|
73
|
-
db.getCollection('_spindb_init').insertOne({})
|
|
74
|
-
db.getCollection('_spindb_init').drop()
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
This creates and immediately drops a temporary collection, leaving the database visible.
|
|
78
|
-
|
|
79
|
-
### Connection String Format
|
|
80
|
-
|
|
81
|
-
```
|
|
82
|
-
mongodb://127.0.0.1:{port}/{database}
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
## Backup & Restore
|
|
86
|
-
|
|
87
|
-
### Backup Formats
|
|
88
|
-
|
|
89
|
-
| Format | Extension | Tool | Notes |
|
|
90
|
-
|--------|-----------|------|-------|
|
|
91
|
-
| bson | (directory) | mongodump | Directory with BSON files |
|
|
92
|
-
| archive | `.archive` | mongodump --archive | Single file archive |
|
|
93
|
-
|
|
94
|
-
### Restore Methods
|
|
95
|
-
|
|
96
|
-
- **BSON directory**: Restored via `mongorestore`
|
|
97
|
-
- **Archive format**: Restored via `mongorestore --archive`
|
|
98
|
-
|
|
99
|
-
## Integration Test Notes
|
|
100
|
-
|
|
101
|
-
### Reserved Ports
|
|
102
|
-
|
|
103
|
-
MongoDB integration tests use port ranges to avoid conflicts with default MongoDB installations.
|
|
104
|
-
|
|
105
|
-
### Test Fixtures
|
|
106
|
-
|
|
107
|
-
Located in `tests/fixtures/mongodb/seeds/`:
|
|
108
|
-
- Test documents for data operations
|
|
109
|
-
|
|
110
|
-
### Shell Scripts
|
|
111
|
-
|
|
112
|
-
MongoDB uses `mongosh` (modern shell) for script execution, not the legacy `mongo` shell.
|
|
113
|
-
|
|
114
|
-
## Docker E2E Test Notes
|
|
115
|
-
|
|
116
|
-
MongoDB is tested in Docker E2E with:
|
|
117
|
-
- Container lifecycle
|
|
118
|
-
- Database operations
|
|
119
|
-
- BSON and archive backup/restore
|
|
120
|
-
- Multi-database support
|
|
121
|
-
|
|
122
|
-
## Known Issues & Gotchas
|
|
123
|
-
|
|
124
|
-
### 1. mongosh vs mongo
|
|
125
|
-
|
|
126
|
-
SpinDB uses `mongosh` (the modern MongoDB Shell). The legacy `mongo` shell is deprecated and not bundled.
|
|
127
|
-
|
|
128
|
-
### 2. macOS Tar Warnings
|
|
129
|
-
|
|
130
|
-
When extracting MongoDB archives on macOS, tar may emit warnings about `._*` extended attribute files. The `BaseDocumentBinaryManager` handles these warnings gracefully without failing extraction.
|
|
131
|
-
|
|
132
|
-
### 3. Database Visibility
|
|
133
|
-
|
|
134
|
-
Databases in MongoDB don't appear in `show dbs` until they contain data. The `createDatabase()` method uses the temp collection trick to force visibility.
|
|
135
|
-
|
|
136
|
-
### 4. Windows Detached Spawn
|
|
137
|
-
|
|
138
|
-
On Windows, MongoDB uses detached spawn with `windowsHide: true` for background operation. The process is tracked via PID file.
|
|
139
|
-
|
|
140
|
-
### 5. Slow Initial Startup
|
|
141
|
-
|
|
142
|
-
First startup may take longer as MongoDB initializes WiredTiger storage engine.
|
|
143
|
-
|
|
144
|
-
## CI/CD Notes
|
|
145
|
-
|
|
146
|
-
### GitHub Actions Cache Step
|
|
147
|
-
|
|
148
|
-
```yaml
|
|
149
|
-
- name: Cache MongoDB binaries
|
|
150
|
-
uses: actions/cache@v4
|
|
151
|
-
with:
|
|
152
|
-
path: ~/.spindb/bin/mongodb-*
|
|
153
|
-
key: mongodb-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('engines/mongodb/version-maps.ts') }}
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
### Docker E2E Alias
|
|
157
|
-
|
|
158
|
-
```bash
|
|
159
|
-
pnpm test:docker -- mongo
|
|
160
|
-
# or
|
|
161
|
-
pnpm test:docker -- mongodb
|
|
162
|
-
```
|