@graview/core 0.1.28 → 0.1.29

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 (501) 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 +153 -0
  13. package/dist/app-places.js.map +1 -0
  14. package/dist/arrange.d.ts +2 -2
  15. package/dist/arrange.d.ts.map +1 -1
  16. package/dist/arrange.js +2 -2
  17. package/dist/arrange.js.map +1 -1
  18. package/dist/arrangement-words.d.ts +3 -0
  19. package/dist/arrangement-words.d.ts.map +1 -0
  20. package/dist/arrangement-words.js +50 -0
  21. package/dist/arrangement-words.js.map +1 -0
  22. package/dist/arrangement.d.ts +25 -3
  23. package/dist/arrangement.d.ts.map +1 -1
  24. package/dist/arrangement.js +36 -32
  25. package/dist/arrangement.js.map +1 -1
  26. package/dist/arranging.d.ts.map +1 -1
  27. package/dist/arranging.js +19 -8
  28. package/dist/arranging.js.map +1 -1
  29. package/dist/bind.d.ts +3 -0
  30. package/dist/bind.d.ts.map +1 -1
  31. package/dist/bind.js.map +1 -1
  32. package/dist/capabilities.js +1 -1
  33. package/dist/capabilities.js.map +1 -1
  34. package/dist/check.d.ts +3 -0
  35. package/dist/check.d.ts.map +1 -1
  36. package/dist/check.js +3 -0
  37. package/dist/check.js.map +1 -1
  38. package/dist/city.d.ts +58 -50
  39. package/dist/city.d.ts.map +1 -1
  40. package/dist/city.js +160 -147
  41. package/dist/city.js.map +1 -1
  42. package/dist/cli/check/brand.js +1 -1
  43. package/dist/cli/check/brand.js.map +1 -1
  44. package/dist/cli/check/clock-rules.d.ts +4 -0
  45. package/dist/cli/check/clock-rules.d.ts.map +1 -0
  46. package/dist/cli/check/clock-rules.js +26 -0
  47. package/dist/cli/check/clock-rules.js.map +1 -0
  48. package/dist/cli/check/field-sight.d.ts +11 -0
  49. package/dist/cli/check/field-sight.d.ts.map +1 -0
  50. package/dist/cli/check/field-sight.js +113 -0
  51. package/dist/cli/check/field-sight.js.map +1 -0
  52. package/dist/cli/check/index.d.ts +2 -0
  53. package/dist/cli/check/index.d.ts.map +1 -1
  54. package/dist/cli/check/index.js +2 -0
  55. package/dist/cli/check/index.js.map +1 -1
  56. package/dist/cli/check/lenses.d.ts +1 -1
  57. package/dist/cli/check/lenses.d.ts.map +1 -1
  58. package/dist/cli/check/lenses.js +43 -2
  59. package/dist/cli/check/lenses.js.map +1 -1
  60. package/dist/cli/check/relations.d.ts.map +1 -1
  61. package/dist/cli/check/relations.js +2 -1
  62. package/dist/cli/check/relations.js.map +1 -1
  63. package/dist/cli/check.d.ts.map +1 -1
  64. package/dist/cli/check.js +7 -4
  65. package/dist/cli/check.js.map +1 -1
  66. package/dist/cli/describe.d.ts.map +1 -1
  67. package/dist/cli/describe.js +44 -3
  68. package/dist/cli/describe.js.map +1 -1
  69. package/dist/cli/docs.d.ts.map +1 -1
  70. package/dist/cli/docs.js +4 -3
  71. package/dist/cli/docs.js.map +1 -1
  72. package/dist/cli/types.d.ts.map +1 -1
  73. package/dist/cli/types.js +10 -1
  74. package/dist/cli/types.js.map +1 -1
  75. package/dist/clock-readers.d.ts +18 -0
  76. package/dist/clock-readers.d.ts.map +1 -0
  77. package/dist/clock-readers.js +70 -0
  78. package/dist/clock-readers.js.map +1 -0
  79. package/dist/clock.d.ts +30 -0
  80. package/dist/clock.d.ts.map +1 -0
  81. package/dist/clock.js +41 -0
  82. package/dist/clock.js.map +1 -0
  83. package/dist/columns.d.ts.map +1 -1
  84. package/dist/columns.js +2 -1
  85. package/dist/columns.js.map +1 -1
  86. package/dist/conformance/fixtures.d.ts.map +1 -1
  87. package/dist/conformance/fixtures.js +326 -43
  88. package/dist/conformance/fixtures.js.map +1 -1
  89. package/dist/days.d.ts +53 -4
  90. package/dist/days.d.ts.map +1 -1
  91. package/dist/days.js +136 -16
  92. package/dist/days.js.map +1 -1
  93. package/dist/describe.d.ts +1 -0
  94. package/dist/describe.d.ts.map +1 -1
  95. package/dist/describe.js +1 -0
  96. package/dist/describe.js.map +1 -1
  97. package/dist/document/act-findings.d.ts.map +1 -1
  98. package/dist/document/act-findings.js +13 -3
  99. package/dist/document/act-findings.js.map +1 -1
  100. package/dist/document/amount.d.ts +4 -0
  101. package/dist/document/amount.d.ts.map +1 -0
  102. package/dist/document/amount.js +22 -0
  103. package/dist/document/amount.js.map +1 -0
  104. package/dist/document/block-context.d.ts.map +1 -1
  105. package/dist/document/block-context.js +1 -0
  106. package/dist/document/block-context.js.map +1 -1
  107. package/dist/document/blocks.d.ts +13 -3
  108. package/dist/document/blocks.d.ts.map +1 -1
  109. package/dist/document/blocks.js +56 -12
  110. package/dist/document/blocks.js.map +1 -1
  111. package/dist/document/compile-checked.d.ts.map +1 -1
  112. package/dist/document/compile-checked.js +3 -2
  113. package/dist/document/compile-checked.js.map +1 -1
  114. package/dist/document/compile.d.ts.map +1 -1
  115. package/dist/document/compile.js +30 -7
  116. package/dist/document/compile.js.map +1 -1
  117. package/dist/document/compiled.d.ts +4 -2
  118. package/dist/document/compiled.d.ts.map +1 -1
  119. package/dist/document/compiled.js +50 -19
  120. package/dist/document/compiled.js.map +1 -1
  121. package/dist/document/describe-coverage.d.ts.map +1 -1
  122. package/dist/document/describe-coverage.js +2 -1
  123. package/dist/document/describe-coverage.js.map +1 -1
  124. package/dist/document/describe-place.d.ts +6 -2
  125. package/dist/document/describe-place.d.ts.map +1 -1
  126. package/dist/document/describe-place.js +14 -8
  127. package/dist/document/describe-place.js.map +1 -1
  128. package/dist/document/diff.d.ts +2 -0
  129. package/dist/document/diff.d.ts.map +1 -1
  130. package/dist/document/diff.js +34 -6
  131. package/dist/document/diff.js.map +1 -1
  132. package/dist/document/durations.d.ts +8 -0
  133. package/dist/document/durations.d.ts.map +1 -0
  134. package/dist/document/durations.js +82 -0
  135. package/dist/document/durations.js.map +1 -0
  136. package/dist/document/edit.d.ts +1 -1
  137. package/dist/document/edit.d.ts.map +1 -1
  138. package/dist/document/edit.js +195 -22
  139. package/dist/document/edit.js.map +1 -1
  140. package/dist/document/expr/evaluate.d.ts +1 -1
  141. package/dist/document/expr/evaluate.d.ts.map +1 -1
  142. package/dist/document/expr/evaluate.js +17 -4
  143. package/dist/document/expr/evaluate.js.map +1 -1
  144. package/dist/document/field-spec.d.ts.map +1 -1
  145. package/dist/document/field-spec.js +15 -1
  146. package/dist/document/field-spec.js.map +1 -1
  147. package/dist/document/format-findings.d.ts +4 -0
  148. package/dist/document/format-findings.d.ts.map +1 -0
  149. package/dist/document/format-findings.js +39 -0
  150. package/dist/document/format-findings.js.map +1 -0
  151. package/dist/document/format-rules.d.ts +8 -0
  152. package/dist/document/format-rules.d.ts.map +1 -0
  153. package/dist/document/format-rules.js +19 -0
  154. package/dist/document/format-rules.js.map +1 -0
  155. package/dist/document/format-words.d.ts +9 -0
  156. package/dist/document/format-words.d.ts.map +1 -0
  157. package/dist/document/format-words.js +29 -0
  158. package/dist/document/format-words.js.map +1 -0
  159. package/dist/document/graview-template.d.ts +2 -2
  160. package/dist/document/migrate.d.ts +1 -0
  161. package/dist/document/migrate.d.ts.map +1 -1
  162. package/dist/document/migrate.js +45 -1
  163. package/dist/document/migrate.js.map +1 -1
  164. package/dist/document/money.d.ts +14 -0
  165. package/dist/document/money.d.ts.map +1 -0
  166. package/dist/document/money.js +14 -0
  167. package/dist/document/money.js.map +1 -0
  168. package/dist/document/policy-words.d.ts +2 -0
  169. package/dist/document/policy-words.d.ts.map +1 -1
  170. package/dist/document/policy-words.js +19 -4
  171. package/dist/document/policy-words.js.map +1 -1
  172. package/dist/document/rule-line.d.ts.map +1 -1
  173. package/dist/document/rule-line.js +16 -12
  174. package/dist/document/rule-line.js.map +1 -1
  175. package/dist/document/rules.d.ts.map +1 -1
  176. package/dist/document/rules.js +6 -5
  177. package/dist/document/rules.js.map +1 -1
  178. package/dist/document/schema.d.ts +62 -19
  179. package/dist/document/schema.d.ts.map +1 -1
  180. package/dist/document/schema.js +30 -4
  181. package/dist/document/schema.js.map +1 -1
  182. package/dist/document/template-parse.d.ts.map +1 -1
  183. package/dist/document/template-parse.js +9 -2
  184. package/dist/document/template-parse.js.map +1 -1
  185. package/dist/document/template.d.ts +3 -13
  186. package/dist/document/template.d.ts.map +1 -1
  187. package/dist/document/template.js +24 -22
  188. package/dist/document/template.js.map +1 -1
  189. package/dist/document/thumbnail.d.ts.map +1 -1
  190. package/dist/document/thumbnail.js +4 -3
  191. package/dist/document/thumbnail.js.map +1 -1
  192. package/dist/document/to-document.d.ts +0 -1
  193. package/dist/document/to-document.d.ts.map +1 -1
  194. package/dist/document/to-document.js +19 -2
  195. package/dist/document/to-document.js.map +1 -1
  196. package/dist/document/view-specs.d.ts.map +1 -1
  197. package/dist/document/view-specs.js +3 -0
  198. package/dist/document/view-specs.js.map +1 -1
  199. package/dist/document/views.d.ts +2 -0
  200. package/dist/document/views.d.ts.map +1 -1
  201. package/dist/document/views.js +18 -6
  202. package/dist/document/views.js.map +1 -1
  203. package/dist/document.schema.json +63 -6
  204. package/dist/excerpt-of.d.ts +14 -0
  205. package/dist/excerpt-of.d.ts.map +1 -0
  206. package/dist/excerpt-of.js +120 -0
  207. package/dist/excerpt-of.js.map +1 -0
  208. package/dist/excerpt.d.ts +9 -0
  209. package/dist/excerpt.d.ts.map +1 -0
  210. package/dist/excerpt.js +43 -0
  211. package/dist/excerpt.js.map +1 -0
  212. package/dist/field-sight.d.ts +33 -0
  213. package/dist/field-sight.d.ts.map +1 -0
  214. package/dist/field-sight.js +313 -0
  215. package/dist/field-sight.js.map +1 -0
  216. package/dist/forms.d.ts +1 -0
  217. package/dist/forms.d.ts.map +1 -1
  218. package/dist/forms.js +1 -0
  219. package/dist/forms.js.map +1 -1
  220. package/dist/graph/archived.d.ts +25 -0
  221. package/dist/graph/archived.d.ts.map +1 -0
  222. package/dist/graph/archived.js +16 -0
  223. package/dist/graph/archived.js.map +1 -0
  224. package/dist/graph/diff.d.ts.map +1 -1
  225. package/dist/graph/diff.js +2 -1
  226. package/dist/graph/diff.js.map +1 -1
  227. package/dist/graph/graph.d.ts +37 -13
  228. package/dist/graph/graph.d.ts.map +1 -1
  229. package/dist/graph/graph.js +86 -40
  230. package/dist/graph/graph.js.map +1 -1
  231. package/dist/graph/tracked.d.ts +8 -8
  232. package/dist/graph/tracked.d.ts.map +1 -1
  233. package/dist/graph/tracked.js +15 -20
  234. package/dist/graph/tracked.js.map +1 -1
  235. package/dist/graph/types.d.ts +16 -8
  236. package/dist/graph/types.d.ts.map +1 -1
  237. package/dist/graph/types.js.map +1 -1
  238. package/dist/import/coerce.d.ts +45 -0
  239. package/dist/import/coerce.d.ts.map +1 -0
  240. package/dist/import/coerce.js +252 -0
  241. package/dist/import/coerce.js.map +1 -0
  242. package/dist/import/csv.d.ts +16 -0
  243. package/dist/import/csv.d.ts.map +1 -0
  244. package/dist/import/csv.js +77 -0
  245. package/dist/import/csv.js.map +1 -0
  246. package/dist/import/index.d.ts +17 -0
  247. package/dist/import/index.d.ts.map +1 -0
  248. package/dist/import/index.js +13 -0
  249. package/dist/import/index.js.map +1 -0
  250. package/dist/import/mapping.d.ts +99 -0
  251. package/dist/import/mapping.d.ts.map +1 -0
  252. package/dist/import/mapping.js +182 -0
  253. package/dist/import/mapping.js.map +1 -0
  254. package/dist/import/rows.d.ts +116 -0
  255. package/dist/import/rows.d.ts.map +1 -0
  256. package/dist/import/rows.js +584 -0
  257. package/dist/import/rows.js.map +1 -0
  258. package/dist/index.d.ts +38 -21
  259. package/dist/index.d.ts.map +1 -1
  260. package/dist/index.js +27 -16
  261. package/dist/index.js.map +1 -1
  262. package/dist/invariants/engine.d.ts +5 -1
  263. package/dist/invariants/engine.d.ts.map +1 -1
  264. package/dist/invariants/engine.js +4 -3
  265. package/dist/invariants/engine.js.map +1 -1
  266. package/dist/invariants/types.d.ts +18 -3
  267. package/dist/invariants/types.d.ts.map +1 -1
  268. package/dist/json-schema.d.ts +1 -0
  269. package/dist/json-schema.d.ts.map +1 -1
  270. package/dist/json-schema.js +2 -0
  271. package/dist/json-schema.js.map +1 -1
  272. package/dist/labels.d.ts.map +1 -1
  273. package/dist/labels.js +2 -1
  274. package/dist/labels.js.map +1 -1
  275. package/dist/lines.d.ts +1 -0
  276. package/dist/lines.d.ts.map +1 -1
  277. package/dist/lines.js +5 -3
  278. package/dist/lines.js.map +1 -1
  279. package/dist/markdown.d.ts +102 -0
  280. package/dist/markdown.d.ts.map +1 -0
  281. package/dist/markdown.js +460 -0
  282. package/dist/markdown.js.map +1 -0
  283. package/dist/mutations/arg-shape.d.ts +95 -0
  284. package/dist/mutations/arg-shape.d.ts.map +1 -0
  285. package/dist/mutations/arg-shape.js +101 -0
  286. package/dist/mutations/arg-shape.js.map +1 -0
  287. package/dist/mutations/define-mutation.d.ts +48 -2
  288. package/dist/mutations/define-mutation.d.ts.map +1 -1
  289. package/dist/mutations/define-mutation.js +103 -36
  290. package/dist/mutations/define-mutation.js.map +1 -1
  291. package/dist/mutations/derive-edits.d.ts +16 -1
  292. package/dist/mutations/derive-edits.d.ts.map +1 -1
  293. package/dist/mutations/derive-edits.js +67 -28
  294. package/dist/mutations/derive-edits.js.map +1 -1
  295. package/dist/mutations/derive-repeats.d.ts +8 -0
  296. package/dist/mutations/derive-repeats.d.ts.map +1 -0
  297. package/dist/mutations/derive-repeats.js +118 -0
  298. package/dist/mutations/derive-repeats.js.map +1 -0
  299. package/dist/mutations/derived-names.d.ts +20 -0
  300. package/dist/mutations/derived-names.d.ts.map +1 -0
  301. package/dist/mutations/derived-names.js +19 -0
  302. package/dist/mutations/derived-names.js.map +1 -0
  303. package/dist/mutations/form.d.ts +21 -1
  304. package/dist/mutations/form.d.ts.map +1 -1
  305. package/dist/mutations/form.js +19 -2
  306. package/dist/mutations/form.js.map +1 -1
  307. package/dist/mutations/invalid-arguments.d.ts +14 -0
  308. package/dist/mutations/invalid-arguments.d.ts.map +1 -0
  309. package/dist/mutations/invalid-arguments.js +18 -0
  310. package/dist/mutations/invalid-arguments.js.map +1 -0
  311. package/dist/mutations/keep-link.d.ts +27 -0
  312. package/dist/mutations/keep-link.d.ts.map +1 -0
  313. package/dist/mutations/keep-link.js +56 -0
  314. package/dist/mutations/keep-link.js.map +1 -0
  315. package/dist/mutations/kept-arguments.d.ts +26 -0
  316. package/dist/mutations/kept-arguments.d.ts.map +1 -0
  317. package/dist/mutations/kept-arguments.js +77 -0
  318. package/dist/mutations/kept-arguments.js.map +1 -0
  319. package/dist/mutations/node-ref.d.ts +0 -80
  320. package/dist/mutations/node-ref.d.ts.map +1 -1
  321. package/dist/mutations/node-ref.js +0 -93
  322. package/dist/mutations/node-ref.js.map +1 -1
  323. package/dist/mutations/types.d.ts +17 -1
  324. package/dist/mutations/types.d.ts.map +1 -1
  325. package/dist/mutations/words.d.ts +0 -13
  326. package/dist/mutations/words.d.ts.map +1 -1
  327. package/dist/mutations/words.js +1 -12
  328. package/dist/mutations/words.js.map +1 -1
  329. package/dist/ops/kept-fields.d.ts +7 -0
  330. package/dist/ops/kept-fields.d.ts.map +1 -0
  331. package/dist/ops/kept-fields.js +24 -0
  332. package/dist/ops/kept-fields.js.map +1 -0
  333. package/dist/ops/lineage.d.ts +37 -0
  334. package/dist/ops/lineage.d.ts.map +1 -0
  335. package/dist/ops/lineage.js +26 -0
  336. package/dist/ops/lineage.js.map +1 -0
  337. package/dist/ops/log.d.ts.map +1 -1
  338. package/dist/ops/log.js +1 -0
  339. package/dist/ops/log.js.map +1 -1
  340. package/dist/ops/provenance.d.ts +68 -0
  341. package/dist/ops/provenance.d.ts.map +1 -0
  342. package/dist/ops/provenance.js +83 -0
  343. package/dist/ops/provenance.js.map +1 -0
  344. package/dist/ops/types.d.ts +25 -0
  345. package/dist/ops/types.d.ts.map +1 -1
  346. package/dist/ops/withheld.d.ts +25 -2
  347. package/dist/ops/withheld.d.ts.map +1 -1
  348. package/dist/ops/withheld.js +6 -15
  349. package/dist/ops/withheld.js.map +1 -1
  350. package/dist/permissions/policy.d.ts +6 -1
  351. package/dist/permissions/policy.d.ts.map +1 -1
  352. package/dist/permissions/policy.js +29 -9
  353. package/dist/permissions/policy.js.map +1 -1
  354. package/dist/permissions/sight.d.ts +40 -2
  355. package/dist/permissions/sight.d.ts.map +1 -1
  356. package/dist/permissions/sight.js +25 -2
  357. package/dist/permissions/sight.js.map +1 -1
  358. package/dist/permissions/types.d.ts +21 -0
  359. package/dist/permissions/types.d.ts.map +1 -1
  360. package/dist/permissions/types.js.map +1 -1
  361. package/dist/places.d.ts +0 -49
  362. package/dist/places.d.ts.map +1 -1
  363. package/dist/places.js +2 -141
  364. package/dist/places.js.map +1 -1
  365. package/dist/provenance.d.ts +14 -0
  366. package/dist/provenance.d.ts.map +1 -0
  367. package/dist/provenance.js +13 -0
  368. package/dist/provenance.js.map +1 -0
  369. package/dist/repeat-words.d.ts +13 -0
  370. package/dist/repeat-words.d.ts.map +1 -0
  371. package/dist/repeat-words.js +56 -0
  372. package/dist/repeat-words.js.map +1 -0
  373. package/dist/repeat.d.ts +59 -0
  374. package/dist/repeat.d.ts.map +1 -0
  375. package/dist/repeat.js +155 -0
  376. package/dist/repeat.js.map +1 -0
  377. package/dist/scaffold/project.d.ts.map +1 -1
  378. package/dist/scaffold/project.js +13 -0
  379. package/dist/scaffold/project.js.map +1 -1
  380. package/dist/scaffold/ui.js +2 -2
  381. package/dist/scene-districts.d.ts +2 -1
  382. package/dist/scene-districts.d.ts.map +1 -1
  383. package/dist/scene-districts.js +2 -1
  384. package/dist/scene-districts.js.map +1 -1
  385. package/dist/scene.d.ts +4 -2
  386. package/dist/scene.d.ts.map +1 -1
  387. package/dist/scene.js +2 -1
  388. package/dist/scene.js.map +1 -1
  389. package/dist/schema/amount-mark.d.ts +13 -0
  390. package/dist/schema/amount-mark.d.ts.map +1 -0
  391. package/dist/schema/amount-mark.js +20 -0
  392. package/dist/schema/amount-mark.js.map +1 -0
  393. package/dist/schema/amount-words.d.ts +12 -0
  394. package/dist/schema/amount-words.d.ts.map +1 -0
  395. package/dist/schema/amount-words.js +31 -0
  396. package/dist/schema/amount-words.js.map +1 -0
  397. package/dist/schema/app-link-field.d.ts +4 -0
  398. package/dist/schema/app-link-field.d.ts.map +1 -0
  399. package/dist/schema/app-link-field.js +19 -0
  400. package/dist/schema/app-link-field.js.map +1 -0
  401. package/dist/schema/app-link.d.ts +41 -0
  402. package/dist/schema/app-link.d.ts.map +1 -0
  403. package/dist/schema/app-link.js +40 -0
  404. package/dist/schema/app-link.js.map +1 -0
  405. package/dist/schema/define-node.d.ts +25 -94
  406. package/dist/schema/define-node.d.ts.map +1 -1
  407. package/dist/schema/define-node.js +3 -247
  408. package/dist/schema/define-node.js.map +1 -1
  409. package/dist/schema/field-words.d.ts +45 -0
  410. package/dist/schema/field-words.d.ts.map +1 -0
  411. package/dist/schema/field-words.js +124 -0
  412. package/dist/schema/field-words.js.map +1 -0
  413. package/dist/schema/json-schema.d.ts +6 -1
  414. package/dist/schema/json-schema.d.ts.map +1 -1
  415. package/dist/schema/json-schema.js +83 -2
  416. package/dist/schema/json-schema.js.map +1 -1
  417. package/dist/schema/markdown-field.d.ts +4 -0
  418. package/dist/schema/markdown-field.d.ts.map +1 -0
  419. package/dist/schema/markdown-field.js +20 -0
  420. package/dist/schema/markdown-field.js.map +1 -0
  421. package/dist/schema/markdown.d.ts +6 -0
  422. package/dist/schema/markdown.d.ts.map +1 -0
  423. package/dist/schema/markdown.js +27 -0
  424. package/dist/schema/markdown.js.map +1 -0
  425. package/dist/schema/reading.d.ts +86 -0
  426. package/dist/schema/reading.d.ts.map +1 -0
  427. package/dist/schema/reading.js +270 -0
  428. package/dist/schema/reading.js.map +1 -0
  429. package/dist/schema/repeat-field.d.ts +5 -0
  430. package/dist/schema/repeat-field.d.ts.map +1 -0
  431. package/dist/schema/repeat-field.js +20 -0
  432. package/dist/schema/repeat-field.js.map +1 -0
  433. package/dist/schema/schema.d.ts.map +1 -1
  434. package/dist/schema/schema.js +5 -1
  435. package/dist/schema/schema.js.map +1 -1
  436. package/dist/schema/to-json-schema.d.ts +14 -0
  437. package/dist/schema/to-json-schema.d.ts.map +1 -0
  438. package/dist/schema/to-json-schema.js +616 -0
  439. package/dist/schema/to-json-schema.js.map +1 -0
  440. package/dist/schema/typed-field-builders.d.ts +8 -0
  441. package/dist/schema/typed-field-builders.d.ts.map +1 -0
  442. package/dist/schema/typed-field-builders.js +30 -0
  443. package/dist/schema/typed-field-builders.js.map +1 -0
  444. package/dist/schema/typed-field-of.d.ts +4 -0
  445. package/dist/schema/typed-field-of.d.ts.map +1 -0
  446. package/dist/schema/typed-field-of.js +14 -0
  447. package/dist/schema/typed-field-of.js.map +1 -0
  448. package/dist/schema/typed-fields.d.ts +11 -0
  449. package/dist/schema/typed-fields.d.ts.map +1 -0
  450. package/dist/schema/typed-fields.js +16 -0
  451. package/dist/schema/typed-fields.js.map +1 -0
  452. package/dist/schema/types.d.ts +14 -0
  453. package/dist/schema/types.d.ts.map +1 -1
  454. package/dist/schema/value-words.d.ts +21 -0
  455. package/dist/schema/value-words.d.ts.map +1 -0
  456. package/dist/schema/value-words.js +32 -0
  457. package/dist/schema/value-words.js.map +1 -0
  458. package/dist/search.d.ts +91 -4
  459. package/dist/search.d.ts.map +1 -1
  460. package/dist/search.js +288 -53
  461. package/dist/search.js.map +1 -1
  462. package/dist/seat.d.ts +19 -0
  463. package/dist/seat.d.ts.map +1 -0
  464. package/dist/seat.js +19 -0
  465. package/dist/seat.js.map +1 -0
  466. package/dist/seen.d.ts +15 -33
  467. package/dist/seen.d.ts.map +1 -1
  468. package/dist/seen.js +44 -135
  469. package/dist/seen.js.map +1 -1
  470. package/dist/store.d.ts +46 -1
  471. package/dist/store.d.ts.map +1 -1
  472. package/dist/store.js +121 -22
  473. package/dist/store.js.map +1 -1
  474. package/dist/theme/types.d.ts +7 -1
  475. package/dist/theme/types.d.ts.map +1 -1
  476. package/dist/theme/types.js.map +1 -1
  477. package/dist/typed.d.ts +12 -3
  478. package/dist/typed.d.ts.map +1 -1
  479. package/dist/typed.js.map +1 -1
  480. package/dist/validate-graph.d.ts.map +1 -1
  481. package/dist/validate-graph.js +3 -10
  482. package/dist/validate-graph.js.map +1 -1
  483. package/dist/version.d.ts +1 -1
  484. package/dist/version.js +1 -1
  485. package/dist/views/types.d.ts +57 -8
  486. package/dist/views/types.d.ts.map +1 -1
  487. package/dist/views/types.js +22 -3
  488. package/dist/views/types.js.map +1 -1
  489. package/dist/village.d.ts +63 -0
  490. package/dist/village.d.ts.map +1 -0
  491. package/dist/village.js +143 -0
  492. package/dist/village.js.map +1 -0
  493. package/dist/watched.d.ts +12 -45
  494. package/dist/watched.d.ts.map +1 -1
  495. package/dist/watched.js +7 -119
  496. package/dist/watched.js.map +1 -1
  497. package/dist/words.d.ts +33 -0
  498. package/dist/words.d.ts.map +1 -0
  499. package/dist/words.js +36 -0
  500. package/dist/words.js.map +1 -0
  501. package/package.json +37 -2
