@graview/core 0.1.60 → 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 (307) hide show
  1. package/README.md +23 -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/arrangement.d.ts +2 -0
  9. package/dist/arrangement.d.ts.map +1 -1
  10. package/dist/arrangement.js +14 -0
  11. package/dist/arrangement.js.map +1 -1
  12. package/dist/capabilities.js +1 -1
  13. package/dist/capabilities.js.map +1 -1
  14. package/dist/catalog.d.ts.map +1 -1
  15. package/dist/catalog.js +2 -1
  16. package/dist/catalog.js.map +1 -1
  17. package/dist/cli/check/context.d.ts +5 -0
  18. package/dist/cli/check/context.d.ts.map +1 -1
  19. package/dist/cli/check/context.js.map +1 -1
  20. package/dist/cli/check/face.d.ts +14 -0
  21. package/dist/cli/check/face.d.ts.map +1 -0
  22. package/dist/cli/check/face.js +161 -0
  23. package/dist/cli/check/face.js.map +1 -0
  24. package/dist/cli/check/hidden-reads.d.ts.map +1 -1
  25. package/dist/cli/check/hidden-reads.js +26 -0
  26. package/dist/cli/check/hidden-reads.js.map +1 -1
  27. package/dist/cli/check/index.d.ts +1 -0
  28. package/dist/cli/check/index.d.ts.map +1 -1
  29. package/dist/cli/check/index.js +1 -0
  30. package/dist/cli/check/index.js.map +1 -1
  31. package/dist/cli/check/tidying.d.ts +14 -0
  32. package/dist/cli/check/tidying.d.ts.map +1 -0
  33. package/dist/cli/check/tidying.js +24 -0
  34. package/dist/cli/check/tidying.js.map +1 -0
  35. package/dist/cli/check.d.ts.map +1 -1
  36. package/dist/cli/check.js +4 -4
  37. package/dist/cli/check.js.map +1 -1
  38. package/dist/cli/describe.d.ts.map +1 -1
  39. package/dist/cli/describe.js +14 -1
  40. package/dist/cli/describe.js.map +1 -1
  41. package/dist/cli/docs.d.ts.map +1 -1
  42. package/dist/cli/docs.js +5 -3
  43. package/dist/cli/docs.js.map +1 -1
  44. package/dist/cli/document-schema.d.ts.map +1 -1
  45. package/dist/cli/document-schema.js +8 -2
  46. package/dist/cli/document-schema.js.map +1 -1
  47. package/dist/cli/index.d.ts +2 -1
  48. package/dist/cli/index.d.ts.map +1 -1
  49. package/dist/cli/index.js +15 -4
  50. package/dist/cli/index.js.map +1 -1
  51. package/dist/cli/types.d.ts.map +1 -1
  52. package/dist/cli/types.js +2 -1
  53. package/dist/cli/types.js.map +1 -1
  54. package/dist/compose.d.ts +14 -0
  55. package/dist/compose.d.ts.map +1 -1
  56. package/dist/compose.js +16 -1
  57. package/dist/compose.js.map +1 -1
  58. package/dist/css/sanitize.d.ts +125 -0
  59. package/dist/css/sanitize.d.ts.map +1 -0
  60. package/dist/css/sanitize.js +989 -0
  61. package/dist/css/sanitize.js.map +1 -0
  62. package/dist/css/tables.d.ts +55 -0
  63. package/dist/css/tables.d.ts.map +1 -0
  64. package/dist/css/tables.js +137 -0
  65. package/dist/css/tables.js.map +1 -0
  66. package/dist/css.d.ts +20 -0
  67. package/dist/css.d.ts.map +1 -0
  68. package/dist/css.js +19 -0
  69. package/dist/css.js.map +1 -0
  70. package/dist/days.d.ts +15 -0
  71. package/dist/days.d.ts.map +1 -1
  72. package/dist/days.js +21 -0
  73. package/dist/days.js.map +1 -1
  74. package/dist/describe.d.ts +1 -1
  75. package/dist/describe.d.ts.map +1 -1
  76. package/dist/document/act-findings.d.ts.map +1 -1
  77. package/dist/document/act-findings.js +80 -1
  78. package/dist/document/act-findings.js.map +1 -1
  79. package/dist/document/blocks.d.ts.map +1 -1
  80. package/dist/document/blocks.js +2 -1
  81. package/dist/document/blocks.js.map +1 -1
  82. package/dist/document/brand-check.d.ts +15 -1
  83. package/dist/document/brand-check.d.ts.map +1 -1
  84. package/dist/document/brand-check.js +80 -0
  85. package/dist/document/brand-check.js.map +1 -1
  86. package/dist/document/brand.d.ts.map +1 -1
  87. package/dist/document/brand.js +2 -0
  88. package/dist/document/brand.js.map +1 -1
  89. package/dist/document/compile-checked.d.ts.map +1 -1
  90. package/dist/document/compile-checked.js +4 -3
  91. package/dist/document/compile-checked.js.map +1 -1
  92. package/dist/document/compile.d.ts.map +1 -1
  93. package/dist/document/compile.js +54 -9
  94. package/dist/document/compile.js.map +1 -1
  95. package/dist/document/compiled.d.ts +18 -3
  96. package/dist/document/compiled.d.ts.map +1 -1
  97. package/dist/document/compiled.js +91 -10
  98. package/dist/document/compiled.js.map +1 -1
  99. package/dist/document/connection-findings.d.ts.map +1 -1
  100. package/dist/document/connection-findings.js +219 -19
  101. package/dist/document/connection-findings.js.map +1 -1
  102. package/dist/document/connection-spec.d.ts +7 -0
  103. package/dist/document/connection-spec.d.ts.map +1 -1
  104. package/dist/document/connection-spec.js +26 -2
  105. package/dist/document/connection-spec.js.map +1 -1
  106. package/dist/document/covers.d.ts +48 -0
  107. package/dist/document/covers.d.ts.map +1 -0
  108. package/dist/document/covers.js +90 -0
  109. package/dist/document/covers.js.map +1 -0
  110. package/dist/document/describe-place.d.ts +3 -0
  111. package/dist/document/describe-place.d.ts.map +1 -1
  112. package/dist/document/describe-place.js +11 -0
  113. package/dist/document/describe-place.js.map +1 -1
  114. package/dist/document/described.d.ts +28 -0
  115. package/dist/document/described.d.ts.map +1 -1
  116. package/dist/document/diff.js +10 -1
  117. package/dist/document/diff.js.map +1 -1
  118. package/dist/document/edit.d.ts +1 -1
  119. package/dist/document/edit.d.ts.map +1 -1
  120. package/dist/document/edit.js +186 -18
  121. package/dist/document/edit.js.map +1 -1
  122. package/dist/document/expr/evaluate.d.ts +10 -1
  123. package/dist/document/expr/evaluate.d.ts.map +1 -1
  124. package/dist/document/expr/evaluate.js +110 -2
  125. package/dist/document/expr/evaluate.js.map +1 -1
  126. package/dist/document/expr/index.d.ts +1 -0
  127. package/dist/document/expr/index.d.ts.map +1 -1
  128. package/dist/document/expr/index.js +2 -0
  129. package/dist/document/expr/index.js.map +1 -1
  130. package/dist/document/expr/typing.d.ts +24 -0
  131. package/dist/document/expr/typing.d.ts.map +1 -0
  132. package/dist/document/expr/typing.js +219 -0
  133. package/dist/document/expr/typing.js.map +1 -0
  134. package/dist/document/expr/when.d.ts +52 -0
  135. package/dist/document/expr/when.d.ts.map +1 -0
  136. package/dist/document/expr/when.js +215 -0
  137. package/dist/document/expr/when.js.map +1 -0
  138. package/dist/document/expr-type-findings.d.ts +5 -0
  139. package/dist/document/expr-type-findings.d.ts.map +1 -0
  140. package/dist/document/expr-type-findings.js +90 -0
  141. package/dist/document/expr-type-findings.js.map +1 -0
  142. package/dist/document/field-spec.d.ts.map +1 -1
  143. package/dist/document/field-spec.js +5 -0
  144. package/dist/document/field-spec.js.map +1 -1
  145. package/dist/document/findings.d.ts +33 -2
  146. package/dist/document/findings.d.ts.map +1 -1
  147. package/dist/document/findings.js +14 -17
  148. package/dist/document/findings.js.map +1 -1
  149. package/dist/document/index.d.ts +6 -3
  150. package/dist/document/index.d.ts.map +1 -1
  151. package/dist/document/index.js +5 -2
  152. package/dist/document/index.js.map +1 -1
  153. package/dist/document/linked-findings.js +1 -1
  154. package/dist/document/linked-findings.js.map +1 -1
  155. package/dist/document/migrate.d.ts.map +1 -1
  156. package/dist/document/migrate.js +10 -4
  157. package/dist/document/migrate.js.map +1 -1
  158. package/dist/document/rule-line.d.ts +7 -3
  159. package/dist/document/rule-line.d.ts.map +1 -1
  160. package/dist/document/rule-line.js +17 -2
  161. package/dist/document/rule-line.js.map +1 -1
  162. package/dist/document/rule-reads.d.ts.map +1 -1
  163. package/dist/document/rule-reads.js +3 -1
  164. package/dist/document/rule-reads.js.map +1 -1
  165. package/dist/document/rules.d.ts +30 -0
  166. package/dist/document/rules.d.ts.map +1 -1
  167. package/dist/document/rules.js +74 -0
  168. package/dist/document/rules.js.map +1 -1
  169. package/dist/document/schema.d.ts +80 -2
  170. package/dist/document/schema.d.ts.map +1 -1
  171. package/dist/document/schema.js +90 -4
  172. package/dist/document/schema.js.map +1 -1
  173. package/dist/document/to-document.d.ts.map +1 -1
  174. package/dist/document/to-document.js +3 -1
  175. package/dist/document/to-document.js.map +1 -1
  176. package/dist/document.schema.json +304 -5
  177. package/dist/formats.d.ts +21 -13
  178. package/dist/formats.d.ts.map +1 -1
  179. package/dist/formats.js +21 -13
  180. package/dist/formats.js.map +1 -1
  181. package/dist/import/coerce.d.ts.map +1 -1
  182. package/dist/import/coerce.js +16 -4
  183. package/dist/import/coerce.js.map +1 -1
  184. package/dist/index.d.ts +6 -5
  185. package/dist/index.d.ts.map +1 -1
  186. package/dist/index.js +5 -3
  187. package/dist/index.js.map +1 -1
  188. package/dist/invariants/types.d.ts +7 -2
  189. package/dist/invariants/types.d.ts.map +1 -1
  190. package/dist/kind-list.d.ts +1 -0
  191. package/dist/kind-list.d.ts.map +1 -1
  192. package/dist/kind-list.js +2 -1
  193. package/dist/kind-list.js.map +1 -1
  194. package/dist/lines.d.ts.map +1 -1
  195. package/dist/lines.js +6 -2
  196. package/dist/lines.js.map +1 -1
  197. package/dist/mutations/form.d.ts +2 -0
  198. package/dist/mutations/form.d.ts.map +1 -1
  199. package/dist/mutations/form.js +6 -3
  200. package/dist/mutations/form.js.map +1 -1
  201. package/dist/mutations/types.d.ts +9 -0
  202. package/dist/mutations/types.d.ts.map +1 -1
  203. package/dist/mutations/vote-suggestion.d.ts +67 -0
  204. package/dist/mutations/vote-suggestion.d.ts.map +1 -0
  205. package/dist/mutations/vote-suggestion.js +36 -0
  206. package/dist/mutations/vote-suggestion.js.map +1 -0
  207. package/dist/navigate.d.ts +7 -3
  208. package/dist/navigate.d.ts.map +1 -1
  209. package/dist/navigate.js +7 -3
  210. package/dist/navigate.js.map +1 -1
  211. package/dist/ops/lineage.d.ts +11 -1
  212. package/dist/ops/lineage.d.ts.map +1 -1
  213. package/dist/ops/lineage.js +6 -2
  214. package/dist/ops/lineage.js.map +1 -1
  215. package/dist/ops/suggestions.d.ts +33 -1
  216. package/dist/ops/suggestions.d.ts.map +1 -1
  217. package/dist/ops/suggestions.js +44 -2
  218. package/dist/ops/suggestions.js.map +1 -1
  219. package/dist/ops/types.d.ts +13 -0
  220. package/dist/ops/types.d.ts.map +1 -1
  221. package/dist/ops/types.js.map +1 -1
  222. package/dist/place-names.d.ts +42 -0
  223. package/dist/place-names.d.ts.map +1 -0
  224. package/dist/place-names.js +43 -0
  225. package/dist/place-names.js.map +1 -0
  226. package/dist/places.d.ts +2 -0
  227. package/dist/places.d.ts.map +1 -1
  228. package/dist/places.js +2 -0
  229. package/dist/places.js.map +1 -1
  230. package/dist/scaffold/agents.d.ts +9 -1
  231. package/dist/scaffold/agents.d.ts.map +1 -1
  232. package/dist/scaffold/agents.js +33 -2
  233. package/dist/scaffold/agents.js.map +1 -1
  234. package/dist/scaffold/project.js +1 -1
  235. package/dist/schema/choice-words.d.ts.map +1 -1
  236. package/dist/schema/choice-words.js +3 -0
  237. package/dist/schema/choice-words.js.map +1 -1
  238. package/dist/starting-document.d.ts +73 -0
  239. package/dist/starting-document.d.ts.map +1 -0
  240. package/dist/starting-document.js +645 -0
  241. package/dist/starting-document.js.map +1 -0
  242. package/dist/store.d.ts +50 -0
  243. package/dist/store.d.ts.map +1 -1
  244. package/dist/store.js +167 -27
  245. package/dist/store.js.map +1 -1
  246. package/dist/sync/connection.d.ts +20 -1
  247. package/dist/sync/connection.d.ts.map +1 -1
  248. package/dist/sync/connection.js +198 -34
  249. package/dist/sync/connection.js.map +1 -1
  250. package/dist/sync/engine.d.ts +13 -4
  251. package/dist/sync/engine.d.ts.map +1 -1
  252. package/dist/sync/engine.js +10 -6
  253. package/dist/sync/engine.js.map +1 -1
  254. package/dist/sync/google-calendar.d.ts +8 -0
  255. package/dist/sync/google-calendar.d.ts.map +1 -1
  256. package/dist/sync/google-calendar.js +16 -4
  257. package/dist/sync/google-calendar.js.map +1 -1
  258. package/dist/sync/guests.d.ts +44 -0
  259. package/dist/sync/guests.d.ts.map +1 -0
  260. package/dist/sync/guests.js +57 -0
  261. package/dist/sync/guests.js.map +1 -0
  262. package/dist/sync/notion-types.d.ts +7 -0
  263. package/dist/sync/notion-types.d.ts.map +1 -1
  264. package/dist/sync/notion-types.js +6 -1
  265. package/dist/sync/notion-types.js.map +1 -1
  266. package/dist/sync/recurrence.d.ts +41 -0
  267. package/dist/sync/recurrence.d.ts.map +1 -0
  268. package/dist/sync/recurrence.js +192 -0
  269. package/dist/sync/recurrence.js.map +1 -0
  270. package/dist/sync/types.d.ts +9 -0
  271. package/dist/sync/types.d.ts.map +1 -1
  272. package/dist/sync/types.js.map +1 -1
  273. package/dist/testing.js +1 -1
  274. package/dist/testing.js.map +1 -1
  275. package/dist/theme/contrast.d.ts +2 -0
  276. package/dist/theme/contrast.d.ts.map +1 -1
  277. package/dist/theme/contrast.js +4 -0
  278. package/dist/theme/contrast.js.map +1 -1
  279. package/dist/theme/ground.d.ts +1 -2
  280. package/dist/theme/ground.d.ts.map +1 -1
  281. package/dist/theme/ground.js +2 -5
  282. package/dist/theme/ground.js.map +1 -1
  283. package/dist/theme/marks.d.ts +14 -2
  284. package/dist/theme/marks.d.ts.map +1 -1
  285. package/dist/theme/marks.js +20 -3
  286. package/dist/theme/marks.js.map +1 -1
  287. package/dist/theme/types.d.ts +22 -0
  288. package/dist/theme/types.d.ts.map +1 -1
  289. package/dist/theme/types.js.map +1 -1
  290. package/dist/tidying.d.ts +30 -4
  291. package/dist/tidying.d.ts.map +1 -1
  292. package/dist/tidying.js +110 -5
  293. package/dist/tidying.js.map +1 -1
  294. package/dist/trait-vocabulary.d.ts +17 -0
  295. package/dist/trait-vocabulary.d.ts.map +1 -0
  296. package/dist/trait-vocabulary.js +16 -0
  297. package/dist/trait-vocabulary.js.map +1 -0
  298. package/dist/traits.d.ts +79 -0
  299. package/dist/traits.d.ts.map +1 -0
  300. package/dist/traits.js +468 -0
  301. package/dist/traits.js.map +1 -0
  302. package/dist/typed.d.ts +4 -0
  303. package/dist/typed.d.ts.map +1 -1
  304. package/dist/typed.js.map +1 -1
  305. package/dist/version.d.ts +1 -1
  306. package/dist/version.js +1 -1
  307. package/package.json +11 -1
