@graview/core 0.1.28 → 0.1.30

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 (647) hide show
  1. package/README.md +17 -0
  2. package/dist/amount-input.d.ts +21 -0
  3. package/dist/amount-input.d.ts.map +1 -0
  4. package/dist/amount-input.js +96 -0
  5. package/dist/amount-input.js.map +1 -0
  6. package/dist/answer-seen.d.ts +38 -0
  7. package/dist/answer-seen.d.ts.map +1 -0
  8. package/dist/answer-seen.js +122 -0
  9. package/dist/answer-seen.js.map +1 -0
  10. package/dist/app-places.d.ts +56 -0
  11. package/dist/app-places.d.ts.map +1 -0
  12. package/dist/app-places.js +203 -0
  13. package/dist/app-places.js.map +1 -0
  14. package/dist/app.d.ts +16 -0
  15. package/dist/app.d.ts.map +1 -1
  16. package/dist/app.js.map +1 -1
  17. package/dist/arrange.d.ts +4 -2
  18. package/dist/arrange.d.ts.map +1 -1
  19. package/dist/arrange.js +4 -2
  20. package/dist/arrange.js.map +1 -1
  21. package/dist/arrangement-words.d.ts +3 -0
  22. package/dist/arrangement-words.d.ts.map +1 -0
  23. package/dist/arrangement-words.js +50 -0
  24. package/dist/arrangement-words.js.map +1 -0
  25. package/dist/arrangement.d.ts +43 -3
  26. package/dist/arrangement.d.ts.map +1 -1
  27. package/dist/arrangement.js +69 -31
  28. package/dist/arrangement.js.map +1 -1
  29. package/dist/arranging.d.ts.map +1 -1
  30. package/dist/arranging.js +36 -14
  31. package/dist/arranging.js.map +1 -1
  32. package/dist/bind.d.ts +3 -0
  33. package/dist/bind.d.ts.map +1 -1
  34. package/dist/bind.js.map +1 -1
  35. package/dist/blocks.d.ts +1 -1
  36. package/dist/blocks.d.ts.map +1 -1
  37. package/dist/capabilities.js +1 -1
  38. package/dist/capabilities.js.map +1 -1
  39. package/dist/check.d.ts +3 -0
  40. package/dist/check.d.ts.map +1 -1
  41. package/dist/check.js +3 -0
  42. package/dist/check.js.map +1 -1
  43. package/dist/city.d.ts +58 -50
  44. package/dist/city.d.ts.map +1 -1
  45. package/dist/city.js +160 -147
  46. package/dist/city.js.map +1 -1
  47. package/dist/cli/check/brand.d.ts.map +1 -1
  48. package/dist/cli/check/brand.js +30 -2
  49. package/dist/cli/check/brand.js.map +1 -1
  50. package/dist/cli/check/clock-rules.d.ts +4 -0
  51. package/dist/cli/check/clock-rules.d.ts.map +1 -0
  52. package/dist/cli/check/clock-rules.js +26 -0
  53. package/dist/cli/check/clock-rules.js.map +1 -0
  54. package/dist/cli/check/field-sight.d.ts +11 -0
  55. package/dist/cli/check/field-sight.d.ts.map +1 -0
  56. package/dist/cli/check/field-sight.js +113 -0
  57. package/dist/cli/check/field-sight.js.map +1 -0
  58. package/dist/cli/check/index.d.ts +2 -0
  59. package/dist/cli/check/index.d.ts.map +1 -1
  60. package/dist/cli/check/index.js +2 -0
  61. package/dist/cli/check/index.js.map +1 -1
  62. package/dist/cli/check/lenses.d.ts +1 -1
  63. package/dist/cli/check/lenses.d.ts.map +1 -1
  64. package/dist/cli/check/lenses.js +48 -2
  65. package/dist/cli/check/lenses.js.map +1 -1
  66. package/dist/cli/check/relations.d.ts +23 -0
  67. package/dist/cli/check/relations.d.ts.map +1 -1
  68. package/dist/cli/check/relations.js +55 -4
  69. package/dist/cli/check/relations.js.map +1 -1
  70. package/dist/cli/check.d.ts.map +1 -1
  71. package/dist/cli/check.js +7 -4
  72. package/dist/cli/check.js.map +1 -1
  73. package/dist/cli/create.d.ts.map +1 -1
  74. package/dist/cli/create.js +32 -0
  75. package/dist/cli/create.js.map +1 -1
  76. package/dist/cli/describe.d.ts.map +1 -1
  77. package/dist/cli/describe.js +71 -7
  78. package/dist/cli/describe.js.map +1 -1
  79. package/dist/cli/docs.d.ts.map +1 -1
  80. package/dist/cli/docs.js +4 -3
  81. package/dist/cli/docs.js.map +1 -1
  82. package/dist/cli/doctor.d.ts +18 -1
  83. package/dist/cli/doctor.d.ts.map +1 -1
  84. package/dist/cli/doctor.js +58 -5
  85. package/dist/cli/doctor.js.map +1 -1
  86. package/dist/cli/document-schema.d.ts +2 -0
  87. package/dist/cli/document-schema.d.ts.map +1 -1
  88. package/dist/cli/document-schema.js +154 -5
  89. package/dist/cli/document-schema.js.map +1 -1
  90. package/dist/cli/index.d.ts +1 -1
  91. package/dist/cli/index.d.ts.map +1 -1
  92. package/dist/cli/types.d.ts.map +1 -1
  93. package/dist/cli/types.js +16 -2
  94. package/dist/cli/types.js.map +1 -1
  95. package/dist/clock-readers.d.ts +18 -0
  96. package/dist/clock-readers.d.ts.map +1 -0
  97. package/dist/clock-readers.js +70 -0
  98. package/dist/clock-readers.js.map +1 -0
  99. package/dist/clock.d.ts +30 -0
  100. package/dist/clock.d.ts.map +1 -0
  101. package/dist/clock.js +41 -0
  102. package/dist/clock.js.map +1 -0
  103. package/dist/columns.d.ts.map +1 -1
  104. package/dist/columns.js +2 -1
  105. package/dist/columns.js.map +1 -1
  106. package/dist/conformance/fixtures.d.ts.map +1 -1
  107. package/dist/conformance/fixtures.js +491 -43
  108. package/dist/conformance/fixtures.js.map +1 -1
  109. package/dist/coverage-words.d.ts +18 -0
  110. package/dist/coverage-words.d.ts.map +1 -0
  111. package/dist/coverage-words.js +18 -0
  112. package/dist/coverage-words.js.map +1 -0
  113. package/dist/days.d.ts +53 -4
  114. package/dist/days.d.ts.map +1 -1
  115. package/dist/days.js +136 -16
  116. package/dist/days.js.map +1 -1
  117. package/dist/describe.d.ts +1 -0
  118. package/dist/describe.d.ts.map +1 -1
  119. package/dist/describe.js +1 -0
  120. package/dist/describe.js.map +1 -1
  121. package/dist/document/act-findings.d.ts.map +1 -1
  122. package/dist/document/act-findings.js +32 -4
  123. package/dist/document/act-findings.js.map +1 -1
  124. package/dist/document/amount.d.ts +4 -0
  125. package/dist/document/amount.d.ts.map +1 -0
  126. package/dist/document/amount.js +22 -0
  127. package/dist/document/amount.js.map +1 -0
  128. package/dist/document/block-context.d.ts.map +1 -1
  129. package/dist/document/block-context.js +1 -0
  130. package/dist/document/block-context.js.map +1 -1
  131. package/dist/document/blocks.d.ts +33 -10
  132. package/dist/document/blocks.d.ts.map +1 -1
  133. package/dist/document/blocks.js +139 -25
  134. package/dist/document/blocks.js.map +1 -1
  135. package/dist/document/brand-check.d.ts +5 -0
  136. package/dist/document/brand-check.d.ts.map +1 -1
  137. package/dist/document/brand-check.js +16 -2
  138. package/dist/document/brand-check.js.map +1 -1
  139. package/dist/document/compile-checked.d.ts.map +1 -1
  140. package/dist/document/compile-checked.js +12 -4
  141. package/dist/document/compile-checked.js.map +1 -1
  142. package/dist/document/compile.d.ts +0 -2
  143. package/dist/document/compile.d.ts.map +1 -1
  144. package/dist/document/compile.js +49 -24
  145. package/dist/document/compile.js.map +1 -1
  146. package/dist/document/compiled.d.ts +6 -2
  147. package/dist/document/compiled.d.ts.map +1 -1
  148. package/dist/document/compiled.js +94 -26
  149. package/dist/document/compiled.js.map +1 -1
  150. package/dist/document/computed-values.d.ts +3 -0
  151. package/dist/document/computed-values.d.ts.map +1 -1
  152. package/dist/document/computed-values.js +12 -2
  153. package/dist/document/computed-values.js.map +1 -1
  154. package/dist/document/describe-coverage.d.ts +3 -0
  155. package/dist/document/describe-coverage.d.ts.map +1 -1
  156. package/dist/document/describe-coverage.js +14 -6
  157. package/dist/document/describe-coverage.js.map +1 -1
  158. package/dist/document/describe-place.d.ts +6 -2
  159. package/dist/document/describe-place.d.ts.map +1 -1
  160. package/dist/document/describe-place.js +17 -9
  161. package/dist/document/describe-place.js.map +1 -1
  162. package/dist/document/diff.d.ts +2 -0
  163. package/dist/document/diff.d.ts.map +1 -1
  164. package/dist/document/diff.js +70 -11
  165. package/dist/document/diff.js.map +1 -1
  166. package/dist/document/durations.d.ts +8 -0
  167. package/dist/document/durations.d.ts.map +1 -0
  168. package/dist/document/durations.js +82 -0
  169. package/dist/document/durations.js.map +1 -0
  170. package/dist/document/edit.d.ts +1 -1
  171. package/dist/document/edit.d.ts.map +1 -1
  172. package/dist/document/edit.js +436 -27
  173. package/dist/document/edit.js.map +1 -1
  174. package/dist/document/expr/evaluate.d.ts +26 -1
  175. package/dist/document/expr/evaluate.d.ts.map +1 -1
  176. package/dist/document/expr/evaluate.js +55 -4
  177. package/dist/document/expr/evaluate.js.map +1 -1
  178. package/dist/document/field-spec.d.ts.map +1 -1
  179. package/dist/document/field-spec.js +15 -1
  180. package/dist/document/field-spec.js.map +1 -1
  181. package/dist/document/format-findings.d.ts +4 -0
  182. package/dist/document/format-findings.d.ts.map +1 -0
  183. package/dist/document/format-findings.js +39 -0
  184. package/dist/document/format-findings.js.map +1 -0
  185. package/dist/document/format-rules.d.ts +8 -0
  186. package/dist/document/format-rules.d.ts.map +1 -0
  187. package/dist/document/format-rules.js +19 -0
  188. package/dist/document/format-rules.js.map +1 -0
  189. package/dist/document/format-words.d.ts +9 -0
  190. package/dist/document/format-words.d.ts.map +1 -0
  191. package/dist/document/format-words.js +31 -0
  192. package/dist/document/format-words.js.map +1 -0
  193. package/dist/document/framework-path.d.ts +11 -0
  194. package/dist/document/framework-path.d.ts.map +1 -0
  195. package/dist/document/framework-path.js +122 -0
  196. package/dist/document/framework-path.js.map +1 -0
  197. package/dist/document/graview-template.d.ts +2 -2
  198. package/dist/document/index.d.ts +2 -2
  199. package/dist/document/index.d.ts.map +1 -1
  200. package/dist/document/index.js +1 -1
  201. package/dist/document/index.js.map +1 -1
  202. package/dist/document/linked-findings.d.ts +5 -0
  203. package/dist/document/linked-findings.d.ts.map +1 -0
  204. package/dist/document/linked-findings.js +100 -0
  205. package/dist/document/linked-findings.js.map +1 -0
  206. package/dist/document/migrate.d.ts +1 -0
  207. package/dist/document/migrate.d.ts.map +1 -1
  208. package/dist/document/migrate.js +48 -1
  209. package/dist/document/migrate.js.map +1 -1
  210. package/dist/document/money.d.ts +14 -0
  211. package/dist/document/money.d.ts.map +1 -0
  212. package/dist/document/money.js +14 -0
  213. package/dist/document/money.js.map +1 -0
  214. package/dist/document/policy-words.d.ts +4 -0
  215. package/dist/document/policy-words.d.ts.map +1 -1
  216. package/dist/document/policy-words.js +34 -4
  217. package/dist/document/policy-words.js.map +1 -1
  218. package/dist/document/right-names.d.ts +10 -0
  219. package/dist/document/right-names.d.ts.map +1 -0
  220. package/dist/document/right-names.js +57 -0
  221. package/dist/document/right-names.js.map +1 -0
  222. package/dist/document/rule-line.d.ts.map +1 -1
  223. package/dist/document/rule-line.js +16 -12
  224. package/dist/document/rule-line.js.map +1 -1
  225. package/dist/document/rules.d.ts.map +1 -1
  226. package/dist/document/rules.js +15 -6
  227. package/dist/document/rules.js.map +1 -1
  228. package/dist/document/schema.d.ts +142 -22
  229. package/dist/document/schema.d.ts.map +1 -1
  230. package/dist/document/schema.js +86 -10
  231. package/dist/document/schema.js.map +1 -1
  232. package/dist/document/template-parse.d.ts.map +1 -1
  233. package/dist/document/template-parse.js +45 -5
  234. package/dist/document/template-parse.js.map +1 -1
  235. package/dist/document/template.d.ts +16 -14
  236. package/dist/document/template.d.ts.map +1 -1
  237. package/dist/document/template.js +52 -30
  238. package/dist/document/template.js.map +1 -1
  239. package/dist/document/thumbnail.d.ts.map +1 -1
  240. package/dist/document/thumbnail.js +4 -3
  241. package/dist/document/thumbnail.js.map +1 -1
  242. package/dist/document/to-document.d.ts +0 -1
  243. package/dist/document/to-document.d.ts.map +1 -1
  244. package/dist/document/to-document.js +30 -2
  245. package/dist/document/to-document.js.map +1 -1
  246. package/dist/document/view-specs.d.ts.map +1 -1
  247. package/dist/document/view-specs.js +3 -0
  248. package/dist/document/view-specs.js.map +1 -1
  249. package/dist/document/views.d.ts +38 -4
  250. package/dist/document/views.d.ts.map +1 -1
  251. package/dist/document/views.js +81 -26
  252. package/dist/document/views.js.map +1 -1
  253. package/dist/document.schema.json +1184 -141
  254. package/dist/excerpt-of.d.ts +14 -0
  255. package/dist/excerpt-of.d.ts.map +1 -0
  256. package/dist/excerpt-of.js +120 -0
  257. package/dist/excerpt-of.js.map +1 -0
  258. package/dist/excerpt.d.ts +9 -0
  259. package/dist/excerpt.d.ts.map +1 -0
  260. package/dist/excerpt.js +43 -0
  261. package/dist/excerpt.js.map +1 -0
  262. package/dist/field-sight.d.ts +33 -0
  263. package/dist/field-sight.d.ts.map +1 -0
  264. package/dist/field-sight.js +313 -0
  265. package/dist/field-sight.js.map +1 -0
  266. package/dist/forms.d.ts +2 -0
  267. package/dist/forms.d.ts.map +1 -1
  268. package/dist/forms.js +3 -0
  269. package/dist/forms.js.map +1 -1
  270. package/dist/graph/archived.d.ts +34 -0
  271. package/dist/graph/archived.d.ts.map +1 -0
  272. package/dist/graph/archived.js +25 -0
  273. package/dist/graph/archived.js.map +1 -0
  274. package/dist/graph/diff.d.ts +16 -0
  275. package/dist/graph/diff.d.ts.map +1 -1
  276. package/dist/graph/diff.js +20 -1
  277. package/dist/graph/diff.js.map +1 -1
  278. package/dist/graph/graph.d.ts +37 -13
  279. package/dist/graph/graph.d.ts.map +1 -1
  280. package/dist/graph/graph.js +84 -41
  281. package/dist/graph/graph.js.map +1 -1
  282. package/dist/graph/tracked.d.ts +8 -8
  283. package/dist/graph/tracked.d.ts.map +1 -1
  284. package/dist/graph/tracked.js +15 -20
  285. package/dist/graph/tracked.js.map +1 -1
  286. package/dist/graph/types.d.ts +16 -8
  287. package/dist/graph/types.d.ts.map +1 -1
  288. package/dist/graph/types.js.map +1 -1
  289. package/dist/grid-sort.d.ts +20 -0
  290. package/dist/grid-sort.d.ts.map +1 -0
  291. package/dist/grid-sort.js +58 -0
  292. package/dist/grid-sort.js.map +1 -0
  293. package/dist/history.d.ts +88 -0
  294. package/dist/history.d.ts.map +1 -0
  295. package/dist/history.js +146 -0
  296. package/dist/history.js.map +1 -0
  297. package/dist/import/coerce.d.ts +45 -0
  298. package/dist/import/coerce.d.ts.map +1 -0
  299. package/dist/import/coerce.js +252 -0
  300. package/dist/import/coerce.js.map +1 -0
  301. package/dist/import/csv.d.ts +16 -0
  302. package/dist/import/csv.d.ts.map +1 -0
  303. package/dist/import/csv.js +77 -0
  304. package/dist/import/csv.js.map +1 -0
  305. package/dist/import/index.d.ts +17 -0
  306. package/dist/import/index.d.ts.map +1 -0
  307. package/dist/import/index.js +13 -0
  308. package/dist/import/index.js.map +1 -0
  309. package/dist/import/mapping.d.ts +99 -0
  310. package/dist/import/mapping.d.ts.map +1 -0
  311. package/dist/import/mapping.js +182 -0
  312. package/dist/import/mapping.js.map +1 -0
  313. package/dist/import/rows.d.ts +116 -0
  314. package/dist/import/rows.d.ts.map +1 -0
  315. package/dist/import/rows.js +584 -0
  316. package/dist/import/rows.js.map +1 -0
  317. package/dist/index.d.ts +53 -26
  318. package/dist/index.d.ts.map +1 -1
  319. package/dist/index.js +38 -18
  320. package/dist/index.js.map +1 -1
  321. package/dist/invariants/engine.d.ts +5 -1
  322. package/dist/invariants/engine.d.ts.map +1 -1
  323. package/dist/invariants/engine.js +4 -3
  324. package/dist/invariants/engine.js.map +1 -1
  325. package/dist/invariants/types.d.ts +18 -3
  326. package/dist/invariants/types.d.ts.map +1 -1
  327. package/dist/json-schema.d.ts +1 -0
  328. package/dist/json-schema.d.ts.map +1 -1
  329. package/dist/json-schema.js +2 -0
  330. package/dist/json-schema.js.map +1 -1
  331. package/dist/kind-list.d.ts +78 -0
  332. package/dist/kind-list.d.ts.map +1 -0
  333. package/dist/kind-list.js +176 -0
  334. package/dist/kind-list.js.map +1 -0
  335. package/dist/labels.d.ts.map +1 -1
  336. package/dist/labels.js +2 -1
  337. package/dist/labels.js.map +1 -1
  338. package/dist/lines.d.ts +1 -0
  339. package/dist/lines.d.ts.map +1 -1
  340. package/dist/lines.js +5 -3
  341. package/dist/lines.js.map +1 -1
  342. package/dist/linked.d.ts +95 -0
  343. package/dist/linked.d.ts.map +1 -0
  344. package/dist/linked.js +181 -0
  345. package/dist/linked.js.map +1 -0
  346. package/dist/markdown.d.ts +102 -0
  347. package/dist/markdown.d.ts.map +1 -0
  348. package/dist/markdown.js +460 -0
  349. package/dist/markdown.js.map +1 -0
  350. package/dist/mutations/arg-shape.d.ts +95 -0
  351. package/dist/mutations/arg-shape.d.ts.map +1 -0
  352. package/dist/mutations/arg-shape.js +101 -0
  353. package/dist/mutations/arg-shape.js.map +1 -0
  354. package/dist/mutations/define-mutation.d.ts +48 -2
  355. package/dist/mutations/define-mutation.d.ts.map +1 -1
  356. package/dist/mutations/define-mutation.js +103 -36
  357. package/dist/mutations/define-mutation.js.map +1 -1
  358. package/dist/mutations/derive-edits.d.ts +16 -1
  359. package/dist/mutations/derive-edits.d.ts.map +1 -1
  360. package/dist/mutations/derive-edits.js +146 -56
  361. package/dist/mutations/derive-edits.js.map +1 -1
  362. package/dist/mutations/derive-repeats.d.ts +8 -0
  363. package/dist/mutations/derive-repeats.d.ts.map +1 -0
  364. package/dist/mutations/derive-repeats.js +118 -0
  365. package/dist/mutations/derive-repeats.js.map +1 -0
  366. package/dist/mutations/derived-names.d.ts +22 -0
  367. package/dist/mutations/derived-names.d.ts.map +1 -0
  368. package/dist/mutations/derived-names.js +21 -0
  369. package/dist/mutations/derived-names.js.map +1 -0
  370. package/dist/mutations/edit-start.d.ts +28 -0
  371. package/dist/mutations/edit-start.d.ts.map +1 -0
  372. package/dist/mutations/edit-start.js +24 -0
  373. package/dist/mutations/edit-start.js.map +1 -0
  374. package/dist/mutations/form.d.ts +33 -1
  375. package/dist/mutations/form.d.ts.map +1 -1
  376. package/dist/mutations/form.js +23 -2
  377. package/dist/mutations/form.js.map +1 -1
  378. package/dist/mutations/invalid-arguments.d.ts +14 -0
  379. package/dist/mutations/invalid-arguments.d.ts.map +1 -0
  380. package/dist/mutations/invalid-arguments.js +18 -0
  381. package/dist/mutations/invalid-arguments.js.map +1 -0
  382. package/dist/mutations/keep-link.d.ts +27 -0
  383. package/dist/mutations/keep-link.d.ts.map +1 -0
  384. package/dist/mutations/keep-link.js +56 -0
  385. package/dist/mutations/keep-link.js.map +1 -0
  386. package/dist/mutations/kept-arguments.d.ts +26 -0
  387. package/dist/mutations/kept-arguments.d.ts.map +1 -0
  388. package/dist/mutations/kept-arguments.js +77 -0
  389. package/dist/mutations/kept-arguments.js.map +1 -0
  390. package/dist/mutations/node-ref.d.ts +0 -80
  391. package/dist/mutations/node-ref.d.ts.map +1 -1
  392. package/dist/mutations/node-ref.js +0 -93
  393. package/dist/mutations/node-ref.js.map +1 -1
  394. package/dist/mutations/types.d.ts +17 -1
  395. package/dist/mutations/types.d.ts.map +1 -1
  396. package/dist/mutations/words.d.ts +0 -13
  397. package/dist/mutations/words.d.ts.map +1 -1
  398. package/dist/mutations/words.js +1 -12
  399. package/dist/mutations/words.js.map +1 -1
  400. package/dist/navigate.d.ts +13 -0
  401. package/dist/navigate.d.ts.map +1 -0
  402. package/dist/navigate.js +13 -0
  403. package/dist/navigate.js.map +1 -0
  404. package/dist/ops/digest.d.ts +33 -0
  405. package/dist/ops/digest.d.ts.map +1 -0
  406. package/dist/ops/digest.js +47 -0
  407. package/dist/ops/digest.js.map +1 -0
  408. package/dist/ops/kept-fields.d.ts +7 -0
  409. package/dist/ops/kept-fields.d.ts.map +1 -0
  410. package/dist/ops/kept-fields.js +24 -0
  411. package/dist/ops/kept-fields.js.map +1 -0
  412. package/dist/ops/lineage.d.ts +43 -0
  413. package/dist/ops/lineage.d.ts.map +1 -0
  414. package/dist/ops/lineage.js +27 -0
  415. package/dist/ops/lineage.js.map +1 -0
  416. package/dist/ops/log.d.ts +6 -0
  417. package/dist/ops/log.d.ts.map +1 -1
  418. package/dist/ops/log.js +20 -12
  419. package/dist/ops/log.js.map +1 -1
  420. package/dist/ops/provenance.d.ts +68 -0
  421. package/dist/ops/provenance.d.ts.map +1 -0
  422. package/dist/ops/provenance.js +83 -0
  423. package/dist/ops/provenance.js.map +1 -0
  424. package/dist/ops/suggestions.d.ts +26 -0
  425. package/dist/ops/suggestions.d.ts.map +1 -0
  426. package/dist/ops/suggestions.js +21 -0
  427. package/dist/ops/suggestions.js.map +1 -0
  428. package/dist/ops/tidying.d.ts +48 -0
  429. package/dist/ops/tidying.d.ts.map +1 -0
  430. package/dist/ops/tidying.js +84 -0
  431. package/dist/ops/tidying.js.map +1 -0
  432. package/dist/ops/types.d.ts +42 -0
  433. package/dist/ops/types.d.ts.map +1 -1
  434. package/dist/ops/undo.d.ts.map +1 -1
  435. package/dist/ops/undo.js +10 -0
  436. package/dist/ops/undo.js.map +1 -1
  437. package/dist/ops/withheld.d.ts +25 -2
  438. package/dist/ops/withheld.d.ts.map +1 -1
  439. package/dist/ops/withheld.js +6 -15
  440. package/dist/ops/withheld.js.map +1 -1
  441. package/dist/past.d.ts +35 -0
  442. package/dist/past.d.ts.map +1 -0
  443. package/dist/past.js +173 -0
  444. package/dist/past.js.map +1 -0
  445. package/dist/permissions/policy.d.ts +13 -1
  446. package/dist/permissions/policy.d.ts.map +1 -1
  447. package/dist/permissions/policy.js +44 -9
  448. package/dist/permissions/policy.js.map +1 -1
  449. package/dist/permissions/sight.d.ts +40 -2
  450. package/dist/permissions/sight.d.ts.map +1 -1
  451. package/dist/permissions/sight.js +25 -2
  452. package/dist/permissions/sight.js.map +1 -1
  453. package/dist/permissions/types.d.ts +21 -0
  454. package/dist/permissions/types.d.ts.map +1 -1
  455. package/dist/permissions/types.js.map +1 -1
  456. package/dist/places.d.ts +6 -51
  457. package/dist/places.d.ts.map +1 -1
  458. package/dist/places.js +50 -144
  459. package/dist/places.js.map +1 -1
  460. package/dist/provenance.d.ts +14 -0
  461. package/dist/provenance.d.ts.map +1 -0
  462. package/dist/provenance.js +13 -0
  463. package/dist/provenance.js.map +1 -0
  464. package/dist/repeat-words.d.ts +13 -0
  465. package/dist/repeat-words.d.ts.map +1 -0
  466. package/dist/repeat-words.js +56 -0
  467. package/dist/repeat-words.js.map +1 -0
  468. package/dist/repeat.d.ts +59 -0
  469. package/dist/repeat.d.ts.map +1 -0
  470. package/dist/repeat.js +155 -0
  471. package/dist/repeat.js.map +1 -0
  472. package/dist/scaffold/agents.d.ts.map +1 -1
  473. package/dist/scaffold/agents.js +13 -0
  474. package/dist/scaffold/agents.js.map +1 -1
  475. package/dist/scaffold/project.d.ts.map +1 -1
  476. package/dist/scaffold/project.js +18 -0
  477. package/dist/scaffold/project.js.map +1 -1
  478. package/dist/scaffold/ui.d.ts.map +1 -1
  479. package/dist/scaffold/ui.js +17 -7
  480. package/dist/scaffold/ui.js.map +1 -1
  481. package/dist/scene-districts.d.ts +2 -1
  482. package/dist/scene-districts.d.ts.map +1 -1
  483. package/dist/scene-districts.js +2 -1
  484. package/dist/scene-districts.js.map +1 -1
  485. package/dist/scene.d.ts +4 -2
  486. package/dist/scene.d.ts.map +1 -1
  487. package/dist/scene.js +2 -1
  488. package/dist/scene.js.map +1 -1
  489. package/dist/schema/amount-mark.d.ts +13 -0
  490. package/dist/schema/amount-mark.d.ts.map +1 -0
  491. package/dist/schema/amount-mark.js +20 -0
  492. package/dist/schema/amount-mark.js.map +1 -0
  493. package/dist/schema/amount-words.d.ts +12 -0
  494. package/dist/schema/amount-words.d.ts.map +1 -0
  495. package/dist/schema/amount-words.js +31 -0
  496. package/dist/schema/amount-words.js.map +1 -0
  497. package/dist/schema/app-address.d.ts +5 -0
  498. package/dist/schema/app-address.d.ts.map +1 -0
  499. package/dist/schema/app-address.js +10 -0
  500. package/dist/schema/app-address.js.map +1 -0
  501. package/dist/schema/app-link-field.d.ts +4 -0
  502. package/dist/schema/app-link-field.d.ts.map +1 -0
  503. package/dist/schema/app-link-field.js +19 -0
  504. package/dist/schema/app-link-field.js.map +1 -0
  505. package/dist/schema/app-link.d.ts +38 -0
  506. package/dist/schema/app-link.d.ts.map +1 -0
  507. package/dist/schema/app-link.js +38 -0
  508. package/dist/schema/app-link.js.map +1 -0
  509. package/dist/schema/define-node.d.ts +39 -92
  510. package/dist/schema/define-node.d.ts.map +1 -1
  511. package/dist/schema/define-node.js +8 -246
  512. package/dist/schema/define-node.js.map +1 -1
  513. package/dist/schema/field-words.d.ts +45 -0
  514. package/dist/schema/field-words.d.ts.map +1 -0
  515. package/dist/schema/field-words.js +124 -0
  516. package/dist/schema/field-words.js.map +1 -0
  517. package/dist/schema/files.d.ts +8 -0
  518. package/dist/schema/files.d.ts.map +1 -1
  519. package/dist/schema/files.js.map +1 -1
  520. package/dist/schema/json-schema.d.ts +6 -1
  521. package/dist/schema/json-schema.d.ts.map +1 -1
  522. package/dist/schema/json-schema.js +101 -2
  523. package/dist/schema/json-schema.js.map +1 -1
  524. package/dist/schema/linked-field.d.ts +6 -0
  525. package/dist/schema/linked-field.d.ts.map +1 -0
  526. package/dist/schema/linked-field.js +34 -0
  527. package/dist/schema/linked-field.js.map +1 -0
  528. package/dist/schema/linked-reads.d.ts +20 -0
  529. package/dist/schema/linked-reads.d.ts.map +1 -0
  530. package/dist/schema/linked-reads.js +69 -0
  531. package/dist/schema/linked-reads.js.map +1 -0
  532. package/dist/schema/linked-schema.d.ts +5 -0
  533. package/dist/schema/linked-schema.d.ts.map +1 -0
  534. package/dist/schema/linked-schema.js +9 -0
  535. package/dist/schema/linked-schema.js.map +1 -0
  536. package/dist/schema/linked.d.ts +147 -0
  537. package/dist/schema/linked.d.ts.map +1 -0
  538. package/dist/schema/linked.js +151 -0
  539. package/dist/schema/linked.js.map +1 -0
  540. package/dist/schema/markdown-field.d.ts +4 -0
  541. package/dist/schema/markdown-field.d.ts.map +1 -0
  542. package/dist/schema/markdown-field.js +20 -0
  543. package/dist/schema/markdown-field.js.map +1 -0
  544. package/dist/schema/markdown.d.ts +6 -0
  545. package/dist/schema/markdown.d.ts.map +1 -0
  546. package/dist/schema/markdown.js +27 -0
  547. package/dist/schema/markdown.js.map +1 -0
  548. package/dist/schema/reading.d.ts +86 -0
  549. package/dist/schema/reading.d.ts.map +1 -0
  550. package/dist/schema/reading.js +325 -0
  551. package/dist/schema/reading.js.map +1 -0
  552. package/dist/schema/repeat-field.d.ts +5 -0
  553. package/dist/schema/repeat-field.d.ts.map +1 -0
  554. package/dist/schema/repeat-field.js +20 -0
  555. package/dist/schema/repeat-field.js.map +1 -0
  556. package/dist/schema/schema.d.ts.map +1 -1
  557. package/dist/schema/schema.js +12 -1
  558. package/dist/schema/schema.js.map +1 -1
  559. package/dist/schema/to-json-schema.d.ts +14 -0
  560. package/dist/schema/to-json-schema.d.ts.map +1 -0
  561. package/dist/schema/to-json-schema.js +616 -0
  562. package/dist/schema/to-json-schema.js.map +1 -0
  563. package/dist/schema/typed-field-builders.d.ts +8 -0
  564. package/dist/schema/typed-field-builders.d.ts.map +1 -0
  565. package/dist/schema/typed-field-builders.js +30 -0
  566. package/dist/schema/typed-field-builders.js.map +1 -0
  567. package/dist/schema/typed-field-of.d.ts +4 -0
  568. package/dist/schema/typed-field-of.d.ts.map +1 -0
  569. package/dist/schema/typed-field-of.js +14 -0
  570. package/dist/schema/typed-field-of.js.map +1 -0
  571. package/dist/schema/typed-fields.d.ts +11 -0
  572. package/dist/schema/typed-fields.d.ts.map +1 -0
  573. package/dist/schema/typed-fields.js +16 -0
  574. package/dist/schema/typed-fields.js.map +1 -0
  575. package/dist/schema/types.d.ts +31 -0
  576. package/dist/schema/types.d.ts.map +1 -1
  577. package/dist/schema/value-words.d.ts +21 -0
  578. package/dist/schema/value-words.d.ts.map +1 -0
  579. package/dist/schema/value-words.js +32 -0
  580. package/dist/schema/value-words.js.map +1 -0
  581. package/dist/search.d.ts +91 -4
  582. package/dist/search.d.ts.map +1 -1
  583. package/dist/search.js +317 -54
  584. package/dist/search.js.map +1 -1
  585. package/dist/seat-of.d.ts +9 -0
  586. package/dist/seat-of.d.ts.map +1 -0
  587. package/dist/seat-of.js +14 -0
  588. package/dist/seat-of.js.map +1 -0
  589. package/dist/seat.d.ts +19 -0
  590. package/dist/seat.d.ts.map +1 -0
  591. package/dist/seat.js +19 -0
  592. package/dist/seat.js.map +1 -0
  593. package/dist/seen.d.ts +15 -45
  594. package/dist/seen.d.ts.map +1 -1
  595. package/dist/seen.js +49 -135
  596. package/dist/seen.js.map +1 -1
  597. package/dist/store.d.ts +104 -1
  598. package/dist/store.d.ts.map +1 -1
  599. package/dist/store.js +214 -30
  600. package/dist/store.js.map +1 -1
  601. package/dist/theme/derive.d.ts +16 -0
  602. package/dist/theme/derive.d.ts.map +1 -1
  603. package/dist/theme/derive.js +14 -0
  604. package/dist/theme/derive.js.map +1 -1
  605. package/dist/theme/marks.d.ts +19 -2
  606. package/dist/theme/marks.d.ts.map +1 -1
  607. package/dist/theme/marks.js +67 -2
  608. package/dist/theme/marks.js.map +1 -1
  609. package/dist/theme/types.d.ts +14 -3
  610. package/dist/theme/types.d.ts.map +1 -1
  611. package/dist/theme/types.js.map +1 -1
  612. package/dist/tidying.d.ts +62 -0
  613. package/dist/tidying.d.ts.map +1 -0
  614. package/dist/tidying.js +131 -0
  615. package/dist/tidying.js.map +1 -0
  616. package/dist/typed.d.ts +12 -3
  617. package/dist/typed.d.ts.map +1 -1
  618. package/dist/typed.js.map +1 -1
  619. package/dist/validate-graph.d.ts.map +1 -1
  620. package/dist/validate-graph.js +3 -10
  621. package/dist/validate-graph.js.map +1 -1
  622. package/dist/version.d.ts +1 -1
  623. package/dist/version.js +1 -1
  624. package/dist/via.d.ts.map +1 -1
  625. package/dist/via.js +2 -1
  626. package/dist/via.js.map +1 -1
  627. package/dist/views/address.d.ts +13 -0
  628. package/dist/views/address.d.ts.map +1 -0
  629. package/dist/views/address.js +29 -0
  630. package/dist/views/address.js.map +1 -0
  631. package/dist/views/types.d.ts +106 -8
  632. package/dist/views/types.d.ts.map +1 -1
  633. package/dist/views/types.js +24 -4
  634. package/dist/views/types.js.map +1 -1
  635. package/dist/village.d.ts +63 -0
  636. package/dist/village.d.ts.map +1 -0
  637. package/dist/village.js +143 -0
  638. package/dist/village.js.map +1 -0
  639. package/dist/watched.d.ts +12 -45
  640. package/dist/watched.d.ts.map +1 -1
  641. package/dist/watched.js +7 -119
  642. package/dist/watched.js.map +1 -1
  643. package/dist/words.d.ts +33 -0
  644. package/dist/words.d.ts.map +1 -0
  645. package/dist/words.js +36 -0
  646. package/dist/words.js.map +1 -0
  647. package/package.json +57 -2
