@graview/core 0.1.48 → 0.1.50

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 (292) hide show
  1. package/dist/answer-seen.js +2 -2
  2. package/dist/answer-seen.js.map +1 -1
  3. package/dist/app.d.ts +11 -0
  4. package/dist/app.d.ts.map +1 -1
  5. package/dist/app.js.map +1 -1
  6. package/dist/capabilities.d.ts +7 -1
  7. package/dist/capabilities.d.ts.map +1 -1
  8. package/dist/capabilities.js.map +1 -1
  9. package/dist/cli/check/forms.js +2 -2
  10. package/dist/cli/check/forms.js.map +1 -1
  11. package/dist/cli/check/index.d.ts +1 -0
  12. package/dist/cli/check/index.d.ts.map +1 -1
  13. package/dist/cli/check/index.js +1 -0
  14. package/dist/cli/check/index.js.map +1 -1
  15. package/dist/cli/check/policy.d.ts.map +1 -1
  16. package/dist/cli/check/policy.js +9 -1
  17. package/dist/cli/check/policy.js.map +1 -1
  18. package/dist/cli/check/publishing.d.ts +13 -0
  19. package/dist/cli/check/publishing.d.ts.map +1 -0
  20. package/dist/cli/check/publishing.js +36 -0
  21. package/dist/cli/check/publishing.js.map +1 -0
  22. package/dist/cli/check/relations.d.ts.map +1 -1
  23. package/dist/cli/check/relations.js +4 -1
  24. package/dist/cli/check/relations.js.map +1 -1
  25. package/dist/cli/check.d.ts.map +1 -1
  26. package/dist/cli/check.js +2 -1
  27. package/dist/cli/check.js.map +1 -1
  28. package/dist/cli/describe.d.ts.map +1 -1
  29. package/dist/cli/describe.js +15 -0
  30. package/dist/cli/describe.js.map +1 -1
  31. package/dist/cli/docs.d.ts.map +1 -1
  32. package/dist/cli/docs.js +2 -1
  33. package/dist/cli/docs.js.map +1 -1
  34. package/dist/cli/index.d.ts +1 -0
  35. package/dist/cli/index.d.ts.map +1 -1
  36. package/dist/cli/index.js +3 -1
  37. package/dist/cli/index.js.map +1 -1
  38. package/dist/document/act-spellings.d.ts +12 -0
  39. package/dist/document/act-spellings.d.ts.map +1 -0
  40. package/dist/document/act-spellings.js +56 -0
  41. package/dist/document/act-spellings.js.map +1 -0
  42. package/dist/document/blocks.d.ts.map +1 -1
  43. package/dist/document/blocks.js +4 -2
  44. package/dist/document/blocks.js.map +1 -1
  45. package/dist/document/compile.d.ts.map +1 -1
  46. package/dist/document/compile.js +5 -2
  47. package/dist/document/compile.js.map +1 -1
  48. package/dist/document/compiled.d.ts.map +1 -1
  49. package/dist/document/compiled.js +5 -0
  50. package/dist/document/compiled.js.map +1 -1
  51. package/dist/document/describe-forms.js +2 -2
  52. package/dist/document/describe-forms.js.map +1 -1
  53. package/dist/document/field-spec.d.ts.map +1 -1
  54. package/dist/document/field-spec.js +8 -2
  55. package/dist/document/field-spec.js.map +1 -1
  56. package/dist/document/format-findings.d.ts.map +1 -1
  57. package/dist/document/format-findings.js +5 -0
  58. package/dist/document/format-findings.js.map +1 -1
  59. package/dist/document/page-fields.d.ts.map +1 -1
  60. package/dist/document/page-fields.js +8 -6
  61. package/dist/document/page-fields.js.map +1 -1
  62. package/dist/document/schema.d.ts +13 -0
  63. package/dist/document/schema.d.ts.map +1 -1
  64. package/dist/document/schema.js +16 -0
  65. package/dist/document/schema.js.map +1 -1
  66. package/dist/document/to-document.d.ts.map +1 -1
  67. package/dist/document/to-document.js +1 -0
  68. package/dist/document/to-document.js.map +1 -1
  69. package/dist/document.schema.json +42 -2
  70. package/dist/field-sight.js +5 -4
  71. package/dist/field-sight.js.map +1 -1
  72. package/dist/format-error.d.ts +54 -0
  73. package/dist/format-error.d.ts.map +1 -0
  74. package/dist/format-error.js +73 -0
  75. package/dist/format-error.js.map +1 -0
  76. package/dist/formats.d.ts +16 -13
  77. package/dist/formats.d.ts.map +1 -1
  78. package/dist/formats.js +18 -17
  79. package/dist/formats.js.map +1 -1
  80. package/dist/forms.d.ts +1 -1
  81. package/dist/forms.d.ts.map +1 -1
  82. package/dist/forms.js +1 -1
  83. package/dist/forms.js.map +1 -1
  84. package/dist/graph/diff.js +1 -1
  85. package/dist/graph/diff.js.map +1 -1
  86. package/dist/graph/edge-fields.d.ts +20 -0
  87. package/dist/graph/edge-fields.d.ts.map +1 -0
  88. package/dist/graph/edge-fields.js +21 -0
  89. package/dist/graph/edge-fields.js.map +1 -0
  90. package/dist/graph/graph.d.ts +3 -0
  91. package/dist/graph/graph.d.ts.map +1 -1
  92. package/dist/graph/graph.js +57 -4
  93. package/dist/graph/graph.js.map +1 -1
  94. package/dist/graph/primitives.d.ts +22 -2
  95. package/dist/graph/primitives.d.ts.map +1 -1
  96. package/dist/graph/primitives.js +20 -0
  97. package/dist/graph/primitives.js.map +1 -1
  98. package/dist/graph/types.d.ts +15 -1
  99. package/dist/graph/types.d.ts.map +1 -1
  100. package/dist/graph/types.js +0 -0
  101. package/dist/graph/types.js.map +1 -1
  102. package/dist/history.d.ts +23 -2
  103. package/dist/history.d.ts.map +1 -1
  104. package/dist/history.js +23 -3
  105. package/dist/history.js.map +1 -1
  106. package/dist/index.d.ts +19 -7
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +15 -3
  109. package/dist/index.js.map +1 -1
  110. package/dist/integrity.d.ts.map +1 -1
  111. package/dist/integrity.js +2 -1
  112. package/dist/integrity.js.map +1 -1
  113. package/dist/intelligence-bridge.d.ts +11 -2
  114. package/dist/intelligence-bridge.d.ts.map +1 -1
  115. package/dist/linked.d.ts +1 -0
  116. package/dist/linked.d.ts.map +1 -1
  117. package/dist/linked.js +1 -0
  118. package/dist/linked.js.map +1 -1
  119. package/dist/mutations/asked-order.d.ts +54 -0
  120. package/dist/mutations/asked-order.d.ts.map +1 -0
  121. package/dist/mutations/asked-order.js +78 -0
  122. package/dist/mutations/asked-order.js.map +1 -0
  123. package/dist/mutations/define-mutation.d.ts +4 -0
  124. package/dist/mutations/define-mutation.d.ts.map +1 -1
  125. package/dist/mutations/define-mutation.js +32 -8
  126. package/dist/mutations/define-mutation.js.map +1 -1
  127. package/dist/mutations/derive-edits.d.ts.map +1 -1
  128. package/dist/mutations/derive-edits.js +3 -1
  129. package/dist/mutations/derive-edits.js.map +1 -1
  130. package/dist/mutations/form.d.ts +7 -0
  131. package/dist/mutations/form.d.ts.map +1 -1
  132. package/dist/mutations/form.js +9 -0
  133. package/dist/mutations/form.js.map +1 -1
  134. package/dist/mutations/keep-link.d.ts.map +1 -1
  135. package/dist/mutations/keep-link.js +4 -2
  136. package/dist/mutations/keep-link.js.map +1 -1
  137. package/dist/mutations/type-text.d.ts +49 -0
  138. package/dist/mutations/type-text.d.ts.map +1 -0
  139. package/dist/mutations/type-text.js +106 -0
  140. package/dist/mutations/type-text.js.map +1 -0
  141. package/dist/mutations/types.d.ts +8 -0
  142. package/dist/mutations/types.d.ts.map +1 -1
  143. package/dist/mutations/visitor-form.d.ts.map +1 -1
  144. package/dist/mutations/visitor-form.js +4 -4
  145. package/dist/mutations/visitor-form.js.map +1 -1
  146. package/dist/ops/digest.d.ts +17 -6
  147. package/dist/ops/digest.d.ts.map +1 -1
  148. package/dist/ops/digest.js +36 -15
  149. package/dist/ops/digest.js.map +1 -1
  150. package/dist/ops/kept-fields.d.ts +1 -1
  151. package/dist/ops/kept-fields.d.ts.map +1 -1
  152. package/dist/ops/kept-fields.js +4 -1
  153. package/dist/ops/kept-fields.js.map +1 -1
  154. package/dist/ops/lineage.d.ts +37 -5
  155. package/dist/ops/lineage.d.ts.map +1 -1
  156. package/dist/ops/lineage.js +47 -16
  157. package/dist/ops/lineage.js.map +1 -1
  158. package/dist/ops/log.d.ts.map +1 -1
  159. package/dist/ops/log.js +3 -0
  160. package/dist/ops/log.js.map +1 -1
  161. package/dist/ops/provenance.d.ts.map +1 -1
  162. package/dist/ops/provenance.js +3 -1
  163. package/dist/ops/provenance.js.map +1 -1
  164. package/dist/ops/revisions.d.ts +8 -2
  165. package/dist/ops/revisions.d.ts.map +1 -1
  166. package/dist/ops/revisions.js +12 -3
  167. package/dist/ops/revisions.js.map +1 -1
  168. package/dist/ops/served.d.ts.map +1 -1
  169. package/dist/ops/served.js +30 -4
  170. package/dist/ops/served.js.map +1 -1
  171. package/dist/ops/suggestions.d.ts +50 -4
  172. package/dist/ops/suggestions.d.ts.map +1 -1
  173. package/dist/ops/suggestions.js +13 -7
  174. package/dist/ops/suggestions.js.map +1 -1
  175. package/dist/ops/tidying.d.ts +33 -4
  176. package/dist/ops/tidying.d.ts.map +1 -1
  177. package/dist/ops/tidying.js +50 -9
  178. package/dist/ops/tidying.js.map +1 -1
  179. package/dist/ops/types.d.ts +51 -3
  180. package/dist/ops/types.d.ts.map +1 -1
  181. package/dist/ops/types.js +16 -1
  182. package/dist/ops/types.js.map +1 -1
  183. package/dist/ops/undo.d.ts +15 -2
  184. package/dist/ops/undo.d.ts.map +1 -1
  185. package/dist/ops/undo.js +22 -3
  186. package/dist/ops/undo.js.map +1 -1
  187. package/dist/ops/withheld.d.ts.map +1 -1
  188. package/dist/ops/withheld.js +4 -0
  189. package/dist/ops/withheld.js.map +1 -1
  190. package/dist/ops/writers.d.ts.map +1 -1
  191. package/dist/ops/writers.js +3 -0
  192. package/dist/ops/writers.js.map +1 -1
  193. package/dist/past.d.ts +1 -0
  194. package/dist/past.d.ts.map +1 -1
  195. package/dist/past.js +9 -2
  196. package/dist/past.js.map +1 -1
  197. package/dist/persistence/memory.d.ts +1 -1
  198. package/dist/persistence/memory.d.ts.map +1 -1
  199. package/dist/persistence/memory.js +5 -1
  200. package/dist/persistence/memory.js.map +1 -1
  201. package/dist/persistence/sql.d.ts +1 -1
  202. package/dist/persistence/sql.d.ts.map +1 -1
  203. package/dist/persistence/sql.js +45 -5
  204. package/dist/persistence/sql.js.map +1 -1
  205. package/dist/persistence/sqlite.d.ts +1 -0
  206. package/dist/persistence/sqlite.d.ts.map +1 -1
  207. package/dist/persistence/sqlite.js +1 -0
  208. package/dist/persistence/sqlite.js.map +1 -1
  209. package/dist/persistence/types.d.ts +34 -1
  210. package/dist/persistence/types.d.ts.map +1 -1
  211. package/dist/persistence/types.js +35 -1
  212. package/dist/persistence/types.js.map +1 -1
  213. package/dist/presence.d.ts +2 -1
  214. package/dist/presence.d.ts.map +1 -1
  215. package/dist/presence.js +2 -1
  216. package/dist/presence.js.map +1 -1
  217. package/dist/publish.d.ts +78 -0
  218. package/dist/publish.d.ts.map +1 -0
  219. package/dist/publish.js +23 -0
  220. package/dist/publish.js.map +1 -0
  221. package/dist/publishing.d.ts +10 -0
  222. package/dist/publishing.d.ts.map +1 -0
  223. package/dist/publishing.js +168 -0
  224. package/dist/publishing.js.map +1 -0
  225. package/dist/refused.d.ts +13 -6
  226. package/dist/refused.d.ts.map +1 -1
  227. package/dist/refused.js +13 -6
  228. package/dist/refused.js.map +1 -1
  229. package/dist/schema/collaborative.d.ts +14 -0
  230. package/dist/schema/collaborative.d.ts.map +1 -0
  231. package/dist/schema/collaborative.js +65 -0
  232. package/dist/schema/collaborative.js.map +1 -0
  233. package/dist/schema/json-schema.d.ts +1 -1
  234. package/dist/schema/json-schema.d.ts.map +1 -1
  235. package/dist/schema/json-schema.js +11 -1
  236. package/dist/schema/json-schema.js.map +1 -1
  237. package/dist/seen.d.ts +44 -1
  238. package/dist/seen.d.ts.map +1 -1
  239. package/dist/seen.js +59 -14
  240. package/dist/seen.js.map +1 -1
  241. package/dist/store.d.ts +79 -4
  242. package/dist/store.d.ts.map +1 -1
  243. package/dist/store.js +123 -25
  244. package/dist/store.js.map +1 -1
  245. package/dist/subscriptions.d.ts.map +1 -1
  246. package/dist/subscriptions.js +13 -1
  247. package/dist/subscriptions.js.map +1 -1
  248. package/dist/sync/engine.d.ts.map +1 -1
  249. package/dist/sync/engine.js +43 -15
  250. package/dist/sync/engine.js.map +1 -1
  251. package/dist/sync/index.d.ts +1 -1
  252. package/dist/sync/index.d.ts.map +1 -1
  253. package/dist/sync/index.js +1 -1
  254. package/dist/sync/index.js.map +1 -1
  255. package/dist/sync/types.d.ts +10 -0
  256. package/dist/sync/types.d.ts.map +1 -1
  257. package/dist/sync/types.js +8 -0
  258. package/dist/sync/types.js.map +1 -1
  259. package/dist/testing.d.ts.map +1 -1
  260. package/dist/testing.js +1 -0
  261. package/dist/testing.js.map +1 -1
  262. package/dist/text/diff.d.ts +10 -0
  263. package/dist/text/diff.d.ts.map +1 -0
  264. package/dist/text/diff.js +26 -0
  265. package/dist/text/diff.js.map +1 -0
  266. package/dist/text/since.d.ts +29 -0
  267. package/dist/text/since.d.ts.map +1 -0
  268. package/dist/text/since.js +66 -0
  269. package/dist/text/since.js.map +1 -0
  270. package/dist/text/splice.d.ts +51 -0
  271. package/dist/text/splice.d.ts.map +1 -0
  272. package/dist/text/splice.js +71 -0
  273. package/dist/text/splice.js.map +1 -0
  274. package/dist/text/typing-hook.d.ts +37 -0
  275. package/dist/text/typing-hook.d.ts.map +1 -0
  276. package/dist/text/typing-hook.js +16 -0
  277. package/dist/text/typing-hook.js.map +1 -0
  278. package/dist/tidying.d.ts +25 -7
  279. package/dist/tidying.d.ts.map +1 -1
  280. package/dist/tidying.js +26 -11
  281. package/dist/tidying.js.map +1 -1
  282. package/dist/typing.d.ts +2 -0
  283. package/dist/typing.d.ts.map +1 -0
  284. package/dist/typing.js +109 -0
  285. package/dist/typing.js.map +1 -0
  286. package/dist/version.d.ts +1 -1
  287. package/dist/version.js +1 -1
  288. package/dist/who.d.ts +1 -1
  289. package/dist/who.d.ts.map +1 -1
  290. package/dist/who.js +5 -2
  291. package/dist/who.js.map +1 -1
  292. package/package.json +12 -2
