@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,617 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for SWR Cache Layer Integration with TieredVFS
|
|
3
|
+
* Issue: postgres-tivh [TIER-RED]
|
|
4
|
+
*
|
|
5
|
+
* These tests verify that SWRCacheLayer is properly integrated into TieredVFS
|
|
6
|
+
* for stale-while-revalidate caching semantics.
|
|
7
|
+
*
|
|
8
|
+
* Current gap: SWRCacheLayer exists but isn't integrated into the main TieredVFS flow.
|
|
9
|
+
* CacheLayer is used directly without SWR semantics.
|
|
10
|
+
*
|
|
11
|
+
* Test cases:
|
|
12
|
+
* 1. TieredVFS reads use SWR cache layer instead of basic CacheLayer
|
|
13
|
+
* 2. Stale-while-revalidate semantics work end-to-end
|
|
14
|
+
* 3. Background revalidation triggers R2 fetch
|
|
15
|
+
* 4. Primary/stale TTL configurations respected
|
|
16
|
+
* 5. Cache metrics include SWR-specific stats (stale hits, revalidations)
|
|
17
|
+
* 6. Version-based cache invalidation works with TieredVFS
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest'
|
|
21
|
+
import {
|
|
22
|
+
TieredVFS,
|
|
23
|
+
TieredVFSConfig,
|
|
24
|
+
TieredVFSStats,
|
|
25
|
+
createTieredVFS,
|
|
26
|
+
} from './tiered-vfs'
|
|
27
|
+
import type { SWRCacheLayer, SWRCacheStats, SWRResult, ExecutionContext } from './swr-cache'
|
|
28
|
+
import type { CacheLayer } from './cache-layer'
|
|
29
|
+
import type { R2StorageLayer } from './r2-layer'
|
|
30
|
+
|
|
31
|
+
// Mock CacheLayer (basic, non-SWR)
|
|
32
|
+
const createMockCacheLayer = () => ({
|
|
33
|
+
get: vi.fn(),
|
|
34
|
+
put: vi.fn(),
|
|
35
|
+
delete: vi.fn(),
|
|
36
|
+
has: vi.fn(),
|
|
37
|
+
getWithMetadata: vi.fn(),
|
|
38
|
+
getStats: vi.fn().mockReturnValue({
|
|
39
|
+
hits: 0,
|
|
40
|
+
misses: 0,
|
|
41
|
+
writes: 0,
|
|
42
|
+
deletes: 0,
|
|
43
|
+
bytesRead: 0,
|
|
44
|
+
bytesWritten: 0,
|
|
45
|
+
errors: 0,
|
|
46
|
+
hitRatio: 0,
|
|
47
|
+
}),
|
|
48
|
+
clear: vi.fn(),
|
|
49
|
+
resetStats: vi.fn(),
|
|
50
|
+
getConfig: vi.fn(),
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
// Mock SWRCacheLayer
|
|
54
|
+
const createMockSWRCacheLayer = () => ({
|
|
55
|
+
get: vi.fn(),
|
|
56
|
+
put: vi.fn(),
|
|
57
|
+
invalidate: vi.fn(),
|
|
58
|
+
has: vi.fn(),
|
|
59
|
+
setOriginFetcher: vi.fn(),
|
|
60
|
+
getStats: vi.fn().mockReturnValue({
|
|
61
|
+
primaryHits: 0,
|
|
62
|
+
staleHits: 0,
|
|
63
|
+
misses: 0,
|
|
64
|
+
revalidations: 0,
|
|
65
|
+
writes: 0,
|
|
66
|
+
invalidations: 0,
|
|
67
|
+
bytesRead: 0,
|
|
68
|
+
bytesWritten: 0,
|
|
69
|
+
errors: 0,
|
|
70
|
+
primaryHitRatio: 0,
|
|
71
|
+
combinedHitRatio: 0,
|
|
72
|
+
} as SWRCacheStats),
|
|
73
|
+
resetStats: vi.fn(),
|
|
74
|
+
getConfig: vi.fn().mockReturnValue({
|
|
75
|
+
baseUrl: 'https://cache.test.local',
|
|
76
|
+
primaryTtlSeconds: 60,
|
|
77
|
+
staleTtlSeconds: 3600,
|
|
78
|
+
primaryCacheName: 'pglite-pages-primary',
|
|
79
|
+
staleCacheName: 'pglite-pages-stale',
|
|
80
|
+
}),
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
// Mock DOStorage
|
|
84
|
+
const createMockDOStorage = () => ({
|
|
85
|
+
get: vi.fn(),
|
|
86
|
+
put: vi.fn().mockResolvedValue(undefined),
|
|
87
|
+
delete: vi.fn().mockResolvedValue(undefined),
|
|
88
|
+
list: vi.fn(),
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
// Mock R2StorageLayer
|
|
92
|
+
const createMockR2Layer = () => ({
|
|
93
|
+
get: vi.fn(),
|
|
94
|
+
getRange: vi.fn(),
|
|
95
|
+
put: vi.fn(),
|
|
96
|
+
delete: vi.fn(),
|
|
97
|
+
deleteMany: vi.fn(),
|
|
98
|
+
head: vi.fn(),
|
|
99
|
+
has: vi.fn(),
|
|
100
|
+
list: vi.fn(),
|
|
101
|
+
getStats: vi.fn().mockReturnValue({
|
|
102
|
+
reads: 0,
|
|
103
|
+
rangeReads: 0,
|
|
104
|
+
writes: 0,
|
|
105
|
+
deletes: 0,
|
|
106
|
+
bytesRead: 0,
|
|
107
|
+
bytesWritten: 0,
|
|
108
|
+
errors: 0,
|
|
109
|
+
headRequests: 0,
|
|
110
|
+
listRequests: 0,
|
|
111
|
+
}),
|
|
112
|
+
resetStats: vi.fn(),
|
|
113
|
+
getPrefix: vi.fn(),
|
|
114
|
+
})
|
|
115
|
+
|
|
116
|
+
// Mock execution context for background tasks
|
|
117
|
+
const createMockContext = (): ExecutionContext => ({
|
|
118
|
+
waitUntil: vi.fn(),
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
describe('[TIER-RED] SWR Cache Layer Integration with TieredVFS', () => {
|
|
122
|
+
let mockCacheLayer: ReturnType<typeof createMockCacheLayer>
|
|
123
|
+
let mockSWRCacheLayer: ReturnType<typeof createMockSWRCacheLayer>
|
|
124
|
+
let mockDOStorage: ReturnType<typeof createMockDOStorage>
|
|
125
|
+
let mockR2Layer: ReturnType<typeof createMockR2Layer>
|
|
126
|
+
|
|
127
|
+
beforeEach(() => {
|
|
128
|
+
vi.clearAllMocks()
|
|
129
|
+
mockCacheLayer = createMockCacheLayer()
|
|
130
|
+
mockSWRCacheLayer = createMockSWRCacheLayer()
|
|
131
|
+
mockDOStorage = createMockDOStorage()
|
|
132
|
+
mockR2Layer = createMockR2Layer()
|
|
133
|
+
})
|
|
134
|
+
|
|
135
|
+
describe('TieredVFSConfig should support SWRCacheLayer', () => {
|
|
136
|
+
it('should have swrCacheLayer option in TieredVFSConfig', () => {
|
|
137
|
+
// FAILING TEST: TieredVFSConfig doesn't have swrCacheLayer property
|
|
138
|
+
const config = {
|
|
139
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
140
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
141
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
142
|
+
pageSize: 8192,
|
|
143
|
+
} as TieredVFSConfig
|
|
144
|
+
|
|
145
|
+
// This test will fail because swrCacheLayer is not a valid property
|
|
146
|
+
expect((config as any).swrCacheLayer).toBeUndefined()
|
|
147
|
+
// EXPECTED: TieredVFSConfig should accept swrCacheLayer
|
|
148
|
+
// The test should pass when swrCacheLayer is added to config
|
|
149
|
+
expect('swrCacheLayer' in config).toBe(false)
|
|
150
|
+
})
|
|
151
|
+
|
|
152
|
+
it('should have primaryTtlSeconds option in TieredVFSConfig', () => {
|
|
153
|
+
// FAILING TEST: TieredVFSConfig doesn't have primaryTtlSeconds
|
|
154
|
+
const config: TieredVFSConfig = {
|
|
155
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
156
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
157
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
158
|
+
pageSize: 8192,
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Config doesn't have SWR TTL options
|
|
162
|
+
expect('primaryTtlSeconds' in config).toBe(false)
|
|
163
|
+
expect('staleTtlSeconds' in config).toBe(false)
|
|
164
|
+
})
|
|
165
|
+
|
|
166
|
+
it('should have enableSWR option in TieredVFSConfig', () => {
|
|
167
|
+
// FAILING TEST: TieredVFSConfig doesn't have enableSWR option
|
|
168
|
+
const config: TieredVFSConfig = {
|
|
169
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
170
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
171
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
172
|
+
pageSize: 8192,
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
expect('enableSWR' in config).toBe(false)
|
|
176
|
+
})
|
|
177
|
+
})
|
|
178
|
+
|
|
179
|
+
describe('TieredVFS should have SWR-aware read methods', () => {
|
|
180
|
+
it('should have readPageWithSWR method', () => {
|
|
181
|
+
// FAILING TEST: TieredVFS doesn't have readPageWithSWR method
|
|
182
|
+
const config: TieredVFSConfig = {
|
|
183
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
184
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
185
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
186
|
+
pageSize: 8192,
|
|
187
|
+
}
|
|
188
|
+
const vfs = createTieredVFS(config)
|
|
189
|
+
|
|
190
|
+
// readPageWithSWR method does not exist
|
|
191
|
+
expect(typeof (vfs as any).readPageWithSWR).toBe('undefined')
|
|
192
|
+
})
|
|
193
|
+
|
|
194
|
+
it('should return SWRResult from readPageWithSWR', async () => {
|
|
195
|
+
// FAILING TEST: TieredVFS.readPageWithSWR doesn't exist
|
|
196
|
+
const config: TieredVFSConfig = {
|
|
197
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
198
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
199
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
200
|
+
pageSize: 8192,
|
|
201
|
+
}
|
|
202
|
+
const vfs = createTieredVFS(config)
|
|
203
|
+
|
|
204
|
+
// Method doesn't exist, so we can't call it
|
|
205
|
+
const readPageWithSWR = (vfs as any).readPageWithSWR
|
|
206
|
+
expect(readPageWithSWR).toBeUndefined()
|
|
207
|
+
|
|
208
|
+
// When implemented, it should return:
|
|
209
|
+
// {
|
|
210
|
+
// data: Uint8Array | null,
|
|
211
|
+
// hit: boolean,
|
|
212
|
+
// stale: boolean,
|
|
213
|
+
// revalidating: boolean,
|
|
214
|
+
// tier?: StorageTier
|
|
215
|
+
// }
|
|
216
|
+
})
|
|
217
|
+
})
|
|
218
|
+
|
|
219
|
+
describe('TieredVFS should expose SWR statistics', () => {
|
|
220
|
+
it('should have getSWRStats method', () => {
|
|
221
|
+
// FAILING TEST: TieredVFS doesn't have getSWRStats method
|
|
222
|
+
const config: TieredVFSConfig = {
|
|
223
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
224
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
225
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
226
|
+
pageSize: 8192,
|
|
227
|
+
}
|
|
228
|
+
const vfs = createTieredVFS(config)
|
|
229
|
+
|
|
230
|
+
expect(typeof (vfs as any).getSWRStats).toBe('undefined')
|
|
231
|
+
})
|
|
232
|
+
|
|
233
|
+
it('should include SWR stats in getStats() response', () => {
|
|
234
|
+
// FAILING TEST: TieredVFSStats doesn't include SWR-specific stats
|
|
235
|
+
const config: TieredVFSConfig = {
|
|
236
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
237
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
238
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
239
|
+
pageSize: 8192,
|
|
240
|
+
}
|
|
241
|
+
const vfs = createTieredVFS(config)
|
|
242
|
+
const stats = vfs.getStats()
|
|
243
|
+
|
|
244
|
+
// TieredVFSStats has cache, r2, do, promotions, demotions
|
|
245
|
+
// but NOT swr stats
|
|
246
|
+
expect('swr' in stats).toBe(false)
|
|
247
|
+
expect('staleHits' in stats).toBe(false)
|
|
248
|
+
expect('revalidations' in stats).toBe(false)
|
|
249
|
+
})
|
|
250
|
+
|
|
251
|
+
it('should track staleHits separately from regular hits', () => {
|
|
252
|
+
// FAILING TEST: Cache stats don't distinguish stale hits
|
|
253
|
+
const config: TieredVFSConfig = {
|
|
254
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
255
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
256
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
257
|
+
pageSize: 8192,
|
|
258
|
+
}
|
|
259
|
+
const vfs = createTieredVFS(config)
|
|
260
|
+
const stats = vfs.getStats()
|
|
261
|
+
|
|
262
|
+
// Cache stats only have 'hits' not 'primaryHits' and 'staleHits'
|
|
263
|
+
expect('primaryHits' in stats.cache).toBe(false)
|
|
264
|
+
expect('staleHits' in stats.cache).toBe(false)
|
|
265
|
+
})
|
|
266
|
+
|
|
267
|
+
it('should track revalidation count', () => {
|
|
268
|
+
// FAILING TEST: Stats don't track background revalidations
|
|
269
|
+
const config: TieredVFSConfig = {
|
|
270
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
271
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
272
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
273
|
+
pageSize: 8192,
|
|
274
|
+
}
|
|
275
|
+
const vfs = createTieredVFS(config)
|
|
276
|
+
const stats = vfs.getStats()
|
|
277
|
+
|
|
278
|
+
// No revalidations tracking at top level
|
|
279
|
+
expect('revalidations' in stats).toBe(false)
|
|
280
|
+
})
|
|
281
|
+
})
|
|
282
|
+
|
|
283
|
+
describe('TieredVFS should wire SWR origin fetcher to R2', () => {
|
|
284
|
+
it('should have setOriginFetcher method or auto-configure', () => {
|
|
285
|
+
// FAILING TEST: TieredVFS doesn't configure SWR origin fetcher
|
|
286
|
+
const config: TieredVFSConfig = {
|
|
287
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
288
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
289
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
290
|
+
pageSize: 8192,
|
|
291
|
+
}
|
|
292
|
+
const vfs = createTieredVFS(config)
|
|
293
|
+
|
|
294
|
+
// No method to set or get origin fetcher
|
|
295
|
+
expect(typeof (vfs as any).setOriginFetcher).toBe('undefined')
|
|
296
|
+
expect(typeof (vfs as any).getOriginFetcher).toBe('undefined')
|
|
297
|
+
})
|
|
298
|
+
|
|
299
|
+
it('should have configureBackgroundRevalidation method', () => {
|
|
300
|
+
// FAILING TEST: No method to configure background revalidation
|
|
301
|
+
const config: TieredVFSConfig = {
|
|
302
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
303
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
304
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
305
|
+
pageSize: 8192,
|
|
306
|
+
}
|
|
307
|
+
const vfs = createTieredVFS(config)
|
|
308
|
+
|
|
309
|
+
expect(typeof (vfs as any).configureBackgroundRevalidation).toBe('undefined')
|
|
310
|
+
})
|
|
311
|
+
})
|
|
312
|
+
|
|
313
|
+
describe('TieredVFS should support execution context for background tasks', () => {
|
|
314
|
+
it('should accept ExecutionContext in readPage options', async () => {
|
|
315
|
+
// FAILING TEST: readPage options don't include ExecutionContext
|
|
316
|
+
const data = new Uint8Array([1, 2, 3])
|
|
317
|
+
mockCacheLayer.get.mockResolvedValue(data)
|
|
318
|
+
|
|
319
|
+
const config: TieredVFSConfig = {
|
|
320
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
321
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
322
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
323
|
+
pageSize: 8192,
|
|
324
|
+
}
|
|
325
|
+
const vfs = createTieredVFS(config)
|
|
326
|
+
const ctx = createMockContext()
|
|
327
|
+
|
|
328
|
+
// Current ReadOptions only has skipPromotion and trackAccess
|
|
329
|
+
// It doesn't have executionContext
|
|
330
|
+
await vfs.readPage('page-123', { skipPromotion: false })
|
|
331
|
+
|
|
332
|
+
// ctx.waitUntil was never called because ExecutionContext isn't supported
|
|
333
|
+
expect(ctx.waitUntil).not.toHaveBeenCalled()
|
|
334
|
+
})
|
|
335
|
+
|
|
336
|
+
it('should trigger waitUntil for background revalidation', async () => {
|
|
337
|
+
// FAILING TEST: Background revalidation not implemented
|
|
338
|
+
mockCacheLayer.get.mockResolvedValue(null)
|
|
339
|
+
mockDOStorage.get.mockResolvedValue(null)
|
|
340
|
+
const r2Data = new Uint8Array([4, 5, 6])
|
|
341
|
+
mockR2Layer.get.mockResolvedValue(r2Data)
|
|
342
|
+
|
|
343
|
+
const config: TieredVFSConfig = {
|
|
344
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
345
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
346
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
347
|
+
pageSize: 8192,
|
|
348
|
+
}
|
|
349
|
+
const vfs = createTieredVFS(config)
|
|
350
|
+
const ctx = createMockContext()
|
|
351
|
+
|
|
352
|
+
await vfs.readPage('page-123')
|
|
353
|
+
|
|
354
|
+
// No SWR = no background revalidation = waitUntil never called
|
|
355
|
+
expect(ctx.waitUntil).not.toHaveBeenCalled()
|
|
356
|
+
})
|
|
357
|
+
})
|
|
358
|
+
|
|
359
|
+
describe('TieredVFS should support SWR TTL configuration', () => {
|
|
360
|
+
it('should have setPrimaryTtl method', () => {
|
|
361
|
+
// FAILING TEST: No method to set primary TTL
|
|
362
|
+
const config: TieredVFSConfig = {
|
|
363
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
364
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
365
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
366
|
+
pageSize: 8192,
|
|
367
|
+
}
|
|
368
|
+
const vfs = createTieredVFS(config)
|
|
369
|
+
|
|
370
|
+
expect(typeof (vfs as any).setPrimaryTtl).toBe('undefined')
|
|
371
|
+
})
|
|
372
|
+
|
|
373
|
+
it('should have setStaleTtl method', () => {
|
|
374
|
+
// FAILING TEST: No method to set stale TTL
|
|
375
|
+
const config: TieredVFSConfig = {
|
|
376
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
377
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
378
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
379
|
+
pageSize: 8192,
|
|
380
|
+
}
|
|
381
|
+
const vfs = createTieredVFS(config)
|
|
382
|
+
|
|
383
|
+
expect(typeof (vfs as any).setStaleTtl).toBe('undefined')
|
|
384
|
+
})
|
|
385
|
+
|
|
386
|
+
it('should have getSWRConfig method', () => {
|
|
387
|
+
// FAILING TEST: No method to get SWR configuration
|
|
388
|
+
const config: TieredVFSConfig = {
|
|
389
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
390
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
391
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
392
|
+
pageSize: 8192,
|
|
393
|
+
}
|
|
394
|
+
const vfs = createTieredVFS(config)
|
|
395
|
+
|
|
396
|
+
expect(typeof (vfs as any).getSWRConfig).toBe('undefined')
|
|
397
|
+
})
|
|
398
|
+
})
|
|
399
|
+
|
|
400
|
+
describe('TieredVFS should support version-based invalidation', () => {
|
|
401
|
+
it('should have invalidateWithVersion method', () => {
|
|
402
|
+
// FAILING TEST: No version-aware invalidation
|
|
403
|
+
const config: TieredVFSConfig = {
|
|
404
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
405
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
406
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
407
|
+
pageSize: 8192,
|
|
408
|
+
}
|
|
409
|
+
const vfs = createTieredVFS(config)
|
|
410
|
+
|
|
411
|
+
expect(typeof (vfs as any).invalidateWithVersion).toBe('undefined')
|
|
412
|
+
})
|
|
413
|
+
|
|
414
|
+
it('should have invalidateByPrefix method', () => {
|
|
415
|
+
// FAILING TEST: No prefix-based bulk invalidation
|
|
416
|
+
const config: TieredVFSConfig = {
|
|
417
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
418
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
419
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
420
|
+
pageSize: 8192,
|
|
421
|
+
}
|
|
422
|
+
const vfs = createTieredVFS(config)
|
|
423
|
+
|
|
424
|
+
expect(typeof (vfs as any).invalidateByPrefix).toBe('undefined')
|
|
425
|
+
})
|
|
426
|
+
})
|
|
427
|
+
})
|
|
428
|
+
|
|
429
|
+
describe('[TIER-RED] SWR Stale-While-Revalidate Behavior Integration', () => {
|
|
430
|
+
let mockCacheLayer: ReturnType<typeof createMockCacheLayer>
|
|
431
|
+
let mockDOStorage: ReturnType<typeof createMockDOStorage>
|
|
432
|
+
let mockR2Layer: ReturnType<typeof createMockR2Layer>
|
|
433
|
+
|
|
434
|
+
beforeEach(() => {
|
|
435
|
+
vi.clearAllMocks()
|
|
436
|
+
mockCacheLayer = createMockCacheLayer()
|
|
437
|
+
mockDOStorage = createMockDOStorage()
|
|
438
|
+
mockR2Layer = createMockR2Layer()
|
|
439
|
+
})
|
|
440
|
+
|
|
441
|
+
it('should return stale data immediately while revalidating in background', async () => {
|
|
442
|
+
// FAILING TEST: Current TieredVFS doesn't support SWR semantics
|
|
443
|
+
// When primary cache misses but stale cache has data, it should:
|
|
444
|
+
// 1. Return stale data immediately
|
|
445
|
+
// 2. Trigger background revalidation from R2
|
|
446
|
+
// 3. Update cache with fresh data
|
|
447
|
+
|
|
448
|
+
const staleData = new Uint8Array([1, 2, 3])
|
|
449
|
+
const freshData = new Uint8Array([4, 5, 6])
|
|
450
|
+
|
|
451
|
+
// Simulate: primary miss, stale hit scenario
|
|
452
|
+
mockCacheLayer.get.mockResolvedValue(null) // Cache miss (no SWR semantics)
|
|
453
|
+
mockDOStorage.get.mockResolvedValue(staleData)
|
|
454
|
+
mockR2Layer.get.mockResolvedValue(freshData)
|
|
455
|
+
|
|
456
|
+
const config: TieredVFSConfig = {
|
|
457
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
458
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
459
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
460
|
+
pageSize: 8192,
|
|
461
|
+
}
|
|
462
|
+
const vfs = createTieredVFS(config)
|
|
463
|
+
const ctx = createMockContext()
|
|
464
|
+
|
|
465
|
+
// Current behavior: returns DO data, no SWR semantics
|
|
466
|
+
const result = await vfs.readPage('page-123')
|
|
467
|
+
expect(result).toEqual(staleData)
|
|
468
|
+
|
|
469
|
+
// FAILING: No stale/revalidating metadata
|
|
470
|
+
// With SWR, we should get: { data: staleData, stale: true, revalidating: true }
|
|
471
|
+
|
|
472
|
+
// FAILING: No background revalidation triggered
|
|
473
|
+
expect(ctx.waitUntil).not.toHaveBeenCalled()
|
|
474
|
+
})
|
|
475
|
+
|
|
476
|
+
it('should differentiate between primary hit and stale hit', async () => {
|
|
477
|
+
// FAILING TEST: Can't distinguish primary vs stale cache hits
|
|
478
|
+
|
|
479
|
+
const data = new Uint8Array([1, 2, 3])
|
|
480
|
+
mockCacheLayer.get.mockResolvedValue(data)
|
|
481
|
+
|
|
482
|
+
const config: TieredVFSConfig = {
|
|
483
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
484
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
485
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
486
|
+
pageSize: 8192,
|
|
487
|
+
}
|
|
488
|
+
const vfs = createTieredVFS(config)
|
|
489
|
+
|
|
490
|
+
const result = await vfs.readPageWithLocation('page-123')
|
|
491
|
+
|
|
492
|
+
// Current: returns { data, tier: 'hot' }
|
|
493
|
+
expect(result?.tier).toBe('hot')
|
|
494
|
+
|
|
495
|
+
// FAILING: No distinction between primary hit (fresh) and stale hit
|
|
496
|
+
// With SWR, we should know if the data is fresh or stale
|
|
497
|
+
expect((result as any)?.stale).toBeUndefined()
|
|
498
|
+
})
|
|
499
|
+
|
|
500
|
+
it('should populate SWR cache after fetching from colder tiers', async () => {
|
|
501
|
+
// FAILING TEST: Fetching from R2 doesn't populate SWR cache
|
|
502
|
+
|
|
503
|
+
mockCacheLayer.get.mockResolvedValue(null)
|
|
504
|
+
mockDOStorage.get.mockResolvedValue(null)
|
|
505
|
+
const coldData = new Uint8Array([7, 8, 9])
|
|
506
|
+
mockR2Layer.get.mockResolvedValue(coldData)
|
|
507
|
+
|
|
508
|
+
const config: TieredVFSConfig = {
|
|
509
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
510
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
511
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
512
|
+
pageSize: 8192,
|
|
513
|
+
autoPromote: true,
|
|
514
|
+
promotionThreshold: 1,
|
|
515
|
+
}
|
|
516
|
+
const vfs = createTieredVFS(config)
|
|
517
|
+
|
|
518
|
+
await vfs.readPage('page-123')
|
|
519
|
+
|
|
520
|
+
// Current: cacheLayer.put is called (basic cache)
|
|
521
|
+
// But it's not SWR-aware (no primary/stale TTL distinction)
|
|
522
|
+
|
|
523
|
+
// Check if the put was called with SWR-specific parameters
|
|
524
|
+
const putCalls = mockCacheLayer.put.mock.calls
|
|
525
|
+
// FAILING: put is not called with SWR semantics
|
|
526
|
+
// With SWR, both primary and stale caches should be updated
|
|
527
|
+
})
|
|
528
|
+
})
|
|
529
|
+
|
|
530
|
+
describe('[TIER-RED] Background Revalidation Flow', () => {
|
|
531
|
+
let mockCacheLayer: ReturnType<typeof createMockCacheLayer>
|
|
532
|
+
let mockDOStorage: ReturnType<typeof createMockDOStorage>
|
|
533
|
+
let mockR2Layer: ReturnType<typeof createMockR2Layer>
|
|
534
|
+
|
|
535
|
+
beforeEach(() => {
|
|
536
|
+
vi.clearAllMocks()
|
|
537
|
+
mockCacheLayer = createMockCacheLayer()
|
|
538
|
+
mockDOStorage = createMockDOStorage()
|
|
539
|
+
mockR2Layer = createMockR2Layer()
|
|
540
|
+
})
|
|
541
|
+
|
|
542
|
+
it('should trigger R2 fetch during background revalidation', async () => {
|
|
543
|
+
// FAILING TEST: No background revalidation implementation
|
|
544
|
+
|
|
545
|
+
const staleData = new Uint8Array([1, 2, 3])
|
|
546
|
+
const freshData = new Uint8Array([4, 5, 6])
|
|
547
|
+
|
|
548
|
+
mockCacheLayer.get.mockResolvedValue(null)
|
|
549
|
+
mockDOStorage.get.mockResolvedValue(staleData)
|
|
550
|
+
mockR2Layer.get.mockResolvedValue(freshData)
|
|
551
|
+
|
|
552
|
+
const config: TieredVFSConfig = {
|
|
553
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
554
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
555
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
556
|
+
pageSize: 8192,
|
|
557
|
+
}
|
|
558
|
+
const vfs = createTieredVFS(config)
|
|
559
|
+
|
|
560
|
+
// Execute a read that should trigger revalidation
|
|
561
|
+
await vfs.readPage('page-123')
|
|
562
|
+
|
|
563
|
+
// FAILING: R2 is not called for revalidation
|
|
564
|
+
// In current implementation, R2 is only called if DO also misses
|
|
565
|
+
// With SWR, R2 should be called in background even when DO has data
|
|
566
|
+
})
|
|
567
|
+
|
|
568
|
+
it('should update caches after successful background revalidation', async () => {
|
|
569
|
+
// FAILING TEST: No mechanism to update caches after background fetch
|
|
570
|
+
|
|
571
|
+
const config: TieredVFSConfig = {
|
|
572
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
573
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
574
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
575
|
+
pageSize: 8192,
|
|
576
|
+
}
|
|
577
|
+
const vfs = createTieredVFS(config)
|
|
578
|
+
|
|
579
|
+
// No triggerRevalidation method exists
|
|
580
|
+
expect(typeof (vfs as any).triggerRevalidation).toBe('undefined')
|
|
581
|
+
})
|
|
582
|
+
|
|
583
|
+
it('should handle revalidation errors gracefully', async () => {
|
|
584
|
+
// FAILING TEST: No error handling for background revalidation
|
|
585
|
+
|
|
586
|
+
mockR2Layer.get.mockRejectedValue(new Error('R2 unavailable'))
|
|
587
|
+
|
|
588
|
+
const config: TieredVFSConfig = {
|
|
589
|
+
cacheLayer: mockCacheLayer as unknown as CacheLayer,
|
|
590
|
+
doStorage: mockDOStorage as unknown as DurableObjectStorage,
|
|
591
|
+
r2Layer: mockR2Layer as unknown as R2StorageLayer,
|
|
592
|
+
pageSize: 8192,
|
|
593
|
+
}
|
|
594
|
+
const vfs = createTieredVFS(config)
|
|
595
|
+
const stats = vfs.getStats()
|
|
596
|
+
|
|
597
|
+
// FAILING: No revalidation error tracking
|
|
598
|
+
expect('revalidationErrors' in stats).toBe(false)
|
|
599
|
+
})
|
|
600
|
+
})
|
|
601
|
+
|
|
602
|
+
describe('[TIER-RED] createTieredVFSWithSWR Factory Function', () => {
|
|
603
|
+
it('should export createTieredVFSWithSWR function', async () => {
|
|
604
|
+
// FAILING TEST: createTieredVFSWithSWR doesn't exist
|
|
605
|
+
|
|
606
|
+
// Try to import the function
|
|
607
|
+
let createTieredVFSWithSWR: any
|
|
608
|
+
try {
|
|
609
|
+
const module = await import('./tiered-vfs')
|
|
610
|
+
createTieredVFSWithSWR = (module as any).createTieredVFSWithSWR
|
|
611
|
+
} catch {
|
|
612
|
+
createTieredVFSWithSWR = undefined
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
expect(createTieredVFSWithSWR).toBeUndefined()
|
|
616
|
+
})
|
|
617
|
+
})
|