@graview/core 0.1.61 → 0.1.62

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 (235) hide show
  1. package/README.md +13 -1
  2. package/dist/app-places.d.ts.map +1 -1
  3. package/dist/app-places.js +2 -2
  4. package/dist/app-places.js.map +1 -1
  5. package/dist/app.d.ts +10 -0
  6. package/dist/app.d.ts.map +1 -1
  7. package/dist/app.js.map +1 -1
  8. package/dist/capabilities.js +1 -1
  9. package/dist/capabilities.js.map +1 -1
  10. package/dist/cli/check/hidden-reads.d.ts.map +1 -1
  11. package/dist/cli/check/hidden-reads.js +26 -0
  12. package/dist/cli/check/hidden-reads.js.map +1 -1
  13. package/dist/cli/check/index.d.ts +1 -0
  14. package/dist/cli/check/index.d.ts.map +1 -1
  15. package/dist/cli/check/index.js +1 -0
  16. package/dist/cli/check/index.js.map +1 -1
  17. package/dist/cli/check/tidying.d.ts +14 -0
  18. package/dist/cli/check/tidying.d.ts.map +1 -0
  19. package/dist/cli/check/tidying.js +24 -0
  20. package/dist/cli/check/tidying.js.map +1 -0
  21. package/dist/cli/check.d.ts.map +1 -1
  22. package/dist/cli/check.js +2 -1
  23. package/dist/cli/check.js.map +1 -1
  24. package/dist/cli/describe.d.ts.map +1 -1
  25. package/dist/cli/describe.js +14 -1
  26. package/dist/cli/describe.js.map +1 -1
  27. package/dist/cli/document-schema.d.ts.map +1 -1
  28. package/dist/cli/document-schema.js +6 -2
  29. package/dist/cli/document-schema.js.map +1 -1
  30. package/dist/cli/index.js +1 -1
  31. package/dist/cli/index.js.map +1 -1
  32. package/dist/compose.d.ts +11 -3
  33. package/dist/compose.d.ts.map +1 -1
  34. package/dist/compose.js +12 -2
  35. package/dist/compose.js.map +1 -1
  36. package/dist/css/sanitize.d.ts +125 -0
  37. package/dist/css/sanitize.d.ts.map +1 -0
  38. package/dist/css/sanitize.js +989 -0
  39. package/dist/css/sanitize.js.map +1 -0
  40. package/dist/css/tables.d.ts +55 -0
  41. package/dist/css/tables.d.ts.map +1 -0
  42. package/dist/css/tables.js +137 -0
  43. package/dist/css/tables.js.map +1 -0
  44. package/dist/css.d.ts +20 -0
  45. package/dist/css.d.ts.map +1 -0
  46. package/dist/css.js +19 -0
  47. package/dist/css.js.map +1 -0
  48. package/dist/days.d.ts +15 -0
  49. package/dist/days.d.ts.map +1 -1
  50. package/dist/days.js +21 -0
  51. package/dist/days.js.map +1 -1
  52. package/dist/describe.d.ts +1 -1
  53. package/dist/describe.d.ts.map +1 -1
  54. package/dist/document/act-findings.d.ts.map +1 -1
  55. package/dist/document/act-findings.js +80 -1
  56. package/dist/document/act-findings.js.map +1 -1
  57. package/dist/document/brand-check.d.ts +15 -1
  58. package/dist/document/brand-check.d.ts.map +1 -1
  59. package/dist/document/brand-check.js +80 -0
  60. package/dist/document/brand-check.js.map +1 -1
  61. package/dist/document/brand.d.ts.map +1 -1
  62. package/dist/document/brand.js +2 -0
  63. package/dist/document/brand.js.map +1 -1
  64. package/dist/document/compile-checked.d.ts.map +1 -1
  65. package/dist/document/compile-checked.js +3 -2
  66. package/dist/document/compile-checked.js.map +1 -1
  67. package/dist/document/compile.d.ts.map +1 -1
  68. package/dist/document/compile.js +48 -7
  69. package/dist/document/compile.js.map +1 -1
  70. package/dist/document/compiled.d.ts +18 -3
  71. package/dist/document/compiled.d.ts.map +1 -1
  72. package/dist/document/compiled.js +84 -8
  73. package/dist/document/compiled.js.map +1 -1
  74. package/dist/document/connection-findings.js +85 -7
  75. package/dist/document/connection-findings.js.map +1 -1
  76. package/dist/document/connection-spec.d.ts +6 -0
  77. package/dist/document/connection-spec.d.ts.map +1 -1
  78. package/dist/document/connection-spec.js +19 -1
  79. package/dist/document/connection-spec.js.map +1 -1
  80. package/dist/document/covers.d.ts +48 -0
  81. package/dist/document/covers.d.ts.map +1 -0
  82. package/dist/document/covers.js +90 -0
  83. package/dist/document/covers.js.map +1 -0
  84. package/dist/document/describe-place.d.ts +3 -0
  85. package/dist/document/describe-place.d.ts.map +1 -1
  86. package/dist/document/describe-place.js +11 -0
  87. package/dist/document/describe-place.js.map +1 -1
  88. package/dist/document/described.d.ts +28 -0
  89. package/dist/document/described.d.ts.map +1 -1
  90. package/dist/document/diff.js +10 -1
  91. package/dist/document/diff.js.map +1 -1
  92. package/dist/document/edit.d.ts.map +1 -1
  93. package/dist/document/edit.js +103 -7
  94. package/dist/document/edit.js.map +1 -1
  95. package/dist/document/expr/evaluate.d.ts +10 -1
  96. package/dist/document/expr/evaluate.d.ts.map +1 -1
  97. package/dist/document/expr/evaluate.js +110 -2
  98. package/dist/document/expr/evaluate.js.map +1 -1
  99. package/dist/document/expr/index.d.ts +1 -0
  100. package/dist/document/expr/index.d.ts.map +1 -1
  101. package/dist/document/expr/index.js +2 -0
  102. package/dist/document/expr/index.js.map +1 -1
  103. package/dist/document/expr/typing.d.ts +24 -0
  104. package/dist/document/expr/typing.d.ts.map +1 -0
  105. package/dist/document/expr/typing.js +219 -0
  106. package/dist/document/expr/typing.js.map +1 -0
  107. package/dist/document/expr/when.d.ts +52 -0
  108. package/dist/document/expr/when.d.ts.map +1 -0
  109. package/dist/document/expr/when.js +215 -0
  110. package/dist/document/expr/when.js.map +1 -0
  111. package/dist/document/expr-type-findings.d.ts +5 -0
  112. package/dist/document/expr-type-findings.d.ts.map +1 -0
  113. package/dist/document/expr-type-findings.js +90 -0
  114. package/dist/document/expr-type-findings.js.map +1 -0
  115. package/dist/document/index.d.ts +6 -3
  116. package/dist/document/index.d.ts.map +1 -1
  117. package/dist/document/index.js +5 -2
  118. package/dist/document/index.js.map +1 -1
  119. package/dist/document/linked-findings.js +1 -1
  120. package/dist/document/linked-findings.js.map +1 -1
  121. package/dist/document/rule-line.d.ts +7 -3
  122. package/dist/document/rule-line.d.ts.map +1 -1
  123. package/dist/document/rule-line.js +17 -2
  124. package/dist/document/rule-line.js.map +1 -1
  125. package/dist/document/rule-reads.d.ts.map +1 -1
  126. package/dist/document/rule-reads.js +3 -1
  127. package/dist/document/rule-reads.js.map +1 -1
  128. package/dist/document/rules.d.ts +30 -0
  129. package/dist/document/rules.d.ts.map +1 -1
  130. package/dist/document/rules.js +74 -0
  131. package/dist/document/rules.js.map +1 -1
  132. package/dist/document/schema.d.ts +75 -2
  133. package/dist/document/schema.d.ts.map +1 -1
  134. package/dist/document/schema.js +82 -4
  135. package/dist/document/schema.js.map +1 -1
  136. package/dist/document/to-document.d.ts.map +1 -1
  137. package/dist/document/to-document.js +3 -1
  138. package/dist/document/to-document.js.map +1 -1
  139. package/dist/document.schema.json +262 -5
  140. package/dist/index.d.ts +6 -5
  141. package/dist/index.d.ts.map +1 -1
  142. package/dist/index.js +5 -3
  143. package/dist/index.js.map +1 -1
  144. package/dist/invariants/types.d.ts +7 -2
  145. package/dist/invariants/types.d.ts.map +1 -1
  146. package/dist/lines.d.ts.map +1 -1
  147. package/dist/lines.js +6 -2
  148. package/dist/lines.js.map +1 -1
  149. package/dist/mutations/types.d.ts +9 -0
  150. package/dist/mutations/types.d.ts.map +1 -1
  151. package/dist/mutations/vote-suggestion.d.ts +67 -0
  152. package/dist/mutations/vote-suggestion.d.ts.map +1 -0
  153. package/dist/mutations/vote-suggestion.js +36 -0
  154. package/dist/mutations/vote-suggestion.js.map +1 -0
  155. package/dist/navigate.d.ts +7 -3
  156. package/dist/navigate.d.ts.map +1 -1
  157. package/dist/navigate.js +7 -3
  158. package/dist/navigate.js.map +1 -1
  159. package/dist/ops/lineage.d.ts +11 -1
  160. package/dist/ops/lineage.d.ts.map +1 -1
  161. package/dist/ops/lineage.js +6 -2
  162. package/dist/ops/lineage.js.map +1 -1
  163. package/dist/ops/suggestions.d.ts +33 -1
  164. package/dist/ops/suggestions.d.ts.map +1 -1
  165. package/dist/ops/suggestions.js +44 -2
  166. package/dist/ops/suggestions.js.map +1 -1
  167. package/dist/ops/types.d.ts +13 -0
  168. package/dist/ops/types.d.ts.map +1 -1
  169. package/dist/ops/types.js.map +1 -1
  170. package/dist/place-names.d.ts +42 -0
  171. package/dist/place-names.d.ts.map +1 -0
  172. package/dist/place-names.js +43 -0
  173. package/dist/place-names.js.map +1 -0
  174. package/dist/places.d.ts +2 -0
  175. package/dist/places.d.ts.map +1 -1
  176. package/dist/places.js +2 -0
  177. package/dist/places.js.map +1 -1
  178. package/dist/starting-document.d.ts +32 -0
  179. package/dist/starting-document.d.ts.map +1 -1
  180. package/dist/starting-document.js +35 -4
  181. package/dist/starting-document.js.map +1 -1
  182. package/dist/store.d.ts +29 -0
  183. package/dist/store.d.ts.map +1 -1
  184. package/dist/store.js +134 -21
  185. package/dist/store.js.map +1 -1
  186. package/dist/sync/connection.d.ts +11 -1
  187. package/dist/sync/connection.d.ts.map +1 -1
  188. package/dist/sync/connection.js +94 -22
  189. package/dist/sync/connection.js.map +1 -1
  190. package/dist/sync/engine.d.ts.map +1 -1
  191. package/dist/sync/engine.js +5 -3
  192. package/dist/sync/engine.js.map +1 -1
  193. package/dist/sync/google-calendar.d.ts +8 -0
  194. package/dist/sync/google-calendar.d.ts.map +1 -1
  195. package/dist/sync/google-calendar.js +12 -2
  196. package/dist/sync/google-calendar.js.map +1 -1
  197. package/dist/sync/guests.d.ts +44 -0
  198. package/dist/sync/guests.d.ts.map +1 -0
  199. package/dist/sync/guests.js +57 -0
  200. package/dist/sync/guests.js.map +1 -0
  201. package/dist/sync/types.d.ts +9 -0
  202. package/dist/sync/types.d.ts.map +1 -1
  203. package/dist/sync/types.js.map +1 -1
  204. package/dist/testing.js +1 -1
  205. package/dist/testing.js.map +1 -1
  206. package/dist/theme/contrast.d.ts +2 -0
  207. package/dist/theme/contrast.d.ts.map +1 -1
  208. package/dist/theme/contrast.js +4 -0
  209. package/dist/theme/contrast.js.map +1 -1
  210. package/dist/theme/ground.d.ts +1 -2
  211. package/dist/theme/ground.d.ts.map +1 -1
  212. package/dist/theme/ground.js +2 -5
  213. package/dist/theme/ground.js.map +1 -1
  214. package/dist/theme/marks.d.ts +14 -2
  215. package/dist/theme/marks.d.ts.map +1 -1
  216. package/dist/theme/marks.js +20 -3
  217. package/dist/theme/marks.js.map +1 -1
  218. package/dist/theme/types.d.ts +22 -0
  219. package/dist/theme/types.d.ts.map +1 -1
  220. package/dist/theme/types.js.map +1 -1
  221. package/dist/tidying.d.ts +30 -4
  222. package/dist/tidying.d.ts.map +1 -1
  223. package/dist/tidying.js +110 -5
  224. package/dist/tidying.js.map +1 -1
  225. package/dist/trait-vocabulary.d.ts +17 -0
  226. package/dist/trait-vocabulary.d.ts.map +1 -0
  227. package/dist/trait-vocabulary.js +16 -0
  228. package/dist/trait-vocabulary.js.map +1 -0
  229. package/dist/traits.d.ts +14 -7
  230. package/dist/traits.d.ts.map +1 -1
  231. package/dist/traits.js +33 -12
  232. package/dist/traits.js.map +1 -1
  233. package/dist/version.d.ts +1 -1
  234. package/dist/version.js +1 -1
  235. package/package.json +11 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typing.js","sourceRoot":"","sources":["../../../src/document/expr/typing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAerF,uDAAuD;AACvD,MAAM,UAAU,gBAAgB,CAAC,IAAwB;IACvD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK,CAAC;QACX,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,CAAC;QACb,KAAK,OAAO;YACV,OAAO,MAAM,CAAC;QAChB,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,KAAK,GAA2B,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAS1F;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAU,EAAE,WAAiD;IACtF,MAAM,IAAI,GAAG,CAAC,CAAO,EAAa,EAAE;QAClC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACZ,KAAK,KAAK;gBACR,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YAClI,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACrC,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACzE,CAAC;YACD,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC;YAChB,KAAK,QAAQ;gBACX,OAAO,SAAS,CAAC;YACnB,KAAK,OAAO;gBACV,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC7C,KAAK,OAAO;gBACV,OAAO,KAAK,CAAC;YACf,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;oBAAE,OAAO,SAAS,CAAC;gBAC1F,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG;oBAAE,OAAO,KAAK,CAAC;gBAC/C,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC7C,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;gBAC/D,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,CAAC;oBAAE,OAAO,MAAM,CAAC;gBAClE,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,KAAK,MAAM;gBACT,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;oBACb,KAAK,OAAO,CAAC;oBACb,KAAK,MAAM,CAAC;oBACZ,KAAK,aAAa;wBAChB,OAAO,MAAM,CAAC;oBAChB,KAAK,KAAK,CAAC;oBACX,KAAK,UAAU,CAAC;oBAChB,KAAK,IAAI,CAAC;oBACV,KAAK,YAAY;wBACf,OAAO,UAAU,CAAC;oBACpB,KAAK,QAAQ,CAAC;oBACd,KAAK,QAAQ,CAAC;oBACd,KAAK,OAAO,CAAC;oBACb,KAAK,SAAS;wBACZ,OAAO,MAAM,CAAC;oBAChB,KAAK,OAAO,CAAC;oBACb,KAAK,KAAK,CAAC;oBACX,KAAK,KAAK,CAAC;oBACX,KAAK,KAAK,CAAC;oBACX,KAAK,KAAK,CAAC;oBACX,KAAK,MAAM,CAAC;oBACZ,KAAK,OAAO,CAAC;oBACb,KAAK,OAAO;wBACV,OAAO,QAAQ,CAAC;oBAClB,KAAK,QAAQ,CAAC;oBACd,KAAK,OAAO,CAAC;oBACb,KAAK,MAAM,CAAC;oBACZ,KAAK,SAAS,CAAC;oBACf,KAAK,UAAU,CAAC;oBAChB,KAAK,YAAY,CAAC;oBAClB,KAAK,UAAU;wBACb,OAAO,SAAS,CAAC;oBACnB,KAAK,KAAK,CAAC;oBACX,KAAK,IAAI,CAAC;oBACV,KAAK,KAAK,CAAC;oBACX,KAAK,MAAM;wBACT,OAAO,KAAK,CAAC;oBACf,KAAK,OAAO;wBACV,OAAO,QAAQ,CAAC;oBAClB,KAAK,IAAI,CAAC,CAAC,CAAC;wBACV,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACnC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;wBACxC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;wBAClD,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBAC7E,CAAC;oBACD;wBACE,OAAO,SAAS,CAAC;gBACrB,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IACF,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC;AAED,2DAA2D;AAC3D,MAAM,IAAI,GAAG,CAAC,CAAY,EAAU,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/N,sGAAsG;AACtG,MAAM,KAAK,GAAG,CAAC,CAAO,EAAE,CAAY,EAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAE7H;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAU,EAAE,WAAiD;IAC1F,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,CAAC,CAAO,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,CAAC,EAAU,EAAE,CAAmB,EAAE,EAAE;QACpD,IAAI,CAAC,CAAC;YAAE,OAAO;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3G,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,yBAAyB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,uFAAuF,EAAE,CAAC,CAAC;QACvL,CAAC;IACH,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,CAAO,EAAQ,EAAE;QAC9B,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACZ,KAAK,KAAK,CAAC;YACX,KAAK,OAAO;gBACV,OAAO;YACT,KAAK,MAAM;gBACT,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACvB,OAAO;YACT,KAAK,QAAQ;gBACX,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAChB,OAAO;YACT,KAAK,OAAO;gBACV,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACjB,OAAO;YACT,KAAK,QAAQ;gBACX,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACd,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACf,OAAO;YACT,KAAK,OAAO;gBACV,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACb,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAChB,OAAO;YACT,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACtB,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC/B,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;oBACb,KAAK,QAAQ,CAAC,CAAC,CAAC;wBACd,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;wBAC3B,IAAI,MAAM,EAAE,CAAC,KAAK,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;4BAC5D,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4BAC7C,IAAI,OAAO;gCAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,+GAA+G,EAAE,CAAC,CAAC;4BAC3L,+EAA+E;iCAC1E,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gCACzE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,yCAAyC,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,kBAAkB,gCAAgC,EAAE,GAAG,EAAE,oEAAoE,EAAE,CAAC,CAAC;4BACnQ,CAAC;wBACH,CAAC;6BAAM,IAAI,MAAM,EAAE,CAAC;4BAClB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,wEAAwE,EAAE,GAAG,EAAE,oCAAoC,EAAE,CAAC,CAAC;wBACtK,CAAC;wBACD,OAAO;oBACT,CAAC;oBACD,KAAK,UAAU,CAAC;oBAChB,KAAK,IAAI,CAAC,CAAC,CAAC;wBACV,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;wBACvB,IAAI,MAAM,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC;4BAC3G,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAE,+DAA+D,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,yDAAyD,EAAE,CAAC,CAAC;wBACjQ,CAAC;6BAAM,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;4BACxC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;4BACvB,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;gCAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAE,qDAAqD,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,2EAA2E,EAAE,CAAC,CAAC;wBACtQ,CAAC;wBACD,OAAO;oBACT,CAAC;oBACD,KAAK,YAAY,CAAC,CAAC,CAAC;wBAClB,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;wBAC/B,IAAI,MAAM,EAAE,CAAC;4BACX,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;4BACvB,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;gCAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,gDAAgD,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,CAAC,CAAC;wBACnM,CAAC;wBACD,OAAO;oBACT,CAAC;oBACD,KAAK,SAAS;wBACZ,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;wBAC5B,OAAO;oBACT,KAAK,aAAa;wBAChB,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;wBAChC,IAAI,MAAM,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;4BAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,6DAA6D,EAAE,GAAG,EAAE,0EAA0E,EAAE,CAAC,CAAC;wBAC/O,OAAO;oBACT;wBACE,OAAO;gBACX,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,CAAC;IACZ,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,52 @@
