@elaraai/e3-ui 1.0.86 → 1.0.88

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 (385) hide show
  1. package/dist/src/bind/data-indexed.d.ts +159 -0
  2. package/dist/src/bind/data-indexed.d.ts.map +1 -0
  3. package/dist/src/bind/data-indexed.js +105 -0
  4. package/dist/src/bind/data-indexed.js.map +1 -0
  5. package/dist/src/bind/data.d.ts +5 -3
  6. package/dist/src/bind/data.d.ts.map +1 -1
  7. package/dist/src/bind/data.js +6 -0
  8. package/dist/src/bind/data.js.map +1 -1
  9. package/dist/src/bind/record.d.ts +34 -23
  10. package/dist/src/bind/record.d.ts.map +1 -1
  11. package/dist/src/bind/record.js +46 -19
  12. package/dist/src/bind/record.js.map +1 -1
  13. package/dist/src/calendar/index.d.ts +2923 -0
  14. package/dist/src/calendar/index.d.ts.map +1 -0
  15. package/dist/src/calendar/index.js +135 -0
  16. package/dist/src/calendar/index.js.map +1 -0
  17. package/dist/src/decision/queue.d.ts +3 -3
  18. package/dist/src/decision/queue.d.ts.map +1 -1
  19. package/dist/src/decision/queue.js +2 -2
  20. package/dist/src/decision/queue.js.map +1 -1
  21. package/dist/src/decision/types.d.ts +4 -0
  22. package/dist/src/decision/types.d.ts.map +1 -1
  23. package/dist/src/decision/types.js +4 -0
  24. package/dist/src/decision/types.js.map +1 -1
  25. package/dist/src/flowchart/canvas.d.ts +114 -0
  26. package/dist/src/flowchart/canvas.d.ts.map +1 -0
  27. package/dist/src/flowchart/canvas.js +84 -0
  28. package/dist/src/flowchart/canvas.js.map +1 -0
  29. package/dist/src/flowchart/flowchart.d.ts +79 -0
  30. package/dist/src/flowchart/flowchart.d.ts.map +1 -0
  31. package/dist/src/flowchart/flowchart.js +9 -0
  32. package/dist/src/flowchart/flowchart.js.map +1 -0
  33. package/dist/src/flowchart/index.d.ts +305 -0
  34. package/dist/src/flowchart/index.d.ts.map +1 -0
  35. package/dist/src/flowchart/index.js +267 -0
  36. package/dist/src/flowchart/index.js.map +1 -0
  37. package/dist/src/flowchart/library.d.ts +720 -0
  38. package/dist/src/flowchart/library.d.ts.map +1 -0
  39. package/dist/src/flowchart/library.js +611 -0
  40. package/dist/src/flowchart/library.js.map +1 -0
  41. package/dist/src/flowchart/over.d.ts +234 -0
  42. package/dist/src/flowchart/over.d.ts.map +1 -0
  43. package/dist/src/flowchart/over.js +220 -0
  44. package/dist/src/flowchart/over.js.map +1 -0
  45. package/dist/src/flowchart/patch.d.ts +64 -0
  46. package/dist/src/flowchart/patch.d.ts.map +1 -0
  47. package/dist/src/flowchart/patch.js +67 -0
  48. package/dist/src/flowchart/patch.js.map +1 -0
  49. package/dist/src/flowchart/payload.d.ts +8220 -0
  50. package/dist/src/flowchart/payload.d.ts.map +1 -0
  51. package/dist/src/flowchart/payload.js +521 -0
  52. package/dist/src/flowchart/payload.js.map +1 -0
  53. package/dist/src/flowchart/types.d.ts +393 -0
  54. package/dist/src/flowchart/types.d.ts.map +1 -0
  55. package/dist/src/flowchart/types.js +216 -0
  56. package/dist/src/flowchart/types.js.map +1 -0
  57. package/dist/src/flowchart/values.d.ts +267 -0
  58. package/dist/src/flowchart/values.d.ts.map +1 -0
  59. package/dist/src/flowchart/values.js +216 -0
  60. package/dist/src/flowchart/values.js.map +1 -0
  61. package/dist/src/flowchart/window.d.ts +521 -0
  62. package/dist/src/flowchart/window.d.ts.map +1 -0
  63. package/dist/src/flowchart/window.js +69 -0
  64. package/dist/src/flowchart/window.js.map +1 -0
  65. package/dist/src/index.d.ts +25 -1
  66. package/dist/src/index.d.ts.map +1 -1
  67. package/dist/src/index.js +48 -1
  68. package/dist/src/index.js.map +1 -1
  69. package/dist/src/internal.d.ts +35 -3
  70. package/dist/src/internal.d.ts.map +1 -1
  71. package/dist/src/internal.js +72 -3
  72. package/dist/src/internal.js.map +1 -1
  73. package/dist/src/plan/assemble.d.ts +2224 -0
  74. package/dist/src/plan/assemble.d.ts.map +1 -0
  75. package/dist/src/plan/assemble.js +210 -0
  76. package/dist/src/plan/assemble.js.map +1 -0
  77. package/dist/src/plan/builders.d.ts +790 -0
  78. package/dist/src/plan/builders.d.ts.map +1 -0
  79. package/dist/src/plan/builders.js +749 -0
  80. package/dist/src/plan/builders.js.map +1 -0
  81. package/dist/src/plan/event-rows.d.ts +2565 -0
  82. package/dist/src/plan/event-rows.d.ts.map +1 -0
  83. package/dist/src/plan/event-rows.js +689 -0
  84. package/dist/src/plan/event-rows.js.map +1 -0
  85. package/dist/src/plan/factories.d.ts +458 -0
  86. package/dist/src/plan/factories.d.ts.map +1 -0
  87. package/dist/src/plan/factories.js +484 -0
  88. package/dist/src/plan/factories.js.map +1 -0
  89. package/dist/src/plan/index.d.ts +672 -0
  90. package/dist/src/plan/index.d.ts.map +1 -0
  91. package/dist/src/plan/index.js +532 -0
  92. package/dist/src/plan/index.js.map +1 -0
  93. package/dist/src/plan/ir.d.ts +2594 -0
  94. package/dist/src/plan/ir.d.ts.map +1 -0
  95. package/dist/src/plan/ir.js +78 -0
  96. package/dist/src/plan/ir.js.map +1 -0
  97. package/dist/src/plan/library.d.ts +772 -0
  98. package/dist/src/plan/library.d.ts.map +1 -0
  99. package/dist/src/plan/library.js +424 -0
  100. package/dist/src/plan/library.js.map +1 -0
  101. package/dist/src/plan/ordered-source.d.ts +27 -0
  102. package/dist/src/plan/ordered-source.d.ts.map +1 -0
  103. package/dist/src/plan/ordered-source.js +48 -0
  104. package/dist/src/plan/ordered-source.js.map +1 -0
  105. package/dist/src/plan/over.d.ts +247 -0
  106. package/dist/src/plan/over.d.ts.map +1 -0
  107. package/dist/src/plan/over.js +266 -0
  108. package/dist/src/plan/over.js.map +1 -0
  109. package/dist/src/plan/pick.d.ts +78 -0
  110. package/dist/src/plan/pick.d.ts.map +1 -0
  111. package/dist/src/plan/pick.js +146 -0
  112. package/dist/src/plan/pick.js.map +1 -0
  113. package/dist/src/plan/plan.d.ts +11611 -0
  114. package/dist/src/plan/plan.d.ts.map +1 -0
  115. package/dist/src/plan/plan.js +428 -0
  116. package/dist/src/plan/plan.js.map +1 -0
  117. package/dist/src/plan/refs.d.ts +218 -0
  118. package/dist/src/plan/refs.d.ts.map +1 -0
  119. package/dist/src/plan/refs.js +226 -0
  120. package/dist/src/plan/refs.js.map +1 -0
  121. package/dist/src/plan/root.d.ts +290 -0
  122. package/dist/src/plan/root.d.ts.map +1 -0
  123. package/dist/src/plan/root.js +463 -0
  124. package/dist/src/plan/root.js.map +1 -0
  125. package/dist/src/plan/series.d.ts +13554 -0
  126. package/dist/src/plan/series.d.ts.map +1 -0
  127. package/dist/src/plan/series.js +1921 -0
  128. package/dist/src/plan/series.js.map +1 -0
  129. package/dist/src/plan/types.d.ts +12400 -0
  130. package/dist/src/plan/types.d.ts.map +1 -0
  131. package/dist/src/plan/types.js +1335 -0
  132. package/dist/src/plan/types.js.map +1 -0
  133. package/dist/src/roster/coverage.d.ts +240 -0
  134. package/dist/src/roster/coverage.d.ts.map +1 -0
  135. package/dist/src/roster/coverage.js +109 -0
  136. package/dist/src/roster/coverage.js.map +1 -0
  137. package/dist/src/roster/index.d.ts +4028 -0
  138. package/dist/src/roster/index.d.ts.map +1 -0
  139. package/dist/src/roster/index.js +115 -0
  140. package/dist/src/roster/index.js.map +1 -0
  141. package/dist/src/roster/library.d.ts +106 -0
  142. package/dist/src/roster/library.d.ts.map +1 -0
  143. package/dist/src/roster/library.js +78 -0
  144. package/dist/src/roster/library.js.map +1 -0
  145. package/dist/src/roster/people.d.ts +50 -0
  146. package/dist/src/roster/people.d.ts.map +1 -0
  147. package/dist/src/roster/people.js +32 -0
  148. package/dist/src/roster/people.js.map +1 -0
  149. package/dist/src/roster/rules.d.ts +275 -0
  150. package/dist/src/roster/rules.d.ts.map +1 -0
  151. package/dist/src/roster/rules.js +162 -0
  152. package/dist/src/roster/rules.js.map +1 -0
  153. package/dist/src/roster/types.d.ts +672 -0
  154. package/dist/src/roster/types.d.ts.map +1 -0
  155. package/dist/src/roster/types.js +248 -0
  156. package/dist/src/roster/types.js.map +1 -0
  157. package/dist/src/roster/visibility.d.ts +66 -0
  158. package/dist/src/roster/visibility.d.ts.map +1 -0
  159. package/dist/src/roster/visibility.js +25 -0
  160. package/dist/src/roster/visibility.js.map +1 -0
  161. package/dist/src/schedule/days.d.ts +54 -0
  162. package/dist/src/schedule/days.d.ts.map +1 -0
  163. package/dist/src/schedule/days.js +68 -0
  164. package/dist/src/schedule/days.js.map +1 -0
  165. package/dist/src/schedule/events.d.ts +433 -0
  166. package/dist/src/schedule/events.d.ts.map +1 -0
  167. package/dist/src/schedule/events.js +851 -0
  168. package/dist/src/schedule/events.js.map +1 -0
  169. package/dist/src/schedule/index.d.ts +150 -0
  170. package/dist/src/schedule/index.d.ts.map +1 -0
  171. package/dist/src/schedule/index.js +132 -0
  172. package/dist/src/schedule/index.js.map +1 -0
  173. package/dist/src/schedule/library.d.ts +70 -0
  174. package/dist/src/schedule/library.d.ts.map +1 -0
  175. package/dist/src/schedule/library.js +102 -0
  176. package/dist/src/schedule/library.js.map +1 -0
  177. package/dist/src/schedule/patch.d.ts +74 -0
  178. package/dist/src/schedule/patch.d.ts.map +1 -0
  179. package/dist/src/schedule/patch.js +68 -0
  180. package/dist/src/schedule/patch.js.map +1 -0
  181. package/dist/src/schedule/record-window.d.ts +189 -0
  182. package/dist/src/schedule/record-window.d.ts.map +1 -0
  183. package/dist/src/schedule/record-window.js +95 -0
  184. package/dist/src/schedule/record-window.js.map +1 -0
  185. package/dist/src/schedule/resources.d.ts +165 -0
  186. package/dist/src/schedule/resources.d.ts.map +1 -0
  187. package/dist/src/schedule/resources.js +234 -0
  188. package/dist/src/schedule/resources.js.map +1 -0
  189. package/dist/src/schedule/templates.d.ts +47 -0
  190. package/dist/src/schedule/templates.d.ts.map +1 -0
  191. package/dist/src/schedule/templates.js +61 -0
  192. package/dist/src/schedule/templates.js.map +1 -0
  193. package/dist/src/schedule/types.d.ts +1677 -0
  194. package/dist/src/schedule/types.d.ts.map +1 -0
  195. package/dist/src/schedule/types.js +374 -0
  196. package/dist/src/schedule/types.js.map +1 -0
  197. package/dist/src/schedule/window.d.ts +154 -0
  198. package/dist/src/schedule/window.d.ts.map +1 -0
  199. package/dist/src/schedule/window.js +363 -0
  200. package/dist/src/schedule/window.js.map +1 -0
  201. package/dist/src/sheet/bridge.d.ts +385 -0
  202. package/dist/src/sheet/bridge.d.ts.map +1 -0
  203. package/dist/src/sheet/bridge.js +809 -0
  204. package/dist/src/sheet/bridge.js.map +1 -0
  205. package/dist/src/sheet/columns.d.ts +410 -0
  206. package/dist/src/sheet/columns.d.ts.map +1 -0
  207. package/dist/src/sheet/columns.js +99 -0
  208. package/dist/src/sheet/columns.js.map +1 -0
  209. package/dist/src/sheet/context-bridge.d.ts +48 -0
  210. package/dist/src/sheet/context-bridge.d.ts.map +1 -0
  211. package/dist/src/sheet/context-bridge.js +216 -0
  212. package/dist/src/sheet/context-bridge.js.map +1 -0
  213. package/dist/src/sheet/draft-bridge.d.ts +37 -0
  214. package/dist/src/sheet/draft-bridge.d.ts.map +1 -0
  215. package/dist/src/sheet/draft-bridge.js +153 -0
  216. package/dist/src/sheet/draft-bridge.js.map +1 -0
  217. package/dist/src/sheet/drafts.d.ts +14 -0
  218. package/dist/src/sheet/drafts.d.ts.map +1 -0
  219. package/dist/src/sheet/drafts.js +14 -0
  220. package/dist/src/sheet/drafts.js.map +1 -0
  221. package/dist/src/sheet/editing-bridge.d.ts +40 -0
  222. package/dist/src/sheet/editing-bridge.d.ts.map +1 -0
  223. package/dist/src/sheet/editing-bridge.js +231 -0
  224. package/dist/src/sheet/editing-bridge.js.map +1 -0
  225. package/dist/src/sheet/editing-types.d.ts +268 -0
  226. package/dist/src/sheet/editing-types.d.ts.map +1 -0
  227. package/dist/src/sheet/editing-types.js +34 -0
  228. package/dist/src/sheet/editing-types.js.map +1 -0
  229. package/dist/src/sheet/edits.d.ts +37 -0
  230. package/dist/src/sheet/edits.d.ts.map +1 -0
  231. package/dist/src/sheet/edits.js +31 -0
  232. package/dist/src/sheet/edits.js.map +1 -0
  233. package/dist/src/sheet/fields.d.ts +693 -0
  234. package/dist/src/sheet/fields.d.ts.map +1 -0
  235. package/dist/src/sheet/fields.js +280 -0
  236. package/dist/src/sheet/fields.js.map +1 -0
  237. package/dist/src/sheet/group.d.ts +165 -0
  238. package/dist/src/sheet/group.d.ts.map +1 -0
  239. package/dist/src/sheet/group.js +52 -0
  240. package/dist/src/sheet/group.js.map +1 -0
  241. package/dist/src/sheet/index.d.ts +542 -0
  242. package/dist/src/sheet/index.d.ts.map +1 -0
  243. package/dist/src/sheet/index.js +387 -0
  244. package/dist/src/sheet/index.js.map +1 -0
  245. package/dist/src/sheet/library.d.ts +284 -0
  246. package/dist/src/sheet/library.d.ts.map +1 -0
  247. package/dist/src/sheet/library.js +259 -0
  248. package/dist/src/sheet/library.js.map +1 -0
  249. package/dist/src/sheet/link.d.ts +398 -0
  250. package/dist/src/sheet/link.d.ts.map +1 -0
  251. package/dist/src/sheet/link.js +228 -0
  252. package/dist/src/sheet/link.js.map +1 -0
  253. package/dist/src/sheet/record.d.ts +75 -0
  254. package/dist/src/sheet/record.d.ts.map +1 -0
  255. package/dist/src/sheet/record.js +128 -0
  256. package/dist/src/sheet/record.js.map +1 -0
  257. package/dist/src/sheet/registers.d.ts +681 -0
  258. package/dist/src/sheet/registers.d.ts.map +1 -0
  259. package/dist/src/sheet/registers.js +671 -0
  260. package/dist/src/sheet/registers.js.map +1 -0
  261. package/dist/src/sheet/root.d.ts +329 -0
  262. package/dist/src/sheet/root.d.ts.map +1 -0
  263. package/dist/src/sheet/root.js +511 -0
  264. package/dist/src/sheet/root.js.map +1 -0
  265. package/dist/src/sheet/seed-bridge.d.ts +14 -0
  266. package/dist/src/sheet/seed-bridge.d.ts.map +1 -0
  267. package/dist/src/sheet/seed-bridge.js +51 -0
  268. package/dist/src/sheet/seed-bridge.js.map +1 -0
  269. package/dist/src/sheet/sheet.d.ts +11819 -0
  270. package/dist/src/sheet/sheet.d.ts.map +1 -0
  271. package/dist/src/sheet/sheet.js +236 -0
  272. package/dist/src/sheet/sheet.js.map +1 -0
  273. package/dist/src/sheet/sub-rows.d.ts +299 -0
  274. package/dist/src/sheet/sub-rows.d.ts.map +1 -0
  275. package/dist/src/sheet/sub-rows.js +272 -0
  276. package/dist/src/sheet/sub-rows.js.map +1 -0
  277. package/dist/src/sheet/templates.d.ts +161 -0
  278. package/dist/src/sheet/templates.d.ts.map +1 -0
  279. package/dist/src/sheet/templates.js +122 -0
  280. package/dist/src/sheet/templates.js.map +1 -0
  281. package/dist/src/sheet/transactions.d.ts +76 -0
  282. package/dist/src/sheet/transactions.d.ts.map +1 -0
  283. package/dist/src/sheet/transactions.js +40 -0
  284. package/dist/src/sheet/transactions.js.map +1 -0
  285. package/dist/src/sheet/types.d.ts +15226 -0
  286. package/dist/src/sheet/types.d.ts.map +1 -0
  287. package/dist/src/sheet/types.js +1070 -0
  288. package/dist/src/sheet/types.js.map +1 -0
  289. package/dist/src/sheet/views.d.ts +29 -0
  290. package/dist/src/sheet/views.d.ts.map +1 -0
  291. package/dist/src/sheet/views.js +43 -0
  292. package/dist/src/sheet/views.js.map +1 -0
  293. package/dist/src/studio/component.d.ts.map +1 -1
  294. package/dist/src/studio/component.js +11 -8
  295. package/dist/src/studio/component.js.map +1 -1
  296. package/dist/src/utils/derive.d.ts +134 -8
  297. package/dist/src/utils/derive.d.ts.map +1 -1
  298. package/dist/src/utils/derive.js +409 -7
  299. package/dist/src/utils/derive.js.map +1 -1
  300. package/dist/src/utils/ordered-source.d.ts +38 -0
  301. package/dist/src/utils/ordered-source.d.ts.map +1 -0
  302. package/dist/src/utils/ordered-source.js +45 -0
  303. package/dist/src/utils/ordered-source.js.map +1 -0
  304. package/dist/src/utils/row-inspector.d.ts +36 -0
  305. package/dist/src/utils/row-inspector.d.ts.map +1 -0
  306. package/dist/src/utils/row-inspector.js +49 -0
  307. package/dist/src/utils/row-inspector.js.map +1 -0
  308. package/dist/test/bind/data/data.examples.d.ts +21 -19
  309. package/dist/test/bind/data/data.examples.d.ts.map +1 -1
  310. package/dist/test/bind/data/data.examples.js +122 -122
  311. package/dist/test/bind/data/data.examples.js.map +1 -1
  312. package/dist/test/bind/record/record.examples.d.ts.map +1 -1
  313. package/dist/test/bind/record/record.examples.js +9 -9
  314. package/dist/test/bind/record/record.examples.js.map +1 -1
  315. package/dist/test/calendar/calendar-records.examples.d.ts +228 -0
  316. package/dist/test/calendar/calendar-records.examples.d.ts.map +1 -0
  317. package/dist/test/calendar/calendar-records.examples.js +91 -0
  318. package/dist/test/calendar/calendar-records.examples.js.map +1 -0
  319. package/dist/test/calendar/calendar.examples.d.ts +776 -0
  320. package/dist/test/calendar/calendar.examples.d.ts.map +1 -0
  321. package/dist/test/calendar/calendar.examples.js +336 -0
  322. package/dist/test/calendar/calendar.examples.js.map +1 -0
  323. package/dist/test/decision/journal.examples.d.ts +28 -28
  324. package/dist/test/decision/journal.examples.d.ts.map +1 -1
  325. package/dist/test/decision/journal.examples.js +4 -4
  326. package/dist/test/decision/journal.examples.js.map +1 -1
  327. package/dist/test/decision/queue.examples.d.ts.map +1 -1
  328. package/dist/test/decision/queue.examples.js +5 -7
  329. package/dist/test/decision/queue.examples.js.map +1 -1
  330. package/dist/test/flowchart/flowchart.examples.d.ts +3713 -0
  331. package/dist/test/flowchart/flowchart.examples.d.ts.map +1 -0
  332. package/dist/test/flowchart/flowchart.examples.js +465 -0
  333. package/dist/test/flowchart/flowchart.examples.js.map +1 -0
  334. package/dist/test/plan/plan-events.examples.d.ts +3666 -0
  335. package/dist/test/plan/plan-events.examples.d.ts.map +1 -0
  336. package/dist/test/plan/plan-events.examples.js +773 -0
  337. package/dist/test/plan/plan-events.examples.js.map +1 -0
  338. package/dist/test/plan/plan-records.examples.d.ts +3 -0
  339. package/dist/test/plan/plan-records.examples.d.ts.map +1 -0
  340. package/dist/test/plan/plan-records.examples.js +45 -0
  341. package/dist/test/plan/plan-records.examples.js.map +1 -0
  342. package/dist/test/plan/plan-windows.examples.d.ts +588 -0
  343. package/dist/test/plan/plan-windows.examples.d.ts.map +1 -0
  344. package/dist/test/plan/plan-windows.examples.js +170 -0
  345. package/dist/test/plan/plan-windows.examples.js.map +1 -0
  346. package/dist/test/plan/plan.examples.d.ts +8095 -0
  347. package/dist/test/plan/plan.examples.d.ts.map +1 -0
  348. package/dist/test/plan/plan.examples.js +2500 -0
  349. package/dist/test/plan/plan.examples.js.map +1 -0
  350. package/dist/test/roster/domain.examples.d.ts +367 -0
  351. package/dist/test/roster/domain.examples.d.ts.map +1 -0
  352. package/dist/test/roster/domain.examples.js +72 -0
  353. package/dist/test/roster/domain.examples.js.map +1 -0
  354. package/dist/test/roster/roster-records.examples.d.ts +729 -0
  355. package/dist/test/roster/roster-records.examples.d.ts.map +1 -0
  356. package/dist/test/roster/roster-records.examples.js +86 -0
  357. package/dist/test/roster/roster-records.examples.js.map +1 -0
  358. package/dist/test/roster/roster.examples.d.ts +750 -0
  359. package/dist/test/roster/roster.examples.d.ts.map +1 -0
  360. package/dist/test/roster/roster.examples.js +198 -0
  361. package/dist/test/roster/roster.examples.js.map +1 -0
  362. package/dist/test/roster/warehouse.d.ts +87 -0
  363. package/dist/test/roster/warehouse.d.ts.map +1 -0
  364. package/dist/test/roster/warehouse.js +883 -0
  365. package/dist/test/roster/warehouse.js.map +1 -0
  366. package/dist/test/sheet/sheet-link.examples.d.ts +7 -0
  367. package/dist/test/sheet/sheet-link.examples.d.ts.map +1 -0
  368. package/dist/test/sheet/sheet-link.examples.js +41 -0
  369. package/dist/test/sheet/sheet-link.examples.js.map +1 -0
  370. package/dist/test/sheet/sheet-records.examples.d.ts +421 -0
  371. package/dist/test/sheet/sheet-records.examples.d.ts.map +1 -0
  372. package/dist/test/sheet/sheet-records.examples.js +79 -0
  373. package/dist/test/sheet/sheet-records.examples.js.map +1 -0
  374. package/dist/test/sheet/sheet-transactions.examples.d.ts +7 -0
  375. package/dist/test/sheet/sheet-transactions.examples.d.ts.map +1 -0
  376. package/dist/test/sheet/sheet-transactions.examples.js +58 -0
  377. package/dist/test/sheet/sheet-transactions.examples.js.map +1 -0
  378. package/dist/test/sheet/sheet.examples.d.ts +5562 -0
  379. package/dist/test/sheet/sheet.examples.d.ts.map +1 -0
  380. package/dist/test/sheet/sheet.examples.js +1178 -0
  381. package/dist/test/sheet/sheet.examples.js.map +1 -0
  382. package/dist/test/studio/studio.examples.d.ts.map +1 -1
  383. package/dist/test/studio/studio.examples.js +11 -11
  384. package/dist/test/studio/studio.examples.js.map +1 -1
  385. package/package.json +12 -9
