@graview/core 0.1.28 → 0.1.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (501) hide show
  1. package/README.md +17 -0
  2. package/dist/amount-input.d.ts +21 -0
  3. package/dist/amount-input.d.ts.map +1 -0
  4. package/dist/amount-input.js +96 -0
  5. package/dist/amount-input.js.map +1 -0
  6. package/dist/answer-seen.d.ts +38 -0
  7. package/dist/answer-seen.d.ts.map +1 -0
  8. package/dist/answer-seen.js +122 -0
  9. package/dist/answer-seen.js.map +1 -0
  10. package/dist/app-places.d.ts +56 -0
  11. package/dist/app-places.d.ts.map +1 -0
  12. package/dist/app-places.js +153 -0
  13. package/dist/app-places.js.map +1 -0
  14. package/dist/arrange.d.ts +2 -2
  15. package/dist/arrange.d.ts.map +1 -1
  16. package/dist/arrange.js +2 -2
  17. package/dist/arrange.js.map +1 -1
  18. package/dist/arrangement-words.d.ts +3 -0
  19. package/dist/arrangement-words.d.ts.map +1 -0
  20. package/dist/arrangement-words.js +50 -0
  21. package/dist/arrangement-words.js.map +1 -0
  22. package/dist/arrangement.d.ts +25 -3
  23. package/dist/arrangement.d.ts.map +1 -1
  24. package/dist/arrangement.js +36 -32
  25. package/dist/arrangement.js.map +1 -1
  26. package/dist/arranging.d.ts.map +1 -1
  27. package/dist/arranging.js +19 -8
  28. package/dist/arranging.js.map +1 -1
  29. package/dist/bind.d.ts +3 -0
  30. package/dist/bind.d.ts.map +1 -1
  31. package/dist/bind.js.map +1 -1
  32. package/dist/capabilities.js +1 -1
  33. package/dist/capabilities.js.map +1 -1
  34. package/dist/check.d.ts +3 -0
  35. package/dist/check.d.ts.map +1 -1
  36. package/dist/check.js +3 -0
  37. package/dist/check.js.map +1 -1
  38. package/dist/city.d.ts +58 -50
  39. package/dist/city.d.ts.map +1 -1
  40. package/dist/city.js +160 -147
  41. package/dist/city.js.map +1 -1
  42. package/dist/cli/check/brand.js +1 -1
  43. package/dist/cli/check/brand.js.map +1 -1
  44. package/dist/cli/check/clock-rules.d.ts +4 -0
  45. package/dist/cli/check/clock-rules.d.ts.map +1 -0
  46. package/dist/cli/check/clock-rules.js +26 -0
  47. package/dist/cli/check/clock-rules.js.map +1 -0
  48. package/dist/cli/check/field-sight.d.ts +11 -0
  49. package/dist/cli/check/field-sight.d.ts.map +1 -0
  50. package/dist/cli/check/field-sight.js +113 -0
  51. package/dist/cli/check/field-sight.js.map +1 -0
  52. package/dist/cli/check/index.d.ts +2 -0
  53. package/dist/cli/check/index.d.ts.map +1 -1
  54. package/dist/cli/check/index.js +2 -0
  55. package/dist/cli/check/index.js.map +1 -1
  56. package/dist/cli/check/lenses.d.ts +1 -1
  57. package/dist/cli/check/lenses.d.ts.map +1 -1
  58. package/dist/cli/check/lenses.js +43 -2
  59. package/dist/cli/check/lenses.js.map +1 -1
  60. package/dist/cli/check/relations.d.ts.map +1 -1
  61. package/dist/cli/check/relations.js +2 -1
  62. package/dist/cli/check/relations.js.map +1 -1
  63. package/dist/cli/check.d.ts.map +1 -1
  64. package/dist/cli/check.js +7 -4
  65. package/dist/cli/check.js.map +1 -1
  66. package/dist/cli/describe.d.ts.map +1 -1
  67. package/dist/cli/describe.js +44 -3
  68. package/dist/cli/describe.js.map +1 -1
  69. package/dist/cli/docs.d.ts.map +1 -1
  70. package/dist/cli/docs.js +4 -3
  71. package/dist/cli/docs.js.map +1 -1
  72. package/dist/cli/types.d.ts.map +1 -1
  73. package/dist/cli/types.js +10 -1
  74. package/dist/cli/types.js.map +1 -1
  75. package/dist/clock-readers.d.ts +18 -0
  76. package/dist/clock-readers.d.ts.map +1 -0
  77. package/dist/clock-readers.js +70 -0
  78. package/dist/clock-readers.js.map +1 -0
  79. package/dist/clock.d.ts +30 -0
  80. package/dist/clock.d.ts.map +1 -0
  81. package/dist/clock.js +41 -0
  82. package/dist/clock.js.map +1 -0
  83. package/dist/columns.d.ts.map +1 -1
  84. package/dist/columns.js +2 -1
  85. package/dist/columns.js.map +1 -1
  86. package/dist/conformance/fixtures.d.ts.map +1 -1
  87. package/dist/conformance/fixtures.js +326 -43
  88. package/dist/conformance/fixtures.js.map +1 -1
  89. package/dist/days.d.ts +53 -4
  90. package/dist/days.d.ts.map +1 -1
  91. package/dist/days.js +136 -16
  92. package/dist/days.js.map +1 -1
  93. package/dist/describe.d.ts +1 -0
  94. package/dist/describe.d.ts.map +1 -1
  95. package/dist/describe.js +1 -0
  96. package/dist/describe.js.map +1 -1
  97. package/dist/document/act-findings.d.ts.map +1 -1
  98. package/dist/document/act-findings.js +13 -3
  99. package/dist/document/act-findings.js.map +1 -1
  100. package/dist/document/amount.d.ts +4 -0
  101. package/dist/document/amount.d.ts.map +1 -0
  102. package/dist/document/amount.js +22 -0
  103. package/dist/document/amount.js.map +1 -0
  104. package/dist/document/block-context.d.ts.map +1 -1
  105. package/dist/document/block-context.js +1 -0
  106. package/dist/document/block-context.js.map +1 -1
  107. package/dist/document/blocks.d.ts +13 -3
  108. package/dist/document/blocks.d.ts.map +1 -1
  109. package/dist/document/blocks.js +56 -12
  110. package/dist/document/blocks.js.map +1 -1
  111. package/dist/document/compile-checked.d.ts.map +1 -1
  112. package/dist/document/compile-checked.js +3 -2
  113. package/dist/document/compile-checked.js.map +1 -1
  114. package/dist/document/compile.d.ts.map +1 -1
  115. package/dist/document/compile.js +30 -7
  116. package/dist/document/compile.js.map +1 -1
  117. package/dist/document/compiled.d.ts +4 -2
  118. package/dist/document/compiled.d.ts.map +1 -1
  119. package/dist/document/compiled.js +50 -19
  120. package/dist/document/compiled.js.map +1 -1
  121. package/dist/document/describe-coverage.d.ts.map +1 -1
  122. package/dist/document/describe-coverage.js +2 -1
  123. package/dist/document/describe-coverage.js.map +1 -1
  124. package/dist/document/describe-place.d.ts +6 -2
  125. package/dist/document/describe-place.d.ts.map +1 -1
  126. package/dist/document/describe-place.js +14 -8
  127. package/dist/document/describe-place.js.map +1 -1
  128. package/dist/document/diff.d.ts +2 -0
  129. package/dist/document/diff.d.ts.map +1 -1
  130. package/dist/document/diff.js +34 -6
  131. package/dist/document/diff.js.map +1 -1
  132. package/dist/document/durations.d.ts +8 -0
  133. package/dist/document/durations.d.ts.map +1 -0
  134. package/dist/document/durations.js +82 -0
  135. package/dist/document/durations.js.map +1 -0
  136. package/dist/document/edit.d.ts +1 -1
  137. package/dist/document/edit.d.ts.map +1 -1
  138. package/dist/document/edit.js +195 -22
  139. package/dist/document/edit.js.map +1 -1
  140. package/dist/document/expr/evaluate.d.ts +1 -1
  141. package/dist/document/expr/evaluate.d.ts.map +1 -1
  142. package/dist/document/expr/evaluate.js +17 -4
  143. package/dist/document/expr/evaluate.js.map +1 -1
  144. package/dist/document/field-spec.d.ts.map +1 -1
  145. package/dist/document/field-spec.js +15 -1
  146. package/dist/document/field-spec.js.map +1 -1
  147. package/dist/document/format-findings.d.ts +4 -0
  148. package/dist/document/format-findings.d.ts.map +1 -0
  149. package/dist/document/format-findings.js +39 -0
  150. package/dist/document/format-findings.js.map +1 -0
  151. package/dist/document/format-rules.d.ts +8 -0
  152. package/dist/document/format-rules.d.ts.map +1 -0
  153. package/dist/document/format-rules.js +19 -0
  154. package/dist/document/format-rules.js.map +1 -0
  155. package/dist/document/format-words.d.ts +9 -0
  156. package/dist/document/format-words.d.ts.map +1 -0
  157. package/dist/document/format-words.js +29 -0
  158. package/dist/document/format-words.js.map +1 -0
  159. package/dist/document/graview-template.d.ts +2 -2
  160. package/dist/document/migrate.d.ts +1 -0
  161. package/dist/document/migrate.d.ts.map +1 -1
  162. package/dist/document/migrate.js +45 -1
  163. package/dist/document/migrate.js.map +1 -1
  164. package/dist/document/money.d.ts +14 -0
  165. package/dist/document/money.d.ts.map +1 -0
  166. package/dist/document/money.js +14 -0
  167. package/dist/document/money.js.map +1 -0
  168. package/dist/document/policy-words.d.ts +2 -0
  169. package/dist/document/policy-words.d.ts.map +1 -1
  170. package/dist/document/policy-words.js +19 -4
  171. package/dist/document/policy-words.js.map +1 -1
  172. package/dist/document/rule-line.d.ts.map +1 -1
  173. package/dist/document/rule-line.js +16 -12
  174. package/dist/document/rule-line.js.map +1 -1
  175. package/dist/document/rules.d.ts.map +1 -1
  176. package/dist/document/rules.js +6 -5
  177. package/dist/document/rules.js.map +1 -1
  178. package/dist/document/schema.d.ts +62 -19
  179. package/dist/document/schema.d.ts.map +1 -1
  180. package/dist/document/schema.js +30 -4
  181. package/dist/document/schema.js.map +1 -1
  182. package/dist/document/template-parse.d.ts.map +1 -1
  183. package/dist/document/template-parse.js +9 -2
  184. package/dist/document/template-parse.js.map +1 -1
  185. package/dist/document/template.d.ts +3 -13
  186. package/dist/document/template.d.ts.map +1 -1
  187. package/dist/document/template.js +24 -22
  188. package/dist/document/template.js.map +1 -1
  189. package/dist/document/thumbnail.d.ts.map +1 -1
  190. package/dist/document/thumbnail.js +4 -3
  191. package/dist/document/thumbnail.js.map +1 -1
  192. package/dist/document/to-document.d.ts +0 -1
  193. package/dist/document/to-document.d.ts.map +1 -1
  194. package/dist/document/to-document.js +19 -2
  195. package/dist/document/to-document.js.map +1 -1
  196. package/dist/document/view-specs.d.ts.map +1 -1
  197. package/dist/document/view-specs.js +3 -0
  198. package/dist/document/view-specs.js.map +1 -1
  199. package/dist/document/views.d.ts +2 -0
  200. package/dist/document/views.d.ts.map +1 -1
  201. package/dist/document/views.js +18 -6
  202. package/dist/document/views.js.map +1 -1
  203. package/dist/document.schema.json +63 -6
  204. package/dist/excerpt-of.d.ts +14 -0
  205. package/dist/excerpt-of.d.ts.map +1 -0
  206. package/dist/excerpt-of.js +120 -0
  207. package/dist/excerpt-of.js.map +1 -0
  208. package/dist/excerpt.d.ts +9 -0
  209. package/dist/excerpt.d.ts.map +1 -0
  210. package/dist/excerpt.js +43 -0
  211. package/dist/excerpt.js.map +1 -0
  212. package/dist/field-sight.d.ts +33 -0
  213. package/dist/field-sight.d.ts.map +1 -0
  214. package/dist/field-sight.js +313 -0
  215. package/dist/field-sight.js.map +1 -0
  216. package/dist/forms.d.ts +1 -0
  217. package/dist/forms.d.ts.map +1 -1
  218. package/dist/forms.js +1 -0
  219. package/dist/forms.js.map +1 -1
  220. package/dist/graph/archived.d.ts +25 -0
  221. package/dist/graph/archived.d.ts.map +1 -0
  222. package/dist/graph/archived.js +16 -0
  223. package/dist/graph/archived.js.map +1 -0
  224. package/dist/graph/diff.d.ts.map +1 -1
  225. package/dist/graph/diff.js +2 -1
  226. package/dist/graph/diff.js.map +1 -1
  227. package/dist/graph/graph.d.ts +37 -13
  228. package/dist/graph/graph.d.ts.map +1 -1
  229. package/dist/graph/graph.js +86 -40
  230. package/dist/graph/graph.js.map +1 -1
  231. package/dist/graph/tracked.d.ts +8 -8
  232. package/dist/graph/tracked.d.ts.map +1 -1
  233. package/dist/graph/tracked.js +15 -20
  234. package/dist/graph/tracked.js.map +1 -1
  235. package/dist/graph/types.d.ts +16 -8
  236. package/dist/graph/types.d.ts.map +1 -1
  237. package/dist/graph/types.js.map +1 -1
  238. package/dist/import/coerce.d.ts +45 -0
  239. package/dist/import/coerce.d.ts.map +1 -0
  240. package/dist/import/coerce.js +252 -0
  241. package/dist/import/coerce.js.map +1 -0
  242. package/dist/import/csv.d.ts +16 -0
  243. package/dist/import/csv.d.ts.map +1 -0
  244. package/dist/import/csv.js +77 -0
  245. package/dist/import/csv.js.map +1 -0
  246. package/dist/import/index.d.ts +17 -0
  247. package/dist/import/index.d.ts.map +1 -0
  248. package/dist/import/index.js +13 -0
  249. package/dist/import/index.js.map +1 -0
  250. package/dist/import/mapping.d.ts +99 -0
  251. package/dist/import/mapping.d.ts.map +1 -0
  252. package/dist/import/mapping.js +182 -0
  253. package/dist/import/mapping.js.map +1 -0
  254. package/dist/import/rows.d.ts +116 -0
  255. package/dist/import/rows.d.ts.map +1 -0
  256. package/dist/import/rows.js +584 -0
  257. package/dist/import/rows.js.map +1 -0
  258. package/dist/index.d.ts +38 -21
  259. package/dist/index.d.ts.map +1 -1
  260. package/dist/index.js +27 -16
  261. package/dist/index.js.map +1 -1
  262. package/dist/invariants/engine.d.ts +5 -1
  263. package/dist/invariants/engine.d.ts.map +1 -1
  264. package/dist/invariants/engine.js +4 -3
  265. package/dist/invariants/engine.js.map +1 -1
  266. package/dist/invariants/types.d.ts +18 -3
  267. package/dist/invariants/types.d.ts.map +1 -1
  268. package/dist/json-schema.d.ts +1 -0
  269. package/dist/json-schema.d.ts.map +1 -1
  270. package/dist/json-schema.js +2 -0
  271. package/dist/json-schema.js.map +1 -1
  272. package/dist/labels.d.ts.map +1 -1
  273. package/dist/labels.js +2 -1
  274. package/dist/labels.js.map +1 -1
  275. package/dist/lines.d.ts +1 -0
  276. package/dist/lines.d.ts.map +1 -1
  277. package/dist/lines.js +5 -3
  278. package/dist/lines.js.map +1 -1
  279. package/dist/markdown.d.ts +102 -0
  280. package/dist/markdown.d.ts.map +1 -0
  281. package/dist/markdown.js +460 -0
  282. package/dist/markdown.js.map +1 -0
  283. package/dist/mutations/arg-shape.d.ts +95 -0
  284. package/dist/mutations/arg-shape.d.ts.map +1 -0
  285. package/dist/mutations/arg-shape.js +101 -0
  286. package/dist/mutations/arg-shape.js.map +1 -0
  287. package/dist/mutations/define-mutation.d.ts +48 -2
  288. package/dist/mutations/define-mutation.d.ts.map +1 -1
  289. package/dist/mutations/define-mutation.js +103 -36
  290. package/dist/mutations/define-mutation.js.map +1 -1
  291. package/dist/mutations/derive-edits.d.ts +16 -1
  292. package/dist/mutations/derive-edits.d.ts.map +1 -1
  293. package/dist/mutations/derive-edits.js +67 -28
  294. package/dist/mutations/derive-edits.js.map +1 -1
  295. package/dist/mutations/derive-repeats.d.ts +8 -0
  296. package/dist/mutations/derive-repeats.d.ts.map +1 -0
  297. package/dist/mutations/derive-repeats.js +118 -0
  298. package/dist/mutations/derive-repeats.js.map +1 -0
  299. package/dist/mutations/derived-names.d.ts +20 -0
  300. package/dist/mutations/derived-names.d.ts.map +1 -0
  301. package/dist/mutations/derived-names.js +19 -0
  302. package/dist/mutations/derived-names.js.map +1 -0
  303. package/dist/mutations/form.d.ts +21 -1
  304. package/dist/mutations/form.d.ts.map +1 -1
  305. package/dist/mutations/form.js +19 -2
  306. package/dist/mutations/form.js.map +1 -1
  307. package/dist/mutations/invalid-arguments.d.ts +14 -0
  308. package/dist/mutations/invalid-arguments.d.ts.map +1 -0
  309. package/dist/mutations/invalid-arguments.js +18 -0
  310. package/dist/mutations/invalid-arguments.js.map +1 -0
  311. package/dist/mutations/keep-link.d.ts +27 -0
  312. package/dist/mutations/keep-link.d.ts.map +1 -0
  313. package/dist/mutations/keep-link.js +56 -0
  314. package/dist/mutations/keep-link.js.map +1 -0
  315. package/dist/mutations/kept-arguments.d.ts +26 -0
  316. package/dist/mutations/kept-arguments.d.ts.map +1 -0
  317. package/dist/mutations/kept-arguments.js +77 -0
  318. package/dist/mutations/kept-arguments.js.map +1 -0
  319. package/dist/mutations/node-ref.d.ts +0 -80
  320. package/dist/mutations/node-ref.d.ts.map +1 -1
  321. package/dist/mutations/node-ref.js +0 -93
  322. package/dist/mutations/node-ref.js.map +1 -1
  323. package/dist/mutations/types.d.ts +17 -1
  324. package/dist/mutations/types.d.ts.map +1 -1
  325. package/dist/mutations/words.d.ts +0 -13
  326. package/dist/mutations/words.d.ts.map +1 -1
  327. package/dist/mutations/words.js +1 -12
  328. package/dist/mutations/words.js.map +1 -1
  329. package/dist/ops/kept-fields.d.ts +7 -0
  330. package/dist/ops/kept-fields.d.ts.map +1 -0
  331. package/dist/ops/kept-fields.js +24 -0
  332. package/dist/ops/kept-fields.js.map +1 -0
  333. package/dist/ops/lineage.d.ts +37 -0
  334. package/dist/ops/lineage.d.ts.map +1 -0
  335. package/dist/ops/lineage.js +26 -0
  336. package/dist/ops/lineage.js.map +1 -0
  337. package/dist/ops/log.d.ts.map +1 -1
  338. package/dist/ops/log.js +1 -0
  339. package/dist/ops/log.js.map +1 -1
  340. package/dist/ops/provenance.d.ts +68 -0
  341. package/dist/ops/provenance.d.ts.map +1 -0
  342. package/dist/ops/provenance.js +83 -0
  343. package/dist/ops/provenance.js.map +1 -0
  344. package/dist/ops/types.d.ts +25 -0
  345. package/dist/ops/types.d.ts.map +1 -1
  346. package/dist/ops/withheld.d.ts +25 -2
  347. package/dist/ops/withheld.d.ts.map +1 -1
  348. package/dist/ops/withheld.js +6 -15
  349. package/dist/ops/withheld.js.map +1 -1
  350. package/dist/permissions/policy.d.ts +6 -1
  351. package/dist/permissions/policy.d.ts.map +1 -1
  352. package/dist/permissions/policy.js +29 -9
  353. package/dist/permissions/policy.js.map +1 -1
  354. package/dist/permissions/sight.d.ts +40 -2
  355. package/dist/permissions/sight.d.ts.map +1 -1
  356. package/dist/permissions/sight.js +25 -2
  357. package/dist/permissions/sight.js.map +1 -1
  358. package/dist/permissions/types.d.ts +21 -0
  359. package/dist/permissions/types.d.ts.map +1 -1
  360. package/dist/permissions/types.js.map +1 -1
  361. package/dist/places.d.ts +0 -49
  362. package/dist/places.d.ts.map +1 -1
  363. package/dist/places.js +2 -141
  364. package/dist/places.js.map +1 -1
  365. package/dist/provenance.d.ts +14 -0
  366. package/dist/provenance.d.ts.map +1 -0
  367. package/dist/provenance.js +13 -0
  368. package/dist/provenance.js.map +1 -0
  369. package/dist/repeat-words.d.ts +13 -0
  370. package/dist/repeat-words.d.ts.map +1 -0
  371. package/dist/repeat-words.js +56 -0
  372. package/dist/repeat-words.js.map +1 -0
  373. package/dist/repeat.d.ts +59 -0
  374. package/dist/repeat.d.ts.map +1 -0
  375. package/dist/repeat.js +155 -0
  376. package/dist/repeat.js.map +1 -0
  377. package/dist/scaffold/project.d.ts.map +1 -1
  378. package/dist/scaffold/project.js +13 -0
  379. package/dist/scaffold/project.js.map +1 -1
  380. package/dist/scaffold/ui.js +2 -2
  381. package/dist/scene-districts.d.ts +2 -1
  382. package/dist/scene-districts.d.ts.map +1 -1
  383. package/dist/scene-districts.js +2 -1
  384. package/dist/scene-districts.js.map +1 -1
  385. package/dist/scene.d.ts +4 -2
  386. package/dist/scene.d.ts.map +1 -1
  387. package/dist/scene.js +2 -1
  388. package/dist/scene.js.map +1 -1
  389. package/dist/schema/amount-mark.d.ts +13 -0
  390. package/dist/schema/amount-mark.d.ts.map +1 -0
  391. package/dist/schema/amount-mark.js +20 -0
  392. package/dist/schema/amount-mark.js.map +1 -0
  393. package/dist/schema/amount-words.d.ts +12 -0
  394. package/dist/schema/amount-words.d.ts.map +1 -0
  395. package/dist/schema/amount-words.js +31 -0
  396. package/dist/schema/amount-words.js.map +1 -0
  397. package/dist/schema/app-link-field.d.ts +4 -0
  398. package/dist/schema/app-link-field.d.ts.map +1 -0
  399. package/dist/schema/app-link-field.js +19 -0
  400. package/dist/schema/app-link-field.js.map +1 -0
  401. package/dist/schema/app-link.d.ts +41 -0
  402. package/dist/schema/app-link.d.ts.map +1 -0
  403. package/dist/schema/app-link.js +40 -0
  404. package/dist/schema/app-link.js.map +1 -0
  405. package/dist/schema/define-node.d.ts +25 -94
  406. package/dist/schema/define-node.d.ts.map +1 -1
  407. package/dist/schema/define-node.js +3 -247
  408. package/dist/schema/define-node.js.map +1 -1
  409. package/dist/schema/field-words.d.ts +45 -0
  410. package/dist/schema/field-words.d.ts.map +1 -0
  411. package/dist/schema/field-words.js +124 -0
  412. package/dist/schema/field-words.js.map +1 -0
  413. package/dist/schema/json-schema.d.ts +6 -1
  414. package/dist/schema/json-schema.d.ts.map +1 -1
  415. package/dist/schema/json-schema.js +83 -2
  416. package/dist/schema/json-schema.js.map +1 -1
  417. package/dist/schema/markdown-field.d.ts +4 -0
  418. package/dist/schema/markdown-field.d.ts.map +1 -0
  419. package/dist/schema/markdown-field.js +20 -0
  420. package/dist/schema/markdown-field.js.map +1 -0
  421. package/dist/schema/markdown.d.ts +6 -0
  422. package/dist/schema/markdown.d.ts.map +1 -0
  423. package/dist/schema/markdown.js +27 -0
  424. package/dist/schema/markdown.js.map +1 -0
  425. package/dist/schema/reading.d.ts +86 -0
  426. package/dist/schema/reading.d.ts.map +1 -0
  427. package/dist/schema/reading.js +270 -0
  428. package/dist/schema/reading.js.map +1 -0
  429. package/dist/schema/repeat-field.d.ts +5 -0
  430. package/dist/schema/repeat-field.d.ts.map +1 -0
  431. package/dist/schema/repeat-field.js +20 -0
  432. package/dist/schema/repeat-field.js.map +1 -0
  433. package/dist/schema/schema.d.ts.map +1 -1
  434. package/dist/schema/schema.js +5 -1
  435. package/dist/schema/schema.js.map +1 -1
  436. package/dist/schema/to-json-schema.d.ts +14 -0
  437. package/dist/schema/to-json-schema.d.ts.map +1 -0
  438. package/dist/schema/to-json-schema.js +616 -0
  439. package/dist/schema/to-json-schema.js.map +1 -0
  440. package/dist/schema/typed-field-builders.d.ts +8 -0
  441. package/dist/schema/typed-field-builders.d.ts.map +1 -0
  442. package/dist/schema/typed-field-builders.js +30 -0
  443. package/dist/schema/typed-field-builders.js.map +1 -0
  444. package/dist/schema/typed-field-of.d.ts +4 -0
  445. package/dist/schema/typed-field-of.d.ts.map +1 -0
  446. package/dist/schema/typed-field-of.js +14 -0
  447. package/dist/schema/typed-field-of.js.map +1 -0
  448. package/dist/schema/typed-fields.d.ts +11 -0
  449. package/dist/schema/typed-fields.d.ts.map +1 -0
  450. package/dist/schema/typed-fields.js +16 -0
  451. package/dist/schema/typed-fields.js.map +1 -0
  452. package/dist/schema/types.d.ts +14 -0
  453. package/dist/schema/types.d.ts.map +1 -1
  454. package/dist/schema/value-words.d.ts +21 -0
  455. package/dist/schema/value-words.d.ts.map +1 -0
  456. package/dist/schema/value-words.js +32 -0
  457. package/dist/schema/value-words.js.map +1 -0
  458. package/dist/search.d.ts +91 -4
  459. package/dist/search.d.ts.map +1 -1
  460. package/dist/search.js +288 -53
  461. package/dist/search.js.map +1 -1
  462. package/dist/seat.d.ts +19 -0
  463. package/dist/seat.d.ts.map +1 -0
  464. package/dist/seat.js +19 -0
  465. package/dist/seat.js.map +1 -0
  466. package/dist/seen.d.ts +15 -33
  467. package/dist/seen.d.ts.map +1 -1
  468. package/dist/seen.js +44 -135
  469. package/dist/seen.js.map +1 -1
  470. package/dist/store.d.ts +46 -1
  471. package/dist/store.d.ts.map +1 -1
  472. package/dist/store.js +121 -22
  473. package/dist/store.js.map +1 -1
  474. package/dist/theme/types.d.ts +7 -1
  475. package/dist/theme/types.d.ts.map +1 -1
  476. package/dist/theme/types.js.map +1 -1
  477. package/dist/typed.d.ts +12 -3
  478. package/dist/typed.d.ts.map +1 -1
  479. package/dist/typed.js.map +1 -1
  480. package/dist/validate-graph.d.ts.map +1 -1
  481. package/dist/validate-graph.js +3 -10
  482. package/dist/validate-graph.js.map +1 -1
  483. package/dist/version.d.ts +1 -1
  484. package/dist/version.js +1 -1
  485. package/dist/views/types.d.ts +57 -8
  486. package/dist/views/types.d.ts.map +1 -1
  487. package/dist/views/types.js +22 -3
  488. package/dist/views/types.js.map +1 -1
  489. package/dist/village.d.ts +63 -0
  490. package/dist/village.d.ts.map +1 -0
  491. package/dist/village.js +143 -0
  492. package/dist/village.js.map +1 -0
  493. package/dist/watched.d.ts +12 -45
  494. package/dist/watched.d.ts.map +1 -1
  495. package/dist/watched.js +7 -119
  496. package/dist/watched.js.map +1 -1
  497. package/dist/words.d.ts +33 -0
  498. package/dist/words.d.ts.map +1 -0
  499. package/dist/words.js +36 -0
  500. package/dist/words.js.map +1 -0
  501. package/package.json +37 -2
