@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
@@ -50,6 +50,15 @@ export interface EvalContext {
50
50
  readonly today?: string;
51
51
  readonly now?: string;
52
52
  readonly budget?: number;
53
+ /**
54
+ * The app's locale and time zone (`brand.locale`, `brand.timeZone`): what
55
+ * `format(…)` says a moment in and the clock `datetime(…)`, `weekday(…)`
56
+ * and `startOfWeek(…)` read it on. Unsaid, the app the page draws; else
57
+ * en-US and UTC — never the reader's, since a value the language builds
58
+ * may be kept on a record.
59
+ */
60
+ readonly locale?: string;
61
+ readonly timeZone?: string;
53
62
  /**
54
63
  * How far records are read (FR-171), as whoever is looking: else the
55
64
  * reader registered for the graph (`readLinkedThrough`), else none — and
@@ -69,5 +78,5 @@ export declare class ExprBudgetError extends ExprEvalError {
69
78
  /** Evaluate an expression. Throws `ExprEvalError` (with a sentence) on a type mistake or an exhausted budget. */
70
79
  export declare function evaluateExpr(expr: Expr, ctx: EvalContext): Value;
71
80
  /** The names of every function the language knows — the check reports any other. */
72
- export declare const FUNCTIONS: readonly ["out", "in", "all", "count", "exists", "every", "some", "sum", "min", "max", "present", "len", "contains", "startsWith", "lower", "today", "now", "date", "days", "hours", "if", "first", "sort", "either", "fact", "archived", "round"];
81
+ export declare const FUNCTIONS: readonly ["out", "in", "all", "count", "exists", "every", "some", "sum", "min", "max", "present", "len", "contains", "startsWith", "lower", "today", "now", "date", "days", "hours", "if", "first", "sort", "either", "fact", "archived", "round", "concat", "format", "datetime", "at", "addMinutes", "weekday", "startOfWeek"];
73
82
  //# sourceMappingURL=evaluate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../../src/document/expr/evaluate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAgC,KAAK,YAAY,EAAqB,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAYvJ,eAAO,MAAM,cAAc,QAAS,CAAC;AAErC,qBAAa,OAAO;IACN,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE;gBAA9B,KAAK,EAAE,SAAS,YAAY,EAAE;CACpD;AAED,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,KAAK,EAAE,CAAC;AAEjG,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;IACpD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9C;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACvD;AAED,uIAAuI;AACvI,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACtC;AAKD,qEAAqE;AACrE,eAAO,MAAM,WAAW,GAAI,GAAG,OAAO,KAAG,OAAuF,CAAC;AAQjI,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAIrD;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/C,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,iIAAiI;IACjI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CAClD;AAED,qBAAa,aAAc,SAAQ,KAAK;IAEpC,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM;gBADV,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM;CAItB;AAED,qBAAa,eAAgB,SAAQ,aAAa;CAAG;AAcrD,iHAAiH;AACjH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,GAAG,KAAK,CAiahE;AAED,oFAAoF;AACpF,eAAO,MAAM,SAAS,oPAGZ,CAAC"}
1
+ {"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../../src/document/expr/evaluate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAgC,KAAK,YAAY,EAAqB,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAavJ,eAAO,MAAM,cAAc,QAAS,CAAC;AAErC,qBAAa,OAAO;IACN,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE;gBAA9B,KAAK,EAAE,SAAS,YAAY,EAAE;CACpD;AAED,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,KAAK,EAAE,CAAC;AAEjG,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;IACpD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9C;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACvD;AAED,uIAAuI;AACvI,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACtC;AAKD,qEAAqE;AACrE,eAAO,MAAM,WAAW,GAAI,GAAG,OAAO,KAAG,OAAuF,CAAC;AAQjI,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAIrD;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/C,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,iIAAiI;IACjI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CAClD;AAED,qBAAa,aAAc,SAAQ,KAAK;IAEpC,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM;gBADV,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM;CAItB;AAED,qBAAa,eAAgB,SAAQ,aAAa;CAAG;AAuBrD,iHAAiH;AACjH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,GAAG,KAAK,CAofhE;AAED,oFAAoF;AACpF,eAAO,MAAM,SAAS,kUAIZ,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import { isArchived } from "../../graph/archived.js";
2
2
  import { withArticle } from "../../schema/define-node.js";
3
- import { isoToday } from "../../days.js";
3
+ import { daySpanOf, ISO_MOMENT, isoToday, PARTIAL_DAY } from "../../days.js";
4
4
  import { dateOn } from "../../repeat.js";
5
5
  import { linkedReaderOf, linkedRefsOf } from "../../schema/linked.js";
6
+ import { addMinutesTo, datetimeAt, formatWhen, isWeekday, minutesOfTime, startOfWeekOf, weekdayOfWhen, whenOf, zoneOf } from "./when.js";
6
7
  /*
7
8
  * THE RULE LANGUAGE, JUDGED.
8
9
  *
@@ -58,6 +59,15 @@ const distinct = (nodes) => {
58
59
  return new NodeSet(nodes.filter((n) => !seen.has(n.id) && seen.add(n.id)));
59
60
  };
60
61
  const describe = (v) => v === null ? "nothing" : v instanceof NodeSet ? "a set of records" : Array.isArray(v) ? "a list" : isNode(v) ? "a record" : typeof v === "string" ? "a word" : typeof v;
62
+ /** The days two values cover, when one is a year or a month alone and the other a day, a moment or such a date too: what they are compared by. Undefined otherwise. */
63
+ function spansOf(a, b) {
64
+ if (!PARTIAL_DAY.test(a) && !PARTIAL_DAY.test(b))
65
+ return undefined;
66
+ const span = (s) => daySpanOf(ISO_MOMENT.test(s) ? s.slice(0, 10) : s);
67
+ const x = span(a);
68
+ const y = span(b);
69
+ return x && y ? [x, y] : undefined;
70
+ }
61
71
  /** Evaluate an expression. Throws `ExprEvalError` (with a sentence) on a type mistake or an exhausted budget. */
62
72
  export function evaluateExpr(expr, ctx) {
63
73
  let steps = ctx.budget ?? DEFAULT_BUDGET;
@@ -68,6 +78,7 @@ export function evaluateExpr(expr, ctx) {
68
78
  };
69
79
  const today = ctx.today ?? isoToday();
70
80
  const now = ctx.now ?? new Date().toISOString();
81
+ const zone = zoneOf(ctx.timeZone);
71
82
  /*
72
83
  * A COMPUTED FIELD IS WORKED OUT ONCE PER EVALUATION, and never while it
73
84
  * is being worked out: a cycle the check could not see (across kinds,
@@ -163,11 +174,24 @@ export function evaluateExpr(expr, ctx) {
163
174
  const s = asString(v, at, fn);
164
175
  if (s === null)
165
176
  return null;
166
- const t = Date.parse(s.length === 10 ? `${s}T00:00:00Z` : s);
177
+ // A year or a month alone (Roadmap f-partial-dates-arithmetic) is measured from the first day it covers: days('2006', '2016-05') is from Jan 1, 2006 to May 1, 2016.
178
+ const day = PARTIAL_DAY.test(s) ? daySpanOf(s).from : s;
179
+ const t = Date.parse(day.length === 10 ? `${day}T00:00:00Z` : day);
167
180
  if (Number.isNaN(t))
168
181
  throw new ExprEvalError(`${fn}(…) needs a date, and "${s}" is not one`, at);
169
182
  return t;
170
183
  };
184
+ // A moment on the app's wall (`when.ts`): a day, a wall time or an instant; nothing is nothing.
185
+ const asWhen = (v, at, fn) => {
186
+ if (v === null)
187
+ return null;
188
+ if (typeof v !== "string")
189
+ throw new ExprEvalError(`${fn}(…) needs a date, and was given ${describe(v)}`, at);
190
+ const when = whenOf(v, zone);
191
+ if (!when)
192
+ throw new ExprEvalError(`${fn}(…) needs a date, and "${v}" is not one`, at);
193
+ return when;
194
+ };
171
195
  const equal = (a, b) => {
172
196
  if (isNode(a) && isNode(b))
173
197
  return a.id === b.id;
@@ -271,6 +295,24 @@ export function evaluateExpr(expr, ctx) {
271
295
  const comparable = (typeof a === "number" && typeof b === "number") || (typeof a === "string" && typeof b === "string");
272
296
  if (!comparable)
273
297
  throw new ExprEvalError(`cannot compare ${describe(a)} with ${describe(b)}`, e.at);
298
+ /*
299
+ * A DATE THAT KNOWS ONLY ITS YEAR OR ITS MONTH IS COMPARED BY THE
300
+ * SPAN IT COVERS (Roadmap f-partial-dates-arithmetic). `2006` is
301
+ * the whole of 2006: before a day only when all of it is, after one
302
+ * only when all of it is, and equal to another date only when the
303
+ * two cover the same days. A span that overlaps the other date is
304
+ * none of these, so `firstSeen <= today()` is false of a month the
305
+ * day is in. As written, "2006" < "2006-03-04" would have been true
306
+ * by its letters alone.
307
+ */
308
+ const spans = typeof a === "string" && typeof b === "string" ? spansOf(a, b) : undefined;
309
+ if (spans) {
310
+ const [x, y] = spans;
311
+ const before = x.to < y.from;
312
+ const after = x.from > y.to;
313
+ const same = x.from === y.from && x.to === y.to;
314
+ return e.op === "<" ? before : e.op === "<=" ? before || same : e.op === ">" ? after : after || same;
315
+ }
274
316
  return e.op === "<" ? a < b : e.op === "<=" ? a <= b : e.op === ">" ? a > b : a >= b;
275
317
  }
276
318
  default: {
@@ -460,6 +502,71 @@ export function evaluateExpr(expr, ctx) {
460
502
  const s = asString(arg(0), e.at, "lower");
461
503
  return s === null ? null : s.toLowerCase();
462
504
  }
505
+ case "concat": {
506
+ /*
507
+ * WORDS JOINED (Roadmap f-formula-text-datetime): concat(name, ' · ',
508
+ * place). Nothing joins as no words at all, where `+` would make the
509
+ * whole nothing: a title with an empty middle is still a title.
510
+ */
511
+ if (e.args.length < 1)
512
+ throw new ExprEvalError("concat(…) takes at least one argument", e.at);
513
+ let s = "";
514
+ for (let i = 0; i < e.args.length; i++)
515
+ s += asString(arg(i), e.at, "concat") ?? "";
516
+ if (s.length > 10_000)
517
+ throw new ExprEvalError("that makes a word too long", e.at);
518
+ return s;
519
+ }
520
+ case "format": {
521
+ // A moment said by a pattern — format(start, 'EEE d MMM, h:mm a') — in the app's locale, on its clock.
522
+ arity(2);
523
+ const when = asWhen(arg(0), e.at, "format");
524
+ const pattern = arg(1);
525
+ if (typeof pattern !== "string")
526
+ throw new ExprEvalError("format(…) says its pattern in quotes, like format(start, 'EEE h:mm a')", e.at);
527
+ if (when === null)
528
+ return null;
529
+ const said = formatWhen(when, pattern, ctx.locale);
530
+ if (typeof said !== "string")
531
+ throw new ExprEvalError(said.problem, e.at);
532
+ return said;
533
+ }
534
+ case "datetime":
535
+ case "at": {
536
+ // A day at a time of day on the app's wall, as an instant: datetime(due, '09:30'), at(due, startTime).
537
+ arity(2);
538
+ const when = asWhen(arg(0), e.at, e.fn);
539
+ const time = arg(1);
540
+ if (time === null || when === null)
541
+ return null;
542
+ const minutes = typeof time === "string" ? minutesOfTime(time) : undefined;
543
+ if (minutes === undefined)
544
+ throw new ExprEvalError(`${e.fn}(…) needs a time of day written like '09:30', and was given ${typeof time === "string" ? `"${time}"` : describe(time)}`, e.at);
545
+ return datetimeAt(when, minutes, zone);
546
+ }
547
+ case "addMinutes": {
548
+ arity(2);
549
+ const when = asWhen(arg(0), e.at, "addMinutes");
550
+ const count = arg(1);
551
+ if (when === null || count === null)
552
+ return null;
553
+ if (typeof count !== "number" || !Number.isFinite(count))
554
+ throw new ExprEvalError(`addMinutes(…) needs a number of minutes, and was given ${describe(count)}`, e.at);
555
+ return addMinutesTo(when, Math.round(count));
556
+ }
557
+ case "weekday": {
558
+ arity(1);
559
+ const when = asWhen(arg(0), e.at, "weekday");
560
+ return when === null ? null : weekdayOfWhen(when);
561
+ }
562
+ case "startOfWeek": {
563
+ arity(1, 2);
564
+ const when = asWhen(arg(0), e.at, "startOfWeek");
565
+ const first = e.args.length === 2 ? arg(1) : "mon";
566
+ if (!isWeekday(first))
567
+ throw new ExprEvalError("startOfWeek(…) starts the week on a day said 'mon' to 'sun'", e.at);
568
+ return when === null ? null : startOfWeekOf(when, first);
569
+ }
463
570
  case "today":
464
571
  arity(0);
465
572
  return today;
@@ -538,5 +645,6 @@ export function evaluateExpr(expr, ctx) {
538
645
  export const FUNCTIONS = [
539
646
  "out", "in", "all", "count", "exists", "every", "some", "sum", "min", "max", "present", "len",
540
647
  "contains", "startsWith", "lower", "today", "now", "date", "days", "hours", "if", "first", "sort", "either", "fact", "archived", "round",
648
+ "concat", "format", "datetime", "at", "addMinutes", "weekday", "startOfWeek",
541
649
  ];
542
650
  //# sourceMappingURL=evaluate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../../src/document/expr/evaluate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../../src/document/expr/evaluate.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,5 @@ export { evaluateExpr, ExprEvalError, ExprBudgetError, NodeSet, DEFAULT_BUDGET,
5
5
  export type { EvalContext, KindShape, Value } from "./evaluate.js";
6
6
  export { analyzeExpr, costDegree } from "./analyze.js";
7
7
  export type { ExprShape } from "./analyze.js";
8
+ export { patternProblem, WEEKDAYS } from "./when.js";
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/document/expr/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9H,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/document/expr/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9H,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC"}
@@ -2,4 +2,6 @@ export { parseExpr, ExprSyntaxError, MAX_EXPRESSION_LENGTH } from "./parse.js";
2
2
  export { printExpr } from "./print.js";
3
3
  export { evaluateExpr, ExprEvalError, ExprBudgetError, NodeSet, DEFAULT_BUDGET, FUNCTIONS, GRAPH_FACTS } from "./evaluate.js";
4
4
  export { analyzeExpr, costDegree } from "./analyze.js";
5
+ // The typing (`typing.ts`) is the checker's, reached from `expr-type-findings.ts` alone: a page compiles without it.
6
+ export { patternProblem, WEEKDAYS } from "./when.js";
5
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/document/expr/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE9H,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/document/expr/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE9H,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEvD,qHAAqH;AACrH,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { Expr } from "./parse.js";
2
+ export type ValueType = "text" | "number" | "boolean" | "date" | "datetime" | "record" | "set" | "list" | "nothing" | "unknown";
3
+ /** A declared field's type as the language sees it. */
4
+ export declare function valueTypeOfField(type: string | undefined): ValueType;
5
+ /** A finding the reading makes: its code, the sentence, and what to do. */
6
+ export interface TypeProblem {
7
+ readonly code: "expr-type" | "format-pattern";
8
+ readonly sentence: string;
9
+ readonly fix?: string;
10
+ }
11
+ /**
12
+ * What an expression works out, as far as the declaration says.
13
+ * `fieldTypeOf` answers a bare name of the subject with its declared field
14
+ * type, or undefined for a relation, a computed field or an argument.
15
+ */
16
+ export declare function typeOfExpr(expr: Expr, fieldTypeOf: (name: string) => string | undefined): ValueType;
17
+ /**
18
+ * The type mistakes the declaration alone shows in an expression: a date
19
+ * function given what is not a date, a `format(…)` pattern with a piece the
20
+ * language does not know, a time of day or a weekday not written as the
21
+ * language takes them. Each once, in the order met.
22
+ */
23
+ export declare function typeProblemsOf(expr: Expr, fieldTypeOf: (name: string) => string | undefined): TypeProblem[];
24
+ //# sourceMappingURL=typing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typing.d.ts","sourceRoot":"","sources":["../../../src/document/expr/typing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAcvC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAEhI,uDAAuD;AACvD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAyBpE;AAID,2EAA2E;AAC3E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,gBAAgB,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,SAAS,CA6EnG;AAQD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,WAAW,EAAE,CAoF3G"}
@@ -0,0 +1,219 @@
1
+ import { isWeekday, minutesOfTime, patternHasTime, patternProblem } from "./when.js";
2
+ /** A declared field's type as the language sees it. */
3
+ export function valueTypeOfField(type) {
4
+ switch (type) {
5
+ case "string":
6
+ case "text":
7
+ case "enum":
8
+ case "url":
9
+ case "email":
10
+ case "phone":
11
+ case "place":
12
+ return "text";
13
+ case "number":
14
+ case "integer":
15
+ case "duration":
16
+ return "number";
17
+ case "boolean":
18
+ return "boolean";
19
+ case "date":
20
+ return "date";
21
+ case "datetime":
22
+ return "datetime";
23
+ case "list":
24
+ return "list";
25
+ default:
26
+ return "unknown";
27
+ }
28
+ }
29
+ const DATES = new Set(["date", "datetime", "nothing", "unknown"]);
30
+ /**
31
+ * What an expression works out, as far as the declaration says.
32
+ * `fieldTypeOf` answers a bare name of the subject with its declared field
33
+ * type, or undefined for a relation, a computed field or an argument.
34
+ */
35
+ export function typeOfExpr(expr, fieldTypeOf) {
36
+ const type = (e) => {
37
+ switch (e.t) {
38
+ case "lit":
39
+ return e.value === null ? "nothing" : typeof e.value === "string" ? "text" : typeof e.value === "number" ? "number" : "boolean";
40
+ case "ident": {
41
+ const declared = fieldTypeOf(e.name);
42
+ return declared === undefined ? "unknown" : valueTypeOfField(declared);
43
+ }
44
+ case "list":
45
+ return "list";
46
+ case "member":
47
+ return "unknown";
48
+ case "unary":
49
+ return e.op === "!" ? "boolean" : "number";
50
+ case "where":
51
+ return "set";
52
+ case "binary": {
53
+ if (["||", "&&", "==", "!=", "<", "<=", ">", ">=", "in"].includes(e.op))
54
+ return "boolean";
55
+ if (e.op === "&" || e.op === "|")
56
+ return "set";
57
+ const [a, b] = [type(e.left), type(e.right)];
58
+ if (e.op === "-" && (a === "set" || b === "set"))
59
+ return "set";
60
+ if (e.op === "+" && (a === "text" || b === "text"))
61
+ return "text";
62
+ return "number";
63
+ }
64
+ case "call":
65
+ switch (e.fn) {
66
+ case "today":
67
+ case "date":
68
+ case "startOfWeek":
69
+ return "date";
70
+ case "now":
71
+ case "datetime":
72
+ case "at":
73
+ case "addMinutes":
74
+ return "datetime";
75
+ case "format":
76
+ case "concat":
77
+ case "lower":
78
+ case "weekday":
79
+ return "text";
80
+ case "count":
81
+ case "sum":
82
+ case "min":
83
+ case "max":
84
+ case "len":
85
+ case "days":
86
+ case "hours":
87
+ case "round":
88
+ return "number";
89
+ case "exists":
90
+ case "every":
91
+ case "some":
92
+ case "present":
93
+ case "contains":
94
+ case "startsWith":
95
+ case "archived":
96
+ return "boolean";
97
+ case "out":
98
+ case "in":
99
+ case "all":
100
+ case "sort":
101
+ return "set";
102
+ case "first":
103
+ return "record";
104
+ case "if": {
105
+ const [, then, otherwise] = e.args;
106
+ const a = then ? type(then) : "unknown";
107
+ const b = otherwise ? type(otherwise) : "unknown";
108
+ return a === b ? a : a === "nothing" ? b : b === "nothing" ? a : "unknown";
109
+ }
110
+ default:
111
+ return "unknown";
112
+ }
113
+ }
114
+ };
115
+ return type(expr);
116
+ }
117
+ /** How a value the reading knows is said in a sentence. */
118
+ const said = (t) => (t === "text" ? "words" : t === "number" ? "a number" : t === "boolean" ? "a yes or no" : t === "list" ? "a list" : t === "set" ? "a set of records" : t === "record" ? "a record" : t);
119
+ /** What the argument is called in a sentence: a field by name, anything else by what it works out. */
120
+ const named = (e, t) => (e.t === "ident" ? `"${e.name}" is ${said(t)}` : `it was given ${said(t)}`);
121
+ /**
122
+ * The type mistakes the declaration alone shows in an expression: a date
123
+ * function given what is not a date, a `format(…)` pattern with a piece the
124
+ * language does not know, a time of day or a weekday not written as the
125
+ * language takes them. Each once, in the order met.
126
+ */
127
+ export function typeProblemsOf(expr, fieldTypeOf) {
128
+ const out = [];
129
+ const type = (e) => typeOfExpr(e, fieldTypeOf);
130
+ const needsDate = (fn, e) => {
131
+ if (!e)
132
+ return;
133
+ const t = type(e);
134
+ if (!DATES.has(t) && !(e.t === "lit" && typeof e.value === "string" && !Number.isNaN(Date.parse(e.value)))) {
135
+ out.push({ code: "expr-type", sentence: `${fn}(…) needs a date, and ${named(e, t)}`, fix: "give it a date or datetime field, today(), now(), or a value the date functions build" });
136
+ }
137
+ };
138
+ const visit = (e) => {
139
+ switch (e.t) {
140
+ case "lit":
141
+ case "ident":
142
+ return;
143
+ case "list":
144
+ e.items.forEach(visit);
145
+ return;
146
+ case "member":
147
+ visit(e.object);
148
+ return;
149
+ case "unary":
150
+ visit(e.operand);
151
+ return;
152
+ case "binary":
153
+ visit(e.left);
154
+ visit(e.right);
155
+ return;
156
+ case "where":
157
+ visit(e.set);
158
+ visit(e.filter);
159
+ return;
160
+ case "call": {
161
+ e.args.forEach(visit);
162
+ const [first, second] = e.args;
163
+ switch (e.fn) {
164
+ case "format": {
165
+ needsDate("format", first);
166
+ if (second?.t === "lit" && typeof second.value === "string") {
167
+ const problem = patternProblem(second.value);
168
+ if (problem)
169
+ out.push({ code: "format-pattern", sentence: problem, fix: "write the pattern from EEE, EEEE, d, MMM, MMMM, yyyy, h:mm a and HH:mm, with any other words in single quotes" });
170
+ // A day alone has no time of day to say: a time piece of it would say nothing.
171
+ else if (first && type(first) === "date" && patternHasTime(second.value)) {
172
+ out.push({ code: "format-pattern", sentence: `format(…) asks for a time of day, and ${first.t === "ident" ? `"${first.name}"` : "what it is given"} is a date with no time of day`, fix: "say a datetime field, or leave h:mm a and HH:mm out of the pattern" });
173
+ }
174
+ }
175
+ else if (second) {
176
+ out.push({ code: "format-pattern", sentence: "format(…) says its pattern in quotes, like format(start, 'EEE h:mm a')", fix: "write the pattern as a quoted word" });
177
+ }
178
+ return;
179
+ }
180
+ case "datetime":
181
+ case "at": {
182
+ needsDate(e.fn, first);
183
+ if (second?.t === "lit" && (typeof second.value !== "string" || minutesOfTime(second.value) === undefined)) {
184
+ out.push({ code: "expr-type", sentence: `${e.fn}(…) needs a time of day written like '09:30', and was given ${typeof second.value === "string" ? `"${second.value}"` : said(type(second))}`, fix: "write the time as hours and minutes, '09:30' or '17:00'" });
185
+ }
186
+ else if (second && second.t !== "lit") {
187
+ const t = type(second);
188
+ if (t !== "text" && t !== "unknown" && t !== "nothing")
189
+ out.push({ code: "expr-type", sentence: `${e.fn}(…) needs a time of day written like '09:30', and ${named(second, t)}`, fix: "give it a string field holding a time of day, or write the time in quotes" });
190
+ }
191
+ return;
192
+ }
193
+ case "addMinutes": {
194
+ needsDate("addMinutes", first);
195
+ if (second) {
196
+ const t = type(second);
197
+ if (t !== "number" && t !== "unknown" && t !== "nothing")
198
+ out.push({ code: "expr-type", sentence: `addMinutes(…) needs a number of minutes, and ${named(second, t)}`, fix: "give it a number" });
199
+ }
200
+ return;
201
+ }
202
+ case "weekday":
203
+ needsDate("weekday", first);
204
+ return;
205
+ case "startOfWeek":
206
+ needsDate("startOfWeek", first);
207
+ if (second?.t === "lit" && !isWeekday(second.value))
208
+ out.push({ code: "expr-type", sentence: "startOfWeek(…) starts the week on a day said 'mon' to 'sun'", fix: "write the first day of the week as 'mon', 'sun', or another of the seven" });
209
+ return;
210
+ default:
211
+ return;
212
+ }
213
+ }
214
+ }
215
+ };
216
+ visit(expr);
217
+ return out;
218
+ }
219
+ //# sourceMappingURL=typing.js.map