@mistriwork/engine 0.0.0-stage → 1.0.0-rc.10

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 (546) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +17 -2
  3. package/dist/adapters/adapter.d.ts +693 -0
  4. package/dist/adapters/adapter.js +444 -0
  5. package/dist/adapters/cache/cacheStore.d.ts +75 -0
  6. package/dist/adapters/cache/cacheStore.js +160 -0
  7. package/dist/adapters/cache/resp.d.ts +52 -0
  8. package/dist/adapters/cache/resp.js +237 -0
  9. package/dist/adapters/commands/canonicalJson.d.ts +19 -0
  10. package/dist/adapters/commands/canonicalJson.js +154 -0
  11. package/dist/adapters/connect.d.ts +29 -0
  12. package/dist/adapters/connect.js +40 -0
  13. package/dist/adapters/connectionBudget.d.ts +101 -0
  14. package/dist/adapters/connectionBudget.js +128 -0
  15. package/dist/adapters/dbLatency.d.ts +35 -0
  16. package/dist/adapters/dbLatency.js +79 -0
  17. package/dist/adapters/epochCache.d.ts +50 -0
  18. package/dist/adapters/epochCache.js +85 -0
  19. package/dist/adapters/http/egress.d.ts +48 -0
  20. package/dist/adapters/http/egress.js +175 -0
  21. package/dist/adapters/http/httpAdapter.d.ts +71 -0
  22. package/dist/adapters/http/httpAdapter.js +512 -0
  23. package/dist/adapters/http/httpDescription.d.ts +32 -0
  24. package/dist/adapters/http/httpDescription.js +246 -0
  25. package/dist/adapters/http/openapi.d.ts +98 -0
  26. package/dist/adapters/http/openapi.js +487 -0
  27. package/dist/adapters/layoutRefusal.d.ts +24 -0
  28. package/dist/adapters/layoutRefusal.js +35 -0
  29. package/dist/adapters/net/networkPolicy.d.ts +44 -0
  30. package/dist/adapters/net/networkPolicy.js +123 -0
  31. package/dist/adapters/net/untrustedDatabase.d.ts +18 -0
  32. package/dist/adapters/net/untrustedDatabase.js +120 -0
  33. package/dist/adapters/poolAdmission.d.ts +43 -0
  34. package/dist/adapters/poolAdmission.js +184 -0
  35. package/dist/adapters/poolMetrics.d.ts +121 -0
  36. package/dist/adapters/poolMetrics.js +185 -0
  37. package/dist/adapters/postgres.d.ts +436 -0
  38. package/dist/adapters/postgres.js +1890 -0
  39. package/dist/adapters/postgresCatalog.d.ts +96 -0
  40. package/dist/adapters/postgresCatalog.js +387 -0
  41. package/dist/adapters/postgresCatalogDigest.d.ts +30 -0
  42. package/dist/adapters/postgresCatalogDigest.js +87 -0
  43. package/dist/adapters/postgresCatalogRows.d.ts +62 -0
  44. package/dist/adapters/postgresCatalogRows.js +37 -0
  45. package/dist/adapters/postgresDates.d.ts +1 -0
  46. package/dist/adapters/postgresDates.js +39 -0
  47. package/dist/adapters/postgresMaintenance.d.ts +33 -0
  48. package/dist/adapters/postgresMaintenance.js +179 -0
  49. package/dist/adapters/postgresPool.d.ts +255 -0
  50. package/dist/adapters/postgresPool.js +838 -0
  51. package/dist/adapters/postgresPooler.d.ts +28 -0
  52. package/dist/adapters/postgresPooler.js +267 -0
  53. package/dist/adapters/postgresReadCatalog.d.ts +31 -0
  54. package/dist/adapters/postgresReadCatalog.js +226 -0
  55. package/dist/adapters/postgresReadSnapshot.d.ts +46 -0
  56. package/dist/adapters/postgresReadSnapshot.js +133 -0
  57. package/dist/adapters/postgresSchemaEpoch.d.ts +24 -0
  58. package/dist/adapters/postgresSchemaEpoch.js +149 -0
  59. package/dist/adapters/postgresTransactionHandle.d.ts +173 -0
  60. package/dist/adapters/postgresTransactionHandle.js +524 -0
  61. package/dist/adapters/postgresValues.d.ts +30 -0
  62. package/dist/adapters/postgresValues.js +75 -0
  63. package/dist/adapters/replicas.d.ts +70 -0
  64. package/dist/adapters/replicas.js +208 -0
  65. package/dist/adapters/reservedSql.d.ts +38 -0
  66. package/dist/adapters/reservedSql.js +264 -0
  67. package/dist/adapters/rolePrivileges.d.ts +17 -0
  68. package/dist/adapters/rolePrivileges.js +22 -0
  69. package/dist/adapters/scoped/keyRows.d.ts +65 -0
  70. package/dist/adapters/scoped/keyRows.js +173 -0
  71. package/dist/adapters/scoped/postgresScopeCatalog.d.ts +16 -0
  72. package/dist/adapters/scoped/postgresScopeCatalog.js +117 -0
  73. package/dist/adapters/scoped/scopedCommandOperations.d.ts +5 -0
  74. package/dist/adapters/scoped/scopedCommandOperations.js +48 -0
  75. package/dist/adapters/scoped/scopedReads.d.ts +20 -0
  76. package/dist/adapters/scoped/scopedReads.js +174 -0
  77. package/dist/adapters/scoped/scopedTransaction.d.ts +89 -0
  78. package/dist/adapters/scoped/scopedTransaction.js +303 -0
  79. package/dist/adapters/scoped/sqliteScopeCatalog.d.ts +16 -0
  80. package/dist/adapters/scoped/sqliteScopeCatalog.js +241 -0
  81. package/dist/adapters/scoped/updateGuard.d.ts +3 -0
  82. package/dist/adapters/scoped/updateGuard.js +40 -0
  83. package/dist/adapters/serverSettings.d.ts +45 -0
  84. package/dist/adapters/serverSettings.js +46 -0
  85. package/dist/adapters/sqlite.d.ts +262 -0
  86. package/dist/adapters/sqlite.js +1434 -0
  87. package/dist/adapters/sqliteCostlyReads.d.ts +33 -0
  88. package/dist/adapters/sqliteCostlyReads.js +49 -0
  89. package/dist/adapters/sqliteDecimals.d.ts +22 -0
  90. package/dist/adapters/sqliteDecimals.js +57 -0
  91. package/dist/adapters/sqliteHandles.d.ts +43 -0
  92. package/dist/adapters/sqliteHandles.js +143 -0
  93. package/dist/adapters/sqliteStatementProcess.d.ts +29 -0
  94. package/dist/adapters/sqliteStatementProcess.js +131 -0
  95. package/dist/adapters/statementControl.d.ts +34 -0
  96. package/dist/adapters/statementControl.js +90 -0
  97. package/dist/adapters/storeHost.d.ts +130 -0
  98. package/dist/adapters/storeHost.js +13 -0
  99. package/dist/adapters/telemetry/drivers.d.ts +21 -0
  100. package/dist/adapters/telemetry/drivers.js +321 -0
  101. package/dist/adapters/telemetry/metrics.d.ts +63 -0
  102. package/dist/adapters/telemetry/metrics.js +122 -0
  103. package/dist/adapters/telemetry/otlp.d.ts +12 -0
  104. package/dist/adapters/telemetry/otlp.js +320 -0
  105. package/dist/adapters/telemetry/otlpEncode.d.ts +48 -0
  106. package/dist/adapters/telemetry/otlpEncode.js +366 -0
  107. package/dist/adapters/telemetry/otlpEnv.d.ts +1 -0
  108. package/dist/adapters/telemetry/otlpEnv.js +12 -0
  109. package/dist/adapters/telemetry/serverTiming.d.ts +83 -0
  110. package/dist/adapters/telemetry/serverTiming.js +503 -0
  111. package/dist/adapters/telemetry/start.d.ts +10 -0
  112. package/dist/adapters/telemetry/start.js +25 -0
  113. package/dist/adapters/telemetry/statement.d.ts +16 -0
  114. package/dist/adapters/telemetry/statement.js +134 -0
  115. package/dist/adapters/telemetry/trace.d.ts +127 -0
  116. package/dist/adapters/telemetry/trace.js +295 -0
  117. package/dist/adapters/writeAhead.d.ts +27 -0
  118. package/dist/adapters/writeAhead.js +46 -0
  119. package/dist/adapters/writeAttribution.d.ts +18 -0
  120. package/dist/adapters/writeAttribution.js +23 -0
  121. package/dist/adapters/writeCapture.d.ts +73 -0
  122. package/dist/adapters/writeCapture.js +20 -0
  123. package/dist/adapters/writeLanes.d.ts +94 -0
  124. package/dist/adapters/writeLanes.js +232 -0
  125. package/dist/engine.d.ts +15 -0
  126. package/dist/engine.js +13 -0
  127. package/dist/server/auth/credentials.d.ts +61 -0
  128. package/dist/server/auth/credentials.js +260 -0
  129. package/dist/server/cacheService.d.ts +50 -0
  130. package/dist/server/cacheService.js +110 -0
  131. package/dist/server/cli/args.d.ts +176 -0
  132. package/dist/server/cli/args.js +342 -0
  133. package/dist/server/cli/bin.d.ts +5 -0
  134. package/dist/server/cli/bin.js +66 -0
  135. package/dist/server/cli/browser.d.ts +15 -0
  136. package/dist/server/cli/browser.js +37 -0
  137. package/dist/server/cli/config.d.ts +50 -0
  138. package/dist/server/cli/config.js +206 -0
  139. package/dist/server/cli/startup.d.ts +36 -0
  140. package/dist/server/cli/startup.js +128 -0
  141. package/dist/server/cli/startupOptions.d.ts +63 -0
  142. package/dist/server/cli/startupOptions.js +143 -0
  143. package/dist/server/cli/subcommand.d.ts +28 -0
  144. package/dist/server/cli/subcommand.js +32 -0
  145. package/dist/server/cli/usage.d.ts +13 -0
  146. package/dist/server/cli/usage.js +31 -0
  147. package/dist/server/clientHttp.d.ts +184 -0
  148. package/dist/server/clientHttp.js +700 -0
  149. package/dist/server/clientSurface.d.ts +128 -0
  150. package/dist/server/clientSurface.js +182 -0
  151. package/dist/server/columnGrants.d.ts +103 -0
  152. package/dist/server/columnGrants.js +730 -0
  153. package/dist/server/compileCache.d.ts +1 -0
  154. package/dist/server/compileCache.js +30 -0
  155. package/dist/server/config/locations.d.ts +1 -0
  156. package/dist/server/config/locations.js +15 -0
  157. package/dist/server/configPaths.d.ts +7 -0
  158. package/dist/server/configPaths.js +34 -0
  159. package/dist/server/configSections.d.ts +64 -0
  160. package/dist/server/configSections.js +72 -0
  161. package/dist/server/connectionRedaction.d.ts +30 -0
  162. package/dist/server/connectionRedaction.js +77 -0
  163. package/dist/server/connections.d.ts +353 -0
  164. package/dist/server/connections.js +978 -0
  165. package/dist/server/constraints.d.ts +82 -0
  166. package/dist/server/constraints.js +169 -0
  167. package/dist/server/demo.d.ts +9 -0
  168. package/dist/server/demo.js +554 -0
  169. package/dist/server/devclient.d.ts +108 -0
  170. package/dist/server/devclient.js +361 -0
  171. package/dist/server/evidence.d.ts +55 -0
  172. package/dist/server/evidence.js +323 -0
  173. package/dist/server/hiddenColumns.d.ts +32 -0
  174. package/dist/server/hiddenColumns.js +238 -0
  175. package/dist/server/http/baselineHeaders.d.ts +24 -0
  176. package/dist/server/http/baselineHeaders.js +12 -0
  177. package/dist/server/http/captured.d.ts +35 -0
  178. package/dist/server/http/captured.js +73 -0
  179. package/dist/server/http/clock.d.ts +1 -0
  180. package/dist/server/http/clock.js +14 -0
  181. package/dist/server/http/connectionSource.d.ts +4 -0
  182. package/dist/server/http/connectionSource.js +48 -0
  183. package/dist/server/http/context.d.ts +189 -0
  184. package/dist/server/http/context.js +11 -0
  185. package/dist/server/http/crawlerText.d.ts +15 -0
  186. package/dist/server/http/crawlerText.js +32 -0
  187. package/dist/server/http/dataRoutes.d.ts +88 -0
  188. package/dist/server/http/dataRoutes.js +137 -0
  189. package/dist/server/http/door.d.ts +57 -0
  190. package/dist/server/http/door.js +39 -0
  191. package/dist/server/http/exportRoute.d.ts +15 -0
  192. package/dist/server/http/exportRoute.js +320 -0
  193. package/dist/server/http/firstPaint.d.ts +108 -0
  194. package/dist/server/http/firstPaint.js +262 -0
  195. package/dist/server/http/httpOperationRoutes.d.ts +11 -0
  196. package/dist/server/http/httpOperationRoutes.js +50 -0
  197. package/dist/server/http/pageReads.d.ts +20 -0
  198. package/dist/server/http/pageReads.js +205 -0
  199. package/dist/server/http/pageRoutes.d.ts +39 -0
  200. package/dist/server/http/pageRoutes.js +291 -0
  201. package/dist/server/http/probes.d.ts +22 -0
  202. package/dist/server/http/probes.js +27 -0
  203. package/dist/server/http/rateLimit.d.ts +131 -0
  204. package/dist/server/http/rateLimit.js +351 -0
  205. package/dist/server/http/readRoutes.d.ts +9 -0
  206. package/dist/server/http/readRoutes.js +131 -0
  207. package/dist/server/http/readRouting.d.ts +20 -0
  208. package/dist/server/http/readRouting.js +80 -0
  209. package/dist/server/http/recordCompose.d.ts +67 -0
  210. package/dist/server/http/recordCompose.js +167 -0
  211. package/dist/server/http/recordWrites.d.ts +89 -0
  212. package/dist/server/http/recordWrites.js +298 -0
  213. package/dist/server/http/refusalReport.d.ts +38 -0
  214. package/dist/server/http/refusalReport.js +63 -0
  215. package/dist/server/http/reply.d.ts +130 -0
  216. package/dist/server/http/reply.js +394 -0
  217. package/dist/server/http/requestOrigin.d.ts +11 -0
  218. package/dist/server/http/requestOrigin.js +8 -0
  219. package/dist/server/http/router.d.ts +45 -0
  220. package/dist/server/http/router.js +22 -0
  221. package/dist/server/http/serverCore.d.ts +68 -0
  222. package/dist/server/http/serverCore.js +177 -0
  223. package/dist/server/http/traceRequest.d.ts +30 -0
  224. package/dist/server/http/traceRequest.js +224 -0
  225. package/dist/server/http/trust.d.ts +261 -0
  226. package/dist/server/http/trust.js +472 -0
  227. package/dist/server/http/writeRefusal.d.ts +33 -0
  228. package/dist/server/http/writeRefusal.js +24 -0
  229. package/dist/server/httpConnection.d.ts +49 -0
  230. package/dist/server/httpConnection.js +170 -0
  231. package/dist/server/impact.d.ts +55 -0
  232. package/dist/server/impact.js +47 -0
  233. package/dist/server/journal.d.ts +134 -0
  234. package/dist/server/journal.js +398 -0
  235. package/dist/server/keysetReadHttp.d.ts +52 -0
  236. package/dist/server/keysetReadHttp.js +85 -0
  237. package/dist/server/layouts.d.ts +49 -0
  238. package/dist/server/layouts.js +192 -0
  239. package/dist/server/migrate/cli.d.ts +55 -0
  240. package/dist/server/migrate/cli.js +517 -0
  241. package/dist/server/migrate/database.d.ts +37 -0
  242. package/dist/server/migrate/database.js +247 -0
  243. package/dist/server/migrate/desired.d.ts +76 -0
  244. package/dist/server/migrate/desired.js +292 -0
  245. package/dist/server/migrate/files.d.ts +34 -0
  246. package/dist/server/migrate/files.js +141 -0
  247. package/dist/server/migrate/flyway.d.ts +7 -0
  248. package/dist/server/migrate/flyway.js +69 -0
  249. package/dist/server/migrate/history.d.ts +70 -0
  250. package/dist/server/migrate/history.js +211 -0
  251. package/dist/server/migrate/runner.d.ts +100 -0
  252. package/dist/server/migrate/runner.js +409 -0
  253. package/dist/server/migrate/snapshot.d.ts +30 -0
  254. package/dist/server/migrate/snapshot.js +239 -0
  255. package/dist/server/migrate/target.d.ts +33 -0
  256. package/dist/server/migrate/target.js +82 -0
  257. package/dist/server/openapiDraft.d.ts +25 -0
  258. package/dist/server/openapiDraft.js +171 -0
  259. package/dist/server/operations/diagnostics.d.ts +101 -0
  260. package/dist/server/operations/diagnostics.js +284 -0
  261. package/dist/server/operations/requestMetrics.d.ts +33 -0
  262. package/dist/server/operations/requestMetrics.js +94 -0
  263. package/dist/server/packageVersion.d.ts +1 -0
  264. package/dist/server/packageVersion.js +11 -0
  265. package/dist/server/poolConfig.d.ts +34 -0
  266. package/dist/server/poolConfig.js +114 -0
  267. package/dist/server/product.d.ts +20 -0
  268. package/dist/server/product.js +12 -0
  269. package/dist/server/recordHistoryOperations.d.ts +39 -0
  270. package/dist/server/recordHistoryOperations.js +43 -0
  271. package/dist/server/recordWriteOperations.d.ts +111 -0
  272. package/dist/server/recordWriteOperations.js +329 -0
  273. package/dist/server/resourceReadHttp.d.ts +81 -0
  274. package/dist/server/resourceReadHttp.js +606 -0
  275. package/dist/server/resourceReadOperations.d.ts +147 -0
  276. package/dist/server/resourceReadOperations.js +452 -0
  277. package/dist/server/scaffoldMachine.d.ts +54 -0
  278. package/dist/server/scaffoldMachine.js +184 -0
  279. package/dist/server/seed/cli.d.ts +20 -0
  280. package/dist/server/seed/cli.js +164 -0
  281. package/dist/server/seed/lexicon.d.ts +26 -0
  282. package/dist/server/seed/lexicon.js +585 -0
  283. package/dist/server/seed/seed.d.ts +70 -0
  284. package/dist/server/seed/seed.js +779 -0
  285. package/dist/server/seed/words.d.ts +21 -0
  286. package/dist/server/seed/words.js +164 -0
  287. package/dist/server/serverRequests.d.ts +6 -0
  288. package/dist/server/serverRequests.js +33 -0
  289. package/dist/server/serverTimeouts.d.ts +33 -0
  290. package/dist/server/serverTimeouts.js +32 -0
  291. package/dist/server/shapeonly.d.ts +32 -0
  292. package/dist/server/shapeonly.js +110 -0
  293. package/dist/server/startupWarnings.d.ts +32 -0
  294. package/dist/server/startupWarnings.js +92 -0
  295. package/dist/shared/addressParams.d.ts +28 -0
  296. package/dist/shared/addressParams.js +47 -0
  297. package/dist/shared/appCards.d.ts +123 -0
  298. package/dist/shared/appCards.js +385 -0
  299. package/dist/shared/appComponents.d.ts +177 -0
  300. package/dist/shared/appComponents.js +422 -0
  301. package/dist/shared/appDocuments.d.ts +43 -0
  302. package/dist/shared/appDocuments.js +131 -0
  303. package/dist/shared/appEmbeds.d.ts +21 -0
  304. package/dist/shared/appEmbeds.js +24 -0
  305. package/dist/shared/appIcons.d.ts +28 -0
  306. package/dist/shared/appIcons.js +223 -0
  307. package/dist/shared/appLinks.d.ts +17 -0
  308. package/dist/shared/appLinks.js +124 -0
  309. package/dist/shared/appListColumns.d.ts +3 -0
  310. package/dist/shared/appListColumns.js +66 -0
  311. package/dist/shared/appLocale.d.ts +36 -0
  312. package/dist/shared/appLocale.js +86 -0
  313. package/dist/shared/appMessages.d.ts +44 -0
  314. package/dist/shared/appMessages.js +78 -0
  315. package/dist/shared/appNoun.d.ts +21 -0
  316. package/dist/shared/appNoun.js +32 -0
  317. package/dist/shared/autoBucket.d.ts +98 -0
  318. package/dist/shared/autoBucket.js +305 -0
  319. package/dist/shared/autoValues.d.ts +25 -0
  320. package/dist/shared/autoValues.js +25 -0
  321. package/dist/shared/breakdown.d.ts +228 -0
  322. package/dist/shared/breakdown.js +557 -0
  323. package/dist/shared/breakdowntext.d.ts +41 -0
  324. package/dist/shared/breakdowntext.js +400 -0
  325. package/dist/shared/builtInThemes.d.ts +2 -0
  326. package/dist/shared/builtInThemes.js +771 -0
  327. package/dist/shared/chartSeparation.d.ts +11 -0
  328. package/dist/shared/chartSeparation.js +58 -0
  329. package/dist/shared/clauses.d.ts +22 -0
  330. package/dist/shared/clauses.js +97 -0
  331. package/dist/shared/columnCaption.d.ts +16 -0
  332. package/dist/shared/columnCaption.js +90 -0
  333. package/dist/shared/commandFieldPath.d.ts +2 -0
  334. package/dist/shared/commandFieldPath.js +7 -0
  335. package/dist/shared/commandWire.d.ts +26 -0
  336. package/dist/shared/commandWire.js +41 -0
  337. package/dist/shared/computed.d.ts +161 -0
  338. package/dist/shared/computed.js +378 -0
  339. package/dist/shared/computedParse.d.ts +13 -0
  340. package/dist/shared/computedParse.js +278 -0
  341. package/dist/shared/computedValue.d.ts +47 -0
  342. package/dist/shared/computedValue.js +191 -0
  343. package/dist/shared/connection.d.ts +30 -0
  344. package/dist/shared/connection.js +1 -0
  345. package/dist/shared/csv.d.ts +20 -0
  346. package/dist/shared/csv.js +63 -0
  347. package/dist/shared/dashLayout.d.ts +30 -0
  348. package/dist/shared/dashLayout.js +132 -0
  349. package/dist/shared/dashboardAsks.d.ts +93 -0
  350. package/dist/shared/dashboardAsks.js +129 -0
  351. package/dist/shared/dashboardTrend.d.ts +20 -0
  352. package/dist/shared/dashboardTrend.js +50 -0
  353. package/dist/shared/declaredReferences.d.ts +50 -0
  354. package/dist/shared/declaredReferences.js +202 -0
  355. package/dist/shared/definedFields.d.ts +63 -0
  356. package/dist/shared/definedFields.js +103 -0
  357. package/dist/shared/definedValues.d.ts +63 -0
  358. package/dist/shared/definedValues.js +184 -0
  359. package/dist/shared/displayDefaults.d.ts +135 -0
  360. package/dist/shared/displayDefaults.js +529 -0
  361. package/dist/shared/dueDate.d.ts +6 -0
  362. package/dist/shared/dueDate.js +6 -0
  363. package/dist/shared/duration.d.ts +4 -0
  364. package/dist/shared/duration.js +23 -0
  365. package/dist/shared/fileBounds.d.ts +9 -0
  366. package/dist/shared/fileBounds.js +9 -0
  367. package/dist/shared/filter.d.ts +217 -0
  368. package/dist/shared/filter.js +305 -0
  369. package/dist/shared/firstPaint.d.ts +24 -0
  370. package/dist/shared/firstPaint.js +33 -0
  371. package/dist/shared/form.d.ts +21 -0
  372. package/dist/shared/form.js +25 -0
  373. package/dist/shared/formValues.d.ts +104 -0
  374. package/dist/shared/formValues.js +352 -0
  375. package/dist/shared/funnel.d.ts +45 -0
  376. package/dist/shared/funnel.js +108 -0
  377. package/dist/shared/httpOperations.d.ts +48 -0
  378. package/dist/shared/httpOperations.js +9 -0
  379. package/dist/shared/iconGlyphs.d.ts +4 -0
  380. package/dist/shared/iconGlyphs.js +151 -0
  381. package/dist/shared/iconWeights.d.ts +3 -0
  382. package/dist/shared/iconWeights.js +162 -0
  383. package/dist/shared/imageWidths.d.ts +32 -0
  384. package/dist/shared/imageWidths.js +38 -0
  385. package/dist/shared/keysetPage.d.ts +64 -0
  386. package/dist/shared/keysetPage.js +161 -0
  387. package/dist/shared/like.d.ts +20 -0
  388. package/dist/shared/like.js +29 -0
  389. package/dist/shared/listEmpty.d.ts +12 -0
  390. package/dist/shared/listEmpty.js +36 -0
  391. package/dist/shared/listFilters.d.ts +28 -0
  392. package/dist/shared/listFilters.js +84 -0
  393. package/dist/shared/listPresentations.d.ts +199 -0
  394. package/dist/shared/listPresentations.js +7 -0
  395. package/dist/shared/listQuestion.d.ts +52 -0
  396. package/dist/shared/listQuestion.js +137 -0
  397. package/dist/shared/lookPalettes.d.ts +62 -0
  398. package/dist/shared/lookPalettes.js +306 -0
  399. package/dist/shared/maskQuoted.d.ts +24 -0
  400. package/dist/shared/maskQuoted.js +48 -0
  401. package/dist/shared/mentionLabel.d.ts +19 -0
  402. package/dist/shared/mentionLabel.js +38 -0
  403. package/dist/shared/mentionLookup.d.ts +17 -0
  404. package/dist/shared/mentionLookup.js +64 -0
  405. package/dist/shared/menuCounts.d.ts +16 -0
  406. package/dist/shared/menuCounts.js +74 -0
  407. package/dist/shared/model.d.ts +79 -0
  408. package/dist/shared/model.js +153 -0
  409. package/dist/shared/money.d.ts +44 -0
  410. package/dist/shared/money.js +81 -0
  411. package/dist/shared/moneyEntry.d.ts +7 -0
  412. package/dist/shared/moneyEntry.js +27 -0
  413. package/dist/shared/mount.d.ts +118 -0
  414. package/dist/shared/mount.js +248 -0
  415. package/dist/shared/niceTicks.d.ts +26 -0
  416. package/dist/shared/niceTicks.js +50 -0
  417. package/dist/shared/order.d.ts +59 -0
  418. package/dist/shared/order.js +133 -0
  419. package/dist/shared/page.d.ts +135 -0
  420. package/dist/shared/page.js +1187 -0
  421. package/dist/shared/pageAnatomy.d.ts +99 -0
  422. package/dist/shared/pageAnatomy.js +370 -0
  423. package/dist/shared/pageConfig.d.ts +25 -0
  424. package/dist/shared/pageConfig.js +1308 -0
  425. package/dist/shared/pageEmptyActions.d.ts +12 -0
  426. package/dist/shared/pageEmptyActions.js +20 -0
  427. package/dist/shared/pageLayouts.d.ts +72 -0
  428. package/dist/shared/pageLayouts.js +205 -0
  429. package/dist/shared/pageModel.d.ts +785 -0
  430. package/dist/shared/pageModel.js +121 -0
  431. package/dist/shared/pagePaths.d.ts +180 -0
  432. package/dist/shared/pagePaths.js +869 -0
  433. package/dist/shared/pagePlans.d.ts +52 -0
  434. package/dist/shared/pagePlans.js +108 -0
  435. package/dist/shared/pageRoutes.d.ts +9 -0
  436. package/dist/shared/pageRoutes.js +9 -0
  437. package/dist/shared/query.d.ts +166 -0
  438. package/dist/shared/query.js +1302 -0
  439. package/dist/shared/queryDates.d.ts +12 -0
  440. package/dist/shared/queryDates.js +101 -0
  441. package/dist/shared/queryOperands.d.ts +99 -0
  442. package/dist/shared/queryOperands.js +131 -0
  443. package/dist/shared/reads.d.ts +103 -0
  444. package/dist/shared/reads.js +154 -0
  445. package/dist/shared/recordLabel.d.ts +51 -0
  446. package/dist/shared/recordLabel.js +123 -0
  447. package/dist/shared/recordReadKeys.d.ts +30 -0
  448. package/dist/shared/recordReadKeys.js +51 -0
  449. package/dist/shared/recordReads.d.ts +268 -0
  450. package/dist/shared/recordReads.js +368 -0
  451. package/dist/shared/recordview.d.ts +198 -0
  452. package/dist/shared/recordview.js +356 -0
  453. package/dist/shared/referenceModel.d.ts +58 -0
  454. package/dist/shared/referenceModel.js +194 -0
  455. package/dist/shared/refusal.d.ts +64 -0
  456. package/dist/shared/refusal.js +144 -0
  457. package/dist/shared/relatedCreate.d.ts +30 -0
  458. package/dist/shared/relatedCreate.js +162 -0
  459. package/dist/shared/resourceHttp.d.ts +464 -0
  460. package/dist/shared/resourceHttp.js +1 -0
  461. package/dist/shared/richText.d.ts +85 -0
  462. package/dist/shared/richText.js +305 -0
  463. package/dist/shared/rollups.d.ts +143 -0
  464. package/dist/shared/rollups.js +64 -0
  465. package/dist/shared/rowScope.d.ts +72 -0
  466. package/dist/shared/rowScope.js +376 -0
  467. package/dist/shared/runtimeTables.d.ts +44 -0
  468. package/dist/shared/runtimeTables.js +79 -0
  469. package/dist/shared/schema.d.ts +523 -0
  470. package/dist/shared/schema.js +627 -0
  471. package/dist/shared/schematext.d.ts +38 -0
  472. package/dist/shared/schematext.js +101 -0
  473. package/dist/shared/scopeCatalog.d.ts +29 -0
  474. package/dist/shared/scopeCatalog.js +468 -0
  475. package/dist/shared/servedApp.d.ts +681 -0
  476. package/dist/shared/servedApp.js +45 -0
  477. package/dist/shared/sessionLease.d.ts +34 -0
  478. package/dist/shared/sessionLease.js +3 -0
  479. package/dist/shared/shape.d.ts +55 -0
  480. package/dist/shared/shape.js +168 -0
  481. package/dist/shared/slug.d.ts +1 -0
  482. package/dist/shared/slug.js +12 -0
  483. package/dist/shared/sortText.d.ts +14 -0
  484. package/dist/shared/sortText.js +26 -0
  485. package/dist/shared/sqlRelation.d.ts +4 -0
  486. package/dist/shared/sqlRelation.js +8 -0
  487. package/dist/shared/sqlsaved.d.ts +44 -0
  488. package/dist/shared/sqlsaved.js +63 -0
  489. package/dist/shared/stitchedPaths.d.ts +27 -0
  490. package/dist/shared/stitchedPaths.js +38 -0
  491. package/dist/shared/structuredFilter.d.ts +22 -0
  492. package/dist/shared/structuredFilter.js +1 -0
  493. package/dist/shared/subtitlePath.d.ts +20 -0
  494. package/dist/shared/subtitlePath.js +24 -0
  495. package/dist/shared/suggest.d.ts +18 -0
  496. package/dist/shared/suggest.js +59 -0
  497. package/dist/shared/tableSizing.d.ts +4 -0
  498. package/dist/shared/tableSizing.js +9 -0
  499. package/dist/shared/tagLists.d.ts +57 -0
  500. package/dist/shared/tagLists.js +34 -0
  501. package/dist/shared/textRules.d.ts +54 -0
  502. package/dist/shared/textRules.js +133 -0
  503. package/dist/shared/theme.d.ts +94 -0
  504. package/dist/shared/theme.js +800 -0
  505. package/dist/shared/themeColor.d.ts +34 -0
  506. package/dist/shared/themeColor.js +109 -0
  507. package/dist/shared/themeFaces.d.ts +30 -0
  508. package/dist/shared/themeFaces.js +42 -0
  509. package/dist/shared/themeInk.d.ts +20 -0
  510. package/dist/shared/themeInk.js +52 -0
  511. package/dist/shared/themeLooks.d.ts +9 -0
  512. package/dist/shared/themeLooks.js +572 -0
  513. package/dist/shared/themeParts.d.ts +26 -0
  514. package/dist/shared/themeParts.js +71 -0
  515. package/dist/shared/themePartsCheck.d.ts +21 -0
  516. package/dist/shared/themePartsCheck.js +91 -0
  517. package/dist/shared/themePresets.d.ts +85 -0
  518. package/dist/shared/themePresets.js +139 -0
  519. package/dist/shared/themeRecipeWords.d.ts +156 -0
  520. package/dist/shared/themeRecipeWords.js +156 -0
  521. package/dist/shared/themeRecipes.d.ts +213 -0
  522. package/dist/shared/themeRecipes.js +234 -0
  523. package/dist/shared/themeResolve.d.ts +55 -0
  524. package/dist/shared/themeResolve.js +52 -0
  525. package/dist/shared/themeTokens.d.ts +107 -0
  526. package/dist/shared/themeTokens.js +116 -0
  527. package/dist/shared/themeType.d.ts +38 -0
  528. package/dist/shared/themeType.js +205 -0
  529. package/dist/shared/unitWord.d.ts +4 -0
  530. package/dist/shared/unitWord.js +37 -0
  531. package/dist/shared/view.d.ts +195 -0
  532. package/dist/shared/view.js +987 -0
  533. package/dist/shared/viewLabels.d.ts +47 -0
  534. package/dist/shared/viewLabels.js +459 -0
  535. package/dist/shared/viewPaths.d.ts +248 -0
  536. package/dist/shared/viewPaths.js +294 -0
  537. package/dist/shared/viewtext.d.ts +57 -0
  538. package/dist/shared/viewtext.js +282 -0
  539. package/dist/shared/vocabulary.d.ts +71 -0
  540. package/dist/shared/vocabulary.js +249 -0
  541. package/dist/shared/weekStart.d.ts +7 -0
  542. package/dist/shared/weekStart.js +36 -0
  543. package/mark.svg +1 -0
  544. package/package.json +261 -4
  545. package/schema/model.d.ts +298 -0
  546. package/schema/theme.d.ts +587 -0
