@fieldia/core 0.30.1 → 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 (551) 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 +331 -0
  245. package/src/lib/record/data-source.d.ts +331 -0
  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 +14 -8
  263. package/src/lib/record/form-approvals.js.map +1 -1
  264. package/src/lib/record/form-approvals.mjs +13 -7
  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 +115 -3
  273. package/src/lib/record/form.d.ts +115 -3
  274. package/src/lib/record/form.js +262 -65
  275. package/src/lib/record/form.js.map +1 -1
  276. package/src/lib/record/form.mjs +263 -66
  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 +8 -0
  337. package/src/lib/record/locales/ar.js.map +1 -1
  338. package/src/lib/record/locales/ar.mjs +8 -0
  339. package/src/lib/record/locales/ar.mjs.map +1 -1
  340. package/src/lib/record/locales/de.js +8 -0
  341. package/src/lib/record/locales/de.js.map +1 -1
  342. package/src/lib/record/locales/de.mjs +8 -0
  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 +8 -0
  357. package/src/lib/record/locales/fr.js.map +1 -1
  358. package/src/lib/record/locales/fr.mjs +8 -0
  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-codes.d.mts +37 -0
  379. package/src/lib/record/memory-codes.d.ts +37 -0
  380. package/src/lib/record/memory-codes.js +50 -0
  381. package/src/lib/record/memory-codes.js.map +1 -0
  382. package/src/lib/record/memory-codes.mjs +47 -0
  383. package/src/lib/record/memory-codes.mjs.map +1 -0
  384. package/src/lib/record/memory-data-source.d.mts +56 -2
  385. package/src/lib/record/memory-data-source.d.ts +56 -2
  386. package/src/lib/record/memory-data-source.js +67 -1
  387. package/src/lib/record/memory-data-source.js.map +1 -1
  388. package/src/lib/record/memory-data-source.mjs +67 -1
  389. package/src/lib/record/memory-data-source.mjs.map +1 -1
  390. package/src/lib/record/memory-kept.d.mts +3 -1
  391. package/src/lib/record/memory-kept.d.ts +3 -1
  392. package/src/lib/record/memory-kept.js +7 -2
  393. package/src/lib/record/memory-kept.js.map +1 -1
  394. package/src/lib/record/memory-kept.mjs +7 -2
  395. package/src/lib/record/memory-kept.mjs.map +1 -1
  396. package/src/lib/record/memory-later.d.mts +3 -1
  397. package/src/lib/record/memory-later.d.ts +3 -1
  398. package/src/lib/record/memory-later.js +9 -5
  399. package/src/lib/record/memory-later.js.map +1 -1
  400. package/src/lib/record/memory-later.mjs +8 -4
  401. package/src/lib/record/memory-later.mjs.map +1 -1
  402. package/src/lib/record/memory-live.d.mts +8 -0
  403. package/src/lib/record/memory-live.d.ts +8 -0
  404. package/src/lib/record/memory-live.js +70 -0
  405. package/src/lib/record/memory-live.js.map +1 -0
  406. package/src/lib/record/memory-live.mjs +67 -0
  407. package/src/lib/record/memory-live.mjs.map +1 -0
  408. package/src/lib/record/memory-views.d.mts +11 -0
  409. package/src/lib/record/memory-views.d.ts +11 -0
  410. package/src/lib/record/memory-views.js +60 -0
  411. package/src/lib/record/memory-views.js.map +1 -0
  412. package/src/lib/record/memory-views.mjs +57 -0
  413. package/src/lib/record/memory-views.mjs.map +1 -0
  414. package/src/lib/record/messages.d.mts +21 -3
  415. package/src/lib/record/messages.d.ts +21 -3
  416. package/src/lib/record/messages.js +15 -2
  417. package/src/lib/record/messages.js.map +1 -1
  418. package/src/lib/record/messages.mjs +15 -2
  419. package/src/lib/record/messages.mjs.map +1 -1
  420. package/src/lib/record/order.d.mts +21 -0
  421. package/src/lib/record/order.d.ts +21 -0
  422. package/src/lib/record/order.js +129 -0
  423. package/src/lib/record/order.js.map +1 -0
  424. package/src/lib/record/order.mjs +122 -0
  425. package/src/lib/record/order.mjs.map +1 -0
  426. package/src/lib/record/outbox-form.d.mts +79 -0
  427. package/src/lib/record/outbox-form.d.ts +79 -0
  428. package/src/lib/record/outbox-form.js +291 -0
  429. package/src/lib/record/outbox-form.js.map +1 -0
  430. package/src/lib/record/outbox-form.mjs +286 -0
  431. package/src/lib/record/outbox-form.mjs.map +1 -0
  432. package/src/lib/record/outbox-part.d.mts +6 -0
  433. package/src/lib/record/outbox-part.d.ts +6 -0
  434. package/src/lib/record/outbox-part.js +13 -0
  435. package/src/lib/record/outbox-part.js.map +1 -0
  436. package/src/lib/record/outbox-part.mjs +7 -0
  437. package/src/lib/record/outbox-part.mjs.map +1 -0
  438. package/src/lib/record/pay-part.d.mts +6 -0
  439. package/src/lib/record/pay-part.d.ts +6 -0
  440. package/src/lib/record/pay-part.js +11 -0
  441. package/src/lib/record/pay-part.js.map +1 -0
  442. package/src/lib/record/pay-part.mjs +7 -0
  443. package/src/lib/record/pay-part.mjs.map +1 -0
  444. package/src/lib/record/payment-form.d.mts +25 -0
  445. package/src/lib/record/payment-form.d.ts +25 -0
  446. package/src/lib/record/payment-form.js +98 -0
  447. package/src/lib/record/payment-form.js.map +1 -0
  448. package/src/lib/record/payment-form.mjs +95 -0
  449. package/src/lib/record/payment-form.mjs.map +1 -0
  450. package/src/lib/record/prefill-part.d.mts +7 -0
  451. package/src/lib/record/prefill-part.d.ts +7 -0
  452. package/src/lib/record/prefill-part.js +15 -0
  453. package/src/lib/record/prefill-part.js.map +1 -0
  454. package/src/lib/record/prefill-part.mjs +8 -0
  455. package/src/lib/record/prefill-part.mjs.map +1 -0
  456. package/src/lib/record/press-undo.d.mts +42 -0
  457. package/src/lib/record/press-undo.d.ts +42 -0
  458. package/src/lib/record/press-undo.js +115 -0
  459. package/src/lib/record/press-undo.js.map +1 -0
  460. package/src/lib/record/press-undo.mjs +110 -0
  461. package/src/lib/record/press-undo.mjs.map +1 -0
  462. package/src/lib/record/quiz.d.mts +36 -0
  463. package/src/lib/record/quiz.d.ts +36 -0
  464. package/src/lib/record/quiz.js +90 -0
  465. package/src/lib/record/quiz.js.map +1 -0
  466. package/src/lib/record/quiz.mjs +87 -0
  467. package/src/lib/record/quiz.mjs.map +1 -0
  468. package/src/lib/record/record-words.js +1 -1
  469. package/src/lib/record/record-words.js.map +1 -1
  470. package/src/lib/record/record-words.mjs +1 -1
  471. package/src/lib/record/record-words.mjs.map +1 -1
  472. package/src/lib/record/run.d.mts +54 -2
  473. package/src/lib/record/run.d.ts +54 -2
  474. package/src/lib/record/run.js +30 -6
  475. package/src/lib/record/run.js.map +1 -1
  476. package/src/lib/record/run.mjs +28 -5
  477. package/src/lib/record/run.mjs.map +1 -1
  478. package/src/lib/record/survey-kit.d.mts +37 -0
  479. package/src/lib/record/survey-kit.d.ts +37 -0
  480. package/src/lib/record/survey-kit.js +99 -0
  481. package/src/lib/record/survey-kit.js.map +1 -0
  482. package/src/lib/record/survey-kit.mjs +96 -0
  483. package/src/lib/record/survey-kit.mjs.map +1 -0
  484. package/src/lib/record/survey.d.mts +16 -0
  485. package/src/lib/record/survey.d.ts +16 -0
  486. package/src/lib/record/survey.js +17 -0
  487. package/src/lib/record/survey.js.map +1 -0
  488. package/src/lib/record/survey.mjs +13 -0
  489. package/src/lib/record/survey.mjs.map +1 -0
  490. package/src/lib/record/surveyflow-part.d.mts +9 -0
  491. package/src/lib/record/surveyflow-part.d.ts +9 -0
  492. package/src/lib/record/surveyflow-part.js +20 -0
  493. package/src/lib/record/surveyflow-part.js.map +1 -0
  494. package/src/lib/record/surveyflow-part.mjs +10 -0
  495. package/src/lib/record/surveyflow-part.mjs.map +1 -0
  496. package/src/lib/record/timing.d.mts +76 -0
  497. package/src/lib/record/timing.d.ts +76 -0
  498. package/src/lib/record/timing.js +112 -0
  499. package/src/lib/record/timing.js.map +1 -0
  500. package/src/lib/record/timing.mjs +104 -0
  501. package/src/lib/record/timing.mjs.map +1 -0
  502. package/src/lib/record/undo-later.d.mts +9 -0
  503. package/src/lib/record/undo-later.d.ts +9 -0
  504. package/src/lib/record/undo-later.js +10 -0
  505. package/src/lib/record/undo-later.js.map +1 -0
  506. package/src/lib/record/undo-later.mjs +7 -0
  507. package/src/lib/record/undo-later.mjs.map +1 -0
  508. package/src/lib/record/undo-part.d.mts +8 -0
  509. package/src/lib/record/undo-part.d.ts +8 -0
  510. package/src/lib/record/undo-part.js +17 -0
  511. package/src/lib/record/undo-part.js.map +1 -0
  512. package/src/lib/record/undo-part.mjs +9 -0
  513. package/src/lib/record/undo-part.mjs.map +1 -0
  514. package/src/lib/record/upload-to-later.d.mts +10 -0
  515. package/src/lib/record/upload-to-later.d.ts +10 -0
  516. package/src/lib/record/upload-to-later.js +15 -0
  517. package/src/lib/record/upload-to-later.js.map +1 -0
  518. package/src/lib/record/upload-to-later.mjs +12 -0
  519. package/src/lib/record/upload-to-later.mjs.map +1 -0
  520. package/src/lib/record/uploads.d.mts +5 -0
  521. package/src/lib/record/uploads.d.ts +5 -0
  522. package/src/lib/record/uploads.js.map +1 -1
  523. package/src/lib/record/uploads.mjs.map +1 -1
  524. package/src/lib/record/values.d.mts +6 -0
  525. package/src/lib/record/values.d.ts +6 -0
  526. package/src/lib/record/values.js.map +1 -1
  527. package/src/lib/record/values.mjs.map +1 -1
  528. package/src/lib/record/verify-form.d.mts +24 -0
  529. package/src/lib/record/verify-form.d.ts +24 -0
  530. package/src/lib/record/verify-form.js +65 -0
  531. package/src/lib/record/verify-form.js.map +1 -0
  532. package/src/lib/record/verify-form.mjs +62 -0
  533. package/src/lib/record/verify-form.mjs.map +1 -0
  534. package/src/lib/record/verify-part.d.mts +6 -0
  535. package/src/lib/record/verify-part.d.ts +6 -0
  536. package/src/lib/record/verify-part.js +11 -0
  537. package/src/lib/record/verify-part.js.map +1 -0
  538. package/src/lib/record/verify-part.mjs +7 -0
  539. package/src/lib/record/verify-part.mjs.map +1 -0
  540. package/src/lib/record/words-chunks.d.mts +37 -0
  541. package/src/lib/record/words-chunks.d.ts +37 -0
  542. package/src/lib/record/words-chunks.js +94 -0
  543. package/src/lib/record/words-chunks.js.map +1 -0
  544. package/src/lib/record/words-chunks.mjs +86 -0
  545. package/src/lib/record/words-chunks.mjs.map +1 -0
  546. package/src/runtime.d.mts +28 -6
  547. package/src/runtime.d.ts +28 -6
  548. package/src/runtime.js +35 -6
  549. package/src/runtime.js.map +1 -1
  550. package/src/runtime.mjs +15 -3
  551. package/src/runtime.mjs.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"limits.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/limits.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"limits.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/limits.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { Field } from '../format/field.mjs';
