@fieldia/core 0.26.1 → 0.28.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 (435) hide show
  1. package/README.md +326 -3
  2. package/package.json +1 -1
  3. package/schema/page.schema.json +230 -24
  4. package/src/index.d.mts +10 -2
  5. package/src/index.d.ts +10 -2
  6. package/src/index.js +26 -1
  7. package/src/index.js.map +1 -1
  8. package/src/index.mjs +11 -2
  9. package/src/index.mjs.map +1 -1
  10. package/src/lib/expression/app-functions.d.mts +47 -0
  11. package/src/lib/expression/app-functions.d.ts +47 -0
  12. package/src/lib/expression/app-functions.js +64 -0
  13. package/src/lib/expression/app-functions.js.map +1 -0
  14. package/src/lib/expression/app-functions.mjs +58 -0
  15. package/src/lib/expression/app-functions.mjs.map +1 -0
  16. package/src/lib/expression/dates.d.mts +21 -0
  17. package/src/lib/expression/dates.d.ts +21 -0
  18. package/src/lib/expression/dates.js +73 -0
  19. package/src/lib/expression/dates.js.map +1 -0
  20. package/src/lib/expression/dates.mjs +67 -0
  21. package/src/lib/expression/dates.mjs.map +1 -0
  22. package/src/lib/expression/evaluator.js +12 -6
  23. package/src/lib/expression/evaluator.js.map +1 -1
  24. package/src/lib/expression/evaluator.mjs +12 -6
  25. package/src/lib/expression/evaluator.mjs.map +1 -1
  26. package/src/lib/expression/expression.d.mts +7 -3
  27. package/src/lib/expression/expression.d.ts +7 -3
  28. package/src/lib/expression/expression.js +8 -2
  29. package/src/lib/expression/expression.js.map +1 -1
  30. package/src/lib/expression/expression.mjs +7 -2
  31. package/src/lib/expression/expression.mjs.map +1 -1
  32. package/src/lib/expression/functions-part.d.mts +7 -0
  33. package/src/lib/expression/functions-part.d.ts +7 -0
  34. package/src/lib/expression/functions-part.js +13 -0
  35. package/src/lib/expression/functions-part.js.map +1 -0
  36. package/src/lib/expression/functions-part.mjs +8 -0
  37. package/src/lib/expression/functions-part.mjs.map +1 -0
  38. package/src/lib/expression/functions.d.mts +60 -3
  39. package/src/lib/expression/functions.d.ts +60 -3
  40. package/src/lib/expression/functions.js +109 -15
  41. package/src/lib/expression/functions.js.map +1 -1
  42. package/src/lib/expression/functions.mjs +103 -16
  43. package/src/lib/expression/functions.mjs.map +1 -1
  44. package/src/lib/expression/kinds.d.mts +31 -0
  45. package/src/lib/expression/kinds.d.ts +31 -0
  46. package/src/lib/expression/kinds.js +159 -0
  47. package/src/lib/expression/kinds.js.map +1 -0
  48. package/src/lib/expression/kinds.mjs +151 -0
  49. package/src/lib/expression/kinds.mjs.map +1 -0
  50. package/src/lib/expression/modifier.d.mts +4 -3
  51. package/src/lib/expression/modifier.d.ts +4 -3
  52. package/src/lib/expression/modifier.js +4 -3
  53. package/src/lib/expression/modifier.js.map +1 -1
  54. package/src/lib/expression/modifier.mjs +4 -3
  55. package/src/lib/expression/modifier.mjs.map +1 -1
  56. package/src/lib/expression/more-functions.d.mts +8 -0
  57. package/src/lib/expression/more-functions.d.ts +8 -0
  58. package/src/lib/expression/more-functions.js +235 -0
  59. package/src/lib/expression/more-functions.js.map +1 -0
  60. package/src/lib/expression/more-functions.mjs +230 -0
  61. package/src/lib/expression/more-functions.mjs.map +1 -0
  62. package/src/lib/expression/parser.d.mts +4 -1
  63. package/src/lib/expression/parser.d.ts +4 -1
  64. package/src/lib/expression/parser.js +6 -3
  65. package/src/lib/expression/parser.js.map +1 -1
  66. package/src/lib/expression/parser.mjs +6 -3
  67. package/src/lib/expression/parser.mjs.map +1 -1
  68. package/src/lib/expression/reads.d.mts +2 -2
  69. package/src/lib/expression/reads.d.ts +2 -2
  70. package/src/lib/expression/reads.js +6 -4
  71. package/src/lib/expression/reads.js.map +1 -1
  72. package/src/lib/expression/reads.mjs +6 -4
  73. package/src/lib/expression/reads.mjs.map +1 -1
  74. package/src/lib/format/actions.d.mts +16 -16
  75. package/src/lib/format/actions.d.ts +16 -16
  76. package/src/lib/format/check-page.d.mts +7 -2
  77. package/src/lib/format/check-page.d.ts +7 -2
  78. package/src/lib/format/check-page.js +10 -4
  79. package/src/lib/format/check-page.js.map +1 -1
  80. package/src/lib/format/check-page.mjs +10 -4
  81. package/src/lib/format/check-page.mjs.map +1 -1
  82. package/src/lib/format/choice-options.d.mts +34 -0
  83. package/src/lib/format/choice-options.d.ts +34 -0
  84. package/src/lib/format/choice-options.js +60 -0
  85. package/src/lib/format/choice-options.js.map +1 -0
  86. package/src/lib/format/choice-options.mjs +51 -0
  87. package/src/lib/format/choice-options.mjs.map +1 -0
  88. package/src/lib/format/endings-checks.d.mts +8 -0
  89. package/src/lib/format/endings-checks.d.ts +8 -0
  90. package/src/lib/format/endings-checks.js +23 -0
  91. package/src/lib/format/endings-checks.js.map +1 -0
  92. package/src/lib/format/endings-checks.mjs +20 -0
  93. package/src/lib/format/endings-checks.mjs.map +1 -0
  94. package/src/lib/format/endings.d.mts +40 -0
  95. package/src/lib/format/endings.d.ts +40 -0
  96. package/src/lib/format/endings.js +15 -0
  97. package/src/lib/format/endings.js.map +1 -0
  98. package/src/lib/format/endings.mjs +12 -0
  99. package/src/lib/format/endings.mjs.map +1 -0
  100. package/src/lib/format/field.d.mts +151 -16
  101. package/src/lib/format/field.d.ts +151 -16
  102. package/src/lib/format/field.js +64 -11
  103. package/src/lib/format/field.js.map +1 -1
  104. package/src/lib/format/field.mjs +63 -10
  105. package/src/lib/format/field.mjs.map +1 -1
  106. package/src/lib/format/head-checks.d.mts +2 -0
  107. package/src/lib/format/head-checks.d.ts +2 -0
  108. package/src/lib/format/head-checks.js +2 -59
  109. package/src/lib/format/head-checks.js.map +1 -1
  110. package/src/lib/format/head-checks.mjs +1 -58
  111. package/src/lib/format/head-checks.mjs.map +1 -1
  112. package/src/lib/format/later-checks.d.mts +17 -0
  113. package/src/lib/format/later-checks.d.ts +17 -0
  114. package/src/lib/format/later-checks.js +20 -0
  115. package/src/lib/format/later-checks.js.map +1 -0
  116. package/src/lib/format/later-checks.mjs +17 -0
  117. package/src/lib/format/later-checks.mjs.map +1 -0
  118. package/src/lib/format/layout.d.mts +264 -190
  119. package/src/lib/format/layout.d.ts +264 -190
  120. package/src/lib/format/layout.js +34 -29
  121. package/src/lib/format/layout.js.map +1 -1
  122. package/src/lib/format/layout.mjs +14 -4
  123. package/src/lib/format/layout.mjs.map +1 -1
  124. package/src/lib/format/layout.types.d.mts +2 -1
  125. package/src/lib/format/layout.types.d.ts +2 -1
  126. package/src/lib/format/limits-checks.d.mts +14 -0
  127. package/src/lib/format/limits-checks.d.ts +14 -0
  128. package/src/lib/format/limits-checks.js +36 -0
  129. package/src/lib/format/limits-checks.js.map +1 -0
  130. package/src/lib/format/limits-checks.mjs +33 -0
  131. package/src/lib/format/limits-checks.mjs.map +1 -0
  132. package/src/lib/format/limits.d.mts +24 -0
  133. package/src/lib/format/limits.d.ts +24 -0
  134. package/src/lib/format/limits.js +35 -0
  135. package/src/lib/format/limits.js.map +1 -0
  136. package/src/lib/format/limits.mjs +32 -0
  137. package/src/lib/format/limits.mjs.map +1 -0
  138. package/src/lib/format/list-checks.d.mts +44 -0
  139. package/src/lib/format/list-checks.d.ts +44 -0
  140. package/src/lib/format/list-checks.js +340 -0
  141. package/src/lib/format/list-checks.js.map +1 -0
  142. package/src/lib/format/list-checks.mjs +336 -0
  143. package/src/lib/format/list-checks.mjs.map +1 -0
  144. package/src/lib/format/map-checks.d.mts +33 -0
  145. package/src/lib/format/map-checks.d.ts +33 -0
  146. package/src/lib/format/map-checks.js +180 -0
  147. package/src/lib/format/map-checks.js.map +1 -0
  148. package/src/lib/format/map-checks.mjs +175 -0
  149. package/src/lib/format/map-checks.mjs.map +1 -0
  150. package/src/lib/format/mapchecks-part.d.mts +5 -0
  151. package/src/lib/format/mapchecks-part.d.ts +5 -0
  152. package/src/lib/format/mapchecks-part.js +11 -0
  153. package/src/lib/format/mapchecks-part.js.map +1 -0
  154. package/src/lib/format/mapchecks-part.mjs +6 -0
  155. package/src/lib/format/mapchecks-part.mjs.map +1 -0
  156. package/src/lib/format/option-checks.d.mts +16 -0
  157. package/src/lib/format/option-checks.d.ts +16 -0
  158. package/src/lib/format/option-checks.js +39 -0
  159. package/src/lib/format/option-checks.js.map +1 -0
  160. package/src/lib/format/option-checks.mjs +36 -0
  161. package/src/lib/format/option-checks.mjs.map +1 -0
  162. package/src/lib/format/options-part.d.mts +6 -0
  163. package/src/lib/format/options-part.d.ts +6 -0
  164. package/src/lib/format/options-part.js +11 -0
  165. package/src/lib/format/options-part.js.map +1 -0
  166. package/src/lib/format/options-part.mjs +7 -0
  167. package/src/lib/format/options-part.mjs.map +1 -0
  168. package/src/lib/format/page.d.mts +154 -71
  169. package/src/lib/format/page.d.ts +154 -71
  170. package/src/lib/format/page.js +5 -0
  171. package/src/lib/format/page.js.map +1 -1
  172. package/src/lib/format/page.mjs +5 -0
  173. package/src/lib/format/page.mjs.map +1 -1
  174. package/src/lib/format/part-checks.d.mts +20 -0
  175. package/src/lib/format/part-checks.d.ts +20 -0
  176. package/src/lib/format/part-checks.js +3 -0
  177. package/src/lib/format/part-checks.js.map +1 -0
  178. package/src/lib/format/part-checks.mjs +2 -0
  179. package/src/lib/format/part-checks.mjs.map +1 -0
  180. package/src/lib/format/references.d.mts +71 -65
  181. package/src/lib/format/references.d.ts +71 -65
  182. package/src/lib/format/references.js +194 -631
  183. package/src/lib/format/references.js.map +1 -1
  184. package/src/lib/format/references.mjs +194 -631
  185. package/src/lib/format/references.mjs.map +1 -1
  186. package/src/lib/format/seats-checks.d.mts +3 -0
  187. package/src/lib/format/seats-checks.d.ts +3 -0
  188. package/src/lib/format/seats-checks.js +13 -0
  189. package/src/lib/format/seats-checks.js.map +1 -0
  190. package/src/lib/format/seats-checks.mjs +10 -0
  191. package/src/lib/format/seats-checks.mjs.map +1 -0
  192. package/src/lib/format/sheet-head-checks.d.mts +4 -0
  193. package/src/lib/format/sheet-head-checks.d.ts +4 -0
  194. package/src/lib/format/sheet-head-checks.js +68 -0
  195. package/src/lib/format/sheet-head-checks.js.map +1 -0
  196. package/src/lib/format/sheet-head-checks.mjs +65 -0
  197. package/src/lib/format/sheet-head-checks.mjs.map +1 -0
  198. package/src/lib/format/signature-checks.d.mts +7 -0
  199. package/src/lib/format/signature-checks.d.ts +7 -0
  200. package/src/lib/format/signature-checks.js +32 -0
  201. package/src/lib/format/signature-checks.js.map +1 -0
  202. package/src/lib/format/signature-checks.mjs +29 -0
  203. package/src/lib/format/signature-checks.mjs.map +1 -0
  204. package/src/lib/format/signature-options.d.mts +24 -0
  205. package/src/lib/format/signature-options.d.ts +24 -0
  206. package/src/lib/format/signature-options.js +30 -0
  207. package/src/lib/format/signature-options.js.map +1 -0
  208. package/src/lib/format/signature-options.mjs +26 -0
  209. package/src/lib/format/signature-options.mjs.map +1 -0
  210. package/src/lib/format/slots-checks.d.mts +4 -0
  211. package/src/lib/format/slots-checks.d.ts +4 -0
  212. package/src/lib/format/slots-checks.js +21 -0
  213. package/src/lib/format/slots-checks.js.map +1 -0
  214. package/src/lib/format/slots-checks.mjs +18 -0
  215. package/src/lib/format/slots-checks.mjs.map +1 -0
  216. package/src/lib/format/statusbar-checks.d.mts +8 -0
  217. package/src/lib/format/statusbar-checks.d.ts +8 -0
  218. package/src/lib/format/statusbar-checks.js +35 -0
  219. package/src/lib/format/statusbar-checks.js.map +1 -0
  220. package/src/lib/format/statusbar-checks.mjs +32 -0
  221. package/src/lib/format/statusbar-checks.mjs.map +1 -0
  222. package/src/lib/format/table-checks.d.mts +21 -0
  223. package/src/lib/format/table-checks.d.ts +21 -0
  224. package/src/lib/format/table-checks.js +86 -0
  225. package/src/lib/format/table-checks.js.map +1 -0
  226. package/src/lib/format/table-checks.mjs +82 -0
  227. package/src/lib/format/table-checks.mjs.map +1 -0
  228. package/src/lib/format/translate.js +2 -2
  229. package/src/lib/format/translate.js.map +1 -1
  230. package/src/lib/format/translate.mjs +2 -2
  231. package/src/lib/format/translate.mjs.map +1 -1
  232. package/src/lib/format/upgrade.d.mts +7 -3
  233. package/src/lib/format/upgrade.d.ts +7 -3
  234. package/src/lib/format/upgrade.js +7 -3
  235. package/src/lib/format/upgrade.js.map +1 -1
  236. package/src/lib/format/upgrade.mjs +7 -3
  237. package/src/lib/format/upgrade.mjs.map +1 -1
  238. package/src/lib/format/validate.d.mts +18 -2
  239. package/src/lib/format/validate.d.ts +18 -2
  240. package/src/lib/format/validate.js +36 -3
  241. package/src/lib/format/validate.js.map +1 -1
  242. package/src/lib/format/validate.mjs +35 -3
  243. package/src/lib/format/validate.mjs.map +1 -1
  244. package/src/lib/format/version.d.mts +2 -2
  245. package/src/lib/format/version.d.ts +2 -2
  246. package/src/lib/format/version.js +2 -2
  247. package/src/lib/format/version.js.map +1 -1
  248. package/src/lib/format/version.mjs +2 -2
  249. package/src/lib/format/version.mjs.map +1 -1
  250. package/src/lib/format/words.d.mts +6 -2
  251. package/src/lib/format/words.d.ts +6 -2
  252. package/src/lib/format/words.js +13 -7
  253. package/src/lib/format/words.js.map +1 -1
  254. package/src/lib/format/words.mjs +13 -7
  255. package/src/lib/format/words.mjs.map +1 -1
  256. package/src/lib/parts.d.mts +45 -0
  257. package/src/lib/parts.d.ts +45 -0
  258. package/src/lib/parts.js +60 -0
  259. package/src/lib/parts.js.map +1 -0
  260. package/src/lib/parts.mjs +53 -0
  261. package/src/lib/parts.mjs.map +1 -0
  262. package/src/lib/record/cells.d.mts +3 -3
  263. package/src/lib/record/cells.d.ts +3 -3
  264. package/src/lib/record/cells.js +16 -15
  265. package/src/lib/record/cells.js.map +1 -1
  266. package/src/lib/record/cells.mjs +16 -15
  267. package/src/lib/record/cells.mjs.map +1 -1
  268. package/src/lib/record/check.js +3 -1
  269. package/src/lib/record/check.js.map +1 -1
  270. package/src/lib/record/check.mjs +3 -1
  271. package/src/lib/record/check.mjs.map +1 -1
  272. package/src/lib/record/compute.d.mts +16 -5
  273. package/src/lib/record/compute.d.ts +16 -5
  274. package/src/lib/record/compute.js +57 -16
  275. package/src/lib/record/compute.js.map +1 -1
  276. package/src/lib/record/compute.mjs +57 -16
  277. package/src/lib/record/compute.mjs.map +1 -1
  278. package/src/lib/record/data-source.d.mts +140 -3
  279. package/src/lib/record/data-source.d.ts +140 -3
  280. package/src/lib/record/data-source.js.map +1 -1
  281. package/src/lib/record/data-source.mjs.map +1 -1
  282. package/src/lib/record/day-words.d.mts +10 -0
  283. package/src/lib/record/day-words.d.ts +10 -0
  284. package/src/lib/record/day-words.js +23 -0
  285. package/src/lib/record/day-words.js.map +1 -0
  286. package/src/lib/record/day-words.mjs +20 -0
  287. package/src/lib/record/day-words.mjs.map +1 -0
  288. package/src/lib/record/drafts.d.mts +19 -0
  289. package/src/lib/record/drafts.d.ts +19 -0
  290. package/src/lib/record/drafts.js +35 -0
  291. package/src/lib/record/drafts.js.map +1 -0
  292. package/src/lib/record/drafts.mjs +31 -0
  293. package/src/lib/record/drafts.mjs.map +1 -0
  294. package/src/lib/record/env.d.mts +5 -1
  295. package/src/lib/record/env.d.ts +5 -1
  296. package/src/lib/record/env.js +9 -1
  297. package/src/lib/record/env.js.map +1 -1
  298. package/src/lib/record/env.mjs +8 -1
  299. package/src/lib/record/env.mjs.map +1 -1
  300. package/src/lib/record/form-limits.d.mts +78 -0
  301. package/src/lib/record/form-limits.d.ts +78 -0
  302. package/src/lib/record/form-limits.js +230 -0
  303. package/src/lib/record/form-limits.js.map +1 -0
  304. package/src/lib/record/form-limits.mjs +223 -0
  305. package/src/lib/record/form-limits.mjs.map +1 -0
  306. package/src/lib/record/form.d.mts +180 -9
  307. package/src/lib/record/form.d.ts +180 -9
  308. package/src/lib/record/form.js +858 -90
  309. package/src/lib/record/form.js.map +1 -1
  310. package/src/lib/record/form.mjs +858 -90
  311. package/src/lib/record/form.mjs.map +1 -1
  312. package/src/lib/record/limits-part.d.mts +6 -0
  313. package/src/lib/record/limits-part.d.ts +6 -0
  314. package/src/lib/record/limits-part.js +12 -0
  315. package/src/lib/record/limits-part.js.map +1 -0
  316. package/src/lib/record/limits-part.mjs +7 -0
  317. package/src/lib/record/limits-part.mjs.map +1 -0
  318. package/src/lib/record/limits.js +4 -2
  319. package/src/lib/record/limits.js.map +1 -1
  320. package/src/lib/record/limits.mjs +4 -2
  321. package/src/lib/record/limits.mjs.map +1 -1
  322. package/src/lib/record/line-choices.d.mts +30 -0
  323. package/src/lib/record/line-choices.d.ts +30 -0
  324. package/src/lib/record/line-choices.js +42 -0
  325. package/src/lib/record/line-choices.js.map +1 -0
  326. package/src/lib/record/line-choices.mjs +36 -0
  327. package/src/lib/record/line-choices.mjs.map +1 -0
  328. package/src/lib/record/locales/ar.js +11 -0
  329. package/src/lib/record/locales/ar.js.map +1 -1
  330. package/src/lib/record/locales/ar.mjs +11 -0
  331. package/src/lib/record/locales/ar.mjs.map +1 -1
  332. package/src/lib/record/locales/de.js +11 -0
  333. package/src/lib/record/locales/de.js.map +1 -1
  334. package/src/lib/record/locales/de.mjs +11 -0
  335. package/src/lib/record/locales/de.mjs.map +1 -1
  336. package/src/lib/record/locales/fr.js +11 -0
  337. package/src/lib/record/locales/fr.js.map +1 -1
  338. package/src/lib/record/locales/fr.mjs +11 -0
  339. package/src/lib/record/locales/fr.mjs.map +1 -1
  340. package/src/lib/record/memory-data-source.d.mts +44 -3
  341. package/src/lib/record/memory-data-source.d.ts +44 -3
  342. package/src/lib/record/memory-data-source.js +102 -40
  343. package/src/lib/record/memory-data-source.js.map +1 -1
  344. package/src/lib/record/memory-data-source.mjs +101 -40
  345. package/src/lib/record/memory-data-source.mjs.map +1 -1
  346. package/src/lib/record/memory-kept.d.mts +20 -0
  347. package/src/lib/record/memory-kept.d.ts +20 -0
  348. package/src/lib/record/memory-kept.js +46 -0
  349. package/src/lib/record/memory-kept.js.map +1 -0
  350. package/src/lib/record/memory-kept.mjs +43 -0
  351. package/src/lib/record/memory-kept.mjs.map +1 -0
  352. package/src/lib/record/memory-later.d.mts +19 -0
  353. package/src/lib/record/memory-later.d.ts +19 -0
  354. package/src/lib/record/memory-later.js +39 -0
  355. package/src/lib/record/memory-later.js.map +1 -0
  356. package/src/lib/record/memory-later.mjs +35 -0
  357. package/src/lib/record/memory-later.mjs.map +1 -0
  358. package/src/lib/record/memory-part.d.mts +7 -0
  359. package/src/lib/record/memory-part.d.ts +7 -0
  360. package/src/lib/record/memory-part.js +13 -0
  361. package/src/lib/record/memory-part.js.map +1 -0
  362. package/src/lib/record/memory-part.mjs +8 -0
  363. package/src/lib/record/memory-part.mjs.map +1 -0
  364. package/src/lib/record/messages.d.mts +27 -2
  365. package/src/lib/record/messages.d.ts +27 -2
  366. package/src/lib/record/messages.js +13 -4
  367. package/src/lib/record/messages.js.map +1 -1
  368. package/src/lib/record/messages.mjs +13 -4
  369. package/src/lib/record/messages.mjs.map +1 -1
  370. package/src/lib/record/option-rules.d.mts +56 -0
  371. package/src/lib/record/option-rules.d.ts +56 -0
  372. package/src/lib/record/option-rules.js +143 -0
  373. package/src/lib/record/option-rules.js.map +1 -0
  374. package/src/lib/record/option-rules.mjs +140 -0
  375. package/src/lib/record/option-rules.mjs.map +1 -0
  376. package/src/lib/record/record-words.d.mts +13 -1
  377. package/src/lib/record/record-words.d.ts +13 -1
  378. package/src/lib/record/record-words.js +29 -1
  379. package/src/lib/record/record-words.js.map +1 -1
  380. package/src/lib/record/record-words.mjs +27 -1
  381. package/src/lib/record/record-words.mjs.map +1 -1
  382. package/src/lib/record/rules.d.mts +2 -2
  383. package/src/lib/record/rules.d.ts +2 -2
  384. package/src/lib/record/rules.js +3 -3
  385. package/src/lib/record/rules.js.map +1 -1
  386. package/src/lib/record/rules.mjs +3 -3
  387. package/src/lib/record/rules.mjs.map +1 -1
  388. package/src/lib/record/run.js +9 -7
  389. package/src/lib/record/run.js.map +1 -1
  390. package/src/lib/record/run.mjs +9 -7
  391. package/src/lib/record/run.mjs.map +1 -1
  392. package/src/lib/record/search.d.mts +12 -2
  393. package/src/lib/record/search.d.ts +12 -2
  394. package/src/lib/record/search.js +29 -4
  395. package/src/lib/record/search.js.map +1 -1
  396. package/src/lib/record/search.mjs +29 -4
  397. package/src/lib/record/search.mjs.map +1 -1
  398. package/src/lib/record/set-when.d.mts +3 -3
  399. package/src/lib/record/set-when.d.ts +3 -3
  400. package/src/lib/record/set-when.js +9 -9
  401. package/src/lib/record/set-when.js.map +1 -1
  402. package/src/lib/record/set-when.mjs +9 -9
  403. package/src/lib/record/set-when.mjs.map +1 -1
  404. package/src/lib/record/signed.d.mts +21 -0
  405. package/src/lib/record/signed.d.ts +21 -0
  406. package/src/lib/record/signed.js +62 -0
  407. package/src/lib/record/signed.js.map +1 -0
  408. package/src/lib/record/signed.mjs +57 -0
  409. package/src/lib/record/signed.mjs.map +1 -0
  410. package/src/lib/record/taking.d.mts +60 -0
  411. package/src/lib/record/taking.d.ts +60 -0
  412. package/src/lib/record/taking.js +58 -0
  413. package/src/lib/record/taking.js.map +1 -0
  414. package/src/lib/record/taking.mjs +50 -0
  415. package/src/lib/record/taking.mjs.map +1 -0
  416. package/src/lib/record/value-map.js +11 -4
  417. package/src/lib/record/value-map.js.map +1 -1
  418. package/src/lib/record/value-map.mjs +11 -4
  419. package/src/lib/record/value-map.mjs.map +1 -1
  420. package/src/lib/record/values.d.mts +20 -0
  421. package/src/lib/record/values.d.ts +20 -0
  422. package/src/lib/record/values.js.map +1 -1
  423. package/src/lib/record/values.mjs.map +1 -1
  424. package/src/lib/record/waits.d.mts +13 -6
  425. package/src/lib/record/waits.d.ts +13 -6
  426. package/src/lib/record/waits.js +9 -12
  427. package/src/lib/record/waits.js.map +1 -1
  428. package/src/lib/record/waits.mjs +9 -12
  429. package/src/lib/record/waits.mjs.map +1 -1
  430. package/src/runtime.d.mts +17 -6
  431. package/src/runtime.d.ts +17 -6
  432. package/src/runtime.js +45 -3
  433. package/src/runtime.js.map +1 -1
  434. package/src/runtime.mjs +17 -1
  435. package/src/runtime.mjs.map +1 -1
