@graview/core 0.1.29 → 0.1.32

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 (404) hide show
  1. package/README.md +11 -1
  2. package/dist/app-places.d.ts +2 -2
  3. package/dist/app-places.d.ts.map +1 -1
  4. package/dist/app-places.js +53 -3
  5. package/dist/app-places.js.map +1 -1
  6. package/dist/app.d.ts +24 -0
  7. package/dist/app.d.ts.map +1 -1
  8. package/dist/app.js.map +1 -1
  9. package/dist/arrange.d.ts +3 -1
  10. package/dist/arrange.d.ts.map +1 -1
  11. package/dist/arrange.js +3 -1
  12. package/dist/arrange.js.map +1 -1
  13. package/dist/arrangement.d.ts +18 -0
  14. package/dist/arrangement.d.ts.map +1 -1
  15. package/dist/arrangement.js +34 -0
  16. package/dist/arrangement.js.map +1 -1
  17. package/dist/arranging.d.ts.map +1 -1
  18. package/dist/arranging.js +17 -6
  19. package/dist/arranging.js.map +1 -1
  20. package/dist/blocks.d.ts +1 -1
  21. package/dist/blocks.d.ts.map +1 -1
  22. package/dist/catalog.d.ts +312 -0
  23. package/dist/catalog.d.ts.map +1 -0
  24. package/dist/catalog.js +459 -0
  25. package/dist/catalog.js.map +1 -0
  26. package/dist/cli/check/brand.d.ts.map +1 -1
  27. package/dist/cli/check/brand.js +29 -1
  28. package/dist/cli/check/brand.js.map +1 -1
  29. package/dist/cli/check/lenses.d.ts.map +1 -1
  30. package/dist/cli/check/lenses.js +6 -1
  31. package/dist/cli/check/lenses.js.map +1 -1
  32. package/dist/cli/check/relations.d.ts +23 -0
  33. package/dist/cli/check/relations.d.ts.map +1 -1
  34. package/dist/cli/check/relations.js +53 -3
  35. package/dist/cli/check/relations.js.map +1 -1
  36. package/dist/cli/create.d.ts.map +1 -1
  37. package/dist/cli/create.js +32 -0
  38. package/dist/cli/create.js.map +1 -1
  39. package/dist/cli/describe.d.ts.map +1 -1
  40. package/dist/cli/describe.js +27 -4
  41. package/dist/cli/describe.js.map +1 -1
  42. package/dist/cli/doctor.d.ts +18 -1
  43. package/dist/cli/doctor.d.ts.map +1 -1
  44. package/dist/cli/doctor.js +58 -5
  45. package/dist/cli/doctor.js.map +1 -1
  46. package/dist/cli/document-schema.d.ts +2 -0
  47. package/dist/cli/document-schema.d.ts.map +1 -1
  48. package/dist/cli/document-schema.js +163 -5
  49. package/dist/cli/document-schema.js.map +1 -1
  50. package/dist/cli/index.d.ts +1 -1
  51. package/dist/cli/index.d.ts.map +1 -1
  52. package/dist/cli/types.d.ts.map +1 -1
  53. package/dist/cli/types.js +6 -1
  54. package/dist/cli/types.js.map +1 -1
  55. package/dist/conformance/fixtures.d.ts.map +1 -1
  56. package/dist/conformance/fixtures.js +165 -0
  57. package/dist/conformance/fixtures.js.map +1 -1
  58. package/dist/coverage-words.d.ts +18 -0
  59. package/dist/coverage-words.d.ts.map +1 -0
  60. package/dist/coverage-words.js +18 -0
  61. package/dist/coverage-words.js.map +1 -0
  62. package/dist/days.d.ts +7 -1
  63. package/dist/days.d.ts.map +1 -1
  64. package/dist/days.js +10 -4
  65. package/dist/days.js.map +1 -1
  66. package/dist/document/act-findings.d.ts.map +1 -1
  67. package/dist/document/act-findings.js +21 -3
  68. package/dist/document/act-findings.js.map +1 -1
  69. package/dist/document/blocks.d.ts +20 -7
  70. package/dist/document/blocks.d.ts.map +1 -1
  71. package/dist/document/blocks.js +85 -15
  72. package/dist/document/blocks.js.map +1 -1
  73. package/dist/document/brand-check.d.ts +5 -0
  74. package/dist/document/brand-check.d.ts.map +1 -1
  75. package/dist/document/brand-check.js +16 -2
  76. package/dist/document/brand-check.js.map +1 -1
  77. package/dist/document/compile-checked.d.ts.map +1 -1
  78. package/dist/document/compile-checked.js +12 -4
  79. package/dist/document/compile-checked.js.map +1 -1
  80. package/dist/document/compile.d.ts +0 -2
  81. package/dist/document/compile.d.ts.map +1 -1
  82. package/dist/document/compile.js +19 -17
  83. package/dist/document/compile.js.map +1 -1
  84. package/dist/document/compiled.d.ts +2 -0
  85. package/dist/document/compiled.d.ts.map +1 -1
  86. package/dist/document/compiled.js +51 -12
  87. package/dist/document/compiled.js.map +1 -1
  88. package/dist/document/computed-values.d.ts +3 -0
  89. package/dist/document/computed-values.d.ts.map +1 -1
  90. package/dist/document/computed-values.js +12 -2
  91. package/dist/document/computed-values.js.map +1 -1
  92. package/dist/document/connection-findings.d.ts +6 -0
  93. package/dist/document/connection-findings.d.ts.map +1 -0
  94. package/dist/document/connection-findings.js +110 -0
  95. package/dist/document/connection-findings.js.map +1 -0
  96. package/dist/document/connection-spec.d.ts +38 -0
  97. package/dist/document/connection-spec.d.ts.map +1 -0
  98. package/dist/document/connection-spec.js +43 -0
  99. package/dist/document/connection-spec.js.map +1 -0
  100. package/dist/document/describe-coverage.d.ts +3 -0
  101. package/dist/document/describe-coverage.d.ts.map +1 -1
  102. package/dist/document/describe-coverage.js +12 -5
  103. package/dist/document/describe-coverage.js.map +1 -1
  104. package/dist/document/describe-place.d.ts.map +1 -1
  105. package/dist/document/describe-place.js +3 -1
  106. package/dist/document/describe-place.js.map +1 -1
  107. package/dist/document/diff.d.ts.map +1 -1
  108. package/dist/document/diff.js +39 -8
  109. package/dist/document/diff.js.map +1 -1
  110. package/dist/document/edit.d.ts +1 -1
  111. package/dist/document/edit.d.ts.map +1 -1
  112. package/dist/document/edit.js +251 -15
  113. package/dist/document/edit.js.map +1 -1
  114. package/dist/document/expr/evaluate.d.ts +25 -0
  115. package/dist/document/expr/evaluate.d.ts.map +1 -1
  116. package/dist/document/expr/evaluate.js +38 -0
  117. package/dist/document/expr/evaluate.js.map +1 -1
  118. package/dist/document/format-words.d.ts +1 -1
  119. package/dist/document/format-words.d.ts.map +1 -1
  120. package/dist/document/format-words.js +3 -1
  121. package/dist/document/format-words.js.map +1 -1
  122. package/dist/document/framework-path.d.ts +11 -0
  123. package/dist/document/framework-path.d.ts.map +1 -0
  124. package/dist/document/framework-path.js +122 -0
  125. package/dist/document/framework-path.js.map +1 -0
  126. package/dist/document/index.d.ts +2 -2
  127. package/dist/document/index.d.ts.map +1 -1
  128. package/dist/document/index.js +1 -1
  129. package/dist/document/index.js.map +1 -1
  130. package/dist/document/linked-findings.d.ts +5 -0
  131. package/dist/document/linked-findings.d.ts.map +1 -0
  132. package/dist/document/linked-findings.js +100 -0
  133. package/dist/document/linked-findings.js.map +1 -0
  134. package/dist/document/migrate.d.ts.map +1 -1
  135. package/dist/document/migrate.js +4 -1
  136. package/dist/document/migrate.js.map +1 -1
  137. package/dist/document/policy-words.d.ts +2 -0
  138. package/dist/document/policy-words.d.ts.map +1 -1
  139. package/dist/document/policy-words.js +16 -1
  140. package/dist/document/policy-words.js.map +1 -1
  141. package/dist/document/right-names.d.ts +10 -0
  142. package/dist/document/right-names.d.ts.map +1 -0
  143. package/dist/document/right-names.js +57 -0
  144. package/dist/document/right-names.js.map +1 -0
  145. package/dist/document/rules.d.ts.map +1 -1
  146. package/dist/document/rules.js +13 -5
  147. package/dist/document/rules.js.map +1 -1
  148. package/dist/document/schema.d.ts +86 -8
  149. package/dist/document/schema.d.ts.map +1 -1
  150. package/dist/document/schema.js +64 -7
  151. package/dist/document/schema.js.map +1 -1
  152. package/dist/document/template-parse.d.ts.map +1 -1
  153. package/dist/document/template-parse.js +36 -3
  154. package/dist/document/template-parse.js.map +1 -1
  155. package/dist/document/template.d.ts +13 -1
  156. package/dist/document/template.d.ts.map +1 -1
  157. package/dist/document/template.js +29 -9
  158. package/dist/document/template.js.map +1 -1
  159. package/dist/document/to-document.d.ts.map +1 -1
  160. package/dist/document/to-document.js +12 -0
  161. package/dist/document/to-document.js.map +1 -1
  162. package/dist/document/views.d.ts +36 -4
  163. package/dist/document/views.d.ts.map +1 -1
  164. package/dist/document/views.js +64 -21
  165. package/dist/document/views.js.map +1 -1
  166. package/dist/document.schema.json +1184 -51
  167. package/dist/field-sight.js +2 -2
  168. package/dist/field-sight.js.map +1 -1
  169. package/dist/forms.d.ts +1 -0
  170. package/dist/forms.d.ts.map +1 -1
  171. package/dist/forms.js +2 -0
  172. package/dist/forms.js.map +1 -1
  173. package/dist/graph/archived.d.ts +9 -0
  174. package/dist/graph/archived.d.ts.map +1 -1
  175. package/dist/graph/archived.js +9 -0
  176. package/dist/graph/archived.js.map +1 -1
  177. package/dist/graph/diff.d.ts +16 -0
  178. package/dist/graph/diff.d.ts.map +1 -1
  179. package/dist/graph/diff.js +18 -0
  180. package/dist/graph/diff.js.map +1 -1
  181. package/dist/graph/graph.d.ts.map +1 -1
  182. package/dist/graph/graph.js +5 -8
  183. package/dist/graph/graph.js.map +1 -1
  184. package/dist/grid-sort.d.ts +20 -0
  185. package/dist/grid-sort.d.ts.map +1 -0
  186. package/dist/grid-sort.js +58 -0
  187. package/dist/grid-sort.js.map +1 -0
  188. package/dist/history.d.ts +88 -0
  189. package/dist/history.d.ts.map +1 -0
  190. package/dist/history.js +146 -0
  191. package/dist/history.js.map +1 -0
  192. package/dist/index.d.ts +18 -6
  193. package/dist/index.d.ts.map +1 -1
  194. package/dist/index.js +14 -3
  195. package/dist/index.js.map +1 -1
  196. package/dist/installation.d.ts +1 -1
  197. package/dist/kind-list.d.ts +78 -0
  198. package/dist/kind-list.d.ts.map +1 -0
  199. package/dist/kind-list.js +176 -0
  200. package/dist/kind-list.js.map +1 -0
  201. package/dist/linked.d.ts +95 -0
  202. package/dist/linked.d.ts.map +1 -0
  203. package/dist/linked.js +181 -0
  204. package/dist/linked.js.map +1 -0
  205. package/dist/mutations/arg-shape.d.ts +2 -0
  206. package/dist/mutations/arg-shape.d.ts.map +1 -1
  207. package/dist/mutations/arg-shape.js +4 -0
  208. package/dist/mutations/arg-shape.js.map +1 -1
  209. package/dist/mutations/derive-edits.d.ts.map +1 -1
  210. package/dist/mutations/derive-edits.js +89 -38
  211. package/dist/mutations/derive-edits.js.map +1 -1
  212. package/dist/mutations/derived-names.d.ts +3 -1
  213. package/dist/mutations/derived-names.d.ts.map +1 -1
  214. package/dist/mutations/derived-names.js +5 -3
  215. package/dist/mutations/derived-names.js.map +1 -1
  216. package/dist/mutations/edit-start.d.ts +28 -0
  217. package/dist/mutations/edit-start.d.ts.map +1 -0
  218. package/dist/mutations/edit-start.js +24 -0
  219. package/dist/mutations/edit-start.js.map +1 -0
  220. package/dist/mutations/form.d.ts +14 -0
  221. package/dist/mutations/form.d.ts.map +1 -1
  222. package/dist/mutations/form.js +5 -1
  223. package/dist/mutations/form.js.map +1 -1
  224. package/dist/mutations/kept-arguments.js +2 -2
  225. package/dist/mutations/kept-arguments.js.map +1 -1
  226. package/dist/mutations/types.d.ts +1 -1
  227. package/dist/mutations/types.d.ts.map +1 -1
  228. package/dist/navigate.d.ts +13 -0
  229. package/dist/navigate.d.ts.map +1 -0
  230. package/dist/navigate.js +13 -0
  231. package/dist/navigate.js.map +1 -0
  232. package/dist/ops/digest.d.ts +33 -0
  233. package/dist/ops/digest.d.ts.map +1 -0
  234. package/dist/ops/digest.js +47 -0
  235. package/dist/ops/digest.js.map +1 -0
  236. package/dist/ops/lineage.d.ts +13 -0
  237. package/dist/ops/lineage.d.ts.map +1 -1
  238. package/dist/ops/lineage.js +6 -4
  239. package/dist/ops/lineage.js.map +1 -1
  240. package/dist/ops/log.d.ts +6 -0
  241. package/dist/ops/log.d.ts.map +1 -1
  242. package/dist/ops/log.js +19 -12
  243. package/dist/ops/log.js.map +1 -1
  244. package/dist/ops/suggestions.d.ts +26 -0
  245. package/dist/ops/suggestions.d.ts.map +1 -0
  246. package/dist/ops/suggestions.js +21 -0
  247. package/dist/ops/suggestions.js.map +1 -0
  248. package/dist/ops/tidying.d.ts +48 -0
  249. package/dist/ops/tidying.d.ts.map +1 -0
  250. package/dist/ops/tidying.js +84 -0
  251. package/dist/ops/tidying.js.map +1 -0
  252. package/dist/ops/types.d.ts +17 -0
  253. package/dist/ops/types.d.ts.map +1 -1
  254. package/dist/ops/undo.d.ts.map +1 -1
  255. package/dist/ops/undo.js +10 -0
  256. package/dist/ops/undo.js.map +1 -1
  257. package/dist/past.d.ts +35 -0
  258. package/dist/past.d.ts.map +1 -0
  259. package/dist/past.js +173 -0
  260. package/dist/past.js.map +1 -0
  261. package/dist/permissions/policy.d.ts +8 -1
  262. package/dist/permissions/policy.d.ts.map +1 -1
  263. package/dist/permissions/policy.js +20 -5
  264. package/dist/permissions/policy.js.map +1 -1
  265. package/dist/places.d.ts +6 -2
  266. package/dist/places.d.ts.map +1 -1
  267. package/dist/places.js +48 -3
  268. package/dist/places.js.map +1 -1
  269. package/dist/scaffold/agents.d.ts.map +1 -1
  270. package/dist/scaffold/agents.js +13 -0
  271. package/dist/scaffold/agents.js.map +1 -1
  272. package/dist/scaffold/project.d.ts.map +1 -1
  273. package/dist/scaffold/project.js +8 -0
  274. package/dist/scaffold/project.js.map +1 -1
  275. package/dist/scaffold/ui.d.ts.map +1 -1
  276. package/dist/scaffold/ui.js +18 -5
  277. package/dist/scaffold/ui.js.map +1 -1
  278. package/dist/schema/app-address.d.ts +5 -0
  279. package/dist/schema/app-address.d.ts.map +1 -0
  280. package/dist/schema/app-address.js +10 -0
  281. package/dist/schema/app-address.js.map +1 -0
  282. package/dist/schema/app-link.d.ts +1 -4
  283. package/dist/schema/app-link.d.ts.map +1 -1
  284. package/dist/schema/app-link.js +5 -7
  285. package/dist/schema/app-link.js.map +1 -1
  286. package/dist/schema/define-node.d.ts +16 -0
  287. package/dist/schema/define-node.d.ts.map +1 -1
  288. package/dist/schema/define-node.js +6 -0
  289. package/dist/schema/define-node.js.map +1 -1
  290. package/dist/schema/files.d.ts +8 -0
  291. package/dist/schema/files.d.ts.map +1 -1
  292. package/dist/schema/files.js.map +1 -1
  293. package/dist/schema/json-schema.d.ts.map +1 -1
  294. package/dist/schema/json-schema.js +19 -1
  295. package/dist/schema/json-schema.js.map +1 -1
  296. package/dist/schema/linked-field.d.ts +6 -0
  297. package/dist/schema/linked-field.d.ts.map +1 -0
  298. package/dist/schema/linked-field.js +34 -0
  299. package/dist/schema/linked-field.js.map +1 -0
  300. package/dist/schema/linked-reads.d.ts +20 -0
  301. package/dist/schema/linked-reads.d.ts.map +1 -0
  302. package/dist/schema/linked-reads.js +69 -0
  303. package/dist/schema/linked-reads.js.map +1 -0
  304. package/dist/schema/linked-schema.d.ts +5 -0
  305. package/dist/schema/linked-schema.d.ts.map +1 -0
  306. package/dist/schema/linked-schema.js +9 -0
  307. package/dist/schema/linked-schema.js.map +1 -0
  308. package/dist/schema/linked.d.ts +147 -0
  309. package/dist/schema/linked.d.ts.map +1 -0
  310. package/dist/schema/linked.js +151 -0
  311. package/dist/schema/linked.js.map +1 -0
  312. package/dist/schema/reading.d.ts.map +1 -1
  313. package/dist/schema/reading.js +82 -27
  314. package/dist/schema/reading.js.map +1 -1
  315. package/dist/schema/schema.d.ts.map +1 -1
  316. package/dist/schema/schema.js +11 -4
  317. package/dist/schema/schema.js.map +1 -1
  318. package/dist/schema/types.d.ts +17 -0
  319. package/dist/schema/types.d.ts.map +1 -1
  320. package/dist/search.d.ts.map +1 -1
  321. package/dist/search.js +30 -2
  322. package/dist/search.js.map +1 -1
  323. package/dist/seat-of.d.ts +9 -0
  324. package/dist/seat-of.d.ts.map +1 -0
  325. package/dist/seat-of.js +14 -0
  326. package/dist/seat-of.js.map +1 -0
  327. package/dist/seen.d.ts +0 -12
  328. package/dist/seen.d.ts.map +1 -1
  329. package/dist/seen.js +5 -0
  330. package/dist/seen.js.map +1 -1
  331. package/dist/store.d.ts +58 -0
  332. package/dist/store.d.ts.map +1 -1
  333. package/dist/store.js +96 -11
  334. package/dist/store.js.map +1 -1
  335. package/dist/subscription-shape.d.ts +135 -0
  336. package/dist/subscription-shape.d.ts.map +1 -0
  337. package/dist/subscription-shape.js +55 -0
  338. package/dist/subscription-shape.js.map +1 -0
  339. package/dist/subscriptions.d.ts +68 -0
  340. package/dist/subscriptions.d.ts.map +1 -0
  341. package/dist/subscriptions.js +425 -0
  342. package/dist/subscriptions.js.map +1 -0
  343. package/dist/sync/connection-filter.d.ts +12 -0
  344. package/dist/sync/connection-filter.d.ts.map +1 -0
  345. package/dist/sync/connection-filter.js +34 -0
  346. package/dist/sync/connection-filter.js.map +1 -0
  347. package/dist/sync/connection.d.ts +65 -0
  348. package/dist/sync/connection.d.ts.map +1 -0
  349. package/dist/sync/connection.js +148 -0
  350. package/dist/sync/connection.js.map +1 -0
  351. package/dist/sync/engine.d.ts.map +1 -1
  352. package/dist/sync/engine.js +4 -0
  353. package/dist/sync/engine.js.map +1 -1
  354. package/dist/sync/google-calendar.d.ts +27 -2
  355. package/dist/sync/google-calendar.d.ts.map +1 -1
  356. package/dist/sync/google-calendar.js +55 -14
  357. package/dist/sync/google-calendar.js.map +1 -1
  358. package/dist/sync/index.d.ts +3 -1
  359. package/dist/sync/index.d.ts.map +1 -1
  360. package/dist/sync/index.js +1 -0
  361. package/dist/sync/index.js.map +1 -1
  362. package/dist/theme/derive.d.ts +16 -0
  363. package/dist/theme/derive.d.ts.map +1 -1
  364. package/dist/theme/derive.js +14 -0
  365. package/dist/theme/derive.js.map +1 -1
  366. package/dist/theme/marks.d.ts +19 -2
  367. package/dist/theme/marks.d.ts.map +1 -1
  368. package/dist/theme/marks.js +67 -2
  369. package/dist/theme/marks.js.map +1 -1
  370. package/dist/theme/types.d.ts +7 -2
  371. package/dist/theme/types.d.ts.map +1 -1
  372. package/dist/theme/types.js.map +1 -1
  373. package/dist/tidying.d.ts +62 -0
  374. package/dist/tidying.d.ts.map +1 -0
  375. package/dist/tidying.js +131 -0
  376. package/dist/tidying.js.map +1 -0
  377. package/dist/typed.d.ts +1 -1
  378. package/dist/typed.d.ts.map +1 -1
  379. package/dist/version.d.ts +1 -1
  380. package/dist/version.js +1 -1
  381. package/dist/via.d.ts.map +1 -1
  382. package/dist/via.js +2 -1
  383. package/dist/via.js.map +1 -1
  384. package/dist/views/address.d.ts +13 -0
  385. package/dist/views/address.d.ts.map +1 -0
  386. package/dist/views/address.js +29 -0
  387. package/dist/views/address.js.map +1 -0
  388. package/dist/views/types.d.ts +52 -3
  389. package/dist/views/types.d.ts.map +1 -1
  390. package/dist/views/types.js +4 -3
  391. package/dist/views/types.js.map +1 -1
  392. package/dist/wall-time.d.ts +60 -0
  393. package/dist/wall-time.d.ts.map +1 -0
  394. package/dist/wall-time.js +111 -0
  395. package/dist/wall-time.js.map +1 -0
  396. package/dist/when-typed.d.ts +15 -0
  397. package/dist/when-typed.d.ts.map +1 -0
  398. package/dist/when-typed.js +158 -0
  399. package/dist/when-typed.js.map +1 -0
  400. package/dist/words.d.ts +6 -1
  401. package/dist/words.d.ts.map +1 -1
  402. package/dist/words.js +6 -1
  403. package/dist/words.js.map +1 -1
  404. package/package.json +29 -1
