@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.
Files changed (1129) hide show
  1. package/README.md +868 -0
  2. package/dist/cdc/change-stream.d.ts +44 -0
  3. package/dist/cdc/change-stream.d.ts.map +1 -0
  4. package/dist/cdc/change-stream.js +95 -0
  5. package/dist/cdc/change-stream.js.map +1 -0
  6. package/dist/cdc/filter.d.ts +58 -0
  7. package/dist/cdc/filter.d.ts.map +1 -0
  8. package/dist/cdc/filter.js +520 -0
  9. package/dist/cdc/filter.js.map +1 -0
  10. package/dist/cdc/index.d.ts +47 -0
  11. package/dist/cdc/index.d.ts.map +1 -0
  12. package/dist/cdc/index.js +50 -0
  13. package/dist/cdc/index.js.map +1 -0
  14. package/dist/cdc/resume-token.d.ts +60 -0
  15. package/dist/cdc/resume-token.d.ts.map +1 -0
  16. package/dist/cdc/resume-token.js +228 -0
  17. package/dist/cdc/resume-token.js.map +1 -0
  18. package/dist/cdc/transport/index.d.ts +7 -0
  19. package/dist/cdc/transport/index.d.ts.map +1 -0
  20. package/dist/cdc/transport/index.js +7 -0
  21. package/dist/cdc/transport/index.js.map +1 -0
  22. package/dist/cdc/transport/sse.d.ts +120 -0
  23. package/dist/cdc/transport/sse.d.ts.map +1 -0
  24. package/dist/cdc/transport/sse.js +590 -0
  25. package/dist/cdc/transport/sse.js.map +1 -0
  26. package/dist/cdc/transport/websocket.d.ts +130 -0
  27. package/dist/cdc/transport/websocket.d.ts.map +1 -0
  28. package/dist/cdc/transport/websocket.js +688 -0
  29. package/dist/cdc/transport/websocket.js.map +1 -0
  30. package/dist/cdc/types.d.ts +306 -0
  31. package/dist/cdc/types.d.ts.map +1 -0
  32. package/dist/cdc/types.js +8 -0
  33. package/dist/cdc/types.js.map +1 -0
  34. package/dist/config/index.d.ts +25 -0
  35. package/dist/config/index.d.ts.map +1 -0
  36. package/dist/config/index.js +25 -0
  37. package/dist/config/index.js.map +1 -0
  38. package/dist/config/memory.d.ts +139 -0
  39. package/dist/config/memory.d.ts.map +1 -0
  40. package/dist/config/memory.js +157 -0
  41. package/dist/config/memory.js.map +1 -0
  42. package/dist/config/storage.d.ts +157 -0
  43. package/dist/config/storage.d.ts.map +1 -0
  44. package/dist/config/storage.js +178 -0
  45. package/dist/config/storage.js.map +1 -0
  46. package/dist/config/streaming.d.ts +117 -0
  47. package/dist/config/streaming.d.ts.map +1 -0
  48. package/dist/config/streaming.js +132 -0
  49. package/dist/config/streaming.js.map +1 -0
  50. package/dist/config/timeouts.d.ts +168 -0
  51. package/dist/config/timeouts.d.ts.map +1 -0
  52. package/dist/config/timeouts.js +192 -0
  53. package/dist/config/timeouts.js.map +1 -0
  54. package/dist/extensions/config.d.ts +89 -0
  55. package/dist/extensions/config.d.ts.map +1 -0
  56. package/dist/extensions/config.js +216 -0
  57. package/dist/extensions/config.js.map +1 -0
  58. package/dist/extensions/geo.d.ts +452 -0
  59. package/dist/extensions/geo.d.ts.map +1 -0
  60. package/dist/extensions/geo.js +583 -0
  61. package/dist/extensions/geo.js.map +1 -0
  62. package/dist/extensions/index.d.ts +167 -0
  63. package/dist/extensions/index.d.ts.map +1 -0
  64. package/dist/extensions/index.js +99 -0
  65. package/dist/extensions/index.js.map +1 -0
  66. package/dist/extensions/loader.d.ts +226 -0
  67. package/dist/extensions/loader.d.ts.map +1 -0
  68. package/dist/extensions/loader.js +456 -0
  69. package/dist/extensions/loader.js.map +1 -0
  70. package/dist/extensions/pgmq-lite.d.ts +330 -0
  71. package/dist/extensions/pgmq-lite.d.ts.map +1 -0
  72. package/dist/extensions/pgmq-lite.js +648 -0
  73. package/dist/extensions/pgmq-lite.js.map +1 -0
  74. package/dist/extensions/plugins.d.ts +260 -0
  75. package/dist/extensions/plugins.d.ts.map +1 -0
  76. package/dist/extensions/plugins.js +535 -0
  77. package/dist/extensions/plugins.js.map +1 -0
  78. package/dist/extensions/registry.d.ts +93 -0
  79. package/dist/extensions/registry.d.ts.map +1 -0
  80. package/dist/extensions/registry.js +182 -0
  81. package/dist/extensions/registry.js.map +1 -0
  82. package/dist/extensions/vector.d.ts +106 -0
  83. package/dist/extensions/vector.d.ts.map +1 -0
  84. package/dist/extensions/vector.js +129 -0
  85. package/dist/extensions/vector.js.map +1 -0
  86. package/dist/iceberg/analytics.d.ts +279 -0
  87. package/dist/iceberg/analytics.d.ts.map +1 -0
  88. package/dist/iceberg/analytics.js +448 -0
  89. package/dist/iceberg/analytics.js.map +1 -0
  90. package/dist/iceberg/catalog-api.d.ts +39 -0
  91. package/dist/iceberg/catalog-api.d.ts.map +1 -0
  92. package/dist/iceberg/catalog-api.js +388 -0
  93. package/dist/iceberg/catalog-api.js.map +1 -0
  94. package/dist/iceberg/catalog.d.ts +401 -0
  95. package/dist/iceberg/catalog.d.ts.map +1 -0
  96. package/dist/iceberg/catalog.js +677 -0
  97. package/dist/iceberg/catalog.js.map +1 -0
  98. package/dist/iceberg/duckdb-wasm.d.ts +447 -0
  99. package/dist/iceberg/duckdb-wasm.d.ts.map +1 -0
  100. package/dist/iceberg/duckdb-wasm.js +600 -0
  101. package/dist/iceberg/duckdb-wasm.js.map +1 -0
  102. package/dist/iceberg/index.d.ts +92 -0
  103. package/dist/iceberg/index.d.ts.map +1 -0
  104. package/dist/iceberg/index.js +119 -0
  105. package/dist/iceberg/index.js.map +1 -0
  106. package/dist/iceberg/metadata.d.ts +214 -0
  107. package/dist/iceberg/metadata.d.ts.map +1 -0
  108. package/dist/iceberg/metadata.js +535 -0
  109. package/dist/iceberg/metadata.js.map +1 -0
  110. package/dist/iceberg/optimizer.d.ts +296 -0
  111. package/dist/iceberg/optimizer.d.ts.map +1 -0
  112. package/dist/iceberg/optimizer.js +889 -0
  113. package/dist/iceberg/optimizer.js.map +1 -0
  114. package/dist/iceberg/parquet.d.ts +447 -0
  115. package/dist/iceberg/parquet.d.ts.map +1 -0
  116. package/dist/iceberg/parquet.js +1225 -0
  117. package/dist/iceberg/parquet.js.map +1 -0
  118. package/dist/iceberg/r2-organization.d.ts +422 -0
  119. package/dist/iceberg/r2-organization.d.ts.map +1 -0
  120. package/dist/iceberg/r2-organization.js +672 -0
  121. package/dist/iceberg/r2-organization.js.map +1 -0
  122. package/dist/iceberg/scheduler-do-example.d.ts +158 -0
  123. package/dist/iceberg/scheduler-do-example.d.ts.map +1 -0
  124. package/dist/iceberg/scheduler-do-example.js +261 -0
  125. package/dist/iceberg/scheduler-do-example.js.map +1 -0
  126. package/dist/iceberg/scheduler.d.ts +434 -0
  127. package/dist/iceberg/scheduler.d.ts.map +1 -0
  128. package/dist/iceberg/scheduler.js +818 -0
  129. package/dist/iceberg/scheduler.js.map +1 -0
  130. package/dist/iceberg/schema.d.ts +149 -0
  131. package/dist/iceberg/schema.d.ts.map +1 -0
  132. package/dist/iceberg/schema.js +525 -0
  133. package/dist/iceberg/schema.js.map +1 -0
  134. package/dist/iceberg/snapshot-manager.d.ts +406 -0
  135. package/dist/iceberg/snapshot-manager.d.ts.map +1 -0
  136. package/dist/iceberg/snapshot-manager.js +934 -0
  137. package/dist/iceberg/snapshot-manager.js.map +1 -0
  138. package/dist/iceberg/sql-router.d.ts +194 -0
  139. package/dist/iceberg/sql-router.d.ts.map +1 -0
  140. package/dist/iceberg/sql-router.js +180 -0
  141. package/dist/iceberg/sql-router.js.map +1 -0
  142. package/dist/iceberg/test-fixtures.d.ts +151 -0
  143. package/dist/iceberg/test-fixtures.d.ts.map +1 -0
  144. package/dist/iceberg/test-fixtures.js +446 -0
  145. package/dist/iceberg/test-fixtures.js.map +1 -0
  146. package/dist/iceberg/time-travel-api.d.ts +102 -0
  147. package/dist/iceberg/time-travel-api.d.ts.map +1 -0
  148. package/dist/iceberg/time-travel-api.js +437 -0
  149. package/dist/iceberg/time-travel-api.js.map +1 -0
  150. package/dist/iceberg/time-travel.d.ts +293 -0
  151. package/dist/iceberg/time-travel.d.ts.map +1 -0
  152. package/dist/iceberg/time-travel.js +689 -0
  153. package/dist/iceberg/time-travel.js.map +1 -0
  154. package/dist/iceberg/transformer.d.ts +356 -0
  155. package/dist/iceberg/transformer.d.ts.map +1 -0
  156. package/dist/iceberg/transformer.js +770 -0
  157. package/dist/iceberg/transformer.js.map +1 -0
  158. package/dist/iceberg/types.d.ts +318 -0
  159. package/dist/iceberg/types.d.ts.map +1 -0
  160. package/dist/iceberg/types.js +9 -0
  161. package/dist/iceberg/types.js.map +1 -0
  162. package/dist/iceberg/writer.d.ts +144 -0
  163. package/dist/iceberg/writer.d.ts.map +1 -0
  164. package/dist/iceberg/writer.js +452 -0
  165. package/dist/iceberg/writer.js.map +1 -0
  166. package/dist/index.d.ts +50 -0
  167. package/dist/index.d.ts.map +1 -0
  168. package/dist/index.js +69 -0
  169. package/dist/index.js.map +1 -0
  170. package/dist/lineage/index.d.ts +11 -0
  171. package/dist/lineage/index.d.ts.map +1 -0
  172. package/dist/lineage/index.js +11 -0
  173. package/dist/lineage/index.js.map +1 -0
  174. package/dist/lineage/integration.d.ts +134 -0
  175. package/dist/lineage/integration.d.ts.map +1 -0
  176. package/dist/lineage/integration.js +258 -0
  177. package/dist/lineage/integration.js.map +1 -0
  178. package/dist/lineage/tracker.d.ts +189 -0
  179. package/dist/lineage/tracker.d.ts.map +1 -0
  180. package/dist/lineage/tracker.js +1352 -0
  181. package/dist/lineage/tracker.js.map +1 -0
  182. package/dist/lineage/types.d.ts +318 -0
  183. package/dist/lineage/types.d.ts.map +1 -0
  184. package/dist/lineage/types.js +9 -0
  185. package/dist/lineage/types.js.map +1 -0
  186. package/dist/middleware/index.d.ts +11 -0
  187. package/dist/middleware/index.d.ts.map +1 -0
  188. package/dist/middleware/index.js +16 -0
  189. package/dist/middleware/index.js.map +1 -0
  190. package/dist/middleware/rate-limit.d.ts +397 -0
  191. package/dist/middleware/rate-limit.d.ts.map +1 -0
  192. package/dist/middleware/rate-limit.js +507 -0
  193. package/dist/middleware/rate-limit.js.map +1 -0
  194. package/dist/migration-tooling/external-migration.d.ts +601 -0
  195. package/dist/migration-tooling/external-migration.d.ts.map +1 -0
  196. package/dist/migration-tooling/external-migration.js +1612 -0
  197. package/dist/migration-tooling/external-migration.js.map +1 -0
  198. package/dist/migration-tooling/index.d.ts +19 -0
  199. package/dist/migration-tooling/index.d.ts.map +1 -0
  200. package/dist/migration-tooling/index.js +19 -0
  201. package/dist/migration-tooling/index.js.map +1 -0
  202. package/dist/migrations/auto-migrator.d.ts +289 -0
  203. package/dist/migrations/auto-migrator.d.ts.map +1 -0
  204. package/dist/migrations/auto-migrator.js +396 -0
  205. package/dist/migrations/auto-migrator.js.map +1 -0
  206. package/dist/migrations/bulk-orchestrator.d.ts +403 -0
  207. package/dist/migrations/bulk-orchestrator.d.ts.map +1 -0
  208. package/dist/migrations/bulk-orchestrator.js +646 -0
  209. package/dist/migrations/bulk-orchestrator.js.map +1 -0
  210. package/dist/migrations/compatibility.d.ts +216 -0
  211. package/dist/migrations/compatibility.d.ts.map +1 -0
  212. package/dist/migrations/compatibility.js +651 -0
  213. package/dist/migrations/compatibility.js.map +1 -0
  214. package/dist/migrations/do-migrations.d.ts +101 -0
  215. package/dist/migrations/do-migrations.d.ts.map +1 -0
  216. package/dist/migrations/do-migrations.js +1060 -0
  217. package/dist/migrations/do-migrations.js.map +1 -0
  218. package/dist/migrations/do-migrations.types.d.ts +550 -0
  219. package/dist/migrations/do-migrations.types.d.ts.map +1 -0
  220. package/dist/migrations/do-migrations.types.js +15 -0
  221. package/dist/migrations/do-migrations.types.js.map +1 -0
  222. package/dist/migrations/drizzle-compat.d.ts +163 -0
  223. package/dist/migrations/drizzle-compat.d.ts.map +1 -0
  224. package/dist/migrations/drizzle-compat.js +273 -0
  225. package/dist/migrations/drizzle-compat.js.map +1 -0
  226. package/dist/migrations/index.d.ts +109 -0
  227. package/dist/migrations/index.d.ts.map +1 -0
  228. package/dist/migrations/index.js +127 -0
  229. package/dist/migrations/index.js.map +1 -0
  230. package/dist/migrations/migration-api.d.ts +161 -0
  231. package/dist/migrations/migration-api.d.ts.map +1 -0
  232. package/dist/migrations/migration-api.js +499 -0
  233. package/dist/migrations/migration-api.js.map +1 -0
  234. package/dist/migrations/progress-tracker-do.d.ts +195 -0
  235. package/dist/migrations/progress-tracker-do.d.ts.map +1 -0
  236. package/dist/migrations/progress-tracker-do.js +339 -0
  237. package/dist/migrations/progress-tracker-do.js.map +1 -0
  238. package/dist/migrations/progress-tracker-kv.d.ts +103 -0
  239. package/dist/migrations/progress-tracker-kv.d.ts.map +1 -0
  240. package/dist/migrations/progress-tracker-kv.js +231 -0
  241. package/dist/migrations/progress-tracker-kv.js.map +1 -0
  242. package/dist/migrations/progress-tracker.d.ts +320 -0
  243. package/dist/migrations/progress-tracker.d.ts.map +1 -0
  244. package/dist/migrations/progress-tracker.js +443 -0
  245. package/dist/migrations/progress-tracker.js.map +1 -0
  246. package/dist/migrations/registry.d.ts +231 -0
  247. package/dist/migrations/registry.d.ts.map +1 -0
  248. package/dist/migrations/registry.js +376 -0
  249. package/dist/migrations/registry.js.map +1 -0
  250. package/dist/migrations/runner.d.ts +197 -0
  251. package/dist/migrations/runner.d.ts.map +1 -0
  252. package/dist/migrations/runner.js +1167 -0
  253. package/dist/migrations/runner.js.map +1 -0
  254. package/dist/migrations/schema-generator.d.ts +111 -0
  255. package/dist/migrations/schema-generator.d.ts.map +1 -0
  256. package/dist/migrations/schema-generator.js +335 -0
  257. package/dist/migrations/schema-generator.js.map +1 -0
  258. package/dist/migrations/testing.d.ts +321 -0
  259. package/dist/migrations/testing.d.ts.map +1 -0
  260. package/dist/migrations/testing.js +645 -0
  261. package/dist/migrations/testing.js.map +1 -0
  262. package/dist/migrations/types.d.ts +503 -0
  263. package/dist/migrations/types.d.ts.map +1 -0
  264. package/dist/migrations/types.js +11 -0
  265. package/dist/migrations/types.js.map +1 -0
  266. package/dist/migrations/validator.d.ts +215 -0
  267. package/dist/migrations/validator.d.ts.map +1 -0
  268. package/dist/migrations/validator.js +494 -0
  269. package/dist/migrations/validator.js.map +1 -0
  270. package/dist/observability/alerting.d.ts +116 -0
  271. package/dist/observability/alerting.d.ts.map +1 -0
  272. package/dist/observability/alerting.js +353 -0
  273. package/dist/observability/alerting.js.map +1 -0
  274. package/dist/observability/analytics-engine.d.ts +357 -0
  275. package/dist/observability/analytics-engine.d.ts.map +1 -0
  276. package/dist/observability/analytics-engine.js +430 -0
  277. package/dist/observability/analytics-engine.js.map +1 -0
  278. package/dist/observability/cost-metrics.d.ts +269 -0
  279. package/dist/observability/cost-metrics.d.ts.map +1 -0
  280. package/dist/observability/cost-metrics.js +560 -0
  281. package/dist/observability/cost-metrics.js.map +1 -0
  282. package/dist/observability/cross-do-tracing.d.ts +305 -0
  283. package/dist/observability/cross-do-tracing.d.ts.map +1 -0
  284. package/dist/observability/cross-do-tracing.js +431 -0
  285. package/dist/observability/cross-do-tracing.js.map +1 -0
  286. package/dist/observability/error-rate-collector.d.ts +163 -0
  287. package/dist/observability/error-rate-collector.d.ts.map +1 -0
  288. package/dist/observability/error-rate-collector.js +306 -0
  289. package/dist/observability/error-rate-collector.js.map +1 -0
  290. package/dist/observability/exporters.d.ts +231 -0
  291. package/dist/observability/exporters.d.ts.map +1 -0
  292. package/dist/observability/exporters.js +479 -0
  293. package/dist/observability/exporters.js.map +1 -0
  294. package/dist/observability/health-check.d.ts +106 -0
  295. package/dist/observability/health-check.d.ts.map +1 -0
  296. package/dist/observability/health-check.js +243 -0
  297. package/dist/observability/health-check.js.map +1 -0
  298. package/dist/observability/index.d.ts +297 -0
  299. package/dist/observability/index.d.ts.map +1 -0
  300. package/dist/observability/index.js +455 -0
  301. package/dist/observability/index.js.map +1 -0
  302. package/dist/observability/instrumentation.d.ts +222 -0
  303. package/dist/observability/instrumentation.d.ts.map +1 -0
  304. package/dist/observability/instrumentation.js +532 -0
  305. package/dist/observability/instrumentation.js.map +1 -0
  306. package/dist/observability/memory-metrics.d.ts +227 -0
  307. package/dist/observability/memory-metrics.d.ts.map +1 -0
  308. package/dist/observability/memory-metrics.js +688 -0
  309. package/dist/observability/memory-metrics.js.map +1 -0
  310. package/dist/observability/metrics-endpoint.d.ts +91 -0
  311. package/dist/observability/metrics-endpoint.d.ts.map +1 -0
  312. package/dist/observability/metrics-endpoint.js +246 -0
  313. package/dist/observability/metrics-endpoint.js.map +1 -0
  314. package/dist/observability/metrics.d.ts +88 -0
  315. package/dist/observability/metrics.d.ts.map +1 -0
  316. package/dist/observability/metrics.js +253 -0
  317. package/dist/observability/metrics.js.map +1 -0
  318. package/dist/observability/observability-features.d.ts +488 -0
  319. package/dist/observability/observability-features.d.ts.map +1 -0
  320. package/dist/observability/observability-features.js +773 -0
  321. package/dist/observability/observability-features.js.map +1 -0
  322. package/dist/observability/prometheus.d.ts +39 -0
  323. package/dist/observability/prometheus.d.ts.map +1 -0
  324. package/dist/observability/prometheus.js +120 -0
  325. package/dist/observability/prometheus.js.map +1 -0
  326. package/dist/observability/propagation.d.ts +126 -0
  327. package/dist/observability/propagation.d.ts.map +1 -0
  328. package/dist/observability/propagation.js +234 -0
  329. package/dist/observability/propagation.js.map +1 -0
  330. package/dist/observability/query-latency.d.ts +243 -0
  331. package/dist/observability/query-latency.d.ts.map +1 -0
  332. package/dist/observability/query-latency.js +292 -0
  333. package/dist/observability/query-latency.js.map +1 -0
  334. package/dist/observability/query-performance.d.ts +169 -0
  335. package/dist/observability/query-performance.d.ts.map +1 -0
  336. package/dist/observability/query-performance.js +290 -0
  337. package/dist/observability/query-performance.js.map +1 -0
  338. package/dist/observability/storage-tier-metrics.d.ts +174 -0
  339. package/dist/observability/storage-tier-metrics.d.ts.map +1 -0
  340. package/dist/observability/storage-tier-metrics.js +306 -0
  341. package/dist/observability/storage-tier-metrics.js.map +1 -0
  342. package/dist/observability/tier-cost-optimizer.d.ts +155 -0
  343. package/dist/observability/tier-cost-optimizer.d.ts.map +1 -0
  344. package/dist/observability/tier-cost-optimizer.js +536 -0
  345. package/dist/observability/tier-cost-optimizer.js.map +1 -0
  346. package/dist/observability/tracer.d.ts +149 -0
  347. package/dist/observability/tracer.d.ts.map +1 -0
  348. package/dist/observability/tracer.js +435 -0
  349. package/dist/observability/tracer.js.map +1 -0
  350. package/dist/observability/types.d.ts +402 -0
  351. package/dist/observability/types.d.ts.map +1 -0
  352. package/dist/observability/types.js +103 -0
  353. package/dist/observability/types.js.map +1 -0
  354. package/dist/pglite/workers-pglite.d.ts +138 -0
  355. package/dist/pglite/workers-pglite.d.ts.map +1 -0
  356. package/dist/pglite/workers-pglite.js +143 -0
  357. package/dist/pglite/workers-pglite.js.map +1 -0
  358. package/dist/pglite-assets/pglite.data +0 -0
  359. package/dist/pglite-assets/pglite.wasm +0 -0
  360. package/dist/playground/index.d.ts +52 -0
  361. package/dist/playground/index.d.ts.map +1 -0
  362. package/dist/playground/index.js +55 -0
  363. package/dist/playground/index.js.map +1 -0
  364. package/dist/playground/keyboard-shortcuts.d.ts +116 -0
  365. package/dist/playground/keyboard-shortcuts.d.ts.map +1 -0
  366. package/dist/playground/keyboard-shortcuts.js +588 -0
  367. package/dist/playground/keyboard-shortcuts.js.map +1 -0
  368. package/dist/playground/playground.d.ts +82 -0
  369. package/dist/playground/playground.d.ts.map +1 -0
  370. package/dist/playground/playground.js +271 -0
  371. package/dist/playground/playground.js.map +1 -0
  372. package/dist/playground/query-executor.d.ts +115 -0
  373. package/dist/playground/query-executor.d.ts.map +1 -0
  374. package/dist/playground/query-executor.js +558 -0
  375. package/dist/playground/query-executor.js.map +1 -0
  376. package/dist/playground/query-history.d.ts +92 -0
  377. package/dist/playground/query-history.d.ts.map +1 -0
  378. package/dist/playground/query-history.js +259 -0
  379. package/dist/playground/query-history.js.map +1 -0
  380. package/dist/playground/result-formatter.d.ts +59 -0
  381. package/dist/playground/result-formatter.d.ts.map +1 -0
  382. package/dist/playground/result-formatter.js +341 -0
  383. package/dist/playground/result-formatter.js.map +1 -0
  384. package/dist/playground/sample-datasets.d.ts +77 -0
  385. package/dist/playground/sample-datasets.d.ts.map +1 -0
  386. package/dist/playground/sample-datasets.js +641 -0
  387. package/dist/playground/sample-datasets.js.map +1 -0
  388. package/dist/playground/sample-queries.d.ts +73 -0
  389. package/dist/playground/sample-queries.d.ts.map +1 -0
  390. package/dist/playground/sample-queries.js +1095 -0
  391. package/dist/playground/sample-queries.js.map +1 -0
  392. package/dist/playground/schema-explorer.d.ts +55 -0
  393. package/dist/playground/schema-explorer.d.ts.map +1 -0
  394. package/dist/playground/schema-explorer.js +473 -0
  395. package/dist/playground/schema-explorer.js.map +1 -0
  396. package/dist/playground/types.d.ts +430 -0
  397. package/dist/playground/types.d.ts.map +1 -0
  398. package/dist/playground/types.js +10 -0
  399. package/dist/playground/types.js.map +1 -0
  400. package/dist/readonly/cache-reader.d.ts +145 -0
  401. package/dist/readonly/cache-reader.d.ts.map +1 -0
  402. package/dist/readonly/cache-reader.js +198 -0
  403. package/dist/readonly/cache-reader.js.map +1 -0
  404. package/dist/readonly/config.d.ts +74 -0
  405. package/dist/readonly/config.d.ts.map +1 -0
  406. package/dist/readonly/config.js +67 -0
  407. package/dist/readonly/config.js.map +1 -0
  408. package/dist/readonly/index.d.ts +22 -0
  409. package/dist/readonly/index.d.ts.map +1 -0
  410. package/dist/readonly/index.js +17 -0
  411. package/dist/readonly/index.js.map +1 -0
  412. package/dist/readonly/pglite-wrapper.d.ts +82 -0
  413. package/dist/readonly/pglite-wrapper.d.ts.map +1 -0
  414. package/dist/readonly/pglite-wrapper.js +123 -0
  415. package/dist/readonly/pglite-wrapper.js.map +1 -0
  416. package/dist/readonly/worker.d.ts +142 -0
  417. package/dist/readonly/worker.d.ts.map +1 -0
  418. package/dist/readonly/worker.js +187 -0
  419. package/dist/readonly/worker.js.map +1 -0
  420. package/dist/readonly/write-blocker.d.ts +47 -0
  421. package/dist/readonly/write-blocker.d.ts.map +1 -0
  422. package/dist/readonly/write-blocker.js +136 -0
  423. package/dist/readonly/write-blocker.js.map +1 -0
  424. package/dist/recovery/disaster-recovery.d.ts +326 -0
  425. package/dist/recovery/disaster-recovery.d.ts.map +1 -0
  426. package/dist/recovery/disaster-recovery.js +799 -0
  427. package/dist/recovery/disaster-recovery.js.map +1 -0
  428. package/dist/recovery/index.d.ts +12 -0
  429. package/dist/recovery/index.d.ts.map +1 -0
  430. package/dist/recovery/index.js +12 -0
  431. package/dist/recovery/index.js.map +1 -0
  432. package/dist/recovery/parquet-parser.d.ts +321 -0
  433. package/dist/recovery/parquet-parser.d.ts.map +1 -0
  434. package/dist/recovery/parquet-parser.js +797 -0
  435. package/dist/recovery/parquet-parser.js.map +1 -0
  436. package/dist/retention/index.d.ts +50 -0
  437. package/dist/retention/index.d.ts.map +1 -0
  438. package/dist/retention/index.js +50 -0
  439. package/dist/retention/index.js.map +1 -0
  440. package/dist/retention/policy.d.ts +344 -0
  441. package/dist/retention/policy.d.ts.map +1 -0
  442. package/dist/retention/policy.js +472 -0
  443. package/dist/retention/policy.js.map +1 -0
  444. package/dist/retention/purger.d.ts +187 -0
  445. package/dist/retention/purger.d.ts.map +1 -0
  446. package/dist/retention/purger.js +411 -0
  447. package/dist/retention/purger.js.map +1 -0
  448. package/dist/rls/auth-integration.d.ts +280 -0
  449. package/dist/rls/auth-integration.d.ts.map +1 -0
  450. package/dist/rls/auth-integration.js +399 -0
  451. package/dist/rls/auth-integration.js.map +1 -0
  452. package/dist/rls/generator.d.ts +249 -0
  453. package/dist/rls/generator.d.ts.map +1 -0
  454. package/dist/rls/generator.js +495 -0
  455. package/dist/rls/generator.js.map +1 -0
  456. package/dist/rls/index.d.ts +26 -0
  457. package/dist/rls/index.d.ts.map +1 -0
  458. package/dist/rls/index.js +58 -0
  459. package/dist/rls/index.js.map +1 -0
  460. package/dist/rls/policy.d.ts +116 -0
  461. package/dist/rls/policy.d.ts.map +1 -0
  462. package/dist/rls/policy.js +77 -0
  463. package/dist/rls/policy.js.map +1 -0
  464. package/dist/rls/validator.d.ts +155 -0
  465. package/dist/rls/validator.d.ts.map +1 -0
  466. package/dist/rls/validator.js +792 -0
  467. package/dist/rls/validator.js.map +1 -0
  468. package/dist/routing/adaptive-router.d.ts +317 -0
  469. package/dist/routing/adaptive-router.d.ts.map +1 -0
  470. package/dist/routing/adaptive-router.js +554 -0
  471. package/dist/routing/adaptive-router.js.map +1 -0
  472. package/dist/routing/circuit-breaker.d.ts +339 -0
  473. package/dist/routing/circuit-breaker.d.ts.map +1 -0
  474. package/dist/routing/circuit-breaker.js +620 -0
  475. package/dist/routing/circuit-breaker.js.map +1 -0
  476. package/dist/routing/cost-metrics.d.ts +133 -0
  477. package/dist/routing/cost-metrics.d.ts.map +1 -0
  478. package/dist/routing/cost-metrics.js +259 -0
  479. package/dist/routing/cost-metrics.js.map +1 -0
  480. package/dist/routing/do-connection-pool.d.ts +243 -0
  481. package/dist/routing/do-connection-pool.d.ts.map +1 -0
  482. package/dist/routing/do-connection-pool.js +572 -0
  483. package/dist/routing/do-connection-pool.js.map +1 -0
  484. package/dist/routing/index.d.ts +59 -0
  485. package/dist/routing/index.d.ts.map +1 -0
  486. package/dist/routing/index.js +59 -0
  487. package/dist/routing/index.js.map +1 -0
  488. package/dist/routing/query-complexity-estimator.d.ts +73 -0
  489. package/dist/routing/query-complexity-estimator.d.ts.map +1 -0
  490. package/dist/routing/query-complexity-estimator.js +327 -0
  491. package/dist/routing/query-complexity-estimator.js.map +1 -0
  492. package/dist/routing/request-coalescing.d.ts +178 -0
  493. package/dist/routing/request-coalescing.d.ts.map +1 -0
  494. package/dist/routing/request-coalescing.js +325 -0
  495. package/dist/routing/request-coalescing.js.map +1 -0
  496. package/dist/routing/runtime-router.d.ts +107 -0
  497. package/dist/routing/runtime-router.d.ts.map +1 -0
  498. package/dist/routing/runtime-router.js +246 -0
  499. package/dist/routing/runtime-router.js.map +1 -0
  500. package/dist/routing/tenant-router.d.ts +848 -0
  501. package/dist/routing/tenant-router.d.ts.map +1 -0
  502. package/dist/routing/tenant-router.js +1056 -0
  503. package/dist/routing/tenant-router.js.map +1 -0
  504. package/dist/routing/websocket-pool.d.ts +119 -0
  505. package/dist/routing/websocket-pool.d.ts.map +1 -0
  506. package/dist/routing/websocket-pool.js +436 -0
  507. package/dist/routing/websocket-pool.js.map +1 -0
  508. package/dist/storage/cache-layer.d.ts +159 -0
  509. package/dist/storage/cache-layer.d.ts.map +1 -0
  510. package/dist/storage/cache-layer.js +245 -0
  511. package/dist/storage/cache-layer.js.map +1 -0
  512. package/dist/storage/cost-aware-tiering.d.ts +258 -0
  513. package/dist/storage/cost-aware-tiering.d.ts.map +1 -0
  514. package/dist/storage/cost-aware-tiering.js +526 -0
  515. package/dist/storage/cost-aware-tiering.js.map +1 -0
  516. package/dist/storage/index.d.ts +87 -0
  517. package/dist/storage/index.d.ts.map +1 -0
  518. package/dist/storage/index.js +78 -0
  519. package/dist/storage/index.js.map +1 -0
  520. package/dist/storage/interfaces.d.ts +856 -0
  521. package/dist/storage/interfaces.d.ts.map +1 -0
  522. package/dist/storage/interfaces.js +69 -0
  523. package/dist/storage/interfaces.js.map +1 -0
  524. package/dist/storage/r2-layer.d.ts +226 -0
  525. package/dist/storage/r2-layer.d.ts.map +1 -0
  526. package/dist/storage/r2-layer.js +307 -0
  527. package/dist/storage/r2-layer.js.map +1 -0
  528. package/dist/storage/r2-overflow.d.ts +344 -0
  529. package/dist/storage/r2-overflow.d.ts.map +1 -0
  530. package/dist/storage/r2-overflow.js +730 -0
  531. package/dist/storage/r2-overflow.js.map +1 -0
  532. package/dist/storage/r2-page-vfs.d.ts +374 -0
  533. package/dist/storage/r2-page-vfs.d.ts.map +1 -0
  534. package/dist/storage/r2-page-vfs.js +754 -0
  535. package/dist/storage/r2-page-vfs.js.map +1 -0
  536. package/dist/storage/swr-cache.d.ts +181 -0
  537. package/dist/storage/swr-cache.d.ts.map +1 -0
  538. package/dist/storage/swr-cache.js +295 -0
  539. package/dist/storage/swr-cache.js.map +1 -0
  540. package/dist/storage/tiered-orchestrator.d.ts +951 -0
  541. package/dist/storage/tiered-orchestrator.d.ts.map +1 -0
  542. package/dist/storage/tiered-orchestrator.js +1731 -0
  543. package/dist/storage/tiered-orchestrator.js.map +1 -0
  544. package/dist/storage/tiered-vfs-swr.d.ts +279 -0
  545. package/dist/storage/tiered-vfs-swr.d.ts.map +1 -0
  546. package/dist/storage/tiered-vfs-swr.js +584 -0
  547. package/dist/storage/tiered-vfs-swr.js.map +1 -0
  548. package/dist/storage/tiered-vfs.d.ts +405 -0
  549. package/dist/storage/tiered-vfs.d.ts.map +1 -0
  550. package/dist/storage/tiered-vfs.js +833 -0
  551. package/dist/storage/tiered-vfs.js.map +1 -0
  552. package/dist/streaming/backpressure-controller.d.ts +173 -0
  553. package/dist/streaming/backpressure-controller.d.ts.map +1 -0
  554. package/dist/streaming/backpressure-controller.js +344 -0
  555. package/dist/streaming/backpressure-controller.js.map +1 -0
  556. package/dist/streaming/buffer-pool.d.ts +241 -0
  557. package/dist/streaming/buffer-pool.d.ts.map +1 -0
  558. package/dist/streaming/buffer-pool.js +381 -0
  559. package/dist/streaming/buffer-pool.js.map +1 -0
  560. package/dist/streaming/cdc-iceberg-connector.d.ts +272 -0
  561. package/dist/streaming/cdc-iceberg-connector.d.ts.map +1 -0
  562. package/dist/streaming/cdc-iceberg-connector.js +408 -0
  563. package/dist/streaming/cdc-iceberg-connector.js.map +1 -0
  564. package/dist/streaming/index.d.ts +111 -0
  565. package/dist/streaming/index.d.ts.map +1 -0
  566. package/dist/streaming/index.js +128 -0
  567. package/dist/streaming/index.js.map +1 -0
  568. package/dist/streaming/live-cdc-stream.d.ts +400 -0
  569. package/dist/streaming/live-cdc-stream.d.ts.map +1 -0
  570. package/dist/streaming/live-cdc-stream.js +703 -0
  571. package/dist/streaming/live-cdc-stream.js.map +1 -0
  572. package/dist/streaming/memory-bounded-stream.d.ts +207 -0
  573. package/dist/streaming/memory-bounded-stream.d.ts.map +1 -0
  574. package/dist/streaming/memory-bounded-stream.js +340 -0
  575. package/dist/streaming/memory-bounded-stream.js.map +1 -0
  576. package/dist/streaming/query-streamer.d.ts +379 -0
  577. package/dist/streaming/query-streamer.d.ts.map +1 -0
  578. package/dist/streaming/query-streamer.js +495 -0
  579. package/dist/streaming/query-streamer.js.map +1 -0
  580. package/dist/streaming/response-streaming.d.ts +203 -0
  581. package/dist/streaming/response-streaming.d.ts.map +1 -0
  582. package/dist/streaming/response-streaming.js +449 -0
  583. package/dist/streaming/response-streaming.js.map +1 -0
  584. package/dist/types/branded.d.ts +859 -0
  585. package/dist/types/branded.d.ts.map +1 -0
  586. package/dist/types/branded.js +891 -0
  587. package/dist/types/branded.js.map +1 -0
  588. package/dist/types/utilities.d.ts +757 -0
  589. package/dist/types/utilities.d.ts.map +1 -0
  590. package/dist/types/utilities.js +447 -0
  591. package/dist/types/utilities.js.map +1 -0
  592. package/dist/wal/replay-engine.d.ts +344 -0
  593. package/dist/wal/replay-engine.d.ts.map +1 -0
  594. package/dist/wal/replay-engine.js +975 -0
  595. package/dist/wal/replay-engine.js.map +1 -0
  596. package/dist/worker/__mocks__/capnweb.d.ts +13 -0
  597. package/dist/worker/__mocks__/capnweb.d.ts.map +1 -0
  598. package/dist/worker/__mocks__/capnweb.js +15 -0
  599. package/dist/worker/__mocks__/capnweb.js.map +1 -0
  600. package/dist/worker/__mocks__/cloudflare-workers.d.ts +31 -0
  601. package/dist/worker/__mocks__/cloudflare-workers.d.ts.map +1 -0
  602. package/dist/worker/__mocks__/cloudflare-workers.js +33 -0
  603. package/dist/worker/__mocks__/cloudflare-workers.js.map +1 -0
  604. package/dist/worker/__mocks__/pglite.data.d.ts +3 -0
  605. package/dist/worker/__mocks__/pglite.data.d.ts.map +1 -0
  606. package/dist/worker/__mocks__/pglite.data.js +20 -0
  607. package/dist/worker/__mocks__/pglite.data.js.map +1 -0
  608. package/dist/worker/__mocks__/pglite.wasm.d.ts +3 -0
  609. package/dist/worker/__mocks__/pglite.wasm.d.ts.map +1 -0
  610. package/dist/worker/__mocks__/pglite.wasm.js +30 -0
  611. package/dist/worker/__mocks__/pglite.wasm.js.map +1 -0
  612. package/dist/worker/auth-rate-limiter.d.ts +270 -0
  613. package/dist/worker/auth-rate-limiter.d.ts.map +1 -0
  614. package/dist/worker/auth-rate-limiter.js +332 -0
  615. package/dist/worker/auth-rate-limiter.js.map +1 -0
  616. package/dist/worker/auth.d.ts +345 -0
  617. package/dist/worker/auth.d.ts.map +1 -0
  618. package/dist/worker/auth.js +837 -0
  619. package/dist/worker/auth.js.map +1 -0
  620. package/dist/worker/cdc-backpressure.d.ts +338 -0
  621. package/dist/worker/cdc-backpressure.d.ts.map +1 -0
  622. package/dist/worker/cdc-backpressure.js +619 -0
  623. package/dist/worker/cdc-backpressure.js.map +1 -0
  624. package/dist/worker/cdc-sse.d.ts +277 -0
  625. package/dist/worker/cdc-sse.d.ts.map +1 -0
  626. package/dist/worker/cdc-sse.js +528 -0
  627. package/dist/worker/cdc-sse.js.map +1 -0
  628. package/dist/worker/cdc-websocket.d.ts +252 -0
  629. package/dist/worker/cdc-websocket.d.ts.map +1 -0
  630. package/dist/worker/cdc-websocket.js +940 -0
  631. package/dist/worker/cdc-websocket.js.map +1 -0
  632. package/dist/worker/cdc.d.ts +95 -0
  633. package/dist/worker/cdc.d.ts.map +1 -0
  634. package/dist/worker/cdc.js +211 -0
  635. package/dist/worker/cdc.js.map +1 -0
  636. package/dist/worker/concerns/auth-concern.d.ts +50 -0
  637. package/dist/worker/concerns/auth-concern.d.ts.map +1 -0
  638. package/dist/worker/concerns/auth-concern.js +131 -0
  639. package/dist/worker/concerns/auth-concern.js.map +1 -0
  640. package/dist/worker/concerns/cdc-concern.d.ts +99 -0
  641. package/dist/worker/concerns/cdc-concern.d.ts.map +1 -0
  642. package/dist/worker/concerns/cdc-concern.js +137 -0
  643. package/dist/worker/concerns/cdc-concern.js.map +1 -0
  644. package/dist/worker/concerns/index.d.ts +22 -0
  645. package/dist/worker/concerns/index.d.ts.map +1 -0
  646. package/dist/worker/concerns/index.js +13 -0
  647. package/dist/worker/concerns/index.js.map +1 -0
  648. package/dist/worker/concerns/query-execution-concern.d.ts +104 -0
  649. package/dist/worker/concerns/query-execution-concern.d.ts.map +1 -0
  650. package/dist/worker/concerns/query-execution-concern.js +95 -0
  651. package/dist/worker/concerns/query-execution-concern.js.map +1 -0
  652. package/dist/worker/concerns/storage-orchestration-concern.d.ts +78 -0
  653. package/dist/worker/concerns/storage-orchestration-concern.d.ts.map +1 -0
  654. package/dist/worker/concerns/storage-orchestration-concern.js +240 -0
  655. package/dist/worker/concerns/storage-orchestration-concern.js.map +1 -0
  656. package/dist/worker/do-auth-manager.d.ts +108 -0
  657. package/dist/worker/do-auth-manager.d.ts.map +1 -0
  658. package/dist/worker/do-auth-manager.js +212 -0
  659. package/dist/worker/do-auth-manager.js.map +1 -0
  660. package/dist/worker/do-pglite-manager.d.ts +137 -0
  661. package/dist/worker/do-pglite-manager.d.ts.map +1 -0
  662. package/dist/worker/do-pglite-manager.js +228 -0
  663. package/dist/worker/do-pglite-manager.js.map +1 -0
  664. package/dist/worker/do.d.ts +556 -0
  665. package/dist/worker/do.d.ts.map +1 -0
  666. package/dist/worker/do.js +1441 -0
  667. package/dist/worker/do.js.map +1 -0
  668. package/dist/worker/entry.d.ts +23 -0
  669. package/dist/worker/entry.d.ts.map +1 -0
  670. package/dist/worker/entry.js +362 -0
  671. package/dist/worker/entry.js.map +1 -0
  672. package/dist/worker/errors.d.ts +106 -0
  673. package/dist/worker/errors.d.ts.map +1 -0
  674. package/dist/worker/errors.js +178 -0
  675. package/dist/worker/errors.js.map +1 -0
  676. package/dist/worker/health-check-manager.d.ts +141 -0
  677. package/dist/worker/health-check-manager.d.ts.map +1 -0
  678. package/dist/worker/health-check-manager.js +145 -0
  679. package/dist/worker/health-check-manager.js.map +1 -0
  680. package/dist/worker/index.d.ts +60 -0
  681. package/dist/worker/index.d.ts.map +1 -0
  682. package/dist/worker/index.js +67 -0
  683. package/dist/worker/index.js.map +1 -0
  684. package/dist/worker/memory-pressure.d.ts +892 -0
  685. package/dist/worker/memory-pressure.d.ts.map +1 -0
  686. package/dist/worker/memory-pressure.js +1990 -0
  687. package/dist/worker/memory-pressure.js.map +1 -0
  688. package/dist/worker/migration-manager.d.ts +153 -0
  689. package/dist/worker/migration-manager.d.ts.map +1 -0
  690. package/dist/worker/migration-manager.js +461 -0
  691. package/dist/worker/migration-manager.js.map +1 -0
  692. package/dist/worker/plugin-manager.d.ts +147 -0
  693. package/dist/worker/plugin-manager.d.ts.map +1 -0
  694. package/dist/worker/plugin-manager.js +408 -0
  695. package/dist/worker/plugin-manager.js.map +1 -0
  696. package/dist/worker/proxy.d.ts +330 -0
  697. package/dist/worker/proxy.d.ts.map +1 -0
  698. package/dist/worker/proxy.js +504 -0
  699. package/dist/worker/proxy.js.map +1 -0
  700. package/dist/worker/query-execution-manager.d.ts +107 -0
  701. package/dist/worker/query-execution-manager.d.ts.map +1 -0
  702. package/dist/worker/query-execution-manager.js +155 -0
  703. package/dist/worker/query-execution-manager.js.map +1 -0
  704. package/dist/worker/query-executor.d.ts +163 -0
  705. package/dist/worker/query-executor.d.ts.map +1 -0
  706. package/dist/worker/query-executor.js +413 -0
  707. package/dist/worker/query-executor.js.map +1 -0
  708. package/dist/worker/query-stats-manager.d.ts +117 -0
  709. package/dist/worker/query-stats-manager.d.ts.map +1 -0
  710. package/dist/worker/query-stats-manager.js +162 -0
  711. package/dist/worker/query-stats-manager.js.map +1 -0
  712. package/dist/worker/result-handler.d.ts +192 -0
  713. package/dist/worker/result-handler.d.ts.map +1 -0
  714. package/dist/worker/result-handler.js +346 -0
  715. package/dist/worker/result-handler.js.map +1 -0
  716. package/dist/worker/routes.d.ts +135 -0
  717. package/dist/worker/routes.d.ts.map +1 -0
  718. package/dist/worker/routes.js +460 -0
  719. package/dist/worker/routes.js.map +1 -0
  720. package/dist/worker/rpc-methods-manager.d.ts +142 -0
  721. package/dist/worker/rpc-methods-manager.d.ts.map +1 -0
  722. package/dist/worker/rpc-methods-manager.js +195 -0
  723. package/dist/worker/rpc-methods-manager.js.map +1 -0
  724. package/dist/worker/rpc.d.ts +259 -0
  725. package/dist/worker/rpc.d.ts.map +1 -0
  726. package/dist/worker/rpc.js +398 -0
  727. package/dist/worker/rpc.js.map +1 -0
  728. package/dist/worker/schema-version.d.ts +209 -0
  729. package/dist/worker/schema-version.d.ts.map +1 -0
  730. package/dist/worker/schema-version.js +450 -0
  731. package/dist/worker/schema-version.js.map +1 -0
  732. package/dist/worker/session-manager.d.ts +282 -0
  733. package/dist/worker/session-manager.d.ts.map +1 -0
  734. package/dist/worker/session-manager.js +523 -0
  735. package/dist/worker/session-manager.js.map +1 -0
  736. package/dist/worker/shutdown-manager.d.ts +188 -0
  737. package/dist/worker/shutdown-manager.d.ts.map +1 -0
  738. package/dist/worker/shutdown-manager.js +347 -0
  739. package/dist/worker/shutdown-manager.js.map +1 -0
  740. package/dist/worker/sql-transform.d.ts +61 -0
  741. package/dist/worker/sql-transform.d.ts.map +1 -0
  742. package/dist/worker/sql-transform.js +312 -0
  743. package/dist/worker/sql-transform.js.map +1 -0
  744. package/dist/worker/types.d.ts +738 -0
  745. package/dist/worker/types.d.ts.map +1 -0
  746. package/dist/worker/types.js +6 -0
  747. package/dist/worker/types.js.map +1 -0
  748. package/dist/worker/user-routes.d.ts +76 -0
  749. package/dist/worker/user-routes.d.ts.map +1 -0
  750. package/dist/worker/user-routes.js +188 -0
  751. package/dist/worker/user-routes.js.map +1 -0
  752. package/dist/worker/wal-facade.d.ts +138 -0
  753. package/dist/worker/wal-facade.d.ts.map +1 -0
  754. package/dist/worker/wal-facade.js +184 -0
  755. package/dist/worker/wal-facade.js.map +1 -0
  756. package/dist/worker/wal-r2.d.ts +271 -0
  757. package/dist/worker/wal-r2.d.ts.map +1 -0
  758. package/dist/worker/wal-r2.js +689 -0
  759. package/dist/worker/wal-r2.js.map +1 -0
  760. package/dist/worker/wal-replay.d.ts +361 -0
  761. package/dist/worker/wal-replay.d.ts.map +1 -0
  762. package/dist/worker/wal-replay.js +628 -0
  763. package/dist/worker/wal-replay.js.map +1 -0
  764. package/dist/worker/wal-retention.d.ts +389 -0
  765. package/dist/worker/wal-retention.d.ts.map +1 -0
  766. package/dist/worker/wal-retention.js +763 -0
  767. package/dist/worker/wal-retention.js.map +1 -0
  768. package/dist/worker/wal.d.ts +278 -0
  769. package/dist/worker/wal.d.ts.map +1 -0
  770. package/dist/worker/wal.js +467 -0
  771. package/dist/worker/wal.js.map +1 -0
  772. package/dist/worker/websocket.d.ts +85 -0
  773. package/dist/worker/websocket.d.ts.map +1 -0
  774. package/dist/worker/websocket.js +227 -0
  775. package/dist/worker/websocket.js.map +1 -0
  776. package/package.json +108 -0
  777. package/src/cdc/change-stream.ts +137 -0
  778. package/src/cdc/filter.ts +646 -0
  779. package/src/cdc/index.ts +112 -0
  780. package/src/cdc/resume-token.ts +280 -0
  781. package/src/cdc/transport/index.ts +7 -0
  782. package/src/cdc/transport/sse.ts +723 -0
  783. package/src/cdc/transport/websocket.ts +873 -0
  784. package/src/cdc/types.ts +346 -0
  785. package/src/config/index.ts +25 -0
  786. package/src/config/memory.ts +177 -0
  787. package/src/config/storage.ts +204 -0
  788. package/src/config/streaming.ts +147 -0
  789. package/src/config/timeouts.ts +221 -0
  790. package/src/extensions/config.test.ts +187 -0
  791. package/src/extensions/config.ts +278 -0
  792. package/src/extensions/geo.test.ts +455 -0
  793. package/src/extensions/geo.ts +858 -0
  794. package/src/extensions/index.test.ts +259 -0
  795. package/src/extensions/index.ts +227 -0
  796. package/src/extensions/loader.test.ts +555 -0
  797. package/src/extensions/loader.ts +588 -0
  798. package/src/extensions/pgmq-lite.test.ts +727 -0
  799. package/src/extensions/pgmq-lite.ts +770 -0
  800. package/src/extensions/plugins.test.ts +528 -0
  801. package/src/extensions/plugins.ts +718 -0
  802. package/src/extensions/registry.test.ts +202 -0
  803. package/src/extensions/registry.ts +267 -0
  804. package/src/extensions/vector.test.ts +195 -0
  805. package/src/extensions/vector.ts +217 -0
  806. package/src/iceberg/SCHEDULER.md +580 -0
  807. package/src/iceberg/analytics.test.ts +703 -0
  808. package/src/iceberg/analytics.ts +727 -0
  809. package/src/iceberg/catalog-api.test.ts +838 -0
  810. package/src/iceberg/catalog-api.ts +520 -0
  811. package/src/iceberg/catalog.test.ts +680 -0
  812. package/src/iceberg/catalog.ts +1007 -0
  813. package/src/iceberg/iceberg.test.ts +705 -0
  814. package/src/iceberg/index.ts +406 -0
  815. package/src/iceberg/metadata.test.ts +632 -0
  816. package/src/iceberg/metadata.ts +649 -0
  817. package/src/iceberg/optimizer.test.ts +868 -0
  818. package/src/iceberg/optimizer.ts +1287 -0
  819. package/src/iceberg/parquet.test.ts +899 -0
  820. package/src/iceberg/parquet.ts +1640 -0
  821. package/src/iceberg/r2-organization.test.ts +615 -0
  822. package/src/iceberg/r2-organization.ts +951 -0
  823. package/src/iceberg/scheduler-do-example.ts +364 -0
  824. package/src/iceberg/scheduler.test.ts +861 -0
  825. package/src/iceberg/scheduler.ts +1201 -0
  826. package/src/iceberg/schema.test.ts +547 -0
  827. package/src/iceberg/schema.ts +616 -0
  828. package/src/iceberg/snapshot-manager.test.ts +919 -0
  829. package/src/iceberg/snapshot-manager.ts +1369 -0
  830. package/src/iceberg/sql-router.test.ts +334 -0
  831. package/src/iceberg/sql-router.ts +337 -0
  832. package/src/iceberg/test-fixtures.ts +605 -0
  833. package/src/iceberg/time-travel-api.test.ts +1029 -0
  834. package/src/iceberg/time-travel-api.ts +731 -0
  835. package/src/iceberg/time-travel.test.ts +1218 -0
  836. package/src/iceberg/time-travel.ts +1052 -0
  837. package/src/iceberg/transformer.test.ts +689 -0
  838. package/src/iceberg/transformer.ts +1029 -0
  839. package/src/iceberg/types.ts +373 -0
  840. package/src/iceberg/writer.test.ts +716 -0
  841. package/src/iceberg/writer.ts +590 -0
  842. package/src/index.ts +212 -0
  843. package/src/lineage/index.ts +42 -0
  844. package/src/lineage/integration.ts +334 -0
  845. package/src/lineage/tracker.ts +1618 -0
  846. package/src/lineage/types.ts +354 -0
  847. package/src/middleware/index.ts +36 -0
  848. package/src/middleware/rate-limit-concurrent.test.ts +794 -0
  849. package/src/middleware/rate-limit.test.ts +1568 -0
  850. package/src/middleware/rate-limit.ts +840 -0
  851. package/src/migration-tooling/external-migration.test.ts +1864 -0
  852. package/src/migration-tooling/external-migration.ts +2355 -0
  853. package/src/migration-tooling/index.ts +19 -0
  854. package/src/migrations/ARCHITECTURE.md +474 -0
  855. package/src/migrations/PROGRESS_TRACKING.md +485 -0
  856. package/src/migrations/auto-migrator.test.ts +732 -0
  857. package/src/migrations/auto-migrator.ts +531 -0
  858. package/src/migrations/bulk-orchestrator.test.ts +801 -0
  859. package/src/migrations/bulk-orchestrator.ts +1039 -0
  860. package/src/migrations/compatibility.test.ts +958 -0
  861. package/src/migrations/compatibility.ts +902 -0
  862. package/src/migrations/do-migrations.test.ts +2620 -0
  863. package/src/migrations/do-migrations.ts +1289 -0
  864. package/src/migrations/do-migrations.types.ts +715 -0
  865. package/src/migrations/drizzle-compat.test.ts +210 -0
  866. package/src/migrations/drizzle-compat.ts +337 -0
  867. package/src/migrations/index.ts +334 -0
  868. package/src/migrations/migration-api.test.ts +438 -0
  869. package/src/migrations/migration-api.ts +704 -0
  870. package/src/migrations/progress-tracker-do.ts +518 -0
  871. package/src/migrations/progress-tracker-kv.ts +305 -0
  872. package/src/migrations/progress-tracker.test.ts +937 -0
  873. package/src/migrations/progress-tracker.ts +665 -0
  874. package/src/migrations/registry.test.ts +331 -0
  875. package/src/migrations/registry.ts +468 -0
  876. package/src/migrations/rollback.test.ts +644 -0
  877. package/src/migrations/runner.test.ts +807 -0
  878. package/src/migrations/runner.test.ts.backup +759 -0
  879. package/src/migrations/runner.ts +1459 -0
  880. package/src/migrations/schema-generator.test.ts +649 -0
  881. package/src/migrations/schema-generator.ts +513 -0
  882. package/src/migrations/testing.ts +1037 -0
  883. package/src/migrations/types.ts +573 -0
  884. package/src/migrations/validator.test.ts +660 -0
  885. package/src/migrations/validator.ts +741 -0
  886. package/src/observability/alerting.test.ts +1133 -0
  887. package/src/observability/alerting.ts +455 -0
  888. package/src/observability/analytics-engine.ts +733 -0
  889. package/src/observability/cost-metrics.ts +804 -0
  890. package/src/observability/cross-do-tracing.test.ts +516 -0
  891. package/src/observability/cross-do-tracing.ts +588 -0
  892. package/src/observability/dashboards/postgres-do-overview.json +1656 -0
  893. package/src/observability/error-rate-collector.test.ts +977 -0
  894. package/src/observability/error-rate-collector.ts +518 -0
  895. package/src/observability/exporters.test.ts +365 -0
  896. package/src/observability/exporters.ts +650 -0
  897. package/src/observability/health-check.test.ts +353 -0
  898. package/src/observability/health-check.ts +341 -0
  899. package/src/observability/index.test.ts +298 -0
  900. package/src/observability/index.ts +885 -0
  901. package/src/observability/instrumentation.test.ts +428 -0
  902. package/src/observability/instrumentation.ts +788 -0
  903. package/src/observability/memory-metrics.test.ts +355 -0
  904. package/src/observability/memory-metrics.ts +990 -0
  905. package/src/observability/metrics-endpoint.test.ts +402 -0
  906. package/src/observability/metrics-endpoint.ts +374 -0
  907. package/src/observability/metrics.test.ts +291 -0
  908. package/src/observability/metrics.ts +315 -0
  909. package/src/observability/observability-features.ts +1296 -0
  910. package/src/observability/prometheus.test.ts +292 -0
  911. package/src/observability/prometheus.ts +170 -0
  912. package/src/observability/propagation.test.ts +417 -0
  913. package/src/observability/propagation.ts +294 -0
  914. package/src/observability/query-latency.ts +586 -0
  915. package/src/observability/query-performance.test.ts +406 -0
  916. package/src/observability/query-performance.ts +491 -0
  917. package/src/observability/storage-tier-metrics.test.ts +633 -0
  918. package/src/observability/storage-tier-metrics.ts +570 -0
  919. package/src/observability/tier-cost-optimizer.ts +740 -0
  920. package/src/observability/tracer.test.ts +346 -0
  921. package/src/observability/tracer.ts +585 -0
  922. package/src/observability/types.test.ts +726 -0
  923. package/src/observability/types.ts +434 -0
  924. package/src/pglite/auto-demotion.test.ts +477 -0
  925. package/src/pglite/auto-demotion.ts +385 -0
  926. package/src/pglite/auto-promotion.test.ts +824 -0
  927. package/src/pglite/auto-promotion.ts +547 -0
  928. package/src/pglite/cache-layer.test.ts +469 -0
  929. package/src/pglite/cache-layer.ts +271 -0
  930. package/src/pglite/cold-start-manager.ts +1260 -0
  931. package/src/pglite/cold-start-optimizer.test.ts +937 -0
  932. package/src/pglite/cold-start-optimizer.ts +1895 -0
  933. package/src/pglite/dovfs-adapter.ts +1122 -0
  934. package/src/pglite/dovfs.ts +1258 -0
  935. package/src/pglite/etag-cache.test.ts +844 -0
  936. package/src/pglite/etag-cache.ts +526 -0
  937. package/src/pglite/index.ts +442 -0
  938. package/src/pglite/init.test.ts +455 -0
  939. package/src/pglite/init.ts +574 -0
  940. package/src/pglite/lifecycle.test.ts +599 -0
  941. package/src/pglite/lifecycle.ts +704 -0
  942. package/src/pglite/parallel-loader.test.ts +586 -0
  943. package/src/pglite/parallel-loader.ts +481 -0
  944. package/src/pglite/production-pglite.test.ts +666 -0
  945. package/src/pglite/production-pglite.ts +537 -0
  946. package/src/pglite/query-executor.ts +614 -0
  947. package/src/pglite/r2-layer.test.ts +501 -0
  948. package/src/pglite/r2-layer.ts +322 -0
  949. package/src/pglite/tiered-init.test.ts +725 -0
  950. package/src/pglite/tiered-init.ts +556 -0
  951. package/src/pglite/tiered-vfs.test.ts +726 -0
  952. package/src/pglite/tiered-vfs.ts +33 -0
  953. package/src/pglite/tiering-stats.test.ts +531 -0
  954. package/src/pglite/tiering-stats.ts +407 -0
  955. package/src/pglite/transaction-hooks.ts +343 -0
  956. package/src/pglite/warm-loader.test.ts +1701 -0
  957. package/src/pglite/warm-loader.ts +528 -0
  958. package/src/pglite/workers-pglite.ts +224 -0
  959. package/src/pglite-assets/pglite.data +0 -0
  960. package/src/pglite-assets/pglite.wasm +0 -0
  961. package/src/pglite.d.ts +47 -0
  962. package/src/playground/index.ts +137 -0
  963. package/src/playground/keyboard-shortcuts.ts +677 -0
  964. package/src/playground/playground.ts +323 -0
  965. package/src/playground/query-executor.ts +669 -0
  966. package/src/playground/query-history.ts +328 -0
  967. package/src/playground/result-formatter.ts +420 -0
  968. package/src/playground/sample-datasets.ts +674 -0
  969. package/src/playground/sample-queries.ts +1168 -0
  970. package/src/playground/schema-explorer.ts +558 -0
  971. package/src/playground/types.ts +518 -0
  972. package/src/readonly/cache-reader.test.ts +460 -0
  973. package/src/readonly/cache-reader.ts +313 -0
  974. package/src/readonly/config.test.ts +187 -0
  975. package/src/readonly/config.ts +128 -0
  976. package/src/readonly/index.ts +50 -0
  977. package/src/readonly/pglite-wrapper.test.ts +278 -0
  978. package/src/readonly/pglite-wrapper.ts +184 -0
  979. package/src/readonly/worker.test.ts +533 -0
  980. package/src/readonly/worker.ts +341 -0
  981. package/src/readonly/write-blocker.test.ts +459 -0
  982. package/src/readonly/write-blocker.ts +175 -0
  983. package/src/recovery/disaster-recovery.test.ts +618 -0
  984. package/src/recovery/disaster-recovery.ts +1181 -0
  985. package/src/recovery/index.ts +43 -0
  986. package/src/recovery/parquet-parser.ts +974 -0
  987. package/src/retention/index.ts +74 -0
  988. package/src/retention/policy.test.ts +571 -0
  989. package/src/retention/policy.ts +774 -0
  990. package/src/retention/purger.test.ts +465 -0
  991. package/src/retention/purger.ts +558 -0
  992. package/src/rls/auth-integration.test.ts +752 -0
  993. package/src/rls/auth-integration.ts +533 -0
  994. package/src/rls/generator.test.ts +829 -0
  995. package/src/rls/generator.ts +573 -0
  996. package/src/rls/index.ts +128 -0
  997. package/src/rls/policy.ts +208 -0
  998. package/src/rls/rls.test.ts +1071 -0
  999. package/src/rls/validator.test.ts +930 -0
  1000. package/src/rls/validator.ts +895 -0
  1001. package/src/routing/adaptive-router.test.ts +884 -0
  1002. package/src/routing/adaptive-router.ts +845 -0
  1003. package/src/routing/circuit-breaker.test.ts +1505 -0
  1004. package/src/routing/circuit-breaker.ts +852 -0
  1005. package/src/routing/cost-metrics.test.ts +565 -0
  1006. package/src/routing/cost-metrics.ts +408 -0
  1007. package/src/routing/do-connection-pool.test.ts +1109 -0
  1008. package/src/routing/do-connection-pool.ts +828 -0
  1009. package/src/routing/index.ts +158 -0
  1010. package/src/routing/query-complexity-estimator.test.ts +356 -0
  1011. package/src/routing/query-complexity-estimator.ts +444 -0
  1012. package/src/routing/request-coalescing.test.ts +738 -0
  1013. package/src/routing/request-coalescing.ts +475 -0
  1014. package/src/routing/runtime-router.test.ts +436 -0
  1015. package/src/routing/runtime-router.ts +357 -0
  1016. package/src/routing/tenant-router.test.ts +2493 -0
  1017. package/src/routing/tenant-router.ts +1908 -0
  1018. package/src/routing/websocket-pool.test.ts +551 -0
  1019. package/src/routing/websocket-pool.ts +577 -0
  1020. package/src/storage/access-pattern-tracker.test.ts +874 -0
  1021. package/src/storage/cache-layer.test.ts +560 -0
  1022. package/src/storage/cache-layer.ts +328 -0
  1023. package/src/storage/cost-aware-tiering.test.ts +652 -0
  1024. package/src/storage/cost-aware-tiering.ts +794 -0
  1025. package/src/storage/do-sqlite-blobs.test.ts +937 -0
  1026. package/src/storage/index.ts +272 -0
  1027. package/src/storage/interfaces.ts +974 -0
  1028. package/src/storage/r2-layer.test.ts +653 -0
  1029. package/src/storage/r2-layer.ts +434 -0
  1030. package/src/storage/r2-overflow.ts +920 -0
  1031. package/src/storage/r2-page-vfs.test.ts +2348 -0
  1032. package/src/storage/r2-page-vfs.ts +1054 -0
  1033. package/src/storage/swr-cache.test.ts +832 -0
  1034. package/src/storage/swr-cache.ts +398 -0
  1035. package/src/storage/swr-tiered-integration.test.ts +617 -0
  1036. package/src/storage/tiered-orchestrator.test.ts +2441 -0
  1037. package/src/storage/tiered-orchestrator.ts +2081 -0
  1038. package/src/storage/tiered-vfs-swr.test.ts +736 -0
  1039. package/src/storage/tiered-vfs-swr.ts +735 -0
  1040. package/src/storage/tiered-vfs.test.ts +793 -0
  1041. package/src/storage/tiered-vfs.ts +1082 -0
  1042. package/src/streaming/backpressure-controller.ts +452 -0
  1043. package/src/streaming/buffer-pool.ts +484 -0
  1044. package/src/streaming/cdc-iceberg-connector.ts +605 -0
  1045. package/src/streaming/index.ts +225 -0
  1046. package/src/streaming/live-cdc-stream.ts +985 -0
  1047. package/src/streaming/memory-bounded-stream.ts +443 -0
  1048. package/src/streaming/query-streamer.ts +662 -0
  1049. package/src/streaming/response-streaming.ts +557 -0
  1050. package/src/types/branded.ts +1075 -0
  1051. package/src/types/branded.ts.backup +273 -0
  1052. package/src/types/utilities.ts +1023 -0
  1053. package/src/types/wasm.d.ts +30 -0
  1054. package/src/validation/typed-errors.test.ts +420 -0
  1055. package/src/wal/replay-engine.ts +1264 -0
  1056. package/src/worker/__mocks__/capnweb.ts +15 -0
  1057. package/src/worker/__mocks__/pglite.data.ts +22 -0
  1058. package/src/worker/__mocks__/pglite.wasm.ts +33 -0
  1059. package/src/worker/auth-rate-limiter.test.ts +272 -0
  1060. package/src/worker/auth-rate-limiter.ts +448 -0
  1061. package/src/worker/auth.security-red.test.ts +1236 -0
  1062. package/src/worker/auth.security.test.ts +822 -0
  1063. package/src/worker/auth.test.ts +469 -0
  1064. package/src/worker/auth.ts +1104 -0
  1065. package/src/worker/cdc-backpressure.test.ts +726 -0
  1066. package/src/worker/cdc-backpressure.ts +866 -0
  1067. package/src/worker/cdc-sse.test.ts +780 -0
  1068. package/src/worker/cdc-sse.ts +728 -0
  1069. package/src/worker/cdc-websocket.ts +1229 -0
  1070. package/src/worker/cdc-ws.test.ts +1009 -0
  1071. package/src/worker/cdc.test.ts +327 -0
  1072. package/src/worker/cdc.ts +289 -0
  1073. package/src/worker/concerns/auth-concern.ts +179 -0
  1074. package/src/worker/concerns/cdc-concern.ts +247 -0
  1075. package/src/worker/concerns/index.ts +58 -0
  1076. package/src/worker/concerns/query-execution-concern.ts +194 -0
  1077. package/src/worker/concerns/storage-orchestration-concern.ts +373 -0
  1078. package/src/worker/discriminated-types.test.ts +280 -0
  1079. package/src/worker/do-auth-manager.ts +257 -0
  1080. package/src/worker/do-decomposition.test.ts +1236 -0
  1081. package/src/worker/do-pglite-manager.ts +302 -0
  1082. package/src/worker/do.test.ts +2254 -0
  1083. package/src/worker/do.ts +1878 -0
  1084. package/src/worker/entry.ts +417 -0
  1085. package/src/worker/errors.ts +285 -0
  1086. package/src/worker/health-check-manager.test.ts +261 -0
  1087. package/src/worker/health-check-manager.ts +231 -0
  1088. package/src/worker/index.ts +389 -0
  1089. package/src/worker/memory-pressure.test.ts +1460 -0
  1090. package/src/worker/memory-pressure.ts +2650 -0
  1091. package/src/worker/migration-manager.ts +582 -0
  1092. package/src/worker/neon-compat.test.ts +332 -0
  1093. package/src/worker/plugin-manager.ts +485 -0
  1094. package/src/worker/postgres.do-rpc.d.ts +76 -0
  1095. package/src/worker/proxy.ts +694 -0
  1096. package/src/worker/query-execution-manager.test.ts +303 -0
  1097. package/src/worker/query-execution-manager.ts +219 -0
  1098. package/src/worker/query-executor.test.ts +282 -0
  1099. package/src/worker/query-executor.ts +560 -0
  1100. package/src/worker/query-stats-manager.ts +229 -0
  1101. package/src/worker/result-handler.test.ts +364 -0
  1102. package/src/worker/result-handler.ts +510 -0
  1103. package/src/worker/routes.test.ts +795 -0
  1104. package/src/worker/routes.ts +650 -0
  1105. package/src/worker/rpc-methods-manager.test.ts +326 -0
  1106. package/src/worker/rpc-methods-manager.ts +276 -0
  1107. package/src/worker/rpc.ts +524 -0
  1108. package/src/worker/schema-version.ts +605 -0
  1109. package/src/worker/session-manager.test.ts +506 -0
  1110. package/src/worker/session-manager.ts +732 -0
  1111. package/src/worker/shutdown-manager.ts +469 -0
  1112. package/src/worker/sql-transform.test.ts +286 -0
  1113. package/src/worker/sql-transform.ts +368 -0
  1114. package/src/worker/supabase-compat.test.ts +621 -0
  1115. package/src/worker/types.test.ts +292 -0
  1116. package/src/worker/types.ts +873 -0
  1117. package/src/worker/user-routes.test.ts +703 -0
  1118. package/src/worker/user-routes.ts +303 -0
  1119. package/src/worker/wal-facade.ts +235 -0
  1120. package/src/worker/wal-r2.test.ts +570 -0
  1121. package/src/worker/wal-r2.ts +930 -0
  1122. package/src/worker/wal-replay.test.ts +845 -0
  1123. package/src/worker/wal-replay.ts +897 -0
  1124. package/src/worker/wal-retention.test.ts +758 -0
  1125. package/src/worker/wal-retention.ts +1075 -0
  1126. package/src/worker/wal.test.ts +618 -0
  1127. package/src/worker/wal.ts +697 -0
  1128. package/src/worker/websocket.test.ts +296 -0
  1129. package/src/worker/websocket.ts +284 -0