@@ -0,0 +1,363 @@
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
+ * The window reader (#1199, `Calendar Spec.md` decision 9 and §3.4, `Plan
7
+ * Builder Spec.md` §9.11, PB54): an event kind's large record read a window
8
+ * at a time, through its record indexes, never whole — the days in view
9
+ * through an index on the days each event touches (`Schedule.days`), and the
10
+ * backlog through an index on the rows with no start (`Schedule.unscheduled`).
11
+ * The Calendar's windowed reads (#1156) and the Plan's are this one reader: a
12
+ * kind's seams read through it when the kind is given `window` or
13
+ * `backlogWindow`, and the record whole otherwise.
14
+ *
15
+ * - **A window** is a `Data.bindPaged(record, { index, join: true })` handle:
16
+ * its pages are the index's entries in the index's own order, each
17
+ * `{ ik, key, value, row }`, its `seek` the index's key search, and its
18
+ * revision the record's state, so a Save that moves the record moves the
19
+ * window, which reads again. Its type is checked at build
20
+ * ({@link checkIndexWindow}). Whether it joins each entry to its row can't
21
+ * be told from its type, so a read that meets an entry with no row refuses,
22
+ * naming `join: true`.
23
+ * - **The days of `[from, to)`**: the midnight of the first day is sought in
24
+ * the index (a `range` from it), and the pages are read from the one holding
25
+ * that row — each page from its start to the next page's, at the reader's
26
+ * own page size, so the pages a pan read before are the runtime's again —
27
+ * until an entry filed under a day the window does not reach, or the
28
+ * index's end. An event filed under several of the days is kept once, by
29
+ * its key.
30
+ * - **The backlog**: every page of the backlog index, from its start.
31
+ * - **One event by its key** — the inspector's, a draft's original, a Save's
32
+ * entries read back and a conflict's — through a paged read of the record's
33
+ * own entries (`entries`, `Data.bindPaged(record)`): its key sought, then a
34
+ * one-row page at the row the search found ({@link scheduleEntryByKey}).
35
+ * The index windows can't be sought by the record's key, as their key leads
36
+ * with the index's, and a kind can't open a read of the record's own entries
37
+ * itself: a paged read is declared where it is bound, which is what lets a
38
+ * `ui()` task read it at all.
39
+ * - **In flight**, the search or a page answers `none`, and so does the read:
40
+ * the reader keeps nothing between reads, and the read that asked is asked
41
+ * again when it lands.
42
+ *
43
+ * @packageDocumentation
44
+ */
45
+ import { DateTimeType, DictType, East, Expr, IntegerType, NullType, OptionType, StringType, VariantType, isTypeEqual, none, printType, some, variant, } from "@elaraai/east";
46
+ import { SeekQueryType, SeekRangeType } from "@elaraai/east-ui";
47
+ import { resolveRowSource } from "@elaraai/east-ui/internal";
48
+ /**
49
+ * How many index entries the reader asks for at a time: each read starts at a
50
+ * whole multiple of it and ends at the next, so two windows that share a page
51
+ * share its read.
52
+ */
53
+ export const SCHEDULE_INDEX_PAGE = 256n;
54
+ /** Whether a type is an Option, and of what. */
55
+ function optionOf(type) {
56
+ if (type.type !== "Variant")
57
+ return undefined;
58
+ const some = type.cases["some"];
59
+ return some !== undefined && isTypeEqual(type, OptionType(some)) ? some : undefined;
60
+ }
61
+ /** A type as a refusal names it: an Option as an Option of what it holds. */
62
+ function typeText(type) {
63
+ const inner = optionOf(type);
64
+ return inner === undefined ? printType(type) : `an Option of ${printType(inner)}`;
65
+ }
66
+ /** The index a window reads through, as its refusals name it. */
67
+ function indexWords(prop) {
68
+ return prop === "window" ? "a day index keyed by Schedule.days" : "a backlog index keyed by Schedule.unscheduled";
69
+ }
70
+ /**
71
+ * Checks a kind's `window` or `backlogWindow` at build: a paged read of an
72
+ * index over the kind's own record, whose pages serve the index's entries —
73
+ * `Array<{ ik, key, value, row: Option<R> }>`, `ik` the index's key (a
74
+ * `DateTime` day for `window`, an `Option<DateTime>` due date for
75
+ * `backlogWindow`), `key` the record's key and `row` its row.
76
+ *
77
+ * @param window - The window, as the author gave it
78
+ * @param prop - Which window it is
79
+ * @param keyType - The record's key type
80
+ * @param rowType - The record's row type
81
+ * @param ik - The index key the window's entries are filed under
82
+ * @param where - The kind, as a refusal names it
83
+ * @returns The window, as an East expression
84
+ * @throws {Error} Naming the window, the index it reads through and what it serves instead
85
+ */
86
+ export function checkIndexWindow(window, prop, keyType, rowType, ik, where) {
87
+ const value = East.value(window);
88
+ const type = Expr.type(value);
89
+ const page = type.type === "Struct" ? type.fields["page"] : undefined;
90
+ const served = page !== undefined && page.type === "Function" ? optionOf(page.output) : undefined;
91
+ const element = served !== undefined && served.type === "Array" ? served.value : undefined;
92
+ const fields = element !== undefined && element.type === "Struct" ? element.fields : undefined;
93
+ const fits = fields !== undefined
94
+ && fields["ik"] !== undefined && isTypeEqual(fields["ik"], ik)
95
+ && fields["key"] !== undefined && isTypeEqual(fields["key"], keyType)
96
+ && fields["value"] !== undefined
97
+ && fields["row"] !== undefined && isTypeEqual(fields["row"], OptionType(rowType));
98
+ if (!fits) {
99
+ throw new Error(`${where}: \`${prop}\` reads the record through ${indexWords(prop)} — ` +
100
+ `Data.bindPaged(record, { index, join: true }), each window an Array of { ik: ${typeText(ik)}, key, value, row: Option<${typeText(rowType)}> } — ` +
101
+ `and this one serves ${served === undefined ? "no window of entries" : typeText(served)}`);
102
+ }
103
+ return value;
104
+ }
105
+ /**
106
+ * The words a read refuses a window in when it meets an entry with no row:
107
+ * the window reads the index alone, not each entry's row.
108
+ *
109
+ * @param where - The kind, as a refusal names it
110
+ * @param prop - Which window it is
111
+ * @returns The refusal
112
+ */
113
+ export function joinRefusal(where, prop) {
114
+ return `${where}: \`${prop}\` reads each event's row from the record through ${indexWords(prop)} — ` +
115
+ "Data.bindPaged(record, { index, join: true }) — and this one reads the index alone: give it `join: true`";
116
+ }
117
+ /**
118
+ * Reads the days of `[from, to)` through a kind's day index (see the module
119
+ * docs): the rows filed under them, each once, by the record's key.
120
+ *
121
+ * @param window - The kind's `window`, checked ({@link checkIndexWindow})
122
+ * @param keyType - The record's key type
123
+ * @param rowType - The record's row type
124
+ * @param where - The kind, as a refusal names it
125
+ * @returns `(from, to)` → the rows, by key; `none` while the search or a page is in flight
126
+ */
127
+ export function scheduleDayWindow(window, keyType, rowType, where) {
128
+ const Held = DictType(keyType, rowType);
129
+ const noRows = joinRefusal(where, "window");
130
+ const noSeek = `${where}: \`window\` finds the first day in view by its index's key search — ` +
131
+ "a paged read of the record's day index, Data.bindPaged(record, { index, join: true }) — and this one has none";
132
+ return East.function([DateTimeType, DateTimeType], OptionType(Held), ($, from, to) => {
133
+ const src = $.const(window);
134
+ const size = $.const(SCHEDULE_INDEX_PAGE, IntegerType);
135
+ const result = $.let(East.value(none, OptionType(Held)), OptionType(Held));
136
+ // The midnight the first day in view is filed under.
137
+ const first = $.let(East.DateTime.roundDownDay(from, 1n));
138
+ $.match(src.seek, {
139
+ none: ($2) => { $2.error(noSeek); },
140
+ some: ($2, seek) => {
141
+ // The rows from the first day's midnight on: a range open at its end.
142
+ const query = $2.let(variant("range", { from: [East.print(first)], to: [] }), SeekQueryType);
143
+ $2.match(seek(query), {
144
+ some: ($3, found) => {
145
+ const held = $3.let(new Map(), Held);
146
+ // From the start of the page the first day's first entry is in.
147
+ const offset = $3.let(found.row.subtract(found.row.remainder(size)), IntegerType);
148
+ const reading = $3.let(true);
149
+ const landed = $3.let(true);
150
+ $3.while(reading, ($4) => {
151
+ // To the next page's start: a page cut short is read on from where it stopped.
152
+ const limit = $4.let(size.subtract(offset.remainder(size)), IntegerType);
153
+ $4.match(src.page(offset, limit), {
154
+ none: ($5) => {
155
+ $5.assign(landed, false);
156
+ $5.assign(reading, false);
157
+ },
158
+ some: ($5, entries) => {
159
+ // The index's end.
160
+ $5.if(entries.size().equal(0n), ($6) => { $6.assign(reading, false); });
161
+ $5.for(entries, ($6, entry, _i, label) => {
162
+ // The day the entry is filed under.
163
+ const day = $6.let(entry.ik);
164
+ // Past the last day in view: the window is read.
165
+ $6.if(East.greaterEqual(day, to), ($7) => {
166
+ $7.assign(reading, false);
167
+ $7.break(label);
168
+ });
169
+ // An entry of the page before the first day is not in view.
170
+ $6.if(East.greaterEqual(day, first), ($7) => {
171
+ $7.match(entry.row, {
172
+ none: ($8) => { $8.error(noRows); },
173
+ // An event filed under several days, once.
174
+ some: ($8, row) => {
175
+ $8.if(held.has(entry.key).not(), ($9) => { $9(held.insert(entry.key, row)); });
176
+ },
177
+ });
178
+ });
179
+ });
180
+ $5.assign(offset, offset.add(entries.size()));
181
+ },
182
+ });
183
+ });
184
+ $3.if(landed, ($4) => { $4.assign(result, some(held)); });
185
+ },
186
+ });
187
+ },
188
+ });
189
+ return result;
190
+ });
191
+ }
192
+ /**
193
+ * Reads a kind's backlog through its backlog index (see the module docs):
194
+ * the rows the index files, each once, by the record's key.
195
+ *
196
+ * @param window - The kind's `backlogWindow`, checked ({@link checkIndexWindow})
197
+ * @param keyType - The record's key type
198
+ * @param rowType - The record's row type
199
+ * @param where - The kind, as a refusal names it
200
+ * @returns `()` → the rows, by key; `none` while a page is in flight
201
+ */
202
+ export function scheduleBacklogWindow(window, keyType, rowType, where) {
203
+ const Held = DictType(keyType, rowType);
204
+ const noRows = joinRefusal(where, "backlogWindow");
205
+ return East.function([], OptionType(Held), ($) => {
206
+ const src = $.const(window);
207
+ const size = $.const(SCHEDULE_INDEX_PAGE, IntegerType);
208
+ const result = $.let(East.value(none, OptionType(Held)), OptionType(Held));
209
+ const held = $.let(new Map(), Held);
210
+ const offset = $.let(0n, IntegerType);
211
+ const reading = $.let(true);
212
+ const landed = $.let(true);
213
+ $.while(reading, ($2) => {
214
+ const limit = $2.let(size.subtract(offset.remainder(size)), IntegerType);
215
+ $2.match(src.page(offset, limit), {
216
+ none: ($3) => {
217
+ $3.assign(landed, false);
218
+ $3.assign(reading, false);
219
+ },
220
+ some: ($3, entries) => {
221
+ $3.if(entries.size().equal(0n), ($4) => { $4.assign(reading, false); });
222
+ $3.for(entries, ($4, entry) => {
223
+ $4.match(entry.row, {
224
+ none: ($5) => { $5.error(noRows); },
225
+ some: ($5, row) => {
226
+ $5.if(held.has(entry.key).not(), ($6) => { $6(held.insert(entry.key, row)); });
227
+ },
228
+ });
229
+ });
230
+ $3.assign(offset, offset.add(entries.size()));
231
+ },
232
+ });
233
+ });
234
+ $.if(landed, ($2) => { $2.assign(result, some(held)); });
235
+ return result;
236
+ });
237
+ }
238
+ /**
239
+ * Checks a paged read of a record's own entries at build (#1199): the record's
240
+ * entries by key, `Data.bindPaged(record)`, which names the snapshot its reads
241
+ * are at — what a kind given `window` reads one event by, and a paged resource
242
+ * kind its resources.
243
+ *
244
+ * @param entries - The read, as the author gave it
245
+ * @param keyType - The record's key type
246
+ * @param rowType - The record's row type
247
+ * @param where - What reads it, as a refusal names it: the option and its kind
248
+ * @returns The read, as an East expression
249
+ * @throws {Error} Naming what it serves instead: the entries whole, an index's window, another collection, or a read that names no snapshot
250
+ */
251
+ export function checkEntries(entries, keyType, rowType, where) {
252
+ const resolved = resolveRowSource(entries, where);
253
+ const wanted = DictType(keyType, rowType);
254
+ if (resolved.kind !== "paged" || !isTypeEqual(resolved.collectionType, wanted)) {
255
+ const serves = resolved.kind === "inline" ? `${typeText(resolved.collectionType)} whole`
256
+ : resolved.kind === "ordered" ? `an index's window, ${typeText(resolved.collectionType)}`
257
+ : typeText(resolved.collectionType);
258
+ throw new Error(`${where} reads the record's own entries by key — Data.bindPaged(record), a window at a time of ${typeText(wanted)} — and this one serves ${serves}`);
259
+ }
260
+ if (!resolved.pinned) {
261
+ throw new Error(`${where} reads the record's own entries at the snapshot every read of it is at — Data.bindPaged(record)'s handle, with its revision and refresh — and this one names no snapshot`);
262
+ }
263
+ return resolved.source;
264
+ }
265
+ /** A key's text: a String key as it is, any other key as East prints it. */
266
+ function keyTextOf(keyType) {
267
+ return (keyType.type === "String"
268
+ ? East.function([StringType], StringType, (_$, key) => key)
269
+ : East.function([keyType], StringType, (_$, key) => East.print(key)));
270
+ }
271
+ /**
272
+ * One entry of a record read by its key (#1199): its read still in flight, the
273
+ * key the record does not hold, or the entry held — its row.
274
+ *
275
+ * @param rowType - The record's row type
276
+ * @returns The variant
277
+ */
278
+ export function ScheduleKeyReadType(rowType) {
279
+ return VariantType({ reading: NullType, absent: NullType, held: rowType });
280
+ }
281
+ /**
282
+ * Reads one entry of a record by its key through a paged read of the record's
283
+ * own entries (#1199): the key sought — the `.east` literal of the key its text
284
+ * names — then a one-row page at the row the search found.
285
+ *
286
+ * @param entries - The read, checked ({@link checkEntries})
287
+ * @param keyType - The record's key type
288
+ * @param rowType - The record's row type
289
+ * @returns `(id)` → the entry's row, held; `absent` for a key the record does not hold; `reading` while the search or the page is in flight
290
+ */
291
+ export function scheduleEntryByKey(entries, keyType, rowType) {
292
+ const Read = ScheduleKeyReadType(rowType);
293
+ // A key from its text: a String key is its own text, any other key its `.east` printing, read back.
294
+ const keyOf = (keyType.type === "String"
295
+ ? East.function([StringType], StringType, (_$, id) => id)
296
+ : East.function([StringType], keyType, (_$, id) => id.parse(keyType)));
297
+ // The `.east` literal a seek takes: a String key's is its text quoted; any other key's text is its literal already.
298
+ const literalOf = keyType.type === "String"
299
+ ? East.function([StringType], StringType, (_$, id) => East.print(id))
300
+ : East.function([StringType], StringType, (_$, id) => id);
301
+ return East.function([StringType], Read, ($, id) => {
302
+ const handle = entries;
303
+ const src = $.const(handle);
304
+ const parse = $.const(keyOf);
305
+ const literal = $.const(literalOf);
306
+ const result = $.let(variant("reading", null), Read);
307
+ $.match(src.seek, {
308
+ some: ($2, seek) => {
309
+ const query = $2.let(variant("key", literal(id)), SeekQueryType);
310
+ $2.match(seek(query), {
311
+ some: ($3, found) => {
312
+ $3.if(found.found, ($4) => {
313
+ $4.match(src.page(found.row, 1n), {
314
+ some: ($5, page) => {
315
+ $5.match(page.tryGet(parse(id)), {
316
+ some: ($6, row) => { $6.assign(result, variant("held", row)); },
317
+ none: ($6) => { $6.assign(result, variant("absent", null)); },
318
+ });
319
+ },
320
+ });
321
+ }).else(($4) => { $4.assign(result, variant("absent", null)); });
322
+ },
323
+ });
324
+ },
325
+ });
326
+ return result;
327
+ });
328
+ }
329
+ /**
330
+ * Reads the largest key of a record through a paged read of its own entries
331
+ * (#1199) — the last entry, as the read serves them in key order: how a new
332
+ * Integer key is made past every key the record holds, which no window of it
333
+ * says.
334
+ *
335
+ * @param entries - The read, checked ({@link checkEntries})
336
+ * @param keyType - The record's key type
337
+ * @returns `()` → `some(some(text))`, the largest key's text; `some(none)` for an empty record; `none` while a read is in flight
338
+ */
339
+ export function scheduleLastKey(entries, keyType) {
340
+ const Found = OptionType(OptionType(StringType));
341
+ const textOf = keyTextOf(keyType);
342
+ return East.function([], Found, ($) => {
343
+ const handle = entries;
344
+ const src = $.const(handle);
345
+ const text = $.const(textOf);
346
+ const result = $.let(none, Found);
347
+ $.match(src.total(), {
348
+ // The size is learned from a window: the first one's, read.
349
+ none: ($2) => { $2(src.page(0n, 1n)); },
350
+ some: ($2, total) => {
351
+ $2.if(total.equal(0n), ($3) => { $3.assign(result, some(none)); }).else(($3) => {
352
+ $3.match(src.page(total.subtract(1n), 1n), {
353
+ some: ($4, page) => {
354
+ $4.for(page, ($5, _row, key) => { $5.assign(result, some(some(text(key)))); });
355
+ },
356
+ });
357
+ });
358
+ },
359
+ });
360
+ return result;
361
+ });
362
+ }
363
+ //# sourceMappingURL=window.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window.js","sourceRoot":"","sources":["../../../src/schedule/window.ts"],"names":[],"mappings":"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"}