1
+ export declare const WEEKDAYS: readonly ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
2
+ export type Weekday = (typeof WEEKDAYS)[number];
3
+ /** A moment as the language holds one: its day on the app's wall, the minutes after midnight where it has a time, and the instant where it names one. */
4
+ export interface When {
5
+ readonly day: string;
6
+ readonly minutes?: number;
7
+ /** The instant, where the value named one (`…Z`, an offset): what minutes are added to. */
8
+ readonly stamp?: number;
9
+ }
10
+ /** The zone the language reads and builds moments in: the app's, else the page's app's, else UTC. */
11
+ export declare const zoneOf: (timeZone: string | undefined) => string;
12
+ /**
13
+ * A stored value as a moment, or undefined for anything that is not one. A
14
+ * month or a year alone reads as its first day; an instant is read on the
15
+ * app's wall; a wall time written without a zone is the time written.
16
+ */
17
+ export declare function whenOf(value: string, zone: string): When | undefined;
18
+ /** Why a pattern cannot be said, as a sentence, or undefined when it can. What `graview check` says of a `format(…)`. */
19
+ export declare function patternProblem(pattern: string): string | undefined;
20
+ /** Whether a pattern asks for a time of day — which a day alone has none of. */
21
+ export declare function patternHasTime(pattern: string): boolean;
22
+ /**
23
+ * A moment said by a pattern, in the app's locale: weekday and month
24
+ * names as the locale says them, the rest in figures. A day with no time
25
+ * says nothing for a time piece.
26
+ */
27
+ export declare function formatWhen(when: When, pattern: string, locale: string | undefined): string | {
28
+ readonly problem: string;
29
+ };
30
+ /** A time of day written `HH:MM` as minutes after midnight; undefined for anything else. */
31
+ export declare function minutesOfTime(time: string): number | undefined;
32
+ /**
33
+ * The moment a day reaches at a time on the app's wall — `datetime(due,
34
+ * '09:30')` — as an instant: 9:30 in New York is 13:30Z in summer and
35
+ * 14:30Z in winter, and the day the clock springs forward has no 02:30, so
36
+ * the time written then lands on the clock's next reading of it.
37
+ */
38
+ export declare function datetimeAt(when: When, minutes: number, zone: string): string;
39
+ /**
40
+ * A moment some minutes later (earlier, for a negative count). An instant
41
+ * stays an instant, so ninety minutes across a change of the clock are
42
+ * ninety minutes; a wall time stays a wall time; a day with no time becomes
43
+ * the wall time that many minutes after its midnight.
44
+ */
45
+ export declare function addMinutesTo(when: When, count: number): string;
46
+ /** The day of the week a moment falls on, on the app's wall: `mon` to `sun`. */
47
+ export declare const weekdayOfWhen: (when: When) => Weekday;
48
+ /** The day a moment's week starts on — the last `first` (`mon` unless said) at or before it — as a day. */
49
+ export declare function startOfWeekOf(when: When, first: Weekday): string;
50
+ /** Whether a word names a weekday as the language says them. */
51
+ export declare const isWeekday: (value: unknown) => value is Weekday;
52
+ //# sourceMappingURL=when.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when.d.ts","sourceRoot":"","sources":["../../../src/document/expr/when.ts"],"names":[],"mappings":"AA6BA,eAAO,MAAM,QAAQ,4DAA6D,CAAC;AACnF,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhD,yJAAyJ;AACzJ,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,2FAA2F;IAC3F,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qGAAqG;AACrG,eAAO,MAAM,MAAM,GAAI,UAAU,MAAM,GAAG,SAAS,KAAG,MAAuC,CAAC;AAE9F;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAWpE;AAoDD,yHAAyH;AACzH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGlE;AAID,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGvD;AAoBD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAkCzH;AAID,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAM9D;AAQD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED,gFAAgF;AAChF,eAAO,MAAM,aAAa,GAAI,MAAM,IAAI,KAAG,OAAyC,CAAC;AAErF,2GAA2G;AAC3G,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAGhE;AAED,gEAAgE;AAChE,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,OAAuF,CAAC"}
@@ -0,0 +1,215 @@
1
+ import { appLocaleFor, dayZoneFor, instantIn, ISO_DAY, ISO_MOMENT, PARTIAL_DAY, wallIn } from "../../days.js";
2
+ /*
3
+ * The day arithmetic `wall-time.ts` has, said again here on purpose: the
4
+ * evaluator is in every hosted page's first load, and reaching that module
5
+ * from it would carry the date editor's helpers up front with it.
6
+ */
7
+ const DAY_MS = 86_400_000;
8
+ const pad = (n) => String(n).padStart(2, "0");
9
+ const dayOfUtc = (stamp) => new Date(stamp).toISOString().slice(0, 10);
10
+ const utcOf = (day) => Date.UTC(+day.slice(0, 4), +day.slice(5, 7) - 1, +day.slice(8, 10));
11
+ const addDays = (day, days) => dayOfUtc(utcOf(day) + days * DAY_MS);
12
+ const weekdayOf = (day) => new Date(utcOf(day)).getUTCDay();
13
+ /** Whether a stored moment names an instant: it carries a `Z` or an offset after its time. */
14
+ const namesInstant = (value) => /T\d\d:\d\d(:[\d.]+)?(Z|[+-]\d\d:?\d\d)$/.test(value);
15
+ /*
16
+ * A DATE-TIME BUILT AND SAID BY THE RULE LANGUAGE (Roadmap
17
+ * f-formula-text-datetime). A computed title or an act's value could add
18
+ * words and count days, and could not say "Mon, Oct 27 · 9:30 AM" or make
19
+ * the moment a plan item's event starts at. The arithmetic is here, on
20
+ * what a record keeps: a day (`2026-10-27`), a month or a year alone, a
21
+ * wall time written without a zone (`2026-10-27T09:30`), or an instant
22
+ * (`2026-10-27T13:30:00Z`). Every answer is on the APP'S clock — its
23
+ * `brand.timeZone`, else the zone of the app the page draws, else UTC —
24
+ * and in the app's locale, never the reader's: a value the language builds
25
+ * may be kept on a record, and a server and a page keep the same one.
26
+ */
27
+ export const WEEKDAYS = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
28
+ /** The zone the language reads and builds moments in: the app's, else the page's app's, else UTC. */
29
+ export const zoneOf = (timeZone) => dayZoneFor(timeZone) ?? "UTC";
30
+ /**
31
+ * A stored value as a moment, or undefined for anything that is not one. A
32
+ * month or a year alone reads as its first day; an instant is read on the
33
+ * app's wall; a wall time written without a zone is the time written.
34
+ */
35
+ export function whenOf(value, zone) {
36
+ if (ISO_DAY.test(value))
37
+ return dayOfUtc(utcOf(value)) === value ? { day: value } : undefined;
38
+ if (PARTIAL_DAY.test(value))
39
+ return { day: value.length === 4 ? `${value}-01-01` : `${value}-01` };
40
+ if (ISO_MOMENT.test(value) && !namesInstant(value)) {
41
+ const day = value.slice(0, 10);
42
+ if (dayOfUtc(utcOf(day)) !== day)
43
+ return undefined;
44
+ return { day, minutes: Number(value.slice(11, 13)) * 60 + Number(value.slice(14, 16)) };
45
+ }
46
+ const stamp = Date.parse(value);
47
+ if (Number.isNaN(stamp))
48
+ return undefined;
49
+ return { ...wallIn(stamp, zone), stamp };
50
+ }
51
+ /* THE PATTERN `format(when, pattern)` TAKES: a closed vocabulary, so a token it does not know is a finding, never a letter said as itself. */
52
+ const TOKENS = ["EEEE", "EEE", "MMMM", "MMM", "yyyy", "HH", "mm", "h", "a", "d"];
53
+ const LETTERS = /[A-Za-z]+/y;
54
+ /** The pattern, read: each piece a token, or words to say as they are. */
55
+ function pieces(pattern) {
56
+ const out = [];
57
+ let i = 0;
58
+ while (i < pattern.length) {
59
+ const c = pattern[i];
60
+ if (c === "'") {
61
+ let text = "";
62
+ let j = i + 1;
63
+ for (; j < pattern.length; j++) {
64
+ if (pattern[j] === "'") {
65
+ // Two quotes inside a quoted piece say one.
66
+ if (pattern[j + 1] === "'") {
67
+ text += "'";
68
+ j++;
69
+ continue;
70
+ }
71
+ break;
72
+ }
73
+ text += pattern[j];
74
+ }
75
+ if (j >= pattern.length)
76
+ return `the quoted words in "${pattern}" are never closed`;
77
+ out.push({ text });
78
+ i = j + 1;
79
+ continue;
80
+ }
81
+ LETTERS.lastIndex = i;
82
+ const run = LETTERS.exec(pattern);
83
+ if (run) {
84
+ let rest = run[0];
85
+ while (rest.length > 0) {
86
+ const token = TOKENS.find((t) => rest.startsWith(t));
87
+ if (!token)
88
+ return `"${rest}" is not a piece of a date pattern; the pieces are ${TOKENS.map((t) => `${t}`).join(", ")}, and other words go in single quotes`;
89
+ out.push(token);
90
+ rest = rest.slice(token.length);
91
+ }
92
+ i += run[0].length;
93
+ continue;
94
+ }
95
+ out.push({ text: c });
96
+ i++;
97
+ }
98
+ return out;
99
+ }
100
+ /** Why a pattern cannot be said, as a sentence, or undefined when it can. What `graview check` says of a `format(…)`. */
101
+ export function patternProblem(pattern) {
102
+ const read = pieces(pattern);
103
+ return typeof read === "string" ? read : undefined;
104
+ }
105
+ const TIME_PIECES = new Set(["HH", "mm", "h", "a"]);
106
+ /** Whether a pattern asks for a time of day — which a day alone has none of. */
107
+ export function patternHasTime(pattern) {
108
+ const read = pieces(pattern);
109
+ return typeof read !== "string" && read.some((piece) => typeof piece === "string" && TIME_PIECES.has(piece));
110
+ }
111
+ const UTC = "UTC";
112
+ const formats = new Map();
113
+ function intl(locale, options) {
114
+ const key = `${locale}|${JSON.stringify(options)}`;
115
+ let format = formats.get(key);
116
+ if (!format) {
117
+ try {
118
+ format = new Intl.DateTimeFormat(locale, { ...options, timeZone: UTC });
119
+ }
120
+ catch {
121
+ format = new Intl.DateTimeFormat("en-US", { ...options, timeZone: UTC });
122
+ }
123
+ formats.set(key, format);
124
+ }
125
+ return format;
126
+ }
127
+ const part = (locale, options, stamp, type) => intl(locale, options).formatToParts(stamp).find((one) => one.type === type)?.value ?? "";
128
+ /**
129
+ * A moment said by a pattern, in the app's locale: weekday and month
130
+ * names as the locale says them, the rest in figures. A day with no time
131
+ * says nothing for a time piece.
132
+ */
133
+ export function formatWhen(when, pattern, locale) {
134
+ const read = pieces(pattern);
135
+ if (typeof read === "string")
136
+ return { problem: read };
137
+ const said = appLocaleFor(locale);
138
+ const dayStamp = utcOf(when.day);
139
+ const minutes = when.minutes;
140
+ const timeStamp = minutes === undefined ? undefined : dayStamp + minutes * 60_000;
141
+ return read
142
+ .map((piece) => {
143
+ if (typeof piece !== "string")
144
+ return piece.text;
145
+ switch (piece) {
146
+ case "EEEE":
147
+ return part(said, { weekday: "long" }, dayStamp, "weekday");
148
+ case "EEE":
149
+ return part(said, { weekday: "short" }, dayStamp, "weekday");
150
+ case "MMMM":
151
+ return part(said, { month: "long" }, dayStamp, "month");
152
+ case "MMM":
153
+ return part(said, { month: "short" }, dayStamp, "month");
154
+ case "yyyy":
155
+ return when.day.slice(0, 4);
156
+ case "d":
157
+ return String(Number(when.day.slice(8, 10)));
158
+ case "HH":
159
+ return minutes === undefined ? "" : pad(Math.floor(minutes / 60));
160
+ case "mm":
161
+ return minutes === undefined ? "" : pad(minutes % 60);
162
+ case "h":
163
+ return minutes === undefined ? "" : String(((Math.floor(minutes / 60) + 11) % 12) + 1);
164
+ case "a":
165
+ return timeStamp === undefined ? "" : part(said, { hour: "numeric", hour12: true }, timeStamp, "dayPeriod");
166
+ }
167
+ })
168
+ .join("");
169
+ }
170
+ const TIME_OF_DAY = /^(\d{1,2}):(\d{2})$/;
171
+ /** A time of day written `HH:MM` as minutes after midnight; undefined for anything else. */
172
+ export function minutesOfTime(time) {
173
+ const match = TIME_OF_DAY.exec(time.trim());
174
+ if (!match)
175
+ return undefined;
176
+ const hours = Number(match[1]);
177
+ const minutes = Number(match[2]);
178
+ return hours <= 23 && minutes <= 59 ? hours * 60 + minutes : undefined;
179
+ }
180
+ /** An instant as a datetime field keeps one: in UTC, to the second. */
181
+ const instantSaid = (stamp) => new Date(stamp).toISOString().replace(/\.\d{3}Z$/, "Z");
182
+ /** A moment on the app's wall, as the field keeps a wall time written without a zone. */
183
+ const wallSaid = (day, minutes) => `${day}T${pad(Math.floor(minutes / 60))}:${pad(minutes % 60)}`;
184
+ /**
185
+ * The moment a day reaches at a time on the app's wall — `datetime(due,
186
+ * '09:30')` — as an instant: 9:30 in New York is 13:30Z in summer and
187
+ * 14:30Z in winter, and the day the clock springs forward has no 02:30, so
188
+ * the time written then lands on the clock's next reading of it.
189
+ */
190
+ export function datetimeAt(when, minutes, zone) {
191
+ return instantSaid(instantIn(when.day, minutes, zone));
192
+ }
193
+ /**
194
+ * A moment some minutes later (earlier, for a negative count). An instant
195
+ * stays an instant, so ninety minutes across a change of the clock are
196
+ * ninety minutes; a wall time stays a wall time; a day with no time becomes
197
+ * the wall time that many minutes after its midnight.
198
+ */
199
+ export function addMinutesTo(when, count) {
200
+ if (when.stamp !== undefined)
201
+ return instantSaid(when.stamp + count * 60_000);
202
+ const stamp = utcOf(when.day) + (when.minutes ?? 0) * 60_000 + count * 60_000;
203
+ const day = dayOfUtc(stamp);
204
+ return wallSaid(day, Math.round((stamp - utcOf(day)) / 60_000));
205
+ }
206
+ /** The day of the week a moment falls on, on the app's wall: `mon` to `sun`. */
207
+ export const weekdayOfWhen = (when) => WEEKDAYS[weekdayOf(when.day)];
208
+ /** The day a moment's week starts on — the last `first` (`mon` unless said) at or before it — as a day. */
209
+ export function startOfWeekOf(when, first) {
210
+ const back = (weekdayOf(when.day) - WEEKDAYS.indexOf(first) + 7) % 7;
211
+ return addDays(when.day, -back);
212
+ }
213
+ /** Whether a word names a weekday as the language says them. */
214
+ export const isWeekday = (value) => typeof value === "string" && WEEKDAYS.includes(value);
215
+ //# sourceMappingURL=when.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when.js","sourceRoot":"","sources":["../../../src/document/expr/when.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE9G;;;;GAIG;AACH,MAAM,MAAM,GAAG,UAAU,CAAC;AAC1B,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9D,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvF,MAAM,KAAK,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3G,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,IAAY,EAAU,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC;AAC5F,MAAM,SAAS,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAC5E,8FAA8F;AAC9F,MAAM,YAAY,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,yCAAyC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEvG;;;;;;;;;;;GAWG;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAWnF,qGAAqG;AACrG,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAA4B,EAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;AAE9F;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,KAAa,EAAE,IAAY;IAChD,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9F,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;IACnG,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/B,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;YAAE,OAAO,SAAS,CAAC;QACnD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;IAC1F,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;AAC3C,CAAC;AAED,8IAA8I;AAC9I,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AAE1F,MAAM,OAAO,GAAG,YAAY,CAAC;AAE7B,0EAA0E;AAC1E,SAAS,MAAM,CAAC,OAAe;IAC7B,MAAM,GAAG,GAA0C,EAAE,CAAC;IACtD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACd,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/B,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBACvB,4CAA4C;oBAC5C,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;wBAC3B,IAAI,IAAI,GAAG,CAAC;wBACZ,CAAC,EAAE,CAAC;wBACJ,SAAS;oBACX,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM;gBAAE,OAAO,wBAAwB,OAAO,oBAAoB,CAAC;YACpF,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACnB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACV,SAAS;QACX,CAAC;QACD,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QACtB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAClB,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK;oBAAE,OAAO,IAAI,IAAI,sDAAsD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC;gBAC7J,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC;YACD,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACnB,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC,EAAE,CAAC;IACN,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,yHAAyH;AACzH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC;AAED,MAAM,WAAW,GAAwB,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEzE,gFAAgF;AAChF,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/G,CAAC;AAED,MAAM,GAAG,GAAG,KAAK,CAAC;AAClB,MAAM,OAAO,GAAG,IAAI,GAAG,EAA+B,CAAC;AACvD,SAAS,IAAI,CAAC,MAAc,EAAE,OAAmC;IAC/D,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;IACnD,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1E,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,OAAmC,EAAE,KAAa,EAAE,IAAY,EAAU,EAAE,CACxG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;AAE3F;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAU,EAAE,OAAe,EAAE,MAA0B;IAChF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC7B,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAClF,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC;QACjD,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC9D,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC/D,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC1D,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC3D,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9B,KAAK,GAAG;gBACN,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,KAAK,IAAI;gBACP,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;YACpE,KAAK,IAAI;gBACP,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;YACxD,KAAK,GAAG;gBACN,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACzF,KAAK,GAAG;gBACN,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAChH,CAAC;IACH,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAE1C,4FAA4F;AAC5F,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,OAAO,KAAK,IAAI,EAAE,IAAI,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACzE,CAAC;AAED,uEAAuE;AACvE,MAAM,WAAW,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAEvG,yFAAyF;AACzF,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,OAAe,EAAU,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC;AAE1H;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,IAAU,EAAE,OAAe,EAAE,IAAY;IAClE,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAU,EAAE,KAAa;IACpD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IAC9E,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5B,OAAO,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAU,EAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAE,CAAC;AAErF,2GAA2G;AAC3G,MAAM,UAAU,aAAa,CAAC,IAAU,EAAE,KAAc;IACtD,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACrE,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,gEAAgE;AAChE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAc,EAAoB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAK,QAA8B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type Finding } from "./findings.js";
2
+ import type { GraviewDocument } from "./schema.js";
3
+ /** The type mistakes the declaration alone shows in every expression it holds: computed fields, facts, acts' values and conditions, rules. */
4
+ export declare function exprTypeFindings(document: GraviewDocument): Finding[];
5
+ //# sourceMappingURL=expr-type-findings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expr-type-findings.d.ts","sourceRoot":"","sources":["../../src/document/expr-type-findings.ts"],"names":[],"mappings":"AAGA,OAAO,EAAS,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,KAAK,EAAW,eAAe,EAAa,MAAM,aAAa,CAAC;AA6DvE,8IAA8I;AAC9I,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,EAAE,CAwBrE"}
@@ -0,0 +1,90 @@
1
+ import { parseExpr } from "./expr/parse.js";
2
+ import { typeProblemsOf } from "./expr/typing.js";
3
+ import { farEnd } from "./far-end.js";
4
+ import { error } from "./findings.js";
5
+ import { refName } from "./compiled.js";
6
+ const asArray = (v) => [v ?? []].flat();
7
+ const NONE = () => undefined;
8
+ /** The declared type of a bare name read from a record of these kinds, when every kind that has the field agrees on it. */
9
+ function fieldTypesOf(document, kinds) {
10
+ if (kinds === "*")
11
+ return NONE;
12
+ return (name) => {
13
+ const types = new Set(kinds.flatMap((kind) => document.kinds[kind]?.fields[name]?.type ?? []));
14
+ return types.size === 1 ? [...types][0] : undefined;
15
+ };
16
+ }
17
+ /** The expression a value sets, when it is one. */
18
+ const exprOf = (value) => (value && typeof value === "object" && !Array.isArray(value) && "expr" in value && typeof value.expr === "string" ? value.expr : undefined);
19
+ /** Every expression a document's acts work a value out with, its path, and whose fields its bare names read. */
20
+ function actExpressions(name, act, document) {
21
+ const at = `acts.${name}`;
22
+ const subject = asArray(act.on);
23
+ const out = [];
24
+ const values = (set, path, kinds) => {
25
+ for (const value of Object.values(set ?? {})) {
26
+ const source = exprOf(value);
27
+ if (source !== undefined)
28
+ out.push({ source, path, kinds });
29
+ }
30
+ };
31
+ // The paths the compile says a value's expression at: a shorthand's at the act, a listed effect's at the effect.
32
+ values(act.sets, `${at}.set`, subject);
33
+ const relation = act.connects ?? act.severs;
34
+ if (act.setsOther && relation)
35
+ values(act.setsOther, `${at}.set`, farEnd(document.kinds, relation, subject)?.kinds ?? "*");
36
+ for (const [through, set] of Object.entries(act.setsLinked ?? {}))
37
+ values(set, `${at}.setsLinked.${through}`, subject);
38
+ const made = new Map();
39
+ if (act.creates)
40
+ made.set("new", act.creates);
41
+ (act.effects ?? []).forEach((effect, i) => {
42
+ const where = `${at}.effects.${i}.set`;
43
+ if ("create" in effect) {
44
+ if (effect.as)
45
+ made.set(effect.as, effect.create);
46
+ values(effect.set, where, [effect.create]);
47
+ }
48
+ else if ("set" in effect) {
49
+ const target = refName(effect.target ?? "$subject");
50
+ values(effect.set, where, target === "subject" ? subject : made.has(target ?? "") ? [made.get(target)] : "*");
51
+ }
52
+ });
53
+ if (act.allowedWhen)
54
+ out.push({ source: act.allowedWhen, path: `${at}.allowedWhen`, kinds: subject });
55
+ return out;
56
+ }
57
+ /** The type mistakes the declaration alone shows in every expression it holds: computed fields, facts, acts' values and conditions, rules. */
58
+ export function exprTypeFindings(document) {
59
+ const findings = [];
60
+ const judge = (source, path, fieldTypeOf) => {
61
+ let expr;
62
+ try {
63
+ expr = parseExpr(source);
64
+ }
65
+ catch {
66
+ return; // The compile's to refuse.
67
+ }
68
+ for (const problem of typeProblemsOf(expr, fieldTypeOf))
69
+ findings.push(error(problem.code, path, problem.sentence, problem.fix));
70
+ };
71
+ for (const [kind, spec] of Object.entries(document.kinds)) {
72
+ const types = fieldTypesOf(document, [kind]);
73
+ for (const [name, computed] of Object.entries(spec.computed ?? {}))
74
+ judge(typeof computed === "string" ? computed : computed.expr, `kinds.${kind}.computed.${name}`, types);
75
+ }
76
+ for (const [name, fact] of Object.entries(document.computed ?? {}))
77
+ judge(typeof fact === "string" ? fact : fact.expr, `computed.${name}`, NONE);
78
+ for (const [name, act] of Object.entries(document.acts ?? {})) {
79
+ for (const one of actExpressions(name, act, document))
80
+ judge(one.source, one.path, fieldTypesOf(document, one.kinds));
81
+ }
82
+ for (const [name, rule] of Object.entries(document.rules ?? {})) {
83
+ const types = fieldTypesOf(document, rule.over === "graph" ? [] : [rule.over]);
84
+ for (const key of ["when", "require"])
85
+ if (rule[key])
86
+ judge(rule[key], `rules.${name}.${key}`, types);
87
+ }
88
+ return findings;
89
+ }
90
+ //# sourceMappingURL=expr-type-findings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expr-type-findings.js","sourceRoot":"","sources":["../../src/document/expr-type-findings.ts"],"names":[],"mappings":"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"}
@@ -27,11 +27,14 @@ export { upgradeDocument, UPGRADES } from "./upgrade.js";
27
27
  export type { Upgrade, Upgraded } from "./upgrade.js";