@@ -0,0 +1,460 @@
1
+ /**
2
+ * `@graview/core/markdown` — PROSE WRITTEN IN MARKDOWN, READ SAFELY (FR-180).
3
+ *
4
+ * A text field may say it is written in Markdown (`markdownField()`,
5
+ * `{"type": "text", "format": "markdown"}`). This reads one into blocks and
6
+ * runs of words a face draws as elements — the routed face through React
7
+ * (`@graview/primitives`, fetched with the first Markdown a record draws),
8
+ * a static page as HTML (`markdownHtml`). Its own entry: nothing a page
9
+ * draws first reads Markdown.
10
+ *
11
+ * What it reads, and nothing else:
12
+ *
13
+ * # … ###### a heading, demoted under the page's own
14
+ * a blank line a new paragraph; a single line break is kept
15
+ * - * + / 1. 1) a list, nested by indenting; [ ] and [x] said as ☐ ☑
16
+ * > … a quotation
17
+ * ``` or ~~~ a block of code, as written
18
+ * --- *** ___ a rule
19
+ * | a | b | + |---| a table
20
+ * **strong** *em* _em_ ~~struck~~ `code`
21
+ * [words](https://…) a link — http, https and mailto only; any other
22
+ * address (javascript:, data:, a relative path) is
23
+ * its words, not a link
24
+ * <https://…>, https://… an address, as a link
25
+ * ![words](…) NOT a picture: its words, a link where the address
26
+ * is http(s). A record's pictures are an image
27
+ * field's, which the host stored (FR-162)
28
+ * \* &amp; &#169; an escape, an entity: the character
29
+ *
30
+ * NO HTML PASSES THROUGH. A tag is its letters; every word is text a face
31
+ * writes as text (React's text nodes, `escapeHtml` here), so a value can
32
+ * never become markup, a script or a handler, whatever it holds.
33
+ *
34
+ * Linear in what it reads: each line is read once, an inline mark looks for
35
+ * its closing mark once (a mark with none is remembered as having none), and
36
+ * nesting stops at a depth where it is words again.
37
+ */
38
+ /** How deep quotes and lists nest, and emphasis within emphasis, before the rest is words. */
39
+ const DEEPEST = 8;
40
+ const FENCE_MARK = /^ {0,3}(`{3,}|~{3,})[ \t]*([^`\s]*)/;
41
+ const HEADING = /^ {0,3}(#{1,6})(?:[ \t]+|$)/;
42
+ const RULE = /^ {0,3}(?:(?:-[ \t]*){3,}|(?:\*[ \t]*){3,}|(?:_[ \t]*){3,})$/;
43
+ const QUOTE = /^ {0,3}>[ \t]?/;
44
+ const ITEM = /^([ \t]*)([-*+]|(\d{1,9})[.)])(?:[ \t]+|$)/;
45
+ // Read on a trimmed line, so no two runs of spaces meet.
46
+ const TABLE_RULE = /^\|?\s*:?-+:?\s*(?:\|\s*:?-+:?\s*)+\|?$|^\|\s*:?-+:?\s*\|$/;
47
+ const BLANK = /^[ \t]*$/;
48
+ /** A fence that opens code: three ticks or tildes, and a backtick fence's words hold no tick. */
49
+ function fenceOf(line) {
50
+ const fence = FENCE_MARK.exec(line);
51
+ if (!fence || (fence[1][0] === "`" && line.indexOf("`", fence[0].length) >= 0))
52
+ return undefined;
53
+ return { mark: fence[1], lang: fence[2] };
54
+ }
55
+ /** A heading's words: after its marks, less a closing run of "#" that follows a space. */
56
+ function headingWords(line, marks) {
57
+ let words = line.trim().slice(marks).trim();
58
+ let end = words.length;
59
+ while (end > 0 && words[end - 1] === "#")
60
+ end--;
61
+ if (end === 0 || words[end - 1] === " " || words[end - 1] === "\t")
62
+ words = words.slice(0, end).trim();
63
+ return words;
64
+ }
65
+ /** Whether a line starts a block of its own, ending the paragraph before it. */
66
+ const startsBlock = (line) => fenceOf(line) !== undefined || HEADING.test(line) || RULE.test(line) || QUOTE.test(line) || ITEM.test(line);
67
+ /** A tab is four columns, as Markdown reads indentation. */
68
+ const columns = (space) => [...space].reduce((at, ch) => (ch === "\t" ? at + 4 - (at % 4) : at + 1), 0);
69
+ /** The cells of a table's row: split on bars that are not escaped and not in code. */
70
+ function cellsOf(line) {
71
+ const body = line.trim().replace(/^\|/, "").replace(/(?<!\\)\|$/, "");
72
+ const cells = [];
73
+ let cell = "";
74
+ let ticks = false;
75
+ for (let at = 0; at < body.length; at++) {
76
+ const ch = body[at];
77
+ if (ch === "\\" && body[at + 1] === "|") {
78
+ cell += "|";
79
+ at++;
80
+ }
81
+ else if (ch === "`") {
82
+ ticks = !ticks;
83
+ cell += ch;
84
+ }
85
+ else if (ch === "|" && !ticks) {
86
+ cells.push(cell.trim());
87
+ cell = "";
88
+ }
89
+ else
90
+ cell += ch;
91
+ }
92
+ cells.push(cell.trim());
93
+ return cells;
94
+ }
95
+ /** The blocks a Markdown text is written in. */
96
+ export function markdownBlocks(text) {
97
+ return blocksOf(text.replace(/\r\n?/g, "\n").replace(/\0/g, "�").split("\n"), 0);
98
+ }
99
+ function blocksOf(lines, depth) {
100
+ const blocks = [];
101
+ let at = 0;
102
+ while (at < lines.length) {
103
+ const line = lines[at];
104
+ if (BLANK.test(line)) {
105
+ at++;
106
+ continue;
107
+ }
108
+ const fence = fenceOf(line);
109
+ if (fence) {
110
+ const close = new RegExp(`^ {0,3}${fence.mark[0] === "`" ? "`" : "~"}{${fence.mark.length},}[ \\t]*$`);
111
+ const code = [];
112
+ at++;
113
+ while (at < lines.length && !close.test(lines[at]))
114
+ code.push(lines[at++]);
115
+ at++;
116
+ blocks.push({ t: "code", text: code.join("\n"), ...(fence.lang ? { lang: fence.lang } : {}) });
117
+ continue;
118
+ }
119
+ const heading = HEADING.exec(line);
120
+ if (heading) {
121
+ blocks.push({ t: "heading", level: heading[1].length, children: inlineOf(headingWords(line, heading[1].length), 0) });
122
+ at++;
123
+ continue;
124
+ }
125
+ if (RULE.test(line)) {
126
+ blocks.push({ t: "rule" });
127
+ at++;
128
+ continue;
129
+ }
130
+ if (QUOTE.test(line)) {
131
+ const quoted = [];
132
+ // A quote runs while its lines say ">" — and over a paragraph's lines that go on without it.
133
+ while (at < lines.length && (QUOTE.test(lines[at]) || (quoted.length > 0 && !BLANK.test(lines[at]) && !startsBlock(lines[at]) && !BLANK.test(quoted[quoted.length - 1]))))
134
+ quoted.push(lines[at++].replace(QUOTE, ""));
135
+ blocks.push(depth < DEEPEST ? { t: "quote", blocks: blocksOf(quoted, depth + 1) } : { t: "p", children: inlineOf(quoted.join("\n"), 0) });
136
+ continue;
137
+ }
138
+ const item = ITEM.exec(line);
139
+ if (item) {
140
+ const ordered = item[3] !== undefined;
141
+ const indent = columns(item[1]);
142
+ const items = [];
143
+ // Each item: its first line after the mark, and every line after it that is indented under it or goes on its paragraph.
144
+ while (at < lines.length) {
145
+ const mark = ITEM.exec(lines[at]);
146
+ if (!mark || columns(mark[1]) > indent + 1 || columns(mark[1]) < indent || (mark[3] !== undefined) !== ordered)
147
+ break;
148
+ const inner = columns(mark[0]);
149
+ const body = [lines[at].slice(mark[0].length)];
150
+ at++;
151
+ while (at < lines.length) {
152
+ const next = lines[at];
153
+ if (BLANK.test(next)) {
154
+ // Blank lines go on the item only when what follows them is indented under it.
155
+ let after = at;
156
+ while (after < lines.length && BLANK.test(lines[after]))
157
+ after++;
158
+ if (after < lines.length && columns(/^[ \t]*/.exec(lines[after])[0]) >= Math.min(inner, indent + 2)) {
159
+ for (; at < after; at++)
160
+ body.push("");
161
+ continue;
162
+ }
163
+ break;
164
+ }
165
+ const lead = columns(/^[ \t]*/.exec(next)[0]);
166
+ // Indented under the item: its own indentation past the item's is kept, so a list in it nests.
167
+ if (lead >= Math.min(inner, indent + 2))
168
+ body.push(" ".repeat(Math.max(0, lead - inner)) + next.replace(/^[ \t]*/, ""));
169
+ else if (!startsBlock(next) && !BLANK.test(body[body.length - 1]))
170
+ body.push(next.trim());
171
+ else
172
+ break;
173
+ at++;
174
+ }
175
+ const task = /^\[([ xX])\][ \t]+/.exec(body[0]);
176
+ if (task)
177
+ body[0] = `${task[1] === " " ? "☐" : "☑"} ${body[0].slice(task[0].length)}`;
178
+ items.push(depth < DEEPEST ? blocksOf(body, depth + 1) : [{ t: "p", children: inlineOf(body.join("\n"), 0) }]);
179
+ }
180
+ blocks.push({ t: "list", ordered, start: ordered ? Math.min(Number(item[3]), 999_999_999) : 1, items });
181
+ continue;
182
+ }
183
+ const rule = lines[at + 1];
184
+ if (line.includes("|") && rule !== undefined && TABLE_RULE.test(rule.trim())) {
185
+ const head = cellsOf(line);
186
+ const align = cellsOf(rule).map((cell) => (/^:-+:$/.test(cell) ? "center" : /-:$/.test(cell) ? "right" : /^:-/.test(cell) ? "left" : undefined));
187
+ const rows = [];
188
+ at += 2;
189
+ while (at < lines.length && !BLANK.test(lines[at]) && lines[at].includes("|") && !startsBlock(lines[at])) {
190
+ const cells = cellsOf(lines[at++]);
191
+ rows.push(head.map((_, index) => inlineOf(cells[index] ?? "", 0)));
192
+ }
193
+ blocks.push({ t: "table", align: head.map((_, index) => align[index]), head: head.map((cell) => inlineOf(cell, 0)), rows });
194
+ continue;
195
+ }
196
+ const paragraph = [];
197
+ while (at < lines.length && !BLANK.test(lines[at]) && (paragraph.length === 0 || !startsBlock(lines[at])))
198
+ paragraph.push(lines[at++].trim());
199
+ blocks.push({ t: "p", children: inlineOf(paragraph.join("\n"), 0) });
200
+ }
201
+ return blocks;
202
+ }
203
+ /** The addresses a link may go to: the web and mail. Anything else is its words. */
204
+ export function safeHref(address) {
205
+ const href = address.trim().replace(/^<|>$/g, "");
206
+ // No control or space characters: a scheme hidden behind a tab or a newline is still a scheme.
207
+ if (/[\u0000- \u007f-\u009f]/.test(href))
208
+ return undefined;
209
+ return /^(?:https?:\/\/[^/?#]|mailto:[^@\s]+@)/i.test(href) ? href : undefined;
210
+ }
211
+ const ENTITIES = { amp: "&", lt: "<", gt: ">", quot: '"', apos: "'", nbsp: " ", copy: "©", reg: "®", trade: "™", mdash: "—", ndash: "–", hellip: "…", rarr: "→", larr: "←", times: "×", middot: "·", lsquo: "‘", rsquo: "’", ldquo: "“", rdquo: "”", bull: "•", deg: "°" };
212
+ /** An entity as its character; one it does not know, as written. Never a control character. */
213
+ function entity(name) {
214
+ if (name[0] === "#") {
215
+ const code = name[1] === "x" || name[1] === "X" ? parseInt(name.slice(2), 16) : parseInt(name.slice(1), 10);
216
+ return Number.isFinite(code) && code > 31 && code <= 0x10ffff && !(code >= 0xd800 && code <= 0xdfff) && !(code >= 0x7f && code <= 0x9f) ? String.fromCodePoint(code) : undefined;
217
+ }
218
+ return ENTITIES[name];
219
+ }
220
+ const ESCAPABLE = /[\\`*_{}[\]()#+\-.!>|~<&"']/;
221
+ // Sticky: read where the reader stands, never past an address's own length.
222
+ const BARE_ADDRESS = /(?:https?:\/\/|mailto:)[^\s<>"'`]{1,2000}/iy;
223
+ const AUTOLINK = /<((?:https?:\/\/|mailto:)[^\s<>]{1,2000})>/iy;
224
+ /** A paragraph's words: emphasis, code, links, breaks and escapes, every other character text. */
225
+ export function inlineOf(source, depth) {
226
+ const out = [];
227
+ let text = "";
228
+ const flush = () => {
229
+ if (text)
230
+ out.push({ t: "text", text });
231
+ text = "";
232
+ };
233
+ // A closing mark that is not there is remembered as not there from where it was looked for.
234
+ const none = new Map();
235
+ const closing = (mark, from) => {
236
+ if ((none.get(mark) ?? Infinity) <= from)
237
+ return -1;
238
+ const code = mark[0] === "`";
239
+ let at = from;
240
+ for (;;) {
241
+ at = source.indexOf(mark, at);
242
+ if (at < 0) {
243
+ none.set(mark, Math.min(none.get(mark) ?? Infinity, from));
244
+ return -1;
245
+ }
246
+ const before = source[at - 1];
247
+ const after = source[at + mark.length];
248
+ // Code closes on the same run of ticks, no longer.
249
+ if (code ? before !== "`" && after !== "`" : true) {
250
+ if (code)
251
+ return at;
252
+ // A closing mark follows a word, not a space; a single * or _ is not half of a double one; an underscore inside a word is the word's.
253
+ if (before !== undefined && !/\s/.test(before) && (mark.length > 1 || (after !== mark && before !== mark)) && !(mark === "_" && after !== undefined && /\w/.test(after)))
254
+ return at;
255
+ }
256
+ at += code ? 1 : mark.length;
257
+ }
258
+ };
259
+ let at = 0;
260
+ while (at < source.length) {
261
+ const ch = source[at];
262
+ if (ch === "\\" && at + 1 < source.length && ESCAPABLE.test(source[at + 1])) {
263
+ text += source[at + 1];
264
+ at += 2;
265
+ continue;
266
+ }
267
+ if (ch === "\\" && source[at + 1] === "\n") {
268
+ flush();
269
+ out.push({ t: "br" });
270
+ at += 2;
271
+ continue;
272
+ }
273
+ if (ch === "\n") {
274
+ // A line break is kept: what somebody wrote on its own line reads on its own line.
275
+ flush();
276
+ out.push({ t: "br" });
277
+ at++;
278
+ continue;
279
+ }
280
+ if (ch === "&") {
281
+ const named = /^&(#[0-9]{1,7}|#[xX][0-9a-fA-F]{1,6}|[A-Za-z]{2,8});/.exec(source.slice(at, at + 12));
282
+ const said = named ? entity(named[1]) : undefined;
283
+ if (named && said !== undefined) {
284
+ text += said;
285
+ at += named[0].length;
286
+ continue;
287
+ }
288
+ }
289
+ if (ch === "`") {
290
+ const run = /^`+/.exec(source.slice(at, at + 32))[0];
291
+ const end = closing(run, at + run.length);
292
+ if (end >= 0 && source[end + run.length] !== "`") {
293
+ flush();
294
+ const code = source.slice(at + run.length, end).replace(/\n/g, " ");
295
+ out.push({ t: "code", text: /^ .* $/.test(code) && code.trim() ? code.slice(1, -1) : code });
296
+ at = end + run.length;
297
+ continue;
298
+ }
299
+ text += run;
300
+ at += run.length;
301
+ continue;
302
+ }
303
+ if (ch === "<") {
304
+ AUTOLINK.lastIndex = at;
305
+ const auto = AUTOLINK.exec(source);
306
+ const href = auto ? safeHref(auto[1]) : undefined;
307
+ if (auto && href) {
308
+ flush();
309
+ out.push({ t: "link", href, children: [{ t: "text", text: auto[1] }] });
310
+ at += auto[0].length;
311
+ continue;
312
+ }
313
+ }
314
+ if ((ch === "h" || ch === "H" || ch === "m" || ch === "M") && (at === 0 || /[\s(*_~]/.test(source[at - 1]))) {
315
+ BARE_ADDRESS.lastIndex = at;
316
+ const bare = BARE_ADDRESS.exec(source);
317
+ if (bare) {
318
+ // A sentence's stop or a closing bracket after an address is the sentence's.
319
+ let address = bare[0].replace(/[.,:;!?*_~]+$/, "");
320
+ while (address.endsWith(")") && address.split("(").length < address.split(")").length)
321
+ address = address.slice(0, -1).replace(/[.,:;!?]+$/, "");
322
+ const href = safeHref(address);
323
+ if (href && address.length > 8) {
324
+ flush();
325
+ out.push({ t: "link", href, children: [{ t: "text", text: address }] });
326
+ at += address.length;
327
+ continue;
328
+ }
329
+ }
330
+ }
331
+ if (ch === "[" || (ch === "!" && source[at + 1] === "[")) {
332
+ const open = ch === "!" ? at + 1 : at;
333
+ const link = linkAt(source, open);
334
+ if (link) {
335
+ flush();
336
+ const href = safeHref(link.address);
337
+ const words = depth < DEEPEST ? inlineOf(link.words, depth + 1) : [{ t: "text", text: link.words }];
338
+ // A picture is its words (FR-180 chose no pictures from an address: a record's pictures are its image fields').
339
+ if (href)
340
+ out.push({ t: "link", href, children: words.length > 0 ? words : [{ t: "text", text: link.address }] });
341
+ else
342
+ out.push(...words);
343
+ at = link.end;
344
+ continue;
345
+ }
346
+ }
347
+ if (ch === "*" || ch === "_" || ch === "~") {
348
+ const double = source[at + 1] === ch;
349
+ if (ch === "~" && !double) {
350
+ text += ch;
351
+ at++;
352
+ continue;
353
+ }
354
+ const mark = double ? ch + ch : ch;
355
+ const after = source[at + mark.length];
356
+ const before = source[at - 1];
357
+ // An opening mark comes before a word; an underscore inside a word (snake_case) is the word's.
358
+ const opens = after !== undefined && !/\s/.test(after) && !(ch === "_" && before !== undefined && /\w/.test(before));
359
+ const end = opens && depth < DEEPEST ? closing(mark, at + mark.length + 1) : -1;
360
+ if (end >= 0) {
361
+ flush();
362
+ const children = inlineOf(source.slice(at + mark.length, end), depth + 1);
363
+ out.push({ t: ch === "~" ? "del" : double ? "strong" : "em", children });
364
+ at = end + mark.length;
365
+ continue;
366
+ }
367
+ text += mark;
368
+ at += mark.length;
369
+ continue;
370
+ }
371
+ text += ch;
372
+ at++;
373
+ }
374
+ flush();
375
+ return out;
376
+ }
377
+ /** A link's words and address at `[`: `[words](address "title")`, its brackets balanced; undefined when it is not one. */
378
+ function linkAt(source, open) {
379
+ let depth = 0;
380
+ let at = open;
381
+ // Brackets are looked for within a bounded reach: a lone "[" never sends the reader to the text's end.
382
+ const reach = Math.min(source.length, open + 1000);
383
+ for (; at < reach; at++) {
384
+ const ch = source[at];
385
+ if (ch === "\\")
386
+ at++;
387
+ else if (ch === "[")
388
+ depth++;
389
+ else if (ch === "]" && --depth === 0)
390
+ break;
391
+ }
392
+ if (depth !== 0 || source[at + 1] !== "(")
393
+ return undefined;
394
+ const rest = /^\(\s*(<[^<>\n]*>|[^\s()]*(?:\([^\s()]*\)[^\s()]*)*)(?:\s+(?:"[^"\n]*"|'[^'\n]*'))?\s*\)/.exec(source.slice(at + 1, at + 2049));
395
+ if (!rest)
396
+ return undefined;
397
+ return { words: source.slice(open + 1, at), address: rest[1].replace(/^<|>$/g, ""), end: at + 1 + rest[0].length };
398
+ }
399
+ /** A text as HTML writes it: every character that could start markup, escaped. */
400
+ export function escapeHtml(text) {
401
+ return text.replace(/[&<>"']/g, (ch) => ({ "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" })[ch]);
402
+ }
403
+ /** The heading level a Markdown heading of `level` is drawn at, under the page's own. */
404
+ export const headingLevel = (level, from = 3) => Math.min(6, level + from - 1);
405
+ function inlineHtml(parts, drawing) {
406
+ return parts
407
+ .map((part) => {
408
+ switch (part.t) {
409
+ case "text":
410
+ return escapeHtml(part.text);
411
+ case "br":
412
+ return "<br>";
413
+ case "code":
414
+ return `<code>${escapeHtml(part.text)}</code>`;
415
+ case "strong":
416
+ case "em":
417
+ case "del":
418
+ return `<${part.t}>${inlineHtml(part.children, drawing)}</${part.t}>`;
419
+ case "link": {
420
+ const blank = (drawing.target ?? "_blank") === "_blank" && !/^mailto:/i.test(part.href);
421
+ return `<a href="${escapeHtml(part.href)}" rel="noopener noreferrer nofollow"${blank ? ' target="_blank"' : ""}>${inlineHtml(part.children, drawing)}</a>`;
422
+ }
423
+ }
424
+ })
425
+ .join("");
426
+ }
427
+ function blocksHtml(blocks, drawing) {
428
+ return blocks
429
+ .map((block) => {
430
+ switch (block.t) {
431
+ case "heading": {
432
+ const level = headingLevel(block.level, drawing.headingsFrom);
433
+ return `<h${level}>${inlineHtml(block.children, drawing)}</h${level}>`;
434
+ }
435
+ case "p":
436
+ return `<p>${inlineHtml(block.children, drawing)}</p>`;
437
+ case "list": {
438
+ const tag = block.ordered ? "ol" : "ul";
439
+ const items = block.items.map((item) => `<li>${item.length === 1 && item[0].t === "p" ? inlineHtml(item[0].children, drawing) : blocksHtml(item, drawing)}</li>`).join("");
440
+ return `<${tag}${block.ordered && block.start !== 1 ? ` start="${block.start}"` : ""}>${items}</${tag}>`;
441
+ }
442
+ case "quote":
443
+ return `<blockquote>${blocksHtml(block.blocks, drawing)}</blockquote>`;
444
+ case "code":
445
+ return `<pre><code>${escapeHtml(block.text)}</code></pre>`;
446
+ case "rule":
447
+ return "<hr>";
448
+ case "table": {
449
+ const cell = (tag, parts, index) => `<${tag}${block.align[index] ? ` style="text-align:${block.align[index]}"` : ""}>${inlineHtml(parts, drawing)}</${tag}>`;
450
+ return `<div data-graview-md-table=""><table><thead><tr>${block.head.map((parts, index) => cell("th", parts, index)).join("")}</tr></thead><tbody>${block.rows.map((row) => `<tr>${row.map((parts, index) => cell("td", parts, index)).join("")}</tr>`).join("")}</tbody></table></div>`;
451
+ }
452
+ }
453
+ })
454
+ .join("");
455
+ }
456
+ /** A Markdown text as HTML: escaped words in the elements it reads, and nothing else (a static page's). */
457
+ export function markdownHtml(text, drawing = {}) {
458
+ return blocksHtml(markdownBlocks(text), drawing);
459
+ }
460
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import { type AmountMark } from "../schema/amount-mark.js";
2
+ /**
3
+ * What sort of answer an argument wants, read off its own declaration.
4
+ *
5
+ * The affordance layer could already say "this needs a `label`" and offer
6
+ * candidate ids for a node reference — but for a plain string or a date it
7
+ * offered a list of nothing, so half the actions in an interface were dead
8
+ * ends that looked live. The mutation's schema knows perfectly well that
9
+ * `label` is a non-empty string and `date` is `YYYY-MM-DD`; nothing had
10
+ * asked it.
11
+ */
12
+ export type ArgShape =
13
+ /**
14
+ * Words; `long` where the field allows more than 500 characters — prose,
15
+ * asked for in a text area (FR-147). `holds` where they are a phone number
16
+ * or a place: asked for as one, and drawn as a link.
17
+ */
18
+ {
19
+ readonly type: "text";
20
+ readonly long?: true;
21
+ readonly holds?: "phone" | "place";
22
+ }
23
+ /**
24
+ * A DATE, AND WITH `time` A TIME OF DAY IN IT. A workshop's start is
25
+ * `YYYY-MM-DDTHH:MM`; read as a plain date it got a date picker, whose
26
+ * `YYYY-MM-DD` the act's own pattern refused — on every face, so the
27
+ * workshop could not be made and the talk could not be given its slot.
28
+ */
29
+ | {
30
+ readonly type: "date";
31
+ readonly time?: true;
32
+ }
33
+ /**
34
+ * A number, and its range where it says one: `step` is what its values are
35
+ * whole multiples of (FR-114), 1 for a whole number. `duration` where it is
36
+ * a length of time in minutes, typed as "1h 30m", "90" or "1:30". `amount`
37
+ * where the field is said as more than a number: money in a currency, a
38
+ * fraction as a percent — asked for as "$1,250.50".
39
+ */
40
+ | {
41
+ readonly type: "number";
42
+ readonly min?: number;
43
+ readonly max?: number;
44
+ readonly step?: number;
45
+ readonly duration?: true;
46
+ readonly amount?: AmountMark;
47
+ } | {
48
+ readonly type: "choice";
49
+ readonly options: readonly string[];
50
+ }
51
+ /**
52
+ * YES OR NO — an argument that takes a boolean.
53
+ *
54
+ * Undescribable until now, for the same reason a list was: an interface
55
+ * can only offer what it can ask for, so "Add a field" — whose `required`
56
+ * is a plain boolean — was derived NOWHERE. The studio's central act, in
57
+ * the studio, unreachable, because nothing could ask one question.
58
+ */
59
+ | {
60
+ readonly type: "boolean";
61
+ }
62
+ /**
63
+ * SEVERAL OF A THING — an argument that takes a list.
64
+ *
65
+ * "Invite somebody as coordinator and gardener" is one act with two roles
66
+ * in one argument, and without this shape it described itself as `unknown`:
67
+ * an interface can only offer what it can ask for, so the act was offered
68
+ * NOWHERE. Not hidden behind a refusal — simply never derived, in every
69
+ * installation the framework ships.
70
+ */
71
+ | {
72
+ readonly type: "several";
73
+ readonly of: ArgShape;
74
+ }
75
+ /** A picture or a document the host stores (FR-162), put on the record by its upload (FR-163); `image` where only a picture will do. */
76
+ | {
77
+ readonly type: "file";
78
+ readonly image?: true;
79
+ } | {
80
+ readonly type: "unknown";
81
+ };
82
+ /** Unwraps optional/default/nullable so a wrapped field still describes itself. */
83
+ export declare function unwrap(schema: unknown): unknown;
84
+ /**
85
+ * Zod 4 keeps the primitive type on `_def.type` and the refinements a UI
86
+ * actually needs — bounds, patterns — as the checks on its definition. Read
87
+ * from the checks themselves, not from `_zod.bag`, which zod 4.6 stopped
88
+ * filling as it builds a schema: the bounds and the date pattern read there
89
+ * vanished with a minor version. Reading them here, in one place, keeps
90
+ * every other layer free of zod internals.
91
+ */
92
+ export declare function describeArg(schema: unknown): ArgShape;
93
+ /** The declared shape of one named argument of a mutation input object. */
94
+ export declare function argShape(input: unknown, name: string): ArgShape;
95
+ //# sourceMappingURL=arg-shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arg-shape.d.ts","sourceRoot":"","sources":["../../src/mutations/arg-shape.ts"],"names":[],"mappings":"AAGA,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAUrE;;;;;;;;;GASG;AACH,MAAM,MAAM,QAAQ;AAClB;;;;GAIG;AACD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CAAE;AACrF;;;;;GAKG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE;AACjD;;;;;;GAMG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAA;CAAE,GACzJ;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE;AAClE;;;;;;;GAOG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE;AAC9B;;;;;;;;GAQG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;CAAE;AACrD,wIAAwI;GACtI;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAEjC,mFAAmF;AACnF,wBAAgB,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAG/C;AAeD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,CAiErD;AAED,2EAA2E;AAC3E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAI/D"}