@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,36 @@
1
+ /** A language tag as Intl writes it (`es-mx` → `es-MX`); undefined for anything Intl does not take as one. */
2
+ export declare function canonicalLocale(value: unknown): string | undefined;
3
+ /** The resource and column `ui.locale: { column }` names, where it names one. */
4
+ export declare function localeColumn(ui: {
5
+ localeColumn?: string;
6
+ } | undefined): {
7
+ resource: string;
8
+ column: string;
9
+ } | undefined;
10
+ /**
11
+ * The cookie a reader's own pick of an App's language is kept in (the
12
+ * language picker, client messages.ts), read as their preference where the
13
+ * App names no column of their row to keep it in (server readerLocale.ts).
14
+ * One per App, so two Apps on one server keep two choices.
15
+ */
16
+ export declare const localeCookieName: (appId: string) => string;
17
+ /**
18
+ * The tag an `Accept-Language` header asks for among `available` (the locales
19
+ * an App has a catalog for), by BCP 47 lookup: each range in the header's
20
+ * order of preference, `es-MX` then `es`; undefined where none is offered.
21
+ */
22
+ export declare function negotiateLocale(header: string | undefined, available: readonly string[]): string | undefined;
23
+ /**
24
+ * The one resolution, nearest first: the person's own (`ui.locale: { column }`,
25
+ * read under their grants, else what they picked in this browser), the tenant's (`branding.allow: 'locale'`), then —
26
+ * for nobody known, on a public page or the sign-in screen — what the browser
27
+ * asks for among the App's catalogs, then the App's own (`ui.locale`). Undefined
28
+ * where nothing names one: the reader's browser then decides the figures.
29
+ */
30
+ export declare function resolveLocale(sources: {
31
+ person?: string | undefined;
32
+ tenant?: string | undefined;
33
+ /** The `Accept-Language` negotiation, asked only for a reader nobody knows. */
34
+ browser?: string | undefined;
35
+ app?: string | undefined;
36
+ }): string | undefined;
@@ -0,0 +1,86 @@
1
+ /**
2
+ * The reader's locale, one resolution for the whole server (`resolveLocale`):
3
+ * the words an App's captions are said in and the figures Intl writes. Apart
4
+ * from appUi.ts for the reason appZone.ts is: what a command host or the
5
+ * notify path needs must not load every look and theme module into `--mcp`
6
+ * (test/cli-startup.test.ts). The engine's: the client's language picker
7
+ * keeps its choice in the cookie named here, in the database browser as in
8
+ * an App.
9
+ */
10
+ const canonicalTags = new Map();
11
+ /** A language tag as Intl writes it (`es-mx` → `es-MX`); undefined for anything Intl does not take as one. */
12
+ export function canonicalLocale(value) {
13
+ if (typeof value !== 'string' || !value.trim() || value.length > 35)
14
+ return undefined;
15
+ /* Asked on every payload of the same few tags; bounded, as a tag can be a person's own. */
16
+ if (canonicalTags.has(value))
17
+ return canonicalTags.get(value);
18
+ if (canonicalTags.size >= 64)
19
+ canonicalTags.clear();
20
+ let tag;
21
+ try {
22
+ [tag] = Intl.getCanonicalLocales(value.trim());
23
+ }
24
+ catch {
25
+ tag = undefined;
26
+ }
27
+ canonicalTags.set(value, tag);
28
+ return tag;
29
+ }
30
+ /** The resource and column `ui.locale: { column }` names, where it names one. */
31
+ export function localeColumn(ui) {
32
+ if (!ui?.localeColumn)
33
+ return undefined;
34
+ const [resource, column] = ui.localeColumn.split('.');
35
+ return { resource, column };
36
+ }
37
+ /**
38
+ * The cookie a reader's own pick of an App's language is kept in (the
39
+ * language picker, client messages.ts), read as their preference where the
40
+ * App names no column of their row to keep it in (server readerLocale.ts).
41
+ * One per App, so two Apps on one server keep two choices.
42
+ */
43
+ export const localeCookieName = (appId) => `mistri-locale-${encodeURIComponent(appId)}`;
44
+ /**
45
+ * The tag an `Accept-Language` header asks for among `available` (the locales
46
+ * an App has a catalog for), by BCP 47 lookup: each range in the header's
47
+ * order of preference, `es-MX` then `es`; undefined where none is offered.
48
+ */
49
+ export function negotiateLocale(header, available) {
50
+ if (!header || !available.length)
51
+ return undefined;
52
+ const offered = new Map(available.map((tag) => [tag.toLowerCase(), tag]));
53
+ const ranges = header
54
+ .split(',')
55
+ .slice(0, 16)
56
+ .map((part, index) => {
57
+ const [range, ...params] = part.trim().split(';');
58
+ const q = params.map((param) => /^\s*q=([0-9.]+)\s*$/.exec(param)?.[1]).find(Boolean);
59
+ return { range: range.trim(), q: q === undefined ? 1 : Number(q), index };
60
+ })
61
+ .filter(({ range, q }) => range && range !== '*' && q > 0 && Number.isFinite(q))
62
+ .sort((a, b) => b.q - a.q || a.index - b.index);
63
+ for (const { range } of ranges) {
64
+ const tag = canonicalLocale(range);
65
+ if (!tag)
66
+ continue;
67
+ /* The tag the header names is kept where its words are offered, so `es-MX` writes Mexico's figures in Spanish words. */
68
+ const parts = tag.split('-');
69
+ for (let n = parts.length; n > 0; n--) {
70
+ const hit = offered.get(parts.slice(0, n).join('-').toLowerCase());
71
+ if (hit)
72
+ return n === parts.length ? hit : tag;
73
+ }
74
+ }
75
+ return undefined;
76
+ }
77
+ /**
78
+ * The one resolution, nearest first: the person's own (`ui.locale: { column }`,
79
+ * read under their grants, else what they picked in this browser), the tenant's (`branding.allow: 'locale'`), then —
80
+ * for nobody known, on a public page or the sign-in screen — what the browser
81
+ * asks for among the App's catalogs, then the App's own (`ui.locale`). Undefined
82
+ * where nothing names one: the reader's browser then decides the figures.
83
+ */
84
+ export function resolveLocale(sources) {
85
+ return (canonicalLocale(sources.person) ?? canonicalLocale(sources.tenant) ?? canonicalLocale(sources.browser) ?? canonicalLocale(sources.app));
86
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * A message of an App's catalog, named where a caption goes: `msg('lead.title')`,
3
+ * `msg('lead.due', { days: 'due_in' })`. The catalogs (`messages/<locale>.ts`)
4
+ * are read and said on the server (server/app/appMessages.ts): every caption is
5
+ * a plain string by the time a parser or a browser sees it, in the reader's
6
+ * language. What is shared is only the shape, so the loader, the check and a
7
+ * notify rule agree on what a reference is.
8
+ */
9
+ export interface AppMessageRef {
10
+ readonly message: string;
11
+ /** ICU argument → the column path it reads (`{ title: 'thread_id.title' }`). */
12
+ readonly args?: Readonly<Record<string, string>>;
13
+ }
14
+ /**
15
+ * The keys whose text a reader reads: a caption, wherever the definition holds
16
+ * one. Every one takes `msg()` (packages/mistri/schema/app.d.ts, held by test/app-messages.test.ts),
17
+ * said by the loader however deep it sits, and `mistri messages extract`
18
+ * lists those still written as literal text. `text` is a caption except where
19
+ * it names a column: `ui.messages`' `fields`, a composer's `templates`.
20
+ */
21
+ export declare const CAPTION_KEYS: ReadonlySet<string>;
22
+ /** Whether the value under `key`, in an object found under `parent`, is a caption. */
23
+ export declare const isCaptionKey: (key: string, parent: string | number | undefined) => boolean;
24
+ /** A shape as it is served: each `msg()` it may hold said by the loader, so a caption is a string. */
25
+ export type SaidCaptions<T> = T extends AppMessageRef ? string : T extends readonly (infer Item)[] ? readonly SaidCaptions<Item>[] : T extends object ? {
26
+ [K in keyof T]: SaidCaptions<T[K]>;
27
+ } : T;
28
+ /** A message's key: dotted words, `lead.title`, `people.payRate`. */
29
+ export declare const MESSAGE_KEY: RegExp;
30
+ /** The arguments the framework supplies itself: a count, a flow notify step's words, a transition's state. */
31
+ export declare const FRAMEWORK_ARGS: readonly ['count', 'message', 'to'];
32
+ /**
33
+ * Whether a value is what `msg()` made: `{ message }` with a key, and `args`
34
+ * of names bound to paths. Nothing else in a definition has that shape — a
35
+ * text rule's or a form's `message` is a sentence, which is never a dotted key
36
+ * alone in its object.
37
+ */
38
+ export declare function isMessageRef(raw: unknown): raw is AppMessageRef;
39
+ /**
40
+ * A caption as a parser reads it: text, trimmed. The loader has said every
41
+ * `msg()` by now (localizeDefinition); one that reaches a parser was given to
42
+ * it directly, with no catalog to say it from.
43
+ */
44
+ export declare function parseCaption(raw: unknown, at: string): string;
@@ -0,0 +1,78 @@
1
+ /**
2
+ * The keys whose text a reader reads: a caption, wherever the definition holds
3
+ * one. Every one takes `msg()` (packages/mistri/schema/app.d.ts, held by test/app-messages.test.ts),
4
+ * said by the loader however deep it sits, and `mistri messages extract`
5
+ * lists those still written as literal text. `text` is a caption except where
6
+ * it names a column: `ui.messages`' `fields`, a composer's `templates`.
7
+ */
8
+ export const CAPTION_KEYS = new Set([
9
+ 'label',
10
+ 'title',
11
+ 'tab',
12
+ 'description',
13
+ 'heading',
14
+ 'tagline',
15
+ 'subtitle',
16
+ 'placeholder',
17
+ 'empty',
18
+ 'hint',
19
+ 'help',
20
+ 'submitLabel',
21
+ 'lead',
22
+ 'next',
23
+ 'skip',
24
+ 'question',
25
+ 'answer',
26
+ 'text',
27
+ 'noun',
28
+ 'unit',
29
+ 'total',
30
+ 'eyebrow',
31
+ 'alt',
32
+ 'message',
33
+ 'note',
34
+ 'before',
35
+ 'after',
36
+ ]);
37
+ /** Whether the value under `key`, in an object found under `parent`, is a caption. */
38
+ export const isCaptionKey = (key, parent) => CAPTION_KEYS.has(key) && !(key === 'text' && (parent === 'fields' || parent === 'templates'));
39
+ /** A message's key: dotted words, `lead.title`, `people.payRate`. */
40
+ export const MESSAGE_KEY = /^[A-Za-z][A-Za-z0-9_-]*(?:\.[A-Za-z][A-Za-z0-9_-]*)+$/;
41
+ /** An ICU argument's name: no dot, so a path is bound explicitly. */
42
+ const MESSAGE_ARG = /^[A-Za-z_][A-Za-z0-9_]*$/;
43
+ const MESSAGE_PATH = /^[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*$/;
44
+ /** The arguments the framework supplies itself: a count, a flow notify step's words, a transition's state. */
45
+ export const FRAMEWORK_ARGS = ['count', 'message', 'to'];
46
+ const plain = (value) => Boolean(value) &&
47
+ typeof value === 'object' &&
48
+ !Array.isArray(value) &&
49
+ [Object.prototype, null].includes(Object.getPrototypeOf(value));
50
+ /**
51
+ * Whether a value is what `msg()` made: `{ message }` with a key, and `args`
52
+ * of names bound to paths. Nothing else in a definition has that shape — a
53
+ * text rule's or a form's `message` is a sentence, which is never a dotted key
54
+ * alone in its object.
55
+ */
56
+ export function isMessageRef(raw) {
57
+ if (!plain(raw) || typeof raw.message !== 'string' || !MESSAGE_KEY.test(raw.message))
58
+ return false;
59
+ const keys = Object.keys(raw);
60
+ if (keys.some((key) => key !== 'message' && key !== 'args'))
61
+ return false;
62
+ if (raw.args === undefined)
63
+ return true;
64
+ return (plain(raw.args) &&
65
+ Object.entries(raw.args).every(([name, path]) => MESSAGE_ARG.test(name) && typeof path === 'string' && MESSAGE_PATH.test(path)));
66
+ }
67
+ /**
68
+ * A caption as a parser reads it: text, trimmed. The loader has said every
69
+ * `msg()` by now (localizeDefinition); one that reaches a parser was given to
70
+ * it directly, with no catalog to say it from.
71
+ */
72
+ export function parseCaption(raw, at) {
73
+ if (isMessageRef(raw))
74
+ throw new Error(`[message-missing] ${at}: msg('${raw.message}') is said from the App's messages/ catalogs, which only a loaded App has.`);
75
+ if (typeof raw !== 'string' || !raw.trim())
76
+ throw new Error(`Invalid caption at ${at}: it must be non-empty text.`);
77
+ return raw.trim();
78
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * What a record is called: the resource's `noun` (appModel.ts), said the way
3
+ * each place needs it — New mid-sentence ("New issue"), a split's detail and
4
+ * a page as a heading ("Issue"), a list that names nothing as several
5
+ * ("Issues"). One rule, read by the parsers and the client alike, so a word an
6
+ * author wrote once is never guessed back out of a label.
7
+ */
8
+ import { type AppNoun } from './model.js';
9
+ /** The regular plural of a noun an author wrote: "issue" → "issues", "category" → "categories",
10
+ "address" → "addresses". One no rule makes is written out as `{ one, many }`. */
11
+ export declare function pluralOf(one: string): string;
12
+ /** A noun where a heading starts with it: "issue" → "Issue"; "API key" stays. */
13
+ export declare const headingOf: (noun: string) => string;
14
+ /**
15
+ * One record's word, mid-sentence: the resource's `noun`, else its table's
16
+ * name as a person says it ("work_order" → "work order"). Never a list's
17
+ * label, which may name a layout ("Task calendar") or a workspace ("Inbox"),
18
+ * and never singularised by rule: a table named in the plural keeps its name
19
+ * until the resource says its noun.
20
+ */
21
+ export declare function recordNoun(noun: AppNoun | undefined, tableName: string): string;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * What a record is called: the resource's `noun` (appModel.ts), said the way
3
+ * each place needs it — New mid-sentence ("New issue"), a split's detail and
4
+ * a page as a heading ("Issue"), a list that names nothing as several
5
+ * ("Issues"). One rule, read by the parsers and the client alike, so a word an
6
+ * author wrote once is never guessed back out of a label.
7
+ */
8
+ import { humanName } from './model.js';
9
+ /** The regular plural of a noun an author wrote: "issue" → "issues", "category" → "categories",
10
+ "address" → "addresses". One no rule makes is written out as `{ one, many }`. */
11
+ export function pluralOf(one) {
12
+ if (/[^aeiou]y$/i.test(one))
13
+ return `${one.slice(0, -1)}ies`;
14
+ if (/(s|x|z|ch|sh)$/i.test(one))
15
+ return `${one}es`;
16
+ return `${one}s`;
17
+ }
18
+ /** A noun where a heading starts with it: "issue" → "Issue"; "API key" stays. */
19
+ export const headingOf = (noun) => noun.charAt(0).toUpperCase() + noun.slice(1);
20
+ /**
21
+ * One record's word, mid-sentence: the resource's `noun`, else its table's
22
+ * name as a person says it ("work_order" → "work order"). Never a list's
23
+ * label, which may name a layout ("Task calendar") or a workspace ("Inbox"),
24
+ * and never singularised by rule: a table named in the plural keeps its name
25
+ * until the resource says its noun.
26
+ */
27
+ export function recordNoun(noun, tableName) {
28
+ if (noun)
29
+ return noun.one;
30
+ const said = humanName(tableName) || tableName;
31
+ return /^[A-Z][a-z]/.test(said) ? said.charAt(0).toLowerCase() + said.slice(1) : said;
32
+ }
@@ -0,0 +1,98 @@
1
+ export type AutoUnit = 'day' | 'week' | 'month' | 'quarter';
2
+ /** The key of a `by` written `auto <column>`, wherever it stands in the list: its place and its column. */
3
+ export declare function autoKeyOf(by: string | undefined): {
4
+ index: number;
5
+ column: string;
6
+ } | null;
7
+ /** The `by` with its `auto` key written as the unit the chart chose, which is the word the grammar reads. */
8
+ export declare function withUnit(by: string, unit: AutoUnit): string;
9
+ /**
10
+ * The days a section's query asks about on its `over` column — `created_at = last 90 days`, `this month` — or null
11
+ * where it sets no window the date grammar can bound (the data's own extent is then the span).
12
+ */
13
+ export declare function spanDaysOf(query: string | undefined, over: string | undefined, now: Date): number | null;
14
+ /** The phrase a query windows its `over` column by — `last 90 days` in `due_on = last 90 days` — or null. */
15
+ export declare function windowPhraseOf(query: string | undefined, over: string | undefined): string | null;
16
+ /** The days between two dates the data holds, both ends counted. Null where either is not a date. */
17
+ export declare function spanDaysBetween(min: unknown, max: unknown): number | null;
18
+ /** The unit a span of this many days is drawn in, before the data is looked at. */
19
+ export declare function unitForSpan(days: number): AutoUnit;
20
+ /**
21
+ * The unit the read asks the server for. Where the measure adds up again, a day or a week is read as days and
22
+ * bucketed here: a week crosses a month's edge, so weeks read from the server could not be coarsened into months
23
+ * without handing a whole week to one of them. Months and quarters nest, so those are read as they are drawn.
24
+ */
25
+ export declare function readUnit(base: AutoUnit, addsUp: boolean): AutoUnit;
26
+ /** The label of the period a day, month or quarter label falls in, spelled as the server spells it. */
27
+ export declare function bucketKey(key: string, unit: AutoUnit, weekStart?: number): string;
28
+ /**
29
+ * A trend's points over its window: the periods that held no rows put back as zero, from the window's first period
30
+ * to today's, and the read periods added up into the unit the span is drawn in. A count of nothing is 0, and a line
31
+ * drawn through only the days that had rows said a quiet week was a steady one; three busy days of a week drew no
32
+ * line at all. Only a count or a sum adds up so: any other measure's points are drawn as read, and labels the read
33
+ * unit does not spell are left as they came.
34
+ */
35
+ export declare function trendPoints<R extends {
36
+ key: unknown;
37
+ value: unknown;
38
+ }>(rows: readonly R[], read: AutoUnit, unit: AutoUnit, measure: string | undefined, window: {
39
+ start: Date;
40
+ end: Date;
41
+ } | undefined, now: Date): Array<{
42
+ key: unknown;
43
+ value: unknown;
44
+ }>;
45
+ /**
46
+ * The unit a chart is drawn in: the span's, stepped up while the data is sparse in it.
47
+ *
48
+ * `keys` are the labels of the buckets that hold data, as read (days, or months or quarters, per `readUnit`).
49
+ * `addsUp` is whether the measure can be re-aggregated; without it the span alone decides.
50
+ */
51
+ export declare function chooseUnit({ spanDays, base: given, keys, addsUp, weekStart, }: {
52
+ /** The span in days; or the `base` already chosen for it, where the caller has kept one. */
53
+ spanDays?: number;
54
+ base?: AutoUnit;
55
+ keys: readonly string[];
56
+ addsUp: boolean;
57
+ weekStart?: number;
58
+ }): {
59
+ base: AutoUnit;
60
+ unit: AutoUnit;
61
+ };
62
+ type Combine = 'add' | 'min' | 'max';
63
+ export interface MeasurePlan {
64
+ /** What to read per bucket, in the grammar's words: each aggregate the measure is made of, once. */
65
+ reads: string[];
66
+ /** How the same aggregate of two buckets becomes one of their union. */
67
+ combine: Combine[];
68
+ /** The measure's value from its aggregates, null where it has none (a ratio over nothing). */
69
+ value(terms: readonly (number | null)[]): number | null;
70
+ }
71
+ /**
72
+ * A measure as the aggregates it is made of, or null where it cannot be added up again: a median, a distinct
73
+ * count, a `when` count, or words this does not read. `avg x` is `sum x` over `count x`, which can.
74
+ */
75
+ export declare function planMeasure(measure: string | undefined): MeasurePlan | null;
76
+ /** One bucket as read: its label, the second key's value where the chart has one, and one number per aggregate the plan reads. */
77
+ interface ReadBucket {
78
+ key: string;
79
+ series?: string;
80
+ terms: readonly (number | null)[];
81
+ }
82
+ /** The read buckets cut into the chosen unit, each aggregate added up (or min'd, or max'd) across the ones it takes in. */
83
+ export declare function coarsen(buckets: readonly ReadBucket[], plan: MeasurePlan, unit: AutoUnit, weekStart?: number): Array<{
84
+ key: string;
85
+ series?: string;
86
+ value: number;
87
+ }>;
88
+ /** The most days a window may span before a fixed `day` chart over it is worth a word. */
89
+ export declare const DAY_BARS_ADVISED = 90;
90
+ /**
91
+ * The days a dashboard window phrase covers, as it would be said ("last 12 months" is 365): the nominal length of a
92
+ * `last N unit`, else the dates the phrase resolves to, or null where it is not one the date grammar bounds. (A
93
+ * resolved `last N` runs to tomorrow, a day more than it is called, which a count of bars should not repeat.)
94
+ */
95
+ export declare function windowDays(phrase: string, now: Date): number | null;
96
+ /** Whether a chart's `by` cuts days: `day created_at`, in any position. */
97
+ export declare const cutsDays: (by: string | undefined) => boolean;
98
+ export {};