@fieldia/core 0.26.1 → 0.27.0

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 (415) hide show
  1. package/README.md +307 -3
  2. package/package.json +1 -1
  3. package/schema/page.schema.json +227 -23
  4. package/src/index.d.mts +8 -2
  5. package/src/index.d.ts +8 -2
  6. package/src/index.js +22 -1
  7. package/src/index.js.map +1 -1
  8. package/src/index.mjs +9 -2
  9. package/src/index.mjs.map +1 -1
  10. package/src/lib/expression/app-functions.d.mts +47 -0
  11. package/src/lib/expression/app-functions.d.ts +47 -0
  12. package/src/lib/expression/app-functions.js +64 -0
  13. package/src/lib/expression/app-functions.js.map +1 -0
  14. package/src/lib/expression/app-functions.mjs +58 -0
  15. package/src/lib/expression/app-functions.mjs.map +1 -0
  16. package/src/lib/expression/dates.d.mts +21 -0
  17. package/src/lib/expression/dates.d.ts +21 -0
  18. package/src/lib/expression/dates.js +73 -0
  19. package/src/lib/expression/dates.js.map +1 -0
  20. package/src/lib/expression/dates.mjs +67 -0
  21. package/src/lib/expression/dates.mjs.map +1 -0
  22. package/src/lib/expression/evaluator.js +12 -6
  23. package/src/lib/expression/evaluator.js.map +1 -1
  24. package/src/lib/expression/evaluator.mjs +12 -6
  25. package/src/lib/expression/evaluator.mjs.map +1 -1
  26. package/src/lib/expression/expression.d.mts +7 -3
  27. package/src/lib/expression/expression.d.ts +7 -3
  28. package/src/lib/expression/expression.js +8 -2
  29. package/src/lib/expression/expression.js.map +1 -1
  30. package/src/lib/expression/expression.mjs +7 -2
  31. package/src/lib/expression/expression.mjs.map +1 -1
  32. package/src/lib/expression/functions-part.d.mts +7 -0
  33. package/src/lib/expression/functions-part.d.ts +7 -0
  34. package/src/lib/expression/functions-part.js +13 -0
  35. package/src/lib/expression/functions-part.js.map +1 -0
  36. package/src/lib/expression/functions-part.mjs +8 -0
  37. package/src/lib/expression/functions-part.mjs.map +1 -0
  38. package/src/lib/expression/functions.d.mts +60 -3
  39. package/src/lib/expression/functions.d.ts +60 -3
  40. package/src/lib/expression/functions.js +109 -15
  41. package/src/lib/expression/functions.js.map +1 -1
  42. package/src/lib/expression/functions.mjs +103 -16
  43. package/src/lib/expression/functions.mjs.map +1 -1
  44. package/src/lib/expression/kinds.d.mts +31 -0
  45. package/src/lib/expression/kinds.d.ts +31 -0
  46. package/src/lib/expression/kinds.js +159 -0
  47. package/src/lib/expression/kinds.js.map +1 -0
  48. package/src/lib/expression/kinds.mjs +151 -0
  49. package/src/lib/expression/kinds.mjs.map +1 -0
  50. package/src/lib/expression/modifier.d.mts +4 -3
  51. package/src/lib/expression/modifier.d.ts +4 -3
  52. package/src/lib/expression/modifier.js +4 -3
  53. package/src/lib/expression/modifier.js.map +1 -1
  54. package/src/lib/expression/modifier.mjs +4 -3
  55. package/src/lib/expression/modifier.mjs.map +1 -1
  56. package/src/lib/expression/more-functions.d.mts +8 -0
  57. package/src/lib/expression/more-functions.d.ts +8 -0
  58. package/src/lib/expression/more-functions.js +235 -0
  59. package/src/lib/expression/more-functions.js.map +1 -0
  60. package/src/lib/expression/more-functions.mjs +230 -0
  61. package/src/lib/expression/more-functions.mjs.map +1 -0
  62. package/src/lib/expression/parser.d.mts +4 -1
  63. package/src/lib/expression/parser.d.ts +4 -1
  64. package/src/lib/expression/parser.js +6 -3
  65. package/src/lib/expression/parser.js.map +1 -1
  66. package/src/lib/expression/parser.mjs +6 -3
  67. package/src/lib/expression/parser.mjs.map +1 -1
  68. package/src/lib/expression/reads.d.mts +2 -2
  69. package/src/lib/expression/reads.d.ts +2 -2
  70. package/src/lib/expression/reads.js +6 -4
  71. package/src/lib/expression/reads.js.map +1 -1
  72. package/src/lib/expression/reads.mjs +6 -4
  73. package/src/lib/expression/reads.mjs.map +1 -1
  74. package/src/lib/format/actions.d.mts +16 -16
  75. package/src/lib/format/actions.d.ts +16 -16
  76. package/src/lib/format/check-page.d.mts +7 -2
  77. package/src/lib/format/check-page.d.ts +7 -2
  78. package/src/lib/format/check-page.js +10 -4
  79. package/src/lib/format/check-page.js.map +1 -1
  80. package/src/lib/format/check-page.mjs +10 -4
  81. package/src/lib/format/check-page.mjs.map +1 -1
  82. package/src/lib/format/choice-options.d.mts +34 -0
  83. package/src/lib/format/choice-options.d.ts +34 -0
  84. package/src/lib/format/choice-options.js +60 -0
  85. package/src/lib/format/choice-options.js.map +1 -0
  86. package/src/lib/format/choice-options.mjs +51 -0
  87. package/src/lib/format/choice-options.mjs.map +1 -0
  88. package/src/lib/format/endings-checks.d.mts +8 -0
  89. package/src/lib/format/endings-checks.d.ts +8 -0
  90. package/src/lib/format/endings-checks.js +23 -0
  91. package/src/lib/format/endings-checks.js.map +1 -0
  92. package/src/lib/format/endings-checks.mjs +20 -0
  93. package/src/lib/format/endings-checks.mjs.map +1 -0
  94. package/src/lib/format/endings.d.mts +40 -0
  95. package/src/lib/format/endings.d.ts +40 -0
  96. package/src/lib/format/endings.js +15 -0
  97. package/src/lib/format/endings.js.map +1 -0
  98. package/src/lib/format/endings.mjs +12 -0
  99. package/src/lib/format/endings.mjs.map +1 -0
  100. package/src/lib/format/field.d.mts +151 -16
  101. package/src/lib/format/field.d.ts +151 -16
  102. package/src/lib/format/field.js +64 -11
  103. package/src/lib/format/field.js.map +1 -1
  104. package/src/lib/format/field.mjs +63 -10
  105. package/src/lib/format/field.mjs.map +1 -1
  106. package/src/lib/format/head-checks.d.mts +2 -0
  107. package/src/lib/format/head-checks.d.ts +2 -0
  108. package/src/lib/format/head-checks.js +2 -59
  109. package/src/lib/format/head-checks.js.map +1 -1
  110. package/src/lib/format/head-checks.mjs +1 -58
  111. package/src/lib/format/head-checks.mjs.map +1 -1
  112. package/src/lib/format/later-checks.d.mts +17 -0
  113. package/src/lib/format/later-checks.d.ts +17 -0
  114. package/src/lib/format/later-checks.js +20 -0
  115. package/src/lib/format/later-checks.js.map +1 -0
  116. package/src/lib/format/later-checks.mjs +17 -0
  117. package/src/lib/format/later-checks.mjs.map +1 -0
  118. package/src/lib/format/layout.d.mts +241 -188
  119. package/src/lib/format/layout.d.ts +241 -188
  120. package/src/lib/format/layout.js +33 -28
  121. package/src/lib/format/layout.js.map +1 -1
  122. package/src/lib/format/layout.mjs +13 -3
  123. package/src/lib/format/layout.mjs.map +1 -1
  124. package/src/lib/format/layout.types.d.mts +2 -1
  125. package/src/lib/format/layout.types.d.ts +2 -1
  126. package/src/lib/format/limits-checks.d.mts +14 -0
  127. package/src/lib/format/limits-checks.d.ts +14 -0
  128. package/src/lib/format/limits-checks.js +36 -0
  129. package/src/lib/format/limits-checks.js.map +1 -0
  130. package/src/lib/format/limits-checks.mjs +33 -0
  131. package/src/lib/format/limits-checks.mjs.map +1 -0
  132. package/src/lib/format/limits.d.mts +24 -0
  133. package/src/lib/format/limits.d.ts +24 -0
  134. package/src/lib/format/limits.js +35 -0
  135. package/src/lib/format/limits.js.map +1 -0
  136. package/src/lib/format/limits.mjs +32 -0
  137. package/src/lib/format/limits.mjs.map +1 -0
  138. package/src/lib/format/list-checks.d.mts +44 -0
  139. package/src/lib/format/list-checks.d.ts +44 -0
  140. package/src/lib/format/list-checks.js +340 -0
  141. package/src/lib/format/list-checks.js.map +1 -0
  142. package/src/lib/format/list-checks.mjs +336 -0
  143. package/src/lib/format/list-checks.mjs.map +1 -0
  144. package/src/lib/format/map-checks.d.mts +33 -0
  145. package/src/lib/format/map-checks.d.ts +33 -0
  146. package/src/lib/format/map-checks.js +180 -0
  147. package/src/lib/format/map-checks.js.map +1 -0
  148. package/src/lib/format/map-checks.mjs +175 -0
  149. package/src/lib/format/map-checks.mjs.map +1 -0
  150. package/src/lib/format/mapchecks-part.d.mts +5 -0
  151. package/src/lib/format/mapchecks-part.d.ts +5 -0
  152. package/src/lib/format/mapchecks-part.js +11 -0
  153. package/src/lib/format/mapchecks-part.js.map +1 -0
  154. package/src/lib/format/mapchecks-part.mjs +6 -0
  155. package/src/lib/format/mapchecks-part.mjs.map +1 -0
  156. package/src/lib/format/option-checks.d.mts +16 -0
  157. package/src/lib/format/option-checks.d.ts +16 -0
  158. package/src/lib/format/option-checks.js +39 -0
  159. package/src/lib/format/option-checks.js.map +1 -0
  160. package/src/lib/format/option-checks.mjs +36 -0
  161. package/src/lib/format/option-checks.mjs.map +1 -0
  162. package/src/lib/format/options-part.d.mts +6 -0
  163. package/src/lib/format/options-part.d.ts +6 -0
  164. package/src/lib/format/options-part.js +11 -0
  165. package/src/lib/format/options-part.js.map +1 -0
  166. package/src/lib/format/options-part.mjs +7 -0
  167. package/src/lib/format/options-part.mjs.map +1 -0
  168. package/src/lib/format/page.d.mts +147 -71
  169. package/src/lib/format/page.d.ts +147 -71
  170. package/src/lib/format/page.js +5 -0
  171. package/src/lib/format/page.js.map +1 -1
  172. package/src/lib/format/page.mjs +5 -0
  173. package/src/lib/format/page.mjs.map +1 -1
  174. package/src/lib/format/part-checks.d.mts +20 -0
  175. package/src/lib/format/part-checks.d.ts +20 -0
  176. package/src/lib/format/part-checks.js +3 -0
  177. package/src/lib/format/part-checks.js.map +1 -0
  178. package/src/lib/format/part-checks.mjs +2 -0
  179. package/src/lib/format/part-checks.mjs.map +1 -0
  180. package/src/lib/format/references.d.mts +71 -65
  181. package/src/lib/format/references.d.ts +71 -65
  182. package/src/lib/format/references.js +194 -631
  183. package/src/lib/format/references.js.map +1 -1
  184. package/src/lib/format/references.mjs +194 -631
  185. package/src/lib/format/references.mjs.map +1 -1
  186. package/src/lib/format/seats-checks.d.mts +3 -0
  187. package/src/lib/format/seats-checks.d.ts +3 -0
  188. package/src/lib/format/seats-checks.js +13 -0
  189. package/src/lib/format/seats-checks.js.map +1 -0
  190. package/src/lib/format/seats-checks.mjs +10 -0
  191. package/src/lib/format/seats-checks.mjs.map +1 -0
  192. package/src/lib/format/sheet-head-checks.d.mts +4 -0
  193. package/src/lib/format/sheet-head-checks.d.ts +4 -0
  194. package/src/lib/format/sheet-head-checks.js +68 -0
  195. package/src/lib/format/sheet-head-checks.js.map +1 -0
  196. package/src/lib/format/sheet-head-checks.mjs +65 -0
  197. package/src/lib/format/sheet-head-checks.mjs.map +1 -0
  198. package/src/lib/format/signature-checks.d.mts +7 -0
  199. package/src/lib/format/signature-checks.d.ts +7 -0
  200. package/src/lib/format/signature-checks.js +32 -0
  201. package/src/lib/format/signature-checks.js.map +1 -0
  202. package/src/lib/format/signature-checks.mjs +29 -0
  203. package/src/lib/format/signature-checks.mjs.map +1 -0
  204. package/src/lib/format/signature-options.d.mts +24 -0
  205. package/src/lib/format/signature-options.d.ts +24 -0
  206. package/src/lib/format/signature-options.js +30 -0
  207. package/src/lib/format/signature-options.js.map +1 -0
  208. package/src/lib/format/signature-options.mjs +26 -0
  209. package/src/lib/format/signature-options.mjs.map +1 -0
  210. package/src/lib/format/slots-checks.d.mts +4 -0
  211. package/src/lib/format/slots-checks.d.ts +4 -0
  212. package/src/lib/format/slots-checks.js +21 -0
  213. package/src/lib/format/slots-checks.js.map +1 -0
  214. package/src/lib/format/slots-checks.mjs +18 -0
  215. package/src/lib/format/slots-checks.mjs.map +1 -0
  216. package/src/lib/format/statusbar-checks.d.mts +8 -0
  217. package/src/lib/format/statusbar-checks.d.ts +8 -0
  218. package/src/lib/format/statusbar-checks.js +35 -0
  219. package/src/lib/format/statusbar-checks.js.map +1 -0
  220. package/src/lib/format/statusbar-checks.mjs +32 -0
  221. package/src/lib/format/statusbar-checks.mjs.map +1 -0
  222. package/src/lib/format/table-checks.d.mts +21 -0
  223. package/src/lib/format/table-checks.d.ts +21 -0
  224. package/src/lib/format/table-checks.js +86 -0
  225. package/src/lib/format/table-checks.js.map +1 -0
  226. package/src/lib/format/table-checks.mjs +82 -0
  227. package/src/lib/format/table-checks.mjs.map +1 -0
  228. package/src/lib/format/translate.js +2 -2
  229. package/src/lib/format/translate.js.map +1 -1
  230. package/src/lib/format/translate.mjs +2 -2
  231. package/src/lib/format/translate.mjs.map +1 -1
  232. package/src/lib/format/upgrade.d.mts +6 -3
  233. package/src/lib/format/upgrade.d.ts +6 -3
  234. package/src/lib/format/upgrade.js +6 -3
  235. package/src/lib/format/upgrade.js.map +1 -1
  236. package/src/lib/format/upgrade.mjs +6 -3
  237. package/src/lib/format/upgrade.mjs.map +1 -1
  238. package/src/lib/format/validate.d.mts +18 -2
  239. package/src/lib/format/validate.d.ts +18 -2
  240. package/src/lib/format/validate.js +36 -3
  241. package/src/lib/format/validate.js.map +1 -1
  242. package/src/lib/format/validate.mjs +35 -3
  243. package/src/lib/format/validate.mjs.map +1 -1
  244. package/src/lib/format/version.d.mts +2 -2
  245. package/src/lib/format/version.d.ts +2 -2
  246. package/src/lib/format/version.js +2 -2
  247. package/src/lib/format/version.js.map +1 -1
  248. package/src/lib/format/version.mjs +2 -2
  249. package/src/lib/format/version.mjs.map +1 -1
  250. package/src/lib/format/words.d.mts +6 -2
  251. package/src/lib/format/words.d.ts +6 -2
  252. package/src/lib/format/words.js +13 -7
  253. package/src/lib/format/words.js.map +1 -1
  254. package/src/lib/format/words.mjs +13 -7
  255. package/src/lib/format/words.mjs.map +1 -1
  256. package/src/lib/parts.d.mts +45 -0
  257. package/src/lib/parts.d.ts +45 -0
  258. package/src/lib/parts.js +60 -0
  259. package/src/lib/parts.js.map +1 -0
  260. package/src/lib/parts.mjs +53 -0
  261. package/src/lib/parts.mjs.map +1 -0
  262. package/src/lib/record/cells.d.mts +3 -3
  263. package/src/lib/record/cells.d.ts +3 -3
  264. package/src/lib/record/cells.js +16 -15
  265. package/src/lib/record/cells.js.map +1 -1
  266. package/src/lib/record/cells.mjs +16 -15
  267. package/src/lib/record/cells.mjs.map +1 -1
  268. package/src/lib/record/compute.d.mts +16 -5
  269. package/src/lib/record/compute.d.ts +16 -5
  270. package/src/lib/record/compute.js +57 -16
  271. package/src/lib/record/compute.js.map +1 -1
  272. package/src/lib/record/compute.mjs +57 -16
  273. package/src/lib/record/compute.mjs.map +1 -1
  274. package/src/lib/record/data-source.d.mts +140 -3
  275. package/src/lib/record/data-source.d.ts +140 -3
  276. package/src/lib/record/data-source.js.map +1 -1
  277. package/src/lib/record/data-source.mjs.map +1 -1
  278. package/src/lib/record/drafts.d.mts +19 -0
  279. package/src/lib/record/drafts.d.ts +19 -0
  280. package/src/lib/record/drafts.js +35 -0
  281. package/src/lib/record/drafts.js.map +1 -0
  282. package/src/lib/record/drafts.mjs +31 -0
  283. package/src/lib/record/drafts.mjs.map +1 -0
  284. package/src/lib/record/env.d.mts +5 -1
  285. package/src/lib/record/env.d.ts +5 -1
  286. package/src/lib/record/env.js +9 -1
  287. package/src/lib/record/env.js.map +1 -1
  288. package/src/lib/record/env.mjs +8 -1
  289. package/src/lib/record/env.mjs.map +1 -1
  290. package/src/lib/record/form-limits.d.mts +81 -0
  291. package/src/lib/record/form-limits.d.ts +81 -0
  292. package/src/lib/record/form-limits.js +231 -0
  293. package/src/lib/record/form-limits.js.map +1 -0
  294. package/src/lib/record/form-limits.mjs +224 -0
  295. package/src/lib/record/form-limits.mjs.map +1 -0
  296. package/src/lib/record/form.d.mts +173 -4
  297. package/src/lib/record/form.d.ts +173 -4
  298. package/src/lib/record/form.js +792 -88
  299. package/src/lib/record/form.js.map +1 -1
  300. package/src/lib/record/form.mjs +792 -88
  301. package/src/lib/record/form.mjs.map +1 -1
  302. package/src/lib/record/limits-part.d.mts +6 -0
  303. package/src/lib/record/limits-part.d.ts +6 -0
  304. package/src/lib/record/limits-part.js +12 -0
  305. package/src/lib/record/limits-part.js.map +1 -0
  306. package/src/lib/record/limits-part.mjs +7 -0
  307. package/src/lib/record/limits-part.mjs.map +1 -0
  308. package/src/lib/record/line-choices.d.mts +30 -0
  309. package/src/lib/record/line-choices.d.ts +30 -0
  310. package/src/lib/record/line-choices.js +42 -0
  311. package/src/lib/record/line-choices.js.map +1 -0
  312. package/src/lib/record/line-choices.mjs +36 -0
  313. package/src/lib/record/line-choices.mjs.map +1 -0
  314. package/src/lib/record/locales/ar.js +10 -0
  315. package/src/lib/record/locales/ar.js.map +1 -1
  316. package/src/lib/record/locales/ar.mjs +10 -0
  317. package/src/lib/record/locales/ar.mjs.map +1 -1
  318. package/src/lib/record/locales/de.js +10 -0
  319. package/src/lib/record/locales/de.js.map +1 -1
  320. package/src/lib/record/locales/de.mjs +10 -0
  321. package/src/lib/record/locales/de.mjs.map +1 -1
  322. package/src/lib/record/locales/fr.js +10 -0
  323. package/src/lib/record/locales/fr.js.map +1 -1
  324. package/src/lib/record/locales/fr.mjs +10 -0
  325. package/src/lib/record/locales/fr.mjs.map +1 -1
  326. package/src/lib/record/memory-data-source.d.mts +44 -3
  327. package/src/lib/record/memory-data-source.d.ts +44 -3
  328. package/src/lib/record/memory-data-source.js +102 -40
  329. package/src/lib/record/memory-data-source.js.map +1 -1
  330. package/src/lib/record/memory-data-source.mjs +101 -40
  331. package/src/lib/record/memory-data-source.mjs.map +1 -1
  332. package/src/lib/record/memory-kept.d.mts +20 -0
  333. package/src/lib/record/memory-kept.d.ts +20 -0
  334. package/src/lib/record/memory-kept.js +46 -0
  335. package/src/lib/record/memory-kept.js.map +1 -0
  336. package/src/lib/record/memory-kept.mjs +43 -0
  337. package/src/lib/record/memory-kept.mjs.map +1 -0
  338. package/src/lib/record/memory-later.d.mts +19 -0
  339. package/src/lib/record/memory-later.d.ts +19 -0
  340. package/src/lib/record/memory-later.js +39 -0
  341. package/src/lib/record/memory-later.js.map +1 -0
  342. package/src/lib/record/memory-later.mjs +35 -0
  343. package/src/lib/record/memory-later.mjs.map +1 -0
  344. package/src/lib/record/memory-part.d.mts +7 -0
  345. package/src/lib/record/memory-part.d.ts +7 -0
  346. package/src/lib/record/memory-part.js +13 -0
  347. package/src/lib/record/memory-part.js.map +1 -0
  348. package/src/lib/record/memory-part.mjs +8 -0
  349. package/src/lib/record/memory-part.mjs.map +1 -0
  350. package/src/lib/record/messages.d.mts +17 -0
  351. package/src/lib/record/messages.d.ts +17 -0
  352. package/src/lib/record/messages.js +10 -0
  353. package/src/lib/record/messages.js.map +1 -1
  354. package/src/lib/record/messages.mjs +10 -0
  355. package/src/lib/record/messages.mjs.map +1 -1
  356. package/src/lib/record/option-rules.d.mts +50 -0
  357. package/src/lib/record/option-rules.d.ts +50 -0
  358. package/src/lib/record/option-rules.js +137 -0
  359. package/src/lib/record/option-rules.js.map +1 -0
  360. package/src/lib/record/option-rules.mjs +134 -0
  361. package/src/lib/record/option-rules.mjs.map +1 -0
  362. package/src/lib/record/rules.d.mts +2 -2
  363. package/src/lib/record/rules.d.ts +2 -2
  364. package/src/lib/record/rules.js +3 -3
  365. package/src/lib/record/rules.js.map +1 -1
  366. package/src/lib/record/rules.mjs +3 -3
  367. package/src/lib/record/rules.mjs.map +1 -1
  368. package/src/lib/record/run.js +9 -7
  369. package/src/lib/record/run.js.map +1 -1
  370. package/src/lib/record/run.mjs +9 -7
  371. package/src/lib/record/run.mjs.map +1 -1
  372. package/src/lib/record/search.d.mts +12 -2
  373. package/src/lib/record/search.d.ts +12 -2
  374. package/src/lib/record/search.js +29 -4
  375. package/src/lib/record/search.js.map +1 -1
  376. package/src/lib/record/search.mjs +29 -4
  377. package/src/lib/record/search.mjs.map +1 -1
  378. package/src/lib/record/set-when.d.mts +3 -3
  379. package/src/lib/record/set-when.d.ts +3 -3
  380. package/src/lib/record/set-when.js +9 -9
  381. package/src/lib/record/set-when.js.map +1 -1
  382. package/src/lib/record/set-when.mjs +9 -9
  383. package/src/lib/record/set-when.mjs.map +1 -1
  384. package/src/lib/record/signed.d.mts +21 -0
  385. package/src/lib/record/signed.d.ts +21 -0
  386. package/src/lib/record/signed.js +62 -0
  387. package/src/lib/record/signed.js.map +1 -0
  388. package/src/lib/record/signed.mjs +57 -0
  389. package/src/lib/record/signed.mjs.map +1 -0
  390. package/src/lib/record/taking.d.mts +60 -0
  391. package/src/lib/record/taking.d.ts +60 -0
  392. package/src/lib/record/taking.js +58 -0
  393. package/src/lib/record/taking.js.map +1 -0
  394. package/src/lib/record/taking.mjs +50 -0
  395. package/src/lib/record/taking.mjs.map +1 -0
  396. package/src/lib/record/value-map.js +11 -4
  397. package/src/lib/record/value-map.js.map +1 -1
  398. package/src/lib/record/value-map.mjs +11 -4
  399. package/src/lib/record/value-map.mjs.map +1 -1
  400. package/src/lib/record/values.d.mts +20 -0
  401. package/src/lib/record/values.d.ts +20 -0
  402. package/src/lib/record/values.js.map +1 -1
  403. package/src/lib/record/values.mjs.map +1 -1
  404. package/src/lib/record/waits.d.mts +6 -1
  405. package/src/lib/record/waits.d.ts +6 -1
  406. package/src/lib/record/waits.js +2 -2
  407. package/src/lib/record/waits.js.map +1 -1
  408. package/src/lib/record/waits.mjs +2 -2
  409. package/src/lib/record/waits.mjs.map +1 -1
  410. package/src/runtime.d.mts +16 -5
  411. package/src/runtime.d.ts +16 -5
  412. package/src/runtime.js +41 -3
  413. package/src/runtime.js.map +1 -1
  414. package/src/runtime.mjs +13 -0
  415. package/src/runtime.mjs.map +1 -1