2
+ import type { Page } from '../format/page.mjs';
3
+ import type { FormInner, FormJoin } from './joins.mjs';
4
+ import { type Value, type Values } from './values.mjs';
5
+ /**
6
+ * The link a page is opened with: its whole address, or only its `?…` part (`location.href`, `location.search`) — or
7
+ * its parameters by name, as an app read them itself.
8
+ */
9
+ export type PageLink = string | Readonly<Record<string, string>>;
10
+ /** A link's parameters by name, the first of each as written there, decoded; none for a link without them. */
11
+ export declare function linkParams(link: PageLink): Map<string, string>;
12
+ /**
13
+ * A parameter's words as its field holds a value — a number as a number, yes or no, a choice by one of its options'
14
+ * values, a day as 2026-10-20, a day and time as an instant — or undefined where they do not read so: never guessed.
15
+ */
16
+ export declare function linkValue(field: Field, text: string): Value | undefined;
17
+ /** The fields a page's link fills (`prefill.fromUrl`), each by the parameter that fills it. */
18
+ export declare function prefilledFields(page: Page): Map<string, string>;
19
+ /**
20
+ * What a page's link fills as the form starts (`prefill`): each field named, by its parameter's words read as the
21
+ * field reads them — left out where they do not read so, or where the field's own checks (its most characters, its
22
+ * pattern, its least and most, its days) would refuse them: a hidden field no one can put right never stops a send.
23
+ */
24
+ export declare function linkValues(page: Page, link: PageLink | undefined): Values;
25
+ /**
26
+ * The prefill part's side of a form (`prefill` on its page, joins.ts): the fields the link fills laid where a new record
27
+ * or response starts — as loaded ones are, never a change to save, never over what the form was given (`values`) or
28
+ * what the person changed — and laid again as another starts; the hidden ones, placed nowhere and seen by no one, sent
29
+ * with the answers all the same. The link is the form's `url`, else the page's own address.
30
+ */
31
+ export declare function join(host: FormInner): FormJoin;
@@ -0,0 +1,31 @@
1
+ import type { Field } from '../format/field';
2
+ import type { Page } from '../format/page';
3
+ import type { FormInner, FormJoin } from './joins';
4
+ import { type Value, type Values } from './values';
5
+ /**
6
+ * The link a page is opened with: its whole address, or only its `?…` part (`location.href`, `location.search`) — or
7
+ * its parameters by name, as an app read them itself.
8
+ */
9
+ export type PageLink = string | Readonly<Record<string, string>>;
10
+ /** A link's parameters by name, the first of each as written there, decoded; none for a link without them. */
11
+ export declare function linkParams(link: PageLink): Map<string, string>;
12
+ /**
13
+ * A parameter's words as its field holds a value — a number as a number, yes or no, a choice by one of its options'
14
+ * values, a day as 2026-10-20, a day and time as an instant — or undefined where they do not read so: never guessed.
15
+ */
16
+ export declare function linkValue(field: Field, text: string): Value | undefined;
17
+ /** The fields a page's link fills (`prefill.fromUrl`), each by the parameter that fills it. */
18
+ export declare function prefilledFields(page: Page): Map<string, string>;
19
+ /**
20
+ * What a page's link fills as the form starts (`prefill`): each field named, by its parameter's words read as the
21
+ * field reads them — left out where they do not read so, or where the field's own checks (its most characters, its
22
+ * pattern, its least and most, its days) would refuse them: a hidden field no one can put right never stops a send.
23
+ */
24
+ export declare function linkValues(page: Page, link: PageLink | undefined): Values;
25
+ /**
26
+ * The prefill part's side of a form (`prefill` on its page, joins.ts): the fields the link fills laid where a new record
27
+ * or response starts — as loaded ones are, never a change to save, never over what the form was given (`values`) or
28
+ * what the person changed — and laid again as another starts; the hidden ones, placed nowhere and seen by no one, sent
29
+ * with the answers all the same. The link is the form's `url`, else the page's own address.
30
+ */
31
+ export declare function join(host: FormInner): FormJoin;
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.linkParams = linkParams;
4
+ exports.linkValue = linkValue;
5
+ exports.prefilledFields = prefilledFields;
6
+ exports.linkValues = linkValues;
7
+ exports.join = join;
8
+ const check_1 = require("./check");
9
+ const values_1 = require("./values");
10
+ /** A part of a link as written, `+` and `%xx` read: a part that does not decode is kept as written. */
11
+ const decoded = (text) => {
12
+ try {
13
+ return decodeURIComponent(text.replace(/\+/g, ' '));
14
+ }
15
+ catch {
16
+ return text;
17
+ }
18
+ };
19
+ /** A link's parameters by name, the first of each as written there, decoded; none for a link without them. */
20
+ function linkParams(link) {
21
+ const params = new Map();
22
+ if (typeof link !== 'string') {
23
+ for (const [name, value] of Object.entries(link))
24
+ if (typeof value === 'string')
25
+ params.set(name, value);
26
+ return params;
27
+ }
28
+ const query = (link.includes('?') ? link.slice(link.indexOf('?') + 1) : link.includes('=') ? link : '').split('#')[0];
29
+ for (const pair of query.split('&')) {
30
+ const at = pair.indexOf('=');
31
+ const name = decoded(at < 0 ? pair : pair.slice(0, at));
32
+ if (name && !params.has(name))
33
+ params.set(name, decoded(at < 0 ? '' : pair.slice(at + 1)));
34
+ }
35
+ return params;
36
+ }
37
+ /** The most a link's words fill a line of text with: longer is no campaign's, broker's or unit's name, and is left out. */
38
+ const MOST = 500;
39
+ /**
40
+ * A parameter's words as its field holds a value — a number as a number, yes or no, a choice by one of its options'
41
+ * values, a day as 2026-10-20, a day and time as an instant — or undefined where they do not read so: never guessed.
42
+ */
43
+ function linkValue(field, text) {
44
+ const words = text.trim();
45
+ if (!words)
46
+ return undefined;
47
+ switch (field.type) {
48
+ case 'char':
49
+ case 'text':
50
+ return words.length <= MOST ? words : undefined;
51
+ case 'integer':
52
+ return /^-?\d{1,15}$/.test(words) ? Number(words) : undefined;
53
+ case 'float':
54
+ case 'monetary':
55
+ return /^-?\d{1,15}(\.\d+)?$/.test(words) ? Number(words) : undefined;
56
+ case 'boolean':
57
+ return /^(1|true|yes|on)$/i.test(words) ? true : /^(0|false|no|off)$/i.test(words) ? false : undefined;
58
+ case 'selection':
59
+ return field.options?.find((option) => String(option.value) === words)?.value;
60
+ case 'date':
61
+ return /^\d{4}-\d{2}-\d{2}$/.test(words) && !Number.isNaN(Date.parse(words)) && new Date(Date.parse(words)).toISOString().startsWith(words) ? words : undefined;
62
+ case 'datetime':
63
+ // An instant with its offset, or in UTC: a day and time alone names no moment.
64
+ return /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d{1,3})?)?(Z|[+-]\d{2}:\d{2})$/.test(words) && !Number.isNaN(Date.parse(words)) ? new Date(Date.parse(words)).toISOString() : undefined;
65
+ default:
66
+ return undefined;
67
+ }
68
+ }
69
+ /** The fields a page's link fills (`prefill.fromUrl`), each by the parameter that fills it. */
70
+ function prefilledFields(page) {
71
+ const filled = new Map();
72
+ for (const one of page.prefill?.fromUrl ?? []) {
73
+ const [param, field] = typeof one === 'string' ? [one, one] : [one.param, one.field];
74
+ if (!filled.has(field))
75
+ filled.set(field, param);
76
+ }
77
+ return filled;
78
+ }
79
+ /**
80
+ * What a page's link fills as the form starts (`prefill`): each field named, by its parameter's words read as the
81
+ * field reads them — left out where they do not read so, or where the field's own checks (its most characters, its
82
+ * pattern, its least and most, its days) would refuse them: a hidden field no one can put right never stops a send.
83
+ */
84
+ function linkValues(page, link) {
85
+ const values = {};
86
+ if (!page.prefill || link === undefined)
87
+ return values;
88
+ const params = linkParams(link);
89
+ for (const [name, param] of prefilledFields(page)) {
90
+ const field = page.fields[name];
91
+ const text = params.get(param);
92
+ if (!field || text === undefined)
93
+ continue;
94
+ const value = linkValue(field, text);
95
+ if (value !== undefined && (0, check_1.checkValue)(field, value, false) === undefined)
96
+ values[name] = value;
97
+ }
98
+ return values;
99
+ }
100
+ /**
101
+ * The prefill part's side of a form (`prefill` on its page, joins.ts): the fields the link fills laid where a new record
102
+ * or response starts — as loaded ones are, never a change to save, never over what the form was given (`values`) or
103
+ * what the person changed — and laid again as another starts; the hidden ones, placed nowhere and seen by no one, sent
104
+ * with the answers all the same. The link is the form's `url`, else the page's own address.
105
+ */
106
+ function join(host) {
107
+ const { form, page, options } = host;
108
+ const placed = new Set((JSON.stringify(page.layout).match(/"field":"[^"]+"/g) ?? []).map((one) => one.slice(9, -1)));
109
+ const lay = () => {
110
+ const state = form.getState();
111
+ if (state.recordId != null)
112
+ return;
113
+ const link = linkValues(page, options.url ?? globalThis.location?.href);
114
+ for (const name of Object.keys(link))
115
+ if (state.dirty.includes(name) || (options.values && name in options.values))
116
+ delete link[name];
117
+ form.setValues(link, { stored: true });
118
+ };
119
+ lay();
120
+ return {
121
+ reset: lay,
122
+ // In the answers themselves: what the response is sent with is what its ending reads, what the form tells, and what
123
+ // an app's checkout is handed before it goes.
124
+ values(answers) {
125
+ const values = form.getState().values;
126
+ for (const name of prefilledFields(page).keys())
127
+ if (!placed.has(name) && !(name in answers))
128
+ answers[name] = (0, values_1.structuredCopy)(values[name] ?? null);
129
+ },
130
+ };
131
+ }
132
+ //# sourceMappingURL=link-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-values.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/link-values.ts"],"names":[],"mappings":";;AAsBA,gCAaC;AASD,8BAwBC;AAGD,0CAOC;AAOD,gCAYC;AAQD,oBAoBC;AA3HD,mCAAqC;AAErC,qCAAmE;AAQnE,uGAAuG;AACvG,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE;IACvC,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,8GAA8G;AAC9G,SAAgB,UAAU,CAAC,IAAc;IACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzG,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtH,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACxD,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,2HAA2H;AAC3H,MAAM,IAAI,GAAG,GAAG,CAAC;AAEjB;;;GAGG;AACH,SAAgB,SAAS,CAAC,KAAY,EAAE,IAAY;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAClD,KAAK,SAAS;YACZ,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,KAAK,OAAO,CAAC;QACb,KAAK,UAAU;YACb,OAAO,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,KAAK,SAAS;YACZ,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACzG,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,KAAK,CAAC;QAChF,KAAK,MAAM;YACT,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAClK,KAAK,UAAU;YACb,+EAA+E;YAC/E,OAAO,yEAAyE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3L;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,+FAA+F;AAC/F,SAAgB,eAAe,CAAC,IAAU;IACxC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;QAC9C,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACrF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,IAAU,EAAE,IAA0B;IAC/D,MAAM,MAAM,GAAW,EAAE,CAAC;IAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACvD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS;QAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,KAAK,KAAK,SAAS,IAAI,IAAA,kBAAU,EAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACjG,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,IAAI,CAAC,IAAe;IAClC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrH,MAAM,GAAG,GAAG,GAAG,EAAE;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI;YAAE,OAAO;QACnC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAK,UAA8C,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC7G,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;QACtI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC;IACF,GAAG,EAAE,CAAC;IACN,OAAO;QACL,KAAK,EAAE,GAAG;QACV,oHAAoH;QACpH,8CAA8C;QAC9C,MAAM,CAAC,OAAO;YACZ,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;YACtC,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;gBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC;oBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACrJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,125 @@
1
+ import { checkValue } from './check.mjs';
2
+ import { structuredCopy } from './values.mjs';
3
+ /** A part of a link as written, `+` and `%xx` read: a part that does not decode is kept as written. */
4
+ const decoded = (text) => {
5
+ try {
6
+ return decodeURIComponent(text.replace(/\+/g, ' '));
7
+ }
8
+ catch {
9
+ return text;
10
+ }
11
+ };
12
+ /** A link's parameters by name, the first of each as written there, decoded; none for a link without them. */
13
+ export function linkParams(link) {
14
+ const params = new Map();
15
+ if (typeof link !== 'string') {
16
+ for (const [name, value] of Object.entries(link))
17
+ if (typeof value === 'string')
18
+ params.set(name, value);
19
+ return params;
20
+ }
21
+ const query = (link.includes('?') ? link.slice(link.indexOf('?') + 1) : link.includes('=') ? link : '').split('#')[0];
22
+ for (const pair of query.split('&')) {
23
+ const at = pair.indexOf('=');
24
+ const name = decoded(at < 0 ? pair : pair.slice(0, at));
25
+ if (name && !params.has(name))
26
+ params.set(name, decoded(at < 0 ? '' : pair.slice(at + 1)));
27
+ }
28
+ return params;
29
+ }
30
+ /** The most a link's words fill a line of text with: longer is no campaign's, broker's or unit's name, and is left out. */
31
+ const MOST = 500;
32
+ /**
33
+ * A parameter's words as its field holds a value — a number as a number, yes or no, a choice by one of its options'
34
+ * values, a day as 2026-10-20, a day and time as an instant — or undefined where they do not read so: never guessed.
35
+ */
36
+ export function linkValue(field, text) {
37
+ const words = text.trim();
38
+ if (!words)
39
+ return undefined;
40
+ switch (field.type) {
41
+ case 'char':
42
+ case 'text':
43
+ return words.length <= MOST ? words : undefined;
44
+ case 'integer':
45
+ return /^-?\d{1,15}$/.test(words) ? Number(words) : undefined;
46
+ case 'float':
47
+ case 'monetary':
48
+ return /^-?\d{1,15}(\.\d+)?$/.test(words) ? Number(words) : undefined;
49
+ case 'boolean':
50
+ return /^(1|true|yes|on)$/i.test(words) ? true : /^(0|false|no|off)$/i.test(words) ? false : undefined;
51
+ case 'selection':
52
+ return field.options?.find((option) => String(option.value) === words)?.value;
53
+ case 'date':
54
+ return /^\d{4}-\d{2}-\d{2}$/.test(words) && !Number.isNaN(Date.parse(words)) && new Date(Date.parse(words)).toISOString().startsWith(words) ? words : undefined;
55
+ case 'datetime':
56
+ // An instant with its offset, or in UTC: a day and time alone names no moment.
57
+ return /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d{1,3})?)?(Z|[+-]\d{2}:\d{2})$/.test(words) && !Number.isNaN(Date.parse(words)) ? new Date(Date.parse(words)).toISOString() : undefined;
58
+ default:
59
+ return undefined;
60
+ }
61
+ }
62
+ /** The fields a page's link fills (`prefill.fromUrl`), each by the parameter that fills it. */
63
+ export function prefilledFields(page) {
64
+ const filled = new Map();
65
+ for (const one of page.prefill?.fromUrl ?? []) {
66
+ const [param, field] = typeof one === 'string' ? [one, one] : [one.param, one.field];
67
+ if (!filled.has(field))
68
+ filled.set(field, param);
69
+ }
70
+ return filled;
71
+ }
72
+ /**
73
+ * What a page's link fills as the form starts (`prefill`): each field named, by its parameter's words read as the
74
+ * field reads them — left out where they do not read so, or where the field's own checks (its most characters, its
75
+ * pattern, its least and most, its days) would refuse them: a hidden field no one can put right never stops a send.
76
+ */
77
+ export function linkValues(page, link) {
78
+ const values = {};
79
+ if (!page.prefill || link === undefined)
80
+ return values;
81
+ const params = linkParams(link);
82
+ for (const [name, param] of prefilledFields(page)) {
83
+ const field = page.fields[name];
84
+ const text = params.get(param);
85
+ if (!field || text === undefined)
86
+ continue;
87
+ const value = linkValue(field, text);
88
+ if (value !== undefined && checkValue(field, value, false) === undefined)
89
+ values[name] = value;
90
+ }
91
+ return values;
92
+ }
93
+ /**
94
+ * The prefill part's side of a form (`prefill` on its page, joins.ts): the fields the link fills laid where a new record
95
+ * or response starts — as loaded ones are, never a change to save, never over what the form was given (`values`) or
96
+ * what the person changed — and laid again as another starts; the hidden ones, placed nowhere and seen by no one, sent
97
+ * with the answers all the same. The link is the form's `url`, else the page's own address.
98
+ */
99
+ export function join(host) {
100
+ const { form, page, options } = host;
101
+ const placed = new Set((JSON.stringify(page.layout).match(/"field":"[^"]+"/g) ?? []).map((one) => one.slice(9, -1)));
102
+ const lay = () => {
103
+ const state = form.getState();
104
+ if (state.recordId != null)
105
+ return;
106
+ const link = linkValues(page, options.url ?? globalThis.location?.href);
107
+ for (const name of Object.keys(link))
108
+ if (state.dirty.includes(name) || (options.values && name in options.values))
109
+ delete link[name];
110
+ form.setValues(link, { stored: true });
111
+ };
112
+ lay();
113
+ return {
114
+ reset: lay,
115
+ // In the answers themselves: what the response is sent with is what its ending reads, what the form tells, and what
116
+ // an app's checkout is handed before it goes.
117
+ values(answers) {
118
+ const values = form.getState().values;
119
+ for (const name of prefilledFields(page).keys())
120
+ if (!placed.has(name) && !(name in answers))
121
+ answers[name] = structuredCopy(values[name] ?? null);
122
+ },
123
+ };
124
+ }
125
+ //# sourceMappingURL=link-values.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-values.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/link-values.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { type Part } from '../parts.mjs';
2
+ import type { FormJoin } from './joins.mjs';
3
+ import type * as LiveModule from './live-part.mjs';
4
+ /** The live part: a record's changes made elsewhere and who else has it open (live.ts), asked of the data source. */
5
+ export type RecordLivePart = typeof LiveModule;
6
+ /**
7
+ * The record shown made live, one of the parts that join a form (joins.ts) — loaded as a form is made whose source has
8
+ * `subscribe` or `presence`: never for an app whose source has neither.
9
+ */
10
+ export declare const recordLivePart: Part<RecordLivePart>;
11
+ /** The form's record made live: `watch` as what is shown changes, `stop` as the form goes. */
12
+ export interface LiveRecord extends FormJoin {
13
+ watch(): void;
14
+ stop(): void;
15
+ }
@@ -0,0 +1,15 @@
1
+ import { type Part } from '../parts';
2
+ import type { FormJoin } from './joins';
3
+ import type * as LiveModule from './live-part';
4
+ /** The live part: a record's changes made elsewhere and who else has it open (live.ts), asked of the data source. */
5
+ export type RecordLivePart = typeof LiveModule;
6
+ /**
7
+ * The record shown made live, one of the parts that join a form (joins.ts) — loaded as a form is made whose source has
8
+ * `subscribe` or `presence`: never for an app whose source has neither.
9
+ */
10
+ export declare const recordLivePart: Part<RecordLivePart>;
11
+ /** The form's record made live: `watch` as what is shown changes, `stop` as the form goes. */
12
+ export interface LiveRecord extends FormJoin {
13
+ watch(): void;
14
+ stop(): void;
15
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.recordLivePart = void 0;
4
+ const parts_1 = require("../parts");
5
+ /**
6
+ * The record shown made live, one of the parts that join a form (joins.ts) — loaded as a form is made whose source has
7
+ * `subscribe` or `presence`: never for an app whose source has neither.
8
+ */
9
+ exports.recordLivePart = (0, parts_1.lazyPart)('live', () => Promise.resolve().then(() => require('./live-part')));
10
+ //# sourceMappingURL=live-later.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-later.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/live-later.ts"],"names":[],"mappings":";;;AAAA,oCAA+C;AAO/C;;;GAGG;AACU,QAAA,cAAc,GAAyB,IAAA,gBAAQ,EAAC,MAAM,EAAE,GAAG,EAAE,sCAAQ,aAAa,EAAC,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { lazyPart } from '../parts.mjs';
2
+ /**
3
+ * The record shown made live, one of the parts that join a form (joins.ts) — loaded as a form is made whose source has
4
+ * `subscribe` or `presence`: never for an app whose source has neither.
5
+ */
6
+ export const recordLivePart = lazyPart('live', () => import('./live-part.mjs'));
7
+ //# sourceMappingURL=live-later.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-later.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/live-later.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,MAAM,UAAU,CAAC;AAO/C;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAyB,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The live part (parts.ts): a record's changes made elsewhere laid on it or waiting as a conflict, and who else has it
3
+ * open (live.ts) — asked of the data source's `subscribe` and `presence`. One of the parts that join a form (joins.ts),
4
+ * loaded through `recordLivePart` (live-later.ts) as a form is made whose source has either.
5
+ */
6
+ export { join, liveRecord } from './live.mjs';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The live part (parts.ts): a record's changes made elsewhere laid on it or waiting as a conflict, and who else has it
3
+ * open (live.ts) — asked of the data source's `subscribe` and `presence`. One of the parts that join a form (joins.ts),
4
+ * loaded through `recordLivePart` (live-later.ts) as a form is made whose source has either.
5
+ */
6
+ export { join, liveRecord } from './live';
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.liveRecord = exports.join = void 0;
4
+ /**
5
+ * The live part (parts.ts): a record's changes made elsewhere laid on it or waiting as a conflict, and who else has it
6
+ * open (live.ts) — asked of the data source's `subscribe` and `presence`. One of the parts that join a form (joins.ts),
7
+ * loaded through `recordLivePart` (live-later.ts) as a form is made whose source has either.
8
+ */
9
+ var live_1 = require("./live");
10
+ Object.defineProperty(exports, "join", { enumerable: true, get: function () { return live_1.join; } });
11
+ Object.defineProperty(exports, "liveRecord", { enumerable: true, get: function () { return live_1.liveRecord; } });
12
+ //# sourceMappingURL=live-part.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-part.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/live-part.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,+BAA0C;AAAjC,4FAAA,IAAI,OAAA;AAAE,kGAAA,UAAU,OAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The live part (parts.ts): a record's changes made elsewhere laid on it or waiting as a conflict, and who else has it
3
+ * open (live.ts) — asked of the data source's `subscribe` and `presence`. One of the parts that join a form (joins.ts),
4
+ * loaded through `recordLivePart` (live-later.ts) as a form is made whose source has either.
5
+ */
6
+ export { join, liveRecord } from './live.mjs';
7
+ //# sourceMappingURL=live-part.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-part.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/live-part.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { FormInner } from './joins.mjs';
2
+ import type { LiveRecord } from './live-later.mjs';
3
+ /**
4
+ * The live part's side of a form (joins.ts): the record shown watched once it is loaded (`loaded`: at once where it was
5
+ * loaded before the part came), again as the form's state changes (`changed`), and let go with the form (`dispose`).
6
+ */
7
+ export declare function join(context: FormInner): LiveRecord;
8
+ export declare function liveRecord(context: FormInner): LiveRecord;
@@ -0,0 +1,8 @@
1
+ import type { FormInner } from './joins';
2
+ import type { LiveRecord } from './live-later';
3
+ /**
4
+ * The live part's side of a form (joins.ts): the record shown watched once it is loaded (`loaded`: at once where it was
5
+ * loaded before the part came), again as the form's state changes (`changed`), and let go with the form (`dispose`).
6
+ */
7
+ export declare function join(context: FormInner): LiveRecord;
8
+ export declare function liveRecord(context: FormInner): LiveRecord;
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.join = join;
4
+ exports.liveRecord = liveRecord;
5
+ const data_source_1 = require("./data-source");
6
+ const messages_1 = require("./messages");
7
+ const form_1 = require("./form");
8
+ const values_1 = require("./values");
9
+ /**
10
+ * The record a form shows, made live (the data source's `subscribe` and `presence`): its changes made elsewhere asked
11
+ * for once it has an id, and who else has it open asked again as this person starts or stops changing it (`editing`).
12
+ * A change arriving waits for a save of the form's on its way (its answer may be that very change), and one carrying the
13
+ * form's own version is let go; without its values, the record is read again. Where the person changed nothing, it is
14
+ * laid on the record as stored, told (`arrived`) and said; after a change of theirs, it waits as the conflict a save would
15
+ * meet, their typing untouched. Nothing arriving for a record no longer shown is laid on the one shown.
16
+ */
17
+ /**
18
+ * What stops a push: the source's own, or the one it gives once it is ready (the one-tag script's memory source asked
19
+ * before its members came).
20
+ */
21
+ const stopOf = (given) => (typeof given === 'function' ? given : () => void Promise.resolve(given).then((stop) => typeof stop === 'function' && stop()));
22
+ /**
23
+ * The live part's side of a form (joins.ts): the record shown watched once it is loaded (`loaded`: at once where it was
24
+ * loaded before the part came), again as the form's state changes (`changed`), and let go with the form (`dispose`).
25
+ */
26
+ function join(context) {
27
+ const live = liveRecord(context);
28
+ return { ...live, loaded: live.watch, changed: live.watch, dispose: live.stop };
29
+ }
30
+ function liveRecord(context) {
31
+ const { page, fields } = context;
32
+ // A page of responses has no record to watch.
33
+ if (page.data.kind !== 'record')
34
+ return { watch: () => undefined, stop: () => undefined };
35
+ const source = context.options.dataSource;
36
+ const model = page.data.model;
37
+ let watchedId = null;
38
+ let watchedAt = -1;
39
+ let editing = false;
40
+ let stopChanges = null;
41
+ let stopPresence = null;
42
+ async function arrived(change, shown) {
43
+ const state = context.state();
44
+ const id = state.recordId;
45
+ const { messages } = context;
46
+ const say = (words, tone) => context.options.host?.say(words, tone);
47
+ if (change.type === 'deleted')
48
+ return say(change.by ? (0, messages_1.fillMessage)(messages, messages.deletedBy, { name: change.by }) : messages.deletedElsewhere, 'warning');
49
+ if (change.type !== 'record')
50
+ return;
51
+ await context.settled();
52
+ const ours = (version) => !!version && !!context.state().version && version.token === context.state().version?.token;
53
+ if (!shown() || ours(change.version))
54
+ return;
55
+ let theirs = change.values;
56
+ let version = change.version;
57
+ if (!theirs && source.load) {
58
+ const now = (0, data_source_1.loadedRecordOf)(await context.track(source.load({ model, id, fields })));
59
+ if (!shown())
60
+ return;
61
+ theirs = now.values;
62
+ version = now.version ?? version;
63
+ }
64
+ if (!theirs || ours(version))
65
+ return;
66
+ const told = {};
67
+ for (const [name, value] of Object.entries(theirs))
68
+ if (fields[name])
69
+ told[name] = (0, values_1.structuredCopy)(value);
70
+ const baseline = context.baseline();
71
+ const changed = Object.keys(fields).filter((name) => name in told && !context.same(name, baseline[name], told[name]));
72
+ const by = version?.by ?? change.by;
73
+ const at = version?.at ?? change.at;
74
+ const when = { ...(by ? { by } : {}), ...(at ? { at } : {}) };
75
+ // The person's work would be lost by laying their values over the record: it waits, as a save would meet it.
76
+ if ((0, form_1.unsavedWork)(context.state())) {
77
+ context.set({ conflict: context.conflictOf({ version: version ?? { token: '', ...when }, theirs: told }) });
78
+ context.emit('arrived', { recordId: id, ...when, fields: changed, conflict: true });
79
+ return;
80
+ }
81
+ if (changed.length)
82
+ context.store(Object.fromEntries(changed.map((name) => [name, told[name]])));
83
+ if (version)
84
+ context.set({ version });
85
+ if (!changed.length)
86
+ return;
87
+ context.emit('arrived', { recordId: id, ...when, fields: changed, conflict: false });
88
+ // Who changed what, said: "Mona Adel changed Price."
89
+ const labels = changed.map((name) => page.fields[name]?.label ?? name).join(', ');
90
+ say(by ? (0, messages_1.fill)(messages.changedBy, { name: by, fields: labels }) : (0, messages_1.fill)(messages.changedElsewhere, { fields: labels }), 'info');
91
+ }
92
+ return {
93
+ watch() {
94
+ const state = context.state();
95
+ if (state.status === 'loading')
96
+ return;
97
+ const id = state.recordId;
98
+ const again = id !== watchedId || context.generation() !== watchedAt;
99
+ const editingNow = state.dirty.length > 0;
100
+ if (!again && editingNow === editing)
101
+ return;
102
+ watchedId = id;
103
+ watchedAt = context.generation();
104
+ if (again) {
105
+ stopChanges?.();
106
+ stopChanges = null;
107
+ if (state.present?.length)
108
+ context.set({ present: [] });
109
+ }
110
+ stopPresence?.();
111
+ stopPresence = null;
112
+ editing = editingNow;
113
+ if (id == null)
114
+ return;
115
+ const shown = context.shownNow();
116
+ if (again && source.subscribe)
117
+ stopChanges = stopOf(source.subscribe({ model, id, fields }, (change) => void (shown() && arrived(change, shown))));
118
+ if (source.presence) {
119
+ const me = context.options.user;
120
+ stopPresence = stopOf(source.presence({ model, id, ...(me ? { user: { id: me.id, ...(me.name ? { name: me.name } : {}) } } : {}), editing }, (people) => {
121
+ if (shown())
122
+ context.set({ present: people.filter((one) => !me || String(one.id) !== String(me.id)) });
123
+ }));
124
+ }
125
+ },
126
+ stop() {
127
+ stopChanges?.();
128
+ stopPresence?.();
129
+ stopChanges = stopPresence = null;
130
+ },
131
+ };
132
+ }
133
+ //# sourceMappingURL=live.js.map