@@ -0,0 +1,990 @@
1
+ /**
2
+ * Memory Metrics Collector
3
+ *
4
+ * Tracks WASM heap usage and memory pressure for Cloudflare Workers.
5
+ * Critical for monitoring within the 128MB Worker limit.
6
+ */
7
+
8
+ import type { MetricsCollector } from './types'
9
+ import {
10
+ WORKER_MEMORY_LIMIT_BYTES,
11
+ WASM_PAGE_SIZE_BYTES,
12
+ DEFAULT_WARNING_THRESHOLD_RATIO,
13
+ DEFAULT_CRITICAL_THRESHOLD_RATIO,
14
+ } from '../config/memory'
15
+
16
+ // ============================================================================
17
+ // Re-exported Constants (for backward compatibility)
18
+ // ============================================================================
19
+
20
+ /** @deprecated Import from '@dotdo/postgres/config/memory' instead */
21
+ export { WORKER_MEMORY_LIMIT_BYTES, WASM_PAGE_SIZE_BYTES }
22
+
23
+ /** Default warning threshold (70% of limit) */
24
+ export const DEFAULT_WARNING_THRESHOLD = DEFAULT_WARNING_THRESHOLD_RATIO
25
+
26
+ /** Default critical threshold (90% of limit) */
27
+ export const DEFAULT_CRITICAL_THRESHOLD = DEFAULT_CRITICAL_THRESHOLD_RATIO
28
+
29
+ // ============================================================================
30
+ // Types
31
+ // ============================================================================
32
+
33
+ export enum MemoryPressureLevel {
34
+ NORMAL = 'normal',
35
+ WARNING = 'warning',
36
+ CRITICAL = 'critical',
37
+ }
38
+
39
+ export interface WasmHeapInfo {
40
+ size: number
41
+ used: number
42
+ }
43
+
44
+ export interface MemorySnapshot {
45
+ heapSizeBytes: number
46
+ heapUsedBytes: number
47
+ limitBytes: number
48
+ usageRatio: number
49
+ availableBytes: number
50
+ pressureLevel: MemoryPressureLevel
51
+ timestamp: number
52
+ /** WASM memory pages (64KB each) */
53
+ wasmPages: number
54
+ /** Utilization ratio of WASM heap (used/size) */
55
+ wasmUtilizationRatio: number
56
+ /** Ratio against Worker memory limit (used/128MB) */
57
+ workerLimitRatio: number
58
+ /** Bytes remaining before OOM (128MB - used) */
59
+ bytesUntilOOM: number
60
+ }
61
+
62
+ export interface MemoryHistory {
63
+ snapshots: MemorySnapshot[]
64
+ avgUsageBytes: number
65
+ peakUsageBytes: number
66
+ trend: number
67
+ }
68
+
69
+ export interface HeapGrowthRate {
70
+ bytesPerSecond: number
71
+ percentageGrowth: number
72
+ isGrowing: boolean
73
+ }
74
+
75
+ export interface HeapAllocationHistogram {
76
+ buckets: { min: number; max: number; count: number }[]
77
+ totalSamples: number
78
+ }
79
+
80
+ export interface OOMPrediction {
81
+ estimatedMs: number
82
+ confidence: number
83
+ willOOM: boolean
84
+ }
85
+
86
+ export interface MemoryVelocity {
87
+ bytesPerMs: number
88
+ accelerating: boolean
89
+ }
90
+
91
+ export interface MemoryForecast {
92
+ predictedBytes: number
93
+ confidenceInterval: { low: number; high: number }
94
+ }
95
+
96
+ export interface LeakAnalysis {
97
+ possibleLeak: boolean
98
+ growthPattern: 'monotonic' | 'sawtooth' | 'stable' | 'decreasing'
99
+ confidence: number
100
+ }
101
+
102
+ export interface GrowthPatternAnalysis {
103
+ pattern: 'monotonic' | 'sawtooth' | 'stable' | 'decreasing'
104
+ healthStatus: 'normal' | 'concerning' | 'critical'
105
+ }
106
+
107
+ export interface PostgresSettingsRecommendation {
108
+ shared_buffers: string
109
+ work_mem: string
110
+ maintenance_work_mem: string
111
+ temp_buffers: string
112
+ }
113
+
114
+ export interface PostgresConfigAnalysis {
115
+ issues: string[]
116
+ recommendations: PostgresSettingsRecommendation
117
+ }
118
+
119
+ export interface MemoryAlert {
120
+ type: 'memory_warning' | 'memory_critical' | 'memory_oom_predicted'
121
+ level: 'warning' | 'critical'
122
+ message: string
123
+ snapshot: MemorySnapshot
124
+ }
125
+
126
+ export interface AlertSummary {
127
+ totalAlerts: number
128
+ byLevel: { warning: number; critical: number }
129
+ lastAlertTime: number | null
130
+ }
131
+
132
+ export interface MemoryRecommendation {
133
+ action: 'none' | 'reduce_cache' | 'reduce_result_set' | 'force_gc' | 'restart_do'
134
+ reason: string
135
+ pressureLevel: MemoryPressureLevel
136
+ usageRatio: number
137
+ /** Worker-specific recommendation */
138
+ workerSpecific: boolean
139
+ /** Maximum safe result set size given current memory */
140
+ maxSafeResultSetBytes: number
141
+ /** Suggested PostgreSQL settings */
142
+ suggestedPgSettings: PostgresSettingsRecommendation
143
+ }
144
+
145
+ export interface MemoryBudget {
146
+ totalBytes: number
147
+ staticBytes: number
148
+ postgresOverheadBytes: number
149
+ workMemBytes: number
150
+ availableForQueriesBytes: number
151
+ maxResultSetBytes: number
152
+ /** Whether the budget exceeds the 128MB limit */
153
+ exceedsLimit: boolean
154
+ /** Overage in bytes if exceeds limit */
155
+ overageBytes: number
156
+ }
157
+
158
+ export interface MemoryMetricsConfig {
159
+ getWasmHeap?: () => WasmHeapInfo | null
160
+ warningThreshold?: number
161
+ criticalThreshold?: number
162
+ memoryLimitBytes?: number
163
+ onPressureChange?: (level: MemoryPressureLevel, snapshot: MemorySnapshot) => void
164
+ onSustainedPressure?: (level: MemoryPressureLevel, durationMs: number) => void
165
+ onAlert?: (alert: MemoryAlert) => void
166
+ sustainedPressureThreshold?: number
167
+ alertThresholds?: {
168
+ critical?: number
169
+ oomPrediction?: number
170
+ }
171
+ historySize?: number
172
+ metricsCollector?: MetricsCollector
173
+ }
174
+
175
+ export interface MemoryMetricsCollector {
176
+ getCurrentSnapshot(): MemorySnapshot
177
+ record(): MemorySnapshot
178
+ getHistory(): MemoryHistory
179
+ getPeakUsage(): number
180
+ getPressureLevel(): MemoryPressureLevel
181
+ isWarning(): boolean
182
+ isCritical(): boolean
183
+ getRecommendation(): MemoryRecommendation
184
+ reset(): void
185
+ // Extended methods
186
+ getHeapGrowthRate(): HeapGrowthRate
187
+ getFragmentationRatio(): number
188
+ getHeapAllocationHistogram(): HeapAllocationHistogram
189
+ getPressureDuration(): Record<MemoryPressureLevel, number>
190
+ getPressureScore(): number
191
+ predictTimeToOOM(): OOMPrediction
192
+ getMemoryVelocity(): MemoryVelocity
193
+ forecastMemoryUsage(msAhead: number): MemoryForecast
194
+ analyzeForLeaks(): LeakAnalysis
195
+ analyzeGrowthPattern(): GrowthPatternAnalysis
196
+ getPostgresSettingsRecommendation(): PostgresSettingsRecommendation
197
+ analyzePostgresMemoryConfig(config: Record<string, string>): PostgresConfigAnalysis
198
+ recordOperationMemory(operation: string, bytes: number): void
199
+ getMemoryBreakdownByOperation(): Record<string, number>
200
+ getAlertSummary(): AlertSummary
201
+ }
202
+
203
+ // ============================================================================
204
+ // Implementation
205
+ // ============================================================================
206
+
207
+ export class MemoryMetricsCollectorImpl implements MemoryMetricsCollector {
208
+ private config: Required<Omit<MemoryMetricsConfig, 'getWasmHeap' | 'onPressureChange' | 'onSustainedPressure' | 'onAlert' | 'metricsCollector' | 'alertThresholds'>> & {
209
+ getWasmHeap?: () => WasmHeapInfo | null
210
+ onPressureChange?: (level: MemoryPressureLevel, snapshot: MemorySnapshot) => void
211
+ onSustainedPressure?: (level: MemoryPressureLevel, durationMs: number) => void
212
+ onAlert?: (alert: MemoryAlert) => void
213
+ alertThresholds?: { critical?: number; oomPrediction?: number }
214
+ metricsCollector?: MetricsCollector
215
+ }
216
+ private history: MemorySnapshot[] = []
217
+ private peakUsage: number = 0
218
+ private lastPressureLevel: MemoryPressureLevel = MemoryPressureLevel.NORMAL
219
+ private pressureStartTimes: Record<MemoryPressureLevel, number | null> = {
220
+ [MemoryPressureLevel.NORMAL]: null,
221
+ [MemoryPressureLevel.WARNING]: null,
222
+ [MemoryPressureLevel.CRITICAL]: null,
223
+ }
224
+ private pressureDurations: Record<MemoryPressureLevel, number> = {
225
+ [MemoryPressureLevel.NORMAL]: 0,
226
+ [MemoryPressureLevel.WARNING]: 0,
227
+ [MemoryPressureLevel.CRITICAL]: 0,
228
+ }
229
+ private consecutivePressureCount: number = 0
230
+ private sustainedPressureEmitted: boolean = false
231
+ private operationMemory: Map<string, number> = new Map()
232
+ private alerts: MemoryAlert[] = []
233
+
234
+ constructor(config?: MemoryMetricsConfig) {
235
+ this.config = {
236
+ warningThreshold: config?.warningThreshold ?? DEFAULT_WARNING_THRESHOLD,
237
+ criticalThreshold: config?.criticalThreshold ?? DEFAULT_CRITICAL_THRESHOLD,
238
+ memoryLimitBytes: config?.memoryLimitBytes ?? WORKER_MEMORY_LIMIT_BYTES,
239
+ sustainedPressureThreshold: config?.sustainedPressureThreshold ?? 5,
240
+ historySize: config?.historySize ?? 100,
241
+ ...(config?.getWasmHeap !== undefined && { getWasmHeap: config.getWasmHeap }),
242
+ ...(config?.onPressureChange !== undefined && { onPressureChange: config.onPressureChange }),
243
+ ...(config?.onSustainedPressure !== undefined && { onSustainedPressure: config.onSustainedPressure }),
244
+ ...(config?.onAlert !== undefined && { onAlert: config.onAlert }),
245
+ ...(config?.alertThresholds !== undefined && { alertThresholds: config.alertThresholds }),
246
+ ...(config?.metricsCollector !== undefined && { metricsCollector: config.metricsCollector }),
247
+ }
248
+ }
249
+
250
+ getCurrentSnapshot(): MemorySnapshot {
251
+ let heapSizeBytes = 0
252
+ let heapUsedBytes = 0
253
+
254
+ if (this.config.getWasmHeap) {
255
+ const heapInfo = this.config.getWasmHeap()
256
+ if (heapInfo) {
257
+ heapSizeBytes = heapInfo.size
258
+ heapUsedBytes = heapInfo.used
259
+ }
260
+ }
261
+
262
+ const limitBytes = this.config.memoryLimitBytes
263
+ const usageRatio = limitBytes > 0 ? heapUsedBytes / limitBytes : 0
264
+ const availableBytes = Math.max(0, limitBytes - heapUsedBytes)
265
+ const wasmPages = Math.ceil(heapSizeBytes / WASM_PAGE_SIZE_BYTES)
266
+ const wasmUtilizationRatio = heapSizeBytes > 0 ? heapUsedBytes / heapSizeBytes : 0
267
+ const workerLimitRatio = heapUsedBytes / WORKER_MEMORY_LIMIT_BYTES
268
+
269
+ // Calculate bytes until OOM, accounting for system overhead (JS runtime, etc.)
270
+ // Reserve ~5MB for system overhead to be safe
271
+ const SYSTEM_OVERHEAD_BYTES = 5 * 1024 * 1024
272
+ const effectiveLimit = WORKER_MEMORY_LIMIT_BYTES - SYSTEM_OVERHEAD_BYTES
273
+ const bytesUntilOOM = Math.max(0, effectiveLimit - heapUsedBytes)
274
+
275
+ let pressureLevel = MemoryPressureLevel.NORMAL
276
+ if (usageRatio >= this.config.criticalThreshold) {
277
+ pressureLevel = MemoryPressureLevel.CRITICAL
278
+ } else if (usageRatio >= this.config.warningThreshold) {
279
+ pressureLevel = MemoryPressureLevel.WARNING
280
+ }
281
+
282
+ return {
283
+ heapSizeBytes,
284
+ heapUsedBytes,
285
+ limitBytes,
286
+ usageRatio,
287
+ availableBytes,
288
+ pressureLevel,
289
+ timestamp: Date.now(),
290
+ wasmPages,
291
+ wasmUtilizationRatio,
292
+ workerLimitRatio,
293
+ bytesUntilOOM,
294
+ }
295
+ }
296
+
297
+ record(): MemorySnapshot {
298
+ const snapshot = this.getCurrentSnapshot()
299
+ const now = Date.now()
300
+
301
+ this.history.push(snapshot)
302
+ if (this.history.length > this.config.historySize) {
303
+ this.history.shift()
304
+ }
305
+
306
+ if (snapshot.heapUsedBytes > this.peakUsage) {
307
+ this.peakUsage = snapshot.heapUsedBytes
308
+ }
309
+
310
+ // Track pressure level changes
311
+ if (snapshot.pressureLevel !== this.lastPressureLevel) {
312
+ // End duration for previous level
313
+ if (this.pressureStartTimes[this.lastPressureLevel] !== null) {
314
+ this.pressureDurations[this.lastPressureLevel] += now - this.pressureStartTimes[this.lastPressureLevel]!
315
+ }
316
+
317
+ // Start tracking new level
318
+ this.pressureStartTimes[snapshot.pressureLevel] = now
319
+
320
+ if (this.config.onPressureChange) {
321
+ this.config.onPressureChange(snapshot.pressureLevel, snapshot)
322
+ }
323
+ this.lastPressureLevel = snapshot.pressureLevel
324
+ this.consecutivePressureCount = 1
325
+ this.sustainedPressureEmitted = false
326
+ } else {
327
+ // Same pressure level - track consecutive count
328
+ if (snapshot.pressureLevel !== MemoryPressureLevel.NORMAL) {
329
+ this.consecutivePressureCount++
330
+
331
+ // Check for sustained pressure
332
+ if (
333
+ !this.sustainedPressureEmitted &&
334
+ this.consecutivePressureCount >= this.config.sustainedPressureThreshold &&
335
+ this.config.onSustainedPressure
336
+ ) {
337
+ const duration = this.pressureStartTimes[snapshot.pressureLevel]
338
+ ? now - this.pressureStartTimes[snapshot.pressureLevel]!
339
+ : 0
340
+ this.config.onSustainedPressure(snapshot.pressureLevel, duration)
341
+ this.sustainedPressureEmitted = true
342
+ }
343
+ }
344
+ }
345
+
346
+ // Record metrics
347
+ if (this.config.metricsCollector) {
348
+ this.config.metricsCollector.gauge('postgres.memory.heap_bytes', snapshot.heapUsedBytes)
349
+ this.config.metricsCollector.gauge('postgres.memory.heap_size_bytes', snapshot.heapSizeBytes)
350
+ this.config.metricsCollector.gauge('postgres.memory.usage_ratio', snapshot.usageRatio)
351
+ this.config.metricsCollector.gauge('postgres.memory.available_bytes', snapshot.availableBytes)
352
+
353
+ // Emit pressure level as a numeric gauge (0=normal, 1=warning, 2=critical)
354
+ const pressureLevelNum =
355
+ snapshot.pressureLevel === MemoryPressureLevel.CRITICAL ? 2 :
356
+ snapshot.pressureLevel === MemoryPressureLevel.WARNING ? 1 : 0
357
+ this.config.metricsCollector.gauge('postgres.memory.pressure_level', pressureLevelNum, {
358
+ level: snapshot.pressureLevel,
359
+ })
360
+ }
361
+
362
+ // Handle alerts
363
+ if (this.config.onAlert) {
364
+ if (snapshot.pressureLevel === MemoryPressureLevel.CRITICAL) {
365
+ const alert: MemoryAlert = {
366
+ type: 'memory_critical',
367
+ level: 'critical',
368
+ message: `Memory usage critical: ${(snapshot.usageRatio * 100).toFixed(1)}% of limit`,
369
+ snapshot,
370
+ }
371
+ this.alerts.push(alert)
372
+ this.config.onAlert(alert)
373
+ } else if (snapshot.pressureLevel === MemoryPressureLevel.WARNING) {
374
+ const alert: MemoryAlert = {
375
+ type: 'memory_warning',
376
+ level: 'warning',
377
+ message: `Memory usage warning: ${(snapshot.usageRatio * 100).toFixed(1)}% of limit`,
378
+ snapshot,
379
+ }
380
+ this.alerts.push(alert)
381
+ this.config.onAlert(alert)
382
+ }
383
+ }
384
+
385
+ return snapshot
386
+ }
387
+
388
+ getHistory(): MemoryHistory {
389
+ if (this.history.length === 0) {
390
+ return { snapshots: [], avgUsageBytes: 0, peakUsageBytes: 0, trend: 0 }
391
+ }
392
+
393
+ const totalUsage = this.history.reduce((sum, s) => sum + s.heapUsedBytes, 0)
394
+ const avgUsageBytes = totalUsage / this.history.length
395
+
396
+ let trend = 0
397
+ if (this.history.length >= 2) {
398
+ const n = this.history.length
399
+ let sumX = 0, sumY = 0, sumXY = 0, sumX2 = 0
400
+ for (let i = 0; i < n; i++) {
401
+ sumX += i
402
+ sumY += this.history[i]!.heapUsedBytes
403
+ sumXY += i * this.history[i]!.heapUsedBytes
404
+ sumX2 += i * i
405
+ }
406
+ const slope = (n * sumXY - sumX * sumY) / (n * sumX2 - sumX * sumX)
407
+ if (avgUsageBytes > 0) {
408
+ trend = slope / avgUsageBytes
409
+ }
410
+ }
411
+
412
+ return { snapshots: [...this.history], avgUsageBytes, peakUsageBytes: this.peakUsage, trend }
413
+ }
414
+
415
+ getPeakUsage(): number {
416
+ return this.peakUsage
417
+ }
418
+
419
+ getPressureLevel(): MemoryPressureLevel {
420
+ return this.getCurrentSnapshot().pressureLevel
421
+ }
422
+
423
+ isWarning(): boolean {
424
+ const level = this.getPressureLevel()
425
+ return level === MemoryPressureLevel.WARNING || level === MemoryPressureLevel.CRITICAL
426
+ }
427
+
428
+ isCritical(): boolean {
429
+ return this.getPressureLevel() === MemoryPressureLevel.CRITICAL
430
+ }
431
+
432
+ getRecommendation(): MemoryRecommendation {
433
+ const snapshot = this.getCurrentSnapshot()
434
+ const history = this.getHistory()
435
+
436
+ let action: MemoryRecommendation['action'] = 'none'
437
+ let reason = 'Memory usage is within normal limits'
438
+
439
+ if (snapshot.pressureLevel === MemoryPressureLevel.CRITICAL) {
440
+ if (history.trend > 0.1) {
441
+ action = 'restart_do'
442
+ reason = 'Critical memory with increasing trend - consider restarting Durable Object'
443
+ } else {
444
+ action = 'reduce_result_set'
445
+ reason = 'Critical memory usage - reduce result set sizes or paginate queries'
446
+ }
447
+ } else if (snapshot.pressureLevel === MemoryPressureLevel.WARNING) {
448
+ if (history.trend > 0.05) {
449
+ action = 'reduce_cache'
450
+ reason = 'Warning: memory growing - consider reducing cache sizes'
451
+ } else {
452
+ action = 'force_gc'
453
+ reason = 'Warning: high memory usage - consider forcing garbage collection'
454
+ }
455
+ }
456
+
457
+ // Calculate safe result set size based on available memory
458
+ const maxSafeResultSetBytes = Math.min(
459
+ snapshot.availableBytes * 0.5,
460
+ 30 * 1024 * 1024 // Cap at 30MB
461
+ )
462
+
463
+ // Suggest PostgreSQL settings based on available memory
464
+ const suggestedPgSettings = this.getPostgresSettingsRecommendation()
465
+
466
+ return {
467
+ action,
468
+ reason,
469
+ pressureLevel: snapshot.pressureLevel,
470
+ usageRatio: snapshot.usageRatio,
471
+ workerSpecific: true,
472
+ maxSafeResultSetBytes,
473
+ suggestedPgSettings,
474
+ }
475
+ }
476
+
477
+ reset(): void {
478
+ this.history = []
479
+ this.peakUsage = 0
480
+ this.lastPressureLevel = MemoryPressureLevel.NORMAL
481
+ this.pressureStartTimes = {
482
+ [MemoryPressureLevel.NORMAL]: null,
483
+ [MemoryPressureLevel.WARNING]: null,
484
+ [MemoryPressureLevel.CRITICAL]: null,
485
+ }
486
+ this.pressureDurations = {
487
+ [MemoryPressureLevel.NORMAL]: 0,
488
+ [MemoryPressureLevel.WARNING]: 0,
489
+ [MemoryPressureLevel.CRITICAL]: 0,
490
+ }
491
+ this.consecutivePressureCount = 0
492
+ this.sustainedPressureEmitted = false
493
+ this.operationMemory.clear()
494
+ this.alerts = []
495
+ }
496
+
497
+ // ============================================================================
498
+ // Extended Methods - WASM Heap Tracking
499
+ // ============================================================================
500
+
501
+ getHeapGrowthRate(): HeapGrowthRate {
502
+ if (this.history.length < 2) {
503
+ return { bytesPerSecond: 0, percentageGrowth: 0, isGrowing: false }
504
+ }
505
+
506
+ const first = this.history[0]!!
507
+ const last = this.history[this.history.length - 1]!!
508
+ let timeDeltaMs = last.timestamp - first.timestamp
509
+ const bytesDelta = last.heapSizeBytes - first.heapSizeBytes
510
+
511
+ // If timestamps are identical (synchronous calls), use sample count as a proxy
512
+ // Assume 1ms per sample as a minimum interval
513
+ if (timeDeltaMs <= 0) {
514
+ timeDeltaMs = this.history.length - 1
515
+ }
516
+
517
+ const bytesPerSecond = (bytesDelta / timeDeltaMs) * 1000
518
+ const percentageGrowth = first.heapSizeBytes > 0
519
+ ? ((last.heapSizeBytes - first.heapSizeBytes) / first.heapSizeBytes) * 100
520
+ : 0
521
+
522
+ return {
523
+ bytesPerSecond,
524
+ percentageGrowth,
525
+ isGrowing: bytesDelta > 0,
526
+ }
527
+ }
528
+
529
+ getFragmentationRatio(): number {
530
+ const snapshot = this.getCurrentSnapshot()
531
+ if (snapshot.heapSizeBytes === 0) return 0
532
+
533
+ // Fragmentation = (allocated - used) / allocated
534
+ return (snapshot.heapSizeBytes - snapshot.heapUsedBytes) / snapshot.heapSizeBytes
535
+ }
536
+
537
+ getHeapAllocationHistogram(): HeapAllocationHistogram {
538
+ // Define bucket boundaries (in bytes)
539
+ const boundaries = [
540
+ 16 * 1024 * 1024, // 16MB
541
+ 32 * 1024 * 1024, // 32MB
542
+ 48 * 1024 * 1024, // 48MB
543
+ 64 * 1024 * 1024, // 64MB
544
+ 80 * 1024 * 1024, // 80MB
545
+ 96 * 1024 * 1024, // 96MB
546
+ 112 * 1024 * 1024, // 112MB
547
+ 128 * 1024 * 1024, // 128MB
548
+ ]
549
+
550
+ const buckets: { min: number; max: number; count: number }[] = []
551
+ let prevBoundary = 0
552
+
553
+ for (const boundary of boundaries) {
554
+ buckets.push({ min: prevBoundary, max: boundary, count: 0 })
555
+ prevBoundary = boundary
556
+ }
557
+
558
+ // Count snapshots in each bucket
559
+ for (const snapshot of this.history) {
560
+ for (const bucket of buckets) {
561
+ if (snapshot.heapUsedBytes >= bucket.min && snapshot.heapUsedBytes < bucket.max) {
562
+ bucket.count++
563
+ break
564
+ }
565
+ }
566
+ }
567
+
568
+ return {
569
+ buckets,
570
+ totalSamples: this.history.length,
571
+ }
572
+ }
573
+
574
+ // ============================================================================
575
+ // Extended Methods - Memory Pressure Integration
576
+ // ============================================================================
577
+
578
+ getPressureDuration(): Record<MemoryPressureLevel, number> {
579
+ const now = Date.now()
580
+ const durations = { ...this.pressureDurations }
581
+
582
+ // Add current ongoing duration
583
+ const currentLevel = this.lastPressureLevel
584
+ if (this.pressureStartTimes[currentLevel] !== null) {
585
+ const elapsed = now - this.pressureStartTimes[currentLevel]!
586
+ // If elapsed is 0 (synchronous calls), count records instead (at least 1ms per record)
587
+ const duration = elapsed > 0 ? elapsed : this.consecutivePressureCount
588
+ durations[currentLevel] += duration
589
+ }
590
+
591
+ return durations
592
+ }
593
+
594
+ getPressureScore(): number {
595
+ const snapshot = this.getCurrentSnapshot()
596
+ const history = this.getHistory()
597
+
598
+ // Base score from usage ratio (0-70 points)
599
+ let score = snapshot.usageRatio * 70
600
+
601
+ // Add trend component (0-20 points)
602
+ if (history.trend > 0) {
603
+ score += Math.min(history.trend * 100, 20)
604
+ }
605
+
606
+ // Add pressure level component (0-10 points)
607
+ if (snapshot.pressureLevel === MemoryPressureLevel.CRITICAL) {
608
+ score += 10
609
+ } else if (snapshot.pressureLevel === MemoryPressureLevel.WARNING) {
610
+ score += 5
611
+ }
612
+
613
+ return Math.min(Math.max(score, 0), 100)
614
+ }
615
+
616
+ // ============================================================================
617
+ // Extended Methods - 128MB Workers Limit Awareness
618
+ // ============================================================================
619
+
620
+ predictTimeToOOM(): OOMPrediction {
621
+ const growthRate = this.getHeapGrowthRate()
622
+ const snapshot = this.getCurrentSnapshot()
623
+
624
+ if (growthRate.bytesPerSecond <= 0) {
625
+ return { estimatedMs: Infinity, confidence: 0.9, willOOM: false }
626
+ }
627
+
628
+ const bytesRemaining = snapshot.bytesUntilOOM
629
+ const estimatedMs = (bytesRemaining / growthRate.bytesPerSecond) * 1000
630
+
631
+ // Confidence is higher with more history data points
632
+ const confidence = Math.min(this.history.length / 20, 1) * 0.9
633
+
634
+ return {
635
+ estimatedMs: Math.max(0, estimatedMs),
636
+ confidence,
637
+ willOOM: estimatedMs < 60000 && growthRate.isGrowing, // Within 60 seconds
638
+ }
639
+ }
640
+
641
+ // ============================================================================
642
+ // Extended Methods - Memory Growth Tracking
643
+ // ============================================================================
644
+
645
+ getMemoryVelocity(): MemoryVelocity {
646
+ if (this.history.length < 2) {
647
+ return { bytesPerMs: 0, accelerating: false }
648
+ }
649
+
650
+ const recent = this.history.slice(-5)
651
+ if (recent.length < 2) {
652
+ return { bytesPerMs: 0, accelerating: false }
653
+ }
654
+
655
+ const first = recent[0]!
656
+ const last = recent[recent.length - 1]!
657
+ let timeDelta = last.timestamp - first.timestamp
658
+ const bytesDelta = last.heapUsedBytes - first.heapUsedBytes
659
+
660
+ // If timestamps are identical (synchronous calls), use sample count as a proxy
661
+ if (timeDelta <= 0) {
662
+ timeDelta = recent.length - 1
663
+ }
664
+
665
+ const bytesPerMs = bytesDelta / timeDelta
666
+
667
+ // Check if accelerating by comparing recent vs older velocity
668
+ let accelerating = false
669
+ if (this.history.length >= 10) {
670
+ const older = this.history.slice(-10, -5)
671
+ if (older.length >= 2) {
672
+ const olderFirst = older[0]!
673
+ const olderLast = older[older.length - 1]!
674
+ let olderTimeDelta = olderLast.timestamp - olderFirst.timestamp
675
+ if (olderTimeDelta <= 0) olderTimeDelta = older.length - 1
676
+ const olderBytesDelta = olderLast.heapUsedBytes - olderFirst.heapUsedBytes
677
+ const olderVelocity = olderBytesDelta / olderTimeDelta
678
+ accelerating = bytesPerMs > olderVelocity * 1.1 // 10% faster
679
+ }
680
+ }
681
+
682
+ return { bytesPerMs, accelerating }
683
+ }
684
+
685
+ forecastMemoryUsage(msAhead: number): MemoryForecast {
686
+ const snapshot = this.getCurrentSnapshot()
687
+ const velocity = this.getMemoryVelocity()
688
+
689
+ // Use the growth trend to estimate prediction when velocity is calculated from samples
690
+ // Scale the velocity by the msAhead factor, treating each sample as ~1ms
691
+ const predictedBytes = snapshot.heapUsedBytes + (velocity.bytesPerMs * msAhead)
692
+
693
+ // Confidence interval based on history variance
694
+ let variance = 0
695
+ if (this.history.length > 1) {
696
+ const avg = this.history.reduce((sum, s) => sum + s.heapUsedBytes, 0) / this.history.length
697
+ variance = this.history.reduce((sum, s) => sum + Math.pow(s.heapUsedBytes - avg, 2), 0) / this.history.length
698
+ }
699
+ const stdDev = Math.sqrt(variance)
700
+
701
+ // Ensure we always show growth if velocity is positive
702
+ const minPredicted = velocity.bytesPerMs > 0
703
+ ? snapshot.heapUsedBytes + 1
704
+ : snapshot.heapUsedBytes
705
+
706
+ return {
707
+ predictedBytes: Math.max(minPredicted, predictedBytes),
708
+ confidenceInterval: {
709
+ low: Math.max(0, predictedBytes - 2 * stdDev),
710
+ high: predictedBytes + 2 * stdDev,
711
+ },
712
+ }
713
+ }
714
+
715
+ analyzeForLeaks(): LeakAnalysis {
716
+ if (this.history.length < 5) {
717
+ return { possibleLeak: false, growthPattern: 'stable', confidence: 0 }
718
+ }
719
+
720
+ const pattern = this.analyzeGrowthPattern()
721
+
722
+ return {
723
+ possibleLeak: pattern.pattern === 'monotonic' && pattern.healthStatus !== 'normal',
724
+ growthPattern: pattern.pattern,
725
+ confidence: Math.min(this.history.length / 20, 1),
726
+ }
727
+ }
728
+
729
+ analyzeGrowthPattern(): GrowthPatternAnalysis {
730
+ if (this.history.length < 3) {
731
+ return { pattern: 'stable', healthStatus: 'normal' }
732
+ }
733
+
734
+ let increases = 0
735
+ let decreases = 0
736
+ let unchanged = 0
737
+
738
+ for (let i = 1; i < this.history.length; i++) {
739
+ const delta = this.history[i]!.heapUsedBytes - this.history[i - 1]!.heapUsedBytes
740
+ // Use a small threshold to filter noise (100KB)
741
+ const threshold = 100 * 1024
742
+
743
+ if (delta > threshold) increases++
744
+ else if (delta < -threshold) decreases++
745
+ else unchanged++
746
+ }
747
+
748
+ const total = this.history.length - 1
749
+ const increaseRatio = increases / total
750
+ const decreaseRatio = decreases / total
751
+
752
+ let pattern: GrowthPatternAnalysis['pattern']
753
+ let healthStatus: GrowthPatternAnalysis['healthStatus']
754
+
755
+ if (increaseRatio > 0.7 && decreaseRatio < 0.15) {
756
+ pattern = 'monotonic'
757
+ healthStatus = 'concerning'
758
+ } else if (increaseRatio > 0.3 && decreaseRatio > 0.25) {
759
+ pattern = 'sawtooth'
760
+ healthStatus = 'normal'
761
+ } else if (decreaseRatio > 0.7) {
762
+ pattern = 'decreasing'
763
+ healthStatus = 'normal'
764
+ } else {
765
+ pattern = 'stable'
766
+ healthStatus = 'normal'
767
+ }
768
+
769
+ // If memory is critically high even with sawtooth, it's still concerning
770
+ const currentSnapshot = this.getCurrentSnapshot()
771
+ if (currentSnapshot.pressureLevel === MemoryPressureLevel.CRITICAL) {
772
+ healthStatus = 'critical'
773
+ } else if (pattern === 'monotonic') {
774
+ healthStatus = 'concerning'
775
+ }
776
+
777
+ return { pattern, healthStatus }
778
+ }
779
+
780
+ // ============================================================================
781
+ // Extended Methods - PostgreSQL Memory Settings
782
+ // ============================================================================
783
+
784
+ getPostgresSettingsRecommendation(): PostgresSettingsRecommendation {
785
+ const snapshot = this.getCurrentSnapshot()
786
+ const availableForPg = snapshot.availableBytes * 0.6 // Reserve 40% for queries and runtime
787
+
788
+ // shared_buffers should be ~25% of available PG memory
789
+ const sharedBuffersMB = Math.max(4, Math.floor((availableForPg * 0.25) / (1024 * 1024)))
790
+
791
+ // work_mem depends on pressure level
792
+ let workMemMB: number
793
+ if (snapshot.pressureLevel === MemoryPressureLevel.CRITICAL) {
794
+ workMemMB = 1
795
+ } else if (snapshot.pressureLevel === MemoryPressureLevel.WARNING) {
796
+ workMemMB = 2
797
+ } else {
798
+ workMemMB = 4
799
+ }
800
+
801
+ // maintenance_work_mem for VACUUM etc
802
+ const maintenanceWorkMemMB = Math.max(4, Math.floor((availableForPg * 0.1) / (1024 * 1024)))
803
+
804
+ // temp_buffers
805
+ const tempBuffersMB = Math.max(2, Math.floor((availableForPg * 0.05) / (1024 * 1024)))
806
+
807
+ return {
808
+ shared_buffers: `${sharedBuffersMB}MB`,
809
+ work_mem: `${workMemMB}MB`,
810
+ maintenance_work_mem: `${maintenanceWorkMemMB}MB`,
811
+ temp_buffers: `${tempBuffersMB}MB`,
812
+ }
813
+ }
814
+
815
+ analyzePostgresMemoryConfig(config: Record<string, string>): PostgresConfigAnalysis {
816
+ const snapshot = this.getCurrentSnapshot()
817
+ const issues: string[] = []
818
+ const recommended = this.getPostgresSettingsRecommendation()
819
+
820
+ // Parse config values (support MB suffix)
821
+ const parseBytes = (value: string): number => {
822
+ const match = value.match(/^(\d+)(MB|KB|GB)?$/i)
823
+ if (!match) return 0
824
+ const num = parseInt(match[1]!, 10)
825
+ const unit = (match[2] || 'MB').toUpperCase()
826
+ switch (unit) {
827
+ case 'GB': return num * 1024 * 1024 * 1024
828
+ case 'MB': return num * 1024 * 1024
829
+ case 'KB': return num * 1024
830
+ default: return num
831
+ }
832
+ }
833
+
834
+ // Check shared_buffers
835
+ if (config.shared_buffers) {
836
+ const configuredSharedBuffers = parseBytes(config.shared_buffers)
837
+ const recommendedSharedBuffers = parseBytes(recommended.shared_buffers)
838
+
839
+ if (configuredSharedBuffers > recommendedSharedBuffers * 1.5) {
840
+ issues.push(`shared_buffers (${config.shared_buffers}) is too high for available memory; recommend ${recommended.shared_buffers}`)
841
+ }
842
+ }
843
+
844
+ // Check work_mem
845
+ if (config.work_mem) {
846
+ const configuredWorkMem = parseBytes(config.work_mem)
847
+ const recommendedWorkMem = parseBytes(recommended.work_mem)
848
+
849
+ if (configuredWorkMem > recommendedWorkMem * 2) {
850
+ issues.push(`work_mem (${config.work_mem}) is too high for current memory pressure; recommend ${recommended.work_mem}`)
851
+ }
852
+ }
853
+
854
+ // Check total memory pressure
855
+ const totalConfigured =
856
+ parseBytes(config.shared_buffers || '0') +
857
+ parseBytes(config.work_mem || '0') * 10 // Multiply by approx number of connections/operations
858
+
859
+ if (totalConfigured > snapshot.availableBytes) {
860
+ issues.push(`Total PostgreSQL memory allocation may exceed available memory (${snapshot.availableBytes} bytes available)`)
861
+ }
862
+
863
+ return {
864
+ issues,
865
+ recommendations: recommended,
866
+ }
867
+ }
868
+
869
+ // ============================================================================
870
+ // Extended Methods - Operation Memory Tracking
871
+ // ============================================================================
872
+
873
+ recordOperationMemory(operation: string, bytes: number): void {
874
+ const current = this.operationMemory.get(operation) || 0
875
+ this.operationMemory.set(operation, current + bytes)
876
+ }
877
+
878
+ getMemoryBreakdownByOperation(): Record<string, number> {
879
+ const breakdown: Record<string, number> = {}
880
+ for (const [operation, bytes] of this.operationMemory) {
881
+ breakdown[operation] = bytes
882
+ }
883
+ return breakdown
884
+ }
885
+
886
+ // ============================================================================
887
+ // Extended Methods - Alert Integration
888
+ // ============================================================================
889
+
890
+ getAlertSummary(): AlertSummary {
891
+ const byLevel = { warning: 0, critical: 0 }
892
+ let lastAlertTime: number | null = null
893
+
894
+ for (const alert of this.alerts) {
895
+ if (alert.level === 'warning') byLevel.warning++
896
+ if (alert.level === 'critical') byLevel.critical++
897
+
898
+ if (!lastAlertTime || alert.snapshot.timestamp > lastAlertTime) {
899
+ lastAlertTime = alert.snapshot.timestamp
900
+ }
901
+ }
902
+
903
+ return {
904
+ totalAlerts: this.alerts.length,
905
+ byLevel,
906
+ lastAlertTime,
907
+ }
908
+ }
909
+ }
910
+
911
+ export function createMemoryMetricsCollector(config?: MemoryMetricsConfig): MemoryMetricsCollector {
912
+ return new MemoryMetricsCollectorImpl(config)
913
+ }
914
+
915
+ // ============================================================================
916
+ // Heap Getters
917
+ // ============================================================================
918
+
919
+ export function createPGLiteHeapGetter(
920
+ getModule: () => { HEAPU8?: Uint8Array } | null
921
+ ): () => WasmHeapInfo | null {
922
+ return () => {
923
+ const module = getModule()
924
+ if (!module || !module.HEAPU8) return null
925
+ const heapu8 = module.HEAPU8
926
+ const size = heapu8.length
927
+ let used = size
928
+ for (let i = size - 1; i >= 0; i--) {
929
+ if (heapu8[i] !== 0) {
930
+ used = i + 1
931
+ break
932
+ }
933
+ }
934
+ return { size, used }
935
+ }
936
+ }
937
+
938
+ export function createEstimatedHeapGetter(): () => WasmHeapInfo {
939
+ const estimatedSize = 32 * 1024 * 1024
940
+ return () => {
941
+ const used = Math.floor(estimatedSize * 0.6)
942
+ return { size: estimatedSize, used }
943
+ }
944
+ }
945
+
946
+ // ============================================================================
947
+ // Memory Budget Calculator
948
+ // ============================================================================
949
+
950
+ export interface MemoryBudgetOptions {
951
+ totalBytes?: number
952
+ wasmBinaryBytes?: number
953
+ dataFileBytes?: number
954
+ jsRuntimeBytes?: number
955
+ sharedBuffersBytes?: number
956
+ workMemBytes?: number
957
+ walBuffersBytes?: number
958
+ }
959
+
960
+ export function calculateMemoryBudget(options?: MemoryBudgetOptions): MemoryBudget {
961
+ const totalBytes = options?.totalBytes ?? WORKER_MEMORY_LIMIT_BYTES
962
+ const wasmBinaryBytes = options?.wasmBinaryBytes ?? 8.5 * 1024 * 1024
963
+ const dataFileBytes = options?.dataFileBytes ?? 4.7 * 1024 * 1024
964
+ const jsRuntimeBytes = options?.jsRuntimeBytes ?? 5 * 1024 * 1024
965
+ const sharedBuffersBytes = options?.sharedBuffersBytes ?? 16 * 1024 * 1024
966
+ const workMemBytes = options?.workMemBytes ?? 2 * 1024 * 1024
967
+ const walBuffersBytes = options?.walBuffersBytes ?? 1 * 1024 * 1024
968
+
969
+ const staticBytes = wasmBinaryBytes + dataFileBytes + jsRuntimeBytes
970
+ const catalogOverhead = 10 * 1024 * 1024
971
+ const postgresOverheadBytes = sharedBuffersBytes + walBuffersBytes + catalogOverhead
972
+ const totalRequired = staticBytes + postgresOverheadBytes + workMemBytes
973
+ const availableForQueriesBytes = Math.max(0, totalBytes - totalRequired)
974
+ const maxResultSetBytes = Math.min(availableForQueriesBytes * 0.5, 30 * 1024 * 1024)
975
+
976
+ // Check if the budget exceeds the Worker memory limit
977
+ const exceedsLimit = totalRequired > WORKER_MEMORY_LIMIT_BYTES
978
+ const overageBytes = Math.max(0, totalRequired - WORKER_MEMORY_LIMIT_BYTES)
979
+
980
+ return {
981
+ totalBytes,
982
+ staticBytes,
983
+ postgresOverheadBytes,
984
+ workMemBytes,
985
+ availableForQueriesBytes,
986
+ maxResultSetBytes,
987
+ exceedsLimit,
988
+ overageBytes,
989
+ }
990
+ }