@fieldia/core 0.30.0 → 0.31.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 (563) hide show
  1. package/README.md +362 -1
  2. package/package.json +1 -1
  3. package/schema/page.schema.json +758 -1
  4. package/src/index.d.mts +13 -2
  5. package/src/index.d.ts +13 -2
  6. package/src/index.js +45 -2
  7. package/src/index.js.map +1 -1
  8. package/src/index.mjs +18 -2
  9. package/src/index.mjs.map +1 -1
  10. package/src/lib/format/actions.d.mts +16 -16
  11. package/src/lib/format/actions.d.ts +16 -16
  12. package/src/lib/format/actions.js +3 -0
  13. package/src/lib/format/actions.js.map +1 -1
  14. package/src/lib/format/actions.mjs +3 -0
  15. package/src/lib/format/actions.mjs.map +1 -1
  16. package/src/lib/format/address-search.js +3 -0
  17. package/src/lib/format/address-search.js.map +1 -1
  18. package/src/lib/format/address-search.mjs +3 -0
  19. package/src/lib/format/address-search.mjs.map +1 -1
  20. package/src/lib/format/duplicates.js +3 -0
  21. package/src/lib/format/duplicates.js.map +1 -1
  22. package/src/lib/format/duplicates.mjs +3 -0
  23. package/src/lib/format/duplicates.mjs.map +1 -1
  24. package/src/lib/format/endings.js +3 -0
  25. package/src/lib/format/endings.js.map +1 -1
  26. package/src/lib/format/endings.mjs +3 -0
  27. package/src/lib/format/endings.mjs.map +1 -1
  28. package/src/lib/format/field.d.mts +669 -0
  29. package/src/lib/format/field.d.ts +669 -0
  30. package/src/lib/format/field.js +42 -4
  31. package/src/lib/format/field.js.map +1 -1
  32. package/src/lib/format/field.mjs +42 -4
  33. package/src/lib/format/field.mjs.map +1 -1
  34. package/src/lib/format/flow-checks.d.mts +14 -0
  35. package/src/lib/format/flow-checks.d.ts +14 -0
  36. package/src/lib/format/flow-checks.js +61 -0
  37. package/src/lib/format/flow-checks.js.map +1 -0
  38. package/src/lib/format/flow-checks.mjs +58 -0
  39. package/src/lib/format/flow-checks.mjs.map +1 -0
  40. package/src/lib/format/flow.d.mts +43 -0
  41. package/src/lib/format/flow.d.ts +43 -0
  42. package/src/lib/format/flow.js +22 -0
  43. package/src/lib/format/flow.js.map +1 -0
  44. package/src/lib/format/flow.mjs +19 -0
  45. package/src/lib/format/flow.mjs.map +1 -0
  46. package/src/lib/format/from-schema.d.mts +70 -0
  47. package/src/lib/format/from-schema.d.ts +70 -0
  48. package/src/lib/format/from-schema.js +599 -0
  49. package/src/lib/format/from-schema.js.map +1 -0
  50. package/src/lib/format/from-schema.mjs +591 -0
  51. package/src/lib/format/from-schema.mjs.map +1 -0
  52. package/src/lib/format/jitless.d.mts +1 -0
  53. package/src/lib/format/jitless.d.ts +1 -0
  54. package/src/lib/format/jitless.js +27 -0
  55. package/src/lib/format/jitless.js.map +1 -0
  56. package/src/lib/format/jitless.mjs +24 -0
  57. package/src/lib/format/jitless.mjs.map +1 -0
  58. package/src/lib/format/json-schema.js +3 -0
  59. package/src/lib/format/json-schema.js.map +1 -1
  60. package/src/lib/format/json-schema.mjs +3 -0
  61. package/src/lib/format/json-schema.mjs.map +1 -1
  62. package/src/lib/format/json.js +3 -0
  63. package/src/lib/format/json.js.map +1 -1
  64. package/src/lib/format/json.mjs +3 -0
  65. package/src/lib/format/json.mjs.map +1 -1
  66. package/src/lib/format/languages-checks.d.mts +2 -1
  67. package/src/lib/format/languages-checks.d.ts +2 -1
  68. package/src/lib/format/languages-checks.js +8 -2
  69. package/src/lib/format/languages-checks.js.map +1 -1
  70. package/src/lib/format/languages-checks.mjs +8 -2
  71. package/src/lib/format/languages-checks.mjs.map +1 -1
  72. package/src/lib/format/later-checks.d.mts +3 -1
  73. package/src/lib/format/later-checks.d.ts +3 -1
  74. package/src/lib/format/later-checks.js +3 -1
  75. package/src/lib/format/later-checks.js.map +1 -1
  76. package/src/lib/format/later-checks.mjs +3 -1
  77. package/src/lib/format/later-checks.mjs.map +1 -1
  78. package/src/lib/format/layout.d.mts +13192 -7550
  79. package/src/lib/format/layout.d.ts +13192 -7550
  80. package/src/lib/format/layout.js +61 -3
  81. package/src/lib/format/layout.js.map +1 -1
  82. package/src/lib/format/layout.mjs +59 -1
  83. package/src/lib/format/layout.mjs.map +1 -1
  84. package/src/lib/format/layout.types.d.mts +3 -1
  85. package/src/lib/format/layout.types.d.ts +3 -1
  86. package/src/lib/format/limits.js +3 -0
  87. package/src/lib/format/limits.js.map +1 -1
  88. package/src/lib/format/limits.mjs +3 -0
  89. package/src/lib/format/limits.mjs.map +1 -1
  90. package/src/lib/format/list-checks.d.mts +1 -1
  91. package/src/lib/format/list-checks.d.ts +1 -1
  92. package/src/lib/format/list-checks.js +67 -22
  93. package/src/lib/format/list-checks.js.map +1 -1
  94. package/src/lib/format/list-checks.mjs +67 -22
  95. package/src/lib/format/list-checks.mjs.map +1 -1
  96. package/src/lib/format/list-rows-checks.d.mts +11 -0
  97. package/src/lib/format/list-rows-checks.d.ts +11 -0
  98. package/src/lib/format/list-rows-checks.js +62 -0
  99. package/src/lib/format/list-rows-checks.js.map +1 -0
  100. package/src/lib/format/list-rows-checks.mjs +59 -0
  101. package/src/lib/format/list-rows-checks.mjs.map +1 -0
  102. package/src/lib/format/media-options.d.mts +84 -0
  103. package/src/lib/format/media-options.d.ts +84 -0
  104. package/src/lib/format/media-options.js +86 -0
  105. package/src/lib/format/media-options.js.map +1 -0
  106. package/src/lib/format/media-options.mjs +80 -0
  107. package/src/lib/format/media-options.mjs.map +1 -0
  108. package/src/lib/format/outbox-checks.d.mts +11 -0
  109. package/src/lib/format/outbox-checks.d.ts +11 -0
  110. package/src/lib/format/outbox-checks.js +12 -0
  111. package/src/lib/format/outbox-checks.js.map +1 -0
  112. package/src/lib/format/outbox-checks.mjs +9 -0
  113. package/src/lib/format/outbox-checks.mjs.map +1 -0
  114. package/src/lib/format/page.d.mts +3057 -966
  115. package/src/lib/format/page.d.ts +3057 -966
  116. package/src/lib/format/page.js +15 -0
  117. package/src/lib/format/page.js.map +1 -1
  118. package/src/lib/format/page.mjs +15 -0
  119. package/src/lib/format/page.mjs.map +1 -1
  120. package/src/lib/format/part-checks.d.mts +3 -0
  121. package/src/lib/format/part-checks.d.ts +3 -0
  122. package/src/lib/format/payment-checks.d.mts +13 -0
  123. package/src/lib/format/payment-checks.d.ts +13 -0
  124. package/src/lib/format/payment-checks.js +30 -0
  125. package/src/lib/format/payment-checks.js.map +1 -0
  126. package/src/lib/format/payment-checks.mjs +27 -0
  127. package/src/lib/format/payment-checks.mjs.map +1 -0
  128. package/src/lib/format/payment.d.mts +37 -0
  129. package/src/lib/format/payment.d.ts +37 -0
  130. package/src/lib/format/payment.js +15 -0
  131. package/src/lib/format/payment.js.map +1 -0
  132. package/src/lib/format/payment.mjs +12 -0
  133. package/src/lib/format/payment.mjs.map +1 -0
  134. package/src/lib/format/phone.js +3 -0
  135. package/src/lib/format/phone.js.map +1 -1
  136. package/src/lib/format/phone.mjs +3 -0
  137. package/src/lib/format/phone.mjs.map +1 -1
  138. package/src/lib/format/picker-options.d.mts +12 -0
  139. package/src/lib/format/picker-options.d.ts +12 -0
  140. package/src/lib/format/picker-options.js +21 -3
  141. package/src/lib/format/picker-options.js.map +1 -1
  142. package/src/lib/format/picker-options.mjs +20 -2
  143. package/src/lib/format/picker-options.mjs.map +1 -1
  144. package/src/lib/format/prefill-checks.d.mts +13 -0
  145. package/src/lib/format/prefill-checks.d.ts +13 -0
  146. package/src/lib/format/prefill-checks.js +35 -0
  147. package/src/lib/format/prefill-checks.js.map +1 -0
  148. package/src/lib/format/prefill-checks.mjs +32 -0
  149. package/src/lib/format/prefill-checks.mjs.map +1 -0
  150. package/src/lib/format/prefill.d.mts +33 -0
  151. package/src/lib/format/prefill.d.ts +33 -0
  152. package/src/lib/format/prefill.js +20 -0
  153. package/src/lib/format/prefill.js.map +1 -0
  154. package/src/lib/format/prefill.mjs +17 -0
  155. package/src/lib/format/prefill.mjs.map +1 -0
  156. package/src/lib/format/quiz.d.mts +58 -0
  157. package/src/lib/format/quiz.d.ts +58 -0
  158. package/src/lib/format/quiz.js +24 -0
  159. package/src/lib/format/quiz.js.map +1 -0
  160. package/src/lib/format/quiz.mjs +21 -0
  161. package/src/lib/format/quiz.mjs.map +1 -0
  162. package/src/lib/format/records.js +3 -0
  163. package/src/lib/format/records.js.map +1 -1
  164. package/src/lib/format/records.mjs +3 -0
  165. package/src/lib/format/records.mjs.map +1 -1
  166. package/src/lib/format/references.d.mts +1 -1
  167. package/src/lib/format/references.d.ts +1 -1
  168. package/src/lib/format/references.js +56 -7
  169. package/src/lib/format/references.js.map +1 -1
  170. package/src/lib/format/references.mjs +57 -8
  171. package/src/lib/format/references.mjs.map +1 -1
  172. package/src/lib/format/schedule-checks.d.mts +8 -0
  173. package/src/lib/format/schedule-checks.d.ts +8 -0
  174. package/src/lib/format/schedule-checks.js +16 -0
  175. package/src/lib/format/schedule-checks.js.map +1 -0
  176. package/src/lib/format/schedule-checks.mjs +13 -0
  177. package/src/lib/format/schedule-checks.mjs.map +1 -0
  178. package/src/lib/format/signature-checks.d.mts +8 -0
  179. package/src/lib/format/signature-checks.d.ts +8 -0
  180. package/src/lib/format/signature-checks.js +21 -0
  181. package/src/lib/format/signature-checks.js.map +1 -1
  182. package/src/lib/format/signature-checks.mjs +20 -0
  183. package/src/lib/format/signature-checks.mjs.map +1 -1
  184. package/src/lib/format/signature-options.js +3 -0
  185. package/src/lib/format/signature-options.js.map +1 -1
  186. package/src/lib/format/signature-options.mjs +3 -0
  187. package/src/lib/format/signature-options.mjs.map +1 -1
  188. package/src/lib/format/slots-options.js +3 -0
  189. package/src/lib/format/slots-options.js.map +1 -1
  190. package/src/lib/format/slots-options.mjs +3 -0
  191. package/src/lib/format/slots-options.mjs.map +1 -1
  192. package/src/lib/format/templates-checks.d.mts +6 -0
  193. package/src/lib/format/templates-checks.d.ts +6 -0
  194. package/src/lib/format/templates-checks.js +16 -0
  195. package/src/lib/format/templates-checks.js.map +1 -0
  196. package/src/lib/format/templates-checks.mjs +13 -0
  197. package/src/lib/format/templates-checks.mjs.map +1 -0
  198. package/src/lib/format/translate.d.mts +2 -0
  199. package/src/lib/format/translate.d.ts +2 -0
  200. package/src/lib/format/translate.js +6 -2
  201. package/src/lib/format/translate.js.map +1 -1
  202. package/src/lib/format/translate.mjs +4 -2
  203. package/src/lib/format/translate.mjs.map +1 -1
  204. package/src/lib/format/typed-options.d.mts +43 -0
  205. package/src/lib/format/typed-options.d.ts +43 -0
  206. package/src/lib/format/typed-options.js +50 -0
  207. package/src/lib/format/typed-options.js.map +1 -0
  208. package/src/lib/format/typed-options.mjs +46 -0
  209. package/src/lib/format/typed-options.mjs.map +1 -0
  210. package/src/lib/format/upgrade.d.mts +5 -1
  211. package/src/lib/format/upgrade.d.ts +5 -1
  212. package/src/lib/format/upgrade.js +5 -1
  213. package/src/lib/format/upgrade.js.map +1 -1
  214. package/src/lib/format/upgrade.mjs +5 -1
  215. package/src/lib/format/upgrade.mjs.map +1 -1
  216. package/src/lib/format/validate.js +3 -0
  217. package/src/lib/format/validate.js.map +1 -1
  218. package/src/lib/format/validate.mjs +3 -0
  219. package/src/lib/format/validate.mjs.map +1 -1
  220. package/src/lib/format/verify-checks.d.mts +10 -0
  221. package/src/lib/format/verify-checks.d.ts +10 -0
  222. package/src/lib/format/verify-checks.js +44 -0
  223. package/src/lib/format/verify-checks.js.map +1 -0
  224. package/src/lib/format/verify-checks.mjs +41 -0
  225. package/src/lib/format/verify-checks.mjs.map +1 -0
  226. package/src/lib/format/version.d.mts +2 -2
  227. package/src/lib/format/version.d.ts +2 -2
  228. package/src/lib/format/version.js +2 -2
  229. package/src/lib/format/version.js.map +1 -1
  230. package/src/lib/format/version.mjs +2 -2
  231. package/src/lib/format/version.mjs.map +1 -1
  232. package/src/lib/format/week.d.mts +18 -0
  233. package/src/lib/format/week.d.ts +18 -0
  234. package/src/lib/format/week.js +58 -0
  235. package/src/lib/format/week.js.map +1 -0
  236. package/src/lib/format/week.mjs +55 -0
  237. package/src/lib/format/week.mjs.map +1 -0
  238. package/src/lib/record/approvals-part.d.mts +1 -1
  239. package/src/lib/record/approvals-part.d.ts +1 -1
  240. package/src/lib/record/approvals-part.js +2 -2
  241. package/src/lib/record/approvals-part.js.map +1 -1
  242. package/src/lib/record/approvals-part.mjs +1 -1
  243. package/src/lib/record/approvals-part.mjs.map +1 -1
  244. package/src/lib/record/data-source.d.mts +337 -3
  245. package/src/lib/record/data-source.d.ts +337 -3
  246. package/src/lib/record/data-source.js.map +1 -1
  247. package/src/lib/record/data-source.mjs.map +1 -1
  248. package/src/lib/record/day-words.d.mts +22 -1
  249. package/src/lib/record/day-words.d.ts +22 -1
  250. package/src/lib/record/day-words.js +29 -2
  251. package/src/lib/record/day-words.js.map +1 -1
  252. package/src/lib/record/day-words.mjs +24 -2
  253. package/src/lib/record/day-words.mjs.map +1 -1
  254. package/src/lib/record/files-part.d.mts +1 -0
  255. package/src/lib/record/files-part.d.ts +1 -0
  256. package/src/lib/record/files-part.js +7 -1
  257. package/src/lib/record/files-part.js.map +1 -1
  258. package/src/lib/record/files-part.mjs +5 -1
  259. package/src/lib/record/files-part.mjs.map +1 -1
  260. package/src/lib/record/form-approvals.d.mts +12 -17
  261. package/src/lib/record/form-approvals.d.ts +12 -17
  262. package/src/lib/record/form-approvals.js +15 -9
  263. package/src/lib/record/form-approvals.js.map +1 -1
  264. package/src/lib/record/form-approvals.mjs +14 -8
  265. package/src/lib/record/form-approvals.mjs.map +1 -1
  266. package/src/lib/record/form-limits.d.mts +4 -28
  267. package/src/lib/record/form-limits.d.ts +4 -28
  268. package/src/lib/record/form-limits.js +8 -5
  269. package/src/lib/record/form-limits.js.map +1 -1
  270. package/src/lib/record/form-limits.mjs +8 -5
  271. package/src/lib/record/form-limits.mjs.map +1 -1
  272. package/src/lib/record/form.d.mts +125 -7
  273. package/src/lib/record/form.d.ts +125 -7
  274. package/src/lib/record/form.js +277 -77
  275. package/src/lib/record/form.js.map +1 -1
  276. package/src/lib/record/form.mjs +278 -78
  277. package/src/lib/record/form.mjs.map +1 -1
  278. package/src/lib/record/history-steps.d.mts +38 -0
  279. package/src/lib/record/history-steps.d.ts +38 -0
  280. package/src/lib/record/history-steps.js +63 -0
  281. package/src/lib/record/history-steps.js.map +1 -0
  282. package/src/lib/record/history-steps.mjs +58 -0
  283. package/src/lib/record/history-steps.mjs.map +1 -0
  284. package/src/lib/record/history.d.mts +16 -0
  285. package/src/lib/record/history.d.ts +16 -0
  286. package/src/lib/record/history.js +3 -0
  287. package/src/lib/record/history.js.map +1 -0
  288. package/src/lib/record/history.mjs +2 -0
  289. package/src/lib/record/history.mjs.map +1 -0
  290. package/src/lib/record/input-rules.d.mts +2 -0
  291. package/src/lib/record/input-rules.d.ts +2 -0
  292. package/src/lib/record/input-rules.js +4 -1
  293. package/src/lib/record/input-rules.js.map +1 -1
  294. package/src/lib/record/input-rules.mjs +2 -0
  295. package/src/lib/record/input-rules.mjs.map +1 -1
  296. package/src/lib/record/joins.d.mts +143 -0
  297. package/src/lib/record/joins.d.ts +143 -0
  298. package/src/lib/record/joins.js +28 -0
  299. package/src/lib/record/joins.js.map +1 -0
  300. package/src/lib/record/joins.mjs +24 -0
  301. package/src/lib/record/joins.mjs.map +1 -0
  302. package/src/lib/record/limits.js +7 -4
  303. package/src/lib/record/limits.js.map +1 -1
  304. package/src/lib/record/limits.mjs +8 -5
  305. package/src/lib/record/limits.mjs.map +1 -1
  306. package/src/lib/record/link-values.d.mts +31 -0
  307. package/src/lib/record/link-values.d.ts +31 -0
  308. package/src/lib/record/link-values.js +132 -0
  309. package/src/lib/record/link-values.js.map +1 -0
  310. package/src/lib/record/link-values.mjs +125 -0
  311. package/src/lib/record/link-values.mjs.map +1 -0
  312. package/src/lib/record/live-later.d.mts +15 -0
  313. package/src/lib/record/live-later.d.ts +15 -0
  314. package/src/lib/record/live-later.js +10 -0
  315. package/src/lib/record/live-later.js.map +1 -0
  316. package/src/lib/record/live-later.mjs +7 -0
  317. package/src/lib/record/live-later.mjs.map +1 -0
  318. package/src/lib/record/live-part.d.mts +6 -0
  319. package/src/lib/record/live-part.d.ts +6 -0
  320. package/src/lib/record/live-part.js +12 -0
  321. package/src/lib/record/live-part.js.map +1 -0
  322. package/src/lib/record/live-part.mjs +7 -0
  323. package/src/lib/record/live-part.mjs.map +1 -0
  324. package/src/lib/record/live.d.mts +8 -0
  325. package/src/lib/record/live.d.ts +8 -0
  326. package/src/lib/record/live.js +133 -0
  327. package/src/lib/record/live.js.map +1 -0
  328. package/src/lib/record/live.mjs +129 -0
  329. package/src/lib/record/live.mjs.map +1 -0
  330. package/src/lib/record/locales/all.d.mts +5 -5
  331. package/src/lib/record/locales/all.d.ts +5 -5
  332. package/src/lib/record/locales/all.js +3 -3
  333. package/src/lib/record/locales/all.js.map +1 -1
  334. package/src/lib/record/locales/all.mjs +3 -3
  335. package/src/lib/record/locales/all.mjs.map +1 -1
  336. package/src/lib/record/locales/ar.js +11 -1
  337. package/src/lib/record/locales/ar.js.map +1 -1
  338. package/src/lib/record/locales/ar.mjs +11 -1
  339. package/src/lib/record/locales/ar.mjs.map +1 -1
  340. package/src/lib/record/locales/de.js +11 -1
  341. package/src/lib/record/locales/de.js.map +1 -1
  342. package/src/lib/record/locales/de.mjs +11 -1
  343. package/src/lib/record/locales/de.mjs.map +1 -1
  344. package/src/lib/record/locales/es.d.mts +8 -0
  345. package/src/lib/record/locales/es.d.ts +8 -0
  346. package/src/lib/record/locales/es.js +111 -0
  347. package/src/lib/record/locales/es.js.map +1 -0
  348. package/src/lib/record/locales/es.mjs +108 -0
  349. package/src/lib/record/locales/es.mjs.map +1 -0
  350. package/src/lib/record/locales/fa.d.mts +5 -0
  351. package/src/lib/record/locales/fa.d.ts +5 -0
  352. package/src/lib/record/locales/fa.js +117 -0
  353. package/src/lib/record/locales/fa.js.map +1 -0
  354. package/src/lib/record/locales/fa.mjs +114 -0
  355. package/src/lib/record/locales/fa.mjs.map +1 -0
  356. package/src/lib/record/locales/fr.js +11 -1
  357. package/src/lib/record/locales/fr.js.map +1 -1
  358. package/src/lib/record/locales/fr.mjs +11 -1
  359. package/src/lib/record/locales/fr.mjs.map +1 -1
  360. package/src/lib/record/locales/later.d.mts +8 -0
  361. package/src/lib/record/locales/later.d.ts +8 -0
  362. package/src/lib/record/locales/later.js +16 -0
  363. package/src/lib/record/locales/later.js.map +1 -0
  364. package/src/lib/record/locales/later.mjs +13 -0
  365. package/src/lib/record/locales/later.mjs.map +1 -0
  366. package/src/lib/record/locales/tr.d.mts +6 -0
  367. package/src/lib/record/locales/tr.d.ts +6 -0
  368. package/src/lib/record/locales/tr.js +118 -0
  369. package/src/lib/record/locales/tr.js.map +1 -0
  370. package/src/lib/record/locales/tr.mjs +115 -0
  371. package/src/lib/record/locales/tr.mjs.map +1 -0
  372. package/src/lib/record/locales/ur.d.mts +9 -0
  373. package/src/lib/record/locales/ur.d.ts +9 -0
  374. package/src/lib/record/locales/ur.js +118 -0
  375. package/src/lib/record/locales/ur.js.map +1 -0
  376. package/src/lib/record/locales/ur.mjs +115 -0
  377. package/src/lib/record/locales/ur.mjs.map +1 -0
  378. package/src/lib/record/memory-approvals.d.mts +7 -4
  379. package/src/lib/record/memory-approvals.d.ts +7 -4
  380. package/src/lib/record/memory-approvals.js +54 -7
  381. package/src/lib/record/memory-approvals.js.map +1 -1
  382. package/src/lib/record/memory-approvals.mjs +54 -7
  383. package/src/lib/record/memory-approvals.mjs.map +1 -1
  384. package/src/lib/record/memory-assist.d.mts +7 -2
  385. package/src/lib/record/memory-assist.d.ts +7 -2
  386. package/src/lib/record/memory-assist.js +47 -12
  387. package/src/lib/record/memory-assist.js.map +1 -1
  388. package/src/lib/record/memory-assist.mjs +46 -12
  389. package/src/lib/record/memory-assist.mjs.map +1 -1
  390. package/src/lib/record/memory-codes.d.mts +37 -0
  391. package/src/lib/record/memory-codes.d.ts +37 -0
  392. package/src/lib/record/memory-codes.js +50 -0
  393. package/src/lib/record/memory-codes.js.map +1 -0
  394. package/src/lib/record/memory-codes.mjs +47 -0
  395. package/src/lib/record/memory-codes.mjs.map +1 -0
  396. package/src/lib/record/memory-data-source.d.mts +60 -4
  397. package/src/lib/record/memory-data-source.d.ts +60 -4
  398. package/src/lib/record/memory-data-source.js +69 -1
  399. package/src/lib/record/memory-data-source.js.map +1 -1
  400. package/src/lib/record/memory-data-source.mjs +69 -1
  401. package/src/lib/record/memory-data-source.mjs.map +1 -1
  402. package/src/lib/record/memory-kept.d.mts +3 -1
  403. package/src/lib/record/memory-kept.d.ts +3 -1
  404. package/src/lib/record/memory-kept.js +7 -2
  405. package/src/lib/record/memory-kept.js.map +1 -1
  406. package/src/lib/record/memory-kept.mjs +7 -2
  407. package/src/lib/record/memory-kept.mjs.map +1 -1
  408. package/src/lib/record/memory-later.d.mts +3 -1
  409. package/src/lib/record/memory-later.d.ts +3 -1
  410. package/src/lib/record/memory-later.js +9 -5
  411. package/src/lib/record/memory-later.js.map +1 -1
  412. package/src/lib/record/memory-later.mjs +8 -4
  413. package/src/lib/record/memory-later.mjs.map +1 -1
  414. package/src/lib/record/memory-live.d.mts +8 -0
  415. package/src/lib/record/memory-live.d.ts +8 -0
  416. package/src/lib/record/memory-live.js +70 -0
  417. package/src/lib/record/memory-live.js.map +1 -0
  418. package/src/lib/record/memory-live.mjs +67 -0
  419. package/src/lib/record/memory-live.mjs.map +1 -0
  420. package/src/lib/record/memory-views.d.mts +11 -0
  421. package/src/lib/record/memory-views.d.ts +11 -0
  422. package/src/lib/record/memory-views.js +60 -0
  423. package/src/lib/record/memory-views.js.map +1 -0
  424. package/src/lib/record/memory-views.mjs +57 -0
  425. package/src/lib/record/memory-views.mjs.map +1 -0
  426. package/src/lib/record/messages.d.mts +24 -3
  427. package/src/lib/record/messages.d.ts +24 -3
  428. package/src/lib/record/messages.js +18 -3
  429. package/src/lib/record/messages.js.map +1 -1
  430. package/src/lib/record/messages.mjs +18 -3
  431. package/src/lib/record/messages.mjs.map +1 -1
  432. package/src/lib/record/order.d.mts +21 -0
  433. package/src/lib/record/order.d.ts +21 -0
  434. package/src/lib/record/order.js +129 -0
  435. package/src/lib/record/order.js.map +1 -0
  436. package/src/lib/record/order.mjs +122 -0
  437. package/src/lib/record/order.mjs.map +1 -0
  438. package/src/lib/record/outbox-form.d.mts +79 -0
  439. package/src/lib/record/outbox-form.d.ts +79 -0
  440. package/src/lib/record/outbox-form.js +291 -0
  441. package/src/lib/record/outbox-form.js.map +1 -0
  442. package/src/lib/record/outbox-form.mjs +286 -0
  443. package/src/lib/record/outbox-form.mjs.map +1 -0
  444. package/src/lib/record/outbox-part.d.mts +6 -0
  445. package/src/lib/record/outbox-part.d.ts +6 -0
  446. package/src/lib/record/outbox-part.js +13 -0
  447. package/src/lib/record/outbox-part.js.map +1 -0
  448. package/src/lib/record/outbox-part.mjs +7 -0
  449. package/src/lib/record/outbox-part.mjs.map +1 -0
  450. package/src/lib/record/pay-part.d.mts +6 -0
  451. package/src/lib/record/pay-part.d.ts +6 -0
  452. package/src/lib/record/pay-part.js +11 -0
  453. package/src/lib/record/pay-part.js.map +1 -0
  454. package/src/lib/record/pay-part.mjs +7 -0
  455. package/src/lib/record/pay-part.mjs.map +1 -0
  456. package/src/lib/record/payment-form.d.mts +25 -0
  457. package/src/lib/record/payment-form.d.ts +25 -0
  458. package/src/lib/record/payment-form.js +98 -0
  459. package/src/lib/record/payment-form.js.map +1 -0
  460. package/src/lib/record/payment-form.mjs +95 -0
  461. package/src/lib/record/payment-form.mjs.map +1 -0
  462. package/src/lib/record/prefill-part.d.mts +7 -0
  463. package/src/lib/record/prefill-part.d.ts +7 -0
  464. package/src/lib/record/prefill-part.js +15 -0
  465. package/src/lib/record/prefill-part.js.map +1 -0
  466. package/src/lib/record/prefill-part.mjs +8 -0
  467. package/src/lib/record/prefill-part.mjs.map +1 -0
  468. package/src/lib/record/press-undo.d.mts +42 -0
  469. package/src/lib/record/press-undo.d.ts +42 -0
  470. package/src/lib/record/press-undo.js +115 -0
  471. package/src/lib/record/press-undo.js.map +1 -0
  472. package/src/lib/record/press-undo.mjs +110 -0
  473. package/src/lib/record/press-undo.mjs.map +1 -0
  474. package/src/lib/record/quiz.d.mts +36 -0
  475. package/src/lib/record/quiz.d.ts +36 -0
  476. package/src/lib/record/quiz.js +90 -0
  477. package/src/lib/record/quiz.js.map +1 -0
  478. package/src/lib/record/quiz.mjs +87 -0
  479. package/src/lib/record/quiz.mjs.map +1 -0
  480. package/src/lib/record/record-words.js +1 -1
  481. package/src/lib/record/record-words.js.map +1 -1
  482. package/src/lib/record/record-words.mjs +1 -1
  483. package/src/lib/record/record-words.mjs.map +1 -1
  484. package/src/lib/record/run.d.mts +71 -8
  485. package/src/lib/record/run.d.ts +71 -8
  486. package/src/lib/record/run.js +40 -13
  487. package/src/lib/record/run.js.map +1 -1
  488. package/src/lib/record/run.mjs +38 -12
  489. package/src/lib/record/run.mjs.map +1 -1
  490. package/src/lib/record/survey-kit.d.mts +37 -0
  491. package/src/lib/record/survey-kit.d.ts +37 -0
  492. package/src/lib/record/survey-kit.js +99 -0
  493. package/src/lib/record/survey-kit.js.map +1 -0
  494. package/src/lib/record/survey-kit.mjs +96 -0
  495. package/src/lib/record/survey-kit.mjs.map +1 -0
  496. package/src/lib/record/survey.d.mts +16 -0
  497. package/src/lib/record/survey.d.ts +16 -0
  498. package/src/lib/record/survey.js +17 -0
  499. package/src/lib/record/survey.js.map +1 -0
  500. package/src/lib/record/survey.mjs +13 -0
  501. package/src/lib/record/survey.mjs.map +1 -0
  502. package/src/lib/record/surveyflow-part.d.mts +9 -0
  503. package/src/lib/record/surveyflow-part.d.ts +9 -0
  504. package/src/lib/record/surveyflow-part.js +20 -0
  505. package/src/lib/record/surveyflow-part.js.map +1 -0
  506. package/src/lib/record/surveyflow-part.mjs +10 -0
  507. package/src/lib/record/surveyflow-part.mjs.map +1 -0
  508. package/src/lib/record/timing.d.mts +76 -0
  509. package/src/lib/record/timing.d.ts +76 -0
  510. package/src/lib/record/timing.js +112 -0
  511. package/src/lib/record/timing.js.map +1 -0
  512. package/src/lib/record/timing.mjs +104 -0
  513. package/src/lib/record/timing.mjs.map +1 -0
  514. package/src/lib/record/undo-later.d.mts +9 -0
  515. package/src/lib/record/undo-later.d.ts +9 -0
  516. package/src/lib/record/undo-later.js +10 -0
  517. package/src/lib/record/undo-later.js.map +1 -0
  518. package/src/lib/record/undo-later.mjs +7 -0
  519. package/src/lib/record/undo-later.mjs.map +1 -0
  520. package/src/lib/record/undo-part.d.mts +8 -0
  521. package/src/lib/record/undo-part.d.ts +8 -0
  522. package/src/lib/record/undo-part.js +17 -0
  523. package/src/lib/record/undo-part.js.map +1 -0
  524. package/src/lib/record/undo-part.mjs +9 -0
  525. package/src/lib/record/undo-part.mjs.map +1 -0
  526. package/src/lib/record/upload-to-later.d.mts +10 -0
  527. package/src/lib/record/upload-to-later.d.ts +10 -0
  528. package/src/lib/record/upload-to-later.js +15 -0
  529. package/src/lib/record/upload-to-later.js.map +1 -0
  530. package/src/lib/record/upload-to-later.mjs +12 -0
  531. package/src/lib/record/upload-to-later.mjs.map +1 -0
  532. package/src/lib/record/uploads.d.mts +5 -0
  533. package/src/lib/record/uploads.d.ts +5 -0
  534. package/src/lib/record/uploads.js.map +1 -1
  535. package/src/lib/record/uploads.mjs.map +1 -1
  536. package/src/lib/record/values.d.mts +6 -0
  537. package/src/lib/record/values.d.ts +6 -0
  538. package/src/lib/record/values.js.map +1 -1
  539. package/src/lib/record/values.mjs.map +1 -1
  540. package/src/lib/record/verify-form.d.mts +24 -0
  541. package/src/lib/record/verify-form.d.ts +24 -0
  542. package/src/lib/record/verify-form.js +65 -0
  543. package/src/lib/record/verify-form.js.map +1 -0
  544. package/src/lib/record/verify-form.mjs +62 -0
  545. package/src/lib/record/verify-form.mjs.map +1 -0
  546. package/src/lib/record/verify-part.d.mts +6 -0
  547. package/src/lib/record/verify-part.d.ts +6 -0
  548. package/src/lib/record/verify-part.js +11 -0
  549. package/src/lib/record/verify-part.js.map +1 -0
  550. package/src/lib/record/verify-part.mjs +7 -0
  551. package/src/lib/record/verify-part.mjs.map +1 -0
  552. package/src/lib/record/words-chunks.d.mts +37 -0
  553. package/src/lib/record/words-chunks.d.ts +37 -0
  554. package/src/lib/record/words-chunks.js +94 -0
  555. package/src/lib/record/words-chunks.js.map +1 -0
  556. package/src/lib/record/words-chunks.mjs +86 -0
  557. package/src/lib/record/words-chunks.mjs.map +1 -0
  558. package/src/runtime.d.mts +28 -6
  559. package/src/runtime.d.ts +28 -6
  560. package/src/runtime.js +35 -6
  561. package/src/runtime.js.map +1 -1
  562. package/src/runtime.mjs +15 -3
  563. package/src/runtime.mjs.map +1 -1