28
28
  export { RESPELLED, respellDocument } from "./respell.js";
29
29
  export type { Respelled, Respelling } from "./respell.js";
30
- export { expressionRule, shapesOfSchema } from "./rules.js";
30
+ export { coverageRule, expressionRule, shapesOfSchema } from "./rules.js";
31
+ export { resolveCovers, uncovered } from "./covers.js";
32
+ export type { CoverPlan, CoverProblem, CoverStep, RelationEnds } from "./covers.js";
31
33
  export { computedOf, validateComputed } from "./computed.js";
32
34
  export type { ComputedEntry, ComputedKind } from "./computed.js";
33
- export type { ExpressionRuleSpec } from "./rules.js";
34
- export { documentOf, toDocument } from "./to-document.js";
35
+ export type { CoverageRuleSpec, ExpressionRuleSpec } from "./rules.js";
36
+ export { toDocument } from "./to-document.js";
37
+ export { documentOf, rememberDocument } from "./remembered.js";
35
38
  export { isGraviewTemplate, readGraviewTemplate, templateSeedPrimitives, TemplateSpec, TEMPLATE_FORMAT, TEMPLATE_FORMAT_VERSION, TEMPLATE_QUESTION_TYPES } from "./graview-template.js";
36
39
  export type { GraviewTemplate, InstantiatedTemplate, RefusedTemplate, TemplateCall, TemplateQuestion, TemplateSeed, TemplateSeedNode, TemplateSetupStep } from "./graview-template.js";