@@ -0,0 +1,185 @@
1
+ /**
2
+ * What a connection pool can say about itself: how long each checkout waited
3
+ * for a connection, how long it held one, and how full the pool is now.
4
+ *
5
+ * Engine-neutral and fixed-size: cumulative counters and bucket counts on the
6
+ * HTTP request metrics' bounds, so the operator surface carries them without
7
+ * learning a driver, and their size never grows with traffic. One meter per
8
+ * role of a pool — the readers, the writers, the background writer — and nothing in it names the
9
+ * database, because the operator surface must not.
10
+ */
11
+ /** Inclusive upper bounds, the same as the HTTP request metrics', so one scale reads both. */
12
+ export const POOL_DURATION_BOUNDS_MS = Object.freeze([1, 5, 10, 25, 50, 100, 250, 500, 1_000, 2_500, 5_000, 10_000, 30_000]);
13
+ /** How long a checkout that timed out keeps its pool marked saturated. */
14
+ const SATURATION_MEMORY_MS = 60_000;
15
+ /**
16
+ * How long a checkout may queue behind a full pool before it is refused, and
17
+ * how many may queue (per connection the pool holds). Without them a
18
+ * saturated server held every request for the driver's ten-second timeout and
19
+ * then failed it as a 500: slow, and no better informed. Past either bound the
20
+ * request is refused at once, as busy, and its client is told to come back.
21
+ *
22
+ * The count is about as many checkouts as a connection works through in that
23
+ * wait (a few tens of milliseconds each): past it, the wait would run out
24
+ * anyway. At eight, a burst a server answers well inside the wait was refused
25
+ * at once — a page's boot has up to eight reads in flight, and a field report saw
26
+ * two thirds of the tabs opened at one moment by 25 people turned away busy
27
+ * on a server with its loop idle. The wait is what bounds a slow server.
28
+ * Who gets the places in the line, account by account, is poolAdmission.ts's.
29
+ */
30
+ export const POOL_QUEUE_WAIT_MS = 2_000;
31
+ export const POOL_QUEUE_PER_CONNECTION = 64;
32
+ /** What a person is told when the server is busy, and how soon to try again. */
33
+ export const POOL_BUSY_MESSAGE = 'The server is busy; try again in a moment.';
34
+ const POOL_BUSY_RETRY_AFTER_SECONDS = 1;
35
+ /** How long a pool the server refused stays at the connections it holds before it asks for more: its idle timeout. */
36
+ export const POOL_LIMIT_HOLD_MS = 30_000;
37
+ /**
38
+ * A checkout refused because the pool is full and its queue is too long or
39
+ * has waited too long, or because the database refused this process another
40
+ * connection and the pool held none to wait for (`connection_limit`, the
41
+ * refusal as its cause). Thrown before anything was leased, so no statement
42
+ * ran: a read can be asked again and a write was never begun.
43
+ */
44
+ export class PoolBusy extends Error {
45
+ role;
46
+ why;
47
+ constructor(role, why, cause) {
48
+ super(POOL_BUSY_MESSAGE, cause === undefined ? undefined : { cause });
49
+ this.role = role;
50
+ this.why = why;
51
+ this.name = 'PoolBusy';
52
+ }
53
+ }
54
+ /**
55
+ * When to come back after a refused checkout. A full queue clears in a moment; a pool the database refused another
56
+ * connection holds at what it has and asks for more only after POOL_LIMIT_HOLD_MS, so a retry in one second lands on
57
+ * the same refusal. A `connection_limit` refusal says the hold's length instead.
58
+ */
59
+ export function poolBusyRetryAfterSeconds(error) {
60
+ let at = error;
61
+ for (let depth = 0; depth < 4 && at && typeof at === 'object'; depth++) {
62
+ if (at instanceof PoolBusy)
63
+ return at.why === 'connection_limit' ? POOL_LIMIT_HOLD_MS / 1000 : POOL_BUSY_RETRY_AFTER_SECONDS;
64
+ at = at.cause;
65
+ }
66
+ return POOL_BUSY_RETRY_AFTER_SECONDS;
67
+ }
68
+ /**
69
+ * Whether `error` is a refused checkout, anywhere in its causes, and not one
70
+ * that reports an unknown outcome (a transaction whose commit was never
71
+ * acknowledged is not "busy": it may have landed).
72
+ */
73
+ export function isPoolBusy(error) {
74
+ let at = error;
75
+ for (let depth = 0; depth < 4 && at && typeof at === 'object'; depth++) {
76
+ if (at.name === 'TransactionOutcomeUnknown' || at.outcome === 'unknown')
77
+ return false;
78
+ if (at instanceof PoolBusy)
79
+ return true;
80
+ at = at.cause;
81
+ }
82
+ return false;
83
+ }
84
+ function record(buckets, ms) {
85
+ const at = Number.isFinite(ms) && ms > 0 ? ms : 0;
86
+ const index = POOL_DURATION_BOUNDS_MS.findIndex((bound) => at <= bound);
87
+ buckets[index < 0 ? POOL_DURATION_BOUNDS_MS.length : index] += 1;
88
+ }
89
+ export class PoolMeter {
90
+ role;
91
+ size;
92
+ now;
93
+ leased = 0;
94
+ pending = 0;
95
+ checkouts = 0;
96
+ queued = 0;
97
+ timeouts = 0;
98
+ failures = 0;
99
+ lastTimeoutAt = Number.NEGATIVE_INFINITY;
100
+ waits = Array(POOL_DURATION_BOUNDS_MS.length + 1).fill(0);
101
+ holds = Array(POOL_DURATION_BOUNDS_MS.length + 1).fill(0);
102
+ constructor(role, size, now = () => performance.now()) {
103
+ this.role = role;
104
+ this.size = size;
105
+ this.now = now;
106
+ }
107
+ /** Every connection is leased or being opened: a checkout begun now waits. */
108
+ full() {
109
+ return this.leased + this.pending >= this.size;
110
+ }
111
+ /** Checkouts queued now behind a pool whose every connection is in use. */
112
+ waiting() {
113
+ return Math.max(0, this.pending - Math.max(0, this.size - this.leased));
114
+ }
115
+ /** A checkout turned away before it began: counted as a timeout, so the pool reads saturated and readiness says so. */
116
+ refuse() {
117
+ this.checkouts += 1;
118
+ this.queued += 1;
119
+ this.timeouts += 1;
120
+ this.lastTimeoutAt = this.now();
121
+ record(this.waits, 0);
122
+ }
123
+ begin() {
124
+ const started = this.now();
125
+ /* Every connection is leased, or being opened for a checkout ahead of
126
+ this one: this one waits in the driver's queue, not for a dial. */
127
+ if (this.leased + this.pending >= this.size)
128
+ this.queued += 1;
129
+ this.checkouts += 1;
130
+ this.pending += 1;
131
+ let settled = false;
132
+ return {
133
+ acquired: () => {
134
+ if (settled)
135
+ return () => { };
136
+ settled = true;
137
+ this.pending -= 1;
138
+ this.leased += 1;
139
+ const at = this.now();
140
+ record(this.waits, at - started);
141
+ let returned = false;
142
+ return () => {
143
+ if (returned)
144
+ return;
145
+ returned = true;
146
+ this.leased -= 1;
147
+ record(this.holds, this.now() - at);
148
+ };
149
+ },
150
+ failed: (timedOut) => {
151
+ if (settled)
152
+ return;
153
+ settled = true;
154
+ this.pending -= 1;
155
+ const at = this.now();
156
+ // A checkout that timed out waited longest of all; it is the sample that matters most.
157
+ record(this.waits, at - started);
158
+ if (timedOut) {
159
+ this.timeouts += 1;
160
+ this.lastTimeoutAt = at;
161
+ }
162
+ else
163
+ this.failures += 1;
164
+ },
165
+ };
166
+ }
167
+ stats(pooler, open) {
168
+ const waiting = this.waiting();
169
+ return Object.freeze({
170
+ role: this.role,
171
+ pooler,
172
+ size: this.size,
173
+ open,
174
+ inUse: this.leased,
175
+ waiting,
176
+ saturated: waiting > 0 || this.now() - this.lastTimeoutAt < SATURATION_MEMORY_MS,
177
+ checkouts: this.checkouts,
178
+ queued: this.queued,
179
+ timedOut: this.timeouts,
180
+ failed: this.failures,
181
+ waitBuckets: Object.freeze([...this.waits]),
182
+ holdBuckets: Object.freeze([...this.holds]),
183
+ });
184
+ }
185
+ }
@@ -0,0 +1,436 @@
1
+ import { type Adapter, type Filter, type QueryRequest, type QueryResult, type ScopedReads, type SqlRequest, type SqlResult, type ViewResult, type BreakdownResult, type ExplainRequest, type ExplainResult, type ProfileResult, TransactionOperations, type WriteTransaction, type DeleteRequest, type DeleteResult, type InsertRequest, type InsertResult, type UpdateRequest, type UpdateResult, type CountItem, type RolePrivileges, type SqlStyle } from './adapter.js';
2
+ import { type PostgresScopeCatalog } from './scoped/postgresScopeCatalog.js';
3
+ import { type PinnedPostgresReadOwner, type PostgresReadDependency } from './postgresReadCatalog.js';
4
+ import type { DatabaseSchema } from '../shared/schema.js';
5
+ import { type ViewDef } from '../shared/view.js';
6
+ import { type BreakdownDef } from '../shared/breakdown.js';
7
+ import { PgConnectionManager, type PgConnectionOptions, type PgQuery, type SharedPoolShape } from './postgresPool.js';
8
+ import { type PipelinedStatement } from './postgresTransactionHandle.js';
9
+ import type { PoolRoleStats } from './poolMetrics.js';
10
+ import { type RowScope } from '../shared/rowScope.js';
11
+ import { type PostgresReadSnapshot } from './postgresReadSnapshot.js';
12
+ /** Constructor-issued source identity, checked without reading receiver data. */
13
+ export declare const isPostgresVerifiedCommandSource: (value: unknown) => value is PostgresAdapter;
14
+ export type { PostgresReadSnapshot } from './postgresReadSnapshot.js';
15
+ /** For the budget tests: how many times this process described a PostgreSQL catalog, and how many were found kept. */
16
+ export declare function postgresDescriptionCounts(): Readonly<{
17
+ described: number;
18
+ kept: number;
19
+ }>;
20
+ /**
21
+ * An adapter on the manager every adapter of `url` with this `shape` shares (sharedPgConnections): its own catalog,
22
+ * lanes and stores, the pools of its neighbors. Closing it lets its share go; the pools close with the last one.
23
+ */
24
+ export declare function sharedPostgresAdapter(url: string, label: string, shape?: SharedPoolShape): PostgresAdapter;
25
+ export declare class PostgresAdapter implements Adapter {
26
+ private label;
27
+ /** Restrict to these schemas. Empty means every non-system schema. */
28
+ private schemas;
29
+ readonly dialect: 'postgres';
30
+ private connections;
31
+ private writes;
32
+ private readonly describes;
33
+ private readonly database;
34
+ private readonly catalogCache;
35
+ /** The epoch each open write transaction read, by the handle it runs on. */
36
+ private readonly txEpochs;
37
+ private epochStore;
38
+ /** `work`, forgetting the kept catalog if it dies on a table or column that is gone: what was kept is wrong. */
39
+ private watched;
40
+ constructor(connectionString: string, label?: string,
41
+ /** Restrict to these schemas. Empty means every non-system schema. */
42
+ schemas?: string[], connections?: PgConnectionManager,
43
+ /** The reader count the connection's config names; the process defaults fill the rest. */
44
+ pool?: PgConnectionOptions);
45
+ private verifiedSource;
46
+ /** The pools' meters, for the operator surface. */
47
+ poolStats(): readonly PoolRoleStats[];
48
+ /** Each replica's state, when the connection names any (replicas.ts). */
49
+ replicaHealth(): ReturnType<PgConnectionManager['replicaHealth']>;
50
+ private conn;
51
+ /**
52
+ * Run a statement the user wrote.
53
+ *
54
+ * The session already carries `default_transaction_read_only = on`, and for
55
+ * everything else in this adapter that is enough, because every statement is
56
+ * one this file built. It is **not** enough here: `SET
57
+ * default_transaction_read_only = off` is itself a statement, and a user who
58
+ * typed it followed by a `DELETE` would get both.
59
+ *
60
+ * `BEGIN READ ONLY` is the version that holds, for one statement. Postgres
61
+ * refuses `SET TRANSACTION READ WRITE` once the transaction has taken its
62
+ * first snapshot, and one statement takes it before it runs. It does not hold
63
+ * against several: `COMMIT; BEGIN READ WRITE; DELETE …` ends the read-only
64
+ * transaction and opens a writable one. So the text goes on the extended
65
+ * protocol (`queryMode: 'extended'`), where Postgres itself refuses a second
66
+ * statement; refuseStacked is the earlier, clearer refusal, not the guard.
67
+ * (node-postgres sends a query with an empty `values` on the simple protocol,
68
+ * which runs every statement in the string.) The `ROLLBACK` afterwards also
69
+ * discards any session state the statement set, so one run cannot change what
70
+ * the next one means.
71
+ *
72
+ * The rollback runs in a `finally`: a statement that errors has still opened
73
+ * a transaction, and leaving it open would leave the connection in an aborted
74
+ * state where every later query fails with "current transaction is aborted".
75
+ *
76
+ * `write: true` is the other half, and it is a different request rather than
77
+ * a relaxation of this one: a separate handle, no READ ONLY transaction, and
78
+ * a decision made further up about whether this connection may write at all.
79
+ * The two paths share the statement text and nothing else.
80
+ */
81
+ runSql(request: SqlRequest): Promise<SqlResult>;
82
+ /**
83
+ * EXPLAIN, plain — never the analysing variant that executes to time.
84
+ *
85
+ * `runSql`'s bounding wrap is precisely wrong here: a statement made a
86
+ * derived table is a different statement, with a different plan. The text
87
+ * goes to the planner as written, inside the same READ ONLY transaction
88
+ * every user statement gets — so even a smuggled write is only ever
89
+ * planned, and an execution attempt is the transaction's to refuse, not a
90
+ * string check's.
91
+ */
92
+ explainSql(request: ExplainRequest): Promise<ExplainResult>;
93
+ /**
94
+ * The planner's own statistics, read rather than computed.
95
+ *
96
+ * `pg_stats` already holds the null share, the distinct estimate, the most
97
+ * common values with their frequencies, and the histogram — ANALYZE paid
98
+ * for them, reading them touches no user table. The numbers are
99
+ * sample-based and stale until the next ANALYZE, which is what
100
+ * `source: 'statistics'` tells the caller; a column ANALYZE has never
101
+ * visited simply has no numbers, which beats invented ones.
102
+ */
103
+ profile(table: string): Promise<ProfileResult>;
104
+ introspect(): Promise<DatabaseSchema>;
105
+ private introspectNow;
106
+ private scopeStyleRead?;
107
+ /**
108
+ * The style a row-scoped read compiles with on this server: its CTEs
109
+ * inlined from Postgres 12 on (POSTGRES_INLINE_STYLE). Asked once per
110
+ * adapter; a failed ask is not remembered, and that read compiles as
111
+ * before — the hint is a plan, never a rule about rows.
112
+ */
113
+ scopeStyle(): Promise<SqlStyle>;
114
+ /** The role's reach, asked of the catalog on the reader (rolePrivileges.ts). */
115
+ privileges(): Promise<RolePrivileges>;
116
+ /** The catalog as one handle sees it, read by postgresCatalog.ts: the
117
+ * reader on connect, or the leased writer inside a scoped transaction,
118
+ * where the same description is the evidence the deployed permissions are
119
+ * attested against. */
120
+ private describe;
121
+ /** The catalog as `db` sees it at `version`, read there before: a copy of the one kept under it (sharedDescriptions),
122
+ * or described now and kept. Another adapter's copy carries this one's label. */
123
+ private describedAt;
124
+ /** A snapshot's description: the digest first, in the same snapshot, then the description kept under it or a new one. */
125
+ private describeSnapshot;
126
+ /** `version`, the exact one `db`'s transaction just read, said for what it attests next (noteCatalogVersion); a time-filed one is not said. */
127
+ private versionRead;
128
+ /** How a write (READ COMMITTED) reads `version` again, the digest or the epoch as it read it; a time-filed one is not read. */
129
+ private rereadOf;
130
+ /**
131
+ * The catalog as a scoped transaction's writer sees it, described again
132
+ * only when it has moved. Every transaction reads the catalog digest
133
+ * (postgresCatalogDigest.ts) — one statement where a description is six —
134
+ * and reuses a description read just after the same digest was, by this
135
+ * adapter or another of the same database (sharedDescriptions). Read
136
+ * before, never after: DDL committing
137
+ * between the two then leaves a digest no later read can match, so the
138
+ * description is taken again rather than trusted on a digest it postdates.
139
+ * The digest covers every schema but the system's, a superset of what
140
+ * this adapter describes, and moves with privileges and roles too. What it
141
+ * does not see, comments and the planner's row estimates, is display and
142
+ * never authority.
143
+ */
144
+ private describeScoped;
145
+ /**
146
+ * Begin a write transaction and read the schema epoch in the same message:
147
+ * `BEGIN`, the LOCK a scope pinned last time under the epoch it expects,
148
+ * and the epoch statement, in one round trip (the simple protocol carries
149
+ * several statements when none has parameters). The LOCK comes first, so
150
+ * DDL on a pinned table after the epoch was read has to wait for this
151
+ * transaction; whether the lock was the right one is then decided by the
152
+ * epoch alone. A message that fails — the store gone, a pinned table
153
+ * dropped, a privilege revoked — is only a miss: rolled back, begun again
154
+ * plainly, and the transaction describes what it needs as before.
155
+ */
156
+ private openWrite;
157
+ /**
158
+ * Without the epoch store, a scoped transaction reads the catalog digest
159
+ * (postgresCatalogDigest.ts) — it always did, to describe the scope — and
160
+ * the digest is then its epoch: one statement that moves with every catalog
161
+ * row the scope, a relation's kind and columns, and the journal's layout
162
+ * depend on, role membership, and (for a command) the journal's meta row.
163
+ * Read in the message that begins the transaction, after the LOCK the scope
164
+ * pinned last time, as the epoch is. Slower than the epoch store's one row,
165
+ * never less exact; a message that fails begins again the long way.
166
+ */
167
+ private openWithDigest;
168
+ /**
169
+ * A reserved store's layout, attested the first time this adapter reads it
170
+ * and not again (attestOnce, postgresTransactionHandle.ts): told whether it
171
+ * stands attested. A read that fails the way a moved catalog fails one
172
+ * forgets it, and the next read attests in full.
173
+ */
174
+ private attestedStore;
175
+ /** A journal's layout and meta row, attested the first time this adapter opens a transaction with it (a journal
176
+ that names no meta row, in every transaction). */
177
+ private attestJournal;
178
+ query(request: QueryRequest): Promise<QueryResult>;
179
+ scopeReads(input: RowScope): Promise<ScopedReads>;
180
+ private queryOn;
181
+ /**
182
+ * Run a compiled view.
183
+ *
184
+ * Note what is *not* here: any check that the tables named in the view
185
+ * exist. `compileView` resolves the base table and every hop against the
186
+ * introspected catalog and refuses anything it cannot find, so the only
187
+ * identifiers that reach the quoting step are ones the catalog produced.
188
+ * The user's contribution — the values — never leaves the parameter array.
189
+ *
190
+ * The dialect difference this exercises is placeholder numbering:
191
+ * `POSTGRES_STYLE` counts $1..$n across the whole statement, and the joins
192
+ * sitting between the SELECT list and the WHERE clause are exactly what
193
+ * makes an off-by-one here easy and invisible.
194
+ */
195
+ runView(view: ViewDef, offset?: number): Promise<ViewResult>;
196
+ runBreakdown(breakdown: BreakdownDef, offset?: number): Promise<BreakdownResult>;
197
+ countBreakdown(breakdown: BreakdownDef, limit?: number): Promise<number>;
198
+ countView(view: ViewDef, limit?: number): Promise<number>;
199
+ private cachedSchema;
200
+ private schema;
201
+ /**
202
+ * The planner's row estimate, straight from `pg_class`.
203
+ *
204
+ * `reltuples` is what the planner itself uses to decide how to run a query,
205
+ * so it is the number Postgres is already trusting. It is -1 on a table that
206
+ * has never been analysed, which is a "do not know" rather than a zero —
207
+ * returning undefined there gets an exact count instead of confidently
208
+ * reporting an empty table that is not empty.
209
+ */
210
+ estimateCount(table: string): Promise<number | undefined>;
211
+ count(table: string, filter?: Filter, limit?: number): Promise<number>;
212
+ countEach(items: readonly CountItem[], limit?: number): Promise<number[]>;
213
+ private countOn;
214
+ private columnsOf;
215
+ /**
216
+ * Update one row, having proved it is one row.
217
+ *
218
+ * The pre-flight count runs on the *read* handle, so the check that decides
219
+ * whether to write cannot itself write. A key that matches anything other
220
+ * than exactly one row stops here rather than at the UPDATE — the danger in
221
+ * a cell editor was never injection, it is a WHERE broader than its author
222
+ * believed.
223
+ */
224
+ update(request: UpdateRequest): Promise<UpdateResult>;
225
+ private updateNow;
226
+ /**
227
+ * Add one row.
228
+ *
229
+ * `update`'s guards where they apply, with the key rules inverted: a primary
230
+ * key may be supplied (a country code somebody types) or left for the
231
+ * database to assign. What is deliberately *not* pre-checked is
232
+ * completeness — a missing NOT NULL column with no default is the database's
233
+ * refusal to make, and its message names the column better than a paraphrase
234
+ * would.
235
+ *
236
+ * `RETURNING *` rather than a re-read by key: one statement gives back the
237
+ * row as stored, defaults filled and the assigned key included, with no
238
+ * window for another write to land in between.
239
+ */
240
+ insert(request: InsertRequest): Promise<InsertResult>;
241
+ private insertNow;
242
+ /**
243
+ * Remove one row, having proved it is one row.
244
+ *
245
+ * What is *not* checked here is whether the row should go: what references
246
+ * it, and what the database will do to those references, is answered above
247
+ * this layer where the schema is in hand. A `RESTRICT` that fires is the
248
+ * correct outcome in the engine's own words.
249
+ */
250
+ remove(request: DeleteRequest): Promise<DeleteResult>;
251
+ private recordsHistory;
252
+ private historyWrites;
253
+ private removeNow;
254
+ /**
255
+ * Several writes as one, or none of them.
256
+ *
257
+ * Plain `BEGIN` / `COMMIT` on the write connection. The callback is handed
258
+ * the same write bodies the public methods call, so every guard — the whole
259
+ * key, the pre-flight count, the type coercion — applies inside a
260
+ * transaction exactly as it does outside one.
261
+ *
262
+ * Reads, metadata checks, and preflight counts use the same leased client.
263
+ * This preserves read-after-write visibility; it does not promise serializable
264
+ * isolation. Call lockRecord explicitly before capturing protected originals:
265
+ * where an App writes, other transactions of this process run beside this
266
+ * one (writeLanes.ts), and a row read without its lock may change before
267
+ * the write that depends on it, as a row read in another pod always could.
268
+ */
269
+ transaction<T>(run: (tx: WriteTransaction) => Promise<T>): Promise<T>;
270
+ private transact;
271
+ /**
272
+ * Begin an unscoped write transaction with what it was told it opens with
273
+ * (writeAhead.ts) behind its BEGIN, as a scoped one does (sendWriteAhead):
274
+ * the journal's receipt lookup, and for each target its lock and its whole
275
+ * row, kept to answer the transaction's reads of it by key (keyRows.ts) —
276
+ * the command's own read of its target, its handler's, the history
277
+ * capture's before image. The lock goes first, so the row is read under it
278
+ * and cannot move until this transaction ends; its own writes move the
279
+ * statement generation and are read again. One that fails aborts the
280
+ * opening, which begins again without them. Answers the transaction's
281
+ * reader: by key from the kept rows where they answer, else in its turn.
282
+ */
283
+ private openPlain;
284
+ /** The statements openPlain sends behind the BEGIN; each exactly what the transaction sends in its turn (lockRecordNow, queryOn). */
285
+ private sendPlainAhead;
286
+ /**
287
+ * Same-source records and a durable journal in one transaction, the
288
+ * journal lent by the App framework (storeHost.ts TransactionJournal): the
289
+ * command journal, or a public placement's. Lent through the store host,
290
+ * never on the class, so the database browser has no journal path at all.
291
+ *
292
+ * The SQLite version opens `BEGIN IMMEDIATE`, which serialises every writer
293
+ * in the file; here the transaction is plain `BEGIN` at the server's
294
+ * default READ COMMITTED, and the journal's per-scope advisory lock does
295
+ * the one piece of that serialisation a command needs — two deliveries of
296
+ * the same command cannot both execute. SERIALIZABLE was the alternative
297
+ * and was refused: it would turn unrelated concurrent commands into 40001
298
+ * retries the SQLite path never has, and a conditional `expected` update
299
+ * already refuses a stale row in the write itself.
300
+ *
301
+ * The journal is attested inside the transaction and before the callback,
302
+ * so an unmigrated or altered layout refuses without a write. The outcome
303
+ * contract is SQLite's: a failure after COMMIT was sent, or a rollback that
304
+ * was not acknowledged, is `unknown`; everything else is `not_applied`.
305
+ * `withWriteClient` destroys the client on any failure, so a connection in
306
+ * an uncertain state is never handed to the next write.
307
+ */
308
+ private journalTransaction;
309
+ private ordinaryJournalTransaction;
310
+ /**
311
+ * Private same-source row enforcement, with the SQLite guarantees.
312
+ *
313
+ * SQLite gets "the row the scope checked is the row the write changes"
314
+ * from `BEGIN IMMEDIATE`, which excludes every other writer for the whole
315
+ * transaction. Here the transaction is plain `BEGIN` at the server's
316
+ * default READ COMMITTED, and the guarantee is made per row instead: before
317
+ * a target is scope-checked its row is taken `FOR UPDATE`, and before a
318
+ * parent is checked its row is taken `FOR SHARE`. A lock waits for any
319
+ * in-flight writer of that row to finish, and the guard read that follows
320
+ * takes a fresh snapshot — READ COMMITTED gives one per statement — so it
321
+ * sees the version that writer committed and nobody can commit another
322
+ * until this transaction ends. A row a concurrent writer moved out of scope
323
+ * is therefore refused, whether it moved before the check or while the
324
+ * check waited. SERIALIZABLE would prove the same thing by aborting one of
325
+ * the two with 40001, which the SQLite path never does and every handler
326
+ * would have to learn to retry; the explicit locks make the refusal an
327
+ * ordinary one.
328
+ *
329
+ * The catalog is read on the writer inside the transaction after the
330
+ * scope's tables are pinned against DDL (`postgresScopeCatalog.ts`), and
331
+ * handed out as detached evidence for the caller to attest. Outcomes are
332
+ * the transaction contract's: a failure after COMMIT was sent, or a
333
+ * rollback that was not acknowledged, is unknown, and the client is
334
+ * discarded rather than reused. Everything else did not commit.
335
+ */
336
+ scopeTransaction<T>(input: RowScope, run: (tx: WriteTransaction, catalog: DatabaseSchema) => Promise<T>): Promise<T>;
337
+ /**
338
+ * Private source-owner boundary, deliberately absent from Adapter: the
339
+ * PostgreSQL counterpart of `SqliteAdapter.scopeVerifiedTransaction`. The
340
+ * verifier is trusted host code — the tenant write source's attestation and
341
+ * the store's membership fence (`assertPostgresTenantMembershipFence`) —
342
+ * never a business callback or a wire value, and must not retain the
343
+ * client. It runs on the leased writer inside the transaction twice: after
344
+ * the scope's tables are pinned and the catalog read, before the callback;
345
+ * and after the callback's operations drain, before COMMIT. It is handed the
346
+ * catalog evidence and the adapter's own introspection on the writer, for
347
+ * anything it pins itself. SQLite also re-verifies around every operation,
348
+ * because its fence is a snapshot check; here the fence is row locks held
349
+ * to the end of the transaction, so the two checks bound its lifetime.
350
+ */
351
+ scopeVerifiedTransaction<T>(input: RowScope, verify: PostgresTransactionVerifier, run: (tx: WriteTransaction, catalog: DatabaseSchema) => Promise<T>): Promise<T>;
352
+ /**
353
+ * Private source-owner boundary, deliberately absent from Adapter: one
354
+ * `REPEATABLE READ, READ ONLY` transaction on a leased reader, for trusted
355
+ * host code that pins, attests and reads inside a single snapshot (the
356
+ * PostgreSQL tenant read source). It is what a deferred `BEGIN` on its
357
+ * read-only handle gives the SQLite tenant reader: every statement sees one
358
+ * committed state. PostgreSQL takes that snapshot at the first query, not at
359
+ * BEGIN, so an owner that takes its locks before its first query attests
360
+ * what committed before them, and DDL after them waits. A ROLLBACK that
361
+ * fails surfaces as TransactionOutcomeUnknown; any failure discards the
362
+ * client rather than returning it to the pool.
363
+ */
364
+ readSnapshot<T>(run: (snapshot: PostgresReadSnapshot) => Promise<T>, observeCheckout?: boolean, prologue?: string, ahead?: boolean, whole?: boolean): Promise<T>;
365
+ /** Private source-shape owner, not an authorization proof or generic Adapter
366
+ * capability. Only this actual adapter's native snapshot runner is used. */
367
+ capturePinnedReadSnapshot(dependencies: readonly PostgresReadDependency[], assertCurrent: () => void): Promise<PinnedPostgresReadOwner>;
368
+ private scopedTransact;
369
+ /**
370
+ * The statements a scoped transaction opens with, sent behind its BEGIN
371
+ * (openWrite's `sent`), from what it was told (writeAhead.ts) and the scope
372
+ * catalog read last time: the verifier's own (its fence), the journal's
373
+ * receipt lookup, and for each target its row lock, its row read in full
374
+ * through the scope (kept to answer its reads by key, keyRows.ts), and,
375
+ * where the write is captured for history, the capture's own lock and read
376
+ * (historyWrites). Each is exactly the statement the transaction sends in
377
+ * its turn, built by the same rules; one it never sends is left, counted,
378
+ * and changes nothing. None where the client does not pipeline.
379
+ */
380
+ private sendWriteAhead;
381
+ /**
382
+ * Internal runtime-owner composition, deliberately absent from Adapter: the
383
+ * PostgreSQL counterpart of `SqliteAdapter.runtimeMaintenanceTransaction`,
384
+ * for trusted runtime code (tenant administration) that composes its own
385
+ * bounded maintenance facades on the leased writer and the ordinary write
386
+ * queue. `verify` runs after BEGIN and again after the work's operations
387
+ * drain, before COMMIT; the synchronous `assertCurrent` handed to the work
388
+ * refuses once the transaction has ended. Raw handles must never reach
389
+ * business handlers, policies or request callbacks. Outcomes are the
390
+ * transaction contract's: unknown after COMMIT was sent or an unacknowledged
391
+ * ROLLBACK, and the client is discarded rather than reused.
392
+ */
393
+ runtimeMaintenanceTransaction<T>(verify: (client: PgQuery) => Promise<void>, run: (client: PgQuery, operations: TransactionOperations, assertCurrent: () => void) => Promise<T>): Promise<T>;
394
+ close(): Promise<void>;
395
+ private lockRecordNow;
396
+ /**
397
+ * Identifiers cannot be bound, so a table name is checked against the
398
+ * catalog before it is quoted into a statement. The check is a parameterised
399
+ * query, which means the untrusted string never reaches SQL as syntax.
400
+ */
401
+ /**
402
+ * The same check for a read, answered from the catalog read on connect when
403
+ * it holds the name. That probe was a round trip before every list and
404
+ * every count — two per page of rows, one per reference counted — to learn
405
+ * what the catalog already said. A name the catalog does not hold (made
406
+ * since) is still asked of the server; writes always are (assertTable),
407
+ * because a view created since connecting must still refuse one.
408
+ */
409
+ private readTable;
410
+ private epochOf;
411
+ private assertTable;
412
+ }
413
+ /** Trusted host verification on the writer of a verified scoped transaction:
414
+ * the scope catalog it was pinned and read with, and the adapter's own
415
+ * introspection on the same writer. */
416
+ export type PostgresTransactionVerifier = {
417
+ (client: PgQuery, catalog: PostgresScopeCatalog, describe: () => Promise<DatabaseSchema>, epoch?: string): Promise<void>;
418
+ /**
419
+ * The verifier's own LOCK, without parameters, taken in the message that
420
+ * begins the transaction, after the scope's pin and before the schema epoch
421
+ * (or catalog digest) is read. The epoch then covers everything it pinned:
422
+ * DDL committed before it is in the epoch, DDL after it waits for this
423
+ * transaction. The verifier is handed that epoch as `epoch`, so a full
424
+ * attestation it made under the same epoch stands without being read again
425
+ * (tenantWriteSource.ts). A message that fails begins again plainly, and
426
+ * the verifier is handed no epoch.
427
+ */
428
+ readonly pin?: string;
429
+ /**
430
+ * The statements the verifier's first pass sends, exactly, sent behind the
431
+ * BEGIN with what else the transaction opens with (sendWriteAhead): each
432
+ * answers the identical statement once when the verifier sends it. A
433
+ * statement it does not send is left unread.
434
+ */
435
+ readonly ahead?: () => readonly PipelinedStatement[];
436
+ };