@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,892 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Pressure Monitoring and OOM Protection for PostgresDO
|
|
3
|
+
*
|
|
4
|
+
* This module provides memory monitoring capabilities for PGLite running
|
|
5
|
+
* in Cloudflare Workers (128MB limit). It detects high memory usage and
|
|
6
|
+
* can automatically take protective actions to prevent OOM crashes.
|
|
7
|
+
*
|
|
8
|
+
* ## Key Features
|
|
9
|
+
*
|
|
10
|
+
* - **Real-time memory pressure tracking** - Monitors heap usage and classifies
|
|
11
|
+
* pressure levels (normal, warning, critical, oom)
|
|
12
|
+
* - **Automatic extension unloading** - Drops least-important PostgreSQL extensions
|
|
13
|
+
* when memory is critically low
|
|
14
|
+
* - **GC hint triggering** - Suggests garbage collection at configurable thresholds
|
|
15
|
+
* with rate limiting to prevent thrashing
|
|
16
|
+
* - **Cache eviction** - Automatically evicts cache entries under pressure using
|
|
17
|
+
* configurable strategies (LRU, largest-first)
|
|
18
|
+
* - **Query management** - Pauses or rejects queries under extreme pressure
|
|
19
|
+
* - **Recovery with hysteresis** - Prevents oscillation by requiring sustained
|
|
20
|
+
* normal pressure before full recovery
|
|
21
|
+
* - **Metrics export** - Prometheus and JSON format metrics for observability
|
|
22
|
+
*
|
|
23
|
+
* ## Usage
|
|
24
|
+
*
|
|
25
|
+
* ```typescript
|
|
26
|
+
* import { createMemoryPressureManager } from './memory-pressure'
|
|
27
|
+
*
|
|
28
|
+
* const manager = createMemoryPressureManager({
|
|
29
|
+
* warningThresholdPercent: 70,
|
|
30
|
+
* criticalThresholdPercent: 85,
|
|
31
|
+
* autoUnloadExtensions: true,
|
|
32
|
+
* })
|
|
33
|
+
*
|
|
34
|
+
* // Listen for pressure changes
|
|
35
|
+
* const unsubscribe = manager.onPressureChange((event) => {
|
|
36
|
+
* console.log(`Pressure: ${event.previousLevel} -> ${event.currentLevel}`)
|
|
37
|
+
* })
|
|
38
|
+
*
|
|
39
|
+
* // Start monitoring
|
|
40
|
+
* manager.startMonitoring()
|
|
41
|
+
*
|
|
42
|
+
* // Check status at any time
|
|
43
|
+
* const stats = manager.getMemoryStats()
|
|
44
|
+
*
|
|
45
|
+
* // Clean up when done
|
|
46
|
+
* manager.dispose()
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* ## Cloudflare Workers Constraints
|
|
50
|
+
*
|
|
51
|
+
* - 128MB total memory limit per isolate
|
|
52
|
+
* - ~15MB static (WASM + data + JS)
|
|
53
|
+
* - ~16MB shared_buffers
|
|
54
|
+
* - ~16MB WAL + buffers
|
|
55
|
+
* - ~10MB PostgreSQL catalog/metadata
|
|
56
|
+
* - ~71MB available for queries, results, and runtime
|
|
57
|
+
*
|
|
58
|
+
* @module worker/memory-pressure
|
|
59
|
+
*/
|
|
60
|
+
import type { MemoryPressureLevel, MemoryStats, MemoryPressureEvent, MemoryPressureActionResult, MemoryPressureConfig, MemoryPressureListener } from './types';
|
|
61
|
+
import type { TieredStorageOrchestrator, TierMigrationEvent } from '../storage/tiered-orchestrator';
|
|
62
|
+
/**
|
|
63
|
+
* Demotion counts per pressure level
|
|
64
|
+
*/
|
|
65
|
+
export interface DemotionLevelConfig {
|
|
66
|
+
/** Number of entries to evict from hot tier */
|
|
67
|
+
hotEvictCount: number;
|
|
68
|
+
/** Number of entries to demote from warm tier */
|
|
69
|
+
warmDemoteCount: number;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Configuration for demotions per pressure level
|
|
73
|
+
*/
|
|
74
|
+
export interface DemotionConfig {
|
|
75
|
+
warning: DemotionLevelConfig;
|
|
76
|
+
critical: DemotionLevelConfig;
|
|
77
|
+
oom: DemotionLevelConfig;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Demotion metrics tracking pressure-triggered demotions
|
|
81
|
+
*/
|
|
82
|
+
export interface DemotionMetrics {
|
|
83
|
+
/** Total number of pressure-triggered demotions */
|
|
84
|
+
pressureTriggeredDemotions: number;
|
|
85
|
+
/** Demotions by pressure level */
|
|
86
|
+
demotionsByPressureLevel: Record<MemoryPressureLevel, number>;
|
|
87
|
+
/** Failed demotions */
|
|
88
|
+
failedDemotions: number;
|
|
89
|
+
/** Total bytes freed by demotions */
|
|
90
|
+
bytesFreedByDemotion: number;
|
|
91
|
+
/** Last demotion timestamp */
|
|
92
|
+
lastDemotionTimestamp: number | null;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Pressure demotion event emitted when pressure-triggered demotion occurs
|
|
96
|
+
*/
|
|
97
|
+
export interface PressureDemotionEvent {
|
|
98
|
+
/** Pressure level that triggered the demotion */
|
|
99
|
+
pressureLevel: MemoryPressureLevel;
|
|
100
|
+
/** Demotions performed */
|
|
101
|
+
demotions: TierMigrationEvent[];
|
|
102
|
+
/** Total number of entries demoted */
|
|
103
|
+
totalDemoted: number;
|
|
104
|
+
/** Timestamp of the event */
|
|
105
|
+
timestamp: Date;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Result of a manual demotion trigger
|
|
109
|
+
*/
|
|
110
|
+
export interface TriggerDemotionResult {
|
|
111
|
+
/** Whether the demotion was successful */
|
|
112
|
+
success: boolean;
|
|
113
|
+
/** Number of entries demoted */
|
|
114
|
+
demotedCount: number;
|
|
115
|
+
/** Error message if failed */
|
|
116
|
+
error?: string;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Options for triggering demotions manually
|
|
120
|
+
*/
|
|
121
|
+
export interface TriggerDemotionOptions {
|
|
122
|
+
/** Number of entries to evict from hot tier */
|
|
123
|
+
hotEvictCount: number;
|
|
124
|
+
/** Number of entries to demote from warm tier */
|
|
125
|
+
warmDemoteCount: number;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Memory spike event - emitted when heap grows suddenly
|
|
129
|
+
*/
|
|
130
|
+
export interface MemorySpikeEvent {
|
|
131
|
+
/** Bytes gained since last sample */
|
|
132
|
+
deltaBytes: number;
|
|
133
|
+
/** Previous heap usage */
|
|
134
|
+
previousBytes: number;
|
|
135
|
+
/** Current heap usage */
|
|
136
|
+
currentBytes: number;
|
|
137
|
+
/** When the spike was detected */
|
|
138
|
+
timestamp: Date;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Single metrics sample for history tracking
|
|
142
|
+
*/
|
|
143
|
+
export interface MetricsSample {
|
|
144
|
+
timestamp: Date;
|
|
145
|
+
heapUsed: number;
|
|
146
|
+
pressureLevel: MemoryPressureLevel;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Collection of metrics samples
|
|
150
|
+
*/
|
|
151
|
+
export interface MetricsHistory {
|
|
152
|
+
samples: MetricsSample[];
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Memory growth rate calculation result
|
|
156
|
+
*/
|
|
157
|
+
export interface MemoryGrowthRate {
|
|
158
|
+
/** Bytes per second growth rate (negative = decreasing) */
|
|
159
|
+
bytesPerSecond: number;
|
|
160
|
+
/** Overall trend direction */
|
|
161
|
+
trend: 'increasing' | 'stable' | 'decreasing';
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* OOM prediction based on current growth rate
|
|
165
|
+
*/
|
|
166
|
+
export interface OOMPrediction {
|
|
167
|
+
/** Estimated milliseconds until OOM (Infinity if not growing) */
|
|
168
|
+
estimatedMs: number;
|
|
169
|
+
/** Confidence level (0-1) based on sample count and consistency */
|
|
170
|
+
confidence: number;
|
|
171
|
+
/** Whether OOM is predicted within 60 seconds */
|
|
172
|
+
willOOM: boolean;
|
|
173
|
+
/** Regression quality (R-squared) - how well the linear model fits */
|
|
174
|
+
rSquared?: number;
|
|
175
|
+
/** Predicted memory usage at OOM horizon */
|
|
176
|
+
predictedUsageAtHorizon?: number;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Smoothed pressure state for EMA-based detection
|
|
180
|
+
*/
|
|
181
|
+
export interface SmoothedPressureState {
|
|
182
|
+
/** EMA of heap usage in bytes */
|
|
183
|
+
emaHeapUsage: number;
|
|
184
|
+
/** EMA of pressure level (as numeric index 0-3) */
|
|
185
|
+
emaPressureLevel: number;
|
|
186
|
+
/** Variance in recent samples */
|
|
187
|
+
recentVariance: number;
|
|
188
|
+
/** Whether pressure is trending up or down */
|
|
189
|
+
trend: 'rising' | 'falling' | 'stable';
|
|
190
|
+
/** Last raw heap usage for delta calculation */
|
|
191
|
+
lastRawHeapUsage: number;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Result of a GC hint request
|
|
195
|
+
*/
|
|
196
|
+
export interface GCResult {
|
|
197
|
+
/** Whether GC was actually triggered */
|
|
198
|
+
triggered: boolean;
|
|
199
|
+
/** Estimated bytes freed (if measurable) */
|
|
200
|
+
bytesFreedEstimate: number;
|
|
201
|
+
/** Time spent in GC (if triggered) */
|
|
202
|
+
durationMs: number;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Aggregated GC metrics
|
|
206
|
+
*/
|
|
207
|
+
export interface GCMetrics {
|
|
208
|
+
/** Total number of GC hints issued */
|
|
209
|
+
totalHints: number;
|
|
210
|
+
/** Average bytes freed per hint */
|
|
211
|
+
avgBytesFreed: number;
|
|
212
|
+
/** Average duration per hint */
|
|
213
|
+
avgDurationMs: number;
|
|
214
|
+
/** Percentage of hints that freed memory */
|
|
215
|
+
successRate: number;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Recovery event - emitted when pressure drops
|
|
219
|
+
*/
|
|
220
|
+
export interface RecoveryEvent {
|
|
221
|
+
/** Pressure level we're recovering from */
|
|
222
|
+
fromLevel: MemoryPressureLevel;
|
|
223
|
+
/** New pressure level */
|
|
224
|
+
toLevel: MemoryPressureLevel;
|
|
225
|
+
/** How long we were at elevated pressure */
|
|
226
|
+
recoveryDurationMs: number;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Paused operation tracking
|
|
230
|
+
*/
|
|
231
|
+
export interface PausedOperation {
|
|
232
|
+
/** Unique operation identifier */
|
|
233
|
+
id: string;
|
|
234
|
+
/** Current status */
|
|
235
|
+
status: 'paused' | 'resumed' | 'cancelled';
|
|
236
|
+
/** When the operation was paused */
|
|
237
|
+
pausedAt: Date;
|
|
238
|
+
/** Promise that resolves when operation can resume */
|
|
239
|
+
resumePromise: Promise<void>;
|
|
240
|
+
/** Resolve the resume promise */
|
|
241
|
+
resolve: () => void;
|
|
242
|
+
/** Reject the resume promise */
|
|
243
|
+
reject: (error: Error) => void;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Time spent at each pressure level
|
|
247
|
+
*/
|
|
248
|
+
export interface PressureDurations {
|
|
249
|
+
normal: number;
|
|
250
|
+
warning: number;
|
|
251
|
+
critical: number;
|
|
252
|
+
oom: number;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* JSON metrics export format
|
|
256
|
+
*/
|
|
257
|
+
export interface JSONMetricsExport {
|
|
258
|
+
current: MemoryStats;
|
|
259
|
+
history: MetricsHistory;
|
|
260
|
+
aggregates: {
|
|
261
|
+
avgHeapUsed: number;
|
|
262
|
+
peakHeapUsed: number;
|
|
263
|
+
totalGCCount: number;
|
|
264
|
+
pressureTriggeredDemotions: number;
|
|
265
|
+
failedDemotions: number;
|
|
266
|
+
bytesFreedByDemotion: number;
|
|
267
|
+
};
|
|
268
|
+
/** Enhanced heuristics metrics (new in optimized version) */
|
|
269
|
+
heuristics?: {
|
|
270
|
+
/** Smoothed pressure state from EMA */
|
|
271
|
+
smoothedState: SmoothedPressureState;
|
|
272
|
+
/** Adaptive thresholds based on memory behavior */
|
|
273
|
+
adaptiveThresholds: {
|
|
274
|
+
warningThresholdPercent: number;
|
|
275
|
+
criticalThresholdPercent: number;
|
|
276
|
+
oomThresholdPercent: number;
|
|
277
|
+
};
|
|
278
|
+
/** OOM prediction with confidence */
|
|
279
|
+
oomPrediction: OOMPrediction;
|
|
280
|
+
/** Memory growth rate */
|
|
281
|
+
growthRate: MemoryGrowthRate;
|
|
282
|
+
/** Whether pressure is currently volatile */
|
|
283
|
+
isVolatile: boolean;
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Cache manager interface for eviction
|
|
288
|
+
*/
|
|
289
|
+
export interface CacheManager {
|
|
290
|
+
/** Evict entries until targetBytes are freed, returns actual bytes freed */
|
|
291
|
+
evictLRU?: (targetBytes: number) => number;
|
|
292
|
+
/** Evict the single largest entry, returns bytes freed */
|
|
293
|
+
evictLargest?: () => number;
|
|
294
|
+
/** Get total size of cached data */
|
|
295
|
+
getTotalSize: () => number;
|
|
296
|
+
/** Clear all entries */
|
|
297
|
+
clear?: () => void;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Error thrown when memory pressure prevents an operation
|
|
301
|
+
*/
|
|
302
|
+
export declare class MemoryPressureError extends Error {
|
|
303
|
+
readonly code: string;
|
|
304
|
+
readonly memoryStats: MemoryStats;
|
|
305
|
+
constructor(message: string, memoryStats: MemoryStats);
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Extended configuration options for the memory pressure manager.
|
|
309
|
+
*
|
|
310
|
+
* These options control advanced behaviors like GC hints, cache eviction,
|
|
311
|
+
* query handling, and recovery behavior.
|
|
312
|
+
*/
|
|
313
|
+
export interface ExtendedMemoryPressureConfig extends MemoryPressureConfig {
|
|
314
|
+
/** Callback invoked when a GC hint should be issued */
|
|
315
|
+
onGCHint?: (level: MemoryPressureLevel, options?: {
|
|
316
|
+
aggressive: boolean;
|
|
317
|
+
}) => void;
|
|
318
|
+
/** Thresholds for different GC intensities */
|
|
319
|
+
gcHintThresholds?: {
|
|
320
|
+
mild: number;
|
|
321
|
+
normal: number;
|
|
322
|
+
aggressive: number;
|
|
323
|
+
};
|
|
324
|
+
/** Minimum interval between GC hints to prevent thrashing */
|
|
325
|
+
gcHintMinIntervalMs?: number;
|
|
326
|
+
/** Enable automatic cache eviction under pressure */
|
|
327
|
+
autoCacheEviction?: boolean;
|
|
328
|
+
/** Strategy for cache eviction */
|
|
329
|
+
cacheEvictionStrategy?: 'lru' | 'largest-first';
|
|
330
|
+
/** Percentage of cache to evict at each pressure level */
|
|
331
|
+
evictionTargetPercent?: Record<MemoryPressureLevel, number>;
|
|
332
|
+
/** Callback when a cache entry is evicted */
|
|
333
|
+
onCacheEviction?: (entry: {
|
|
334
|
+
key: string;
|
|
335
|
+
size: number;
|
|
336
|
+
}) => void;
|
|
337
|
+
/** Enable pausing queries at critical pressure */
|
|
338
|
+
queryPausingEnabled?: boolean;
|
|
339
|
+
/** Enable rejecting queries at OOM pressure */
|
|
340
|
+
queryRejectionEnabled?: boolean;
|
|
341
|
+
/** Resume paused queries when usage drops below this percentage */
|
|
342
|
+
queryResumeThresholdPercent?: number;
|
|
343
|
+
/** Maximum time to pause a query before timing out */
|
|
344
|
+
queryPauseTimeoutMs?: number;
|
|
345
|
+
/** Enable query memory estimation */
|
|
346
|
+
estimateQueryMemory?: boolean;
|
|
347
|
+
/** Queries with estimated results below this are always allowed */
|
|
348
|
+
smallQueryThresholdBytes?: number;
|
|
349
|
+
/** Allow queries that started before pressure to complete */
|
|
350
|
+
allowInFlightCompletion?: boolean;
|
|
351
|
+
/** Cancel queries running longer than threshold at OOM */
|
|
352
|
+
cancelLongRunningAtOOM?: boolean;
|
|
353
|
+
/** Threshold for "long running" query */
|
|
354
|
+
longRunningThresholdMs?: number;
|
|
355
|
+
/** Number of samples to keep in metrics history */
|
|
356
|
+
metricsHistorySize?: number;
|
|
357
|
+
/** Callback when recovery completes */
|
|
358
|
+
onRecovery?: (event: RecoveryEvent) => void;
|
|
359
|
+
/** Automatically disable features under pressure */
|
|
360
|
+
autoDisableFeatures?: boolean;
|
|
361
|
+
/** Features to disable under pressure */
|
|
362
|
+
featuresToDisable?: string[];
|
|
363
|
+
/** Enable gradual feature re-enablement during recovery */
|
|
364
|
+
gradualRecovery?: boolean;
|
|
365
|
+
/** Interval between recovery steps */
|
|
366
|
+
recoveryStepIntervalMs?: number;
|
|
367
|
+
/** Callback for each recovery step */
|
|
368
|
+
onRecoveryStep?: (step: string) => void;
|
|
369
|
+
/** Time to wait at normal pressure before full recovery */
|
|
370
|
+
recoveryHysteresisMs?: number;
|
|
371
|
+
/** Time at elevated pressure before alert */
|
|
372
|
+
sustainedPressureThresholdMs?: number;
|
|
373
|
+
/** Callback for sustained pressure alerts */
|
|
374
|
+
onSustainedPressure?: (level: MemoryPressureLevel, durationMs: number) => void;
|
|
375
|
+
/** Strictly enforce memory limit for guarded operations */
|
|
376
|
+
hardLimitEnforcement?: boolean;
|
|
377
|
+
/** Enable automatic demotion on memory pressure (default: true) */
|
|
378
|
+
autoDemoteOnPressure?: boolean;
|
|
379
|
+
/** Configuration for demotion counts per pressure level */
|
|
380
|
+
demotionConfig?: DemotionConfig;
|
|
381
|
+
/** Minimum interval between pressure-triggered demotions in ms */
|
|
382
|
+
demotionMinIntervalMs?: number;
|
|
383
|
+
/** Trigger GC hint before demotion (default: false) */
|
|
384
|
+
gcBeforeDemotion?: boolean;
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Memory Pressure Manager for PostgresDO
|
|
388
|
+
*
|
|
389
|
+
* Monitors memory usage and takes protective actions to prevent OOM crashes
|
|
390
|
+
* in Cloudflare Workers. Provides configurable thresholds, automatic actions,
|
|
391
|
+
* and detailed metrics for observability.
|
|
392
|
+
*
|
|
393
|
+
* @example
|
|
394
|
+
* ```typescript
|
|
395
|
+
* const manager = new MemoryPressureManager({
|
|
396
|
+
* warningThresholdPercent: 70,
|
|
397
|
+
* criticalThresholdPercent: 85,
|
|
398
|
+
* onGCHint: (level, { aggressive }) => {
|
|
399
|
+
* if (aggressive) globalThis.gc?.()
|
|
400
|
+
* },
|
|
401
|
+
* })
|
|
402
|
+
*
|
|
403
|
+
* manager.onPressureChange((event) => {
|
|
404
|
+
* console.log(`Pressure: ${event.currentLevel}`)
|
|
405
|
+
* })
|
|
406
|
+
*
|
|
407
|
+
* manager.startMonitoring()
|
|
408
|
+
* ```
|
|
409
|
+
*/
|
|
410
|
+
export declare class MemoryPressureManager {
|
|
411
|
+
private readonly config;
|
|
412
|
+
private readonly extendedConfig;
|
|
413
|
+
private readonly metricsHistorySize;
|
|
414
|
+
private pglite;
|
|
415
|
+
private wasmModule;
|
|
416
|
+
private cacheManager;
|
|
417
|
+
private lastPressureLevel;
|
|
418
|
+
private pressureLevelStartTime;
|
|
419
|
+
private pressureDurations;
|
|
420
|
+
private sustainedPressureAlerted;
|
|
421
|
+
private inRecoveryMode;
|
|
422
|
+
private recoveryProgress;
|
|
423
|
+
private recoveryStartTime;
|
|
424
|
+
private recoveryPaused;
|
|
425
|
+
private recoveryStepsExecuted;
|
|
426
|
+
private readonly enabledFeatures;
|
|
427
|
+
private readonly disabledFeatures;
|
|
428
|
+
private unloadedExtensions;
|
|
429
|
+
private readonly pausedQueries;
|
|
430
|
+
private readonly inFlightQueries;
|
|
431
|
+
private metricsHistory;
|
|
432
|
+
private lastHeapSample;
|
|
433
|
+
private gcMetrics;
|
|
434
|
+
private lastGCHintTime;
|
|
435
|
+
private listeners;
|
|
436
|
+
private memorySpikeListeners;
|
|
437
|
+
private recoveryListeners;
|
|
438
|
+
private pressureDemotionListeners;
|
|
439
|
+
private tieredStorageOrchestrator;
|
|
440
|
+
private demotionMetrics;
|
|
441
|
+
private lastPressureDemotionTime;
|
|
442
|
+
private checkInterval;
|
|
443
|
+
private sustainedPressureCheckInterval;
|
|
444
|
+
private gradualRecoveryInterval;
|
|
445
|
+
private smoothedState;
|
|
446
|
+
private smoothedStateInitialized;
|
|
447
|
+
private simulatedHeapBytes;
|
|
448
|
+
private forcedHeapUsage;
|
|
449
|
+
constructor(config?: ExtendedMemoryPressureConfig);
|
|
450
|
+
/**
|
|
451
|
+
* Set the PGlite instance for extension unloading operations.
|
|
452
|
+
*
|
|
453
|
+
* @param pglite - PGLite instance with query method
|
|
454
|
+
*/
|
|
455
|
+
setPGlite(pglite: MemoryPressureManager['pglite']): void;
|
|
456
|
+
/**
|
|
457
|
+
* Set the WASM module for real-time heap tracking.
|
|
458
|
+
*
|
|
459
|
+
* When set, heap usage is calculated by sampling the HEAPU8 array
|
|
460
|
+
* instead of using estimates.
|
|
461
|
+
*
|
|
462
|
+
* @param module - Emscripten module with HEAPU8 property
|
|
463
|
+
*/
|
|
464
|
+
setWasmHeapSource(module: {
|
|
465
|
+
HEAPU8?: Uint8Array;
|
|
466
|
+
}): void;
|
|
467
|
+
/**
|
|
468
|
+
* Set the cache manager for eviction operations.
|
|
469
|
+
*
|
|
470
|
+
* @param manager - Cache manager with eviction methods
|
|
471
|
+
*/
|
|
472
|
+
setCacheManager(manager: CacheManager): void;
|
|
473
|
+
/**
|
|
474
|
+
* Get the current configuration.
|
|
475
|
+
*
|
|
476
|
+
* @returns Copy of the current configuration
|
|
477
|
+
*/
|
|
478
|
+
getConfig(): Required<MemoryPressureConfig>;
|
|
479
|
+
/**
|
|
480
|
+
* Update configuration at runtime.
|
|
481
|
+
*
|
|
482
|
+
* If checkIntervalMs is changed and monitoring is active, it will be restarted.
|
|
483
|
+
*
|
|
484
|
+
* @param config - Partial configuration to merge
|
|
485
|
+
*/
|
|
486
|
+
setConfig(config: Partial<MemoryPressureConfig>): void;
|
|
487
|
+
/**
|
|
488
|
+
* Connect a TieredStorageOrchestrator for pressure-triggered demotions.
|
|
489
|
+
*
|
|
490
|
+
* When connected, the manager will automatically trigger demotions
|
|
491
|
+
* when memory pressure rises above warning level.
|
|
492
|
+
*
|
|
493
|
+
* @param orchestrator - TieredStorageOrchestrator instance or null to disconnect
|
|
494
|
+
*/
|
|
495
|
+
setTieredStorageOrchestrator(orchestrator: TieredStorageOrchestrator | null): void;
|
|
496
|
+
/**
|
|
497
|
+
* Check if a TieredStorageOrchestrator is connected.
|
|
498
|
+
*
|
|
499
|
+
* @returns True if an orchestrator is connected
|
|
500
|
+
*/
|
|
501
|
+
hasTieredStorageOrchestrator(): boolean;
|
|
502
|
+
/**
|
|
503
|
+
* Get demotion metrics for pressure-triggered demotions.
|
|
504
|
+
*
|
|
505
|
+
* @returns Demotion metrics
|
|
506
|
+
*/
|
|
507
|
+
getDemotionMetrics(): DemotionMetrics;
|
|
508
|
+
/**
|
|
509
|
+
* Add a listener for pressure-triggered demotion events.
|
|
510
|
+
*
|
|
511
|
+
* @param listener - Callback for demotion events
|
|
512
|
+
* @returns Unsubscribe function
|
|
513
|
+
*/
|
|
514
|
+
onPressureDemotion(listener: (event: PressureDemotionEvent) => void): () => void;
|
|
515
|
+
/**
|
|
516
|
+
* Manually trigger demotions.
|
|
517
|
+
*
|
|
518
|
+
* @param options - Demotion options specifying counts
|
|
519
|
+
* @returns Result of the demotion operation
|
|
520
|
+
*/
|
|
521
|
+
triggerDemotion(options: TriggerDemotionOptions): Promise<TriggerDemotionResult>;
|
|
522
|
+
/**
|
|
523
|
+
* Handle pressure-triggered demotion based on the current level.
|
|
524
|
+
*
|
|
525
|
+
* This is called automatically when pressure changes if autoDemoteOnPressure is enabled.
|
|
526
|
+
*
|
|
527
|
+
* @param level - Current pressure level
|
|
528
|
+
* @param forceBypassRateLimit - If true, bypass rate limiting (used when pressure escalates)
|
|
529
|
+
*/
|
|
530
|
+
private handlePressureDemotion;
|
|
531
|
+
/**
|
|
532
|
+
* Start periodic memory monitoring.
|
|
533
|
+
*
|
|
534
|
+
* Checks memory pressure at the configured interval and takes
|
|
535
|
+
* automatic actions when thresholds are crossed.
|
|
536
|
+
*/
|
|
537
|
+
startMonitoring(): void;
|
|
538
|
+
/**
|
|
539
|
+
* Stop periodic memory monitoring.
|
|
540
|
+
*/
|
|
541
|
+
stopMonitoring(): void;
|
|
542
|
+
/**
|
|
543
|
+
* Get current memory statistics.
|
|
544
|
+
*
|
|
545
|
+
* @returns Current memory stats including pressure level
|
|
546
|
+
*/
|
|
547
|
+
getMemoryStats(): MemoryStats;
|
|
548
|
+
/**
|
|
549
|
+
* Get current memory pressure level.
|
|
550
|
+
*
|
|
551
|
+
* This calculates the level based on current heap usage,
|
|
552
|
+
* not the cached lastPressureLevel.
|
|
553
|
+
*
|
|
554
|
+
* @returns Current pressure level
|
|
555
|
+
*/
|
|
556
|
+
getPressureLevel(): MemoryPressureLevel;
|
|
557
|
+
/**
|
|
558
|
+
* Check if current pressure is at or above a threshold.
|
|
559
|
+
*
|
|
560
|
+
* Uses the cached lastPressureLevel for efficiency.
|
|
561
|
+
*
|
|
562
|
+
* @param level - Level to compare against
|
|
563
|
+
* @returns True if current pressure >= level
|
|
564
|
+
*/
|
|
565
|
+
isPressureAtOrAbove(level: MemoryPressureLevel): boolean;
|
|
566
|
+
/**
|
|
567
|
+
* Get current heap usage from the best available source.
|
|
568
|
+
*
|
|
569
|
+
* Priority:
|
|
570
|
+
* 1. Forced heap usage (for testing)
|
|
571
|
+
* 2. Simulated heap (for testing)
|
|
572
|
+
* 3. WASM module HEAPU8 (sampled)
|
|
573
|
+
* 4. Estimation fallback
|
|
574
|
+
*/
|
|
575
|
+
private getCurrentHeapUsage;
|
|
576
|
+
/**
|
|
577
|
+
* Sample WASM heap to estimate used bytes.
|
|
578
|
+
*
|
|
579
|
+
* Optimized: Uses bit-shift for stride calculation (avoiding division),
|
|
580
|
+
* reduced sample size for lower overhead, and unrolled loop for better
|
|
581
|
+
* CPU branch prediction.
|
|
582
|
+
*/
|
|
583
|
+
private sampleHeapUsage;
|
|
584
|
+
/**
|
|
585
|
+
* Check current memory pressure and take appropriate actions.
|
|
586
|
+
*
|
|
587
|
+
* This is called periodically by startMonitoring() and can also
|
|
588
|
+
* be called manually before expensive operations.
|
|
589
|
+
*
|
|
590
|
+
* @returns Pressure event if level changed, null otherwise
|
|
591
|
+
*/
|
|
592
|
+
checkMemoryPressure(): Promise<MemoryPressureEvent | null>;
|
|
593
|
+
/**
|
|
594
|
+
* Handle sustained pressure alerts.
|
|
595
|
+
*/
|
|
596
|
+
private handleSustainedPressure;
|
|
597
|
+
/**
|
|
598
|
+
* Handle recovery from elevated pressure.
|
|
599
|
+
*/
|
|
600
|
+
private handleRecovery;
|
|
601
|
+
/**
|
|
602
|
+
* Exit recovery mode when pressure rises.
|
|
603
|
+
*/
|
|
604
|
+
private exitRecoveryMode;
|
|
605
|
+
/**
|
|
606
|
+
* Handle actions for elevated pressure levels.
|
|
607
|
+
* Optimized: Uses adaptive GC timing based on pressure level and memory growth rate.
|
|
608
|
+
*/
|
|
609
|
+
private handleElevatedPressure;
|
|
610
|
+
/**
|
|
611
|
+
* Calculate adaptive GC interval based on pressure level and memory growth rate.
|
|
612
|
+
*
|
|
613
|
+
* - At OOM: Minimal delay (500ms) to maximize chances of freeing memory
|
|
614
|
+
* - At critical: Reduced delay (2s) with faster triggering if memory is growing rapidly
|
|
615
|
+
* - At warning: Standard delay (5s) unless memory is growing rapidly
|
|
616
|
+
*
|
|
617
|
+
* @param level - Current pressure level
|
|
618
|
+
* @param now - Current timestamp
|
|
619
|
+
* @returns Minimum interval in milliseconds before next GC hint
|
|
620
|
+
*/
|
|
621
|
+
private getAdaptiveGCInterval;
|
|
622
|
+
/**
|
|
623
|
+
* Evict cache entries based on pressure level.
|
|
624
|
+
*/
|
|
625
|
+
private evictCache;
|
|
626
|
+
/**
|
|
627
|
+
* Update pressure duration tracking.
|
|
628
|
+
*/
|
|
629
|
+
private updatePressureDuration;
|
|
630
|
+
/**
|
|
631
|
+
* Unload the least important extension to free memory.
|
|
632
|
+
*
|
|
633
|
+
* Uses the extensionUnloadPriority list to determine which extension
|
|
634
|
+
* to drop first.
|
|
635
|
+
*
|
|
636
|
+
* @returns Result of the unload operation
|
|
637
|
+
*/
|
|
638
|
+
unloadLeastImportantExtension(): Promise<MemoryPressureActionResult>;
|
|
639
|
+
/**
|
|
640
|
+
* Get list of extensions unloaded due to memory pressure.
|
|
641
|
+
*/
|
|
642
|
+
getUnloadedExtensions(): string[];
|
|
643
|
+
/**
|
|
644
|
+
* Check if an extension was unloaded due to memory pressure.
|
|
645
|
+
*/
|
|
646
|
+
wasExtensionUnloaded(extensionName: string): boolean;
|
|
647
|
+
/**
|
|
648
|
+
* Clear the list of unloaded extensions.
|
|
649
|
+
*/
|
|
650
|
+
clearUnloadedExtensions(): void;
|
|
651
|
+
/**
|
|
652
|
+
* Request a garbage collection hint.
|
|
653
|
+
*
|
|
654
|
+
* Attempts to trigger GC if available and tracks effectiveness.
|
|
655
|
+
* Optimized: Uses performance.now() for higher precision timing.
|
|
656
|
+
*
|
|
657
|
+
* @returns Result including bytes freed estimate
|
|
658
|
+
*/
|
|
659
|
+
requestGC(): Promise<GCResult>;
|
|
660
|
+
/**
|
|
661
|
+
* Get aggregated GC metrics.
|
|
662
|
+
* Optimized: Uses ring buffer's toArray() for efficient conversion.
|
|
663
|
+
*/
|
|
664
|
+
getGCMetrics(): GCMetrics;
|
|
665
|
+
/**
|
|
666
|
+
* Record a metric sample for history tracking.
|
|
667
|
+
*
|
|
668
|
+
* Also detects memory spikes, updates EMA state, and emits events.
|
|
669
|
+
* Optimized: Uses ring buffer (no shift operations).
|
|
670
|
+
*/
|
|
671
|
+
recordMetricSample(): void;
|
|
672
|
+
/**
|
|
673
|
+
* Update smoothed pressure state using EMA.
|
|
674
|
+
* This provides noise-resistant pressure tracking.
|
|
675
|
+
*/
|
|
676
|
+
private updateSmoothedState;
|
|
677
|
+
/**
|
|
678
|
+
* Get the smoothed pressure state.
|
|
679
|
+
* Useful for observability and debugging.
|
|
680
|
+
*/
|
|
681
|
+
getSmoothedPressureState(): SmoothedPressureState;
|
|
682
|
+
/**
|
|
683
|
+
* Get the smoothed pressure level (EMA-based).
|
|
684
|
+
* This is less sensitive to momentary spikes than raw pressure level.
|
|
685
|
+
*/
|
|
686
|
+
getSmoothedPressureLevel(): MemoryPressureLevel;
|
|
687
|
+
/**
|
|
688
|
+
* Check if pressure is volatile (high variance in recent samples).
|
|
689
|
+
* Useful for deciding whether to take aggressive action.
|
|
690
|
+
*/
|
|
691
|
+
isPressureVolatile(): boolean;
|
|
692
|
+
/**
|
|
693
|
+
* Get adaptive thresholds based on current memory behavior.
|
|
694
|
+
*
|
|
695
|
+
* Adjusts thresholds based on:
|
|
696
|
+
* 1. Memory growth rate - faster growth = lower thresholds
|
|
697
|
+
* 2. Volatility - high volatility = higher thresholds (less sensitive)
|
|
698
|
+
* 3. OOM prediction - imminent OOM = lower thresholds
|
|
699
|
+
*/
|
|
700
|
+
getAdaptiveThresholds(): {
|
|
701
|
+
warningThresholdPercent: number;
|
|
702
|
+
criticalThresholdPercent: number;
|
|
703
|
+
oomThresholdPercent: number;
|
|
704
|
+
};
|
|
705
|
+
/**
|
|
706
|
+
* Get pressure level using adaptive thresholds.
|
|
707
|
+
* This provides more intelligent pressure detection based on memory behavior.
|
|
708
|
+
*/
|
|
709
|
+
getAdaptivePressureLevel(): MemoryPressureLevel;
|
|
710
|
+
/**
|
|
711
|
+
* Get metrics history.
|
|
712
|
+
* Returns a copy of the samples array.
|
|
713
|
+
*/
|
|
714
|
+
getMetricsHistory(): MetricsHistory;
|
|
715
|
+
/**
|
|
716
|
+
* Calculate memory growth rate using linear regression.
|
|
717
|
+
*
|
|
718
|
+
* Optimized improvements over simple first/last calculation:
|
|
719
|
+
* 1. Uses all samples via linear regression for more accurate trend
|
|
720
|
+
* 2. Filters out noise using configurable threshold
|
|
721
|
+
* 3. Provides confidence via R-squared value
|
|
722
|
+
*
|
|
723
|
+
* Falls back to simple calculation if insufficient samples.
|
|
724
|
+
*/
|
|
725
|
+
getMemoryGrowthRate(): MemoryGrowthRate;
|
|
726
|
+
/**
|
|
727
|
+
* Classify growth trend based on bytes per second.
|
|
728
|
+
*/
|
|
729
|
+
private classifyGrowthTrend;
|
|
730
|
+
/**
|
|
731
|
+
* Predict time to OOM using linear regression and statistical analysis.
|
|
732
|
+
*
|
|
733
|
+
* Improved prediction algorithm:
|
|
734
|
+
* 1. Uses linear regression for trend-based prediction
|
|
735
|
+
* 2. Includes R-squared for confidence estimation
|
|
736
|
+
* 3. Accounts for variance in samples (high variance = lower confidence)
|
|
737
|
+
* 4. Predicts usage at OOM horizon for early warning
|
|
738
|
+
*/
|
|
739
|
+
predictTimeToOOM(): OOMPrediction;
|
|
740
|
+
/**
|
|
741
|
+
* Get time spent at each pressure level.
|
|
742
|
+
*/
|
|
743
|
+
getPressureDurations(): PressureDurations;
|
|
744
|
+
/**
|
|
745
|
+
* Export metrics in Prometheus format.
|
|
746
|
+
* Enhanced: Includes heuristics metrics for better observability.
|
|
747
|
+
*/
|
|
748
|
+
exportPrometheusMetrics(): string;
|
|
749
|
+
/**
|
|
750
|
+
* Export metrics in JSON format.
|
|
751
|
+
* Optimized: Calculates aggregates in a single pass.
|
|
752
|
+
* Enhanced: Includes heuristics data for observability.
|
|
753
|
+
*/
|
|
754
|
+
exportJSONMetrics(): JSONMetricsExport;
|
|
755
|
+
/**
|
|
756
|
+
* Execute a query with memory pressure guards.
|
|
757
|
+
*
|
|
758
|
+
* - Pauses at critical pressure (with timeout)
|
|
759
|
+
* - Rejects at OOM pressure
|
|
760
|
+
* - Enforces hard limits if configured
|
|
761
|
+
*/
|
|
762
|
+
guardedQuery<T>(sql: string, params: unknown[], options?: {
|
|
763
|
+
estimatedResultBytes?: number;
|
|
764
|
+
}): Promise<{
|
|
765
|
+
rows: T[];
|
|
766
|
+
fields: unknown[];
|
|
767
|
+
}>;
|
|
768
|
+
/**
|
|
769
|
+
* Wait for pressure to drop with timeout.
|
|
770
|
+
*/
|
|
771
|
+
private waitForPressureRelief;
|
|
772
|
+
/**
|
|
773
|
+
* Get status of a query promise.
|
|
774
|
+
*/
|
|
775
|
+
getQueryStatus(queryPromise: Promise<unknown>): 'paused' | 'executing' | 'completed' | 'unknown';
|
|
776
|
+
/**
|
|
777
|
+
* Pause an operation and return a handle.
|
|
778
|
+
*/
|
|
779
|
+
pauseOperation(id: string): PausedOperation;
|
|
780
|
+
/**
|
|
781
|
+
* Resume all paused operations.
|
|
782
|
+
*/
|
|
783
|
+
resumePausedOperations(): void;
|
|
784
|
+
/**
|
|
785
|
+
* Enforce a hard allocation limit.
|
|
786
|
+
*
|
|
787
|
+
* Throws if the allocation would exceed the memory limit.
|
|
788
|
+
*/
|
|
789
|
+
guardedAllocation(bytes: number): Promise<{
|
|
790
|
+
allowed: boolean;
|
|
791
|
+
}>;
|
|
792
|
+
/**
|
|
793
|
+
* Check if a feature is currently enabled.
|
|
794
|
+
*/
|
|
795
|
+
isFeatureEnabled(feature: string): boolean;
|
|
796
|
+
/**
|
|
797
|
+
* Get count of enabled features.
|
|
798
|
+
*/
|
|
799
|
+
getEnabledFeatureCount(): number;
|
|
800
|
+
/**
|
|
801
|
+
* Disable features under pressure.
|
|
802
|
+
*/
|
|
803
|
+
private disableFeaturesUnderPressure;
|
|
804
|
+
/**
|
|
805
|
+
* Re-enable features after recovery.
|
|
806
|
+
*/
|
|
807
|
+
private enableFeaturesAfterRecovery;
|
|
808
|
+
/**
|
|
809
|
+
* Check if manager is in recovery mode.
|
|
810
|
+
*/
|
|
811
|
+
isInRecoveryMode(): boolean;
|
|
812
|
+
/**
|
|
813
|
+
* Get recovery progress (0.0 to 1.0).
|
|
814
|
+
*/
|
|
815
|
+
getRecoveryProgress(): number;
|
|
816
|
+
/**
|
|
817
|
+
* Start gradual recovery of features.
|
|
818
|
+
*/
|
|
819
|
+
startGradualRecovery(): Promise<void>;
|
|
820
|
+
/**
|
|
821
|
+
* Pause gradual recovery.
|
|
822
|
+
*/
|
|
823
|
+
pauseGradualRecovery(): void;
|
|
824
|
+
/**
|
|
825
|
+
* Check if recovery is paused.
|
|
826
|
+
*/
|
|
827
|
+
isRecoveryPaused(): boolean;
|
|
828
|
+
/**
|
|
829
|
+
* Add a memory pressure event listener.
|
|
830
|
+
*
|
|
831
|
+
* @param listener - Callback for pressure events
|
|
832
|
+
* @returns Unsubscribe function
|
|
833
|
+
*/
|
|
834
|
+
onPressureChange(listener: MemoryPressureListener): () => void;
|
|
835
|
+
/**
|
|
836
|
+
* Get current listener count.
|
|
837
|
+
*/
|
|
838
|
+
getListenerCount(): number;
|
|
839
|
+
/**
|
|
840
|
+
* Add a memory spike listener.
|
|
841
|
+
*
|
|
842
|
+
* @param listener - Callback for spike events
|
|
843
|
+
* @returns Unsubscribe function
|
|
844
|
+
*/
|
|
845
|
+
onMemorySpike(listener: (spike: MemorySpikeEvent) => void): () => void;
|
|
846
|
+
/**
|
|
847
|
+
* Add a recovery event listener.
|
|
848
|
+
*
|
|
849
|
+
* @param listener - Callback for recovery events
|
|
850
|
+
* @returns Unsubscribe function
|
|
851
|
+
*/
|
|
852
|
+
onRecovery(listener: (event: RecoveryEvent) => void): () => void;
|
|
853
|
+
/**
|
|
854
|
+
* Emit a pressure event to all listeners.
|
|
855
|
+
*/
|
|
856
|
+
private emitPressureEvent;
|
|
857
|
+
/**
|
|
858
|
+
* Simulate heap growth for testing.
|
|
859
|
+
* @internal
|
|
860
|
+
*/
|
|
861
|
+
_simulateHeapGrowth(bytes: number): void;
|
|
862
|
+
/**
|
|
863
|
+
* Set current heap usage for testing.
|
|
864
|
+
* @internal
|
|
865
|
+
*/
|
|
866
|
+
_setCurrentHeapUsage(bytes: number): void;
|
|
867
|
+
/**
|
|
868
|
+
* Force a memory pressure level for testing.
|
|
869
|
+
*
|
|
870
|
+
* This updates the internal state and emits events as if the pressure
|
|
871
|
+
* had actually changed. Useful for testing pressure handling without
|
|
872
|
+
* actually consuming memory.
|
|
873
|
+
*
|
|
874
|
+
* @internal
|
|
875
|
+
*/
|
|
876
|
+
_forceMemoryPressure(level: MemoryPressureLevel): MemoryPressureEvent | null;
|
|
877
|
+
/**
|
|
878
|
+
* Dispose of the manager and clean up all resources.
|
|
879
|
+
*
|
|
880
|
+
* This stops all intervals, clears all listeners, and releases references.
|
|
881
|
+
* Always call this when the manager is no longer needed.
|
|
882
|
+
*/
|
|
883
|
+
dispose(): void;
|
|
884
|
+
}
|
|
885
|
+
/**
|
|
886
|
+
* Create a memory pressure manager with default configuration.
|
|
887
|
+
*
|
|
888
|
+
* @param config - Optional configuration overrides
|
|
889
|
+
* @returns Configured MemoryPressureManager instance
|
|
890
|
+
*/
|
|
891
|
+
export declare function createMemoryPressureManager(config?: ExtendedMemoryPressureConfig): MemoryPressureManager;
|
|
892
|
+
//# sourceMappingURL=memory-pressure.d.ts.map
|