@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,1441 @@
1
+ /**
2
+ * PostgresDO - Durable Object for PostgreSQL with PGlite
3
+ *
4
+ * A Cloudflare Durable Object providing a complete PostgreSQL database running
5
+ * in WebAssembly via PGlite. Each DO instance maintains isolated persistent storage.
6
+ *
7
+ * ## Architecture
8
+ *
9
+ * PostgresDO orchestrates specialized managers for separation of concerns:
10
+ *
11
+ * | Manager | Responsibility |
12
+ * |---------|---------------|
13
+ * | ShutdownManager | Graceful shutdown, query tracking, connection draining |
14
+ * | PluginManager | Plugin/extension lifecycle (vector, postgis, etc.) |
15
+ * | DOAuthManager | Authentication via oauth.do integration |
16
+ * | QueryStatsManager | Query execution statistics and metrics |
17
+ * | PGLiteManager | PGlite instance lifecycle and initialization |
18
+ * | MigrationManager | Schema migrations with version tracking |
19
+ * | DOWALFacade | Write-Ahead Log capture for CDC/replication |
20
+ * | MemoryPressureManager | OOM protection and memory monitoring |
21
+ *
22
+ * ## Key Features
23
+ *
24
+ * - Native RPC support (extends cloudflare:workers DurableObject)
25
+ * - Promise pipelining for N+1 query elimination
26
+ * - Lazy initialization - PGlite created on first use
27
+ * - Auto-migrations on startup or on-demand
28
+ * - Graceful shutdown with configurable timeout
29
+ * - Memory protection - auto-unload extensions under pressure
30
+ *
31
+ * ## WASM Requirements
32
+ *
33
+ * In Cloudflare Workers, PGLite requires pre-compiled WASM modules via static imports.
34
+ * Uses @dotdo/pglite fork with trampoline-enabled build for Workers compatibility.
35
+ *
36
+ * @module worker/do
37
+ */
38
+ import { DurableObject } from 'cloudflare:workers';
39
+ /** DO storage key for migration state */
40
+ const MIGRATION_STATE_KEY = '__postgres_migration_state__';
41
+ import { PostgresRpcApi, TransactionRpcApi, } from './rpc';
42
+ import { preserveCase } from './sql-transform';
43
+ import { NotInitializedError, ShutdownError } from './errors';
44
+ import { MigrationManager } from './migration-manager';
45
+ import { DOWALFacade, } from './wal-facade';
46
+ import { createMemoryPressureManager } from './memory-pressure';
47
+ // Import modular managers
48
+ import { ShutdownManager, } from './shutdown-manager';
49
+ import { PluginManager } from './plugin-manager';
50
+ import { DOAuthManager } from './do-auth-manager';
51
+ import { QueryStatsManager } from './query-stats-manager';
52
+ import { PGLiteManager } from './do-pglite-manager';
53
+ // Re-export manager classes for external use
54
+ export { MigrationManager } from './migration-manager';
55
+ export { DOWALFacade } from './wal-facade';
56
+ // Re-export WorkersPGLite for external use
57
+ export { WorkersPGLite, createWorkersPGLite } from '../pglite/workers-pglite';
58
+ /**
59
+ * PostgresDO Durable Object
60
+ *
61
+ * Extends DurableObject from cloudflare:workers to enable native RPC support.
62
+ * All public methods are automatically exposed as RPC endpoints, enabling:
63
+ *
64
+ * - Magic map support for N+1 query elimination
65
+ * - Promise pipelining for efficient RPC
66
+ * - Direct Worker-to-DO communication without HTTP overhead
67
+ *
68
+ * ## Native RPC Usage (Worker-to-DO)
69
+ * ```typescript
70
+ * // In your Worker
71
+ * const id = env.POSTGRES_DO.idFromName('my-db')
72
+ * const stub = env.POSTGRES_DO.get(id)
73
+ *
74
+ * // Call RPC methods directly on the stub
75
+ * const result = await stub.rpcQuery('SELECT * FROM users')
76
+ * const tx = await stub.rpcTransaction()
77
+ * await tx.query('INSERT INTO users (name) VALUES ($1)', ['Alice'])
78
+ * await tx.commit()
79
+ * ```
80
+ *
81
+ * ## Promise Pipelining
82
+ * ```typescript
83
+ * const user = stub.rpcQueryOne('SELECT * FROM users WHERE id = $1', [1])
84
+ * const orders = stub.rpcQuery('SELECT * FROM orders WHERE user_id = $1', [user.id])
85
+ * const [userData, orderData] = await Promise.all([user, orders])
86
+ * ```
87
+ */
88
+ export class PostgresDO extends DurableObject {
89
+ // Note: ctx and env are inherited from DurableObject<Env>
90
+ _authEnv = null;
91
+ config;
92
+ // Modular managers
93
+ shutdownManager;
94
+ pluginManager;
95
+ authManager;
96
+ statsManager;
97
+ pgliteManager;
98
+ // Injected concerns for dependency injection and testing
99
+ injectedAuthConcern = null;
100
+ injectedQueryExecutionConcern = null;
101
+ injectedCDCConcern = null;
102
+ // @ts-expect-error - Kept for future use in storage orchestration
103
+ injectedStorageOrchestrationConcern = null;
104
+ // Migration manager for schema migrations
105
+ migrationManager = null;
106
+ migrated = false;
107
+ migratePromise = null;
108
+ // PGLite initialization promise for deduplication
109
+ initPGlitePromise = null;
110
+ // WAL facade for change capture
111
+ walFacade = null;
112
+ walConfig = {};
113
+ walInitPromise = null;
114
+ // Memory pressure manager for OOM protection
115
+ memoryPressureManager = null;
116
+ memoryPressureConfig = {};
117
+ constructor(ctx, env, config, authConfig, walConfig, memoryPressureConfig) {
118
+ super(ctx, env);
119
+ this._authEnv = env;
120
+ this.config = config ?? {
121
+ database: env.POSTGRES_DEFAULT_DB ?? 'postgres',
122
+ preserveCase: false,
123
+ };
124
+ // Initialize modular managers
125
+ this.shutdownManager = new ShutdownManager({
126
+ gracePeriodMs: 30000,
127
+ drainCheckIntervalMs: 100,
128
+ closeTimeoutMs: 5000,
129
+ maxListeners: 100,
130
+ });
131
+ this.pluginManager = new PluginManager({
132
+ ...(this.config.plugins !== undefined && { plugins: this.config.plugins }),
133
+ ...(this.config.debug !== undefined && { debug: this.config.debug }),
134
+ });
135
+ this.authManager = new DOAuthManager(authConfig ?? {
136
+ enabled: env.OAUTH_ENABLED === 'true',
137
+ oauthUrl: env.OAUTH_URL || 'https://oauth.do',
138
+ tokenCacheTTL: 60000,
139
+ allowAnonymous: false,
140
+ });
141
+ this.statsManager = new QueryStatsManager();
142
+ this.pgliteManager = new PGLiteManager({
143
+ database: this.config.database,
144
+ ...(this.config.debug !== undefined && { debug: this.config.debug }),
145
+ ...(this.config.plugins !== undefined && { plugins: this.config.plugins }),
146
+ });
147
+ this.walConfig = walConfig ?? {};
148
+ this.memoryPressureConfig = memoryPressureConfig ?? {};
149
+ // Initialize migration manager (executor set later after PGlite init)
150
+ this.migrationManager = new MigrationManager(ctx.storage, null, {
151
+ ...(this.config.migrations !== undefined && { migrations: this.config.migrations }),
152
+ ...(this.config.debug !== undefined && { debug: this.config.debug }),
153
+ });
154
+ // Initialize WAL facade
155
+ this.walFacade = new DOWALFacade(ctx, this.walConfig);
156
+ // Initialize memory pressure manager
157
+ this.memoryPressureManager = createMemoryPressureManager(this.memoryPressureConfig);
158
+ // Handle injected concerns from config
159
+ if (this.config.concerns) {
160
+ this.injectedAuthConcern = this.config.concerns.auth ?? null;
161
+ this.injectedQueryExecutionConcern = this.config.concerns.queryExecution ?? null;
162
+ this.injectedCDCConcern = this.config.concerns.cdc ?? null;
163
+ this.injectedStorageOrchestrationConcern = this.config.concerns.storageOrchestration ?? null;
164
+ }
165
+ }
166
+ // ============================================================
167
+ // Concern Injection Methods
168
+ // ============================================================
169
+ /**
170
+ * Set or replace a concern at runtime
171
+ * Used for testing and dynamic concern injection
172
+ */
173
+ setConcern(name, concern) {
174
+ switch (name) {
175
+ case 'auth':
176
+ this.injectedAuthConcern = concern;
177
+ break;
178
+ case 'queryExecution':
179
+ this.injectedQueryExecutionConcern = concern;
180
+ break;
181
+ case 'cdc':
182
+ this.injectedCDCConcern = concern;
183
+ break;
184
+ case 'storageOrchestration':
185
+ this.injectedStorageOrchestrationConcern = concern;
186
+ break;
187
+ }
188
+ }
189
+ // ============================================================
190
+ // State and Configuration Methods
191
+ // ============================================================
192
+ /**
193
+ * Get the DurableObject state
194
+ */
195
+ getState() {
196
+ return this.ctx;
197
+ }
198
+ /**
199
+ * Get the environment
200
+ */
201
+ getEnv() {
202
+ return this.env;
203
+ }
204
+ /**
205
+ * Get the environment as AuthEnv (for OAuth-related properties)
206
+ */
207
+ getAuthEnv() {
208
+ return this._authEnv ?? this.env;
209
+ }
210
+ /**
211
+ * Check if PGlite is initialized
212
+ */
213
+ isInitialized() {
214
+ return this.pgliteManager.isInitialized();
215
+ }
216
+ /**
217
+ * Get current configuration
218
+ */
219
+ getConfig() {
220
+ return { ...this.config };
221
+ }
222
+ /**
223
+ * Get query statistics
224
+ */
225
+ getStats() {
226
+ return this.statsManager.getStats();
227
+ }
228
+ /**
229
+ * Get uptime in milliseconds
230
+ */
231
+ getUptime() {
232
+ return this.statsManager.getUptime();
233
+ }
234
+ // ============================================================
235
+ // Authentication Methods (delegated to DOAuthManager or injected concern)
236
+ // ============================================================
237
+ /**
238
+ * Get authentication configuration
239
+ */
240
+ getAuthConfig() {
241
+ // Use injected auth concern if available
242
+ if (this.injectedAuthConcern &&
243
+ typeof this.injectedAuthConcern.getConfig ===
244
+ 'function') {
245
+ return this.injectedAuthConcern.getConfig();
246
+ }
247
+ return this.authManager.getConfig();
248
+ }
249
+ /**
250
+ * Set the user ID for this DO instance (for user-scoped access)
251
+ */
252
+ setUserId(userId) {
253
+ // Use injected auth concern if available
254
+ if (this.injectedAuthConcern &&
255
+ typeof this.injectedAuthConcern.setUserId ===
256
+ 'function') {
257
+ ;
258
+ this.injectedAuthConcern.setUserId(userId);
259
+ return;
260
+ }
261
+ this.authManager.setUserId(userId);
262
+ }
263
+ /**
264
+ * Get the user ID for this DO instance
265
+ */
266
+ getUserId() {
267
+ // Use injected auth concern if available
268
+ if (this.injectedAuthConcern &&
269
+ typeof this.injectedAuthConcern.getUserId ===
270
+ 'function') {
271
+ return this.injectedAuthConcern.getUserId();
272
+ }
273
+ return this.authManager.getUserId();
274
+ }
275
+ /**
276
+ * Validate a bearer token using oauth.do
277
+ */
278
+ async validateToken(token) {
279
+ // Use injected auth concern if available
280
+ if (this.injectedAuthConcern &&
281
+ typeof this.injectedAuthConcern.validateToken === 'function') {
282
+ return this.injectedAuthConcern.validateToken(token);
283
+ }
284
+ return this.authManager.validateToken(token);
285
+ }
286
+ /**
287
+ * Authenticate a request and return the user
288
+ * Returns null if authentication fails or is not required
289
+ */
290
+ async authenticateRequest(request) {
291
+ // Use injected auth concern if available
292
+ if (this.injectedAuthConcern &&
293
+ typeof this.injectedAuthConcern.authenticateRequest === 'function') {
294
+ return this.injectedAuthConcern.authenticateRequest(request);
295
+ }
296
+ return this.authManager.authenticateRequest(request);
297
+ }
298
+ // ============================================================
299
+ // WAL (Write-Ahead Log) Methods (delegated to DOWALFacade)
300
+ // ============================================================
301
+ /**
302
+ * Get the WAL facade instance
303
+ */
304
+ getWALFacade() {
305
+ if (!this.walFacade) {
306
+ this.walFacade = new DOWALFacade(this.ctx, this.walConfig);
307
+ }
308
+ return this.walFacade;
309
+ }
310
+ /**
311
+ * Initialize the WAL manager (restores LSN from storage)
312
+ */
313
+ async initWAL() {
314
+ if (this.walInitPromise)
315
+ return this.walInitPromise;
316
+ this.walInitPromise = this.getWALFacade().initialize();
317
+ return this.walInitPromise;
318
+ }
319
+ /**
320
+ * Check if WAL capture is enabled
321
+ */
322
+ isWALEnabled() {
323
+ // Use injected CDC concern if available
324
+ if (this.injectedCDCConcern &&
325
+ typeof this.injectedCDCConcern.isEnabled === 'function') {
326
+ return this.injectedCDCConcern.isEnabled();
327
+ }
328
+ return this.getWALFacade().isEnabled();
329
+ }
330
+ /**
331
+ * Enable or disable WAL capture
332
+ */
333
+ setWALEnabled(enabled) {
334
+ this.getWALFacade().setEnabled(enabled);
335
+ }
336
+ /**
337
+ * Get WAL configuration
338
+ */
339
+ getWALConfig() {
340
+ return this.getWALFacade().getConfig();
341
+ }
342
+ /**
343
+ * Update WAL configuration
344
+ */
345
+ setWALConfig(config) {
346
+ this.getWALFacade().setConfig(config);
347
+ }
348
+ /**
349
+ * Get WAL buffer statistics
350
+ */
351
+ getWALStats() {
352
+ return this.getWALFacade().getStats();
353
+ }
354
+ /**
355
+ * Get current WAL LSN (Log Sequence Number)
356
+ */
357
+ getWALCurrentLsn() {
358
+ return this.getWALFacade().getCurrentLsn();
359
+ }
360
+ /**
361
+ * Add a listener for WAL entries
362
+ */
363
+ onWALEntry(listener) {
364
+ return this.getWALFacade().onEntry(listener);
365
+ }
366
+ /**
367
+ * Add a listener for WAL flush events
368
+ */
369
+ onWALFlush(listener) {
370
+ return this.getWALFacade().onFlush(listener);
371
+ }
372
+ /**
373
+ * Flush WAL buffer to storage
374
+ */
375
+ async flushWAL() {
376
+ return this.getWALFacade().flush();
377
+ }
378
+ /**
379
+ * Get buffered WAL entries (without flushing)
380
+ */
381
+ getWALBuffer() {
382
+ return this.getWALFacade().getBufferedEntries();
383
+ }
384
+ /**
385
+ * Read WAL entries from storage
386
+ */
387
+ async readWALFromStorage(fromLsn, limit) {
388
+ return this.getWALFacade().readFromStorage(fromLsn, limit);
389
+ }
390
+ /**
391
+ * Capture a write operation to WAL
392
+ */
393
+ captureWAL(sql, result) {
394
+ const walFacade = this.getWALFacade();
395
+ if (!walFacade.isEnabled()) {
396
+ return null;
397
+ }
398
+ return walFacade.capture(sql, result);
399
+ }
400
+ // ============================================================
401
+ // Memory Pressure Methods (delegated to MemoryPressureManager)
402
+ // ============================================================
403
+ /**
404
+ * Get the memory pressure manager instance
405
+ */
406
+ getMemoryPressureManager() {
407
+ if (!this.memoryPressureManager) {
408
+ this.memoryPressureManager = createMemoryPressureManager(this.memoryPressureConfig);
409
+ }
410
+ return this.memoryPressureManager;
411
+ }
412
+ /**
413
+ * Get current memory statistics
414
+ */
415
+ getMemoryStats() {
416
+ return this.getMemoryPressureManager().getMemoryStats();
417
+ }
418
+ /**
419
+ * Get current memory pressure level
420
+ */
421
+ getMemoryPressureLevel() {
422
+ return this.getMemoryPressureManager().getPressureLevel();
423
+ }
424
+ /**
425
+ * Check if memory pressure is at or above a certain level
426
+ */
427
+ isMemoryPressureAtOrAbove(level) {
428
+ return this.getMemoryPressureManager().isPressureAtOrAbove(level);
429
+ }
430
+ /**
431
+ * Get memory pressure configuration
432
+ */
433
+ getMemoryPressureConfig() {
434
+ return this.getMemoryPressureManager().getConfig();
435
+ }
436
+ /**
437
+ * Update memory pressure configuration
438
+ */
439
+ setMemoryPressureConfig(config) {
440
+ this.getMemoryPressureManager().setConfig(config);
441
+ }
442
+ /**
443
+ * Add a listener for memory pressure events
444
+ */
445
+ onMemoryPressure(listener) {
446
+ return this.getMemoryPressureManager().onPressureChange(listener);
447
+ }
448
+ /**
449
+ * Get the number of memory pressure listeners
450
+ */
451
+ getMemoryPressureListenerCount() {
452
+ return this.getMemoryPressureManager().getListenerCount();
453
+ }
454
+ /**
455
+ * Start periodic memory pressure monitoring
456
+ */
457
+ startMemoryMonitoring() {
458
+ const manager = this.getMemoryPressureManager();
459
+ const pglite = this.pgliteManager.getInstanceOrNull();
460
+ if (pglite) {
461
+ manager.setPGlite(pglite);
462
+ }
463
+ manager.startMonitoring();
464
+ }
465
+ /**
466
+ * Stop periodic memory pressure monitoring
467
+ */
468
+ stopMemoryMonitoring() {
469
+ this.getMemoryPressureManager().stopMonitoring();
470
+ }
471
+ /**
472
+ * Manually check memory pressure and take action if needed
473
+ */
474
+ async checkMemoryPressure() {
475
+ return this.getMemoryPressureManager().checkMemoryPressure();
476
+ }
477
+ /**
478
+ * Manually unload the least important extension to free memory
479
+ */
480
+ async unloadExtensionForMemory() {
481
+ const manager = this.getMemoryPressureManager();
482
+ const pglite = this.pgliteManager.getInstanceOrNull();
483
+ if (pglite) {
484
+ manager.setPGlite(pglite);
485
+ }
486
+ return manager.unloadLeastImportantExtension();
487
+ }
488
+ /**
489
+ * Get list of extensions that have been unloaded due to memory pressure
490
+ */
491
+ getUnloadedExtensions() {
492
+ return this.getMemoryPressureManager().getUnloadedExtensions();
493
+ }
494
+ /**
495
+ * Check if an extension was unloaded due to memory pressure
496
+ */
497
+ wasExtensionUnloaded(extensionName) {
498
+ return this.getMemoryPressureManager().wasExtensionUnloaded(extensionName);
499
+ }
500
+ // ============================================================
501
+ // Shutdown Methods (delegated to ShutdownManager)
502
+ // ============================================================
503
+ /**
504
+ * Check if PGLite is responsive by running a simple query
505
+ */
506
+ async checkLiveness() {
507
+ return this.pgliteManager.checkLiveness();
508
+ }
509
+ /**
510
+ * Get current shutdown status
511
+ */
512
+ getShutdownStatus() {
513
+ return this.shutdownManager.getStatus();
514
+ }
515
+ /**
516
+ * Check if the DO is shutting down (draining or shutdown)
517
+ */
518
+ isShuttingDown() {
519
+ return this.shutdownManager.isShuttingDown();
520
+ }
521
+ /**
522
+ * Get the number of active queries
523
+ */
524
+ getActiveQueryCount() {
525
+ return this.shutdownManager.getActiveQueryCount();
526
+ }
527
+ /**
528
+ * Get active query info (for monitoring)
529
+ */
530
+ getActiveQueries() {
531
+ return this.shutdownManager.getActiveQueries();
532
+ }
533
+ /**
534
+ * Configure shutdown behavior
535
+ */
536
+ setShutdownConfig(config) {
537
+ this.shutdownManager.setConfig(config);
538
+ }
539
+ /**
540
+ * Get shutdown configuration
541
+ */
542
+ getShutdownConfig() {
543
+ return this.shutdownManager.getConfig();
544
+ }
545
+ /**
546
+ * Get the current number of shutdown event listeners
547
+ */
548
+ getShutdownListenerCount() {
549
+ return this.shutdownManager.getListenerCount();
550
+ }
551
+ /**
552
+ * Add a shutdown event listener
553
+ */
554
+ onShutdownEvent(listener) {
555
+ return this.shutdownManager.onShutdownEvent(listener);
556
+ }
557
+ /**
558
+ * Initiate graceful shutdown
559
+ */
560
+ async shutdown(config) {
561
+ const pglite = this.pgliteManager.getInstanceOrNull();
562
+ // Create a WebSocket state adapter for the shutdown manager
563
+ const wsState = {
564
+ getWebSockets: () => {
565
+ try {
566
+ return this.ctx.getWebSockets();
567
+ }
568
+ catch {
569
+ return [];
570
+ }
571
+ },
572
+ };
573
+ await this.shutdownManager.shutdown(pglite, wsState, config);
574
+ // Stop memory monitoring
575
+ if (this.memoryPressureManager) {
576
+ this.memoryPressureManager.dispose();
577
+ this.memoryPressureManager = null;
578
+ }
579
+ // Reset PGLite manager
580
+ this.pgliteManager.reset();
581
+ }
582
+ // ============================================================
583
+ // Migration Methods (delegated to MigrationManager)
584
+ // ============================================================
585
+ /**
586
+ * Get the migration manager instance
587
+ */
588
+ getMigrationManager() {
589
+ if (!this.migrationManager) {
590
+ this.migrationManager = new MigrationManager(this.ctx.storage, this.pgliteManager.getInstanceOrNull(), {
591
+ ...(this.config.migrations !== undefined && { migrations: this.config.migrations }),
592
+ ...(this.config.debug !== undefined && { debug: this.config.debug }),
593
+ });
594
+ }
595
+ return this.migrationManager;
596
+ }
597
+ /**
598
+ * Get the current schema version from DO storage
599
+ */
600
+ async getSchemaVersion() {
601
+ return this.getMigrationManager().getSchemaVersion();
602
+ }
603
+ /**
604
+ * Check if this is a fresh database (no schema version set)
605
+ */
606
+ async isFreshDatabase() {
607
+ return this.getMigrationManager().isFreshDatabase();
608
+ }
609
+ /**
610
+ * Check if migrations have been applied this session
611
+ */
612
+ isMigrated() {
613
+ return this.migrated;
614
+ }
615
+ /**
616
+ * Get the schema version manager
617
+ */
618
+ getSchemaVersionManager() {
619
+ return this.getMigrationManager().getSchemaVersionManager();
620
+ }
621
+ /**
622
+ * Get full schema version details including migration history
623
+ */
624
+ async getSchemaVersionDetails() {
625
+ if (!this.isInitialized()) {
626
+ await this.initPGlite();
627
+ }
628
+ const manager = this.getSchemaVersionManager();
629
+ if (!manager) {
630
+ throw new NotInitializedError('getting schema version details');
631
+ }
632
+ return manager.getSchemaVersion();
633
+ }
634
+ /**
635
+ * Compare current schema version against a target version
636
+ */
637
+ async compareSchemaVersion(targetVersion) {
638
+ if (!this.isInitialized()) {
639
+ await this.initPGlite();
640
+ }
641
+ const manager = this.getSchemaVersionManager();
642
+ if (!manager) {
643
+ throw new NotInitializedError('comparing schema version');
644
+ }
645
+ return manager.compareVersion(targetVersion);
646
+ }
647
+ /**
648
+ * Check if a specific migration has been applied
649
+ */
650
+ async isMigrationApplied(migrationId) {
651
+ if (!this.isInitialized()) {
652
+ await this.initPGlite();
653
+ }
654
+ const manager = this.getSchemaVersionManager();
655
+ if (!manager) {
656
+ throw new NotInitializedError('checking migration status');
657
+ }
658
+ return manager.isMigrationApplied(migrationId);
659
+ }
660
+ /**
661
+ * Add a listener for migration events
662
+ */
663
+ onMigrationEvent(listener) {
664
+ const manager = this.getSchemaVersionManager();
665
+ if (manager) {
666
+ return manager.onMigrationEvent(listener);
667
+ }
668
+ return () => { };
669
+ }
670
+ /**
671
+ * Run a single migration
672
+ * @internal
673
+ */
674
+ async runSingleMigration(migration, index, total, onProgress) {
675
+ const startTime = performance.now();
676
+ const pglite = this.pgliteManager.getInstance();
677
+ onProgress?.({
678
+ migration,
679
+ index,
680
+ total,
681
+ phase: 'starting',
682
+ });
683
+ try {
684
+ const currentVersion = await this.getSchemaVersion();
685
+ if (migration.version <= currentVersion) {
686
+ return {
687
+ success: true,
688
+ id: migration.id,
689
+ executionTimeMs: 0,
690
+ skipped: true,
691
+ };
692
+ }
693
+ onProgress?.({
694
+ migration,
695
+ index,
696
+ total,
697
+ phase: 'executing',
698
+ });
699
+ await pglite.query('BEGIN');
700
+ try {
701
+ if (pglite.exec) {
702
+ await pglite.exec(migration.sql);
703
+ }
704
+ else {
705
+ const statements = migration.sql
706
+ .split(';')
707
+ .map((s) => s.trim())
708
+ .filter((s) => s.length > 0);
709
+ for (const stmt of statements) {
710
+ await pglite.query(stmt);
711
+ }
712
+ }
713
+ await this.getMigrationManager().setSchemaVersion(migration.version);
714
+ await pglite.query('COMMIT');
715
+ }
716
+ catch (error) {
717
+ await pglite.query('ROLLBACK');
718
+ throw error;
719
+ }
720
+ const executionTimeMs = performance.now() - startTime;
721
+ onProgress?.({
722
+ migration,
723
+ index,
724
+ total,
725
+ phase: 'completed',
726
+ durationMs: executionTimeMs,
727
+ });
728
+ return {
729
+ success: true,
730
+ id: migration.id,
731
+ executionTimeMs,
732
+ };
733
+ }
734
+ catch (error) {
735
+ const executionTimeMs = performance.now() - startTime;
736
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
737
+ onProgress?.({
738
+ migration,
739
+ index,
740
+ total,
741
+ phase: 'failed',
742
+ durationMs: executionTimeMs,
743
+ error: errorMessage,
744
+ });
745
+ return {
746
+ success: false,
747
+ id: migration.id,
748
+ executionTimeMs,
749
+ error: errorMessage,
750
+ };
751
+ }
752
+ }
753
+ /**
754
+ * Run all pending migrations in sequence
755
+ */
756
+ async runMigrations(migrations, onProgress) {
757
+ const startTime = performance.now();
758
+ const fromVersion = await this.getSchemaVersion();
759
+ const sortedMigrations = [...migrations].sort((a, b) => a.version - b.version);
760
+ const pendingMigrations = sortedMigrations.filter((m) => m.version > fromVersion);
761
+ if (pendingMigrations.length === 0) {
762
+ return {
763
+ success: true,
764
+ fromVersion,
765
+ toVersion: fromVersion,
766
+ durationMs: 0,
767
+ results: [],
768
+ migrationsRun: 0,
769
+ migrationsSkipped: sortedMigrations.length,
770
+ };
771
+ }
772
+ const results = [];
773
+ let migrationsRun = 0;
774
+ let migrationsSkipped = sortedMigrations.length - pendingMigrations.length;
775
+ for (let i = 0; i < pendingMigrations.length; i++) {
776
+ const migration = pendingMigrations[i];
777
+ if (!migration)
778
+ continue;
779
+ const result = await this.runSingleMigration(migration, i, pendingMigrations.length, onProgress);
780
+ results.push(result);
781
+ if (result.skipped) {
782
+ migrationsSkipped++;
783
+ }
784
+ else if (result.success) {
785
+ migrationsRun++;
786
+ }
787
+ else {
788
+ const durationMs = performance.now() - startTime;
789
+ const toVersion = await this.getSchemaVersion();
790
+ return {
791
+ success: false,
792
+ fromVersion,
793
+ toVersion,
794
+ durationMs,
795
+ results,
796
+ migrationsRun,
797
+ migrationsSkipped,
798
+ };
799
+ }
800
+ }
801
+ const durationMs = performance.now() - startTime;
802
+ const toVersion = await this.getSchemaVersion();
803
+ return {
804
+ success: true,
805
+ fromVersion,
806
+ toVersion,
807
+ durationMs,
808
+ results,
809
+ migrationsRun,
810
+ migrationsSkipped,
811
+ };
812
+ }
813
+ /**
814
+ * Ensure database is migrated to latest version
815
+ */
816
+ async ensureMigrated() {
817
+ if (this.migrated) {
818
+ return null;
819
+ }
820
+ const migrations = this.config.migrations?.migrations;
821
+ if (!migrations || migrations.length === 0) {
822
+ this.migrated = true;
823
+ return null;
824
+ }
825
+ if (this.migratePromise) {
826
+ return this.migratePromise;
827
+ }
828
+ if (!this.pgliteManager.getInstanceOrNull()) {
829
+ throw new NotInitializedError('running migrations');
830
+ }
831
+ this.migratePromise = this.performMigrations();
832
+ try {
833
+ const result = await this.migratePromise;
834
+ this.migrated = result.success;
835
+ return result;
836
+ }
837
+ finally {
838
+ this.migratePromise = null;
839
+ }
840
+ }
841
+ /**
842
+ * Internal migration implementation
843
+ */
844
+ async performMigrations() {
845
+ const migrationConfig = this.config.migrations;
846
+ const migrations = migrationConfig.migrations;
847
+ const onProgress = migrationConfig.onProgress;
848
+ return this.runMigrations(migrations, onProgress);
849
+ }
850
+ // ============================================================
851
+ // Plugin Management Methods (delegated to PluginManager)
852
+ // ============================================================
853
+ /**
854
+ * Get the last plugin load result (for diagnostics)
855
+ */
856
+ getLastPluginLoadResult() {
857
+ return this.pluginManager.getLastLoadResult();
858
+ }
859
+ /**
860
+ * List all available plugins with their status
861
+ */
862
+ async listPlugins() {
863
+ if (!this.isInitialized()) {
864
+ await this.initPGlite();
865
+ }
866
+ return this.pluginManager.listPlugins(this.pgliteManager.getInstance());
867
+ }
868
+ /**
869
+ * Get the status of a specific plugin
870
+ */
871
+ async getPluginStatus(name) {
872
+ if (!this.isInitialized()) {
873
+ await this.initPGlite();
874
+ }
875
+ return this.pluginManager.getPluginStatus(name, this.pgliteManager.getInstance());
876
+ }
877
+ /**
878
+ * Enable a plugin for this DO instance
879
+ */
880
+ async enablePlugin(name, autoCreate = false) {
881
+ if (!this.isInitialized()) {
882
+ await this.initPGlite();
883
+ }
884
+ // Update config
885
+ if (!this.config.plugins) {
886
+ this.config.plugins = {};
887
+ }
888
+ ;
889
+ this.config.plugins[name] = { enabled: true, autoCreate };
890
+ return this.pluginManager.enablePlugin(name, this.pgliteManager.getInstance(), autoCreate);
891
+ }
892
+ /**
893
+ * Disable a plugin for this DO instance
894
+ */
895
+ async disablePlugin(name) {
896
+ if (this.config.plugins) {
897
+ ;
898
+ this.config.plugins[name] = false;
899
+ }
900
+ return this.pluginManager.disablePlugin(name);
901
+ }
902
+ /**
903
+ * Create an extension in the database
904
+ */
905
+ async createExtension(name) {
906
+ if (!this.isInitialized()) {
907
+ await this.initPGlite();
908
+ }
909
+ return this.pluginManager.createExtension(name, this.pgliteManager.getInstance());
910
+ }
911
+ /**
912
+ * Drop an extension from the database
913
+ */
914
+ async dropExtension(name, cascade = false) {
915
+ if (!this.isInitialized()) {
916
+ await this.initPGlite();
917
+ }
918
+ return this.pluginManager.dropExtension(name, this.pgliteManager.getInstance(), cascade);
919
+ }
920
+ // ============================================================
921
+ // Migration Strategy Methods
922
+ // ============================================================
923
+ /**
924
+ * Get the migration strategy from configuration
925
+ */
926
+ getMigrationStrategy() {
927
+ return this.config.migrations?.strategy ?? 'on-create';
928
+ }
929
+ /**
930
+ * Get the current migration state from DO storage
931
+ */
932
+ async getMigrationState() {
933
+ return (await this.ctx.storage.get(MIGRATION_STATE_KEY)) ?? null;
934
+ }
935
+ /**
936
+ * Update the migration state in DO storage
937
+ */
938
+ async setMigrationState(state) {
939
+ await this.ctx.storage.put(MIGRATION_STATE_KEY, state);
940
+ }
941
+ /**
942
+ * Check if migrations need to run (for lazy migration strategy)
943
+ */
944
+ async needsLazyMigration() {
945
+ const strategy = this.getMigrationStrategy();
946
+ if (strategy !== 'on-demand') {
947
+ return false;
948
+ }
949
+ const migrations = this.config.migrations?.migrations;
950
+ if (!migrations || migrations.length === 0) {
951
+ return false;
952
+ }
953
+ if (this.migrated) {
954
+ return false;
955
+ }
956
+ const migrationState = await this.getMigrationState();
957
+ if (!migrationState) {
958
+ return true;
959
+ }
960
+ if (migrationState.status === 'completed') {
961
+ const highestVersion = Math.max(...migrations.map((m) => m.version));
962
+ return migrationState.version < highestVersion;
963
+ }
964
+ return migrationState.status !== 'in-progress';
965
+ }
966
+ /**
967
+ * Run lazy migrations (on-demand strategy)
968
+ */
969
+ async runLazyMigrations() {
970
+ if (this.migrated) {
971
+ return null;
972
+ }
973
+ const migrations = this.config.migrations?.migrations;
974
+ if (!migrations || migrations.length === 0) {
975
+ this.migrated = true;
976
+ return null;
977
+ }
978
+ await this.setMigrationState({
979
+ status: 'in-progress',
980
+ version: await this.getSchemaVersion(),
981
+ lastAttemptAt: new Date().toISOString(),
982
+ });
983
+ const startTime = performance.now();
984
+ try {
985
+ const result = await this.runMigrations(migrations, this.config.migrations?.onProgress);
986
+ const durationMs = Math.round(performance.now() - startTime);
987
+ if (result.success) {
988
+ this.migrated = true;
989
+ await this.setMigrationState({
990
+ status: 'completed',
991
+ version: result.toVersion,
992
+ lastAttemptAt: new Date().toISOString(),
993
+ durationMs,
994
+ });
995
+ }
996
+ else {
997
+ const failedMigration = result.results.find((r) => !r.success);
998
+ await this.setMigrationState({
999
+ status: 'failed',
1000
+ version: result.toVersion,
1001
+ lastAttemptAt: new Date().toISOString(),
1002
+ error: failedMigration?.error ?? 'Unknown error',
1003
+ durationMs,
1004
+ });
1005
+ }
1006
+ return result;
1007
+ }
1008
+ catch (error) {
1009
+ const durationMs = Math.round(performance.now() - startTime);
1010
+ await this.setMigrationState({
1011
+ status: 'failed',
1012
+ version: await this.getSchemaVersion(),
1013
+ lastAttemptAt: new Date().toISOString(),
1014
+ error: error instanceof Error ? error.message : 'Unknown error',
1015
+ durationMs,
1016
+ });
1017
+ throw error;
1018
+ }
1019
+ }
1020
+ /**
1021
+ * Ensure migrations have run (for on-demand strategy)
1022
+ */
1023
+ async ensureMigratedForQuery() {
1024
+ if (!(await this.needsLazyMigration())) {
1025
+ return null;
1026
+ }
1027
+ if (this.migratePromise) {
1028
+ return this.migratePromise;
1029
+ }
1030
+ this.migratePromise = this.runLazyMigrations();
1031
+ try {
1032
+ return await this.migratePromise;
1033
+ }
1034
+ finally {
1035
+ this.migratePromise = null;
1036
+ }
1037
+ }
1038
+ // ============================================================
1039
+ // PGLite Initialization
1040
+ // ============================================================
1041
+ /**
1042
+ * Get enabled plugins from configuration
1043
+ */
1044
+ async getEnabledPluginExtensions() {
1045
+ return this.pluginManager.loadEnabledExtensions();
1046
+ }
1047
+ /**
1048
+ * Get the PGLite manager (for testing)
1049
+ */
1050
+ getPGLiteManager() {
1051
+ return this.pgliteManager;
1052
+ }
1053
+ /**
1054
+ * Create a PGlite instance (overridable for testing)
1055
+ * When mocked in tests, this should return the mock PGlite instance
1056
+ */
1057
+ async createPGliteInstance() {
1058
+ await this.pgliteManager.initialize();
1059
+ return this.pgliteManager.getInstance();
1060
+ }
1061
+ /**
1062
+ * Run auto-create SQL for plugins that have autoCreate enabled
1063
+ */
1064
+ async runPluginAutoCreate() {
1065
+ const pglite = this.pgliteManager.getInstanceOrNull();
1066
+ if (!pglite)
1067
+ return;
1068
+ await this.pluginManager.runAutoCreate(pglite);
1069
+ }
1070
+ /**
1071
+ * Initialize PGlite and run auto-migrations if configured
1072
+ * Safe to call multiple times - concurrent calls return the same promise
1073
+ */
1074
+ async initPGlite() {
1075
+ if (this.isInitialized()) {
1076
+ return;
1077
+ }
1078
+ // Return existing promise if initialization is already in progress
1079
+ if (this.initPGlitePromise) {
1080
+ return this.initPGlitePromise;
1081
+ }
1082
+ // Create and store the initialization promise
1083
+ this.initPGlitePromise = this.ctx.blockConcurrencyWhile(async () => {
1084
+ if (this.isInitialized()) {
1085
+ return;
1086
+ }
1087
+ // Use createPGliteInstance which can be mocked in tests
1088
+ const pglite = await this.createPGliteInstance();
1089
+ // Inject the instance into the manager if it was created externally (e.g., by a mock)
1090
+ if (!this.pgliteManager.isInitialized()) {
1091
+ this.pgliteManager.injectInstance(pglite);
1092
+ }
1093
+ // Run auto-create for plugins
1094
+ await this.runPluginAutoCreate();
1095
+ // Determine migration strategy
1096
+ const strategy = this.getMigrationStrategy();
1097
+ // Only run migrations on init if strategy is 'on-create' (default)
1098
+ if (strategy === 'on-create') {
1099
+ const shouldAutoMigrate = this.config.migrations?.autoMigrate !== false;
1100
+ if (shouldAutoMigrate && this.config.migrations?.migrations?.length) {
1101
+ const result = await this.ensureMigrated();
1102
+ if (result && !result.success) {
1103
+ console.error(`[PostgresDO] Auto-migration failed: ${result.results.find((r) => !r.success)?.error}`);
1104
+ }
1105
+ }
1106
+ }
1107
+ // Set PGlite reference on memory pressure manager for extension unloading
1108
+ const pgliteForMemory = this.pgliteManager.getInstanceOrNull();
1109
+ if (this.memoryPressureManager && pgliteForMemory) {
1110
+ this.memoryPressureManager.setPGlite(pgliteForMemory);
1111
+ }
1112
+ // Start memory monitoring if enabled (default: enabled)
1113
+ if (this.memoryPressureConfig.enabled !== false) {
1114
+ this.getMemoryPressureManager().startMonitoring();
1115
+ }
1116
+ });
1117
+ await this.initPGlitePromise;
1118
+ }
1119
+ // ============================================================
1120
+ // Query Execution
1121
+ // ============================================================
1122
+ /**
1123
+ * Execute a single query
1124
+ */
1125
+ async executeQuery(request) {
1126
+ if (this.shutdownManager.getStatus() === 'shutdown') {
1127
+ throw new ShutdownError();
1128
+ }
1129
+ // Use injected query execution concern if available
1130
+ if (this.injectedQueryExecutionConcern &&
1131
+ typeof this.injectedQueryExecutionConcern.executeQuery === 'function') {
1132
+ const result = await this.injectedQueryExecutionConcern.executeQuery(request);
1133
+ return {
1134
+ rows: result.rows,
1135
+ fields: result.fields,
1136
+ rowCount: result.rowCount,
1137
+ durationMs: result.durationMs,
1138
+ };
1139
+ }
1140
+ if (!this.isInitialized()) {
1141
+ await this.initPGlite();
1142
+ }
1143
+ await this.ensureMigratedForQuery();
1144
+ const queryId = this.shutdownManager.trackQuery(request.sql);
1145
+ const startTime = performance.now();
1146
+ try {
1147
+ let sql = request.sql;
1148
+ if (request.preserveCase ?? this.config.preserveCase) {
1149
+ sql = preserveCase(sql);
1150
+ }
1151
+ const pglite = this.pgliteManager.getInstance();
1152
+ const result = await pglite.query(sql, request.params);
1153
+ const durationMs = performance.now() - startTime;
1154
+ this.captureWAL(sql, {
1155
+ rows: result.rows,
1156
+ ...(result.affectedRows !== undefined && { affectedRows: result.affectedRows }),
1157
+ });
1158
+ this.statsManager.recordQuery(durationMs, true);
1159
+ return {
1160
+ rows: result.rows,
1161
+ fields: result.fields,
1162
+ rowCount: result.affectedRows ?? result.rows.length,
1163
+ durationMs,
1164
+ };
1165
+ }
1166
+ catch (error) {
1167
+ const durationMs = performance.now() - startTime;
1168
+ this.statsManager.recordQuery(durationMs, false);
1169
+ throw error;
1170
+ }
1171
+ finally {
1172
+ this.shutdownManager.untrackQuery(queryId);
1173
+ }
1174
+ }
1175
+ /**
1176
+ * Execute a batch of queries
1177
+ */
1178
+ async executeBatch(request) {
1179
+ if (!this.isInitialized()) {
1180
+ await this.initPGlite();
1181
+ }
1182
+ const startTime = performance.now();
1183
+ const results = [];
1184
+ const pglite = this.pgliteManager.getInstance();
1185
+ if (request.transaction) {
1186
+ await pglite.query('BEGIN');
1187
+ try {
1188
+ for (const query of request.queries) {
1189
+ const result = await this.executeQuery(query);
1190
+ results.push(result);
1191
+ }
1192
+ await pglite.query('COMMIT');
1193
+ }
1194
+ catch (error) {
1195
+ await pglite.query('ROLLBACK');
1196
+ throw error;
1197
+ }
1198
+ }
1199
+ else {
1200
+ for (const query of request.queries) {
1201
+ const result = await this.executeQuery(query);
1202
+ results.push(result);
1203
+ }
1204
+ }
1205
+ const durationMs = performance.now() - startTime;
1206
+ return {
1207
+ results,
1208
+ durationMs,
1209
+ };
1210
+ }
1211
+ /**
1212
+ * Handle incoming fetch requests
1213
+ */
1214
+ async fetch(request) {
1215
+ const url = new URL(request.url);
1216
+ if (url.pathname === '/ping') {
1217
+ return new Response('pong', { status: 200 });
1218
+ }
1219
+ return new Response('Not Found', { status: 404 });
1220
+ }
1221
+ // ============================================================
1222
+ // RPC Methods
1223
+ // ============================================================
1224
+ /**
1225
+ * RPC: Execute a SQL query
1226
+ */
1227
+ async rpcQuery(sql, params) {
1228
+ if (!this.isInitialized()) {
1229
+ await this.initPGlite();
1230
+ }
1231
+ await this.ensureMigratedForQuery();
1232
+ const startTime = performance.now();
1233
+ let finalSql = sql;
1234
+ if (this.config.preserveCase) {
1235
+ finalSql = preserveCase(sql);
1236
+ }
1237
+ const pglite = this.pgliteManager.getInstance();
1238
+ const result = await pglite.query(finalSql, params);
1239
+ const durationMs = performance.now() - startTime;
1240
+ this.statsManager.recordQuery(durationMs, true);
1241
+ return {
1242
+ rows: result.rows,
1243
+ fields: result.fields,
1244
+ rowCount: result.affectedRows ?? result.rows.length,
1245
+ durationMs,
1246
+ };
1247
+ }
1248
+ /**
1249
+ * RPC: Execute a SQL query and return only the first row
1250
+ */
1251
+ async rpcQueryOne(sql, params) {
1252
+ const result = await this.rpcQuery(sql, params);
1253
+ return result.rows[0] ?? null;
1254
+ }
1255
+ /**
1256
+ * RPC: Execute a query and return a scalar value
1257
+ */
1258
+ async rpcQueryScalar(sql, params) {
1259
+ const result = await this.rpcQuery(sql, params);
1260
+ const row = result.rows[0];
1261
+ if (!row)
1262
+ return null;
1263
+ const firstKey = Object.keys(row)[0];
1264
+ return (firstKey ? row[firstKey] : null);
1265
+ }
1266
+ /**
1267
+ * RPC: Execute a batch of queries
1268
+ */
1269
+ async rpcBatch(queries) {
1270
+ if (!this.isInitialized()) {
1271
+ await this.initPGlite();
1272
+ }
1273
+ const startTime = performance.now();
1274
+ const results = [];
1275
+ for (const query of queries) {
1276
+ const result = await this.rpcQuery(query.sql, query.params);
1277
+ results.push(result);
1278
+ }
1279
+ return {
1280
+ results,
1281
+ durationMs: performance.now() - startTime,
1282
+ };
1283
+ }
1284
+ /**
1285
+ * RPC: Execute a batch of queries within a transaction
1286
+ */
1287
+ async rpcBatchTransaction(queries) {
1288
+ if (!this.isInitialized()) {
1289
+ await this.initPGlite();
1290
+ }
1291
+ const startTime = performance.now();
1292
+ const results = [];
1293
+ const pglite = this.pgliteManager.getInstance();
1294
+ await pglite.query('BEGIN');
1295
+ try {
1296
+ for (const query of queries) {
1297
+ const result = await this.rpcQuery(query.sql, query.params);
1298
+ results.push(result);
1299
+ }
1300
+ await pglite.query('COMMIT');
1301
+ }
1302
+ catch (error) {
1303
+ await pglite.query('ROLLBACK');
1304
+ throw error;
1305
+ }
1306
+ return {
1307
+ results,
1308
+ durationMs: performance.now() - startTime,
1309
+ };
1310
+ }
1311
+ /**
1312
+ * RPC: Start a transaction and return a TransactionRpcApi
1313
+ */
1314
+ async rpcTransaction(options) {
1315
+ if (!this.isInitialized()) {
1316
+ await this.initPGlite();
1317
+ }
1318
+ let beginSql = 'BEGIN';
1319
+ if (options?.isolationLevel) {
1320
+ beginSql += ` ISOLATION LEVEL ${options.isolationLevel}`;
1321
+ }
1322
+ if (options?.readOnly) {
1323
+ beginSql += ' READ ONLY';
1324
+ }
1325
+ const pglite = this.pgliteManager.getInstance();
1326
+ await pglite.query(beginSql);
1327
+ return new TransactionRpcApi(pglite);
1328
+ }
1329
+ /**
1330
+ * RPC: Execute a SQL statement that doesn't return rows
1331
+ */
1332
+ async rpcExecute(sql, params) {
1333
+ const result = await this.rpcQuery(sql, params);
1334
+ return {
1335
+ rowCount: result.rowCount,
1336
+ durationMs: result.durationMs,
1337
+ };
1338
+ }
1339
+ /**
1340
+ * RPC: Get the PostgresRpcApi instance
1341
+ */
1342
+ async getRpcApi() {
1343
+ if (!this.isInitialized()) {
1344
+ await this.initPGlite();
1345
+ }
1346
+ return new PostgresRpcApi(this.pgliteManager.getInstance(), this.config.database);
1347
+ }
1348
+ /**
1349
+ * RPC: Health check
1350
+ */
1351
+ async rpcPing() {
1352
+ if (!this.isInitialized()) {
1353
+ await this.initPGlite();
1354
+ }
1355
+ const startTime = performance.now();
1356
+ const pglite = this.pgliteManager.getInstance();
1357
+ await pglite.query('SELECT 1');
1358
+ return {
1359
+ ok: true,
1360
+ durationMs: performance.now() - startTime,
1361
+ };
1362
+ }
1363
+ /**
1364
+ * RPC: Get database version
1365
+ */
1366
+ async rpcVersion() {
1367
+ const result = await this.rpcQueryScalar('SELECT version()');
1368
+ return result ?? 'unknown';
1369
+ }
1370
+ /**
1371
+ * RPC: List all tables in the public schema
1372
+ */
1373
+ async rpcListTables() {
1374
+ const result = await this.rpcQuery(`SELECT tablename FROM pg_tables WHERE schemaname = 'public' ORDER BY tablename`);
1375
+ return result.rows.map((r) => r.tablename);
1376
+ }
1377
+ /**
1378
+ * RPC: Get table schema information
1379
+ */
1380
+ async rpcDescribeTable(tableName) {
1381
+ const result = await this.rpcQuery(`SELECT column_name, data_type, is_nullable, column_default
1382
+ FROM information_schema.columns
1383
+ WHERE table_schema = 'public' AND table_name = $1
1384
+ ORDER BY ordinal_position`, [tableName]);
1385
+ return result.rows.map((r) => ({
1386
+ column_name: r.column_name,
1387
+ data_type: r.data_type,
1388
+ is_nullable: r.is_nullable === 'YES',
1389
+ column_default: r.column_default,
1390
+ }));
1391
+ }
1392
+ /**
1393
+ * RPC: Get database statistics
1394
+ */
1395
+ async rpcGetStats() {
1396
+ const stats = this.statsManager.getStats();
1397
+ return {
1398
+ queryCount: stats.queryCount,
1399
+ totalDurationMs: stats.totalDurationMs,
1400
+ avgDurationMs: stats.avgDurationMs,
1401
+ lastQueryAt: stats.lastQueryAt ?? null,
1402
+ uptime: this.getUptime(),
1403
+ shutdownStatus: this.shutdownManager.getStatus(),
1404
+ };
1405
+ }
1406
+ }
1407
+ // ============================================================
1408
+ // Factory Functions
1409
+ // ============================================================
1410
+ /**
1411
+ * Factory function to create PostgresDO with custom configuration
1412
+ */
1413
+ export function createPostgresDO(config, authConfig, walConfig, memoryPressureConfig) {
1414
+ return class extends PostgresDO {
1415
+ constructor(state, env) {
1416
+ super(state, env, config, authConfig, walConfig, memoryPressureConfig);
1417
+ }
1418
+ };
1419
+ }
1420
+ /**
1421
+ * Factory function to create an authenticated PostgresDO for user-scoped databases
1422
+ */
1423
+ export function createAuthenticatedPostgresDO(config, authConfig = {}, walConfig, memoryPressureConfig) {
1424
+ return createPostgresDO(config, {
1425
+ ...authConfig,
1426
+ enabled: true,
1427
+ }, walConfig, memoryPressureConfig);
1428
+ }
1429
+ /**
1430
+ * Factory function to create PostgresDO with WAL capture enabled
1431
+ */
1432
+ export function createPostgresDOWithWAL(config, walConfig = { enabled: true }, authConfig, memoryPressureConfig) {
1433
+ return createPostgresDO(config, authConfig, { enabled: true, ...walConfig }, memoryPressureConfig);
1434
+ }
1435
+ /**
1436
+ * Factory function to create PostgresDO with memory pressure protection enabled
1437
+ */
1438
+ export function createPostgresDOWithMemoryProtection(config, memoryPressureConfig = { enabled: true, autoUnloadExtensions: true }, authConfig, walConfig) {
1439
+ return createPostgresDO(config, authConfig, walConfig, { enabled: true, ...memoryPressureConfig });
1440
+ }
1441
+ //# sourceMappingURL=do.js.map