package/dist/past.d.ts ADDED
@@ -0,0 +1,35 @@
1
+ import type { DeclarationMark, HistoryHost } from "./history.js";
2
+ import type { AnySchema } from "./schema/schema.js";
3
+ import type { PastDeclaration, Store } from "./store.js";
4
+ /** The declaration a moment was made under: the last mark at or before `seq` that carries one. Absent, the store's own. */
5
+ export declare function declarationAt(marks: readonly DeclarationMark[] | undefined, seq: number): PastDeclaration | undefined;
6
+ /**
7
+ * THE SEQ A TIME FALLS AT (Roadmap f-playback): every op made at or
8
+ * before `when` is before it. Before the first op the log holds, its
9
+ * horizon; after the last, its length.
10
+ */
11
+ export declare function seqAt(store: Pick<Store<AnySchema>, "log">, when: string | Date): number;
12
+ /**
13
+ * THE APP AS IT STOOD (Roadmap f-playback): a store read, never changed,
14
+ * holding the graph and the log as they were before `when` — a seq (the
15
+ * ops before it are in, none after), or a time (every op made at or
16
+ * before it). Its graph, its log, its problems and its sight are the
17
+ * past's own: `seenBy` on it serves a seat what that seat could see then,
18
+ * and asked of a seat's view (`seenBy`) it is the past as that seat could
19
+ * see it, never the whole store's. It offers no act — not one declared or
20
+ * derived — and refuses every change (`PastError`).
21
+ *
22
+ * A seek folds from the nearest point it can: an epoch at or before
23
+ * `when`, or a point kept in memory for this store every `pastEvery` ops
24
+ * (`StoreOptions`, default 64) as an earlier seek passed it — never the
25
+ * whole log twice. `declaration` is the one the moment was made under,
26
+ * when a host knows it was another (`pastAt` reads it from the host's
27
+ * marks); absent, the store's own. A seq behind the undo horizon (FR-23)
28
+ * is in the archive, not here, and is refused.
29
+ */
30
+ export declare function pastOf<S extends AnySchema>(store: Store<S>, when: number | string | Date, options?: {
31
+ readonly declaration?: PastDeclaration | undefined;
32
+ }): Store<S>;
33
+ /** The app as it stood at `when`, under the declaration the host says it was made under: `pastOf` with the host's marks read. */
34
+ export declare function pastAt<S extends AnySchema>(store: Store<S>, when: number | string | Date, host?: HistoryHost): Store<S>;
35
+ //# sourceMappingURL=past.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"past.d.ts","sourceRoot":"","sources":["../src/past.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAKjE,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,oBAAoB,CAAC;AAElE,OAAO,KAAK,EAAE,eAAe,EAAE,KAAK,EAAgB,MAAM,YAAY,CAAC;AAEvE,2HAA2H;AAC3H,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAOrH;AAyBD;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMvF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;CAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAqEzK;AA+BD,iIAAiI;AACjI,wBAAgB,MAAM,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,IAAI,GAAE,WAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAG3H"}
package/dist/past.js ADDED
@@ -0,0 +1,173 @@
1
+ import { seatOf } from "./seat-of.js";
2
+ /** The declaration a moment was made under: the last mark at or before `seq` that carries one. Absent, the store's own. */
3
+ export function declarationAt(marks, seq) {
4
+ let found;
5
+ for (const mark of [...(marks ?? [])].sort((a, b) => a.seq - b.seq)) {
6
+ if (mark.seq > seq)
7
+ break;
8
+ if (mark.declaration)
9
+ found = mark.declaration;
10
+ }
11
+ return found;
12
+ }
13
+ const openedOf = (store) => store;
14
+ /** The points each store's past is folded from, oldest first, kept in memory as seeks pass them. */
15
+ const MARKS = new WeakMap();
16
+ /** The graph where each store's log begins, when no epoch says it, with the id of its first op. */
17
+ const REWOUND = new WeakMap();
18
+ /**
19
+ * THE SEQ A TIME FALLS AT (Roadmap f-playback): every op made at or
20
+ * before `when` is before it. Before the first op the log holds, its
21
+ * horizon; after the last, its length.
22
+ */
23
+ export function seqAt(store, when) {
24
+ const time = typeof when === "string" ? Date.parse(when) : when.getTime();
25
+ if (Number.isNaN(time))
26
+ throw new RangeError(`“${String(when)}” is not a time`);
27
+ const ops = store.log.all();
28
+ const after = ops.findIndex((op) => Date.parse(op.at) > time);
29
+ return after === -1 ? store.log.length : store.log.horizon + after;
30
+ }
31
+ /**
32
+ * THE APP AS IT STOOD (Roadmap f-playback): a store read, never changed,
33
+ * holding the graph and the log as they were before `when` — a seq (the
34
+ * ops before it are in, none after), or a time (every op made at or
35
+ * before it). Its graph, its log, its problems and its sight are the
36
+ * past's own: `seenBy` on it serves a seat what that seat could see then,
37
+ * and asked of a seat's view (`seenBy`) it is the past as that seat could
38
+ * see it, never the whole store's. It offers no act — not one declared or
39
+ * derived — and refuses every change (`PastError`).
40
+ *
41
+ * A seek folds from the nearest point it can: an epoch at or before
42
+ * `when`, or a point kept in memory for this store every `pastEvery` ops
43
+ * (`StoreOptions`, default 64) as an earlier seek passed it — never the
44
+ * whole log twice. `declaration` is the one the moment was made under,
45
+ * when a host knows it was another (`pastAt` reads it from the host's
46
+ * marks); absent, the store's own. A seq behind the undo horizon (FR-23)
47
+ * is in the archive, not here, and is refused.
48
+ */
49
+ export function pastOf(store, when, options = {}) {
50
+ const seat = seatOf(store);
51
+ if (seat)
52
+ return pastOf(seat.store, when, options).seenBy(seat.principal);
53
+ const inside = openedOf(store);
54
+ const log = store.log;
55
+ const first = log.horizon;
56
+ const seq = typeof when === "number" ? when : seqAt(store, when);
57
+ if (!Number.isInteger(seq) || seq < first || seq > log.length) {
58
+ throw new RangeError(`No moment at seq ${seq}: this store holds seqs ${first} to ${log.length}${first > 0 ? "; what is before its horizon is in the archive" : ""}`);
59
+ }
60
+ const ops = log.all();
61
+ const declared = options.declaration;
62
+ const schema = (declared?.schema ?? store.schema);
63
+ const epochs = log.epochs().filter((epoch) => epoch.seq <= seq);
64
+ const epoch = epochs.at(-1);
65
+ const start = epoch?.seq ?? first;
66
+ // A kept point is trusted while the op before it is the one it was taken after.
67
+ const idBefore = (at) => (at > first ? ops[at - 1 - first]?.id : undefined);
68
+ const marks = (MARKS.get(store) ?? []).filter((mark) => mark.seq <= log.length && idBefore(mark.seq) === mark.id);
69
+ MARKS.set(store, marks);
70
+ const mark = [...marks].reverse().find((one) => one.seq >= start && one.seq <= seq);
71
+ const from = mark?.seq ?? start;
72
+ const base = (mark?.base ?? epoch?.base ?? rewound(store));
73
+ // Judged as the store judges, so a default filled in on the way in is filled in again; a base the declaration no longer fits is held as written.
74
+ const Graphs = store.graph.constructor;
75
+ let graph;
76
+ try {
77
+ graph = Graphs.from(schema, base, { validate: inside.validate });
78
+ }
79
+ catch {
80
+ graph = Graphs.from(schema, base, { validate: false });
81
+ }
82
+ const every = store.pastEvery;
83
+ const keep = (after, id) => {
84
+ if (marks.some((one) => one.seq === after))
85
+ return;
86
+ marks.push({ seq: after, id, base: graph.snapshot() });
87
+ marks.sort((a, b) => a.seq - b.seq);
88
+ };
89
+ for (let next = from; next < seq; next++) {
90
+ const op = ops[next - first];
91
+ try {
92
+ fold(graph, op);
93
+ }
94
+ catch {
95
+ // An op that lands on nothing under this declaration is passed over: the past is shown, never refused.
96
+ }
97
+ if ((next + 1) % every === 0 && next + 1 < seq)
98
+ keep(next + 1, op.id);
99
+ }
100
+ // A long fold keeps where it ended too, so scrubbing about here folds little.
101
+ if (seq - from >= every)
102
+ keep(seq, idBefore(seq));
103
+ const at = ops[seq - 1 - first]?.at ?? epoch?.at;
104
+ const given = (key, value) => (value === undefined ? {} : { [key]: value });
105
+ // The store's own class, so this entry imports none of it (`seat-of.ts` says why).
106
+ const Made = store.constructor;
107
+ return new Made({
108
+ schema,
109
+ invariants: (declared?.invariants ?? inside.invariants),
110
+ invariantOptions: inside.invariantOptions,
111
+ ...given("policy", declared ? declared.policy : store.policy),
112
+ ...given("modules", declared?.modules ?? inside.declaredModules),
113
+ ...given("enabledModules", inside.startingModules),
114
+ intelligence: store.intelligence,
115
+ principal: inside.by,
116
+ log: ops.slice(0, seq - first),
117
+ epochs,
118
+ ...(first > 0 && !epochs.some((one) => one.horizon) ? { horizon: first } : {}),
119
+ snapshot: graph.snapshot(),
120
+ validate: false,
121
+ now: inside.now,
122
+ past: { seq, ...given("at", at), foldedFrom: from, folded: seq - from },
123
+ });
124
+ }
125
+ /**
126
+ * THE GRAPH WHERE THE LOG BEGINS, when no epoch says it (Roadmap
127
+ * f-playback): a store reopened with its log and its graph but not the
128
+ * epoch its seed began (a page's browser adapter keeps none) did not
129
+ * begin empty, so the past is not folded from empty. It is the graph
130
+ * after the log — the first epoch past it, else the graph held — with
131
+ * each op's inverse put back, newest first. Kept while the log begins
132
+ * with the same op.
133
+ */
134
+ function rewound(store) {
135
+ const ops = store.log.all();
136
+ const first = store.log.horizon;
137
+ const firstId = ops[0]?.id;
138
+ const kept = REWOUND.get(store);
139
+ if (kept && kept.firstId === firstId)
140
+ return kept.base;
141
+ const later = store.log.epochs().find((epoch) => epoch.seq > first);
142
+ const graph = store.graph.constructor.from(store.schema, (later?.base ?? store.graph.snapshot()), { validate: false });
143
+ for (let at = (later?.seq ?? store.log.length) - 1; at >= first; at--) {
144
+ try {
145
+ graph.applyPrimitives(ops[at - first].inverse, { restoring: true });
146
+ }
147
+ catch {
148
+ // An inverse that lands on nothing is passed over, as a fold passes over an op that does.
149
+ }
150
+ }
151
+ const base = graph.snapshot();
152
+ REWOUND.set(store, { firstId, base });
153
+ return base;
154
+ }
155
+ /** The app as it stood at `when`, under the declaration the host says it was made under: `pastOf` with the host's marks read. */
156
+ export function pastAt(store, when, host = {}) {
157
+ const seq = typeof when === "number" ? when : seqAt(store, when);
158
+ return pastOf(store, seq, { declaration: declarationAt(host.declarations, seq) });
159
+ }
160
+ /** One op folded onto a graph as `OperationLog.fold` lands each (`foldOp`): an undo puts back what was there, and a write an older declaration accepted and this one does not is held as written. */
161
+ function fold(graph, op) {
162
+ if (op.undoes !== undefined) {
163
+ graph.applyPrimitives(op.primitives, { restoring: true });
164
+ return;
165
+ }
166
+ try {
167
+ graph.applyPrimitives(op.primitives);
168
+ }
169
+ catch {
170
+ graph.applyPrimitives(op.primitives, { restoring: true });
171
+ }
172
+ }
173
+ //# sourceMappingURL=past.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"past.js","sourceRoot":"","sources":["../src/past.ts"],"names":[],"mappings":"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"}
@@ -52,7 +52,19 @@ subjectId?: string,
52
52
  /** How the refusal names an act and a kind: the store hands its titles and nouns. */
