@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,128 @@
1
+ /**
2
+ * Which part of the client an address's first page will need, so the page
3
+ * sent for it names that part and the browser fetches it beside the entry.
4
+ *
5
+ * The client boots in surfaces (vite.config.ts, `surfaces`): the entry
6
+ * decides, from the path and who-am-I, whether to draw a public page or the
7
+ * shell, and imports that chunk. Left to the entry, the chunk would be asked
8
+ * for only once the entry had run — a second round trip before anything
9
+ * paints. So the build writes one page per surface, each preloading its own
10
+ * chunk, and the server sends the one the address asks for. A guess that
11
+ * turns out wrong (a signed-out visitor at an App's root, sent to sign in)
12
+ * costs the import the entry makes anyway, never a wrong page.
13
+ *
14
+ * An App's shell page preloads the kit's shell and the App's chrome. The
15
+ * database browser's pages are a third: its main and the shell, and the
16
+ * `mistri-shell` meta that tells the entry to start that main
17
+ * (packages/kit/src/client/shellStart.js). The browser says so when it sends one
18
+ * (clientHttp.ts `ShellTitle.workbench`); an address alone never does.
19
+ *
20
+ * The paths are the client's own (packages/mistri/src/client/publicRoutes.js), and
21
+ * test/client-surface.test.ts holds the two readings together.
22
+ */
23
+ import type { ThemeDefinition } from '../shared/theme.js';
24
+ import { type ThemeAudiences } from '../shared/themeResolve.js';
25
+ type ClientSurface = 'shell' | 'public' | 'workbench';
26
+ /**
27
+ * An App's `ui` as far as the look its page wears goes (the App framework's
28
+ * shared/appModel.ts AppUi): the look it names, the one per audience, and its
29
+ * own themes. A first page is sent in it; nothing else of the App is read.
30
+ */
31
+ interface LookChoice {
32
+ theme?: {
33
+ preset?: string;
34
+ for?: ThemeAudiences;
35
+ };
36
+ customThemes?: readonly ThemeDefinition[];
37
+ }
38
+ /** The page the build writes for each surface, under dist/client. */
39
+ export declare const SURFACE_PAGES: Readonly<Record<ClientSurface, string>>;
40
+ export declare function surfaceFor(pathname: string): Exclude<ClientSurface, 'workbench'>;
41
+ /**
42
+ * The look sheets (`lumen`, `sage`, `brand`) an App's own look wears, so its
43
+ * page can ask for them beside the entry. The client fetches a look's sheet
44
+ * when it applies the look (visualTheme.ts) and holds the reveal until it is
45
+ * here, which left the sheet a second round trip behind the entry on a first
46
+ * visit. The App's own look is the guess: a reader who picked another wears
47
+ * that, and the guess costs one sheet fetched and not used. It stays out of
48
+ * the first-paint bundle — a preload is a request, not bytes in the entry.
49
+ */
50
+ export declare function lookSheetsFor(ui: LookChoice | undefined, audience?: Audience): readonly string[];
51
+ /**
52
+ * The density the App's look starts at, so the page zooms to it before its
53
+ * first paint (client density.js). Guessed like the sheets: a reader who
54
+ * picked another look, or a density of their own, wears theirs.
55
+ */
56
+ export declare function lookDensityFor(ui: LookChoice | undefined, audience?: Audience): string | undefined;
57
+ /**
58
+ * The scheme the App's look says (`scheme: 'dark'` or `'dark-only'`), so the first page is sent already dark
59
+ * (index.html's boot script stamps it before any style is read). Left to the client, which learns the theme a round
60
+ * trip later, a first visit painted light and flipped. Guessed like the sheets, and a reader's own stored mode still
61
+ * wins when the script runs.
62
+ */
63
+ export declare function lookSchemeFor(ui: LookChoice | undefined, audience?: Audience): 'dark' | 'dark-only' | undefined;
64
+ /** The grounds a page is sent for the browser's own chrome (`theme-color`, `color-scheme`): the page's colour in each
65
+ mode, and whether the theme is dark in both (`dark-only`). */
66
+ export interface PageGrounds {
67
+ light: string;
68
+ dark: string;
69
+ scheme?: 'dark' | 'dark-only';
70
+ }
71
+ /** A theme's ground in each mode, the surface where it names none (a palette's page is then its panels'). */
72
+ export declare function groundsOf(theme: ThemeDefinition): PageGrounds;
73
+ /**
74
+ * The grounds the App's look wears, said in the page's head as `theme-color` and `color-scheme`, so the address bar and
75
+ * the overscroll are the page's colour from the first byte instead of white until a script runs. Guessed like the
76
+ * sheets: a reader who picked another look or mode wears theirs.
77
+ */
78
+ export declare function lookGroundsFor(ui: LookChoice | undefined, audience?: Audience): PageGrounds | undefined;
79
+ /** Who the page is for: a signed-out visitor, or a member holding these roles (`ui.theme.for`). */
80
+ export interface Audience {
81
+ public?: boolean;
82
+ roles?: readonly string[];
83
+ }
84
+ /**
85
+ * The sheets whose face the App's look is set in, so its page can ask for
86
+ * the face beside the sheet. A sheet is worn for its recipes, and a theme on
87
+ * Sage that borrows one of Lumen's wears Lumen's sheet with its own stack:
88
+ * the face is preloaded only where the interface or its headings begin with it
89
+ * (and, for a sheet whose face is the data's own, as Ledger's monospace figures are, where the data does), never
90
+ * fetched for a page that would not draw a line in it.
91
+ */
92
+ export declare function lookFacesFor(ui: LookChoice | undefined, audience?: Audience): readonly string[];
93
+ /**
94
+ * The App's own faces in its page's head (`type.faces`, server/app/appFonts.ts):
95
+ * their `@font-face` rules, so a line is drawn in its face as soon as the face
96
+ * is here rather than once the script has declared it, and a preload of the
97
+ * face its headings are drawn in, so that one is fetched beside the entry
98
+ * instead of a round trip after the first heading is laid out. Only the worn
99
+ * theme's heading face is preloaded: a preload is a request every visit pays,
100
+ * and the rest are fetched where a line needs them. A face is the App's own
101
+ * file from its own origin (`font-src 'self'`), never the bundle's bytes, so it
102
+ * stands outside the first-paint budgets (scripts/bundle-budget.mjs). `shown`
103
+ * says an inside address the way the browser asks for it (shared/mount.ts).
104
+ */
105
+ export declare function appFaceHead(ui: LookChoice | undefined, shown: (href: string) => string, audience?: Audience): string;
106
+ /**
107
+ * The chrome's words for a reader who does not read English, preloaded beside
108
+ * the entry: the client asks for them before it draws its first words
109
+ * (messages.ts `setMessageScope`), and left to it that is one round trip more
110
+ * than an English reader pays. English is in the entry, so it needs nothing;
111
+ * a language the chrome has no words for has no chunk and so no preload.
112
+ */
113
+ export declare function localePreloads(locale: string | undefined, files: Iterable<string>): string;
114
+ /**
115
+ * A tenant host's shell page asks for the tenant's flows beside the entry. The shell imports them once who-am-I
116
+ * has said the session is a tenant's (appChrome.js `loadTenancy`), which left their fetch a round trip behind
117
+ * who-am-I and in front of entering; on a tenant host a signed-in session is always one. A visitor sent on to sign
118
+ * in costs the fetch and nothing else. The sheet says `crossorigin`, as the loader's own stylesheet link does.
119
+ */
120
+ export declare function tenantPreloads(files: Iterable<string>): string;
121
+ /**
122
+ * The preload links for the look sheets a page will wear, and the faces they
123
+ * declare, from the files the build wrote (none under the dev server). A face
124
+ * is otherwise asked for only once the sheet has been parsed and a line
125
+ * drawn in it, a round trip after the sheet; preloaded, it comes beside it.
126
+ */
127
+ export declare function lookPreloads(sheets: readonly string[], files: Iterable<string>, faces?: readonly string[]): string;
128
+ export {};
@@ -0,0 +1,182 @@
1
+ import { recipeAttributes } from '../shared/themeRecipes.js';
2
+ import { effectiveThemeDefinition, themePreset } from '../shared/themePresets.js';
3
+ import { resolveTheme } from '../shared/themeResolve.js';
4
+ import { faceRules, headingFace } from '../shared/themeFaces.js';
5
+ /** The page the build writes for each surface, under dist/client. */
6
+ export const SURFACE_PAGES = {
7
+ shell: 'index.html',
8
+ public: 'index.public.html',
9
+ workbench: 'index.workbench.html',
10
+ };
11
+ /** A public form (`/{app}/form/{id}`, its `/status` and `/claim`), the landing for anyone (`/{app}/welcome`) or the staff door (`/{app}/sign-in`). */
12
+ const PUBLIC = /^\/[^/@~]+\/(?:form\/[a-z0-9][a-z0-9-]{0,63}(?:\/(?:status|claim))?|welcome|sign-in)\/?$/;
13
+ export function surfaceFor(pathname) {
14
+ return PUBLIC.test(pathname) ? 'public' : 'shell';
15
+ }
16
+ /**
17
+ * The look sheets (`lumen`, `sage`, `brand`) an App's own look wears, so its
18
+ * page can ask for them beside the entry. The client fetches a look's sheet
19
+ * when it applies the look (visualTheme.ts) and holds the reveal until it is
20
+ * here, which left the sheet a second round trip behind the entry on a first
21
+ * visit. The App's own look is the guess: a reader who picked another wears
22
+ * that, and the guess costs one sheet fetched and not used. It stays out of
23
+ * the first-paint bundle — a preload is a request, not bytes in the entry.
24
+ */
25
+ export function lookSheetsFor(ui, audience) {
26
+ const theme = wornTheme(ui, audience);
27
+ return theme ? recipeAttributes(theme).sheets : [];
28
+ }
29
+ /**
30
+ * The density the App's look starts at, so the page zooms to it before its
31
+ * first paint (client density.js). Guessed like the sheets: a reader who
32
+ * picked another look, or a density of their own, wears theirs.
33
+ */
34
+ export function lookDensityFor(ui, audience) {
35
+ return wornTheme(ui, audience)?.density;
36
+ }
37
+ /**
38
+ * The scheme the App's look says (`scheme: 'dark'` or `'dark-only'`), so the first page is sent already dark
39
+ * (index.html's boot script stamps it before any style is read). Left to the client, which learns the theme a round
40
+ * trip later, a first visit painted light and flipped. Guessed like the sheets, and a reader's own stored mode still
41
+ * wins when the script runs.
42
+ */
43
+ export function lookSchemeFor(ui, audience) {
44
+ return wornTheme(ui, audience)?.scheme;
45
+ }
46
+ /** A theme's ground in each mode, the surface where it names none (a palette's page is then its panels'). */
47
+ export function groundsOf(theme) {
48
+ const worn = effectiveThemeDefinition(theme, 'default');
49
+ const ground = (mode) => worn[mode].ground ?? worn[mode].surface;
50
+ return { light: ground('light'), dark: ground('dark'), ...(theme.scheme ? { scheme: theme.scheme } : {}) };
51
+ }
52
+ /**
53
+ * The grounds the App's look wears, said in the page's head as `theme-color` and `color-scheme`, so the address bar and
54
+ * the overscroll are the page's colour from the first byte instead of white until a script runs. Guessed like the
55
+ * sheets: a reader who picked another look or mode wears theirs.
56
+ */
57
+ export function lookGroundsFor(ui, audience) {
58
+ const theme = wornTheme(ui, audience);
59
+ return theme ? groundsOf(theme) : undefined;
60
+ }
61
+ /** The theme an App's page is guessed to wear: its audience's (themeResolve.ts) without a reader's pick, which the
62
+ server cannot see, else the App's own look, else Workshop's. */
63
+ function wornTheme(ui, audience = {}) {
64
+ if (!ui)
65
+ return undefined;
66
+ const offered = (id) => Boolean(ui.customThemes?.some((item) => item.id === id) ?? false) || Boolean(themePreset(id));
67
+ const { id } = resolveTheme({ ...audience, for: ui.theme?.for, preset: ui.theme?.preset, offered });
68
+ return ui.customThemes?.find((item) => item.id === id) ?? themePreset(id) ?? themePreset('workshop');
69
+ }
70
+ /** The faces each look sheet declares, by the families a stack begins with to be set in them (lumenLook.css,
71
+ workshopLook.css), and the files preloaded: Workshop's regular and its condensed bold, which every page draws;
72
+ its semibold comes when a line asks for it. */
73
+ const SHEET_FACES = {
74
+ workshop: { families: ['Barlow', 'Barlow Semi Condensed'], file: /^assets\/barlow-(?:400|semi-condensed-700)-[\w-]+\.woff2$/ },
75
+ lumen: { families: ['Inter'], file: /^assets\/inter-latin-[\w-]+\.woff2$/ },
76
+ ledger: { families: ['IBM Plex Mono'], data: true, file: /^assets\/ibm-plex-mono-400-[\w-]+\.woff2$/ },
77
+ };
78
+ /**
79
+ * The sheets whose face the App's look is set in, so its page can ask for
80
+ * the face beside the sheet. A sheet is worn for its recipes, and a theme on
81
+ * Sage that borrows one of Lumen's wears Lumen's sheet with its own stack:
82
+ * the face is preloaded only where the interface or its headings begin with it
83
+ * (and, for a sheet whose face is the data's own, as Ledger's monospace figures are, where the data does), never
84
+ * fetched for a page that would not draw a line in it.
85
+ */
86
+ export function lookFacesFor(ui, audience) {
87
+ const theme = wornTheme(ui, audience);
88
+ if (!theme)
89
+ return [];
90
+ const first = (stack) => stack
91
+ ?.split(',')[0]
92
+ ?.trim()
93
+ .replace(/^["']|["']$/g, '');
94
+ const leads = new Set([first(theme.fonts?.ui), first(theme.fonts?.heading)]);
95
+ const dataLead = first(theme.fonts?.data);
96
+ return recipeAttributes(theme).sheets.filter((sheet) => SHEET_FACES[sheet]?.families.some((family) => leads.has(family) || (SHEET_FACES[sheet]?.data && dataLead === family)));
97
+ }
98
+ /**
99
+ * The App's own faces in its page's head (`type.faces`, server/app/appFonts.ts):
100
+ * their `@font-face` rules, so a line is drawn in its face as soon as the face
101
+ * is here rather than once the script has declared it, and a preload of the
102
+ * face its headings are drawn in, so that one is fetched beside the entry
103
+ * instead of a round trip after the first heading is laid out. Only the worn
104
+ * theme's heading face is preloaded: a preload is a request every visit pays,
105
+ * and the rest are fetched where a line needs them. A face is the App's own
106
+ * file from its own origin (`font-src 'self'`), never the bundle's bytes, so it
107
+ * stands outside the first-paint budgets (scripts/bundle-budget.mjs). `shown`
108
+ * says an inside address the way the browser asks for it (shared/mount.ts).
109
+ */
110
+ export function appFaceHead(ui, shown, audience) {
111
+ const theme = wornTheme(ui, audience);
112
+ const rules = faceRules(theme, shown);
113
+ if (!rules)
114
+ return '';
115
+ const heading = theme && headingFace(theme);
116
+ const type = heading?.href?.endsWith('.woff') ? 'font/woff' : 'font/woff2';
117
+ return (
118
+ /* A face is fetched in CORS mode, so its preload says `crossorigin`, or it is fetched twice (lookPreloads). */
119
+ (heading ? ` <link rel="preload" as="font" type="${type}" crossorigin href="${shown(heading.href)}">\n` : '') +
120
+ ` <style id="mistri-theme-faces">${rules}</style>\n`);
121
+ }
122
+ /** A built look sheet's file, `assets/lumenLook-<hash>.css`, by the sheet's name. */
123
+ /** The chrome's words in one language (vite.config.ts LOCALE_GROUP): `assets/copy.es-<hash>.js`. */
124
+ const WORDS_FILE = /^assets\/copy\.([a-z]{2,3})-[\w-]+\.js$/;
125
+ /**
126
+ * The chrome's words for a reader who does not read English, preloaded beside
127
+ * the entry: the client asks for them before it draws its first words
128
+ * (messages.ts `setMessageScope`), and left to it that is one round trip more
129
+ * than an English reader pays. English is in the entry, so it needs nothing;
130
+ * a language the chrome has no words for has no chunk and so no preload.
131
+ */
132
+ export function localePreloads(locale, files) {
133
+ const language = locale?.split('-')[0]?.toLowerCase();
134
+ if (!language || language === 'en')
135
+ return '';
136
+ for (const file of files)
137
+ if (WORDS_FILE.exec(file)?.[1] === language)
138
+ return ` <link rel="modulepreload" crossorigin href="/${file}">\n`;
139
+ return '';
140
+ }
141
+ /** The tenant's flows (vite.config.ts `surfaces`, `tenant`): `assets/tenant-<hash>.js` and its sheet. */
142
+ const TENANT_FILE = /^assets\/tenant-[\w-]+\.(js|css)$/;
143
+ /**
144
+ * A tenant host's shell page asks for the tenant's flows beside the entry. The shell imports them once who-am-I
145
+ * has said the session is a tenant's (appChrome.js `loadTenancy`), which left their fetch a round trip behind
146
+ * who-am-I and in front of entering; on a tenant host a signed-in session is always one. A visitor sent on to sign
147
+ * in costs the fetch and nothing else. The sheet says `crossorigin`, as the loader's own stylesheet link does.
148
+ */
149
+ export function tenantPreloads(files) {
150
+ let links = '';
151
+ for (const file of files) {
152
+ const kind = TENANT_FILE.exec(file)?.[1];
153
+ if (kind === 'js')
154
+ links += ` <link rel="modulepreload" crossorigin href="/${file}">\n`;
155
+ else if (kind === 'css')
156
+ links += ` <link rel="preload" as="style" crossorigin href="/${file}">\n`;
157
+ }
158
+ return links;
159
+ }
160
+ const LOOK_FILE = /^assets\/([a-z]+)Look-[\w-]+\.css$/;
161
+ /**
162
+ * The preload links for the look sheets a page will wear, and the faces they
163
+ * declare, from the files the build wrote (none under the dev server). A face
164
+ * is otherwise asked for only once the sheet has been parsed and a line
165
+ * drawn in it, a round trip after the sheet; preloaded, it comes beside it.
166
+ */
167
+ export function lookPreloads(sheets, files, faces = []) {
168
+ if (!sheets.length)
169
+ return '';
170
+ const wanted = new Set(sheets);
171
+ let links = '';
172
+ for (const file of files) {
173
+ const name = LOOK_FILE.exec(file)?.[1];
174
+ /* `crossorigin`, as the loader's own stylesheet link is: a preload in another mode would be fetched twice. */
175
+ if (name && wanted.has(name))
176
+ links += ` <link rel="preload" as="style" crossorigin href="/${file}">\n`;
177
+ /* A face is always fetched in CORS mode, so its preload says `crossorigin` too, or it is fetched again. */
178
+ if (faces.some((sheet) => sheets.includes(sheet) && SHEET_FACES[sheet]?.file.test(file)))
179
+ links += ` <link rel="preload" as="font" type="font/woff2" crossorigin href="/${file}">\n`;
180
+ }
181
+ return links;
182
+ }
@@ -0,0 +1,103 @@
1
+ /**
2
+ * A grant over a catalog, and every check that holds a request to it: which
3
+ * tables and columns a reader reads and writes, the catalog pruned to them
4
+ * (its edges too, since a relationship can disclose a table), and each
5
+ * query, view, breakdown, filter and write refused where it reaches past
6
+ * them. The engine's, because two products hold requests to one: an App
7
+ * role's grant (app/appAccess.ts, which adds its rules over writes through
8
+ * `WriteRules`) and a connection's hidden columns (hiddenColumns.ts), which
9
+ * has no App in it to ask.
10
+ */
11
+ import { Refusal, type Filter, type QueryRequest, type WriteTransaction, type InsertRequest, type UpdateRequest, type DeleteRequest } from '../adapters/adapter.js';
12
+ import { type ViewDef } from '../shared/view.js';
13
+ import { type BreakdownDef } from '../shared/breakdown.js';
14
+ import { type DatabaseSchema } from '../shared/schema.js';
15
+ import type { RowScope } from '../shared/rowScope.js';
16
+ /**
17
+ * A reader reaching past its grant. Its name is the App's, where most
18
+ * refusals are met; a connection's hidden columns (hiddenColumns.ts) say
19
+ * which boundary answered in a refusal of their own.
20
+ */
21
+ export declare class AppAccessDenied extends Refusal {
22
+ constructor(message?: string);
23
+ }
24
+ export interface ColumnGrant {
25
+ readable: ReadonlySet<string>;
26
+ writable: ReadonlySet<string>;
27
+ /** Of `writable`, where a generic insert may make a row (`roles.<role>.create`). Absent: all of it. */
28
+ creatable?: ReadonlySet<string>;
29
+ /** Missing entries retain unrestricted columns within the resource grants. */
30
+ fields?: ReadonlyMap<string, {
31
+ read: ReadonlySet<string>;
32
+ write: ReadonlySet<string>;
33
+ }>;
34
+ /** Columns read and written by the server for its own work (a file's object
35
+ and hash): never listed in a served catalog, and refused to every request
36
+ but the server's own (`serverRequest`). */
37
+ internal?: ReadonlyMap<string, ReadonlySet<string>>;
38
+ /** Private server-owned scope. Writes require an explicit scoped transaction. */
39
+ rows?: RowScope;
40
+ }
41
+ /** Preserve changes made before invocation, never changes during its awaits.
42
+ * These copied sets stay private; freezing a Set alone would not freeze grants. */
43
+ export declare function captureGrant<G extends ColumnGrant>(grant: G): G;
44
+ export declare function markStableGrant<T extends ColumnGrant>(grant: T): T;
45
+ /** Test-only: how many times a catalog was pruned rather than reused. */
46
+ export declare const pruneCounters: {
47
+ pruned: number;
48
+ };
49
+ /** Hide graph edges as well as tables: a relationship can disclose another resource. */
50
+ export declare function accessibleSchema(schema: DatabaseSchema, access: ColumnGrant): DatabaseSchema;
51
+ /** Capture data before checking it: queued adapters must execute what we authorized.
52
+ * Getters, inherited properties and coercible objects are not structured requests. */
53
+ export declare function requestData<T>(value: T, ancestors?: Set<object>): T;
54
+ /** Every read and write check against one grant, over the catalog it prunes: an App role's (app/appAccess.ts) and a connection's hidden columns (hiddenColumns.ts) alike. */
55
+ export declare function resourceChecks(full: DatabaseSchema, access: ColumnGrant): {
56
+ schema: DatabaseSchema;
57
+ assertRead: (table: string) => void;
58
+ assertWrite: (table: string) => void;
59
+ assertAllFields: (table: string, mode?: 'read' | 'write', owned?: boolean) => void;
60
+ assertParentReads: (table: string, values: Readonly<Record<string, unknown>> | undefined, insert: boolean) => void;
61
+ recordFields: (table: string, record: object, mode: 'read' | 'write', server?: boolean) => void;
62
+ keyFields: (table: string, key: object) => void;
63
+ queryFor: (input: QueryRequest) => {
64
+ table: string;
65
+ orderBy?: {
66
+ column: string;
67
+ direction: 'asc' | 'desc';
68
+ }[];
69
+ limit: number;
70
+ offset: number;
71
+ binary?: true;
72
+ columns: string[];
73
+ filter: Filter | undefined;
74
+ };
75
+ filterFor: (table: string, input?: Filter, server?: boolean) => Filter | undefined;
76
+ viewFor: (input: ViewDef) => ViewDef;
77
+ breakdownFor: (input: BreakdownDef) => BreakdownDef;
78
+ assertRelatedWrites: (table: string, fields?: string[]) => void;
79
+ };
80
+ /** Pure catalog validation through the same graph boundary as runtime reads. */
81
+ export declare function validateResourceView(schema: DatabaseSchema, access: ColumnGrant, view: ViewDef): ViewDef;
82
+ export declare function expectedCovers(full: DatabaseSchema, request: UpdateRequest): boolean;
83
+ export type ResourceChecks = ReturnType<typeof resourceChecks>;
84
+ /**
85
+ * What a product adds to the writes a grant admits (app/appAccess.ts: an
86
+ * App's validation, transitions, stamps, fixed actions and what a line
87
+ * consumes). Each runs once the grant's own checks have passed, and writes
88
+ * through the transaction the checks were given; left out, the write is that
89
+ * transaction's own.
90
+ */
91
+ export interface WriteRules<G extends ColumnGrant> {
92
+ /** This call's grant, kept stable across its awaits: `captureGrant`, with the product's own rules copied beside it. */
93
+ capture(grant: G): G;
94
+ /** A lock on a table the grant does not write, which the reader may still update some other way. */
95
+ locksUnwritable?(table: string, grant: G): boolean;
96
+ insert?(request: InsertRequest, grant: G, server: boolean): ReturnType<WriteTransaction['insert']>;
97
+ /** An update to a table outside `writable`: what answers it instead of the grant's refusal, or undefined. */
98
+ unwritable?(request: UpdateRequest, grant: G): ReturnType<WriteTransaction['update']> | undefined;
99
+ update?(request: UpdateRequest, grant: G): ReturnType<WriteTransaction['update']>;
100
+ remove?(request: DeleteRequest, grant: G): ReturnType<WriteTransaction['remove']>;
101
+ }
102
+ /** Apply the same graph-aware checks to an already-owned transaction handle. */
103
+ export declare function authorizeColumnWrites<G extends ColumnGrant>(full: DatabaseSchema, grant: G, writer: WriteTransaction, rules?: (checks: ResourceChecks) => WriteRules<G>): WriteTransaction;