@@ -0,0 +1,176 @@
1
+ /** A document's kind's fields, as `ListFields` says them: what the edit judges before anything is compiled. */
2
+ export function documentListFields(spec) {
3
+ const fields = {};
4
+ for (const [name, field] of Object.entries(spec?.fields ?? {})) {
5
+ fields[name] =
6
+ field.type === "enum"
7
+ ? { type: "choice", options: field.options ?? [] }
8
+ : field.type === "boolean"
9
+ ? { type: "boolean" }
10
+ : ["list", "image", "file", "app-link", "place"].includes(field.type ?? "")
11
+ ? { type: "other" }
12
+ : { type: "scalar" };
13
+ }
14
+ return { fields, computed: Object.keys(spec?.computed ?? {}) };
15
+ }
16
+ const MOST_TIEBREAKS = 3;
17
+ /** A declared sort, said either way, as an arrangement's sort with its tiebreaks. */
18
+ export function listSort(spec) {
19
+ if (spec === undefined)
20
+ return undefined;
21
+ if (typeof spec === "string")
22
+ return { by: spec, direction: "asc" };
23
+ const then = spec.then === undefined ? undefined : typeof spec.then === "string" ? { by: spec.then, direction: "asc" } : { by: spec.then.by, direction: spec.then.direction ?? "asc" };
24
+ return { by: spec.by, direction: spec.direction ?? "asc", ...(then ? { then } : {}) };
25
+ }
26
+ /** A declared grouping, said either way, in its whole form. */
27
+ export function listGroup(spec) {
28
+ if (spec === undefined)
29
+ return undefined;
30
+ return typeof spec === "string" ? { by: spec } : spec;
31
+ }
32
+ /** How a kind's list opens when its address says nothing: its declared sort and grouping. */
33
+ export function listOpening(list) {
34
+ const sort = listSort(list?.sort);
35
+ const group = listGroup(list?.group);
36
+ if (!sort && !group)
37
+ return undefined;
38
+ return { ...(sort ? { sort } : {}), ...(group ? { group: { by: group.by } } : {}) };
39
+ }
40
+ /** A group's value as the declaration names it: a yes-or-no group's key ("1", "0") is `"true"` or `"false"`. */
41
+ const valueOf = (key, boolean) => (boolean ? (key === "1" ? "true" : "false") : key);
42
+ /**
43
+ * The groups in the declared order — the order it names, then the rest in
44
+ * their declared order, the group with nothing to say after those — and
45
+ * the closed ones last, each marked. A group the address asked for some
46
+ * other way is left as `arrange` drew it.
47
+ */
48
+ export function orderListGroups(groups, spec, field) {
49
+ const boolean = field.type === "boolean";
50
+ const options = boolean ? ["true", "false"] : (field.options ?? []);
51
+ const order = [...new Set([...(spec.order ?? []).filter((value) => options.includes(value)), ...options])];
52
+ const closed = spec.closed ?? [];
53
+ // Open groups in their order; closed ones in the order the declaration closes them.
54
+ const rank = (group) => {
55
+ if (group.key === "")
56
+ return [1, 0];
57
+ const value = valueOf(group.key, boolean);
58
+ if (closed.includes(value))
59
+ return [2, closed.indexOf(value)];
60
+ const at = order.indexOf(value);
61
+ return [0, at < 0 ? order.length : at];
62
+ };
63
+ return groups
64
+ .map((group, at) => ({ group, at, rank: rank(group) }))
65
+ .sort((a, b) => a.rank[0] - b.rank[0] || a.rank[1] - b.rank[1] || a.at - b.at)
66
+ .map(({ group, rank }) => ({ ...group, closed: rank[0] === 2 }));
67
+ }
68
+ /** A direction, in the words a key's values read in: "highest first", "A to Z". */
69
+ function directionSaid(type, direction) {
70
+ const words = {
71
+ date: ["earliest first", "latest first"],
72
+ number: ["lowest first", "highest first"],
73
+ boolean: ["no first", "yes first"],
74
+ choice: ["in their order", "in reverse order"],
75
+ text: ["A to Z", "Z to A"],
76
+ }[type];
77
+ return words[direction === "desc" ? 1 : 0];
78
+ }
79
+ /** What a document's field type reads as, for the words a sort is said in. */
80
+ export function sortTypeOfDocumentField(type) {
81
+ if (type === "enum")
82
+ return "choice";
83
+ if (type === "boolean")
84
+ return "boolean";
85
+ if (type === "number" || type === "integer" || type === "duration")
86
+ return "number";
87
+ if (type === "date" || type === "datetime")
88
+ return "date";
89
+ return "text";
90
+ }
91
+ /**
92
+ * A kind's declared order and grouping, said: `sorted by "votes", highest
93
+ * first, then "label", A to Z` and `grouped by "status", done and declined
94
+ * closed at the end`. `typeOf` says what a key's values are (a computed
95
+ * field is a number).
96
+ */
97
+ export function kindListWords(list, typeOf) {
98
+ const out = {};
99
+ const sort = listSort(list.sort);
100
+ if (sort) {
101
+ const parts = [];
102
+ for (let at = sort, depth = 0; at && depth <= MOST_TIEBREAKS; at = at.then, depth += 1) {
103
+ parts.push(`${depth === 0 ? "sorted by" : "then"} "${at.by}", ${directionSaid(at.by === "label" ? "text" : typeOf(at.by), at.direction)}`);
104
+ }
105
+ out.sort = parts.join(", ");
106
+ }
107
+ const group = listGroup(list.group);
108
+ if (group) {
109
+ const quoted = (values) => values.map((value) => `"${value}"`);
110
+ const join = (values) => (values.length <= 1 ? values.join("") : `${values.slice(0, -1).join(", ")} and ${values.at(-1)}`);
111
+ const order = group.order?.length ? `, ${join(quoted(group.order))} first` : "";
112
+ const closed = group.closed?.length ? `, ${join(quoted(group.closed))} closed at the end` : "";
113
+ out.group = `grouped by "${group.by}"${order}${closed}`;
114
+ }
115
+ return out;
116
+ }
117
+ /**
118
+ * What is wrong with a kind's declared order and grouping, each said in a
119
+ * sentence: a sort by what the kind does not have, a grouping by a field
120
+ * that is not a choice or a yes or no, a group's order or a closed group
121
+ * naming a value the field does not offer.
122
+ */
123
+ export function kindListFindings(kind, list, shape, at = `pages.lists.${kind}`) {
124
+ const out = [];
125
+ const sortable = ["label", ...Object.entries(shape.fields).filter(([, field]) => field.type !== "other").map(([name]) => name), ...shape.computed];
126
+ if (list.sort !== undefined) {
127
+ const sort = listSort(list.sort);
128
+ const keys = [[sort.by, `${at}.sort${typeof list.sort === "string" ? "" : ".by"}`]];
129
+ for (let then = sort.then, depth = 0; then && depth < MOST_TIEBREAKS; then = then.then, depth += 1)
130
+ keys.push([then.by, `${at}.sort.then`]);
131
+ for (const [by, path] of keys) {
132
+ if (sortable.includes(by))
133
+ continue;
134
+ const field = shape.fields[by];
135
+ out.push({
136
+ path,
137
+ message: field
138
+ ? `The ${kind} list cannot be sorted by "${by}": it is a field no list sorts by (a list, a file, a picture).`
139
+ : `The ${kind} list cannot be sorted by "${by}": ${kind} has no field or computed field called that.`,
140
+ fix: `Sort by ${sortable.map((key) => `"${key}"`).join(", ")}.`,
141
+ });
142
+ }
143
+ }
144
+ if (list.group !== undefined) {
145
+ const group = listGroup(list.group);
146
+ const groupAt = `${at}.group${typeof list.group === "string" ? "" : ".by"}`;
147
+ const field = shape.fields[group.by];
148
+ const groupable = Object.entries(shape.fields).filter(([, one]) => one.type === "choice" || one.type === "boolean").map(([name]) => `"${name}"`);
149
+ const fix = groupable.length > 0 ? `Group by ${groupable.join(", ")}.` : `${kind} has no choice or yes-or-no field to group by; add one, or leave the list ungrouped.`;
150
+ if (!field) {
151
+ out.push({ path: groupAt, message: `The ${kind} list cannot be grouped by "${group.by}": ${kind} has no field called that${shape.computed.includes(group.by) ? " it stores (a computed field is not grouped by)" : ""}.`, fix });
152
+ }
153
+ else if (field.type !== "choice" && field.type !== "boolean") {
154
+ out.push({ path: groupAt, message: `The ${kind} list cannot be grouped by "${group.by}": a list groups by a choice or a yes-or-no field, and ${group.by} is neither.`, fix });
155
+ }
156
+ else {
157
+ const options = field.type === "boolean" ? ["true", "false"] : (field.options ?? []);
158
+ const said = options.map((option) => `"${option}"`).join(", ");
159
+ for (const part of ["order", "closed"]) {
160
+ (group[part] ?? []).forEach((value, n) => {
161
+ if (options.includes(value))
162
+ return;
163
+ out.push({
164
+ path: `${at}.group.${part}.${n}`,
165
+ message: part === "closed"
166
+ ? `The ${kind} list cannot close the "${value}" group: "${value}" is not one of ${group.by}'s choices.`
167
+ : `The ${kind} list cannot put the "${value}" group in order: "${value}" is not one of ${group.by}'s choices.`,
168
+ fix: `Name ${said}.`,
169
+ });
170
+ });
171
+ }
172
+ }
173
+ }
174
+ return out;
175
+ }
176
+ //# sourceMappingURL=kind-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kind-list.js","sourceRoot":"","sources":["../src/kind-list.ts"],"names":[],"mappings":"AAwBA,+GAA+G;AAC/G,MAAM,UAAU,kBAAkB,CAAC,IAAyL;IAC1N,MAAM,MAAM,GAAiD,EAAE,CAAC;IAChE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,CAAC,IAAI,KAAK,MAAM;gBACnB,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE;gBAClD,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS;oBACxB,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE;oBACrB,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;wBACzE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;wBACnB,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;AACjE,CAAC;AAQD,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,qFAAqF;AACrF,MAAM,UAAU,QAAQ,CAAC,IAAsB;IAC7C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,KAAc,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC;IAChM,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACxF,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,SAAS,CAAC,IAAuB;IAC/C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACxD,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,WAAW,CAAC,IAA0B;IACpD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IACtC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACtF,CAAC;AAED,gHAAgH;AAChH,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,OAAgB,EAAU,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAE9G;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAmC,EACnC,IAAmB,EACnB,KAAoF;IAEpF,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;IACzC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3G,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IACjC,oFAAoF;IACpF,MAAM,IAAI,GAAG,CAAC,KAAuB,EAAoB,EAAE;QACzD,IAAI,KAAK,CAAC,GAAG,KAAK,EAAE;YAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9D,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC;IACF,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACtD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;SAC7E,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,mFAAmF;AACnF,SAAS,aAAa,CAAC,IAAuD,EAAE,SAAyB;IACvG,MAAM,KAAK,GAAG;QACZ,IAAI,EAAE,CAAC,gBAAgB,EAAE,cAAc,CAAC;QACxC,MAAM,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;QACzC,OAAO,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;QAClC,MAAM,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;QAC9C,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;KAC3B,CAAC,IAAI,CAAC,CAAC;IACR,OAAO,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;AAC9C,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,uBAAuB,CAAC,IAAwB;IAC9D,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC;IACrC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzC,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAC;IACpF,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC;IAC1D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,IAAc,EAAE,MAA0E;IACtH,MAAM,GAAG,GAAsC,EAAE,CAAC;IAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,IAAI,EAAE,GAAqB,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,IAAI,KAAK,IAAI,cAAc,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACzG,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC7I,CAAC;QACD,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,CAAC,MAAyB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;QAClF,MAAM,IAAI,GAAG,CAAC,MAAyB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9I,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/F,GAAG,CAAC,KAAK,GAAG,eAAe,KAAK,CAAC,EAAE,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAAc,EAAE,KAAiB,EAAE,EAAE,GAAG,eAAe,IAAI,EAAE;IAC1G,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IACnJ,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC;QAClC,MAAM,IAAI,GAAuB,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACxG,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,IAAI,KAAK,GAAG,cAAc,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;QAC5I,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;YAC9B,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAE,SAAS;YACpC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC/B,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI;gBACJ,OAAO,EAAE,KAAK;oBACZ,CAAC,CAAC,OAAO,IAAI,8BAA8B,EAAE,gEAAgE;oBAC7G,CAAC,CAAC,OAAO,IAAI,8BAA8B,EAAE,MAAM,IAAI,8CAA8C;gBACvG,GAAG,EAAE,WAAW,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;aAChE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC;QACrC,MAAM,OAAO,GAAG,GAAG,EAAE,SAAS,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC5E,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;QACjJ,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,sFAAsF,CAAC;QACvK,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,+BAA+B,KAAK,CAAC,EAAE,MAAM,IAAI,4BAA4B,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACnO,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/D,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,+BAA+B,KAAK,CAAC,EAAE,0DAA0D,KAAK,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;QAChL,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YACrF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/D,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAU,EAAE,CAAC;gBAChD,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;oBACvC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;wBAAE,OAAO;oBACpC,GAAG,CAAC,IAAI,CAAC;wBACP,IAAI,EAAE,GAAG,EAAE,UAAU,IAAI,IAAI,CAAC,EAAE;wBAChC,OAAO,EACL,IAAI,KAAK,QAAQ;4BACf,CAAC,CAAC,OAAO,IAAI,2BAA2B,KAAK,aAAa,KAAK,mBAAmB,KAAK,CAAC,EAAE,aAAa;4BACvG,CAAC,CAAC,OAAO,IAAI,yBAAyB,KAAK,sBAAsB,KAAK,mBAAmB,KAAK,CAAC,EAAE,aAAa;wBAClH,GAAG,EAAE,QAAQ,IAAI,GAAG;qBACrB,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * `@graview/core/linked` — RECORDS IN ANOTHER APP, READ AS THE VIEWER (FR-171).
3
+ *
4
+ * A relation may go to a kind in another app (`"to": ["@nick/house/house"]`);
5
+ * the record that links keeps which one (`house:h1`) and the host reads the
6
+ * far record as whoever is looking (`LinkedRecords`, on `@graview/core`).
7
+ * This entry is what a host and a face need beyond that, fetched when a
8
+ * link is first drawn or a host first serves one:
9
+ *
10
+ * - `linkedRecordsOver` — the host over apps it holds in memory: each far
11
+ * record read through the far store's `seenBy(viewer)`, so a viewer is
12
+ * told only what they may see there, and refused an app they may not
13
+ * open. The tests read two compiled documents through it; a host serving
14
+ * many apps answers the same shape from its own store.
15
+ * - `readLinkedRecord` — one record of a store, as a viewer is told it.
16
+ * - `linkedChange`, `recordLinkedChange` — a far value's change, kept in the
17
+ * READING app's history: an op authored by the far app (`system`,
18
+ * `app:<address>`, via `app:<address>`) on each record that links it,
19
+ * naming what changed and nothing of its value.
20
+ * - `linkedRelationWords` — a relation to another app, said: what
21
+ * `describe_app` and the agent's tools tell a model.
22
+ */
23
+ import "./field-sight.js";
24
+ import { type LinkedRead, type LinkedReader, type LinkedRecord, type LinkedRecordAnswer, type LinkedRecordRef, type LinkedRecords, type LinkedRelation, type LinkedSearch, type LinkedViewer } from "./schema/linked.js";
25
+ import type { AnySchema } from "./schema/schema.js";
26
+ import type { Operation } from "./ops/types.js";
27
+ import type { Store } from "./store.js";
28
+ export type { LinkedRead, LinkedReader, LinkedRecord, LinkedRecordAnswer, LinkedRecordRef, LinkedRecords, LinkedRelation, LinkedSearch, LinkedViewer };
29
+ /** An app a host holds, as far records are read from it. */
30
+ export interface LinkedHome {
31
+ /** The far app's store: its records, its policy and its sights. */
32
+ readonly store: Store<AnySchema>;
33
+ /** What the app is called, as a history line says where a change came from. */
34
+ readonly name?: string;
35
+ /** Whether a viewer may open the app at all; everyone, when unsaid. */
36
+ readonly opens?: (viewer: LinkedViewer) => boolean;
37
+ /** Where a record opens in the app: a path on the host or an http(s) address. */
38
+ readonly href?: (ref: LinkedRecordRef) => string;
39
+ }
40
+ /**
41
+ * ONE RECORD OF A STORE, AS A VIEWER IS TOLD IT: read through the store's
42
+ * `seenBy(viewer)`, so a record they may not see is null and a field kept
43
+ * from them is not there — its label, its describe line, its card (a
44
+ * glance, field by field, in words) and its values, computed ones too.
45
+ */
46
+ export declare function readLinkedRecord(store: Store<AnySchema>, ref: LinkedRecordRef, viewer: LinkedViewer, options?: {
47
+ readonly href?: string;
48
+ readonly app?: string;
49
+ }): LinkedRecord | null;
50
+ /**
51
+ * THE HOST, OVER APPS IT HOLDS IN MEMORY (FR-171): every answer as the
52
+ * viewer. An address it does not hold, or a record not there for this
53
+ * viewer, is null; an app the viewer may not open is `{ denied: true }`,
54
+ * for a record and for a search alike — nothing of it is said.
55
+ */
56
+ export declare function linkedRecordsOver(homes: Readonly<Record<string, LinkedHome>>, options?: {
57
+ readonly open?: LinkedRecords["open"];
58
+ }): LinkedRecords;
59
+ /** The fields whose values differ between two readings of one far record, in the order the later one holds them. */
60
+ export declare function linkedChange(before: LinkedRecord, after: LinkedRecord): readonly string[];
61
+ /** A far record's change, as its host tells the app that reads it. */
62
+ export interface LinkedChange {
63
+ readonly ref: LinkedRecordRef;
64
+ /** Which of its fields changed; their values are the far app's, and not kept here. */
65
+ readonly fields: readonly string[];
66
+ /** What the far app is called, as the history says where the change came from; its address when unsaid. */
67
+ readonly app?: string;
68
+ /** When it changed there; the store's clock when unsaid. */
69
+ readonly at?: string;
70
+ }
71
+ /** The records of a store that link a far record, and the relation each links it by. */
72
+ export declare function recordsLinking(store: Store<AnySchema>, ref: LinkedRecordRef): readonly {
73
+ readonly id: string;
74
+ readonly relation: string;
75
+ }[];
76
+ /**
77
+ * A FAR VALUE'S CHANGE, KEPT IN THE READING APP'S HISTORY (FR-171): one op
78
+ * on each record that links the far record, in one batch, authored by the
79
+ * far app — `{ kind: "system", id: "app:<address>", name }`, via
80
+ * `app:<address>` — saying which of its fields changed and nothing of
81
+ * their values, which are the far app's to show to whoever may see them.
82
+ * It reads the linking record and writes nothing: the reading app's own
83
+ * values are as they were, and its Activity and the record's history say
84
+ * "Buy it outright: the linked house changed in House — list price".
85
+ * Nothing is kept when no record links it or nothing changed.
86
+ */
87
+ export declare function recordLinkedChange(store: Store<AnySchema>, change: LinkedChange): readonly Operation[];
88
+ /**
89
+ * A RELATION TO ANOTHER APP, SAID — for `describe_app`, the agent's tools and
90
+ * a person reading the declaration: where it goes, how many, and how one is
91
+ * linked. "forHouse → one house in the app @nick/house (another app; link
92
+ * one by setting forHouse to "house:<id>", an id the host's search finds)".
93
+ */
94
+ export declare function linkedRelationWords(name: string, relation: LinkedRelation, editAct?: string): string;
95
+ //# sourceMappingURL=linked.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linked.d.ts","sourceRoot":"","sources":["../src/linked.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,kBAAkB,CAAC;AAK1B,OAAO,EAA8C,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACrQ,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AAEvJ,4DAA4D;AAC5D,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC;IACnD,iFAAiF;IACjF,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,CAAC;CAClD;AAMD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,YAAY,GAAG,IAAI,CAK1L;AA0BD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAAO,GAAG,aAAa,CA6BrJ;AAED,oHAAoH;AACpH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAGzF;AAED,sEAAsE;AACtE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC;IAC9B,sFAAsF;IACtF,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,2GAA2G;IAC3G,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,eAAe,GAAG,SAAS;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,CAY3I;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,GAAG,SAAS,SAAS,EAAE,CAuBtG;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAKpG"}
package/dist/linked.js ADDED
@@ -0,0 +1,181 @@
1
+ /**
2
+ * `@graview/core/linked` — RECORDS IN ANOTHER APP, READ AS THE VIEWER (FR-171).
3
+ *
4
+ * A relation may go to a kind in another app (`"to": ["@nick/house/house"]`);
5
+ * the record that links keeps which one (`house:h1`) and the host reads the
6
+ * far record as whoever is looking (`LinkedRecords`, on `@graview/core`).
7
+ * This entry is what a host and a face need beyond that, fetched when a
8
+ * link is first drawn or a host first serves one:
9
+ *
10
+ * - `linkedRecordsOver` — the host over apps it holds in memory: each far
11
+ * record read through the far store's `seenBy(viewer)`, so a viewer is
12
+ * told only what they may see there, and refused an app they may not
13
+ * open. The tests read two compiled documents through it; a host serving
14
+ * many apps answers the same shape from its own store.
15
+ * - `readLinkedRecord` — one record of a store, as a viewer is told it.
16
+ * - `linkedChange`, `recordLinkedChange` — a far value's change, kept in the
17
+ * READING app's history: an op authored by the far app (`system`,
18
+ * `app:<address>`, via `app:<address>`) on each record that links it,
19
+ * naming what changed and nothing of its value.
20
+ * - `linkedRelationWords` — a relation to another app, said: what
21
+ * `describe_app` and the agent's tools tell a model.
22
+ */
23
+ // A host serves seats: a sight that hides a field shows the rest, never nothing (`@graview/core/field-sight`).
24
+ import "./field-sight.js";
25
+ import { labelOf } from "./schema/define-node.js";
26
+ import { humanizeField } from "./schema/define-node.js";
27
+ import { readableFields } from "./schema/reading.js";
28
+ import { computedValues } from "./document/computed-values.js";
29
+ import { linkedRelations, linkedRefsOf, linkedValue } from "./schema/linked.js";
30
+ const asPrincipal = (viewer) => ({ kind: viewer.kind, ...(viewer.id === undefined ? {} : { id: viewer.id }), ...(viewer.roles ? { roles: viewer.roles } : {}) });
31
+ const NOT_A_FIELD = new Set(["id", "kind"]);
32
+ /**
33
+ * ONE RECORD OF A STORE, AS A VIEWER IS TOLD IT: read through the store's
34
+ * `seenBy(viewer)`, so a record they may not see is null and a field kept
35
+ * from them is not there — its label, its describe line, its card (a
36
+ * glance, field by field, in words) and its values, computed ones too.
37
+ */
38
+ export function readLinkedRecord(store, ref, viewer, options = {}) {
39
+ const seen = store.seenBy(asPrincipal(viewer));
40
+ const node = seen.graph.getNode(ref.id);
41
+ if (!node || node.kind !== ref.kind)
42
+ return null;
43
+ return recordOf(seen, node, ref.address, options);
44
+ }
45
+ function recordOf(seen, node, address, options) {
46
+ const definition = seen.schema.tryDefinition(node.kind);
47
+ const { values } = computedValues(seen.schema, seen.graph, node);
48
+ const fields = {};
49
+ for (const [key, value] of Object.entries(node))
50
+ if (!NOT_A_FIELD.has(key) && value !== undefined)
51
+ fields[key] = value;
52
+ for (const [key, value] of Object.entries(values))
53
+ fields[key] = typeof value === "object" && value !== null && !Array.isArray(value) ? value.label : value;
54
+ const label = labelOf(definition, node);
55
+ const describe = definition?.describe?.(node)?.trim();
56
+ const card = readableFields(node, definition, { glance: true, limit: 4, said: [label] })
57
+ .filter((field) => !field.files && !field.app)
58
+ .map((field) => ({ label: field.label, text: field.value }));
59
+ return {
60
+ address,
61
+ kind: node.kind,
62
+ id: node.id,
63
+ label,
64
+ ...(describe ? { describe } : {}),
65
+ ...(card.length > 0 ? { card } : {}),
66
+ fields,
67
+ ...(options.href ? { href: options.href } : {}),
68
+ ...(options.app ? { app: options.app } : {}),
69
+ };
70
+ }
71
+ /**
72
+ * THE HOST, OVER APPS IT HOLDS IN MEMORY (FR-171): every answer as the
73
+ * viewer. An address it does not hold, or a record not there for this
74
+ * viewer, is null; an app the viewer may not open is `{ denied: true }`,
75
+ * for a record and for a search alike — nothing of it is said.
76
+ */
77
+ export function linkedRecordsOver(homes, options = {}) {
78
+ const homeOf = (address) => (Object.hasOwn(homes, address) ? homes[address] : undefined);
79
+ return {
80
+ async resolve(ref, viewer) {
81
+ const home = homeOf(ref.address);
82
+ if (!home)
83
+ return null;
84
+ if (home.opens && !home.opens(viewer))
85
+ return { denied: true };
86
+ return readLinkedRecord(home.store, ref, viewer, { ...(home.href ? { href: home.href(ref) } : {}), ...(home.name ? { app: home.name } : {}) });
87
+ },
88
+ async find(search, viewer) {
89
+ const home = homeOf(search.address);
90
+ if (!home)
91
+ return [];
92
+ if (home.opens && !home.opens(viewer))
93
+ return { denied: true };
94
+ const seen = home.store.seenBy(asPrincipal(viewer));
95
+ const words = search.query.trim().toLowerCase();
96
+ const found = [];
97
+ for (const kind of search.kinds) {
98
+ for (const node of seen.graph.nodesOfKind(kind)) {
99
+ if (found.length >= search.limit)
100
+ break;
101
+ const label = labelOf(seen.schema.tryDefinition(kind), node);
102
+ if (words && !label.toLowerCase().includes(words))
103
+ continue;
104
+ const ref = { address: search.address, kind, id: node.id };
105
+ found.push(recordOf(seen, node, search.address, { ...(home.href ? { href: home.href(ref) } : {}), ...(home.name ? { app: home.name } : {}) }));
106
+ }
107
+ }
108
+ return found;
109
+ },
110
+ ...(options.open ? { open: options.open } : {}),
111
+ };
112
+ }
113
+ /** The fields whose values differ between two readings of one far record, in the order the later one holds them. */
114
+ export function linkedChange(before, after) {
115
+ const keys = [...new Set([...Object.keys(after.fields), ...Object.keys(before.fields)])];
116
+ return keys.filter((key) => JSON.stringify(before.fields[key]) !== JSON.stringify(after.fields[key]));
117
+ }
118
+ /** The records of a store that link a far record, and the relation each links it by. */
119
+ export function recordsLinking(store, ref) {
120
+ const kept = linkedValue(ref);
121
+ const found = [];
122
+ for (const kind of store.schema.kinds) {
123
+ for (const [relation, link] of linkedRelations(store.schema.tryDefinition(kind))) {
124
+ if (link.address !== ref.address || !link.kinds.includes(ref.kind))
125
+ continue;
126
+ for (const node of store.graph.nodesOfKind(kind, { archived: "all" })) {
127
+ if (linkedRefsOf(node[relation], link).some((one) => linkedValue(one) === kept))
128
+ found.push({ id: node["id"], relation });
129
+ }
130
+ }
131
+ }
132
+ return found;
133
+ }
134
+ /**
135
+ * A FAR VALUE'S CHANGE, KEPT IN THE READING APP'S HISTORY (FR-171): one op
136
+ * on each record that links the far record, in one batch, authored by the
137
+ * far app — `{ kind: "system", id: "app:<address>", name }`, via
138
+ * `app:<address>` — saying which of its fields changed and nothing of
139
+ * their values, which are the far app's to show to whoever may see them.
140
+ * It reads the linking record and writes nothing: the reading app's own
141
+ * values are as they were, and its Activity and the record's history say
142
+ * "Buy it outright: the linked house changed in House — list price".
143
+ * Nothing is kept when no record links it or nothing changed.
144
+ */
145
+ export function recordLinkedChange(store, change) {
146
+ if (change.fields.length === 0)
147
+ return [];
148
+ const linking = recordsLinking(store, change.ref);
149
+ if (linking.length === 0)
150
+ return [];
151
+ const app = change.app ?? change.ref.address;
152
+ const what = change.fields.map((field) => humanizeField(field).toLowerCase()).join(", ");
153
+ const author = { kind: "system", id: `app:${change.ref.address}`, name: app };
154
+ return store.append(linking.map(({ id }) => {
155
+ const node = store.graph.getNode(id);
156
+ const label = node ? labelOf(store.schema.tryDefinition(node.kind), node) : id;
157
+ return {
158
+ primitives: [],
159
+ author,
160
+ // The far kind's noun is its own app's: the record is said as the link it is.
161
+ intent: `${label}: the linked record changed in ${app} — ${what}`,
162
+ reads: [id],
163
+ writes: [],
164
+ via: `app:${change.ref.address}`,
165
+ ...(change.at ? { at: change.at } : {}),
166
+ };
167
+ }));
168
+ }
169
+ /**
170
+ * A RELATION TO ANOTHER APP, SAID — for `describe_app`, the agent's tools and
171
+ * a person reading the declaration: where it goes, how many, and how one is
172
+ * linked. "forHouse → one house in the app @nick/house (another app; link
173
+ * one by setting forHouse to "house:<id>", an id the host's search finds)".
174
+ */
175
+ export function linkedRelationWords(name, relation, editAct) {
176
+ const kinds = relation.kinds.join(" or ");
177
+ const many = relation.cardinality === "many";
178
+ const how = `link ${many ? "them" : "one"} by setting ${name} to ${many ? "a list of " : ""}"${relation.kinds[0]}:<id>"${editAct ? ` with ${editAct}` : ""}, an id found in that app (find_linked)`;
179
+ return `${name} → ${many ? "records of" : "one"} ${kinds} in the app ${relation.address} (another app, read as the viewer; ${how})`;
180
+ }
181
+ //# sourceMappingURL=linked.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linked.js","sourceRoot":"","sources":["../src/linked.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,8 @@ export type ArgShape =
29
29
  | {
30
30
  readonly type: "date";
31
31
  readonly time?: true;
32
+ /** A moment that names an instant (a document's `datetime`, `z.iso.datetime()`): typed on the reader's clock and kept in UTC with its `Z`. Without it, a time is kept as the wall time written. */
33
+ readonly instant?: true;
32
34
  }
