@elaraai/e3-ui 1.0.98 → 1.0.99

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 (381) hide show
  1. package/README.md +0 -2
  2. package/dist/src/allocation/adapters.d.ts +1 -1
  3. package/dist/src/allocation/adapters.js +1 -1
  4. package/dist/src/allocation/index.d.ts +46 -90
  5. package/dist/src/allocation/index.d.ts.map +1 -1
  6. package/dist/src/allocation/index.js +5 -5
  7. package/dist/src/allocation/index.js.map +1 -1
  8. package/dist/src/bind/data-indexed.d.ts +273 -51
  9. package/dist/src/bind/data-indexed.d.ts.map +1 -1
  10. package/dist/src/bind/data-indexed.js +233 -56
  11. package/dist/src/bind/data-indexed.js.map +1 -1
  12. package/dist/src/bind/data.d.ts +48 -9
  13. package/dist/src/bind/data.d.ts.map +1 -1
  14. package/dist/src/bind/data.js +48 -3
  15. package/dist/src/bind/data.js.map +1 -1
  16. package/dist/src/bind/record.d.ts +61 -24
  17. package/dist/src/bind/record.d.ts.map +1 -1
  18. package/dist/src/bind/record.js +17 -57
  19. package/dist/src/bind/record.js.map +1 -1
  20. package/dist/src/calendar/index.d.ts +55 -95
  21. package/dist/src/calendar/index.d.ts.map +1 -1
  22. package/dist/src/calendar/index.js +10 -6
  23. package/dist/src/calendar/index.js.map +1 -1
  24. package/dist/src/flowchart/index.d.ts +35 -31
  25. package/dist/src/flowchart/index.d.ts.map +1 -1
  26. package/dist/src/flowchart/index.js +35 -31
  27. package/dist/src/flowchart/index.js.map +1 -1
  28. package/dist/src/flowchart/library.d.ts +108 -84
  29. package/dist/src/flowchart/library.d.ts.map +1 -1
  30. package/dist/src/flowchart/library.js +108 -84
  31. package/dist/src/flowchart/library.js.map +1 -1
  32. package/dist/src/flowchart/payload.d.ts +39 -107
  33. package/dist/src/flowchart/payload.d.ts.map +1 -1
  34. package/dist/src/flowchart/payload.js +3 -3
  35. package/dist/src/flowchart/payload.js.map +1 -1
  36. package/dist/src/flowchart/values.d.ts +35 -31
  37. package/dist/src/flowchart/values.d.ts.map +1 -1
  38. package/dist/src/flowchart/values.js +35 -31
  39. package/dist/src/flowchart/values.js.map +1 -1
  40. package/dist/src/flowchart/window.d.ts +0 -12
  41. package/dist/src/flowchart/window.d.ts.map +1 -1
  42. package/dist/src/flowchart/window.js +3 -2
  43. package/dist/src/flowchart/window.js.map +1 -1
  44. package/dist/src/index.d.ts +2 -2
  45. package/dist/src/index.d.ts.map +1 -1
  46. package/dist/src/index.js +1 -1
  47. package/dist/src/index.js.map +1 -1
  48. package/dist/src/internal.d.ts +7 -3
  49. package/dist/src/internal.d.ts.map +1 -1
  50. package/dist/src/internal.js +12 -3
  51. package/dist/src/internal.js.map +1 -1
  52. package/dist/src/plan/assemble.d.ts +8 -0
  53. package/dist/src/plan/assemble.d.ts.map +1 -1
  54. package/dist/src/plan/assemble.js +1 -1
  55. package/dist/src/plan/assemble.js.map +1 -1
  56. package/dist/src/plan/builders.d.ts +1518 -2
  57. package/dist/src/plan/builders.d.ts.map +1 -1
  58. package/dist/src/plan/builders.js +248 -114
  59. package/dist/src/plan/builders.js.map +1 -1
  60. package/dist/src/plan/event-rows.d.ts +9 -14
  61. package/dist/src/plan/event-rows.d.ts.map +1 -1
  62. package/dist/src/plan/event-rows.js +6 -46
  63. package/dist/src/plan/event-rows.js.map +1 -1
  64. package/dist/src/plan/factories.d.ts +72 -4
  65. package/dist/src/plan/factories.d.ts.map +1 -1
  66. package/dist/src/plan/factories.js +147 -1
  67. package/dist/src/plan/factories.js.map +1 -1
  68. package/dist/src/plan/index.d.ts +147 -125
  69. package/dist/src/plan/index.d.ts.map +1 -1
  70. package/dist/src/plan/index.js +135 -122
  71. package/dist/src/plan/index.js.map +1 -1
  72. package/dist/src/plan/ir.d.ts +1105 -44
  73. package/dist/src/plan/ir.d.ts.map +1 -1
  74. package/dist/src/plan/ir.js +5 -0
  75. package/dist/src/plan/ir.js.map +1 -1
  76. package/dist/src/plan/library.d.ts +65 -42
  77. package/dist/src/plan/library.d.ts.map +1 -1
  78. package/dist/src/plan/library.js +65 -42
  79. package/dist/src/plan/library.js.map +1 -1
  80. package/dist/src/plan/nested-checks.d.ts +146 -0
  81. package/dist/src/plan/nested-checks.d.ts.map +1 -0
  82. package/dist/src/plan/nested-checks.js +468 -0
  83. package/dist/src/plan/nested-checks.js.map +1 -0
  84. package/dist/src/plan/nested-patch.d.ts +35 -0
  85. package/dist/src/plan/nested-patch.d.ts.map +1 -0
  86. package/dist/src/plan/nested-patch.js +143 -0
  87. package/dist/src/plan/nested-patch.js.map +1 -0
  88. package/dist/src/plan/nested-read.d.ts +3250 -0
  89. package/dist/src/plan/nested-read.d.ts.map +1 -0
  90. package/dist/src/plan/nested-read.js +163 -0
  91. package/dist/src/plan/nested-read.js.map +1 -0
  92. package/dist/src/plan/nested.d.ts +280 -0
  93. package/dist/src/plan/nested.d.ts.map +1 -0
  94. package/dist/src/plan/nested.js +6 -0
  95. package/dist/src/plan/nested.js.map +1 -0
  96. package/dist/src/plan/ordered-source.d.ts +1030 -1
  97. package/dist/src/plan/ordered-source.d.ts.map +1 -1
  98. package/dist/src/plan/ordered-source.js +48 -6
  99. package/dist/src/plan/ordered-source.js.map +1 -1
  100. package/dist/src/plan/over.d.ts +111 -75
  101. package/dist/src/plan/over.d.ts.map +1 -1
  102. package/dist/src/plan/over.js +111 -75
  103. package/dist/src/plan/over.js.map +1 -1
  104. package/dist/src/plan/pick.d.ts +15 -3
  105. package/dist/src/plan/pick.d.ts.map +1 -1
  106. package/dist/src/plan/pick.js +75 -36
  107. package/dist/src/plan/pick.js.map +1 -1
  108. package/dist/src/plan/plan.d.ts +2719 -558
  109. package/dist/src/plan/plan.d.ts.map +1 -1
  110. package/dist/src/plan/plan.js +14 -2
  111. package/dist/src/plan/plan.js.map +1 -1
  112. package/dist/src/plan/reads.d.ts +421 -0
  113. package/dist/src/plan/reads.d.ts.map +1 -0
  114. package/dist/src/plan/reads.js +143 -0
  115. package/dist/src/plan/reads.js.map +1 -0
  116. package/dist/src/plan/refs.d.ts +111 -75
  117. package/dist/src/plan/refs.d.ts.map +1 -1
  118. package/dist/src/plan/refs.js +111 -75
  119. package/dist/src/plan/refs.js.map +1 -1
  120. package/dist/src/plan/root.d.ts +10 -5
  121. package/dist/src/plan/root.d.ts.map +1 -1
  122. package/dist/src/plan/root.js +76 -13
  123. package/dist/src/plan/root.js.map +1 -1
  124. package/dist/src/plan/series.d.ts +5140 -4331
  125. package/dist/src/plan/series.d.ts.map +1 -1
  126. package/dist/src/plan/series.js +1026 -264
  127. package/dist/src/plan/series.js.map +1 -1
  128. package/dist/src/plan/shade.d.ts +981 -0
  129. package/dist/src/plan/shade.d.ts.map +1 -0
  130. package/dist/src/plan/shade.js +60 -0
  131. package/dist/src/plan/shade.js.map +1 -0
  132. package/dist/src/plan/types.d.ts +178 -18
  133. package/dist/src/plan/types.d.ts.map +1 -1
  134. package/dist/src/plan/types.js +69 -19
  135. package/dist/src/plan/types.js.map +1 -1
  136. package/dist/src/query/builder.d.ts +3 -3
  137. package/dist/src/query/builder.d.ts.map +1 -1
  138. package/dist/src/query/builder.js +1 -1
  139. package/dist/src/query/library.d.ts +3 -3
  140. package/dist/src/query/library.d.ts.map +1 -1
  141. package/dist/src/query/library.js +1 -1
  142. package/dist/src/query/queries.d.ts +2 -2
  143. package/dist/src/query/queries.js +1 -1
  144. package/dist/src/query/saved.d.ts +8 -4
  145. package/dist/src/query/saved.d.ts.map +1 -1
  146. package/dist/src/query/saved.js +8 -4
  147. package/dist/src/query/saved.js.map +1 -1
  148. package/dist/src/query/types.d.ts +8 -3
  149. package/dist/src/query/types.d.ts.map +1 -1
  150. package/dist/src/query/types.js +8 -3
  151. package/dist/src/query/types.js.map +1 -1
  152. package/dist/src/roster/index.d.ts +47 -91
  153. package/dist/src/roster/index.d.ts.map +1 -1
  154. package/dist/src/roster/index.js +6 -6
  155. package/dist/src/roster/index.js.map +1 -1
  156. package/dist/src/roster/targets.d.ts +8 -4
  157. package/dist/src/roster/targets.d.ts.map +1 -1
  158. package/dist/src/roster/targets.js +9 -5
  159. package/dist/src/roster/targets.js.map +1 -1
  160. package/dist/src/schedule/cell-checks.js +3 -3
  161. package/dist/src/schedule/cell-checks.js.map +1 -1
  162. package/dist/src/schedule/days.d.ts +1 -1
  163. package/dist/src/schedule/days.js +1 -1
  164. package/dist/src/schedule/events.d.ts +10 -6
  165. package/dist/src/schedule/events.d.ts.map +1 -1
  166. package/dist/src/schedule/events.js +252 -228
  167. package/dist/src/schedule/events.js.map +1 -1
  168. package/dist/src/schedule/patch.d.ts +1 -1
  169. package/dist/src/schedule/patch.js +1 -1
  170. package/dist/src/schedule/periods.d.ts +8 -4
  171. package/dist/src/schedule/periods.d.ts.map +1 -1
  172. package/dist/src/schedule/periods.js +1 -1
  173. package/dist/src/schedule/periods.js.map +1 -1
  174. package/dist/src/schedule/record-window.d.ts +38 -58
  175. package/dist/src/schedule/record-window.d.ts.map +1 -1
  176. package/dist/src/schedule/record-window.js +15 -16
  177. package/dist/src/schedule/record-window.js.map +1 -1
  178. package/dist/src/schedule/resources.d.ts +1 -1
  179. package/dist/src/schedule/session.d.ts +1 -1
  180. package/dist/src/schedule/session.js +1 -1
  181. package/dist/src/schedule/types.d.ts +29 -1
  182. package/dist/src/schedule/types.d.ts.map +1 -1
  183. package/dist/src/schedule/types.js +16 -1
  184. package/dist/src/schedule/types.js.map +1 -1
  185. package/dist/src/schematic/index.d.ts +19 -9
  186. package/dist/src/schematic/index.d.ts.map +1 -1
  187. package/dist/src/schematic/index.js +19 -9
  188. package/dist/src/schematic/index.js.map +1 -1
  189. package/dist/src/schematic/kinds.d.ts +4 -4
  190. package/dist/src/schematic/kinds.js +9 -9
  191. package/dist/src/schematic/kinds.js.map +1 -1
  192. package/dist/src/schematic/payload.d.ts +38 -88
  193. package/dist/src/schematic/payload.d.ts.map +1 -1
  194. package/dist/src/schematic/payload.js +4 -4
  195. package/dist/src/schematic/payload.js.map +1 -1
  196. package/dist/src/schematic/window.d.ts +8 -7
  197. package/dist/src/schematic/window.d.ts.map +1 -1
  198. package/dist/src/schematic/window.js +22 -19
  199. package/dist/src/schematic/window.js.map +1 -1
  200. package/dist/src/sheet/bridge.d.ts +19 -0
  201. package/dist/src/sheet/bridge.d.ts.map +1 -1
  202. package/dist/src/sheet/bridge.js +28 -21
  203. package/dist/src/sheet/bridge.js.map +1 -1
  204. package/dist/src/sheet/index.d.ts +66 -46
  205. package/dist/src/sheet/index.d.ts.map +1 -1
  206. package/dist/src/sheet/index.js +66 -46
  207. package/dist/src/sheet/index.js.map +1 -1
  208. package/dist/src/sheet/library.d.ts +13 -8
  209. package/dist/src/sheet/library.d.ts.map +1 -1
  210. package/dist/src/sheet/library.js +13 -8
  211. package/dist/src/sheet/library.js.map +1 -1
  212. package/dist/src/sheet/record.d.ts +1 -1
  213. package/dist/src/sheet/record.js +2 -2
  214. package/dist/src/sheet/record.js.map +1 -1
  215. package/dist/src/sheet/registers.d.ts +152 -128
  216. package/dist/src/sheet/registers.d.ts.map +1 -1
  217. package/dist/src/sheet/registers.js +152 -128
  218. package/dist/src/sheet/registers.js.map +1 -1
  219. package/dist/src/sheet/root.d.ts +4 -1
  220. package/dist/src/sheet/root.d.ts.map +1 -1
  221. package/dist/src/sheet/root.js +15 -3
  222. package/dist/src/sheet/root.js.map +1 -1
  223. package/dist/src/sheet/sheet.d.ts +39 -113
  224. package/dist/src/sheet/sheet.d.ts.map +1 -1
  225. package/dist/src/sheet/sheet.js +7 -5
  226. package/dist/src/sheet/sheet.js.map +1 -1
  227. package/dist/src/sheet/sub-rows.d.ts +106 -76
  228. package/dist/src/sheet/sub-rows.d.ts.map +1 -1
  229. package/dist/src/sheet/sub-rows.js +106 -76
  230. package/dist/src/sheet/sub-rows.js.map +1 -1
  231. package/dist/src/sheet/types.d.ts +19 -62
  232. package/dist/src/sheet/types.d.ts.map +1 -1
  233. package/dist/src/studio/builder.d.ts +3 -153
  234. package/dist/src/studio/builder.d.ts.map +1 -1
  235. package/dist/src/studio/builder.js +1 -1
  236. package/dist/src/studio/canvas.d.ts +5 -4
  237. package/dist/src/studio/canvas.d.ts.map +1 -1
  238. package/dist/src/studio/canvas.js +8 -7
  239. package/dist/src/studio/canvas.js.map +1 -1
  240. package/dist/src/studio/component.d.ts +30 -20
  241. package/dist/src/studio/component.d.ts.map +1 -1
  242. package/dist/src/studio/component.js +26 -61
  243. package/dist/src/studio/component.js.map +1 -1
  244. package/dist/src/studio/index.d.ts +2 -2
  245. package/dist/src/studio/index.d.ts.map +1 -1
  246. package/dist/src/studio/index.js +1 -1
  247. package/dist/src/studio/index.js.map +1 -1
  248. package/dist/src/studio/inspector.d.ts +10 -39
  249. package/dist/src/studio/inspector.d.ts.map +1 -1
  250. package/dist/src/studio/inspector.js +11 -31
  251. package/dist/src/studio/inspector.js.map +1 -1
  252. package/dist/src/studio/library.d.ts +3 -169
  253. package/dist/src/studio/library.d.ts.map +1 -1
  254. package/dist/src/studio/library.js +1 -1
  255. package/dist/src/studio/page.d.ts +0 -8
  256. package/dist/src/studio/page.d.ts.map +1 -1
  257. package/dist/src/studio/pages.d.ts +17 -591
  258. package/dist/src/studio/pages.d.ts.map +1 -1
  259. package/dist/src/studio/pages.js +17 -44
  260. package/dist/src/studio/pages.js.map +1 -1
  261. package/dist/src/studio/palette.d.ts +2 -7
  262. package/dist/src/studio/palette.d.ts.map +1 -1
  263. package/dist/src/studio/palette.js +4 -5
  264. package/dist/src/studio/palette.js.map +1 -1
  265. package/dist/src/studio/publish.d.ts +8 -18
  266. package/dist/src/studio/publish.d.ts.map +1 -1
  267. package/dist/src/studio/publish.js +10 -36
  268. package/dist/src/studio/publish.js.map +1 -1
  269. package/dist/src/utils/derive.d.ts +12 -12
  270. package/dist/src/utils/derive.d.ts.map +1 -1
  271. package/dist/src/utils/derive.js +5 -2
  272. package/dist/src/utils/derive.js.map +1 -1
  273. package/dist/src/utils/ordered-source.d.ts.map +1 -1
  274. package/dist/src/utils/ordered-source.js +14 -5
  275. package/dist/src/utils/ordered-source.js.map +1 -1
  276. package/dist/test/allocation/allocation.examples.d.ts +1900 -1598
  277. package/dist/test/allocation/allocation.examples.d.ts.map +1 -1
  278. package/dist/test/allocation/allocation.examples.js +179 -89
  279. package/dist/test/allocation/allocation.examples.js.map +1 -1
  280. package/dist/test/allocation/optimise.examples.d.ts.map +1 -1
  281. package/dist/test/allocation/optimise.examples.js +7 -7
  282. package/dist/test/allocation/optimise.examples.js.map +1 -1
  283. package/dist/test/bind/data/data.examples.d.ts +1057 -903
  284. package/dist/test/bind/data/data.examples.d.ts.map +1 -1
  285. package/dist/test/bind/data/data.examples.js +260 -204
  286. package/dist/test/bind/data/data.examples.js.map +1 -1
  287. package/dist/test/bind/record/record.examples.d.ts +457 -426
  288. package/dist/test/bind/record/record.examples.d.ts.map +1 -1
  289. package/dist/test/bind/record/record.examples.js +41 -21
  290. package/dist/test/bind/record/record.examples.js.map +1 -1
  291. package/dist/test/calendar/calendar-records.examples.d.ts +162 -170
  292. package/dist/test/calendar/calendar-records.examples.d.ts.map +1 -1
  293. package/dist/test/calendar/calendar-records.examples.js +20 -12
  294. package/dist/test/calendar/calendar-records.examples.js.map +1 -1
  295. package/dist/test/calendar/calendar-windows.examples.d.ts.map +1 -1
  296. package/dist/test/calendar/calendar-windows.examples.js +12 -12
  297. package/dist/test/calendar/calendar-windows.examples.js.map +1 -1
  298. package/dist/test/calendar/calendar.examples.d.ts +1172 -901
  299. package/dist/test/calendar/calendar.examples.d.ts.map +1 -1
  300. package/dist/test/calendar/calendar.examples.js +211 -124
  301. package/dist/test/calendar/calendar.examples.js.map +1 -1
  302. package/dist/test/calendar/optimise.examples.js +2 -2
  303. package/dist/test/calendar/optimise.examples.js.map +1 -1
  304. package/dist/test/examples-package.d.ts +6 -9
  305. package/dist/test/examples-package.d.ts.map +1 -1
  306. package/dist/test/examples-package.js +11 -32
  307. package/dist/test/examples-package.js.map +1 -1
  308. package/dist/test/flowchart/flowchart.examples.d.ts +3841 -2820
  309. package/dist/test/flowchart/flowchart.examples.d.ts.map +1 -1
  310. package/dist/test/flowchart/flowchart.examples.js +211 -121
  311. package/dist/test/flowchart/flowchart.examples.js.map +1 -1
  312. package/dist/test/plan/optimise.examples.js +2 -2
  313. package/dist/test/plan/optimise.examples.js.map +1 -1
  314. package/dist/test/plan/plan-events.examples.d.ts +4055 -3263
  315. package/dist/test/plan/plan-events.examples.d.ts.map +1 -1
  316. package/dist/test/plan/plan-events.examples.js +492 -319
  317. package/dist/test/plan/plan-events.examples.js.map +1 -1
  318. package/dist/test/plan/plan-nested.examples.d.ts +1829 -0
  319. package/dist/test/plan/plan-nested.examples.d.ts.map +1 -0
  320. package/dist/test/plan/plan-nested.examples.js +321 -0
  321. package/dist/test/plan/plan-nested.examples.js.map +1 -0
  322. package/dist/test/plan/plan-records.examples.d.ts +328 -362
  323. package/dist/test/plan/plan-records.examples.d.ts.map +1 -1
  324. package/dist/test/plan/plan-records.examples.js +81 -57
  325. package/dist/test/plan/plan-records.examples.js.map +1 -1
  326. package/dist/test/plan/plan-windows.examples.d.ts +1756 -1398
  327. package/dist/test/plan/plan-windows.examples.d.ts.map +1 -1
  328. package/dist/test/plan/plan-windows.examples.js +161 -128
  329. package/dist/test/plan/plan-windows.examples.js.map +1 -1
  330. package/dist/test/plan/plan.examples.d.ts +2238 -5712
  331. package/dist/test/plan/plan.examples.d.ts.map +1 -1
  332. package/dist/test/plan/plan.examples.js +839 -968
  333. package/dist/test/plan/plan.examples.js.map +1 -1
  334. package/dist/test/query/query.examples.d.ts +5221 -3005
  335. package/dist/test/query/query.examples.d.ts.map +1 -1
  336. package/dist/test/query/query.examples.js +169 -118
  337. package/dist/test/query/query.examples.js.map +1 -1
  338. package/dist/test/roster/optimise.examples.d.ts.map +1 -1
  339. package/dist/test/roster/optimise.examples.js +7 -7
  340. package/dist/test/roster/optimise.examples.js.map +1 -1
  341. package/dist/test/roster/roster-records.examples.d.ts +364 -392
  342. package/dist/test/roster/roster-records.examples.d.ts.map +1 -1
  343. package/dist/test/roster/roster-records.examples.js +40 -26
  344. package/dist/test/roster/roster-records.examples.js.map +1 -1
  345. package/dist/test/roster/roster.examples.d.ts +4605 -4308
  346. package/dist/test/roster/roster.examples.d.ts.map +1 -1
  347. package/dist/test/roster/roster.examples.js +212 -113
  348. package/dist/test/roster/roster.examples.js.map +1 -1
  349. package/dist/test/schedule/schedule.examples.d.ts +2646 -2471
  350. package/dist/test/schedule/schedule.examples.d.ts.map +1 -1
  351. package/dist/test/schedule/schedule.examples.js +144 -88
  352. package/dist/test/schedule/schedule.examples.js.map +1 -1
  353. package/dist/test/schematic/schematic-records.examples.d.ts +286 -276
  354. package/dist/test/schematic/schematic-records.examples.d.ts.map +1 -1
  355. package/dist/test/schematic/schematic-records.examples.js +52 -38
  356. package/dist/test/schematic/schematic-records.examples.js.map +1 -1
  357. package/dist/test/schematic/schematic.examples.d.ts +1842 -1491
  358. package/dist/test/schematic/schematic.examples.d.ts.map +1 -1
  359. package/dist/test/schematic/schematic.examples.js +240 -134
  360. package/dist/test/schematic/schematic.examples.js.map +1 -1
  361. package/dist/test/sheet/optimise.examples.d.ts +102 -95
  362. package/dist/test/sheet/optimise.examples.d.ts.map +1 -1
  363. package/dist/test/sheet/optimise.examples.js +7 -3
  364. package/dist/test/sheet/optimise.examples.js.map +1 -1
  365. package/dist/test/sheet/sheet-records.examples.d.ts +175 -214
  366. package/dist/test/sheet/sheet-records.examples.d.ts.map +1 -1
  367. package/dist/test/sheet/sheet-records.examples.js +29 -17
  368. package/dist/test/sheet/sheet-records.examples.js.map +1 -1
  369. package/dist/test/sheet/sheet.examples.d.ts +3642 -3353
  370. package/dist/test/sheet/sheet.examples.d.ts.map +1 -1
  371. package/dist/test/sheet/sheet.examples.js +389 -282
  372. package/dist/test/sheet/sheet.examples.js.map +1 -1
  373. package/dist/test/studio/component.examples.js +2 -2
  374. package/dist/test/studio/component.examples.js.map +1 -1
  375. package/dist/test/studio/page.examples.js +6 -6
  376. package/dist/test/studio/page.examples.js.map +1 -1
  377. package/dist/test/studio/studio.examples.d.ts +2329 -873
  378. package/dist/test/studio/studio.examples.d.ts.map +1 -1
  379. package/dist/test/studio/studio.examples.js +155 -107
  380. package/dist/test/studio/studio.examples.js.map +1 -1
  381. package/package.json +15 -11
