@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,951 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TieredStorageOrchestrator - Unified Tiering System
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates the complete tiered storage system with:
|
|
5
|
+
* - HOT tier: Cloudflare Cache API (FREE, sync-fast)
|
|
6
|
+
* - WARM tier: Durable Object SQLite blobs (persistent, sync)
|
|
7
|
+
* - COLD tier: R2 object storage (cheap, async)
|
|
8
|
+
*
|
|
9
|
+
* ## Features
|
|
10
|
+
* - Unified read/write interface across all tiers
|
|
11
|
+
* - Automatic promotion based on access patterns
|
|
12
|
+
* - Automatic demotion based on TTL/LRU policies
|
|
13
|
+
* - Cost-optimized tier selection
|
|
14
|
+
* - Comprehensive statistics and monitoring
|
|
15
|
+
* - Storage index for fast tier location lookups
|
|
16
|
+
* - DO lifecycle hooks (hibernate/wake)
|
|
17
|
+
* - Circuit breaker pattern for tier failures
|
|
18
|
+
* - Integrated metrics aggregation
|
|
19
|
+
* - Bounded storage index with LRU/LFU eviction
|
|
20
|
+
* - Detailed performance metrics and memory tracking
|
|
21
|
+
*
|
|
22
|
+
* ## Performance Characteristics
|
|
23
|
+
*
|
|
24
|
+
* ### Storage Index Operations
|
|
25
|
+
*
|
|
26
|
+
* | Operation | Time Complexity | Typical Latency |
|
|
27
|
+
* |---------------|-----------------|-----------------|
|
|
28
|
+
* | Lookup (get) | O(1) average | 50-100ns |
|
|
29
|
+
* | Update (set) | O(1) amortized | 100-200ns |
|
|
30
|
+
* | Delete | O(1) | 50-100ns |
|
|
31
|
+
* | Eviction | O(n*k) | 1-10ms/batch |
|
|
32
|
+
* | Maintenance | O(n * storage) | 100ms-10s |
|
|
33
|
+
*
|
|
34
|
+
* Where:
|
|
35
|
+
* - n = total index entries
|
|
36
|
+
* - k = eviction batch size (typically 10-20)
|
|
37
|
+
*
|
|
38
|
+
* ### Memory Usage
|
|
39
|
+
*
|
|
40
|
+
* The storage index uses approximately:
|
|
41
|
+
* - 120 bytes per entry (base overhead)
|
|
42
|
+
* - 2 bytes per character in key (JS UTF-16 strings)
|
|
43
|
+
* - ~10% additional for Map internal structures
|
|
44
|
+
*
|
|
45
|
+
* **Example Memory Usage:**
|
|
46
|
+
* | Entries | Avg Key Length | Estimated Memory |
|
|
47
|
+
* |---------|----------------|------------------|
|
|
48
|
+
* | 1,000 | 20 chars | ~160 KB |
|
|
49
|
+
* | 10,000 | 20 chars | ~1.6 MB |
|
|
50
|
+
* | 100,000 | 20 chars | ~16 MB |
|
|
51
|
+
* | 10,000 | 100 chars | ~3.2 MB |
|
|
52
|
+
*
|
|
53
|
+
* ### Eviction Policies
|
|
54
|
+
*
|
|
55
|
+
* - **LRU (default)**: Evicts least recently accessed entries first.
|
|
56
|
+
* Best for: Most workloads with temporal locality.
|
|
57
|
+
*
|
|
58
|
+
* - **LFU**: Evicts least frequently accessed entries first.
|
|
59
|
+
* Best for: Workloads with stable hot sets.
|
|
60
|
+
*
|
|
61
|
+
* - **FIFO**: Evicts oldest entries by creation time.
|
|
62
|
+
* Best for: Predictable eviction patterns, debugging.
|
|
63
|
+
*
|
|
64
|
+
* ### Hot Path Optimizations
|
|
65
|
+
*
|
|
66
|
+
* 1. **Single-entry lookup cache**: Avoids redundant Map lookups when
|
|
67
|
+
* the same key is accessed multiple times in quick succession
|
|
68
|
+
* (e.g., read -> check promotion -> update index).
|
|
69
|
+
*
|
|
70
|
+
* 2. **Partial selection for eviction**: Uses O(n*k) partial selection
|
|
71
|
+
* instead of O(n log n) full sort when evicting k entries from n.
|
|
72
|
+
*
|
|
73
|
+
* 3. **Batch eviction**: Amortizes eviction overhead across multiple
|
|
74
|
+
* entries (configurable via indexEvictionBatchSize).
|
|
75
|
+
*
|
|
76
|
+
* ### Configuration Guidelines
|
|
77
|
+
*
|
|
78
|
+
* For Cloudflare Workers (128MB limit):
|
|
79
|
+
* ```typescript
|
|
80
|
+
* const orchestrator = createTieredStorageOrchestrator({
|
|
81
|
+
* // ... other config
|
|
82
|
+
* maxIndexEntries: 50000, // ~8MB for 20-char keys
|
|
83
|
+
* maxIndexMemoryBytes: 8 * 1024 * 1024, // 8MB hard limit
|
|
84
|
+
* indexEvictionPolicy: 'lru',
|
|
85
|
+
* indexEvictionBatchSize: 100, // Evict 100 at a time
|
|
86
|
+
* indexMemoryWarningThreshold: 0.8, // Warn at 80%
|
|
87
|
+
* })
|
|
88
|
+
* ```
|
|
89
|
+
*
|
|
90
|
+
* @module storage/tiered-orchestrator
|
|
91
|
+
*/
|
|
92
|
+
import type { CacheLayer, CacheLayerStats } from './cache-layer';
|
|
93
|
+
import type { R2StorageLayer, R2StorageLayerStats } from './r2-layer';
|
|
94
|
+
import type { SWRCacheLayer, SWRCacheStats, ExecutionContext } from './swr-cache';
|
|
95
|
+
/**
|
|
96
|
+
* Storage tier identifiers
|
|
97
|
+
* - hot: Cloudflare Cache API (FREE, fastest, ephemeral)
|
|
98
|
+
* - warm: Durable Object Storage (fast, persistent, limited)
|
|
99
|
+
* - cold: R2 (durable, unlimited, slower)
|
|
100
|
+
*/
|
|
101
|
+
export type StorageTier = 'hot' | 'warm' | 'cold';
|
|
102
|
+
/**
|
|
103
|
+
* Tier health status
|
|
104
|
+
*/
|
|
105
|
+
export type TierHealth = 'healthy' | 'degraded' | 'unavailable';
|
|
106
|
+
/**
|
|
107
|
+
* Circuit breaker state
|
|
108
|
+
*/
|
|
109
|
+
export type CircuitBreakerState = 'closed' | 'open' | 'half-open';
|
|
110
|
+
/**
|
|
111
|
+
* Circuit breaker configuration
|
|
112
|
+
*/
|
|
113
|
+
export interface CircuitBreakerConfig {
|
|
114
|
+
enabled: boolean;
|
|
115
|
+
failureThreshold: number;
|
|
116
|
+
resetTimeoutMs?: number;
|
|
117
|
+
fallbackEnabled?: boolean;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Circuit breaker state info
|
|
121
|
+
*/
|
|
122
|
+
export interface CircuitBreakerStateInfo {
|
|
123
|
+
state: CircuitBreakerState;
|
|
124
|
+
failures: number;
|
|
125
|
+
lastFailure?: number;
|
|
126
|
+
lastSuccess?: number;
|
|
127
|
+
openedAt?: number;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Entry in the storage index tracking data locations
|
|
131
|
+
*/
|
|
132
|
+
export interface StorageIndexEntry {
|
|
133
|
+
key: string;
|
|
134
|
+
tier: StorageTier;
|
|
135
|
+
size: number;
|
|
136
|
+
lastAccess: number;
|
|
137
|
+
accessCount: number;
|
|
138
|
+
created: number;
|
|
139
|
+
modified: number;
|
|
140
|
+
dirty: boolean;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Hibernate state for DO lifecycle
|
|
144
|
+
*/
|
|
145
|
+
export interface HibernateState {
|
|
146
|
+
hotKeys: string[];
|
|
147
|
+
indexSnapshot: Map<string, StorageIndexEntry>;
|
|
148
|
+
timestamp: number;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Result of hibernate operation
|
|
152
|
+
*/
|
|
153
|
+
export interface HibernateResult {
|
|
154
|
+
success: boolean;
|
|
155
|
+
persistedCount: number;
|
|
156
|
+
syncedToCold: number;
|
|
157
|
+
hotKeys: string[];
|
|
158
|
+
indexSnapshot: Map<string, StorageIndexEntry>;
|
|
159
|
+
timestamp: number;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Options for wake operation
|
|
163
|
+
*/
|
|
164
|
+
export interface WakeOptions {
|
|
165
|
+
prefetchThreshold?: number;
|
|
166
|
+
validateIndex?: boolean;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Result of wake operation
|
|
170
|
+
*/
|
|
171
|
+
export interface WakeResult {
|
|
172
|
+
restoredCount: number;
|
|
173
|
+
prefetchedCount: number;
|
|
174
|
+
indexValidated: boolean;
|
|
175
|
+
indexRepairs: number;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Alarm task type
|
|
179
|
+
*/
|
|
180
|
+
export type AlarmType = 'demotion' | 'sync';
|
|
181
|
+
/**
|
|
182
|
+
* Alarm configuration
|
|
183
|
+
*/
|
|
184
|
+
export interface AlarmConfig {
|
|
185
|
+
type: AlarmType;
|
|
186
|
+
delayMs: number;
|
|
187
|
+
skipIfExists?: boolean;
|
|
188
|
+
rescheduleMs?: number;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Result of alarm handling
|
|
192
|
+
*/
|
|
193
|
+
export interface AlarmResult {
|
|
194
|
+
demotionCount?: number;
|
|
195
|
+
syncedCount?: number;
|
|
196
|
+
nextAlarmMs?: number;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Aggregated metrics from all components
|
|
200
|
+
*/
|
|
201
|
+
export interface AggregatedMetrics {
|
|
202
|
+
timestamp: number;
|
|
203
|
+
period: string;
|
|
204
|
+
tiers: {
|
|
205
|
+
hot: {
|
|
206
|
+
reads: number;
|
|
207
|
+
writes: number;
|
|
208
|
+
hitRatio: number;
|
|
209
|
+
bytesRead: number;
|
|
210
|
+
bytesWritten: number;
|
|
211
|
+
};
|
|
212
|
+
warm: {
|
|
213
|
+
reads: number;
|
|
214
|
+
writes: number;
|
|
215
|
+
bytesStored: number;
|
|
216
|
+
bytesRead: number;
|
|
217
|
+
bytesWritten: number;
|
|
218
|
+
};
|
|
219
|
+
cold: {
|
|
220
|
+
reads: number;
|
|
221
|
+
writes: number;
|
|
222
|
+
bytesStored: number;
|
|
223
|
+
bytesRead: number;
|
|
224
|
+
bytesWritten: number;
|
|
225
|
+
};
|
|
226
|
+
};
|
|
227
|
+
migrations: {
|
|
228
|
+
promotions: number;
|
|
229
|
+
demotions: number;
|
|
230
|
+
failures: number;
|
|
231
|
+
};
|
|
232
|
+
circuitBreakers: Record<StorageTier, CircuitBreakerStateInfo>;
|
|
233
|
+
latency?: {
|
|
234
|
+
p50: number;
|
|
235
|
+
p95: number;
|
|
236
|
+
p99: number;
|
|
237
|
+
};
|
|
238
|
+
estimatedCost?: {
|
|
239
|
+
r2: number;
|
|
240
|
+
do: number;
|
|
241
|
+
cache: number;
|
|
242
|
+
total: number;
|
|
243
|
+
};
|
|
244
|
+
errors: {
|
|
245
|
+
totalErrors: number;
|
|
246
|
+
byTier: Record<StorageTier, number>;
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Auto-promoter configuration
|
|
251
|
+
*/
|
|
252
|
+
export interface AutoPromoterConfig {
|
|
253
|
+
coldToWarm: {
|
|
254
|
+
accessThreshold: number;
|
|
255
|
+
timeWindowMs?: number;
|
|
256
|
+
};
|
|
257
|
+
warmToHot: {
|
|
258
|
+
accessThreshold: number;
|
|
259
|
+
timeWindowMs?: number;
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Auto-demoter configuration
|
|
264
|
+
*/
|
|
265
|
+
export interface AutoDemoterConfig {
|
|
266
|
+
hotToWarm: {
|
|
267
|
+
ttlMs: number;
|
|
268
|
+
maxEntries?: number;
|
|
269
|
+
};
|
|
270
|
+
warmToCold: {
|
|
271
|
+
ttlMs: number;
|
|
272
|
+
maxEntries?: number;
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* VFS interface for PGLite integration
|
|
277
|
+
*/
|
|
278
|
+
export interface VFSInterface {
|
|
279
|
+
readPage: (pageId: string) => Promise<Uint8Array | null>;
|
|
280
|
+
writePage: (pageId: string, data: Uint8Array) => Promise<void>;
|
|
281
|
+
deletePage: (pageId: string) => Promise<void>;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Metrics configuration
|
|
285
|
+
*/
|
|
286
|
+
export interface MetricsConfig {
|
|
287
|
+
trackLatency?: boolean;
|
|
288
|
+
trackCost?: boolean;
|
|
289
|
+
costConfig?: {
|
|
290
|
+
r2StoragePerGBMonth: number;
|
|
291
|
+
r2ClassAOperations: number;
|
|
292
|
+
r2ClassBOperations: number;
|
|
293
|
+
doStoragePerGBMonth: number;
|
|
294
|
+
cacheOperations: number;
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Observable error with context
|
|
299
|
+
*/
|
|
300
|
+
export interface ObservableError {
|
|
301
|
+
context: string;
|
|
302
|
+
error: Error;
|
|
303
|
+
tier?: StorageTier;
|
|
304
|
+
key?: string;
|
|
305
|
+
timestamp: number;
|
|
306
|
+
retryCount?: number;
|
|
307
|
+
correlationId?: string;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Error observer callback type
|
|
311
|
+
*/
|
|
312
|
+
export type ErrorObserver = (error: ObservableError) => void;
|
|
313
|
+
/**
|
|
314
|
+
* Circuit breaker change event
|
|
315
|
+
*/
|
|
316
|
+
export interface CircuitBreakerChangeEvent {
|
|
317
|
+
tier: StorageTier;
|
|
318
|
+
state: CircuitBreakerState;
|
|
319
|
+
failures: number;
|
|
320
|
+
error?: Error | undefined;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Circuit breaker change observer callback type
|
|
324
|
+
*/
|
|
325
|
+
export type CircuitBreakerChangeObserver = (event: CircuitBreakerChangeEvent) => void;
|
|
326
|
+
/**
|
|
327
|
+
* Logger interface for debug logging
|
|
328
|
+
*/
|
|
329
|
+
export interface Logger {
|
|
330
|
+
debug: (msg: string) => void;
|
|
331
|
+
info: (msg: string) => void;
|
|
332
|
+
warn: (msg: string) => void;
|
|
333
|
+
error: (msg: string) => void;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Demotion strategy function
|
|
337
|
+
*/
|
|
338
|
+
export type DemotionStrategy = (entries: StorageIndexEntry[], count: number) => string[];
|
|
339
|
+
/**
|
|
340
|
+
* Index eviction policy
|
|
341
|
+
*/
|
|
342
|
+
export type IndexEvictionPolicy = 'lru' | 'lfu' | 'fifo';
|
|
343
|
+
/**
|
|
344
|
+
* Callback for index eviction events
|
|
345
|
+
*/
|
|
346
|
+
export type IndexEvictionCallback = (evictedKeys: string[]) => void;
|
|
347
|
+
/**
|
|
348
|
+
* Configuration for the TieredStorageOrchestrator
|
|
349
|
+
*/
|
|
350
|
+
export interface TieredOrchestratorConfig {
|
|
351
|
+
cacheLayer?: CacheLayer;
|
|
352
|
+
swrCacheLayer?: SWRCacheLayer;
|
|
353
|
+
doStorage: DurableObjectStorage;
|
|
354
|
+
r2Layer: R2StorageLayer;
|
|
355
|
+
pageSize?: number;
|
|
356
|
+
coldToWarmThreshold?: number;
|
|
357
|
+
warmToHotThreshold?: number;
|
|
358
|
+
promotionWindowMs?: number;
|
|
359
|
+
hotTtlMs?: number;
|
|
360
|
+
warmTtlMs?: number;
|
|
361
|
+
maxHotPages?: number;
|
|
362
|
+
autoPromote?: boolean;
|
|
363
|
+
autoDemote?: boolean;
|
|
364
|
+
writeThrough?: boolean;
|
|
365
|
+
doPrefix?: string;
|
|
366
|
+
circuitBreaker?: CircuitBreakerConfig;
|
|
367
|
+
metrics?: MetricsConfig;
|
|
368
|
+
logger?: Logger;
|
|
369
|
+
maxIndexEntries?: number;
|
|
370
|
+
maxIndexMemoryBytes?: number;
|
|
371
|
+
indexEvictionPolicy?: IndexEvictionPolicy;
|
|
372
|
+
indexEvictionBatchSize?: number;
|
|
373
|
+
indexMemoryWarningThreshold?: number;
|
|
374
|
+
indexMaintenanceIntervalMs?: number;
|
|
375
|
+
onIndexEviction?: IndexEvictionCallback;
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Options for read operations
|
|
379
|
+
*/
|
|
380
|
+
export interface ReadOptions {
|
|
381
|
+
skipPromotion?: boolean;
|
|
382
|
+
skipTracking?: boolean;
|
|
383
|
+
ctx?: ExecutionContext;
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Options for write operations
|
|
387
|
+
*/
|
|
388
|
+
export interface WriteOptions {
|
|
389
|
+
tier?: StorageTier;
|
|
390
|
+
metadata?: Record<string, string>;
|
|
391
|
+
writeThrough?: boolean;
|
|
392
|
+
skipIndex?: boolean;
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Result of a read operation with tier information
|
|
396
|
+
*/
|
|
397
|
+
export interface ReadResult {
|
|
398
|
+
data: Uint8Array | null;
|
|
399
|
+
tier?: StorageTier | undefined;
|
|
400
|
+
stale?: boolean | undefined;
|
|
401
|
+
revalidating?: boolean | undefined;
|
|
402
|
+
fallback?: boolean | undefined;
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Promotion/demotion event
|
|
406
|
+
*/
|
|
407
|
+
export interface TierMigrationEvent {
|
|
408
|
+
key: string;
|
|
409
|
+
fromTier: StorageTier;
|
|
410
|
+
toTier: StorageTier;
|
|
411
|
+
success: boolean;
|
|
412
|
+
timestamp: number;
|
|
413
|
+
error?: string;
|
|
414
|
+
reason: 'access_pattern' | 'ttl_expired' | 'lru_eviction' | 'manual' | 'write_through';
|
|
415
|
+
}
|
|
416
|
+
export type TierMigrationCallback = (event: TierMigrationEvent) => void;
|
|
417
|
+
/**
|
|
418
|
+
* Performance metrics for index operations
|
|
419
|
+
*
|
|
420
|
+
* Tracks timing and operation counts for performance analysis:
|
|
421
|
+
* - lookupCount: Total number of index lookups (get operations)
|
|
422
|
+
* - updateCount: Total number of index updates (set/modify operations)
|
|
423
|
+
* - evictionCount: Total number of entries evicted
|
|
424
|
+
* - avgLookupTimeNs: Average lookup time in nanoseconds
|
|
425
|
+
* - avgUpdateTimeNs: Average update time in nanoseconds
|
|
426
|
+
* - evictionTimeNs: Total time spent on eviction in nanoseconds
|
|
427
|
+
* - maintenanceTimeNs: Total time spent on maintenance in nanoseconds
|
|
428
|
+
* - peakEntries: Peak number of entries observed
|
|
429
|
+
* - peakMemoryBytes: Peak memory usage observed
|
|
430
|
+
*/
|
|
431
|
+
export interface IndexPerformanceMetrics {
|
|
432
|
+
lookupCount: number;
|
|
433
|
+
updateCount: number;
|
|
434
|
+
evictionCount: number;
|
|
435
|
+
totalLookupTimeNs: number;
|
|
436
|
+
totalUpdateTimeNs: number;
|
|
437
|
+
totalEvictionTimeNs: number;
|
|
438
|
+
totalMaintenanceTimeNs: number;
|
|
439
|
+
avgLookupTimeNs: number;
|
|
440
|
+
avgUpdateTimeNs: number;
|
|
441
|
+
peakEntries: number;
|
|
442
|
+
peakMemoryBytes: number;
|
|
443
|
+
evictionBatches: number;
|
|
444
|
+
entriesPerEvictionBatch: number;
|
|
445
|
+
cacheHitCount: number;
|
|
446
|
+
cacheMissCount: number;
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Statistics for the orchestrator
|
|
450
|
+
*/
|
|
451
|
+
export interface OrchestratorStats {
|
|
452
|
+
index: {
|
|
453
|
+
totalEntries: number;
|
|
454
|
+
byTier: Record<StorageTier, number>;
|
|
455
|
+
totalSize: number;
|
|
456
|
+
dirtyEntries: number;
|
|
457
|
+
memoryBytes: number;
|
|
458
|
+
/** Performance metrics for index operations */
|
|
459
|
+
performance: IndexPerformanceMetrics;
|
|
460
|
+
};
|
|
461
|
+
hot: CacheLayerStats | SWRCacheStats;
|
|
462
|
+
warm: {
|
|
463
|
+
reads: number;
|
|
464
|
+
writes: number;
|
|
465
|
+
deletes: number;
|
|
466
|
+
bytesRead: number;
|
|
467
|
+
bytesWritten: number;
|
|
468
|
+
};
|
|
469
|
+
cold: R2StorageLayerStats;
|
|
470
|
+
promotions: {
|
|
471
|
+
coldToWarm: number;
|
|
472
|
+
warmToHot: number;
|
|
473
|
+
failed: number;
|
|
474
|
+
};
|
|
475
|
+
demotions: {
|
|
476
|
+
hotToWarm: number;
|
|
477
|
+
warmToCold: number;
|
|
478
|
+
failed: number;
|
|
479
|
+
};
|
|
480
|
+
health: Record<StorageTier, TierHealth>;
|
|
481
|
+
errors: Record<StorageTier, number>;
|
|
482
|
+
}
|
|
483
|
+
interface InternalConfig {
|
|
484
|
+
pageSize: number;
|
|
485
|
+
coldToWarmThreshold: number;
|
|
486
|
+
warmToHotThreshold: number;
|
|
487
|
+
promotionWindowMs: number;
|
|
488
|
+
hotTtlMs: number;
|
|
489
|
+
warmTtlMs: number;
|
|
490
|
+
maxHotPages: number;
|
|
491
|
+
autoPromote: boolean;
|
|
492
|
+
autoDemote: boolean;
|
|
493
|
+
writeThrough: boolean;
|
|
494
|
+
doPrefix: string;
|
|
495
|
+
circuitBreaker?: CircuitBreakerConfig | undefined;
|
|
496
|
+
metrics?: MetricsConfig | undefined;
|
|
497
|
+
logger?: Logger | undefined;
|
|
498
|
+
maxIndexEntries?: number | undefined;
|
|
499
|
+
maxIndexMemoryBytes?: number | undefined;
|
|
500
|
+
indexEvictionPolicy: IndexEvictionPolicy;
|
|
501
|
+
indexEvictionBatchSize: number;
|
|
502
|
+
indexMemoryWarningThreshold: number;
|
|
503
|
+
indexMaintenanceIntervalMs?: number | undefined;
|
|
504
|
+
onIndexEviction?: IndexEvictionCallback | undefined;
|
|
505
|
+
}
|
|
506
|
+
/**
|
|
507
|
+
* TieredStorageOrchestrator - Unified Tiering System
|
|
508
|
+
*
|
|
509
|
+
* ## Performance Characteristics
|
|
510
|
+
*
|
|
511
|
+
* ### Index Operations
|
|
512
|
+
* - **Lookup (get)**: O(1) average via Map, ~50-100ns typical
|
|
513
|
+
* - **Update (set/modify)**: O(1) average for existing keys, O(1) amortized for new keys
|
|
514
|
+
* - **Eviction**: O(n*k) where n=index size, k=batch size; optimized for k << n
|
|
515
|
+
*
|
|
516
|
+
* ### Memory Usage
|
|
517
|
+
* - **Per-entry overhead**: ~120 bytes base + 2 bytes per character in key
|
|
518
|
+
* - **Example**: 10,000 entries with 20-char keys = ~1.6MB
|
|
519
|
+
* - **Warning threshold**: Configurable, default 80% of maxIndexMemoryBytes
|
|
520
|
+
*
|
|
521
|
+
* ### Eviction Policies
|
|
522
|
+
* - **LRU (default)**: Evicts least recently accessed entries
|
|
523
|
+
* - **LFU**: Evicts least frequently accessed entries
|
|
524
|
+
* - **FIFO**: Evicts oldest entries by creation time
|
|
525
|
+
*
|
|
526
|
+
* ### Hot Path Optimizations
|
|
527
|
+
* - Index entry caching for repeated lookups within promotion checks
|
|
528
|
+
* - Batch eviction to amortize overhead across multiple entries
|
|
529
|
+
* - Partial selection algorithm for eviction (avoids full sort when k << n)
|
|
530
|
+
*
|
|
531
|
+
* @class TieredStorageOrchestrator
|
|
532
|
+
*/
|
|
533
|
+
export declare class TieredStorageOrchestrator {
|
|
534
|
+
private cacheLayer?;
|
|
535
|
+
private swrCacheLayer?;
|
|
536
|
+
private doStorage;
|
|
537
|
+
private r2Layer;
|
|
538
|
+
private config;
|
|
539
|
+
private storageIndex;
|
|
540
|
+
private indexMemoryBytes;
|
|
541
|
+
private maintenanceTimer?;
|
|
542
|
+
private memoryWarningEmitted;
|
|
543
|
+
/**
|
|
544
|
+
* Estimated memory per index entry (key string avg ~20 chars + StorageIndexEntry object)
|
|
545
|
+
*
|
|
546
|
+
* Breakdown:
|
|
547
|
+
* - Map entry overhead: ~40 bytes (key reference + value reference + internal structure)
|
|
548
|
+
* - StorageIndexEntry object: ~80 bytes (8 bytes per field * 9 fields + object overhead)
|
|
549
|
+
* - Total base: ~120 bytes per entry
|
|
550
|
+
* - Key string: 2 bytes per character (JS strings are UTF-16)
|
|
551
|
+
*/
|
|
552
|
+
private static readonly ENTRY_MEMORY_OVERHEAD;
|
|
553
|
+
private performanceMetrics;
|
|
554
|
+
private lastLookupKey;
|
|
555
|
+
private lastLookupEntry;
|
|
556
|
+
private warmStats;
|
|
557
|
+
private promotionStats;
|
|
558
|
+
private demotionStats;
|
|
559
|
+
private tierHealth;
|
|
560
|
+
private circuitBreakers;
|
|
561
|
+
private latencyMeasurements;
|
|
562
|
+
private demotionStrategies;
|
|
563
|
+
private autoPromoterConfig;
|
|
564
|
+
private autoDemoterConfig;
|
|
565
|
+
private migrationCallbacks;
|
|
566
|
+
private errorObservers;
|
|
567
|
+
private circuitBreakerObservers;
|
|
568
|
+
private errorCounts;
|
|
569
|
+
private keyRetryCounters;
|
|
570
|
+
private correlationCounter;
|
|
571
|
+
private eventSubscribers;
|
|
572
|
+
private entryPriorities;
|
|
573
|
+
private pinnedEntries;
|
|
574
|
+
private memoryLimits;
|
|
575
|
+
constructor(config: TieredOrchestratorConfig);
|
|
576
|
+
onMigration(callback: TierMigrationCallback): void;
|
|
577
|
+
onError(callback: ErrorObserver): void;
|
|
578
|
+
onCircuitBreakerChange(callback: CircuitBreakerChangeObserver): void;
|
|
579
|
+
private notifyError;
|
|
580
|
+
private notifyCircuitBreakerChange;
|
|
581
|
+
private notifyMigration;
|
|
582
|
+
private doKey;
|
|
583
|
+
/**
|
|
584
|
+
* High-resolution timer for performance measurement
|
|
585
|
+
* Uses performance.now() when available, falls back to Date.now() * 1e6
|
|
586
|
+
*/
|
|
587
|
+
private getNowNs;
|
|
588
|
+
/**
|
|
589
|
+
* Update the storage index with entry information
|
|
590
|
+
*
|
|
591
|
+
* Performance characteristics:
|
|
592
|
+
* - O(1) for existing keys (direct Map update)
|
|
593
|
+
* - O(1) amortized for new keys (may trigger eviction)
|
|
594
|
+
* - Tracks timing for performance metrics
|
|
595
|
+
*
|
|
596
|
+
* @param key - The storage key
|
|
597
|
+
* @param tier - The storage tier where data resides
|
|
598
|
+
* @param size - Size of the data in bytes
|
|
599
|
+
* @param dirty - Whether the entry has uncommitted changes
|
|
600
|
+
*/
|
|
601
|
+
private updateIndex;
|
|
602
|
+
/**
|
|
603
|
+
* Enforce index bounds by evicting entries if necessary
|
|
604
|
+
*/
|
|
605
|
+
private enforceIndexBounds;
|
|
606
|
+
/**
|
|
607
|
+
* Select the k entries with the smallest scores (partial selection)
|
|
608
|
+
*
|
|
609
|
+
* Uses a simple O(n*k) algorithm which is efficient when k << n.
|
|
610
|
+
* For large k values, this degrades gracefully but still avoids
|
|
611
|
+
* the memory overhead of creating and sorting a full array copy.
|
|
612
|
+
*/
|
|
613
|
+
private selectSmallestEntries;
|
|
614
|
+
/**
|
|
615
|
+
* Evict entries from the index based on configured policy
|
|
616
|
+
*
|
|
617
|
+
* ## Performance Characteristics
|
|
618
|
+
*
|
|
619
|
+
* **Time Complexity**: O(n*k) where n=index size, k=entries to evict
|
|
620
|
+
* - Uses partial selection instead of full sort O(n log n)
|
|
621
|
+
* - Efficient when k << n (typical case: k=10-20, n=10000+)
|
|
622
|
+
*
|
|
623
|
+
* **Space Complexity**: O(k) for the result buffer
|
|
624
|
+
* - Does not create intermediate arrays of size n
|
|
625
|
+
*
|
|
626
|
+
* **Memory optimization**: Uses partial selection instead of full sort.
|
|
627
|
+
* This is more efficient when evicting a small batch from a large index.
|
|
628
|
+
*
|
|
629
|
+
* @param count - Number of entries to evict
|
|
630
|
+
*/
|
|
631
|
+
private evictIndexEntries;
|
|
632
|
+
/**
|
|
633
|
+
* Check and emit memory warning if threshold exceeded
|
|
634
|
+
*/
|
|
635
|
+
private checkMemoryWarning;
|
|
636
|
+
/**
|
|
637
|
+
* Start periodic index maintenance
|
|
638
|
+
*/
|
|
639
|
+
private startIndexMaintenance;
|
|
640
|
+
/**
|
|
641
|
+
* Stop periodic index maintenance
|
|
642
|
+
*/
|
|
643
|
+
stopIndexMaintenance(): void;
|
|
644
|
+
/**
|
|
645
|
+
* Run index maintenance - clean up stale entries
|
|
646
|
+
*
|
|
647
|
+
* ## Performance Characteristics
|
|
648
|
+
*
|
|
649
|
+
* **Time Complexity**: O(n * storage_ops) where n = index entries
|
|
650
|
+
* - Each entry may require 1-2 storage lookups
|
|
651
|
+
* - Storage ops are async and may have network latency
|
|
652
|
+
*
|
|
653
|
+
* **When to Run**:
|
|
654
|
+
* - Periodically via indexMaintenanceIntervalMs config
|
|
655
|
+
* - After suspected data loss or corruption
|
|
656
|
+
* - During low-traffic periods to avoid impacting hot path
|
|
657
|
+
*
|
|
658
|
+
* @returns Object with count of removed stale entries and timing info
|
|
659
|
+
*/
|
|
660
|
+
runIndexMaintenance(): Promise<{
|
|
661
|
+
removed: number;
|
|
662
|
+
durationMs: number;
|
|
663
|
+
}>;
|
|
664
|
+
/**
|
|
665
|
+
* Optimized index lookup with single-entry cache
|
|
666
|
+
*
|
|
667
|
+
* The hot path often involves looking up the same key multiple times
|
|
668
|
+
* in quick succession (read -> check promotion -> update index).
|
|
669
|
+
* This cache avoids redundant Map lookups.
|
|
670
|
+
*
|
|
671
|
+
* @param key - The key to look up
|
|
672
|
+
* @returns The index entry or undefined if not found
|
|
673
|
+
*/
|
|
674
|
+
private getIndexEntryOptimized;
|
|
675
|
+
/**
|
|
676
|
+
* Check if a key should be promoted to a higher tier
|
|
677
|
+
*
|
|
678
|
+
* Uses optimized lookup to avoid redundant Map accesses.
|
|
679
|
+
*
|
|
680
|
+
* @param key - The storage key
|
|
681
|
+
* @param currentTier - The current tier of the data
|
|
682
|
+
* @returns Promotion decision with target tier if applicable
|
|
683
|
+
*/
|
|
684
|
+
private shouldPromote;
|
|
685
|
+
private isCircuitOpen;
|
|
686
|
+
private recordCircuitBreakerFailure;
|
|
687
|
+
private recordCircuitBreakerSuccess;
|
|
688
|
+
read(key: string, options?: ReadOptions): Promise<ReadResult>;
|
|
689
|
+
write(key: string, data: Uint8Array, options?: WriteOptions): Promise<void>;
|
|
690
|
+
delete(key: string): Promise<void>;
|
|
691
|
+
promoteToWarm(key: string, data?: Uint8Array): Promise<TierMigrationEvent>;
|
|
692
|
+
promoteToHot(key: string, data?: Uint8Array): Promise<TierMigrationEvent>;
|
|
693
|
+
demoteFromHot(key: string, reason?: TierMigrationEvent['reason']): Promise<TierMigrationEvent>;
|
|
694
|
+
demoteFromWarm(key: string, reason?: TierMigrationEvent['reason']): Promise<TierMigrationEvent>;
|
|
695
|
+
runDemotionCycle(maxDemotions?: number): Promise<TierMigrationEvent[]>;
|
|
696
|
+
evictLRUFromHot(count: number): Promise<TierMigrationEvent[]>;
|
|
697
|
+
syncDirtyToCold(): Promise<number>;
|
|
698
|
+
getIndexEntry(key: string): StorageIndexEntry | undefined;
|
|
699
|
+
hasInIndex(key: string): boolean;
|
|
700
|
+
getTier(key: string): StorageTier | undefined;
|
|
701
|
+
/**
|
|
702
|
+
* Get detailed memory usage breakdown for the storage index
|
|
703
|
+
*
|
|
704
|
+
* ## Memory Components
|
|
705
|
+
*
|
|
706
|
+
* - **entryOverhead**: Fixed overhead per entry (~120 bytes)
|
|
707
|
+
* - **keyStorage**: Memory for key strings (2 bytes per char in JS)
|
|
708
|
+
* - **mapOverhead**: Estimated Map internal structures (~10% of entry memory)
|
|
709
|
+
*
|
|
710
|
+
* @returns Detailed memory breakdown in bytes
|
|
711
|
+
*/
|
|
712
|
+
getIndexMemoryBreakdown(): {
|
|
713
|
+
totalBytes: number;
|
|
714
|
+
entryOverhead: number;
|
|
715
|
+
keyStorage: number;
|
|
716
|
+
mapOverheadEstimate: number;
|
|
717
|
+
bytesPerEntry: number;
|
|
718
|
+
entries: number;
|
|
719
|
+
peakBytes: number;
|
|
720
|
+
utilizationPercent: number | null;
|
|
721
|
+
memoryBudgetBytes: number | null;
|
|
722
|
+
};
|
|
723
|
+
/**
|
|
724
|
+
* Estimate memory for a given number of entries with average key length
|
|
725
|
+
*
|
|
726
|
+
* Useful for capacity planning:
|
|
727
|
+
* ```typescript
|
|
728
|
+
* // How much memory for 10,000 entries with ~30 char keys?
|
|
729
|
+
* const estimate = orchestrator.estimateIndexMemory(10000, 30)
|
|
730
|
+
* console.log(`Estimated: ${estimate / 1024 / 1024}MB`)
|
|
731
|
+
* ```
|
|
732
|
+
*
|
|
733
|
+
* @param entryCount - Number of entries to estimate for
|
|
734
|
+
* @param avgKeyLength - Average key length in characters (default: 20)
|
|
735
|
+
* @returns Estimated memory usage in bytes
|
|
736
|
+
*/
|
|
737
|
+
estimateIndexMemory(entryCount: number, avgKeyLength?: number): number;
|
|
738
|
+
/**
|
|
739
|
+
* Get the current memory usage as a percentage of the configured limit
|
|
740
|
+
*
|
|
741
|
+
* @returns Percentage (0-100) or null if no limit configured
|
|
742
|
+
*/
|
|
743
|
+
getIndexMemoryUtilization(): number | null;
|
|
744
|
+
/**
|
|
745
|
+
* Check if the index is approaching memory limits
|
|
746
|
+
*
|
|
747
|
+
* @param threshold - Warning threshold as decimal (default: 0.8 = 80%)
|
|
748
|
+
* @returns Object with warning status and details
|
|
749
|
+
*/
|
|
750
|
+
checkIndexMemoryStatus(threshold?: number): {
|
|
751
|
+
isNearLimit: boolean;
|
|
752
|
+
currentBytes: number;
|
|
753
|
+
limitBytes: number | null;
|
|
754
|
+
utilizationPercent: number | null;
|
|
755
|
+
warningThreshold: number;
|
|
756
|
+
};
|
|
757
|
+
/**
|
|
758
|
+
* Get comprehensive statistics including performance metrics
|
|
759
|
+
*
|
|
760
|
+
* ## Performance Metrics Included
|
|
761
|
+
*
|
|
762
|
+
* - **lookupCount**: Total number of index lookups
|
|
763
|
+
* - **updateCount**: Total number of index updates
|
|
764
|
+
* - **evictionCount**: Total entries evicted
|
|
765
|
+
* - **avgLookupTimeNs**: Average lookup time in nanoseconds
|
|
766
|
+
* - **avgUpdateTimeNs**: Average update time in nanoseconds
|
|
767
|
+
* - **peakEntries**: Maximum index size observed
|
|
768
|
+
* - **peakMemoryBytes**: Maximum memory usage observed
|
|
769
|
+
* - **cacheHitCount/cacheMissCount**: Hot path cache effectiveness
|
|
770
|
+
*
|
|
771
|
+
* @returns Complete orchestrator statistics
|
|
772
|
+
*/
|
|
773
|
+
getStats(): OrchestratorStats;
|
|
774
|
+
/**
|
|
775
|
+
* Reset all statistics counters
|
|
776
|
+
*
|
|
777
|
+
* Resets:
|
|
778
|
+
* - Warm tier stats (reads, writes, deletes, bytes)
|
|
779
|
+
* - Promotion/demotion counters
|
|
780
|
+
* - Performance metrics (lookup/update/eviction counts and timing)
|
|
781
|
+
*
|
|
782
|
+
* Does NOT reset:
|
|
783
|
+
* - Peak values (peakEntries, peakMemoryBytes)
|
|
784
|
+
* - Current index state
|
|
785
|
+
*/
|
|
786
|
+
resetStats(): void;
|
|
787
|
+
/**
|
|
788
|
+
* Reset only performance metrics while preserving operational stats
|
|
789
|
+
*
|
|
790
|
+
* Useful for:
|
|
791
|
+
* - Starting a new measurement window
|
|
792
|
+
* - Benchmarking specific operations
|
|
793
|
+
* - A/B testing configuration changes
|
|
794
|
+
*
|
|
795
|
+
* @param preservePeaks - If true, keeps peakEntries and peakMemoryBytes (default: false)
|
|
796
|
+
*/
|
|
797
|
+
resetPerformanceMetrics(preservePeaks?: boolean): void;
|
|
798
|
+
/**
|
|
799
|
+
* Get a human-readable performance summary
|
|
800
|
+
*
|
|
801
|
+
* @returns Formatted string with key performance metrics
|
|
802
|
+
*/
|
|
803
|
+
getPerformanceSummary(): string;
|
|
804
|
+
/**
|
|
805
|
+
* Clear the index and all associated tracking
|
|
806
|
+
*/
|
|
807
|
+
clearIndex(): void;
|
|
808
|
+
resetHealth(tier?: StorageTier): void;
|
|
809
|
+
getConfig(): InternalConfig;
|
|
810
|
+
onHibernate(): Promise<HibernateResult>;
|
|
811
|
+
onWake(hibernateState: HibernateState | null, options?: WakeOptions): Promise<WakeResult>;
|
|
812
|
+
scheduleAlarm(alarmConfig: AlarmConfig): Promise<void>;
|
|
813
|
+
handleAlarm(alarmConfig: AlarmConfig & {
|
|
814
|
+
rescheduleMs?: number;
|
|
815
|
+
}): Promise<AlarmResult>;
|
|
816
|
+
getCircuitBreakerState(tier: StorageTier): CircuitBreakerStateInfo;
|
|
817
|
+
setCircuitBreakerState(tier: StorageTier, state: CircuitBreakerState): void;
|
|
818
|
+
getAggregatedMetrics(): AggregatedMetrics;
|
|
819
|
+
exportMetrics(format: 'prometheus' | 'json'): string | AggregatedMetrics;
|
|
820
|
+
createVFSInterface(_options?: {
|
|
821
|
+
pageSize?: number;
|
|
822
|
+
promotionThreshold?: number;
|
|
823
|
+
}): VFSInterface;
|
|
824
|
+
configureAutoPromoter(config: AutoPromoterConfig): void;
|
|
825
|
+
getAutoPromoterConfig(): AutoPromoterConfig;
|
|
826
|
+
configureAutoDemoter(config: AutoDemoterConfig): void;
|
|
827
|
+
getAutoDemoterConfig(): AutoDemoterConfig;
|
|
828
|
+
setDemotionStrategy(tier: StorageTier, strategy: DemotionStrategy): void;
|
|
829
|
+
runDemotionWithStrategy(tier: StorageTier, count: number): Promise<TierMigrationEvent[]>;
|
|
830
|
+
runConsistencyCheck(): Promise<{
|
|
831
|
+
inconsistencies: number;
|
|
832
|
+
repairs: {
|
|
833
|
+
key: string;
|
|
834
|
+
issue: string;
|
|
835
|
+
action: string;
|
|
836
|
+
}[];
|
|
837
|
+
}>;
|
|
838
|
+
setIndexEntryTimestamp(key: string, field: 'created' | 'lastAccess' | 'modified', timestamp: number): void;
|
|
839
|
+
getAccessPatternMetrics(key: string): {
|
|
840
|
+
isBurst: boolean;
|
|
841
|
+
accessRate: number;
|
|
842
|
+
recentAccesses: number;
|
|
843
|
+
};
|
|
844
|
+
evictByMemoryPressure(bytesToFree: number): Promise<TierMigrationEvent[]>;
|
|
845
|
+
setEntryPriority(key: string, priority: 'low' | 'normal' | 'high'): void;
|
|
846
|
+
getEntryPriority(key: string): 'low' | 'normal' | 'high';
|
|
847
|
+
batchPromoteToWarm(keys: string[]): Promise<TierMigrationEvent[]>;
|
|
848
|
+
batchDemoteFromWarm(keys: string[]): Promise<TierMigrationEvent[]>;
|
|
849
|
+
healthCheck(): Promise<{
|
|
850
|
+
overall: 'healthy' | 'degraded' | 'unhealthy';
|
|
851
|
+
tiers: Record<StorageTier, {
|
|
852
|
+
status: string;
|
|
853
|
+
latency: number;
|
|
854
|
+
error?: string;
|
|
855
|
+
}>;
|
|
856
|
+
latency: Record<StorageTier, number>;
|
|
857
|
+
}>;
|
|
858
|
+
getMemoryUsage(): {
|
|
859
|
+
hot: number;
|
|
860
|
+
warm: number;
|
|
861
|
+
cold: number;
|
|
862
|
+
total: number;
|
|
863
|
+
limit: number;
|
|
864
|
+
utilizationPercent: number;
|
|
865
|
+
};
|
|
866
|
+
setMemoryLimit(limits: Partial<Record<StorageTier, number>>): void;
|
|
867
|
+
getMemoryLimits(): Partial<Record<StorageTier, number>>;
|
|
868
|
+
prefetch(keys: string[], options?: {
|
|
869
|
+
targetTier?: StorageTier;
|
|
870
|
+
maxConcurrency?: number;
|
|
871
|
+
}): Promise<{
|
|
872
|
+
prefetchedCount: number;
|
|
873
|
+
failedKeys: string[];
|
|
874
|
+
}>;
|
|
875
|
+
subscribeToEvents(callback: TierMigrationCallback, options?: {
|
|
876
|
+
filter?: {
|
|
877
|
+
type?: 'promotion' | 'demotion';
|
|
878
|
+
};
|
|
879
|
+
}): () => void;
|
|
880
|
+
createSnapshot(): Promise<{
|
|
881
|
+
version: number;
|
|
882
|
+
timestamp: number;
|
|
883
|
+
index: StorageIndexEntry[];
|
|
884
|
+
stats: OrchestratorStats;
|
|
885
|
+
}>;
|
|
886
|
+
restoreFromSnapshot(snapshot: {
|
|
887
|
+
version: number;
|
|
888
|
+
timestamp: number;
|
|
889
|
+
index: StorageIndexEntry[];
|
|
890
|
+
stats: Record<string, unknown>;
|
|
891
|
+
}): Promise<void>;
|
|
892
|
+
warmup(options: {
|
|
893
|
+
strategy: 'all' | 'most-accessed' | 'recent';
|
|
894
|
+
targetTier: StorageTier;
|
|
895
|
+
maxBytes?: number;
|
|
896
|
+
limit?: number;
|
|
897
|
+
}): Promise<{
|
|
898
|
+
warmedUp: number;
|
|
899
|
+
bytesTransferred: number;
|
|
900
|
+
keys: string[];
|
|
901
|
+
}>;
|
|
902
|
+
garbageCollect(options?: {
|
|
903
|
+
compactCold?: boolean;
|
|
904
|
+
}): Promise<{
|
|
905
|
+
removedEntries: number;
|
|
906
|
+
compactionStats?: {
|
|
907
|
+
bytesReclaimed: number;
|
|
908
|
+
};
|
|
909
|
+
}>;
|
|
910
|
+
pinToTier(key: string, _tier: StorageTier): void;
|
|
911
|
+
unpinFromTier(key: string): void;
|
|
912
|
+
isPinned(key: string): boolean;
|
|
913
|
+
getCostBreakdown(): {
|
|
914
|
+
storage: {
|
|
915
|
+
r2: number;
|
|
916
|
+
do: number;
|
|
917
|
+
cache: number;
|
|
918
|
+
};
|
|
919
|
+
operations: {
|
|
920
|
+
r2Writes: number;
|
|
921
|
+
r2Reads: number;
|
|
922
|
+
doWrites: number;
|
|
923
|
+
doReads: number;
|
|
924
|
+
};
|
|
925
|
+
total: number;
|
|
926
|
+
projectedMonthly: number;
|
|
927
|
+
};
|
|
928
|
+
optimizeTierPlacement(): Promise<{
|
|
929
|
+
promotions: Array<{
|
|
930
|
+
key: string;
|
|
931
|
+
currentTier: StorageTier;
|
|
932
|
+
suggestedTier: StorageTier;
|
|
933
|
+
reason: string;
|
|
934
|
+
}>;
|
|
935
|
+
demotions: Array<{
|
|
936
|
+
key: string;
|
|
937
|
+
currentTier: StorageTier;
|
|
938
|
+
suggestedTier: StorageTier;
|
|
939
|
+
reason: string;
|
|
940
|
+
}>;
|
|
941
|
+
estimatedSavings: number;
|
|
942
|
+
}>;
|
|
943
|
+
ensureDurability(key: string): Promise<{
|
|
944
|
+
durable: boolean;
|
|
945
|
+
tier: StorageTier | null;
|
|
946
|
+
copied: boolean;
|
|
947
|
+
}>;
|
|
948
|
+
}
|
|
949
|
+
export declare function createTieredStorageOrchestrator(config: TieredOrchestratorConfig): TieredStorageOrchestrator;
|
|
950
|
+
export {};
|
|
951
|
+
//# sourceMappingURL=tiered-orchestrator.d.ts.map
|