33
35
  /**
34
36
  * A number, and its range where it says one: `step` is what its values are
@@ -1 +1 @@
1
- {"version":3,"file":"arg-shape.d.ts","sourceRoot":"","sources":["../../src/mutations/arg-shape.ts"],"names":[],"mappings":"AAGA,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAUrE;;;;;;;;;GASG;AACH,MAAM,MAAM,QAAQ;AAClB;;;;GAIG;AACD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CAAE;AACrF;;;;;GAKG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE;AACjD;;;;;;GAMG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAA;CAAE,GACzJ;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE;AAClE;;;;;;;GAOG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE;AAC9B;;;;;;;;GAQG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;CAAE;AACrD,wIAAwI;GACtI;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAEjC,mFAAmF;AACnF,wBAAgB,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAG/C;AAeD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,CAiErD;AAED,2EAA2E;AAC3E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAI/D"}
1
+ {"version":3,"file":"arg-shape.d.ts","sourceRoot":"","sources":["../../src/mutations/arg-shape.ts"],"names":[],"mappings":"AAIA,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAUrE;;;;;;;;;GASG;AACH,MAAM,MAAM,QAAQ;AAClB;;;;GAIG;AACD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CAAE;AACrF;;;;;GAKG;GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IACrB,mMAAmM;IACnM,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;CACzB;AACH;;;;;;GAMG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAA;CAAE,GACzJ;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE;AAClE;;;;;;;GAOG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE;AAC9B;;;;;;;;GAQG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;CAAE;AACrD,wIAAwI;GACtI;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAEjC,mFAAmF;AACnF,wBAAgB,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAG/C;AAeD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,CAmErD;AAED,2EAA2E;AAC3E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAI/D"}
@@ -1,4 +1,5 @@
1
1
  import { defOf } from "../schema/zod.js";
2
+ import { isMoment } from "../days.js";
2
3
  import { fileKindOf } from "../schema/files.js";
3
4
  import { typedFieldOf } from "../schema/typed-field-of.js";
4
5
  import { amountOf } from "../schema/amount-mark.js";
@@ -74,6 +75,9 @@ export function describeArg(schema) {
74
75
  };
75
76
  }
76
77
  if (type === "string") {
78
+ // A moment that names an instant: a document's `datetime` (checked by `isMoment`) or zod's own ISO date and time.
79
+ if (checks.some((check) => check.fn === isMoment || check.format === "datetime") || def?.format === "datetime")
80
+ return { type: "date", time: true, instant: true };
77
81
  // A date is a string with a date-shaped pattern. Recognizing it means
78
82
  // the interface offers a date picker instead of a free text box, which
79
83
  // is the difference between an action anyone can run and one only its
@@ -1 +1 @@
1
- {"version":3,"file":"arg-shape.js","sourceRoot":"","sources":["../../src/mutations/arg-shape.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arg-shape.js","sourceRoot":"","sources":["../../src/mutations/arg-shape.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"derive-edits.d.ts","sourceRoot":"","sources":["../../src/mutations/derive-edits.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAI5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGxD;;;;;;;;;;;;GAYG;AAEH,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,UAAU,EAAE,iBAAiB,GAAG,SAAS,MAAM,EAAE,CAG/E;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,CAAC,SAAS,SAAS,EAChD,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,qBAAqB,CAAC,CAAC,CAAC,GACjC,SAAS,MAAM,EAAE,CAMnB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,SAAS,EACjD,QAAQ,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAClC,UAAU,EAAE,iBAAiB,GAC5B,SAAS,MAAM,EAAE,CAUnB;AAED,2DAA2D;AAC3D,wBAAgB,YAAY,CAAC,CAAC,SAAS,SAAS,EAC9C,MAAM,EAAE,CAAC,EACT,SAAS,EAAE,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAC7C,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAsB7D;AAED,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,CAAC,SAAS,SAAS,EACjD,MAAM,EAAE,CAAC,EACT,SAAS,EAAE,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAC9C,IAAI,EAAE,MAAM,GACX,SAAS,MAAM,EAAE,CAKnB;AAED,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,MAAwB,CAAC;AAEzE;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,SAAS,EACzC,MAAM,EAAE,CAAC,EACT,SAAS,EAAE,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAC9C,IAAI,EAAE,MAAM,GACX,SAAS,MAAM,EAAE,CAenB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,SAAS,EACrD,MAAM,EAAE,CAAC,EACT,SAAS,EAAE,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAC7C,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAqE5B;AAkBD,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,KAAG,MAA0B,CAAC;AAE7E;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,SAAS,EAC3C,SAAS,EAAE,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAC9C,IAAI,EAAE,MAAM,GACX,SAAS,MAAM,EAAE,CAInB;AAED,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,CAAC,SAAS,SAAS,EAC5C,MAAM,EAAE,CAAC,EACT,SAAS,EAAE,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAC9C,QAAQ,EAAE,qBAAqB,CAAC,CAAC,CAAC,GACjC,SAAS,MAAM,EAAE,GAAG,SAAS,CAM/B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,SAAS,EACvD,MAAM,EAAE,CAAC,EACT,SAAS,EAAE,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAC7C,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAE5B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,SAAS,EACxD,MAAM,EAAE,CAAC,EACT,SAAS,EAAE,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAC7C,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAE5B;AA6CD,2HAA2H;AAC3H,wBAAgB,eAAe,CAAC,CAAC,SAAS,SAAS,EACjD,MAAM,EAAE,CAAC,EACT,SAAS,EAAE,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAC7C,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAE5B"}
1
+ {"version":3,"file":"derive-edits.d.ts","sourceRoot":"","sources":["../../src/mutations/derive-edits.ts"],"names":[],"mappings":"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"}