@@ -0,0 +1,313 @@
1
+ /**
2
+ * `@graview/core/field-sight` — A SIGHT THAT HIDES A FIELD, NOT ONLY A KIND
3
+ * (Roadmap f-field-sight).
4
+ *
5
+ * A sight said who sees the records of a kind: a role saw a whole record or
6
+ * none of it, so a roster where parents see every player's name and not
7
+ * their phone number could not be said. A sight may now say `hide: [...]`,
8
+ * or `fields: [...]` as an allow list, and SIGHTS ADD UP: a role is shown a
9
+ * field of a record when any sight that shows it that record shows that
10
+ * field. A field kept from a seat is kept by the seat view itself — the
11
+ * record it is served, the log, an answer, a search, a name, a form — and
12
+ * the seat may not write it: the write is refused as an argument the act
13
+ * does not take, whatever it held and whatever was written.
14
+ *
15
+ * Loaded, it fills in `FIELD_SIGHT` and teaches the store; until it is, a
16
+ * sight with `hide` or `fields` shows nothing (it fails closed). A host
17
+ * that serves seats loads it — `@graview/ship`'s server entry
18
+ * imports it, a page that holds its whole store imports it once — and a page whose host served it its
19
+ * seat's records already (`openRemote`) does not need to: the fields were
20
+ * never sent. Apart from `@graview/core` so a hosted page carries none of
21
+ * it up front.
22
+ */
23
+ import { ARCHIVED } from "./graph/archived.js";
24
+ import { isUnset } from "./graph/primitives.js";
25
+ import { nameKey, refusalFor } from "./labels.js";
26
+ import { argumentsTaken } from "./mutations/define-mutation.js";
27
+ import { InvalidArguments } from "./mutations/invalid-arguments.js";
28
+ import { serveAlong } from "./ops/served.js";
29
+ export { withoutKeptFields } from "./ops/kept-fields.js";
30
+ import { keptOf, withoutKeptFields } from "./ops/kept-fields.js";
31
+ import { namesUnseen, whole, withhold } from "./ops/withheld.js";
32
+ import { actingAs, grantsTo, isSystem } from "./permissions/policy.js";
33
+ import { FIELD_SIGHT, partialSight, recordsOf } from "./permissions/sight.js";
34
+ import { labelOf } from "./schema/define-node.js";
35
+ import { Store } from "./store.js";
36
+ const partial = partialSight;
37
+ const PARTIAL = new WeakMap();
38
+ /** The kinds some sight shows only some fields of: the only kinds a field is ever kept from. */
39
+ export function partialKinds(policy) {
40
+ const sees = policy?.sees ?? [];
41
+ let kinds = PARTIAL.get(sees);
42
+ if (!kinds)
43
+ PARTIAL.set(sees, (kinds = new Set(sees.flatMap((sight) => (partial(sight) ? sight.kinds : [])))));
44
+ return kinds;
45
+ }
46
+ /** Whether one sight shows a principal one record — its kind, its roles, and with `own` or `via`, theirs — as `sees` judges it. */
47
+ function showing(principal, node, graph, records) {
48
+ const acting = actingAs(principal);
49
+ const me = acting.id;
50
+ const mine = (other) => other.id === me;
51
+ return (sight) => {
52
+ if (!sight.kinds.includes(node.kind) || !grantsTo(sight, acting))
53
+ return false;
54
+ if (!sight.own && !sight.via)
55
+ return true;
56
+ if (me === undefined)
57
+ return false;
58
+ return sight.via
59
+ ? graph.out(node.id, sight.via).some(mine) || graph.in(node.id, sight.via).some(mine)
60
+ : node.id === me || graph.out(node.id).some(mine) || graph.in(node.id).some(mine) || records?.creatorOf(node.id) === me;
61
+ };
62
+ }
63
+ /**
64
+ * WHICH FIELDS OF A RECORD IT SEES a principal may not: a test that says
65
+ * yes of a field kept from it, or undefined when it sees every field. A
66
+ * field is shown when any sight that shows the principal the record shows
67
+ * it, so one sight with neither `fields` nor `hide` shows them all.
68
+ */
69
+ export function fieldsKept(policy, principal, node, graph, records) {
70
+ if (!policy?.sees?.length || isSystem(principal) || !partialKinds(policy).has(node.kind))
71
+ return undefined;
72
+ const shown = policy.sees.filter(showing(principal, node, graph, records));
73
+ if (shown.some((sight) => !partial(sight)))
74
+ return undefined;
75
+ return (field) => field !== ARCHIVED && !shown.some((sight) => (sight.fields === undefined || sight.fields.includes(field)) && !sight.hide?.includes(field));
76
+ }
77
+ /**
78
+ * THE FIELDS OF EACH RECORD ONE SEAT MAY NOT SEE, as the store judges them
79
+ * now; undefined when no sight shows only some fields. A record no log has
80
+ * made yet is judged the asking seat's own, as it will be once it makes it.
81
+ */
82
+ export function keptFrom(store, principal) {
83
+ const kinds = isSystem(principal) ? undefined : partialKinds(store.policy);
84
+ if (!kinds?.size)
85
+ return undefined;
86
+ return (node) => {
87
+ if (!kinds.has(node.kind))
88
+ return undefined;
89
+ const records = recordsOf(store.log);
90
+ const maker = { creatorOf: (id) => records.creatorOf(id) ?? (id === node.id && !store.graph.getNode(id) ? actingAs(principal).id : undefined) };
91
+ return fieldsKept(store.policy, principal, node, store.graph, maker);
92
+ };
93
+ }
94
+ /**
95
+ * A SEAT'S LENS, KEEPING WHAT ITS SIGHT KEEPS OF A RECORD: the record it is
96
+ * served without those fields, as though it had none — and, when the
97
+ * record cannot be without one, not served at all, as a record whose
98
+ * required field names what the seat may not see is not (FR-55).
99
+ */
100
+ function fieldLens(base, store, principal) {
101
+ const kept = keptFrom(store, principal);
102
+ if (!kept)
103
+ return base;
104
+ // The same record kept the same way is the same object, so a view read twice is equal by identity.
105
+ const stripped = new WeakMap();
106
+ const strip = (node) => {
107
+ const keeps = node && kept(node);
108
+ if (!node || !keeps)
109
+ return node;
110
+ const without = [];
111
+ for (const field in node) {
112
+ if (!Object.hasOwn(node, field) || field === "id" || field === "kind" || !keeps(field))
113
+ continue;
114
+ if (!base.optional(node.kind, field))
115
+ return undefined;
116
+ without.push(field);
117
+ }
118
+ if (without.length === 0)
119
+ return node;
120
+ const key = without.join("\u0000");
121
+ const held = stripped.get(node);
122
+ if (held?.key === key)
123
+ return held.node;
124
+ const out = Object.fromEntries(Object.entries(node).filter(([field]) => !without.includes(field)));
125
+ stripped.set(node, { key, node: out });
126
+ return out;
127
+ };
128
+ const lens = {
129
+ ...base,
130
+ served: (node) => strip(base.served(node)),
131
+ servedWith: (node, writer) => strip(base.servedWith(node, writer)),
132
+ shows: (id) => {
133
+ if (!base.shows(id))
134
+ return false;
135
+ const node = store.graph.getNode(id);
136
+ return !node || strip(base.served(node)) !== undefined;
137
+ },
138
+ kept,
139
+ redact: (ops) => redactKept(ops, lens),
140
+ // A lens pinned anew is made by the seat view, and kept there already; a pinned one is itself.
141
+ pin: () => {
142
+ const one = base.pin?.();
143
+ return !one || one === base ? lens : one;
144
+ },
145
+ };
146
+ return lens;
147
+ }
148
+ /** Whether an op adds or removes a record some of whose fields the seat may not see, or writes such a field. */
149
+ function touchesKept(op, lens) {
150
+ return op.primitives.some((primitive) => {
151
+ if (primitive.op === "add-node" || primitive.op === "remove-node")
152
+ return lens.kept(primitive.node) !== undefined;
153
+ if (primitive.op !== "patch-node")
154
+ return false;
155
+ const kept = keptOf(lens, primitive.id);
156
+ return kept !== undefined && Object.keys(primitive.after).some(kept);
157
+ });
158
+ }
159
+ /**
160
+ * WHETHER AN OP'S SENTENCE READ A FIELD THE SEAT MAY NOT SEE: a label or a
161
+ * `describe` that reads one ("Call 555 0101") carries the value in words.
162
+ * The op says which fields its sentence read (`<id>#<field>` in
163
+ * `described`), so such an op is withheld whatever the field held.
164
+ */
165
+ const quotesKept = (op, lens) => (op.described ?? []).some((entry) => {
166
+ const at = entry.lastIndexOf("#");
167
+ return at > 0 && keptOf(lens, entry.slice(0, at))?.(entry.slice(at + 1)) === true;
168
+ });
169
+ /**
170
+ * THE LOG AS A SEAT WHOSE SIGHT KEEPS FIELDS IS SERVED IT: each op judged
171
+ * where it stood (`serveAlong`), record by record — no record is passed as
172
+ * it is, since one it sees may still hold a field it may not. An op that
173
+ * adds or removes a record with a kept field, writes one, or whose sentence
174
+ * read one is withheld (FR-16) with what the seat may see of it: whether
175
+ * the record had a value or not, the seat is served the same. Its own ops
176
+ * are served whole, as written: what it wrote it may see.
177
+ */
178
+ function redactKept(ops, lens) {
179
+ const judge = { served: (node, writer) => lens.servedWith(node, writer), edgeClean: (edge) => !namesUnseen(edge, lens.sees) };
180
+ const along = lens.timeline ? serveAlong(ops, lens.timeline, judge) : ops.map((op) => ({ op, primitives: withhold(op, lens).primitives, faithful: false }));
181
+ return along.map(({ op, primitives, faithful }) => {
182
+ const served = withoutKeptFields(primitives, lens);
183
+ const own = lens.actor !== undefined && actingAs(op.author).id === lens.actor;
184
+ const plain = faithful && served.length === primitives.length && served.every((one, at) => one === primitives[at]) && (own || (!touchesKept(op, lens) && !quotesKept(op, lens)));
185
+ return (!op.withheld && plain ? whole(op, lens, served) : undefined) ?? withhold(op, lens, served);
186
+ });
187
+ }
188
+ /** "does not take "phone"; it takes "id", "name"" — said as an act says an argument it does not take. */
189
+ const doesNotTake = (stray, takes) => `does not take ${stray.map((key) => `"${key}"`).join(", ")}; it takes ${takes.length > 0 ? takes.map((key) => `"${key}"`).join(", ") : "nothing"}`;
190
+ /** A reader whose records of the given kinds say which of their fields were read, once `quoting()` says to listen. */
191
+ function quoting(inner, kinds) {
192
+ const read = [];
193
+ let listening = false;
194
+ const told = (value) => {
195
+ if (Array.isArray(value))
196
+ return value.map(told);
197
+ const node = value;
198
+ if (!node || typeof node !== "object" || !kinds.has(node.kind))
199
+ return value;
200
+ return new Proxy(node, {
201
+ get(target, field, receiver) {
202
+ const said = `${target.id}#${String(field)}`;
203
+ if (listening && typeof field === "string" && field !== "id" && field !== "kind" && !read.includes(said))
204
+ read.push(said);
205
+ return Reflect.get(target, field, receiver);
206
+ },
207
+ });
208
+ };
209
+ const reader = new Proxy(inner, {
210
+ get(target, prop) {
211
+ const value = Reflect.get(target, prop, target);
212
+ return typeof value === "function" ? (...args) => told(value.apply(target, args)) : value;
213
+ },
214
+ });
215
+ return {
216
+ reader,
217
+ listen: () => {
218
+ listening = true;
219
+ return read;
220
+ },
221
+ };
222
+ }
223
+ /**
224
+ * AN ACT AS ITS AUTHOR RUNS IT, under field sight: a write of a field the
225
+ * author may not see is refused — asked before a write of the value the
226
+ * field holds is let go as no change, so the refusal is the same whatever
227
+ * it held — and a field it leaves unset is no write. And whatever the
228
+ * author, its sentence says which fields it read.
229
+ */
230
+ function compiling(store, author, options) {
231
+ const kinds = partialKinds(store.policy);
232
+ if (!kinds.size)
233
+ return options;
234
+ const kept = author && keptFrom(store, author);
235
+ const { reader, listen } = quoting((options.seen ?? store.graph), kinds);
236
+ const given = options.keepUnchanged;
237
+ return {
238
+ ...options,
239
+ seen: reader,
240
+ keepUnchanged: (value, field, node) => given?.(value, field, node) === true || kept?.(node)?.(field) === true,
241
+ check(primitives, definition) {
242
+ for (let at = primitives.length - 1; kept && at >= 0; at--) {
243
+ const primitive = primitives[at];
244
+ if (primitive.op !== "add-node" && primitive.op !== "patch-node")
245
+ continue;
246
+ const node = primitive.op === "add-node" ? primitive.node : store.graph.getNode(primitive.id);
247
+ const keeps = node && kept(node);
248
+ if (!keeps)
249
+ continue;
250
+ const fields = (primitive.op === "add-node" ? primitive.node : primitive.after);
251
+ const stray = Object.keys(fields).filter((field) => field !== "id" && field !== "kind" && keeps(field));
252
+ if (stray.some((field) => !isUnset(fields[field]))) {
253
+ throw new InvalidArguments(definition.name, [{ path: [], message: doesNotTake(stray, (argumentsTaken(definition) ?? []).filter((key) => !keeps(key))) }]);
254
+ }
255
+ // Left unset, it is no write: the record keeps what it holds.
256
+ if (primitive.op === "patch-node") {
257
+ const before = { ...primitive.before };
258
+ const after = { ...primitive.after };
259
+ for (const field of stray)
260
+ delete before[field], delete after[field];
261
+ if (Object.keys(after).length === 0)
262
+ primitives.splice(at, 1);
263
+ else
264
+ primitives[at] = { op: "patch-node", id: primitive.id, before, after };
265
+ }
266
+ }
267
+ return listen();
268
+ },
269
+ };
270
+ }
271
+ /**
272
+ * A NAME AS THE SEAT READS IT: where its sight keeps a field, a record's
273
+ * label is worked out from the record it is served, so a name that quotes
274
+ * the field neither finds the record nor is said back.
275
+ */
276
+ function resolvedFor(store, arg, given, principal, found) {
277
+ const kept = keptFrom(store, principal);
278
+ if (!kept)
279
+ return found;
280
+ const seen = store.seenBy(principal).graph;
281
+ const label = (id) => {
282
+ const node = seen.getNode(id);
283
+ return node ? labelOf(store.schema.tryDefinition(node.kind), node) : id;
284
+ };
285
+ const key = nameKey(given);
286
+ const named = (id) => nameKey(label(id)).startsWith(key);
287
+ if (found.ok) {
288
+ if (found.by === "id")
289
+ return { ...found, label: label(found.id) };
290
+ return named(found.id) ? { ...found, label: label(found.id), by: nameKey(label(found.id)) === key ? "label" : "prefix" } : refusalFor(store.schema, arg, given, []);
291
+ }
292
+ const candidates = found.candidates.filter((one) => named(one.id)).map((one) => ({ ...one, label: label(one.id) }));
293
+ if (candidates.length === 1)
294
+ return { ok: true, id: candidates[0].id, label: candidates[0].label, by: nameKey(candidates[0].label) === key ? "label" : "prefix" };
295
+ return refusalFor(store.schema, arg, given, candidates);
296
+ }
297
+ /*
298
+ * LOADED, IT IS IN FORCE: the seat view keeps fields, an act refuses a
299
+ * write of one, and a name is read as the seat reads it.
300
+ */
301
+ FIELD_SIGHT.on = true;
302
+ FIELD_SIGHT.lens = fieldLens;
303
+ FIELD_SIGHT.keptFrom = keptFrom;
304
+ const store = Store.prototype;
305
+ const sighted = store.sighted;
306
+ store.sighted = function (author) {
307
+ return compiling(this, author, sighted.call(this, author));
308
+ };
309
+ const resolveRef = store.resolveRef;
310
+ store.resolveRef = function (arg, given, principal = { kind: "human" }) {
311
+ return resolvedFor(this, arg, given, principal, resolveRef.call(this, arg, given, principal));
312
+ };
313
+ //# sourceMappingURL=field-sight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-sight.js","sourceRoot":"","sources":["../src/field-sight.ts"],"names":[],"mappings":"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"}
package/dist/forms.d.ts CHANGED
@@ -13,4 +13,5 @@ export { formArgs, formComplete, formField, formFields } from "./mutations/form.
13
13
  export type { FormField, ScalarField } from "./mutations/form.js";
