@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,94 @@
1
+ import { type WriteOrder } from './serverSettings.js';
2
+ /** The keys a write names, or `all`: see the file comment. */
3
+ type LaneKeys = readonly string[] | 'all';
4
+ /** The shortest and longest lock waits a deployment may ask for. */
5
+ export declare const MIN_LOCK_TIMEOUT_MS = 100;
6
+ export declare const MAX_LOCK_TIMEOUT_MS = 30000;
7
+ export declare const MAX_WRITERS = 64;
8
+ /**
9
+ * The reader and the writer pool an App's database gets unless told: twice
10
+ * the cores, from four to sixteen. A node process is one core of JavaScript,
11
+ * and with fewer connections than requests in flight the pool, not the
12
+ * database, is what a write waits for (a 500-user soak: Postgres idle, 98%
13
+ * of writer checkouts queued behind four writers). Sixteen caps the sum
14
+ * (readers + writers, per pod per database; docs/postgresql.md does it)
15
+ * well inside a stock server's 100 connections.
16
+ */
17
+ export declare function balancedPoolSize(cores?: number): number;
18
+ /** Whether `value` is a writer pool size: a whole number from 1 to 64. */
19
+ export declare function isWriterCount(value: unknown): value is number;
20
+ /**
21
+ * The order every adapter this process opens from now on writes in: `keyed`
22
+ * where the process serves Apps, `serial` (the default) for the database
23
+ * browser. Called once, at startup, before a connection opens; an adapter
24
+ * reads it when it is made. A handler mounted in a host's process carries its
25
+ * own (serverSettings.ts), and this is the process's, outside any.
26
+ */
27
+ export declare function configureWriteOrder(order: WriteOrder): void;
28
+ export declare function writeOrder(): WriteOrder;
29
+ /** `--write-pool`: the writers an App's PostgreSQL source holds, unless its connection names a number. */
30
+ export declare function configureWriterPool(writers?: number): void;
31
+ export declare function writerPoolSize(): number;
32
+ /** Whether `ms` is a lock wait a deployment may set: whole milliseconds from 100 to 30,000. */
33
+ export declare function isLockTimeout(ms: unknown): ms is number;
34
+ /** `--lock-timeout`: how long any writer of this process waits for a lock. At most the statement cap, which would stop it anyway. */
35
+ export declare function configureLockTimeout(ms?: number): void;
36
+ export declare function lockTimeoutMs(): number;
37
+ /**
38
+ * Run `work` as background work — a job's command, an effect's delivery —
39
+ * so every writer lease beneath it comes from the background connection
40
+ * (postgresPool.ts), never from the pool a person's save is waiting on.
41
+ */
42
+ export declare function asBackgroundWork<T>(work: () => T): T;
43
+ export declare function inBackgroundWork(): boolean;
44
+ /**
45
+ * One record's lane: its table and its key, the values as text, so the key
46
+ * an address spells `'7'` and the one a row holds as `7` are one lane. The
47
+ * table as the caller named it; two spellings of one table are two lanes,
48
+ * which the row lock still orders.
49
+ */
50
+ export declare function recordLane(table: string, key: Readonly<Record<string, unknown>>): string;
51
+ /** The lane of a request that names one record by its key, or none when it names none the adapter would accept (it refuses it). */
52
+ export declare function keyedLane(request: {
53
+ table?: unknown;
54
+ key?: unknown;
55
+ }): readonly string[];
56
+ /**
57
+ * Run `work` in one record's lane: every write it starts that names no lane
58
+ * of its own — a transaction, through whatever wrappers an App puts round
59
+ * its adapter — takes this one. How an App's save of a record, which runs
60
+ * as a transaction that locks the row, keeps its place behind the earlier
61
+ * saves of that record without every wrapper learning a new argument. Only
62
+ * the first write beneath it takes the lane: the work a lane runs sees none.
63
+ */
64
+ export declare function inRecordLane<T>(table: string, key: Readonly<Record<string, unknown>>, work: () => Promise<T>): Promise<T>;
65
+ /** All known targets and the receipt scope enter together, before any lease is taken. */
66
+ export declare function inWriteLanes<T>(keys: readonly string[], work: () => Promise<T>): Promise<T>;
67
+ /**
68
+ * The per-adapter queue. `run(keys, work)` starts `work` once every earlier
69
+ * write it must follow has settled, and settles as `work` does.
70
+ */
71
+ export declare class WriteLanes {
72
+ readonly order: WriteOrder;
73
+ /** The last `all` write: every later write waits for it. */
74
+ private barrier;
75
+ private barrierPending;
76
+ /** The last write naming each key, while it runs. */
77
+ private readonly tails;
78
+ /** Every write not yet settled: what an `all` write waits for. */
79
+ private readonly running;
80
+ constructor(order?: WriteOrder);
81
+ run<T>(keys: LaneKeys, work: () => Promise<T>): Promise<T>;
82
+ }
83
+ /**
84
+ * A lock wait that ran out: PostgreSQL's `lock_timeout` (55P03), anywhere in the error's causes. The
85
+ * statement that waited failed and its transaction was rolled back, so
86
+ * nothing it wrote landed — unless the rollback itself was never
87
+ * acknowledged, which the caller has already said as an unknown outcome
88
+ * and which this does not look inside.
89
+ */
90
+ export declare function lockTimedOut(error: unknown): boolean;
91
+ /** What a person is told when their write waited out a lock, and how soon to try again. */
92
+ export declare const ROW_LOCKED_MESSAGE = "The record is locked by another transaction. Nothing was saved; try again in a moment.";
93
+ export declare const ROW_LOCKED_RETRY_AFTER_SECONDS = 1;
94
+ export {};
@@ -0,0 +1,232 @@
1
+ /**
2
+ * The order an adapter's writes run in, and how long one may wait on a lock.
3
+ *
4
+ * Two orders, chosen once per server (cli/browserMain.ts, cli/mistriMain.ts, embed/handler.ts; serverSettings.ts):
5
+ *
6
+ * - `serial`, the database browser's. Every write — an edit, a raw SQL
7
+ * statement, a transaction — waits for the one before it, on the one
8
+ * writer connection. The Workbench's Undo reverts the last write, and "the
9
+ * last" is a meaningful word only while writes commit one at a time; a raw
10
+ * statement lands after the edit queued before it. docs/postgresql.md
11
+ * states this contract, and it stays.
12
+ * - `keyed`, an App's. A write waits only for earlier writes that name one
13
+ * of its keys — the same record of the same table — and runs beside
14
+ * everything else, each on a writer connection of its own from the pool.
15
+ * Two saves of one record still commit in the order they arrived; saves
16
+ * of two records no longer queue behind each other. What makes that safe
17
+ * without the queue is the database's own locking, which already held
18
+ * across pods (docs/postgresql.md "Several writers").
19
+ *
20
+ * A write that names no key (a transaction whose rows are known only inside
21
+ * it, an insert) waits for nothing in `keyed` order; one that names `all`
22
+ * (a raw SQL write, shutdown) waits for everything before it and holds back
23
+ * everything after it, in either order.
24
+ *
25
+ * In-process deadlock is impossible by construction: a write's waits are
26
+ * taken, all at once, when it is queued, and only on writes queued before
27
+ * it, so the waits form no cycle. Rows locked *inside* a transaction are the
28
+ * database's to order, and its deadlock detector and `lock_timeout` bound
29
+ * them; nothing here takes a key lazily.
30
+ */
31
+ import { AsyncLocalStorage } from 'node:async_hooks';
32
+ import { availableParallelism } from 'node:os';
33
+ import { startSpan } from './telemetry/trace.js';
34
+ import { configureServerSettings, serverSettings } from './serverSettings.js';
35
+ /** How long a writer waits for a row or table lock before it gives up, unless told otherwise. */
36
+ const DEFAULT_LOCK_TIMEOUT_MS = 5_000;
37
+ /** The shortest and longest lock waits a deployment may ask for. */
38
+ export const MIN_LOCK_TIMEOUT_MS = 100;
39
+ export const MAX_LOCK_TIMEOUT_MS = 30_000;
40
+ export const MAX_WRITERS = 64;
41
+ /**
42
+ * The reader and the writer pool an App's database gets unless told: twice
43
+ * the cores, from four to sixteen. A node process is one core of JavaScript,
44
+ * and with fewer connections than requests in flight the pool, not the
45
+ * database, is what a write waits for (a 500-user soak: Postgres idle, 98%
46
+ * of writer checkouts queued behind four writers). Sixteen caps the sum
47
+ * (readers + writers, per pod per database; docs/postgresql.md does it)
48
+ * well inside a stock server's 100 connections.
49
+ */
50
+ export function balancedPoolSize(cores = availableParallelism()) {
51
+ return Math.min(16, Math.max(4, 2 * cores));
52
+ }
53
+ /** The writer pool's size where an App writes, unless a connection or the command line says otherwise. */
54
+ const DEFAULT_WRITERS = balancedPoolSize();
55
+ /** Whether `value` is a writer pool size: a whole number from 1 to 64. */
56
+ export function isWriterCount(value) {
57
+ return typeof value === 'number' && Number.isInteger(value) && value >= 1 && value <= MAX_WRITERS;
58
+ }
59
+ /**
60
+ * The order every adapter this process opens from now on writes in: `keyed`
61
+ * where the process serves Apps, `serial` (the default) for the database
62
+ * browser. Called once, at startup, before a connection opens; an adapter
63
+ * reads it when it is made. A handler mounted in a host's process carries its
64
+ * own (serverSettings.ts), and this is the process's, outside any.
65
+ */
66
+ export function configureWriteOrder(order) {
67
+ if (order !== 'serial' && order !== 'keyed')
68
+ throw new RangeError('The write order is "serial" or "keyed".');
69
+ configureServerSettings({ writeOrder: order });
70
+ }
71
+ export function writeOrder() {
72
+ return serverSettings().writeOrder;
73
+ }
74
+ /** `--write-pool`: the writers an App's PostgreSQL source holds, unless its connection names a number. */
75
+ export function configureWriterPool(writers = balancedPoolSize()) {
76
+ if (!isWriterCount(writers))
77
+ throw new RangeError(`A write pool holds 1 to ${MAX_WRITERS} connections; ${String(writers)} is not one of them.`);
78
+ configureServerSettings({ writers });
79
+ }
80
+ export function writerPoolSize() {
81
+ return serverSettings().writers ?? DEFAULT_WRITERS;
82
+ }
83
+ /** Whether `ms` is a lock wait a deployment may set: whole milliseconds from 100 to 30,000. */
84
+ export function isLockTimeout(ms) {
85
+ return typeof ms === 'number' && Number.isInteger(ms) && ms >= MIN_LOCK_TIMEOUT_MS && ms <= MAX_LOCK_TIMEOUT_MS;
86
+ }
87
+ /** `--lock-timeout`: how long any writer of this process waits for a lock. At most the statement cap, which would stop it anyway. */
88
+ export function configureLockTimeout(ms = DEFAULT_LOCK_TIMEOUT_MS) {
89
+ if (!isLockTimeout(ms))
90
+ throw new RangeError(`A lock timeout is ${MIN_LOCK_TIMEOUT_MS} to ${MAX_LOCK_TIMEOUT_MS} milliseconds.`);
91
+ configureServerSettings({ lockTimeoutMs: ms });
92
+ }
93
+ export function lockTimeoutMs() {
94
+ return serverSettings().lockTimeoutMs ?? DEFAULT_LOCK_TIMEOUT_MS;
95
+ }
96
+ const background = new AsyncLocalStorage();
97
+ /**
98
+ * Run `work` as background work — a job's command, an effect's delivery —
99
+ * so every writer lease beneath it comes from the background connection
100
+ * (postgresPool.ts), never from the pool a person's save is waiting on.
101
+ */
102
+ export function asBackgroundWork(work) {
103
+ return background.run(true, work);
104
+ }
105
+ export function inBackgroundWork() {
106
+ return background.getStore() === true;
107
+ }
108
+ /**
109
+ * One record's lane: its table and its key, the values as text, so the key
110
+ * an address spells `'7'` and the one a row holds as `7` are one lane. The
111
+ * table as the caller named it; two spellings of one table are two lanes,
112
+ * which the row lock still orders.
113
+ */
114
+ export function recordLane(table, key) {
115
+ const pairs = Object.keys(key)
116
+ .sort()
117
+ .map((column) => [column, String(key[column])]);
118
+ return JSON.stringify([table, pairs]);
119
+ }
120
+ /** The lane of a request that names one record by its key, or none when it names none the adapter would accept (it refuses it). */
121
+ export function keyedLane(request) {
122
+ const { table, key } = request ?? {};
123
+ if (typeof table !== 'string' || !key || typeof key !== 'object' || Array.isArray(key))
124
+ return [];
125
+ return [recordLane(table, key)];
126
+ }
127
+ const hinted = new AsyncLocalStorage();
128
+ /**
129
+ * Run `work` in one record's lane: every write it starts that names no lane
130
+ * of its own — a transaction, through whatever wrappers an App puts round
131
+ * its adapter — takes this one. How an App's save of a record, which runs
132
+ * as a transaction that locks the row, keeps its place behind the earlier
133
+ * saves of that record without every wrapper learning a new argument. Only
134
+ * the first write beneath it takes the lane: the work a lane runs sees none.
135
+ */
136
+ export function inRecordLane(table, key, work) {
137
+ return hinted.run(keyedLane({ table, key }), work);
138
+ }
139
+ /** All known targets and the receipt scope enter together, before any lease is taken. */
140
+ export function inWriteLanes(keys, work) {
141
+ return hinted.run([...new Set(keys)].sort(), work);
142
+ }
143
+ /**
144
+ * The per-adapter queue. `run(keys, work)` starts `work` once every earlier
145
+ * write it must follow has settled, and settles as `work` does.
146
+ */
147
+ export class WriteLanes {
148
+ order;
149
+ /** The last `all` write: every later write waits for it. */
150
+ barrier = Promise.resolve();
151
+ barrierPending = false;
152
+ /** The last write naming each key, while it runs. */
153
+ tails = new Map();
154
+ /** Every write not yet settled: what an `all` write waits for. */
155
+ running = new Set();
156
+ constructor(order = writeOrder()) {
157
+ this.order = order;
158
+ }
159
+ run(keys, work) {
160
+ // The browser's order: everything is `all`, which is the queue it always was.
161
+ const hint = hinted.getStore();
162
+ const named = this.order === 'serial' ? 'all' : keys === 'all' || !hint?.length ? keys : [...keys, ...hint];
163
+ const waits = [];
164
+ if (this.barrierPending)
165
+ waits.push(this.barrier);
166
+ if (named === 'all')
167
+ waits.push(...this.running);
168
+ else
169
+ for (const key of new Set(named)) {
170
+ const tail = this.tails.get(key);
171
+ if (tail)
172
+ waits.push(tail);
173
+ }
174
+ /* Only a write that really waits is said to: a span per write would
175
+ bury the request's own statements under empty ones. */
176
+ const queued = waits.length
177
+ ? startSpan('write queue', {
178
+ childOnly: true,
179
+ attributes: { 'mistri.write.order': this.order, 'mistri.write.behind': waits.length },
180
+ })
181
+ : undefined;
182
+ const ready = waits.length
183
+ ? Promise.all(waits).then(() => {
184
+ queued?.end();
185
+ })
186
+ : Promise.resolve();
187
+ // The lane is this write's; what the write starts is not in it.
188
+ const next = ready.then(() => (hint ? hinted.exit(work) : work()));
189
+ const settled = next.then(() => { }, () => { });
190
+ this.running.add(settled);
191
+ void settled.then(() => this.running.delete(settled));
192
+ if (named === 'all') {
193
+ this.barrier = settled;
194
+ this.barrierPending = true;
195
+ void settled.then(() => {
196
+ if (this.barrier === settled)
197
+ this.barrierPending = false;
198
+ });
199
+ }
200
+ else
201
+ for (const key of new Set(named)) {
202
+ this.tails.set(key, settled);
203
+ void settled.then(() => {
204
+ if (this.tails.get(key) === settled)
205
+ this.tails.delete(key);
206
+ });
207
+ }
208
+ return next;
209
+ }
210
+ }
211
+ /**
212
+ * A lock wait that ran out: PostgreSQL's `lock_timeout` (55P03), anywhere in the error's causes. The
213
+ * statement that waited failed and its transaction was rolled back, so
214
+ * nothing it wrote landed — unless the rollback itself was never
215
+ * acknowledged, which the caller has already said as an unknown outcome
216
+ * and which this does not look inside.
217
+ */
218
+ export function lockTimedOut(error) {
219
+ let at = error;
220
+ for (let depth = 0; depth < 4 && at && typeof at === 'object'; depth++) {
221
+ if (at.name === 'TransactionOutcomeUnknown' || at.outcome === 'unknown')
222
+ return false;
223
+ const { code } = at;
224
+ if (code === '55P03')
225
+ return true;
226
+ at = at.cause;
227
+ }
228
+ return false;
229
+ }
230
+ /** What a person is told when their write waited out a lock, and how soon to try again. */
231
+ export const ROW_LOCKED_MESSAGE = 'The record is locked by another transaction. Nothing was saved; try again in a moment.';
232
+ export const ROW_LOCKED_RETRY_AFTER_SECONDS = 1;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `@mistriwork/engine`, as the tree has it (scripts/boundary/entries.json): the part of the engine the database
3
+ * browser reads a database through, and the smallest surface a second product can stand on. A connection string
4
+ * becomes an adapter (`connect`); the adapter reads the catalog into a schema, and runs a query-language read or a
5
+ * keyset page of one. Anything else the engine owns is reached through these, or is not the package's yet.
6
+ *
7
+ * Kept small on purpose: a name added here is a name the engine package will have to keep, so it is added when a
8
+ * product outside the tree needs it, not because it is exported somewhere below.
9
+ */
10
+ export { connect } from './adapters/connect.js';
11
+ export type { Adapter, QueryRequest, SqlRequest, SqlResult } from './adapters/adapter.js';
12
+ export type { QueryResult } from './shared/reads.js';
13
+ export { defaultOrder, findTable, labelColumn, primaryKey, referencesFrom, referencesTo, tableNamed, type ColumnMeta, type DatabaseSchema, type Dialect, type ForeignKey, type Order, type TableMeta, } from './shared/schema.js';
14
+ export { explain, parseQuery, quoteValue, type QueryError } from './shared/query.js';
15
+ export { keysetAfter, keysetOrder, pageBounds, readPageStep, reversedOrder, type Boundary, type PageBounds, type PageStep, } from './shared/keysetPage.js';
package/dist/engine.js ADDED
@@ -0,0 +1,13 @@
1
+ /**
2
+ * `@mistriwork/engine`, as the tree has it (scripts/boundary/entries.json): the part of the engine the database
3
+ * browser reads a database through, and the smallest surface a second product can stand on. A connection string
4
+ * becomes an adapter (`connect`); the adapter reads the catalog into a schema, and runs a query-language read or a
5
+ * keyset page of one. Anything else the engine owns is reached through these, or is not the package's yet.
6
+ *
7
+ * Kept small on purpose: a name added here is a name the engine package will have to keep, so it is added when a
8
+ * product outside the tree needs it, not because it is exported somewhere below.
9
+ */
10
+ export { connect } from './adapters/connect.js';
11
+ export { defaultOrder, findTable, labelColumn, primaryKey, referencesFrom, referencesTo, tableNamed, } from './shared/schema.js';
12
+ export { explain, parseQuery, quoteValue } from './shared/query.js';
13
+ export { keysetAfter, keysetOrder, pageBounds, readPageStep, reversedOrder, } from './shared/keysetPage.js';
@@ -0,0 +1,61 @@
1
+ /** Where the credentials file lives when one is used at all. */
2
+ export declare function credentialsPath(): string;
3
+ /**
4
+ * Expand `${VAR}` and `$VAR` in a connection string.
5
+ *
6
+ * This is the recommended option, and the only one where the secret is never
7
+ * written anywhere tablewalk controls:
8
+ *
9
+ * { "name": "prod", "url": "postgres://app:${PROD_DB_PASSWORD}@db/app" }
10
+ *
11
+ * An unset variable is an error rather than an empty expansion. Silently
12
+ * producing `postgres://app:@db/app` would send an empty password and fail
13
+ * with an authentication error that says nothing about the real cause.
14
+ */
15
+ export declare function expandEnv(url: string, env?: NodeJS.ProcessEnv): string;
16
+ /**
17
+ * Expand only the `${NAME}` form. An authentication store URL is read this
18
+ * way, and it is the only form its documentation names: there a bare `$` is
19
+ * literal, so a password containing `$abc` is not mistaken for a reference
20
+ * to an unset variable (and refused) or, worse, to a set one.
21
+ */
22
+ export declare function expandEnvReferences(url: string, env?: NodeJS.ProcessEnv): string;
23
+ /** True when a URL carries a literal password rather than a reference. */
24
+ export declare function hasInlinePassword(url: string): boolean;
25
+ export declare function keychainSet(account: string, secret: string): Promise<boolean>;
26
+ export declare function keychainDelete(account: string): Promise<void>;
27
+ export declare const keychainAvailable: () => boolean;
28
+ interface CredentialsFile {
29
+ [connectionName: string]: string;
30
+ }
31
+ /**
32
+ * Read the credentials file, refusing it if anyone but the owner can read it.
33
+ *
34
+ * The permission check is the whole point. It is what `ssh` does to private
35
+ * keys and what `psql` does to `.pgpass`, and it catches the realistic
36
+ * mistake: a file created correctly, then committed, copied or synced with
37
+ * permissions that no longer match the intent. Refusing loudly is better than
38
+ * reading it and leaving the user believing it was safe.
39
+ */
40
+ export declare function readCredentials(path?: string): Promise<CredentialsFile>;
41
+ export declare function writeCredential(name: string, secret: string, path?: string): Promise<void>;
42
+ interface ResolvedConnection {
43
+ url: string;
44
+ /** Where the password came from, for the UI to report honestly. */
45
+ source: 'none' | 'inline' | 'environment' | 'keychain' | 'file';
46
+ warning?: string;
47
+ }
48
+ /**
49
+ * Turn a stored connection into a usable URL.
50
+ *
51
+ * Order matters and is deliberate: the environment wins because it is the
52
+ * most explicit, then the keychain because it is the best-protected, then the
53
+ * file. An inline password is used as-is but reported, so the UI can say what
54
+ * it is doing rather than leaving the user to guess.
55
+ */
56
+ export declare function resolveConnection(name: string, storedUrl: string, options?: {
57
+ credentialsFile?: string;
58
+ secrets?: boolean;
59
+ environment?: NodeJS.ProcessEnv;
60
+ }): Promise<ResolvedConnection>;
61
+ export {};