@@ -3,7 +3,10 @@ import { relationActName } from "../mutations/derived-names.js";
3
3
  import { withArticle } from "../schema/define-node.js";
4
4
  import { CONNECTION_TAG, GOOGLE_COLORS } from "../sync/connection-filter.js";
5
5
  import { creatingActFor } from "../sync/creating-act.js";
6
- import { NOTION_FITS, NOTION_INFERABLE, NOTION_READ_ONLY, NOTION_SECRET, notionFits } from "../sync/notion-types.js";
6
+ import { humanizeField } from "../schema/humanize.js";
7
+ import { NOTION_FITS, NOTION_INFERABLE, NOTION_READ_ONLY, NOTION_SECRET, notionFieldType, notionFits } from "../sync/notion-types.js";
8
+ import { startAndEndOf } from "../wall-time.js";
9
+ import { weekdayOf } from "../sync/recurrence.js";
7
10
  import { error, warning } from "./findings.js";
8
11
  import { ConnectionSpec } from "./connection-spec.js";
9
12
  /*
@@ -35,7 +38,7 @@ export function connectionFindings(document, app) {
35
38
  continue;
36
39
  }
37
40
  const connection = parsed.data;
38
- findings.push(...(connection.system === "notion" ? notionConnection(at, connection, document, app) : googleConnection(at, connection, document, app)));
41
+ findings.push(...(connection.system === "notion" ? notionConnection(at, connection, document, app) : googleConnection(at, name, connection, document, app)));
39
42
  }
40
43
  return findings;
41
44
  }
@@ -75,18 +78,21 @@ function shapeFinding(at, raw, issue) {
75
78
  function noKind(at, document, kind, what) {
76
79
  return error("connection-kind", `${at}.kind`, `there is no kind called ${kind} for ${what} to be`, `name one of ${Object.keys(document.kinds).join(", ")}`);
77
80
  }
78
- function googleConnection(at, connection, document, app) {
81
+ function googleConnection(at, name, connection, document, app) {
79
82
  const findings = [];
80
83
  const kind = document.kinds[connection.kind];
81
84
  if (!kind)
82
85
  return [noKind(at, document, connection.kind, "the calendar's events")];
83
86
  const typeOf = (field) => kind.fields[field]?.type;
87
+ const weekly = connection.fields.days !== undefined;
84
88
  const mapped = Object.entries(connection.fields).filter((entry) => typeof entry[1] === "string");
85
89
  const seen = new Map();
86
90
  for (const [theirs, ours] of mapped) {
87
91
  const path = `${at}.fields.${theirs}`;
88
92
  if (!kind.fields[ours]) {
89
- findings.push(error("connection-field", path, `${connection.kind} has no field called ${ours} to hold the event's ${theirs}`, `name one of ${Object.keys(kind.fields).join(", ")}`));
93
+ findings.push(theirs === "guests"
94
+ ? error("connection-guests-field", path, `${connection.kind} has no field called ${ours} to hold the event's guests`, `name a list field holding their addresses, or an email field, or add one`, { fixes: [addressesField(connection.kind, ours, `Add ${humanizeField(ours)} to ${connection.kind}`)] })
95
+ : error("connection-field", path, `${connection.kind} has no field called ${ours} to hold the event's ${theirs}`, `name one of ${Object.keys(kind.fields).join(", ")}`));
90
96
  continue;
91
97
  }
92
98
  const twice = seen.get(ours);
@@ -94,21 +100,40 @@ function googleConnection(at, connection, document, app) {
94
100
  findings.push(error("connection-field", path, `${ours} already holds the event's ${twice}, and one field holds one part of an event`, "give each part a field of its own"));
95
101
  seen.set(ours, theirs);
96
102
  const type = typeOf(ours);
103
+ // The guests in a field (Roadmap f-calendar-guests-mapping): a list of addresses, or one email.
104
+ if (theirs === "guests") {
105
+ if (!holdsAddresses(kind.fields[ours]))
106
+ findings.push(error("connection-guests-field", path, `the event's guests are addresses, a list of them or one email, and ${ours} is a ${type} field`, "name a list field holding the addresses, or an email field"));
107
+ continue;
108
+ }
97
109
  if ((theirs === "summary" || theirs === "description") && !TEXT.has(type)) {
98
110
  findings.push(error("connection-field-type", path, `the event's ${theirs} is words, and ${ours} is a ${type} field`, "name a string or text field"));
99
111
  }
100
112
  if (theirs === "location" && !TEXT.has(type) && type !== "place") {
101
113
  findings.push(error("connection-field-type", path, `the event's location is a place in words, and ${ours} is a ${type} field`, "name a string, text or place field"));
102
114
  }
103
- if ((theirs === "start" || theirs === "end") && !WHEN.has(type)) {
115
+ // A weekly record (FR-230): its weekdays are a choice of weekday or a list of them, and its start and end are times of day.
116
+ if (theirs === "days") {
117
+ const choices = kind.fields[ours].options ?? [];
118
+ if (!(type === "list" || (type === "enum" && choices.length > 0 && choices.every((choice) => weekdayOf(choice) !== undefined)))) {
119
+ findings.push(error("connection-field-type", path, type === "enum" ? `the weekdays ${withArticle(connection.kind)} falls on are a choice of weekday, or a list of them, and ${ours}'s choices (${choices.join(", ")}) are not weekdays` : `the weekdays ${withArticle(connection.kind)} falls on are a choice of weekday, or a list of them, and ${ours} is a ${type} field`, 'name an enum whose options are weekdays ("mon" to "sun", or their names), or a list field holding them'));
120
+ }
121
+ continue;
122
+ }
123
+ if ((theirs === "start" || theirs === "end") && weekly && !TEXT.has(type)) {
124
+ findings.push(error("connection-field-type", path, `with days mapped, the event's ${theirs} is a time of day like "09:00", and ${ours} is a ${type} field`, 'name a string field holding the time as "HH:MM"'));
125
+ }
126
+ if ((theirs === "start" || theirs === "end") && !weekly && !WHEN.has(type)) {
104
127
  findings.push(error("connection-field-type", path, `the event's ${theirs} is a moment or a day, and ${ours} is a ${type} field`, "name a datetime field for a timed event, or a date field for an all-day one"));
105
128
  }
106
129
  }
107
130
  const start = typeOf(connection.fields.start);
108
131
  const end = typeOf(connection.fields.end);
109
- if (start && end && WHEN.has(start) && WHEN.has(end) && start !== end) {
132
+ if (!weekly && start && end && WHEN.has(start) && WHEN.has(end) && start !== end) {
110
133
  findings.push(error("connection-when", `${at}.fields.end`, `${connection.fields.start} is a ${start} and ${connection.fields.end} a ${end}, and an event is all-day or timed at both ends`, "make both dates (all-day events) or both datetimes (timed events)"));
111
134
  }
135
+ if (typeof connection.fields.guests === "object")
136
+ findings.push(...guestsVia(at, name, connection, connection.fields.guests, kind, document, app));
112
137
  const filter = connection.filter;
113
138
  if (filter) {
114
139
  if (filter.color && filter.tag)
@@ -124,8 +149,9 @@ function googleConnection(at, connection, document, app) {
124
149
  if (filter.keep !== undefined && !filter.tag)
125
150
  findings.push(error("connection-filter", `${at}.filter.keep`, "keep says whether a title keeps its tag, and the filter has no tag", "drop keep, or add a tag"));
126
151
  }
127
- if (app)
128
- findings.push(...landing(at, connection.kind, mapped.map(([, ours]) => ours).filter((ours) => kind.fields[ours]), { made: "an event made in the calendar", fields: "the event's fields", change: "a change in the calendar", deleted: "an event deleted in the calendar" }, app));
152
+ if (app) {
153
+ findings.push(...landing(at, connection.kind, mapped.map(([, ours]) => ours).filter((ours) => kind.fields[ours]), { made: "an event made in the calendar", fields: "the event's fields", change: "a change in the calendar", deleted: "an event deleted in the calendar", theirs: "Google events", one: "a Google event", part: "a calendar field", things: "events" }, app, document, { name, connection }));
154
+ }
129
155
  return findings;
130
156
  }
131
157
  function notionConnection(at, connection, document, app) {
@@ -171,7 +197,8 @@ function notionConnection(at, connection, document, app) {
171
197
  continue;
172
198
  }
173
199
  mapped.push(field);
174
- const type = kind.fields[field].type;
200
+ // An enum that takes several of its options (FR-233) is `several choices`: a multi-select's, never a select's.
201
+ const type = notionFieldType(kind.fields[field]);
175
202
  if (typeof property === "string") {
176
203
  if (!NOTION_INFERABLE.has(type))
177
204
  findings.push(error("connection-field-type", path, `${field} is a ${type} field, and no Notion property a connection keeps in step is held in one`, `name a field of another type, or leave ${field} out`));
@@ -193,10 +220,79 @@ function notionConnection(at, connection, document, app) {
193
220
  if (mapped.length === 0)
194
221
  findings.push(error("connection-properties", `${at}.kind`, `${connection.kind} has no field a Notion property could be held in`, "give it a string, number, date, enum, list or boolean field"));
195
222
  }
196
- if (app && mapped.length > 0)
197
- findings.push(...landing(at, connection.kind, mapped, { made: "a page made in the database", fields: "the page's fields", change: "a change in Notion", deleted: "a page archived in Notion" }, app));
223
+ if (app && mapped.length > 0) {
224
+ findings.push(...landing(at, connection.kind, mapped, { made: "a page made in the database", fields: "the page's fields", change: "a change in Notion", deleted: "a page archived in Notion", theirs: "Notion pages", one: "a Notion page", part: "a Notion property", things: "pages" }, app, document));
225
+ }
198
226
  if (app)
199
- findings.push(...linking(at, connection.kind, relations, document, app));
227
+ findings.push(...linking(connection.kind, relations, document, app, { where: (relation) => `${at}.properties.${relation}`, made: "a link made in Notion", taken: "a link taken away in Notion", leave: (relation) => `leave ${relation} out of properties` }));
228
+ return findings;
229
+ }
230
+ /** Whether a field holds a guest's addresses: a list of them (of strings, or of nothing said), or one email. */
231
+ const holdsAddresses = (spec) => spec.type === "email" || (spec.type === "list" && (spec.of === undefined || spec.of === "string"));
232
+ /** The fix that adds a list of addresses to a kind, as an edit a host applies. */
233
+ const addressesField = (kind, field, label) => ({ label, edits: [{ op: "add-field", kind, field, type: "list", of: "string" }] });
234
+ /**
235
+ * THE GUESTS THROUGH A RELATION, JUDGED (Roadmap f-calendar-guests-mapping):
236
+ * that `via` is one relation of the kind to one kind, that the kind it
237
+ * reaches has addresses to invite (`emails`) and the toggle that says who
238
+ * wants to be (`invite`, unless the app has none), that the people kind, if
239
+ * another, is said once, and that the acts a guest added or taken away in
240
+ * the calendar lands through are there. A field missing is offered as the
241
+ * edit that adds it.
242
+ */
243
+ function guestsVia(at, name, connection, guests, kind, document, app) {
244
+ const path = `${at}.fields.guests`;
245
+ const kindName = connection.kind;
246
+ const edges = kind.edges ?? {};
247
+ const edge = edges[guests.via];
248
+ if (!edge) {
249
+ const named = Object.keys(edges);
250
+ return [error("connection-guests-via", `${path}.via`, `${kindName} has no relation called ${guests.via} to reach the guests through`, named.length > 0 ? `name one of ${named.join(", ")}` : `declare a relation of ${kindName} to the people its events are about, and name it`)];
251
+ }
252
+ if (edge.to === "*" || edge.to.length !== 1) {
253
+ return [error("connection-guests-via", `${path}.via`, edge.to === "*" ? `${guests.via} reaches any kind, and the guests are the people of one` : `${guests.via} reaches ${listed(edge.to)}, and the guests are the people of one kind`, 'say the one kind it reaches with "to"')];
254
+ }
255
+ const reached = edge.to[0];
256
+ const people = document.kinds[reached];
257
+ // A relation to a kind that is not there is the document's finding, said once where the relation is.
258
+ if (!people)
259
+ return [];
260
+ const findings = [];
261
+ const emails = guests.emails ?? "emails";
262
+ const invite = guests.invite ?? "inviteMe";
263
+ const plural = capitalize(people.plural ?? `${people.noun ?? humanizeField(reached).toLowerCase()}s`);
264
+ const addresses = people.fields[emails];
265
+ if (!addresses) {
266
+ if (guests.emails === undefined) {
267
+ findings.push(error("connection-guests-via", `${path}.via`, `${guests.via} reaches ${reached}, and ${withArticle(reached)} has no emails to invite`, `give ${reached} a list field of addresses called emails, or name the field that holds them with "emails"`, { fixes: [addressesField(reached, "emails", `Give ${plural} emails`)] }));
268
+ }
269
+ else {
270
+ findings.push(error("connection-guests-field", `${path}.emails`, `${reached} has no field called ${emails} to hold a guest's addresses`, `name one of ${Object.keys(people.fields).join(", ")}, or add it`, { fixes: [addressesField(reached, emails, `Add ${humanizeField(emails)} to ${reached}`)] }));
271
+ }
272
+ }
273
+ else if (!holdsAddresses(addresses)) {
274
+ findings.push(error("connection-guests-field", `${path}.emails`, `a guest's addresses are a list of them or one email, and ${reached}'s ${emails} is a ${addresses.type} field`, "name a list field holding the addresses, or an email field"));
275
+ }
276
+ if (invite !== false) {
277
+ const toggle = people.fields[invite];
278
+ if (!toggle) {
279
+ findings.push(error("connection-guests-field", `${path}.invite`, `${reached} has no field called ${invite} to say who wants to be invited`, `add a yes-or-no field, name one with "invite", or say "invite": false to invite every address`, {
280
+ fixes: [
281
+ { label: `Add ${humanizeField(invite)} to ${reached}`, edits: [{ op: "add-field", kind: reached, field: invite, type: "boolean" }] },
282
+ { label: "Invite every address", edits: [{ op: "set-connection", name, connection: { ...connection, fields: { ...connection.fields, guests: { ...guests, invite: false } } } }] },
283
+ ],
284
+ }));
285
+ }
286
+ else if (toggle.type !== "boolean") {
287
+ findings.push(error("connection-guests-field", `${path}.invite`, `${invite} says whether ${withArticle(reached)} wants to be invited, and ${reached}'s ${invite} is a ${toggle.type} field`, 'name a boolean field, or say "invite": false to invite every address'));
288
+ }
289
+ }
290
+ // The app's people are another kind: not wrong (a household's people need not be its members), but said once.
291
+ const members = Object.entries(document.kinds).find(([, spec]) => spec.people === true)?.[0];
292
+ if (members && members !== reached)
293
+ findings.push(warning("connection-guests-via", `${path}.via`, `${guests.via} reaches ${reached}, and this app's people are ${members}: the guests are its ${plural.toLowerCase()}, never its members`));
294
+ if (app)
295
+ findings.push(...linking(kindName, [guests.via], document, app, { where: () => `${path}.via`, made: "a guest added in the calendar", taken: "a guest taken away in the calendar", leave: () => "leave guests out of the connection" }));
200
296
  return findings;
201
297
  }