@@ -0,0 +1,76 @@
1
+ import type { Page } from '../format/page.mjs';
2
+ import type { FormState } from './form.mjs';
3
+ import type { Scheduler } from './scheduler.mjs';
4
+ /**
5
+ * A page's time limits (`timeLimit` on the page and on a wizard's steps), the survey flow's part's: what each allows, when it
6
+ * warns and what it does as it runs out, and the countdown showing now — the page's while it runs, else the step on
7
+ * screen's. The form keeps when each started (`state.timers`, kept in its drafts) and which ran out (`state.timeUp`).
8
+ */
9
+ /** The page's own limit's scope: a step's is its id. */
10
+ export declare const WHOLE_FORM = "#form";
11
+ /** A time limit as it is kept to: in ms, its warning's too, what it does. */
12
+ export interface Limit {
13
+ scope: string;
14
+ ms: number;
15
+ warnMs: number;
16
+ then: 'send' | 'lock';
17
+ }
18
+ /** The countdown showing now. */
19
+ export interface Countdown extends Limit {
20
+ /** When it started and ends, by the form's clock (ms). */
21
+ started: number;
22
+ ends: number;
23
+ /** What is left, in ms, never below 0. */
24
+ left: number;
25
+ /** Running, past its warning, or run out. */
26
+ stage: 'running' | 'warning' | 'up';
27
+ }
28
+ /** Whether a page of responses has a time limit: its own (`timeLimit`), or a step's. */
29
+ export declare const timed: (page: Page) => boolean;
30
+ /** Every time limit of a page, by scope: the page's (`#form`), each step's by its id. */
31
+ export declare function limitsOf(page: Page): Record<string, Limit>;
32
+ /** A limit's countdown, started then, read now. */
33
+ export declare function countdownOf(limit: Limit, started: number, now: number): Countdown;
34
+ /**
35
+ * The countdown showing now: the page's while it runs (or has run out), else the step's on screen; null where neither
36
+ * has started.
37
+ */
38
+ export declare function countdownNow(page: Page, timers: Readonly<Record<string, number>>, step: string | null, now: number): Countdown | null;
39
+ /** What a form's time limits ask of the form they are kept for. */
40
+ export interface TimeHost {
41
+ readonly page: Page;
42
+ readonly scheduler: Scheduler;
43
+ /** Now, in ms, by the form's clock. */
44
+ clock(): number;
45
+ state(): FormState;
46
+ set(patch: Partial<FormState>): void;
47
+ /** The steps shown now, in their order. */
48
+ steps(): string[];
49
+ disposed(): boolean;
50
+ /** Keep a draft soon, where the form keeps drafts: a clock started is kept at once. */
51
+ keep(): void;
52
+ }
53
+ /** A form's time limits, kept (`keepTime`). */
54
+ export interface TimeKit {
55
+ /** The page's limit started: its Start pressed. */
56
+ start(): void;
57
+ /** A step entered: its own limit, if any, starts the first time. */
58
+ entered(step: string): void;
59
+ /** Each started limit set to run out on time — at once, for one past its end. */
60
+ arm(): void;
61
+ /** Started again: no limit started, none set to run out. */
62
+ reset(): void;
63
+ /** The countdown showing now. */
64
+ countdown(): Countdown | null;
65
+ /** What a send tells of the page's limit: when it started, whether it ran out. */
66
+ told(): {
67
+ started?: string;
68
+ timeUp?: boolean;
69
+ };
70
+ }
71
+ /**
72
+ * A form's time limits: each started limit set to run out on the form's clock; as it does, its answers locked
73
+ * (`state.timeUp`) and — a step's that locks, on screen — the form gone on to the next step. A page's whose answers go
74
+ * as it runs out leaves the send to the viewer (or the app), which watches `timeUp`.
75
+ */
76
+ export declare function keepTime(host: TimeHost): TimeKit;
@@ -0,0 +1,76 @@
1
+ import type { Page } from '../format/page';
2
+ import type { FormState } from './form';
3
+ import type { Scheduler } from './scheduler';
4
+ /**
5
+ * A page's time limits (`timeLimit` on the page and on a wizard's steps), the survey flow's part's: what each allows, when it
6
+ * warns and what it does as it runs out, and the countdown showing now — the page's while it runs, else the step on
7
+ * screen's. The form keeps when each started (`state.timers`, kept in its drafts) and which ran out (`state.timeUp`).
8
+ */
9
+ /** The page's own limit's scope: a step's is its id. */
10
+ export declare const WHOLE_FORM = "#form";
11
+ /** A time limit as it is kept to: in ms, its warning's too, what it does. */
12
+ export interface Limit {
13
+ scope: string;
14
+ ms: number;
15
+ warnMs: number;
16
+ then: 'send' | 'lock';
17
+ }
18
+ /** The countdown showing now. */
19
+ export interface Countdown extends Limit {
20
+ /** When it started and ends, by the form's clock (ms). */
21
+ started: number;
22
+ ends: number;
23
+ /** What is left, in ms, never below 0. */
24
+ left: number;
25
+ /** Running, past its warning, or run out. */
26
+ stage: 'running' | 'warning' | 'up';
27
+ }
28
+ /** Whether a page of responses has a time limit: its own (`timeLimit`), or a step's. */
29
+ export declare const timed: (page: Page) => boolean;
30
+ /** Every time limit of a page, by scope: the page's (`#form`), each step's by its id. */
31
+ export declare function limitsOf(page: Page): Record<string, Limit>;
32
+ /** A limit's countdown, started then, read now. */
33
+ export declare function countdownOf(limit: Limit, started: number, now: number): Countdown;
34
+ /**
35
+ * The countdown showing now: the page's while it runs (or has run out), else the step's on screen; null where neither
36
+ * has started.
37
+ */
38
+ export declare function countdownNow(page: Page, timers: Readonly<Record<string, number>>, step: string | null, now: number): Countdown | null;
39
+ /** What a form's time limits ask of the form they are kept for. */
40
+ export interface TimeHost {
41
+ readonly page: Page;
42
+ readonly scheduler: Scheduler;
43
+ /** Now, in ms, by the form's clock. */
44
+ clock(): number;
45
+ state(): FormState;
46
+ set(patch: Partial<FormState>): void;
47
+ /** The steps shown now, in their order. */
48
+ steps(): string[];
49
+ disposed(): boolean;
50
+ /** Keep a draft soon, where the form keeps drafts: a clock started is kept at once. */
51
+ keep(): void;
52
+ }
53
+ /** A form's time limits, kept (`keepTime`). */
54
+ export interface TimeKit {
55
+ /** The page's limit started: its Start pressed. */
56
+ start(): void;
57
+ /** A step entered: its own limit, if any, starts the first time. */
58
+ entered(step: string): void;
59
+ /** Each started limit set to run out on time — at once, for one past its end. */
60
+ arm(): void;
61
+ /** Started again: no limit started, none set to run out. */
62
+ reset(): void;
63
+ /** The countdown showing now. */
64
+ countdown(): Countdown | null;
65
+ /** What a send tells of the page's limit: when it started, whether it ran out. */
66
+ told(): {
67
+ started?: string;
68
+ timeUp?: boolean;
69
+ };
70
+ }
71
+ /**
72
+ * A form's time limits: each started limit set to run out on the form's clock; as it does, its answers locked
73
+ * (`state.timeUp`) and — a step's that locks, on screen — the form gone on to the next step. A page's whose answers go
74
+ * as it runs out leaves the send to the viewer (or the app), which watches `timeUp`.
75
+ */
76
+ export declare function keepTime(host: TimeHost): TimeKit;
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.timed = exports.WHOLE_FORM = void 0;
4
+ exports.limitsOf = limitsOf;
5
+ exports.countdownOf = countdownOf;
6
+ exports.countdownNow = countdownNow;
7
+ exports.keepTime = keepTime;
8
+ /**
9
+ * A page's time limits (`timeLimit` on the page and on a wizard's steps), the survey flow's part's: what each allows, when it
10
+ * warns and what it does as it runs out, and the countdown showing now — the page's while it runs, else the step on
11
+ * screen's. The form keeps when each started (`state.timers`, kept in its drafts) and which ran out (`state.timeUp`).
12
+ */
13
+ /** The page's own limit's scope: a step's is its id. */
14
+ exports.WHOLE_FORM = '#form';
15
+ const MINUTE = 60_000;
16
+ function limitOf(scope, limit, step) {
17
+ const ms = limit.minutes * MINUTE;
18
+ return { scope, ms, warnMs: (limit.warn ?? Math.min(1, limit.minutes / 5)) * MINUTE, then: limit.then ?? (step ? 'lock' : 'send') };
19
+ }
20
+ /** Whether a page of responses has a time limit: its own (`timeLimit`), or a step's. */
21
+ const timed = (page) => page.data.kind === 'responses' && (!!page.timeLimit || (page.layout.type === 'wizard' && page.layout.children.some((step) => !!step.timeLimit)));
22
+ exports.timed = timed;
23
+ /** Every time limit of a page, by scope: the page's (`#form`), each step's by its id. */
24
+ function limitsOf(page) {
25
+ const out = {};
26
+ if (page.data.kind !== 'responses')
27
+ return out;
28
+ if (page.timeLimit)
29
+ out[exports.WHOLE_FORM] = limitOf(exports.WHOLE_FORM, page.timeLimit, false);
30
+ if (page.layout.type === 'wizard')
31
+ for (const step of page.layout.children)
32
+ if (step.timeLimit)
33
+ out[step.id] = limitOf(step.id, step.timeLimit, true);
34
+ return out;
35
+ }
36
+ /** A limit's countdown, started then, read now. */
37
+ function countdownOf(limit, started, now) {
38
+ const ends = started + limit.ms;
39
+ const left = Math.max(0, ends - now);
40
+ return { ...limit, started, ends, left, stage: left === 0 ? 'up' : left <= limit.warnMs ? 'warning' : 'running' };
41
+ }
42
+ /**
43
+ * The countdown showing now: the page's while it runs (or has run out), else the step's on screen; null where neither
44
+ * has started.
45
+ */
46
+ function countdownNow(page, timers, step, now) {
47
+ const limits = limitsOf(page);
48
+ const whole = limits[exports.WHOLE_FORM];
49
+ if (whole && timers[exports.WHOLE_FORM] !== undefined)
50
+ return countdownOf(whole, timers[exports.WHOLE_FORM], now);
51
+ const own = step ? limits[step] : undefined;
52
+ if (own && timers[own.scope] !== undefined)
53
+ return countdownOf(own, timers[own.scope], now);
54
+ return null;
55
+ }
56
+ /**
57
+ * A form's time limits: each started limit set to run out on the form's clock; as it does, its answers locked
58
+ * (`state.timeUp`) and — a step's that locks, on screen — the form gone on to the next step. A page's whose answers go
59
+ * as it runs out leaves the send to the viewer (or the app), which watches `timeUp`.
60
+ */
61
+ function keepTime(host) {
62
+ const { page, scheduler } = host;
63
+ const limits = limitsOf(page);
64
+ const running = new Map();
65
+ const begin = (scope) => {
66
+ const state = host.state();
67
+ if (!limits[scope] || state.timers[scope] !== undefined)
68
+ return;
69
+ host.set({ timers: { ...state.timers, [scope]: host.clock() } });
70
+ kit.arm();
71
+ host.keep();
72
+ };
73
+ function ranOut(scope) {
74
+ running.delete(scope);
75
+ const state = host.state();
76
+ if (host.disposed() || state.timeUp.includes(scope) || state.sent)
77
+ return;
78
+ const shown = host.steps();
79
+ const following = scope !== exports.WHOLE_FORM && limits[scope].then === 'lock' && state.step === scope ? shown[shown.indexOf(scope) + 1] : undefined;
80
+ host.set({ timeUp: [...state.timeUp, scope], ...(following ? { step: following, errors: {} } : {}) });
81
+ }
82
+ const kit = {
83
+ start: () => begin(exports.WHOLE_FORM),
84
+ entered: (step) => begin(step),
85
+ arm() {
86
+ const state = host.state();
87
+ for (const [scope, limit] of Object.entries(limits)) {
88
+ const started = state.timers[scope];
89
+ if (started === undefined || state.timeUp.includes(scope) || running.has(scope))
90
+ continue;
91
+ running.set(scope, scheduler.setTimeout(() => ranOut(scope), Math.max(0, started + limit.ms - host.clock())));
92
+ }
93
+ },
94
+ reset() {
95
+ for (const timer of running.values())
96
+ scheduler.clearTimeout(timer);
97
+ running.clear();
98
+ },
99
+ countdown() {
100
+ const state = host.state();
101
+ const now = countdownNow(page, state.timers, state.step, host.clock());
102
+ return now && state.timeUp.includes(now.scope) ? { ...now, left: 0, stage: 'up' } : now;
103
+ },
104
+ told() {
105
+ const state = host.state();
106
+ const started = state.timers[exports.WHOLE_FORM];
107
+ return started !== undefined ? { started: new Date(started).toISOString(), timeUp: state.timeUp.includes(exports.WHOLE_FORM) } : state.timeUp.length ? { timeUp: false } : {};
108
+ },
109
+ };
110
+ return kit;
111
+ }
112
+ //# sourceMappingURL=timing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timing.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/timing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * A page's time limits (`timeLimit` on the page and on a wizard's steps), the survey flow's part's: what each allows, when it
3
+ * warns and what it does as it runs out, and the countdown showing now — the page's while it runs, else the step on
4
+ * screen's. The form keeps when each started (`state.timers`, kept in its drafts) and which ran out (`state.timeUp`).
5
+ */
6
+ /** The page's own limit's scope: a step's is its id. */
7
+ export const WHOLE_FORM = '#form';
8
+ const MINUTE = 60_000;
9
+ function limitOf(scope, limit, step) {
10
+ const ms = limit.minutes * MINUTE;
11
+ return { scope, ms, warnMs: (limit.warn ?? Math.min(1, limit.minutes / 5)) * MINUTE, then: limit.then ?? (step ? 'lock' : 'send') };
12
+ }
13
+ /** Whether a page of responses has a time limit: its own (`timeLimit`), or a step's. */
14
+ export const timed = (page) => page.data.kind === 'responses' && (!!page.timeLimit || (page.layout.type === 'wizard' && page.layout.children.some((step) => !!step.timeLimit)));
15
+ /** Every time limit of a page, by scope: the page's (`#form`), each step's by its id. */
16
+ export function limitsOf(page) {
17
+ const out = {};
18
+ if (page.data.kind !== 'responses')
19
+ return out;
20
+ if (page.timeLimit)
21
+ out[WHOLE_FORM] = limitOf(WHOLE_FORM, page.timeLimit, false);
22
+ if (page.layout.type === 'wizard')
23
+ for (const step of page.layout.children)
24
+ if (step.timeLimit)
25
+ out[step.id] = limitOf(step.id, step.timeLimit, true);
26
+ return out;
27
+ }
28
+ /** A limit's countdown, started then, read now. */
29
+ export function countdownOf(limit, started, now) {
30
+ const ends = started + limit.ms;
31
+ const left = Math.max(0, ends - now);
32
+ return { ...limit, started, ends, left, stage: left === 0 ? 'up' : left <= limit.warnMs ? 'warning' : 'running' };
33
+ }
34
+ /**
35
+ * The countdown showing now: the page's while it runs (or has run out), else the step's on screen; null where neither
36
+ * has started.
37
+ */
38
+ export function countdownNow(page, timers, step, now) {
39
+ const limits = limitsOf(page);
40
+ const whole = limits[WHOLE_FORM];
41
+ if (whole && timers[WHOLE_FORM] !== undefined)
42
+ return countdownOf(whole, timers[WHOLE_FORM], now);
43
+ const own = step ? limits[step] : undefined;
44
+ if (own && timers[own.scope] !== undefined)
45
+ return countdownOf(own, timers[own.scope], now);
46
+ return null;
47
+ }
48
+ /**
49
+ * A form's time limits: each started limit set to run out on the form's clock; as it does, its answers locked
50
+ * (`state.timeUp`) and — a step's that locks, on screen — the form gone on to the next step. A page's whose answers go
51
+ * as it runs out leaves the send to the viewer (or the app), which watches `timeUp`.
52
+ */
53
+ export function keepTime(host) {
54
+ const { page, scheduler } = host;
55
+ const limits = limitsOf(page);
56
+ const running = new Map();
57
+ const begin = (scope) => {
58
+ const state = host.state();
59
+ if (!limits[scope] || state.timers[scope] !== undefined)
60
+ return;
61
+ host.set({ timers: { ...state.timers, [scope]: host.clock() } });
62
+ kit.arm();
63
+ host.keep();
64
+ };
65
+ function ranOut(scope) {
66
+ running.delete(scope);
67
+ const state = host.state();
68
+ if (host.disposed() || state.timeUp.includes(scope) || state.sent)
69
+ return;
70
+ const shown = host.steps();
71
+ const following = scope !== WHOLE_FORM && limits[scope].then === 'lock' && state.step === scope ? shown[shown.indexOf(scope) + 1] : undefined;
72
+ host.set({ timeUp: [...state.timeUp, scope], ...(following ? { step: following, errors: {} } : {}) });
73
+ }
74
+ const kit = {
75
+ start: () => begin(WHOLE_FORM),
76
+ entered: (step) => begin(step),
77
+ arm() {
78
+ const state = host.state();
79
+ for (const [scope, limit] of Object.entries(limits)) {
80
+ const started = state.timers[scope];
81
+ if (started === undefined || state.timeUp.includes(scope) || running.has(scope))
82
+ continue;
83
+ running.set(scope, scheduler.setTimeout(() => ranOut(scope), Math.max(0, started + limit.ms - host.clock())));
84
+ }
85
+ },
86
+ reset() {
87
+ for (const timer of running.values())
88
+ scheduler.clearTimeout(timer);
89
+ running.clear();
90
+ },
91
+ countdown() {
92
+ const state = host.state();
93
+ const now = countdownNow(page, state.timers, state.step, host.clock());
94
+ return now && state.timeUp.includes(now.scope) ? { ...now, left: 0, stage: 'up' } : now;
95
+ },
96
+ told() {
97
+ const state = host.state();
98
+ const started = state.timers[WHOLE_FORM];
99
+ return started !== undefined ? { started: new Date(started).toISOString(), timeUp: state.timeUp.includes(WHOLE_FORM) } : state.timeUp.length ? { timeUp: false } : {};
100
+ },
101
+ };
102
+ return kit;
103
+ }
104
+ //# sourceMappingURL=timing.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timing.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/timing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type Part } from '../parts.mjs';
2
+ import type * as UndoModule from './undo-part.mjs';
3
+ /** The undo part: Undo and Redo through a record's changes (history-steps.ts), and a one-tap press said with Undo and taken back (press-undo.ts). */
4
+ export type PressUndoPart = typeof UndoModule;
5
+ /**
6
+ * Undo, loaded as a person first changes a record (Ctrl+Z walks the changes), with a page whose buttons offer it, or as
7
+ * an answer first brings one.
8
+ */
9
+ export declare const pressUndoPart: Part<PressUndoPart>;
@@ -0,0 +1,9 @@
1
+ import { type Part } from '../parts';
2
+ import type * as UndoModule from './undo-part';
3
+ /** The undo part: Undo and Redo through a record's changes (history-steps.ts), and a one-tap press said with Undo and taken back (press-undo.ts). */
4
+ export type PressUndoPart = typeof UndoModule;
5
+ /**
6
+ * Undo, loaded as a person first changes a record (Ctrl+Z walks the changes), with a page whose buttons offer it, or as
7
+ * an answer first brings one.
8
+ */
9
+ export declare const pressUndoPart: Part<PressUndoPart>;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pressUndoPart = void 0;
4
+ const parts_1 = require("../parts");
5
+ /**
6
+ * Undo, loaded as a person first changes a record (Ctrl+Z walks the changes), with a page whose buttons offer it, or as
7
+ * an answer first brings one.
8
+ */
9
+ exports.pressUndoPart = (0, parts_1.lazyPart)('undo', () => Promise.resolve().then(() => require('./undo-part')));
10
+ //# sourceMappingURL=undo-later.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undo-later.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/undo-later.ts"],"names":[],"mappings":";;;AAAA,oCAA+C;AAM/C;;;GAGG;AACU,QAAA,aAAa,GAAwB,IAAA,gBAAQ,EAAC,MAAM,EAAE,GAAG,EAAE,sCAAQ,aAAa,EAAC,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { lazyPart } from '../parts.mjs';
2
+ /**
3
+ * Undo, loaded as a person first changes a record (Ctrl+Z walks the changes), with a page whose buttons offer it, or as
4
+ * an answer first brings one.
5
+ */
6
+ export const pressUndoPart = lazyPart('undo', () => import('./undo-part.mjs'));
7
+ //# sourceMappingURL=undo-later.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undo-later.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/undo-later.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,MAAM,UAAU,CAAC;AAM/C;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAwB,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The undo part (parts.ts): Undo and Redo walking a record's changes as the form keeps them (history-steps.ts), asked
3
+ * for as the first is kept; and a one-tap press that offers Undo (a button's or a menu item's `undo`, or the app
4
+ * answering with one) said with Undo once it ends, and taken back when it is pressed (press-undo.ts). Loaded through
5
+ * `pressUndoPart` (undo-later.ts).
6
+ */
7
+ export { offerUndo, takeBack } from './press-undo.mjs';
8
+ export { nextSteps, takeNoted, takeStep } from './history-steps.mjs';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The undo part (parts.ts): Undo and Redo walking a record's changes as the form keeps them (history-steps.ts), asked
3
+ * for as the first is kept; and a one-tap press that offers Undo (a button's or a menu item's `undo`, or the app
4
+ * answering with one) said with Undo once it ends, and taken back when it is pressed (press-undo.ts). Loaded through
5
+ * `pressUndoPart` (undo-later.ts).
6
+ */
7
+ export { offerUndo, takeBack } from './press-undo';
8
+ export { nextSteps, takeNoted, takeStep } from './history-steps';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.takeStep = exports.takeNoted = exports.nextSteps = exports.takeBack = exports.offerUndo = void 0;
4
+ /**
5
+ * The undo part (parts.ts): Undo and Redo walking a record's changes as the form keeps them (history-steps.ts), asked
6
+ * for as the first is kept; and a one-tap press that offers Undo (a button's or a menu item's `undo`, or the app
7
+ * answering with one) said with Undo once it ends, and taken back when it is pressed (press-undo.ts). Loaded through
8
+ * `pressUndoPart` (undo-later.ts).
9
+ */
10
+ var press_undo_1 = require("./press-undo");
11
+ Object.defineProperty(exports, "offerUndo", { enumerable: true, get: function () { return press_undo_1.offerUndo; } });
12
+ Object.defineProperty(exports, "takeBack", { enumerable: true, get: function () { return press_undo_1.takeBack; } });
13
+ var history_steps_1 = require("./history-steps");
14
+ Object.defineProperty(exports, "nextSteps", { enumerable: true, get: function () { return history_steps_1.nextSteps; } });
15
+ Object.defineProperty(exports, "takeNoted", { enumerable: true, get: function () { return history_steps_1.takeNoted; } });
16
+ Object.defineProperty(exports, "takeStep", { enumerable: true, get: function () { return history_steps_1.takeStep; } });
17
+ //# sourceMappingURL=undo-part.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undo-part.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/undo-part.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,2CAAmD;AAA1C,uGAAA,SAAS,OAAA;AAAE,sGAAA,QAAQ,OAAA;AAC5B,iDAAiE;AAAxD,0GAAA,SAAS,OAAA;AAAE,0GAAA,SAAS,OAAA;AAAE,yGAAA,QAAQ,OAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * The undo part (parts.ts): Undo and Redo walking a record's changes as the form keeps them (history-steps.ts), asked
3
+ * for as the first is kept; and a one-tap press that offers Undo (a button's or a menu item's `undo`, or the app
4
+ * answering with one) said with Undo once it ends, and taken back when it is pressed (press-undo.ts). Loaded through
5
+ * `pressUndoPart` (undo-later.ts).
6
+ */
7
+ export { offerUndo, takeBack } from './press-undo.mjs';
8
+ export { nextSteps, takeNoted, takeStep } from './history-steps.mjs';
9
+ //# sourceMappingURL=undo-part.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undo-part.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/undo-part.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { UploadedFile, UploadFile, UploadRequest } from './data-source.mjs';
2
+ import type { UploadToOptions } from './upload-to.mjs';
3
+ /**
4
+ * A data source's `upload` for a plain endpoint (upload-to.ts): what an app writes once, at once — its work in the files
5
+ * part, which a page with a file field loads before it is drawn, asked for here as the first file goes. A page with no
6
+ * file never downloads it.
7
+ *
8
+ * upload: uploadTo({ url: '/api/files', headers: { 'X-CSRF-Token': token } })
9
+ */
10
+ export declare function uploadTo(options: UploadToOptions): (file: UploadFile, request: UploadRequest) => Promise<UploadedFile>;
@@ -0,0 +1,10 @@
1
+ import type { UploadedFile, UploadFile, UploadRequest } from './data-source';
2
+ import type { UploadToOptions } from './upload-to';
3
+ /**
4
+ * A data source's `upload` for a plain endpoint (upload-to.ts): what an app writes once, at once — its work in the files
5
+ * part, which a page with a file field loads before it is drawn, asked for here as the first file goes. A page with no
6
+ * file never downloads it.
7
+ *
8
+ * upload: uploadTo({ url: '/api/files', headers: { 'X-CSRF-Token': token } })
9
+ */
10
+ export declare function uploadTo(options: UploadToOptions): (file: UploadFile, request: UploadRequest) => Promise<UploadedFile>;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.uploadTo = uploadTo;
4
+ const uploads_1 = require("./uploads");
5
+ /**
6
+ * A data source's `upload` for a plain endpoint (upload-to.ts): what an app writes once, at once — its work in the files
7
+ * part, which a page with a file field loads before it is drawn, asked for here as the first file goes. A page with no
8
+ * file never downloads it.
9
+ *
10
+ * upload: uploadTo({ url: '/api/files', headers: { 'X-CSRF-Token': token } })
11
+ */
12
+ function uploadTo(options) {
13
+ return (file, request) => uploads_1.formUploadsPart.load().then((part) => part.uploadTo(options)(file, request));
14
+ }
15
+ //# sourceMappingURL=upload-to-later.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-to-later.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/upload-to-later.ts"],"names":[],"mappings":";;AAWA,4BAEC;AAXD,uCAA4C;AAE5C;;;;;;GAMG;AACH,SAAgB,QAAQ,CAAC,OAAwB;IAC/C,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,yBAAe,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AACzG,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { formUploadsPart } from './uploads.mjs';
2
+ /**
3
+ * A data source's `upload` for a plain endpoint (upload-to.ts): what an app writes once, at once — its work in the files
4
+ * part, which a page with a file field loads before it is drawn, asked for here as the first file goes. A page with no
5
+ * file never downloads it.
6
+ *
7
+ * upload: uploadTo({ url: '/api/files', headers: { 'X-CSRF-Token': token } })
8
+ */
9
+ export function uploadTo(options) {
10
+ return (file, request) => formUploadsPart.load().then((part) => part.uploadTo(options)(file, request));
11
+ }
12
+ //# sourceMappingURL=upload-to-later.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-to-later.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/upload-to-later.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAwB;IAC/C,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AACzG,CAAC"}
@@ -92,6 +92,11 @@ export interface UploadsHost {
92
92
  } | undefined, value: Value, quiet: boolean): void;