14
14
  export { undecidableArguments } from "./mutations/decidable.js";
15
15
  export type { UndecidableArgument } from "./mutations/decidable.js";
16
+ export { keptArguments } from "./mutations/kept-arguments.js";
16
17
  //# sourceMappingURL=forms.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../src/forms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACpF,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../src/forms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACpF,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC"}
package/dist/forms.js CHANGED
@@ -11,4 +11,5 @@
11
11
  */
12
12
  export { formArgs, formComplete, formField, formFields } from "./mutations/form.js";
13
13
  export { undecidableArguments } from "./mutations/decidable.js";
14
+ export { keptArguments } from "./mutations/kept-arguments.js";
14
15
  //# sourceMappingURL=forms.js.map
package/dist/forms.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"forms.js","sourceRoot":"","sources":["../src/forms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"forms.js","sourceRoot":"","sources":["../src/forms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * AN ARCHIVED RECORD (FR-173) is kept — its fields, its links, its history —
3
+ * and set aside: out of lists, the Scene, counts, computed fields and rules
4
+ * by default, still found by its id, by search, and on its own page. It is
5
+ * said on the record itself, under a key no declared field can take (a
6
+ * field is a word; `$` begins none), so it goes wherever the record goes —
7
+ * the log, an adapter, an export — and an undo is the patch's inverse.
8
+ */
9
+ export declare const ARCHIVED = "$archived";
10
+ /**
11
+ * Which records a read reaches: `false` (the default) the live ones, `true`
12
+ * only the archived ones, `"all"` both.
13
+ */
14
+ export type Archived = boolean | "all";
15
+ /** The option every graph read that lists records takes. */
16
+ export interface ArchivedOption {
17
+ readonly archived?: Archived;
18
+ }
19
+ /** Whether a record is archived. */
20
+ export declare const isArchived: (node: unknown) => boolean;
21
+ /** Whether a record is one a read asking for `archived` reaches. */
22
+ export declare const reaches: (node: unknown, archived?: Archived) => boolean;
23
+ /** `archived` read off a caller's words: `true` or `"true"`, `"all"`; anything else is the live records. */
24
+ export declare const archivedFrom: (value: unknown) => Archived;
25
+ //# sourceMappingURL=archived.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archived.d.ts","sourceRoot":"","sources":["../../src/graph/archived.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,cAAc,CAAC;AAEpC;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;AAEvC,4DAA4D;AAC5D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CAC9B;AAED,oCAAoC;AACpC,eAAO,MAAM,UAAU,GAAI,MAAM,OAAO,KAAG,OAAoF,CAAC;AAEhI,oEAAoE;AACpE,eAAO,MAAM,OAAO,GAAI,MAAM,OAAO,EAAE,WAAU,QAAgB,KAAG,OAA8D,CAAC;AAEnI,4GAA4G;AAC5G,eAAO,MAAM,YAAY,GAAI,OAAO,OAAO,KAAG,QAAyF,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * AN ARCHIVED RECORD (FR-173) is kept — its fields, its links, its history —
3
+ * and set aside: out of lists, the Scene, counts, computed fields and rules
4
+ * by default, still found by its id, by search, and on its own page. It is
5
+ * said on the record itself, under a key no declared field can take (a
6
+ * field is a word; `$` begins none), so it goes wherever the record goes —
7
+ * the log, an adapter, an export — and an undo is the patch's inverse.
8
+ */
9
+ export const ARCHIVED = "$archived";
10
+ /** Whether a record is archived. */
11
+ export const isArchived = (node) => node?.[ARCHIVED] === true;
12
+ /** Whether a record is one a read asking for `archived` reaches. */
13
+ export const reaches = (node, archived = false) => archived === "all" || isArchived(node) === archived;
14
+ /** `archived` read off a caller's words: `true` or `"true"`, `"all"`; anything else is the live records. */
15
+ export const archivedFrom = (value) => (value === true || value === "true" ? true : value === "all" ? "all" : false);
16
+ //# sourceMappingURL=archived.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archived.js","sourceRoot":"","sources":["../../src/graph/archived.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC;AAapC,oCAAoC;AACpC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAa,EAAW,EAAE,CAAE,IAAmD,EAAE,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;AAEhI,oEAAoE;AACpE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAa,EAAE,WAAqB,KAAK,EAAW,EAAE,CAAC,QAAQ,KAAK,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC;AAEnI,4GAA4G;AAC5G,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAc,EAAY,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/graph/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGzE,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,aAAa,GAAG,YAAY;IAChE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,uCAAuC;IACvC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,aAAa,GAAG,YAAY;IAC/D,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,SAAS,SAAS,EAAE,CAAC;IAC5C,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,eAAO,MAAM,UAAU,EAAE,SAOxB,CAAC;AAEF,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,OAAO,CAQ3D;AAaD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,aAAa,EACnD,MAAM,EAAE;IAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;CAAE,EAC5D,KAAK,EAAE;IAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;CAAE,GAC1D,SAAS,CAAC,CAAC,CAAC,CAoCd"}
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/graph/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGzE,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,aAAa,GAAG,YAAY;IAChE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,uCAAuC;IACvC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,aAAa,GAAG,YAAY;IAC/D,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,SAAS,SAAS,EAAE,CAAC;IAC5C,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,eAAO,MAAM,UAAU,EAAE,SAOxB,CAAC;AAEF,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,OAAO,CAQ3D;AAaD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,aAAa,EACnD,MAAM,EAAE;IAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;CAAE,EAC5D,KAAK,EAAE;IAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;CAAE,GAC1D,SAAS,CAAC,CAAC,CAAC,CAqCd"}
@@ -38,7 +38,8 @@ export function diffSnapshots(before, after) {
38
38
  const changedNodes = [];
39
39
  for (const prev of before.nodes) {
40
40
  const next = afterNodes.get(prev.id);
41
- if (!next)
41
+ // The same record, untouched: a graph replaces a record it patches, so one it holds still has not changed.
42
+ if (!next || next === prev)
42
43
  continue;
43
44
  const fields = changedFields(prev, next);
44
45
  if (fields.length > 0)
@@ -1 +1 @@
1
- {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/graph/diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/graph/diff.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { AnySchema, NodeOfSchema } from "../schema/schema.js";
2
+ import { type ArchivedOption } from "./archived.js";
2
3
  import { type GraphDiff } from "./diff.js";
3
4
  import { type Primitive } from "./primitives.js";
4
5
  import { type GraphEdge, type GraphReader, type GraphSnapshot } from "./types.js";
@@ -41,6 +42,16 @@ export declare class MissingRecordError extends GraphError {
41
42
  readonly id: string;
42
43
  constructor(id: string, message: string);
43
44
  }
45
+ /**
46
+ * What about a node does not fit its kind: undefined when it fits; `""`
47
+ * stands for a failure that names no field. A kind the schema does not
48
+ * have is its `SchemaError`, thrown. What a write is judged by, and what
49
+ * `validateGraph` reads a stored record by.
50
+ */
51
+ export declare function misfit(schema: AnySchema, node: unknown): {
52
+ readonly fields: ReadonlySet<string>;
53
+ readonly error: unknown;
54
+ } | undefined;
44
55
  /**
45
56
  * The framework owns the reactive in-memory graph. Owning it — rather than
46
57
  * reading someone else's store — is what makes invariants enforceable and
@@ -57,6 +68,7 @@ export declare class Graph<S extends AnySchema> implements GraphReader<NodeOfSch
57
68
  private readonly lapsed;
58
69
  private reordered;
59
70
  private readonly counts;
71
+ private readonly archived;
60
72
  private readonly listeners;
61
73
  private readonly validate;
62
74
  constructor(schema: S, options?: GraphOptions);
@@ -65,22 +77,28 @@ export declare class Graph<S extends AnySchema> implements GraphReader<NodeOfSch
65
77
  load(snapshot: GraphSnapshot<NodeOfSchema<S>>): GraphDiff<NodeOfSchema<S>>;
66
78
  getNode(id: string): NodeOfSchema<S> | undefined;
67
79
  has(id: string): boolean;
68
- allNodes(): NodeOfSchema<S>[];
69
- /** How many records of `kind` it holds, without walking them. */
70
- count(kind: string): number;
71
- allEdges(): GraphEdge[];
72
- nodesOfKind<K extends NodeOfSchema<S>["kind"]>(kind: K): Extract<NodeOfSchema<S>, {
80
+ /** The live records, unless `archived` asks for others (FR-173). */
81
+ allNodes(options?: ArchivedOption): NodeOfSchema<S>[];
82
+ /** How many records of `kind` it holds, without walking them while none is archived: the live ones, unless `archived` asks for others. */
83
+ count(kind: string, options?: ArchivedOption): number;
84
+ /** The links between records the read reaches: both ends live, unless `archived` asks for others. */
85
+ allEdges(options?: ArchivedOption): GraphEdge[];
86
+ nodesOfKind<K extends NodeOfSchema<S>["kind"]>(kind: K, options?: ArchivedOption): Extract<NodeOfSchema<S>, {
73
87
  kind: K;
74
88
  }>[];
75
- edgesOfKind(kind: string): GraphEdge[];
76
- out(id: string, kind?: string): NodeOfSchema<S>[];
77
- in(id: string, kind?: string): NodeOfSchema<S>[];
78
- neighbors(id: string): NodeOfSchema<S>[];
79
- /** Edges leaving `id`, optionally of one kind. */
89
+ edgesOfKind(kind: string, options?: ArchivedOption): GraphEdge[];
90
+ out(id: string, kind?: string, options?: ArchivedOption): NodeOfSchema<S>[];
91
+ in(id: string, kind?: string, options?: ArchivedOption): NodeOfSchema<S>[];
92
+ neighbors(id: string, options?: ArchivedOption): NodeOfSchema<S>[];
93
+ /** Whether a record is archived (FR-173). */
94
+ isArchived(id: string): boolean;
95
+ /** Edges leaving `id`, optionally of one kind — every one, whatever is at its far end. */
80
96
  outEdges(id: string, kind?: string): GraphEdge[];
81
- /** Edges arriving at `id`, optionally of one kind. */
97
+ /** Edges arriving at `id`, optionally of one kind — every one, whatever is at its far end. */
82
98
  inEdges(id: string, kind?: string): GraphEdge[];
99
+ /** Everything it holds, archived records and their links with the rest: what is stored. */
83
100
  snapshot(): GraphSnapshot<NodeOfSchema<S>>;
101
+ /** Everything it holds, archived or not. */
84
102
  get size(): {
85
103
  nodes: number;
86
104
  edges: number;
@@ -116,8 +134,6 @@ export declare class Graph<S extends AnySchema> implements GraphReader<NodeOfSch
116
134
  * patch did not write is parsed into something else.
117
135
  */
118
136
  private checkPatch;
119
- /** What about a node does not fit: undefined when it fits; `""` stands for a failure that names no field. */
120
- private failing;
121
137
  /** Why a node was refused, in the app's own words. */
122
138
  private refusal;
123
139
  /** `held`: put in as it is (a load, a restore), not judged as a write. */
@@ -127,5 +143,13 @@ export declare class Graph<S extends AnySchema> implements GraphReader<NodeOfSch
127
143
  private index;
128
144
  private edgesFrom;
129
145
  private resolve;
146
+ /** Whether a record is one of the archived. */
147
+ private readonly held;
148
+ /**
149
+ * What a read reaches of `all` (FR-173): every one when it asks for
150
+ * `"all"`, or for the live while none is archived; else those whose
151
+ * `archived` is what it asks. A link is archived when either end is.
152
+ */
153
+ private reach;
130
154
  }
131
155
  //# sourceMappingURL=graph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/graph/graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/graph/graph.ts"],"names":[],"mappings":"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"}