202
298
  /** Why a relation cannot be kept in step: what it reaches is no kind a Notion connection of this app keeps. */
@@ -216,29 +312,32 @@ function relationTarget(kindName, relation, to, document) {
216
312
  fix: `declare a Notion connection for ${outside.join(" and ")}'s database, or leave ${relation} out of properties`,
217
313
  };
218
314
  }
219
- /** That the acts a link made or taken away in Notion lands through are there: `connect-<kind>-<relation>` and `disconnect-<kind>-<relation>`. */
220
- function linking(at, kindName, relations, document, app) {
315
+ /** That the acts a link made or taken away in the other system lands through are there: `connect-<kind>-<relation>` and `disconnect-<kind>-<relation>`. */
316
+ function linking(kindName, relations, document, app, said) {
221
317
  if (relations.length === 0)
222
318
  return [];
223
319
  const findings = [];
224
320
  const declared = app.mutations ?? [];
225
321
  const acts = new Set([...declared, ...deriveMutations(app.schema, declared)].map((mutation) => mutation.name));
226
322
  for (const relation of relations) {
227
- const path = `${at}.properties.${relation}`;
323
+ const path = said.where(relation);
228
324
  const connect = relationActName("connect", kindName, relation);
229
325
  const disconnect = relationActName("disconnect", kindName, relation);
230
326
  if (!acts.has(connect)) {
231
- findings.push(error("connection-connect", path, `a link made in Notion lands through ${connect}, and this app has no such act: the relation declares no acts, or an act of its own replaces it`, `let ${kindName}'s ${relation} be given its derived acts, or leave ${relation} out of properties`));
327
+ findings.push(error("connection-connect", path, `${said.made} lands through ${connect}, and this app has no such act: the relation declares no acts, or an act of its own replaces it`, `let ${kindName}'s ${relation} be given its derived acts, or ${said.leave(relation)}`));
232
328
  }
233
329
  else if (!acts.has(disconnect)) {
234
330
  const appendOnly = document.kinds[kindName]?.edges?.[relation]?.appendOnly === true;
235
- findings.push(warning("connection-disconnect", path, `no act takes ${kindName}'s ${relation} away${appendOnly ? " (it is append-only)" : ""}, so a link taken away in Notion stays here`));
331
+ findings.push(warning("connection-disconnect", path, `no act takes ${kindName}'s ${relation} away${appendOnly ? " (it is append-only)" : ""}, so ${said.taken} stays here`));
236
332
  }
237
333
  }
238
334
  return findings;
239
335
  }
336
+ const capitalize = (words) => words.charAt(0).toUpperCase() + words.slice(1);
337
+ /** "a Type", "a Driver and a Van", "a Type, a Driver and a Van". */
338
+ const listed = (words) => (words.length <= 1 ? (words[0] ?? "") : `${words.slice(0, -1).join(", ")} and ${words.at(-1)}`);
240
339
  /** That the acts an inbound change lands through are there: one that makes the kind from the mapped fields alone, `edit-<kind>` writing every mapped field, `remove-<kind>`. */
241
- function landing(at, kindName, fields, said, app) {
340
+ function landing(at, kindName, fields, said, app, document, google) {
242
341
  const findings = [];
243
342
  // The acts the store will hold: the declared ones and those derived from them (`edit-<kind>`, `remove-<kind>`).
244
343
  const declared = app.mutations ?? [];
@@ -249,8 +348,17 @@ function landing(at, kindName, fields, said, app) {
249
348
  findings.push(error("connection-creates", `${at}.kind`, `no act makes ${withArticle(kindName)}, so ${said.made} has nothing to become here`, `declare an act with "creates": "${kindName}"`));
250
349
  }
251
350
  else if (!making.act) {
351
+ /*
352
+ * SAID TO THE PERSON FILLING THE FORM (FR-229): what the kind needs
353
+ * that the other system's things do not have, and the ways out — a
354
+ * default, the field left blank, a part of theirs mapped to it, another
355
+ * kind, a kind made for them — each with the edits that do it where
356
+ * they can be written. The framework's own sentence stays as `details`.
357
+ */
252
358
  const why = making.unfit.map((act) => act.on ? `${act.name} acts on ${act.on.length > 0 ? act.on.map(withArticle).join(" or ") : "a record"}` : `${act.name} asks for ${act.asks.join(", ")}, which the connection does not map`);
253
- findings.push(error("connection-creates", `${at}.kind`, `${said.made} becomes ${withArticle(kindName)} through an act that makes one from ${said.fields} alone, and ${why.join("; ")}`, `declare an act with "creates": "${kindName}" and no "on", whose required arguments are fields the connection maps (add-${kindName} is the one looked for first)`));
359
+ const details = `${said.made} becomes ${withArticle(kindName)} through an act that makes one from ${said.fields} alone, and ${why.join("; ")} — declare an act with "creates": "${kindName}" and no "on", whose required arguments are fields the connection maps (add-${kindName} is the one looked for first)`;
360
+ const plain = plainRefusal(kindName, making.unfit, said, app, document, google);
361
+ findings.push(error("connection-creates", `${at}.kind`, plain.message, plain.fix, { details, ...(plain.fixes.length > 0 ? { fixes: plain.fixes } : {}) }));
254
362
  }
255
363
  const edit = acts.get(`edit-${kindName}`);
256
364
  const writes = new Set(edit?.writes ?? []);
@@ -271,4 +379,96 @@ function landing(at, kindName, fields, said, app) {
271
379
  }
272
380
  return findings;
273
381
  }
382
+ /** "a Type"; "Notes" — words that are many take no article. */
383
+ function fieldSaid(spec, field) {
384
+ const label = spec?.label ?? humanizeField(field);
385
+ return spec?.type === "text" || spec?.type === "list" ? label : `${/^[aeiou]/i.test(label) ? "an" : "a"} ${label}`;
386
+ }
387
+ /**
388
+ * The refusal in the person's words. The fields every fitting act would
389
+ * ask for and the connection does not give are what the kind "needs"; a
390
+ * kind no act makes on its own is said as such.
391
+ */
392
+ function plainRefusal(kindName, unfit, said, app, document, google) {
393
+ const spec = document.kinds[kindName];
394
+ const noun = spec?.noun ?? humanizeField(kindName).toLowerCase();
395
+ const plural = capitalize(spec?.plural ?? `${noun}s`);
396
+ const fixes = [];
397
+ // The fields asked for, in the order the acts ask them, `add-<kind>` first.
398
+ const asking = [...unfit].sort((a, b) => Number(b.name === `add-${kindName}`) - Number(a.name === `add-${kindName}`)).filter((act) => act.asks);
399
+ const asks = [...new Set(asking.flatMap((act) => act.asks ?? []))];
400
+ const elsewhere = otherKinds(kindName, said, app, document, google);
401
+ if (asks.length === 0) {
402
+ const on = unfit.filter((act) => act.on).map((act) => `${act.on.length > 0 ? act.on.map((kind) => withArticle(document.kinds[kind]?.noun ?? humanizeField(kind).toLowerCase())).join(" or ") : "a record"} (${act.name})`);
403
+ return {
404
+ message: `${capitalize(withArticle(noun))} is only ever made on ${listed(on)}, and ${said.one} is made on nothing.`,
405
+ fix: `Add an act that makes ${withArticle(noun)} on its own, or sync to a kind made for ${said.things}.`,
406
+ fixes: elsewhere,
407
+ };
408
+ }
409
+ const labels = asks.map((field) => spec?.fields[field]?.label ?? humanizeField(field));
410
+ const one = asks.length === 1;
411
+ for (const field of asks) {
412
+ const f = spec?.fields[field];
413
+ const label = f?.label ?? humanizeField(field);
414
+ const starts = f?.type === "enum" ? f.options?.[0] : f?.type === "boolean" ? false : undefined;
415
+ fixes.push({ label: `Give ${label} a default`, ...(starts !== undefined ? { edits: [{ op: "set-default", kind: kindName, field, default: starts }] } : {}) });
416
+ if (f?.required)
417
+ fixes.push({ label: `Let ${label} be left blank`, edits: [{ op: "set-required", kind: kindName, field, required: false }] });
418
+ fixes.push({ label: `Map ${said.part} to ${label}`, ...mappedPart(field, f, google) });
419
+ }
420
+ return {
421
+ message: `${plural} need ${listed(asks.map((field) => fieldSaid(spec?.fields[field], field)))}, and ${said.theirs} don't have ${one ? "one" : "them"}.`,
422
+ fix: `Map ${said.part} to ${listed(labels)}, give ${one ? labels[0] : "them"} ${one ? "a default" : "defaults"}, or sync to a kind made for ${said.things}.`,
423
+ fixes: [...fixes, ...elsewhere],
424
+ };
425
+ }
426
+ /** The event's part a words field could hold, written into the connection: its description, else its location, where the connection maps neither. */
427
+ function mappedPart(field, spec, google) {
428
+ if (!google || !spec || !TEXT.has(spec.type))
429
+ return {};
430
+ const part = ["description", "location"].find((theirs) => google.connection.fields[theirs] === undefined);
431
+ if (!part)
432
+ return {};
433
+ return { edits: [{ op: "set-connection", name: google.name, connection: { ...google.connection, fields: { ...google.connection.fields, [part]: field } } }] };
434
+ }
435
+ /**
436
+ * The kinds the connection could keep instead: each kind already here with
437
+ * a title and two dates of one sort that an act makes from them alone, and
438
+ * a kind made for events, added. Said only of a Google calendar, whose
439
+ * events say what a kind for them holds.
440
+ */
441
+ function otherKinds(kindName, said, app, document, google) {
442
+ if (!google)
443
+ return [];
444
+ const declared = (app.mutations ?? []);
445
+ const fixes = [];
446
+ const rewired = (kind, fields) => ({ op: "set-connection", name: google.name, connection: { ...google.connection, kind, fields } });
447
+ for (const [kind, spec] of Object.entries(document.kinds)) {
448
+ if (kind === kindName)
449
+ continue;
450
+ const words = Object.entries(spec.fields).filter(([, f]) => TEXT.has(f.type));
451
+ const title = words.find(([field]) => field === "name" || field === "title") ?? words.find(([, f]) => f.required) ?? words[0];
452
+ const dates = Object.keys(spec.fields).filter((field) => WHEN.has(spec.fields[field].type));
453
+ const ends = startAndEndOf(dates) ?? (dates.length >= 2 ? { start: dates[0], end: dates[1] } : undefined);
454
+ if (!title || !ends || spec.fields[ends.start].type !== spec.fields[ends.end].type)
455
+ continue;
456
+ if (!creatingActFor(declared, kind, [title[0], ends.start, ends.end]).act)
457
+ continue;
458
+ fixes.push({ label: `Sync to ${kind} instead`, edits: [rewired(kind, { summary: title[0], start: ends.start, end: ends.end })] });
459
+ }
460
+ // A kind made for events: a title, a start and an end of the sort the connection maps now, and where it happens.
461
+ const sort = document.kinds[kindName]?.fields[google.connection.fields.start]?.type === "date" ? "date" : "datetime";
462
+ let fresh = "event";
463
+ for (let n = 2; document.kinds[fresh]; n += 1)
464
+ fresh = n === 2 ? "calendar-event" : `calendar-event-${n}`;
465
+ fixes.push({
466
+ label: `Add a kind made for ${said.things}`,
467
+ edits: [
468
+ { op: "add-kind", kind: fresh, fields: { title: { type: "string", required: true }, starts: { type: sort }, ends: { type: sort }, where: { type: "string" } } },
469
+ rewired(fresh, { summary: "title", start: "starts", end: "ends", location: "where" }),
470
+ ],
471
+ });
472
+ return fixes;
473
+ }
274
474
  //# sourceMappingURL=connection-findings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection-findings.js","sourceRoot":"","sources":["../../src/document/connection-findings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection-findings.js","sourceRoot":"","sources":["../../src/document/connection-findings.ts"],"names":[],"mappings":"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"}
@@ -19,8 +19,15 @@ export declare const ConnectionSpec: z.ZodMiniLazy<z.ZodMiniDiscriminatedUnion<[
19
19
  summary: z.ZodMiniString<string>;
20
20
  start: z.ZodMiniString<string>;
21
21
  end: z.ZodMiniString<string>;
22
+ days: z.ZodMiniOptional<z.ZodMiniString<string>>;
22
23
  location: z.ZodMiniOptional<z.ZodMiniString<string>>;
23
24
  description: z.ZodMiniOptional<z.ZodMiniString<string>>;
25
+ guests: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
26
+ via: z.ZodMiniString<string>;
27
+ emails: z.ZodMiniOptional<z.ZodMiniString<string>>;
28
+ invite: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniLiteral<false>]>>;
29
+ notify: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
30
+ }, z.core.$strict>]>>;
24
31
  }, z.core.$strict>;
