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
|
@@ -0,0 +1,559 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TigerBeetle Engine Implementation
|
|
3
|
+
*
|
|
4
|
+
* TigerBeetle is a high-performance financial ledger database written in Zig,
|
|
5
|
+
* with a custom binary protocol (not REST, not SQL).
|
|
6
|
+
*
|
|
7
|
+
* Key characteristics:
|
|
8
|
+
* - Default port: 3000
|
|
9
|
+
* - Single binary: `tigerbeetle` (server + REPL client)
|
|
10
|
+
* - Two-step init: `tigerbeetle format` then `tigerbeetle start`
|
|
11
|
+
* - No auth, no multi-database, custom binary protocol
|
|
12
|
+
* - Health check: PID + TCP port (no HTTP endpoint)
|
|
13
|
+
* - Backup: stop-and-copy of single data file
|
|
14
|
+
* - REPL: `tigerbeetle repl --cluster=0 --addresses=port`
|
|
15
|
+
* - `--development` flag required for local dev
|
|
16
|
+
* - Abrupt shutdown (SIGTERM/SIGKILL) is safe by design
|
|
17
|
+
*/
|
|
18
|
+
import { spawn, execFileSync } from 'child_process';
|
|
19
|
+
import { existsSync, openSync, closeSync } from 'fs';
|
|
20
|
+
import { mkdir, writeFile, readFile, unlink, stat } from 'fs/promises';
|
|
21
|
+
import { join } from 'path';
|
|
22
|
+
import { BaseEngine } from '../base-engine.js';
|
|
23
|
+
import { paths } from '../../config/paths.js';
|
|
24
|
+
import { getEngineDefaults } from '../../config/defaults.js';
|
|
25
|
+
import { platformService, isWindows } from '../../core/platform-service.js';
|
|
26
|
+
import { configManager } from '../../core/config-manager.js';
|
|
27
|
+
import { logDebug, logWarning } from '../../core/error-handler.js';
|
|
28
|
+
import { processManager } from '../../core/process-manager.js';
|
|
29
|
+
import { portManager } from '../../core/port-manager.js';
|
|
30
|
+
import { tigerbeetleBinaryManager } from './binary-manager.js';
|
|
31
|
+
import { getBinaryUrl } from './binary-urls.js';
|
|
32
|
+
import { normalizeVersion, SUPPORTED_MAJOR_VERSIONS, TIGERBEETLE_VERSION_MAP, } from './version-maps.js';
|
|
33
|
+
import { fetchAvailableVersions as fetchHostdbVersions } from './hostdb-releases.js';
|
|
34
|
+
import { detectBackupFormat as detectBackupFormatImpl, restoreBackup, } from './restore.js';
|
|
35
|
+
import { createBackup } from './backup.js';
|
|
36
|
+
const ENGINE = 'tigerbeetle';
|
|
37
|
+
const engineDef = getEngineDefaults(ENGINE);
|
|
38
|
+
/**
|
|
39
|
+
* Default cluster ID for local single-node development.
|
|
40
|
+
* TigerBeetle requires a cluster ID for format, start, and REPL commands.
|
|
41
|
+
* Cluster 0 is the standard default for local/single-node usage.
|
|
42
|
+
*/
|
|
43
|
+
const DEFAULT_CLUSTER_ID = 0;
|
|
44
|
+
export class TigerBeetleEngine extends BaseEngine {
|
|
45
|
+
name = ENGINE;
|
|
46
|
+
displayName = 'TigerBeetle';
|
|
47
|
+
defaultPort = engineDef.defaultPort;
|
|
48
|
+
supportedVersions = SUPPORTED_MAJOR_VERSIONS;
|
|
49
|
+
getPlatformInfo() {
|
|
50
|
+
return platformService.getPlatformInfo();
|
|
51
|
+
}
|
|
52
|
+
async fetchAvailableVersions() {
|
|
53
|
+
return fetchHostdbVersions();
|
|
54
|
+
}
|
|
55
|
+
getBinaryUrl(version, platform, arch) {
|
|
56
|
+
return getBinaryUrl(version, platform, arch);
|
|
57
|
+
}
|
|
58
|
+
resolveFullVersion(version) {
|
|
59
|
+
if (/^\d+\.\d+\.\d+$/.test(version)) {
|
|
60
|
+
return version;
|
|
61
|
+
}
|
|
62
|
+
return TIGERBEETLE_VERSION_MAP[version] || version;
|
|
63
|
+
}
|
|
64
|
+
getBinaryPath(version) {
|
|
65
|
+
const fullVersion = this.resolveFullVersion(version);
|
|
66
|
+
const { platform: p, arch: a } = this.getPlatformInfo();
|
|
67
|
+
return paths.getBinaryPath({
|
|
68
|
+
engine: 'tigerbeetle',
|
|
69
|
+
version: fullVersion,
|
|
70
|
+
platform: p,
|
|
71
|
+
arch: a,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
async verifyBinary(binPath) {
|
|
75
|
+
const ext = platformService.getExecutableExtension();
|
|
76
|
+
const serverPath = join(binPath, 'bin', `tigerbeetle${ext}`);
|
|
77
|
+
return existsSync(serverPath);
|
|
78
|
+
}
|
|
79
|
+
async isBinaryInstalled(version) {
|
|
80
|
+
const { platform, arch } = this.getPlatformInfo();
|
|
81
|
+
return tigerbeetleBinaryManager.isInstalled(version, platform, arch);
|
|
82
|
+
}
|
|
83
|
+
async ensureBinaries(version, onProgress) {
|
|
84
|
+
const { platform, arch } = this.getPlatformInfo();
|
|
85
|
+
const binPath = await tigerbeetleBinaryManager.ensureInstalled(version, platform, arch, onProgress);
|
|
86
|
+
// Register binary in config
|
|
87
|
+
const ext = platformService.getExecutableExtension();
|
|
88
|
+
const toolPath = join(binPath, 'bin', `tigerbeetle${ext}`);
|
|
89
|
+
if (existsSync(toolPath)) {
|
|
90
|
+
await configManager.setBinaryPath('tigerbeetle', toolPath, 'bundled');
|
|
91
|
+
}
|
|
92
|
+
return binPath;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Initialize a new TigerBeetle data directory.
|
|
96
|
+
* Creates the directory and runs `tigerbeetle format` to initialize the data file.
|
|
97
|
+
*/
|
|
98
|
+
async initDataDir(containerName, version, _options = {}) {
|
|
99
|
+
const dataDir = paths.getContainerDataPath(containerName, {
|
|
100
|
+
engine: ENGINE,
|
|
101
|
+
});
|
|
102
|
+
// Create data directory if it doesn't exist
|
|
103
|
+
if (!existsSync(dataDir)) {
|
|
104
|
+
await mkdir(dataDir, { recursive: true });
|
|
105
|
+
logDebug(`Created TigerBeetle data directory: ${dataDir}`);
|
|
106
|
+
}
|
|
107
|
+
const dataFile = join(dataDir, '0_0.tigerbeetle');
|
|
108
|
+
// Skip format if data file already exists (e.g., restoring from backup)
|
|
109
|
+
if (existsSync(dataFile)) {
|
|
110
|
+
logDebug(`TigerBeetle data file already exists: ${dataFile}`);
|
|
111
|
+
return dataDir;
|
|
112
|
+
}
|
|
113
|
+
// Get binary path for format command
|
|
114
|
+
const tigerbeetleBinary = await this.getTigerBeetlePath(version);
|
|
115
|
+
// Run tigerbeetle format to initialize the data file
|
|
116
|
+
logDebug(`Formatting TigerBeetle data file: ${dataFile}`);
|
|
117
|
+
try {
|
|
118
|
+
execFileSync(tigerbeetleBinary, [
|
|
119
|
+
'format',
|
|
120
|
+
`--cluster=${DEFAULT_CLUSTER_ID}`,
|
|
121
|
+
'--replica=0',
|
|
122
|
+
'--replica-count=1',
|
|
123
|
+
'--development',
|
|
124
|
+
dataFile,
|
|
125
|
+
], {
|
|
126
|
+
timeout: 30000,
|
|
127
|
+
encoding: 'utf-8',
|
|
128
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
129
|
+
});
|
|
130
|
+
logDebug(`TigerBeetle data file formatted successfully: ${dataFile}`);
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
134
|
+
if (msg.includes('PermissionDenied')) {
|
|
135
|
+
throw new Error("TigerBeetle requires io_uring syscalls which are blocked by Docker's default seccomp profile.\n" +
|
|
136
|
+
'Run your container with: docker run --security-opt seccomp=unconfined ...');
|
|
137
|
+
}
|
|
138
|
+
throw new Error(`Failed to format TigerBeetle data file: ${msg}`);
|
|
139
|
+
}
|
|
140
|
+
return dataDir;
|
|
141
|
+
}
|
|
142
|
+
// Get the path to tigerbeetle binary for a version
|
|
143
|
+
async getTigerBeetlePath(version) {
|
|
144
|
+
// Check config cache first
|
|
145
|
+
const cached = await configManager.getBinaryPath('tigerbeetle');
|
|
146
|
+
if (cached && existsSync(cached)) {
|
|
147
|
+
return cached;
|
|
148
|
+
}
|
|
149
|
+
const { platform, arch } = this.getPlatformInfo();
|
|
150
|
+
const fullVersion = normalizeVersion(version);
|
|
151
|
+
const ext = platformService.getExecutableExtension();
|
|
152
|
+
const binPath = paths.getBinaryPath({
|
|
153
|
+
engine: 'tigerbeetle',
|
|
154
|
+
version: fullVersion,
|
|
155
|
+
platform,
|
|
156
|
+
arch,
|
|
157
|
+
});
|
|
158
|
+
const tigerbeetlePath = join(binPath, 'bin', `tigerbeetle${ext}`);
|
|
159
|
+
if (existsSync(tigerbeetlePath)) {
|
|
160
|
+
return tigerbeetlePath;
|
|
161
|
+
}
|
|
162
|
+
throw new Error(`TigerBeetle ${version} is not installed. Run: spindb engines download tigerbeetle ${version}`);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Start TigerBeetle server
|
|
166
|
+
*/
|
|
167
|
+
async start(container, onProgress) {
|
|
168
|
+
const { name, port, version, binaryPath } = container;
|
|
169
|
+
// Check if already running (idempotent behavior)
|
|
170
|
+
const alreadyRunning = await processManager.isRunning(name, {
|
|
171
|
+
engine: ENGINE,
|
|
172
|
+
});
|
|
173
|
+
if (alreadyRunning) {
|
|
174
|
+
return {
|
|
175
|
+
port,
|
|
176
|
+
connectionString: this.getConnectionString(container),
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
// Get TigerBeetle binary path
|
|
180
|
+
let tigerbeetleBinary = null;
|
|
181
|
+
const ext = platformService.getExecutableExtension();
|
|
182
|
+
if (binaryPath && existsSync(binaryPath)) {
|
|
183
|
+
const serverPath = join(binaryPath, 'bin', `tigerbeetle${ext}`);
|
|
184
|
+
if (existsSync(serverPath)) {
|
|
185
|
+
tigerbeetleBinary = serverPath;
|
|
186
|
+
logDebug(`Using stored binary path: ${tigerbeetleBinary}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (!tigerbeetleBinary) {
|
|
190
|
+
try {
|
|
191
|
+
tigerbeetleBinary = await this.getTigerBeetlePath(version);
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
const originalMessage = error instanceof Error ? error.message : String(error);
|
|
195
|
+
throw new Error(`TigerBeetle ${version} is not installed. Run: spindb engines download tigerbeetle ${version}\n` +
|
|
196
|
+
` Original error: ${originalMessage}`);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
const containerDir = paths.getContainerPath(name, { engine: ENGINE });
|
|
200
|
+
const dataDir = paths.getContainerDataPath(name, { engine: ENGINE });
|
|
201
|
+
const logFile = paths.getContainerLogPath(name, { engine: ENGINE });
|
|
202
|
+
const pidFile = join(containerDir, 'tigerbeetle.pid');
|
|
203
|
+
const dataFile = join(dataDir, '0_0.tigerbeetle');
|
|
204
|
+
if (!existsSync(dataFile)) {
|
|
205
|
+
throw new Error(`TigerBeetle data file not found at ${dataFile}. Run: spindb create <name> --engine tigerbeetle`);
|
|
206
|
+
}
|
|
207
|
+
onProgress?.({ stage: 'starting', message: 'Starting TigerBeetle...' });
|
|
208
|
+
logDebug(`Starting TigerBeetle on port ${port}`);
|
|
209
|
+
const args = [
|
|
210
|
+
'start',
|
|
211
|
+
`--addresses=127.0.0.1:${port}`,
|
|
212
|
+
'--development',
|
|
213
|
+
dataFile,
|
|
214
|
+
];
|
|
215
|
+
// Redirect stdout/stderr to log file via file descriptor
|
|
216
|
+
const logFd = openSync(logFile, 'a');
|
|
217
|
+
const spawnOpts = {
|
|
218
|
+
cwd: containerDir,
|
|
219
|
+
stdio: ['ignore', logFd, logFd],
|
|
220
|
+
detached: true,
|
|
221
|
+
};
|
|
222
|
+
if (isWindows()) {
|
|
223
|
+
spawnOpts.windowsHide = true;
|
|
224
|
+
}
|
|
225
|
+
const proc = spawn(tigerbeetleBinary, args, spawnOpts);
|
|
226
|
+
proc.unref();
|
|
227
|
+
// Close fd in parent — child inherited its own copy
|
|
228
|
+
closeSync(logFd);
|
|
229
|
+
if (!proc.pid) {
|
|
230
|
+
throw new Error('TigerBeetle server process failed to start (no PID)');
|
|
231
|
+
}
|
|
232
|
+
try {
|
|
233
|
+
await writeFile(pidFile, String(proc.pid));
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
// Non-fatal
|
|
237
|
+
}
|
|
238
|
+
// Wait for TigerBeetle to be ready (TCP port check)
|
|
239
|
+
const ready = await this.waitForReady(port);
|
|
240
|
+
if (ready) {
|
|
241
|
+
// On Windows, detached processes may have a different actual PID.
|
|
242
|
+
// Find the real PID by port and update the PID file (same pattern as QuestDB).
|
|
243
|
+
try {
|
|
244
|
+
const pids = await platformService.findProcessByPort(port);
|
|
245
|
+
if (pids.length > 0 && pids[0] !== proc.pid) {
|
|
246
|
+
logDebug(`TigerBeetle actual PID ${pids[0]} differs from spawn PID ${proc.pid}, updating PID file`);
|
|
247
|
+
await writeFile(pidFile, String(pids[0]));
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
// Non-fatal - PID file already has proc.pid from earlier write
|
|
252
|
+
}
|
|
253
|
+
return {
|
|
254
|
+
port,
|
|
255
|
+
connectionString: this.getConnectionString(container),
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
// Clean up the orphaned detached process before throwing
|
|
259
|
+
if (platformService.isProcessRunning(proc.pid)) {
|
|
260
|
+
try {
|
|
261
|
+
await platformService.terminateProcess(proc.pid, true);
|
|
262
|
+
}
|
|
263
|
+
catch {
|
|
264
|
+
// Ignore cleanup errors - best effort
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
// Check log for errors
|
|
268
|
+
let logError = '';
|
|
269
|
+
try {
|
|
270
|
+
const logContent = await readFile(logFile, 'utf-8');
|
|
271
|
+
const recentLog = logContent.slice(-2000);
|
|
272
|
+
if (recentLog.includes('PermissionDenied')) {
|
|
273
|
+
throw new Error("TigerBeetle requires io_uring syscalls which are blocked by Docker's default seccomp profile.\n" +
|
|
274
|
+
'Run your container with: docker run --security-opt seccomp=unconfined ...');
|
|
275
|
+
}
|
|
276
|
+
if (recentLog.includes('Address already in use') ||
|
|
277
|
+
recentLog.includes('address already in use')) {
|
|
278
|
+
logError = `Port ${port} is already in use`;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
catch (logReadError) {
|
|
282
|
+
// Re-throw io_uring error, ignore other log read failures
|
|
283
|
+
if (logReadError instanceof Error &&
|
|
284
|
+
logReadError.message.includes('io_uring')) {
|
|
285
|
+
throw logReadError;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
const errorDetails = [
|
|
289
|
+
logError || 'TigerBeetle failed to start within timeout.',
|
|
290
|
+
`Binary: ${tigerbeetleBinary}`,
|
|
291
|
+
`Log file: ${logFile}`,
|
|
292
|
+
]
|
|
293
|
+
.filter(Boolean)
|
|
294
|
+
.join('\n');
|
|
295
|
+
throw new Error(errorDetails);
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Wait for TigerBeetle to be ready by checking if the port is listening.
|
|
299
|
+
* TigerBeetle has no HTTP health endpoint, so we use TCP port check.
|
|
300
|
+
*/
|
|
301
|
+
async waitForReady(port, timeoutMs = 30000) {
|
|
302
|
+
const startTime = Date.now();
|
|
303
|
+
const checkInterval = 500;
|
|
304
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
305
|
+
// Check if the port is no longer available (something is listening)
|
|
306
|
+
const available = await portManager.isPortAvailable(port);
|
|
307
|
+
if (!available) {
|
|
308
|
+
logDebug(`TigerBeetle ready on port ${port}`);
|
|
309
|
+
return true;
|
|
310
|
+
}
|
|
311
|
+
await new Promise((resolve) => setTimeout(resolve, checkInterval));
|
|
312
|
+
}
|
|
313
|
+
logDebug(`TigerBeetle did not become ready within ${timeoutMs}ms`);
|
|
314
|
+
return false;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Stop TigerBeetle server.
|
|
318
|
+
* SIGTERM is safe by design — TigerBeetle handles abrupt shutdown gracefully.
|
|
319
|
+
*/
|
|
320
|
+
async stop(container) {
|
|
321
|
+
const { name, port } = container;
|
|
322
|
+
const containerDir = paths.getContainerPath(name, { engine: ENGINE });
|
|
323
|
+
const pidFile = join(containerDir, 'tigerbeetle.pid');
|
|
324
|
+
logDebug(`Stopping TigerBeetle container "${name}" on port ${port}`);
|
|
325
|
+
let pid = null;
|
|
326
|
+
// Read PID from file
|
|
327
|
+
if (existsSync(pidFile)) {
|
|
328
|
+
try {
|
|
329
|
+
const content = await readFile(pidFile, 'utf8');
|
|
330
|
+
pid = parseInt(content.trim(), 10);
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
// Ignore
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
// Fallback: find by port
|
|
337
|
+
if (!pid || !platformService.isProcessRunning(pid)) {
|
|
338
|
+
try {
|
|
339
|
+
const pids = await platformService.findProcessByPort(port);
|
|
340
|
+
if (pids.length > 0) {
|
|
341
|
+
pid = pids[0];
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
catch {
|
|
345
|
+
// Ignore
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
// Kill process if found
|
|
349
|
+
if (pid && platformService.isProcessRunning(pid)) {
|
|
350
|
+
logDebug(`Killing TigerBeetle process ${pid}`);
|
|
351
|
+
try {
|
|
352
|
+
if (isWindows()) {
|
|
353
|
+
await platformService.terminateProcess(pid, true);
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
await platformService.terminateProcess(pid, false);
|
|
357
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
358
|
+
if (platformService.isProcessRunning(pid)) {
|
|
359
|
+
logWarning(`Graceful termination failed, force killing ${pid}`);
|
|
360
|
+
await platformService.terminateProcess(pid, true);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
catch (error) {
|
|
365
|
+
logDebug(`Process termination error: ${error}`);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
// Wait for termination
|
|
369
|
+
const terminationWait = isWindows() ? 3000 : 1000;
|
|
370
|
+
await new Promise((resolve) => setTimeout(resolve, terminationWait));
|
|
371
|
+
// Cleanup PID file
|
|
372
|
+
if (existsSync(pidFile)) {
|
|
373
|
+
try {
|
|
374
|
+
await unlink(pidFile);
|
|
375
|
+
}
|
|
376
|
+
catch {
|
|
377
|
+
// Ignore
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
logDebug('TigerBeetle stopped');
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Get TigerBeetle server status.
|
|
384
|
+
* Uses PID file + process check, with port-based fallback.
|
|
385
|
+
* No HTTP health endpoint available.
|
|
386
|
+
*/
|
|
387
|
+
async status(container) {
|
|
388
|
+
const { name, port } = container;
|
|
389
|
+
const containerDir = paths.getContainerPath(name, { engine: ENGINE });
|
|
390
|
+
const pidFile = join(containerDir, 'tigerbeetle.pid');
|
|
391
|
+
// Check PID file first
|
|
392
|
+
if (existsSync(pidFile)) {
|
|
393
|
+
try {
|
|
394
|
+
const content = await readFile(pidFile, 'utf8');
|
|
395
|
+
const pid = parseInt(content.trim(), 10);
|
|
396
|
+
if (!isNaN(pid) && pid > 0 && platformService.isProcessRunning(pid)) {
|
|
397
|
+
return {
|
|
398
|
+
running: true,
|
|
399
|
+
message: `TigerBeetle is running (PID: ${pid})`,
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
catch {
|
|
404
|
+
// Ignore
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
// Fallback: check by port
|
|
408
|
+
try {
|
|
409
|
+
const pids = await platformService.findProcessByPort(port);
|
|
410
|
+
if (pids.length > 0) {
|
|
411
|
+
return {
|
|
412
|
+
running: true,
|
|
413
|
+
message: `TigerBeetle is running (PID: ${pids[0]})`,
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
catch {
|
|
418
|
+
// Ignore
|
|
419
|
+
}
|
|
420
|
+
return { running: false, message: 'TigerBeetle is not running' };
|
|
421
|
+
}
|
|
422
|
+
async detectBackupFormat(filePath) {
|
|
423
|
+
return detectBackupFormatImpl(filePath);
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Restore a backup.
|
|
427
|
+
* TigerBeetle must be stopped before restore.
|
|
428
|
+
*/
|
|
429
|
+
async restore(container, backupPath, _options = {}) {
|
|
430
|
+
const { name } = container;
|
|
431
|
+
// Check if container is running
|
|
432
|
+
const statusResult = await this.status(container);
|
|
433
|
+
if (statusResult.running) {
|
|
434
|
+
throw new Error(`TigerBeetle container "${name}" must be stopped before restore. ` +
|
|
435
|
+
`Run: spindb stop ${name}`);
|
|
436
|
+
}
|
|
437
|
+
const dataDir = paths.getContainerDataPath(name, { engine: ENGINE });
|
|
438
|
+
return restoreBackup(backupPath, {
|
|
439
|
+
containerName: name,
|
|
440
|
+
dataDir,
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Get connection string.
|
|
445
|
+
* TigerBeetle uses custom binary protocol — no URI scheme.
|
|
446
|
+
*/
|
|
447
|
+
getConnectionString(container, _database) {
|
|
448
|
+
const { port } = container;
|
|
449
|
+
return `127.0.0.1:${port}`;
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Open TigerBeetle REPL (interactive client).
|
|
453
|
+
* Uses stdio: 'inherit' pattern from SurrealDB.
|
|
454
|
+
*/
|
|
455
|
+
async connect(container, _database) {
|
|
456
|
+
const { port, version } = container;
|
|
457
|
+
const tigerbeetleBinary = await this.getTigerBeetlePath(version);
|
|
458
|
+
const spawnOptions = {
|
|
459
|
+
stdio: 'inherit',
|
|
460
|
+
};
|
|
461
|
+
return new Promise((resolve, reject) => {
|
|
462
|
+
const proc = spawn(tigerbeetleBinary, [
|
|
463
|
+
'repl',
|
|
464
|
+
`--cluster=${DEFAULT_CLUSTER_ID}`,
|
|
465
|
+
`--addresses=127.0.0.1:${port}`,
|
|
466
|
+
], spawnOptions);
|
|
467
|
+
proc.on('error', reject);
|
|
468
|
+
proc.on('close', () => resolve());
|
|
469
|
+
});
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Create database — not supported.
|
|
473
|
+
* TigerBeetle has no database concept.
|
|
474
|
+
*/
|
|
475
|
+
async createDatabase(_container, _database) {
|
|
476
|
+
throw new Error('TigerBeetle does not support multiple databases. ' +
|
|
477
|
+
'Each container is a single ledger instance.');
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Drop database — not supported.
|
|
481
|
+
*/
|
|
482
|
+
async dropDatabase(_container, _database) {
|
|
483
|
+
throw new Error('TigerBeetle does not support multiple databases. ' +
|
|
484
|
+
'Use `spindb delete <container>` to remove the instance.');
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Get database size from data file.
|
|
488
|
+
*/
|
|
489
|
+
async getDatabaseSize(container) {
|
|
490
|
+
const dataDir = paths.getContainerDataPath(container.name, {
|
|
491
|
+
engine: ENGINE,
|
|
492
|
+
});
|
|
493
|
+
const dataFile = join(dataDir, '0_0.tigerbeetle');
|
|
494
|
+
try {
|
|
495
|
+
const stats = await stat(dataFile);
|
|
496
|
+
return stats.size;
|
|
497
|
+
}
|
|
498
|
+
catch {
|
|
499
|
+
return null;
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
/**
|
|
503
|
+
* Dump from connection string — not supported.
|
|
504
|
+
* TigerBeetle uses a custom binary protocol that doesn't support remote dumps.
|
|
505
|
+
*/
|
|
506
|
+
async dumpFromConnectionString(_connectionString, _outputPath) {
|
|
507
|
+
throw new Error('TigerBeetle does not support remote dumps.\n' +
|
|
508
|
+
'TigerBeetle uses a custom binary protocol that requires direct file access.\n' +
|
|
509
|
+
'To backup a remote TigerBeetle instance, stop the server and copy the data file directly.');
|
|
510
|
+
}
|
|
511
|
+
/**
|
|
512
|
+
* Create a backup.
|
|
513
|
+
* TigerBeetle requires the server to be stopped for backup.
|
|
514
|
+
*/
|
|
515
|
+
async backup(container, outputPath, options) {
|
|
516
|
+
const { name } = container;
|
|
517
|
+
const dataDir = paths.getContainerDataPath(name, { engine: ENGINE });
|
|
518
|
+
// Verify server is stopped
|
|
519
|
+
const statusResult = await this.status(container);
|
|
520
|
+
if (statusResult.running) {
|
|
521
|
+
throw new Error(`TigerBeetle container "${name}" must be stopped before backup. ` +
|
|
522
|
+
`Run: spindb stop ${name}`);
|
|
523
|
+
}
|
|
524
|
+
return createBackup(dataDir, outputPath, options);
|
|
525
|
+
}
|
|
526
|
+
/**
|
|
527
|
+
* Run script — not supported.
|
|
528
|
+
* TigerBeetle uses a custom binary protocol, not SQL or REST.
|
|
529
|
+
*/
|
|
530
|
+
async runScript(_container, _options) {
|
|
531
|
+
throw new Error('TigerBeetle does not support script execution.\n' +
|
|
532
|
+
'Use the TigerBeetle REPL for interactive operations: spindb connect <container>');
|
|
533
|
+
}
|
|
534
|
+
/**
|
|
535
|
+
* Execute query — not supported.
|
|
536
|
+
* TigerBeetle uses a custom binary protocol.
|
|
537
|
+
*/
|
|
538
|
+
async executeQuery(_container, _query, _options) {
|
|
539
|
+
throw new Error('TigerBeetle does not support SQL or REST queries.\n' +
|
|
540
|
+
'Use the TigerBeetle REPL for interactive operations: spindb connect <container>\n' +
|
|
541
|
+
'Or use a TigerBeetle client library in your application.');
|
|
542
|
+
}
|
|
543
|
+
/**
|
|
544
|
+
* List databases — TigerBeetle has no database concept.
|
|
545
|
+
*/
|
|
546
|
+
async listDatabases(container) {
|
|
547
|
+
return [container.database];
|
|
548
|
+
}
|
|
549
|
+
/**
|
|
550
|
+
* Create user — not supported.
|
|
551
|
+
* TigerBeetle has no authentication.
|
|
552
|
+
*/
|
|
553
|
+
async createUser(_container, _options) {
|
|
554
|
+
throw new Error('TigerBeetle does not support user authentication.\n' +
|
|
555
|
+
'Access is controlled at the network level.');
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
export const tigerbeetleEngine = new TigerBeetleEngine();
|
|
559
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../engines/tigerbeetle/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TigerBeetle restore module
|
|
3
|
+
* Supports restoring from a TigerBeetle data file backup.
|
|
4
|
+
*
|
|
5
|
+
* Restore copies the backup data file into the container's data directory.
|
|
6
|
+
* The server must be stopped before restore.
|
|
7
|
+
*/
|
|
8
|
+
import { copyFile, mkdir, stat } from 'fs/promises';
|
|
9
|
+
import { existsSync } from 'fs';
|
|
10
|
+
import { join } from 'path';
|
|
11
|
+
import { logDebug } from '../../core/error-handler.js';
|
|
12
|
+
/**
|
|
13
|
+
* Detect backup format from a file path.
|
|
14
|
+
* TigerBeetle backups are single binary data files.
|
|
15
|
+
*/
|
|
16
|
+
export async function detectBackupFormat(filePath) {
|
|
17
|
+
if (!existsSync(filePath)) {
|
|
18
|
+
throw new Error(`Backup file not found: ${filePath}`);
|
|
19
|
+
}
|
|
20
|
+
const stats = await stat(filePath);
|
|
21
|
+
// TigerBeetle data files are regular files (not directories)
|
|
22
|
+
if (stats.isFile()) {
|
|
23
|
+
if (filePath.endsWith('.tigerbeetle')) {
|
|
24
|
+
return {
|
|
25
|
+
format: 'binary',
|
|
26
|
+
description: 'TigerBeetle data file',
|
|
27
|
+
restoreCommand: 'Copy to data directory (spindb restore handles this)',
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
// Check for common backup naming patterns
|
|
31
|
+
return {
|
|
32
|
+
format: 'binary',
|
|
33
|
+
description: 'TigerBeetle data file (assumed from file)',
|
|
34
|
+
restoreCommand: 'Copy to data directory (spindb restore handles this)',
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
format: 'unknown',
|
|
39
|
+
description: 'Unknown backup format',
|
|
40
|
+
restoreCommand: 'Use a TigerBeetle data file (.tigerbeetle) for restore',
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Restore from a TigerBeetle data file backup.
|
|
45
|
+
* Copies the backup file into the container's data directory.
|
|
46
|
+
*/
|
|
47
|
+
export async function restoreBackup(backupPath, options) {
|
|
48
|
+
const { dataDir } = options;
|
|
49
|
+
if (!existsSync(backupPath)) {
|
|
50
|
+
throw new Error(`Backup not found: ${backupPath}`);
|
|
51
|
+
}
|
|
52
|
+
const format = await detectBackupFormat(backupPath);
|
|
53
|
+
logDebug(`Detected backup format: ${format.format}`);
|
|
54
|
+
// Ensure data directory exists
|
|
55
|
+
if (!existsSync(dataDir)) {
|
|
56
|
+
await mkdir(dataDir, { recursive: true });
|
|
57
|
+
}
|
|
58
|
+
const targetPath = join(dataDir, '0_0.tigerbeetle');
|
|
59
|
+
logDebug(`Restoring TigerBeetle data file to: ${targetPath}`);
|
|
60
|
+
await copyFile(backupPath, targetPath);
|
|
61
|
+
return {
|
|
62
|
+
format: 'binary',
|
|
63
|
+
stdout: `Restored TigerBeetle data file to ${targetPath}`,
|
|
64
|
+
code: 0,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Parse TigerBeetle connection string
|
|
69
|
+
* Format: host:port or 127.0.0.1:port
|
|
70
|
+
*
|
|
71
|
+
* TigerBeetle uses a custom binary protocol (no URI scheme).
|
|
72
|
+
*/
|
|
73
|
+
export function parseConnectionString(connectionString) {
|
|
74
|
+
if (!connectionString || typeof connectionString !== 'string') {
|
|
75
|
+
throw new Error('Invalid TigerBeetle connection string: expected a non-empty string');
|
|
76
|
+
}
|
|
77
|
+
const trimmed = connectionString.trim();
|
|
78
|
+
// Parse host:port format
|
|
79
|
+
const parts = trimmed.split(':');
|
|
80
|
+
if (parts.length !== 2) {
|
|
81
|
+
throw new Error(`Invalid TigerBeetle connection string: "${trimmed}". ` +
|
|
82
|
+
'Expected format: host:port (e.g., 127.0.0.1:3000)');
|
|
83
|
+
}
|
|
84
|
+
const host = parts[0] || '127.0.0.1';
|
|
85
|
+
const port = parseInt(parts[1], 10);
|
|
86
|
+
if (isNaN(port) || port <= 0 || port > 65535) {
|
|
87
|
+
throw new Error(`Invalid TigerBeetle port: "${parts[1]}". Expected a number between 1 and 65535.`);
|
|
88
|
+
}
|
|
89
|
+
return { host, port };
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=restore.js.map
|