@@ -0,0 +1,468 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ import { reifyAccessor } from "@elaraai/east-ui/internal";
6
+ import { drawsAsStored, planNestedSeriesFacts, planSeriesNestOf, } from "./series.js";
7
+ /** A struct type's fields. */
8
+ function fieldsOf(type) {
9
+ return type?.type === "Struct" ? type.fields : undefined;
10
+ }
11
+ /** The one name a marker's struct holds; none for the empty struct. */
12
+ function nameOf(type) {
13
+ const fields = fieldsOf(type);
14
+ return fields === undefined ? undefined : Object.keys(fields)[0];
15
+ }
16
+ /** Each collection's declaration, by its field, from the marker the binding's type carries. */
17
+ function collectionsOf(marker) {
18
+ return new Map(Object.entries(fieldsOf(marker) ?? {}).map(([field, declared]) => [field, declarationOf(declared)]));
19
+ }
20
+ /** One collection's declaration, from its marker. */
21
+ function declarationOf(marker) {
22
+ const fields = fieldsOf(marker) ?? {};
23
+ const items = fieldsOf(fields.items);
24
+ if (items !== undefined) {
25
+ const times = items.at !== undefined ? { at: nameOf(items.at) } : { from: nameOf(items.from), to: nameOf(items.to) };
26
+ return { kind: "items", times, rollup: items.rollup !== undefined };
27
+ }
28
+ if (fields.values !== undefined) {
29
+ const rollups = fieldsOf(fieldsOf(fields.values)?.rollup) ?? {};
30
+ return {
31
+ kind: "values",
32
+ rollups: Object.entries(rollups).flatMap(([fold, aggregates]) => Object.keys(fieldsOf(aggregates) ?? {}).map((aggregate) => ({ fold, aggregate }))),
33
+ };
34
+ }
35
+ if (fields.rows !== undefined)
36
+ return { kind: "rows", collections: collectionsOf(fields.rows) };
37
+ return { kind: "recursive" };
38
+ }
39
+ /**
40
+ * Reads a source's nested series index at build, from its binding's nested
41
+ * part's type (`Data.bindPaged(record, { indexes })`): its name, each
42
+ * collection's place, what it holds, its times and its rollups, its tile and
43
+ * its summary's.
44
+ *
45
+ * @param nested - The nested part's type, as the binding's type, or its Slice's `rows` source's, holds it
46
+ * @returns The index's declaration; `undefined` for a binding listing none
47
+ */
48
+ export function planNestedIndex(nested) {
49
+ if (nested?.type !== "Variant")
50
+ return undefined;
51
+ const part = fieldsOf(nested.cases.some);
52
+ const name = nameOf(part?.index);
53
+ if (part === undefined || name === undefined)
54
+ return undefined;
55
+ return { name, tile: nameOf(part.tile), summary: nameOf(part.summary), collections: collectionsOf(part.collections) };
56
+ }
57
+ /**
58
+ * The nested part a Plan's rows source carries in its type: an indexed
59
+ * binding's own (`Data.bindPaged(record, { indexes })` as `data`), or a
60
+ * Slice's `rows` source's.
61
+ *
62
+ * @param source - The `data` prop's East type, or the Slice handle's
63
+ * @returns The nested part's type; `undefined` for a source carrying none
64
+ */
65
+ export function nestedPartOf(source) {
66
+ const fields = fieldsOf(source);
67
+ if (fields === undefined)
68
+ return undefined;
69
+ if (fields.defaultIndex !== undefined && fields.nested !== undefined)
70
+ return fields.nested;
71
+ const rows = fieldsOf(fieldsOf(fields.sources)?.rows);
72
+ return rows?.nested;
73
+ }
74
+ /** East's IR variants: what the walk treats as a node, and nothing else. */
75
+ const IR_NODES = new Set([
76
+ "Error", "TryCatch", "Value", "Variable", "Let", "Assign", "As", "Function", "AsyncFunction", "Call", "CallAsync",
77
+ "NewRef", "NewArray", "NewSet", "NewDict", "NewVector", "NewMatrix", "Struct", "GetField", "Variant", "Block",
78
+ "IfElse", "Match", "UnwrapRecursive", "WrapRecursive", "While", "ForArray", "ForSet", "ForDict", "Return",
79
+ "Continue", "Break", "Builtin", "Platform",
80
+ ]);
81
+ /** A node's own properties that hold no IR: its type, its location, its type arguments, a loop's label. */
82
+ const NOT_IR = new Set(["type", "loc_id", "type_parameters", "label"]);
83
+ /** Whether a value is an IR node. */
84
+ function isNode(x) {
85
+ return typeof x === "object" && x !== null && typeof x.type === "string"
86
+ && IR_NODES.has(x.type) && typeof x.value === "object";
87
+ }
88
+ /** A variable's name. */
89
+ function variableName(x) {
90
+ return isNode(x) && x.type === "Variable" ? x.value.name : undefined;
91
+ }
92
+ /** Whether a node is the row: a variable holding it, its node unwrapped, or it cast. */
93
+ function isRow(x, rows) {
94
+ if (!isNode(x))
95
+ return false;
96
+ if (x.type === "Variable")
97
+ return rows.has(x.value.name);
98
+ if (x.type === "UnwrapRecursive" || x.type === "As")
99
+ return isRow(x.value.value, rows);
100
+ return false;
101
+ }
102
+ /** The first finding of a list of walks. */
103
+ function firstOf(xs, walk) {
104
+ for (const x of xs) {
105
+ const found = walk(x);
106
+ if (found !== undefined)
107
+ return found;
108
+ }
109
+ return undefined;
110
+ }
111
+ /** The IR nodes a value holds: itself, or those of an array or a plain object of them (a struct's fields, a match's cases). */
112
+ function nodesIn(x) {
113
+ if (isNode(x))
114
+ return [x];
115
+ if (Array.isArray(x))
116
+ return x.flatMap(nodesIn);
117
+ if (typeof x === "object" && x !== null)
118
+ return Object.values(x).flatMap(nodesIn);
119
+ return [];
120
+ }
121
+ /**
122
+ * Walks a node for a read of one of `fields` on the row, or a call the walk
123
+ * cannot follow given the row.
124
+ *
125
+ * @param node - The node
126
+ * @param rows - The variables holding the row, in scope
127
+ * @param fields - The fields a page of lean rows carries empty
128
+ * @returns What it found; `undefined` for nothing
129
+ */
130
+ function walk(node, rows, fields) {
131
+ if (!isNode(node))
132
+ return undefined;
133
+ const value = node.value;
134
+ switch (node.type) {
135
+ case "GetField":
136
+ if (isRow(value.struct, rows) && fields.has(value.field))
137
+ return { kind: "reads", field: value.field };
138
+ return walk(value.struct, rows, fields);
139
+ case "Platform": {
140
+ const args = value.arguments;
141
+ if (args.some((arg) => isRow(arg, rows)))
142
+ return { kind: "opaque" };
143
+ return firstOf(args, (arg) => walk(arg, rows, fields));
144
+ }
145
+ case "Call":
146
+ case "CallAsync": {
147
+ const fn = value.function;
148
+ const args = value.arguments;
149
+ const found = firstOf(args, (arg) => walk(arg, rows, fields));
150
+ if (found !== undefined)
151
+ return found;
152
+ // An East function called in place is followed into, each parameter given the row holding it.
153
+ if (isNode(fn) && (fn.type === "Function" || fn.type === "AsyncFunction")) {
154
+ const params = fn.value.parameters.map(variableName);
155
+ const inner = new Set([...rows].filter((name) => !params.includes(name)));
156
+ params.forEach((param, i) => { if (param !== undefined && isRow(args[i], rows))
157
+ inner.add(param); });
158
+ return walk(fn.value.body, inner, fields);
159
+ }
160
+ // Any other function given the row is one the walk cannot see into.
161
+ if (args.some((arg) => isRow(arg, rows)))
162
+ return { kind: "opaque" };
163
+ return walk(fn, rows, fields);
164
+ }
165
+ case "Function":
166
+ case "AsyncFunction": {
167
+ // A function's own parameters shadow the row's names; what it captures keeps them.
168
+ const params = value.parameters.map(variableName);
169
+ return walk(value.body, new Set([...rows].filter((name) => !params.includes(name))), fields);
170
+ }
171
+ case "Block": {
172
+ // A variable bound to the row holds it for the statements after.
173
+ const scope = new Set(rows);
174
+ for (const statement of value.statements) {
175
+ const found = walk(statement, scope, fields);
176
+ if (found !== undefined)
177
+ return found;
178
+ if (isNode(statement) && statement.type === "Let" && isRow(statement.value.value, scope)) {
179
+ const name = variableName(statement.value.variable);
180
+ if (name !== undefined)
181
+ scope.add(name);
182
+ }
183
+ }
184
+ return undefined;
185
+ }
186
+ default:
187
+ return firstOf(Object.entries(value).filter(([key]) => !NOT_IR.has(key)).flatMap(([, held]) => nodesIn(held)), (held) => walk(held, rows, fields));
188
+ }
189
+ }
190
+ /**
191
+ * Walks a function of the row (#1435) for a read of one of `fields` — the
192
+ * collections a page of lean rows carries empty — or a call the walk cannot
193
+ * follow given the row.
194
+ *
195
+ * @param rowType - The entry type
196
+ * @param keyType - Its key type
197
+ * @param fn - The function of the row (its node, when recursive) and its key
198
+ * @param fields - The fields a page of lean rows carries empty
199
+ * @returns What it found; `undefined` for nothing
200
+ */
201
+ function findInFunction(rowType, keyType, fn, fields) {
202
+ const recursive = rowType.type === "Recursive";
203
+ const node = (row) => (recursive ? row.unwrap() : row);
204
+ const built = reifyAccessor([rowType, keyType], (row, key) => fn(node(row), key));
205
+ const ir = built.toIR().ir;
206
+ if (!isNode(ir))
207
+ return undefined;
208
+ const param = variableName(ir.value.parameters[0]);
209
+ return param === undefined ? undefined : walk(ir.value.body, new Set([param]), fields);
210
+ }
211
+ /** A place as a refusal names it: `"measures.readings"`. */
212
+ const placeOf = (place) => place.join(".");
213
+ /** Times as code: `{ from: "start", to: "end" }`. */
214
+ const timesCode = (times) => ("at" in times ? `{ at: "${times.at}" }` : `{ from: "${times.from}", to: "${times.to}" }`);
215
+ /** Times in words: `from "start" to "end"`. */
216
+ const timesWords = (times) => ("at" in times ? `at "${times.at}"` : `from "${times.from}" to "${times.to}"`);
217
+ /** A rollup in words: `sum`, or `{ fold: "sum", aggregate: "mean" }`. */
218
+ const rollupWords = (r) => (r.fold === r.aggregate ? r.fold : `{ fold: "${r.fold}", aggregate: "${r.aggregate}" }`);
219
+ /** A rollup as code: `"sum"`, or `{ fold: "sum", aggregate: "mean" }`. */
220
+ const rollupCode = (r) => (r.fold === r.aggregate ? `"${r.fold}"` : `{ fold: "${r.fold}", aggregate: "${r.aggregate}" }`);
221
+ /** Names in words: `"jobs", "stops" and "load"`. */
222
+ const namesWords = (names) => names.length <= 1 ? names.map((n) => `"${n}"`).join("")
223
+ : `${names.slice(0, -1).map((n) => `"${n}"`).join(", ")} and "${names[names.length - 1]}"`;
224
+ /** How an index declares a collection, as code. */
225
+ function declarationCode(d) {
226
+ switch (d.kind) {
227
+ case "items": return `items(${timesCode(d.times)}${d.rollup ? ", { rollup: true }" : ""})`;
228
+ case "values": return d.rollups.length === 0 ? "values()" : `values({ rollup: [${d.rollups.map(rollupCode).join(", ")}] })`;
229
+ case "rows": return "rows({ … })";
230
+ case "recursive": return "recursive()";
231
+ }
232
+ }
233
+ /** The builder a read by name asks of the index. */
234
+ function builderFor(use) {
235
+ if (use.read?.read.kind === "items")
236
+ return `items(${timesCode(use.read.read.times)})`;
237
+ if (use.kind === "values")
238
+ return "values()";
239
+ if (use.kind === "rows")
240
+ return "rows({ … })";
241
+ return "recursive()";
242
+ }
243
+ /** A series' element fields that draw things people drag: what a read of items gives. */
244
+ const ITEM_FIELDS = new Set(["runs", "decisions", "events", "chips", "marks"]);
245
+ /** Its element fields that draw a value an instant: what a read of values gives. */
246
+ const VALUE_FIELDS = new Set(["ports", "markers"]);
247
+ /** Its fields that consume values: cells, a strip's summary, a table's positions, a chart's layers. */
248
+ const CONSUMER_FIELDS = new Set(["cells", "summary", "series", "layers"]);
249
+ /** The fields a page of lean rows carries empty at a level: the items and values the index declares there; every Dict and Array field with no index. */
250
+ function emptiedAt(rowType, level, index) {
251
+ if (index !== undefined) {
252
+ return new Set([...(level.collections ?? new Map()).entries()].filter(([, d]) => d.kind === "items" || d.kind === "values").map(([field]) => field));
253
+ }
254
+ const node = rowType.type === "Recursive" ? rowType.node : rowType;
255
+ const fields = fieldsOf(node) ?? {};
256
+ return new Set(Object.entries(fields).filter(([, t]) => t.type === "Dict" || t.type === "Array").map(([field]) => field));
257
+ }
258
+ /**
259
+ * Refuses a series' functions of the row that map a collection a page of its
260
+ * rows carries empty, or call a function the walk cannot see into.
261
+ */
262
+ function checkFunctions(facts, level, context) {
263
+ const nest = facts.nest;
264
+ if (nest?.rowType === undefined)
265
+ return;
266
+ const fields = emptiedAt(nest.rowType, level, context.index);
267
+ const functions = [...nest.accessors, ...nest.steps.flatMap((step, i) => (step.of !== undefined ? [{ via: `children[${i}]`, fn: step.of }] : []))];
268
+ for (const { via, fn } of functions) {
269
+ const found = findInFunction(nest.rowType, nest.keyType, fn, fields);
270
+ if (found === undefined)
271
+ continue;
272
+ if (found.kind === "opaque") {
273
+ throw new Error(`Plan: series "${facts.key}"'s ${via} calls a function the Plan cannot see into, and its rows are paged without ` +
274
+ `${namesWords([...fields])} — read the row's own fields in ${via}`);
275
+ }
276
+ const declared = level.collections?.get(found.field);
277
+ const element = via.replace(/\[\d+\]$/, "");
278
+ if (context.index !== undefined && declared !== undefined) {
279
+ const give = declared.kind === "items" && ITEM_FIELDS.has(element) ? `give ${via} as Plan.items("${found.field}", ${timesCode(declared.times)}, (item) => ({ … }))`
280
+ : declared.kind === "values" && VALUE_FIELDS.has(element) ? `give ${via} as Plan.values("${found.field}", (value) => ({ … }))`
281
+ : declared.kind === "values" && CONSUMER_FIELDS.has(element) ? `give ${via} through Plan.values("${found.field}", draw)`
282
+ : `read the row's own fields in ${via}`;
283
+ throw new Error(`Plan: series "${facts.key}" reads "${found.field}" in a function (${via}), and its rows are paged — a page carries each ` +
284
+ `row without its collections: ${give}`);
285
+ }
286
+ throw new Error(`Plan: series "${facts.key}" reads "${found.field}" in a function (${via}), and its rows are paged — a row's collections are ` +
287
+ `read a cell at a time: ${ITEM_FIELDS.has(element) ? `give ${via} as Plan.items("${found.field}", { from, to }, (item) => ({ … })), and ` : ""}` +
288
+ `declare index.nested({ collections: { ${found.field}: index.nested.items({ from, to }) }, tile, summary }) ` +
289
+ "and list it in Data.bindPaged(record, { indexes })");
290
+ }
291
+ }
292
+ /**
293
+ * What a series reads by name at a level, and the series it steps down to
294
+ * and lists, each at its own level: a read with its subtotal and its rollup,
295
+ * a tree's field, a step-down's rows.
296
+ */
297
+ function usesOf(facts, level, stepAggregate, out, context) {
298
+ const nest = facts.nest;
299
+ if (nest === undefined)
300
+ return;
301
+ checkFunctions(facts, level, context);
302
+ const at = (field) => ({ place: [...level.place, field], declared: level.collections?.get(field) });
303
+ for (const read of facts.reads) {
304
+ if (read.read.kind === "items") {
305
+ // A span's runs roll up into its bands where it has children or declares a rollup.
306
+ out.push({
307
+ series: facts.key, ...at(read.field), field: read.field, read, kind: "items", subtotal: undefined,
308
+ rolledUp: facts.arm === "span" && read.via === "runs" ? nest.rollup : undefined, rowType: nest.rowType,
309
+ });
310
+ continue;
311
+ }
312
+ // Its values are subtotalled where a parent derives its numbers from them: a step-down's by the parent's
313
+ // aggregate, a tree's own by the series' — each by the fold its consumer folds them by.
314
+ const aggregate = stepAggregate ?? (nest.tree !== undefined && nest.subtotalsOwn ? nest.aggregate : undefined);
315
+ const flaggedAny = facts.reads.some((r) => r.flagged === true);
316
+ const feeds = stepAggregate !== undefined || !flaggedAny || read.flagged === true;
317
+ const subtotal = aggregate !== undefined && read.fold !== undefined && feeds ? { fold: read.fold, aggregate } : undefined;
318
+ out.push({ series: facts.key, ...at(read.field), field: read.field, read, kind: "values", subtotal, rolledUp: undefined, rowType: nest.rowType });
319
+ }
320
+ if (nest.tree !== undefined) {
321
+ out.push({ series: facts.key, ...at(nest.tree), field: nest.tree, read: undefined, kind: "recursive", subtotal: undefined, rolledUp: undefined, rowType: nest.rowType });
322
+ }
323
+ const nested = planNestedSeriesFacts(nest);
324
+ for (const member of nested.members)
325
+ usesOf(member, level, undefined, out, context);
326
+ // A parent that is no tree derives its numbers from a step-down's by its aggregate.
327
+ const childAggregate = nest.tree === undefined ? nest.aggregate : undefined;
328
+ for (const step of nested.steps) {
329
+ if (step.field === undefined)
330
+ continue;
331
+ const { place, declared } = at(step.field);
332
+ out.push({ series: facts.key, place, declared, field: step.field, read: undefined, kind: "rows", subtotal: undefined, rolledUp: undefined, rowType: nest.rowType });
333
+ const child = { place, collections: declared?.kind === "rows" ? declared.collections : undefined };
334
+ for (const series of step.series)
335
+ usesOf(series, child, childAggregate, out, context);
336
+ }
337
+ }
338
+ /** Refuses a read by name the index does not serve as it is written. */
339
+ function checkUse(use, index) {
340
+ const place = placeOf(use.place);
341
+ const series = `Plan: series "${use.series}"`;
342
+ const declared = use.declared;
343
+ if (declared === undefined) {
344
+ throw new Error(`${series} reads "${place}", and the rows source's nested series index "${index.name}" does not declare it — declare it: ` +
345
+ `collections: { ${use.field}: index.nested.${builderFor(use)} }`);
346
+ }
347
+ if (use.kind === "items") {
348
+ if (declared.kind !== "items") {
349
+ throw new Error(`${series} reads "${place}" as items, and "${index.name}" declares it ${declarationCode(declared)} — ` +
350
+ (declared.kind === "values" ? `read it with Plan.values("${use.field}", draw)` : "read it as it is declared"));
351
+ }
352
+ const times = use.read.read.times;
353
+ if (timesCode(times) !== timesCode(declared.times)) {
354
+ throw new Error(`${series} reads "${place}" ${timesWords(times)}, and "${index.name}" files it ${timesWords(declared.times)} — name the times it is filed by`);
355
+ }
356
+ if (use.rolledUp !== undefined && !declared.rollup) {
357
+ throw new Error(`${series} rolls its children's runs up by ${use.rolledUp}, and "${index.name}" files "${place}" under no parent — declare it ` +
358
+ `index.nested.items(${timesCode(declared.times)}, { rollup: true })`);
359
+ }
360
+ return;
361
+ }
362
+ if (use.kind === "values") {
363
+ if (declared.kind !== "values") {
364
+ throw new Error(`${series} reads "${place}" as values, and "${index.name}" declares it ${declarationCode(declared)} — ` +
365
+ (declared.kind === "items" ? `read it with Plan.items("${use.field}", ${timesCode(declared.times)}, draw)` : "read it as it is declared"));
366
+ }
367
+ const subtotal = use.subtotal;
368
+ if (subtotal === undefined)
369
+ return;
370
+ // A count is the index's count, whatever its values fold to; any other subtotal is a rollup it keeps.
371
+ const kept = subtotal.aggregate === "count"
372
+ ? declared.rollups.some((r) => r.aggregate === "count")
373
+ : declared.rollups.some((r) => r.fold === subtotal.fold && r.aggregate === subtotal.aggregate);
374
+ if (!kept) {
375
+ if (declared.rollups.length === 0) {
376
+ throw new Error(`${series} subtotals "${place}" by ${rollupWords(subtotal)}, and "${index.name}" keeps no subtotals of it — declare it ` +
377
+ `index.nested.values({ rollup: ${rollupCode(subtotal)} })`);
378
+ }
379
+ const words = declared.rollups.map(rollupWords);
380
+ throw new Error(`${series} subtotals "${place}" by ${rollupWords(subtotal)}, and "${index.name}" keeps it by ${words.join(" and ")} — add the ` +
381
+ `rollup: index.nested.values({ rollup: [${[...declared.rollups.map(rollupCode), rollupCode(subtotal)].join(", ")}] }), or subtotal it by ${words[0]}`);
382
+ }
383
+ if (use.rowType !== undefined && !drawsAsStored(use.rowType, use.read.read, `Plan: series "${use.series}"`)) {
384
+ throw new Error(`${series} subtotals "${place}", and its cells draw another number than each value of it — e3 keeps the subtotals ` +
385
+ "of the values as stored: draw value: some(v), and show it another way through format");
386
+ }
387
+ return;
388
+ }
389
+ if (use.kind === "rows" && declared.kind !== "rows") {
390
+ throw new Error(`${series} steps down to "${place}"'s child rows, and "${index.name}" declares it ${declarationCode(declared)} — read it as it is declared`);
391
+ }
392
+ if (use.kind === "recursive" && declared.kind !== "recursive") {
393
+ throw new Error(`${series} reads "${place}" as more rows of its own, and "${index.name}" declares it ${declarationCode(declared)} — read it as it is declared`);
394
+ }
395
+ }
396
+ /** The levels a time axis offers, finest first: a tile's, and the hour below every tile. */
397
+ const LEVELS = ["hour", "day", "week", "month", "quarter", "year"];
398
+ /**
399
+ * Refuses a resolution the axis offers finer than the index keeps its
400
+ * subtotals from: `hour`, finer than every tile; `auto`, as each unit it may
401
+ * show — the day, the week and the month.
402
+ */
403
+ function checkResolutions(series, index, resolutions) {
404
+ const tile = LEVELS.indexOf(index.tile);
405
+ for (const resolution of resolutions) {
406
+ const shown = resolution === "auto" ? ["day", "week", "month"] : [resolution];
407
+ const finer = shown.find((level) => LEVELS.indexOf(level) >= 0 && LEVELS.indexOf(level) < tile);
408
+ if (finer === undefined)
409
+ continue;
410
+ const shows = resolution === "auto" ? ", which auto shows," : ",";
411
+ const remedy = finer === "hour" ? `drop "${resolution}" from the axis's resolutions` : `declare tile: "${finer}", or drop "${resolution}" from the axis's resolutions`;
412
+ throw new Error(`Plan: series "${series}" subtotals its children at ${finer} resolution${shows} and "${index.name}" keeps its subtotals from ` +
413
+ `${index.tile} up — ${remedy}`);
414
+ }
415
+ }
416
+ /**
417
+ * Holds a Plan's series over paged rows to its rows' nested series index, as
418
+ * the Plan is built (#1435): every series a `Plan.series.*` builder made, in
419
+ * place or held in a variable, its step-downs' and its members' too. An East
420
+ * expression of a series list is held to it as nothing here: what it reads is
421
+ * known only as it runs.
422
+ *
423
+ * @param series - The `series` input
424
+ * @param context - The rows source's nested series index, and the axis
425
+ * @returns What the series read, each held to the index: what a Plan reads of it a cell at a time (#1438); none for an
426
+ * East expression of a series list
427
+ * @throws {Error} The first refusal, in its words: a function mapping a collection of the paged rows, or one the Plan
428
+ * cannot see into; a read by name with no nested series index; a read of a collection the index does not declare, by
429
+ * other times than it files by, or as values where it declares items or items where values; a subtotal by a rollup it
430
+ * does not keep, of values drawn as another number, or at a resolution finer than its tile; runs rolled up that it
431
+ * files under no parent; a read by name on an axis other than time; and an index keeping no totals
432
+ */
433
+ export function checkPlanNested(series, context) {
434
+ if (!Array.isArray(series))
435
+ return [];
436
+ const { index } = context;
437
+ const top = { place: [], collections: index?.collections };
438
+ const uses = [];
439
+ for (const one of series) {
440
+ const facts = planSeriesNestOf(one);
441
+ if (facts !== undefined)
442
+ usesOf(facts, top, undefined, uses, context);
443
+ }
444
+ const byName = uses.filter((use) => use.kind === "items" || use.kind === "values");
445
+ const first = byName[0];
446
+ if (first === undefined)
447
+ return uses;
448
+ if (index === undefined) {
449
+ throw new Error(`Plan: series "${first.series}" reads "${placeOf(first.place)}" a cell at a time, and the rows source lists no nested series ` +
450
+ `index — declare index.nested({ collections: { ${first.field}: index.nested.${builderFor(first)} }, ` +
451
+ "tile, summary }) and list it in Data.bindPaged(record, { indexes })");
452
+ }
453
+ if (context.axisKind !== undefined && context.axisKind !== "time") {
454
+ throw new Error(`Plan: series "${first.series}" reads "${placeOf(first.place)}" a cell at a time, which e3 files in time, and this is ` +
455
+ `${context.axisKind === "number" ? "a number" : "an ordinal"} axis — bind the rows whole, or use a time axis`);
456
+ }
457
+ for (const use of uses)
458
+ checkUse(use, index);
459
+ if (index.summary === undefined) {
460
+ throw new Error(`Plan: "${index.name}" keeps no totals — the Plan draws a view's items while they number 10,000 or fewer, and the ` +
461
+ 'totals\' shading past that: declare summary: "month"');
462
+ }
463
+ const subtotalled = uses.find((use) => use.subtotal !== undefined);
464
+ if (subtotalled !== undefined && context.resolutions !== undefined)
465
+ checkResolutions(subtotalled.series, index, context.resolutions);
466
+ return uses;
467
+ }
468
+ //# sourceMappingURL=nested-checks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nested-checks.js","sourceRoot":"","sources":["../../../src/plan/nested-checks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * A Save's patch over rows read beside their nested series index, restated by
7
+ * key (#1438). East's diff of a Dict whose every key went one way is one whole
8
+ * `replace`: a machine whose only job moves off it sends `replace { before: {
9
+ * j-42 }, after: {} }`, which conflicts with another planner's job added to it
10
+ * meanwhile. The Plan restates each collection the index lists as the
11
+ * operations a `replace` stands for, key by key — a `delete` of each key it
12
+ * held, an `insert` of each it holds, an `update` of each in both that changed
13
+ * — down through child rows, so a commit's patch names only the items and
14
+ * values it changed, and e3 checks each against what it was. A node of a
15
+ * recursive tree is a whole value to East's patches, so its update replaces it
16
+ * whole, by its key.
17
+ *
18
+ * @packageDocumentation
19
+ */
20
+ import { type EastType, type FunctionExpr } from "@elaraai/east";
21
+ import type { PlanNestedIndex } from "./nested-checks.js";
22
+ /** A patch's restatement: `(PatchType(T)) → PatchType(T)`. */
23
+ type Restatement = FunctionExpr<[EastType], EastType>;
24
+ /**
25
+ * A Plan's batch over rows read beside their nested series index, each
26
+ * change's patch restated by key (see the module docs).
27
+ *
28
+ * @param entryType - The rows' type
29
+ * @param keyType - Their key's type
30
+ * @param index - The nested series index the rows are read beside
31
+ * @returns `(ChangeSet(R, K)) → ChangeSet(R, K)`; `undefined` where the index lists no collection a patch reaches by key
32
+ */
33
+ export declare function planNestedRestatement(entryType: EastType, keyType: EastType, index: PlanNestedIndex): Restatement | undefined;
34
+ export {};
35
+ //# sourceMappingURL=nested-patch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nested-patch.d.ts","sourceRoot":"","sources":["../../../src/plan/nested-patch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEH,KAAK,QAAQ,EAAiB,KAAK,YAAY,EAClD,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAyB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEjF,8DAA8D;AAC9D,KAAK,WAAW,GAAG,YAAY,CAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AA4FtD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,GAAG,WAAW,GAAG,SAAS,CA0B7H"}