@@ -6,30 +6,30 @@ const modifier_1 = require("../expression/modifier");
6
6
  const compute_1 = require("./compute");
7
7
  const env_1 = require("./env");
8
8
  const values_1 = require("./values");
9
- function rules(fields) {
9
+ function rules(fields, functions) {
10
10
  return Object.entries(fields).flatMap(([name, def]) => (def.setWhen ?? []).map((rule, i) => ({
11
11
  key: `${name}#${i}`,
12
12
  name,
13
13
  def,
14
- when: (0, modifier_1.compileModifier)(rule.when ?? true),
15
- value: (0, expression_1.compileExpression)(rule.value),
14
+ when: (0, modifier_1.compileModifier)(rule.when ?? true, functions),
15
+ value: (0, expression_1.compileExpression)(rule.value, functions),
16
16
  ...(rule.on ? { on: rule.on } : {}),
17
17
  })));
18
18
  }
19
19
  /** Before anything was known: every condition counts as holding, so none starts. */
20
20
  const EVERYTHING = { has: () => true };
21
- /** Read every `setWhen` of a page once. `today` is the day `today()` gives. */
22
- function compileSetWhen(page, today, about = () => ({ recordId: null })) {
23
- const own = rules(page.fields);
21
+ /** Read every `setWhen` of a page once. `today` is the day `today()` gives; `app`, the app's functions and their answers. */
22
+ function compileSetWhen(page, today, about = () => ({ recordId: null }), app = {}) {
23
+ const own = rules(page.fields, app.functions);
24
24
  const lineRules = new Map();
25
25
  for (const [name, def] of Object.entries(page.fields)) {
26
26
  if (def.type !== 'one2many')
27
27
  continue;
28
- const found = rules(def.fields);
28
+ const found = rules(def.fields, app.functions);
29
29
  if (found.length)
30
30
  lineRules.set(name, { def, rules: found });
31
31
  }
32
- const lineEnv = { today };
32
+ const lineEnv = { ...app, today };
33
33
  /** One set of values (the record's, or a line's): every rule read against them as they are, before any is set. */
34
34
  function run(values, list, context, env, prefix, before, now) {
35
35
  let next = values;
@@ -57,7 +57,7 @@ function compileSetWhen(page, today, about = () => ({ recordId: null })) {
57
57
  }
58
58
  function apply(values, before) {
59
59
  const now = new Set();
60
- let next = own.length ? run(values, own, (0, env_1.recordContext)(values, page.fields, about()), (0, env_1.expressionEnv)(values, page.fields, today), '', before, now) : values;
60
+ let next = own.length ? run(values, own, (0, env_1.recordContext)(values, page.fields, about()), (0, env_1.expressionEnv)(values, page.fields, today, app), '', before, now) : values;
61
61
  const parent = lineRules.size ? (0, env_1.recordContext)(values, page.fields, about()) : {};
62
62
  for (const [field, { def, rules: list }] of lineRules) {
63
63
  const current = values[field];
@@ -1 +1 @@
1
- {"version":3,"file":"set-when.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/set-when.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"set-when.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/set-when.ts"],"names":[],"mappings":";;AAwDA,wCAqDC;AA3GD,yDAA0G;AAC1G,qDAAgF;AAChF,uCAAkC;AAClC,+BAA6F;AAE7F,qCAAuE;AAgCvE,SAAS,KAAK,CAAC,MAAyC,EAAE,SAAyB;IACjF,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CACpD,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAa,EAAE,CAAC,EAAQ,EAAE,CAAC,CAAC;QACnD,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE;QACnB,IAAI;QACJ,GAAG;QACH,IAAI,EAAE,IAAA,0BAAe,EAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,SAAS,CAAC;QACnD,KAAK,EAAE,IAAA,8BAAiB,EAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC;QAC/C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpC,CAAC,CAAC,CACJ,CAAC;AACJ,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,GAAwB,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,EAAoC,CAAC;AAE9F,6HAA6H;AAC7H,SAAgB,cAAc,CAAC,IAAU,EAAE,KAAmB,EAAE,QAAqB,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,MAAgB,EAAE;IACjI,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAwE,CAAC;IAClG,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS;QACtC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,KAAK,CAAC,MAAM;YAAE,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,OAAO,GAAkB,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;IAEjD,kHAAkH;IAClH,SAAS,GAAG,CAAC,MAAc,EAAE,IAAY,EAAE,OAAgC,EAAE,GAAkB,EAAE,MAAc,EAAE,MAA2B,EAAE,GAAgB;QAC5J,IAAI,IAAI,GAAG,MAAM,CAAC;QAClB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,oGAAoG;YACpG,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;gBAClG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACb,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;oBAAE,SAAS;YACrE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;oBAAE,SAAS;gBAChD,MAAM,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;gBAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACb,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,SAAS;YAChC,CAAC;YACD,MAAM,KAAK,GAAG,IAAA,eAAK,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,IAAA,kBAAS,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAAE,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,KAAK,CAAC,MAAc,EAAE,MAA2B;QACxD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,IAAA,mBAAa,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAA,mBAAa,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAChK,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,mBAAa,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YACtD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,SAAS;YACtC,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,OAAO,GAAI,OAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC/C,0CAA0C;gBAC1C,IAAI,IAAA,iBAAQ,EAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI;oBAAE,OAAO,IAAI,CAAC;gBACrD,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAA,iBAAW,EAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;gBACjJ,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM;oBAAE,OAAO,IAAI,CAAC;gBACrC,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;YAClC,CAAC,CAAC,CAAC;YACH,IAAI,OAAO;gBAAE,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;QACpD,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IACxC,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;AAC3E,CAAC"}
@@ -3,30 +3,30 @@ import { compileModifier } from '../expression/modifier.mjs';
3
3
  import { fitTo } from './compute.mjs';
4
4
  import { expressionEnv, lineContext, recordContext } from './env.mjs';
5
5
  import { lineKind, sameValue } from './values.mjs';
6
- function rules(fields) {
6
+ function rules(fields, functions) {
7
7
  return Object.entries(fields).flatMap(([name, def]) => (def.setWhen ?? []).map((rule, i) => ({
8
8
  key: `${name}#${i}`,
9
9
  name,
10
10
  def,
11
- when: compileModifier(rule.when ?? true),
12
- value: compileExpression(rule.value),
11
+ when: compileModifier(rule.when ?? true, functions),
12
+ value: compileExpression(rule.value, functions),
13
13
  ...(rule.on ? { on: rule.on } : {}),
14
14
  })));
15
15
  }
16
16
  /** Before anything was known: every condition counts as holding, so none starts. */
17
17
  const EVERYTHING = { has: () => true };
18
- /** Read every `setWhen` of a page once. `today` is the day `today()` gives. */
19
- export function compileSetWhen(page, today, about = () => ({ recordId: null })) {
20
- const own = rules(page.fields);
18
+ /** Read every `setWhen` of a page once. `today` is the day `today()` gives; `app`, the app's functions and their answers. */
19
+ export function compileSetWhen(page, today, about = () => ({ recordId: null }), app = {}) {
20
+ const own = rules(page.fields, app.functions);
21
21
  const lineRules = new Map();
22
22
  for (const [name, def] of Object.entries(page.fields)) {
23
23
  if (def.type !== 'one2many')
24
24
  continue;
25
- const found = rules(def.fields);
25
+ const found = rules(def.fields, app.functions);
26
26
  if (found.length)
27
27
  lineRules.set(name, { def, rules: found });
28
28
  }
29
- const lineEnv = { today };
29
+ const lineEnv = { ...app, today };
30
30
  /** One set of values (the record's, or a line's): every rule read against them as they are, before any is set. */
31
31
  function run(values, list, context, env, prefix, before, now) {
32
32
  let next = values;
@@ -54,7 +54,7 @@ export function compileSetWhen(page, today, about = () => ({ recordId: null }))
54
54
  }
55
55
  function apply(values, before) {
56
56
  const now = new Set();
57
- let next = own.length ? run(values, own, recordContext(values, page.fields, about()), expressionEnv(values, page.fields, today), '', before, now) : values;
57
+ let next = own.length ? run(values, own, recordContext(values, page.fields, about()), expressionEnv(values, page.fields, today, app), '', before, now) : values;
58
58
  const parent = lineRules.size ? recordContext(values, page.fields, about()) : {};
59
59
  for (const [field, { def, rules: list }] of lineRules) {
60
60
  const current = values[field];
@@ -1 +1 @@
1
- {"version":3,"file":"set-when.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/set-when.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"set-when.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/set-when.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { FieldNode } from '../format/layout.mjs';
2
+ import type { Page } from '../format/page.mjs';
3
+ import type { SignatureEvidence, Value, Values } from './values.mjs';
4
+ /**
5
+ * Answers a signature signed are locked while it is kept: each answer its evidence names (`FileValue.signed.fields`)
6
+ * is read-only until the signature is taken away (its "Change answers") and signed again — a signature the page has
7
+ * sign answers (`options.signs`); one that no longer does is a picture, whatever its value carries. The evidence itself — the
8
+ * fingerprint, its canonical form — is the files part's (signature-evidence.ts in @fieldia/widgets); this is the one
9
+ * thing every page with a form needs of it: which answers are locked, and by which signature.
10
+ */
11
+ /** A value's signature evidence: who signed, when, which answers and their fingerprint; null for any other value. */
12
+ export declare function evidenceOf(value: Value | undefined): SignatureEvidence | null;
13
+ /** The answer a signature locks, by the answer's field: the signature's field and its evidence. */
14
+ export type SignedBy = ReadonlyMap<string, {
15
+ field: string;
16
+ evidence: SignatureEvidence;
17
+ }>;
18
+ /** Whether a signature's node signs answers: its `options.signs` is "form", or names some. */
19
+ export declare function signsAnswers(node: Pick<FieldNode, 'options'>): boolean;
20
+ /** Every answer a signature of the page that signs answers kept signed in these values, by field: what a form locks. */
21
+ export declare function signedBy(page: Pick<Page, 'layout' | 'fields'>, values: Readonly<Values>): SignedBy;
@@ -0,0 +1,21 @@
1
+ import type { FieldNode } from '../format/layout';
2
+ import type { Page } from '../format/page';
3
+ import type { SignatureEvidence, Value, Values } from './values';
4
+ /**
5
+ * Answers a signature signed are locked while it is kept: each answer its evidence names (`FileValue.signed.fields`)
6
+ * is read-only until the signature is taken away (its "Change answers") and signed again — a signature the page has
7
+ * sign answers (`options.signs`); one that no longer does is a picture, whatever its value carries. The evidence itself — the
8
+ * fingerprint, its canonical form — is the files part's (signature-evidence.ts in @fieldia/widgets); this is the one
9
+ * thing every page with a form needs of it: which answers are locked, and by which signature.
10
+ */
11
+ /** A value's signature evidence: who signed, when, which answers and their fingerprint; null for any other value. */
12
+ export declare function evidenceOf(value: Value | undefined): SignatureEvidence | null;
13
+ /** The answer a signature locks, by the answer's field: the signature's field and its evidence. */
14
+ export type SignedBy = ReadonlyMap<string, {
15
+ field: string;
16
+ evidence: SignatureEvidence;
17
+ }>;
18
+ /** Whether a signature's node signs answers: its `options.signs` is "form", or names some. */
19
+ export declare function signsAnswers(node: Pick<FieldNode, 'options'>): boolean;
20
+ /** Every answer a signature of the page that signs answers kept signed in these values, by field: what a form locks. */
21
+ export declare function signedBy(page: Pick<Page, 'layout' | 'fields'>, values: Readonly<Values>): SignedBy;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.evidenceOf = evidenceOf;
4
+ exports.signsAnswers = signsAnswers;
5
+ exports.signedBy = signedBy;
6
+ /**
7
+ * Answers a signature signed are locked while it is kept: each answer its evidence names (`FileValue.signed.fields`)
8
+ * is read-only until the signature is taken away (its "Change answers") and signed again — a signature the page has
9
+ * sign answers (`options.signs`); one that no longer does is a picture, whatever its value carries. The evidence itself — the
10
+ * fingerprint, its canonical form — is the files part's (signature-evidence.ts in @fieldia/widgets); this is the one
11
+ * thing every page with a form needs of it: which answers are locked, and by which signature.
12
+ */
13
+ /** A value's signature evidence: who signed, when, which answers and their fingerprint; null for any other value. */
14
+ function evidenceOf(value) {
15
+ const signed = value && typeof value === 'object' && !Array.isArray(value) ? value.signed : undefined;
16
+ if (!signed || typeof signed !== 'object')
17
+ return null;
18
+ const evidence = signed;
19
+ return Array.isArray(evidence.fields) && typeof evidence.sha256 === 'string' && typeof evidence.at === 'string' ? evidence : null;
20
+ }
21
+ const none = new Map();
22
+ /** Whether a signature's node signs answers: its `options.signs` is "form", or names some. */
23
+ function signsAnswers(node) {
24
+ const signs = node.options?.['signs'];
25
+ return signs === 'form' || (Array.isArray(signs) && signs.length > 0);
26
+ }
27
+ /** The fields a page draws as a signature that signs answers, wherever they stand: worked out once for each page. */
28
+ const signing = new WeakMap();
29
+ function signingFields(page) {
30
+ let found = signing.get(page.layout);
31
+ if (found)
32
+ return found;
33
+ const fields = new Set();
34
+ const walk = (part) => {
35
+ if (Array.isArray(part))
36
+ return part.forEach(walk);
37
+ if (!part || typeof part !== 'object')
38
+ return;
39
+ const node = part;
40
+ if (node.type === 'field' && node.widget === 'signature' && typeof node.field === 'string' && signsAnswers(node))
41
+ fields.add(node.field);
42
+ Object.values(part).forEach(walk);
43
+ };
44
+ walk(page.layout);
45
+ signing.set(page.layout, (found = fields));
46
+ return found;
47
+ }
48
+ /** Every answer a signature of the page that signs answers kept signed in these values, by field: what a form locks. */
49
+ function signedBy(page, values) {
50
+ let found = null;
51
+ for (const field of signingFields(page)) {
52
+ const evidence = page.fields[field]?.type === 'binary' ? evidenceOf(values[field]) : null;
53
+ if (!evidence)
54
+ continue;
55
+ found ??= new Map();
56
+ for (const name of evidence.fields)
57
+ if (name !== field && !found.has(name))
58
+ found.set(name, { field, evidence });
59
+ }
60
+ return found ?? none;
61
+ }
62
+ //# sourceMappingURL=signed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signed.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/signed.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Answers a signature signed are locked while it is kept: each answer its evidence names (`FileValue.signed.fields`)
3
+ * is read-only until the signature is taken away (its "Change answers") and signed again — a signature the page has
4
+ * sign answers (`options.signs`); one that no longer does is a picture, whatever its value carries. The evidence itself — the
5
+ * fingerprint, its canonical form — is the files part's (signature-evidence.ts in @fieldia/widgets); this is the one
6
+ * thing every page with a form needs of it: which answers are locked, and by which signature.
7
+ */
8
+ /** A value's signature evidence: who signed, when, which answers and their fingerprint; null for any other value. */
9
+ export function evidenceOf(value) {
10
+ const signed = value && typeof value === 'object' && !Array.isArray(value) ? value.signed : undefined;
11
+ if (!signed || typeof signed !== 'object')
12
+ return null;
13
+ const evidence = signed;
14
+ return Array.isArray(evidence.fields) && typeof evidence.sha256 === 'string' && typeof evidence.at === 'string' ? evidence : null;
15
+ }
16
+ const none = new Map();
17
+ /** Whether a signature's node signs answers: its `options.signs` is "form", or names some. */
18
+ export function signsAnswers(node) {
19
+ const signs = node.options?.['signs'];
20
+ return signs === 'form' || (Array.isArray(signs) && signs.length > 0);
21
+ }
22
+ /** The fields a page draws as a signature that signs answers, wherever they stand: worked out once for each page. */
23
+ const signing = new WeakMap();
24
+ function signingFields(page) {
25
+ let found = signing.get(page.layout);
26
+ if (found)
27
+ return found;
28
+ const fields = new Set();
29
+ const walk = (part) => {
30
+ if (Array.isArray(part))
31
+ return part.forEach(walk);
32
+ if (!part || typeof part !== 'object')
33
+ return;
34
+ const node = part;
35
+ if (node.type === 'field' && node.widget === 'signature' && typeof node.field === 'string' && signsAnswers(node))
36
+ fields.add(node.field);
37
+ Object.values(part).forEach(walk);
38
+ };
39
+ walk(page.layout);
40
+ signing.set(page.layout, (found = fields));
41
+ return found;
42
+ }
43
+ /** Every answer a signature of the page that signs answers kept signed in these values, by field: what a form locks. */
44
+ export function signedBy(page, values) {
45
+ let found = null;
46
+ for (const field of signingFields(page)) {
47
+ const evidence = page.fields[field]?.type === 'binary' ? evidenceOf(values[field]) : null;
48
+ if (!evidence)
49
+ continue;
50
+ found ??= new Map();
51
+ for (const name of evidence.fields)
52
+ if (name !== field && !found.has(name))
53
+ found.set(name, { field, evidence });
54
+ }
55
+ return found ?? none;
56
+ }
57
+ //# sourceMappingURL=signed.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signed.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/signed.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import type { Page } from '../format/page.mjs';
2
+ import { type Part } from '../parts.mjs';
3
+ import type * as LimitsModule from './limits-part.mjs';
4
+ /**
5
+ * When a page takes answers, and each choice's places (`limits` on a page, `seats` on an option): worked out from the
6
+ * page, the form's clock and the data source's last answer to `limits` (form-limits.ts, the limits part). The form
7
+ * keeps it in its state (`FormState.limits`); a viewer shows a closed form's words in place of its questions, and each
8
+ * choice's places.
9
+ */
10
+ /**
11
+ * Whether the page takes answers now: `open`; `soon`, before it opens; `closed`, after it closed; `full`, its most
12
+ * responses taken; `sent`, this person's one response sent already; `asking`, its counts asked of the data source
13
+ * and not told yet — nothing is typed meanwhile.
14
+ */
15
+ export type TakingState = 'open' | 'soon' | 'closed' | 'full' | 'sent' | 'asking';
16
+ /** An option's places: how many it takes, how many took it, how many are left (never below 0). */
17
+ export interface Seats {
18
+ readonly seats: number;
19
+ readonly taken: number;
20
+ readonly left: number;
21
+ }
22
+ /** What a form knows of its limits now (`FormState.limits`). */
23
+ export interface FormLimits {
24
+ readonly state: TakingState;
25
+ /** When it opens and closes, as instants (ISO, in UTC): a day alone closes at its end. */
26
+ readonly opens?: string;
27
+ readonly closes?: string;
28
+ /** The page's own words for while it takes no answers (`limits.message`). */
29
+ readonly message?: string;
30
+ /** The responses it takes still, where its `maxResponses` and the source's count tell. */
31
+ readonly left?: number;
32
+ /**
33
+ * Each choice field's places, by option value (as written: `String(value)`): those of its options with `seats`,
34
+ * once the source told how many took them. A field the source told nothing of has none: nothing shows.
35
+ */
36
+ readonly seats: Readonly<Record<string, Readonly<Record<string, Seats>>>>;
37
+ }
38
+ /** Whether a page's `opens` or `closes` is written as a day alone: it opens at that day's first minute, closes at its end. */
39
+ export declare const dayAlone: (written: string) => boolean;
40
+ /**
41
+ * The instant a page's `opens` or `closes` names, in ms: an instant written with its offset as it is; a day and a time
42
+ * on the page's clock (`zone`; the browser's without one); a day alone at its first minute — or, to close (`end`), at
43
+ * the next day's first minute, so it takes answers through that day. A time the clocks skip is the first minute after
44
+ * them. Null for words that name no day.
45
+ */
46
+ export declare function limitInstant(written: string, zone: string | undefined, end?: boolean): number | null;
47
+ /** The choice fields of a page whose own options have places (`seats`), by name, in the page's order. */
48
+ export declare function seatedFields(page: Page): string[];
49
+ /** The limits part's form code (form-limits.ts). */
50
+ export type FormLimitsPart = typeof LimitsModule;
51
+ /**
52
+ * A form's limits — what it tells of them, its counts asked of the source, a full choice refused — loaded before a page
53
+ * with `limits` or options with `seats` is drawn (`hasLimits`), and by a form whose app's list gave options with seats:
54
+ * in the one-tag script, one script with the viewer's limits part (fieldia.limits.js).
55
+ */
56
+ export declare const formLimitsPart: Part<FormLimitsPart>;
57
+ /** Whether a page has limits, or choices of its own with places: its form's limits come in the limits part. */
58
+ export declare const hasLimits: (page: Page) => boolean;
59
+ /** Whether a page's limits ask the source for counts: its most responses, one from each person — a page of responses only. */
60
+ export declare function countsAsked(page: Page): boolean;
@@ -0,0 +1,60 @@
1
+ import type { Page } from '../format/page';
2
+ import { type Part } from '../parts';
3
+ import type * as LimitsModule from './limits-part';
4
+ /**
5
+ * When a page takes answers, and each choice's places (`limits` on a page, `seats` on an option): worked out from the
6
+ * page, the form's clock and the data source's last answer to `limits` (form-limits.ts, the limits part). The form
7
+ * keeps it in its state (`FormState.limits`); a viewer shows a closed form's words in place of its questions, and each
8
+ * choice's places.
9
+ */
10
+ /**
11
+ * Whether the page takes answers now: `open`; `soon`, before it opens; `closed`, after it closed; `full`, its most
12
+ * responses taken; `sent`, this person's one response sent already; `asking`, its counts asked of the data source
13
+ * and not told yet — nothing is typed meanwhile.
14
+ */
15
+ export type TakingState = 'open' | 'soon' | 'closed' | 'full' | 'sent' | 'asking';
16
+ /** An option's places: how many it takes, how many took it, how many are left (never below 0). */
17
+ export interface Seats {
18
+ readonly seats: number;
19
+ readonly taken: number;
20
+ readonly left: number;
21
+ }
22
+ /** What a form knows of its limits now (`FormState.limits`). */
23
+ export interface FormLimits {
24
+ readonly state: TakingState;
25
+ /** When it opens and closes, as instants (ISO, in UTC): a day alone closes at its end. */
26
+ readonly opens?: string;
27
+ readonly closes?: string;
28
+ /** The page's own words for while it takes no answers (`limits.message`). */
29
+ readonly message?: string;
30
+ /** The responses it takes still, where its `maxResponses` and the source's count tell. */
31
+ readonly left?: number;
32
+ /**
33
+ * Each choice field's places, by option value (as written: `String(value)`): those of its options with `seats`,
34
+ * once the source told how many took them. A field the source told nothing of has none: nothing shows.
35
+ */
36
+ readonly seats: Readonly<Record<string, Readonly<Record<string, Seats>>>>;
37
+ }
38
+ /** Whether a page's `opens` or `closes` is written as a day alone: it opens at that day's first minute, closes at its end. */
39
+ export declare const dayAlone: (written: string) => boolean;
40
+ /**
41
+ * The instant a page's `opens` or `closes` names, in ms: an instant written with its offset as it is; a day and a time
42
+ * on the page's clock (`zone`; the browser's without one); a day alone at its first minute — or, to close (`end`), at
43
+ * the next day's first minute, so it takes answers through that day. A time the clocks skip is the first minute after
44
+ * them. Null for words that name no day.
45
+ */
46
+ export declare function limitInstant(written: string, zone: string | undefined, end?: boolean): number | null;
47
+ /** The choice fields of a page whose own options have places (`seats`), by name, in the page's order. */
48
+ export declare function seatedFields(page: Page): string[];
49
+ /** The limits part's form code (form-limits.ts). */
50
+ export type FormLimitsPart = typeof LimitsModule;
51
+ /**
52
+ * A form's limits — what it tells of them, its counts asked of the source, a full choice refused — loaded before a page
53
+ * with `limits` or options with `seats` is drawn (`hasLimits`), and by a form whose app's list gave options with seats:
54
+ * in the one-tag script, one script with the viewer's limits part (fieldia.limits.js).
55
+ */
56
+ export declare const formLimitsPart: Part<FormLimitsPart>;
57
+ /** Whether a page has limits, or choices of its own with places: its form's limits come in the limits part. */
58
+ export declare const hasLimits: (page: Page) => boolean;
59
+ /** Whether a page's limits ask the source for counts: its most responses, one from each person — a page of responses only. */
60
+ export declare function countsAsked(page: Page): boolean;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasLimits = exports.formLimitsPart = exports.dayAlone = void 0;
4
+ exports.limitInstant = limitInstant;
5
+ exports.seatedFields = seatedFields;
6
+ exports.countsAsked = countsAsked;
7
+ const parts_1 = require("../parts");
8
+ const zones_1 = require("./zones");
9
+ const MINUTE = 60000;
10
+ /** Whether a page's `opens` or `closes` is written as a day alone: it opens at that day's first minute, closes at its end. */
11
+ const dayAlone = (written) => /^\d{4}-\d{2}-\d{2}$/.test(written);
12
+ exports.dayAlone = dayAlone;
13
+ /**
14
+ * The instant a page's `opens` or `closes` names, in ms: an instant written with its offset as it is; a day and a time
15
+ * on the page's clock (`zone`; the browser's without one); a day alone at its first minute — or, to close (`end`), at
16
+ * the next day's first minute, so it takes answers through that day. A time the clocks skip is the first minute after
17
+ * them. Null for words that name no day.
18
+ */
19
+ function limitInstant(written, zone, end = false) {
20
+ if (/T.*(Z|[+-]\d{2}:\d{2})$/i.test(written)) {
21
+ const at = Date.parse(written);
22
+ return Number.isFinite(at) ? at : null;
23
+ }
24
+ const wall = (0, zones_1.wallOf)(written);
25
+ if (!wall || wall.month < 1 || wall.month > 12 || wall.day < 1 || wall.day > 31)
26
+ return null;
27
+ if (end && (0, exports.dayAlone)(written)) {
28
+ const next = new Date(Date.UTC(wall.year, wall.month - 1, wall.day + 1));
29
+ Object.assign(wall, { year: next.getUTCFullYear(), month: next.getUTCMonth() + 1, day: next.getUTCDate() });
30
+ }
31
+ const found = (0, zones_1.instantsAt)(wall, zone);
32
+ if (found.length)
33
+ return found[0];
34
+ // In the hour the clocks skip: the minute they skip to.
35
+ const local = Date.UTC(wall.year, wall.month - 1, wall.day, wall.hour, wall.minute);
36
+ return local - (0, zones_1.zoneOffset)(local + 86400000, zone) * MINUTE;
37
+ }
38
+ /** The choice fields of a page whose own options have places (`seats`), by name, in the page's order. */
39
+ function seatedFields(page) {
40
+ return Object.entries(page.fields)
41
+ .filter(([, field]) => field.type === 'selection' && (field.options ?? []).some((option) => option.seats !== undefined))
42
+ .map(([name]) => name);
43
+ }
44
+ /**
45
+ * A form's limits — what it tells of them, its counts asked of the source, a full choice refused — loaded before a page
46
+ * with `limits` or options with `seats` is drawn (`hasLimits`), and by a form whose app's list gave options with seats:
47
+ * in the one-tag script, one script with the viewer's limits part (fieldia.limits.js).
48
+ */
49
+ exports.formLimitsPart = (0, parts_1.lazyPart)('limits', () => Promise.resolve().then(() => require('./limits-part')));
50
+ /** Whether a page has limits, or choices of its own with places: its form's limits come in the limits part. */
51
+ const hasLimits = (page) => !!page.limits || seatedFields(page).length > 0;
52
+ exports.hasLimits = hasLimits;
53
+ /** Whether a page's limits ask the source for counts: its most responses, one from each person — a page of responses only. */
54
+ function countsAsked(page) {
55
+ const limits = page.data.kind === 'responses' ? page.limits : undefined;
56
+ return !!limits && (limits.maxResponses !== undefined || limits.onePerPerson === true);
57
+ }
58
+ //# sourceMappingURL=taking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taking.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/taking.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { lazyPart } from '../parts.mjs';
2
+ import { instantsAt, wallOf, zoneOffset } from './zones.mjs';
3
+ const MINUTE = 60000;
4
+ /** Whether a page's `opens` or `closes` is written as a day alone: it opens at that day's first minute, closes at its end. */
5
+ export const dayAlone = (written) => /^\d{4}-\d{2}-\d{2}$/.test(written);
6
+ /**
7
+ * The instant a page's `opens` or `closes` names, in ms: an instant written with its offset as it is; a day and a time
8
+ * on the page's clock (`zone`; the browser's without one); a day alone at its first minute — or, to close (`end`), at
9
+ * the next day's first minute, so it takes answers through that day. A time the clocks skip is the first minute after
10
+ * them. Null for words that name no day.
11
+ */
12
+ export function limitInstant(written, zone, end = false) {
13
+ if (/T.*(Z|[+-]\d{2}:\d{2})$/i.test(written)) {
14
+ const at = Date.parse(written);
15
+ return Number.isFinite(at) ? at : null;
16
+ }
17
+ const wall = wallOf(written);
18
+ if (!wall || wall.month < 1 || wall.month > 12 || wall.day < 1 || wall.day > 31)
19
+ return null;
20
+ if (end && dayAlone(written)) {
21
+ const next = new Date(Date.UTC(wall.year, wall.month - 1, wall.day + 1));
22
+ Object.assign(wall, { year: next.getUTCFullYear(), month: next.getUTCMonth() + 1, day: next.getUTCDate() });
23
+ }
24
+ const found = instantsAt(wall, zone);
25
+ if (found.length)
26
+ return found[0];
27
+ // In the hour the clocks skip: the minute they skip to.
28
+ const local = Date.UTC(wall.year, wall.month - 1, wall.day, wall.hour, wall.minute);
29
+ return local - zoneOffset(local + 86400000, zone) * MINUTE;
30
+ }
31
+ /** The choice fields of a page whose own options have places (`seats`), by name, in the page's order. */
32
+ export function seatedFields(page) {
33
+ return Object.entries(page.fields)
34
+ .filter(([, field]) => field.type === 'selection' && (field.options ?? []).some((option) => option.seats !== undefined))
35
+ .map(([name]) => name);
36
+ }
37
+ /**
38
+ * A form's limits — what it tells of them, its counts asked of the source, a full choice refused — loaded before a page
39
+ * with `limits` or options with `seats` is drawn (`hasLimits`), and by a form whose app's list gave options with seats:
40
+ * in the one-tag script, one script with the viewer's limits part (fieldia.limits.js).
41
+ */
42
+ export const formLimitsPart = lazyPart('limits', () => import('./limits-part.mjs'));
43
+ /** Whether a page has limits, or choices of its own with places: its form's limits come in the limits part. */
44
+ export const hasLimits = (page) => !!page.limits || seatedFields(page).length > 0;
45
+ /** Whether a page's limits ask the source for counts: its most responses, one from each person — a page of responses only. */
46
+ export function countsAsked(page) {
47
+ const limits = page.data.kind === 'responses' ? page.limits : undefined;
48
+ return !!limits && (limits.maxResponses !== undefined || limits.onePerPerson === true);
49
+ }
50
+ //# sourceMappingURL=taking.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taking.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/taking.ts"],"names":[],"mappings":"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"}
@@ -10,10 +10,17 @@ const expression_1 = require("../expression/expression");
10
10
  const compute_1 = require("./compute");
11
11
  const values_1 = require("./values");
12
12
  const expressions = new Map();
13
- function expression(source) {
14
- let found = expressions.get(source);
13
+ /** Those that may call an app's functions, for each table of them. */
14
+ const appExpressions = new WeakMap();
15
+ function expression(source, functions) {
16
+ let read = expressions;
17
+ if (functions) {
18
+ read = appExpressions.get(functions) ?? new Map();
19
+ appExpressions.set(functions, read);
20
+ }
21
+ let found = read.get(source);
15
22
  if (!found)
16
- expressions.set(source, (found = (0, expression_1.compileExpression)(source)));
23
+ read.set(source, (found = (0, expression_1.compileExpression)(source, functions)));
17
24
  return found;
18
25
  }
19
26
  /**
@@ -30,7 +37,7 @@ function readSource(source, scope) {
30
37
  const above = /^parent\.([A-Za-z_][A-Za-z0-9_]*)$/.exec(name);
31
38
  if (above && scope.parent && above[1] in scope.parent.fields)
32
39
  return (0, values_1.structuredCopy)(scope.parent.values[above[1]]);
33
- return expression(source).evaluate(scope.context, scope.env);
40
+ return expression(source, scope.env.functions).evaluate(scope.context, scope.env);
34
41
  }
35
42
  /** A value read for a field: a link from a record or an id, named as the form knows it; anything else fitted to the field. */
36
43
  function fitValue(def, raw, scope) {
@@ -1 +1 @@
1
- {"version":3,"file":"value-map.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/value-map.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"value-map.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/value-map.ts"],"names":[],"mappings":"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"}