@dotdo/postgres 0.1.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/README.md +868 -0
- package/dist/cdc/change-stream.d.ts +44 -0
- package/dist/cdc/change-stream.d.ts.map +1 -0
- package/dist/cdc/change-stream.js +95 -0
- package/dist/cdc/change-stream.js.map +1 -0
- package/dist/cdc/filter.d.ts +58 -0
- package/dist/cdc/filter.d.ts.map +1 -0
- package/dist/cdc/filter.js +520 -0
- package/dist/cdc/filter.js.map +1 -0
- package/dist/cdc/index.d.ts +47 -0
- package/dist/cdc/index.d.ts.map +1 -0
- package/dist/cdc/index.js +50 -0
- package/dist/cdc/index.js.map +1 -0
- package/dist/cdc/resume-token.d.ts +60 -0
- package/dist/cdc/resume-token.d.ts.map +1 -0
- package/dist/cdc/resume-token.js +228 -0
- package/dist/cdc/resume-token.js.map +1 -0
- package/dist/cdc/transport/index.d.ts +7 -0
- package/dist/cdc/transport/index.d.ts.map +1 -0
- package/dist/cdc/transport/index.js +7 -0
- package/dist/cdc/transport/index.js.map +1 -0
- package/dist/cdc/transport/sse.d.ts +120 -0
- package/dist/cdc/transport/sse.d.ts.map +1 -0
- package/dist/cdc/transport/sse.js +590 -0
- package/dist/cdc/transport/sse.js.map +1 -0
- package/dist/cdc/transport/websocket.d.ts +130 -0
- package/dist/cdc/transport/websocket.d.ts.map +1 -0
- package/dist/cdc/transport/websocket.js +688 -0
- package/dist/cdc/transport/websocket.js.map +1 -0
- package/dist/cdc/types.d.ts +306 -0
- package/dist/cdc/types.d.ts.map +1 -0
- package/dist/cdc/types.js +8 -0
- package/dist/cdc/types.js.map +1 -0
- package/dist/config/index.d.ts +25 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +25 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/memory.d.ts +139 -0
- package/dist/config/memory.d.ts.map +1 -0
- package/dist/config/memory.js +157 -0
- package/dist/config/memory.js.map +1 -0
- package/dist/config/storage.d.ts +157 -0
- package/dist/config/storage.d.ts.map +1 -0
- package/dist/config/storage.js +178 -0
- package/dist/config/storage.js.map +1 -0
- package/dist/config/streaming.d.ts +117 -0
- package/dist/config/streaming.d.ts.map +1 -0
- package/dist/config/streaming.js +132 -0
- package/dist/config/streaming.js.map +1 -0
- package/dist/config/timeouts.d.ts +168 -0
- package/dist/config/timeouts.d.ts.map +1 -0
- package/dist/config/timeouts.js +192 -0
- package/dist/config/timeouts.js.map +1 -0
- package/dist/extensions/config.d.ts +89 -0
- package/dist/extensions/config.d.ts.map +1 -0
- package/dist/extensions/config.js +216 -0
- package/dist/extensions/config.js.map +1 -0
- package/dist/extensions/geo.d.ts +452 -0
- package/dist/extensions/geo.d.ts.map +1 -0
- package/dist/extensions/geo.js +583 -0
- package/dist/extensions/geo.js.map +1 -0
- package/dist/extensions/index.d.ts +167 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +99 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/loader.d.ts +226 -0
- package/dist/extensions/loader.d.ts.map +1 -0
- package/dist/extensions/loader.js +456 -0
- package/dist/extensions/loader.js.map +1 -0
- package/dist/extensions/pgmq-lite.d.ts +330 -0
- package/dist/extensions/pgmq-lite.d.ts.map +1 -0
- package/dist/extensions/pgmq-lite.js +648 -0
- package/dist/extensions/pgmq-lite.js.map +1 -0
- package/dist/extensions/plugins.d.ts +260 -0
- package/dist/extensions/plugins.d.ts.map +1 -0
- package/dist/extensions/plugins.js +535 -0
- package/dist/extensions/plugins.js.map +1 -0
- package/dist/extensions/registry.d.ts +93 -0
- package/dist/extensions/registry.d.ts.map +1 -0
- package/dist/extensions/registry.js +182 -0
- package/dist/extensions/registry.js.map +1 -0
- package/dist/extensions/vector.d.ts +106 -0
- package/dist/extensions/vector.d.ts.map +1 -0
- package/dist/extensions/vector.js +129 -0
- package/dist/extensions/vector.js.map +1 -0
- package/dist/iceberg/analytics.d.ts +279 -0
- package/dist/iceberg/analytics.d.ts.map +1 -0
- package/dist/iceberg/analytics.js +448 -0
- package/dist/iceberg/analytics.js.map +1 -0
- package/dist/iceberg/catalog-api.d.ts +39 -0
- package/dist/iceberg/catalog-api.d.ts.map +1 -0
- package/dist/iceberg/catalog-api.js +388 -0
- package/dist/iceberg/catalog-api.js.map +1 -0
- package/dist/iceberg/catalog.d.ts +401 -0
- package/dist/iceberg/catalog.d.ts.map +1 -0
- package/dist/iceberg/catalog.js +677 -0
- package/dist/iceberg/catalog.js.map +1 -0
- package/dist/iceberg/duckdb-wasm.d.ts +447 -0
- package/dist/iceberg/duckdb-wasm.d.ts.map +1 -0
- package/dist/iceberg/duckdb-wasm.js +600 -0
- package/dist/iceberg/duckdb-wasm.js.map +1 -0
- package/dist/iceberg/index.d.ts +92 -0
- package/dist/iceberg/index.d.ts.map +1 -0
- package/dist/iceberg/index.js +119 -0
- package/dist/iceberg/index.js.map +1 -0
- package/dist/iceberg/metadata.d.ts +214 -0
- package/dist/iceberg/metadata.d.ts.map +1 -0
- package/dist/iceberg/metadata.js +535 -0
- package/dist/iceberg/metadata.js.map +1 -0
- package/dist/iceberg/optimizer.d.ts +296 -0
- package/dist/iceberg/optimizer.d.ts.map +1 -0
- package/dist/iceberg/optimizer.js +889 -0
- package/dist/iceberg/optimizer.js.map +1 -0
- package/dist/iceberg/parquet.d.ts +447 -0
- package/dist/iceberg/parquet.d.ts.map +1 -0
- package/dist/iceberg/parquet.js +1225 -0
- package/dist/iceberg/parquet.js.map +1 -0
- package/dist/iceberg/r2-organization.d.ts +422 -0
- package/dist/iceberg/r2-organization.d.ts.map +1 -0
- package/dist/iceberg/r2-organization.js +672 -0
- package/dist/iceberg/r2-organization.js.map +1 -0
- package/dist/iceberg/scheduler-do-example.d.ts +158 -0
- package/dist/iceberg/scheduler-do-example.d.ts.map +1 -0
- package/dist/iceberg/scheduler-do-example.js +261 -0
- package/dist/iceberg/scheduler-do-example.js.map +1 -0
- package/dist/iceberg/scheduler.d.ts +434 -0
- package/dist/iceberg/scheduler.d.ts.map +1 -0
- package/dist/iceberg/scheduler.js +818 -0
- package/dist/iceberg/scheduler.js.map +1 -0
- package/dist/iceberg/schema.d.ts +149 -0
- package/dist/iceberg/schema.d.ts.map +1 -0
- package/dist/iceberg/schema.js +525 -0
- package/dist/iceberg/schema.js.map +1 -0
- package/dist/iceberg/snapshot-manager.d.ts +406 -0
- package/dist/iceberg/snapshot-manager.d.ts.map +1 -0
- package/dist/iceberg/snapshot-manager.js +934 -0
- package/dist/iceberg/snapshot-manager.js.map +1 -0
- package/dist/iceberg/sql-router.d.ts +194 -0
- package/dist/iceberg/sql-router.d.ts.map +1 -0
- package/dist/iceberg/sql-router.js +180 -0
- package/dist/iceberg/sql-router.js.map +1 -0
- package/dist/iceberg/test-fixtures.d.ts +151 -0
- package/dist/iceberg/test-fixtures.d.ts.map +1 -0
- package/dist/iceberg/test-fixtures.js +446 -0
- package/dist/iceberg/test-fixtures.js.map +1 -0
- package/dist/iceberg/time-travel-api.d.ts +102 -0
- package/dist/iceberg/time-travel-api.d.ts.map +1 -0
- package/dist/iceberg/time-travel-api.js +437 -0
- package/dist/iceberg/time-travel-api.js.map +1 -0
- package/dist/iceberg/time-travel.d.ts +293 -0
- package/dist/iceberg/time-travel.d.ts.map +1 -0
- package/dist/iceberg/time-travel.js +689 -0
- package/dist/iceberg/time-travel.js.map +1 -0
- package/dist/iceberg/transformer.d.ts +356 -0
- package/dist/iceberg/transformer.d.ts.map +1 -0
- package/dist/iceberg/transformer.js +770 -0
- package/dist/iceberg/transformer.js.map +1 -0
- package/dist/iceberg/types.d.ts +318 -0
- package/dist/iceberg/types.d.ts.map +1 -0
- package/dist/iceberg/types.js +9 -0
- package/dist/iceberg/types.js.map +1 -0
- package/dist/iceberg/writer.d.ts +144 -0
- package/dist/iceberg/writer.d.ts.map +1 -0
- package/dist/iceberg/writer.js +452 -0
- package/dist/iceberg/writer.js.map +1 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +69 -0
- package/dist/index.js.map +1 -0
- package/dist/lineage/index.d.ts +11 -0
- package/dist/lineage/index.d.ts.map +1 -0
- package/dist/lineage/index.js +11 -0
- package/dist/lineage/index.js.map +1 -0
- package/dist/lineage/integration.d.ts +134 -0
- package/dist/lineage/integration.d.ts.map +1 -0
- package/dist/lineage/integration.js +258 -0
- package/dist/lineage/integration.js.map +1 -0
- package/dist/lineage/tracker.d.ts +189 -0
- package/dist/lineage/tracker.d.ts.map +1 -0
- package/dist/lineage/tracker.js +1352 -0
- package/dist/lineage/tracker.js.map +1 -0
- package/dist/lineage/types.d.ts +318 -0
- package/dist/lineage/types.d.ts.map +1 -0
- package/dist/lineage/types.js +9 -0
- package/dist/lineage/types.js.map +1 -0
- package/dist/middleware/index.d.ts +11 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +16 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/rate-limit.d.ts +397 -0
- package/dist/middleware/rate-limit.d.ts.map +1 -0
- package/dist/middleware/rate-limit.js +507 -0
- package/dist/middleware/rate-limit.js.map +1 -0
- package/dist/migration-tooling/external-migration.d.ts +601 -0
- package/dist/migration-tooling/external-migration.d.ts.map +1 -0
- package/dist/migration-tooling/external-migration.js +1612 -0
- package/dist/migration-tooling/external-migration.js.map +1 -0
- package/dist/migration-tooling/index.d.ts +19 -0
- package/dist/migration-tooling/index.d.ts.map +1 -0
- package/dist/migration-tooling/index.js +19 -0
- package/dist/migration-tooling/index.js.map +1 -0
- package/dist/migrations/auto-migrator.d.ts +289 -0
- package/dist/migrations/auto-migrator.d.ts.map +1 -0
- package/dist/migrations/auto-migrator.js +396 -0
- package/dist/migrations/auto-migrator.js.map +1 -0
- package/dist/migrations/bulk-orchestrator.d.ts +403 -0
- package/dist/migrations/bulk-orchestrator.d.ts.map +1 -0
- package/dist/migrations/bulk-orchestrator.js +646 -0
- package/dist/migrations/bulk-orchestrator.js.map +1 -0
- package/dist/migrations/compatibility.d.ts +216 -0
- package/dist/migrations/compatibility.d.ts.map +1 -0
- package/dist/migrations/compatibility.js +651 -0
- package/dist/migrations/compatibility.js.map +1 -0
- package/dist/migrations/do-migrations.d.ts +101 -0
- package/dist/migrations/do-migrations.d.ts.map +1 -0
- package/dist/migrations/do-migrations.js +1060 -0
- package/dist/migrations/do-migrations.js.map +1 -0
- package/dist/migrations/do-migrations.types.d.ts +550 -0
- package/dist/migrations/do-migrations.types.d.ts.map +1 -0
- package/dist/migrations/do-migrations.types.js +15 -0
- package/dist/migrations/do-migrations.types.js.map +1 -0
- package/dist/migrations/drizzle-compat.d.ts +163 -0
- package/dist/migrations/drizzle-compat.d.ts.map +1 -0
- package/dist/migrations/drizzle-compat.js +273 -0
- package/dist/migrations/drizzle-compat.js.map +1 -0
- package/dist/migrations/index.d.ts +109 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +127 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/migrations/migration-api.d.ts +161 -0
- package/dist/migrations/migration-api.d.ts.map +1 -0
- package/dist/migrations/migration-api.js +499 -0
- package/dist/migrations/migration-api.js.map +1 -0
- package/dist/migrations/progress-tracker-do.d.ts +195 -0
- package/dist/migrations/progress-tracker-do.d.ts.map +1 -0
- package/dist/migrations/progress-tracker-do.js +339 -0
- package/dist/migrations/progress-tracker-do.js.map +1 -0
- package/dist/migrations/progress-tracker-kv.d.ts +103 -0
- package/dist/migrations/progress-tracker-kv.d.ts.map +1 -0
- package/dist/migrations/progress-tracker-kv.js +231 -0
- package/dist/migrations/progress-tracker-kv.js.map +1 -0
- package/dist/migrations/progress-tracker.d.ts +320 -0
- package/dist/migrations/progress-tracker.d.ts.map +1 -0
- package/dist/migrations/progress-tracker.js +443 -0
- package/dist/migrations/progress-tracker.js.map +1 -0
- package/dist/migrations/registry.d.ts +231 -0
- package/dist/migrations/registry.d.ts.map +1 -0
- package/dist/migrations/registry.js +376 -0
- package/dist/migrations/registry.js.map +1 -0
- package/dist/migrations/runner.d.ts +197 -0
- package/dist/migrations/runner.d.ts.map +1 -0
- package/dist/migrations/runner.js +1167 -0
- package/dist/migrations/runner.js.map +1 -0
- package/dist/migrations/schema-generator.d.ts +111 -0
- package/dist/migrations/schema-generator.d.ts.map +1 -0
- package/dist/migrations/schema-generator.js +335 -0
- package/dist/migrations/schema-generator.js.map +1 -0
- package/dist/migrations/testing.d.ts +321 -0
- package/dist/migrations/testing.d.ts.map +1 -0
- package/dist/migrations/testing.js +645 -0
- package/dist/migrations/testing.js.map +1 -0
- package/dist/migrations/types.d.ts +503 -0
- package/dist/migrations/types.d.ts.map +1 -0
- package/dist/migrations/types.js +11 -0
- package/dist/migrations/types.js.map +1 -0
- package/dist/migrations/validator.d.ts +215 -0
- package/dist/migrations/validator.d.ts.map +1 -0
- package/dist/migrations/validator.js +494 -0
- package/dist/migrations/validator.js.map +1 -0
- package/dist/observability/alerting.d.ts +116 -0
- package/dist/observability/alerting.d.ts.map +1 -0
- package/dist/observability/alerting.js +353 -0
- package/dist/observability/alerting.js.map +1 -0
- package/dist/observability/analytics-engine.d.ts +357 -0
- package/dist/observability/analytics-engine.d.ts.map +1 -0
- package/dist/observability/analytics-engine.js +430 -0
- package/dist/observability/analytics-engine.js.map +1 -0
- package/dist/observability/cost-metrics.d.ts +269 -0
- package/dist/observability/cost-metrics.d.ts.map +1 -0
- package/dist/observability/cost-metrics.js +560 -0
- package/dist/observability/cost-metrics.js.map +1 -0
- package/dist/observability/cross-do-tracing.d.ts +305 -0
- package/dist/observability/cross-do-tracing.d.ts.map +1 -0
- package/dist/observability/cross-do-tracing.js +431 -0
- package/dist/observability/cross-do-tracing.js.map +1 -0
- package/dist/observability/error-rate-collector.d.ts +163 -0
- package/dist/observability/error-rate-collector.d.ts.map +1 -0
- package/dist/observability/error-rate-collector.js +306 -0
- package/dist/observability/error-rate-collector.js.map +1 -0
- package/dist/observability/exporters.d.ts +231 -0
- package/dist/observability/exporters.d.ts.map +1 -0
- package/dist/observability/exporters.js +479 -0
- package/dist/observability/exporters.js.map +1 -0
- package/dist/observability/health-check.d.ts +106 -0
- package/dist/observability/health-check.d.ts.map +1 -0
- package/dist/observability/health-check.js +243 -0
- package/dist/observability/health-check.js.map +1 -0
- package/dist/observability/index.d.ts +297 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +455 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/instrumentation.d.ts +222 -0
- package/dist/observability/instrumentation.d.ts.map +1 -0
- package/dist/observability/instrumentation.js +532 -0
- package/dist/observability/instrumentation.js.map +1 -0
- package/dist/observability/memory-metrics.d.ts +227 -0
- package/dist/observability/memory-metrics.d.ts.map +1 -0
- package/dist/observability/memory-metrics.js +688 -0
- package/dist/observability/memory-metrics.js.map +1 -0
- package/dist/observability/metrics-endpoint.d.ts +91 -0
- package/dist/observability/metrics-endpoint.d.ts.map +1 -0
- package/dist/observability/metrics-endpoint.js +246 -0
- package/dist/observability/metrics-endpoint.js.map +1 -0
- package/dist/observability/metrics.d.ts +88 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +253 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/observability/observability-features.d.ts +488 -0
- package/dist/observability/observability-features.d.ts.map +1 -0
- package/dist/observability/observability-features.js +773 -0
- package/dist/observability/observability-features.js.map +1 -0
- package/dist/observability/prometheus.d.ts +39 -0
- package/dist/observability/prometheus.d.ts.map +1 -0
- package/dist/observability/prometheus.js +120 -0
- package/dist/observability/prometheus.js.map +1 -0
- package/dist/observability/propagation.d.ts +126 -0
- package/dist/observability/propagation.d.ts.map +1 -0
- package/dist/observability/propagation.js +234 -0
- package/dist/observability/propagation.js.map +1 -0
- package/dist/observability/query-latency.d.ts +243 -0
- package/dist/observability/query-latency.d.ts.map +1 -0
- package/dist/observability/query-latency.js +292 -0
- package/dist/observability/query-latency.js.map +1 -0
- package/dist/observability/query-performance.d.ts +169 -0
- package/dist/observability/query-performance.d.ts.map +1 -0
- package/dist/observability/query-performance.js +290 -0
- package/dist/observability/query-performance.js.map +1 -0
- package/dist/observability/storage-tier-metrics.d.ts +174 -0
- package/dist/observability/storage-tier-metrics.d.ts.map +1 -0
- package/dist/observability/storage-tier-metrics.js +306 -0
- package/dist/observability/storage-tier-metrics.js.map +1 -0
- package/dist/observability/tier-cost-optimizer.d.ts +155 -0
- package/dist/observability/tier-cost-optimizer.d.ts.map +1 -0
- package/dist/observability/tier-cost-optimizer.js +536 -0
- package/dist/observability/tier-cost-optimizer.js.map +1 -0
- package/dist/observability/tracer.d.ts +149 -0
- package/dist/observability/tracer.d.ts.map +1 -0
- package/dist/observability/tracer.js +435 -0
- package/dist/observability/tracer.js.map +1 -0
- package/dist/observability/types.d.ts +402 -0
- package/dist/observability/types.d.ts.map +1 -0
- package/dist/observability/types.js +103 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/pglite/workers-pglite.d.ts +138 -0
- package/dist/pglite/workers-pglite.d.ts.map +1 -0
- package/dist/pglite/workers-pglite.js +143 -0
- package/dist/pglite/workers-pglite.js.map +1 -0
- package/dist/pglite-assets/pglite.data +0 -0
- package/dist/pglite-assets/pglite.wasm +0 -0
- package/dist/playground/index.d.ts +52 -0
- package/dist/playground/index.d.ts.map +1 -0
- package/dist/playground/index.js +55 -0
- package/dist/playground/index.js.map +1 -0
- package/dist/playground/keyboard-shortcuts.d.ts +116 -0
- package/dist/playground/keyboard-shortcuts.d.ts.map +1 -0
- package/dist/playground/keyboard-shortcuts.js +588 -0
- package/dist/playground/keyboard-shortcuts.js.map +1 -0
- package/dist/playground/playground.d.ts +82 -0
- package/dist/playground/playground.d.ts.map +1 -0
- package/dist/playground/playground.js +271 -0
- package/dist/playground/playground.js.map +1 -0
- package/dist/playground/query-executor.d.ts +115 -0
- package/dist/playground/query-executor.d.ts.map +1 -0
- package/dist/playground/query-executor.js +558 -0
- package/dist/playground/query-executor.js.map +1 -0
- package/dist/playground/query-history.d.ts +92 -0
- package/dist/playground/query-history.d.ts.map +1 -0
- package/dist/playground/query-history.js +259 -0
- package/dist/playground/query-history.js.map +1 -0
- package/dist/playground/result-formatter.d.ts +59 -0
- package/dist/playground/result-formatter.d.ts.map +1 -0
- package/dist/playground/result-formatter.js +341 -0
- package/dist/playground/result-formatter.js.map +1 -0
- package/dist/playground/sample-datasets.d.ts +77 -0
- package/dist/playground/sample-datasets.d.ts.map +1 -0
- package/dist/playground/sample-datasets.js +641 -0
- package/dist/playground/sample-datasets.js.map +1 -0
- package/dist/playground/sample-queries.d.ts +73 -0
- package/dist/playground/sample-queries.d.ts.map +1 -0
- package/dist/playground/sample-queries.js +1095 -0
- package/dist/playground/sample-queries.js.map +1 -0
- package/dist/playground/schema-explorer.d.ts +55 -0
- package/dist/playground/schema-explorer.d.ts.map +1 -0
- package/dist/playground/schema-explorer.js +473 -0
- package/dist/playground/schema-explorer.js.map +1 -0
- package/dist/playground/types.d.ts +430 -0
- package/dist/playground/types.d.ts.map +1 -0
- package/dist/playground/types.js +10 -0
- package/dist/playground/types.js.map +1 -0
- package/dist/readonly/cache-reader.d.ts +145 -0
- package/dist/readonly/cache-reader.d.ts.map +1 -0
- package/dist/readonly/cache-reader.js +198 -0
- package/dist/readonly/cache-reader.js.map +1 -0
- package/dist/readonly/config.d.ts +74 -0
- package/dist/readonly/config.d.ts.map +1 -0
- package/dist/readonly/config.js +67 -0
- package/dist/readonly/config.js.map +1 -0
- package/dist/readonly/index.d.ts +22 -0
- package/dist/readonly/index.d.ts.map +1 -0
- package/dist/readonly/index.js +17 -0
- package/dist/readonly/index.js.map +1 -0
- package/dist/readonly/pglite-wrapper.d.ts +82 -0
- package/dist/readonly/pglite-wrapper.d.ts.map +1 -0
- package/dist/readonly/pglite-wrapper.js +123 -0
- package/dist/readonly/pglite-wrapper.js.map +1 -0
- package/dist/readonly/worker.d.ts +142 -0
- package/dist/readonly/worker.d.ts.map +1 -0
- package/dist/readonly/worker.js +187 -0
- package/dist/readonly/worker.js.map +1 -0
- package/dist/readonly/write-blocker.d.ts +47 -0
- package/dist/readonly/write-blocker.d.ts.map +1 -0
- package/dist/readonly/write-blocker.js +136 -0
- package/dist/readonly/write-blocker.js.map +1 -0
- package/dist/recovery/disaster-recovery.d.ts +326 -0
- package/dist/recovery/disaster-recovery.d.ts.map +1 -0
- package/dist/recovery/disaster-recovery.js +799 -0
- package/dist/recovery/disaster-recovery.js.map +1 -0
- package/dist/recovery/index.d.ts +12 -0
- package/dist/recovery/index.d.ts.map +1 -0
- package/dist/recovery/index.js +12 -0
- package/dist/recovery/index.js.map +1 -0
- package/dist/recovery/parquet-parser.d.ts +321 -0
- package/dist/recovery/parquet-parser.d.ts.map +1 -0
- package/dist/recovery/parquet-parser.js +797 -0
- package/dist/recovery/parquet-parser.js.map +1 -0
- package/dist/retention/index.d.ts +50 -0
- package/dist/retention/index.d.ts.map +1 -0
- package/dist/retention/index.js +50 -0
- package/dist/retention/index.js.map +1 -0
- package/dist/retention/policy.d.ts +344 -0
- package/dist/retention/policy.d.ts.map +1 -0
- package/dist/retention/policy.js +472 -0
- package/dist/retention/policy.js.map +1 -0
- package/dist/retention/purger.d.ts +187 -0
- package/dist/retention/purger.d.ts.map +1 -0
- package/dist/retention/purger.js +411 -0
- package/dist/retention/purger.js.map +1 -0
- package/dist/rls/auth-integration.d.ts +280 -0
- package/dist/rls/auth-integration.d.ts.map +1 -0
- package/dist/rls/auth-integration.js +399 -0
- package/dist/rls/auth-integration.js.map +1 -0
- package/dist/rls/generator.d.ts +249 -0
- package/dist/rls/generator.d.ts.map +1 -0
- package/dist/rls/generator.js +495 -0
- package/dist/rls/generator.js.map +1 -0
- package/dist/rls/index.d.ts +26 -0
- package/dist/rls/index.d.ts.map +1 -0
- package/dist/rls/index.js +58 -0
- package/dist/rls/index.js.map +1 -0
- package/dist/rls/policy.d.ts +116 -0
- package/dist/rls/policy.d.ts.map +1 -0
- package/dist/rls/policy.js +77 -0
- package/dist/rls/policy.js.map +1 -0
- package/dist/rls/validator.d.ts +155 -0
- package/dist/rls/validator.d.ts.map +1 -0
- package/dist/rls/validator.js +792 -0
- package/dist/rls/validator.js.map +1 -0
- package/dist/routing/adaptive-router.d.ts +317 -0
- package/dist/routing/adaptive-router.d.ts.map +1 -0
- package/dist/routing/adaptive-router.js +554 -0
- package/dist/routing/adaptive-router.js.map +1 -0
- package/dist/routing/circuit-breaker.d.ts +339 -0
- package/dist/routing/circuit-breaker.d.ts.map +1 -0
- package/dist/routing/circuit-breaker.js +620 -0
- package/dist/routing/circuit-breaker.js.map +1 -0
- package/dist/routing/cost-metrics.d.ts +133 -0
- package/dist/routing/cost-metrics.d.ts.map +1 -0
- package/dist/routing/cost-metrics.js +259 -0
- package/dist/routing/cost-metrics.js.map +1 -0
- package/dist/routing/do-connection-pool.d.ts +243 -0
- package/dist/routing/do-connection-pool.d.ts.map +1 -0
- package/dist/routing/do-connection-pool.js +572 -0
- package/dist/routing/do-connection-pool.js.map +1 -0
- package/dist/routing/index.d.ts +59 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +59 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/routing/query-complexity-estimator.d.ts +73 -0
- package/dist/routing/query-complexity-estimator.d.ts.map +1 -0
- package/dist/routing/query-complexity-estimator.js +327 -0
- package/dist/routing/query-complexity-estimator.js.map +1 -0
- package/dist/routing/request-coalescing.d.ts +178 -0
- package/dist/routing/request-coalescing.d.ts.map +1 -0
- package/dist/routing/request-coalescing.js +325 -0
- package/dist/routing/request-coalescing.js.map +1 -0
- package/dist/routing/runtime-router.d.ts +107 -0
- package/dist/routing/runtime-router.d.ts.map +1 -0
- package/dist/routing/runtime-router.js +246 -0
- package/dist/routing/runtime-router.js.map +1 -0
- package/dist/routing/tenant-router.d.ts +848 -0
- package/dist/routing/tenant-router.d.ts.map +1 -0
- package/dist/routing/tenant-router.js +1056 -0
- package/dist/routing/tenant-router.js.map +1 -0
- package/dist/routing/websocket-pool.d.ts +119 -0
- package/dist/routing/websocket-pool.d.ts.map +1 -0
- package/dist/routing/websocket-pool.js +436 -0
- package/dist/routing/websocket-pool.js.map +1 -0
- package/dist/storage/cache-layer.d.ts +159 -0
- package/dist/storage/cache-layer.d.ts.map +1 -0
- package/dist/storage/cache-layer.js +245 -0
- package/dist/storage/cache-layer.js.map +1 -0
- package/dist/storage/cost-aware-tiering.d.ts +258 -0
- package/dist/storage/cost-aware-tiering.d.ts.map +1 -0
- package/dist/storage/cost-aware-tiering.js +526 -0
- package/dist/storage/cost-aware-tiering.js.map +1 -0
- package/dist/storage/index.d.ts +87 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +78 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/interfaces.d.ts +856 -0
- package/dist/storage/interfaces.d.ts.map +1 -0
- package/dist/storage/interfaces.js +69 -0
- package/dist/storage/interfaces.js.map +1 -0
- package/dist/storage/r2-layer.d.ts +226 -0
- package/dist/storage/r2-layer.d.ts.map +1 -0
- package/dist/storage/r2-layer.js +307 -0
- package/dist/storage/r2-layer.js.map +1 -0
- package/dist/storage/r2-overflow.d.ts +344 -0
- package/dist/storage/r2-overflow.d.ts.map +1 -0
- package/dist/storage/r2-overflow.js +730 -0
- package/dist/storage/r2-overflow.js.map +1 -0
- package/dist/storage/r2-page-vfs.d.ts +374 -0
- package/dist/storage/r2-page-vfs.d.ts.map +1 -0
- package/dist/storage/r2-page-vfs.js +754 -0
- package/dist/storage/r2-page-vfs.js.map +1 -0
- package/dist/storage/swr-cache.d.ts +181 -0
- package/dist/storage/swr-cache.d.ts.map +1 -0
- package/dist/storage/swr-cache.js +295 -0
- package/dist/storage/swr-cache.js.map +1 -0
- package/dist/storage/tiered-orchestrator.d.ts +951 -0
- package/dist/storage/tiered-orchestrator.d.ts.map +1 -0
- package/dist/storage/tiered-orchestrator.js +1731 -0
- package/dist/storage/tiered-orchestrator.js.map +1 -0
- package/dist/storage/tiered-vfs-swr.d.ts +279 -0
- package/dist/storage/tiered-vfs-swr.d.ts.map +1 -0
- package/dist/storage/tiered-vfs-swr.js +584 -0
- package/dist/storage/tiered-vfs-swr.js.map +1 -0
- package/dist/storage/tiered-vfs.d.ts +405 -0
- package/dist/storage/tiered-vfs.d.ts.map +1 -0
- package/dist/storage/tiered-vfs.js +833 -0
- package/dist/storage/tiered-vfs.js.map +1 -0
- package/dist/streaming/backpressure-controller.d.ts +173 -0
- package/dist/streaming/backpressure-controller.d.ts.map +1 -0
- package/dist/streaming/backpressure-controller.js +344 -0
- package/dist/streaming/backpressure-controller.js.map +1 -0
- package/dist/streaming/buffer-pool.d.ts +241 -0
- package/dist/streaming/buffer-pool.d.ts.map +1 -0
- package/dist/streaming/buffer-pool.js +381 -0
- package/dist/streaming/buffer-pool.js.map +1 -0
- package/dist/streaming/cdc-iceberg-connector.d.ts +272 -0
- package/dist/streaming/cdc-iceberg-connector.d.ts.map +1 -0
- package/dist/streaming/cdc-iceberg-connector.js +408 -0
- package/dist/streaming/cdc-iceberg-connector.js.map +1 -0
- package/dist/streaming/index.d.ts +111 -0
- package/dist/streaming/index.d.ts.map +1 -0
- package/dist/streaming/index.js +128 -0
- package/dist/streaming/index.js.map +1 -0
- package/dist/streaming/live-cdc-stream.d.ts +400 -0
- package/dist/streaming/live-cdc-stream.d.ts.map +1 -0
- package/dist/streaming/live-cdc-stream.js +703 -0
- package/dist/streaming/live-cdc-stream.js.map +1 -0
- package/dist/streaming/memory-bounded-stream.d.ts +207 -0
- package/dist/streaming/memory-bounded-stream.d.ts.map +1 -0
- package/dist/streaming/memory-bounded-stream.js +340 -0
- package/dist/streaming/memory-bounded-stream.js.map +1 -0
- package/dist/streaming/query-streamer.d.ts +379 -0
- package/dist/streaming/query-streamer.d.ts.map +1 -0
- package/dist/streaming/query-streamer.js +495 -0
- package/dist/streaming/query-streamer.js.map +1 -0
- package/dist/streaming/response-streaming.d.ts +203 -0
- package/dist/streaming/response-streaming.d.ts.map +1 -0
- package/dist/streaming/response-streaming.js +449 -0
- package/dist/streaming/response-streaming.js.map +1 -0
- package/dist/types/branded.d.ts +859 -0
- package/dist/types/branded.d.ts.map +1 -0
- package/dist/types/branded.js +891 -0
- package/dist/types/branded.js.map +1 -0
- package/dist/types/utilities.d.ts +757 -0
- package/dist/types/utilities.d.ts.map +1 -0
- package/dist/types/utilities.js +447 -0
- package/dist/types/utilities.js.map +1 -0
- package/dist/wal/replay-engine.d.ts +344 -0
- package/dist/wal/replay-engine.d.ts.map +1 -0
- package/dist/wal/replay-engine.js +975 -0
- package/dist/wal/replay-engine.js.map +1 -0
- package/dist/worker/__mocks__/capnweb.d.ts +13 -0
- package/dist/worker/__mocks__/capnweb.d.ts.map +1 -0
- package/dist/worker/__mocks__/capnweb.js +15 -0
- package/dist/worker/__mocks__/capnweb.js.map +1 -0
- package/dist/worker/__mocks__/cloudflare-workers.d.ts +31 -0
- package/dist/worker/__mocks__/cloudflare-workers.d.ts.map +1 -0
- package/dist/worker/__mocks__/cloudflare-workers.js +33 -0
- package/dist/worker/__mocks__/cloudflare-workers.js.map +1 -0
- package/dist/worker/__mocks__/pglite.data.d.ts +3 -0
- package/dist/worker/__mocks__/pglite.data.d.ts.map +1 -0
- package/dist/worker/__mocks__/pglite.data.js +20 -0
- package/dist/worker/__mocks__/pglite.data.js.map +1 -0
- package/dist/worker/__mocks__/pglite.wasm.d.ts +3 -0
- package/dist/worker/__mocks__/pglite.wasm.d.ts.map +1 -0
- package/dist/worker/__mocks__/pglite.wasm.js +30 -0
- package/dist/worker/__mocks__/pglite.wasm.js.map +1 -0
- package/dist/worker/auth-rate-limiter.d.ts +270 -0
- package/dist/worker/auth-rate-limiter.d.ts.map +1 -0
- package/dist/worker/auth-rate-limiter.js +332 -0
- package/dist/worker/auth-rate-limiter.js.map +1 -0
- package/dist/worker/auth.d.ts +345 -0
- package/dist/worker/auth.d.ts.map +1 -0
- package/dist/worker/auth.js +837 -0
- package/dist/worker/auth.js.map +1 -0
- package/dist/worker/cdc-backpressure.d.ts +338 -0
- package/dist/worker/cdc-backpressure.d.ts.map +1 -0
- package/dist/worker/cdc-backpressure.js +619 -0
- package/dist/worker/cdc-backpressure.js.map +1 -0
- package/dist/worker/cdc-sse.d.ts +277 -0
- package/dist/worker/cdc-sse.d.ts.map +1 -0
- package/dist/worker/cdc-sse.js +528 -0
- package/dist/worker/cdc-sse.js.map +1 -0
- package/dist/worker/cdc-websocket.d.ts +252 -0
- package/dist/worker/cdc-websocket.d.ts.map +1 -0
- package/dist/worker/cdc-websocket.js +940 -0
- package/dist/worker/cdc-websocket.js.map +1 -0
- package/dist/worker/cdc.d.ts +95 -0
- package/dist/worker/cdc.d.ts.map +1 -0
- package/dist/worker/cdc.js +211 -0
- package/dist/worker/cdc.js.map +1 -0
- package/dist/worker/concerns/auth-concern.d.ts +50 -0
- package/dist/worker/concerns/auth-concern.d.ts.map +1 -0
- package/dist/worker/concerns/auth-concern.js +131 -0
- package/dist/worker/concerns/auth-concern.js.map +1 -0
- package/dist/worker/concerns/cdc-concern.d.ts +99 -0
- package/dist/worker/concerns/cdc-concern.d.ts.map +1 -0
- package/dist/worker/concerns/cdc-concern.js +137 -0
- package/dist/worker/concerns/cdc-concern.js.map +1 -0
- package/dist/worker/concerns/index.d.ts +22 -0
- package/dist/worker/concerns/index.d.ts.map +1 -0
- package/dist/worker/concerns/index.js +13 -0
- package/dist/worker/concerns/index.js.map +1 -0
- package/dist/worker/concerns/query-execution-concern.d.ts +104 -0
- package/dist/worker/concerns/query-execution-concern.d.ts.map +1 -0
- package/dist/worker/concerns/query-execution-concern.js +95 -0
- package/dist/worker/concerns/query-execution-concern.js.map +1 -0
- package/dist/worker/concerns/storage-orchestration-concern.d.ts +78 -0
- package/dist/worker/concerns/storage-orchestration-concern.d.ts.map +1 -0
- package/dist/worker/concerns/storage-orchestration-concern.js +240 -0
- package/dist/worker/concerns/storage-orchestration-concern.js.map +1 -0
- package/dist/worker/do-auth-manager.d.ts +108 -0
- package/dist/worker/do-auth-manager.d.ts.map +1 -0
- package/dist/worker/do-auth-manager.js +212 -0
- package/dist/worker/do-auth-manager.js.map +1 -0
- package/dist/worker/do-pglite-manager.d.ts +137 -0
- package/dist/worker/do-pglite-manager.d.ts.map +1 -0
- package/dist/worker/do-pglite-manager.js +228 -0
- package/dist/worker/do-pglite-manager.js.map +1 -0
- package/dist/worker/do.d.ts +556 -0
- package/dist/worker/do.d.ts.map +1 -0
- package/dist/worker/do.js +1441 -0
- package/dist/worker/do.js.map +1 -0
- package/dist/worker/entry.d.ts +23 -0
- package/dist/worker/entry.d.ts.map +1 -0
- package/dist/worker/entry.js +362 -0
- package/dist/worker/entry.js.map +1 -0
- package/dist/worker/errors.d.ts +106 -0
- package/dist/worker/errors.d.ts.map +1 -0
- package/dist/worker/errors.js +178 -0
- package/dist/worker/errors.js.map +1 -0
- package/dist/worker/health-check-manager.d.ts +141 -0
- package/dist/worker/health-check-manager.d.ts.map +1 -0
- package/dist/worker/health-check-manager.js +145 -0
- package/dist/worker/health-check-manager.js.map +1 -0
- package/dist/worker/index.d.ts +60 -0
- package/dist/worker/index.d.ts.map +1 -0
- package/dist/worker/index.js +67 -0
- package/dist/worker/index.js.map +1 -0
- package/dist/worker/memory-pressure.d.ts +892 -0
- package/dist/worker/memory-pressure.d.ts.map +1 -0
- package/dist/worker/memory-pressure.js +1990 -0
- package/dist/worker/memory-pressure.js.map +1 -0
- package/dist/worker/migration-manager.d.ts +153 -0
- package/dist/worker/migration-manager.d.ts.map +1 -0
- package/dist/worker/migration-manager.js +461 -0
- package/dist/worker/migration-manager.js.map +1 -0
- package/dist/worker/plugin-manager.d.ts +147 -0
- package/dist/worker/plugin-manager.d.ts.map +1 -0
- package/dist/worker/plugin-manager.js +408 -0
- package/dist/worker/plugin-manager.js.map +1 -0
- package/dist/worker/proxy.d.ts +330 -0
- package/dist/worker/proxy.d.ts.map +1 -0
- package/dist/worker/proxy.js +504 -0
- package/dist/worker/proxy.js.map +1 -0
- package/dist/worker/query-execution-manager.d.ts +107 -0
- package/dist/worker/query-execution-manager.d.ts.map +1 -0
- package/dist/worker/query-execution-manager.js +155 -0
- package/dist/worker/query-execution-manager.js.map +1 -0
- package/dist/worker/query-executor.d.ts +163 -0
- package/dist/worker/query-executor.d.ts.map +1 -0
- package/dist/worker/query-executor.js +413 -0
- package/dist/worker/query-executor.js.map +1 -0
- package/dist/worker/query-stats-manager.d.ts +117 -0
- package/dist/worker/query-stats-manager.d.ts.map +1 -0
- package/dist/worker/query-stats-manager.js +162 -0
- package/dist/worker/query-stats-manager.js.map +1 -0
- package/dist/worker/result-handler.d.ts +192 -0
- package/dist/worker/result-handler.d.ts.map +1 -0
- package/dist/worker/result-handler.js +346 -0
- package/dist/worker/result-handler.js.map +1 -0
- package/dist/worker/routes.d.ts +135 -0
- package/dist/worker/routes.d.ts.map +1 -0
- package/dist/worker/routes.js +460 -0
- package/dist/worker/routes.js.map +1 -0
- package/dist/worker/rpc-methods-manager.d.ts +142 -0
- package/dist/worker/rpc-methods-manager.d.ts.map +1 -0
- package/dist/worker/rpc-methods-manager.js +195 -0
- package/dist/worker/rpc-methods-manager.js.map +1 -0
- package/dist/worker/rpc.d.ts +259 -0
- package/dist/worker/rpc.d.ts.map +1 -0
- package/dist/worker/rpc.js +398 -0
- package/dist/worker/rpc.js.map +1 -0
- package/dist/worker/schema-version.d.ts +209 -0
- package/dist/worker/schema-version.d.ts.map +1 -0
- package/dist/worker/schema-version.js +450 -0
- package/dist/worker/schema-version.js.map +1 -0
- package/dist/worker/session-manager.d.ts +282 -0
- package/dist/worker/session-manager.d.ts.map +1 -0
- package/dist/worker/session-manager.js +523 -0
- package/dist/worker/session-manager.js.map +1 -0
- package/dist/worker/shutdown-manager.d.ts +188 -0
- package/dist/worker/shutdown-manager.d.ts.map +1 -0
- package/dist/worker/shutdown-manager.js +347 -0
- package/dist/worker/shutdown-manager.js.map +1 -0
- package/dist/worker/sql-transform.d.ts +61 -0
- package/dist/worker/sql-transform.d.ts.map +1 -0
- package/dist/worker/sql-transform.js +312 -0
- package/dist/worker/sql-transform.js.map +1 -0
- package/dist/worker/types.d.ts +738 -0
- package/dist/worker/types.d.ts.map +1 -0
- package/dist/worker/types.js +6 -0
- package/dist/worker/types.js.map +1 -0
- package/dist/worker/user-routes.d.ts +76 -0
- package/dist/worker/user-routes.d.ts.map +1 -0
- package/dist/worker/user-routes.js +188 -0
- package/dist/worker/user-routes.js.map +1 -0
- package/dist/worker/wal-facade.d.ts +138 -0
- package/dist/worker/wal-facade.d.ts.map +1 -0
- package/dist/worker/wal-facade.js +184 -0
- package/dist/worker/wal-facade.js.map +1 -0
- package/dist/worker/wal-r2.d.ts +271 -0
- package/dist/worker/wal-r2.d.ts.map +1 -0
- package/dist/worker/wal-r2.js +689 -0
- package/dist/worker/wal-r2.js.map +1 -0
- package/dist/worker/wal-replay.d.ts +361 -0
- package/dist/worker/wal-replay.d.ts.map +1 -0
- package/dist/worker/wal-replay.js +628 -0
- package/dist/worker/wal-replay.js.map +1 -0
- package/dist/worker/wal-retention.d.ts +389 -0
- package/dist/worker/wal-retention.d.ts.map +1 -0
- package/dist/worker/wal-retention.js +763 -0
- package/dist/worker/wal-retention.js.map +1 -0
- package/dist/worker/wal.d.ts +278 -0
- package/dist/worker/wal.d.ts.map +1 -0
- package/dist/worker/wal.js +467 -0
- package/dist/worker/wal.js.map +1 -0
- package/dist/worker/websocket.d.ts +85 -0
- package/dist/worker/websocket.d.ts.map +1 -0
- package/dist/worker/websocket.js +227 -0
- package/dist/worker/websocket.js.map +1 -0
- package/package.json +108 -0
- package/src/cdc/change-stream.ts +137 -0
- package/src/cdc/filter.ts +646 -0
- package/src/cdc/index.ts +112 -0
- package/src/cdc/resume-token.ts +280 -0
- package/src/cdc/transport/index.ts +7 -0
- package/src/cdc/transport/sse.ts +723 -0
- package/src/cdc/transport/websocket.ts +873 -0
- package/src/cdc/types.ts +346 -0
- package/src/config/index.ts +25 -0
- package/src/config/memory.ts +177 -0
- package/src/config/storage.ts +204 -0
- package/src/config/streaming.ts +147 -0
- package/src/config/timeouts.ts +221 -0
- package/src/extensions/config.test.ts +187 -0
- package/src/extensions/config.ts +278 -0
- package/src/extensions/geo.test.ts +455 -0
- package/src/extensions/geo.ts +858 -0
- package/src/extensions/index.test.ts +259 -0
- package/src/extensions/index.ts +227 -0
- package/src/extensions/loader.test.ts +555 -0
- package/src/extensions/loader.ts +588 -0
- package/src/extensions/pgmq-lite.test.ts +727 -0
- package/src/extensions/pgmq-lite.ts +770 -0
- package/src/extensions/plugins.test.ts +528 -0
- package/src/extensions/plugins.ts +718 -0
- package/src/extensions/registry.test.ts +202 -0
- package/src/extensions/registry.ts +267 -0
- package/src/extensions/vector.test.ts +195 -0
- package/src/extensions/vector.ts +217 -0
- package/src/iceberg/SCHEDULER.md +580 -0
- package/src/iceberg/analytics.test.ts +703 -0
- package/src/iceberg/analytics.ts +727 -0
- package/src/iceberg/catalog-api.test.ts +838 -0
- package/src/iceberg/catalog-api.ts +520 -0
- package/src/iceberg/catalog.test.ts +680 -0
- package/src/iceberg/catalog.ts +1007 -0
- package/src/iceberg/iceberg.test.ts +705 -0
- package/src/iceberg/index.ts +406 -0
- package/src/iceberg/metadata.test.ts +632 -0
- package/src/iceberg/metadata.ts +649 -0
- package/src/iceberg/optimizer.test.ts +868 -0
- package/src/iceberg/optimizer.ts +1287 -0
- package/src/iceberg/parquet.test.ts +899 -0
- package/src/iceberg/parquet.ts +1640 -0
- package/src/iceberg/r2-organization.test.ts +615 -0
- package/src/iceberg/r2-organization.ts +951 -0
- package/src/iceberg/scheduler-do-example.ts +364 -0
- package/src/iceberg/scheduler.test.ts +861 -0
- package/src/iceberg/scheduler.ts +1201 -0
- package/src/iceberg/schema.test.ts +547 -0
- package/src/iceberg/schema.ts +616 -0
- package/src/iceberg/snapshot-manager.test.ts +919 -0
- package/src/iceberg/snapshot-manager.ts +1369 -0
- package/src/iceberg/sql-router.test.ts +334 -0
- package/src/iceberg/sql-router.ts +337 -0
- package/src/iceberg/test-fixtures.ts +605 -0
- package/src/iceberg/time-travel-api.test.ts +1029 -0
- package/src/iceberg/time-travel-api.ts +731 -0
- package/src/iceberg/time-travel.test.ts +1218 -0
- package/src/iceberg/time-travel.ts +1052 -0
- package/src/iceberg/transformer.test.ts +689 -0
- package/src/iceberg/transformer.ts +1029 -0
- package/src/iceberg/types.ts +373 -0
- package/src/iceberg/writer.test.ts +716 -0
- package/src/iceberg/writer.ts +590 -0
- package/src/index.ts +212 -0
- package/src/lineage/index.ts +42 -0
- package/src/lineage/integration.ts +334 -0
- package/src/lineage/tracker.ts +1618 -0
- package/src/lineage/types.ts +354 -0
- package/src/middleware/index.ts +36 -0
- package/src/middleware/rate-limit-concurrent.test.ts +794 -0
- package/src/middleware/rate-limit.test.ts +1568 -0
- package/src/middleware/rate-limit.ts +840 -0
- package/src/migration-tooling/external-migration.test.ts +1864 -0
- package/src/migration-tooling/external-migration.ts +2355 -0
- package/src/migration-tooling/index.ts +19 -0
- package/src/migrations/ARCHITECTURE.md +474 -0
- package/src/migrations/PROGRESS_TRACKING.md +485 -0
- package/src/migrations/auto-migrator.test.ts +732 -0
- package/src/migrations/auto-migrator.ts +531 -0
- package/src/migrations/bulk-orchestrator.test.ts +801 -0
- package/src/migrations/bulk-orchestrator.ts +1039 -0
- package/src/migrations/compatibility.test.ts +958 -0
- package/src/migrations/compatibility.ts +902 -0
- package/src/migrations/do-migrations.test.ts +2620 -0
- package/src/migrations/do-migrations.ts +1289 -0
- package/src/migrations/do-migrations.types.ts +715 -0
- package/src/migrations/drizzle-compat.test.ts +210 -0
- package/src/migrations/drizzle-compat.ts +337 -0
- package/src/migrations/index.ts +334 -0
- package/src/migrations/migration-api.test.ts +438 -0
- package/src/migrations/migration-api.ts +704 -0
- package/src/migrations/progress-tracker-do.ts +518 -0
- package/src/migrations/progress-tracker-kv.ts +305 -0
- package/src/migrations/progress-tracker.test.ts +937 -0
- package/src/migrations/progress-tracker.ts +665 -0
- package/src/migrations/registry.test.ts +331 -0
- package/src/migrations/registry.ts +468 -0
- package/src/migrations/rollback.test.ts +644 -0
- package/src/migrations/runner.test.ts +807 -0
- package/src/migrations/runner.test.ts.backup +759 -0
- package/src/migrations/runner.ts +1459 -0
- package/src/migrations/schema-generator.test.ts +649 -0
- package/src/migrations/schema-generator.ts +513 -0
- package/src/migrations/testing.ts +1037 -0
- package/src/migrations/types.ts +573 -0
- package/src/migrations/validator.test.ts +660 -0
- package/src/migrations/validator.ts +741 -0
- package/src/observability/alerting.test.ts +1133 -0
- package/src/observability/alerting.ts +455 -0
- package/src/observability/analytics-engine.ts +733 -0
- package/src/observability/cost-metrics.ts +804 -0
- package/src/observability/cross-do-tracing.test.ts +516 -0
- package/src/observability/cross-do-tracing.ts +588 -0
- package/src/observability/dashboards/postgres-do-overview.json +1656 -0
- package/src/observability/error-rate-collector.test.ts +977 -0
- package/src/observability/error-rate-collector.ts +518 -0
- package/src/observability/exporters.test.ts +365 -0
- package/src/observability/exporters.ts +650 -0
- package/src/observability/health-check.test.ts +353 -0
- package/src/observability/health-check.ts +341 -0
- package/src/observability/index.test.ts +298 -0
- package/src/observability/index.ts +885 -0
- package/src/observability/instrumentation.test.ts +428 -0
- package/src/observability/instrumentation.ts +788 -0
- package/src/observability/memory-metrics.test.ts +355 -0
- package/src/observability/memory-metrics.ts +990 -0
- package/src/observability/metrics-endpoint.test.ts +402 -0
- package/src/observability/metrics-endpoint.ts +374 -0
- package/src/observability/metrics.test.ts +291 -0
- package/src/observability/metrics.ts +315 -0
- package/src/observability/observability-features.ts +1296 -0
- package/src/observability/prometheus.test.ts +292 -0
- package/src/observability/prometheus.ts +170 -0
- package/src/observability/propagation.test.ts +417 -0
- package/src/observability/propagation.ts +294 -0
- package/src/observability/query-latency.ts +586 -0
- package/src/observability/query-performance.test.ts +406 -0
- package/src/observability/query-performance.ts +491 -0
- package/src/observability/storage-tier-metrics.test.ts +633 -0
- package/src/observability/storage-tier-metrics.ts +570 -0
- package/src/observability/tier-cost-optimizer.ts +740 -0
- package/src/observability/tracer.test.ts +346 -0
- package/src/observability/tracer.ts +585 -0
- package/src/observability/types.test.ts +726 -0
- package/src/observability/types.ts +434 -0
- package/src/pglite/auto-demotion.test.ts +477 -0
- package/src/pglite/auto-demotion.ts +385 -0
- package/src/pglite/auto-promotion.test.ts +824 -0
- package/src/pglite/auto-promotion.ts +547 -0
- package/src/pglite/cache-layer.test.ts +469 -0
- package/src/pglite/cache-layer.ts +271 -0
- package/src/pglite/cold-start-manager.ts +1260 -0
- package/src/pglite/cold-start-optimizer.test.ts +937 -0
- package/src/pglite/cold-start-optimizer.ts +1895 -0
- package/src/pglite/dovfs-adapter.ts +1122 -0
- package/src/pglite/dovfs.ts +1258 -0
- package/src/pglite/etag-cache.test.ts +844 -0
- package/src/pglite/etag-cache.ts +526 -0
- package/src/pglite/index.ts +442 -0
- package/src/pglite/init.test.ts +455 -0
- package/src/pglite/init.ts +574 -0
- package/src/pglite/lifecycle.test.ts +599 -0
- package/src/pglite/lifecycle.ts +704 -0
- package/src/pglite/parallel-loader.test.ts +586 -0
- package/src/pglite/parallel-loader.ts +481 -0
- package/src/pglite/production-pglite.test.ts +666 -0
- package/src/pglite/production-pglite.ts +537 -0
- package/src/pglite/query-executor.ts +614 -0
- package/src/pglite/r2-layer.test.ts +501 -0
- package/src/pglite/r2-layer.ts +322 -0
- package/src/pglite/tiered-init.test.ts +725 -0
- package/src/pglite/tiered-init.ts +556 -0
- package/src/pglite/tiered-vfs.test.ts +726 -0
- package/src/pglite/tiered-vfs.ts +33 -0
- package/src/pglite/tiering-stats.test.ts +531 -0
- package/src/pglite/tiering-stats.ts +407 -0
- package/src/pglite/transaction-hooks.ts +343 -0
- package/src/pglite/warm-loader.test.ts +1701 -0
- package/src/pglite/warm-loader.ts +528 -0
- package/src/pglite/workers-pglite.ts +224 -0
- package/src/pglite-assets/pglite.data +0 -0
- package/src/pglite-assets/pglite.wasm +0 -0
- package/src/pglite.d.ts +47 -0
- package/src/playground/index.ts +137 -0
- package/src/playground/keyboard-shortcuts.ts +677 -0
- package/src/playground/playground.ts +323 -0
- package/src/playground/query-executor.ts +669 -0
- package/src/playground/query-history.ts +328 -0
- package/src/playground/result-formatter.ts +420 -0
- package/src/playground/sample-datasets.ts +674 -0
- package/src/playground/sample-queries.ts +1168 -0
- package/src/playground/schema-explorer.ts +558 -0
- package/src/playground/types.ts +518 -0
- package/src/readonly/cache-reader.test.ts +460 -0
- package/src/readonly/cache-reader.ts +313 -0
- package/src/readonly/config.test.ts +187 -0
- package/src/readonly/config.ts +128 -0
- package/src/readonly/index.ts +50 -0
- package/src/readonly/pglite-wrapper.test.ts +278 -0
- package/src/readonly/pglite-wrapper.ts +184 -0
- package/src/readonly/worker.test.ts +533 -0
- package/src/readonly/worker.ts +341 -0
- package/src/readonly/write-blocker.test.ts +459 -0
- package/src/readonly/write-blocker.ts +175 -0
- package/src/recovery/disaster-recovery.test.ts +618 -0
- package/src/recovery/disaster-recovery.ts +1181 -0
- package/src/recovery/index.ts +43 -0
- package/src/recovery/parquet-parser.ts +974 -0
- package/src/retention/index.ts +74 -0
- package/src/retention/policy.test.ts +571 -0
- package/src/retention/policy.ts +774 -0
- package/src/retention/purger.test.ts +465 -0
- package/src/retention/purger.ts +558 -0
- package/src/rls/auth-integration.test.ts +752 -0
- package/src/rls/auth-integration.ts +533 -0
- package/src/rls/generator.test.ts +829 -0
- package/src/rls/generator.ts +573 -0
- package/src/rls/index.ts +128 -0
- package/src/rls/policy.ts +208 -0
- package/src/rls/rls.test.ts +1071 -0
- package/src/rls/validator.test.ts +930 -0
- package/src/rls/validator.ts +895 -0
- package/src/routing/adaptive-router.test.ts +884 -0
- package/src/routing/adaptive-router.ts +845 -0
- package/src/routing/circuit-breaker.test.ts +1505 -0
- package/src/routing/circuit-breaker.ts +852 -0
- package/src/routing/cost-metrics.test.ts +565 -0
- package/src/routing/cost-metrics.ts +408 -0
- package/src/routing/do-connection-pool.test.ts +1109 -0
- package/src/routing/do-connection-pool.ts +828 -0
- package/src/routing/index.ts +158 -0
- package/src/routing/query-complexity-estimator.test.ts +356 -0
- package/src/routing/query-complexity-estimator.ts +444 -0
- package/src/routing/request-coalescing.test.ts +738 -0
- package/src/routing/request-coalescing.ts +475 -0
- package/src/routing/runtime-router.test.ts +436 -0
- package/src/routing/runtime-router.ts +357 -0
- package/src/routing/tenant-router.test.ts +2493 -0
- package/src/routing/tenant-router.ts +1908 -0
- package/src/routing/websocket-pool.test.ts +551 -0
- package/src/routing/websocket-pool.ts +577 -0
- package/src/storage/access-pattern-tracker.test.ts +874 -0
- package/src/storage/cache-layer.test.ts +560 -0
- package/src/storage/cache-layer.ts +328 -0
- package/src/storage/cost-aware-tiering.test.ts +652 -0
- package/src/storage/cost-aware-tiering.ts +794 -0
- package/src/storage/do-sqlite-blobs.test.ts +937 -0
- package/src/storage/index.ts +272 -0
- package/src/storage/interfaces.ts +974 -0
- package/src/storage/r2-layer.test.ts +653 -0
- package/src/storage/r2-layer.ts +434 -0
- package/src/storage/r2-overflow.ts +920 -0
- package/src/storage/r2-page-vfs.test.ts +2348 -0
- package/src/storage/r2-page-vfs.ts +1054 -0
- package/src/storage/swr-cache.test.ts +832 -0
- package/src/storage/swr-cache.ts +398 -0
- package/src/storage/swr-tiered-integration.test.ts +617 -0
- package/src/storage/tiered-orchestrator.test.ts +2441 -0
- package/src/storage/tiered-orchestrator.ts +2081 -0
- package/src/storage/tiered-vfs-swr.test.ts +736 -0
- package/src/storage/tiered-vfs-swr.ts +735 -0
- package/src/storage/tiered-vfs.test.ts +793 -0
- package/src/storage/tiered-vfs.ts +1082 -0
- package/src/streaming/backpressure-controller.ts +452 -0
- package/src/streaming/buffer-pool.ts +484 -0
- package/src/streaming/cdc-iceberg-connector.ts +605 -0
- package/src/streaming/index.ts +225 -0
- package/src/streaming/live-cdc-stream.ts +985 -0
- package/src/streaming/memory-bounded-stream.ts +443 -0
- package/src/streaming/query-streamer.ts +662 -0
- package/src/streaming/response-streaming.ts +557 -0
- package/src/types/branded.ts +1075 -0
- package/src/types/branded.ts.backup +273 -0
- package/src/types/utilities.ts +1023 -0
- package/src/types/wasm.d.ts +30 -0
- package/src/validation/typed-errors.test.ts +420 -0
- package/src/wal/replay-engine.ts +1264 -0
- package/src/worker/__mocks__/capnweb.ts +15 -0
- package/src/worker/__mocks__/pglite.data.ts +22 -0
- package/src/worker/__mocks__/pglite.wasm.ts +33 -0
- package/src/worker/auth-rate-limiter.test.ts +272 -0
- package/src/worker/auth-rate-limiter.ts +448 -0
- package/src/worker/auth.security-red.test.ts +1236 -0
- package/src/worker/auth.security.test.ts +822 -0
- package/src/worker/auth.test.ts +469 -0
- package/src/worker/auth.ts +1104 -0
- package/src/worker/cdc-backpressure.test.ts +726 -0
- package/src/worker/cdc-backpressure.ts +866 -0
- package/src/worker/cdc-sse.test.ts +780 -0
- package/src/worker/cdc-sse.ts +728 -0
- package/src/worker/cdc-websocket.ts +1229 -0
- package/src/worker/cdc-ws.test.ts +1009 -0
- package/src/worker/cdc.test.ts +327 -0
- package/src/worker/cdc.ts +289 -0
- package/src/worker/concerns/auth-concern.ts +179 -0
- package/src/worker/concerns/cdc-concern.ts +247 -0
- package/src/worker/concerns/index.ts +58 -0
- package/src/worker/concerns/query-execution-concern.ts +194 -0
- package/src/worker/concerns/storage-orchestration-concern.ts +373 -0
- package/src/worker/discriminated-types.test.ts +280 -0
- package/src/worker/do-auth-manager.ts +257 -0
- package/src/worker/do-decomposition.test.ts +1236 -0
- package/src/worker/do-pglite-manager.ts +302 -0
- package/src/worker/do.test.ts +2254 -0
- package/src/worker/do.ts +1878 -0
- package/src/worker/entry.ts +417 -0
- package/src/worker/errors.ts +285 -0
- package/src/worker/health-check-manager.test.ts +261 -0
- package/src/worker/health-check-manager.ts +231 -0
- package/src/worker/index.ts +389 -0
- package/src/worker/memory-pressure.test.ts +1460 -0
- package/src/worker/memory-pressure.ts +2650 -0
- package/src/worker/migration-manager.ts +582 -0
- package/src/worker/neon-compat.test.ts +332 -0
- package/src/worker/plugin-manager.ts +485 -0
- package/src/worker/postgres.do-rpc.d.ts +76 -0
- package/src/worker/proxy.ts +694 -0
- package/src/worker/query-execution-manager.test.ts +303 -0
- package/src/worker/query-execution-manager.ts +219 -0
- package/src/worker/query-executor.test.ts +282 -0
- package/src/worker/query-executor.ts +560 -0
- package/src/worker/query-stats-manager.ts +229 -0
- package/src/worker/result-handler.test.ts +364 -0
- package/src/worker/result-handler.ts +510 -0
- package/src/worker/routes.test.ts +795 -0
- package/src/worker/routes.ts +650 -0
- package/src/worker/rpc-methods-manager.test.ts +326 -0
- package/src/worker/rpc-methods-manager.ts +276 -0
- package/src/worker/rpc.ts +524 -0
- package/src/worker/schema-version.ts +605 -0
- package/src/worker/session-manager.test.ts +506 -0
- package/src/worker/session-manager.ts +732 -0
- package/src/worker/shutdown-manager.ts +469 -0
- package/src/worker/sql-transform.test.ts +286 -0
- package/src/worker/sql-transform.ts +368 -0
- package/src/worker/supabase-compat.test.ts +621 -0
- package/src/worker/types.test.ts +292 -0
- package/src/worker/types.ts +873 -0
- package/src/worker/user-routes.test.ts +703 -0
- package/src/worker/user-routes.ts +303 -0
- package/src/worker/wal-facade.ts +235 -0
- package/src/worker/wal-r2.test.ts +570 -0
- package/src/worker/wal-r2.ts +930 -0
- package/src/worker/wal-replay.test.ts +845 -0
- package/src/worker/wal-replay.ts +897 -0
- package/src/worker/wal-retention.test.ts +758 -0
- package/src/worker/wal-retention.ts +1075 -0
- package/src/worker/wal.test.ts +618 -0
- package/src/worker/wal.ts +697 -0
- package/src/worker/websocket.test.ts +296 -0
- package/src/worker/websocket.ts +284 -0
|
@@ -0,0 +1,974 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage Layer Interface Abstractions
|
|
3
|
+
*
|
|
4
|
+
* Provides clear interface contracts for storage layer pluggability,
|
|
5
|
+
* enabling custom storage implementations and tier providers.
|
|
6
|
+
*
|
|
7
|
+
* ## Architecture Overview
|
|
8
|
+
*
|
|
9
|
+
* The storage system uses a tiered architecture:
|
|
10
|
+
* - **Hot Tier**: Fast, ephemeral cache (e.g., Cloudflare Cache API)
|
|
11
|
+
* - **Warm Tier**: Persistent local storage (e.g., DO SQLite)
|
|
12
|
+
* - **Cold Tier**: Durable remote storage (e.g., R2, S3)
|
|
13
|
+
*
|
|
14
|
+
* ## Implementing Custom Storage
|
|
15
|
+
*
|
|
16
|
+
* To implement a custom storage tier, implement `IStorageTier`:
|
|
17
|
+
*
|
|
18
|
+
* ```typescript
|
|
19
|
+
* class MyCustomStorage implements IStorageTier {
|
|
20
|
+
* readonly tierName: StorageTierName = 'warm'
|
|
21
|
+
* readonly characteristics: TierCharacteristics = {
|
|
22
|
+
* latency: 'low',
|
|
23
|
+
* persistence: 'durable',
|
|
24
|
+
* costPerGB: 0.10,
|
|
25
|
+
* maxCapacityBytes: 1024 * 1024 * 1024, // 1GB
|
|
26
|
+
* }
|
|
27
|
+
*
|
|
28
|
+
* async get(key: string): Promise<Uint8Array | null> {
|
|
29
|
+
* // Your implementation
|
|
30
|
+
* }
|
|
31
|
+
*
|
|
32
|
+
* async put(key: string, data: Uint8Array, metadata?: StorageMetadata): Promise<void> {
|
|
33
|
+
* // Your implementation
|
|
34
|
+
* }
|
|
35
|
+
*
|
|
36
|
+
* async delete(key: string): Promise<boolean> {
|
|
37
|
+
* // Your implementation
|
|
38
|
+
* }
|
|
39
|
+
*
|
|
40
|
+
* async has(key: string): Promise<boolean> {
|
|
41
|
+
* // Your implementation
|
|
42
|
+
* }
|
|
43
|
+
*
|
|
44
|
+
* getStats(): TierStats {
|
|
45
|
+
* // Your implementation
|
|
46
|
+
* }
|
|
47
|
+
* }
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* ## Using with TieredStorage
|
|
51
|
+
*
|
|
52
|
+
* ```typescript
|
|
53
|
+
* const tieredStorage = createTieredStorage({
|
|
54
|
+
* tiers: {
|
|
55
|
+
* hot: myCacheLayer,
|
|
56
|
+
* warm: myCustomStorage,
|
|
57
|
+
* cold: myR2Layer,
|
|
58
|
+
* },
|
|
59
|
+
* config: {
|
|
60
|
+
* autoPromote: true,
|
|
61
|
+
* promotionThreshold: 3,
|
|
62
|
+
* },
|
|
63
|
+
* })
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* @module storage/interfaces
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
// =============================================================================
|
|
70
|
+
// Core Type Definitions
|
|
71
|
+
// =============================================================================
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Storage tier identifiers.
|
|
75
|
+
*
|
|
76
|
+
* - `hot`: Fast, ephemeral cache (lowest latency, highest cost per access)
|
|
77
|
+
* - `warm`: Persistent local storage (low latency, moderate cost)
|
|
78
|
+
* - `cold`: Durable remote storage (higher latency, lowest cost)
|
|
79
|
+
*/
|
|
80
|
+
export type StorageTierName = 'hot' | 'warm' | 'cold'
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Health status of a storage tier.
|
|
84
|
+
*
|
|
85
|
+
* - `healthy`: Tier is operating normally
|
|
86
|
+
* - `degraded`: Tier has experienced recent failures but is still attempted
|
|
87
|
+
* - `unavailable`: Tier is skipped until recovery time passes
|
|
88
|
+
*/
|
|
89
|
+
export type TierHealthStatus = 'healthy' | 'degraded' | 'unavailable'
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Latency classification for storage tiers.
|
|
93
|
+
*/
|
|
94
|
+
export type LatencyClass = 'ultra-low' | 'low' | 'medium' | 'high'
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Persistence classification for storage tiers.
|
|
98
|
+
*/
|
|
99
|
+
export type PersistenceClass = 'ephemeral' | 'durable' | 'highly-durable'
|
|
100
|
+
|
|
101
|
+
// =============================================================================
|
|
102
|
+
// Metadata and Options
|
|
103
|
+
// =============================================================================
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Metadata that can be attached to stored data.
|
|
107
|
+
*/
|
|
108
|
+
export interface StorageMetadata {
|
|
109
|
+
/** Timestamp when last accessed */
|
|
110
|
+
lastAccessed?: number
|
|
111
|
+
/** Number of times accessed */
|
|
112
|
+
accessCount?: number
|
|
113
|
+
/** Size in bytes */
|
|
114
|
+
size?: number
|
|
115
|
+
/** Custom tags for categorization */
|
|
116
|
+
tags?: string[]
|
|
117
|
+
/** Custom key-value metadata */
|
|
118
|
+
custom?: Record<string, string>
|
|
119
|
+
/** Content type (e.g., 'application/octet-stream') */
|
|
120
|
+
contentType?: string
|
|
121
|
+
/** TTL in milliseconds (from creation time) */
|
|
122
|
+
ttlMs?: number
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Options for read operations.
|
|
127
|
+
*/
|
|
128
|
+
export interface StorageReadOptions {
|
|
129
|
+
/** Whether to skip promotion after read */
|
|
130
|
+
skipPromotion?: boolean
|
|
131
|
+
/** Whether to track access for promotion/demotion decisions */
|
|
132
|
+
trackAccess?: boolean
|
|
133
|
+
/** Only check specific tiers */
|
|
134
|
+
tiers?: StorageTierName[]
|
|
135
|
+
/** Return stale data while revalidating in background */
|
|
136
|
+
staleWhileRevalidate?: boolean
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Options for write operations.
|
|
141
|
+
*/
|
|
142
|
+
export interface StorageWriteOptions {
|
|
143
|
+
/** Target tier for the write */
|
|
144
|
+
tier?: StorageTierName
|
|
145
|
+
/** Metadata to attach */
|
|
146
|
+
metadata?: StorageMetadata
|
|
147
|
+
/** Whether to also write to colder tiers for durability */
|
|
148
|
+
writeThrough?: boolean
|
|
149
|
+
/** Whether to invalidate hotter tier caches */
|
|
150
|
+
invalidateHotter?: boolean
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Options for delete operations.
|
|
155
|
+
*/
|
|
156
|
+
export interface StorageDeleteOptions {
|
|
157
|
+
/** Only delete from specific tiers */
|
|
158
|
+
tiers?: StorageTierName[]
|
|
159
|
+
/** Whether to cascade delete to all tiers */
|
|
160
|
+
cascade?: boolean
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Options for list operations.
|
|
165
|
+
*/
|
|
166
|
+
export interface StorageListOptions {
|
|
167
|
+
/** Maximum number of keys to return */
|
|
168
|
+
limit?: number
|
|
169
|
+
/** Pagination cursor */
|
|
170
|
+
cursor?: string
|
|
171
|
+
/** Key prefix filter */
|
|
172
|
+
prefix?: string
|
|
173
|
+
/** Delimiter for hierarchical listing */
|
|
174
|
+
delimiter?: string
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// =============================================================================
|
|
178
|
+
// Statistics and Metrics
|
|
179
|
+
// =============================================================================
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Statistics for a single storage tier.
|
|
183
|
+
*/
|
|
184
|
+
export interface TierStats {
|
|
185
|
+
/** Number of read operations */
|
|
186
|
+
reads: number
|
|
187
|
+
/** Number of write operations */
|
|
188
|
+
writes: number
|
|
189
|
+
/** Number of delete operations */
|
|
190
|
+
deletes: number
|
|
191
|
+
/** Number of cache/lookup hits */
|
|
192
|
+
hits: number
|
|
193
|
+
/** Number of cache/lookup misses */
|
|
194
|
+
misses: number
|
|
195
|
+
/** Total bytes read */
|
|
196
|
+
bytesRead: number
|
|
197
|
+
/** Total bytes written */
|
|
198
|
+
bytesWritten: number
|
|
199
|
+
/** Number of errors encountered */
|
|
200
|
+
errors: number
|
|
201
|
+
/** Hit ratio (0-1), NaN if no lookups */
|
|
202
|
+
hitRatio: number
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Characteristics of a storage tier.
|
|
207
|
+
*/
|
|
208
|
+
export interface TierCharacteristics {
|
|
209
|
+
/** Latency classification */
|
|
210
|
+
latency: LatencyClass
|
|
211
|
+
/** Persistence classification */
|
|
212
|
+
persistence: PersistenceClass
|
|
213
|
+
/** Estimated cost per GB per month (USD) */
|
|
214
|
+
costPerGB: number
|
|
215
|
+
/** Maximum capacity in bytes (optional, undefined = unlimited) */
|
|
216
|
+
maxCapacityBytes?: number
|
|
217
|
+
/** Whether the tier supports range reads */
|
|
218
|
+
supportsRangeReads?: boolean
|
|
219
|
+
/** Whether the tier supports batch operations */
|
|
220
|
+
supportsBatch?: boolean
|
|
221
|
+
/** Whether the tier supports metadata */
|
|
222
|
+
supportsMetadata?: boolean
|
|
223
|
+
/** Whether the tier supports TTL */
|
|
224
|
+
supportsTTL?: boolean
|
|
225
|
+
/** Geographic distribution */
|
|
226
|
+
distribution?: 'local' | 'regional' | 'global'
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Health information for a storage tier.
|
|
231
|
+
*/
|
|
232
|
+
export interface TierHealthInfo {
|
|
233
|
+
/** Current health status */
|
|
234
|
+
status: TierHealthStatus
|
|
235
|
+
/** Number of consecutive failures */
|
|
236
|
+
consecutiveFailures: number
|
|
237
|
+
/** Timestamp of last failure */
|
|
238
|
+
lastFailureTime?: number
|
|
239
|
+
/** Timestamp of last success */
|
|
240
|
+
lastSuccessTime?: number
|
|
241
|
+
/** Error message from last failure */
|
|
242
|
+
lastError?: string
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Information about a tier failure event.
|
|
247
|
+
*/
|
|
248
|
+
export interface TierFailureEvent {
|
|
249
|
+
/** The tier that failed */
|
|
250
|
+
tier: StorageTierName
|
|
251
|
+
/** Timestamp of the failure */
|
|
252
|
+
timestamp: number
|
|
253
|
+
/** Error message */
|
|
254
|
+
error: string
|
|
255
|
+
/** Type of operation that failed */
|
|
256
|
+
operation: 'read' | 'write' | 'delete' | 'check' | 'list'
|
|
257
|
+
/** Key involved (if applicable) */
|
|
258
|
+
key?: string
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// =============================================================================
|
|
262
|
+
// Result Types
|
|
263
|
+
// =============================================================================
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Result of a read operation with tier location.
|
|
267
|
+
*/
|
|
268
|
+
export interface StorageReadResult {
|
|
269
|
+
/** The data, or null if not found */
|
|
270
|
+
data: Uint8Array | null
|
|
271
|
+
/** Whether the data was found */
|
|
272
|
+
found: boolean
|
|
273
|
+
/** The tier where data was found (if found) */
|
|
274
|
+
tier?: StorageTierName
|
|
275
|
+
/** Whether the data is stale (SWR pattern) */
|
|
276
|
+
stale?: boolean
|
|
277
|
+
/** Whether background revalidation is in progress */
|
|
278
|
+
revalidating?: boolean
|
|
279
|
+
/** Metadata attached to the data (if available) */
|
|
280
|
+
metadata?: StorageMetadata
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Result of a write operation.
|
|
285
|
+
*/
|
|
286
|
+
export interface StorageWriteResult {
|
|
287
|
+
/** Whether the write succeeded */
|
|
288
|
+
success: boolean
|
|
289
|
+
/** The tier data was written to */
|
|
290
|
+
tier: StorageTierName
|
|
291
|
+
/** Any fallback tiers used (if primary failed) */
|
|
292
|
+
fallbackTiers?: StorageTierName[]
|
|
293
|
+
/** Error message if failed */
|
|
294
|
+
error?: string
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Result of a delete operation.
|
|
299
|
+
*/
|
|
300
|
+
export interface StorageDeleteResult {
|
|
301
|
+
/** Whether delete succeeded on all targeted tiers */
|
|
302
|
+
success: boolean
|
|
303
|
+
/** Tiers where delete succeeded */
|
|
304
|
+
successfulTiers: StorageTierName[]
|
|
305
|
+
/** Tiers where delete failed */
|
|
306
|
+
failedTiers: StorageTierName[]
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Result of a list operation.
|
|
311
|
+
*/
|
|
312
|
+
export interface StorageListResult {
|
|
313
|
+
/** List of keys */
|
|
314
|
+
keys: string[]
|
|
315
|
+
/** Whether more results exist */
|
|
316
|
+
truncated: boolean
|
|
317
|
+
/** Cursor for next page */
|
|
318
|
+
cursor?: string
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* Location information for a stored item.
|
|
323
|
+
*/
|
|
324
|
+
export interface StorageLocationInfo {
|
|
325
|
+
/** The key */
|
|
326
|
+
key: string
|
|
327
|
+
/** Whether the item was found */
|
|
328
|
+
found: boolean
|
|
329
|
+
/** The tier where the item is stored (if found) */
|
|
330
|
+
tier?: StorageTierName
|
|
331
|
+
/** Size in bytes (if known) */
|
|
332
|
+
size?: number
|
|
333
|
+
/** Last modified timestamp (if known) */
|
|
334
|
+
lastModified?: number
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
// =============================================================================
|
|
338
|
+
// Tier Migration Types
|
|
339
|
+
// =============================================================================
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* Information about a tier migration event (promotion or demotion).
|
|
343
|
+
*/
|
|
344
|
+
export interface TierMigrationEvent {
|
|
345
|
+
/** The key being migrated */
|
|
346
|
+
key: string
|
|
347
|
+
/** Source tier */
|
|
348
|
+
fromTier: StorageTierName
|
|
349
|
+
/** Destination tier */
|
|
350
|
+
toTier: StorageTierName
|
|
351
|
+
/** Timestamp of the migration */
|
|
352
|
+
timestamp: number
|
|
353
|
+
/** Whether the migration succeeded */
|
|
354
|
+
success: boolean
|
|
355
|
+
/** Error message if failed */
|
|
356
|
+
error?: string
|
|
357
|
+
/** Migration direction */
|
|
358
|
+
direction: 'promotion' | 'demotion'
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* Callback for tier migration events.
|
|
363
|
+
*/
|
|
364
|
+
export type TierMigrationCallback = (event: TierMigrationEvent) => void
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Callback for tier failure events.
|
|
368
|
+
*/
|
|
369
|
+
export type TierFailureCallback = (event: TierFailureEvent) => void
|
|
370
|
+
|
|
371
|
+
// =============================================================================
|
|
372
|
+
// Core Storage Tier Interface
|
|
373
|
+
// =============================================================================
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* Interface for a single storage tier implementation.
|
|
377
|
+
*
|
|
378
|
+
* Implement this interface to create custom storage backends that can be
|
|
379
|
+
* plugged into the tiered storage system.
|
|
380
|
+
*
|
|
381
|
+
* @example
|
|
382
|
+
* ```typescript
|
|
383
|
+
* class RedisStorageTier implements IStorageTier {
|
|
384
|
+
* readonly tierName: StorageTierName = 'warm'
|
|
385
|
+
* readonly characteristics: TierCharacteristics = {
|
|
386
|
+
* latency: 'low',
|
|
387
|
+
* persistence: 'durable',
|
|
388
|
+
* costPerGB: 0.05,
|
|
389
|
+
* }
|
|
390
|
+
*
|
|
391
|
+
* async get(key: string): Promise<Uint8Array | null> {
|
|
392
|
+
* const value = await this.redis.get(key)
|
|
393
|
+
* return value ? new Uint8Array(Buffer.from(value, 'base64')) : null
|
|
394
|
+
* }
|
|
395
|
+
*
|
|
396
|
+
* async put(key: string, data: Uint8Array): Promise<void> {
|
|
397
|
+
* await this.redis.set(key, Buffer.from(data).toString('base64'))
|
|
398
|
+
* }
|
|
399
|
+
*
|
|
400
|
+
* // ... other methods
|
|
401
|
+
* }
|
|
402
|
+
* ```
|
|
403
|
+
*/
|
|
404
|
+
export interface IStorageTier {
|
|
405
|
+
/**
|
|
406
|
+
* The name/role of this tier in the storage hierarchy.
|
|
407
|
+
*/
|
|
408
|
+
readonly tierName: StorageTierName
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* Characteristics of this storage tier.
|
|
412
|
+
*/
|
|
413
|
+
readonly characteristics: TierCharacteristics
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* Retrieve data by key.
|
|
417
|
+
*
|
|
418
|
+
* @param key - The key to look up
|
|
419
|
+
* @returns The data or null if not found
|
|
420
|
+
*/
|
|
421
|
+
get(key: string): Promise<Uint8Array | null>
|
|
422
|
+
|
|
423
|
+
/**
|
|
424
|
+
* Store data by key.
|
|
425
|
+
*
|
|
426
|
+
* @param key - The key to store under
|
|
427
|
+
* @param data - The data to store
|
|
428
|
+
* @param metadata - Optional metadata to attach
|
|
429
|
+
*/
|
|
430
|
+
put(key: string, data: Uint8Array, metadata?: StorageMetadata): Promise<void>
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* Delete data by key.
|
|
434
|
+
*
|
|
435
|
+
* @param key - The key to delete
|
|
436
|
+
* @returns true if the key existed and was deleted
|
|
437
|
+
*/
|
|
438
|
+
delete(key: string): Promise<boolean>
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* Check if a key exists.
|
|
442
|
+
*
|
|
443
|
+
* @param key - The key to check
|
|
444
|
+
* @returns true if the key exists
|
|
445
|
+
*/
|
|
446
|
+
has(key: string): Promise<boolean>
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* Get statistics for this tier.
|
|
450
|
+
*/
|
|
451
|
+
getStats(): TierStats
|
|
452
|
+
|
|
453
|
+
/**
|
|
454
|
+
* Reset statistics counters.
|
|
455
|
+
*/
|
|
456
|
+
resetStats(): void
|
|
457
|
+
|
|
458
|
+
/**
|
|
459
|
+
* Get health information for this tier.
|
|
460
|
+
*/
|
|
461
|
+
getHealth?(): TierHealthInfo
|
|
462
|
+
|
|
463
|
+
/**
|
|
464
|
+
* List keys with optional filtering.
|
|
465
|
+
* Not all tiers support listing (e.g., cache tiers typically don't).
|
|
466
|
+
*/
|
|
467
|
+
list?(options?: StorageListOptions): Promise<StorageListResult>
|
|
468
|
+
|
|
469
|
+
/**
|
|
470
|
+
* Get data with metadata.
|
|
471
|
+
*/
|
|
472
|
+
getWithMetadata?(key: string): Promise<{ data: Uint8Array; metadata: StorageMetadata } | null>
|
|
473
|
+
|
|
474
|
+
/**
|
|
475
|
+
* Get a byte range from stored data.
|
|
476
|
+
* Only applicable for tiers that support range reads.
|
|
477
|
+
*/
|
|
478
|
+
getRange?(key: string, offset: number, length: number): Promise<Uint8Array | null>
|
|
479
|
+
|
|
480
|
+
/**
|
|
481
|
+
* Delete multiple keys in batch.
|
|
482
|
+
* Only applicable for tiers that support batch operations.
|
|
483
|
+
*/
|
|
484
|
+
deleteMany?(keys: string[]): Promise<void>
|
|
485
|
+
|
|
486
|
+
/**
|
|
487
|
+
* Clear all data in this tier.
|
|
488
|
+
* Not all tiers support bulk clear operations.
|
|
489
|
+
*/
|
|
490
|
+
clear?(): Promise<void>
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
// =============================================================================
|
|
494
|
+
// Tiered Storage Interface
|
|
495
|
+
// =============================================================================
|
|
496
|
+
|
|
497
|
+
/**
|
|
498
|
+
* Configuration for tiered storage system.
|
|
499
|
+
*/
|
|
500
|
+
export interface TieredStorageConfig {
|
|
501
|
+
/** Whether to automatically promote frequently accessed data */
|
|
502
|
+
autoPromote?: boolean
|
|
503
|
+
/** Number of accesses before promoting to hotter tier */
|
|
504
|
+
promotionThreshold?: number
|
|
505
|
+
/** Whether to automatically demote infrequently accessed data */
|
|
506
|
+
autoDemote?: boolean
|
|
507
|
+
/** TTL for hot tier entries (ms) */
|
|
508
|
+
hotTtlMs?: number
|
|
509
|
+
/** TTL for warm tier entries (ms) */
|
|
510
|
+
warmTtlMs?: number
|
|
511
|
+
/** Maximum entries in hot tier */
|
|
512
|
+
maxHotEntries?: number
|
|
513
|
+
/** Whether to write through to colder tiers for durability */
|
|
514
|
+
writeThrough?: boolean
|
|
515
|
+
/** Number of consecutive failures before marking tier unavailable */
|
|
516
|
+
failureThreshold?: number
|
|
517
|
+
/** Time in ms before retrying unavailable tier */
|
|
518
|
+
recoveryTimeMs?: number
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
/**
|
|
522
|
+
* Interface for a tiered storage system combining multiple tiers.
|
|
523
|
+
*
|
|
524
|
+
* Provides unified access to data across hot, warm, and cold tiers
|
|
525
|
+
* with automatic promotion/demotion based on access patterns.
|
|
526
|
+
*
|
|
527
|
+
* @example
|
|
528
|
+
* ```typescript
|
|
529
|
+
* const storage: ITieredStorage = createMyTieredStorage(...)
|
|
530
|
+
*
|
|
531
|
+
* // Read from tiered storage (checks hot -> warm -> cold)
|
|
532
|
+
* const result = await storage.read('page-123')
|
|
533
|
+
* if (result.found) {
|
|
534
|
+
* console.log(`Found in ${result.tier} tier`)
|
|
535
|
+
* }
|
|
536
|
+
*
|
|
537
|
+
* // Write to storage (defaults to warm tier)
|
|
538
|
+
* await storage.write('page-456', data)
|
|
539
|
+
*
|
|
540
|
+
* // Manually promote hot data
|
|
541
|
+
* await storage.promoteToTier('page-456', 'hot')
|
|
542
|
+
* ```
|
|
543
|
+
*/
|
|
544
|
+
export interface ITieredStorage {
|
|
545
|
+
/**
|
|
546
|
+
* Read data from the tiered storage.
|
|
547
|
+
* Checks tiers in order: hot -> warm -> cold.
|
|
548
|
+
*
|
|
549
|
+
* @param key - The key to read
|
|
550
|
+
* @param options - Read options
|
|
551
|
+
* @returns Read result with data and tier location
|
|
552
|
+
*/
|
|
553
|
+
read(key: string, options?: StorageReadOptions): Promise<StorageReadResult>
|
|
554
|
+
|
|
555
|
+
/**
|
|
556
|
+
* Write data to the tiered storage.
|
|
557
|
+
*
|
|
558
|
+
* @param key - The key to write
|
|
559
|
+
* @param data - The data to write
|
|
560
|
+
* @param options - Write options
|
|
561
|
+
* @returns Write result
|
|
562
|
+
*/
|
|
563
|
+
write(key: string, data: Uint8Array, options?: StorageWriteOptions): Promise<StorageWriteResult>
|
|
564
|
+
|
|
565
|
+
/**
|
|
566
|
+
* Delete data from the tiered storage.
|
|
567
|
+
*
|
|
568
|
+
* @param key - The key to delete
|
|
569
|
+
* @param options - Delete options
|
|
570
|
+
* @returns Delete result
|
|
571
|
+
*/
|
|
572
|
+
delete(key: string, options?: StorageDeleteOptions): Promise<StorageDeleteResult>
|
|
573
|
+
|
|
574
|
+
/**
|
|
575
|
+
* Check which tier contains a key.
|
|
576
|
+
*
|
|
577
|
+
* @param key - The key to locate
|
|
578
|
+
* @returns Location information
|
|
579
|
+
*/
|
|
580
|
+
locate(key: string): Promise<StorageLocationInfo>
|
|
581
|
+
|
|
582
|
+
/**
|
|
583
|
+
* Manually promote data to a hotter tier.
|
|
584
|
+
*
|
|
585
|
+
* @param key - The key to promote
|
|
586
|
+
* @param targetTier - The target tier
|
|
587
|
+
*/
|
|
588
|
+
promoteToTier(key: string, targetTier: StorageTierName): Promise<void>
|
|
589
|
+
|
|
590
|
+
/**
|
|
591
|
+
* Manually demote data to a colder tier.
|
|
592
|
+
*
|
|
593
|
+
* @param key - The key to demote
|
|
594
|
+
* @param targetTier - The target tier
|
|
595
|
+
*/
|
|
596
|
+
demoteToTier(key: string, targetTier: StorageTierName): Promise<void>
|
|
597
|
+
|
|
598
|
+
/**
|
|
599
|
+
* Get health status for all tiers.
|
|
600
|
+
*/
|
|
601
|
+
getTierHealth(): Record<StorageTierName, TierHealthInfo>
|
|
602
|
+
|
|
603
|
+
/**
|
|
604
|
+
* Reset health status for a specific tier.
|
|
605
|
+
*/
|
|
606
|
+
resetTierHealth(tier: StorageTierName): void
|
|
607
|
+
|
|
608
|
+
/**
|
|
609
|
+
* Get combined statistics from all tiers.
|
|
610
|
+
*/
|
|
611
|
+
getStats(): TieredStorageStats
|
|
612
|
+
|
|
613
|
+
/**
|
|
614
|
+
* Reset all statistics.
|
|
615
|
+
*/
|
|
616
|
+
resetStats(): void
|
|
617
|
+
|
|
618
|
+
/**
|
|
619
|
+
* Register a callback for tier migration events.
|
|
620
|
+
*/
|
|
621
|
+
onMigration?(callback: TierMigrationCallback): void
|
|
622
|
+
|
|
623
|
+
/**
|
|
624
|
+
* Register a callback for tier failure events.
|
|
625
|
+
*/
|
|
626
|
+
onTierFailure?(callback: TierFailureCallback): void
|
|
627
|
+
|
|
628
|
+
/**
|
|
629
|
+
* Get access to individual tier implementations.
|
|
630
|
+
*/
|
|
631
|
+
getTier?(tier: StorageTierName): IStorageTier | undefined
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
/**
|
|
635
|
+
* Combined statistics from all tiers.
|
|
636
|
+
*/
|
|
637
|
+
export interface TieredStorageStats {
|
|
638
|
+
/** Statistics per tier */
|
|
639
|
+
tiers: Record<StorageTierName, TierStats>
|
|
640
|
+
/** Promotion statistics */
|
|
641
|
+
promotions: {
|
|
642
|
+
coldToWarm: number
|
|
643
|
+
warmToHot: number
|
|
644
|
+
}
|
|
645
|
+
/** Demotion statistics */
|
|
646
|
+
demotions: {
|
|
647
|
+
hotToWarm: number
|
|
648
|
+
warmToCold: number
|
|
649
|
+
}
|
|
650
|
+
/** Health status per tier */
|
|
651
|
+
health: Record<StorageTierName, TierHealthInfo>
|
|
652
|
+
/** Total operations across all tiers */
|
|
653
|
+
totals: {
|
|
654
|
+
reads: number
|
|
655
|
+
writes: number
|
|
656
|
+
deletes: number
|
|
657
|
+
bytesRead: number
|
|
658
|
+
bytesWritten: number
|
|
659
|
+
errors: number
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
// =============================================================================
|
|
664
|
+
// Storage Orchestrator Interface
|
|
665
|
+
// =============================================================================
|
|
666
|
+
|
|
667
|
+
/**
|
|
668
|
+
* Circuit breaker state for a tier.
|
|
669
|
+
*/
|
|
670
|
+
export type CircuitBreakerState = 'closed' | 'open' | 'half-open'
|
|
671
|
+
|
|
672
|
+
/**
|
|
673
|
+
* Circuit breaker configuration.
|
|
674
|
+
*/
|
|
675
|
+
export interface CircuitBreakerConfig {
|
|
676
|
+
/** Whether circuit breaker is enabled */
|
|
677
|
+
enabled: boolean
|
|
678
|
+
/** Number of failures before opening circuit */
|
|
679
|
+
failureThreshold: number
|
|
680
|
+
/** Time in ms before attempting half-open */
|
|
681
|
+
resetTimeoutMs?: number
|
|
682
|
+
/** Whether to use fallback on open circuit */
|
|
683
|
+
fallbackEnabled?: boolean
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
/**
|
|
687
|
+
* Circuit breaker state information.
|
|
688
|
+
*/
|
|
689
|
+
export interface CircuitBreakerInfo {
|
|
690
|
+
/** Current state */
|
|
691
|
+
state: CircuitBreakerState
|
|
692
|
+
/** Number of failures */
|
|
693
|
+
failures: number
|
|
694
|
+
/** Timestamp of last failure */
|
|
695
|
+
lastFailure?: number
|
|
696
|
+
/** Timestamp of last success */
|
|
697
|
+
lastSuccess?: number
|
|
698
|
+
/** Timestamp when circuit was opened */
|
|
699
|
+
openedAt?: number
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
/**
|
|
703
|
+
* Entry in the storage index tracking data locations.
|
|
704
|
+
*/
|
|
705
|
+
export interface StorageIndexEntry {
|
|
706
|
+
/** The key */
|
|
707
|
+
key: string
|
|
708
|
+
/** The tier where data is stored */
|
|
709
|
+
tier: StorageTierName
|
|
710
|
+
/** Size in bytes */
|
|
711
|
+
size: number
|
|
712
|
+
/** Last access timestamp */
|
|
713
|
+
lastAccess: number
|
|
714
|
+
/** Total access count */
|
|
715
|
+
accessCount: number
|
|
716
|
+
/** Creation timestamp */
|
|
717
|
+
created: number
|
|
718
|
+
/** Last modified timestamp */
|
|
719
|
+
modified: number
|
|
720
|
+
/** Whether the entry has uncommitted changes */
|
|
721
|
+
dirty: boolean
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
/**
|
|
725
|
+
* Configuration for storage orchestrator.
|
|
726
|
+
*/
|
|
727
|
+
export interface StorageOrchestratorConfig extends TieredStorageConfig {
|
|
728
|
+
/** Circuit breaker configuration */
|
|
729
|
+
circuitBreaker?: CircuitBreakerConfig
|
|
730
|
+
/** Maximum entries in storage index */
|
|
731
|
+
maxIndexEntries?: number
|
|
732
|
+
/** Maximum memory for storage index (bytes) */
|
|
733
|
+
maxIndexMemoryBytes?: number
|
|
734
|
+
/** Index eviction policy */
|
|
735
|
+
indexEvictionPolicy?: 'lru' | 'lfu' | 'fifo'
|
|
736
|
+
/** Batch size for index eviction */
|
|
737
|
+
indexEvictionBatchSize?: number
|
|
738
|
+
/** Prefix for storage keys */
|
|
739
|
+
keyPrefix?: string
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
/**
|
|
743
|
+
* Interface for the storage orchestrator.
|
|
744
|
+
*
|
|
745
|
+
* The orchestrator provides advanced features beyond basic tiered storage:
|
|
746
|
+
* - Storage index for fast tier location lookups
|
|
747
|
+
* - Circuit breakers for tier failure isolation
|
|
748
|
+
* - DO lifecycle hooks (hibernate/wake)
|
|
749
|
+
* - Alarm scheduling for background tasks
|
|
750
|
+
* - Cost tracking and optimization
|
|
751
|
+
*/
|
|
752
|
+
export interface IStorageOrchestrator extends ITieredStorage {
|
|
753
|
+
/**
|
|
754
|
+
* Get the storage index entry for a key.
|
|
755
|
+
*/
|
|
756
|
+
getIndexEntry(key: string): StorageIndexEntry | undefined
|
|
757
|
+
|
|
758
|
+
/**
|
|
759
|
+
* Get all storage index entries.
|
|
760
|
+
*/
|
|
761
|
+
getIndex(): Map<string, StorageIndexEntry>
|
|
762
|
+
|
|
763
|
+
/**
|
|
764
|
+
* Get circuit breaker state for all tiers.
|
|
765
|
+
*/
|
|
766
|
+
getCircuitBreakerStates(): Record<StorageTierName, CircuitBreakerInfo>
|
|
767
|
+
|
|
768
|
+
/**
|
|
769
|
+
* Manually reset circuit breaker for a tier.
|
|
770
|
+
*/
|
|
771
|
+
resetCircuitBreaker(tier: StorageTierName): void
|
|
772
|
+
|
|
773
|
+
/**
|
|
774
|
+
* Prepare for hibernation (DO lifecycle).
|
|
775
|
+
* Persists hot tier data and returns state for restoration.
|
|
776
|
+
*/
|
|
777
|
+
hibernate?(): Promise<HibernateState>
|
|
778
|
+
|
|
779
|
+
/**
|
|
780
|
+
* Wake from hibernation (DO lifecycle).
|
|
781
|
+
* Restores state from previous hibernation.
|
|
782
|
+
*/
|
|
783
|
+
wake?(state: HibernateState, options?: WakeOptions): Promise<WakeResult>
|
|
784
|
+
|
|
785
|
+
/**
|
|
786
|
+
* Handle scheduled alarm (DO lifecycle).
|
|
787
|
+
*/
|
|
788
|
+
handleAlarm?(): Promise<AlarmResult>
|
|
789
|
+
|
|
790
|
+
/**
|
|
791
|
+
* Schedule an alarm for background tasks.
|
|
792
|
+
*/
|
|
793
|
+
scheduleAlarm?(config: AlarmConfig): Promise<void>
|
|
794
|
+
|
|
795
|
+
/**
|
|
796
|
+
* Get estimated storage costs.
|
|
797
|
+
*/
|
|
798
|
+
getEstimatedCosts?(): StorageCostEstimate
|
|
799
|
+
|
|
800
|
+
/**
|
|
801
|
+
* Run index maintenance (cleanup, eviction).
|
|
802
|
+
*/
|
|
803
|
+
runMaintenance?(): Promise<MaintenanceResult>
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
/**
|
|
807
|
+
* State to persist during hibernation.
|
|
808
|
+
*/
|
|
809
|
+
export interface HibernateState {
|
|
810
|
+
/** Keys in hot tier */
|
|
811
|
+
hotKeys: string[]
|
|
812
|
+
/** Snapshot of storage index */
|
|
813
|
+
indexSnapshot: Map<string, StorageIndexEntry>
|
|
814
|
+
/** Timestamp of hibernation */
|
|
815
|
+
timestamp: number
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
/**
|
|
819
|
+
* Options for wake operation.
|
|
820
|
+
*/
|
|
821
|
+
export interface WakeOptions {
|
|
822
|
+
/** Minimum access count to prefetch */
|
|
823
|
+
prefetchThreshold?: number
|
|
824
|
+
/** Whether to validate index against actual storage */
|
|
825
|
+
validateIndex?: boolean
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
/**
|
|
829
|
+
* Result of wake operation.
|
|
830
|
+
*/
|
|
831
|
+
export interface WakeResult {
|
|
832
|
+
/** Number of entries restored */
|
|
833
|
+
restoredCount: number
|
|
834
|
+
/** Number of entries prefetched to hot tier */
|
|
835
|
+
prefetchedCount: number
|
|
836
|
+
/** Whether index was validated */
|
|
837
|
+
indexValidated: boolean
|
|
838
|
+
/** Number of index repairs made */
|
|
839
|
+
indexRepairs: number
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
/**
|
|
843
|
+
* Type of alarm for background tasks.
|
|
844
|
+
*/
|
|
845
|
+
export type AlarmType = 'demotion' | 'sync' | 'maintenance'
|
|
846
|
+
|
|
847
|
+
/**
|
|
848
|
+
* Configuration for scheduling an alarm.
|
|
849
|
+
*/
|
|
850
|
+
export interface AlarmConfig {
|
|
851
|
+
/** Type of alarm */
|
|
852
|
+
type: AlarmType
|
|
853
|
+
/** Delay before alarm fires (ms) */
|
|
854
|
+
delayMs: number
|
|
855
|
+
/** Skip if an alarm is already scheduled */
|
|
856
|
+
skipIfExists?: boolean
|
|
857
|
+
/** Reschedule interval (ms) */
|
|
858
|
+
rescheduleMs?: number
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
/**
|
|
862
|
+
* Result of handling an alarm.
|
|
863
|
+
*/
|
|
864
|
+
export interface AlarmResult {
|
|
865
|
+
/** Number of entries demoted */
|
|
866
|
+
demotionCount?: number
|
|
867
|
+
/** Number of entries synced */
|
|
868
|
+
syncedCount?: number
|
|
869
|
+
/** Delay until next alarm (ms) */
|
|
870
|
+
nextAlarmMs?: number
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
/**
|
|
874
|
+
* Estimated storage costs.
|
|
875
|
+
*/
|
|
876
|
+
export interface StorageCostEstimate {
|
|
877
|
+
/** R2 storage cost (USD/month) */
|
|
878
|
+
r2: number
|
|
879
|
+
/** DO storage cost (USD/month) */
|
|
880
|
+
do: number
|
|
881
|
+
/** Cache API cost (always 0, it's free) */
|
|
882
|
+
cache: number
|
|
883
|
+
/** Total estimated cost (USD/month) */
|
|
884
|
+
total: number
|
|
885
|
+
/** Bytes stored per tier */
|
|
886
|
+
bytesPerTier: Record<StorageTierName, number>
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
/**
|
|
890
|
+
* Result of maintenance operation.
|
|
891
|
+
*/
|
|
892
|
+
export interface MaintenanceResult {
|
|
893
|
+
/** Number of expired entries removed */
|
|
894
|
+
expiredRemoved: number
|
|
895
|
+
/** Number of orphaned entries cleaned */
|
|
896
|
+
orphanedCleaned: number
|
|
897
|
+
/** Number of index entries evicted */
|
|
898
|
+
indexEvicted: number
|
|
899
|
+
/** Duration of maintenance (ms) */
|
|
900
|
+
durationMs: number
|
|
901
|
+
}
|
|
902
|
+
|
|
903
|
+
// =============================================================================
|
|
904
|
+
// VFS Interface
|
|
905
|
+
// =============================================================================
|
|
906
|
+
|
|
907
|
+
/**
|
|
908
|
+
* Virtual File System interface for PGLite integration.
|
|
909
|
+
*
|
|
910
|
+
* This simplified interface is used by PGLite for page I/O operations.
|
|
911
|
+
*/
|
|
912
|
+
export interface IVirtualFileSystem {
|
|
913
|
+
/**
|
|
914
|
+
* Read a page by ID.
|
|
915
|
+
*
|
|
916
|
+
* @param pageId - The page identifier
|
|
917
|
+
* @returns The page data or null if not found
|
|
918
|
+
*/
|
|
919
|
+
readPage(pageId: string): Promise<Uint8Array | null>
|
|
920
|
+
|
|
921
|
+
/**
|
|
922
|
+
* Write a page by ID.
|
|
923
|
+
*
|
|
924
|
+
* @param pageId - The page identifier
|
|
925
|
+
* @param data - The page data
|
|
926
|
+
*/
|
|
927
|
+
writePage(pageId: string, data: Uint8Array): Promise<void>
|
|
928
|
+
|
|
929
|
+
/**
|
|
930
|
+
* Delete a page by ID.
|
|
931
|
+
*
|
|
932
|
+
* @param pageId - The page identifier
|
|
933
|
+
*/
|
|
934
|
+
deletePage(pageId: string): Promise<void>
|
|
935
|
+
|
|
936
|
+
/**
|
|
937
|
+
* Get the page size.
|
|
938
|
+
*/
|
|
939
|
+
getPageSize(): number
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
// =============================================================================
|
|
943
|
+
// Factory Types
|
|
944
|
+
// =============================================================================
|
|
945
|
+
|
|
946
|
+
/**
|
|
947
|
+
* Factory function type for creating storage tiers.
|
|
948
|
+
*/
|
|
949
|
+
export type StorageTierFactory<T extends IStorageTier = IStorageTier> = (config: unknown) => T | Promise<T>
|
|
950
|
+
|
|
951
|
+
/**
|
|
952
|
+
* Registry of available storage tier implementations.
|
|
953
|
+
*/
|
|
954
|
+
export interface StorageTierRegistry {
|
|
955
|
+
/**
|
|
956
|
+
* Register a tier factory.
|
|
957
|
+
*/
|
|
958
|
+
register(name: string, factory: StorageTierFactory): void
|
|
959
|
+
|
|
960
|
+
/**
|
|
961
|
+
* Create a tier instance.
|
|
962
|
+
*/
|
|
963
|
+
create(name: string, config: unknown): Promise<IStorageTier>
|
|
964
|
+
|
|
965
|
+
/**
|
|
966
|
+
* Check if a tier type is registered.
|
|
967
|
+
*/
|
|
968
|
+
has(name: string): boolean
|
|
969
|
+
|
|
970
|
+
/**
|
|
971
|
+
* Get all registered tier names.
|
|
972
|
+
*/
|
|
973
|
+
getRegisteredNames(): string[]
|
|
974
|
+
}
|