37
40
  export type { ToDocumentResult } from "./to-document.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/document/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/document/index.ts"],"names":[],"mappings":"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"}
@@ -16,8 +16,11 @@ export { planMigration, coerce, losesData } from "./migrate.js";
16
16
  export { editDocument, EDIT_OPS, renameIn } from "./edit.js";
17
17
  export { upgradeDocument, UPGRADES } from "./upgrade.js";
18
18
  export { RESPELLED, respellDocument } from "./respell.js";
19
- export { expressionRule, shapesOfSchema } from "./rules.js";
19
+ export { coverageRule, expressionRule, shapesOfSchema } from "./rules.js";
20
+ export { resolveCovers, uncovered } from "./covers.js";
20
21
  export { computedOf, validateComputed } from "./computed.js";
21
- export { documentOf, toDocument } from "./to-document.js";
22
+ export { toDocument } from "./to-document.js";
23
+ // From where they live, not through `to-document`: a page that reads the remembered document (the seat, Roadmap f-seat-reshape) must not make the writer and what it reads live with it.
24
+ export { documentOf, rememberDocument } from "./remembered.js";
22
25
  export { isGraviewTemplate, readGraviewTemplate, templateSeedPrimitives, TemplateSpec, TEMPLATE_FORMAT, TEMPLATE_FORMAT_VERSION, TEMPLATE_QUESTION_TYPES } from "./graview-template.js";