25
32
  filter: z.ZodMiniOptional<z.ZodMiniObject<{
26
33
  color: z.ZodMiniOptional<z.ZodMiniString<string>>;
@@ -1 +1 @@
1
- {"version":3,"file":"connection-spec.d.ts","sourceRoot":"","sources":["../../src/document/connection-spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAC;AA6FtC;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAAoC,CAAC;AAChE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC5D,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAAC,cAAc,EAAE;IAAE,MAAM,EAAE,iBAAiB,CAAA;CAAE,CAAC,CAAC;AAClG,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,cAAc,EAAE;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"connection-spec.d.ts","sourceRoot":"","sources":["../../src/document/connection-spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAC;AA0HtC;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAAoC,CAAC;AAChE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC5D,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAAC,cAAc,EAAE;IAAE,MAAM,EAAE,iBAAiB,CAAA;CAAE,CAAC,CAAC;AAClG,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,cAAc,EAAE;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC"}
@@ -13,6 +13,7 @@ function build() {
13
13
  const sentence = str(1, 500);
14
14
  const kindName = z.string().check(z.regex(NAME, 'kind names are kebab-case, lower-case words joined by hyphens like "tool-note"'));
15
15
  const fieldName = z.string().check(z.regex(FIELD_NAME, 'field names are one word or camelCase, like "dueDate"'));
16
+ const edgeName = z.string().check(z.regex(EDGE_NAME, 'a relation\'s name is one word or camelCase, like "who"'));
16
17
  const envName = z.string().check(z.regex(/^[A-Z][A-Z0-9_]*$/, 'an environment variable is upper-case words joined by underscores, like "GOOGLE"'));
17
18
  /* Where the credentials are read from: environment variables under `env`, failing that the KEY=value file `file` names. */
18
19
  const auth = z.optional(z.strictObject({ env: envName, file: z.optional(str(1, 500)) }));
@@ -36,8 +37,31 @@ function build() {
36
37
  calendar: z.union([str(1, 300), z.strictObject({ env: envName })]),
37
38
  auth,
38
39
  kind: kindName,
39
- /* Google's side → this kind's field. A date field is an all-day event's day; a datetime field, a timed event's instant. */
40
- fields: z.strictObject({ summary: fieldName, start: fieldName, end: fieldName, location: z.optional(fieldName), description: z.optional(fieldName) }),
40
+ /*
41
+ * Google's side → this kind's field. A date field is an all-day event's
42
+ * day; a datetime field, a timed event's instant; one that repeats, a
43
+ * recurring event with its rule (FR-230). With `days` — a weekday, or a
44
+ * list of them — the record is weekly, and `start` and `end` are its
45
+ * times of day ("09:00"), in the app's time zone.
46
+ *
47
+ * THE EVENT'S GUESTS (Roadmap f-calendar-guests-mapping) are `guests`:
48
+ * a field of the kind holding their addresses (a list, or one email),
49
+ * or `{ via }`, a relation of the kind to the people it is about —
50
+ * each reached person's `emails` (a list of them, or one email field)
51
+ * is invited while their `invite` toggle is on (`inviteMe`; `false`
52
+ * says the app has no toggle and every address is invited). Google's
53
+ * invitation emails go out only with `notify: true`; the default is
54
+ * quiet.
55
+ */
56
+ fields: z.strictObject({
57
+ summary: fieldName,
58
+ start: fieldName,
59
+ end: fieldName,
60
+ days: z.optional(fieldName),
61
+ location: z.optional(fieldName),
62
+ description: z.optional(fieldName),
63
+ guests: z.optional(z.union([fieldName, z.strictObject({ via: edgeName, emails: z.optional(fieldName), invite: z.optional(z.union([fieldName, z.literal(false)])), notify: z.optional(z.boolean()) })], 'guests names a field holding the addresses, or { "via": "<relation>", "emails"?, "invite"?, "notify"? } to invite the people a relation reaches')),
64
+ }),
41
65
  /* Absent: the whole calendar. `{ color }`: the events of one of Google's colors, by name. `{ tag }`: those whose title carries a word like "#graview", kept in the title here or not (`keep`). */
42
66
  filter: z.optional(z.strictObject({ color: z.optional(str(1, 40)), tag: z.optional(str(1, 40)), keep: z.optional(z.boolean()) })),
43
67
  direction,
@@ -1 +1 @@
1
- {"version":3,"file":"connection-spec.js","sourceRoot":"","sources":["../../src/document/connection-spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection-spec.js","sourceRoot":"","sources":["../../src/document/connection-spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import type { AnyGraphNode, GraphReader } from "../graph/types.js";
2
+ /** As a rule declares it: the kind it must reach, the relation it walks from its subject, and the relation from there when the first stops short. */
3
+ export interface CoverSpec {
4
+ readonly every: string;
5
+ readonly through: string;
6
+ readonly via?: string | undefined;
7
+ }
8
+ /** One step of the walk: a relation, walked out from the declaring kind or in from the far one. */
9
+ export interface CoverStep {
10
+ readonly relation: string;
11
+ /** `true`: the relation is declared on the kind the step leaves (`out`); `false`: on the kind it reaches (`in`). */
12
+ readonly out: boolean;
13
+ }
14
+ /** A coverage rule resolved against the declaration: each step knows its direction, so judging it reads nothing but links. */
15
+ export interface CoverPlan {
16
+ readonly every: string;
17
+ readonly through: CoverStep;
18
+ readonly via?: CoverStep;
19
+ }
20
+ /** What a relation is declared as, wherever a declaration is read: the kinds it leaves and the kinds it reaches. */
21
+ export interface RelationEnds {
22
+ readonly from: readonly string[];
23
+ readonly to: readonly string[] | "*";
24
+ }
25
+ /** Why a coverage rule could not be resolved: which key, and the sentence, in the person's voice. */
26
+ export interface CoverProblem {
27
+ readonly key: "through" | "via" | "every";
28
+ readonly message: string;
29
+ readonly fix?: string;
30
+ }
31
+ /**
32
+ * Resolve a coverage rule against the declaration's relations, or say why
33
+ * it cannot be: `through` must leave the rule's kind (or point at it), and
34
+ * the walk must end on `every`'s kind — through `via` when it is given.
35
+ */
36
+ export declare function resolveCovers(over: string, spec: CoverSpec, relationOf: (name: string) => RelationEnds | undefined, isKind: (name: string) => boolean): {
37
+ readonly plan: CoverPlan;
38
+ } | {
39
+ readonly problem: CoverProblem;
40
+ };
41
+ /**
42
+ * THE RECORDS A SUBJECT DOES NOT REACH, in one pass: every record the
43
+ * subject's links lead to through the plan, as a set, held against the
44
+ * live records of the covered kind (an archived one counts in no rule
45
+ * that does not ask, as `all()` holds). Linear in the subject's links.
46
+ */
47
+ export declare function uncovered(graph: GraphReader, subject: AnyGraphNode, plan: CoverPlan): AnyGraphNode[];
48
+ //# sourceMappingURL=covers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"covers.d.ts","sourceRoot":"","sources":["../../src/document/covers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAiBnE,qJAAqJ;AACrJ,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,mGAAmG;AACnG,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oHAAoH;IACpH,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAED,8HAA8H;AAC9H,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;CAC1B;AAED,oHAAoH;AACpH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC;CACtC;AAED,qGAAqG;AACrG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAiBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CA6CzN;AAID;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,GAAG,YAAY,EAAE,CAUpG"}