53
53
  words?: PolicyWords,
54
54
  /** The records the call names at the far end of the links it makes or breaks: an `ownEnd` grant holds them to the principal's own. */
55
- ends?: () => readonly unknown[]): {
55
+ ends?: () => readonly unknown[],
56
+ /**
57
+ * Who made the record a derived act is about. Riding only a grant to
58
+ * every role, the act reaches what this principal made (W-201).
59
+ */
60
+ madeBy?: () => string | undefined,
61
+ /**
62
+ * Whether the derived act takes a record out or folds it away — remove,
63
+ * archive, bring back or merge — rather than changing what it says. Riding
64
+ * the acts that make the kind, such an act reaches only what this principal
65
+ * made, whoever's grant it rides (W-201).
66
+ */
67
+ unmakes?: boolean): {
56
68
  readonly ok: true;
57
69
  } | {
58
70
  readonly ok: false;
@@ -1 +1 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/permissions/policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAKpE;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAMxD;AAED;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,WAAW,SAAS,KAAG,OAA4E,CAAC;AAE7H,0FAA0F;AAC1F,eAAO,MAAM,QAAQ,GAAI,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,WAAW,SAAS,KAAG,OACc,CAAC;AAE5F;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1C;AAOD;;;;;;GAMG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM;AACb;;;;;GAKG;AACH,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE;AACvB;;;GAGG;AACH,SAAS,CAAC,EAAE,MAAM;AAClB,qFAAqF;AACrF,KAAK,GAAE,WAAgB;AACvB,sIAAsI;AACtI,IAAI,CAAC,EAAE,MAAM,SAAS,OAAO,EAAE,GAC9B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAuE3E;AAwBD;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAEzF;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,GACZ,SAAS,MAAM,EAAE,CAInB;AAED,yEAAyE;AACzE,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAQzD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,SAAS,EACpD,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAC7C,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAWrC;AAED,4FAA4F;AAC5F,eAAO,MAAM,YAAY,GAAI,UAAU,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,KAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EACN,CAAC"}
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/permissions/policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAKpE;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAMxD;AAED;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,WAAW,SAAS,KAAG,OAA4E,CAAC;AAE7H,0FAA0F;AAC1F,eAAO,MAAM,QAAQ,GAAI,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,WAAW,SAAS,KAAG,OACc,CAAC;AAE5F;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1C;AAOD;;;;;;GAMG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM;AACb;;;;;GAKG;AACH,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE;AACvB;;;GAGG;AACH,SAAS,CAAC,EAAE,MAAM;AAClB,qFAAqF;AACrF,KAAK,GAAE,WAAgB;AACvB,sIAAsI;AACtI,IAAI,CAAC,EAAE,MAAM,SAAS,OAAO,EAAE;AAC/B;;;GAGG;AACH,MAAM,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS;AACjC;;;;;GAKG;AACH,OAAO,CAAC,EAAE,OAAO,GAChB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CA8F3E;AAwBD;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAEzF;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,GACZ,SAAS,MAAM,EAAE,CAInB;AAED,yEAAyE;AACzE,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAQzD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,SAAS,EACpD,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAC7C,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAWrC;AAED,4FAA4F;AAC5F,eAAO,MAAM,YAAY,GAAI,UAAU,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,KAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EACN,CAAC"}
@@ -52,7 +52,19 @@ subjectId,
52
52
  /** How the refusal names an act and a kind: the store hands its titles and nouns. */
53
53
  words = {},
54
54
  /** The records the call names at the far end of the links it makes or breaks: an `ownEnd` grant holds them to the principal's own. */
55
- ends) {
55
+ ends,
56
+ /**
57
+ * Who made the record a derived act is about. Riding only a grant to
58
+ * every role, the act reaches what this principal made (W-201).
59
+ */
60
+ madeBy,
61
+ /**
62
+ * Whether the derived act takes a record out or folds it away — remove,
63
+ * archive, bring back or merge — rather than changing what it says. Riding
64
+ * the acts that make the kind, such an act reaches only what this principal
65
+ * made, whoever's grant it rides (W-201).
66
+ */
67
+ unmakes) {
56
68
  // No policy means permission is not a concern in this installation.
57
69
  if (!policy)
58
70
  return { ok: true };
@@ -67,8 +79,30 @@ ends) {
67
79
  if (via !== undefined) {
68
80
  if (permits(policy, principal, mutation, kind, undefined, subjectId).ok)
69
81
  return { ok: true };
70
- if (via.some((name) => permits(policy, principal, name, kind, undefined, subjectId).ok))
71
- return { ok: true };
82
+ let ridden = false;
83
+ if (via.some((name) => permits(policy, principal, name, kind, undefined, subjectId).ok)) {
84
+ /*
85
+ * A DOOR FOR EVERYBODY IS NOT A KEY TO EVERY RECORD (the ninth walk,
86
+ * W-201). "Anybody may join" let a novice remove her mentor from the
87
+ * co-op, and anybody at all archive or merge any member they could see:
88
+ * the grant that lets everybody make a record is not a grant over every
89
+ * record of its kind. Riding only a grant to every role, a derived
90
+ * edit reaches the records this principal made; a role's own grant on
91
+ * the acts it rides, or one that names the act or says `*`, reaches
92
+ * the rest.
93
+ *
94
+ * AND A ROLE'S DOOR IS NOT A KEY EITHER, to take a record out. A
95
+ * member who may log an inspection could remove, archive or merge
96
+ * anybody's: the grant to make a kind is a grant to make one, not to
97
+ * unmake the rest. Riding the acts that make the kind — whoever's
98
+ * grant — a derived remove, archive, bring-back or merge reaches only
99
+ * what this principal made; over the rest the policy names the act,
100
+ * or says `*` (decided by Nick, 2026-10-14).
101
+ */
102
+ if (!madeBy || subjectId === undefined || (principal.id !== undefined && madeBy() === principal.id) || (!unmakes && policy.grants.some((grant) => grant.roles !== "*" && grantsTo(grant, principal) && via.some((name) => matches(grant.mutations, name)))))
103
+ return { ok: true };
104
+ ridden = true;
105
+ }
72
106
  /*
73
107
  * A derived edit is reachable two ways, and the refusal has to count
74
108
  * both: a grant naming it (or saying `*`), and a grant on any declared
@@ -76,15 +110,16 @@ ends) {
76
110
  * creates it, so no role can" to a rider while the driver's `mutations:
77
111
  * "*"` grant plainly reached it.
78
112
  */
79
- const names = [mutation, ...via];
113
+ const names = ridden ? [mutation] : [mutation, ...via];
80
114
  const wouldNeed = [
81
115
  ...new Set(names.flatMap((name) => rolesWhoCould(policy, name, kind))),
82
116
  ].sort();
83
- const who = wouldNeed.length === 0
84
- ? via.length === 0
85
- ? "no declared act creates or changes it, so no role can"
86
- : "no role can"
87
- : `${rolesSaid(wouldNeed)} can`;
117
+ const who = (ridden ? "only on what you made; " : "") +
118
+ (wouldNeed.length === 0
119
+ ? via.length === 0
120
+ ? "no declared act creates or changes it, so no role can"
121
+ : "no role can"
122
+ : `${rolesSaid(wouldNeed)} can`);
88
123
  return {
89
124
  ok: false,
90
125
  refusal: {
@@ -1 +1 @@
1
- {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/permissions/policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/permissions/policy.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,42 @@
1
1
  import type { Epoch } from "../ops/log.js";
2
2
  import type { Operation } from "../ops/types.js";
3
- import type { Policy, Principal } from "./types.js";
3
+ import type { SeatLens } from "../ops/withheld.js";
4
+ import type { Judged } from "../seen.js";
5
+ import type { Policy, Principal, Sight } from "./types.js";
6
+ /** Which fields of a record a seat may not see: a test of a field, or undefined when it sees them all. */
7
+ export type FieldsKept = (node: {
8
+ readonly id: string;
9
+ readonly kind: string;
10
+ }) => ((field: string) => boolean) | undefined;
11
+ /**
12
+ * A SIGHT THAT SHOWS ONLY SOME FIELDS (Roadmap f-field-sight) — `hide` or
13
+ * `fields` — is judged by `@graview/core/field-sight`, which fills these in
14
+ * as it loads: a host that serves seats loads it (`@graview/ship`'s
15
+ * server entry does). Until it is loaded such a sight shows nothing,
16
+ * so a store that cannot judge a field keeps the record rather than serve
17
+ * the field. A store that holds only what its host served one seat
18
+ * (`openRemote`'s) is put in `served` as a mirror: the host judged it, and
19
+ * IT shows what it was served — that store alone, never another store the
20
+ * same page holds whole.
21
+ */
22
+ export declare const FIELD_SIGHT: {
23
+ /** Whether field sight is loaded: a sight that shows only some fields shows what it shows, in every store. */
24
+ on?: boolean;
25
+ /** The stores that hold only what their host served one seat: each shows what it holds, though field sight is not loaded. */
26
+ readonly served: WeakSet<object>;
27
+ /** A seat's lens, made to keep the fields its sight keeps. */
28
+ lens?: (lens: SeatLens, store: Judged, principal: Principal) => SeatLens;
29
+ /** The fields one seat may not see, record by record; undefined when it sees every one. */
30
+ keptFrom?: (store: Judged, principal: Principal) => FieldsKept | undefined;
31
+ };
32
+ /** Whether a sight shows only some fields: an allow list, or fields it hides. */
33
+ export declare const partialSight: (sight: Sight) => boolean;
34
+ /**
35
+ * WHETHER A STORE MAY SHOW A SIGHT THAT SHOWS ONLY SOME FIELDS: field sight
36
+ * is loaded and keeps them, or the store is a mirror of what its host
37
+ * served (`FIELD_SIGHT.served`). Otherwise such a sight shows nothing.
38
+ */
39
+ export declare const fieldsJudged: (store: object) => boolean;
4
40
  /** The edges a graph can be asked about, to say what is joined to whom. */
5
41
  interface Joined {
6
42
  out(id: string, kind?: string): readonly {
@@ -75,6 +111,8 @@ export declare function sees(policy: Policy | undefined, principal: Principal, n
75
111
  readonly kind: string;
76
112
  }, graph: Joined,
77
113
  /** Who made a record, from the log; without it, `own` reads the graph alone. */
78
- records?: Pick<Records, "creatorOf">): boolean;
114
+ records?: Pick<Records, "creatorOf">,
115
+ /** Whether a sight that shows only some fields may show the record (`fieldsJudged`); without it, only when field sight is loaded. */
116
+ judged?: boolean): boolean;
79
117
  export {};
80
118
  //# sourceMappingURL=sight.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sight.d.ts","sourceRoot":"","sources":["../../src/permissions/sight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEpD,2EAA2E;AAC3E,UAAU,MAAM;IACd,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACnE;AAED,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAE5E;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACvC,wFAAwF;IACxF,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC3C;AAED,0GAA0G;AAC1G,MAAM,WAAW,WAAW;IAC1B,GAAG,IAAI,SAAS,SAAS,EAAE,CAAC;IAC5B,oGAAoG;IACpG,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,iHAAiH;IACjH,MAAM,CAAC,IAAI,SAAS,KAAK,EAAE,CAAC;CAC7B;AA2DD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAwBnD;AAQD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUpF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,IAAI,CAClB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACpD,KAAK,EAAE,MAAM;AACb,gFAAgF;AAChF,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,GACnC,OAAO,CAkBT"}
1
+ {"version":3,"file":"sight.d.ts","sourceRoot":"","sources":["../../src/permissions/sight.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,24 @@
1
1
  import { actingAs, grantsTo, isSystem } from "./policy.js";
2
+ /**
3
+ * A SIGHT THAT SHOWS ONLY SOME FIELDS (Roadmap f-field-sight) — `hide` or
4
+ * `fields` — is judged by `@graview/core/field-sight`, which fills these in
5
+ * as it loads: a host that serves seats loads it (`@graview/ship`'s
6
+ * server entry does). Until it is loaded such a sight shows nothing,
7
+ * so a store that cannot judge a field keeps the record rather than serve
8
+ * the field. A store that holds only what its host served one seat
9
+ * (`openRemote`'s) is put in `served` as a mirror: the host judged it, and
10
+ * IT shows what it was served — that store alone, never another store the
11
+ * same page holds whole.
12
+ */
13
+ export const FIELD_SIGHT = { served: new WeakSet() };
14
+ /** Whether a sight shows only some fields: an allow list, or fields it hides. */
15
+ export const partialSight = (sight) => sight.fields !== undefined || (sight.hide?.length ?? 0) > 0;
16
+ /**
17
+ * WHETHER A STORE MAY SHOW A SIGHT THAT SHOWS ONLY SOME FIELDS: field sight
18
+ * is loaded and keeps them, or the store is a mirror of what its host
19
+ * served (`FIELD_SIGHT.served`). Otherwise such a sight shows nothing.
20
+ */
21
+ export const fieldsJudged = (store) => FIELD_SIGHT.on === true || FIELD_SIGHT.served.has(store);
2
22
  /** The kinds a policy keeps to those its sights name. */
3
23
  export function sightedKinds(policy) {
4
24
  return new Set((policy?.sees ?? []).flatMap((sight) => sight.kinds));
@@ -133,13 +153,16 @@ export function creatorsBefore(log, seq) {
133
153
  */
134
154
  export function sees(policy, principal, node, graph,
135
155
  /** Who made a record, from the log; without it, `own` reads the graph alone. */
136
- records) {
156
+ records,
157
+ /** Whether a sight that shows only some fields may show the record (`fieldsJudged`); without it, only when field sight is loaded. */
158
+ judged = FIELD_SIGHT.on === true) {
137
159
  if (!policy?.sees?.length)
138
160
  return true;
139
161
  // The system sees what it keeps; an agent sees what it AND its person may (FR-06, FR-17).
140
162
  if (isSystem(principal))
141
163
  return true;
142
- const sights = policy.sees.filter((sight) => sight.kinds.includes(node.kind));
164
+ // A sight that shows only some fields shows nothing until they can be judged: it fails closed (Roadmap f-field-sight).
165
+ const sights = policy.sees.filter((sight) => sight.kinds.includes(node.kind) && (judged || !partialSight(sight)));
143
166
  if (sights.length === 0)
144
167
  return false;
145
168
  principal = actingAs(principal);
@@ -1 +1 @@
1
- {"version":3,"file":"sight.js","sourceRoot":"","sources":["../../src/permissions/sight.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sight.js","sourceRoot":"","sources":["../../src/permissions/sight.ts"],"names":[],"mappings":"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"}
@@ -77,6 +77,27 @@ export interface Sight {
77
77
  * to one that reaches the people kind (`sight-via-misses-people`).
78
78
  */
79
79
  readonly via?: string;
80
+ /**
81
+ * ONLY THESE FIELDS of the records it shows (Roadmap f-field-sight): an
82
+ * allow list, so a field added tomorrow is kept from these roles until a
83
+ * sight shows it. Absent, every field.
84
+ */
85
+ readonly fields?: readonly string[];
86
+ /**
87
+ * EVERY FIELD BUT THESE of the records it shows: `{ roles: ["parent"],
88
+ * kinds: ["player"], hide: ["phone"] }` shows parents each player
89
+ * without a phone number. With `fields`, the fields it lists but these.
90
+ *
91
+ * SIGHTS ADD UP. A role is shown a field of a record when ANY sight that
92
+ * shows it that record shows that field: a second sight `{ roles:
93
+ * ["parent"], kinds: ["player"], own: true }` gives each parent their own
94
+ * child's phone back, and a person with two roles sees what either
95
+ * shows. A hidden field is not in anything the seat is served — the
96
+ * record, the log, a search, a form, a label — and the seat cannot set
97
+ * it: it reads as a field the record does not have. The id and the kind
98
+ * are never hidden.
99
+ */
100
+ readonly hide?: readonly string[];
80
101
  readonly describe?: string;
81
102
  }
82
103
  export interface Policy {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/permissions/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,WAAW,SAAU,SAAQ,MAAM;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,oGAAoG;IACpG,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;CACjC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,KAAK;IACpB,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC;IAC5C,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC;IACzC,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;GAMG;AACH;;;;;;;;;GASG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,wGAAwG;IACxG,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,KAAK,EAAE,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,mEAAmE;AACnE,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,kEAAkE;IAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED;;;;;;;GAOG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBACd,OAAO,EAAE,OAAO;CAK7B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/permissions/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,WAAW,SAAU,SAAQ,MAAM;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,oGAAoG;IACpG,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;CACjC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,KAAK;IACpB,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC;IAC5C,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC;IACzC,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;GAMG;AACH;;;;;;;;;GASG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,wGAAwG;IACxG,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,KAAK,EAAE,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,mEAAmE;AACnE,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,kEAAkE;IAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED;;;;;;;GAOG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBACd,OAAO,EAAE,OAAO;CAK7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/permissions/types.ts"],"names":[],"mappings":"AAkHA;;;;;;;GAOG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACrC,OAAO,CAAU;IAC1B,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/permissions/types.ts"],"names":[],"mappings":"AAuIA;;;;;;;GAOG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACrC,OAAO,CAAU;IAC1B,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}