93
93
  changed(uploads: readonly FileUpload[]): void;
94
94
  track<T>(promise: Promise<T>): Promise<T>;
95
+ /**
96
+ * An upload through the parts that join the form (form.ts): on a page with an offline outbox, a file the network
97
+ * could not take comes back as its bytes, kept in its field to go with the send.
98
+ */
99
+ through<T>(kind: 'upload', file: UploadFile, send: (file: UploadFile) => Promise<T>): Promise<T | null>;
95
100
  }
96
101
  /** A file on its way, as the uploads keep it (the state shows each as a `FileUpload`). */
97
102
  export interface Entry {
@@ -92,6 +92,11 @@ export interface UploadsHost {
92
92
  } | undefined, value: Value, quiet: boolean): void;
93
93
  changed(uploads: readonly FileUpload[]): void;
94
94
  track<T>(promise: Promise<T>): Promise<T>;
95
+ /**
96
+ * An upload through the parts that join the form (form.ts): on a page with an offline outbox, a file the network
97
+ * could not take comes back as its bytes, kept in its field to go with the send.
98
+ */
99
+ through<T>(kind: 'upload', file: UploadFile, send: (file: UploadFile) => Promise<T>): Promise<T | null>;
95
100
  }
96
101
  /** A file on its way, as the uploads keep it (the state shows each as a `FileUpload`). */
97
102
  export interface Entry {