23
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/document/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,2BAA2B,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE5G,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEtO,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAG7D,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAG7D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,YAAY,EAAE,eAAe,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/document/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,2BAA2B,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE5G,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEtO,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAG7D,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAG7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,yLAAyL;AACzL,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,YAAY,EAAE,eAAe,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -44,7 +44,7 @@ export function linkedFindings(document) {
44
44
  if (!local(relation) && linkedAnywhere(relation))
45
45
  findings.push(error("act-linked", `${where}.${"connect" in effect ? "connect" : "sever"}`, `"${relation}" links a record in another app, which is kept on the record that links it rather than connected`, `let the derived edit change it ("edit-<kind>"), which picks a record there`));
46
46
  }
47
- else if ("set" in effect) {
47
+ else if ("set" in effect && !("through" in effect)) {
48
48
  const target = typeof effect.target === "string" ? effect.target.slice(1) : "subject";
49
49
  const kinds = target === "subject" ? subjects : created.has(target) ? [created.get(target)] : [];
50
50
  for (const field of Object.keys(effect.set))
@@ -1 +1 @@
1
- {"version":3,"file":"linked-findings.js","sourceRoot":"","sources":["../../src/document/linked-findings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linked-findings.js","sourceRoot":"","sources":["../../src/document/linked-findings.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
- import { type AnySchema, type FieldFormat, type RuleLine } from "../index.js";
1
+ import { type AnyGraphNode, type AnySchema, type FieldFormat, type RuleLine } from "../index.js";
2
2
  import { type EvalContext } from "./expr/evaluate.js";
3
3
  import type { Expr } from "./expr/parse.js";
4
4
  import { type Formatter, type Money, type TemplatePart } from "./template.js";
5
+ import type { CoverPlan } from "./covers.js";
5
6
  /** What a line is said with: the declaration's words, and how its values are written. */
6
7
  export interface LineWords {
7
8
  readonly schema: AnySchema;
@@ -15,7 +16,10 @@ export interface LineWords {
15
16
  /** A rule as its line is made from: the kind it judges and its parsed judgment. */
16
17
  export interface LinedRule {
17
18
  readonly over: string;
18
- readonly require: Expr;
19
+ /** What must hold; absent on a coverage rule, whose `covers` says its walk. */
20
+ readonly require?: Expr | undefined;
21
+ /** A coverage rule's walk (Roadmap f-rule-covers-every). */
22
+ readonly covers?: CoverPlan | undefined;
19
23
  readonly when?: Expr | undefined;
20
24
  }
21
25
  /** A rule's line from the declaration alone: what must hold, and which records it judges. */
@@ -27,7 +31,7 @@ export declare function ruleLineOf(rule: LinedRule, words: LineWords): RuleLine;
27
31
  * says it, after "not". Never throws: a line that cannot be worked out is
28
32
  * the rule's own line.
29
33
  */
30
- export declare function brokenLineOf(rule: LinedRule, words: LineWords, ctx: EvalContext): RuleLine;
34
+ export declare function brokenLineOf(rule: LinedRule, words: LineWords, ctx: EvalContext, far?: AnyGraphNode): RuleLine;
31
35
  /** The formats a rule's own sentence gives its names: `{margin|percent}` says margin is a percent. */
32
36
  export declare function formatsSaid(says: readonly TemplatePart[] | undefined): ReadonlyMap<string, Formatter>;
33
37
  //# sourceMappingURL=rule-line.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rule-line.d.ts","sourceRoot":"","sources":["../../src/document/rule-line.ts"],"names":[],"mappings":"AAiBA,OAAO,EAA2E,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAiB,MAAM,aAAa,CAAC;AAGtK,OAAO,EAAyB,KAAK,WAAW,EAAc,MAAM,oBAAoB,CAAC;AACzF,OAAO,KAAK,EAAY,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAItD,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAK9E,yFAAyF;AACzF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,uDAAuD;IACvD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;IAC7E,gDAAgD;IAChD,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACvB,2HAA2H;IAC3H,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAChD;AAED,mFAAmF;AACnF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CAClC;AAsXD,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,QAAQ,CAQtE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,QAAQ,CA4F1F;AAED,sGAAsG;AACtG,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAMrG"}
1
+ {"version":3,"file":"rule-line.d.ts","sourceRoot":"","sources":["../../src/document/rule-line.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAwD,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAiB,MAAM,aAAa,CAAC;AAGtK,OAAO,EAAyB,KAAK,WAAW,EAAc,MAAM,oBAAoB,CAAC;AACzF,OAAO,KAAK,EAAY,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAItD,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,yFAAyF;AACzF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,uDAAuD;IACvD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;IAC7E,gDAAgD;IAChD,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACvB,2HAA2H;IAC3H,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAChD;AAED,mFAAmF;AACnF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACpC,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CAClC;AA4XD,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,QAAQ,CAUtE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,QAAQ,CAoG9G;AAED,sGAAsG;AACtG,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAMrG"}
@@ -395,13 +395,20 @@ function call(e, kind, r) {
395
395
  return [word(e.fn), OPEN, ...e.args.flatMap((one, i) => (i === 0 ? say(one, kind, r) : [word(","), ...say(one, kind, r)])), CLOSE];
396
396
  }
397
397
  }
398
+ /** A coverage rule's walk in words: "through stances, then issue". */
399
+ function walkWords(covers) {
400
+ const step = (relation) => name(humanizeField(relation).toLowerCase());
401
+ return [word("through"), step(covers.through.relation), ...(covers.via ? [word(","), word("then"), step(covers.via.relation)] : [])];
402
+ }
398
403
  /** A rule's line from the declaration alone: what must hold, and which records it judges. */
399
404
  export function ruleLineOf(rule, words) {
400
405
  const r = reader(words);
401
406
  const kind = rule.over === "graph" ? null : rule.over;
407
+ // A coverage rule: "reaches every issue through stances, then issue".
408
+ const parts = rule.covers ? [word("reaches every"), name(r.noun(rule.covers.every)), ...walkWords(rule.covers)] : say(rule.require, kind, r);
402
409
  return finishedLine({
403
410
  ...(kind === null ? {} : { kind }),
404
- parts: say(rule.require, kind, r),
411
+ parts,
405
412
  ...(rule.when ? { when: say(rule.when, kind, r) } : {}),
406
413
  });
407
414
  }
@@ -412,10 +419,18 @@ export function ruleLineOf(rule, words) {
412
419
  * says it, after "not". Never throws: a line that cannot be worked out is
413
420
  * the rule's own line.
414
421
  */
415
- export function brokenLineOf(rule, words, ctx) {
422
+ export function brokenLineOf(rule, words, ctx, far) {
416
423
  const r = reader(words);
417
424
  const kind = rule.over === "graph" ? null : rule.over;
418
425
  const subject = ctx.subject;
426
+ // A coverage rule broken is the pair: "does not reach Housing through stances, then issue".
427
+ if (rule.covers) {
428
+ return finishedLine({
429
+ ...(kind === null ? {} : { kind }),
430
+ parts: far ? [word("does not reach"), r.valueWords(far), ...walkWords(rule.covers)] : [word("does not reach every"), name(r.noun(rule.covers.every)), ...walkWords(rule.covers)],
431
+ ...(subject ? { record: labelOf(words.schema.tryDefinition(subject.kind), subject) } : {}),
432
+ });
433
+ }
419
434
  const held = (e) => {
420
435
  try {
421
436
  return evaluateExpr(e, { ...ctx, budget: 2_000 });