@@ -0,0 +1,340 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkList = checkList;
4
+ exports.checkRelated = checkRelated;
5
+ const bulk_edit_1 = require("./bulk-edit");
6
+ const import_fields_1 = require("./import-fields");
7
+ /** The kinds of field a list's filter bar can list the values of. */
8
+ const LISTS_ITS_VALUES = new Set(['selection', 'many2one', 'many2many', 'boolean', 'char', 'integer']);
9
+ /** The kinds of field a list's filter bar filters by their range, From and To: a whole number where the page says so. */
10
+ const HAS_A_RANGE = new Set(['integer', 'float', 'monetary', 'date', 'datetime']);
11
+ /** The kinds whose range is all a filter can take of them: no list of their values. */
12
+ const RANGE_ONLY = new Set(['float', 'monetary', 'date', 'datetime']);
13
+ /** What a calendar's start and end can be: a day, or a day and a time. */
14
+ const CALENDAR_TIMES = new Set(['date', 'datetime']);
15
+ /** What a record's words on a calendar can be. */
16
+ const CALENDAR_WORDS = new Set(['char', 'text', 'selection', 'many2one', 'integer', 'float', 'monetary', 'date', 'datetime']);
17
+ /** What a calendar's columns come from: a value that repeats. */
18
+ const CALENDAR_COLUMNS = new Set(['many2one', 'selection', 'char', 'integer']);
19
+ /** What a record's colour comes from. */
20
+ const CALENDAR_COLOURS = new Set(['many2one', 'selection', 'char', 'integer', 'boolean']);
21
+ function checkList(list, path, tools) {
22
+ if (tools.page.data.kind !== 'record')
23
+ tools.report('data', 'a list shows records: its data needs kind "record" and a model');
24
+ checkListed(list, tools.page.fields, path, tools);
25
+ list.groupBy?.forEach((name, i) => tools.need(name, `${path}.groupBy[${i}]`));
26
+ // A list's filters are about its own records: their fields are the page's, and there is no record to take a value from.
27
+ const walk = (item, at) => {
28
+ if ('any' in item)
29
+ return item.any.forEach((inner, i) => walk(inner, `${at}.any[${i}]`));
30
+ if ('all' in item)
31
+ return item.all.forEach((inner, i) => walk(inner, `${at}.all[${i}]`));
32
+ tools.need(item.field, `${at}.field`);
33
+ if (item.valueFrom !== undefined)
34
+ tools.report(`${at}.valueFrom`, "a list's filter compares with values, not with another field");
35
+ };
36
+ const named = new Set();
37
+ list.filters?.forEach((filter, i) => {
38
+ tools.claim(filter.id, `${path}.filters[${i}]`);
39
+ named.add(filter.id);
40
+ filter.filter?.forEach((item, j) => walk(item, `${path}.filters[${i}].filter[${j}]`));
41
+ // A period is of a date, or a date and time.
42
+ const dated = filter.period ? tools.need(filter.period.field, `${path}.filters[${i}].period.field`) : undefined;
43
+ if (dated && dated.type !== 'date' && dated.type !== 'datetime')
44
+ tools.report(`${path}.filters[${i}].period.field`, `"${filter.period?.field}" is a ${dated.type}; a period is of a date, or a date and time`);
45
+ });
46
+ list.defaultFilters?.forEach((id, i) => {
47
+ if (!named.has(id))
48
+ tools.report(`${path}.defaultFilters[${i}]`, `no filter "${id}" in this list`);
49
+ });
50
+ list.actions?.forEach((button, i) => {
51
+ tools.claim(button.id, `${path}.actions[${i}]`);
52
+ tools.checkPress(button, `${path}.actions[${i}]`);
53
+ });
54
+ if (list.map)
55
+ checkListMap(list.map, `${path}.map`, tools);
56
+ if (list.calendar)
57
+ checkListCalendar(list, `${path}.calendar`, tools);
58
+ checkListCells(list, path, tools);
59
+ checkListRows(list, path, tools);
60
+ }
61
+ /**
62
+ * A list's cards, gallery, columns people choose and rows' own rules: a
63
+ * card's fields the page's, its picture one that can hold a picture; the
64
+ * optional columns among the columns; a row's tones, bold and buttons
65
+ * reading the list's record (its fields, `id`, `user`); and the list
66
+ * opening on one thing.
67
+ */
68
+ function checkListRows(list, path, tools) {
69
+ if (list.card)
70
+ checkListCard(list.card, `${path}.card`, tools.page.fields, tools);
71
+ for (const column of Object.keys(list.optionalColumns ?? {})) {
72
+ if (!list.columns.includes(column))
73
+ tools.report(`${path}.optionalColumns.${column}`, `"${column}" is no column of this list: a person shows or hides its columns`);
74
+ }
75
+ // A column a person may hide, every one hidden at first: the list would open with no column but its own.
76
+ if (list.optionalColumns && list.columns.every((column) => list.optionalColumns?.[column] === 'hide'))
77
+ tools.report(`${path}.optionalColumns`, 'every column starts hidden: show one at least, as the list opens');
78
+ if (list.gallery?.opens === 'gallery') {
79
+ if (list.map?.view && list.map.view !== 'list')
80
+ tools.report(`${path}.gallery.opens`, 'the list opens on its map (map.view) and on its gallery: say one');
81
+ if (list.calendar?.opens === 'calendar')
82
+ tools.report(`${path}.gallery.opens`, 'the list opens on its calendar and on its gallery: say one');
83
+ }
84
+ list.rowTones?.forEach((tone, i) => tools.checkModifiers(tone, `${path}.rowTones[${i}]`, ['when']));
85
+ tools.checkModifiers(list, path, ['rowBold']);
86
+ list.rowButtons?.forEach((button, i) => {
87
+ tools.claim(button.id, `${path}.rowButtons[${i}]`);
88
+ tools.checkPress(button, `${path}.rowButtons[${i}]`);
89
+ // Shown by a condition on each row's record.
90
+ tools.checkModifiers(button, `${path}.rowButtons[${i}]`, ['invisible']);
91
+ });
92
+ }
93
+ /**
94
+ * A list's calendar: when each record starts (a date, or a date and time)
95
+ * and ends (the same kind), its words, its colour and its columns, each
96
+ * from a field that can; the view it opens on is one it offers, its hours
97
+ * run forward, and the list opens on one thing.
98
+ */
99
+ function checkListCalendar(list, path, tools) {
100
+ const calendar = list.calendar;
101
+ const typed = (name, key, ok, says) => {
102
+ if (name === undefined)
103
+ return undefined;
104
+ const def = tools.need(name, `${path}.${key}`);
105
+ if (def && !ok.has(def.type))
106
+ tools.report(`${path}.${key}`, `"${name}" is a ${def.type}; ${says}`);
107
+ return def;
108
+ };
109
+ const start = typed(calendar.start, 'start', CALENDAR_TIMES, "a calendar's start is a date, or a date and time");
110
+ const end = typed(calendar.end, 'end', CALENDAR_TIMES, "a calendar's end is a date, or a date and time");
111
+ if (start && end && CALENDAR_TIMES.has(start.type) && CALENDAR_TIMES.has(end.type) && start.type !== end.type) {
112
+ tools.report(`${path}.end`, `"${calendar.end}" is a ${end.type}; an end is the same kind of field as its start, a ${start.type}`);
113
+ }
114
+ typed(calendar.title, 'title', CALENDAR_WORDS, "a record's words on a calendar are a field that can be said");
115
+ typed(calendar.colour, 'colour', CALENDAR_COLOURS, 'a colour comes from a link, a choice, text, a whole number or a yes or no');
116
+ typed(calendar.resource, 'resource', CALENDAR_COLUMNS, 'a column for each comes from a link, a choice, text or a whole number');
117
+ const views = calendar.views ?? ['day', 'week', 'month', 'agenda'];
118
+ views.forEach((view, i) => {
119
+ if (views.indexOf(view) !== i)
120
+ tools.report(`${path}.views[${i}]`, `"${view}" is offered twice`);
121
+ });
122
+ if (calendar.view && !views.includes(calendar.view))
123
+ tools.report(`${path}.view`, `"${calendar.view}" is not one of its views (${views.join(', ')})`);
124
+ if (calendar.hours && calendar.hours.end <= calendar.hours.start)
125
+ tools.report(`${path}.hours`, `the hours end at ${calendar.hours.end}, before they start at ${calendar.hours.start}`);
126
+ if (calendar.opens === 'calendar' && list.map?.view && list.map.view !== 'list')
127
+ tools.report(`${path}.opens`, 'the list opens on its map (map.view) and on its calendar: say one');
128
+ }
129
+ /**
130
+ * A list drawn as a backlog: each column's cells are a column's, a lead's
131
+ * icon is by a field's values; the filter bar's fields can list their
132
+ * values; rows nest under a link to the list's own records; and buttons for
133
+ * the rows chosen need a box to choose one.
134
+ */
135
+ function checkListCells(list, path, tools) {
136
+ if (list.filterFields && list.search !== 'fields')
137
+ tools.report(`${path}.filterFields`, 'the filter fields are for the "fields" search: add "search": "fields"');
138
+ list.filterFields?.forEach((name, i) => {
139
+ const def = tools.need(name, `${path}.filterFields[${i}]`);
140
+ if (def && !LISTS_ITS_VALUES.has(def.type) && !RANGE_ONLY.has(def.type)) {
141
+ tools.report(`${path}.filterFields[${i}]`, `"${name}" is a ${def.type}; a filter lists the values of a choice, a link, links, a yes or no, text or a whole number, or takes the range of a number or a date`);
142
+ }
143
+ });
144
+ // A filter's own name is for a filter the bar offers.
145
+ for (const name of Object.keys(list.filterLabels ?? {})) {
146
+ if (!list.filterFields?.includes(name))
147
+ tools.report(`${path}.filterLabels.${name}`, `"${name}" is no field of filterFields: its name is for a filter the bar offers`);
148
+ }
149
+ // A range is a number's or a date's the bar offers; the presses for its least values are a number's, in order.
150
+ for (const [name, range] of Object.entries(list.filterRanges ?? {})) {
151
+ const at = `${path}.filterRanges.${name}`;
152
+ if (!list.filterFields?.includes(name)) {
153
+ tools.report(at, `"${name}" is no field of filterFields: a range is for a filter the bar offers`);
154
+ continue;
155
+ }
156
+ const def = tools.page.fields[name];
157
+ if (!def)
158
+ continue;
159
+ if (!HAS_A_RANGE.has(def.type)) {
160
+ tools.report(at, `"${name}" is a ${def.type}; a range is a number's or a date's`);
161
+ continue;
162
+ }
163
+ const least = range.atLeast ?? [];
164
+ if (least.length && (def.type === 'date' || def.type === 'datetime'))
165
+ tools.report(`${at}.atLeast`, `"${name}" is a ${def.type}; the presses for a least value are a number's`);
166
+ else if (def.type === 'integer' && least.some((n) => !Number.isInteger(n)))
167
+ tools.report(`${at}.atLeast`, `"${name}" holds whole numbers: each least value is one`);
168
+ else if (least.some((n, i) => i > 0 && n <= least[i - 1]))
169
+ tools.report(`${at}.atLeast`, 'the least values go from the smallest to the largest, each once');
170
+ }
171
+ if (list.filterSheet && list.search !== 'fields')
172
+ tools.report(`${path}.filterSheet`, 'the filter sheet is the filter bar\'s on a phone: add "search": "fields"');
173
+ if (list.parentField !== undefined) {
174
+ const def = tools.need(list.parentField, `${path}.parentField`);
175
+ const model = tools.page.data.kind === 'record' ? tools.page.data.model : '';
176
+ if (def && (def.type !== 'many2one' || def.relation !== model)) {
177
+ tools.report(`${path}.parentField`, `"${list.parentField}" ${def.type === 'many2one' ? `links to ${def.relation}` : `is a ${def.type}`}; a parent is a many2one to the list’s own model, ${model}`);
178
+ }
179
+ }
180
+ if (list.choose === false && list.actions?.length)
181
+ tools.report(`${path}.actions`, 'a list’s buttons act on the rows chosen: with "choose": false there is no way to choose one');
182
+ checkBulkEdit(list, path, tools);
183
+ checkImport(list, path, tools);
184
+ }
185
+ /** A list's Edit: each field it names one value can set in many records, and rows to choose to set it on. */
186
+ function checkBulkEdit(list, path, tools) {
187
+ if (!list.bulkEdit)
188
+ return;
189
+ if (list.choose === false)
190
+ tools.report(`${path}.bulkEdit`, 'Edit changes the rows chosen: with "choose": false there is no way to choose one');
191
+ if (list.bulkEdit === true) {
192
+ if (!list.columns.some((name) => (0, bulk_edit_1.bulkSettable)(tools.page.fields[name])))
193
+ tools.report(`${path}.bulkEdit`, 'Edit offers the columns one value can set, and none of these can: name the fields it offers');
194
+ return;
195
+ }
196
+ const named = list.bulkEdit;
197
+ named.forEach((name, i) => {
198
+ const at = `${path}.bulkEdit[${i}]`;
199
+ if (named.indexOf(name) !== i)
200
+ tools.report(at, `"${name}" is offered twice`);
201
+ const def = tools.need(name, at);
202
+ if (!def)
203
+ return;
204
+ if (!bulk_edit_1.BULK_KINDS.has(def.type))
205
+ tools.report(at, `"${name}" is a ${def.type}; one value set in many records is words, a number, money, a yes or no, a date, a choice or a link`);
206
+ else if (def.readonly === true || def.compute)
207
+ tools.report(at, `"${name}" is ${def.compute ? 'worked out from other fields' : 'read-only'}; Edit sets a field people can change`);
208
+ });
209
+ }
210
+ /** A list's Import: each field it names one a file's cell can fill, and at least one such field on the page. */
211
+ function checkImport(list, path, tools) {
212
+ if (!list.import)
213
+ return;
214
+ if (list.import === true) {
215
+ if (!Object.values(tools.page.fields).some((def) => (0, import_fields_1.importable)(def)))
216
+ tools.report(`${path}.import`, 'Import fills the fields a file’s cell can, and this page has none: words, a number, money, yes or no, a date, a choice or a link people can change');
217
+ return;
218
+ }
219
+ const named = list.import;
220
+ named.forEach((name, i) => {
221
+ const at = `${path}.import[${i}]`;
222
+ if (named.indexOf(name) !== i)
223
+ tools.report(at, `"${name}" is offered twice`);
224
+ const def = tools.need(name, at);
225
+ if (!def)
226
+ return;
227
+ if (!import_fields_1.IMPORT_KINDS.has(def.type))
228
+ tools.report(at, `"${name}" is a ${def.type}; a file's cell fills words, a number, money, a yes or no, a date, a choice, or a link or links by name`);
229
+ else if (def.readonly === true || def.compute)
230
+ tools.report(at, `"${name}" is ${def.compute ? 'worked out from other fields' : 'read-only'}; Import fills a field people can change`);
231
+ });
232
+ }
233
+ /** A list's map: where each record is, and the fields its pin and its card show, each of a type that can. */
234
+ function checkListMap(map, path, tools) {
235
+ const pair = map.latitude !== undefined || map.longitude !== undefined;
236
+ if (map.point !== undefined && pair)
237
+ tools.report(path, 'a map takes point, or latitude and longitude, not both');
238
+ else if (map.point === undefined && (map.latitude === undefined || map.longitude === undefined))
239
+ tools.report(path, 'a map needs where each record is: point, or latitude and longitude');
240
+ tools.checkPlace(map, path, tools.here(), map.pin, map.card);
241
+ if (map.regions)
242
+ tools.need(map.regions.field, `${path}.regions.field`);
243
+ if (typeof map.heat === 'object' && map.heat.weight !== undefined) {
244
+ const def = tools.need(map.heat.weight, `${path}.heat.weight`);
245
+ if (def && def.type !== 'float' && def.type !== 'integer' && def.type !== 'monetary')
246
+ tools.report(`${path}.heat.weight`, `"${map.heat.weight}" is a ${def.type}; a weight is a number field`);
247
+ }
248
+ }
249
+ /** Whether a record holds a key of its own. */
250
+ const has = (record, key) => Object.prototype.hasOwnProperty.call(record, key);
251
+ /**
252
+ * A related list: on a record's page, its columns, order, search, cells, card and rows' rules of its own records'
253
+ * fields, its link to this record a link of theirs to this model where its fields name it, and its filter's
254
+ * `valueFrom` this record's.
255
+ */
256
+ function checkRelated(node, path, tools) {
257
+ // The quick check reads no shapes: a part with nothing to go by is said here.
258
+ if (typeof node.model !== 'string' || typeof node.field !== 'string' || !Array.isArray(node.columns) || !node.fields || typeof node.fields !== 'object') {
259
+ return tools.report(path, 'a related list needs the model of its records, their link to this record (field), their fields and its columns');
260
+ }
261
+ const model = tools.page.data.kind === 'record' ? tools.page.data.model : null;
262
+ if (!model || tools.onLine)
263
+ tools.report(path, 'a related list shows the records that point at a record: it belongs on a record’s page');
264
+ const fields = node.fields;
265
+ checkListed(node, fields, path, tools);
266
+ // On a phone its rows are cards, as a list's: of its own records' fields.
267
+ if (node.card)
268
+ checkListCard(node.card, `${path}.card`, fields, tools);
269
+ // Its rows' own rules, as a list's, each read on the row's record: its own fields, its id, the person, the context.
270
+ const row = { fields };
271
+ node.rowTones?.forEach((tone, i) => tools.checkModifiers(tone, `${path}.rowTones[${i}]`, ['when'], row));
272
+ tools.checkModifiers(node, path, ['rowBold'], row);
273
+ node.rowButtons?.forEach((button, i) => {
274
+ tools.claim(button.id, `${path}.rowButtons[${i}]`);
275
+ tools.checkPress(button, `${path}.rowButtons[${i}]`);
276
+ tools.checkModifiers(button, `${path}.rowButtons[${i}]`, ['invisible'], row);
277
+ });
278
+ const link = has(fields, node.field) ? fields[node.field] : undefined;
279
+ if (link && model && (link.type !== 'many2one' || link.relation !== model)) {
280
+ tools.report(`${path}.field`, `"${node.field}" ${link.type === 'many2one' ? `links to ${link.relation}` : `is a ${link.type}`}; the records listed point at this one by a many2one to ${model}`);
281
+ }
282
+ for (const [name, def] of Object.entries(fields)) {
283
+ if (def.type === 'monetary' && def.currencyField !== undefined)
284
+ tools.checkCurrency(def.currencyField, `${path}.fields.${name}.currencyField`, fields, undefined, fields);
285
+ if (def.type === 'datetime' && def.timeZone !== undefined)
286
+ tools.checkZone(def.timeZone, `${path}.fields.${name}.timeZone`);
287
+ }
288
+ // Its filter is about its records, by their fields; what it compares with may be read from this record.
289
+ node.filter?.forEach((item, i) => tools.checkFilterItem(item, `${path}.filter[${i}]`, tools.here()));
290
+ if (node.viewAll && node.viewAll.page === tools.page.id)
291
+ tools.report(`${path}.viewAll.page`, 'View all opens a list of the records related: this page is the record they point at');
292
+ }
293
+ /** Kinds of field a list's card shows as its picture: a picture held, or text holding a picture's address. */
294
+ const PICTURES = new Set(['image', 'binary', 'char']);
295
+ /**
296
+ * What a list shows of its records — a list page's, or a related list's of its own records' fields: its columns, its
297
+ * order and the fields its search looks in, each a field; each column's cells for a column of it, a sum, an average,
298
+ * the lowest and the highest of a number column (any column's count), a lead's icon by a field's values.
299
+ */
300
+ function checkListed(list, fields, path, tools) {
301
+ list.columns.forEach((name, i) => tools.need(name, `${path}.columns[${i}]`, fields));
302
+ list.sort?.forEach((order, i) => tools.need(order.field, `${path}.sort[${i}].field`, fields));
303
+ list.searchFields?.forEach((name, i) => tools.need(name, `${path}.searchFields[${i}]`, fields));
304
+ for (const [column, cell] of Object.entries(list.cells ?? {})) {
305
+ const at = `${path}.cells.${column}`;
306
+ if (!list.columns.includes(column)) {
307
+ tools.report(at, `"${column}" is no column of this list: its cells are for its columns`);
308
+ continue;
309
+ }
310
+ const kind = has(fields, column) ? fields[column].type : undefined;
311
+ if (cell.total && cell.total !== 'count' && kind && kind !== 'integer' && kind !== 'float' && kind !== 'monetary') {
312
+ tools.report(`${at}.total`, `"${column}" is a ${kind}; its total "${cell.total}" is of numbers — an integer, a float or an amount — and any column's is "count"`);
313
+ }
314
+ if (!cell.lead)
315
+ continue;
316
+ const def = tools.need(cell.lead.field, `${at}.lead.field`, fields);
317
+ if (def?.type !== 'selection')
318
+ continue;
319
+ const values = new Set(def.options.map((option) => String(option.value)));
320
+ for (const value of Object.keys(cell.lead.looks))
321
+ if (!values.has(value))
322
+ tools.report(`${at}.lead.looks.${value}`, `"${value}" is no value of "${cell.lead.field}"`);
323
+ }
324
+ }
325
+ /**
326
+ * What a list's card shows — a list page's, or a related list's of its own records' fields: its title, subtitle,
327
+ * status and lines each a field, its picture one that can hold a picture.
328
+ */
329
+ function checkListCard(card, at, fields, tools) {
330
+ for (const key of ['title', 'subtitle', 'status'])
331
+ if (card[key] !== undefined)
332
+ tools.need(card[key], `${at}.${key}`, fields);
333
+ if (card.image !== undefined) {
334
+ const def = tools.need(card.image, `${at}.image`, fields);
335
+ if (def && !PICTURES.has(def.type))
336
+ tools.report(`${at}.image`, `"${card.image}" is a ${def.type}; a card's picture is an image or binary field, or text holding a picture's address`);
337
+ }
338
+ card.fields?.forEach((line, i) => (Array.isArray(line) ? line : [line]).forEach((part, j) => tools.need(typeof part === 'string' ? part : part.field, `${at}.fields[${i}]${Array.isArray(line) ? `[${j}]` : ''}${typeof part === 'string' ? '' : '.field'}`, fields)));
339
+ }
340
+ //# sourceMappingURL=list-checks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-checks.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/list-checks.ts"],"names":[],"mappings":"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"}