@@ -1 +1 @@
1
- {"version":3,"file":"revisions.d.ts","sourceRoot":"","sources":["../../src/ops/revisions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,8FAA8F;AAC9F,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAID,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAQ1F;AAED;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAClD,6EAA6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,OAAO;IAIP,6HAA6H;IAC7H,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,EAAE,OAAO,GAAE;QAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,cAAc;IAMjG,0DAA0D;IAC1D,IAAI,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI;IAWrC,qHAAqH;IACrH,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAIvC,+HAA+H;IAC/H,OAAO,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,EAAE,IAAI,GAAE,WAAW,CAAC,MAAM,CAAa,GAAG,aAAa,EAAE;IAiB1F,8HAA8H;IAC9H,KAAK,CAAC,IAAI,EAAE,SAAS,aAAa,EAAE,GAAG,aAAa,EAAE;CAGvD;AAED,6GAA6G;AAC7G,wBAAgB,SAAS,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAShE"}
1
+ {"version":3,"file":"revisions.d.ts","sourceRoot":"","sources":["../../src/ops/revisions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,8FAA8F;AAC9F,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAID,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAU1F;AAED;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAClD,6EAA6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,OAAO;IAIP,6HAA6H;IAC7H,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,EAAE,OAAO,GAAE;QAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,cAAc;IAMjG,0DAA0D;IAC1D,IAAI,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI;IAWrC,qHAAqH;IACrH,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAIvC;;;;;;OAMG;IACH,OAAO,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,EAAE,IAAI,GAAE,WAAW,CAAC,MAAM,CAAa,EAAE,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,aAAa,EAAE;IAiBpJ,8HAA8H;IAC9H,KAAK,CAAC,IAAI,EAAE,SAAS,aAAa,EAAE,GAAG,aAAa,EAAE;CAGvD;AAED,6GAA6G;AAC7G,wBAAgB,SAAS,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAShE"}
@@ -35,6 +35,9 @@ export function fieldsWritten(primitive) {
35
35
  }
36
36
  if (primitive.op === "patch-node")
37
37
  return Object.keys(primitive.after).map((field) => [primitive.id, field]);
38
+ // A splice moves its field's revision as any write does: a whole-value write made against the text before it is stale.
39
+ if (primitive.op === "splice-text")
40
+ return [[primitive.id, primitive.field]];
38
41
  return [];
39
42
  }
40
43
  /**
@@ -71,8 +74,14 @@ export class FieldRevisions {
71
74
  of(node, field) {
72
75
  return this.revs.get(key(node, field)) ?? this.floor;
73
76
  }
74
- /** The base a call made of these ops would carry: each field they patch on a record they did not add, at its revision here. */
75
- baseFor(ops, skip = new Set()) {
77
+ /**
78
+ * The base a call made of these ops would carry: each field they patch on
79
+ * a record they did not add, at its revision here — but a field typed
80
+ * together (`collaborative`, Roadmap f-collab-text), which is merged and
81
+ * never stale: a splice claims nothing, and neither does the first
82
+ * keystroke's patch into an empty field.
83
+ */
84
+ baseFor(ops, skip = new Set(), collaborative) {
76
85
  const created = new Set();
77
86
  const base = new Map();
78
87
  for (const op of ops) {
@@ -83,7 +92,7 @@ export class FieldRevisions {
83
92
  continue;
84
93
  for (const field of Object.keys(primitive.after)) {
85
94
  const at = key(primitive.id, field);
86
- if (skip.has(at) || base.has(at))
95
+ if (skip.has(at) || base.has(at) || collaborative?.(primitive.id, field))
87
96
  continue;
88
97
  base.set(at, { node: primitive.id, field, rev: this.of(primitive.id, field) });
89
98
  }
@@ -1 +1 @@
1
- {"version":3,"file":"revisions.js","sourceRoot":"","sources":["../../src/ops/revisions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"revisions.js","sourceRoot":"","sources":["../../src/ops/revisions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"served.d.ts","sourceRoot":"","sources":["../../src/ops/served.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAU,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,oDAAoD;AACpD,MAAM,WAAW,OAAO;IACtB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,SAAS,EAAE,CAAC;IAC3C,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,SAAS,EAAE,CAAC;CAC3C;AAED,6GAA6G;AAC7G,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE;QAAE,GAAG,IAAI,SAAS,SAAS,EAAE,CAAC;QAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,yGAAyG;AACzG,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAEhE,+DAA+D;AAC/D,MAAM,WAAW,WAAW;IAC1B,oHAAoH;IACpH,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,GAAG,YAAY,GAAG,SAAS,CAAC;IAC1E,0FAA0F;IAC1F,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IACpC;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAC9C;AA6MD,wGAAwG;AACxG,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,QAAQ,EAAE,CA8BxG;AA+ED,qIAAqI;AACrI,wBAAgB,eAAe,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,EAAE,CAIjJ"}
1
+ {"version":3,"file":"served.d.ts","sourceRoot":"","sources":["../../src/ops/served.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAU,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,oDAAoD;AACpD,MAAM,WAAW,OAAO;IACtB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,SAAS,EAAE,CAAC;IAC3C,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,SAAS,EAAE,CAAC;CAC3C;AAED,6GAA6G;AAC7G,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE;QAAE,GAAG,IAAI,SAAS,SAAS,EAAE,CAAC;QAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,yGAAyG;AACzG,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAEhE,+DAA+D;AAC/D,MAAM,WAAW,WAAW;IAC1B,oHAAoH;IACpH,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,GAAG,YAAY,GAAG,SAAS,CAAC;IAC1E,0FAA0F;IAC1F,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IACpC;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAC9C;AA8ND,wGAAwG;AACxG,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,QAAQ,EAAE,CA8BxG;AAmFD,qIAAqI;AACrI,wBAAgB,eAAe,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,EAAE,CAIjJ"}
@@ -1,4 +1,4 @@
1
- import { isUnset, UNSET } from "../graph/primitives.js";
1
+ import { isUnset, splicedRecord, UNSET } from "../graph/primitives.js";
2
2
  import { edgeId } from "../graph/types.js";
3
3
  import { actingAs } from "../permissions/policy.js";
4
4
  /** The graph at one moment of the log: now, with what differs held apart. */
@@ -38,11 +38,11 @@ class Moment {
38
38
  }
39
39
  /** The fields a primitive just wrote, and who wrote them. */
40
40
  note(primitive, by) {
41
- const id = primitive.op === "add-node" ? primitive.node.id : primitive.op === "patch-node" ? primitive.id : "";
41
+ const id = primitive.op === "add-node" ? primitive.node.id : primitive.op === "patch-node" || primitive.op === "splice-text" ? primitive.id : "";
42
42
  // A record never judged never asks who wrote it.
43
43
  if (id === "" || this.unversioned?.has(id))
44
44
  return;
45
- const fields = primitive.op === "add-node" ? Object.keys(primitive.node) : Object.keys(primitive.after);
45
+ const fields = primitive.op === "add-node" ? Object.keys(primitive.node) : primitive.op === "splice-text" ? [primitive.field] : Object.keys(primitive.after);
46
46
  for (const field of fields)
47
47
  if (field !== "id" && field !== "kind")
48
48
  this.wrote.set(`${id}\u0000${field}`, by(id, field));
@@ -98,6 +98,12 @@ class Moment {
98
98
  this.setNode(primitive.id, patched(node, primitive.before));
99
99
  return;
100
100
  }
101
+ case "splice-text": {
102
+ const node = this.unversioned?.has(primitive.id) ? undefined : this.node(primitive.id);
103
+ if (node)
104
+ this.setNode(primitive.id, splicedRecord(node, primitive, true));
105
+ return;
106
+ }
101
107
  case "add-edge":
102
108
  this.setEdge(primitive.edge, false);
103
109
  return;
@@ -126,6 +132,12 @@ class Moment {
126
132
  this.setNode(primitive.id, patched(node, primitive.after));
127
133
  return;
128
134
  }
135
+ case "splice-text": {
136
+ const node = this.unversioned?.has(primitive.id) ? undefined : this.node(primitive.id);
137
+ if (node)
138
+ this.setNode(primitive.id, splicedRecord(node, primitive));
139
+ return;
140
+ }
129
141
  case "add-edge":
130
142
  this.setEdge(primitive.edge, true);
131
143
  return;
@@ -145,7 +157,7 @@ function patched(node, fields) {
145
157
  }
146
158
  return next;
147
159
  }
148
- const idOf = (primitive) => primitive.op === "add-node" || primitive.op === "remove-node" ? primitive.node.id : primitive.op === "patch-node" ? primitive.id : undefined;
160
+ const idOf = (primitive) => primitive.op === "add-node" || primitive.op === "remove-node" ? primitive.node.id : primitive.op === "patch-node" || primitive.op === "splice-text" ? primitive.id : undefined;
149
161
  /** Judges one primitive at a moment, and moves the moment past it. */
150
162
  function serveOne(primitive, moment, judge, by) {
151
163
  /*
@@ -203,6 +215,14 @@ function serveOne(primitive, moment, judge, by) {
203
215
  const side = (node) => Object.fromEntries(Object.keys(primitive.after).map((field) => [field, field in node ? node[field] : UNSET]));
204
216
  return { primitives: [{ op: "patch-node", id, before: side(before), after: side(after) }], faithful: false };
205
217
  }
218
+ if (primitive.op === "splice-text") {
219
+ // The splice as written, when its field is served as it is on both sides; else the field as the seat is served it, whole.
220
+ const field = primitive.field;
221
+ if (before[field] === was[field] && after[field] === now[field])
222
+ return { primitives: [primitive], faithful: true };
223
+ const side = (node) => ({ [field]: field in node ? node[field] : UNSET });
224
+ return { primitives: [{ op: "patch-node", id, before: side(before), after: side(after) }], faithful: false };
225
+ }
206
226
  // An add of a record already there, or a remove that leaves it: a log that does not fold here; say the record as it is.
207
227
  return { primitives: [{ op: "remove-node", node: before }, { op: "add-node", node: after }], faithful: false };
208
228
  }
@@ -284,6 +304,12 @@ function judgedAlong(log, first, present, judge) {
284
304
  version(primitive.id, primitive.before);
285
305
  version(primitive.id, primitive.after);
286
306
  }
307
+ else if (primitive.op === "splice-text") {
308
+ // Part of a text says nothing of what the whole names: a record spliced is followed version by version.
309
+ version(primitive.id, {});
310
+ if (!unseen.has(primitive.id))
311
+ followed.add(primitive.id), plain.delete(primitive.id);
312
+ }
287
313
  }
288
314
  }
289
315
  for (const id of plain) {
@@ -1 +1 @@
1
- {"version":3,"file":"served.js","sourceRoot":"","sources":["../../src/ops/served.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"served.js","sourceRoot":"","sources":["../../src/ops/served.ts"],"names":[],"mappings":"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"}
@@ -12,15 +12,61 @@ export interface Suggestion {
12
12
  readonly author: Author;
13
13
  readonly lineage?: Lineage;
14
14
  readonly at: string;
15
+ /** When it stops waiting, when its maker said (`Operation.expiresAt`). */
16
+ readonly expiresAt?: string;
15
17
  /** The records its calls name, so a tray can point at them. */
16
18
  readonly about: readonly string[];
17
19
  }
20
+ /**
21
+ * "NOT NOW": ONE PERSON PUT A SUGGESTION OUT OF SIGHT, without saying no
22
+ * to it. It is the person's own state, not the app's — kept where the host
23
+ * keeps what a person chose (beside their subscriptions, their pins), and
24
+ * handed to `suggestions` as `dismissed` — so it hides the suggestion from
25
+ * them alone, binds the app's own actor to nothing, and the log, which is
26
+ * what every reader shares and the actor is held to, says nothing of it. A
27
+ * decline is the other answer: an undo in the log, for everyone, and the
28
+ * actor never makes it again.
29
+ */
30
+ export interface Dismissal {
31
+ /** The id of the suggestion's op. */
32
+ readonly suggestion: string;
33
+ /** When the person said it. */
34
+ readonly at: string;
35
+ /** When it shows again, if it is still waiting then; absent, not while that suggestion waits. */
36
+ readonly until?: string;
37
+ }
38
+ /**
39
+ * WHERE A PERSON'S "NOT NOW" IS KEPT: the host's, beside what else it keeps
40
+ * of them (their subscriptions, their pins), for the one person reading.
41
+ * `list` is read as the tray draws, so a host whose storage is far away
42
+ * keeps a copy near and says `onChange` when it moves.
43
+ */
44
+ export interface DismissalStore {
45
+ /** What this person said "not now" to. */
46
+ list(): readonly Dismissal[];
47
+ /** Keep one, in place of any earlier one for the same suggestion. */
48
+ dismiss(dismissal: Dismissal): void | Promise<void>;
49
+ /** Told when what is kept changes; returns how to stop being told. */
50
+ onChange?(listener: () => void): () => void;
51
+ }
52
+ /** What reading the suggestions waiting is told besides the log. */
53
+ export interface WaitingOptions {
54
+ /** Now, as an ISO time: what an expiry and a dismissal's `until` are read against. Unsaid, the clock's. */
55
+ readonly now?: string;
56
+ /** What the person reading said "not now" to; those are not among what waits for them. */
57
+ readonly dismissed?: readonly Dismissal[] | undefined;
58
+ }
59
+ /** Whether a suggestion's op has stopped waiting by its own expiry. */
60
+ export declare const expired: (op: Pick<Operation, "expiresAt">, now: string) => boolean;
61
+ /** Whether one person put this suggestion out of sight, as of now. */
62
+ export declare const isDismissed: (dismissed: readonly Dismissal[] | undefined, id: string, now: string) => boolean;
18
63
  /**
19
64
  * THE SUGGESTIONS STILL WAITING in a log, oldest first: each op that
20
65
  * suggests, unless an op accepted it (its lineage names it, whether or not
21
- * that was taken back later) or a live undo declined it. A withheld op is
22
- * no suggestion for the seat it was withheld from. `has` keeps, of the ids
23
- * its calls name, the records (`about`).
66
+ * that was taken back later), a live undo declined it, or it expired. A
67
+ * withheld op is no suggestion for the seat it was withheld from. `has`
68
+ * keeps, of the ids its calls name, the records (`about`). One the reader
69
+ * said "not now" to (`options.dismissed`) is left out for them.
24
70
  */
25
- export declare function suggestionsIn(ops: readonly Operation[], has?: (id: string) => boolean): Suggestion[];
71
+ export declare function suggestionsIn(ops: readonly Operation[], has?: (id: string) => boolean, options?: WaitingOptions): Suggestion[];
26
72
  //# sourceMappingURL=suggestions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"suggestions.d.ts","sourceRoot":"","sources":["../../src/ops/suggestions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AASpD,+FAA+F;AAC/F,MAAM,WAAW,UAAU;IACzB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,EAAE,GAAG,GAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAoB,GAAG,UAAU,EAAE,CAWhH"}
1
+ {"version":3,"file":"suggestions.d.ts","sourceRoot":"","sources":["../../src/ops/suggestions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AASpD,+FAA+F;AAC/F,MAAM,WAAW,UAAU;IACzB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,SAAS;IACxB,qCAAqC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,iGAAiG;IACjG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,IAAI,IAAI,SAAS,SAAS,EAAE,CAAC;IAC7B,qEAAqE;IACrE,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,sEAAsE;IACtE,QAAQ,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC7C;AAED,oEAAoE;AACpE,MAAM,WAAW,cAAc;IAC7B,2GAA2G;IAC3G,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,0FAA0F;IAC1F,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,CAAC;CACvD;AAED,uEAAuE;AACvE,eAAO,MAAM,OAAO,GAAI,IAAI,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,KAAK,MAAM,KAAG,OAAoF,CAAC;AAE7J,sEAAsE;AACtE,eAAO,MAAM,WAAW,GAAI,WAAW,SAAS,SAAS,EAAE,GAAG,SAAS,EAAE,IAAI,MAAM,EAAE,KAAK,MAAM,KAAG,OAC6B,CAAC;AAEjI;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,EAAE,GAAG,GAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAoB,EAAE,OAAO,GAAE,cAAmB,GAAG,UAAU,EAAE,CAY9I"}
@@ -1,21 +1,27 @@
1
1
  import { undoneIn } from "./log.js";
2
+ /** Whether a suggestion's op has stopped waiting by its own expiry. */
3
+ export const expired = (op, now) => op.expiresAt !== undefined && Date.parse(op.expiresAt) <= Date.parse(now);
4
+ /** Whether one person put this suggestion out of sight, as of now. */
5
+ export const isDismissed = (dismissed, id, now) => (dismissed ?? []).some((one) => one.suggestion === id && (one.until === undefined || Date.parse(one.until) > Date.parse(now)));
2
6
  /**
3
7
  * THE SUGGESTIONS STILL WAITING in a log, oldest first: each op that
4
8
  * suggests, unless an op accepted it (its lineage names it, whether or not
5
- * that was taken back later) or a live undo declined it. A withheld op is
6
- * no suggestion for the seat it was withheld from. `has` keeps, of the ids
7
- * its calls name, the records (`about`).
9
+ * that was taken back later), a live undo declined it, or it expired. A
10
+ * withheld op is no suggestion for the seat it was withheld from. `has`
11
+ * keeps, of the ids its calls name, the records (`about`). One the reader
12
+ * said "not now" to (`options.dismissed`) is left out for them.
8
13
  */
9
- export function suggestionsIn(ops, has = () => true) {
14
+ export function suggestionsIn(ops, has = () => true, options = {}) {
10
15
  const undone = undoneIn(ops);
11
16
  const accepted = new Set(ops.map((op) => op.lineage?.suggestion));
17
+ const now = options.now ?? new Date().toISOString();
12
18
  return ops
13
- .filter((op) => op.suggests && !op.withheld && !undone.has(op.id) && !accepted.has(op.id))
14
- .map(({ id, batch, suggests, intent, author, lineage, at }) => {
19
+ .filter((op) => op.suggests && !op.withheld && !undone.has(op.id) && !accepted.has(op.id) && !expired(op, now) && !isDismissed(options.dismissed, op.id, now))
20
+ .map(({ id, batch, suggests, intent, author, lineage, at, expiresAt }) => {
15
21
  const about = new Set();
16
22
  // Every string its calls hold, kept where it is a record.
17
23
  JSON.stringify(suggests.map((call) => call.args), (_, value) => (typeof value === "string" && has(value) && about.add(value), value));
18
- return { id, batch, calls: suggests, intent, author, ...(lineage ? { lineage } : {}), at, about: [...about] };
24
+ return { id, batch, calls: suggests, intent, author, ...(lineage ? { lineage } : {}), at, expiresAt, about: [...about] };
19
25
  });
20
26
  }
21
27
  //# sourceMappingURL=suggestions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"suggestions.js","sourceRoot":"","sources":["../../src/ops/suggestions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAyBpC;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,GAAyB,EAAE,MAA+B,GAAG,EAAE,CAAC,IAAI;IAChG,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAClE,OAAO,GAAG;SACP,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACzF,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE;QAC5D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,0DAA0D;QAC1D,IAAI,CAAC,SAAS,CAAC,QAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACvI,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;IACjH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"suggestions.js","sourceRoot":"","sources":["../../src/ops/suggestions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAqEpC,uEAAuE;AACvE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAgC,EAAE,GAAW,EAAW,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE7J,sEAAsE;AACtE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAA2C,EAAE,EAAU,EAAE,GAAW,EAAW,EAAE,CAC3G,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEjI;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,GAAyB,EAAE,MAA+B,GAAG,EAAE,CAAC,IAAI,EAAE,UAA0B,EAAE;IAC9H,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAClE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpD,OAAO,GAAG;SACP,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;SAC7J,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACvE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,0DAA0D;QAC1D,IAAI,CAAC,SAAS,CAAC,QAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACvI,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;IAC5H,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -24,15 +24,44 @@ export declare const isLeftAlone: (from: {
24
24
  export declare function tidyingOf(schema: AnySchema, kind: string, relation?: string): "never" | "no-links" | undefined;
25
25
  /** WHO A SUGGESTION IS, whoever made it and on whatever basis: its calls, in order, each its act and arguments, keys in order. */
26
26
  export declare const suggestionKey: (calls: readonly MutationCall[]) => string;
27
+ /**
28
+ * WHAT THE APP KNOWS OF ITS ACTS, for reading what a call means rather than
29
+ * how it was spelled (`meaningKey`): the act a name says, however it is
30
+ * spelled, and whether a record is there. A store hands its own.
31
+ */
32
+ export interface ActMeanings {
33
+ readonly act: (name: string) => {
34
+ readonly derived?: {
35
+ readonly act: string;
36
+ readonly relation?: string;
37
+ };
38
+ readonly connects?: readonly string[];
39
+ readonly creates?: readonly unknown[];
40
+ readonly subject?: {
41
+ readonly arg: string;
42
+ };
43
+ } | undefined;
44
+ readonly has: (id: string) => boolean;
45
+ }
46
+ /**
47
+ * WHAT A SUGGESTION MEANS, however its calls were spelled: a link between
48
+ * two records by its relation, whichever act asks for it; a merge of a
49
+ * pair, whichever way round; a record archived, removed or left alone; and
50
+ * anything else its act, in any spelling of it, and its arguments, less the
51
+ * minted id of a record it would make. Worked out from the calls whenever
52
+ * it is asked, so a decline already in a log matches by it too.
53
+ */
54
+ export declare const meaningKey: (calls: readonly MutationCall[], meanings?: ActMeanings) => string;
27
55
  /**
28
56
  * THE OP THAT DECLINED THESE CALLS — the whole suggestion, or any one of
29
- * them on its own — or undefined: a live undo of a suggestion, or of a
57
+ * them on its own, asked exactly as it was or meaning the same
58
+ * (`meaningKey`) — or undefined: a live undo of a suggestion, or of a
30
59
  * change made with a lineage (an actor's confident change a person took
31
60
  * back). "Do not make this again."
32
61
  */
33
- export declare function declinedIn(ops: readonly Operation[], calls: readonly MutationCall[]): Operation | undefined;
34
- /** Every decline in a log, keyed by the whole suggestion and by each of its calls alone (`suggestionKey`). */
35
- export declare function declinesIn(ops: readonly Operation[]): ReadonlyMap<string, Operation>;
62
+ export declare function declinedIn(ops: readonly Operation[], calls: readonly MutationCall[], meanings?: ActMeanings): Operation | undefined;
63
+ /** Every decline in a log, keyed by what the whole suggestion means and what each of its calls alone means (`meaningKey`): calls asked exactly alike always mean the same. */
64
+ export declare function declinesIn(ops: readonly Operation[], meanings?: ActMeanings): ReadonlyMap<string, Operation>;
36
65
  /**
37
66
  * WHY THE APP'S OWN ACTOR MAY NOT MAKE THESE PRIMITIVES, in a sentence, or
38
67
  * undefined when it may: a record a person said to leave alone, a kind the
@@ -1 +1 @@
1
- {"version":3,"file":"tidying.d.ts","sourceRoot":"","sources":["../../src/ops/tidying.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAoBpD,KAAK,KAAK,GAAG;IAAE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,SAAS,GAAG,OAAO,CAE3F;AAED,+DAA+D;AAC/D,eAAO,MAAM,SAAS,GAAI,MAAM,OAAO,KAAG,OAA+E,CAAC;AAE1H;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,KAAK,EAAE,IAAI,MAAM,KAAG,OAAuE,CAAC;AAE1J,4GAA4G;AAC5G,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAG9G;AAED,kIAAkI;AAClI,eAAO,MAAM,aAAa,GAAI,OAAO,SAAS,YAAY,EAAE,KAAG,MAI5D,CAAC;AAEJ;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,GAAG,SAAS,CAG3G;AAED,8GAA8G;AAC9G,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAUpF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,GAAG,SAAS,CAoBnL"}
1
+ {"version":3,"file":"tidying.d.ts","sourceRoot":"","sources":["../../src/ops/tidying.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAoBpD,KAAK,KAAK,GAAG;IAAE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,SAAS,GAAG,OAAO,CAE3F;AAED,+DAA+D;AAC/D,eAAO,MAAM,SAAS,GAAI,MAAM,OAAO,KAAG,OAA+E,CAAC;AAE1H;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,KAAK,EAAE,IAAI,MAAM,KAAG,OAAuE,CAAC;AAE1J,4GAA4G;AAC5G,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAG9G;AAKD,kIAAkI;AAClI,eAAO,MAAM,aAAa,GAAI,OAAO,SAAS,YAAY,EAAE,KAAG,MAAgE,CAAC;AAEhI;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KACvB;QACE,QAAQ,CAAC,OAAO,CAAC,EAAE;YAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACxE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;QACtC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;KAC7C,GACD,SAAS,CAAC;IACd,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;CACvC;AA2BD;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,SAAS,YAAY,EAAE,EAAE,WAAW,WAAW,KAAG,MAAyE,CAAC;AAE9J;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,YAAY,EAAE,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAGnI;AAED,8KAA8K;AAC9K,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAU5G;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,GAAG,SAAS,CAoBnL"}
@@ -1,4 +1,6 @@
1
1
  import { LEFT_ALONE } from "../graph/archived.js";
2
+ import { spellingOf } from "../mutations/act-spelling.js";
3
+ import { derivedActOf } from "../mutations/derived-names.js";
2
4
  import { labelOf, pluralOf } from "../schema/define-node.js";
3
5
  import { undoneIn } from "./log.js";
4
6
  /**
@@ -21,20 +23,59 @@ export function tidyingOf(schema, kind, relation) {
21
23
  const definition = schema.tryDefinition(kind);
22
24
  return relation === undefined ? definition?.tidying : definition?.edges?.[relation]?.tidying;
23
25
  }
26
+ /** A value written out with every object's keys in order: two spellings of one set of arguments are one key. */
27
+ const sortedKey = (value) => JSON.stringify(value, (_, inner) => (inner && typeof inner === "object" && !Array.isArray(inner) ? Object.fromEntries(Object.entries(inner).sort()) : inner));
24
28
  /** WHO A SUGGESTION IS, whoever made it and on whatever basis: its calls, in order, each its act and arguments, keys in order. */
25
- export const suggestionKey = (calls) => JSON.stringify(calls.map((call) => [call.name, call.args]), (_, value) => (value && typeof value === "object" && !Array.isArray(value) ? Object.fromEntries(Object.entries(value).sort()) : value));
29
+ export const suggestionKey = (calls) => sortedKey(calls.map((call) => [call.name, call.args]));
30
+ /** The acts said of one record alone: set aside, brought back, removed, left alone, let be tidied. */
31
+ const ON_ONE = /^(archive|unarchive|remove|leave-alone|allow-tidying)$/;
32
+ /** What one call means, as what a key is written from. */
33
+ function meaningOf(call, meanings) {
34
+ const name = spellingOf(call.name);
35
+ const act = meanings?.act(call.name);
36
+ const args = (call.args ?? {});
37
+ // The act's own word on what it is; a bare name is read as one only when nothing knows the act.
38
+ const derived = act ? act.derived : derivedActOf(name);
39
+ const { id } = args;
40
+ if (derived && typeof id === "string") {
41
+ if (ON_ONE.test(derived.act))
42
+ return [derived.act, id];
43
+ // A pair merged, whichever of the two went into the other.
44
+ if (derived.act === "merge")
45
+ return ["merge", ...[id, args["into"]].sort()];
46
+ if (derived.relation)
47
+ return [derived.act, derived.relation, id, args["to"]];
48
+ }
49
+ // A declared act that makes one relation between its subject and one other record is that link, as its relation's own act would make it.
50
+ const subject = act?.subject?.arg ?? "id";
51
+ const [other, more] = Object.keys(args).filter((key) => key !== subject);
52
+ if (act?.connects?.length === 1 && other && !more && meanings.has(args[subject]) && meanings.has(args[other]))
53
+ return ["connect", act.connects[0], args[subject], args[other]];
54
+ // Anything else is its act and arguments, less the id of a record it would make: minted afresh each time it is asked.
55
+ return [name, act?.creates?.length && typeof id === "string" && !meanings.has(id) ? { ...args, id: 0 } : args];
56
+ }
57
+ /**
58
+ * WHAT A SUGGESTION MEANS, however its calls were spelled: a link between
59
+ * two records by its relation, whichever act asks for it; a merge of a
60
+ * pair, whichever way round; a record archived, removed or left alone; and
61
+ * anything else its act, in any spelling of it, and its arguments, less the
62
+ * minted id of a record it would make. Worked out from the calls whenever
63
+ * it is asked, so a decline already in a log matches by it too.
64
+ */
65
+ export const meaningKey = (calls, meanings) => `≈${sortedKey(calls.map((call) => meaningOf(call, meanings)))}`;
26
66
  /**
27
67
  * THE OP THAT DECLINED THESE CALLS — the whole suggestion, or any one of
28
- * them on its own — or undefined: a live undo of a suggestion, or of a
68
+ * them on its own, asked exactly as it was or meaning the same
69
+ * (`meaningKey`) — or undefined: a live undo of a suggestion, or of a
29
70
  * change made with a lineage (an actor's confident change a person took
30
71
  * back). "Do not make this again."
31
72
  */
32
- export function declinedIn(ops, calls) {
33
- const declines = declinesIn(ops);
34
- return [calls, ...calls.map((call) => [call])].map((asked) => declines.get(suggestionKey(asked))).find(Boolean);
73
+ export function declinedIn(ops, calls, meanings) {
74
+ const declines = declinesIn(ops, meanings);
75
+ return [calls, ...calls.map((call) => [call])].map((asked) => declines.get(meaningKey(asked, meanings))).find(Boolean);
35
76
  }
36
- /** Every decline in a log, keyed by the whole suggestion and by each of its calls alone (`suggestionKey`). */
37
- export function declinesIn(ops) {
77
+ /** Every decline in a log, keyed by what the whole suggestion means and what each of its calls alone means (`meaningKey`): calls asked exactly alike always mean the same. */
78
+ export function declinesIn(ops, meanings) {
38
79
  const undone = undoneIn(ops);
39
80
  const byId = new Map(ops.map((op) => [op.id, op]));
40
81
  const declines = new Map();
@@ -42,8 +83,8 @@ export function declinesIn(ops) {
42
83
  const target = op.undoes !== undefined && !undone.has(op.id) && !op.withheld ? byId.get(op.undoes) : undefined;
43
84
  const calls = target?.suggests ?? (target?.mutation && (target.lineage || op.undoneLineage) ? [target.mutation] : []);
44
85
  if (calls.length > 0)
45
- for (const key of [calls, ...calls.map((call) => [call])])
46
- declines.set(suggestionKey(key), op);
86
+ for (const asked of [calls, ...calls.map((call) => [call])])
87
+ declines.set(meaningKey(asked, meanings), op);
47
88
  }
48
89
  return declines;
49
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tidying.js","sourceRoot":"","sources":["../../src/ops/tidying.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tidying.js","sourceRoot":"","sources":["../../src/ops/tidying.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,43 @@
1
1
  import type { Primitive } from "../graph/primitives.js";
2
2
  import type { MutationCall } from "../mutations/types.js";
3
3
  import type { Lineage } from "./lineage.js";
4
+ /**
5
+ * WHO CAN AUTHOR AN OP, AS THIS BUILD KNOWS THEM. The set is open: a kind
6
+ * may be added within a major, and a reader that meets one it does not know
7
+ * reads it as `system` for display and policy (`authorKindOf`) — never
8
+ * refuses the op, which is history and folds the same whoever wrote it.
9
+ */
10
+ export declare const AUTHOR_KINDS: readonly ["human", "visitor", "agent", "rule", "system"];
11
+ export type AuthorKind = (typeof AUTHOR_KINDS)[number];
12
+ /**
13
+ * An author's kind as this build reads it: its own when this build knows it,
14
+ * `system` when a newer build wrote one this build does not — the app
15
+ * itself, the least a reader can grant or name it.
16
+ */
17
+ export declare function authorKindOf(author: {
18
+ readonly kind: string;
19
+ } | undefined): AuthorKind;
4
20
  export interface Author {
5
21
  /**
6
- * Who moved: a person, an agent acting on their behalf, a rule repairing
7
- * something, or an external system of record whose change arrived here.
22
+ * Who moved: a person, a visitor answering a form, an agent acting on
23
+ * their behalf, a rule repairing something, or an external system of
24
+ * record whose change arrived here.
8
25
  *
9
26
  * `system` earns its place for the same reason the others do: an inbound
10
27
  * calendar change is an ordinary op, appears in the activity list beside a
11
28
  * person's edits, and is undone like anything else. A sync layer that wrote
12
29
  * the graph outside the log would be the one kind of change nobody could
13
30
  * see or take back.
31
+ *
32
+ * `visitor` is a person who never joined the app — one answer to a form
33
+ * a host opened (`formVisitor`), under the id the host minted for it. Held
34
+ * to the form's role as a person is to theirs.
35
+ *
36
+ * Read through `authorKindOf`: a kind this build does not know reads as
37
+ * `system` (`AUTHOR_KINDS`). The app's own actor is a `system` or `agent`
38
+ * author with `automated: true`, not a kind of its own.
14
39
  */
15
- readonly kind: "human" | "agent" | "rule" | "system";
40
+ readonly kind: AuthorKind;
16
41
  readonly id?: string;
17
42
  readonly session?: string;
18
43
  /**
@@ -59,6 +84,11 @@ export interface Operation {
59
84
  /**
60
85
  * Human-readable statement of what was meant, not what changed: the act's
61
86
  * own `describe()` sentence ("Add “Book the van”"), or "Undo: …".
87
+ *
88
+ * DISPLAY ONLY. Nothing in the framework matches on its words — what an
89
+ * op did is its `mutation`, its primitives, its `batch` and its `undoes` —
90
+ * so an act's sentence may be reworded, translated or withheld from a
91
+ * seat without changing what any program decides.
62
92
  */
63
93
  readonly intent: string;
64
94
  /**
@@ -144,6 +174,24 @@ export interface Operation {
144
174
  * whole from a seat that may not see a record it names.
145
175
  */
146
176
  readonly suggests?: readonly MutationCall[];
177
+ /**
178
+ * WHEN A SUGGESTION STOPS WAITING (an ISO time), when its maker said: on
179
+ * a suggestion's op only. From then on it leaves the Suggested tray and
180
+ * cannot be accepted or declined; nothing is undone, since it changed
181
+ * nothing. An actor that still thinks so judges it again and suggests it
182
+ * anew. Absent, it waits until a person answers it.
183
+ */
184
+ readonly expiresAt?: string;
185
+ /**
186
+ * HOW FAR READERS ARE SERVED, set by a publish (Roadmap
187
+ * f-publishing-lifecycle): in an `on-publish` app, the seats not
188
+ * `working` are served the ops before this seq and none after. Set only
189
+ * on the op of the built-in `publish` act, which touches no record; the
190
+ * last such op that stands says it (`Store.publishedSeq`), so an undo
191
+ * of a publish takes readers back to the one before. An op without it
192
+ * reads as before, and folds the same.
193
+ */
194
+ readonly publishedThrough?: number;
147
195
  }
148
196
  export interface Batch {
149
197
  readonly id: string;